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+LCBOMz4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIHBsdXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIG5hLCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IHBsdXM8IE4xLE4yLG5hLG5hLG5hID4KLSAgICA6IHBsdXNfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBwbHVzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBwbHVzX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIHBsdXMKLSAgICAgICAgLCAoIE4xLCBOMiwgbmEsIG5hLCBuYSApCi0gICAgICAgICkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBwbHVzKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBwbHVzX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlCi0gICAgICAgICAgICAgICAgICArIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvcXVvdGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9xdW90ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdmOWQxOGJjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvcXVvdGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDgKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gInF1b3RlLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvcmV2ZXJzZV9mb2xkX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9yZXZlcnNlX2ZvbGRfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE2YTQzOGIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9yZXZlcnNlX2ZvbGRfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyOTUgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gInJldmVyc2VfZm9sZF9pbXBsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICBsb25nIE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9pbXBsOwotCi10ZW1wbGF0ZTwgbG9uZyBOID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfY2h1bms7Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHJldmVyc2VfZm9sZF9jaHVuazwwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+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+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2ltcGwKLSAgICA6IHJldmVyc2VfZm9sZF9jaHVuazxOPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotfTsKLQotfX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL3JldmVyc2VfaXRlcl9mb2xkX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9yZXZlcnNlX2l0ZXJfZm9sZF9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGM5ODA5Yy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL3JldmVyc2VfaXRlcl9mb2xkX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjk1ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJyZXZlcnNlX2l0ZXJfZm9sZF9pbXBsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICBsb25nIE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2ltcGw7Ci0KLXRlbXBsYXRlPCBsb25nIE4gPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2NodW5rOwotCi10ZW1wbGF0ZTw+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+Ci17Ci19OwotCi19fX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvc2V0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvc2V0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWJjNDRmOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL3NldC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gInNldC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCA9IG5hLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hLCB0eXBlbmFtZSBUNiA9IG5hLCB0eXBlbmFtZSBUNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUOCA9IG5hLCB0eXBlbmFtZSBUOSA9IG5hLCB0eXBlbmFtZSBUMTAgPSBuYSwgdHlwZW5hbWUgVDExID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxMiA9IG5hLCB0eXBlbmFtZSBUMTMgPSBuYSwgdHlwZW5hbWUgVDE0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxNSA9IG5hLCB0eXBlbmFtZSBUMTYgPSBuYSwgdHlwZW5hbWUgVDE3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxOCA9IG5hLCB0eXBlbmFtZSBUMTkgPSBuYQotICAgID4KLXN0cnVjdCBzZXQ7Ci0KLXRlbXBsYXRlPAotICAgICAKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MDwgID4KLXsKLSAgICB0eXBlZGVmIHNldDA8ICA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwCi0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDE8VDA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxPFQwPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MjwgVDAsVDEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MjwgVDAsVDEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDM8IFQwLFQxLFQyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDM8IFQwLFQxLFQyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0NDwgVDAsVDEsVDIsVDMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NDwgVDAsVDEsVDIsVDMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0NTwgVDAsVDEsVDIsVDMsVDQgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NTwgVDAsVDEsVDIsVDMsVDQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0NzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0ODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0ODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMQotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDE1PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDE2PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxNzwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTg8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDE5PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTggPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgPgotc3RydWN0IHNldAotICAgIDogc2V0MjA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MjA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL3NldF9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvc2V0X2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNzI0OWI2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvc2V0X2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzI4ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJzZXRfYy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwID0gTE9OR19NQVgsIGxvbmcgQzEgPSBMT05HX01BWCwgbG9uZyBDMiA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMzID0gTE9OR19NQVgsIGxvbmcgQzQgPSBMT05HX01BWCwgbG9uZyBDNSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM2ID0gTE9OR19NQVgsIGxvbmcgQzcgPSBMT05HX01BWCwgbG9uZyBDOCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM5ID0gTE9OR19NQVgsIGxvbmcgQzEwID0gTE9OR19NQVgsIGxvbmcgQzExID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzEyID0gTE9OR19NQVgsIGxvbmcgQzEzID0gTE9OR19NQVgsIGxvbmcgQzE0ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE1ID0gTE9OR19NQVgsIGxvbmcgQzE2ID0gTE9OR19NQVgsIGxvbmcgQzE3ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE4ID0gTE9OR19NQVgsIGxvbmcgQzE5ID0gTE9OR19NQVgKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQwX2M8VD4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDBfYzxUPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDFfYzwgVCxDMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxX2M8IFQsQzAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDJfYzwgVCxDMCxDMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQyX2M8IFQsQzAsQzEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDNfYzwgVCxDMCxDMSxDMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQzX2M8IFQsQzAsQzEsQzIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDRfYzwgVCxDMCxDMSxDMixDMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ0X2M8IFQsQzAsQzEsQzIsQzMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDVfYzwgVCxDMCxDMSxDMixDMyxDNCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ1X2M8IFQsQzAsQzEsQzIsQzMsQzQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDZfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ2X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDdfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ3X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDhfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ4X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDlfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ5X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzggPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDEwX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTBfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDExX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDExX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxMl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTJfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDEzX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTNfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDE0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNAotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MTVfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTVfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNQotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDE2X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE2X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNgotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxN19jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE3X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxOF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MThfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOAotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBDMTgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDE5X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgQzE4Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE5X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTggPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgID4KLXN0cnVjdCBzZXRfYwotICAgIDogc2V0MjBfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBDMTgsIEMxOQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQyMF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL3NoaWZ0X2xlZnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9zaGlmdF9sZWZ0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWM1MDUyMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL3NoaWZ0X2xlZnQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vIENvcHlyaWdodCBKYWFwIFN1dGVyIDIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gInNoaWZ0X2xlZnQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBzaGlmdF9sZWZ0X2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBzaGlmdF9sZWZ0X2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBzaGlmdF9sZWZ0X2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3Qgc2hpZnRfbGVmdF9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBzaGlmdF9sZWZ0X2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBzaGlmdF9sZWZ0X2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3Qgc2hpZnRfbGVmdF90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3Qgc2hpZnRfbGVmdAotCi0gICAgOiBzaGlmdF9sZWZ0X2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgc2hpZnRfbGVmdF90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgc2hpZnRfbGVmdF90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBzaGlmdF9sZWZ0LCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBzaGlmdF9sZWZ0KQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBzaGlmdF9sZWZ0X2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTiwgdHlwZW5hbWUgUyA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgTjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgIDw8IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChTKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC9zaGlmdF9yaWdodC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL3NoaWZ0X3JpZ2h0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODhkYjkzMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL3NoaWZ0X3JpZ2h0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLyBDb3B5cmlnaHQgSmFhcCBTdXRlciAyMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJzaGlmdF9yaWdodC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IHNoaWZ0X3JpZ2h0X2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBzaGlmdF9yaWdodF9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgc2hpZnRfcmlnaHRfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBzaGlmdF9yaWdodF9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBzaGlmdF9yaWdodF9pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3Qgc2hpZnRfcmlnaHRfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBzaGlmdF9yaWdodF90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3Qgc2hpZnRfcmlnaHQKLQotICAgIDogc2hpZnRfcmlnaHRfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBzaGlmdF9yaWdodF90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgc2hpZnRfcmlnaHRfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgc2hpZnRfcmlnaHQsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIHNoaWZ0X3JpZ2h0KQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBzaGlmdF9yaWdodF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4sIHR5cGVuYW1lIFMgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIE46OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlCi0gICAgICAgICAgICAgICAgICA+PiBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoUyk6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvdGVtcGxhdGVfYXJpdHkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC90ZW1wbGF0ZV9hcml0eS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFkOWYwZjEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC90ZW1wbGF0ZV9hcml0eS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gKlByZXByb2Nlc3NlZCogdmVyc2lvbiBvZiB0aGUgbWFpbiAidGVtcGxhdGVfYXJpdHkuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgYm9vbCA+Ci1zdHJ1Y3QgdGVtcGxhdGVfYXJpdHlfaW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGID4gc3RydWN0IHJlc3VsdF8KLSAgICAgICAgOiBtcGw6OmludF88IC0xID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB0ZW1wbGF0ZV9hcml0eV9pbXBsPHRydWU+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYgPiBzdHJ1Y3QgcmVzdWx0XwotICAgICAgICA6IEY6OmFyaXR5Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiA+Ci1zdHJ1Y3QgdGVtcGxhdGVfYXJpdHkKLSAgICA6IHRlbXBsYXRlX2FyaXR5X2ltcGw8IDo6bmRuYm9vc3Q6Om1wbDo6YXV4OjpoYXNfcmViaW5kPEY+Ojp2YWx1ZSA+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxGPgotewotfTsKLQotfX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvdGltZXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC90aW1lcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY0MGMwODMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvYmNjX3ByZTU5MC90aW1lcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gInRpbWVzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgdGltZXNfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IHRpbWVzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCB0aW1lc19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IHRpbWVzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IHRpbWVzX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCB0aW1lc19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHRpbWVzX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCB0aW1lcwotICAgIDogdGltZXM8IHRpbWVzPCB0aW1lczwgdGltZXM8IE4xLE4yID4sIE4zPiwgTjQ+LCBONT4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCB0aW1lcwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zLCB0eXBlbmFtZSBONAotICAgID4KLXN0cnVjdCB0aW1lczwgTjEsTjIsTjMsTjQsbmEgPgotCi0gICAgOiB0aW1lczwgdGltZXM8IHRpbWVzPCBOMSxOMiA+LCBOMz4sIE40PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgdGltZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMwotICAgID4KLXN0cnVjdCB0aW1lczwgTjEsTjIsTjMsbmEsbmEgPgotCi0gICAgOiB0aW1lczwgdGltZXM8IE4xLE4yID4sIE4zPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgdGltZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIG5hLCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IHRpbWVzPCBOMSxOMixuYSxuYSxuYSA+Ci0gICAgOiB0aW1lc19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIHRpbWVzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSB0aW1lc190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCB0aW1lcwotICAgICAgICAsICggTjEsIE4yLCBuYSwgbmEsIG5hICkKLSAgICAgICAgKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIHRpbWVzKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCB0aW1lc19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgKiBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL3VucGFja19hcmdzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvdW5wYWNrX2FyZ3MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZDBjMzI4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvdW5wYWNrX2FyZ3MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAyLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gInVucGFja19hcmdzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGludCBzaXplLCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4KLXN0cnVjdCB1bnBhY2tfYXJnc19pbXBsOwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDwgMCxGLEFyZ3MgPgotICAgIDogYXBwbHkwPAotICAgICAgICAgIEYKLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPgotc3RydWN0IHVucGFja19hcmdzX2ltcGw8IDEsRixBcmdzID4KLSAgICA6IGFwcGx5MTwKLSAgICAgICAgICBGCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywwID46OnR5cGUKLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPgotc3RydWN0IHVucGFja19hcmdzX2ltcGw8IDIsRixBcmdzID4KLSAgICA6IGFwcGx5MjwKLSAgICAgICAgICBGCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywwID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMSA+Ojp0eXBlCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4KLXN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPCAzLEYsQXJncyA+Ci0gICAgOiBhcHBseTM8Ci0gICAgICAgICAgRgotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMCA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDEgPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMiA+Ojp0eXBlCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4KLXN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPCA0LEYsQXJncyA+Ci0gICAgOiBhcHBseTQ8Ci0gICAgICAgICAgRgotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMCA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDEgPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMiA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDMgPjo6dHlwZQotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDwgNSxGLEFyZ3MgPgotICAgIDogYXBwbHk1PAotICAgICAgICAgIEYKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDAgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywxID46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDIgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywzID46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDQgPjo6dHlwZQotICAgICAgICA+Ci17Ci19OwotCi19Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCB1bnBhY2tfYXJncwotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBBcmdzID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dW5wYWNrX2FyZ3NfaW1wbDwKLSAgICAgICAgICAgICAgc2l6ZTxBcmdzPjo6dmFsdWUKLSAgICAgICAgICAgICwgRgotICAgICAgICAgICAgLCBBcmdzCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9QQVNTX1RIUk9VR0hfTEFNQkRBX1NQRUMoMSwgdW5wYWNrX2FyZ3MpCi0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvdmVjdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvdmVjdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTlhYjg2MC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL3ZlY3Rvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vICpQcmVwcm9jZXNzZWQqIHZlcnNpb24gb2YgdGhlIG1haW4gInZlY3Rvci5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCA9IG5hLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hLCB0eXBlbmFtZSBUNiA9IG5hLCB0eXBlbmFtZSBUNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUOCA9IG5hLCB0eXBlbmFtZSBUOSA9IG5hLCB0eXBlbmFtZSBUMTAgPSBuYSwgdHlwZW5hbWUgVDExID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxMiA9IG5hLCB0eXBlbmFtZSBUMTMgPSBuYSwgdHlwZW5hbWUgVDE0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxNSA9IG5hLCB0eXBlbmFtZSBUMTYgPSBuYSwgdHlwZW5hbWUgVDE3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxOCA9IG5hLCB0eXBlbmFtZSBUMTkgPSBuYQotICAgID4KLXN0cnVjdCB2ZWN0b3I7Ci0KLXRlbXBsYXRlPAotICAgICAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMDwgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjA8ICA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE8VDA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxPFQwPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMjwgVDAsVDEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMjwgVDAsVDEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjM8IFQwLFQxLFQyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjM8IFQwLFQxLFQyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yNDwgVDAsVDEsVDIsVDMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNDwgVDAsVDEsVDIsVDMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yNTwgVDAsVDEsVDIsVDMsVDQgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNTwgVDAsVDEsVDIsVDMsVDQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3Rvcjk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcjk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMQotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE1PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE2PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNzwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTg8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE5PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTggPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgPgotc3RydWN0IHZlY3RvcgotICAgIDogdmVjdG9yMjA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMjA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9iY2NfcHJlNTkwL3ZlY3Rvcl9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvdmVjdG9yX2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MDdiZmQ4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2JjY19wcmU1OTAvdmVjdG9yX2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzA5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA4Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJ2ZWN0b3JfYy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwID0gTE9OR19NQVgsIGxvbmcgQzEgPSBMT05HX01BWCwgbG9uZyBDMiA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMzID0gTE9OR19NQVgsIGxvbmcgQzQgPSBMT05HX01BWCwgbG9uZyBDNSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM2ID0gTE9OR19NQVgsIGxvbmcgQzcgPSBMT05HX01BWCwgbG9uZyBDOCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM5ID0gTE9OR19NQVgsIGxvbmcgQzEwID0gTE9OR19NQVgsIGxvbmcgQzExID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzEyID0gTE9OR19NQVgsIGxvbmcgQzEzID0gTE9OR19NQVgsIGxvbmcgQzE0ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE1ID0gTE9OR19NQVgsIGxvbmcgQzE2ID0gTE9OR19NQVgsIGxvbmcgQzE3ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE4ID0gTE9OR19NQVgsIGxvbmcgQzE5ID0gTE9OR19NQVgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IwX2M8VD4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjBfYzxUPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjFfYzwgVCwgVChDMCkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMV9jPCBULCBUKEMwKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMl9jPCBULCBUKEMwKSwgVChDMSkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMl9jPCBULCBUKEMwKSwgVChDMSkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjNfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IzX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMikgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjRfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMykgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yNV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjZfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I2X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjdfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNikgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yN19jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yOF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNykgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yOF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNykgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjlfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I5X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEwX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEwX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTFfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMl9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTJfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEzX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEzX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMwotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTRfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTVfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNQotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE2X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE2X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTdfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxN19jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxOF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpLCBUKEMxNykgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMThfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSwgVChDMTcpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBDMTgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE5X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNiksIFQoQzE3KSwgVChDMTgpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE5X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNiksIFQoQzE3KSwgVChDMTgpID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2MKLSAgICA6IHZlY3RvcjIwX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNiksIFQoQzE3KSwgVChDMTgpLCBUKEMxOSkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMjBfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSwgVChDMTcpLCBUKEMxOCksIFQoQzE5KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvYWR2YW5jZV9iYWNrd2FyZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvYWR2YW5jZV9iYWNrd2FyZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBlMGM4MjguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2FkdmFuY2VfYmFja3dhcmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9hZHZhbmNlX2JhY2t3YXJkLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGxvbmcgTiA+IHN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkOwotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ8MD4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ8MT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIGl0ZXIxIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkPDI+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjIgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjMgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ8ND4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgICAgICB0eXBlZGVmIGl0ZXI0IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCBsb25nIE4gPgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGFkdmFuY2VfYmFja3dhcmQ8ND4KLSAgICAgICAgICAgICwgSXRlcmF0b3IKLSAgICAgICAgICAgID46OnR5cGUgY2h1bmtfcmVzdWx0XzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBhZHZhbmNlX2JhY2t3YXJkPCgKLSAgICAgICAgICAgICAgICAoTiAtIDQpIDwgMAotICAgICAgICAgICAgICAgICAgICA/IDAKLSAgICAgICAgICAgICAgICAgICAgOiBOIC0gNAotICAgICAgICAgICAgICAgICAgICApPgotICAgICAgICAgICAgLCBjaHVua19yZXN1bHRfCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvYWR2YW5jZV9mb3J3YXJkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9hZHZhbmNlX2ZvcndhcmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiM2E1YWZkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9hZHZhbmNlX2ZvcndhcmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9hZHZhbmNlX2ZvcndhcmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgbG9uZyBOID4gc3RydWN0IGFkdmFuY2VfZm9yd2FyZDsKLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ8MD4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZDwxPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkPDI+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIGl0ZXIyIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjMgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZDw0PgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAgICAgdHlwZWRlZiBpdGVyNCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgbG9uZyBOID4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGFkdmFuY2VfZm9yd2FyZDw0PgotICAgICAgICAgICAgLCBJdGVyYXRvcgotICAgICAgICAgICAgPjo6dHlwZSBjaHVua19yZXN1bHRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGFkdmFuY2VfZm9yd2FyZDwoCi0gICAgICAgICAgICAgICAgKE4gLSA0KSA8IDAKLSAgICAgICAgICAgICAgICAgICAgPyAwCi0gICAgICAgICAgICAgICAgICAgIDogTiAtIDQKLSAgICAgICAgICAgICAgICAgICAgKT4KLSAgICAgICAgICAgICwgY2h1bmtfcmVzdWx0XwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi19fX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2FuZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvYW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWMxYjk1YS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvYW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2FuZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBib29sIENfLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCA+Ci1zdHJ1Y3QgYW5kX2ltcGwKLSAgICA6IGZhbHNlXwotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0ID4KLXN0cnVjdCBhbmRfaW1wbDwgdHJ1ZSxUMSxUMixUMyxUNCA+Ci0gICAgOiBhbmRfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX05FU1RFRF9UWVBFX1dLTkQoVDEpOjp2YWx1ZQotICAgICAgICAsIFQyLCBUMywgVDQKLSAgICAgICAgLCB0cnVlXwotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYW5kX2ltcGw8Ci0gICAgICAgICAgdHJ1ZQotICAgICAgICAsIHRydWVfLCB0cnVlXywgdHJ1ZV8sIHRydWVfCi0gICAgICAgID4KLSAgICA6IHRydWVfCi17Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQxKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMikKLSAgICAsIHR5cGVuYW1lIFQzID0gdHJ1ZV8sIHR5cGVuYW1lIFQ0ID0gdHJ1ZV8sIHR5cGVuYW1lIFQ1ID0gdHJ1ZV8KLSAgICA+Ci1zdHJ1Y3QgYW5kXwotCi0gICAgOiBhdXg6OmFuZF9pbXBsPAotICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1RZUEVfV0tORChUMSk6OnZhbHVlCi0gICAgICAgICwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgPgotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgYW5kXwotICAgICAgICAsICggVDEsIFQyLCBUMywgVDQsIFQ1KQotICAgICAgICApCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKAotICAgICAgMgotICAgICwgNQotICAgICwgYW5kXwotICAgICkKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9hcHBseS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvYXBwbHkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MGY3MmIwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9hcHBseS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNjkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXBwbHkuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseTAKLQotICAgIDogYXBwbHlfd3JhcDA8Ci0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDEKLSAgICAgICAgLCBhcHBseTAKLSAgICAgICAgLCAoRiApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseTwgRixuYSxuYSxuYSxuYSxuYSA+Ci0gICAgOiBhcHBseTA8Rj4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkxCi0KLSAgICA6IGFwcGx5X3dyYXAxPAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgICAsIFQxCi0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDIKLSAgICAgICAgLCBhcHBseTEKLSAgICAgICAgLCAoRiwgVDEpCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk8IEYsVDEsbmEsbmEsbmEsbmEgPgotICAgIDogYXBwbHkxPCBGLFQxID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGFwcGx5MgotCi0gICAgOiBhcHBseV93cmFwMjwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAgLCBUMSwgVDIKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgMwotICAgICAgICAsIGFwcGx5MgotICAgICAgICAsIChGLCBUMSwgVDIpCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGFwcGx5PCBGLFQxLFQyLG5hLG5hLG5hID4KLSAgICA6IGFwcGx5MjwgRixUMSxUMiA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkzCi0KLSAgICA6IGFwcGx5X3dyYXAzPAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgICAsIFQxLCBUMiwgVDMKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNAotICAgICAgICAsIGFwcGx5MwotICAgICAgICAsIChGLCBUMSwgVDIsIFQzKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk8IEYsVDEsVDIsVDMsbmEsbmEgPgotICAgIDogYXBwbHkzPCBGLFQxLFQyLFQzID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk0Ci0KLSAgICA6IGFwcGx5X3dyYXA0PAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgICAsIFQxLCBUMiwgVDMsIFQ0Ci0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBhcHBseTQKLSAgICAgICAgLCAoRiwgVDEsIFQyLCBUMywgVDQpCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk8IEYsVDEsVDIsVDMsVDQsbmEgPgotICAgIDogYXBwbHk0PCBGLFQxLFQyLFQzLFQ0ID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGFwcGx5NQotCi0gICAgOiBhcHBseV93cmFwNTwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAgLCBUMSwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNgotICAgICAgICAsIGFwcGx5NQotICAgICAgICAsIChGLCBUMSwgVDIsIFQzLCBUNCwgVDUpCi0gICAgICAgICkKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGFwcGx5Ci0gICAgOiBhcHBseTU8IEYsVDEsVDIsVDMsVDQsVDUgPgotewotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2FwcGx5X2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvYXBwbHlfZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmNjYzk0ZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvYXBwbHlfZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2FwcGx5X2Z3ZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hCi0gICAgPgotc3RydWN0IGFwcGx5OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkwOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGFwcGx5MTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkyOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkzOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGFwcGx5NDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk1OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvYXBwbHlfd3JhcC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvYXBwbHlfd3JhcC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVjOTAyMDIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2FwcGx5X3dyYXAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXBwbHlfd3JhcC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0KLSAgICAsIHR5cGVuYW1lIGhhc19hcHBseV8gPSB0eXBlbmFtZSBhdXg6Omhhc19hcHBseTxGPjo6dHlwZQotCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXAwCi0KLSAgICA6IEY6OnRlbXBsYXRlIGFwcGx5PCAgPgotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYgPgotc3RydWN0IGFwcGx5X3dyYXAwPCBGLHRydWVfID4KLSAgICA6IEY6OmFwcGx5Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0KLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDEKLQotICAgIDogRjo6dGVtcGxhdGUgYXBwbHk8VDE+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXAyCi0KLSAgICA6IEY6OnRlbXBsYXRlIGFwcGx5PCBUMSxUMiA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwMwotCi0gICAgOiBGOjp0ZW1wbGF0ZSBhcHBseTwgVDEsVDIsVDMgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXA0Ci0KLSAgICA6IEY6OnRlbXBsYXRlIGFwcGx5PCBUMSxUMixUMyxUNCA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXA1Ci0KLSAgICA6IEY6OnRlbXBsYXRlIGFwcGx5PCBUMSxUMixUMyxUNCxUNSA+Ci17Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvYXJnLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9hcmcuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNTQ0NzZhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9hcmcuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTIzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IFBldGVyIERpbW92IDIwMDEtMjAwMgotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2FyZy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8IC0xID4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAtMSk7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdGFnKQotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHR5cGUpCi0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFUxIHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPDE+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMSk7Ci0gICAgdHlwZWRlZiBhcmc8Mj4gbmV4dDsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTEgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8Mj4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAyKTsKLSAgICB0eXBlZGVmIGFyZzwzPiBuZXh0OwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBVMiB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEodHlwZSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGFyZzwzPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDMpOwotICAgIHR5cGVkZWYgYXJnPDQ+IG5leHQ7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdGFnKQotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHR5cGUpCi0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFUzIHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPDQ+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gNCk7Ci0gICAgdHlwZWRlZiBhcmc8NT4gbmV4dDsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTQgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8NT4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSA1KTsKLSAgICB0eXBlZGVmIGFyZzw2PiBuZXh0OwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBVNSB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEodHlwZSk7Ci0gICAgfTsKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTk9OVFlQRV9BUklUWV9TUEVDKDEsaW50LCBhcmcpCi0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvYmFzaWNfYmluZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvYmFzaWNfYmluZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE3ZWYzZmYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2Jhc2ljX2JpbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDA2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IFBldGVyIERpbW92IDIwMDEKLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2Jhc2ljX2JpbmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgLCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnCi17Ci0gICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwgYXJnPE4+LCBVMSwgVTIsIFUzLCBVNCwgVTUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8bXBsOjphcmc8Tj4sIFUxLCBVMiwgVTMsIFU0LCBVNT46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwgYmluZDwgRixUMSxUMixUMyxUNCxUNSA+LCBVMSwgVTIsIFUzLCBVNCwgVTUgPgotewotICAgIHR5cGVkZWYgYmluZDwgRixUMSxUMixUMyxUNCxUNSA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIGludCBkdW1teV8KLSAgICA+Ci1zdHJ1Y3QgYmluZDAKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgRixVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMDwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQwPEY+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMDxGPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDEsIGJpbmQwKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDEsIGJpbmQwKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIGludCBkdW1teV8KLSAgICA+Ci1zdHJ1Y3QgYmluZDwgRixuYSxuYSxuYSxuYSxuYSA+Ci0gICAgOiBiaW5kMDxGPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgaW50IGR1bW15XwotICAgID4KLXN0cnVjdCBiaW5kMQotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBGLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMwotICAgICwgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kMTwgRixUMSA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMTwgRixUMSA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoMiwgYmluZDEpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMiwgYmluZDEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIGludCBkdW1teV8KLSAgICA+Ci1zdHJ1Y3QgYmluZDwgRixUMSxuYSxuYSxuYSxuYSA+Ci0gICAgOiBiaW5kMTwgRixUMSA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgaW50IGR1bW15XwotICAgID4KLXN0cnVjdCBiaW5kMgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBGLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyCi0gICAgLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kMjwgRixUMSxUMiA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMjwgRixUMSxUMiA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoMywgYmluZDIpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMywgYmluZDIpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCBpbnQgZHVtbXlfCi0gICAgPgotc3RydWN0IGJpbmQ8IEYsVDEsVDIsbmEsbmEsbmEgPgotICAgIDogYmluZDI8IEYsVDEsVDIgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCBpbnQgZHVtbXlfCi0gICAgPgotc3RydWN0IGJpbmQzCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IEYsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQxLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDM8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBVMQotICAgICwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQzPCBGLFQxLFQyLFQzID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQzPCBGLFQxLFQyLFQzID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg0LCBiaW5kMykKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg0LCBiaW5kMykKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCBpbnQgZHVtbXlfCi0gICAgPgotc3RydWN0IGJpbmQ8IEYsVDEsVDIsVDMsbmEsbmEgPgotICAgIDogYmluZDM8IEYsVDEsVDIsVDMgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgaW50IGR1bW15XwotICAgID4KLXN0cnVjdCBiaW5kNAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBGLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUNCxVMSxVMixVMyxVNCxVNSA+IHQ0OwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNDwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlLCB0eXBlbmFtZSB0Mzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSB0NDo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg1LCBiaW5kNCkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg1LCBiaW5kNCkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgaW50IGR1bW15XwotICAgID4KLXN0cnVjdCBiaW5kPCBGLFQxLFQyLFQzLFQ0LG5hID4KLSAgICA6IGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCBpbnQgZHVtbXlfCi0gICAgPgotc3RydWN0IGJpbmQ1Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IEYsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQxLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQ0LFUxLFUyLFUzLFU0LFU1ID4gdDQ7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUNSxVMSxVMixVMyxVNCxVNSA+IHQ1OwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlLCB0eXBlbmFtZSB0Mzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSB0NDo6dHlwZSwgdHlwZW5hbWUgdDU6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgLCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDU8IEYsVDEsVDIsVDMsVDQsVDUgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDU8IEYsVDEsVDIsVDMsVDQsVDUgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDYsIGJpbmQ1KQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDYsIGJpbmQ1KQotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgaW50IGR1bW15XwotICAgID4KLXN0cnVjdCBiaW5kCi0gICAgOiBiaW5kNTwgRixUMSxUMixUMyxUNCxUNSA+Ci17Ci19OwotCi0vLy8gaWZfL2V2YWxfaWYgc3BlY2lhbGl6YXRpb25zCi10ZW1wbGF0ZTwgdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMgPiBjbGFzcyBGLCB0eXBlbmFtZSBUYWcgPgotc3RydWN0IHF1b3RlMzsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMgPiBzdHJ1Y3QgaWZfOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBiaW5kMzwKLSAgICAgIHF1b3RlMzwgaWZfLFRhZyA+Ci0gICAgLCBUMSwgVDIsIFQzCi0gICAgPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgbXBsOjphcmc8MT4gbjE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICB0eXBlbmFtZSB0MTo6dHlwZQotICAgICAgICAgICAgLCB0MiwgdDMKLSAgICAgICAgICAgID46OnR5cGUgZl87Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGZfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9iaW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9iaW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzU2ZjYzZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvYmluZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MTUgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgUGV0ZXIgRGltb3YgMjAwMQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2JpbmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgLCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnCi17Ci0gICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIHR5cGVuYW1lIEFyZwotICAgID4KLXN0cnVjdCByZXBsYWNlX3VubmFtZWRfYXJnCi17Ci0gICAgdHlwZWRlZiBBcmcgbmV4dDsKLSAgICB0eXBlZGVmIFQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgQXJnCi0gICAgPgotc3RydWN0IHJlcGxhY2VfdW5uYW1lZF9hcmc8IGFyZzwgLTEgPiwgQXJnID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEFyZzo6bmV4dCBuZXh0OwotICAgIHR5cGVkZWYgQXJnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwgYXJnPE4+LCBVMSwgVTIsIFUzLCBVNCwgVTUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8bXBsOjphcmc8Tj4sIFUxLCBVMiwgVTMsIFU0LCBVNT46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwgYmluZDwgRixUMSxUMixUMyxUNCxUNSA+LCBVMSwgVTIsIFUzLCBVNCwgVTUgPgotewotICAgIHR5cGVkZWYgYmluZDwgRixUMSxUMixUMyxUNCxUNSA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIGludCBkdW1teV8KLSAgICA+Ci1zdHJ1Y3QgYmluZDAKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDA8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kMDxGPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDA8Rj4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygxLCBiaW5kMCkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygxLCBiaW5kMCkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCBpbnQgZHVtbXlfCi0gICAgPgotc3RydWN0IGJpbmQ8IEYsbmEsbmEsbmEsbmEsbmEgPgotICAgIDogYmluZDA8Rj4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIGludCBkdW1teV8KLSAgICA+Ci1zdHJ1Y3QgYmluZDEKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDEsbjEgPiByMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6dHlwZSBhMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6bmV4dCBuMjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGExLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMKLSAgICAsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDE8IEYsVDEgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDE8IEYsVDEgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDIsIGJpbmQxKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDIsIGJpbmQxKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCBpbnQgZHVtbXlfCi0gICAgPgotc3RydWN0IGJpbmQ8IEYsVDEsbmEsbmEsbmEsbmEgPgotICAgIDogYmluZDE8IEYsVDEgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIGludCBkdW1teV8KLSAgICA+Ci1zdHJ1Y3QgYmluZDIKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDEsbjEgPiByMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6dHlwZSBhMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6bmV4dCBuMjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGExLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDIsbjIgPiByMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6dHlwZSBhMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6bmV4dCBuMzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyCi0gICAgLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kMjwgRixUMSxUMiA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMjwgRixUMSxUMiA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoMywgYmluZDIpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMywgYmluZDIpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCBpbnQgZHVtbXlfCi0gICAgPgotc3RydWN0IGJpbmQ8IEYsVDEsVDIsbmEsbmEsbmEgPgotICAgIDogYmluZDI8IEYsVDEsVDIgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCBpbnQgZHVtbXlfCi0gICAgPgotc3RydWN0IGJpbmQzCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IEYsIG1wbDo6YXJnPDE+ID4gcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6OnR5cGUgYTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6Om5leHQgbjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMCxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQxLG4xID4gcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6OnR5cGUgYTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6Om5leHQgbjI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQyLG4yID4gcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6OnR5cGUgYTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6Om5leHQgbjM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQzLG4zID4gcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6OnR5cGUgYTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6Om5leHQgbjQ7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICAvLy8KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAzPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUsIHR5cGVuYW1lIHQzOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVTEKLSAgICAsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kMzwgRixUMSxUMixUMyA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMzwgRixUMSxUMixUMyA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNCwgYmluZDMpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNCwgYmluZDMpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgaW50IGR1bW15XwotICAgID4KLXN0cnVjdCBiaW5kPCBGLFQxLFQyLFQzLG5hLG5hID4KLSAgICA6IGJpbmQzPCBGLFQxLFQyLFQzID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIGludCBkdW1teV8KLSAgICA+Ci1zdHJ1Y3QgYmluZDQKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDEsbjEgPiByMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6dHlwZSBhMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6bmV4dCBuMjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGExLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDIsbjIgPiByMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6dHlwZSBhMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6bmV4dCBuMzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDMsbjMgPiByMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6dHlwZSBhMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6bmV4dCBuNDsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDQsbjQgPiByNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByNDo6dHlwZSBhNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByNDo6bmV4dCBuNTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGE0LFUxLFUyLFUzLFU0LFU1ID4gdDQ7Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDQ8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDQ6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kNDwgRixUMSxUMixUMyxUNCA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kNDwgRixUMSxUMixUMyxUNCA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNSwgYmluZDQpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNSwgYmluZDQpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIGludCBkdW1teV8KLSAgICA+Ci1zdHJ1Y3QgYmluZDwgRixUMSxUMixUMyxUNCxuYSA+Ci0gICAgOiBiaW5kNDwgRixUMSxUMixUMyxUNCA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgaW50IGR1bW15XwotICAgID4KLXN0cnVjdCBiaW5kNQotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMixuMiA+IHIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjp0eXBlIGEyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjpuZXh0IG4zOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMyxuMyA+IHIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjp0eXBlIGEzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjpuZXh0IG40OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUNCxuNCA+IHI0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI0Ojp0eXBlIGE0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI0OjpuZXh0IG41OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTQsVTEsVTIsVTMsVTQsVTUgPiB0NDsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUNSxuNSA+IHI1OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI1Ojp0eXBlIGE1OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI1OjpuZXh0IG42OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTUsVTEsVTIsVTMsVTQsVTUgPiB0NTsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlLCB0eXBlbmFtZSB0Mzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSB0NDo6dHlwZSwgdHlwZW5hbWUgdDU6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgLCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDU8IEYsVDEsVDIsVDMsVDQsVDUgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDU8IEYsVDEsVDIsVDMsVDQsVDUgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDYsIGJpbmQ1KQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDYsIGJpbmQ1KQotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgaW50IGR1bW15XwotICAgID4KLXN0cnVjdCBiaW5kCi0gICAgOiBiaW5kNTwgRixUMSxUMixUMyxUNCxUNSA+Ci17Ci19OwotCi0vLy8gaWZfL2V2YWxfaWYgc3BlY2lhbGl6YXRpb25zCi10ZW1wbGF0ZTwgdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMgPiBjbGFzcyBGLCB0eXBlbmFtZSBUYWcgPgotc3RydWN0IHF1b3RlMzsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMgPiBzdHJ1Y3QgaWZfOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBiaW5kMzwKLSAgICAgIHF1b3RlMzwgaWZfLFRhZyA+Ci0gICAgLCBUMSwgVDIsIFQzCi0gICAgPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgbXBsOjphcmc8MT4gbjE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMixuMiA+IHIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjp0eXBlIGEyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjpuZXh0IG4zOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMyxuMyA+IHIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjp0eXBlIGEzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjpuZXh0IG40OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICB0eXBlbmFtZSB0MTo6dHlwZQotICAgICAgICAgICAgLCB0MiwgdDMKLSAgICAgICAgICAgID46OnR5cGUgZl87Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGZfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9iaW5kX2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvYmluZF9md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMmVlZWI5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9iaW5kX2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9iaW5kX2Z3ZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hLCBpbnQgZHVtbXlfID0gMAotICAgID4KLXN0cnVjdCBiaW5kOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIGludCBkdW1teV8gPSAwCi0gICAgPgotc3RydWN0IGJpbmQwOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCBpbnQgZHVtbXlfID0gMAotICAgID4KLXN0cnVjdCBiaW5kMTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIGludCBkdW1teV8gPSAwCi0gICAgPgotc3RydWN0IGJpbmQyOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIGludCBkdW1teV8gPSAwCi0gICAgPgotc3RydWN0IGJpbmQzOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCBpbnQgZHVtbXlfID0gMAotICAgID4KLXN0cnVjdCBiaW5kNDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIGludCBkdW1teV8gPSAwCi0gICAgPgotc3RydWN0IGJpbmQ1OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvYml0YW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9iaXRhbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZDhjYzVjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9iaXRhbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ3ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLyBDb3B5cmlnaHQgSmFhcCBTdXRlciAyMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2JpdGFuZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGJpdGFuZF9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgYml0YW5kX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBiaXRhbmRfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBiaXRhbmRfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgYml0YW5kX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBiaXRhbmRfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBiaXRhbmRfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IGJpdGFuZF8KLSAgICA6IGJpdGFuZF88IGJpdGFuZF88IGJpdGFuZF88IGJpdGFuZF88IE4xLE4yID4sIE4zPiwgTjQ+LCBONT4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRhbmRfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMsIHR5cGVuYW1lIE40Ci0gICAgPgotc3RydWN0IGJpdGFuZF88IE4xLE4yLE4zLE40LG5hID4KLQotICAgIDogYml0YW5kXzwgYml0YW5kXzwgYml0YW5kXzwgTjEsTjIgPiwgTjM+LCBOND4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdGFuZF8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMwotICAgID4KLXN0cnVjdCBiaXRhbmRfPCBOMSxOMixOMyxuYSxuYSA+Ci0KLSAgICA6IGJpdGFuZF88IGJpdGFuZF88IE4xLE4yID4sIE4zPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0YW5kXwotICAgICAgICAsICggTjEsIE4yLCBOMywgbmEsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgYml0YW5kXzwgTjEsTjIsbmEsbmEsbmEgPgotICAgIDogYml0YW5kX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgYml0YW5kX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBiaXRhbmRfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0YW5kXwotICAgICAgICAsICggTjEsIE4yLCBuYSwgbmEsIG5hICkKLSAgICAgICAgKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIGJpdGFuZF8pCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IGJpdGFuZF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgJiBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvYml0b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2JpdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTk4MjQ3Yi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvYml0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ3ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLyBDb3B5cmlnaHQgSmFhcCBTdXRlciAyMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2JpdG9yLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgYml0b3JfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGJpdG9yX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBiaXRvcl9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGJpdG9yX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGJpdG9yX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBiaXRvcl9pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGJpdG9yX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBiaXRvcl8KLSAgICA6IGJpdG9yXzwgYml0b3JfPCBiaXRvcl88IGJpdG9yXzwgTjEsTjIgPiwgTjM+LCBOND4sIE41PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdG9yXwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zLCB0eXBlbmFtZSBONAotICAgID4KLXN0cnVjdCBiaXRvcl88IE4xLE4yLE4zLE40LG5hID4KLQotICAgIDogYml0b3JfPCBiaXRvcl88IGJpdG9yXzwgTjEsTjIgPiwgTjM+LCBOND4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdG9yXwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zCi0gICAgPgotc3RydWN0IGJpdG9yXzwgTjEsTjIsTjMsbmEsbmEgPgotCi0gICAgOiBiaXRvcl88IGJpdG9yXzwgTjEsTjIgPiwgTjM+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIG5hLCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IGJpdG9yXzwgTjEsTjIsbmEsbmEsbmEgPgotICAgIDogYml0b3JfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBiaXRvcl90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgYml0b3JfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIG5hLCBuYSwgbmEgKQotICAgICAgICApCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgYml0b3JfKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBiaXRvcl9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgfCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvYml0eG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9iaXR4b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZjI3NmI3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9iaXR4b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ3ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLyBDb3B5cmlnaHQgSmFhcCBTdXRlciAyMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2JpdHhvci5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGJpdHhvcl9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgYml0eG9yX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBiaXR4b3JfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBiaXR4b3JfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgYml0eG9yX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBiaXR4b3JfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBiaXR4b3JfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IGJpdHhvcl8KLSAgICA6IGJpdHhvcl88IGJpdHhvcl88IGJpdHhvcl88IGJpdHhvcl88IE4xLE4yID4sIE4zPiwgTjQ+LCBONT4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXR4b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMsIHR5cGVuYW1lIE40Ci0gICAgPgotc3RydWN0IGJpdHhvcl88IE4xLE4yLE4zLE40LG5hID4KLQotICAgIDogYml0eG9yXzwgYml0eG9yXzwgYml0eG9yXzwgTjEsTjIgPiwgTjM+LCBOND4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdHhvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMwotICAgID4KLXN0cnVjdCBiaXR4b3JfPCBOMSxOMixOMyxuYSxuYSA+Ci0KLSAgICA6IGJpdHhvcl88IGJpdHhvcl88IE4xLE4yID4sIE4zPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0eG9yXwotICAgICAgICAsICggTjEsIE4yLCBOMywgbmEsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgYml0eG9yXzwgTjEsTjIsbmEsbmEsbmEgPgotICAgIDogYml0eG9yX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgYml0eG9yX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBiaXR4b3JfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0eG9yXwotICAgICAgICAsICggTjEsIE4yLCBuYSwgbmEsIG5hICkKLSAgICAgICAgKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIGJpdHhvcl8pCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IGJpdHhvcl9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgXiBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvZGVxdWUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2RlcXVlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDYzMWY2Ni4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvZGVxdWUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzIzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2RlcXVlLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwID0gbmEsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEsIHR5cGVuYW1lIFQ2ID0gbmEsIHR5cGVuYW1lIFQ3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ4ID0gbmEsIHR5cGVuYW1lIFQ5ID0gbmEsIHR5cGVuYW1lIFQxMCA9IG5hLCB0eXBlbmFtZSBUMTEgPSBuYQotICAgICwgdHlwZW5hbWUgVDEyID0gbmEsIHR5cGVuYW1lIFQxMyA9IG5hLCB0eXBlbmFtZSBUMTQgPSBuYQotICAgICwgdHlwZW5hbWUgVDE1ID0gbmEsIHR5cGVuYW1lIFQxNiA9IG5hLCB0eXBlbmFtZSBUMTcgPSBuYQotICAgICwgdHlwZW5hbWUgVDE4ID0gbmEsIHR5cGVuYW1lIFQxOSA9IG5hCi0gICAgPgotc3RydWN0IGRlcXVlOwotCi10ZW1wbGF0ZTwKLSAgICAgCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMDwgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjA8ICA+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+Ci1zdHJ1Y3QgZGVxdWUKLSAgICA6IHZlY3RvcjIwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjIwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2RpdmlkZXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2RpdmlkZXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYmM0NDMzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9kaXZpZGVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9kaXZpZGVzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgZGl2aWRlc19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgZGl2aWRlc19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgZGl2aWRlc19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGRpdmlkZXNfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZGl2aWRlc19pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZGl2aWRlc19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGRpdmlkZXNfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IGRpdmlkZXMKLSAgICA6IGRpdmlkZXM8IGRpdmlkZXM8IGRpdmlkZXM8IGRpdmlkZXM8IE4xLE4yID4sIE4zPiwgTjQ+LCBONT4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBkaXZpZGVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMsIHR5cGVuYW1lIE40Ci0gICAgPgotc3RydWN0IGRpdmlkZXM8IE4xLE4yLE4zLE40LG5hID4KLQotICAgIDogZGl2aWRlczwgZGl2aWRlczwgZGl2aWRlczwgTjEsTjIgPiwgTjM+LCBOND4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGRpdmlkZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMwotICAgID4KLXN0cnVjdCBkaXZpZGVzPCBOMSxOMixOMyxuYSxuYSA+Ci0KLSAgICA6IGRpdmlkZXM8IGRpdmlkZXM8IE4xLE4yID4sIE4zPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgZGl2aWRlcwotICAgICAgICAsICggTjEsIE4yLCBOMywgbmEsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgZGl2aWRlczwgTjEsTjIsbmEsbmEsbmEgPgotICAgIDogZGl2aWRlc19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGRpdmlkZXNfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGRpdmlkZXNfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgZGl2aWRlcwotICAgICAgICAsICggTjEsIE4yLCBuYSwgbmEsIG5hICkKLSAgICAgICAgKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIGRpdmlkZXMpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IGRpdmlkZXNfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgIC8gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2VxdWFsX3RvLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9lcXVhbF90by5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY0NTU4ODUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2VxdWFsX3RvLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2VxdWFsX3RvLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgZXF1YWxfdG9faW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGVxdWFsX3RvX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBlcXVhbF90b19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGVxdWFsX3RvX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGVxdWFsX3RvX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBlcXVhbF90b19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGVxdWFsX3RvX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBlcXVhbF90bwotCi0gICAgOiBlcXVhbF90b19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGVxdWFsX3RvX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBlcXVhbF90b190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBlcXVhbF90bywgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgZXF1YWxfdG8pCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZXF1YWxfdG9faW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGJvb2xfPCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlICA9PSBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSApID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvZm9sZF9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9mb2xkX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OTRjZDQxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9mb2xkX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTgwICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vZm9sZF9pbXBsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDwgMCxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHN0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIwIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw8IDEsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIAotCi0gICAgdHlwZWRlZiBzdGF0ZTEgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMSBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsPCAyLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHN0YXRlMiBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIyIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw8IDMsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHN0YXRlMyBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIzIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw8IDQsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUzLCB0eXBlbmFtZSBkZXJlZjxpdGVyMz46OnR5cGUgPjo6dHlwZSBzdGF0ZTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgIAotCi0gICAgdHlwZWRlZiBzdGF0ZTQgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyNCBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgaW50IE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbAotewotICAgIHR5cGVkZWYgZm9sZF9pbXBsPAotICAgICAgICAgIDQKLSAgICAgICAgLCBGaXJzdAotICAgICAgICAsIExhc3QKLSAgICAgICAgLCBTdGF0ZQotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IGNodW5rXzsKLQotICAgIHR5cGVkZWYgZm9sZF9pbXBsPAotICAgICAgICAgICggKE4gLSA0KSA8IDAgPyAwIDogTiAtIDQgKQotICAgICAgICAsIHR5cGVuYW1lIGNodW5rXzo6aXRlcmF0b3IKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgY2h1bmtfOjpzdGF0ZQotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IHJlc187Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186OnN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDwgLTEsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotICAgIDogZm9sZF9pbXBsPAotICAgICAgICAgIC0xCi0gICAgICAgICwgdHlwZW5hbWUgbXBsOjpuZXh0PEZpcnN0Pjo6dHlwZQotICAgICAgICAsIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBhcHBseTI8Rm9yd2FyZE9wLFN0YXRlLCB0eXBlbmFtZSBkZXJlZjxGaXJzdD46OnR5cGU+Ojp0eXBlCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw8IC0xLExhc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiBMYXN0IGl0ZXJhdG9yOwotfTsKLQotfX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvZnVsbF9sYW1iZGEuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2Z1bGxfbGFtYmRhLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWYxZWI1NC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvZnVsbF9sYW1iZGEuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTM2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vZnVsbF9sYW1iZGEuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIGJvb2wgQzEgPSBmYWxzZSwgYm9vbCBDMiA9IGZhbHNlLCBib29sIEMzID0gZmFsc2UsIGJvb2wgQzQgPSBmYWxzZQotICAgICwgYm9vbCBDNSA9IGZhbHNlCi0gICAgPgotc3RydWN0IGxhbWJkYV9vcgotICAgIDogdHJ1ZV8KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsYW1iZGFfb3I8IGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlID4KLSAgICA6IGZhbHNlXwotewotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgdHlwZW5hbWUgVGFnCi0gICAKLSAgICA+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+Ci0gICAgICAgICwgVGFnCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIGJpbmQ8IEYsVDEsVDIsVDMsVDQsVDUgPiByZXN1bHRfOwotICAgIHR5cGVkZWYgcmVzdWx0XyB0eXBlOwotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDIsIGxhbWJkYSkKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2dyZWF0ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2dyZWF0ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhN2ViNGE0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9ncmVhdGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2dyZWF0ZXIuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBncmVhdGVyX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBncmVhdGVyX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBncmVhdGVyX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgZ3JlYXRlcl9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBncmVhdGVyX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBncmVhdGVyX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgZ3JlYXRlcl90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgZ3JlYXRlcgotCi0gICAgOiBncmVhdGVyX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgZ3JlYXRlcl90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgZ3JlYXRlcl90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBncmVhdGVyLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBncmVhdGVyKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGdyZWF0ZXJfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGJvb2xfPCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlID4gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUgKSA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2dyZWF0ZXJfZXF1YWwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2dyZWF0ZXJfZXF1YWwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNWJkNDEzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9ncmVhdGVyX2VxdWFsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2dyZWF0ZXJfZXF1YWwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBncmVhdGVyX2VxdWFsX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBncmVhdGVyX2VxdWFsX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBncmVhdGVyX2VxdWFsX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgZ3JlYXRlcl9lcXVhbF9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBncmVhdGVyX2VxdWFsX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBncmVhdGVyX2VxdWFsX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgZ3JlYXRlcl9lcXVhbF90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgZ3JlYXRlcl9lcXVhbAotCi0gICAgOiBncmVhdGVyX2VxdWFsX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgZ3JlYXRlcl9lcXVhbF90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgZ3JlYXRlcl9lcXVhbF90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBncmVhdGVyX2VxdWFsLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBncmVhdGVyX2VxdWFsKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGdyZWF0ZXJfZXF1YWxfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGJvb2xfPCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlID49IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlICkgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9pbmhlcml0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9pbmhlcml0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTk3ZjMxMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvaW5oZXJpdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDEgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvaW5oZXJpdC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQxKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMikKLSAgICA+Ci1zdHJ1Y3QgaW5oZXJpdDIKLSAgICA6IFQxLCBUMgotewotICAgIHR5cGVkZWYgaW5oZXJpdDIgdHlwZTsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGluaGVyaXQyLCAoVDEsIFQyKSkKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUMSA+Ci1zdHJ1Y3QgaW5oZXJpdDI8IFQxLGVtcHR5X2Jhc2UgPgotewotICAgIHR5cGVkZWYgVDEgdHlwZTsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoMiwgaW5oZXJpdDIsIChUMSwgZW1wdHlfYmFzZSkpCi19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVDIgPgotc3RydWN0IGluaGVyaXQyPCBlbXB0eV9iYXNlLFQyID4KLXsKLSAgICB0eXBlZGVmIFQyIHR5cGU7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKDIsIGluaGVyaXQyLCAoZW1wdHlfYmFzZSwgVDIpKQotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGluaGVyaXQyPCBlbXB0eV9iYXNlLGVtcHR5X2Jhc2UgPgotewotICAgIHR5cGVkZWYgZW1wdHlfYmFzZSB0eXBlOwotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygyLCBpbmhlcml0MiwgKGVtcHR5X2Jhc2UsIGVtcHR5X2Jhc2UpKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDIsIGluaGVyaXQyKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICA+Ci1zdHJ1Y3QgaW5oZXJpdDMKLSAgICA6IGluaGVyaXQyPAotICAgICAgICAgIHR5cGVuYW1lIGluaGVyaXQyPAotICAgICAgICAgICAgICBUMSwgVDIKLSAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgLCBUMwotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICAzCi0gICAgICAgICwgaW5oZXJpdDMKLSAgICAgICAgLCAoIFQxLCBUMiwgVDMpCi0gICAgICAgICkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQygzLCBpbmhlcml0MykKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hLCB0eXBlbmFtZSBUNCA9IG5hCi0gICAgPgotc3RydWN0IGluaGVyaXQ0Ci0gICAgOiBpbmhlcml0MjwKLSAgICAgICAgICB0eXBlbmFtZSBpbmhlcml0MzwKLSAgICAgICAgICAgICAgVDEsIFQyLCBUMwotICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAsIFQ0Ci0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDQKLSAgICAgICAgLCBpbmhlcml0NAotICAgICAgICAsICggVDEsIFQyLCBUMywgVDQpCi0gICAgICAgICkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQyg0LCBpbmhlcml0NCkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hLCB0eXBlbmFtZSBUNCA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNSA9IG5hCi0gICAgPgotc3RydWN0IGluaGVyaXQ1Ci0gICAgOiBpbmhlcml0MjwKLSAgICAgICAgICB0eXBlbmFtZSBpbmhlcml0NDwKLSAgICAgICAgICAgICAgVDEsIFQyLCBUMywgVDQKLSAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgLCBUNQotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgaW5oZXJpdDUKLSAgICAgICAgLCAoIFQxLCBUMiwgVDMsIFQ0LCBUNSkKLSAgICAgICAgKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDUsIGluaGVyaXQ1KQotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQxID0gZW1wdHlfYmFzZSwgdHlwZW5hbWUgVDIgPSBlbXB0eV9iYXNlCi0gICAgLCB0eXBlbmFtZSBUMyA9IGVtcHR5X2Jhc2UsIHR5cGVuYW1lIFQ0ID0gZW1wdHlfYmFzZQotICAgICwgdHlwZW5hbWUgVDUgPSBlbXB0eV9iYXNlCi0gICAgPgotc3RydWN0IGluaGVyaXQKLSAgICA6IGluaGVyaXQ1PCBUMSxUMixUMyxUNCxUNSA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaW5oZXJpdDwgbmEsbmEsbmEsbmEsbmEgPgotewotICAgIHRlbXBsYXRlPAotCi0gICAgICAgICAgdHlwZW5hbWUgVDEgPSBlbXB0eV9iYXNlLCB0eXBlbmFtZSBUMiA9IGVtcHR5X2Jhc2UKLSAgICAgICAgLCB0eXBlbmFtZSBUMyA9IGVtcHR5X2Jhc2UsIHR5cGVuYW1lIFQ0ID0gZW1wdHlfYmFzZQotICAgICAgICAsIHR5cGVuYW1lIFQ1ID0gZW1wdHlfYmFzZQotCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBpbmhlcml0PCBUMSxUMixUMyxUNCxUNSA+Ci0gICAgewotICAgIH07Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUNfTEFNQkRBKDUsIGluaGVyaXQpCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUNfQVJJVFkoNSwgaW5oZXJpdCkKLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQ19URU1QTEFURV9BUklUWSg1LCA1LCBpbmhlcml0KQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2l0ZXJfZm9sZF9pZl9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9pdGVyX2ZvbGRfaWZfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3NGJkODMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2l0ZXJfZm9sZF9pZl9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8gQ29weXJpZ2h0IERhdmlkIEFicmFoYW1zIDIwMDEtMjAwMgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2l0ZXJfZm9sZF9pZl9pbXBsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yLCB0eXBlbmFtZSBTdGF0ZSA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX251bGxfc3RlcAotewotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPCBib29sID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfc3RlcF9pbXBsCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgSXRlcmF0b3IKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlT3AKLSAgICAgICAgLCB0eXBlbmFtZSBJdGVyYXRvck9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IFN0YXRlT3AsU3RhdGUsSXRlcmF0b3IgPjo6dHlwZSBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBJdGVyYXRvck9wOjp0eXBlIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX3N0ZXBfaW1wbDxmYWxzZT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgU3RhdGVPcAotICAgICAgICAsIHR5cGVuYW1lIEl0ZXJhdG9yT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBQcmVkaWNhdGUKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX2ZvcndhcmRfc3RlcAotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBQcmVkaWNhdGUsU3RhdGUsSXRlcmF0b3IgPjo6dHlwZSBub3RfbGFzdDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJfZm9sZF9pZl9zdGVwX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQobm90X2xhc3QpOjp2YWx1ZQotICAgICAgICA+Ojp0ZW1wbGF0ZSByZXN1bHRfPCBJdGVyYXRvcixTdGF0ZSxGb3J3YXJkT3AsIG1wbDo6bmV4dDxJdGVyYXRvcj4gPiBpbXBsXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgaW1wbF86OnN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgaW1wbF86Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIFByZWRpY2F0ZQotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfYmFja3dhcmRfc3RlcAotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBQcmVkaWNhdGUsU3RhdGUsSXRlcmF0b3IgPjo6dHlwZSBub3RfbGFzdDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJfZm9sZF9pZl9zdGVwX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQobm90X2xhc3QpOjp2YWx1ZQotICAgICAgICA+Ojp0ZW1wbGF0ZSByZXN1bHRfPCBJdGVyYXRvcixTdGF0ZSxCYWNrd2FyZE9wLCBpZGVudGl0eTxJdGVyYXRvcj4gPiBpbXBsXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgaW1wbF86OnN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgaW1wbF86Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZFByZWRpY2F0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgQmFja3dhcmRQcmVkaWNhdGUKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX2ltcGwKLXsKLSBwcml2YXRlOgotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX251bGxfc3RlcDwgSXRlcmF0b3IsU3RhdGUgPiBmb3J3YXJkX3N0ZXAwOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2ZvcndhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMDo6aXRlcmF0b3IsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDA6OnN0YXRlLCBGb3J3YXJkT3AsIEZvcndhcmRQcmVkaWNhdGUgPiBmb3J3YXJkX3N0ZXAxOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2ZvcndhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMTo6aXRlcmF0b3IsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDE6OnN0YXRlLCBGb3J3YXJkT3AsIEZvcndhcmRQcmVkaWNhdGUgPiBmb3J3YXJkX3N0ZXAyOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2ZvcndhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMjo6aXRlcmF0b3IsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDI6OnN0YXRlLCBGb3J3YXJkT3AsIEZvcndhcmRQcmVkaWNhdGUgPiBmb3J3YXJkX3N0ZXAzOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2ZvcndhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMzo6aXRlcmF0b3IsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDM6OnN0YXRlLCBGb3J3YXJkT3AsIEZvcndhcmRQcmVkaWNhdGUgPiBmb3J3YXJkX3N0ZXA0OwotICAgIAotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgdHlwZW5hbWUgZm9yd2FyZF9zdGVwNDo6bm90X2xhc3QKLSAgICAgICAgLCBpdGVyX2ZvbGRfaWZfaW1wbDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgZm9yd2FyZF9zdGVwNDo6aXRlcmF0b3IKLSAgICAgICAgICAgICwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwNDo6c3RhdGUKLSAgICAgICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgICAgICAsIEZvcndhcmRQcmVkaWNhdGUKLSAgICAgICAgICAgICwgQmFja3dhcmRPcAotICAgICAgICAgICAgLCBCYWNrd2FyZFByZWRpY2F0ZQotICAgICAgICAgICAgPgotICAgICAgICAsIGl0ZXJfZm9sZF9pZl9udWxsX3N0ZXA8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGZvcndhcmRfc3RlcDQ6Oml0ZXJhdG9yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDQ6OnN0YXRlCi0gICAgICAgICAgICA+Ci0gICAgICAgID46OnR5cGUgYmFja3dhcmRfc3RlcDQ7Ci0KLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9iYWNrd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAzOjppdGVyYXRvciwgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDQ6OnN0YXRlLCBCYWNrd2FyZE9wLCBCYWNrd2FyZFByZWRpY2F0ZSA+IGJhY2t3YXJkX3N0ZXAzOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2JhY2t3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDI6Oml0ZXJhdG9yLCB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwMzo6c3RhdGUsIEJhY2t3YXJkT3AsIEJhY2t3YXJkUHJlZGljYXRlID4gYmFja3dhcmRfc3RlcDI7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfYmFja3dhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMTo6aXRlcmF0b3IsIHR5cGVuYW1lIGJhY2t3YXJkX3N0ZXAyOjpzdGF0ZSwgQmFja3dhcmRPcCwgQmFja3dhcmRQcmVkaWNhdGUgPiBiYWNrd2FyZF9zdGVwMTsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9iYWNrd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAwOjppdGVyYXRvciwgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDE6OnN0YXRlLCBCYWNrd2FyZE9wLCBCYWNrd2FyZFByZWRpY2F0ZSA+IGJhY2t3YXJkX3N0ZXAwOwotICAgIAotCi0gcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDA6OnN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDQ6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotfX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvaXRlcl9mb2xkX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2l0ZXJfZm9sZF9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2MwOGIzMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvaXRlcl9mb2xkX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTgwICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vaXRlcl9mb2xkX2ltcGwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDwgMCxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHN0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIwIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDwgMSxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMCxpdGVyMCA+Ojp0eXBlIHN0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHN0YXRlMSBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIxIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDwgMixGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMCxpdGVyMCA+Ojp0eXBlIHN0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTEsaXRlcjEgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIAotCi0gICAgdHlwZWRlZiBzdGF0ZTIgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMiBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw8IDMsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTAsaXRlcjAgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUxLGl0ZXIxID46OnR5cGUgc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMixpdGVyMiA+Ojp0eXBlIHN0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHN0YXRlMyBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIzIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDwgNCxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMCxpdGVyMCA+Ojp0eXBlIHN0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTEsaXRlcjEgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUyLGl0ZXIyID46OnR5cGUgc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMyxpdGVyMyA+Ojp0eXBlIHN0YXRlNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHN0YXRlNCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXI0IGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGwKLXsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pbXBsPAotICAgICAgICAgIDQKLSAgICAgICAgLCBGaXJzdAotICAgICAgICAsIExhc3QKLSAgICAgICAgLCBTdGF0ZQotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IGNodW5rXzsKLQotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2ltcGw8Ci0gICAgICAgICAgKCAoTiAtIDQpIDwgMCA/IDAgOiBOIC0gNCApCi0gICAgICAgICwgdHlwZW5hbWUgY2h1bmtfOjppdGVyYXRvcgotICAgICAgICAsIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBjaHVua186OnN0YXRlCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gcmVzXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6c3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw8IC0xLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLSAgICA6IGl0ZXJfZm9sZF9pbXBsPAotICAgICAgICAgIC0xCi0gICAgICAgICwgdHlwZW5hbWUgbXBsOjpuZXh0PEZpcnN0Pjo6dHlwZQotICAgICAgICAsIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxTdGF0ZSxGaXJzdCA+Ojp0eXBlCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDwgLTEsTGFzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIExhc3QgaXRlcmF0b3I7Ci19OwotCi19fX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9sYW1iZGFfbm9fY3Rwcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvbGFtYmRhX25vX2N0cHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NWY1ZjZiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9sYW1iZGFfbm9fY3Rwcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMjkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfbm9fY3Rwcy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgYm9vbCBDMSA9IGZhbHNlLCBib29sIEMyID0gZmFsc2UsIGJvb2wgQzMgPSBmYWxzZSwgYm9vbCBDNCA9IGZhbHNlCi0gICAgLCBib29sIEM1ID0gZmFsc2UKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhX29yCi0gICAgOiB0cnVlXwotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxhbWJkYV9vcjwgZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UgPgotICAgIDogZmFsc2VfCi17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgQXJpdHkgPiBzdHJ1Y3QgbGFtYmRhX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgICAgICB0eXBlZGVmIGlzX3BsYWNlaG9sZGVyPFQ+IGlzX2xlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsYW1iZGFfaW1wbDwgaW50XzwxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMSwgVGFnLCBmYWxzZV8gPiBsMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgICAgICB0eXBlZGVmIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTEpOjp2YWx1ZQotICAgICAgICAgICAgPiBpc19sZTsKLQotICAgICAgICB0eXBlZGVmIGJpbmQxPAotICAgICAgICAgICAgICB0eXBlbmFtZSBGOjpyZWJpbmQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDE6OnR5cGUKLSAgICAgICAgICAgID4gYmluZF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIGlzX2xlCi0gICAgICAgICAgICAsIGlmXzwgUHJvdGVjdCwgbXBsOjpwcm90ZWN0PGJpbmRfPiwgYmluZF8gPgotICAgICAgICAgICAgLCBpZGVudGl0eTxGPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxhbWJkYV9pbXBsPCBpbnRfPDI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcxLCBUYWcsIGZhbHNlXyA+IGwxOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMiwgVGFnLCBmYWxzZV8gPiBsMjsKLSAgICAgICAgCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTEpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUyKTo6dmFsdWUKLSAgICAgICAgICAgID4gaXNfbGU7Ci0KLSAgICAgICAgdHlwZWRlZiBiaW5kMjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgRjo6cmViaW5kCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGwxOjp0eXBlLCB0eXBlbmFtZSBsMjo6dHlwZQotICAgICAgICAgICAgPiBiaW5kXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgaXNfbGUKLSAgICAgICAgICAgICwgaWZfPCBQcm90ZWN0LCBtcGw6OnByb3RlY3Q8YmluZF8+LCBiaW5kXyA+Ci0gICAgICAgICAgICAsIGlkZW50aXR5PEY+Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGVfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHlwZV86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGFtYmRhX2ltcGw8IGludF88Mz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFByb3RlY3QgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzEsIFRhZywgZmFsc2VfID4gbDE7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcyLCBUYWcsIGZhbHNlXyA+IGwyOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMywgVGFnLCBmYWxzZV8gPiBsMzsKLSAgICAgICAgCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwzOjppc19sZSBpc19sZTM7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMSk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTIpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUzKTo6dmFsdWUKLSAgICAgICAgICAgID4gaXNfbGU7Ci0KLSAgICAgICAgdHlwZWRlZiBiaW5kMzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgRjo6cmViaW5kCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGwxOjp0eXBlLCB0eXBlbmFtZSBsMjo6dHlwZSwgdHlwZW5hbWUgbDM6OnR5cGUKLSAgICAgICAgICAgID4gYmluZF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIGlzX2xlCi0gICAgICAgICAgICAsIGlmXzwgUHJvdGVjdCwgbXBsOjpwcm90ZWN0PGJpbmRfPiwgYmluZF8gPgotICAgICAgICAgICAgLCBpZGVudGl0eTxGPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxhbWJkYV9pbXBsPCBpbnRfPDQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcxLCBUYWcsIGZhbHNlXyA+IGwxOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMiwgVGFnLCBmYWxzZV8gPiBsMjsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzMsIFRhZywgZmFsc2VfID4gbDM7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmc0LCBUYWcsIGZhbHNlXyA+IGw0OwotICAgICAgICAKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDM6OmlzX2xlIGlzX2xlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsNDo6aXNfbGUgaXNfbGU0OwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTEpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUyKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMyk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTQpOjp2YWx1ZQotICAgICAgICAgICAgPiBpc19sZTsKLQotICAgICAgICB0eXBlZGVmIGJpbmQ0PAotICAgICAgICAgICAgICB0eXBlbmFtZSBGOjpyZWJpbmQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDE6OnR5cGUsIHR5cGVuYW1lIGwyOjp0eXBlLCB0eXBlbmFtZSBsMzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBsNDo6dHlwZQotICAgICAgICAgICAgPiBiaW5kXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgaXNfbGUKLSAgICAgICAgICAgICwgaWZfPCBQcm90ZWN0LCBtcGw6OnByb3RlY3Q8YmluZF8+LCBiaW5kXyA+Ci0gICAgICAgICAgICAsIGlkZW50aXR5PEY+Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGVfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHlwZV86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGFtYmRhX2ltcGw8IGludF88NT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFByb3RlY3QgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzEsIFRhZywgZmFsc2VfID4gbDE7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcyLCBUYWcsIGZhbHNlXyA+IGwyOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMywgVGFnLCBmYWxzZV8gPiBsMzsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzQsIFRhZywgZmFsc2VfID4gbDQ7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmc1LCBUYWcsIGZhbHNlXyA+IGw1OwotICAgICAgICAKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDM6OmlzX2xlIGlzX2xlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsNDo6aXNfbGUgaXNfbGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGw1Ojppc19sZSBpc19sZTU7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMSk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTIpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUzKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlNCk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTUpOjp2YWx1ZQotICAgICAgICAgICAgPiBpc19sZTsKLQotICAgICAgICB0eXBlZGVmIGJpbmQ1PAotICAgICAgICAgICAgICB0eXBlbmFtZSBGOjpyZWJpbmQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDE6OnR5cGUsIHR5cGVuYW1lIGwyOjp0eXBlLCB0eXBlbmFtZSBsMzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBsNDo6dHlwZSwgdHlwZW5hbWUgbDU6OnR5cGUKLSAgICAgICAgICAgID4gYmluZF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIGlzX2xlCi0gICAgICAgICAgICAsIGlmXzwgUHJvdGVjdCwgbXBsOjpwcm90ZWN0PGJpbmRfPiwgYmluZF8gPgotICAgICAgICAgICAgLCBpZGVudGl0eTxGPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgICwgdHlwZW5hbWUgUHJvdGVjdAotICAgID4KLXN0cnVjdCBsYW1iZGEKLXsKLSAgICAvLy8gTWV0YWZ1bmN0aW9uIGZvcndhcmRpbmcgY29uZnVzZXMgTVNWQyA2LngKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dGVtcGxhdGVfYXJpdHk8VD46OnR5cGUgYXJpdHlfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsYW1iZGFfaW1wbDxhcml0eV8+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgVCxUYWcsUHJvdGVjdCA+IGxfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsXzo6dHlwZSB0eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbF86OmlzX2xlIGlzX2xlOwotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMywgbGFtYmRhLCAoVCwgVGFnLCBQcm90ZWN0KSkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMSwgMywgbGFtYmRhKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICA+Ci1zdHJ1Y3QgaXNfbGFtYmRhX2V4cHJlc3Npb24KLSAgICA6IGxhbWJkYTxUPjo6aXNfbGUKLXsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9sZXNzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9sZXNzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTRiOGVlYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvbGVzcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9sZXNzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgbGVzc19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgbGVzc19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgbGVzc19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGxlc3NfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgbGVzc19pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgbGVzc19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGxlc3NfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGxlc3MKLQotICAgIDogbGVzc19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGxlc3NfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGxlc3NfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgbGVzcywgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgbGVzcykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsZXNzX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBib29sXzwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSA+IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlICkgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9sZXNzX2VxdWFsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9sZXNzX2VxdWFsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWNkMTQxYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvbGVzc19lcXVhbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9sZXNzX2VxdWFsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgbGVzc19lcXVhbF9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgbGVzc19lcXVhbF9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgbGVzc19lcXVhbF9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGxlc3NfZXF1YWxfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgbGVzc19lcXVhbF9pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgbGVzc19lcXVhbF9pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGxlc3NfZXF1YWxfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGxlc3NfZXF1YWwKLQotICAgIDogbGVzc19lcXVhbF9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGxlc3NfZXF1YWxfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGxlc3NfZXF1YWxfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgbGVzc19lcXVhbCwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgbGVzc19lcXVhbCkKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsZXNzX2VxdWFsX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBib29sXzwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSA8PSBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSApID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvbGlzdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvbGlzdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhjYzhjNDYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2xpc3QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzIzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2xpc3QuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAgPSBuYSwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYSwgdHlwZW5hbWUgVDYgPSBuYSwgdHlwZW5hbWUgVDcgPSBuYQotICAgICwgdHlwZW5hbWUgVDggPSBuYSwgdHlwZW5hbWUgVDkgPSBuYSwgdHlwZW5hbWUgVDEwID0gbmEsIHR5cGVuYW1lIFQxMSA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTIgPSBuYSwgdHlwZW5hbWUgVDEzID0gbmEsIHR5cGVuYW1lIFQxNCA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTUgPSBuYSwgdHlwZW5hbWUgVDE2ID0gbmEsIHR5cGVuYW1lIFQxNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTggPSBuYSwgdHlwZW5hbWUgVDE5ID0gbmEKLSAgICA+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+Ci1zdHJ1Y3QgbGlzdAotICAgIDogbGlzdDIwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QyMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9saXN0X2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2xpc3RfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU0M2YzOGYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL2xpc3RfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjggKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbGlzdF9jLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAgPSBMT05HX01BWCwgbG9uZyBDMSA9IExPTkdfTUFYLCBsb25nIEMyID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzMgPSBMT05HX01BWCwgbG9uZyBDNCA9IExPTkdfTUFYLCBsb25nIEM1ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzYgPSBMT05HX01BWCwgbG9uZyBDNyA9IExPTkdfTUFYLCBsb25nIEM4ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzkgPSBMT05HX01BWCwgbG9uZyBDMTAgPSBMT05HX01BWCwgbG9uZyBDMTEgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTIgPSBMT05HX01BWCwgbG9uZyBDMTMgPSBMT05HX01BWCwgbG9uZyBDMTQgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTUgPSBMT05HX01BWCwgbG9uZyBDMTYgPSBMT05HX01BWCwgbG9uZyBDMTcgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTggPSBMT05HX01BWCwgbG9uZyBDMTkgPSBMT05HX01BWAotICAgID4KLXN0cnVjdCBsaXN0X2M7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDBfYzxUPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDBfYzxUPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MV9jPCBULEMwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxX2M8IFQsQzAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0Ml9jPCBULEMwLEMxID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QyX2M8IFQsQzAsQzEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0M19jPCBULEMwLEMxLEMyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QzX2M8IFQsQzAsQzEsQzIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0NF9jPCBULEMwLEMxLEMyLEMzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q0X2M8IFQsQzAsQzEsQzIsQzMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0NV9jPCBULEMwLEMxLEMyLEMzLEM0ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q1X2M8IFQsQzAsQzEsQzIsQzMsQzQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0Nl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q2X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0N19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q3X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0OF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q4X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0OV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q5X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzggPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTBfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTBfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTFfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDExX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDEyX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTJfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTNfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTNfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNAotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxNV9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTVfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNQotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTZfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE2X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNgotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDE3X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE3X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDE4X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MThfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOAotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgQzE4LCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTlfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBDMTgKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE5X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTggPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgID4KLXN0cnVjdCBsaXN0X2MKLSAgICA6IGxpc3QyMF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIEMxOCwgQzE5Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QyMF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvbWFwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9tYXAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OTc0ZjI4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9tYXAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzIzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL21hcC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCA9IG5hLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hLCB0eXBlbmFtZSBUNiA9IG5hLCB0eXBlbmFtZSBUNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUOCA9IG5hLCB0eXBlbmFtZSBUOSA9IG5hLCB0eXBlbmFtZSBUMTAgPSBuYSwgdHlwZW5hbWUgVDExID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxMiA9IG5hLCB0eXBlbmFtZSBUMTMgPSBuYSwgdHlwZW5hbWUgVDE0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxNSA9IG5hLCB0eXBlbmFtZSBUMTYgPSBuYSwgdHlwZW5hbWUgVDE3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxOCA9IG5hLCB0eXBlbmFtZSBUMTkgPSBuYQotICAgID4KLXN0cnVjdCBtYXA7Ci0KLXRlbXBsYXRlPAotICAgICAKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMDwgID4KLXsKLSAgICB0eXBlZGVmIG1hcDA8ICA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwCi0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDE8VDA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxPFQwPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMjwgVDAsVDEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMjwgVDAsVDEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDM8IFQwLFQxLFQyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDM8IFQwLFQxLFQyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwNDwgVDAsVDEsVDIsVDMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwNDwgVDAsVDEsVDIsVDMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwNTwgVDAsVDEsVDIsVDMsVDQgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwNTwgVDAsVDEsVDIsVDMsVDQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMQotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDE1PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxNTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDE2PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxNjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxNzwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTg8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDE5PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTggPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgPgotc3RydWN0IG1hcAotICAgIDogbWFwMjA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMjA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvbWludXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL21pbnVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDU0ZmRhOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvbWludXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL21pbnVzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgbWludXNfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IG1pbnVzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBtaW51c19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IG1pbnVzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IG1pbnVzX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBtaW51c19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IG1pbnVzX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBtaW51cwotICAgIDogbWludXM8IG1pbnVzPCBtaW51czwgbWludXM8IE4xLE4yID4sIE4zPiwgTjQ+LCBONT4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBtaW51cwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zLCB0eXBlbmFtZSBONAotICAgID4KLXN0cnVjdCBtaW51czwgTjEsTjIsTjMsTjQsbmEgPgotCi0gICAgOiBtaW51czwgbWludXM8IG1pbnVzPCBOMSxOMiA+LCBOMz4sIE40PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgbWludXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMwotICAgID4KLXN0cnVjdCBtaW51czwgTjEsTjIsTjMsbmEsbmEgPgotCi0gICAgOiBtaW51czwgbWludXM8IE4xLE4yID4sIE4zPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgbWludXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIG5hLCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IG1pbnVzPCBOMSxOMixuYSxuYSxuYSA+Ci0gICAgOiBtaW51c19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIG1pbnVzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBtaW51c190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBtaW51cwotICAgICAgICAsICggTjEsIE4yLCBuYSwgbmEsIG5hICkKLSAgICAgICAgKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIG1pbnVzKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBtaW51c19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgLSBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvbW9kdWx1cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvbW9kdWx1cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNlODk2OTEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL21vZHVsdXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTAxICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL21vZHVsdXMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBtb2R1bHVzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBtb2R1bHVzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBtb2R1bHVzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgbW9kdWx1c19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBtb2R1bHVzX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBtb2R1bHVzX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgbW9kdWx1c190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgbW9kdWx1cwotCi0gICAgOiBtb2R1bHVzX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgbW9kdWx1c190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgbW9kdWx1c190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBtb2R1bHVzLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBtb2R1bHVzKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBtb2R1bHVzX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlCi0gICAgICAgICAgICAgICAgICAlIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9ub3RfZXF1YWxfdG8uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL25vdF9lcXVhbF90by5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkZTFlMTYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL25vdF9lcXVhbF90by5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9ub3RfZXF1YWxfdG8uaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBub3RfZXF1YWxfdG9faW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IG5vdF9lcXVhbF90b19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgbm90X2VxdWFsX3RvX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3Qgbm90X2VxdWFsX3RvX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IG5vdF9lcXVhbF90b19pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3Qgbm90X2VxdWFsX3RvX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3Qgbm90X2VxdWFsX3RvX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBub3RfZXF1YWxfdG8KLQotICAgIDogbm90X2VxdWFsX3RvX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgbm90X2VxdWFsX3RvX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBub3RfZXF1YWxfdG9fdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgbm90X2VxdWFsX3RvLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBub3RfZXF1YWxfdG8pCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgbm90X2VxdWFsX3RvX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBib29sXzwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSAhPSBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSApID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvb3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL29yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2FlOGVkZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvb3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvb3IuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgYm9vbCBDXywgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQgPgotc3RydWN0IG9yX2ltcGwKLSAgICA6IHRydWVfCi17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQgPgotc3RydWN0IG9yX2ltcGw8IGZhbHNlLFQxLFQyLFQzLFQ0ID4KLSAgICA6IG9yX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVFlQRV9XS05EKFQxKTo6dmFsdWUKLSAgICAgICAgLCBUMiwgVDMsIFQ0Ci0gICAgICAgICwgZmFsc2VfCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBvcl9pbXBsPAotICAgICAgICAgIGZhbHNlCi0gICAgICAgICwgZmFsc2VfLCBmYWxzZV8sIGZhbHNlXywgZmFsc2VfCi0gICAgICAgID4KLSAgICA6IGZhbHNlXwotewotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDIpCi0gICAgLCB0eXBlbmFtZSBUMyA9IGZhbHNlXywgdHlwZW5hbWUgVDQgPSBmYWxzZV8sIHR5cGVuYW1lIFQ1ID0gZmFsc2VfCi0gICAgPgotc3RydWN0IG9yXwotCi0gICAgOiBhdXg6Om9yX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVFlQRV9XS05EKFQxKTo6dmFsdWUKLSAgICAgICAgLCBUMiwgVDMsIFQ0LCBUNQotICAgICAgICA+Ci0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBvcl8KLSAgICAgICAgLCAoIFQxLCBUMiwgVDMsIFQ0LCBUNSkKLSAgICAgICAgKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigKLSAgICAgIDIKLSAgICAsIDUKLSAgICAsIG9yXwotICAgICkKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9wbGFjZWhvbGRlcnMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL3BsYWNlaG9sZGVycy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNhMjhjMDkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL3BsYWNlaG9sZGVycy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDUgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vIENvcHlyaWdodCBQZXRlciBEaW1vdiAyMDAxLTIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvcGxhY2Vob2xkZXJzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPCAtMSA+IF87Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXykKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzsKLX0KLQotfX0KLQotLy8vIGFndXJ0LCAxNy9tYXIvMDI6IG9uZSBtb3JlIHBsYWNlaG9sZGVyIGZvciB0aGUgbGFzdCAnYXBwbHkjJyAKLS8vLyBzcGVjaWFsaXphdGlvbgotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8MT4gXzE7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfMSkKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzE7Ci19Ci0KLX19Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzwyPiBfMjsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF8yKQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfMjsKLX0KLQotfX0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDM+IF8zOwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzMpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol8zOwotfQotCi19fQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8ND4gXzQ7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfNCkKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzQ7Ci19Ci0KLX19Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzw1PiBfNTsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF81KQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfNTsKLX0KLQotfX0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDY+IF82OwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzYpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol82OwotfQotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL3BsdXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL3BsdXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZDhiMmNkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9wbHVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9wbHVzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgcGx1c19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgcGx1c19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgcGx1c19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IHBsdXNfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgcGx1c19pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgcGx1c19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHBsdXNfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IHBsdXMKLSAgICA6IHBsdXM8IHBsdXM8IHBsdXM8IHBsdXM8IE4xLE4yID4sIE4zPiwgTjQ+LCBONT4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBwbHVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMsIHR5cGVuYW1lIE40Ci0gICAgPgotc3RydWN0IHBsdXM8IE4xLE4yLE4zLE40LG5hID4KLQotICAgIDogcGx1czwgcGx1czwgcGx1czwgTjEsTjIgPiwgTjM+LCBOND4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIHBsdXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMwotICAgID4KLXN0cnVjdCBwbHVzPCBOMSxOMixOMyxuYSxuYSA+Ci0KLSAgICA6IHBsdXM8IHBsdXM8IE4xLE4yID4sIE4zPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgcGx1cwotICAgICAgICAsICggTjEsIE4yLCBOMywgbmEsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgcGx1czwgTjEsTjIsbmEsbmEsbmEgPgotICAgIDogcGx1c19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIHBsdXNfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIHBsdXNfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgcGx1cwotICAgICAgICAsICggTjEsIE4yLCBuYSwgbmEsIG5hICkKLSAgICAgICAgKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIHBsdXMpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IHBsdXNfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgICsgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL3F1b3RlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9xdW90ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhjZTc5ZWQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL3F1b3RlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9xdW90ZS5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIGJvb2wgaGFzX3R5cGVfID4KLXN0cnVjdCBxdW90ZV9pbXBsCi0gICAgOiBUCi17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci1zdHJ1Y3QgcXVvdGVfaW1wbDwgVCxmYWxzZSA+Ci17Ci0gICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFRhZyA9IHZvaWRfCi0gICAgPgotc3RydWN0IHF1b3RlMQotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogcXVvdGVfaW1wbDwKLSAgICAgICAgICAgICAgRjxVMT4KLSAgICAgICAgICAgICwgYXV4OjpoYXNfdHlwZTwgRjxVMT4gPjo6dmFsdWUKLSAgICAgICAgICAgID4KLQotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVGFnID0gdm9pZF8KLSAgICA+Ci1zdHJ1Y3QgcXVvdGUyCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogcXVvdGVfaW1wbDwKLSAgICAgICAgICAgICAgRjwgVTEsVTIgPgotICAgICAgICAgICAgLCBhdXg6Omhhc190eXBlPCBGPCBVMSxVMiA+ID46OnZhbHVlCi0gICAgICAgICAgICA+Ci0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUYWcgPSB2b2lkXwotICAgID4KLXN0cnVjdCBxdW90ZTMKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMyA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogcXVvdGVfaW1wbDwKLSAgICAgICAgICAgICAgRjwgVTEsVTIsVTMgPgotICAgICAgICAgICAgLCBhdXg6Omhhc190eXBlPCBGPCBVMSxVMixVMyA+ID46OnZhbHVlCi0gICAgICAgICAgICA+Ci0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0ID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVGFnID0gdm9pZF8KLSAgICA+Ci1zdHJ1Y3QgcXVvdGU0Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogcXVvdGVfaW1wbDwKLSAgICAgICAgICAgICAgRjwgVTEsVTIsVTMsVTQgPgotICAgICAgICAgICAgLCBhdXg6Omhhc190eXBlPCBGPCBVMSxVMixVMyxVNCA+ID46OnZhbHVlCi0gICAgICAgICAgICA+Ci0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQKLSAgICAgICAgLCB0eXBlbmFtZSBQNQotICAgICAgICA+Ci0gICAgICBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUYWcgPSB2b2lkXwotICAgID4KLXN0cnVjdCBxdW90ZTUKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICAgICAsIHR5cGVuYW1lIFU1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IHF1b3RlX2ltcGw8Ci0gICAgICAgICAgICAgIEY8IFUxLFUyLFUzLFU0LFU1ID4KLSAgICAgICAgICAgICwgYXV4OjpoYXNfdHlwZTwgRjwgVTEsVTIsVTMsVTQsVTUgPiA+Ojp2YWx1ZQotICAgICAgICAgICAgPgotCi0gICAgewotICAgIH07Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvcmV2ZXJzZV9mb2xkX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL3JldmVyc2VfZm9sZF9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2QzYWQ3NS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvcmV2ZXJzZV9mb2xkX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjMxICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vcmV2ZXJzZV9mb2xkX2ltcGwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIGxvbmcgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+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+Ojp0eXBlPjo6dHlwZQotICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiBuZXN0ZWRfc3RlcDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPAotICAgICAgICAgIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBuZXN0ZWRfc3RlcDo6c3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBkZXJlZjxGaXJzdD46OnR5cGUKLSAgICAgICAgPjo6dHlwZSBzdGF0ZTsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX3N0ZXA6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9pbXBsPCAtMSxMYXN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiBMYXN0IGl0ZXJhdG9yOwotfTsKLQotfX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMzYmY1MDguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL3JldmVyc2VfaXRlcl9mb2xkX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjMxICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgbG9uZyBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2ltcGw8IDAsRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiBmd2Rfc3RhdGUwIGJrd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMCBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbDwgMSxGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTAsaXRlcjAgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAKLQotICAgIHR5cGVkZWYgZndkX3N0YXRlMSBia3dkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMSxpdGVyMCA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMSBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbDwgMixGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTAsaXRlcjAgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTEsaXRlcjEgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAKLQotICAgIHR5cGVkZWYgZndkX3N0YXRlMiBia3dkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMixpdGVyMSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUxLGl0ZXIwID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjIgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2ltcGw8IDMsRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUwLGl0ZXIwID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUxLGl0ZXIxID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUyLGl0ZXIyID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTMgYmt3ZF9zdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTMsaXRlcjIgPjo6dHlwZSBia3dkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMixpdGVyMSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUxLGl0ZXIwID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjMgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2ltcGw8IDQsRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUwLGl0ZXIwID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUxLGl0ZXIxID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUyLGl0ZXIyID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUzLGl0ZXIzID46OnR5cGUgZndkX3N0YXRlNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTQgYmt3ZF9zdGF0ZTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTQsaXRlcjMgPjo6dHlwZSBia3dkX3N0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMyxpdGVyMiA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUyLGl0ZXIxID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTEsaXRlcjAgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAKLQotICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyNCBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgbG9uZyBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsCi17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUwLGl0ZXIwID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUxLGl0ZXIxID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUyLGl0ZXIyID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUzLGl0ZXIzID46OnR5cGUgZndkX3N0YXRlNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHJldmVyc2VfaXRlcl9mb2xkX2ltcGw8Ci0gICAgICAgICAgKCAoTiAtIDQpIDwgMCA/IDAgOiBOIC0gNCApCi0gICAgICAgICwgaXRlcjQKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgZndkX3N0YXRlNAotICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiBuZXN0ZWRfY2h1bms7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9jaHVuazo6c3RhdGUgYmt3ZF9zdGF0ZTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTQsaXRlcjMgPjo6dHlwZSBia3dkX3N0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMyxpdGVyMiA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUyLGl0ZXIxID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTEsaXRlcjAgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAKLQotICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfY2h1bms6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsPCAtMSxGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIHJldmVyc2VfaXRlcl9mb2xkX2ltcGw8Ci0gICAgICAgICAgLTEKLSAgICAgICAgLCB0eXBlbmFtZSBtcGw6Om5leHQ8Rmlyc3Q+Ojp0eXBlCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLFN0YXRlLEZpcnN0ID46OnR5cGUKLSAgICAgICAgLCBCYWNrd2FyZE9wCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gbmVzdGVkX3N0ZXA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwKLSAgICAgICAgICBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgbmVzdGVkX3N0ZXA6OnN0YXRlCi0gICAgICAgICwgRmlyc3QKLSAgICAgICAgPjo6dHlwZSBzdGF0ZTsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX3N0ZXA6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2ltcGw8IC0xLExhc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIExhc3QgaXRlcmF0b3I7Ci19OwotCi19fX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9zZXQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL3NldC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRjNGNhMTEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL3NldC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvc2V0LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwID0gbmEsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEsIHR5cGVuYW1lIFQ2ID0gbmEsIHR5cGVuYW1lIFQ3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ4ID0gbmEsIHR5cGVuYW1lIFQ5ID0gbmEsIHR5cGVuYW1lIFQxMCA9IG5hLCB0eXBlbmFtZSBUMTEgPSBuYQotICAgICwgdHlwZW5hbWUgVDEyID0gbmEsIHR5cGVuYW1lIFQxMyA9IG5hLCB0eXBlbmFtZSBUMTQgPSBuYQotICAgICwgdHlwZW5hbWUgVDE1ID0gbmEsIHR5cGVuYW1lIFQxNiA9IG5hLCB0eXBlbmFtZSBUMTcgPSBuYQotICAgICwgdHlwZW5hbWUgVDE4ID0gbmEsIHR5cGVuYW1lIFQxOSA9IG5hCi0gICAgPgotc3RydWN0IHNldDsKLQotdGVtcGxhdGU8Ci0gICAgIAotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+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+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQyMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9zZXRfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvc2V0X2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZWYyZmRlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9zZXRfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjggKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvc2V0X2MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCA9IExPTkdfTUFYLCBsb25nIEMxID0gTE9OR19NQVgsIGxvbmcgQzIgPSBMT05HX01BWAotICAgICwgbG9uZyBDMyA9IExPTkdfTUFYLCBsb25nIEM0ID0gTE9OR19NQVgsIGxvbmcgQzUgPSBMT05HX01BWAotICAgICwgbG9uZyBDNiA9IExPTkdfTUFYLCBsb25nIEM3ID0gTE9OR19NQVgsIGxvbmcgQzggPSBMT05HX01BWAotICAgICwgbG9uZyBDOSA9IExPTkdfTUFYLCBsb25nIEMxMCA9IExPTkdfTUFYLCBsb25nIEMxMSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxMiA9IExPTkdfTUFYLCBsb25nIEMxMyA9IExPTkdfTUFYLCBsb25nIEMxNCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxNSA9IExPTkdfTUFYLCBsb25nIEMxNiA9IExPTkdfTUFYLCBsb25nIEMxNyA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxOCA9IExPTkdfTUFYLCBsb25nIEMxOSA9IExPTkdfTUFYCi0gICAgPgotc3RydWN0IHNldF9jOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICA+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+Ci1zdHJ1Y3Qgc2V0X2MKLSAgICA6IHNldDIwX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgQzE4LCBDMTkKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MjBfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL3NoaWZ0X2xlZnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL3NoaWZ0X2xlZnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOTY0ZmI4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9zaGlmdF9sZWZ0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLyBDb3B5cmlnaHQgSmFhcCBTdXRlciAyMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3NoaWZ0X2xlZnQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBzaGlmdF9sZWZ0X2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBzaGlmdF9sZWZ0X2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBzaGlmdF9sZWZ0X2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3Qgc2hpZnRfbGVmdF9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBzaGlmdF9sZWZ0X2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBzaGlmdF9sZWZ0X2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3Qgc2hpZnRfbGVmdF90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3Qgc2hpZnRfbGVmdAotCi0gICAgOiBzaGlmdF9sZWZ0X2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgc2hpZnRfbGVmdF90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgc2hpZnRfbGVmdF90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBzaGlmdF9sZWZ0LCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBzaGlmdF9sZWZ0KQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBzaGlmdF9sZWZ0X2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTiwgdHlwZW5hbWUgUyA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgTjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgIDw8IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChTKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL3NoaWZ0X3JpZ2h0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy9zaGlmdF9yaWdodC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU3YTVmZTAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL3NoaWZ0X3JpZ2h0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLyBDb3B5cmlnaHQgSmFhcCBTdXRlciAyMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3NoaWZ0X3JpZ2h0LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3Qgc2hpZnRfcmlnaHRfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IHNoaWZ0X3JpZ2h0X2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBzaGlmdF9yaWdodF9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IHNoaWZ0X3JpZ2h0X2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IHNoaWZ0X3JpZ2h0X2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBzaGlmdF9yaWdodF9pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHNoaWZ0X3JpZ2h0X3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBzaGlmdF9yaWdodAotCi0gICAgOiBzaGlmdF9yaWdodF9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIHNoaWZ0X3JpZ2h0X3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBzaGlmdF9yaWdodF90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBzaGlmdF9yaWdodCwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgc2hpZnRfcmlnaHQpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IHNoaWZ0X3JpZ2h0X2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTiwgdHlwZW5hbWUgUyA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgTjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgID4+IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChTKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL3RlbXBsYXRlX2FyaXR5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy90ZW1wbGF0ZV9hcml0eS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZjYjQyYWUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL3RlbXBsYXRlX2FyaXR5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vdGVtcGxhdGVfYXJpdHkuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL3RpbWVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy90aW1lcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlhNTVmZWQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL3RpbWVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC90aW1lcy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IHRpbWVzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCB0aW1lc19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgdGltZXNfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCB0aW1lc19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCB0aW1lc19pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgdGltZXNfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCB0aW1lc190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgdGltZXMKLSAgICA6IHRpbWVzPCB0aW1lczwgdGltZXM8IHRpbWVzPCBOMSxOMiA+LCBOMz4sIE40PiwgTjU+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgdGltZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMywgdHlwZW5hbWUgTjQKLSAgICA+Ci1zdHJ1Y3QgdGltZXM8IE4xLE4yLE4zLE40LG5hID4KLQotICAgIDogdGltZXM8IHRpbWVzPCB0aW1lczwgTjEsTjIgPiwgTjM+LCBOND4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIHRpbWVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMKLSAgICA+Ci1zdHJ1Y3QgdGltZXM8IE4xLE4yLE4zLG5hLG5hID4KLQotICAgIDogdGltZXM8IHRpbWVzPCBOMSxOMiA+LCBOMz4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIHRpbWVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBuYSwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCB0aW1lczwgTjEsTjIsbmEsbmEsbmEgPgotICAgIDogdGltZXNfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSB0aW1lc190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgdGltZXNfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgdGltZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgbmEsIG5hLCBuYSApCi0gICAgICAgICkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCB0aW1lcykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdGltZXNfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgICogTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL3VucGFja19hcmdzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy91bnBhY2tfYXJncy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFlYzMxYWYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL3VucGFja19hcmdzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMi0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3VucGFja19hcmdzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGludCBzaXplLCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4KLXN0cnVjdCB1bnBhY2tfYXJnc19pbXBsOwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDwgMCxGLEFyZ3MgPgotICAgIDogYXBwbHkwPAotICAgICAgICAgIEYKLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPgotc3RydWN0IHVucGFja19hcmdzX2ltcGw8IDEsRixBcmdzID4KLSAgICA6IGFwcGx5MTwKLSAgICAgICAgICBGCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywwID46OnR5cGUKLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPgotc3RydWN0IHVucGFja19hcmdzX2ltcGw8IDIsRixBcmdzID4KLSAgICA6IGFwcGx5MjwKLSAgICAgICAgICBGCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywwID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMSA+Ojp0eXBlCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4KLXN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPCAzLEYsQXJncyA+Ci0gICAgOiBhcHBseTM8Ci0gICAgICAgICAgRgotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMCA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDEgPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMiA+Ojp0eXBlCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4KLXN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPCA0LEYsQXJncyA+Ci0gICAgOiBhcHBseTQ8Ci0gICAgICAgICAgRgotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMCA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDEgPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMiA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDMgPjo6dHlwZQotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDwgNSxGLEFyZ3MgPgotICAgIDogYXBwbHk1PAotICAgICAgICAgIEYKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDAgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywxID46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDIgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywzID46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDQgPjo6dHlwZQotICAgICAgICA+Ci17Ci19OwotCi19Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCB1bnBhY2tfYXJncwotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBBcmdzID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBhdXg6OnVucGFja19hcmdzX2ltcGw8IHNpemU8QXJncz46OnZhbHVlLEYsIEFyZ3MgPgotCi0gICAgewotICAgIH07Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX1BBU1NfVEhST1VHSF9MQU1CREFfU1BFQygxLCB1bnBhY2tfYXJncykKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL3ZlY3Rvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvdmVjdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGY2NzU4OS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9kbWMvdmVjdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC92ZWN0b3IuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAgPSBuYSwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYSwgdHlwZW5hbWUgVDYgPSBuYSwgdHlwZW5hbWUgVDcgPSBuYQotICAgICwgdHlwZW5hbWUgVDggPSBuYSwgdHlwZW5hbWUgVDkgPSBuYSwgdHlwZW5hbWUgVDEwID0gbmEsIHR5cGVuYW1lIFQxMSA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTIgPSBuYSwgdHlwZW5hbWUgVDEzID0gbmEsIHR5cGVuYW1lIFQxNCA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTUgPSBuYSwgdHlwZW5hbWUgVDE2ID0gbmEsIHR5cGVuYW1lIFQxNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTggPSBuYSwgdHlwZW5hbWUgVDE5ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yOwotCi10ZW1wbGF0ZTwKLSAgICAgCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjA8ICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IwPCAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMAotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxPFQwPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTxUMD46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjI8IFQwLFQxID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjI8IFQwLFQxID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IzPCBUMCxUMSxUMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IzPCBUMCxUMSxUMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjQ8IFQwLFQxLFQyLFQzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjQ8IFQwLFQxLFQyLFQzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjU8IFQwLFQxLFQyLFQzLFQ0ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjU8IFQwLFQxLFQyLFQzLFQ0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3Rvcjc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcjc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3Rvcjg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcjg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOAotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTU8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNQotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTY8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNgotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTc8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNwotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE4PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOAotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxOTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4ID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgID4KLXN0cnVjdCB2ZWN0b3IKLSAgICA6IHZlY3RvcjIwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjIwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL3ZlY3Rvcl9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2RtYy92ZWN0b3JfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUyZmJkYjQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZG1jL3ZlY3Rvcl9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMwOSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC92ZWN0b3JfYy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwID0gTE9OR19NQVgsIGxvbmcgQzEgPSBMT05HX01BWCwgbG9uZyBDMiA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMzID0gTE9OR19NQVgsIGxvbmcgQzQgPSBMT05HX01BWCwgbG9uZyBDNSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM2ID0gTE9OR19NQVgsIGxvbmcgQzcgPSBMT05HX01BWCwgbG9uZyBDOCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM5ID0gTE9OR19NQVgsIGxvbmcgQzEwID0gTE9OR19NQVgsIGxvbmcgQzExID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzEyID0gTE9OR19NQVgsIGxvbmcgQzEzID0gTE9OR19NQVgsIGxvbmcgQzE0ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE1ID0gTE9OR19NQVgsIGxvbmcgQzE2ID0gTE9OR19NQVgsIGxvbmcgQzE3ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE4ID0gTE9OR19NQVgsIGxvbmcgQzE5ID0gTE9OR19NQVgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IwX2M8VD4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjBfYzxUPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjFfYzwgVCwgVChDMCkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMV9jPCBULCBUKEMwKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMl9jPCBULCBUKEMwKSwgVChDMSkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMl9jPCBULCBUKEMwKSwgVChDMSkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjNfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IzX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMikgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjRfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMykgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yNV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjZfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I2X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjdfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNikgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yN19jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yOF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNykgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yOF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNykgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjlfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I5X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEwX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEwX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTFfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMl9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTJfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEzX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEzX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMwotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTRfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTVfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNQotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE2X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE2X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTdfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxN19jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxOF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpLCBUKEMxNykgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMThfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSwgVChDMTcpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBDMTgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE5X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNiksIFQoQzE3KSwgVChDMTgpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE5X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNiksIFQoQzE3KSwgVChDMTgpID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2MKLSAgICA6IHZlY3RvcjIwX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNiksIFQoQzE3KSwgVChDMTgpLCBUKEMxOSkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMjBfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSwgVChDMTcpLCBUKEMxOCksIFQoQzE5KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvYWR2YW5jZV9iYWNrd2FyZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvYWR2YW5jZV9iYWNrd2FyZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBlMGM4MjguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2FkdmFuY2VfYmFja3dhcmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9hZHZhbmNlX2JhY2t3YXJkLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGxvbmcgTiA+IHN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkOwotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ8MD4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ8MT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIGl0ZXIxIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkPDI+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjIgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjMgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ8ND4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgICAgICB0eXBlZGVmIGl0ZXI0IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCBsb25nIE4gPgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGFkdmFuY2VfYmFja3dhcmQ8ND4KLSAgICAgICAgICAgICwgSXRlcmF0b3IKLSAgICAgICAgICAgID46OnR5cGUgY2h1bmtfcmVzdWx0XzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBhZHZhbmNlX2JhY2t3YXJkPCgKLSAgICAgICAgICAgICAgICAoTiAtIDQpIDwgMAotICAgICAgICAgICAgICAgICAgICA/IDAKLSAgICAgICAgICAgICAgICAgICAgOiBOIC0gNAotICAgICAgICAgICAgICAgICAgICApPgotICAgICAgICAgICAgLCBjaHVua19yZXN1bHRfCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvYWR2YW5jZV9mb3J3YXJkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9hZHZhbmNlX2ZvcndhcmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiM2E1YWZkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9hZHZhbmNlX2ZvcndhcmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9hZHZhbmNlX2ZvcndhcmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgbG9uZyBOID4gc3RydWN0IGFkdmFuY2VfZm9yd2FyZDsKLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ8MD4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZDwxPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkPDI+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIGl0ZXIyIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjMgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZDw0PgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAgICAgdHlwZWRlZiBpdGVyNCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgbG9uZyBOID4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGFkdmFuY2VfZm9yd2FyZDw0PgotICAgICAgICAgICAgLCBJdGVyYXRvcgotICAgICAgICAgICAgPjo6dHlwZSBjaHVua19yZXN1bHRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGFkdmFuY2VfZm9yd2FyZDwoCi0gICAgICAgICAgICAgICAgKE4gLSA0KSA8IDAKLSAgICAgICAgICAgICAgICAgICAgPyAwCi0gICAgICAgICAgICAgICAgICAgIDogTiAtIDQKLSAgICAgICAgICAgICAgICAgICAgKT4KLSAgICAgICAgICAgICwgY2h1bmtfcmVzdWx0XwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi19fX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2FuZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvYW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWMxYjk1YS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvYW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2FuZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBib29sIENfLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCA+Ci1zdHJ1Y3QgYW5kX2ltcGwKLSAgICA6IGZhbHNlXwotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0ID4KLXN0cnVjdCBhbmRfaW1wbDwgdHJ1ZSxUMSxUMixUMyxUNCA+Ci0gICAgOiBhbmRfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX05FU1RFRF9UWVBFX1dLTkQoVDEpOjp2YWx1ZQotICAgICAgICAsIFQyLCBUMywgVDQKLSAgICAgICAgLCB0cnVlXwotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYW5kX2ltcGw8Ci0gICAgICAgICAgdHJ1ZQotICAgICAgICAsIHRydWVfLCB0cnVlXywgdHJ1ZV8sIHRydWVfCi0gICAgICAgID4KLSAgICA6IHRydWVfCi17Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQxKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMikKLSAgICAsIHR5cGVuYW1lIFQzID0gdHJ1ZV8sIHR5cGVuYW1lIFQ0ID0gdHJ1ZV8sIHR5cGVuYW1lIFQ1ID0gdHJ1ZV8KLSAgICA+Ci1zdHJ1Y3QgYW5kXwotCi0gICAgOiBhdXg6OmFuZF9pbXBsPAotICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1RZUEVfV0tORChUMSk6OnZhbHVlCi0gICAgICAgICwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgPgotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgYW5kXwotICAgICAgICAsICggVDEsIFQyLCBUMywgVDQsIFQ1KQotICAgICAgICApCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKAotICAgICAgMgotICAgICwgNQotICAgICwgYW5kXwotICAgICkKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9hcHBseS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvYXBwbHkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MGY3MmIwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9hcHBseS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNjkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXBwbHkuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseTAKLQotICAgIDogYXBwbHlfd3JhcDA8Ci0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDEKLSAgICAgICAgLCBhcHBseTAKLSAgICAgICAgLCAoRiApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseTwgRixuYSxuYSxuYSxuYSxuYSA+Ci0gICAgOiBhcHBseTA8Rj4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkxCi0KLSAgICA6IGFwcGx5X3dyYXAxPAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgICAsIFQxCi0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDIKLSAgICAgICAgLCBhcHBseTEKLSAgICAgICAgLCAoRiwgVDEpCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk8IEYsVDEsbmEsbmEsbmEsbmEgPgotICAgIDogYXBwbHkxPCBGLFQxID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGFwcGx5MgotCi0gICAgOiBhcHBseV93cmFwMjwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAgLCBUMSwgVDIKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgMwotICAgICAgICAsIGFwcGx5MgotICAgICAgICAsIChGLCBUMSwgVDIpCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGFwcGx5PCBGLFQxLFQyLG5hLG5hLG5hID4KLSAgICA6IGFwcGx5MjwgRixUMSxUMiA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkzCi0KLSAgICA6IGFwcGx5X3dyYXAzPAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgICAsIFQxLCBUMiwgVDMKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNAotICAgICAgICAsIGFwcGx5MwotICAgICAgICAsIChGLCBUMSwgVDIsIFQzKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk8IEYsVDEsVDIsVDMsbmEsbmEgPgotICAgIDogYXBwbHkzPCBGLFQxLFQyLFQzID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk0Ci0KLSAgICA6IGFwcGx5X3dyYXA0PAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgICAsIFQxLCBUMiwgVDMsIFQ0Ci0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBhcHBseTQKLSAgICAgICAgLCAoRiwgVDEsIFQyLCBUMywgVDQpCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk8IEYsVDEsVDIsVDMsVDQsbmEgPgotICAgIDogYXBwbHk0PCBGLFQxLFQyLFQzLFQ0ID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGFwcGx5NQotCi0gICAgOiBhcHBseV93cmFwNTwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAgLCBUMSwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNgotICAgICAgICAsIGFwcGx5NQotICAgICAgICAsIChGLCBUMSwgVDIsIFQzLCBUNCwgVDUpCi0gICAgICAgICkKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGFwcGx5Ci0gICAgOiBhcHBseTU8IEYsVDEsVDIsVDMsVDQsVDUgPgotewotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2FwcGx5X2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvYXBwbHlfZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmNjYzk0ZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvYXBwbHlfZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2FwcGx5X2Z3ZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hCi0gICAgPgotc3RydWN0IGFwcGx5OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkwOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGFwcGx5MTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkyOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkzOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGFwcGx5NDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk1OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvYXBwbHlfd3JhcC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvYXBwbHlfd3JhcC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVjOTAyMDIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2FwcGx5X3dyYXAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXBwbHlfd3JhcC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0KLSAgICAsIHR5cGVuYW1lIGhhc19hcHBseV8gPSB0eXBlbmFtZSBhdXg6Omhhc19hcHBseTxGPjo6dHlwZQotCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXAwCi0KLSAgICA6IEY6OnRlbXBsYXRlIGFwcGx5PCAgPgotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYgPgotc3RydWN0IGFwcGx5X3dyYXAwPCBGLHRydWVfID4KLSAgICA6IEY6OmFwcGx5Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0KLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDEKLQotICAgIDogRjo6dGVtcGxhdGUgYXBwbHk8VDE+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXAyCi0KLSAgICA6IEY6OnRlbXBsYXRlIGFwcGx5PCBUMSxUMiA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwMwotCi0gICAgOiBGOjp0ZW1wbGF0ZSBhcHBseTwgVDEsVDIsVDMgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXA0Ci0KLSAgICA6IEY6OnRlbXBsYXRlIGFwcGx5PCBUMSxUMixUMyxUNCA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXA1Ci0KLSAgICA6IEY6OnRlbXBsYXRlIGFwcGx5PCBUMSxUMixUMyxUNCxUNSA+Ci17Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvYXJnLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9hcmcuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNTQ0NzZhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9hcmcuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTIzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IFBldGVyIERpbW92IDIwMDEtMjAwMgotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2FyZy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8IC0xID4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAtMSk7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdGFnKQotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHR5cGUpCi0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFUxIHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPDE+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMSk7Ci0gICAgdHlwZWRlZiBhcmc8Mj4gbmV4dDsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTEgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8Mj4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAyKTsKLSAgICB0eXBlZGVmIGFyZzwzPiBuZXh0OwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBVMiB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEodHlwZSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGFyZzwzPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDMpOwotICAgIHR5cGVkZWYgYXJnPDQ+IG5leHQ7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdGFnKQotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHR5cGUpCi0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFUzIHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPDQ+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gNCk7Ci0gICAgdHlwZWRlZiBhcmc8NT4gbmV4dDsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTQgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8NT4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSA1KTsKLSAgICB0eXBlZGVmIGFyZzw2PiBuZXh0OwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBVNSB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEodHlwZSk7Ci0gICAgfTsKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTk9OVFlQRV9BUklUWV9TUEVDKDEsaW50LCBhcmcpCi0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvYmFzaWNfYmluZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvYmFzaWNfYmluZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhlMGJmNzMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2Jhc2ljX2JpbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDQwICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IFBldGVyIERpbW92IDIwMDEKLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2Jhc2ljX2JpbmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgLCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnCi17Ci0gICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+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+Ci17Ci19OwotCi0vLy8gaWZfL2V2YWxfaWYgc3BlY2lhbGl6YXRpb25zCi10ZW1wbGF0ZTwgdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMgPiBjbGFzcyBGLCB0eXBlbmFtZSBUYWcgPgotc3RydWN0IHF1b3RlMzsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMgPiBzdHJ1Y3QgaWZfOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBiaW5kMzwKLSAgICAgIHF1b3RlMzwgaWZfLFRhZyA+Ci0gICAgLCBUMSwgVDIsIFQzCi0gICAgPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgbXBsOjphcmc8MT4gbjE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICB0eXBlbmFtZSB0MTo6dHlwZQotICAgICAgICAgICAgLCB0MiwgdDMKLSAgICAgICAgICAgID46OnR5cGUgZl87Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGZfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMgPiBjbGFzcyBGLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgcXVvdGUzOwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMyA+IHN0cnVjdCBldmFsX2lmOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBiaW5kMzwKLSAgICAgIHF1b3RlMzwgZXZhbF9pZixUYWcgPgotICAgICwgVDEsIFQyLCBUMwotICAgID4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIG1wbDo6YXJnPDE+IG4xOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGV2YWxfaWY8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIHQxOjp0eXBlCi0gICAgICAgICAgICAsIHQyLCB0MwotICAgICAgICAgICAgPjo6dHlwZSBmXzsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZl86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2JpbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2JpbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NWNmYzY3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9iaW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU2MSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBQZXRlciBEaW1vdiAyMDAxCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYmluZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmcKLXsKLSAgICB0eXBlZGVmIFQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgdHlwZW5hbWUgQXJnCi0gICAgPgotc3RydWN0IHJlcGxhY2VfdW5uYW1lZF9hcmcKLXsKLSAgICB0eXBlZGVmIEFyZyBuZXh0OwotICAgIHR5cGVkZWYgVCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBBcmcKLSAgICA+Ci1zdHJ1Y3QgcmVwbGFjZV91bm5hbWVkX2FyZzwgYXJnPCAtMSA+LCBBcmcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgQXJnOjpuZXh0IG5leHQ7Ci0gICAgdHlwZWRlZiBBcmcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgaW50IE4sIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPCBhcmc8Tj4sIFUxLCBVMiwgVTMsIFU0LCBVNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTxtcGw6OmFyZzxOPiwgVTEsIFUyLCBVMywgVTQsIFU1Pjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgLCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPCBiaW5kPCBGLFQxLFQyLFQzLFQ0LFQ1ID4sIFUxLCBVMiwgVTMsIFU0LCBVNSA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kPCBGLFQxLFQyLFQzLFQ0LFQ1ID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBiaW5kMAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMDwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQwPEY+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMDxGPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDEsIGJpbmQwKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDEsIGJpbmQwKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYmluZDwgRixuYSxuYSxuYSxuYSxuYSA+Ci0gICAgOiBiaW5kMDxGPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBiaW5kMQotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMwotICAgICwgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kMTwgRixUMSA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMTwgRixUMSA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoMiwgYmluZDEpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMiwgYmluZDEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYmluZDwgRixUMSxuYSxuYSxuYSxuYSA+Ci0gICAgOiBiaW5kMTwgRixUMSA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBiaW5kMgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMixuMiA+IHIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjp0eXBlIGEyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjpuZXh0IG4zOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMjwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIKLSAgICAsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQyPCBGLFQxLFQyID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQyPCBGLFQxLFQyID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygzLCBiaW5kMikKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygzLCBiaW5kMikKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYmluZDwgRixUMSxUMixuYSxuYSxuYSA+Ci0gICAgOiBiaW5kMjwgRixUMSxUMiA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYmluZDMKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDEsbjEgPiByMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6dHlwZSBhMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6bmV4dCBuMjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGExLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDIsbjIgPiByMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6dHlwZSBhMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6bmV4dCBuMzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDMsbjMgPiByMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6dHlwZSBhMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6bmV4dCBuNDsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDM8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBVMQotICAgICwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQzPCBGLFQxLFQyLFQzID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQzPCBGLFQxLFQyLFQzID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg0LCBiaW5kMykKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg0LCBiaW5kMykKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGJpbmQ8IEYsVDEsVDIsVDMsbmEsbmEgPgotICAgIDogYmluZDM8IEYsVDEsVDIsVDMgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBiaW5kNAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMixuMiA+IHIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjp0eXBlIGEyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjpuZXh0IG4zOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMyxuMyA+IHIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjp0eXBlIGEzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjpuZXh0IG40OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUNCxuNCA+IHI0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI0Ojp0eXBlIGE0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI0OjpuZXh0IG41OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTQsVTEsVTIsVTMsVTQsVTUgPiB0NDsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNDwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlLCB0eXBlbmFtZSB0Mzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSB0NDo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg1LCBiaW5kNCkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg1LCBiaW5kNCkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBiaW5kPCBGLFQxLFQyLFQzLFQ0LG5hID4KLSAgICA6IGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGJpbmQ1Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IEYsIG1wbDo6YXJnPDE+ID4gcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6OnR5cGUgYTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6Om5leHQgbjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMCxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQxLG4xID4gcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6OnR5cGUgYTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6Om5leHQgbjI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQyLG4yID4gcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6OnR5cGUgYTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6Om5leHQgbjM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQzLG4zID4gcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6OnR5cGUgYTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6Om5leHQgbjQ7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQ0LG40ID4gcjQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjQ6OnR5cGUgYTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjQ6Om5leHQgbjU7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhNCxVMSxVMixVMyxVNCxVNSA+IHQ0OwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQ1LG41ID4gcjU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjU6OnR5cGUgYTU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjU6Om5leHQgbjY7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhNSxVMSxVMixVMyxVNCxVNSA+IHQ1OwotICAgICAgICAvLy8KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUsIHR5cGVuYW1lIHQzOjp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQ0Ojp0eXBlLCB0eXBlbmFtZSB0NTo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kNTwgRixUMSxUMixUMyxUNCxUNSA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kNTwgRixUMSxUMixUMyxUNCxUNSA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNiwgYmluZDUpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNiwgYmluZDUpCi0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGJpbmQKLSAgICA6IGJpbmQ1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLX07Ci0KLS8vLyBpZl8vZXZhbF9pZiBzcGVjaWFsaXphdGlvbnMKLXRlbXBsYXRlPCB0ZW1wbGF0ZTwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMyA+IGNsYXNzIEYsIHR5cGVuYW1lIFRhZyA+Ci1zdHJ1Y3QgcXVvdGUzOwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMyA+IHN0cnVjdCBpZl87Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGJpbmQzPAotICAgICAgcXVvdGUzPCBpZl8sVGFnID4KLSAgICAsIFQxLCBUMiwgVDMKLSAgICA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBtcGw6OmFyZzwxPiBuMTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQxLG4xID4gcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6OnR5cGUgYTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6Om5leHQgbjI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQyLG4yID4gcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6OnR5cGUgYTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6Om5leHQgbjM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQzLG4zID4gcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6OnR5cGUgYTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6Om5leHQgbjQ7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIHQxOjp0eXBlCi0gICAgICAgICAgICAsIHQyLCB0MwotICAgICAgICAgICAgPjo6dHlwZSBmXzsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZl86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMyA+IGNsYXNzIEYsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBxdW90ZTM7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzID4gc3RydWN0IGV2YWxfaWY7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGJpbmQzPAotICAgICAgcXVvdGUzPCBldmFsX2lmLFRhZyA+Ci0gICAgLCBUMSwgVDIsIFQzCi0gICAgPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgbXBsOjphcmc8MT4gbjE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMixuMiA+IHIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjp0eXBlIGEyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjpuZXh0IG4zOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMyxuMyA+IHIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjp0eXBlIGEzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjpuZXh0IG40OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZXZhbF9pZjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgdDE6OnR5cGUKLSAgICAgICAgICAgICwgdDIsIHQzCi0gICAgICAgICAgICA+Ojp0eXBlIGZfOwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBmXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvYmluZF9md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2JpbmRfZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWEwNDZlZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvYmluZF9md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYmluZF9md2QuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYQotICAgID4KLXN0cnVjdCBiaW5kOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYmluZDA7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYmluZDE7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGJpbmQyOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYmluZDM7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYmluZDQ7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGJpbmQ1OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvYml0YW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9iaXRhbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZDhjYzVjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9iaXRhbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ3ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLyBDb3B5cmlnaHQgSmFhcCBTdXRlciAyMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2JpdGFuZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGJpdGFuZF9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgYml0YW5kX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBiaXRhbmRfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBiaXRhbmRfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgYml0YW5kX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBiaXRhbmRfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBiaXRhbmRfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IGJpdGFuZF8KLSAgICA6IGJpdGFuZF88IGJpdGFuZF88IGJpdGFuZF88IGJpdGFuZF88IE4xLE4yID4sIE4zPiwgTjQ+LCBONT4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRhbmRfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMsIHR5cGVuYW1lIE40Ci0gICAgPgotc3RydWN0IGJpdGFuZF88IE4xLE4yLE4zLE40LG5hID4KLQotICAgIDogYml0YW5kXzwgYml0YW5kXzwgYml0YW5kXzwgTjEsTjIgPiwgTjM+LCBOND4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdGFuZF8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMwotICAgID4KLXN0cnVjdCBiaXRhbmRfPCBOMSxOMixOMyxuYSxuYSA+Ci0KLSAgICA6IGJpdGFuZF88IGJpdGFuZF88IE4xLE4yID4sIE4zPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0YW5kXwotICAgICAgICAsICggTjEsIE4yLCBOMywgbmEsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgYml0YW5kXzwgTjEsTjIsbmEsbmEsbmEgPgotICAgIDogYml0YW5kX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgYml0YW5kX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBiaXRhbmRfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0YW5kXwotICAgICAgICAsICggTjEsIE4yLCBuYSwgbmEsIG5hICkKLSAgICAgICAgKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIGJpdGFuZF8pCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IGJpdGFuZF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgJiBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvYml0b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2JpdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTk4MjQ3Yi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvYml0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ3ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLyBDb3B5cmlnaHQgSmFhcCBTdXRlciAyMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2JpdG9yLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgYml0b3JfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGJpdG9yX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBiaXRvcl9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGJpdG9yX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGJpdG9yX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBiaXRvcl9pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGJpdG9yX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBiaXRvcl8KLSAgICA6IGJpdG9yXzwgYml0b3JfPCBiaXRvcl88IGJpdG9yXzwgTjEsTjIgPiwgTjM+LCBOND4sIE41PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdG9yXwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zLCB0eXBlbmFtZSBONAotICAgID4KLXN0cnVjdCBiaXRvcl88IE4xLE4yLE4zLE40LG5hID4KLQotICAgIDogYml0b3JfPCBiaXRvcl88IGJpdG9yXzwgTjEsTjIgPiwgTjM+LCBOND4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdG9yXwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zCi0gICAgPgotc3RydWN0IGJpdG9yXzwgTjEsTjIsTjMsbmEsbmEgPgotCi0gICAgOiBiaXRvcl88IGJpdG9yXzwgTjEsTjIgPiwgTjM+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIG5hLCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IGJpdG9yXzwgTjEsTjIsbmEsbmEsbmEgPgotICAgIDogYml0b3JfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBiaXRvcl90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgYml0b3JfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIG5hLCBuYSwgbmEgKQotICAgICAgICApCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgYml0b3JfKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBiaXRvcl9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgfCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvYml0eG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9iaXR4b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZjI3NmI3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9iaXR4b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ3ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLyBDb3B5cmlnaHQgSmFhcCBTdXRlciAyMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2JpdHhvci5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGJpdHhvcl9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgYml0eG9yX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBiaXR4b3JfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBiaXR4b3JfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgYml0eG9yX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBiaXR4b3JfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBiaXR4b3JfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IGJpdHhvcl8KLSAgICA6IGJpdHhvcl88IGJpdHhvcl88IGJpdHhvcl88IGJpdHhvcl88IE4xLE4yID4sIE4zPiwgTjQ+LCBONT4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXR4b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMsIHR5cGVuYW1lIE40Ci0gICAgPgotc3RydWN0IGJpdHhvcl88IE4xLE4yLE4zLE40LG5hID4KLQotICAgIDogYml0eG9yXzwgYml0eG9yXzwgYml0eG9yXzwgTjEsTjIgPiwgTjM+LCBOND4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdHhvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMwotICAgID4KLXN0cnVjdCBiaXR4b3JfPCBOMSxOMixOMyxuYSxuYSA+Ci0KLSAgICA6IGJpdHhvcl88IGJpdHhvcl88IE4xLE4yID4sIE4zPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0eG9yXwotICAgICAgICAsICggTjEsIE4yLCBOMywgbmEsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgYml0eG9yXzwgTjEsTjIsbmEsbmEsbmEgPgotICAgIDogYml0eG9yX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgYml0eG9yX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBiaXR4b3JfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0eG9yXwotICAgICAgICAsICggTjEsIE4yLCBuYSwgbmEsIG5hICkKLSAgICAgICAgKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIGJpdHhvcl8pCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IGJpdHhvcl9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgXiBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvZGVxdWUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2RlcXVlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDYzMWY2Ni4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvZGVxdWUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzIzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2RlcXVlLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwID0gbmEsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEsIHR5cGVuYW1lIFQ2ID0gbmEsIHR5cGVuYW1lIFQ3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ4ID0gbmEsIHR5cGVuYW1lIFQ5ID0gbmEsIHR5cGVuYW1lIFQxMCA9IG5hLCB0eXBlbmFtZSBUMTEgPSBuYQotICAgICwgdHlwZW5hbWUgVDEyID0gbmEsIHR5cGVuYW1lIFQxMyA9IG5hLCB0eXBlbmFtZSBUMTQgPSBuYQotICAgICwgdHlwZW5hbWUgVDE1ID0gbmEsIHR5cGVuYW1lIFQxNiA9IG5hLCB0eXBlbmFtZSBUMTcgPSBuYQotICAgICwgdHlwZW5hbWUgVDE4ID0gbmEsIHR5cGVuYW1lIFQxOSA9IG5hCi0gICAgPgotc3RydWN0IGRlcXVlOwotCi10ZW1wbGF0ZTwKLSAgICAgCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMDwgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjA8ICA+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+Ci1zdHJ1Y3QgZGVxdWUKLSAgICA6IHZlY3RvcjIwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjIwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2RpdmlkZXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2RpdmlkZXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYmM0NDMzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9kaXZpZGVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9kaXZpZGVzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgZGl2aWRlc19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgZGl2aWRlc19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgZGl2aWRlc19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGRpdmlkZXNfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZGl2aWRlc19pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZGl2aWRlc19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGRpdmlkZXNfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IGRpdmlkZXMKLSAgICA6IGRpdmlkZXM8IGRpdmlkZXM8IGRpdmlkZXM8IGRpdmlkZXM8IE4xLE4yID4sIE4zPiwgTjQ+LCBONT4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBkaXZpZGVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMsIHR5cGVuYW1lIE40Ci0gICAgPgotc3RydWN0IGRpdmlkZXM8IE4xLE4yLE4zLE40LG5hID4KLQotICAgIDogZGl2aWRlczwgZGl2aWRlczwgZGl2aWRlczwgTjEsTjIgPiwgTjM+LCBOND4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGRpdmlkZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMwotICAgID4KLXN0cnVjdCBkaXZpZGVzPCBOMSxOMixOMyxuYSxuYSA+Ci0KLSAgICA6IGRpdmlkZXM8IGRpdmlkZXM8IE4xLE4yID4sIE4zPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgZGl2aWRlcwotICAgICAgICAsICggTjEsIE4yLCBOMywgbmEsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgZGl2aWRlczwgTjEsTjIsbmEsbmEsbmEgPgotICAgIDogZGl2aWRlc19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGRpdmlkZXNfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGRpdmlkZXNfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgZGl2aWRlcwotICAgICAgICAsICggTjEsIE4yLCBuYSwgbmEsIG5hICkKLSAgICAgICAgKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIGRpdmlkZXMpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IGRpdmlkZXNfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgIC8gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2VxdWFsX3RvLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9lcXVhbF90by5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY0NTU4ODUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2VxdWFsX3RvLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2VxdWFsX3RvLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgZXF1YWxfdG9faW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGVxdWFsX3RvX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBlcXVhbF90b19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGVxdWFsX3RvX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGVxdWFsX3RvX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBlcXVhbF90b19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGVxdWFsX3RvX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBlcXVhbF90bwotCi0gICAgOiBlcXVhbF90b19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGVxdWFsX3RvX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBlcXVhbF90b190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBlcXVhbF90bywgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgZXF1YWxfdG8pCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZXF1YWxfdG9faW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGJvb2xfPCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlICA9PSBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSApID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvZm9sZF9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9mb2xkX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OTRjZDQxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9mb2xkX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTgwICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vZm9sZF9pbXBsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDwgMCxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHN0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIwIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw8IDEsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIAotCi0gICAgdHlwZWRlZiBzdGF0ZTEgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMSBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsPCAyLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHN0YXRlMiBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIyIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw8IDMsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHN0YXRlMyBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIzIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw8IDQsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUzLCB0eXBlbmFtZSBkZXJlZjxpdGVyMz46OnR5cGUgPjo6dHlwZSBzdGF0ZTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgIAotCi0gICAgdHlwZWRlZiBzdGF0ZTQgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyNCBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgaW50IE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbAotewotICAgIHR5cGVkZWYgZm9sZF9pbXBsPAotICAgICAgICAgIDQKLSAgICAgICAgLCBGaXJzdAotICAgICAgICAsIExhc3QKLSAgICAgICAgLCBTdGF0ZQotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IGNodW5rXzsKLQotICAgIHR5cGVkZWYgZm9sZF9pbXBsPAotICAgICAgICAgICggKE4gLSA0KSA8IDAgPyAwIDogTiAtIDQgKQotICAgICAgICAsIHR5cGVuYW1lIGNodW5rXzo6aXRlcmF0b3IKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgY2h1bmtfOjpzdGF0ZQotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IHJlc187Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186OnN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDwgLTEsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotICAgIDogZm9sZF9pbXBsPAotICAgICAgICAgIC0xCi0gICAgICAgICwgdHlwZW5hbWUgbXBsOjpuZXh0PEZpcnN0Pjo6dHlwZQotICAgICAgICAsIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBhcHBseTI8Rm9yd2FyZE9wLFN0YXRlLCB0eXBlbmFtZSBkZXJlZjxGaXJzdD46OnR5cGU+Ojp0eXBlCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw8IC0xLExhc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiBMYXN0IGl0ZXJhdG9yOwotfTsKLQotfX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvZnVsbF9sYW1iZGEuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2Z1bGxfbGFtYmRhLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2FjYmQ5Zi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvZnVsbF9sYW1iZGEuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTU4ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vZnVsbF9sYW1iZGEuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIGJvb2wgQzEgPSBmYWxzZSwgYm9vbCBDMiA9IGZhbHNlLCBib29sIEMzID0gZmFsc2UsIGJvb2wgQzQgPSBmYWxzZQotICAgICwgYm9vbCBDNSA9IGZhbHNlCi0gICAgPgotc3RydWN0IGxhbWJkYV9vcgotICAgIDogdHJ1ZV8KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsYW1iZGFfb3I8IGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlID4KLSAgICA6IGZhbHNlXwotewotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgdHlwZW5hbWUgVGFnCi0gICAgLCB0eXBlbmFtZSBBcml0eQotICAgID4KLXN0cnVjdCBsYW1iZGEKLXsKLSAgICB0eXBlZGVmIGZhbHNlXyBpc19sZTsKLSAgICB0eXBlZGVmIFQgcmVzdWx0XzsKLSAgICB0eXBlZGVmIFQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgID4KLXN0cnVjdCBpc19sYW1iZGFfZXhwcmVzc2lvbgotICAgIDogbGFtYmRhPFQ+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+IGxlX3Jlc3VsdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjpyZXN1bHRfIHJlc3VsdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjp0eXBlIHR5cGU7Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDMsIGxhbWJkYSkKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2dyZWF0ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2dyZWF0ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhN2ViNGE0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9ncmVhdGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2dyZWF0ZXIuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBncmVhdGVyX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBncmVhdGVyX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBncmVhdGVyX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgZ3JlYXRlcl9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBncmVhdGVyX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBncmVhdGVyX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgZ3JlYXRlcl90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgZ3JlYXRlcgotCi0gICAgOiBncmVhdGVyX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgZ3JlYXRlcl90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgZ3JlYXRlcl90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBncmVhdGVyLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBncmVhdGVyKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGdyZWF0ZXJfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGJvb2xfPCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlID4gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUgKSA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2dyZWF0ZXJfZXF1YWwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2dyZWF0ZXJfZXF1YWwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNWJkNDEzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9ncmVhdGVyX2VxdWFsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2dyZWF0ZXJfZXF1YWwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBncmVhdGVyX2VxdWFsX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBncmVhdGVyX2VxdWFsX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBncmVhdGVyX2VxdWFsX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgZ3JlYXRlcl9lcXVhbF9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBncmVhdGVyX2VxdWFsX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBncmVhdGVyX2VxdWFsX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgZ3JlYXRlcl9lcXVhbF90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgZ3JlYXRlcl9lcXVhbAotCi0gICAgOiBncmVhdGVyX2VxdWFsX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgZ3JlYXRlcl9lcXVhbF90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgZ3JlYXRlcl9lcXVhbF90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBncmVhdGVyX2VxdWFsLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBncmVhdGVyX2VxdWFsKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGdyZWF0ZXJfZXF1YWxfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGJvb2xfPCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlID49IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlICkgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9pbmhlcml0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9pbmhlcml0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTk3ZjMxMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvaW5oZXJpdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDEgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvaW5oZXJpdC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQxKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMikKLSAgICA+Ci1zdHJ1Y3QgaW5oZXJpdDIKLSAgICA6IFQxLCBUMgotewotICAgIHR5cGVkZWYgaW5oZXJpdDIgdHlwZTsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGluaGVyaXQyLCAoVDEsIFQyKSkKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUMSA+Ci1zdHJ1Y3QgaW5oZXJpdDI8IFQxLGVtcHR5X2Jhc2UgPgotewotICAgIHR5cGVkZWYgVDEgdHlwZTsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoMiwgaW5oZXJpdDIsIChUMSwgZW1wdHlfYmFzZSkpCi19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVDIgPgotc3RydWN0IGluaGVyaXQyPCBlbXB0eV9iYXNlLFQyID4KLXsKLSAgICB0eXBlZGVmIFQyIHR5cGU7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKDIsIGluaGVyaXQyLCAoZW1wdHlfYmFzZSwgVDIpKQotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGluaGVyaXQyPCBlbXB0eV9iYXNlLGVtcHR5X2Jhc2UgPgotewotICAgIHR5cGVkZWYgZW1wdHlfYmFzZSB0eXBlOwotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygyLCBpbmhlcml0MiwgKGVtcHR5X2Jhc2UsIGVtcHR5X2Jhc2UpKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDIsIGluaGVyaXQyKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICA+Ci1zdHJ1Y3QgaW5oZXJpdDMKLSAgICA6IGluaGVyaXQyPAotICAgICAgICAgIHR5cGVuYW1lIGluaGVyaXQyPAotICAgICAgICAgICAgICBUMSwgVDIKLSAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgLCBUMwotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICAzCi0gICAgICAgICwgaW5oZXJpdDMKLSAgICAgICAgLCAoIFQxLCBUMiwgVDMpCi0gICAgICAgICkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQygzLCBpbmhlcml0MykKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hLCB0eXBlbmFtZSBUNCA9IG5hCi0gICAgPgotc3RydWN0IGluaGVyaXQ0Ci0gICAgOiBpbmhlcml0MjwKLSAgICAgICAgICB0eXBlbmFtZSBpbmhlcml0MzwKLSAgICAgICAgICAgICAgVDEsIFQyLCBUMwotICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAsIFQ0Ci0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDQKLSAgICAgICAgLCBpbmhlcml0NAotICAgICAgICAsICggVDEsIFQyLCBUMywgVDQpCi0gICAgICAgICkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQyg0LCBpbmhlcml0NCkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hLCB0eXBlbmFtZSBUNCA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNSA9IG5hCi0gICAgPgotc3RydWN0IGluaGVyaXQ1Ci0gICAgOiBpbmhlcml0MjwKLSAgICAgICAgICB0eXBlbmFtZSBpbmhlcml0NDwKLSAgICAgICAgICAgICAgVDEsIFQyLCBUMywgVDQKLSAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgLCBUNQotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgaW5oZXJpdDUKLSAgICAgICAgLCAoIFQxLCBUMiwgVDMsIFQ0LCBUNSkKLSAgICAgICAgKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDUsIGluaGVyaXQ1KQotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQxID0gZW1wdHlfYmFzZSwgdHlwZW5hbWUgVDIgPSBlbXB0eV9iYXNlCi0gICAgLCB0eXBlbmFtZSBUMyA9IGVtcHR5X2Jhc2UsIHR5cGVuYW1lIFQ0ID0gZW1wdHlfYmFzZQotICAgICwgdHlwZW5hbWUgVDUgPSBlbXB0eV9iYXNlCi0gICAgPgotc3RydWN0IGluaGVyaXQKLSAgICA6IGluaGVyaXQ1PCBUMSxUMixUMyxUNCxUNSA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaW5oZXJpdDwgbmEsbmEsbmEsbmEsbmEgPgotewotICAgIHRlbXBsYXRlPAotCi0gICAgICAgICAgdHlwZW5hbWUgVDEgPSBlbXB0eV9iYXNlLCB0eXBlbmFtZSBUMiA9IGVtcHR5X2Jhc2UKLSAgICAgICAgLCB0eXBlbmFtZSBUMyA9IGVtcHR5X2Jhc2UsIHR5cGVuYW1lIFQ0ID0gZW1wdHlfYmFzZQotICAgICAgICAsIHR5cGVuYW1lIFQ1ID0gZW1wdHlfYmFzZQotCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBpbmhlcml0PCBUMSxUMixUMyxUNCxUNSA+Ci0gICAgewotICAgIH07Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUNfTEFNQkRBKDUsIGluaGVyaXQpCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUNfQVJJVFkoNSwgaW5oZXJpdCkKLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQ19URU1QTEFURV9BUklUWSg1LCA1LCBpbmhlcml0KQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2l0ZXJfZm9sZF9pZl9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9pdGVyX2ZvbGRfaWZfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3NGJkODMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2l0ZXJfZm9sZF9pZl9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8gQ29weXJpZ2h0IERhdmlkIEFicmFoYW1zIDIwMDEtMjAwMgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2l0ZXJfZm9sZF9pZl9pbXBsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yLCB0eXBlbmFtZSBTdGF0ZSA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX251bGxfc3RlcAotewotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPCBib29sID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfc3RlcF9pbXBsCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgSXRlcmF0b3IKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlT3AKLSAgICAgICAgLCB0eXBlbmFtZSBJdGVyYXRvck9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IFN0YXRlT3AsU3RhdGUsSXRlcmF0b3IgPjo6dHlwZSBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBJdGVyYXRvck9wOjp0eXBlIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX3N0ZXBfaW1wbDxmYWxzZT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgU3RhdGVPcAotICAgICAgICAsIHR5cGVuYW1lIEl0ZXJhdG9yT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBQcmVkaWNhdGUKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX2ZvcndhcmRfc3RlcAotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBQcmVkaWNhdGUsU3RhdGUsSXRlcmF0b3IgPjo6dHlwZSBub3RfbGFzdDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJfZm9sZF9pZl9zdGVwX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQobm90X2xhc3QpOjp2YWx1ZQotICAgICAgICA+Ojp0ZW1wbGF0ZSByZXN1bHRfPCBJdGVyYXRvcixTdGF0ZSxGb3J3YXJkT3AsIG1wbDo6bmV4dDxJdGVyYXRvcj4gPiBpbXBsXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgaW1wbF86OnN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgaW1wbF86Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIFByZWRpY2F0ZQotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfYmFja3dhcmRfc3RlcAotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBQcmVkaWNhdGUsU3RhdGUsSXRlcmF0b3IgPjo6dHlwZSBub3RfbGFzdDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJfZm9sZF9pZl9zdGVwX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQobm90X2xhc3QpOjp2YWx1ZQotICAgICAgICA+Ojp0ZW1wbGF0ZSByZXN1bHRfPCBJdGVyYXRvcixTdGF0ZSxCYWNrd2FyZE9wLCBpZGVudGl0eTxJdGVyYXRvcj4gPiBpbXBsXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgaW1wbF86OnN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgaW1wbF86Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZFByZWRpY2F0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgQmFja3dhcmRQcmVkaWNhdGUKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX2ltcGwKLXsKLSBwcml2YXRlOgotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX251bGxfc3RlcDwgSXRlcmF0b3IsU3RhdGUgPiBmb3J3YXJkX3N0ZXAwOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2ZvcndhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMDo6aXRlcmF0b3IsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDA6OnN0YXRlLCBGb3J3YXJkT3AsIEZvcndhcmRQcmVkaWNhdGUgPiBmb3J3YXJkX3N0ZXAxOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2ZvcndhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMTo6aXRlcmF0b3IsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDE6OnN0YXRlLCBGb3J3YXJkT3AsIEZvcndhcmRQcmVkaWNhdGUgPiBmb3J3YXJkX3N0ZXAyOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2ZvcndhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMjo6aXRlcmF0b3IsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDI6OnN0YXRlLCBGb3J3YXJkT3AsIEZvcndhcmRQcmVkaWNhdGUgPiBmb3J3YXJkX3N0ZXAzOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2ZvcndhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMzo6aXRlcmF0b3IsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDM6OnN0YXRlLCBGb3J3YXJkT3AsIEZvcndhcmRQcmVkaWNhdGUgPiBmb3J3YXJkX3N0ZXA0OwotICAgIAotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgdHlwZW5hbWUgZm9yd2FyZF9zdGVwNDo6bm90X2xhc3QKLSAgICAgICAgLCBpdGVyX2ZvbGRfaWZfaW1wbDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgZm9yd2FyZF9zdGVwNDo6aXRlcmF0b3IKLSAgICAgICAgICAgICwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwNDo6c3RhdGUKLSAgICAgICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgICAgICAsIEZvcndhcmRQcmVkaWNhdGUKLSAgICAgICAgICAgICwgQmFja3dhcmRPcAotICAgICAgICAgICAgLCBCYWNrd2FyZFByZWRpY2F0ZQotICAgICAgICAgICAgPgotICAgICAgICAsIGl0ZXJfZm9sZF9pZl9udWxsX3N0ZXA8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGZvcndhcmRfc3RlcDQ6Oml0ZXJhdG9yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDQ6OnN0YXRlCi0gICAgICAgICAgICA+Ci0gICAgICAgID46OnR5cGUgYmFja3dhcmRfc3RlcDQ7Ci0KLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9iYWNrd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAzOjppdGVyYXRvciwgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDQ6OnN0YXRlLCBCYWNrd2FyZE9wLCBCYWNrd2FyZFByZWRpY2F0ZSA+IGJhY2t3YXJkX3N0ZXAzOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2JhY2t3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDI6Oml0ZXJhdG9yLCB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwMzo6c3RhdGUsIEJhY2t3YXJkT3AsIEJhY2t3YXJkUHJlZGljYXRlID4gYmFja3dhcmRfc3RlcDI7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfYmFja3dhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMTo6aXRlcmF0b3IsIHR5cGVuYW1lIGJhY2t3YXJkX3N0ZXAyOjpzdGF0ZSwgQmFja3dhcmRPcCwgQmFja3dhcmRQcmVkaWNhdGUgPiBiYWNrd2FyZF9zdGVwMTsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9iYWNrd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAwOjppdGVyYXRvciwgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDE6OnN0YXRlLCBCYWNrd2FyZE9wLCBCYWNrd2FyZFByZWRpY2F0ZSA+IGJhY2t3YXJkX3N0ZXAwOwotICAgIAotCi0gcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDA6OnN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDQ6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotfX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvaXRlcl9mb2xkX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2l0ZXJfZm9sZF9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2MwOGIzMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvaXRlcl9mb2xkX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTgwICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vaXRlcl9mb2xkX2ltcGwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDwgMCxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHN0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIwIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDwgMSxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMCxpdGVyMCA+Ojp0eXBlIHN0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHN0YXRlMSBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIxIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDwgMixGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMCxpdGVyMCA+Ojp0eXBlIHN0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTEsaXRlcjEgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIAotCi0gICAgdHlwZWRlZiBzdGF0ZTIgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMiBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw8IDMsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTAsaXRlcjAgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUxLGl0ZXIxID46OnR5cGUgc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMixpdGVyMiA+Ojp0eXBlIHN0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHN0YXRlMyBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIzIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDwgNCxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMCxpdGVyMCA+Ojp0eXBlIHN0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTEsaXRlcjEgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUyLGl0ZXIyID46OnR5cGUgc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMyxpdGVyMyA+Ojp0eXBlIHN0YXRlNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHN0YXRlNCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXI0IGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGwKLXsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pbXBsPAotICAgICAgICAgIDQKLSAgICAgICAgLCBGaXJzdAotICAgICAgICAsIExhc3QKLSAgICAgICAgLCBTdGF0ZQotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IGNodW5rXzsKLQotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2ltcGw8Ci0gICAgICAgICAgKCAoTiAtIDQpIDwgMCA/IDAgOiBOIC0gNCApCi0gICAgICAgICwgdHlwZW5hbWUgY2h1bmtfOjppdGVyYXRvcgotICAgICAgICAsIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBjaHVua186OnN0YXRlCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gcmVzXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6c3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw8IC0xLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLSAgICA6IGl0ZXJfZm9sZF9pbXBsPAotICAgICAgICAgIC0xCi0gICAgICAgICwgdHlwZW5hbWUgbXBsOjpuZXh0PEZpcnN0Pjo6dHlwZQotICAgICAgICAsIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxTdGF0ZSxGaXJzdCA+Ojp0eXBlCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDwgLTEsTGFzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIExhc3QgaXRlcmF0b3I7Ci19OwotCi19fX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9sYW1iZGFfbm9fY3Rwcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvbGFtYmRhX25vX2N0cHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NWY1ZjZiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9sYW1iZGFfbm9fY3Rwcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMjkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfbm9fY3Rwcy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgYm9vbCBDMSA9IGZhbHNlLCBib29sIEMyID0gZmFsc2UsIGJvb2wgQzMgPSBmYWxzZSwgYm9vbCBDNCA9IGZhbHNlCi0gICAgLCBib29sIEM1ID0gZmFsc2UKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhX29yCi0gICAgOiB0cnVlXwotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxhbWJkYV9vcjwgZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UgPgotICAgIDogZmFsc2VfCi17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgQXJpdHkgPiBzdHJ1Y3QgbGFtYmRhX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgICAgICB0eXBlZGVmIGlzX3BsYWNlaG9sZGVyPFQ+IGlzX2xlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsYW1iZGFfaW1wbDwgaW50XzwxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMSwgVGFnLCBmYWxzZV8gPiBsMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgICAgICB0eXBlZGVmIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTEpOjp2YWx1ZQotICAgICAgICAgICAgPiBpc19sZTsKLQotICAgICAgICB0eXBlZGVmIGJpbmQxPAotICAgICAgICAgICAgICB0eXBlbmFtZSBGOjpyZWJpbmQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDE6OnR5cGUKLSAgICAgICAgICAgID4gYmluZF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIGlzX2xlCi0gICAgICAgICAgICAsIGlmXzwgUHJvdGVjdCwgbXBsOjpwcm90ZWN0PGJpbmRfPiwgYmluZF8gPgotICAgICAgICAgICAgLCBpZGVudGl0eTxGPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxhbWJkYV9pbXBsPCBpbnRfPDI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcxLCBUYWcsIGZhbHNlXyA+IGwxOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMiwgVGFnLCBmYWxzZV8gPiBsMjsKLSAgICAgICAgCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTEpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUyKTo6dmFsdWUKLSAgICAgICAgICAgID4gaXNfbGU7Ci0KLSAgICAgICAgdHlwZWRlZiBiaW5kMjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgRjo6cmViaW5kCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGwxOjp0eXBlLCB0eXBlbmFtZSBsMjo6dHlwZQotICAgICAgICAgICAgPiBiaW5kXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgaXNfbGUKLSAgICAgICAgICAgICwgaWZfPCBQcm90ZWN0LCBtcGw6OnByb3RlY3Q8YmluZF8+LCBiaW5kXyA+Ci0gICAgICAgICAgICAsIGlkZW50aXR5PEY+Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGVfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHlwZV86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGFtYmRhX2ltcGw8IGludF88Mz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFByb3RlY3QgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzEsIFRhZywgZmFsc2VfID4gbDE7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcyLCBUYWcsIGZhbHNlXyA+IGwyOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMywgVGFnLCBmYWxzZV8gPiBsMzsKLSAgICAgICAgCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwzOjppc19sZSBpc19sZTM7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMSk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTIpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUzKTo6dmFsdWUKLSAgICAgICAgICAgID4gaXNfbGU7Ci0KLSAgICAgICAgdHlwZWRlZiBiaW5kMzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgRjo6cmViaW5kCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGwxOjp0eXBlLCB0eXBlbmFtZSBsMjo6dHlwZSwgdHlwZW5hbWUgbDM6OnR5cGUKLSAgICAgICAgICAgID4gYmluZF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIGlzX2xlCi0gICAgICAgICAgICAsIGlmXzwgUHJvdGVjdCwgbXBsOjpwcm90ZWN0PGJpbmRfPiwgYmluZF8gPgotICAgICAgICAgICAgLCBpZGVudGl0eTxGPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxhbWJkYV9pbXBsPCBpbnRfPDQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcxLCBUYWcsIGZhbHNlXyA+IGwxOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMiwgVGFnLCBmYWxzZV8gPiBsMjsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzMsIFRhZywgZmFsc2VfID4gbDM7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmc0LCBUYWcsIGZhbHNlXyA+IGw0OwotICAgICAgICAKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDM6OmlzX2xlIGlzX2xlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsNDo6aXNfbGUgaXNfbGU0OwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTEpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUyKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMyk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTQpOjp2YWx1ZQotICAgICAgICAgICAgPiBpc19sZTsKLQotICAgICAgICB0eXBlZGVmIGJpbmQ0PAotICAgICAgICAgICAgICB0eXBlbmFtZSBGOjpyZWJpbmQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDE6OnR5cGUsIHR5cGVuYW1lIGwyOjp0eXBlLCB0eXBlbmFtZSBsMzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBsNDo6dHlwZQotICAgICAgICAgICAgPiBiaW5kXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgaXNfbGUKLSAgICAgICAgICAgICwgaWZfPCBQcm90ZWN0LCBtcGw6OnByb3RlY3Q8YmluZF8+LCBiaW5kXyA+Ci0gICAgICAgICAgICAsIGlkZW50aXR5PEY+Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGVfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHlwZV86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGFtYmRhX2ltcGw8IGludF88NT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFByb3RlY3QgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzEsIFRhZywgZmFsc2VfID4gbDE7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcyLCBUYWcsIGZhbHNlXyA+IGwyOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMywgVGFnLCBmYWxzZV8gPiBsMzsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzQsIFRhZywgZmFsc2VfID4gbDQ7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmc1LCBUYWcsIGZhbHNlXyA+IGw1OwotICAgICAgICAKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDM6OmlzX2xlIGlzX2xlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsNDo6aXNfbGUgaXNfbGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGw1Ojppc19sZSBpc19sZTU7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMSk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTIpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUzKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlNCk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTUpOjp2YWx1ZQotICAgICAgICAgICAgPiBpc19sZTsKLQotICAgICAgICB0eXBlZGVmIGJpbmQ1PAotICAgICAgICAgICAgICB0eXBlbmFtZSBGOjpyZWJpbmQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDE6OnR5cGUsIHR5cGVuYW1lIGwyOjp0eXBlLCB0eXBlbmFtZSBsMzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBsNDo6dHlwZSwgdHlwZW5hbWUgbDU6OnR5cGUKLSAgICAgICAgICAgID4gYmluZF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIGlzX2xlCi0gICAgICAgICAgICAsIGlmXzwgUHJvdGVjdCwgbXBsOjpwcm90ZWN0PGJpbmRfPiwgYmluZF8gPgotICAgICAgICAgICAgLCBpZGVudGl0eTxGPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgICwgdHlwZW5hbWUgUHJvdGVjdAotICAgID4KLXN0cnVjdCBsYW1iZGEKLXsKLSAgICAvLy8gTWV0YWZ1bmN0aW9uIGZvcndhcmRpbmcgY29uZnVzZXMgTVNWQyA2LngKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dGVtcGxhdGVfYXJpdHk8VD46OnR5cGUgYXJpdHlfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsYW1iZGFfaW1wbDxhcml0eV8+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgVCxUYWcsUHJvdGVjdCA+IGxfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsXzo6dHlwZSB0eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbF86OmlzX2xlIGlzX2xlOwotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMywgbGFtYmRhLCAoVCwgVGFnLCBQcm90ZWN0KSkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMSwgMywgbGFtYmRhKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICA+Ci1zdHJ1Y3QgaXNfbGFtYmRhX2V4cHJlc3Npb24KLSAgICA6IGxhbWJkYTxUPjo6aXNfbGUKLXsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9sZXNzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9sZXNzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTRiOGVlYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvbGVzcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9sZXNzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgbGVzc19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgbGVzc19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgbGVzc19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGxlc3NfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgbGVzc19pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgbGVzc19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGxlc3NfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGxlc3MKLQotICAgIDogbGVzc19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGxlc3NfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGxlc3NfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgbGVzcywgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgbGVzcykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsZXNzX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBib29sXzwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSA+IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlICkgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9sZXNzX2VxdWFsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9sZXNzX2VxdWFsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWNkMTQxYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvbGVzc19lcXVhbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9sZXNzX2VxdWFsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgbGVzc19lcXVhbF9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgbGVzc19lcXVhbF9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgbGVzc19lcXVhbF9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGxlc3NfZXF1YWxfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgbGVzc19lcXVhbF9pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgbGVzc19lcXVhbF9pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGxlc3NfZXF1YWxfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGxlc3NfZXF1YWwKLQotICAgIDogbGVzc19lcXVhbF9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGxlc3NfZXF1YWxfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGxlc3NfZXF1YWxfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgbGVzc19lcXVhbCwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgbGVzc19lcXVhbCkKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsZXNzX2VxdWFsX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBib29sXzwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSA8PSBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSApID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvbGlzdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvbGlzdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhjYzhjNDYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2xpc3QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzIzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2xpc3QuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAgPSBuYSwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYSwgdHlwZW5hbWUgVDYgPSBuYSwgdHlwZW5hbWUgVDcgPSBuYQotICAgICwgdHlwZW5hbWUgVDggPSBuYSwgdHlwZW5hbWUgVDkgPSBuYSwgdHlwZW5hbWUgVDEwID0gbmEsIHR5cGVuYW1lIFQxMSA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTIgPSBuYSwgdHlwZW5hbWUgVDEzID0gbmEsIHR5cGVuYW1lIFQxNCA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTUgPSBuYSwgdHlwZW5hbWUgVDE2ID0gbmEsIHR5cGVuYW1lIFQxNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTggPSBuYSwgdHlwZW5hbWUgVDE5ID0gbmEKLSAgICA+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+Ci1zdHJ1Y3QgbGlzdAotICAgIDogbGlzdDIwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QyMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9saXN0X2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2xpc3RfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU0M2YzOGYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL2xpc3RfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjggKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbGlzdF9jLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAgPSBMT05HX01BWCwgbG9uZyBDMSA9IExPTkdfTUFYLCBsb25nIEMyID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzMgPSBMT05HX01BWCwgbG9uZyBDNCA9IExPTkdfTUFYLCBsb25nIEM1ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzYgPSBMT05HX01BWCwgbG9uZyBDNyA9IExPTkdfTUFYLCBsb25nIEM4ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzkgPSBMT05HX01BWCwgbG9uZyBDMTAgPSBMT05HX01BWCwgbG9uZyBDMTEgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTIgPSBMT05HX01BWCwgbG9uZyBDMTMgPSBMT05HX01BWCwgbG9uZyBDMTQgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTUgPSBMT05HX01BWCwgbG9uZyBDMTYgPSBMT05HX01BWCwgbG9uZyBDMTcgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTggPSBMT05HX01BWCwgbG9uZyBDMTkgPSBMT05HX01BWAotICAgID4KLXN0cnVjdCBsaXN0X2M7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDBfYzxUPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDBfYzxUPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MV9jPCBULEMwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxX2M8IFQsQzAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0Ml9jPCBULEMwLEMxID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QyX2M8IFQsQzAsQzEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0M19jPCBULEMwLEMxLEMyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QzX2M8IFQsQzAsQzEsQzIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0NF9jPCBULEMwLEMxLEMyLEMzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q0X2M8IFQsQzAsQzEsQzIsQzMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0NV9jPCBULEMwLEMxLEMyLEMzLEM0ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q1X2M8IFQsQzAsQzEsQzIsQzMsQzQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0Nl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q2X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0N19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q3X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0OF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q4X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0OV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q5X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzggPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTBfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTBfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTFfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDExX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDEyX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTJfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTNfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTNfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNAotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxNV9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTVfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNQotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTZfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE2X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNgotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDE3X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE3X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDE4X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MThfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOAotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgQzE4LCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTlfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBDMTgKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE5X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTggPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgID4KLXN0cnVjdCBsaXN0X2MKLSAgICA6IGxpc3QyMF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIEMxOCwgQzE5Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QyMF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvbWFwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9tYXAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OTc0ZjI4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9tYXAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzIzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL21hcC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCA9IG5hLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hLCB0eXBlbmFtZSBUNiA9IG5hLCB0eXBlbmFtZSBUNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUOCA9IG5hLCB0eXBlbmFtZSBUOSA9IG5hLCB0eXBlbmFtZSBUMTAgPSBuYSwgdHlwZW5hbWUgVDExID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxMiA9IG5hLCB0eXBlbmFtZSBUMTMgPSBuYSwgdHlwZW5hbWUgVDE0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxNSA9IG5hLCB0eXBlbmFtZSBUMTYgPSBuYSwgdHlwZW5hbWUgVDE3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxOCA9IG5hLCB0eXBlbmFtZSBUMTkgPSBuYQotICAgID4KLXN0cnVjdCBtYXA7Ci0KLXRlbXBsYXRlPAotICAgICAKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMDwgID4KLXsKLSAgICB0eXBlZGVmIG1hcDA8ICA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwCi0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDE8VDA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxPFQwPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMjwgVDAsVDEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMjwgVDAsVDEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDM8IFQwLFQxLFQyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDM8IFQwLFQxLFQyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwNDwgVDAsVDEsVDIsVDMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwNDwgVDAsVDEsVDIsVDMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwNTwgVDAsVDEsVDIsVDMsVDQgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwNTwgVDAsVDEsVDIsVDMsVDQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMQotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDE1PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxNTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDE2PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxNjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxNzwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTg8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDE5PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTggPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgPgotc3RydWN0IG1hcAotICAgIDogbWFwMjA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMjA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvbWludXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL21pbnVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDU0ZmRhOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvbWludXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL21pbnVzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgbWludXNfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IG1pbnVzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBtaW51c19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IG1pbnVzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IG1pbnVzX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBtaW51c19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IG1pbnVzX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBtaW51cwotICAgIDogbWludXM8IG1pbnVzPCBtaW51czwgbWludXM8IE4xLE4yID4sIE4zPiwgTjQ+LCBONT4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBtaW51cwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zLCB0eXBlbmFtZSBONAotICAgID4KLXN0cnVjdCBtaW51czwgTjEsTjIsTjMsTjQsbmEgPgotCi0gICAgOiBtaW51czwgbWludXM8IG1pbnVzPCBOMSxOMiA+LCBOMz4sIE40PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgbWludXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMwotICAgID4KLXN0cnVjdCBtaW51czwgTjEsTjIsTjMsbmEsbmEgPgotCi0gICAgOiBtaW51czwgbWludXM8IE4xLE4yID4sIE4zPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgbWludXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIG5hLCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IG1pbnVzPCBOMSxOMixuYSxuYSxuYSA+Ci0gICAgOiBtaW51c19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIG1pbnVzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBtaW51c190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBtaW51cwotICAgICAgICAsICggTjEsIE4yLCBuYSwgbmEsIG5hICkKLSAgICAgICAgKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIG1pbnVzKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBtaW51c19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgLSBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvbW9kdWx1cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvbW9kdWx1cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNlODk2OTEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL21vZHVsdXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTAxICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL21vZHVsdXMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBtb2R1bHVzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBtb2R1bHVzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBtb2R1bHVzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgbW9kdWx1c19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBtb2R1bHVzX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBtb2R1bHVzX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgbW9kdWx1c190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgbW9kdWx1cwotCi0gICAgOiBtb2R1bHVzX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgbW9kdWx1c190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgbW9kdWx1c190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBtb2R1bHVzLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBtb2R1bHVzKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBtb2R1bHVzX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlCi0gICAgICAgICAgICAgICAgICAlIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9ub3RfZXF1YWxfdG8uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL25vdF9lcXVhbF90by5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkZTFlMTYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL25vdF9lcXVhbF90by5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9ub3RfZXF1YWxfdG8uaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBub3RfZXF1YWxfdG9faW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IG5vdF9lcXVhbF90b19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgbm90X2VxdWFsX3RvX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3Qgbm90X2VxdWFsX3RvX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IG5vdF9lcXVhbF90b19pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3Qgbm90X2VxdWFsX3RvX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3Qgbm90X2VxdWFsX3RvX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBub3RfZXF1YWxfdG8KLQotICAgIDogbm90X2VxdWFsX3RvX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgbm90X2VxdWFsX3RvX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBub3RfZXF1YWxfdG9fdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgbm90X2VxdWFsX3RvLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBub3RfZXF1YWxfdG8pCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgbm90X2VxdWFsX3RvX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBib29sXzwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSAhPSBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSApID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2Mvb3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL29yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2FlOGVkZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2Mvb3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvb3IuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgYm9vbCBDXywgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQgPgotc3RydWN0IG9yX2ltcGwKLSAgICA6IHRydWVfCi17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQgPgotc3RydWN0IG9yX2ltcGw8IGZhbHNlLFQxLFQyLFQzLFQ0ID4KLSAgICA6IG9yX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVFlQRV9XS05EKFQxKTo6dmFsdWUKLSAgICAgICAgLCBUMiwgVDMsIFQ0Ci0gICAgICAgICwgZmFsc2VfCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBvcl9pbXBsPAotICAgICAgICAgIGZhbHNlCi0gICAgICAgICwgZmFsc2VfLCBmYWxzZV8sIGZhbHNlXywgZmFsc2VfCi0gICAgICAgID4KLSAgICA6IGZhbHNlXwotewotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDIpCi0gICAgLCB0eXBlbmFtZSBUMyA9IGZhbHNlXywgdHlwZW5hbWUgVDQgPSBmYWxzZV8sIHR5cGVuYW1lIFQ1ID0gZmFsc2VfCi0gICAgPgotc3RydWN0IG9yXwotCi0gICAgOiBhdXg6Om9yX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVFlQRV9XS05EKFQxKTo6dmFsdWUKLSAgICAgICAgLCBUMiwgVDMsIFQ0LCBUNQotICAgICAgICA+Ci0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBvcl8KLSAgICAgICAgLCAoIFQxLCBUMiwgVDMsIFQ0LCBUNSkKLSAgICAgICAgKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigKLSAgICAgIDIKLSAgICAsIDUKLSAgICAsIG9yXwotICAgICkKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9wbGFjZWhvbGRlcnMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL3BsYWNlaG9sZGVycy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNhMjhjMDkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL3BsYWNlaG9sZGVycy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDUgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vIENvcHlyaWdodCBQZXRlciBEaW1vdiAyMDAxLTIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvcGxhY2Vob2xkZXJzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPCAtMSA+IF87Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXykKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzsKLX0KLQotfX0KLQotLy8vIGFndXJ0LCAxNy9tYXIvMDI6IG9uZSBtb3JlIHBsYWNlaG9sZGVyIGZvciB0aGUgbGFzdCAnYXBwbHkjJyAKLS8vLyBzcGVjaWFsaXphdGlvbgotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8MT4gXzE7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfMSkKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzE7Ci19Ci0KLX19Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzwyPiBfMjsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF8yKQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfMjsKLX0KLQotfX0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDM+IF8zOwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzMpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol8zOwotfQotCi19fQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8ND4gXzQ7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfNCkKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzQ7Ci19Ci0KLX19Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzw1PiBfNTsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF81KQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfNTsKLX0KLQotfX0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDY+IF82OwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzYpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol82OwotfQotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL3BsdXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL3BsdXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZDhiMmNkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9wbHVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9wbHVzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgcGx1c19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgcGx1c19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgcGx1c19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IHBsdXNfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgcGx1c19pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgcGx1c19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHBsdXNfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IHBsdXMKLSAgICA6IHBsdXM8IHBsdXM8IHBsdXM8IHBsdXM8IE4xLE4yID4sIE4zPiwgTjQ+LCBONT4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBwbHVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMsIHR5cGVuYW1lIE40Ci0gICAgPgotc3RydWN0IHBsdXM8IE4xLE4yLE4zLE40LG5hID4KLQotICAgIDogcGx1czwgcGx1czwgcGx1czwgTjEsTjIgPiwgTjM+LCBOND4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIHBsdXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMwotICAgID4KLXN0cnVjdCBwbHVzPCBOMSxOMixOMyxuYSxuYSA+Ci0KLSAgICA6IHBsdXM8IHBsdXM8IE4xLE4yID4sIE4zPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgcGx1cwotICAgICAgICAsICggTjEsIE4yLCBOMywgbmEsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgcGx1czwgTjEsTjIsbmEsbmEsbmEgPgotICAgIDogcGx1c19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIHBsdXNfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIHBsdXNfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgcGx1cwotICAgICAgICAsICggTjEsIE4yLCBuYSwgbmEsIG5hICkKLSAgICAgICAgKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIHBsdXMpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IHBsdXNfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgICsgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL3F1b3RlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9xdW90ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEwYmIzYTQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL3F1b3RlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9xdW90ZS5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIGJvb2wgaGFzX3R5cGVfID4KLXN0cnVjdCBxdW90ZV9pbXBsCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci1zdHJ1Y3QgcXVvdGVfaW1wbDwgVCxmYWxzZSA+Ci17Ci0gICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFRhZyA9IHZvaWRfCi0gICAgPgotc3RydWN0IHF1b3RlMQotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogcXVvdGVfaW1wbDwKLSAgICAgICAgICAgICAgRjxVMT4KLSAgICAgICAgICAgICwgYXV4OjpoYXNfdHlwZTwgRjxVMT4gPjo6dmFsdWUKLSAgICAgICAgICAgID4KLQotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVGFnID0gdm9pZF8KLSAgICA+Ci1zdHJ1Y3QgcXVvdGUyCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogcXVvdGVfaW1wbDwKLSAgICAgICAgICAgICAgRjwgVTEsVTIgPgotICAgICAgICAgICAgLCBhdXg6Omhhc190eXBlPCBGPCBVMSxVMiA+ID46OnZhbHVlCi0gICAgICAgICAgICA+Ci0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUYWcgPSB2b2lkXwotICAgID4KLXN0cnVjdCBxdW90ZTMKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMyA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogcXVvdGVfaW1wbDwKLSAgICAgICAgICAgICAgRjwgVTEsVTIsVTMgPgotICAgICAgICAgICAgLCBhdXg6Omhhc190eXBlPCBGPCBVMSxVMixVMyA+ID46OnZhbHVlCi0gICAgICAgICAgICA+Ci0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0ID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVGFnID0gdm9pZF8KLSAgICA+Ci1zdHJ1Y3QgcXVvdGU0Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogcXVvdGVfaW1wbDwKLSAgICAgICAgICAgICAgRjwgVTEsVTIsVTMsVTQgPgotICAgICAgICAgICAgLCBhdXg6Omhhc190eXBlPCBGPCBVMSxVMixVMyxVNCA+ID46OnZhbHVlCi0gICAgICAgICAgICA+Ci0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQKLSAgICAgICAgLCB0eXBlbmFtZSBQNQotICAgICAgICA+Ci0gICAgICBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUYWcgPSB2b2lkXwotICAgID4KLXN0cnVjdCBxdW90ZTUKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICAgICAsIHR5cGVuYW1lIFU1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IHF1b3RlX2ltcGw8Ci0gICAgICAgICAgICAgIEY8IFUxLFUyLFUzLFU0LFU1ID4KLSAgICAgICAgICAgICwgYXV4OjpoYXNfdHlwZTwgRjwgVTEsVTIsVTMsVTQsVTUgPiA+Ojp2YWx1ZQotICAgICAgICAgICAgPgotCi0gICAgewotICAgIH07Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvcmV2ZXJzZV9mb2xkX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL3JldmVyc2VfZm9sZF9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2QzYWQ3NS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvcmV2ZXJzZV9mb2xkX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjMxICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vcmV2ZXJzZV9mb2xkX2ltcGwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIGxvbmcgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+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+Ojp0eXBlPjo6dHlwZQotICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiBuZXN0ZWRfc3RlcDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPAotICAgICAgICAgIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBuZXN0ZWRfc3RlcDo6c3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBkZXJlZjxGaXJzdD46OnR5cGUKLSAgICAgICAgPjo6dHlwZSBzdGF0ZTsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX3N0ZXA6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9pbXBsPCAtMSxMYXN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiBMYXN0IGl0ZXJhdG9yOwotfTsKLQotfX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMzYmY1MDguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL3JldmVyc2VfaXRlcl9mb2xkX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjMxICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgbG9uZyBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2ltcGw8IDAsRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiBmd2Rfc3RhdGUwIGJrd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMCBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbDwgMSxGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTAsaXRlcjAgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAKLQotICAgIHR5cGVkZWYgZndkX3N0YXRlMSBia3dkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMSxpdGVyMCA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMSBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbDwgMixGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTAsaXRlcjAgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTEsaXRlcjEgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAKLQotICAgIHR5cGVkZWYgZndkX3N0YXRlMiBia3dkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMixpdGVyMSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUxLGl0ZXIwID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjIgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2ltcGw8IDMsRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUwLGl0ZXIwID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUxLGl0ZXIxID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUyLGl0ZXIyID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTMgYmt3ZF9zdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTMsaXRlcjIgPjo6dHlwZSBia3dkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMixpdGVyMSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUxLGl0ZXIwID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjMgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2ltcGw8IDQsRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUwLGl0ZXIwID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUxLGl0ZXIxID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUyLGl0ZXIyID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUzLGl0ZXIzID46OnR5cGUgZndkX3N0YXRlNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTQgYmt3ZF9zdGF0ZTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTQsaXRlcjMgPjo6dHlwZSBia3dkX3N0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMyxpdGVyMiA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUyLGl0ZXIxID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTEsaXRlcjAgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAKLQotICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyNCBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgbG9uZyBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsCi17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUwLGl0ZXIwID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUxLGl0ZXIxID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUyLGl0ZXIyID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUzLGl0ZXIzID46OnR5cGUgZndkX3N0YXRlNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHJldmVyc2VfaXRlcl9mb2xkX2ltcGw8Ci0gICAgICAgICAgKCAoTiAtIDQpIDwgMCA/IDAgOiBOIC0gNCApCi0gICAgICAgICwgaXRlcjQKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgZndkX3N0YXRlNAotICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiBuZXN0ZWRfY2h1bms7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9jaHVuazo6c3RhdGUgYmt3ZF9zdGF0ZTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTQsaXRlcjMgPjo6dHlwZSBia3dkX3N0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMyxpdGVyMiA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUyLGl0ZXIxID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTEsaXRlcjAgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAKLQotICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfY2h1bms6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsPCAtMSxGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIHJldmVyc2VfaXRlcl9mb2xkX2ltcGw8Ci0gICAgICAgICAgLTEKLSAgICAgICAgLCB0eXBlbmFtZSBtcGw6Om5leHQ8Rmlyc3Q+Ojp0eXBlCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLFN0YXRlLEZpcnN0ID46OnR5cGUKLSAgICAgICAgLCBCYWNrd2FyZE9wCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gbmVzdGVkX3N0ZXA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwKLSAgICAgICAgICBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgbmVzdGVkX3N0ZXA6OnN0YXRlCi0gICAgICAgICwgRmlyc3QKLSAgICAgICAgPjo6dHlwZSBzdGF0ZTsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX3N0ZXA6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2ltcGw8IC0xLExhc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIExhc3QgaXRlcmF0b3I7Ci19OwotCi19fX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9zZXQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL3NldC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRjNGNhMTEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL3NldC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvc2V0LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwID0gbmEsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEsIHR5cGVuYW1lIFQ2ID0gbmEsIHR5cGVuYW1lIFQ3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ4ID0gbmEsIHR5cGVuYW1lIFQ5ID0gbmEsIHR5cGVuYW1lIFQxMCA9IG5hLCB0eXBlbmFtZSBUMTEgPSBuYQotICAgICwgdHlwZW5hbWUgVDEyID0gbmEsIHR5cGVuYW1lIFQxMyA9IG5hLCB0eXBlbmFtZSBUMTQgPSBuYQotICAgICwgdHlwZW5hbWUgVDE1ID0gbmEsIHR5cGVuYW1lIFQxNiA9IG5hLCB0eXBlbmFtZSBUMTcgPSBuYQotICAgICwgdHlwZW5hbWUgVDE4ID0gbmEsIHR5cGVuYW1lIFQxOSA9IG5hCi0gICAgPgotc3RydWN0IHNldDsKLQotdGVtcGxhdGU8Ci0gICAgIAotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+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+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQyMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9zZXRfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2Mvc2V0X2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZWYyZmRlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9zZXRfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjggKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvc2V0X2MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCA9IExPTkdfTUFYLCBsb25nIEMxID0gTE9OR19NQVgsIGxvbmcgQzIgPSBMT05HX01BWAotICAgICwgbG9uZyBDMyA9IExPTkdfTUFYLCBsb25nIEM0ID0gTE9OR19NQVgsIGxvbmcgQzUgPSBMT05HX01BWAotICAgICwgbG9uZyBDNiA9IExPTkdfTUFYLCBsb25nIEM3ID0gTE9OR19NQVgsIGxvbmcgQzggPSBMT05HX01BWAotICAgICwgbG9uZyBDOSA9IExPTkdfTUFYLCBsb25nIEMxMCA9IExPTkdfTUFYLCBsb25nIEMxMSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxMiA9IExPTkdfTUFYLCBsb25nIEMxMyA9IExPTkdfTUFYLCBsb25nIEMxNCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxNSA9IExPTkdfTUFYLCBsb25nIEMxNiA9IExPTkdfTUFYLCBsb25nIEMxNyA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxOCA9IExPTkdfTUFYLCBsb25nIEMxOSA9IExPTkdfTUFYCi0gICAgPgotc3RydWN0IHNldF9jOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICA+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+Ci1zdHJ1Y3Qgc2V0X2MKLSAgICA6IHNldDIwX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgQzE4LCBDMTkKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MjBfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL3NoaWZ0X2xlZnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL3NoaWZ0X2xlZnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOTY0ZmI4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9zaGlmdF9sZWZ0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLyBDb3B5cmlnaHQgSmFhcCBTdXRlciAyMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3NoaWZ0X2xlZnQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBzaGlmdF9sZWZ0X2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBzaGlmdF9sZWZ0X2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBzaGlmdF9sZWZ0X2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3Qgc2hpZnRfbGVmdF9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBzaGlmdF9sZWZ0X2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBzaGlmdF9sZWZ0X2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3Qgc2hpZnRfbGVmdF90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3Qgc2hpZnRfbGVmdAotCi0gICAgOiBzaGlmdF9sZWZ0X2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgc2hpZnRfbGVmdF90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgc2hpZnRfbGVmdF90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBzaGlmdF9sZWZ0LCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBzaGlmdF9sZWZ0KQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBzaGlmdF9sZWZ0X2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTiwgdHlwZW5hbWUgUyA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgTjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgIDw8IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChTKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL3NoaWZ0X3JpZ2h0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy9zaGlmdF9yaWdodC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU3YTVmZTAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL3NoaWZ0X3JpZ2h0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLyBDb3B5cmlnaHQgSmFhcCBTdXRlciAyMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3NoaWZ0X3JpZ2h0LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3Qgc2hpZnRfcmlnaHRfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IHNoaWZ0X3JpZ2h0X2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBzaGlmdF9yaWdodF9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IHNoaWZ0X3JpZ2h0X2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IHNoaWZ0X3JpZ2h0X2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBzaGlmdF9yaWdodF9pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHNoaWZ0X3JpZ2h0X3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBzaGlmdF9yaWdodAotCi0gICAgOiBzaGlmdF9yaWdodF9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIHNoaWZ0X3JpZ2h0X3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBzaGlmdF9yaWdodF90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBzaGlmdF9yaWdodCwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgc2hpZnRfcmlnaHQpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IHNoaWZ0X3JpZ2h0X2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTiwgdHlwZW5hbWUgUyA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgTjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgID4+IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChTKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL3RlbXBsYXRlX2FyaXR5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy90ZW1wbGF0ZV9hcml0eS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMyYmEwYWMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL3RlbXBsYXRlX2FyaXR5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk3ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyAqUHJlcHJvY2Vzc2VkKiB2ZXJzaW9uIG9mIHRoZSBtYWluICJ0ZW1wbGF0ZV9hcml0eS5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgaW50IE4gPiBzdHJ1Y3QgYXJpdHlfdGFnCi17Ci0gICAgdHlwZWRlZiBjaGFyICgmdHlwZSlbTiArIDFdOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgQzEsIGludCBDMiwgaW50IEMzLCBpbnQgQzQsIGludCBDNSwgaW50IEM2Ci0gICAgPgotc3RydWN0IG1heF9hcml0eQotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0KLSAgICAgICAgICAoIEM2ID4gMCA/IEM2IDogKCBDNSA+IDAgPyBDNSA6ICggQzQgPiAwID8gQzQgOiAoIEMzID4gMCA/IEMzIDogKCBDMiA+IDAgPyBDMiA6ICggQzEgPiAwID8gQzEgOiAtMSApICkgKSApICkgKQotICAgICAgICApOwotfTsKLQotYXJpdHlfdGFnPDA+Ojp0eXBlIGFyaXR5X2hlbHBlciguLi4pOwotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFQxCi0gICAgPgotdHlwZW5hbWUgYXJpdHlfdGFnPDE+Ojp0eXBlCi1hcml0eV9oZWxwZXIodHlwZV93cmFwcGVyPCBGPFQxPiA+LCBhcml0eV90YWc8MT4pOwotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci10eXBlbmFtZSBhcml0eV90YWc8Mj46OnR5cGUKLWFyaXR5X2hlbHBlcih0eXBlX3dyYXBwZXI8IEY8IFQxLFQyID4gPiwgYXJpdHlfdGFnPDI+KTsKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMyA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci10eXBlbmFtZSBhcml0eV90YWc8Mz46OnR5cGUKLWFyaXR5X2hlbHBlcih0eXBlX3dyYXBwZXI8IEY8IFQxLFQyLFQzID4gPiwgYXJpdHlfdGFnPDM+KTsKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXR5cGVuYW1lIGFyaXR5X3RhZzw0Pjo6dHlwZQotYXJpdHlfaGVscGVyKHR5cGVfd3JhcHBlcjwgRjwgVDEsVDIsVDMsVDQgPiA+LCBhcml0eV90YWc8ND4pOwotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0Ci0gICAgICAgICwgdHlwZW5hbWUgUDUKLSAgICAgICAgPgotICAgICAgY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1Ci0gICAgPgotdHlwZW5hbWUgYXJpdHlfdGFnPDU+Ojp0eXBlCi1hcml0eV9oZWxwZXIodHlwZV93cmFwcGVyPCBGPCBUMSxUMixUMyxUNCxUNSA+ID4sIGFyaXR5X3RhZzw1Pik7Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQKLSAgICAgICAgLCB0eXBlbmFtZSBQNSwgdHlwZW5hbWUgUDYKLSAgICAgICAgPgotICAgICAgY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1Ci0gICAgLCB0eXBlbmFtZSBUNgotICAgID4KLXR5cGVuYW1lIGFyaXR5X3RhZzw2Pjo6dHlwZQotYXJpdHlfaGVscGVyKHR5cGVfd3JhcHBlcjwgRjwgVDEsVDIsVDMsVDQsVDUsVDYgPiA+LCBhcml0eV90YWc8Nj4pOwotdGVtcGxhdGU8IHR5cGVuYW1lIEYsIGludCBOID4KLXN0cnVjdCB0ZW1wbGF0ZV9hcml0eV9pbXBsCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPQotICAgICAgICAgIHNpemVvZig6Om5kbmJvb3N0OjptcGw6OmF1eDo6YXJpdHlfaGVscGVyKHR5cGVfd3JhcHBlcjxGPigpLCBhcml0eV90YWc8Tj4oKSkpIC0gMQotICAgICAgICApOwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYgPgotc3RydWN0IHRlbXBsYXRlX2FyaXR5Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gKAotICAgICAgICAgIG1heF9hcml0eTwgdGVtcGxhdGVfYXJpdHlfaW1wbDwgRiwxID46OnZhbHVlLCB0ZW1wbGF0ZV9hcml0eV9pbXBsPCBGLDIgPjo6dmFsdWUsIHRlbXBsYXRlX2FyaXR5X2ltcGw8IEYsMyA+Ojp2YWx1ZSwgdGVtcGxhdGVfYXJpdHlfaW1wbDwgRiw0ID46OnZhbHVlLCB0ZW1wbGF0ZV9hcml0eV9pbXBsPCBGLDUgPjo6dmFsdWUsIHRlbXBsYXRlX2FyaXR5X2ltcGw8IEYsNiA+Ojp2YWx1ZSA+Ojp2YWx1ZQotICAgICAgICApKTsKLSAgICB0eXBlZGVmIG1wbDo6aW50Xzx2YWx1ZT4gdHlwZTsKLX07Ci0KLX19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL3RpbWVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy90aW1lcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlhNTVmZWQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL3RpbWVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC90aW1lcy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IHRpbWVzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCB0aW1lc19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgdGltZXNfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCB0aW1lc19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCB0aW1lc19pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgdGltZXNfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCB0aW1lc190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgdGltZXMKLSAgICA6IHRpbWVzPCB0aW1lczwgdGltZXM8IHRpbWVzPCBOMSxOMiA+LCBOMz4sIE40PiwgTjU+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgdGltZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMywgdHlwZW5hbWUgTjQKLSAgICA+Ci1zdHJ1Y3QgdGltZXM8IE4xLE4yLE4zLE40LG5hID4KLQotICAgIDogdGltZXM8IHRpbWVzPCB0aW1lczwgTjEsTjIgPiwgTjM+LCBOND4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIHRpbWVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMKLSAgICA+Ci1zdHJ1Y3QgdGltZXM8IE4xLE4yLE4zLG5hLG5hID4KLQotICAgIDogdGltZXM8IHRpbWVzPCBOMSxOMiA+LCBOMz4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIHRpbWVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBuYSwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCB0aW1lczwgTjEsTjIsbmEsbmEsbmEgPgotICAgIDogdGltZXNfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSB0aW1lc190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgdGltZXNfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgdGltZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgbmEsIG5hLCBuYSApCi0gICAgICAgICkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCB0aW1lcykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdGltZXNfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgICogTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL3VucGFja19hcmdzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy91bnBhY2tfYXJncy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFlYzMxYWYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL3VucGFja19hcmdzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMi0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3VucGFja19hcmdzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGludCBzaXplLCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4KLXN0cnVjdCB1bnBhY2tfYXJnc19pbXBsOwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDwgMCxGLEFyZ3MgPgotICAgIDogYXBwbHkwPAotICAgICAgICAgIEYKLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPgotc3RydWN0IHVucGFja19hcmdzX2ltcGw8IDEsRixBcmdzID4KLSAgICA6IGFwcGx5MTwKLSAgICAgICAgICBGCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywwID46OnR5cGUKLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPgotc3RydWN0IHVucGFja19hcmdzX2ltcGw8IDIsRixBcmdzID4KLSAgICA6IGFwcGx5MjwKLSAgICAgICAgICBGCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywwID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMSA+Ojp0eXBlCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4KLXN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPCAzLEYsQXJncyA+Ci0gICAgOiBhcHBseTM8Ci0gICAgICAgICAgRgotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMCA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDEgPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMiA+Ojp0eXBlCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4KLXN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPCA0LEYsQXJncyA+Ci0gICAgOiBhcHBseTQ8Ci0gICAgICAgICAgRgotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMCA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDEgPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMiA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDMgPjo6dHlwZQotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDwgNSxGLEFyZ3MgPgotICAgIDogYXBwbHk1PAotICAgICAgICAgIEYKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDAgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywxID46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDIgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywzID46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDQgPjo6dHlwZQotICAgICAgICA+Ci17Ci19OwotCi19Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCB1bnBhY2tfYXJncwotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBBcmdzID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBhdXg6OnVucGFja19hcmdzX2ltcGw8IHNpemU8QXJncz46OnZhbHVlLEYsIEFyZ3MgPgotCi0gICAgewotICAgIH07Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX1BBU1NfVEhST1VHSF9MQU1CREFfU1BFQygxLCB1bnBhY2tfYXJncykKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL3ZlY3Rvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvdmVjdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGY2NzU4OS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9nY2MvdmVjdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC92ZWN0b3IuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAgPSBuYSwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYSwgdHlwZW5hbWUgVDYgPSBuYSwgdHlwZW5hbWUgVDcgPSBuYQotICAgICwgdHlwZW5hbWUgVDggPSBuYSwgdHlwZW5hbWUgVDkgPSBuYSwgdHlwZW5hbWUgVDEwID0gbmEsIHR5cGVuYW1lIFQxMSA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTIgPSBuYSwgdHlwZW5hbWUgVDEzID0gbmEsIHR5cGVuYW1lIFQxNCA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTUgPSBuYSwgdHlwZW5hbWUgVDE2ID0gbmEsIHR5cGVuYW1lIFQxNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTggPSBuYSwgdHlwZW5hbWUgVDE5ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yOwotCi10ZW1wbGF0ZTwKLSAgICAgCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjA8ICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IwPCAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMAotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxPFQwPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTxUMD46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjI8IFQwLFQxID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjI8IFQwLFQxID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IzPCBUMCxUMSxUMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IzPCBUMCxUMSxUMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjQ8IFQwLFQxLFQyLFQzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjQ8IFQwLFQxLFQyLFQzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjU8IFQwLFQxLFQyLFQzLFQ0ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjU8IFQwLFQxLFQyLFQzLFQ0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3Rvcjc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcjc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3Rvcjg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcjg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOAotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTU8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNQotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTY8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNgotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTc8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNwotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE4PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOAotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxOTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4ID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgID4KLXN0cnVjdCB2ZWN0b3IKLSAgICA6IHZlY3RvcjIwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjIwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL3ZlY3Rvcl9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL2djYy92ZWN0b3JfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUyZmJkYjQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvZ2NjL3ZlY3Rvcl9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMwOSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC92ZWN0b3JfYy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwID0gTE9OR19NQVgsIGxvbmcgQzEgPSBMT05HX01BWCwgbG9uZyBDMiA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMzID0gTE9OR19NQVgsIGxvbmcgQzQgPSBMT05HX01BWCwgbG9uZyBDNSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM2ID0gTE9OR19NQVgsIGxvbmcgQzcgPSBMT05HX01BWCwgbG9uZyBDOCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM5ID0gTE9OR19NQVgsIGxvbmcgQzEwID0gTE9OR19NQVgsIGxvbmcgQzExID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzEyID0gTE9OR19NQVgsIGxvbmcgQzEzID0gTE9OR19NQVgsIGxvbmcgQzE0ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE1ID0gTE9OR19NQVgsIGxvbmcgQzE2ID0gTE9OR19NQVgsIGxvbmcgQzE3ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE4ID0gTE9OR19NQVgsIGxvbmcgQzE5ID0gTE9OR19NQVgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IwX2M8VD4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjBfYzxUPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjFfYzwgVCwgVChDMCkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMV9jPCBULCBUKEMwKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMl9jPCBULCBUKEMwKSwgVChDMSkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMl9jPCBULCBUKEMwKSwgVChDMSkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjNfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IzX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMikgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjRfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMykgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yNV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjZfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I2X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjdfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNikgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yN19jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yOF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNykgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yOF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNykgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjlfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I5X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEwX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEwX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTFfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMl9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTJfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEzX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEzX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMwotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTRfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTVfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNQotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE2X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE2X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTdfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxN19jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxOF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpLCBUKEMxNykgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMThfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSwgVChDMTcpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBDMTgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE5X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNiksIFQoQzE3KSwgVChDMTgpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE5X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNiksIFQoQzE3KSwgVChDMTgpID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2MKLSAgICA6IHZlY3RvcjIwX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNiksIFQoQzE3KSwgVChDMTgpLCBUKEMxOSkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMjBfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSwgVChDMTcpLCBUKEMxOCksIFQoQzE5KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvYWR2YW5jZV9iYWNrd2FyZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvYWR2YW5jZV9iYWNrd2FyZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3NjEyYTEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2FkdmFuY2VfYmFja3dhcmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTMyICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vYWR2YW5jZV9iYWNrd2FyZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBsb25nIE4gPiBzdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDsKLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkPDA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIGl0ZXIwIHR5cGU7Ci0gICAgfTsKLQotICAgIC8vLyBFVEkgd29ya2Fyb3VuZAotICAgIHRlbXBsYXRlPD4gc3RydWN0IGFwcGx5PGludD4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgaW50IHR5cGU7Ci0gICAgfTsKLQotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ8MT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIGl0ZXIxIHR5cGU7Ci0gICAgfTsKLQotICAgIC8vLyBFVEkgd29ya2Fyb3VuZAotICAgIHRlbXBsYXRlPD4gc3RydWN0IGFwcGx5PGludD4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgaW50IHR5cGU7Ci0gICAgfTsKLQotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiBpdGVyMiB0eXBlOwotICAgIH07Ci0KLSAgICAvLy8gRVRJIHdvcmthcm91bmQKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBhcHBseTxpbnQ+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGludCB0eXBlOwotICAgIH07Ci0KLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkPDM+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIGl0ZXIzIHR5cGU7Ci0gICAgfTsKLQotICAgIC8vLyBFVEkgd29ya2Fyb3VuZAotICAgIHRlbXBsYXRlPD4gc3RydWN0IGFwcGx5PGludD4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgaW50IHR5cGU7Ci0gICAgfTsKLQotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ8ND4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgICAgICB0eXBlZGVmIGl0ZXI0IHR5cGU7Ci0gICAgfTsKLQotICAgIC8vLyBFVEkgd29ya2Fyb3VuZAotICAgIHRlbXBsYXRlPD4gc3RydWN0IGFwcGx5PGludD4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgaW50IHR5cGU7Ci0gICAgfTsKLQotfTsKLQotdGVtcGxhdGU8IGxvbmcgTiA+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgYWR2YW5jZV9iYWNrd2FyZDw0PgotICAgICAgICAgICAgLCBJdGVyYXRvcgotICAgICAgICAgICAgPjo6dHlwZSBjaHVua19yZXN1bHRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGFkdmFuY2VfYmFja3dhcmQ8KAotICAgICAgICAgICAgICAgIChOIC0gNCkgPCAwCi0gICAgICAgICAgICAgICAgICAgID8gMAotICAgICAgICAgICAgICAgICAgICA6IE4gLSA0Ci0gICAgICAgICAgICAgICAgICAgICk+Ci0gICAgICAgICAgICAsIGNodW5rX3Jlc3VsdF8KLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotfX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9hZHZhbmNlX2ZvcndhcmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2FkdmFuY2VfZm9yd2FyZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg4NTIwNzQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2FkdmFuY2VfZm9yd2FyZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzIgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9hZHZhbmNlX2ZvcndhcmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgbG9uZyBOID4gc3RydWN0IGFkdmFuY2VfZm9yd2FyZDsKLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ8MD4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjAgdHlwZTsKLSAgICB9OwotCi0gICAgLy8vIEVUSSB3b3JrYXJvdW5kCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgYXBwbHk8aW50PgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBpbnQgdHlwZTsKLSAgICB9OwotCi19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkPDE+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIGl0ZXIxIHR5cGU7Ci0gICAgfTsKLQotICAgIC8vLyBFVEkgd29ya2Fyb3VuZAotICAgIHRlbXBsYXRlPD4gc3RydWN0IGFwcGx5PGludD4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgaW50IHR5cGU7Ci0gICAgfTsKLQotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZDwyPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiBpdGVyMiB0eXBlOwotICAgIH07Ci0KLSAgICAvLy8gRVRJIHdvcmthcm91bmQKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBhcHBseTxpbnQ+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGludCB0eXBlOwotICAgIH07Ci0KLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjMgdHlwZTsKLSAgICB9OwotCi0gICAgLy8vIEVUSSB3b3JrYXJvdW5kCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgYXBwbHk8aW50PgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBpbnQgdHlwZTsKLSAgICB9OwotCi19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkPDQ+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgICAgICB0eXBlZGVmIGl0ZXI0IHR5cGU7Ci0gICAgfTsKLQotICAgIC8vLyBFVEkgd29ya2Fyb3VuZAotICAgIHRlbXBsYXRlPD4gc3RydWN0IGFwcGx5PGludD4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgaW50IHR5cGU7Ci0gICAgfTsKLQotfTsKLQotdGVtcGxhdGU8IGxvbmcgTiA+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBhZHZhbmNlX2ZvcndhcmQ8ND4KLSAgICAgICAgICAgICwgSXRlcmF0b3IKLSAgICAgICAgICAgID46OnR5cGUgY2h1bmtfcmVzdWx0XzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBhZHZhbmNlX2ZvcndhcmQ8KAotICAgICAgICAgICAgICAgIChOIC0gNCkgPCAwCi0gICAgICAgICAgICAgICAgICAgID8gMAotICAgICAgICAgICAgICAgICAgICA6IE4gLSA0Ci0gICAgICAgICAgICAgICAgICAgICk+Ci0gICAgICAgICAgICAsIGNodW5rX3Jlc3VsdF8KLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotfX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9hbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2FuZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ2OWI5NDAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2FuZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hbmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IGJvb2wgQ18gPiBzdHJ1Y3QgYW5kX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICAgICAgOiBmYWxzZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGFuZF9pbXBsPHRydWU+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgICAgIDogYW5kX2ltcGw8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1RZUEVfV0tORChUMSk6OnZhbHVlCi0gICAgICAgICAgICA+Ojp0ZW1wbGF0ZSByZXN1bHRfPCBUMixUMyxUNCx0cnVlXyA+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYW5kX2ltcGw8dHJ1ZT4KLSAgICA6OnJlc3VsdF88IHRydWVfLHRydWVfLHRydWVfLHRydWVfID4KLSAgICAgICAgOiB0cnVlXwotewotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDIpCi0gICAgLCB0eXBlbmFtZSBUMyA9IHRydWVfLCB0eXBlbmFtZSBUNCA9IHRydWVfLCB0eXBlbmFtZSBUNSA9IHRydWVfCi0gICAgPgotc3RydWN0IGFuZF8KLQotICAgIDogYXV4OjphbmRfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX05FU1RFRF9UWVBFX1dLTkQoVDEpOjp2YWx1ZQotICAgICAgICA+Ojp0ZW1wbGF0ZSByZXN1bHRfPCBUMixUMyxUNCxUNSA+Ci0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBhbmRfCi0gICAgICAgICwgKCBUMSwgVDIsIFQzLCBUNCwgVDUpCi0gICAgICAgICkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoCi0gICAgICAyCi0gICAgLCA1Ci0gICAgLCBhbmRfCi0gICAgKQotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2FwcGx5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9hcHBseS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVkNWM0NzIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2FwcGx5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE2NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hcHBseS5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGFwcGx5MAotCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMDwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAKLSAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICAxCi0gICAgICAgICwgYXBwbHkwCi0gICAgICAgICwgKEYgKQotICAgICAgICApCi19OwotCi0vLy8gd29ya2Fyb3VuZCBmb3IgRVRJIGJ1ZwotdGVtcGxhdGU8Pgotc3RydWN0IGFwcGx5MDxpbnQ+Ci17Ci0gICAgdHlwZWRlZiBpbnQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkxCi0KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgICAsIFQxCi0gICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgMgotICAgICAgICAsIGFwcGx5MQotICAgICAgICAsIChGLCBUMSkKLSAgICAgICAgKQotfTsKLQotLy8vIHdvcmthcm91bmQgZm9yIEVUSSBidWcKLXRlbXBsYXRlPD4KLXN0cnVjdCBhcHBseTE8IGludCxpbnQgPgotewotICAgIHR5cGVkZWYgaW50IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBhcHBseTIKLQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgICwgVDEsIFQyCi0gICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgMwotICAgICAgICAsIGFwcGx5MgotICAgICAgICAsIChGLCBUMSwgVDIpCi0gICAgICAgICkKLX07Ci0KLS8vLyB3b3JrYXJvdW5kIGZvciBFVEkgYnVnCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXBwbHkyPCBpbnQsaW50LGludCA+Ci17Ci0gICAgdHlwZWRlZiBpbnQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBhcHBseTMKLQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDM8Ci0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgICwgVDEsIFQyLCBUMwotICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDQKLSAgICAgICAgLCBhcHBseTMKLSAgICAgICAgLCAoRiwgVDEsIFQyLCBUMykKLSAgICAgICAgKQotfTsKLQotLy8vIHdvcmthcm91bmQgZm9yIEVUSSBidWcKLXRlbXBsYXRlPD4KLXN0cnVjdCBhcHBseTM8IGludCxpbnQsaW50LGludCA+Ci17Ci0gICAgdHlwZWRlZiBpbnQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk0Ci0KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA0PAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgICAsIFQxLCBUMiwgVDMsIFQ0Ci0gICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGFwcGx5NAotICAgICAgICAsIChGLCBUMSwgVDIsIFQzLCBUNCkKLSAgICAgICAgKQotfTsKLQotLy8vIHdvcmthcm91bmQgZm9yIEVUSSBidWcKLXRlbXBsYXRlPD4KLXN0cnVjdCBhcHBseTQ8IGludCxpbnQsaW50LGludCxpbnQgPgotewotICAgIHR5cGVkZWYgaW50IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBhcHBseTUKLQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8Ci0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgICwgVDEsIFQyLCBUMywgVDQsIFQ1Ci0gICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNgotICAgICAgICAsIGFwcGx5NQotICAgICAgICAsIChGLCBUMSwgVDIsIFQzLCBUNCwgVDUpCi0gICAgICAgICkKLX07Ci0KLS8vLyB3b3JrYXJvdW5kIGZvciBFVEkgYnVnCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXBwbHk1PCBpbnQsaW50LGludCxpbnQsaW50LGludCA+Ci17Ci0gICAgdHlwZWRlZiBpbnQgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9hcHBseV9md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2FwcGx5X2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyYTlhNzYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2FwcGx5X2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hcHBseV9md2QuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseTA7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkxOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBhcHBseTI7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBhcHBseTM7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk0OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBhcHBseTU7Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9hcHBseV93cmFwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9hcHBseV93cmFwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzkxNTdkMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvYXBwbHlfd3JhcC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNDcgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXBwbHlfd3JhcC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEY+Ci1zdHJ1Y3QgbXN2Y19hcHBseTAKLXsKLSAgICB0ZW1wbGF0ZTwgYm9vbCA+IHN0cnVjdCBmXyA6IEYge307Ci0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgZl88dHJ1ZT4KLSAgICB7Ci0gICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQICA9IGludCA+IHN0cnVjdCBhcHBseQotICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIGludCB0eXBlOwotICAgICAgICB9OwotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCAgPSBpbnQgPiBzdHJ1Y3QgcmVzdWx0XwotICAgICAgICA6IGZfPCBhdXg6Om1zdmNfbmV2ZXJfdHJ1ZTxGPjo6dmFsdWUgPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSBhcHBseTw+Ci0gICAgewotICAgIH07Ci0KLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseV93cmFwMAotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXN2Y19hcHBseTA8Rj46OnRlbXBsYXRlIHJlc3VsdF88Ci0gICAgICAgICAKLSAgICAgICAgPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHdvcmthcm91bmQgZm9yIEVUSSBidWcKLXRlbXBsYXRlPD4KLXN0cnVjdCBhcHBseV93cmFwMDxpbnQ+Ci17Ci0gICAgdHlwZWRlZiBpbnQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGPgotc3RydWN0IG1zdmNfYXBwbHkxCi17Ci0gICAgdGVtcGxhdGU8IGJvb2wgPiBzdHJ1Y3QgZl8gOiBGIHt9OwotICAgIHRlbXBsYXRlPD4gc3RydWN0IGZfPHRydWU+Ci0gICAgewotICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiBpbnQgdHlwZTsKLSAgICAgICAgfTsKLSAgICB9OwotCi0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQxID4gc3RydWN0IHJlc3VsdF8KLSAgICAgICAgOiBmXzwgYXV4Ojptc3ZjX25ldmVyX3RydWU8Rj46OnZhbHVlID4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgYXBwbHk8VDE+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXAxCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtc3ZjX2FwcGx5MTxGPjo6dGVtcGxhdGUgcmVzdWx0XzwKLSAgICAgICAgICBUMQotICAgICAgICA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLy8gd29ya2Fyb3VuZCBmb3IgRVRJIGJ1ZwotdGVtcGxhdGU8Pgotc3RydWN0IGFwcGx5X3dyYXAxPCBpbnQsaW50ID4KLXsKLSAgICB0eXBlZGVmIGludCB0eXBlOwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEY+Ci1zdHJ1Y3QgbXN2Y19hcHBseTIKLXsKLSAgICB0ZW1wbGF0ZTwgYm9vbCA+IHN0cnVjdCBmXyA6IEYge307Ci0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgZl88dHJ1ZT4KLSAgICB7Ci0gICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiBpbnQgdHlwZTsKLSAgICAgICAgfTsKLSAgICB9OwotCi0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiA+IHN0cnVjdCByZXN1bHRfCi0gICAgICAgIDogZl88IGF1eDo6bXN2Y19uZXZlcl90cnVlPEY+Ojp2YWx1ZSA+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIGFwcGx5PCBUMSxUMiA+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBhcHBseV93cmFwMgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXN2Y19hcHBseTI8Rj46OnRlbXBsYXRlIHJlc3VsdF88Ci0gICAgICAgICAgVDEsIFQyCi0gICAgICAgID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyB3b3JrYXJvdW5kIGZvciBFVEkgYnVnCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDI8IGludCxpbnQsaW50ID4KLXsKLSAgICB0eXBlZGVmIGludCB0eXBlOwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEY+Ci1zdHJ1Y3QgbXN2Y19hcHBseTMKLXsKLSAgICB0ZW1wbGF0ZTwgYm9vbCA+IHN0cnVjdCBmXyA6IEYge307Ci0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgZl88dHJ1ZT4KLSAgICB7Ci0gICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgaW50IHR5cGU7Ci0gICAgICAgIH07Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzID4gc3RydWN0IHJlc3VsdF8KLSAgICAgICAgOiBmXzwgYXV4Ojptc3ZjX25ldmVyX3RydWU8Rj46OnZhbHVlID4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgYXBwbHk8IFQxLFQyLFQzID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBhcHBseV93cmFwMwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXN2Y19hcHBseTM8Rj46OnRlbXBsYXRlIHJlc3VsdF88Ci0gICAgICAgICAgVDEsIFQyLCBUMwotICAgICAgICA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLy8gd29ya2Fyb3VuZCBmb3IgRVRJIGJ1ZwotdGVtcGxhdGU8Pgotc3RydWN0IGFwcGx5X3dyYXAzPCBpbnQsaW50LGludCxpbnQgPgotewotICAgIHR5cGVkZWYgaW50IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRj4KLXN0cnVjdCBtc3ZjX2FwcGx5NAotewotICAgIHRlbXBsYXRlPCBib29sID4gc3RydWN0IGZfIDogRiB7fTsKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBmXzx0cnVlPgotICAgIHsKLSAgICAgICAgdGVtcGxhdGU8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0Ci0gICAgICAgICAgICA+Ci0gICAgICAgIHN0cnVjdCBhcHBseQotICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIGludCB0eXBlOwotICAgICAgICB9OwotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICAgICAgOiBmXzwgYXV4Ojptc3ZjX25ldmVyX3RydWU8Rj46OnZhbHVlID4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgYXBwbHk8IFQxLFQyLFQzLFQ0ID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDQKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1zdmNfYXBwbHk0PEY+Ojp0ZW1wbGF0ZSByZXN1bHRfPAotICAgICAgICAgIFQxLCBUMiwgVDMsIFQ0Ci0gICAgICAgID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyB3b3JrYXJvdW5kIGZvciBFVEkgYnVnCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDQ8IGludCxpbnQsaW50LGludCxpbnQgPgotewotICAgIHR5cGVkZWYgaW50IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRj4KLXN0cnVjdCBtc3ZjX2FwcGx5NQotewotICAgIHRlbXBsYXRlPCBib29sID4gc3RydWN0IGZfIDogRiB7fTsKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBmXzx0cnVlPgotICAgIHsKLSAgICAgICAgdGVtcGxhdGU8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFA1Ci0gICAgICAgICAgICA+Ci0gICAgICAgIHN0cnVjdCBhcHBseQotICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIGludCB0eXBlOwotICAgICAgICB9OwotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgICAgICA6IGZfPCBhdXg6Om1zdmNfbmV2ZXJfdHJ1ZTxGPjo6dmFsdWUgPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSBhcHBseTwgVDEsVDIsVDMsVDQsVDUgPgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDUKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1zdmNfYXBwbHk1PEY+Ojp0ZW1wbGF0ZSByZXN1bHRfPAotICAgICAgICAgIFQxLCBUMiwgVDMsIFQ0LCBUNQotICAgICAgICA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLy8gd29ya2Fyb3VuZCBmb3IgRVRJIGJ1ZwotdGVtcGxhdGU8Pgotc3RydWN0IGFwcGx5X3dyYXA1PCBpbnQsaW50LGludCxpbnQsaW50LGludCA+Ci17Ci0gICAgdHlwZWRlZiBpbnQgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9hcmcuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2FyZy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE1NDQ3NmEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2FyZy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgUGV0ZXIgRGltb3YgMjAwMS0yMDAyCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXJnLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXRlbXBsYXRlPD4gc3RydWN0IGFyZzwgLTEgPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IC0xKTsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTEgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8MT4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAxKTsKLSAgICB0eXBlZGVmIGFyZzwyPiBuZXh0OwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBVMSB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEodHlwZSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGFyZzwyPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDIpOwotICAgIHR5cGVkZWYgYXJnPDM+IG5leHQ7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdGFnKQotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHR5cGUpCi0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFUyIHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPDM+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMyk7Ci0gICAgdHlwZWRlZiBhcmc8ND4gbmV4dDsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTMgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8ND4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSA0KTsKLSAgICB0eXBlZGVmIGFyZzw1PiBuZXh0OwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBVNCB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEodHlwZSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGFyZzw1PgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDUpOwotICAgIHR5cGVkZWYgYXJnPDY+IG5leHQ7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdGFnKQotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHR5cGUpCi0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFU1IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OT05UWVBFX0FSSVRZX1NQRUMoMSxpbnQsIGFyZykKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9iYXNpY19iaW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9iYXNpY19iaW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODQ5NGEyNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvYmFzaWNfYmluZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjggKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgUGV0ZXIgRGltb3YgMjAwMQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vYmFzaWNfYmluZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgYm9vbCA+Ci1zdHJ1Y3QgcmVzb2x2ZV9hcmdfaW1wbAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMKLSAgICAgICAgLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHJlc29sdmVfYXJnX2ltcGw8dHJ1ZT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzCi0gICAgICAgICwgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgLCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgaXNfYmluZF90ZW1wbGF0ZTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZwotICAgIDogcmVzb2x2ZV9hcmdfaW1wbDwgaXNfYmluZF90ZW1wbGF0ZTxUPjo6dmFsdWUgPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBULFUxLFUyLFUzLFU0LFU1ID4KLXsKLX07Ci0KLXRlbXBsYXRlPCBpbnQgYXJpdHlfID4gc3RydWN0IGJpbmRfY2hvb3NlcjsKLQotYXV4Ojpub190YWcgaXNfYmluZF9oZWxwZXIoLi4uKTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gYXV4Ojpub190YWcgaXNfYmluZF9oZWxwZXIocHJvdGVjdDxUPiopOwotCi10ZW1wbGF0ZTwgaW50IE4gPgotYXV4Ojp5ZXNfdGFnIGlzX2JpbmRfaGVscGVyKGFyZzxOPiopOwotCi10ZW1wbGF0ZTwgYm9vbCBpc19yZWZfICA9IHRydWUgPgotc3RydWN0IGlzX2JpbmRfdGVtcGxhdGVfaW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSAgPSBmYWxzZSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpc19iaW5kX3RlbXBsYXRlX2ltcGw8ZmFsc2U+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICAgICAgICAgc2l6ZW9mKGF1eDo6aXNfYmluZF9oZWxwZXIoc3RhdGljX2Nhc3Q8VCo+KDApKSkKLSAgICAgICAgICAgICAgICA9PSBzaXplb2YoYXV4Ojp5ZXNfdGFnKQotICAgICAgICAgICAgKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgaXNfYmluZF90ZW1wbGF0ZQotICAgIDogaXNfYmluZF90ZW1wbGF0ZV9pbXBsPCA6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX3JlZmVyZW5jZV9pbXBsPFQ+Ojp2YWx1ZSA+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxUPgotewotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBiaW5kMAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBGLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAwPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1hdXg6Onllc190YWcKLWlzX2JpbmRfaGVscGVyKGJpbmQwPEY+Kik7Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoMSwgYmluZDApCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMSwgYmluZDApCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYmluZDEKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgRixVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1hdXg6Onllc190YWcKLWlzX2JpbmRfaGVscGVyKGJpbmQxPCBGLFQxID4qKTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygyLCBiaW5kMSkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygyLCBiaW5kMSkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYmluZDIKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgRixVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAyPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1hdXg6Onllc190YWcKLWlzX2JpbmRfaGVscGVyKGJpbmQyPCBGLFQxLFQyID4qKTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygzLCBiaW5kMikKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygzLCBiaW5kMikKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGJpbmQzCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IEYsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQxLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDM8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotYXV4Ojp5ZXNfdGFnCi1pc19iaW5kX2hlbHBlcihiaW5kMzwgRixUMSxUMixUMyA+Kik7Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNCwgYmluZDMpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNCwgYmluZDMpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYmluZDQKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgRixVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDQsVTEsVTIsVTMsVTQsVTUgPiB0NDsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDQ8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDQ6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLWF1eDo6eWVzX3RhZwotaXNfYmluZF9oZWxwZXIoYmluZDQ8IEYsVDEsVDIsVDMsVDQgPiopOwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDUsIGJpbmQ0KQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDUsIGJpbmQ0KQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBiaW5kNQotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBGLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUNCxVMSxVMixVMyxVNCxVNSA+IHQ0OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDUsVTEsVTIsVTMsVTQsVTUgPiB0NTsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDQ6OnR5cGUsIHR5cGVuYW1lIHQ1Ojp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotYXV4Ojp5ZXNfdGFnCi1pc19iaW5kX2hlbHBlcihiaW5kNTwgRixUMSxUMixUMyxUNCxUNSA+Kik7Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNiwgYmluZDUpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNiwgYmluZDUpCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvYmluZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvYmluZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyYTJiMjcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2JpbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDMyICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IFBldGVyIERpbW92IDIwMDEKLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9iaW5kLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCBib29sID4KLXN0cnVjdCByZXNvbHZlX2FyZ19pbXBsCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMwotICAgICAgICAsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcmVzb2x2ZV9hcmdfaW1wbDx0cnVlPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMKLSAgICAgICAgLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAsIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBpc19iaW5kX3RlbXBsYXRlOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgLCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnCi0gICAgOiByZXNvbHZlX2FyZ19pbXBsPCBpc19iaW5kX3RlbXBsYXRlPFQ+Ojp2YWx1ZSA+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IFQsVTEsVTIsVTMsVTQsVTUgPgotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotc3RydWN0IHJlcGxhY2VfdW5uYW1lZF9hcmdfaW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBBcmcgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBBcmcgbmV4dDsKLSAgICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCByZXBsYWNlX3VubmFtZWRfYXJnX2ltcGw8IGFyZzwgLTEgPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEFyZyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8QXJnPjo6dHlwZSBuZXh0OwotICAgICAgICB0eXBlZGVmIEFyZyB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgQXJnID4KLXN0cnVjdCByZXBsYWNlX3VubmFtZWRfYXJnCi0gICAgOiByZXBsYWNlX3VubmFtZWRfYXJnX2ltcGw8VD46OnRlbXBsYXRlIHJlc3VsdF88QXJnPgotewotfTsKLQotdGVtcGxhdGU8IGludCBhcml0eV8gPiBzdHJ1Y3QgYmluZF9jaG9vc2VyOwotCi1hdXg6Om5vX3RhZyBpc19iaW5kX2hlbHBlciguLi4pOwotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBhdXg6Om5vX3RhZyBpc19iaW5kX2hlbHBlcihwcm90ZWN0PFQ+Kik7Ci0KLXRlbXBsYXRlPCBpbnQgTiA+Ci1hdXg6Onllc190YWcgaXNfYmluZF9oZWxwZXIoYXJnPE4+Kik7Ci0KLXRlbXBsYXRlPCBib29sIGlzX3JlZl8gID0gdHJ1ZSA+Ci1zdHJ1Y3QgaXNfYmluZF90ZW1wbGF0ZV9pbXBsCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlICA9IGZhbHNlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGlzX2JpbmRfdGVtcGxhdGVfaW1wbDxmYWxzZT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPQotICAgICAgICAgICAgICBzaXplb2YoYXV4Ojppc19iaW5kX2hlbHBlcihzdGF0aWNfY2FzdDxUKj4oMCkpKQotICAgICAgICAgICAgICAgID09IHNpemVvZihhdXg6Onllc190YWcpCi0gICAgICAgICAgICApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBpc19iaW5kX3RlbXBsYXRlCi0gICAgOiBpc19iaW5kX3RlbXBsYXRlX2ltcGw8IDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfcmVmZXJlbmNlX2ltcGw8VD46OnZhbHVlID4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFQ+Ci17Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGJpbmQwCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IEYsIG1wbDo6YXJnPDE+ID4gcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6OnR5cGUgYTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6Om5leHQgbjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMCxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICAvLy8KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAwPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1hdXg6Onllc190YWcKLWlzX2JpbmRfaGVscGVyKGJpbmQwPEY+Kik7Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoMSwgYmluZDApCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMSwgYmluZDApCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYmluZDEKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDEsbjEgPiByMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6dHlwZSBhMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6bmV4dCBuMjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGExLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1hdXg6Onllc190YWcKLWlzX2JpbmRfaGVscGVyKGJpbmQxPCBGLFQxID4qKTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygyLCBiaW5kMSkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygyLCBiaW5kMSkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYmluZDIKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDEsbjEgPiByMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6dHlwZSBhMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6bmV4dCBuMjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGExLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDIsbjIgPiByMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6dHlwZSBhMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6bmV4dCBuMzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLWF1eDo6eWVzX3RhZwotaXNfYmluZF9oZWxwZXIoYmluZDI8IEYsVDEsVDIgPiopOwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDMsIGJpbmQyKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDMsIGJpbmQyKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYmluZDMKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDEsbjEgPiByMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6dHlwZSBhMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6bmV4dCBuMjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGExLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDIsbjIgPiByMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6dHlwZSBhMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6bmV4dCBuMzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDMsbjMgPiByMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6dHlwZSBhMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6bmV4dCBuNDsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDM8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotYXV4Ojp5ZXNfdGFnCi1pc19iaW5kX2hlbHBlcihiaW5kMzwgRixUMSxUMixUMyA+Kik7Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNCwgYmluZDMpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNCwgYmluZDMpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYmluZDQKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDEsbjEgPiByMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6dHlwZSBhMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6bmV4dCBuMjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGExLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDIsbjIgPiByMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6dHlwZSBhMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6bmV4dCBuMzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDMsbjMgPiByMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6dHlwZSBhMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6bmV4dCBuNDsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDQsbjQgPiByNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByNDo6dHlwZSBhNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByNDo6bmV4dCBuNTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGE0LFUxLFUyLFUzLFU0LFU1ID4gdDQ7Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDQ8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDQ6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLWF1eDo6eWVzX3RhZwotaXNfYmluZF9oZWxwZXIoYmluZDQ8IEYsVDEsVDIsVDMsVDQgPiopOwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDUsIGJpbmQ0KQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDUsIGJpbmQ0KQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBiaW5kNQotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMixuMiA+IHIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjp0eXBlIGEyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjpuZXh0IG4zOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMyxuMyA+IHIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjp0eXBlIGEzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjpuZXh0IG40OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUNCxuNCA+IHI0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI0Ojp0eXBlIGE0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI0OjpuZXh0IG41OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTQsVTEsVTIsVTMsVTQsVTUgPiB0NDsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUNSxuNSA+IHI1OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI1Ojp0eXBlIGE1OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI1OjpuZXh0IG42OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTUsVTEsVTIsVTMsVTQsVTUgPiB0NTsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlLCB0eXBlbmFtZSB0Mzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSB0NDo6dHlwZSwgdHlwZW5hbWUgdDU6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1hdXg6Onllc190YWcKLWlzX2JpbmRfaGVscGVyKGJpbmQ1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4qKTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg2LCBiaW5kNSkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg2LCBiaW5kNSkKLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9iaW5kX2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvYmluZF9md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYmQxYjZkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9iaW5kX2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9iaW5kX2Z3ZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGJpbmQwOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGJpbmQxOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBiaW5kMjsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGJpbmQzOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGJpbmQ0OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBiaW5kNTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2JpdGFuZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvYml0YW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjNlYjE0Ny4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvYml0YW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0OSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8gQ29weXJpZ2h0IEphYXAgU3V0ZXIgMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9iaXRhbmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzFfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcxKTo6dmFsdWUKLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMl8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzIpOjp2YWx1ZQotICAgID4KLXN0cnVjdCBiaXRhbmRfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIHRhZzFfID4gdGFnMl8gKQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBiaXRhbmRfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGJpdGFuZF9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGJpdGFuZF9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYml0YW5kX2ltcGw8IG5hLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBiaXRhbmRfaW1wbDwgaW50ZWdyYWxfY190YWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGJpdGFuZF90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgYml0YW5kXzI7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IGJpdGFuZF8KLQotICAgIDogaWZfPAotCi0gICAgICAgICAgaXNfbmE8TjM+Ci0gICAgICAgICwgYml0YW5kXzI8IE4xLE4yID4KLSAgICAgICAgLCBiaXRhbmRfPAotICAgICAgICAgICAgICBiaXRhbmRfMjwgTjEsTjIgPgotICAgICAgICAgICAgLCBOMywgTjQsIE41Ci0gICAgICAgICAgICA+Ci0gICAgICAgID46OnR5cGUKLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdGFuZF8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEKLSAgICAsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IGJpdGFuZF8yCi0gICAgOiBhdXg6Om1zdmNfZXRpX2Jhc2U8IHR5cGVuYW1lIGFwcGx5X3dyYXAyPAotICAgICAgICAgIGJpdGFuZF9pbXBsPAotICAgICAgICAgICAgICB0eXBlbmFtZSBiaXRhbmRfdGFnPE4xPjo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBiaXRhbmRfdGFnPE4yPjo6dHlwZQotICAgICAgICAgICAgPgotICAgICAgICAsIE4xCi0gICAgICAgICwgTjIKLSAgICAgICAgPjo6dHlwZSA+Ojp0eXBlCi0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGJpdGFuZF8yLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBiaXRhbmRfKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgVCBuMSwgVCBuMiA+Ci1zdHJ1Y3QgYml0YW5kX3drbmQKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoVCwgdmFsdWUgID0gKG4xICYgbjIpKTsKLSAgICB0eXBlZGVmIGludGVncmFsX2M8IFQsdmFsdWUgPiB0eXBlOwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYml0YW5kX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogYXV4OjpiaXRhbmRfd2tuZDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgTjE6OnZhbHVlCi0gICAgICAgICAgICAsIE4yOjp2YWx1ZQotICAgICAgICAgICAgPjo6dHlwZQotCi0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2JpdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9iaXRvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYzZjVhMDAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2JpdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0OSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8gQ29weXJpZ2h0IEphYXAgU3V0ZXIgMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9iaXRvci5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0KLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMV8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzEpOjp2YWx1ZQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcyXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMik6OnZhbHVlCi0gICAgPgotc3RydWN0IGJpdG9yX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCB0YWcxXyA+IHRhZzJfICkKLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgYml0b3JfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGJpdG9yX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgYml0b3JfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGJpdG9yX2ltcGw8IG5hLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBiaXRvcl9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYml0b3JfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGJpdG9yXzI7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IGJpdG9yXwotCi0gICAgOiBpZl88Ci0KLSAgICAgICAgICBpc19uYTxOMz4KLSAgICAgICAgLCBiaXRvcl8yPCBOMSxOMiA+Ci0gICAgICAgICwgYml0b3JfPAotICAgICAgICAgICAgICBiaXRvcl8yPCBOMSxOMiA+Ci0gICAgICAgICAgICAsIE4zLCBONCwgTjUKLSAgICAgICAgICAgID4KLSAgICAgICAgPjo6dHlwZQotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xCi0gICAgLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBiaXRvcl8yCi0gICAgOiBhdXg6Om1zdmNfZXRpX2Jhc2U8IHR5cGVuYW1lIGFwcGx5X3dyYXAyPAotICAgICAgICAgIGJpdG9yX2ltcGw8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGJpdG9yX3RhZzxOMT46OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgYml0b3JfdGFnPE4yPjo6dHlwZQotICAgICAgICAgICAgPgotICAgICAgICAsIE4xCi0gICAgICAgICwgTjIKLSAgICAgICAgPjo6dHlwZSA+Ojp0eXBlCi0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGJpdG9yXzIsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIGJpdG9yXykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIFQgbjEsIFQgbjIgPgotc3RydWN0IGJpdG9yX3drbmQKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoVCwgdmFsdWUgID0gKG4xIHwgbjIpKTsKLSAgICB0eXBlZGVmIGludGVncmFsX2M8IFQsdmFsdWUgPiB0eXBlOwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYml0b3JfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBhdXg6OmJpdG9yX3drbmQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsIE4xOjp2YWx1ZQotICAgICAgICAgICAgLCBOMjo6dmFsdWUKLSAgICAgICAgICAgID46OnR5cGUKLQotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9iaXR4b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2JpdHhvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA4Y2Y3YzUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2JpdHhvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vIENvcHlyaWdodCBKYWFwIFN1dGVyIDIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYml0eG9yLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcxXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMSk6OnZhbHVlCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzJfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcyKTo6dmFsdWUKLSAgICA+Ci1zdHJ1Y3QgYml0eG9yX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCB0YWcxXyA+IHRhZzJfICkKLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgYml0eG9yX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBiaXR4b3JfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBiaXR4b3JfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGJpdHhvcl9pbXBsPCBuYSxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYml0eG9yX2ltcGw8IGludGVncmFsX2NfdGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBiaXR4b3JfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGJpdHhvcl8yOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBiaXR4b3JfCi0KLSAgICA6IGlmXzwKLQotICAgICAgICAgIGlzX25hPE4zPgotICAgICAgICAsIGJpdHhvcl8yPCBOMSxOMiA+Ci0gICAgICAgICwgYml0eG9yXzwKLSAgICAgICAgICAgICAgYml0eG9yXzI8IE4xLE4yID4KLSAgICAgICAgICAgICwgTjMsIE40LCBONQotICAgICAgICAgICAgPgotICAgICAgICA+Ojp0eXBlCi0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXR4b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xCi0gICAgLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBiaXR4b3JfMgotICAgIDogYXV4Ojptc3ZjX2V0aV9iYXNlPCB0eXBlbmFtZSBhcHBseV93cmFwMjwKLSAgICAgICAgICBiaXR4b3JfaW1wbDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYml0eG9yX3RhZzxOMT46OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgYml0eG9yX3RhZzxOMj46OnR5cGUKLSAgICAgICAgICAgID4KLSAgICAgICAgLCBOMQotICAgICAgICAsIE4yCi0gICAgICAgID46OnR5cGUgPjo6dHlwZQotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBiaXR4b3JfMiwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgYml0eG9yXykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIFQgbjEsIFQgbjIgPgotc3RydWN0IGJpdHhvcl93a25kCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKFQsIHZhbHVlICA9IChuMSBeIG4yKSk7Ci0gICAgdHlwZWRlZiBpbnRlZ3JhbF9jPCBULHZhbHVlID4gdHlwZTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGJpdHhvcl9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGF1eDo6Yml0eG9yX3drbmQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsIE4xOjp2YWx1ZQotICAgICAgICAgICAgLCBOMjo6dmFsdWUKLSAgICAgICAgICAgID46OnR5cGUKLQotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9kZXF1ZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvZGVxdWUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZDk3ZDgyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9kZXF1ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NTYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvZGVxdWUuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IGludCBOID4KLXN0cnVjdCBkZXF1ZV9jaG9vc2VyOwotCi19Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3NlcjwwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjA8Ci0gICAgICAgICAgICAgCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3NlcjwxPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE8Ci0gICAgICAgICAgICAgIFQwCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3NlcjwyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjI8Ci0gICAgICAgICAgICAgIFQwLCBUMQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGRlcXVlX2Nob29zZXI8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IzPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3Nlcjw0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjQ8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3Nlcjw1PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjU8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGRlcXVlX2Nob29zZXI8Nj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I2PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3Nlcjw3PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcjc8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3Nlcjw4PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcjg8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGRlcXVlX2Nob29zZXI8OT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I5PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3NlcjwxMD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkZXF1ZV9jaG9vc2VyPDExPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjExPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3NlcjwxMj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMjwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3NlcjwxMz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMzwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkZXF1ZV9jaG9vc2VyPDE0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE0PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3NlcjwxNT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3NlcjwxNj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNjwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkZXF1ZV9jaG9vc2VyPDE3PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE3PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3NlcjwxOD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxODwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3NlcjwxOT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxOTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkZXF1ZV9jaG9vc2VyPDIwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjIwPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci1zdHJ1Y3QgaXNfZGVxdWVfYXJnCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlICA9IHRydWUpOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGlzX2RlcXVlX2FyZzxuYT4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gZmFsc2UpOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUKLSAgICAsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAKLSAgICAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1Ci0gICAgLCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMAotICAgID4KLXN0cnVjdCBkZXF1ZV9jb3VudF9hcmdzCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPQotICAgICAgICAgIGlzX2RlcXVlX2FyZzxUMT46OnZhbHVlICsgaXNfZGVxdWVfYXJnPFQyPjo6dmFsdWUgCi0gICAgICAgICsgaXNfZGVxdWVfYXJnPFQzPjo6dmFsdWUgKyBpc19kZXF1ZV9hcmc8VDQ+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19kZXF1ZV9hcmc8VDU+Ojp2YWx1ZSArIGlzX2RlcXVlX2FyZzxUNj46OnZhbHVlIAotICAgICAgICArIGlzX2RlcXVlX2FyZzxUNz46OnZhbHVlICsgaXNfZGVxdWVfYXJnPFQ4Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfZGVxdWVfYXJnPFQ5Pjo6dmFsdWUgKyBpc19kZXF1ZV9hcmc8VDEwPjo6dmFsdWUgCi0gICAgICAgICsgaXNfZGVxdWVfYXJnPFQxMT46OnZhbHVlICsgaXNfZGVxdWVfYXJnPFQxMj46OnZhbHVlIAotICAgICAgICArIGlzX2RlcXVlX2FyZzxUMTM+Ojp2YWx1ZSArIGlzX2RlcXVlX2FyZzxUMTQ+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19kZXF1ZV9hcmc8VDE1Pjo6dmFsdWUgKyBpc19kZXF1ZV9hcmc8VDE2Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfZGVxdWVfYXJnPFQxNz46OnZhbHVlICsgaXNfZGVxdWVfYXJnPFQxOD46OnZhbHVlIAotICAgICAgICArIGlzX2RlcXVlX2FyZzxUMTk+Ojp2YWx1ZSArIGlzX2RlcXVlX2FyZzxUMjA+Ojp2YWx1ZQotICAgICAgICApOwotCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICA+Ci1zdHJ1Y3QgZGVxdWVfaW1wbAotewotICAgIHR5cGVkZWYgYXV4OjpkZXF1ZV9jb3VudF9hcmdzPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPiBhcmdfbnVtXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpkZXF1ZV9jaG9vc2VyPCBhcmdfbnVtXzo6dmFsdWUgPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCA9IG5hLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hLCB0eXBlbmFtZSBUNiA9IG5hLCB0eXBlbmFtZSBUNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUOCA9IG5hLCB0eXBlbmFtZSBUOSA9IG5hLCB0eXBlbmFtZSBUMTAgPSBuYSwgdHlwZW5hbWUgVDExID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxMiA9IG5hLCB0eXBlbmFtZSBUMTMgPSBuYSwgdHlwZW5hbWUgVDE0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxNSA9IG5hLCB0eXBlbmFtZSBUMTYgPSBuYSwgdHlwZW5hbWUgVDE3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxOCA9IG5hLCB0eXBlbmFtZSBUMTkgPSBuYQotICAgID4KLXN0cnVjdCBkZXF1ZQotICAgIDogYXV4OjpkZXF1ZV9pbXBsPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPjo6dHlwZQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpkZXF1ZV9pbXBsPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2RpdmlkZXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2RpdmlkZXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNjYzMWFkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9kaXZpZGVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0OCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9kaXZpZGVzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcxXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMSk6OnZhbHVlCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzJfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcyKTo6dmFsdWUKLSAgICA+Ci1zdHJ1Y3QgZGl2aWRlc19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggdGFnMV8gPiB0YWcyXyApCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGRpdmlkZXNfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGRpdmlkZXNfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBkaXZpZGVzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBkaXZpZGVzX2ltcGw8IG5hLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBkaXZpZGVzX2ltcGw8IGludGVncmFsX2NfdGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBkaXZpZGVzX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBkaXZpZGVzMjsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgZGl2aWRlcwotCi0gICAgOiBpZl88Ci0KLSAgICAgICAgICBpc19uYTxOMz4KLSAgICAgICAgLCBkaXZpZGVzMjwgTjEsTjIgPgotICAgICAgICAsIGRpdmlkZXM8Ci0gICAgICAgICAgICAgIGRpdmlkZXMyPCBOMSxOMiA+Ci0gICAgICAgICAgICAsIE4zLCBONCwgTjUKLSAgICAgICAgICAgID4KLSAgICAgICAgPjo6dHlwZQotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgZGl2aWRlcwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMQotICAgICwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgZGl2aWRlczIKLSAgICA6IGF1eDo6bXN2Y19ldGlfYmFzZTwgdHlwZW5hbWUgYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgZGl2aWRlc19pbXBsPAotICAgICAgICAgICAgICB0eXBlbmFtZSBkaXZpZGVzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgZGl2aWRlc190YWc8TjI+Ojp0eXBlCi0gICAgICAgICAgICA+Ci0gICAgICAgICwgTjEKLSAgICAgICAgLCBOMgotICAgICAgICA+Ojp0eXBlID46OnR5cGUKLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgZGl2aWRlczIsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIGRpdmlkZXMpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCB0eXBlbmFtZSBULCBUIG4xLCBUIG4yID4KLXN0cnVjdCBkaXZpZGVzX3drbmQKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoVCwgdmFsdWUgID0gKG4xIC8gbjIpKTsKLSAgICB0eXBlZGVmIGludGVncmFsX2M8IFQsdmFsdWUgPiB0eXBlOwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGl2aWRlc19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGF1eDo6ZGl2aWRlc193a25kPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCBOMTo6dmFsdWUKLSAgICAgICAgICAgICwgTjI6OnZhbHVlCi0gICAgICAgICAgICA+Ojp0eXBlCi0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvZXF1YWxfdG8uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2VxdWFsX3RvLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmZhMmNhZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvZXF1YWxfdG8uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTAyICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2VxdWFsX3RvLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcxXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMSk6OnZhbHVlCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzJfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcyKTo6dmFsdWUKLSAgICA+Ci1zdHJ1Y3QgZXF1YWxfdG9faW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIHRhZzFfID4gdGFnMl8gKQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBlcXVhbF90b19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgZXF1YWxfdG9faW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBlcXVhbF90b19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgZXF1YWxfdG9faW1wbDwgbmEsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGVxdWFsX3RvX2ltcGw8IGludGVncmFsX2NfdGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBlcXVhbF90b190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgZXF1YWxfdG8KLSAgICA6IGF1eDo6bXN2Y19ldGlfYmFzZTwgdHlwZW5hbWUgYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgZXF1YWxfdG9faW1wbDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgZXF1YWxfdG9fdGFnPE4xPjo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBlcXVhbF90b190YWc8TjI+Ojp0eXBlCi0gICAgICAgICAgICA+Ci0gICAgICAgICwgTjEKLSAgICAgICAgLCBOMgotICAgICAgICA+Ojp0eXBlID46OnR5cGUKLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgZXF1YWxfdG8sIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIGVxdWFsX3RvKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVxdWFsX3RvX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9Ci0gICAgICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSA9PQotICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlICkKLSAgICAgICAgICAgICk7Ci0gICAgICAgIHR5cGVkZWYgYm9vbF88dmFsdWU+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvZm9sZF9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9mb2xkX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOGNhMGM3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9mb2xkX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjkzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vZm9sZF9pbXBsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsOwotCi10ZW1wbGF0ZTwgaW50IE4gPgotc3RydWN0IGZvbGRfY2h1bms7Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGZvbGRfY2h1bms8MD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHN0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMCBpdGVyYXRvcjsKLSAgICB9OwotCi0gICAgLy8vIEVUSSB3b3JrYXJvdW5kCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgcmVzdWx0XzwgaW50LGludCxpbnQsaW50ID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgaW50IHN0YXRlOwotICAgICAgICB0eXBlZGVmIGludCBpdGVyYXRvcjsKLSAgICB9OwotCi19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBmb2xkX2NodW5rPDE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBzdGF0ZTEgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjEgaXRlcmF0b3I7Ci0gICAgfTsKLQotICAgIC8vLyBFVEkgd29ya2Fyb3VuZAotICAgIHRlbXBsYXRlPD4gc3RydWN0IHJlc3VsdF88IGludCxpbnQsaW50LGludCA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGludCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpbnQgaXRlcmF0b3I7Ci0gICAgfTsKLQotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgZm9sZF9jaHVuazwyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgc3RhdGUyIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIyIGl0ZXJhdG9yOwotICAgIH07Ci0KLSAgICAvLy8gRVRJIHdvcmthcm91bmQKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCByZXN1bHRfPCBpbnQsaW50LGludCxpbnQgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBpbnQgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaW50IGl0ZXJhdG9yOwotICAgIH07Ci0KLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGZvbGRfY2h1bms8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIHN0YXRlMyBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMyBpdGVyYXRvcjsKLSAgICB9OwotCi0gICAgLy8vIEVUSSB3b3JrYXJvdW5kCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgcmVzdWx0XzwgaW50LGludCxpbnQsaW50ID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgaW50IHN0YXRlOwotICAgICAgICB0eXBlZGVmIGludCBpdGVyYXRvcjsKLSAgICB9OwotCi19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBmb2xkX2NodW5rPDQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBzdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUzLCB0eXBlbmFtZSBkZXJlZjxpdGVyMz46OnR5cGUgPjo6dHlwZSBzdGF0ZTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBzdGF0ZTQgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjQgaXRlcmF0b3I7Ci0gICAgfTsKLQotICAgIC8vLyBFVEkgd29ya2Fyb3VuZAotICAgIHRlbXBsYXRlPD4gc3RydWN0IHJlc3VsdF88IGludCxpbnQsaW50LGludCA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGludCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpbnQgaXRlcmF0b3I7Ci0gICAgfTsKLQotfTsKLQotdGVtcGxhdGU8IGludCBOID4KLXN0cnVjdCBmb2xkX2NodW5rCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGZvbGRfaW1wbDwKLSAgICAgICAgICAgICAgNAotICAgICAgICAgICAgLCBGaXJzdAotICAgICAgICAgICAgLCBMYXN0Ci0gICAgICAgICAgICAsIFN0YXRlCi0gICAgICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICAgICAgPiBjaHVua187Ci0KLSAgICAgICAgdHlwZWRlZiBmb2xkX2ltcGw8Ci0gICAgICAgICAgICAgICggKE4gLSA0KSA8IDAgPyAwIDogTiAtIDQgKQotICAgICAgICAgICAgLCB0eXBlbmFtZSBjaHVua186Oml0ZXJhdG9yCi0gICAgICAgICAgICAsIExhc3QKLSAgICAgICAgICAgICwgdHlwZW5hbWUgY2h1bmtfOjpzdGF0ZQotICAgICAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgICAgID4gcmVzXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186OnN0YXRlIHN0YXRlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186Oml0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfc3RlcDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgID4KLXN0cnVjdCBmb2xkX251bGxfc3RlcAotewotICAgIHR5cGVkZWYgTGFzdCBpdGVyYXRvcjsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZvbGRfY2h1bms8IC0xID4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICB0eXBlbmFtZSBpc19zYW1lPCBGaXJzdCxMYXN0ID46OnR5cGUKLSAgICAgICAgICAgICwgZm9sZF9udWxsX3N0ZXA8IExhc3QsU3RhdGUgPgotICAgICAgICAgICAgLCBmb2xkX3N0ZXA8IEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLSAgICAgICAgICAgID46OnR5cGUgcmVzXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186OnN0YXRlIHN0YXRlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186Oml0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIH07Ci0KLSAgICAvLy8gRVRJIHdvcmthcm91bmQKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCByZXN1bHRfPCBpbnQsaW50LGludCxpbnQgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBpbnQgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaW50IGl0ZXJhdG9yOwotICAgIH07Ci0KLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9zdGVwCi17Ci0gICAgdHlwZWRlZiBmb2xkX2NodW5rPCAtMSA+Ojp0ZW1wbGF0ZSByZXN1bHRfPAotICAgICAgICAgIHR5cGVuYW1lIG1wbDo6bmV4dDxGaXJzdD46OnR5cGUKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgYXBwbHkyPEZvcndhcmRPcCxTdGF0ZSwgdHlwZW5hbWUgZGVyZWY8Rmlyc3Q+Ojp0eXBlPjo6dHlwZQotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IGNodW5rXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgY2h1bmtfOjpzdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNodW5rXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGwKLSAgICA6IGZvbGRfY2h1bms8Tj4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci19OwotCi19fX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9mdWxsX2xhbWJkYS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvZnVsbF9sYW1iZGEuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZGE5NzFlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9mdWxsX2xhbWJkYS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NTQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9mdWxsX2xhbWJkYS5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgYm9vbCBDMSA9IGZhbHNlLCBib29sIEMyID0gZmFsc2UsIGJvb2wgQzMgPSBmYWxzZSwgYm9vbCBDNCA9IGZhbHNlCi0gICAgLCBib29sIEM1ID0gZmFsc2UKLSAgICA+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+IGwyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlOwotICAgIHR5cGVkZWYgYXV4OjpsZV9yZXN1bHQyPGlzX2xlLCBUYWcyLCBtcGw6OmxhbWJkYSwgbDEsIGwyPiBsZV9yZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6cmVzdWx0XyByZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6dHlwZSB0eXBlOwotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDIsIGxhbWJkYSkKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2dyZWF0ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2dyZWF0ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MDgzNGNmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9ncmVhdGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwMiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9ncmVhdGVyLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcxXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMSk6OnZhbHVlCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzJfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcyKTo6dmFsdWUKLSAgICA+Ci1zdHJ1Y3QgZ3JlYXRlcl9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggdGFnMV8gPiB0YWcyXyApCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGdyZWF0ZXJfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGdyZWF0ZXJfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBncmVhdGVyX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBncmVhdGVyX2ltcGw8IG5hLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBncmVhdGVyX2ltcGw8IGludGVncmFsX2NfdGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBncmVhdGVyX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBncmVhdGVyCi0gICAgOiBhdXg6Om1zdmNfZXRpX2Jhc2U8IHR5cGVuYW1lIGFwcGx5X3dyYXAyPAotICAgICAgICAgIGdyZWF0ZXJfaW1wbDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgZ3JlYXRlcl90YWc8TjE+Ojp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGdyZWF0ZXJfdGFnPE4yPjo6dHlwZQotICAgICAgICAgICAgPgotICAgICAgICAsIE4xCi0gICAgICAgICwgTjIKLSAgICAgICAgPjo6dHlwZSA+Ojp0eXBlCi0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGdyZWF0ZXIsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIGdyZWF0ZXIpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZ3JlYXRlcl9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgewotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPQotICAgICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUgPgotICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlICkKLSAgICAgICAgICAgICk7Ci0gICAgICAgIHR5cGVkZWYgYm9vbF88dmFsdWU+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvZ3JlYXRlcl9lcXVhbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvZ3JlYXRlcl9lcXVhbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3Y2EwYzAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2dyZWF0ZXJfZXF1YWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTAyICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2dyZWF0ZXJfZXF1YWwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzFfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcxKTo6dmFsdWUKLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMl8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzIpOjp2YWx1ZQotICAgID4KLXN0cnVjdCBncmVhdGVyX2VxdWFsX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCB0YWcxXyA+IHRhZzJfICkKLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgZ3JlYXRlcl9lcXVhbF9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgZ3JlYXRlcl9lcXVhbF9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGdyZWF0ZXJfZXF1YWxfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGdyZWF0ZXJfZXF1YWxfaW1wbDwgbmEsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGdyZWF0ZXJfZXF1YWxfaW1wbDwgaW50ZWdyYWxfY190YWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGdyZWF0ZXJfZXF1YWxfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGdyZWF0ZXJfZXF1YWwKLSAgICA6IGF1eDo6bXN2Y19ldGlfYmFzZTwgdHlwZW5hbWUgYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgZ3JlYXRlcl9lcXVhbF9pbXBsPAotICAgICAgICAgICAgICB0eXBlbmFtZSBncmVhdGVyX2VxdWFsX3RhZzxOMT46OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgZ3JlYXRlcl9lcXVhbF90YWc8TjI+Ojp0eXBlCi0gICAgICAgICAgICA+Ci0gICAgICAgICwgTjEKLSAgICAgICAgLCBOMgotICAgICAgICA+Ojp0eXBlID46OnR5cGUKLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgZ3JlYXRlcl9lcXVhbCwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgZ3JlYXRlcl9lcXVhbCkKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBncmVhdGVyX2VxdWFsX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9Ci0gICAgICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSA+PQotICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlICkKLSAgICAgICAgICAgICk7Ci0gICAgICAgIHR5cGVkZWYgYm9vbF88dmFsdWU+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvaW5oZXJpdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvaW5oZXJpdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdjYjBhNDguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2luaGVyaXQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTY2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2luaGVyaXQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgYm9vbCBDMSwgYm9vbCBDMiA+Ci1zdHJ1Y3QgaW5oZXJpdDJfaW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBEZXJpdmVkLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIgPiBzdHJ1Y3QgcmVzdWx0XwotICAgICAgICA6IFQxLCBUMgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBEZXJpdmVkIHR5cGVfOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaW5oZXJpdDJfaW1wbDwgZmFsc2UsdHJ1ZSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIERlcml2ZWQsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiA+IHN0cnVjdCByZXN1bHRfCi0gICAgICAgIDogVDEKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVDEgdHlwZV87Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpbmhlcml0Ml9pbXBsPCB0cnVlLGZhbHNlID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRGVyaXZlZCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyID4gc3RydWN0IHJlc3VsdF8KLSAgICAgICAgOiBUMgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBUMiB0eXBlXzsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGluaGVyaXQyX2ltcGw8IHRydWUsdHJ1ZSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIERlcml2ZWQsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIFQxIHR5cGVfOwotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQxKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMikKLSAgICA+Ci1zdHJ1Y3QgaW5oZXJpdDIKLSAgICA6IGF1eDo6aW5oZXJpdDJfaW1wbDwKLSAgICAgICAgICBpc19lbXB0eV9iYXNlPFQxPjo6dmFsdWUKLSAgICAgICAgLCBpc19lbXB0eV9iYXNlPFQyPjo6dmFsdWUKLSAgICAgICAgPjo6dGVtcGxhdGUgcmVzdWx0XzwgaW5oZXJpdDI8IFQxLFQyID4sVDEsIFQyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGluaGVyaXQyOjp0eXBlXyB0eXBlOwotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgaW5oZXJpdDIsIChUMSwgVDIpKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDIsIGluaGVyaXQyKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICA+Ci1zdHJ1Y3QgaW5oZXJpdDMKLSAgICA6IGluaGVyaXQyPAotICAgICAgICAgIHR5cGVuYW1lIGluaGVyaXQyPAotICAgICAgICAgICAgICBUMSwgVDIKLSAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgLCBUMwotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICAzCi0gICAgICAgICwgaW5oZXJpdDMKLSAgICAgICAgLCAoIFQxLCBUMiwgVDMpCi0gICAgICAgICkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQygzLCBpbmhlcml0MykKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hLCB0eXBlbmFtZSBUNCA9IG5hCi0gICAgPgotc3RydWN0IGluaGVyaXQ0Ci0gICAgOiBpbmhlcml0MjwKLSAgICAgICAgICB0eXBlbmFtZSBpbmhlcml0MzwKLSAgICAgICAgICAgICAgVDEsIFQyLCBUMwotICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAsIFQ0Ci0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDQKLSAgICAgICAgLCBpbmhlcml0NAotICAgICAgICAsICggVDEsIFQyLCBUMywgVDQpCi0gICAgICAgICkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQyg0LCBpbmhlcml0NCkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hLCB0eXBlbmFtZSBUNCA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNSA9IG5hCi0gICAgPgotc3RydWN0IGluaGVyaXQ1Ci0gICAgOiBpbmhlcml0MjwKLSAgICAgICAgICB0eXBlbmFtZSBpbmhlcml0NDwKLSAgICAgICAgICAgICAgVDEsIFQyLCBUMywgVDQKLSAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgLCBUNQotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgaW5oZXJpdDUKLSAgICAgICAgLCAoIFQxLCBUMiwgVDMsIFQ0LCBUNSkKLSAgICAgICAgKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDUsIGluaGVyaXQ1KQotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQxID0gZW1wdHlfYmFzZSwgdHlwZW5hbWUgVDIgPSBlbXB0eV9iYXNlCi0gICAgLCB0eXBlbmFtZSBUMyA9IGVtcHR5X2Jhc2UsIHR5cGVuYW1lIFQ0ID0gZW1wdHlfYmFzZQotICAgICwgdHlwZW5hbWUgVDUgPSBlbXB0eV9iYXNlCi0gICAgPgotc3RydWN0IGluaGVyaXQKLSAgICA6IGluaGVyaXQ1PCBUMSxUMixUMyxUNCxUNSA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaW5oZXJpdDwgbmEsbmEsbmEsbmEsbmEgPgotewotICAgIHRlbXBsYXRlPAotCi0gICAgICAgICAgdHlwZW5hbWUgVDEgPSBlbXB0eV9iYXNlLCB0eXBlbmFtZSBUMiA9IGVtcHR5X2Jhc2UKLSAgICAgICAgLCB0eXBlbmFtZSBUMyA9IGVtcHR5X2Jhc2UsIHR5cGVuYW1lIFQ0ID0gZW1wdHlfYmFzZQotICAgICAgICAsIHR5cGVuYW1lIFQ1ID0gZW1wdHlfYmFzZQotCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBpbmhlcml0PCBUMSxUMixUMyxUNCxUNSA+Ci0gICAgewotICAgIH07Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUNfTEFNQkRBKDUsIGluaGVyaXQpCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUNfQVJJVFkoNSwgaW5oZXJpdCkKLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQ19URU1QTEFURV9BUklUWSg1LCA1LCBpbmhlcml0KQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2l0ZXJfZm9sZF9pZl9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9pdGVyX2ZvbGRfaWZfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3NGJkODMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2l0ZXJfZm9sZF9pZl9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8gQ29weXJpZ2h0IERhdmlkIEFicmFoYW1zIDIwMDEtMjAwMgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2l0ZXJfZm9sZF9pZl9pbXBsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yLCB0eXBlbmFtZSBTdGF0ZSA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX251bGxfc3RlcAotewotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPCBib29sID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfc3RlcF9pbXBsCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgSXRlcmF0b3IKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlT3AKLSAgICAgICAgLCB0eXBlbmFtZSBJdGVyYXRvck9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IFN0YXRlT3AsU3RhdGUsSXRlcmF0b3IgPjo6dHlwZSBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBJdGVyYXRvck9wOjp0eXBlIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX3N0ZXBfaW1wbDxmYWxzZT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgU3RhdGVPcAotICAgICAgICAsIHR5cGVuYW1lIEl0ZXJhdG9yT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBQcmVkaWNhdGUKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX2ZvcndhcmRfc3RlcAotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBQcmVkaWNhdGUsU3RhdGUsSXRlcmF0b3IgPjo6dHlwZSBub3RfbGFzdDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJfZm9sZF9pZl9zdGVwX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQobm90X2xhc3QpOjp2YWx1ZQotICAgICAgICA+Ojp0ZW1wbGF0ZSByZXN1bHRfPCBJdGVyYXRvcixTdGF0ZSxGb3J3YXJkT3AsIG1wbDo6bmV4dDxJdGVyYXRvcj4gPiBpbXBsXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgaW1wbF86OnN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgaW1wbF86Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIFByZWRpY2F0ZQotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfYmFja3dhcmRfc3RlcAotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBQcmVkaWNhdGUsU3RhdGUsSXRlcmF0b3IgPjo6dHlwZSBub3RfbGFzdDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJfZm9sZF9pZl9zdGVwX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQobm90X2xhc3QpOjp2YWx1ZQotICAgICAgICA+Ojp0ZW1wbGF0ZSByZXN1bHRfPCBJdGVyYXRvcixTdGF0ZSxCYWNrd2FyZE9wLCBpZGVudGl0eTxJdGVyYXRvcj4gPiBpbXBsXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgaW1wbF86OnN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgaW1wbF86Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZFByZWRpY2F0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgQmFja3dhcmRQcmVkaWNhdGUKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX2ltcGwKLXsKLSBwcml2YXRlOgotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX251bGxfc3RlcDwgSXRlcmF0b3IsU3RhdGUgPiBmb3J3YXJkX3N0ZXAwOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2ZvcndhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMDo6aXRlcmF0b3IsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDA6OnN0YXRlLCBGb3J3YXJkT3AsIEZvcndhcmRQcmVkaWNhdGUgPiBmb3J3YXJkX3N0ZXAxOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2ZvcndhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMTo6aXRlcmF0b3IsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDE6OnN0YXRlLCBGb3J3YXJkT3AsIEZvcndhcmRQcmVkaWNhdGUgPiBmb3J3YXJkX3N0ZXAyOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2ZvcndhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMjo6aXRlcmF0b3IsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDI6OnN0YXRlLCBGb3J3YXJkT3AsIEZvcndhcmRQcmVkaWNhdGUgPiBmb3J3YXJkX3N0ZXAzOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2ZvcndhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMzo6aXRlcmF0b3IsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDM6OnN0YXRlLCBGb3J3YXJkT3AsIEZvcndhcmRQcmVkaWNhdGUgPiBmb3J3YXJkX3N0ZXA0OwotICAgIAotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgdHlwZW5hbWUgZm9yd2FyZF9zdGVwNDo6bm90X2xhc3QKLSAgICAgICAgLCBpdGVyX2ZvbGRfaWZfaW1wbDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgZm9yd2FyZF9zdGVwNDo6aXRlcmF0b3IKLSAgICAgICAgICAgICwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwNDo6c3RhdGUKLSAgICAgICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgICAgICAsIEZvcndhcmRQcmVkaWNhdGUKLSAgICAgICAgICAgICwgQmFja3dhcmRPcAotICAgICAgICAgICAgLCBCYWNrd2FyZFByZWRpY2F0ZQotICAgICAgICAgICAgPgotICAgICAgICAsIGl0ZXJfZm9sZF9pZl9udWxsX3N0ZXA8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGZvcndhcmRfc3RlcDQ6Oml0ZXJhdG9yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDQ6OnN0YXRlCi0gICAgICAgICAgICA+Ci0gICAgICAgID46OnR5cGUgYmFja3dhcmRfc3RlcDQ7Ci0KLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9iYWNrd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAzOjppdGVyYXRvciwgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDQ6OnN0YXRlLCBCYWNrd2FyZE9wLCBCYWNrd2FyZFByZWRpY2F0ZSA+IGJhY2t3YXJkX3N0ZXAzOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2JhY2t3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDI6Oml0ZXJhdG9yLCB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwMzo6c3RhdGUsIEJhY2t3YXJkT3AsIEJhY2t3YXJkUHJlZGljYXRlID4gYmFja3dhcmRfc3RlcDI7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfYmFja3dhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMTo6aXRlcmF0b3IsIHR5cGVuYW1lIGJhY2t3YXJkX3N0ZXAyOjpzdGF0ZSwgQmFja3dhcmRPcCwgQmFja3dhcmRQcmVkaWNhdGUgPiBiYWNrd2FyZF9zdGVwMTsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9iYWNrd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAwOjppdGVyYXRvciwgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDE6OnN0YXRlLCBCYWNrd2FyZE9wLCBCYWNrd2FyZFByZWRpY2F0ZSA+IGJhY2t3YXJkX3N0ZXAwOwotICAgIAotCi0gcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDA6OnN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDQ6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotfX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvaXRlcl9mb2xkX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2l0ZXJfZm9sZF9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDc1MzE3MC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvaXRlcl9mb2xkX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjkzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vaXRlcl9mb2xkX2ltcGwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDsKLQotdGVtcGxhdGU8IGludCBOID4KLXN0cnVjdCBpdGVyX2ZvbGRfY2h1bms7Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGl0ZXJfZm9sZF9jaHVuazwwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIwIGl0ZXJhdG9yOwotICAgIH07Ci0KLSAgICAvLy8gRVRJIHdvcmthcm91bmQKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCByZXN1bHRfPCBpbnQsaW50LGludCxpbnQgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBpbnQgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaW50IGl0ZXJhdG9yOwotICAgIH07Ci0KLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGl0ZXJfZm9sZF9jaHVuazwxPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUwLGl0ZXIwID46OnR5cGUgc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgc3RhdGUxIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIxIGl0ZXJhdG9yOwotICAgIH07Ci0KLSAgICAvLy8gRVRJIHdvcmthcm91bmQKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCByZXN1bHRfPCBpbnQsaW50LGludCxpbnQgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBpbnQgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaW50IGl0ZXJhdG9yOwotICAgIH07Ci0KLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGl0ZXJfZm9sZF9jaHVuazwyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUwLGl0ZXIwID46OnR5cGUgc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUxLGl0ZXIxID46OnR5cGUgc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgc3RhdGUyIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIyIGl0ZXJhdG9yOwotICAgIH07Ci0KLSAgICAvLy8gRVRJIHdvcmthcm91bmQKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCByZXN1bHRfPCBpbnQsaW50LGludCxpbnQgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBpbnQgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaW50IGl0ZXJhdG9yOwotICAgIH07Ci0KLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGl0ZXJfZm9sZF9jaHVuazwzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUwLGl0ZXIwID46OnR5cGUgc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUxLGl0ZXIxID46OnR5cGUgc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUyLGl0ZXIyID46OnR5cGUgc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgc3RhdGUzIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIzIGl0ZXJhdG9yOwotICAgIH07Ci0KLSAgICAvLy8gRVRJIHdvcmthcm91bmQKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCByZXN1bHRfPCBpbnQsaW50LGludCxpbnQgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBpbnQgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaW50IGl0ZXJhdG9yOwotICAgIH07Ci0KLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGl0ZXJfZm9sZF9jaHVuazw0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUwLGl0ZXIwID46OnR5cGUgc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUxLGl0ZXIxID46OnR5cGUgc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUyLGl0ZXIyID46OnR5cGUgc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUzLGl0ZXIzID46OnR5cGUgc3RhdGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgc3RhdGU0IHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXI0IGl0ZXJhdG9yOwotICAgIH07Ci0KLSAgICAvLy8gRVRJIHdvcmthcm91bmQKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCByZXN1bHRfPCBpbnQsaW50LGludCxpbnQgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBpbnQgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaW50IGl0ZXJhdG9yOwotICAgIH07Ci0KLX07Ci0KLXRlbXBsYXRlPCBpbnQgTiA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2NodW5rCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pbXBsPAotICAgICAgICAgICAgICA0Ci0gICAgICAgICAgICAsIEZpcnN0Ci0gICAgICAgICAgICAsIExhc3QKLSAgICAgICAgICAgICwgU3RhdGUKLSAgICAgICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgICAgICA+IGNodW5rXzsKLQotICAgICAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pbXBsPAotICAgICAgICAgICAgICAoIChOIC0gNCkgPCAwID8gMCA6IE4gLSA0ICkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgY2h1bmtfOjppdGVyYXRvcgotICAgICAgICAgICAgLCBMYXN0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIGNodW5rXzo6c3RhdGUKLSAgICAgICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgICAgICA+IHJlc187Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjpzdGF0ZSBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjppdGVyYXRvciBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfc3RlcDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfbnVsbF9zdGVwCi17Ci0gICAgdHlwZWRlZiBMYXN0IGl0ZXJhdG9yOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2NodW5rPCAtMSA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgaXNfc2FtZTwgRmlyc3QsTGFzdCA+Ojp0eXBlCi0gICAgICAgICAgICAsIGl0ZXJfZm9sZF9udWxsX3N0ZXA8IExhc3QsU3RhdGUgPgotICAgICAgICAgICAgLCBpdGVyX2ZvbGRfc3RlcDwgRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotICAgICAgICAgICAgPjo6dHlwZSByZXNfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6c3RhdGUgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci0gICAgfTsKLQotICAgIC8vLyBFVEkgd29ya2Fyb3VuZAotICAgIHRlbXBsYXRlPD4gc3RydWN0IHJlc3VsdF88IGludCxpbnQsaW50LGludCA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGludCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpbnQgaXRlcmF0b3I7Ci0gICAgfTsKLQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfc3RlcAotewotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2NodW5rPCAtMSA+Ojp0ZW1wbGF0ZSByZXN1bHRfPAotICAgICAgICAgIHR5cGVuYW1lIG1wbDo6bmV4dDxGaXJzdD46OnR5cGUKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsU3RhdGUsRmlyc3QgPjo6dHlwZQotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IGNodW5rXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgY2h1bmtfOjpzdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNodW5rXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbAotICAgIDogaXRlcl9mb2xkX2NodW5rPE4+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotfTsKLQotfX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvbGFtYmRhX25vX2N0cHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2xhbWJkYV9ub19jdHBzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDVmNWY2Yi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvbGFtYmRhX25vX2N0cHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjI5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX25vX2N0cHMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIGJvb2wgQzEgPSBmYWxzZSwgYm9vbCBDMiA9IGZhbHNlLCBib29sIEMzID0gZmFsc2UsIGJvb2wgQzQgPSBmYWxzZQotICAgICwgYm9vbCBDNSA9IGZhbHNlCi0gICAgPgotc3RydWN0IGxhbWJkYV9vcgotICAgIDogdHJ1ZV8KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsYW1iZGFfb3I8IGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlID4KLSAgICA6IGZhbHNlXwotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEFyaXR5ID4gc3RydWN0IGxhbWJkYV9pbXBsCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICAgICAgdHlwZWRlZiBpc19wbGFjZWhvbGRlcjxUPiBpc19sZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGFtYmRhX2ltcGw8IGludF88MT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFByb3RlY3QgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzEsIFRhZywgZmFsc2VfID4gbDE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUxKTo6dmFsdWUKLSAgICAgICAgICAgID4gaXNfbGU7Ci0KLSAgICAgICAgdHlwZWRlZiBiaW5kMTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgRjo6cmViaW5kCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGwxOjp0eXBlCi0gICAgICAgICAgICA+IGJpbmRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICBpc19sZQotICAgICAgICAgICAgLCBpZl88IFByb3RlY3QsIG1wbDo6cHJvdGVjdDxiaW5kXz4sIGJpbmRfID4KLSAgICAgICAgICAgICwgaWRlbnRpdHk8Rj4KLSAgICAgICAgICAgID46OnR5cGUgdHlwZV87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0eXBlXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsYW1iZGFfaW1wbDwgaW50XzwyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMSwgVGFnLCBmYWxzZV8gPiBsMTsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzIsIFRhZywgZmFsc2VfID4gbDI7Ci0gICAgICAgIAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUxKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMik6OnZhbHVlCi0gICAgICAgICAgICA+IGlzX2xlOwotCi0gICAgICAgIHR5cGVkZWYgYmluZDI8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIEY6OnJlYmluZAotICAgICAgICAgICAgLCB0eXBlbmFtZSBsMTo6dHlwZSwgdHlwZW5hbWUgbDI6OnR5cGUKLSAgICAgICAgICAgID4gYmluZF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIGlzX2xlCi0gICAgICAgICAgICAsIGlmXzwgUHJvdGVjdCwgbXBsOjpwcm90ZWN0PGJpbmRfPiwgYmluZF8gPgotICAgICAgICAgICAgLCBpZGVudGl0eTxGPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxhbWJkYV9pbXBsPCBpbnRfPDM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcxLCBUYWcsIGZhbHNlXyA+IGwxOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMiwgVGFnLCBmYWxzZV8gPiBsMjsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzMsIFRhZywgZmFsc2VfID4gbDM7Ci0gICAgICAgIAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMzo6aXNfbGUgaXNfbGUzOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTEpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUyKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMyk6OnZhbHVlCi0gICAgICAgICAgICA+IGlzX2xlOwotCi0gICAgICAgIHR5cGVkZWYgYmluZDM8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIEY6OnJlYmluZAotICAgICAgICAgICAgLCB0eXBlbmFtZSBsMTo6dHlwZSwgdHlwZW5hbWUgbDI6OnR5cGUsIHR5cGVuYW1lIGwzOjp0eXBlCi0gICAgICAgICAgICA+IGJpbmRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICBpc19sZQotICAgICAgICAgICAgLCBpZl88IFByb3RlY3QsIG1wbDo6cHJvdGVjdDxiaW5kXz4sIGJpbmRfID4KLSAgICAgICAgICAgICwgaWRlbnRpdHk8Rj4KLSAgICAgICAgICAgID46OnR5cGUgdHlwZV87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0eXBlXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsYW1iZGFfaW1wbDwgaW50Xzw0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMSwgVGFnLCBmYWxzZV8gPiBsMTsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzIsIFRhZywgZmFsc2VfID4gbDI7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmczLCBUYWcsIGZhbHNlXyA+IGwzOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnNCwgVGFnLCBmYWxzZV8gPiBsNDsKLSAgICAgICAgCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwzOjppc19sZSBpc19sZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDQ6OmlzX2xlIGlzX2xlNDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUxKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMik6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTMpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGU0KTo6dmFsdWUKLSAgICAgICAgICAgID4gaXNfbGU7Ci0KLSAgICAgICAgdHlwZWRlZiBiaW5kNDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgRjo6cmViaW5kCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGwxOjp0eXBlLCB0eXBlbmFtZSBsMjo6dHlwZSwgdHlwZW5hbWUgbDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDQ6OnR5cGUKLSAgICAgICAgICAgID4gYmluZF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIGlzX2xlCi0gICAgICAgICAgICAsIGlmXzwgUHJvdGVjdCwgbXBsOjpwcm90ZWN0PGJpbmRfPiwgYmluZF8gPgotICAgICAgICAgICAgLCBpZGVudGl0eTxGPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxhbWJkYV9pbXBsPCBpbnRfPDU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcxLCBUYWcsIGZhbHNlXyA+IGwxOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMiwgVGFnLCBmYWxzZV8gPiBsMjsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzMsIFRhZywgZmFsc2VfID4gbDM7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmc0LCBUYWcsIGZhbHNlXyA+IGw0OwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnNSwgVGFnLCBmYWxzZV8gPiBsNTsKLSAgICAgICAgCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwzOjppc19sZSBpc19sZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDQ6OmlzX2xlIGlzX2xlNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsNTo6aXNfbGUgaXNfbGU1OwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTEpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUyKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMyk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTQpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGU1KTo6dmFsdWUKLSAgICAgICAgICAgID4gaXNfbGU7Ci0KLSAgICAgICAgdHlwZWRlZiBiaW5kNTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgRjo6cmViaW5kCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGwxOjp0eXBlLCB0eXBlbmFtZSBsMjo6dHlwZSwgdHlwZW5hbWUgbDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDQ6OnR5cGUsIHR5cGVuYW1lIGw1Ojp0eXBlCi0gICAgICAgICAgICA+IGJpbmRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICBpc19sZQotICAgICAgICAgICAgLCBpZl88IFByb3RlY3QsIG1wbDo6cHJvdGVjdDxiaW5kXz4sIGJpbmRfID4KLSAgICAgICAgICAgICwgaWRlbnRpdHk8Rj4KLSAgICAgICAgICAgID46OnR5cGUgdHlwZV87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0eXBlXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICAsIHR5cGVuYW1lIFByb3RlY3QKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhCi17Ci0gICAgLy8vIE1ldGFmdW5jdGlvbiBmb3J3YXJkaW5nIGNvbmZ1c2VzIE1TVkMgNi54Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnRlbXBsYXRlX2FyaXR5PFQ+Ojp0eXBlIGFyaXR5XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGFtYmRhX2ltcGw8YXJpdHlfPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IFQsVGFnLFByb3RlY3QgPiBsXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbF86OnR5cGUgdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxfOjppc19sZSBpc19sZTsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDMsIGxhbWJkYSwgKFQsIFRhZywgUHJvdGVjdCkpCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDEsIDMsIGxhbWJkYSkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgPgotc3RydWN0IGlzX2xhbWJkYV9leHByZXNzaW9uCi0gICAgOiBsYW1iZGE8VD46OmlzX2xlCi17Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvbGVzcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvbGVzcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA1YjZkMTAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL2xlc3MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTAyICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2xlc3MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzFfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcxKTo6dmFsdWUKLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMl8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzIpOjp2YWx1ZQotICAgID4KLXN0cnVjdCBsZXNzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCB0YWcxXyA+IHRhZzJfICkKLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgbGVzc19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgbGVzc19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGxlc3NfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxlc3NfaW1wbDwgbmEsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxlc3NfaW1wbDwgaW50ZWdyYWxfY190YWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGxlc3NfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGxlc3MKLSAgICA6IGF1eDo6bXN2Y19ldGlfYmFzZTwgdHlwZW5hbWUgYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgbGVzc19pbXBsPAotICAgICAgICAgICAgICB0eXBlbmFtZSBsZXNzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbGVzc190YWc8TjI+Ojp0eXBlCi0gICAgICAgICAgICA+Ci0gICAgICAgICwgTjEKLSAgICAgICAgLCBOMgotICAgICAgICA+Ojp0eXBlID46OnR5cGUKLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgbGVzcywgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgbGVzcykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsZXNzX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9Ci0gICAgICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSA+Ci0gICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUgKQotICAgICAgICAgICAgKTsKLSAgICAgICAgdHlwZWRlZiBib29sXzx2YWx1ZT4gdHlwZTsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9sZXNzX2VxdWFsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9sZXNzX2VxdWFsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWFjMmEzYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvbGVzc19lcXVhbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDIgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbGVzc19lcXVhbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0KLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMV8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzEpOjp2YWx1ZQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcyXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMik6OnZhbHVlCi0gICAgPgotc3RydWN0IGxlc3NfZXF1YWxfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIHRhZzFfID4gdGFnMl8gKQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBsZXNzX2VxdWFsX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBsZXNzX2VxdWFsX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgbGVzc19lcXVhbF9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGVzc19lcXVhbF9pbXBsPCBuYSxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGVzc19lcXVhbF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgbGVzc19lcXVhbF90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgbGVzc19lcXVhbAotICAgIDogYXV4Ojptc3ZjX2V0aV9iYXNlPCB0eXBlbmFtZSBhcHBseV93cmFwMjwKLSAgICAgICAgICBsZXNzX2VxdWFsX2ltcGw8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGxlc3NfZXF1YWxfdGFnPE4xPjo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBsZXNzX2VxdWFsX3RhZzxOMj46OnR5cGUKLSAgICAgICAgICAgID4KLSAgICAgICAgLCBOMQotICAgICAgICAsIE4yCi0gICAgICAgID46OnR5cGUgPjo6dHlwZQotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBsZXNzX2VxdWFsLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBsZXNzX2VxdWFsKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxlc3NfZXF1YWxfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgIHsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlIDw9Ci0gICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUgKQotICAgICAgICAgICAgKTsKLSAgICAgICAgdHlwZWRlZiBib29sXzx2YWx1ZT4gdHlwZTsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9saXN0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9saXN0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmIxOWU2MC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvbGlzdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NTYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbGlzdC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgaW50IE4gPgotc3RydWN0IGxpc3RfY2hvb3NlcjsKLQotfQotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3NlcjwwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGxpc3QwPAotICAgICAgICAgICAgIAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3NlcjwxPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxPAotICAgICAgICAgICAgICBUMAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3NlcjwyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QyPAotICAgICAgICAgICAgICBUMCwgVDEKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MzwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3Nlcjw0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q0PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3Nlcjw1PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q1PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8Nj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0NjwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3Nlcjw3PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q3PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3Nlcjw4PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q4PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8OT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0OTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3NlcjwxMD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTA8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jaG9vc2VyPDExPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3NlcjwxMj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTI8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3NlcjwxMz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTM8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jaG9vc2VyPDE0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3NlcjwxNT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTU8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3NlcjwxNj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTY8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jaG9vc2VyPDE3PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNzwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3NlcjwxOD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTg8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3NlcjwxOT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTk8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jaG9vc2VyPDIwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QyMDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotc3RydWN0IGlzX2xpc3RfYXJnCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlICA9IHRydWUpOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGlzX2xpc3RfYXJnPG5hPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSAgPSBmYWxzZSk7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNQotICAgICwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFQxMAotICAgICwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0LCB0eXBlbmFtZSBUMTUKLSAgICAsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOSwgdHlwZW5hbWUgVDIwCi0gICAgPgotc3RydWN0IGxpc3RfY291bnRfYXJncwotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0KLSAgICAgICAgICBpc19saXN0X2FyZzxUMT46OnZhbHVlICsgaXNfbGlzdF9hcmc8VDI+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19saXN0X2FyZzxUMz46OnZhbHVlICsgaXNfbGlzdF9hcmc8VDQ+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19saXN0X2FyZzxUNT46OnZhbHVlICsgaXNfbGlzdF9hcmc8VDY+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19saXN0X2FyZzxUNz46OnZhbHVlICsgaXNfbGlzdF9hcmc8VDg+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19saXN0X2FyZzxUOT46OnZhbHVlICsgaXNfbGlzdF9hcmc8VDEwPjo6dmFsdWUgCi0gICAgICAgICsgaXNfbGlzdF9hcmc8VDExPjo6dmFsdWUgKyBpc19saXN0X2FyZzxUMTI+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19saXN0X2FyZzxUMTM+Ojp2YWx1ZSArIGlzX2xpc3RfYXJnPFQxND46OnZhbHVlIAotICAgICAgICArIGlzX2xpc3RfYXJnPFQxNT46OnZhbHVlICsgaXNfbGlzdF9hcmc8VDE2Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfbGlzdF9hcmc8VDE3Pjo6dmFsdWUgKyBpc19saXN0X2FyZzxUMTg+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19saXN0X2FyZzxUMTk+Ojp2YWx1ZSArIGlzX2xpc3RfYXJnPFQyMD46OnZhbHVlCi0gICAgICAgICk7Ci0KLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgID4KLXN0cnVjdCBsaXN0X2ltcGwKLXsKLSAgICB0eXBlZGVmIGF1eDo6bGlzdF9jb3VudF9hcmdzPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPiBhcmdfbnVtXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsaXN0X2Nob29zZXI8IGFyZ19udW1fOjp2YWx1ZSA+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwID0gbmEsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEsIHR5cGVuYW1lIFQ2ID0gbmEsIHR5cGVuYW1lIFQ3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ4ID0gbmEsIHR5cGVuYW1lIFQ5ID0gbmEsIHR5cGVuYW1lIFQxMCA9IG5hLCB0eXBlbmFtZSBUMTEgPSBuYQotICAgICwgdHlwZW5hbWUgVDEyID0gbmEsIHR5cGVuYW1lIFQxMyA9IG5hLCB0eXBlbmFtZSBUMTQgPSBuYQotICAgICwgdHlwZW5hbWUgVDE1ID0gbmEsIHR5cGVuYW1lIFQxNiA9IG5hLCB0eXBlbmFtZSBUMTcgPSBuYQotICAgICwgdHlwZW5hbWUgVDE4ID0gbmEsIHR5cGVuYW1lIFQxOSA9IG5hCi0gICAgPgotc3RydWN0IGxpc3QKLSAgICA6IGF1eDo6bGlzdF9pbXBsPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPjo6dHlwZQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsaXN0X2ltcGw8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvbGlzdF9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9saXN0X2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZWQ3ZjdlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9saXN0X2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTM0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2xpc3RfYy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgaW50IE4gPgotc3RydWN0IGxpc3RfY19jaG9vc2VyOwotCi19Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+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+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvbWFwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9tYXAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NTE3NGM4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9tYXAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTU2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL21hcC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgaW50IE4gPgotc3RydWN0IG1hcF9jaG9vc2VyOwotCi19Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+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+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvbWludXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL21pbnVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWUzYTkwNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvbWludXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ4ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL21pbnVzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcxXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMSk6OnZhbHVlCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzJfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcyKTo6dmFsdWUKLSAgICA+Ci1zdHJ1Y3QgbWludXNfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIHRhZzFfID4gdGFnMl8gKQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBtaW51c19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgbWludXNfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBtaW51c19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbWludXNfaW1wbDwgbmEsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IG1pbnVzX2ltcGw8IGludGVncmFsX2NfdGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBtaW51c190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgbWludXMyOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBtaW51cwotCi0gICAgOiBpZl88Ci0KLSAgICAgICAgICBpc19uYTxOMz4KLSAgICAgICAgLCBtaW51czI8IE4xLE4yID4KLSAgICAgICAgLCBtaW51czwKLSAgICAgICAgICAgICAgbWludXMyPCBOMSxOMiA+Ci0gICAgICAgICAgICAsIE4zLCBONCwgTjUKLSAgICAgICAgICAgID4KLSAgICAgICAgPjo6dHlwZQotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgbWludXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEKLSAgICAsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IG1pbnVzMgotICAgIDogYXV4Ojptc3ZjX2V0aV9iYXNlPCB0eXBlbmFtZSBhcHBseV93cmFwMjwKLSAgICAgICAgICBtaW51c19pbXBsPAotICAgICAgICAgICAgICB0eXBlbmFtZSBtaW51c190YWc8TjE+Ojp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIG1pbnVzX3RhZzxOMj46OnR5cGUKLSAgICAgICAgICAgID4KLSAgICAgICAgLCBOMQotICAgICAgICAsIE4yCi0gICAgICAgID46OnR5cGUgPjo6dHlwZQotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBtaW51czIsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIG1pbnVzKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgVCBuMSwgVCBuMiA+Ci1zdHJ1Y3QgbWludXNfd2tuZAotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChULCB2YWx1ZSAgPSAobjEgLSBuMikpOwotICAgIHR5cGVkZWYgaW50ZWdyYWxfYzwgVCx2YWx1ZSA+IHR5cGU7Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtaW51c19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGF1eDo6bWludXNfd2tuZDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgTjE6OnZhbHVlCi0gICAgICAgICAgICAsIE4yOjp2YWx1ZQotICAgICAgICAgICAgPjo6dHlwZQotCi0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL21vZHVsdXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL21vZHVsdXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMTg1ZWJmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9tb2R1bHVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExNSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9tb2R1bHVzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcxXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMSk6OnZhbHVlCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzJfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcyKTo6dmFsdWUKLSAgICA+Ci1zdHJ1Y3QgbW9kdWx1c19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggdGFnMV8gPiB0YWcyXyApCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IG1vZHVsdXNfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IG1vZHVsdXNfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBtb2R1bHVzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBtb2R1bHVzX2ltcGw8IG5hLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBtb2R1bHVzX2ltcGw8IGludGVncmFsX2NfdGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBtb2R1bHVzX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBtb2R1bHVzCi0gICAgOiBhdXg6Om1zdmNfZXRpX2Jhc2U8IHR5cGVuYW1lIGFwcGx5X3dyYXAyPAotICAgICAgICAgIG1vZHVsdXNfaW1wbDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgbW9kdWx1c190YWc8TjE+Ojp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIG1vZHVsdXNfdGFnPE4yPjo6dHlwZQotICAgICAgICAgICAgPgotICAgICAgICAsIE4xCi0gICAgICAgICwgTjIKLSAgICAgICAgPjo6dHlwZSA+Ojp0eXBlCi0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIG1vZHVsdXMsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIG1vZHVsdXMpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCB0eXBlbmFtZSBULCBUIG4xLCBUIG4yID4KLXN0cnVjdCBtb2R1bHVzX3drbmQKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoVCwgdmFsdWUgID0gKG4xICUgbjIpKTsKLSAgICB0eXBlZGVmIGludGVncmFsX2M8IFQsdmFsdWUgPiB0eXBlOwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbW9kdWx1c19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGF1eDo6bW9kdWx1c193a25kPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCBOMTo6dmFsdWUKLSAgICAgICAgICAgICwgTjI6OnZhbHVlCi0gICAgICAgICAgICA+Ojp0eXBlCi0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvbm90X2VxdWFsX3RvLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9ub3RfZXF1YWxfdG8uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3N2IwYTEzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9ub3RfZXF1YWxfdG8uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTAyICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL25vdF9lcXVhbF90by5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0KLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMV8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzEpOjp2YWx1ZQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcyXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMik6OnZhbHVlCi0gICAgPgotc3RydWN0IG5vdF9lcXVhbF90b19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggdGFnMV8gPiB0YWcyXyApCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IG5vdF9lcXVhbF90b19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgbm90X2VxdWFsX3RvX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3Qgbm90X2VxdWFsX3RvX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBub3RfZXF1YWxfdG9faW1wbDwgbmEsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IG5vdF9lcXVhbF90b19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3Qgbm90X2VxdWFsX3RvX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBub3RfZXF1YWxfdG8KLSAgICA6IGF1eDo6bXN2Y19ldGlfYmFzZTwgdHlwZW5hbWUgYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgbm90X2VxdWFsX3RvX2ltcGw8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIG5vdF9lcXVhbF90b190YWc8TjE+Ojp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIG5vdF9lcXVhbF90b190YWc8TjI+Ojp0eXBlCi0gICAgICAgICAgICA+Ci0gICAgICAgICwgTjEKLSAgICAgICAgLCBOMgotICAgICAgICA+Ojp0eXBlID46OnR5cGUKLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgbm90X2VxdWFsX3RvLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBub3RfZXF1YWxfdG8pCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgbm90X2VxdWFsX3RvX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9Ci0gICAgICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSAhPQotICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlICkKLSAgICAgICAgICAgICk7Ci0gICAgICAgIHR5cGVkZWYgYm9vbF88dmFsdWU+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvb3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL29yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzEyM2I4ZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvb3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvb3IuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IGJvb2wgQ18gPiBzdHJ1Y3Qgb3JfaW1wbAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgICAgICA6IHRydWVfCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBvcl9pbXBsPGZhbHNlPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgICAgICA6IG9yX2ltcGw8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1RZUEVfV0tORChUMSk6OnZhbHVlCi0gICAgICAgICAgICA+Ojp0ZW1wbGF0ZSByZXN1bHRfPCBUMixUMyxUNCxmYWxzZV8gPgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG9yX2ltcGw8ZmFsc2U+Ci0gICAgOjpyZXN1bHRfPCBmYWxzZV8sZmFsc2VfLGZhbHNlXyxmYWxzZV8gPgotICAgICAgICA6IGZhbHNlXwotewotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDIpCi0gICAgLCB0eXBlbmFtZSBUMyA9IGZhbHNlXywgdHlwZW5hbWUgVDQgPSBmYWxzZV8sIHR5cGVuYW1lIFQ1ID0gZmFsc2VfCi0gICAgPgotc3RydWN0IG9yXwotCi0gICAgOiBhdXg6Om9yX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVFlQRV9XS05EKFQxKTo6dmFsdWUKLSAgICAgICAgPjo6dGVtcGxhdGUgcmVzdWx0XzwgVDIsVDMsVDQsVDUgPgotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgb3JfCi0gICAgICAgICwgKCBUMSwgVDIsIFQzLCBUNCwgVDUpCi0gICAgICAgICkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoCi0gICAgICAyCi0gICAgLCA1Ci0gICAgLCBvcl8KLSAgICApCi0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvcGxhY2Vob2xkZXJzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9wbGFjZWhvbGRlcnMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYTI4YzA5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9wbGFjZWhvbGRlcnMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTA1ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLyBDb3B5cmlnaHQgUGV0ZXIgRGltb3YgMjAwMS0yMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3BsYWNlaG9sZGVycy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzwgLTEgPiBfOwotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF8pCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol87Ci19Ci0KLX19Ci0KLS8vLyBhZ3VydCwgMTcvbWFyLzAyOiBvbmUgbW9yZSBwbGFjZWhvbGRlciBmb3IgdGhlIGxhc3QgJ2FwcGx5IycgCi0vLy8gc3BlY2lhbGl6YXRpb24KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDE+IF8xOwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzEpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol8xOwotfQotCi19fQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8Mj4gXzI7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfMikKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzI7Ci19Ci0KLX19Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzwzPiBfMzsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF8zKQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfMzsKLX0KLQotfX0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDQ+IF80OwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzQpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol80OwotfQotCi19fQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8NT4gXzU7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfNSkKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzU7Ci19Ci0KLX19Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzw2PiBfNjsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF82KQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfNjsKLX0KLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9wbHVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9wbHVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjk3Nzk0YS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvcGx1cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDggKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvcGx1cy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0KLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMV8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzEpOjp2YWx1ZQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcyXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMik6OnZhbHVlCi0gICAgPgotc3RydWN0IHBsdXNfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIHRhZzFfID4gdGFnMl8gKQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBwbHVzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBwbHVzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgcGx1c19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcGx1c19pbXBsPCBuYSxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcGx1c19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgcGx1c190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgcGx1czI7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IHBsdXMKLQotICAgIDogaWZfPAotCi0gICAgICAgICAgaXNfbmE8TjM+Ci0gICAgICAgICwgcGx1czI8IE4xLE4yID4KLSAgICAgICAgLCBwbHVzPAotICAgICAgICAgICAgICBwbHVzMjwgTjEsTjIgPgotICAgICAgICAgICAgLCBOMywgTjQsIE41Ci0gICAgICAgICAgICA+Ci0gICAgICAgID46OnR5cGUKLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIHBsdXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEKLSAgICAsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IHBsdXMyCi0gICAgOiBhdXg6Om1zdmNfZXRpX2Jhc2U8IHR5cGVuYW1lIGFwcGx5X3dyYXAyPAotICAgICAgICAgIHBsdXNfaW1wbDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgcGx1c190YWc8TjE+Ojp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHBsdXNfdGFnPE4yPjo6dHlwZQotICAgICAgICAgICAgPgotICAgICAgICAsIE4xCi0gICAgICAgICwgTjIKLSAgICAgICAgPjo6dHlwZSA+Ojp0eXBlCi0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIHBsdXMyLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBwbHVzKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgVCBuMSwgVCBuMiA+Ci1zdHJ1Y3QgcGx1c193a25kCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKFQsIHZhbHVlICA9IChuMSArIG4yKSk7Ci0gICAgdHlwZWRlZiBpbnRlZ3JhbF9jPCBULHZhbHVlID4gdHlwZTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IHBsdXNfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBhdXg6OnBsdXNfd2tuZDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgTjE6OnZhbHVlCi0gICAgICAgICAgICAsIE4yOjp2YWx1ZQotICAgICAgICAgICAgPjo6dHlwZQotCi0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL3F1b3RlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9xdW90ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNlNzdmYmEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL3F1b3RlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3F1b3RlLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9yZXZlcnNlX2ZvbGRfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvcmV2ZXJzZV9mb2xkX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0M2UzY2RkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9yZXZlcnNlX2ZvbGRfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNDMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9yZXZlcnNlX2ZvbGRfaW1wbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgbG9uZyBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfaW1wbDsKLQotdGVtcGxhdGU8IGxvbmcgTiA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2NodW5rOwotCi10ZW1wbGF0ZTw+IHN0cnVjdCByZXZlcnNlX2ZvbGRfY2h1bms8MD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgZndkX3N0YXRlMCBia3dkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMCBpdGVyYXRvcjsKLSAgICB9OwotCi0gICAgLy8vIEVUSSB3b3JrYXJvdW5kCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgcmVzdWx0XzwgaW50LGludCxpbnQsaW50LGludCA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGludCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpbnQgaXRlcmF0b3I7Ci0gICAgfTsKLQotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcmV2ZXJzZV9mb2xkX2NodW5rPDE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgZndkX3N0YXRlMSBia3dkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMSBpdGVyYXRvcjsKLSAgICB9OwotCi0gICAgLy8vIEVUSSB3b3JrYXJvdW5kCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgcmVzdWx0XzwgaW50LGludCxpbnQsaW50LGludCA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGludCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpbnQgaXRlcmF0b3I7Ci0gICAgfTsKLQotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcmV2ZXJzZV9mb2xkX2NodW5rPDI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBmd2Rfc3RhdGUyIGJrd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIyIGl0ZXJhdG9yOwotICAgIH07Ci0KLSAgICAvLy8gRVRJIHdvcmthcm91bmQKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCByZXN1bHRfPCBpbnQsaW50LGludCxpbnQsaW50ID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgaW50IHN0YXRlOwotICAgICAgICB0eXBlZGVmIGludCBpdGVyYXRvcjsKLSAgICB9OwotCi19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCByZXZlcnNlX2ZvbGRfY2h1bms8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgZndkX3N0YXRlMyBia3dkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUzLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMyBpdGVyYXRvcjsKLSAgICB9OwotCi0gICAgLy8vIEVUSSB3b3JrYXJvdW5kCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgcmVzdWx0XzwgaW50LGludCxpbnQsaW50LGludCA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGludCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpbnQgaXRlcmF0b3I7Ci0gICAgfTsKLQotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcmV2ZXJzZV9mb2xkX2NodW5rPDQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUzLCB0eXBlbmFtZSBkZXJlZjxpdGVyMz46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgZndkX3N0YXRlNCBia3dkX3N0YXRlNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGU0LCB0eXBlbmFtZSBkZXJlZjxpdGVyMz46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUzLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyNCBpdGVyYXRvcjsKLSAgICB9OwotCi0gICAgLy8vIEVUSSB3b3JrYXJvdW5kCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgcmVzdWx0XzwgaW50LGludCxpbnQsaW50LGludCA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGludCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpbnQgaXRlcmF0b3I7Ci0gICAgfTsKLQotfTsKLQotdGVtcGxhdGU8IGxvbmcgTiA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2NodW5rCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUzLCB0eXBlbmFtZSBkZXJlZjxpdGVyMz46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgcmV2ZXJzZV9mb2xkX2ltcGw8Ci0gICAgICAgICAgICAgICggKE4gLSA0KSA8IDAgPyAwIDogTiAtIDQgKQotICAgICAgICAgICAgLCBpdGVyNAotICAgICAgICAgICAgLCBMYXN0Ci0gICAgICAgICAgICAsIGZ3ZF9zdGF0ZTQKLSAgICAgICAgICAgICwgQmFja3dhcmRPcAotICAgICAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgICAgID4gbmVzdGVkX2NodW5rOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX2NodW5rOjpzdGF0ZSBia3dkX3N0YXRlNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGU0LCB0eXBlbmFtZSBkZXJlZjxpdGVyMz46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUzLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfY2h1bms6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9zdGVwOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9udWxsX3N0ZXAKLXsKLSAgICB0eXBlZGVmIExhc3QgaXRlcmF0b3I7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfY2h1bms8IC0xID4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgaXNfc2FtZTwgRmlyc3QsTGFzdCA+Ojp0eXBlCi0gICAgICAgICAgICAsIHJldmVyc2VfZm9sZF9udWxsX3N0ZXA8IExhc3QsU3RhdGUgPgotICAgICAgICAgICAgLCByZXZlcnNlX2ZvbGRfc3RlcDwgRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci0gICAgICAgICAgICA+Ojp0eXBlIHJlc187Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjpzdGF0ZSBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjppdGVyYXRvciBpdGVyYXRvcjsKLSAgICB9OwotCi0gICAgLy8vIEVUSSB3b3JrYXJvdW5kCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgcmVzdWx0XzwgaW50LGludCxpbnQsaW50LGludCA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGludCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpbnQgaXRlcmF0b3I7Ci0gICAgfTsKLQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfc3RlcAotewotICAgIHR5cGVkZWYgcmV2ZXJzZV9mb2xkX2NodW5rPCAtMSA+Ojp0ZW1wbGF0ZSByZXN1bHRfPAotICAgICAgICAgIHR5cGVuYW1lIG1wbDo6bmV4dDxGaXJzdD46OnR5cGUKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgYXBwbHkyPEZvcndhcmRPcCxTdGF0ZSwgdHlwZW5hbWUgZGVyZWY8Rmlyc3Q+Ojp0eXBlPjo6dHlwZQotICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiBuZXN0ZWRfc3RlcDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPAotICAgICAgICAgIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBuZXN0ZWRfc3RlcDo6c3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBkZXJlZjxGaXJzdD46OnR5cGUKLSAgICAgICAgPjo6dHlwZSBzdGF0ZTsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX3N0ZXA6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBsb25nIE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9pbXBsCi0gICAgOiByZXZlcnNlX2ZvbGRfY2h1bms8Tj4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLX07Ci0KLX19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL3JldmVyc2VfaXRlcl9mb2xkX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL3JldmVyc2VfaXRlcl9mb2xkX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NDQxN2Y0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9yZXZlcnNlX2l0ZXJfZm9sZF9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM0MyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL3JldmVyc2VfaXRlcl9mb2xkX2ltcGwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIGxvbmcgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbDsKLQotdGVtcGxhdGU8IGxvbmcgTiA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfY2h1bms7Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2NodW5rPDA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTAgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjAgaXRlcmF0b3I7Ci0gICAgfTsKLQotICAgIC8vLyBFVEkgd29ya2Fyb3VuZAotICAgIHRlbXBsYXRlPD4gc3RydWN0IHJlc3VsdF88IGludCxpbnQsaW50LGludCxpbnQgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBpbnQgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaW50IGl0ZXJhdG9yOwotICAgIH07Ci0KLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2NodW5rPDE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTAsaXRlcjAgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgZndkX3N0YXRlMSBia3dkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTEsaXRlcjAgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMSBpdGVyYXRvcjsKLSAgICB9OwotCi0gICAgLy8vIEVUSSB3b3JrYXJvdW5kCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgcmVzdWx0XzwgaW50LGludCxpbnQsaW50LGludCA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGludCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpbnQgaXRlcmF0b3I7Ci0gICAgfTsKLQotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfY2h1bms8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMCxpdGVyMCA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUxLGl0ZXIxID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTIgYmt3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUyLGl0ZXIxID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUxLGl0ZXIwID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjIgaXRlcmF0b3I7Ci0gICAgfTsKLQotICAgIC8vLyBFVEkgd29ya2Fyb3VuZAotICAgIHRlbXBsYXRlPD4gc3RydWN0IHJlc3VsdF88IGludCxpbnQsaW50LGludCxpbnQgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBpbnQgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaW50IGl0ZXJhdG9yOwotICAgIH07Ci0KLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2NodW5rPDM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTAsaXRlcjAgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMSxpdGVyMSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUyLGl0ZXIyID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTMgYmt3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUzLGl0ZXIyID46OnR5cGUgYmt3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUyLGl0ZXIxID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUxLGl0ZXIwID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjMgaXRlcmF0b3I7Ci0gICAgfTsKLQotICAgIC8vLyBFVEkgd29ya2Fyb3VuZAotICAgIHRlbXBsYXRlPD4gc3RydWN0IHJlc3VsdF88IGludCxpbnQsaW50LGludCxpbnQgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBpbnQgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaW50IGl0ZXJhdG9yOwotICAgIH07Ci0KLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2NodW5rPDQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTAsaXRlcjAgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMSxpdGVyMSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUyLGl0ZXIyID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTMsaXRlcjMgPjo6dHlwZSBmd2Rfc3RhdGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgZndkX3N0YXRlNCBia3dkX3N0YXRlNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTQsaXRlcjMgPjo6dHlwZSBia3dkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTMsaXRlcjIgPjo6dHlwZSBia3dkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTIsaXRlcjEgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTEsaXRlcjAgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyNCBpdGVyYXRvcjsKLSAgICB9OwotCi0gICAgLy8vIEVUSSB3b3JrYXJvdW5kCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgcmVzdWx0XzwgaW50LGludCxpbnQsaW50LGludCA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGludCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpbnQgaXRlcmF0b3I7Ci0gICAgfTsKLQotfTsKLQotdGVtcGxhdGU8IGxvbmcgTiA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfY2h1bmsKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMCxpdGVyMCA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUxLGl0ZXIxID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTIsaXRlcjIgPjo6dHlwZSBmd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMyxpdGVyMyA+Ojp0eXBlIGZ3ZF9zdGF0ZTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsPAotICAgICAgICAgICAgICAoIChOIC0gNCkgPCAwID8gMCA6IE4gLSA0ICkKLSAgICAgICAgICAgICwgaXRlcjQKLSAgICAgICAgICAgICwgTGFzdAotICAgICAgICAgICAgLCBmd2Rfc3RhdGU0Ci0gICAgICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgICAgICA+IG5lc3RlZF9jaHVuazsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9jaHVuazo6c3RhdGUgYmt3ZF9zdGF0ZTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGU0LGl0ZXIzID46OnR5cGUgYmt3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUzLGl0ZXIyID46OnR5cGUgYmt3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUyLGl0ZXIxID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUxLGl0ZXIwID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX2NodW5rOjppdGVyYXRvciBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9zdGVwOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX251bGxfc3RlcAotewotICAgIHR5cGVkZWYgTGFzdCBpdGVyYXRvcjsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2NodW5rPCAtMSA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGlzX3NhbWU8IEZpcnN0LExhc3QgPjo6dHlwZQotICAgICAgICAgICAgLCByZXZlcnNlX2l0ZXJfZm9sZF9udWxsX3N0ZXA8IExhc3QsU3RhdGUgPgotICAgICAgICAgICAgLCByZXZlcnNlX2l0ZXJfZm9sZF9zdGVwPCBGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLSAgICAgICAgICAgID46OnR5cGUgcmVzXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186OnN0YXRlIHN0YXRlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186Oml0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIH07Ci0KLSAgICAvLy8gRVRJIHdvcmthcm91bmQKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCByZXN1bHRfPCBpbnQsaW50LGludCxpbnQsaW50ID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgaW50IHN0YXRlOwotICAgICAgICB0eXBlZGVmIGludCBpdGVyYXRvcjsKLSAgICB9OwotCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX3N0ZXAKLXsKLSAgICB0eXBlZGVmIHJldmVyc2VfaXRlcl9mb2xkX2NodW5rPCAtMSA+Ojp0ZW1wbGF0ZSByZXN1bHRfPAotICAgICAgICAgIHR5cGVuYW1lIG1wbDo6bmV4dDxGaXJzdD46OnR5cGUKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsU3RhdGUsRmlyc3QgPjo6dHlwZQotICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiBuZXN0ZWRfc3RlcDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPAotICAgICAgICAgIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBuZXN0ZWRfc3RlcDo6c3RhdGUKLSAgICAgICAgLCBGaXJzdAotICAgICAgICA+Ojp0eXBlIHN0YXRlOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfc3RlcDo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGxvbmcgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbAotICAgIDogcmV2ZXJzZV9pdGVyX2ZvbGRfY2h1bms8Tj4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLX07Ci0KLX19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL3NldC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvc2V0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDg0ZDUzZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvc2V0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU1NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9zZXQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IGludCBOID4KLXN0cnVjdCBzZXRfY2hvb3NlcjsKLQotfQotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jaG9vc2VyPDA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgc2V0MDwKLSAgICAgICAgICAgICAKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3NlcjwxPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE8Ci0gICAgICAgICAgICAgIFQwCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2Nob29zZXI8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQyPAotICAgICAgICAgICAgICBUMCwgVDEKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3NlcjwzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDM8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3Nlcjw0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDQ8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2Nob29zZXI8NT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ1PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3Nlcjw2PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDY8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3Nlcjw3PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDc8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2Nob29zZXI8OD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ4PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3Nlcjw5PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDk8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3NlcjwxMD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3NlcjwxMT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jaG9vc2VyPDEyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDEyPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3NlcjwxMz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMzwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3NlcjwxND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jaG9vc2VyPDE1PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE1PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3NlcjwxNj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNjwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3NlcjwxNz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNzwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jaG9vc2VyPDE4PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE4PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3NlcjwxOT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxOTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3NlcjwyMD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQyMDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotc3RydWN0IGlzX3NldF9hcmcKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gdHJ1ZSk7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaXNfc2V0X2FyZzxuYT4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gZmFsc2UpOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUKLSAgICAsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAKLSAgICAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1Ci0gICAgLCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMAotICAgID4KLXN0cnVjdCBzZXRfY291bnRfYXJncwotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0KLSAgICAgICAgICBpc19zZXRfYXJnPFQxPjo6dmFsdWUgKyBpc19zZXRfYXJnPFQyPjo6dmFsdWUgCi0gICAgICAgICsgaXNfc2V0X2FyZzxUMz46OnZhbHVlICsgaXNfc2V0X2FyZzxUND46OnZhbHVlIAotICAgICAgICArIGlzX3NldF9hcmc8VDU+Ojp2YWx1ZSArIGlzX3NldF9hcmc8VDY+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfYXJnPFQ3Pjo6dmFsdWUgKyBpc19zZXRfYXJnPFQ4Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfc2V0X2FyZzxUOT46OnZhbHVlICsgaXNfc2V0X2FyZzxUMTA+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfYXJnPFQxMT46OnZhbHVlICsgaXNfc2V0X2FyZzxUMTI+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfYXJnPFQxMz46OnZhbHVlICsgaXNfc2V0X2FyZzxUMTQ+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfYXJnPFQxNT46OnZhbHVlICsgaXNfc2V0X2FyZzxUMTY+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfYXJnPFQxNz46OnZhbHVlICsgaXNfc2V0X2FyZzxUMTg+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfYXJnPFQxOT46OnZhbHVlICsgaXNfc2V0X2FyZzxUMjA+Ojp2YWx1ZQotICAgICAgICApOwotCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2ltcGwKLXsKLSAgICB0eXBlZGVmIGF1eDo6c2V0X2NvdW50X2FyZ3M8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+IGFyZ19udW1fOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnNldF9jaG9vc2VyPCBhcmdfbnVtXzo6dmFsdWUgPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCA9IG5hLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hLCB0eXBlbmFtZSBUNiA9IG5hLCB0eXBlbmFtZSBUNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUOCA9IG5hLCB0eXBlbmFtZSBUOSA9IG5hLCB0eXBlbmFtZSBUMTAgPSBuYSwgdHlwZW5hbWUgVDExID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxMiA9IG5hLCB0eXBlbmFtZSBUMTMgPSBuYSwgdHlwZW5hbWUgVDE0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxNSA9IG5hLCB0eXBlbmFtZSBUMTYgPSBuYSwgdHlwZW5hbWUgVDE3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxOCA9IG5hLCB0eXBlbmFtZSBUMTkgPSBuYQotICAgID4KLXN0cnVjdCBzZXQKLSAgICA6IGF1eDo6c2V0X2ltcGw8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ojp0eXBlCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnNldF9pbXBsPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL3NldF9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9zZXRfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNiNWYyYWIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL3NldF9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUzNCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9zZXRfYy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgaW50IE4gPgotc3RydWN0IHNldF9jX2Nob29zZXI7Ci0KLX0KLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MF9jPAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3NlcjwxPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDFfYzwKLSAgICAgICAgICAgICAgVCwgQzAKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0Ml9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0M19jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3Nlcjw0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDRfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDU+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NV9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDY+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0Nl9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3Nlcjw3PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDdfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDg+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0OF9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDk+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0OV9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3NlcjwxMD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMF9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8MTE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTFfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8MTI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTJfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3NlcjwxMz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxM19jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8MTQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTRfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8MTU+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTVfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3NlcjwxNj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNl9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQsIEMxNQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8MTc+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTdfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUsIEMxNgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8MTg+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MThfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUsIEMxNiwgQzE3Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3NlcjwxOT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxOV9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQsIEMxNSwgQzE2LCBDMTcsIEMxOAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8MjA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MjBfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUsIEMxNiwgQzE3LCBDMTgsIEMxOQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGxvbmcgQyA+Ci1zdHJ1Y3QgaXNfc2V0X2NfYXJnCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlICA9IHRydWUpOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGlzX3NldF9jX2FyZzxMT05HX01BWD4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gZmFsc2UpOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1LCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4Ci0gICAgLCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1Ci0gICAgLCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOSwgbG9uZyBDMjAKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2NfY291bnRfYXJncwotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0KLSAgICAgICAgICBpc19zZXRfY19hcmc8QzE+Ojp2YWx1ZSArIGlzX3NldF9jX2FyZzxDMj46OnZhbHVlIAotICAgICAgICArIGlzX3NldF9jX2FyZzxDMz46OnZhbHVlICsgaXNfc2V0X2NfYXJnPEM0Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfc2V0X2NfYXJnPEM1Pjo6dmFsdWUgKyBpc19zZXRfY19hcmc8QzY+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfY19hcmc8Qzc+Ojp2YWx1ZSArIGlzX3NldF9jX2FyZzxDOD46OnZhbHVlIAotICAgICAgICArIGlzX3NldF9jX2FyZzxDOT46OnZhbHVlICsgaXNfc2V0X2NfYXJnPEMxMD46OnZhbHVlIAotICAgICAgICArIGlzX3NldF9jX2FyZzxDMTE+Ojp2YWx1ZSArIGlzX3NldF9jX2FyZzxDMTI+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfY19hcmc8QzEzPjo6dmFsdWUgKyBpc19zZXRfY19hcmc8QzE0Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfc2V0X2NfYXJnPEMxNT46OnZhbHVlICsgaXNfc2V0X2NfYXJnPEMxNj46OnZhbHVlIAotICAgICAgICArIGlzX3NldF9jX2FyZzxDMTc+Ojp2YWx1ZSArIGlzX3NldF9jX2FyZzxDMTg+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfY19hcmc8QzE5Pjo6dmFsdWUgKyBpc19zZXRfY19hcmc8QzIwPjo6dmFsdWUKLSAgICAgICAgKTsKLQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgID4KLXN0cnVjdCBzZXRfY19pbXBsCi17Ci0gICAgdHlwZWRlZiBhdXg6OnNldF9jX2NvdW50X2FyZ3M8Ci0gICAgICAgICAgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUsIEMxNiwgQzE3LCBDMTgsIEMxOQotICAgICAgICA+IGFyZ19udW1fOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnNldF9jX2Nob29zZXI8IGFyZ19udW1fOjp2YWx1ZSA+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCA9IExPTkdfTUFYLCBsb25nIEMxID0gTE9OR19NQVgsIGxvbmcgQzIgPSBMT05HX01BWAotICAgICwgbG9uZyBDMyA9IExPTkdfTUFYLCBsb25nIEM0ID0gTE9OR19NQVgsIGxvbmcgQzUgPSBMT05HX01BWAotICAgICwgbG9uZyBDNiA9IExPTkdfTUFYLCBsb25nIEM3ID0gTE9OR19NQVgsIGxvbmcgQzggPSBMT05HX01BWAotICAgICwgbG9uZyBDOSA9IExPTkdfTUFYLCBsb25nIEMxMCA9IExPTkdfTUFYLCBsb25nIEMxMSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxMiA9IExPTkdfTUFYLCBsb25nIEMxMyA9IExPTkdfTUFYLCBsb25nIEMxNCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxNSA9IExPTkdfTUFYLCBsb25nIEMxNiA9IExPTkdfTUFYLCBsb25nIEMxNyA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxOCA9IExPTkdfTUFYLCBsb25nIEMxOSA9IExPTkdfTUFYCi0gICAgPgotc3RydWN0IHNldF9jCi0gICAgOiBhdXg6OnNldF9jX2ltcGw8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUsIEMxNiwgQzE3LCBDMTgsIEMxOQotICAgICAgICA+Ojp0eXBlCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnNldF9jX2ltcGw8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUsIEMxNiwgQzE3LCBDMTgsIEMxOQotICAgICAgICA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvc2hpZnRfbGVmdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvc2hpZnRfbGVmdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU4MTk5OWEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL3NoaWZ0X2xlZnQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTE0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLyBDb3B5cmlnaHQgSmFhcCBTdXRlciAyMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3NoaWZ0X2xlZnQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzFfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcxKTo6dmFsdWUKLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMl8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzIpOjp2YWx1ZQotICAgID4KLXN0cnVjdCBzaGlmdF9sZWZ0X2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCB0YWcxXyA+IHRhZzJfICkKLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgc2hpZnRfbGVmdF9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgc2hpZnRfbGVmdF9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IHNoaWZ0X2xlZnRfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHNoaWZ0X2xlZnRfaW1wbDwgbmEsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHNoaWZ0X2xlZnRfaW1wbDwgaW50ZWdyYWxfY190YWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHNoaWZ0X2xlZnRfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IHNoaWZ0X2xlZnQKLSAgICA6IGF1eDo6bXN2Y19ldGlfYmFzZTwgdHlwZW5hbWUgYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgc2hpZnRfbGVmdF9pbXBsPAotICAgICAgICAgICAgICB0eXBlbmFtZSBzaGlmdF9sZWZ0X3RhZzxOMT46OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgc2hpZnRfbGVmdF90YWc8TjI+Ojp0eXBlCi0gICAgICAgICAgICA+Ci0gICAgICAgICwgTjEKLSAgICAgICAgLCBOMgotICAgICAgICA+Ojp0eXBlID46OnR5cGUKLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgc2hpZnRfbGVmdCwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgc2hpZnRfbGVmdCkKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHR5cGVuYW1lIFNoaWZ0LCBUIG4sIFNoaWZ0IHMgPgotc3RydWN0IHNoaWZ0X2xlZnRfd2tuZAotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChULCB2YWx1ZSAgPSAobiA8PCBzKSk7Ci0gICAgdHlwZWRlZiBpbnRlZ3JhbF9jPCBULHZhbHVlID4gdHlwZTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IHNoaWZ0X2xlZnRfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOLCB0eXBlbmFtZSBTID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogYXV4OjpzaGlmdF9sZWZ0X3drbmQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIE46OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgUzo6dmFsdWVfdHlwZQotICAgICAgICAgICAgLCBOOjp2YWx1ZQotICAgICAgICAgICAgLCBTOjp2YWx1ZQotICAgICAgICAgICAgPjo6dHlwZQotCi0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL3NoaWZ0X3JpZ2h0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC9zaGlmdF9yaWdodC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNkYjYwYTYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL3NoaWZ0X3JpZ2h0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExNCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8gQ29weXJpZ2h0IEphYXAgU3V0ZXIgMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9zaGlmdF9yaWdodC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0KLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMV8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzEpOjp2YWx1ZQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcyXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMik6OnZhbHVlCi0gICAgPgotc3RydWN0IHNoaWZ0X3JpZ2h0X2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCB0YWcxXyA+IHRhZzJfICkKLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgc2hpZnRfcmlnaHRfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IHNoaWZ0X3JpZ2h0X2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3Qgc2hpZnRfcmlnaHRfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHNoaWZ0X3JpZ2h0X2ltcGw8IG5hLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBzaGlmdF9yaWdodF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3Qgc2hpZnRfcmlnaHRfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IHNoaWZ0X3JpZ2h0Ci0gICAgOiBhdXg6Om1zdmNfZXRpX2Jhc2U8IHR5cGVuYW1lIGFwcGx5X3dyYXAyPAotICAgICAgICAgIHNoaWZ0X3JpZ2h0X2ltcGw8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIHNoaWZ0X3JpZ2h0X3RhZzxOMT46OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgc2hpZnRfcmlnaHRfdGFnPE4yPjo6dHlwZQotICAgICAgICAgICAgPgotICAgICAgICAsIE4xCi0gICAgICAgICwgTjIKLSAgICAgICAgPjo6dHlwZSA+Ojp0eXBlCi0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIHNoaWZ0X3JpZ2h0LCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBzaGlmdF9yaWdodCkKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHR5cGVuYW1lIFNoaWZ0LCBUIG4sIFNoaWZ0IHMgPgotc3RydWN0IHNoaWZ0X3JpZ2h0X3drbmQKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoVCwgdmFsdWUgID0gKG4gPj4gcykpOwotICAgIHR5cGVkZWYgaW50ZWdyYWxfYzwgVCx2YWx1ZSA+IHR5cGU7Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzaGlmdF9yaWdodF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4sIHR5cGVuYW1lIFMgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBhdXg6OnNoaWZ0X3JpZ2h0X3drbmQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIE46OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgUzo6dmFsdWVfdHlwZQotICAgICAgICAgICAgLCBOOjp2YWx1ZQotICAgICAgICAgICAgLCBTOjp2YWx1ZQotICAgICAgICAgICAgPjo6dHlwZQotCi0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL3RlbXBsYXRlX2FyaXR5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC90ZW1wbGF0ZV9hcml0eS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzMWRiYTQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL3RlbXBsYXRlX2FyaXR5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vdGVtcGxhdGVfYXJpdHkuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgYm9vbCA+Ci1zdHJ1Y3QgdGVtcGxhdGVfYXJpdHlfaW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGID4gc3RydWN0IHJlc3VsdF8KLSAgICAgICAgOiBtcGw6OmludF88IC0xID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB0ZW1wbGF0ZV9hcml0eV9pbXBsPHRydWU+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYgPiBzdHJ1Y3QgcmVzdWx0XwotICAgICAgICA6IEY6OmFyaXR5Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiA+Ci1zdHJ1Y3QgdGVtcGxhdGVfYXJpdHkKLSAgICA6IHRlbXBsYXRlX2FyaXR5X2ltcGw8IDo6bmRuYm9vc3Q6Om1wbDo6YXV4OjpoYXNfcmViaW5kPEY+Ojp2YWx1ZSA+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxGPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHRlbXBsYXRlX2FyaXR5PGludD4KLSAgICA6IG1wbDo6aW50XzwgLTEgPgotewotfTsKLQotfX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC90aW1lcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvdGltZXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYmVjYjYwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC90aW1lcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDggKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdGltZXMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzFfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcxKTo6dmFsdWUKLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMl8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzIpOjp2YWx1ZQotICAgID4KLXN0cnVjdCB0aW1lc19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggdGFnMV8gPiB0YWcyXyApCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IHRpbWVzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCB0aW1lc19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IHRpbWVzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCB0aW1lc19pbXBsPCBuYSxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgdGltZXNfaW1wbDwgaW50ZWdyYWxfY190YWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHRpbWVzX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCB0aW1lczI7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IHRpbWVzCi0KLSAgICA6IGlmXzwKLQotICAgICAgICAgIGlzX25hPE4zPgotICAgICAgICAsIHRpbWVzMjwgTjEsTjIgPgotICAgICAgICAsIHRpbWVzPAotICAgICAgICAgICAgICB0aW1lczI8IE4xLE4yID4KLSAgICAgICAgICAgICwgTjMsIE40LCBONQotICAgICAgICAgICAgPgotICAgICAgICA+Ojp0eXBlCi0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCB0aW1lcwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMQotICAgICwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgdGltZXMyCi0gICAgOiBhdXg6Om1zdmNfZXRpX2Jhc2U8IHR5cGVuYW1lIGFwcGx5X3dyYXAyPAotICAgICAgICAgIHRpbWVzX2ltcGw8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIHRpbWVzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgdGltZXNfdGFnPE4yPjo6dHlwZQotICAgICAgICAgICAgPgotICAgICAgICAsIE4xCi0gICAgICAgICwgTjIKLSAgICAgICAgPjo6dHlwZSA+Ojp0eXBlCi0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIHRpbWVzMiwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgdGltZXMpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCB0eXBlbmFtZSBULCBUIG4xLCBUIG4yID4KLXN0cnVjdCB0aW1lc193a25kCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKFQsIHZhbHVlICA9IChuMSAqIG4yKSk7Ci0gICAgdHlwZWRlZiBpbnRlZ3JhbF9jPCBULHZhbHVlID4gdHlwZTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IHRpbWVzX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogYXV4Ojp0aW1lc193a25kPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCBOMTo6dmFsdWUKLSAgICAgICAgICAgICwgTjI6OnZhbHVlCi0gICAgICAgICAgICA+Ojp0eXBlCi0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvdW5wYWNrX2FyZ3MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL3VucGFja19hcmdzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGNkYjQ2ZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvdW5wYWNrX2FyZ3MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTA5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMi0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3VucGFja19hcmdzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgc2l6ZSkgPiBzdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4gc3RydWN0IGFwcGx5OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDwwPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogYXBwbHkwPAotICAgICAgICAgICAgICBGCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPDE+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBhcHBseTE8Ci0gICAgICAgICAgICAgIEYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywwID46OnR5cGUKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHVucGFja19hcmdzX2ltcGw8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGFwcGx5MjwKLSAgICAgICAgICAgICAgRgotICAgICAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDAgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywxID46OnR5cGUKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHVucGFja19hcmdzX2ltcGw8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGFwcGx5MzwKLSAgICAgICAgICAgICAgRgotICAgICAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDAgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywxID46OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywyID46OnR5cGUKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHVucGFja19hcmdzX2ltcGw8ND4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGFwcGx5NDwKLSAgICAgICAgICAgICAgRgotICAgICAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDAgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywxID46OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywyID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMyA+Ojp0eXBlCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPDU+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBhcHBseTU8Ci0gICAgICAgICAgICAgIEYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywwID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMSA+Ojp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMiA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDMgPjo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDQgPjo6dHlwZQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3MKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgQXJncyA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogYXV4Ojp1bnBhY2tfYXJnc19pbXBsPCBzaXplPEFyZ3M+Ojp2YWx1ZSA+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIGFwcGx5PCBGLEFyZ3MgPgotCi0gICAgewotICAgIH07Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX1BBU1NfVEhST1VHSF9MQU1CREFfU1BFQygxLCB1bnBhY2tfYXJncykKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL3ZlY3Rvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvdmVjdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWNiNjcwNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNjAvdmVjdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU1NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC92ZWN0b3IuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IGludCBOID4KLXN0cnVjdCB2ZWN0b3JfY2hvb3NlcjsKLQotfQotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jaG9vc2VyPDA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDwKLSAgICAgICAgICAgICAKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY2hvb3NlcjwxPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE8Ci0gICAgICAgICAgICAgIFQwCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2Nob29zZXI8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IyPAotICAgICAgICAgICAgICBUMCwgVDEKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY2hvb3NlcjwzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjM8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY2hvb3Nlcjw0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjQ8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2Nob29zZXI8NT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I1PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY2hvb3Nlcjw2PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjY8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY2hvb3Nlcjw3PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcjc8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdmVjdG9yX2Nob29zZXI8OD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I4PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY2hvb3Nlcjw5PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcjk8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY2hvb3NlcjwxMD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY2hvb3NlcjwxMT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jaG9vc2VyPDEyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEyPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY2hvb3NlcjwxMz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMzwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY2hvb3NlcjwxND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jaG9vc2VyPDE1PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE1PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY2hvb3NlcjwxNj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNjwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY2hvb3NlcjwxNz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNzwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHZlY3Rvcl9jaG9vc2VyPDE4PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE4PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY2hvb3NlcjwxOT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxOTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY2hvb3NlcjwyMD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IyMDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotc3RydWN0IGlzX3ZlY3Rvcl9hcmcKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gdHJ1ZSk7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaXNfdmVjdG9yX2FyZzxuYT4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gZmFsc2UpOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUKLSAgICAsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAKLSAgICAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1Ci0gICAgLCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMAotICAgID4KLXN0cnVjdCB2ZWN0b3JfY291bnRfYXJncwotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0KLSAgICAgICAgICBpc192ZWN0b3JfYXJnPFQxPjo6dmFsdWUgKyBpc192ZWN0b3JfYXJnPFQyPjo6dmFsdWUgCi0gICAgICAgICsgaXNfdmVjdG9yX2FyZzxUMz46OnZhbHVlICsgaXNfdmVjdG9yX2FyZzxUND46OnZhbHVlIAotICAgICAgICArIGlzX3ZlY3Rvcl9hcmc8VDU+Ojp2YWx1ZSArIGlzX3ZlY3Rvcl9hcmc8VDY+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc192ZWN0b3JfYXJnPFQ3Pjo6dmFsdWUgKyBpc192ZWN0b3JfYXJnPFQ4Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfdmVjdG9yX2FyZzxUOT46OnZhbHVlICsgaXNfdmVjdG9yX2FyZzxUMTA+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc192ZWN0b3JfYXJnPFQxMT46OnZhbHVlICsgaXNfdmVjdG9yX2FyZzxUMTI+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc192ZWN0b3JfYXJnPFQxMz46OnZhbHVlICsgaXNfdmVjdG9yX2FyZzxUMTQ+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc192ZWN0b3JfYXJnPFQxNT46OnZhbHVlICsgaXNfdmVjdG9yX2FyZzxUMTY+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc192ZWN0b3JfYXJnPFQxNz46OnZhbHVlICsgaXNfdmVjdG9yX2FyZzxUMTg+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc192ZWN0b3JfYXJnPFQxOT46OnZhbHVlICsgaXNfdmVjdG9yX2FyZzxUMjA+Ojp2YWx1ZQotICAgICAgICApOwotCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2ltcGwKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX2NvdW50X2FyZ3M8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+IGFyZ19udW1fOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZlY3Rvcl9jaG9vc2VyPCBhcmdfbnVtXzo6dmFsdWUgPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCA9IG5hLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hLCB0eXBlbmFtZSBUNiA9IG5hLCB0eXBlbmFtZSBUNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUOCA9IG5hLCB0eXBlbmFtZSBUOSA9IG5hLCB0eXBlbmFtZSBUMTAgPSBuYSwgdHlwZW5hbWUgVDExID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxMiA9IG5hLCB0eXBlbmFtZSBUMTMgPSBuYSwgdHlwZW5hbWUgVDE0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxNSA9IG5hLCB0eXBlbmFtZSBUMTYgPSBuYSwgdHlwZW5hbWUgVDE3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxOCA9IG5hLCB0eXBlbmFtZSBUMTkgPSBuYQotICAgID4KLXN0cnVjdCB2ZWN0b3IKLSAgICA6IGF1eDo6dmVjdG9yX2ltcGw8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ojp0eXBlCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZlY3Rvcl9pbXBsPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL3ZlY3Rvcl9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM2MC92ZWN0b3JfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2NTRjNmYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzYwL3ZlY3Rvcl9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUzNCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC92ZWN0b3JfYy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgaW50IE4gPgotc3RydWN0IHZlY3Rvcl9jX2Nob29zZXI7Ci0KLX0KLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB2ZWN0b3JfY19jaG9vc2VyPDA+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+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvYWR2YW5jZV9iYWNrd2FyZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvYWR2YW5jZV9iYWNrd2FyZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBlMGM4MjguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2FkdmFuY2VfYmFja3dhcmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9hZHZhbmNlX2JhY2t3YXJkLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGxvbmcgTiA+IHN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkOwotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ8MD4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ8MT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIGl0ZXIxIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkPDI+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjIgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjMgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ8ND4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgICAgICB0eXBlZGVmIGl0ZXI0IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCBsb25nIE4gPgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGFkdmFuY2VfYmFja3dhcmQ8ND4KLSAgICAgICAgICAgICwgSXRlcmF0b3IKLSAgICAgICAgICAgID46OnR5cGUgY2h1bmtfcmVzdWx0XzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBhZHZhbmNlX2JhY2t3YXJkPCgKLSAgICAgICAgICAgICAgICAoTiAtIDQpIDwgMAotICAgICAgICAgICAgICAgICAgICA/IDAKLSAgICAgICAgICAgICAgICAgICAgOiBOIC0gNAotICAgICAgICAgICAgICAgICAgICApPgotICAgICAgICAgICAgLCBjaHVua19yZXN1bHRfCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvYWR2YW5jZV9mb3J3YXJkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9hZHZhbmNlX2ZvcndhcmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiM2E1YWZkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9hZHZhbmNlX2ZvcndhcmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9hZHZhbmNlX2ZvcndhcmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgbG9uZyBOID4gc3RydWN0IGFkdmFuY2VfZm9yd2FyZDsKLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ8MD4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZDwxPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkPDI+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIGl0ZXIyIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjMgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZDw0PgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAgICAgdHlwZWRlZiBpdGVyNCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgbG9uZyBOID4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGFkdmFuY2VfZm9yd2FyZDw0PgotICAgICAgICAgICAgLCBJdGVyYXRvcgotICAgICAgICAgICAgPjo6dHlwZSBjaHVua19yZXN1bHRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGFkdmFuY2VfZm9yd2FyZDwoCi0gICAgICAgICAgICAgICAgKE4gLSA0KSA8IDAKLSAgICAgICAgICAgICAgICAgICAgPyAwCi0gICAgICAgICAgICAgICAgICAgIDogTiAtIDQKLSAgICAgICAgICAgICAgICAgICAgKT4KLSAgICAgICAgICAgICwgY2h1bmtfcmVzdWx0XwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi19fX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2FuZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvYW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWRhNmYzMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvYW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2FuZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgYm9vbCBDXyA+IHN0cnVjdCBhbmRfaW1wbAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgICAgICA6IGZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYW5kX2ltcGw8dHJ1ZT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICAgICAgOiBhbmRfaW1wbDwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVFlQRV9XS05EKFQxKTo6dmFsdWUKLSAgICAgICAgICAgID46OnRlbXBsYXRlIHJlc3VsdF88IFQyLFQzLFQ0LHRydWVfID4KLSAgICB7Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlPD4gc3RydWN0IHJlc3VsdF88IHRydWVfLHRydWVfLHRydWVfLHRydWVfID4KLSAgICAgICAgOiB0cnVlXwotICAgIHsKLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDIpCi0gICAgLCB0eXBlbmFtZSBUMyA9IHRydWVfLCB0eXBlbmFtZSBUNCA9IHRydWVfLCB0eXBlbmFtZSBUNSA9IHRydWVfCi0gICAgPgotc3RydWN0IGFuZF8KLQotICAgIDogYXV4OjphbmRfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX05FU1RFRF9UWVBFX1dLTkQoVDEpOjp2YWx1ZQotICAgICAgICA+Ojp0ZW1wbGF0ZSByZXN1bHRfPCBUMixUMyxUNCxUNSA+Ci0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBhbmRfCi0gICAgICAgICwgKCBUMSwgVDIsIFQzLCBUNCwgVDUpCi0gICAgICAgICkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoCi0gICAgICAyCi0gICAgLCA1Ci0gICAgLCBhbmRfCi0gICAgKQotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2FwcGx5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9hcHBseS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI4MWZkZGMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2FwcGx5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE2MCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hcHBseS5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGFwcGx5MAotCi0gICAgOiBhcHBseV93cmFwMDwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgMQotICAgICAgICAsIGFwcGx5MAotICAgICAgICAsIChGICkKLSAgICAgICAgKQotfTsKLQotLy8vIHdvcmthcm91bmQgZm9yIEVUSSBidWcKLXRlbXBsYXRlPD4KLXN0cnVjdCBhcHBseTA8aW50PgotewotICAgIHR5cGVkZWYgaW50IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGFwcGx5MQotCi0gICAgOiBhcHBseV93cmFwMTwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAgLCBUMQotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICAyCi0gICAgICAgICwgYXBwbHkxCi0gICAgICAgICwgKEYsIFQxKQotICAgICAgICApCi19OwotCi0vLy8gd29ya2Fyb3VuZCBmb3IgRVRJIGJ1ZwotdGVtcGxhdGU8Pgotc3RydWN0IGFwcGx5MTwgaW50LGludCA+Ci17Ci0gICAgdHlwZWRlZiBpbnQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGFwcGx5MgotCi0gICAgOiBhcHBseV93cmFwMjwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAgLCBUMSwgVDIKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgMwotICAgICAgICAsIGFwcGx5MgotICAgICAgICAsIChGLCBUMSwgVDIpCi0gICAgICAgICkKLX07Ci0KLS8vLyB3b3JrYXJvdW5kIGZvciBFVEkgYnVnCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXBwbHkyPCBpbnQsaW50LGludCA+Ci17Ci0gICAgdHlwZWRlZiBpbnQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBhcHBseTMKLQotICAgIDogYXBwbHlfd3JhcDM8Ci0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgICwgVDEsIFQyLCBUMwotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA0Ci0gICAgICAgICwgYXBwbHkzCi0gICAgICAgICwgKEYsIFQxLCBUMiwgVDMpCi0gICAgICAgICkKLX07Ci0KLS8vLyB3b3JrYXJvdW5kIGZvciBFVEkgYnVnCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXBwbHkzPCBpbnQsaW50LGludCxpbnQgPgotewotICAgIHR5cGVkZWYgaW50IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGFwcGx5NAotCi0gICAgOiBhcHBseV93cmFwNDwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAgLCBUMSwgVDIsIFQzLCBUNAotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgYXBwbHk0Ci0gICAgICAgICwgKEYsIFQxLCBUMiwgVDMsIFQ0KQotICAgICAgICApCi19OwotCi0vLy8gd29ya2Fyb3VuZCBmb3IgRVRJIGJ1ZwotdGVtcGxhdGU8Pgotc3RydWN0IGFwcGx5NDwgaW50LGludCxpbnQsaW50LGludCA+Ci17Ci0gICAgdHlwZWRlZiBpbnQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGFwcGx5NQotCi0gICAgOiBhcHBseV93cmFwNTwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAgLCBUMSwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNgotICAgICAgICAsIGFwcGx5NQotICAgICAgICAsIChGLCBUMSwgVDIsIFQzLCBUNCwgVDUpCi0gICAgICAgICkKLX07Ci0KLS8vLyB3b3JrYXJvdW5kIGZvciBFVEkgYnVnCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXBwbHk1PCBpbnQsaW50LGludCxpbnQsaW50LGludCA+Ci17Ci0gICAgdHlwZWRlZiBpbnQgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9hcHBseV9md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2FwcGx5X2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyYTlhNzYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2FwcGx5X2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hcHBseV9md2QuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseTA7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkxOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBhcHBseTI7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBhcHBseTM7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk0OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBhcHBseTU7Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9hcHBseV93cmFwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9hcHBseV93cmFwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGZkMmYwNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvYXBwbHlfd3JhcC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzggKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXBwbHlfd3JhcC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0KLSAgICAsIHR5cGVuYW1lIGhhc19hcHBseV8gPSB0eXBlbmFtZSBhdXg6Omhhc19hcHBseTxGPjo6dHlwZQotCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXAwCi0KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAKLSAgICAgICAgPjo6dHlwZSB0eXBlOwotCi19OwotCi0vLy8gd29ya2Fyb3VuZCBmb3IgRVRJIGJ1ZwotdGVtcGxhdGU8Pgotc3RydWN0IGFwcGx5X3dyYXAwPGludD4KLXsKLSAgICB0eXBlZGVmIGludCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXAxCi0KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgVDEKLSAgICAgICAgPjo6dHlwZSB0eXBlOwotCi19OwotCi0vLy8gd29ya2Fyb3VuZCBmb3IgRVRJIGJ1ZwotdGVtcGxhdGU8Pgotc3RydWN0IGFwcGx5X3dyYXAxPCBpbnQsaW50ID4KLXsKLSAgICB0eXBlZGVmIGludCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwMgotCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgIFQxLCBUMgotICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLX07Ci0KLS8vLyB3b3JrYXJvdW5kIGZvciBFVEkgYnVnCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDI8IGludCxpbnQsaW50ID4KLXsKLSAgICB0eXBlZGVmIGludCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0KLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDMKLQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICBUMSwgVDIsIFQzCi0gICAgICAgID46OnR5cGUgdHlwZTsKLQotfTsKLQotLy8vIHdvcmthcm91bmQgZm9yIEVUSSBidWcKLXRlbXBsYXRlPD4KLXN0cnVjdCBhcHBseV93cmFwMzwgaW50LGludCxpbnQsaW50ID4KLXsKLSAgICB0eXBlZGVmIGludCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXA0Ci0KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgVDEsIFQyLCBUMywgVDQKLSAgICAgICAgPjo6dHlwZSB0eXBlOwotCi19OwotCi0vLy8gd29ya2Fyb3VuZCBmb3IgRVRJIGJ1ZwotdGVtcGxhdGU8Pgotc3RydWN0IGFwcGx5X3dyYXA0PCBpbnQsaW50LGludCxpbnQsaW50ID4KLXsKLSAgICB0eXBlZGVmIGludCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwNQotCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgIFQxLCBUMiwgVDMsIFQ0LCBUNQotICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLX07Ci0KLS8vLyB3b3JrYXJvdW5kIGZvciBFVEkgYnVnCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDU8IGludCxpbnQsaW50LGludCxpbnQsaW50ID4KLXsKLSAgICB0eXBlZGVmIGludCB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2FyZy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvYXJnLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTU0NDc2YS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvYXJnLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBQZXRlciBEaW1vdiAyMDAxLTIwMDIKLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hcmcuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPCAtMSA+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gLTEpOwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBVMSB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEodHlwZSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGFyZzwxPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDEpOwotICAgIHR5cGVkZWYgYXJnPDI+IG5leHQ7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdGFnKQotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHR5cGUpCi0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFUxIHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPDI+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMik7Ci0gICAgdHlwZWRlZiBhcmc8Mz4gbmV4dDsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTIgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8Mz4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAzKTsKLSAgICB0eXBlZGVmIGFyZzw0PiBuZXh0OwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBVMyB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEodHlwZSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGFyZzw0PgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDQpOwotICAgIHR5cGVkZWYgYXJnPDU+IG5leHQ7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdGFnKQotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHR5cGUpCi0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFU0IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPDU+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gNSk7Ci0gICAgdHlwZWRlZiBhcmc8Nj4gbmV4dDsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTUgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX05PTlRZUEVfQVJJVFlfU1BFQygxLGludCwgYXJnKQotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2Jhc2ljX2JpbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2Jhc2ljX2JpbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NDk0YTI2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9iYXNpY19iaW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyOCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBQZXRlciBEaW1vdiAyMDAxCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9iYXNpY19iaW5kLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCBib29sID4KLXN0cnVjdCByZXNvbHZlX2FyZ19pbXBsCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMwotICAgICAgICAsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgICAgICA+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+Ci1hdXg6Onllc190YWcKLWlzX2JpbmRfaGVscGVyKGJpbmQ1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4qKTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg2LCBiaW5kNSkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg2LCBiaW5kNSkKLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9iaW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9iaW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTJhMmIyNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvYmluZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MzIgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgUGV0ZXIgRGltb3YgMjAwMQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2JpbmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IGJvb2wgPgotc3RydWN0IHJlc29sdmVfYXJnX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzCi0gICAgICAgICwgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCByZXNvbHZlX2FyZ19pbXBsPHRydWU+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+IHQ1OwotICAgICAgICAvLy8KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUsIHR5cGVuYW1lIHQzOjp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQ0Ojp0eXBlLCB0eXBlbmFtZSB0NTo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLWF1eDo6eWVzX3RhZwotaXNfYmluZF9oZWxwZXIoYmluZDU8IEYsVDEsVDIsVDMsVDQsVDUgPiopOwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDYsIGJpbmQ1KQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDYsIGJpbmQ1KQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2JpbmRfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9iaW5kX2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJiZDFiNmQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2JpbmRfZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2JpbmRfZndkLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYmluZDA7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYmluZDE7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGJpbmQyOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYmluZDM7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYmluZDQ7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGJpbmQ1OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvYml0YW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9iaXRhbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1Y2RmYWM5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9iaXRhbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTUxICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLyBDb3B5cmlnaHQgSmFhcCBTdXRlciAyMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2JpdGFuZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0KLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMV8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzEpOjp2YWx1ZQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcyXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMik6OnZhbHVlCi0gICAgPgotc3RydWN0IGJpdGFuZF9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggdGFnMV8gPiB0YWcyXyApCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGJpdGFuZF9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgYml0YW5kX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgYml0YW5kX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBiaXRhbmRfaW1wbDwgbmEsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGJpdGFuZF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYml0YW5kX3RhZwotICAgIDogdGFnPCBULG5hID4KLXsKLX07Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGJpdGFuZF8yOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBiaXRhbmRfCi0KLSAgICA6IGF1eDo6bXN2Y19ldGlfYmFzZTwgdHlwZW5hbWUgaWZfPAotCi0gICAgICAgICAgaXNfbmE8TjM+Ci0gICAgICAgICwgYml0YW5kXzI8IE4xLE4yID4KLSAgICAgICAgLCBiaXRhbmRfPAotICAgICAgICAgICAgICBiaXRhbmRfMjwgTjEsTjIgPgotICAgICAgICAgICAgLCBOMywgTjQsIE41Ci0gICAgICAgICAgICA+Ci0gICAgICAgID46OnR5cGUKLQotICAgID4KLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdGFuZF8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEKLSAgICAsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IGJpdGFuZF8yCi0gICAgOiBhdXg6Om1zdmNfZXRpX2Jhc2U8IHR5cGVuYW1lIGFwcGx5X3dyYXAyPAotICAgICAgICAgIGJpdGFuZF9pbXBsPAotICAgICAgICAgICAgICB0eXBlbmFtZSBiaXRhbmRfdGFnPE4xPjo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBiaXRhbmRfdGFnPE4yPjo6dHlwZQotICAgICAgICAgICAgPgotICAgICAgICAsIE4xCi0gICAgICAgICwgTjIKLSAgICAgICAgPjo6dHlwZSA+Ojp0eXBlCi0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGJpdGFuZF8yLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBiaXRhbmRfKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgVCBuMSwgVCBuMiA+Ci1zdHJ1Y3QgYml0YW5kX3drbmQKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoVCwgdmFsdWUgID0gKG4xICYgbjIpKTsKLSAgICB0eXBlZGVmIGludGVncmFsX2M8IFQsdmFsdWUgPiB0eXBlOwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYml0YW5kX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogYXV4OjpiaXRhbmRfd2tuZDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgTjE6OnZhbHVlCi0gICAgICAgICAgICAsIE4yOjp2YWx1ZQotICAgICAgICAgICAgPjo6dHlwZQotCi0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2JpdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9iaXRvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1ZWI2YmQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2JpdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1MSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8gQ29weXJpZ2h0IEphYXAgU3V0ZXIgMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9iaXRvci5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0KLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMV8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzEpOjp2YWx1ZQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcyXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMik6OnZhbHVlCi0gICAgPgotc3RydWN0IGJpdG9yX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCB0YWcxXyA+IHRhZzJfICkKLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgYml0b3JfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGJpdG9yX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgYml0b3JfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGJpdG9yX2ltcGw8IG5hLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBiaXRvcl9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYml0b3JfdGFnCi0gICAgOiB0YWc8IFQsbmEgPgotewotfTsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgYml0b3JfMjsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgYml0b3JfCi0KLSAgICA6IGF1eDo6bXN2Y19ldGlfYmFzZTwgdHlwZW5hbWUgaWZfPAotCi0gICAgICAgICAgaXNfbmE8TjM+Ci0gICAgICAgICwgYml0b3JfMjwgTjEsTjIgPgotICAgICAgICAsIGJpdG9yXzwKLSAgICAgICAgICAgICAgYml0b3JfMjwgTjEsTjIgPgotICAgICAgICAgICAgLCBOMywgTjQsIE41Ci0gICAgICAgICAgICA+Ci0gICAgICAgID46OnR5cGUKLQotICAgID4KLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdG9yXwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMQotICAgICwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgYml0b3JfMgotICAgIDogYXV4Ojptc3ZjX2V0aV9iYXNlPCB0eXBlbmFtZSBhcHBseV93cmFwMjwKLSAgICAgICAgICBiaXRvcl9pbXBsPAotICAgICAgICAgICAgICB0eXBlbmFtZSBiaXRvcl90YWc8TjE+Ojp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGJpdG9yX3RhZzxOMj46OnR5cGUKLSAgICAgICAgICAgID4KLSAgICAgICAgLCBOMQotICAgICAgICAsIE4yCi0gICAgICAgID46OnR5cGUgPjo6dHlwZQotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBiaXRvcl8yLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBiaXRvcl8pCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCB0eXBlbmFtZSBULCBUIG4xLCBUIG4yID4KLXN0cnVjdCBiaXRvcl93a25kCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKFQsIHZhbHVlICA9IChuMSB8IG4yKSk7Ci0gICAgdHlwZWRlZiBpbnRlZ3JhbF9jPCBULHZhbHVlID4gdHlwZTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGJpdG9yX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogYXV4OjpiaXRvcl93a25kPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCBOMTo6dmFsdWUKLSAgICAgICAgICAgICwgTjI6OnZhbHVlCi0gICAgICAgICAgICA+Ojp0eXBlCi0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvYml0eG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9iaXR4b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZTA4OWE0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9iaXR4b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTUxICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLyBDb3B5cmlnaHQgSmFhcCBTdXRlciAyMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2JpdHhvci5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0KLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMV8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzEpOjp2YWx1ZQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcyXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMik6OnZhbHVlCi0gICAgPgotc3RydWN0IGJpdHhvcl9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggdGFnMV8gPiB0YWcyXyApCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGJpdHhvcl9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgYml0eG9yX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgYml0eG9yX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBiaXR4b3JfaW1wbDwgbmEsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGJpdHhvcl9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYml0eG9yX3RhZwotICAgIDogdGFnPCBULG5hID4KLXsKLX07Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGJpdHhvcl8yOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBiaXR4b3JfCi0KLSAgICA6IGF1eDo6bXN2Y19ldGlfYmFzZTwgdHlwZW5hbWUgaWZfPAotCi0gICAgICAgICAgaXNfbmE8TjM+Ci0gICAgICAgICwgYml0eG9yXzI8IE4xLE4yID4KLSAgICAgICAgLCBiaXR4b3JfPAotICAgICAgICAgICAgICBiaXR4b3JfMjwgTjEsTjIgPgotICAgICAgICAgICAgLCBOMywgTjQsIE41Ci0gICAgICAgICAgICA+Ci0gICAgICAgID46OnR5cGUKLQotICAgID4KLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdHhvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEKLSAgICAsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IGJpdHhvcl8yCi0gICAgOiBhdXg6Om1zdmNfZXRpX2Jhc2U8IHR5cGVuYW1lIGFwcGx5X3dyYXAyPAotICAgICAgICAgIGJpdHhvcl9pbXBsPAotICAgICAgICAgICAgICB0eXBlbmFtZSBiaXR4b3JfdGFnPE4xPjo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBiaXR4b3JfdGFnPE4yPjo6dHlwZQotICAgICAgICAgICAgPgotICAgICAgICAsIE4xCi0gICAgICAgICwgTjIKLSAgICAgICAgPjo6dHlwZSA+Ojp0eXBlCi0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGJpdHhvcl8yLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBiaXR4b3JfKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgVCBuMSwgVCBuMiA+Ci1zdHJ1Y3QgYml0eG9yX3drbmQKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoVCwgdmFsdWUgID0gKG4xIF4gbjIpKTsKLSAgICB0eXBlZGVmIGludGVncmFsX2M8IFQsdmFsdWUgPiB0eXBlOwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYml0eG9yX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogYXV4OjpiaXR4b3Jfd2tuZDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgTjE6OnZhbHVlCi0gICAgICAgICAgICAsIE4yOjp2YWx1ZQotICAgICAgICAgICAgPjo6dHlwZQotCi0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2RlcXVlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9kZXF1ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVkOTdkODIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2RlcXVlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU1NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9kZXF1ZS5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgaW50IE4gPgotc3RydWN0IGRlcXVlX2Nob29zZXI7Ci0KLX0KLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkZXF1ZV9jaG9vc2VyPDA+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+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvZGl2aWRlcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvZGl2aWRlcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY0ZjQ5YzYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2RpdmlkZXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTUwICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2RpdmlkZXMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzFfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcxKTo6dmFsdWUKLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMl8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzIpOjp2YWx1ZQotICAgID4KLXN0cnVjdCBkaXZpZGVzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCB0YWcxXyA+IHRhZzJfICkKLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgZGl2aWRlc19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgZGl2aWRlc19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGRpdmlkZXNfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGRpdmlkZXNfaW1wbDwgbmEsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGRpdmlkZXNfaW1wbDwgaW50ZWdyYWxfY190YWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGRpdmlkZXNfdGFnCi0gICAgOiB0YWc8IFQsbmEgPgotewotfTsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgZGl2aWRlczI7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IGRpdmlkZXMKLQotICAgIDogYXV4Ojptc3ZjX2V0aV9iYXNlPCB0eXBlbmFtZSBpZl88Ci0KLSAgICAgICAgICBpc19uYTxOMz4KLSAgICAgICAgLCBkaXZpZGVzMjwgTjEsTjIgPgotICAgICAgICAsIGRpdmlkZXM8Ci0gICAgICAgICAgICAgIGRpdmlkZXMyPCBOMSxOMiA+Ci0gICAgICAgICAgICAsIE4zLCBONCwgTjUKLSAgICAgICAgICAgID4KLSAgICAgICAgPjo6dHlwZQotCi0gICAgPgotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgZGl2aWRlcwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMQotICAgICwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgZGl2aWRlczIKLSAgICA6IGF1eDo6bXN2Y19ldGlfYmFzZTwgdHlwZW5hbWUgYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgZGl2aWRlc19pbXBsPAotICAgICAgICAgICAgICB0eXBlbmFtZSBkaXZpZGVzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgZGl2aWRlc190YWc8TjI+Ojp0eXBlCi0gICAgICAgICAgICA+Ci0gICAgICAgICwgTjEKLSAgICAgICAgLCBOMgotICAgICAgICA+Ojp0eXBlID46OnR5cGUKLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgZGl2aWRlczIsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIGRpdmlkZXMpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCB0eXBlbmFtZSBULCBUIG4xLCBUIG4yID4KLXN0cnVjdCBkaXZpZGVzX3drbmQKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoVCwgdmFsdWUgID0gKG4xIC8gbjIpKTsKLSAgICB0eXBlZGVmIGludGVncmFsX2M8IFQsdmFsdWUgPiB0eXBlOwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGl2aWRlc19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGF1eDo6ZGl2aWRlc193a25kPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCBOMTo6dmFsdWUKLSAgICAgICAgICAgICwgTjI6OnZhbHVlCi0gICAgICAgICAgICA+Ojp0eXBlCi0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvZXF1YWxfdG8uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2VxdWFsX3RvLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzM5ZjQ3ZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvZXF1YWxfdG8uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTAyICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2VxdWFsX3RvLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcxXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMSk6OnZhbHVlCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzJfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcyKTo6dmFsdWUKLSAgICA+Ci1zdHJ1Y3QgZXF1YWxfdG9faW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIHRhZzFfID4gdGFnMl8gKQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBlcXVhbF90b19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgZXF1YWxfdG9faW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBlcXVhbF90b19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgZXF1YWxfdG9faW1wbDwgbmEsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGVxdWFsX3RvX2ltcGw8IGludGVncmFsX2NfdGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBlcXVhbF90b190YWcKLSAgICA6IHRhZzwgVCxuYSA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBlcXVhbF90bwotICAgIDogYXV4Ojptc3ZjX2V0aV9iYXNlPCB0eXBlbmFtZSBhcHBseV93cmFwMjwKLSAgICAgICAgICBlcXVhbF90b19pbXBsPAotICAgICAgICAgICAgICB0eXBlbmFtZSBlcXVhbF90b190YWc8TjE+Ojp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGVxdWFsX3RvX3RhZzxOMj46OnR5cGUKLSAgICAgICAgICAgID4KLSAgICAgICAgLCBOMQotICAgICAgICAsIE4yCi0gICAgICAgID46OnR5cGUgPjo6dHlwZQotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBlcXVhbF90bywgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgZXF1YWxfdG8pCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZXF1YWxfdG9faW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgIHsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlID09Ci0gICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUgKQotICAgICAgICAgICAgKTsKLSAgICAgICAgdHlwZWRlZiBib29sXzx2YWx1ZT4gdHlwZTsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9mb2xkX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2ZvbGRfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM0Y2FjZTQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2ZvbGRfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNDUgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9mb2xkX2ltcGwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw7Ci0KLXRlbXBsYXRlPCBpbnQgTiA+Ci1zdHJ1Y3QgZm9sZF9jaHVuazsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgZm9sZF9jaHVuazwwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIwIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBmb2xkX2NodW5rPDE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBzdGF0ZTEgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjEgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGZvbGRfY2h1bms8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIHN0YXRlMiBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMiBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgZm9sZF9jaHVuazwzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgc3RhdGUzIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIzIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBmb2xkX2NodW5rPDQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBzdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUzLCB0eXBlbmFtZSBkZXJlZjxpdGVyMz46OnR5cGUgPjo6dHlwZSBzdGF0ZTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBzdGF0ZTQgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjQgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCBpbnQgTiA+Ci1zdHJ1Y3QgZm9sZF9jaHVuawotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBmb2xkX2ltcGw8Ci0gICAgICAgICAgICAgIDQKLSAgICAgICAgICAgICwgRmlyc3QKLSAgICAgICAgICAgICwgTGFzdAotICAgICAgICAgICAgLCBTdGF0ZQotICAgICAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgICAgID4gY2h1bmtfOwotCi0gICAgICAgIHR5cGVkZWYgZm9sZF9pbXBsPAotICAgICAgICAgICAgICAoIChOIC0gNCkgPCAwID8gMCA6IE4gLSA0ICkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgY2h1bmtfOjppdGVyYXRvcgotICAgICAgICAgICAgLCBMYXN0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIGNodW5rXzo6c3RhdGUKLSAgICAgICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgICAgICA+IHJlc187Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjpzdGF0ZSBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjppdGVyYXRvciBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX3N0ZXA7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9udWxsX3N0ZXAKLXsKLSAgICB0eXBlZGVmIExhc3QgaXRlcmF0b3I7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmb2xkX2NodW5rPCAtMSA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgaXNfc2FtZTwgRmlyc3QsTGFzdCA+Ojp0eXBlCi0gICAgICAgICAgICAsIGZvbGRfbnVsbF9zdGVwPCBMYXN0LFN0YXRlID4KLSAgICAgICAgICAgICwgZm9sZF9zdGVwPCBGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci0gICAgICAgICAgICA+Ojp0eXBlIHJlc187Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjpzdGF0ZSBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjppdGVyYXRvciBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX3N0ZXAKLXsKLSAgICB0eXBlZGVmIGZvbGRfY2h1bms8IC0xID46OnRlbXBsYXRlIHJlc3VsdF88Ci0gICAgICAgICAgdHlwZW5hbWUgbXBsOjpuZXh0PEZpcnN0Pjo6dHlwZQotICAgICAgICAsIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBhcHBseTI8Rm9yd2FyZE9wLFN0YXRlLCB0eXBlbmFtZSBkZXJlZjxGaXJzdD46OnR5cGU+Ojp0eXBlCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gY2h1bmtfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBjaHVua186OnN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgY2h1bmtfOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgaW50IE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbAotICAgIDogZm9sZF9jaHVuazxOPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLX07Ci0KLX19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2Z1bGxfbGFtYmRhLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9mdWxsX2xhbWJkYS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkYTk3MWUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2Z1bGxfbGFtYmRhLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU1NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2Z1bGxfbGFtYmRhLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICBib29sIEMxID0gZmFsc2UsIGJvb2wgQzIgPSBmYWxzZSwgYm9vbCBDMyA9IGZhbHNlLCBib29sIEM0ID0gZmFsc2UKLSAgICAsIGJvb2wgQzUgPSBmYWxzZQotICAgID4KLXN0cnVjdCBsYW1iZGFfb3IKLSAgICA6IHRydWVfCi17Ci19OwotCi10ZW1wbGF0ZTw+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+IGxlX3Jlc3VsdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjpyZXN1bHRfIHJlc3VsdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjp0eXBlIHR5cGU7Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoMiwgbGFtYmRhKQotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvZ3JlYXRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvZ3JlYXRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk1Y2MzMDcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2dyZWF0ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTAyICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2dyZWF0ZXIuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzFfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcxKTo6dmFsdWUKLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMl8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzIpOjp2YWx1ZQotICAgID4KLXN0cnVjdCBncmVhdGVyX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCB0YWcxXyA+IHRhZzJfICkKLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgZ3JlYXRlcl9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgZ3JlYXRlcl9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGdyZWF0ZXJfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGdyZWF0ZXJfaW1wbDwgbmEsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGdyZWF0ZXJfaW1wbDwgaW50ZWdyYWxfY190YWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGdyZWF0ZXJfdGFnCi0gICAgOiB0YWc8IFQsbmEgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgZ3JlYXRlcgotICAgIDogYXV4Ojptc3ZjX2V0aV9iYXNlPCB0eXBlbmFtZSBhcHBseV93cmFwMjwKLSAgICAgICAgICBncmVhdGVyX2ltcGw8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGdyZWF0ZXJfdGFnPE4xPjo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBncmVhdGVyX3RhZzxOMj46OnR5cGUKLSAgICAgICAgICAgID4KLSAgICAgICAgLCBOMQotICAgICAgICAsIE4yCi0gICAgICAgID46OnR5cGUgPjo6dHlwZQotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBncmVhdGVyLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBncmVhdGVyKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGdyZWF0ZXJfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgIHsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlID4KLSAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSApCi0gICAgICAgICAgICApOwotICAgICAgICB0eXBlZGVmIGJvb2xfPHZhbHVlPiB0eXBlOwotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2dyZWF0ZXJfZXF1YWwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2dyZWF0ZXJfZXF1YWwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZTcwMjc0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9ncmVhdGVyX2VxdWFsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwMiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9ncmVhdGVyX2VxdWFsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcxXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMSk6OnZhbHVlCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzJfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcyKTo6dmFsdWUKLSAgICA+Ci1zdHJ1Y3QgZ3JlYXRlcl9lcXVhbF9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggdGFnMV8gPiB0YWcyXyApCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGdyZWF0ZXJfZXF1YWxfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGdyZWF0ZXJfZXF1YWxfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBncmVhdGVyX2VxdWFsX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBncmVhdGVyX2VxdWFsX2ltcGw8IG5hLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBncmVhdGVyX2VxdWFsX2ltcGw8IGludGVncmFsX2NfdGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBncmVhdGVyX2VxdWFsX3RhZwotICAgIDogdGFnPCBULG5hID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGdyZWF0ZXJfZXF1YWwKLSAgICA6IGF1eDo6bXN2Y19ldGlfYmFzZTwgdHlwZW5hbWUgYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgZ3JlYXRlcl9lcXVhbF9pbXBsPAotICAgICAgICAgICAgICB0eXBlbmFtZSBncmVhdGVyX2VxdWFsX3RhZzxOMT46OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgZ3JlYXRlcl9lcXVhbF90YWc8TjI+Ojp0eXBlCi0gICAgICAgICAgICA+Ci0gICAgICAgICwgTjEKLSAgICAgICAgLCBOMgotICAgICAgICA+Ojp0eXBlID46OnR5cGUKLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgZ3JlYXRlcl9lcXVhbCwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgZ3JlYXRlcl9lcXVhbCkKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBncmVhdGVyX2VxdWFsX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9Ci0gICAgICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSA+PQotICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlICkKLSAgICAgICAgICAgICk7Ci0gICAgICAgIHR5cGVkZWYgYm9vbF88dmFsdWU+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvaW5oZXJpdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvaW5oZXJpdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdjYjBhNDguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2luaGVyaXQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTY2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2luaGVyaXQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgYm9vbCBDMSwgYm9vbCBDMiA+Ci1zdHJ1Y3QgaW5oZXJpdDJfaW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBEZXJpdmVkLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIgPiBzdHJ1Y3QgcmVzdWx0XwotICAgICAgICA6IFQxLCBUMgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBEZXJpdmVkIHR5cGVfOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaW5oZXJpdDJfaW1wbDwgZmFsc2UsdHJ1ZSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIERlcml2ZWQsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiA+IHN0cnVjdCByZXN1bHRfCi0gICAgICAgIDogVDEKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVDEgdHlwZV87Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpbmhlcml0Ml9pbXBsPCB0cnVlLGZhbHNlID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRGVyaXZlZCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyID4gc3RydWN0IHJlc3VsdF8KLSAgICAgICAgOiBUMgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBUMiB0eXBlXzsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGluaGVyaXQyX2ltcGw8IHRydWUsdHJ1ZSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIERlcml2ZWQsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIFQxIHR5cGVfOwotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQxKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMikKLSAgICA+Ci1zdHJ1Y3QgaW5oZXJpdDIKLSAgICA6IGF1eDo6aW5oZXJpdDJfaW1wbDwKLSAgICAgICAgICBpc19lbXB0eV9iYXNlPFQxPjo6dmFsdWUKLSAgICAgICAgLCBpc19lbXB0eV9iYXNlPFQyPjo6dmFsdWUKLSAgICAgICAgPjo6dGVtcGxhdGUgcmVzdWx0XzwgaW5oZXJpdDI8IFQxLFQyID4sVDEsIFQyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGluaGVyaXQyOjp0eXBlXyB0eXBlOwotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgaW5oZXJpdDIsIChUMSwgVDIpKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDIsIGluaGVyaXQyKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICA+Ci1zdHJ1Y3QgaW5oZXJpdDMKLSAgICA6IGluaGVyaXQyPAotICAgICAgICAgIHR5cGVuYW1lIGluaGVyaXQyPAotICAgICAgICAgICAgICBUMSwgVDIKLSAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgLCBUMwotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICAzCi0gICAgICAgICwgaW5oZXJpdDMKLSAgICAgICAgLCAoIFQxLCBUMiwgVDMpCi0gICAgICAgICkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQygzLCBpbmhlcml0MykKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hLCB0eXBlbmFtZSBUNCA9IG5hCi0gICAgPgotc3RydWN0IGluaGVyaXQ0Ci0gICAgOiBpbmhlcml0MjwKLSAgICAgICAgICB0eXBlbmFtZSBpbmhlcml0MzwKLSAgICAgICAgICAgICAgVDEsIFQyLCBUMwotICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAsIFQ0Ci0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDQKLSAgICAgICAgLCBpbmhlcml0NAotICAgICAgICAsICggVDEsIFQyLCBUMywgVDQpCi0gICAgICAgICkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQyg0LCBpbmhlcml0NCkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hLCB0eXBlbmFtZSBUNCA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNSA9IG5hCi0gICAgPgotc3RydWN0IGluaGVyaXQ1Ci0gICAgOiBpbmhlcml0MjwKLSAgICAgICAgICB0eXBlbmFtZSBpbmhlcml0NDwKLSAgICAgICAgICAgICAgVDEsIFQyLCBUMywgVDQKLSAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgLCBUNQotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgaW5oZXJpdDUKLSAgICAgICAgLCAoIFQxLCBUMiwgVDMsIFQ0LCBUNSkKLSAgICAgICAgKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDUsIGluaGVyaXQ1KQotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQxID0gZW1wdHlfYmFzZSwgdHlwZW5hbWUgVDIgPSBlbXB0eV9iYXNlCi0gICAgLCB0eXBlbmFtZSBUMyA9IGVtcHR5X2Jhc2UsIHR5cGVuYW1lIFQ0ID0gZW1wdHlfYmFzZQotICAgICwgdHlwZW5hbWUgVDUgPSBlbXB0eV9iYXNlCi0gICAgPgotc3RydWN0IGluaGVyaXQKLSAgICA6IGluaGVyaXQ1PCBUMSxUMixUMyxUNCxUNSA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaW5oZXJpdDwgbmEsbmEsbmEsbmEsbmEgPgotewotICAgIHRlbXBsYXRlPAotCi0gICAgICAgICAgdHlwZW5hbWUgVDEgPSBlbXB0eV9iYXNlLCB0eXBlbmFtZSBUMiA9IGVtcHR5X2Jhc2UKLSAgICAgICAgLCB0eXBlbmFtZSBUMyA9IGVtcHR5X2Jhc2UsIHR5cGVuYW1lIFQ0ID0gZW1wdHlfYmFzZQotICAgICAgICAsIHR5cGVuYW1lIFQ1ID0gZW1wdHlfYmFzZQotCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBpbmhlcml0PCBUMSxUMixUMyxUNCxUNSA+Ci0gICAgewotICAgIH07Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUNfTEFNQkRBKDUsIGluaGVyaXQpCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUNfQVJJVFkoNSwgaW5oZXJpdCkKLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQ19URU1QTEFURV9BUklUWSg1LCA1LCBpbmhlcml0KQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2l0ZXJfZm9sZF9pZl9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9pdGVyX2ZvbGRfaWZfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3NGJkODMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2l0ZXJfZm9sZF9pZl9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8gQ29weXJpZ2h0IERhdmlkIEFicmFoYW1zIDIwMDEtMjAwMgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2l0ZXJfZm9sZF9pZl9pbXBsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yLCB0eXBlbmFtZSBTdGF0ZSA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX251bGxfc3RlcAotewotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPCBib29sID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfc3RlcF9pbXBsCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgSXRlcmF0b3IKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlT3AKLSAgICAgICAgLCB0eXBlbmFtZSBJdGVyYXRvck9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IFN0YXRlT3AsU3RhdGUsSXRlcmF0b3IgPjo6dHlwZSBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBJdGVyYXRvck9wOjp0eXBlIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX3N0ZXBfaW1wbDxmYWxzZT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgU3RhdGVPcAotICAgICAgICAsIHR5cGVuYW1lIEl0ZXJhdG9yT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBQcmVkaWNhdGUKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX2ZvcndhcmRfc3RlcAotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBQcmVkaWNhdGUsU3RhdGUsSXRlcmF0b3IgPjo6dHlwZSBub3RfbGFzdDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJfZm9sZF9pZl9zdGVwX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQobm90X2xhc3QpOjp2YWx1ZQotICAgICAgICA+Ojp0ZW1wbGF0ZSByZXN1bHRfPCBJdGVyYXRvcixTdGF0ZSxGb3J3YXJkT3AsIG1wbDo6bmV4dDxJdGVyYXRvcj4gPiBpbXBsXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgaW1wbF86OnN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgaW1wbF86Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIFByZWRpY2F0ZQotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfYmFja3dhcmRfc3RlcAotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBQcmVkaWNhdGUsU3RhdGUsSXRlcmF0b3IgPjo6dHlwZSBub3RfbGFzdDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJfZm9sZF9pZl9zdGVwX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQobm90X2xhc3QpOjp2YWx1ZQotICAgICAgICA+Ojp0ZW1wbGF0ZSByZXN1bHRfPCBJdGVyYXRvcixTdGF0ZSxCYWNrd2FyZE9wLCBpZGVudGl0eTxJdGVyYXRvcj4gPiBpbXBsXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgaW1wbF86OnN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgaW1wbF86Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZFByZWRpY2F0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgQmFja3dhcmRQcmVkaWNhdGUKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX2ltcGwKLXsKLSBwcml2YXRlOgotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX251bGxfc3RlcDwgSXRlcmF0b3IsU3RhdGUgPiBmb3J3YXJkX3N0ZXAwOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2ZvcndhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMDo6aXRlcmF0b3IsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDA6OnN0YXRlLCBGb3J3YXJkT3AsIEZvcndhcmRQcmVkaWNhdGUgPiBmb3J3YXJkX3N0ZXAxOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2ZvcndhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMTo6aXRlcmF0b3IsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDE6OnN0YXRlLCBGb3J3YXJkT3AsIEZvcndhcmRQcmVkaWNhdGUgPiBmb3J3YXJkX3N0ZXAyOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2ZvcndhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMjo6aXRlcmF0b3IsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDI6OnN0YXRlLCBGb3J3YXJkT3AsIEZvcndhcmRQcmVkaWNhdGUgPiBmb3J3YXJkX3N0ZXAzOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2ZvcndhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMzo6aXRlcmF0b3IsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDM6OnN0YXRlLCBGb3J3YXJkT3AsIEZvcndhcmRQcmVkaWNhdGUgPiBmb3J3YXJkX3N0ZXA0OwotICAgIAotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgdHlwZW5hbWUgZm9yd2FyZF9zdGVwNDo6bm90X2xhc3QKLSAgICAgICAgLCBpdGVyX2ZvbGRfaWZfaW1wbDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgZm9yd2FyZF9zdGVwNDo6aXRlcmF0b3IKLSAgICAgICAgICAgICwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwNDo6c3RhdGUKLSAgICAgICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgICAgICAsIEZvcndhcmRQcmVkaWNhdGUKLSAgICAgICAgICAgICwgQmFja3dhcmRPcAotICAgICAgICAgICAgLCBCYWNrd2FyZFByZWRpY2F0ZQotICAgICAgICAgICAgPgotICAgICAgICAsIGl0ZXJfZm9sZF9pZl9udWxsX3N0ZXA8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGZvcndhcmRfc3RlcDQ6Oml0ZXJhdG9yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDQ6OnN0YXRlCi0gICAgICAgICAgICA+Ci0gICAgICAgID46OnR5cGUgYmFja3dhcmRfc3RlcDQ7Ci0KLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9iYWNrd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAzOjppdGVyYXRvciwgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDQ6OnN0YXRlLCBCYWNrd2FyZE9wLCBCYWNrd2FyZFByZWRpY2F0ZSA+IGJhY2t3YXJkX3N0ZXAzOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2JhY2t3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDI6Oml0ZXJhdG9yLCB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwMzo6c3RhdGUsIEJhY2t3YXJkT3AsIEJhY2t3YXJkUHJlZGljYXRlID4gYmFja3dhcmRfc3RlcDI7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfYmFja3dhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMTo6aXRlcmF0b3IsIHR5cGVuYW1lIGJhY2t3YXJkX3N0ZXAyOjpzdGF0ZSwgQmFja3dhcmRPcCwgQmFja3dhcmRQcmVkaWNhdGUgPiBiYWNrd2FyZF9zdGVwMTsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9iYWNrd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAwOjppdGVyYXRvciwgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDE6OnN0YXRlLCBCYWNrd2FyZE9wLCBCYWNrd2FyZFByZWRpY2F0ZSA+IGJhY2t3YXJkX3N0ZXAwOwotICAgIAotCi0gcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDA6OnN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDQ6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotfX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvaXRlcl9mb2xkX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2l0ZXJfZm9sZF9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTFhNDVmZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvaXRlcl9mb2xkX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjQ1ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vaXRlcl9mb2xkX2ltcGwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDsKLQotdGVtcGxhdGU8IGludCBOID4KLXN0cnVjdCBpdGVyX2ZvbGRfY2h1bms7Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGl0ZXJfZm9sZF9jaHVuazwwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIwIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBpdGVyX2ZvbGRfY2h1bms8MT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMCxpdGVyMCA+Ojp0eXBlIHN0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIHN0YXRlMSBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMSBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgaXRlcl9mb2xkX2NodW5rPDI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTAsaXRlcjAgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTEsaXRlcjEgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBzdGF0ZTIgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjIgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGl0ZXJfZm9sZF9jaHVuazwzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUwLGl0ZXIwID46OnR5cGUgc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUxLGl0ZXIxID46OnR5cGUgc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUyLGl0ZXIyID46OnR5cGUgc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgc3RhdGUzIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIzIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBpdGVyX2ZvbGRfY2h1bms8ND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMCxpdGVyMCA+Ojp0eXBlIHN0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMSxpdGVyMSA+Ojp0eXBlIHN0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMixpdGVyMiA+Ojp0eXBlIHN0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMyxpdGVyMyA+Ojp0eXBlIHN0YXRlNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIHN0YXRlNCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyNCBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IGludCBOID4KLXN0cnVjdCBpdGVyX2ZvbGRfY2h1bmsKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgaXRlcl9mb2xkX2ltcGw8Ci0gICAgICAgICAgICAgIDQKLSAgICAgICAgICAgICwgRmlyc3QKLSAgICAgICAgICAgICwgTGFzdAotICAgICAgICAgICAgLCBTdGF0ZQotICAgICAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgICAgID4gY2h1bmtfOwotCi0gICAgICAgIHR5cGVkZWYgaXRlcl9mb2xkX2ltcGw8Ci0gICAgICAgICAgICAgICggKE4gLSA0KSA8IDAgPyAwIDogTiAtIDQgKQotICAgICAgICAgICAgLCB0eXBlbmFtZSBjaHVua186Oml0ZXJhdG9yCi0gICAgICAgICAgICAsIExhc3QKLSAgICAgICAgICAgICwgdHlwZW5hbWUgY2h1bmtfOjpzdGF0ZQotICAgICAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgICAgID4gcmVzXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186OnN0YXRlIHN0YXRlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186Oml0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9zdGVwOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9udWxsX3N0ZXAKLXsKLSAgICB0eXBlZGVmIExhc3QgaXRlcmF0b3I7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpdGVyX2ZvbGRfY2h1bms8IC0xID4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICB0eXBlbmFtZSBpc19zYW1lPCBGaXJzdCxMYXN0ID46OnR5cGUKLSAgICAgICAgICAgICwgaXRlcl9mb2xkX251bGxfc3RlcDwgTGFzdCxTdGF0ZSA+Ci0gICAgICAgICAgICAsIGl0ZXJfZm9sZF9zdGVwPCBGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci0gICAgICAgICAgICA+Ojp0eXBlIHJlc187Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjpzdGF0ZSBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjppdGVyYXRvciBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfc3RlcAotewotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2NodW5rPCAtMSA+Ojp0ZW1wbGF0ZSByZXN1bHRfPAotICAgICAgICAgIHR5cGVuYW1lIG1wbDo6bmV4dDxGaXJzdD46OnR5cGUKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsU3RhdGUsRmlyc3QgPjo6dHlwZQotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IGNodW5rXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgY2h1bmtfOjpzdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNodW5rXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbAotICAgIDogaXRlcl9mb2xkX2NodW5rPE4+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotfTsKLQotfX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvbGFtYmRhX25vX2N0cHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2xhbWJkYV9ub19jdHBzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDVmNWY2Yi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvbGFtYmRhX25vX2N0cHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjI5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX25vX2N0cHMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIGJvb2wgQzEgPSBmYWxzZSwgYm9vbCBDMiA9IGZhbHNlLCBib29sIEMzID0gZmFsc2UsIGJvb2wgQzQgPSBmYWxzZQotICAgICwgYm9vbCBDNSA9IGZhbHNlCi0gICAgPgotc3RydWN0IGxhbWJkYV9vcgotICAgIDogdHJ1ZV8KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsYW1iZGFfb3I8IGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlID4KLSAgICA6IGZhbHNlXwotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEFyaXR5ID4gc3RydWN0IGxhbWJkYV9pbXBsCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICAgICAgdHlwZWRlZiBpc19wbGFjZWhvbGRlcjxUPiBpc19sZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGFtYmRhX2ltcGw8IGludF88MT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFByb3RlY3QgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzEsIFRhZywgZmFsc2VfID4gbDE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUxKTo6dmFsdWUKLSAgICAgICAgICAgID4gaXNfbGU7Ci0KLSAgICAgICAgdHlwZWRlZiBiaW5kMTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgRjo6cmViaW5kCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGwxOjp0eXBlCi0gICAgICAgICAgICA+IGJpbmRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICBpc19sZQotICAgICAgICAgICAgLCBpZl88IFByb3RlY3QsIG1wbDo6cHJvdGVjdDxiaW5kXz4sIGJpbmRfID4KLSAgICAgICAgICAgICwgaWRlbnRpdHk8Rj4KLSAgICAgICAgICAgID46OnR5cGUgdHlwZV87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0eXBlXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsYW1iZGFfaW1wbDwgaW50XzwyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMSwgVGFnLCBmYWxzZV8gPiBsMTsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzIsIFRhZywgZmFsc2VfID4gbDI7Ci0gICAgICAgIAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUxKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMik6OnZhbHVlCi0gICAgICAgICAgICA+IGlzX2xlOwotCi0gICAgICAgIHR5cGVkZWYgYmluZDI8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIEY6OnJlYmluZAotICAgICAgICAgICAgLCB0eXBlbmFtZSBsMTo6dHlwZSwgdHlwZW5hbWUgbDI6OnR5cGUKLSAgICAgICAgICAgID4gYmluZF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIGlzX2xlCi0gICAgICAgICAgICAsIGlmXzwgUHJvdGVjdCwgbXBsOjpwcm90ZWN0PGJpbmRfPiwgYmluZF8gPgotICAgICAgICAgICAgLCBpZGVudGl0eTxGPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxhbWJkYV9pbXBsPCBpbnRfPDM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcxLCBUYWcsIGZhbHNlXyA+IGwxOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMiwgVGFnLCBmYWxzZV8gPiBsMjsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzMsIFRhZywgZmFsc2VfID4gbDM7Ci0gICAgICAgIAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMzo6aXNfbGUgaXNfbGUzOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTEpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUyKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMyk6OnZhbHVlCi0gICAgICAgICAgICA+IGlzX2xlOwotCi0gICAgICAgIHR5cGVkZWYgYmluZDM8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIEY6OnJlYmluZAotICAgICAgICAgICAgLCB0eXBlbmFtZSBsMTo6dHlwZSwgdHlwZW5hbWUgbDI6OnR5cGUsIHR5cGVuYW1lIGwzOjp0eXBlCi0gICAgICAgICAgICA+IGJpbmRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICBpc19sZQotICAgICAgICAgICAgLCBpZl88IFByb3RlY3QsIG1wbDo6cHJvdGVjdDxiaW5kXz4sIGJpbmRfID4KLSAgICAgICAgICAgICwgaWRlbnRpdHk8Rj4KLSAgICAgICAgICAgID46OnR5cGUgdHlwZV87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0eXBlXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsYW1iZGFfaW1wbDwgaW50Xzw0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMSwgVGFnLCBmYWxzZV8gPiBsMTsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzIsIFRhZywgZmFsc2VfID4gbDI7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmczLCBUYWcsIGZhbHNlXyA+IGwzOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnNCwgVGFnLCBmYWxzZV8gPiBsNDsKLSAgICAgICAgCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwzOjppc19sZSBpc19sZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDQ6OmlzX2xlIGlzX2xlNDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUxKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMik6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTMpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGU0KTo6dmFsdWUKLSAgICAgICAgICAgID4gaXNfbGU7Ci0KLSAgICAgICAgdHlwZWRlZiBiaW5kNDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgRjo6cmViaW5kCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGwxOjp0eXBlLCB0eXBlbmFtZSBsMjo6dHlwZSwgdHlwZW5hbWUgbDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDQ6OnR5cGUKLSAgICAgICAgICAgID4gYmluZF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIGlzX2xlCi0gICAgICAgICAgICAsIGlmXzwgUHJvdGVjdCwgbXBsOjpwcm90ZWN0PGJpbmRfPiwgYmluZF8gPgotICAgICAgICAgICAgLCBpZGVudGl0eTxGPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxhbWJkYV9pbXBsPCBpbnRfPDU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcxLCBUYWcsIGZhbHNlXyA+IGwxOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMiwgVGFnLCBmYWxzZV8gPiBsMjsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzMsIFRhZywgZmFsc2VfID4gbDM7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmc0LCBUYWcsIGZhbHNlXyA+IGw0OwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnNSwgVGFnLCBmYWxzZV8gPiBsNTsKLSAgICAgICAgCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwzOjppc19sZSBpc19sZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDQ6OmlzX2xlIGlzX2xlNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsNTo6aXNfbGUgaXNfbGU1OwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTEpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUyKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMyk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTQpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGU1KTo6dmFsdWUKLSAgICAgICAgICAgID4gaXNfbGU7Ci0KLSAgICAgICAgdHlwZWRlZiBiaW5kNTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgRjo6cmViaW5kCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGwxOjp0eXBlLCB0eXBlbmFtZSBsMjo6dHlwZSwgdHlwZW5hbWUgbDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDQ6OnR5cGUsIHR5cGVuYW1lIGw1Ojp0eXBlCi0gICAgICAgICAgICA+IGJpbmRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICBpc19sZQotICAgICAgICAgICAgLCBpZl88IFByb3RlY3QsIG1wbDo6cHJvdGVjdDxiaW5kXz4sIGJpbmRfID4KLSAgICAgICAgICAgICwgaWRlbnRpdHk8Rj4KLSAgICAgICAgICAgID46OnR5cGUgdHlwZV87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0eXBlXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICAsIHR5cGVuYW1lIFByb3RlY3QKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhCi17Ci0gICAgLy8vIE1ldGFmdW5jdGlvbiBmb3J3YXJkaW5nIGNvbmZ1c2VzIE1TVkMgNi54Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnRlbXBsYXRlX2FyaXR5PFQ+Ojp0eXBlIGFyaXR5XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGFtYmRhX2ltcGw8YXJpdHlfPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IFQsVGFnLFByb3RlY3QgPiBsXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbF86OnR5cGUgdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxfOjppc19sZSBpc19sZTsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDMsIGxhbWJkYSwgKFQsIFRhZywgUHJvdGVjdCkpCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDEsIDMsIGxhbWJkYSkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgPgotc3RydWN0IGlzX2xhbWJkYV9leHByZXNzaW9uCi0gICAgOiBsYW1iZGE8VD46OmlzX2xlCi17Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvbGVzcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvbGVzcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFhNTg5NTMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2xlc3MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTAyICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2xlc3MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzFfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcxKTo6dmFsdWUKLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMl8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzIpOjp2YWx1ZQotICAgID4KLXN0cnVjdCBsZXNzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCB0YWcxXyA+IHRhZzJfICkKLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgbGVzc19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgbGVzc19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGxlc3NfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxlc3NfaW1wbDwgbmEsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxlc3NfaW1wbDwgaW50ZWdyYWxfY190YWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGxlc3NfdGFnCi0gICAgOiB0YWc8IFQsbmEgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgbGVzcwotICAgIDogYXV4Ojptc3ZjX2V0aV9iYXNlPCB0eXBlbmFtZSBhcHBseV93cmFwMjwKLSAgICAgICAgICBsZXNzX2ltcGw8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGxlc3NfdGFnPE4xPjo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBsZXNzX3RhZzxOMj46OnR5cGUKLSAgICAgICAgICAgID4KLSAgICAgICAgLCBOMQotICAgICAgICAsIE4yCi0gICAgICAgID46OnR5cGUgPjo6dHlwZQotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBsZXNzLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBsZXNzKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxlc3NfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgIHsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlID4KLSAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSApCi0gICAgICAgICAgICApOwotICAgICAgICB0eXBlZGVmIGJvb2xfPHZhbHVlPiB0eXBlOwotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2xlc3NfZXF1YWwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2xlc3NfZXF1YWwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ODkwNDQxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9sZXNzX2VxdWFsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwMiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9sZXNzX2VxdWFsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcxXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMSk6OnZhbHVlCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzJfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcyKTo6dmFsdWUKLSAgICA+Ci1zdHJ1Y3QgbGVzc19lcXVhbF9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggdGFnMV8gPiB0YWcyXyApCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGxlc3NfZXF1YWxfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGxlc3NfZXF1YWxfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBsZXNzX2VxdWFsX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsZXNzX2VxdWFsX2ltcGw8IG5hLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsZXNzX2VxdWFsX2ltcGw8IGludGVncmFsX2NfdGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBsZXNzX2VxdWFsX3RhZwotICAgIDogdGFnPCBULG5hID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGxlc3NfZXF1YWwKLSAgICA6IGF1eDo6bXN2Y19ldGlfYmFzZTwgdHlwZW5hbWUgYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgbGVzc19lcXVhbF9pbXBsPAotICAgICAgICAgICAgICB0eXBlbmFtZSBsZXNzX2VxdWFsX3RhZzxOMT46OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbGVzc19lcXVhbF90YWc8TjI+Ojp0eXBlCi0gICAgICAgICAgICA+Ci0gICAgICAgICwgTjEKLSAgICAgICAgLCBOMgotICAgICAgICA+Ojp0eXBlID46OnR5cGUKLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgbGVzc19lcXVhbCwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgbGVzc19lcXVhbCkKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsZXNzX2VxdWFsX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9Ci0gICAgICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSA8PQotICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlICkKLSAgICAgICAgICAgICk7Ci0gICAgICAgIHR5cGVkZWYgYm9vbF88dmFsdWU+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvbGlzdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvbGlzdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiMTllNjAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2xpc3QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTU2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2xpc3QuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IGludCBOID4KLXN0cnVjdCBsaXN0X2Nob29zZXI7Ci0KLX0KLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8MD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBsaXN0MDwKLSAgICAgICAgICAgICAKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8MT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTwKLSAgICAgICAgICAgICAgVDAKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MjwKLSAgICAgICAgICAgICAgVDAsIFQxCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jaG9vc2VyPDM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDM8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8ND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0NDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8NT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0NTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jaG9vc2VyPDY+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDY8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8Nz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0NzwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8OD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0ODwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jaG9vc2VyPDk+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDk8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8MTA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEwPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3NlcjwxMT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTE8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8MTI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEyPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8MTM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEzPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3NlcjwxND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTQ8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8MTU+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE1PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8MTY+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE2PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3NlcjwxNz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTc8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8MTg+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE4PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8MTk+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE5PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3NlcjwyMD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MjA8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLXN0cnVjdCBpc19saXN0X2FyZwotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSAgPSB0cnVlKTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpc19saXN0X2FyZzxuYT4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gZmFsc2UpOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUKLSAgICAsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAKLSAgICAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1Ci0gICAgLCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMAotICAgID4KLXN0cnVjdCBsaXN0X2NvdW50X2FyZ3MKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSA9Ci0gICAgICAgICAgaXNfbGlzdF9hcmc8VDE+Ojp2YWx1ZSArIGlzX2xpc3RfYXJnPFQyPjo6dmFsdWUgCi0gICAgICAgICsgaXNfbGlzdF9hcmc8VDM+Ojp2YWx1ZSArIGlzX2xpc3RfYXJnPFQ0Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfbGlzdF9hcmc8VDU+Ojp2YWx1ZSArIGlzX2xpc3RfYXJnPFQ2Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfbGlzdF9hcmc8VDc+Ojp2YWx1ZSArIGlzX2xpc3RfYXJnPFQ4Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfbGlzdF9hcmc8VDk+Ojp2YWx1ZSArIGlzX2xpc3RfYXJnPFQxMD46OnZhbHVlIAotICAgICAgICArIGlzX2xpc3RfYXJnPFQxMT46OnZhbHVlICsgaXNfbGlzdF9hcmc8VDEyPjo6dmFsdWUgCi0gICAgICAgICsgaXNfbGlzdF9hcmc8VDEzPjo6dmFsdWUgKyBpc19saXN0X2FyZzxUMTQ+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19saXN0X2FyZzxUMTU+Ojp2YWx1ZSArIGlzX2xpc3RfYXJnPFQxNj46OnZhbHVlIAotICAgICAgICArIGlzX2xpc3RfYXJnPFQxNz46OnZhbHVlICsgaXNfbGlzdF9hcmc8VDE4Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfbGlzdF9hcmc8VDE5Pjo6dmFsdWUgKyBpc19saXN0X2FyZzxUMjA+Ojp2YWx1ZQotICAgICAgICApOwotCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9pbXBsCi17Ci0gICAgdHlwZWRlZiBhdXg6Omxpc3RfY291bnRfYXJnczwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID4gYXJnX251bV87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGlzdF9jaG9vc2VyPCBhcmdfbnVtXzo6dmFsdWUgPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCA9IG5hLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hLCB0eXBlbmFtZSBUNiA9IG5hLCB0eXBlbmFtZSBUNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUOCA9IG5hLCB0eXBlbmFtZSBUOSA9IG5hLCB0eXBlbmFtZSBUMTAgPSBuYSwgdHlwZW5hbWUgVDExID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxMiA9IG5hLCB0eXBlbmFtZSBUMTMgPSBuYSwgdHlwZW5hbWUgVDE0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxNSA9IG5hLCB0eXBlbmFtZSBUMTYgPSBuYSwgdHlwZW5hbWUgVDE3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxOCA9IG5hLCB0eXBlbmFtZSBUMTkgPSBuYQotICAgID4KLXN0cnVjdCBsaXN0Ci0gICAgOiBhdXg6Omxpc3RfaW1wbDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID46OnR5cGUKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGlzdF9pbXBsPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL2xpc3RfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvbGlzdF9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGVkN2Y3ZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvbGlzdF9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUzNCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9saXN0X2MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IGludCBOID4KLXN0cnVjdCBsaXN0X2NfY2hvb3NlcjsKLQotfQotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDBfYzwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDFfYzwKLSAgICAgICAgICAgICAgVCwgQzAKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2NfY2hvb3NlcjwyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QyX2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDNfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDRfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2NfY2hvb3Nlcjw1PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q1X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDY+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDZfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDc+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDdfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2NfY2hvb3Nlcjw4PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q4X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDk+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDlfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDEwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMF9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDExPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMV9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jX2Nob29zZXI8MTI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEyX2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDEzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxM19jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDE0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNF9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jX2Nob29zZXI8MTU+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE1X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDE2PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNl9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQsIEMxNQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDE3PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxN19jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQsIEMxNSwgQzE2Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jX2Nob29zZXI8MTg+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE4X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNCwgQzE1LCBDMTYsIEMxNwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDE5PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxOV9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQsIEMxNSwgQzE2LCBDMTcsIEMxOAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDIwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QyMF9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQsIEMxNSwgQzE2LCBDMTcsIEMxOCwgQzE5Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgbG9uZyBDID4KLXN0cnVjdCBpc19saXN0X2NfYXJnCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlICA9IHRydWUpOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGlzX2xpc3RfY19hcmc8TE9OR19NQVg+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlICA9IGZhbHNlKTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNSwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOAotICAgICwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMiwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNQotICAgICwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTksIGxvbmcgQzIwCi0gICAgPgotc3RydWN0IGxpc3RfY19jb3VudF9hcmdzCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPQotICAgICAgICAgIGlzX2xpc3RfY19hcmc8QzE+Ojp2YWx1ZSArIGlzX2xpc3RfY19hcmc8QzI+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19saXN0X2NfYXJnPEMzPjo6dmFsdWUgKyBpc19saXN0X2NfYXJnPEM0Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfbGlzdF9jX2FyZzxDNT46OnZhbHVlICsgaXNfbGlzdF9jX2FyZzxDNj46OnZhbHVlIAotICAgICAgICArIGlzX2xpc3RfY19hcmc8Qzc+Ojp2YWx1ZSArIGlzX2xpc3RfY19hcmc8Qzg+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19saXN0X2NfYXJnPEM5Pjo6dmFsdWUgKyBpc19saXN0X2NfYXJnPEMxMD46OnZhbHVlIAotICAgICAgICArIGlzX2xpc3RfY19hcmc8QzExPjo6dmFsdWUgKyBpc19saXN0X2NfYXJnPEMxMj46OnZhbHVlIAotICAgICAgICArIGlzX2xpc3RfY19hcmc8QzEzPjo6dmFsdWUgKyBpc19saXN0X2NfYXJnPEMxND46OnZhbHVlIAotICAgICAgICArIGlzX2xpc3RfY19hcmc8QzE1Pjo6dmFsdWUgKyBpc19saXN0X2NfYXJnPEMxNj46OnZhbHVlIAotICAgICAgICArIGlzX2xpc3RfY19hcmc8QzE3Pjo6dmFsdWUgKyBpc19saXN0X2NfYXJnPEMxOD46OnZhbHVlIAotICAgICAgICArIGlzX2xpc3RfY19hcmc8QzE5Pjo6dmFsdWUgKyBpc19saXN0X2NfYXJnPEMyMD46OnZhbHVlCi0gICAgICAgICk7Ci0KLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jX2ltcGwKLXsKLSAgICB0eXBlZGVmIGF1eDo6bGlzdF9jX2NvdW50X2FyZ3M8Ci0gICAgICAgICAgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUsIEMxNiwgQzE3LCBDMTgsIEMxOQotICAgICAgICA+IGFyZ19udW1fOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6Omxpc3RfY19jaG9vc2VyPCBhcmdfbnVtXzo6dmFsdWUgPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAgPSBMT05HX01BWCwgbG9uZyBDMSA9IExPTkdfTUFYLCBsb25nIEMyID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzMgPSBMT05HX01BWCwgbG9uZyBDNCA9IExPTkdfTUFYLCBsb25nIEM1ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzYgPSBMT05HX01BWCwgbG9uZyBDNyA9IExPTkdfTUFYLCBsb25nIEM4ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzkgPSBMT05HX01BWCwgbG9uZyBDMTAgPSBMT05HX01BWCwgbG9uZyBDMTEgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTIgPSBMT05HX01BWCwgbG9uZyBDMTMgPSBMT05HX01BWCwgbG9uZyBDMTQgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTUgPSBMT05HX01BWCwgbG9uZyBDMTYgPSBMT05HX01BWCwgbG9uZyBDMTcgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTggPSBMT05HX01BWCwgbG9uZyBDMTkgPSBMT05HX01BWAotICAgID4KLXN0cnVjdCBsaXN0X2MKLSAgICA6IGF1eDo6bGlzdF9jX2ltcGw8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUsIEMxNiwgQzE3LCBDMTgsIEMxOQotICAgICAgICA+Ojp0eXBlCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6Omxpc3RfY19pbXBsPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNCwgQzE1LCBDMTYsIEMxNywgQzE4LCBDMTkKLSAgICAgICAgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL21hcC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvbWFwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzUxNzRjOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvbWFwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU1NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9tYXAuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IGludCBOID4KLXN0cnVjdCBtYXBfY2hvb3NlcjsKLQotfQotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG1hcF9jaG9vc2VyPDA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbWFwMDwKLSAgICAgICAgICAgICAKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3NlcjwxPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE8Ci0gICAgICAgICAgICAgIFQwCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWFwX2Nob29zZXI8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAyPAotICAgICAgICAgICAgICBUMCwgVDEKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3NlcjwzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDM8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3Nlcjw0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDQ8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWFwX2Nob29zZXI8NT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXA1PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3Nlcjw2PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDY8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3Nlcjw3PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDc8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWFwX2Nob29zZXI8OD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXA4PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3Nlcjw5PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDk8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3NlcjwxMD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxMDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3NlcjwxMT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxMTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG1hcF9jaG9vc2VyPDEyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDEyPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3NlcjwxMz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxMzwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3NlcjwxND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxNDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG1hcF9jaG9vc2VyPDE1PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE1PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3NlcjwxNj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxNjwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3NlcjwxNz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxNzwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG1hcF9jaG9vc2VyPDE4PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE4PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3NlcjwxOT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxOTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3NlcjwyMD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAyMDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotc3RydWN0IGlzX21hcF9hcmcKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gdHJ1ZSk7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaXNfbWFwX2FyZzxuYT4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gZmFsc2UpOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUKLSAgICAsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAKLSAgICAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1Ci0gICAgLCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMAotICAgID4KLXN0cnVjdCBtYXBfY291bnRfYXJncwotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0KLSAgICAgICAgICBpc19tYXBfYXJnPFQxPjo6dmFsdWUgKyBpc19tYXBfYXJnPFQyPjo6dmFsdWUgCi0gICAgICAgICsgaXNfbWFwX2FyZzxUMz46OnZhbHVlICsgaXNfbWFwX2FyZzxUND46OnZhbHVlIAotICAgICAgICArIGlzX21hcF9hcmc8VDU+Ojp2YWx1ZSArIGlzX21hcF9hcmc8VDY+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19tYXBfYXJnPFQ3Pjo6dmFsdWUgKyBpc19tYXBfYXJnPFQ4Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfbWFwX2FyZzxUOT46OnZhbHVlICsgaXNfbWFwX2FyZzxUMTA+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19tYXBfYXJnPFQxMT46OnZhbHVlICsgaXNfbWFwX2FyZzxUMTI+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19tYXBfYXJnPFQxMz46OnZhbHVlICsgaXNfbWFwX2FyZzxUMTQ+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19tYXBfYXJnPFQxNT46OnZhbHVlICsgaXNfbWFwX2FyZzxUMTY+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19tYXBfYXJnPFQxNz46OnZhbHVlICsgaXNfbWFwX2FyZzxUMTg+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19tYXBfYXJnPFQxOT46OnZhbHVlICsgaXNfbWFwX2FyZzxUMjA+Ojp2YWx1ZQotICAgICAgICApOwotCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICA+Ci1zdHJ1Y3QgbWFwX2ltcGwKLXsKLSAgICB0eXBlZGVmIGF1eDo6bWFwX2NvdW50X2FyZ3M8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+IGFyZ19udW1fOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6Om1hcF9jaG9vc2VyPCBhcmdfbnVtXzo6dmFsdWUgPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCA9IG5hLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hLCB0eXBlbmFtZSBUNiA9IG5hLCB0eXBlbmFtZSBUNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUOCA9IG5hLCB0eXBlbmFtZSBUOSA9IG5hLCB0eXBlbmFtZSBUMTAgPSBuYSwgdHlwZW5hbWUgVDExID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxMiA9IG5hLCB0eXBlbmFtZSBUMTMgPSBuYSwgdHlwZW5hbWUgVDE0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxNSA9IG5hLCB0eXBlbmFtZSBUMTYgPSBuYSwgdHlwZW5hbWUgVDE3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxOCA9IG5hLCB0eXBlbmFtZSBUMTkgPSBuYQotICAgID4KLXN0cnVjdCBtYXAKLSAgICA6IGF1eDo6bWFwX2ltcGw8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ojp0eXBlCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6Om1hcF9pbXBsPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL21pbnVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9taW51cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwYzI3YWEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL21pbnVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1MCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9taW51cy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0KLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMV8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzEpOjp2YWx1ZQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcyXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMik6OnZhbHVlCi0gICAgPgotc3RydWN0IG1pbnVzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCB0YWcxXyA+IHRhZzJfICkKLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgbWludXNfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IG1pbnVzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgbWludXNfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IG1pbnVzX2ltcGw8IG5hLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBtaW51c19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgbWludXNfdGFnCi0gICAgOiB0YWc8IFQsbmEgPgotewotfTsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgbWludXMyOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBtaW51cwotCi0gICAgOiBhdXg6Om1zdmNfZXRpX2Jhc2U8IHR5cGVuYW1lIGlmXzwKLQotICAgICAgICAgIGlzX25hPE4zPgotICAgICAgICAsIG1pbnVzMjwgTjEsTjIgPgotICAgICAgICAsIG1pbnVzPAotICAgICAgICAgICAgICBtaW51czI8IE4xLE4yID4KLSAgICAgICAgICAgICwgTjMsIE40LCBONQotICAgICAgICAgICAgPgotICAgICAgICA+Ojp0eXBlCi0KLSAgICA+Ci0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBtaW51cwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMQotICAgICwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgbWludXMyCi0gICAgOiBhdXg6Om1zdmNfZXRpX2Jhc2U8IHR5cGVuYW1lIGFwcGx5X3dyYXAyPAotICAgICAgICAgIG1pbnVzX2ltcGw8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIG1pbnVzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbWludXNfdGFnPE4yPjo6dHlwZQotICAgICAgICAgICAgPgotICAgICAgICAsIE4xCi0gICAgICAgICwgTjIKLSAgICAgICAgPjo6dHlwZSA+Ojp0eXBlCi0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIG1pbnVzMiwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgbWludXMpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCB0eXBlbmFtZSBULCBUIG4xLCBUIG4yID4KLXN0cnVjdCBtaW51c193a25kCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKFQsIHZhbHVlICA9IChuMSAtIG4yKSk7Ci0gICAgdHlwZWRlZiBpbnRlZ3JhbF9jPCBULHZhbHVlID4gdHlwZTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IG1pbnVzX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogYXV4OjptaW51c193a25kPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCBOMTo6dmFsdWUKLSAgICAgICAgICAgICwgTjI6OnZhbHVlCi0gICAgICAgICAgICA+Ojp0eXBlCi0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvbW9kdWx1cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvbW9kdWx1cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5MmEyMDcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL21vZHVsdXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTE1ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL21vZHVsdXMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzFfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcxKTo6dmFsdWUKLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMl8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzIpOjp2YWx1ZQotICAgID4KLXN0cnVjdCBtb2R1bHVzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCB0YWcxXyA+IHRhZzJfICkKLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgbW9kdWx1c19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgbW9kdWx1c19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IG1vZHVsdXNfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IG1vZHVsdXNfaW1wbDwgbmEsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IG1vZHVsdXNfaW1wbDwgaW50ZWdyYWxfY190YWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IG1vZHVsdXNfdGFnCi0gICAgOiB0YWc8IFQsbmEgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgbW9kdWx1cwotICAgIDogYXV4Ojptc3ZjX2V0aV9iYXNlPCB0eXBlbmFtZSBhcHBseV93cmFwMjwKLSAgICAgICAgICBtb2R1bHVzX2ltcGw8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIG1vZHVsdXNfdGFnPE4xPjo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBtb2R1bHVzX3RhZzxOMj46OnR5cGUKLSAgICAgICAgICAgID4KLSAgICAgICAgLCBOMQotICAgICAgICAsIE4yCi0gICAgICAgID46OnR5cGUgPjo6dHlwZQotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBtb2R1bHVzLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBtb2R1bHVzKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgVCBuMSwgVCBuMiA+Ci1zdHJ1Y3QgbW9kdWx1c193a25kCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKFQsIHZhbHVlICA9IChuMSAlIG4yKSk7Ci0gICAgdHlwZWRlZiBpbnRlZ3JhbF9jPCBULHZhbHVlID4gdHlwZTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IG1vZHVsdXNfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBhdXg6Om1vZHVsdXNfd2tuZDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgTjE6OnZhbHVlCi0gICAgICAgICAgICAsIE4yOjp2YWx1ZQotICAgICAgICAgICAgPjo6dHlwZQotCi0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL25vdF9lcXVhbF90by5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvbm90X2VxdWFsX3RvLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjg2MTgwOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvbm90X2VxdWFsX3RvLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwMiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9ub3RfZXF1YWxfdG8uaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzFfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcxKTo6dmFsdWUKLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMl8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzIpOjp2YWx1ZQotICAgID4KLXN0cnVjdCBub3RfZXF1YWxfdG9faW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIHRhZzFfID4gdGFnMl8gKQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBub3RfZXF1YWxfdG9faW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IG5vdF9lcXVhbF90b19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IG5vdF9lcXVhbF90b19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3Qgbm90X2VxdWFsX3RvX2ltcGw8IG5hLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBub3RfZXF1YWxfdG9faW1wbDwgaW50ZWdyYWxfY190YWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IG5vdF9lcXVhbF90b190YWcKLSAgICA6IHRhZzwgVCxuYSA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBub3RfZXF1YWxfdG8KLSAgICA6IGF1eDo6bXN2Y19ldGlfYmFzZTwgdHlwZW5hbWUgYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgbm90X2VxdWFsX3RvX2ltcGw8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIG5vdF9lcXVhbF90b190YWc8TjE+Ojp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIG5vdF9lcXVhbF90b190YWc8TjI+Ojp0eXBlCi0gICAgICAgICAgICA+Ci0gICAgICAgICwgTjEKLSAgICAgICAgLCBOMgotICAgICAgICA+Ojp0eXBlID46OnR5cGUKLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgbm90X2VxdWFsX3RvLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBub3RfZXF1YWxfdG8pCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgbm90X2VxdWFsX3RvX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9Ci0gICAgICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSAhPQotICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlICkKLSAgICAgICAgICAgICk7Ci0gICAgICAgIHR5cGVkZWYgYm9vbF88dmFsdWU+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvb3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL29yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTY0NDY1OC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvb3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvb3IuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IGJvb2wgQ18gPiBzdHJ1Y3Qgb3JfaW1wbAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgICAgICA6IHRydWVfCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBvcl9pbXBsPGZhbHNlPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgICAgICA6IG9yX2ltcGw8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1RZUEVfV0tORChUMSk6OnZhbHVlCi0gICAgICAgICAgICA+Ojp0ZW1wbGF0ZSByZXN1bHRfPCBUMixUMyxUNCxmYWxzZV8gPgotICAgIHsKLSAgICB9OwotCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgcmVzdWx0XzwgZmFsc2VfLGZhbHNlXyxmYWxzZV8sZmFsc2VfID4KLSAgICAgICAgOiBmYWxzZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQyKQotICAgICwgdHlwZW5hbWUgVDMgPSBmYWxzZV8sIHR5cGVuYW1lIFQ0ID0gZmFsc2VfLCB0eXBlbmFtZSBUNSA9IGZhbHNlXwotICAgID4KLXN0cnVjdCBvcl8KLQotICAgIDogYXV4Ojpvcl9pbXBsPAotICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1RZUEVfV0tORChUMSk6OnZhbHVlCi0gICAgICAgID46OnRlbXBsYXRlIHJlc3VsdF88IFQyLFQzLFQ0LFQ1ID4KLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIG9yXwotICAgICAgICAsICggVDEsIFQyLCBUMywgVDQsIFQ1KQotICAgICAgICApCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKAotICAgICAgMgotICAgICwgNQotICAgICwgb3JfCi0gICAgKQotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL3BsYWNlaG9sZGVycy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvcGxhY2Vob2xkZXJzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2EyOGMwOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvcGxhY2Vob2xkZXJzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwNSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8gQ29weXJpZ2h0IFBldGVyIERpbW92IDIwMDEtMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9wbGFjZWhvbGRlcnMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8IC0xID4gXzsKLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfKQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfOwotfQotCi19fQotCi0vLy8gYWd1cnQsIDE3L21hci8wMjogb25lIG1vcmUgcGxhY2Vob2xkZXIgZm9yIHRoZSBsYXN0ICdhcHBseSMnIAotLy8vIHNwZWNpYWxpemF0aW9uCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzwxPiBfMTsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF8xKQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfMTsKLX0KLQotfX0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDI+IF8yOwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzIpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol8yOwotfQotCi19fQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8Mz4gXzM7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfMykKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzM7Ci19Ci0KLX19Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzw0PiBfNDsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF80KQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfNDsKLX0KLQotfX0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDU+IF81OwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzUpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol81OwotfQotCi19fQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8Nj4gXzY7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfNikKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzY7Ci19Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvcGx1cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvcGx1cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJmOGNjYjcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL3BsdXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTUwICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3BsdXMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzFfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcxKTo6dmFsdWUKLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMl8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzIpOjp2YWx1ZQotICAgID4KLXN0cnVjdCBwbHVzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCB0YWcxXyA+IHRhZzJfICkKLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgcGx1c19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgcGx1c19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IHBsdXNfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHBsdXNfaW1wbDwgbmEsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHBsdXNfaW1wbDwgaW50ZWdyYWxfY190YWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHBsdXNfdGFnCi0gICAgOiB0YWc8IFQsbmEgPgotewotfTsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgcGx1czI7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IHBsdXMKLQotICAgIDogYXV4Ojptc3ZjX2V0aV9iYXNlPCB0eXBlbmFtZSBpZl88Ci0KLSAgICAgICAgICBpc19uYTxOMz4KLSAgICAgICAgLCBwbHVzMjwgTjEsTjIgPgotICAgICAgICAsIHBsdXM8Ci0gICAgICAgICAgICAgIHBsdXMyPCBOMSxOMiA+Ci0gICAgICAgICAgICAsIE4zLCBONCwgTjUKLSAgICAgICAgICAgID4KLSAgICAgICAgPjo6dHlwZQotCi0gICAgPgotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgcGx1cwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMQotICAgICwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgcGx1czIKLSAgICA6IGF1eDo6bXN2Y19ldGlfYmFzZTwgdHlwZW5hbWUgYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgcGx1c19pbXBsPAotICAgICAgICAgICAgICB0eXBlbmFtZSBwbHVzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgcGx1c190YWc8TjI+Ojp0eXBlCi0gICAgICAgICAgICA+Ci0gICAgICAgICwgTjEKLSAgICAgICAgLCBOMgotICAgICAgICA+Ojp0eXBlID46OnR5cGUKLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgcGx1czIsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIHBsdXMpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCB0eXBlbmFtZSBULCBUIG4xLCBUIG4yID4KLXN0cnVjdCBwbHVzX3drbmQKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoVCwgdmFsdWUgID0gKG4xICsgbjIpKTsKLSAgICB0eXBlZGVmIGludGVncmFsX2M8IFQsdmFsdWUgPiB0eXBlOwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcGx1c19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGF1eDo6cGx1c193a25kPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCBOMTo6dmFsdWUKLSAgICAgICAgICAgICwgTjI6OnZhbHVlCi0gICAgICAgICAgICA+Ojp0eXBlCi0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvcXVvdGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL3F1b3RlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjI1OThjYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvcXVvdGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTE2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3F1b3RlLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8IGJvb2wgPiBzdHJ1Y3QgcXVvdGVfaW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHJlc3VsdF8KLSAgICAgICAgOiBUCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBxdW90ZV9pbXBsPGZhbHNlPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFRhZyA9IHZvaWRfCi0gICAgPgotc3RydWN0IHF1b3RlMQotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogcXVvdGVfaW1wbDwgYXV4OjpoYXNfdHlwZTwgRjxVMT4gPjo6dmFsdWUgPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBGPFUxPiA+Ci0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFRhZyA9IHZvaWRfCi0gICAgPgotc3RydWN0IHF1b3RlMgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IHF1b3RlX2ltcGw8IGF1eDo6aGFzX3R5cGU8IEY8IFUxLFUyID4gPjo6dmFsdWUgPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBGPCBVMSxVMiA+ID4KLQotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMyA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFRhZyA9IHZvaWRfCi0gICAgPgotc3RydWN0IHF1b3RlMwotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBxdW90ZV9pbXBsPCBhdXg6Omhhc190eXBlPCBGPCBVMSxVMixVMyA+ID46OnZhbHVlID4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgRjwgVTEsVTIsVTMgPiA+Ci0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0ID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVGFnID0gdm9pZF8KLSAgICA+Ci1zdHJ1Y3QgcXVvdGU0Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogcXVvdGVfaW1wbDwgYXV4OjpoYXNfdHlwZTwgRjwgVTEsVTIsVTMsVTQgPiA+Ojp2YWx1ZSA+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IEY8IFUxLFUyLFUzLFU0ID4gPgotCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0Ci0gICAgICAgICwgdHlwZW5hbWUgUDUKLSAgICAgICAgPgotICAgICAgY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVGFnID0gdm9pZF8KLSAgICA+Ci1zdHJ1Y3QgcXVvdGU1Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAgICAgLCB0eXBlbmFtZSBVNQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBxdW90ZV9pbXBsPCBhdXg6Omhhc190eXBlPCBGPCBVMSxVMixVMyxVNCxVNSA+ID46OnZhbHVlID4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgRjwgVTEsVTIsVTMsVTQsVTUgPiA+Ci0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9yZXZlcnNlX2ZvbGRfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvcmV2ZXJzZV9mb2xkX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYzZjMTczLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9yZXZlcnNlX2ZvbGRfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyOTUgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9yZXZlcnNlX2ZvbGRfaW1wbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgbG9uZyBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfaW1wbDsKLQotdGVtcGxhdGU8IGxvbmcgTiA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2NodW5rOwotCi10ZW1wbGF0ZTw+IHN0cnVjdCByZXZlcnNlX2ZvbGRfY2h1bms8MD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgZndkX3N0YXRlMCBia3dkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMCBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcmV2ZXJzZV9mb2xkX2NodW5rPDE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgZndkX3N0YXRlMSBia3dkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMSBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcmV2ZXJzZV9mb2xkX2NodW5rPDI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBmd2Rfc3RhdGUyIGJrd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIyIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCByZXZlcnNlX2ZvbGRfY2h1bms8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgZndkX3N0YXRlMyBia3dkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUzLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMyBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcmV2ZXJzZV9mb2xkX2NodW5rPDQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUzLCB0eXBlbmFtZSBkZXJlZjxpdGVyMz46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgZndkX3N0YXRlNCBia3dkX3N0YXRlNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGU0LCB0eXBlbmFtZSBkZXJlZjxpdGVyMz46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUzLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyNCBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IGxvbmcgTiA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2NodW5rCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUzLCB0eXBlbmFtZSBkZXJlZjxpdGVyMz46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgcmV2ZXJzZV9mb2xkX2ltcGw8Ci0gICAgICAgICAgICAgICggKE4gLSA0KSA8IDAgPyAwIDogTiAtIDQgKQotICAgICAgICAgICAgLCBpdGVyNAotICAgICAgICAgICAgLCBMYXN0Ci0gICAgICAgICAgICAsIGZ3ZF9zdGF0ZTQKLSAgICAgICAgICAgICwgQmFja3dhcmRPcAotICAgICAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgICAgID4gbmVzdGVkX2NodW5rOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX2NodW5rOjpzdGF0ZSBia3dkX3N0YXRlNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGU0LCB0eXBlbmFtZSBkZXJlZjxpdGVyMz46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUzLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfY2h1bms6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9zdGVwOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9udWxsX3N0ZXAKLXsKLSAgICB0eXBlZGVmIExhc3QgaXRlcmF0b3I7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfY2h1bms8IC0xID4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgaXNfc2FtZTwgRmlyc3QsTGFzdCA+Ojp0eXBlCi0gICAgICAgICAgICAsIHJldmVyc2VfZm9sZF9udWxsX3N0ZXA8IExhc3QsU3RhdGUgPgotICAgICAgICAgICAgLCByZXZlcnNlX2ZvbGRfc3RlcDwgRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci0gICAgICAgICAgICA+Ojp0eXBlIHJlc187Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjpzdGF0ZSBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjppdGVyYXRvciBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfc3RlcAotewotICAgIHR5cGVkZWYgcmV2ZXJzZV9mb2xkX2NodW5rPCAtMSA+Ojp0ZW1wbGF0ZSByZXN1bHRfPAotICAgICAgICAgIHR5cGVuYW1lIG1wbDo6bmV4dDxGaXJzdD46OnR5cGUKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgYXBwbHkyPEZvcndhcmRPcCxTdGF0ZSwgdHlwZW5hbWUgZGVyZWY8Rmlyc3Q+Ojp0eXBlPjo6dHlwZQotICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiBuZXN0ZWRfc3RlcDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPAotICAgICAgICAgIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBuZXN0ZWRfc3RlcDo6c3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBkZXJlZjxGaXJzdD46OnR5cGUKLSAgICAgICAgPjo6dHlwZSBzdGF0ZTsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX3N0ZXA6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBsb25nIE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9pbXBsCi0gICAgOiByZXZlcnNlX2ZvbGRfY2h1bms8Tj4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLX07Ci0KLX19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL3JldmVyc2VfaXRlcl9mb2xkX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL3JldmVyc2VfaXRlcl9mb2xkX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1N2NjNjg4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9yZXZlcnNlX2l0ZXJfZm9sZF9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI5NSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL3JldmVyc2VfaXRlcl9mb2xkX2ltcGwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIGxvbmcgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbDsKLQotdGVtcGxhdGU8IGxvbmcgTiA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfY2h1bms7Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2NodW5rPDA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTAgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjAgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2NodW5rPDE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTAsaXRlcjAgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgZndkX3N0YXRlMSBia3dkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTEsaXRlcjAgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMSBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfY2h1bms8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMCxpdGVyMCA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUxLGl0ZXIxID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTIgYmt3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUyLGl0ZXIxID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUxLGl0ZXIwID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjIgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2NodW5rPDM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTAsaXRlcjAgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMSxpdGVyMSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUyLGl0ZXIyID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTMgYmt3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUzLGl0ZXIyID46OnR5cGUgYmt3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUyLGl0ZXIxID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUxLGl0ZXIwID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjMgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2NodW5rPDQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTAsaXRlcjAgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMSxpdGVyMSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUyLGl0ZXIyID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTMsaXRlcjMgPjo6dHlwZSBmd2Rfc3RhdGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgZndkX3N0YXRlNCBia3dkX3N0YXRlNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTQsaXRlcjMgPjo6dHlwZSBia3dkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTMsaXRlcjIgPjo6dHlwZSBia3dkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTIsaXRlcjEgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTEsaXRlcjAgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyNCBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IGxvbmcgTiA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfY2h1bmsKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMCxpdGVyMCA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUxLGl0ZXIxID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTIsaXRlcjIgPjo6dHlwZSBmd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMyxpdGVyMyA+Ojp0eXBlIGZ3ZF9zdGF0ZTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsPAotICAgICAgICAgICAgICAoIChOIC0gNCkgPCAwID8gMCA6IE4gLSA0ICkKLSAgICAgICAgICAgICwgaXRlcjQKLSAgICAgICAgICAgICwgTGFzdAotICAgICAgICAgICAgLCBmd2Rfc3RhdGU0Ci0gICAgICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgICAgICA+IG5lc3RlZF9jaHVuazsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9jaHVuazo6c3RhdGUgYmt3ZF9zdGF0ZTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGU0LGl0ZXIzID46OnR5cGUgYmt3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUzLGl0ZXIyID46OnR5cGUgYmt3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUyLGl0ZXIxID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUxLGl0ZXIwID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX2NodW5rOjppdGVyYXRvciBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9zdGVwOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX251bGxfc3RlcAotewotICAgIHR5cGVkZWYgTGFzdCBpdGVyYXRvcjsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2NodW5rPCAtMSA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGlzX3NhbWU8IEZpcnN0LExhc3QgPjo6dHlwZQotICAgICAgICAgICAgLCByZXZlcnNlX2l0ZXJfZm9sZF9udWxsX3N0ZXA8IExhc3QsU3RhdGUgPgotICAgICAgICAgICAgLCByZXZlcnNlX2l0ZXJfZm9sZF9zdGVwPCBGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLSAgICAgICAgICAgID46OnR5cGUgcmVzXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186OnN0YXRlIHN0YXRlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186Oml0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX3N0ZXAKLXsKLSAgICB0eXBlZGVmIHJldmVyc2VfaXRlcl9mb2xkX2NodW5rPCAtMSA+Ojp0ZW1wbGF0ZSByZXN1bHRfPAotICAgICAgICAgIHR5cGVuYW1lIG1wbDo6bmV4dDxGaXJzdD46OnR5cGUKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsU3RhdGUsRmlyc3QgPjo6dHlwZQotICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiBuZXN0ZWRfc3RlcDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPAotICAgICAgICAgIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBuZXN0ZWRfc3RlcDo6c3RhdGUKLSAgICAgICAgLCBGaXJzdAotICAgICAgICA+Ojp0eXBlIHN0YXRlOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfc3RlcDo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGxvbmcgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbAotICAgIDogcmV2ZXJzZV9pdGVyX2ZvbGRfY2h1bms8Tj4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLX07Ci0KLX19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL3NldC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvc2V0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDg0ZDUzZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvc2V0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU1NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9zZXQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IGludCBOID4KLXN0cnVjdCBzZXRfY2hvb3NlcjsKLQotfQotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jaG9vc2VyPDA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgc2V0MDwKLSAgICAgICAgICAgICAKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3NlcjwxPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE8Ci0gICAgICAgICAgICAgIFQwCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2Nob29zZXI8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQyPAotICAgICAgICAgICAgICBUMCwgVDEKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3NlcjwzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDM8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3Nlcjw0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDQ8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2Nob29zZXI8NT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ1PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3Nlcjw2PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDY8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3Nlcjw3PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDc8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2Nob29zZXI8OD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ4PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3Nlcjw5PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDk8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3NlcjwxMD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3NlcjwxMT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jaG9vc2VyPDEyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDEyPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3NlcjwxMz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMzwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3NlcjwxND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jaG9vc2VyPDE1PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE1PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3NlcjwxNj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNjwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3NlcjwxNz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNzwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jaG9vc2VyPDE4PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE4PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3NlcjwxOT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxOTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3NlcjwyMD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQyMDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotc3RydWN0IGlzX3NldF9hcmcKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gdHJ1ZSk7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaXNfc2V0X2FyZzxuYT4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gZmFsc2UpOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUKLSAgICAsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAKLSAgICAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1Ci0gICAgLCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMAotICAgID4KLXN0cnVjdCBzZXRfY291bnRfYXJncwotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0KLSAgICAgICAgICBpc19zZXRfYXJnPFQxPjo6dmFsdWUgKyBpc19zZXRfYXJnPFQyPjo6dmFsdWUgCi0gICAgICAgICsgaXNfc2V0X2FyZzxUMz46OnZhbHVlICsgaXNfc2V0X2FyZzxUND46OnZhbHVlIAotICAgICAgICArIGlzX3NldF9hcmc8VDU+Ojp2YWx1ZSArIGlzX3NldF9hcmc8VDY+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfYXJnPFQ3Pjo6dmFsdWUgKyBpc19zZXRfYXJnPFQ4Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfc2V0X2FyZzxUOT46OnZhbHVlICsgaXNfc2V0X2FyZzxUMTA+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfYXJnPFQxMT46OnZhbHVlICsgaXNfc2V0X2FyZzxUMTI+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfYXJnPFQxMz46OnZhbHVlICsgaXNfc2V0X2FyZzxUMTQ+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfYXJnPFQxNT46OnZhbHVlICsgaXNfc2V0X2FyZzxUMTY+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfYXJnPFQxNz46OnZhbHVlICsgaXNfc2V0X2FyZzxUMTg+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfYXJnPFQxOT46OnZhbHVlICsgaXNfc2V0X2FyZzxUMjA+Ojp2YWx1ZQotICAgICAgICApOwotCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2ltcGwKLXsKLSAgICB0eXBlZGVmIGF1eDo6c2V0X2NvdW50X2FyZ3M8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+IGFyZ19udW1fOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnNldF9jaG9vc2VyPCBhcmdfbnVtXzo6dmFsdWUgPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCA9IG5hLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hLCB0eXBlbmFtZSBUNiA9IG5hLCB0eXBlbmFtZSBUNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUOCA9IG5hLCB0eXBlbmFtZSBUOSA9IG5hLCB0eXBlbmFtZSBUMTAgPSBuYSwgdHlwZW5hbWUgVDExID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxMiA9IG5hLCB0eXBlbmFtZSBUMTMgPSBuYSwgdHlwZW5hbWUgVDE0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxNSA9IG5hLCB0eXBlbmFtZSBUMTYgPSBuYSwgdHlwZW5hbWUgVDE3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxOCA9IG5hLCB0eXBlbmFtZSBUMTkgPSBuYQotICAgID4KLXN0cnVjdCBzZXQKLSAgICA6IGF1eDo6c2V0X2ltcGw8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ojp0eXBlCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnNldF9pbXBsPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL3NldF9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC9zZXRfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNiNWYyYWIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL3NldF9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUzNCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9zZXRfYy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgaW50IE4gPgotc3RydWN0IHNldF9jX2Nob29zZXI7Ci0KLX0KLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MF9jPAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3NlcjwxPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDFfYzwKLSAgICAgICAgICAgICAgVCwgQzAKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0Ml9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0M19jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3Nlcjw0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDRfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDU+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NV9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDY+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0Nl9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3Nlcjw3PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDdfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDg+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0OF9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDk+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0OV9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3NlcjwxMD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMF9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8MTE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTFfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8MTI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTJfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3NlcjwxMz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxM19jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8MTQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTRfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8MTU+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTVfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3NlcjwxNj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNl9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQsIEMxNQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8MTc+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTdfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUsIEMxNgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8MTg+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MThfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUsIEMxNiwgQzE3Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3NlcjwxOT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxOV9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQsIEMxNSwgQzE2LCBDMTcsIEMxOAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8MjA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MjBfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUsIEMxNiwgQzE3LCBDMTgsIEMxOQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGxvbmcgQyA+Ci1zdHJ1Y3QgaXNfc2V0X2NfYXJnCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlICA9IHRydWUpOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGlzX3NldF9jX2FyZzxMT05HX01BWD4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gZmFsc2UpOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1LCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4Ci0gICAgLCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1Ci0gICAgLCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOSwgbG9uZyBDMjAKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2NfY291bnRfYXJncwotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0KLSAgICAgICAgICBpc19zZXRfY19hcmc8QzE+Ojp2YWx1ZSArIGlzX3NldF9jX2FyZzxDMj46OnZhbHVlIAotICAgICAgICArIGlzX3NldF9jX2FyZzxDMz46OnZhbHVlICsgaXNfc2V0X2NfYXJnPEM0Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfc2V0X2NfYXJnPEM1Pjo6dmFsdWUgKyBpc19zZXRfY19hcmc8QzY+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfY19hcmc8Qzc+Ojp2YWx1ZSArIGlzX3NldF9jX2FyZzxDOD46OnZhbHVlIAotICAgICAgICArIGlzX3NldF9jX2FyZzxDOT46OnZhbHVlICsgaXNfc2V0X2NfYXJnPEMxMD46OnZhbHVlIAotICAgICAgICArIGlzX3NldF9jX2FyZzxDMTE+Ojp2YWx1ZSArIGlzX3NldF9jX2FyZzxDMTI+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfY19hcmc8QzEzPjo6dmFsdWUgKyBpc19zZXRfY19hcmc8QzE0Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfc2V0X2NfYXJnPEMxNT46OnZhbHVlICsgaXNfc2V0X2NfYXJnPEMxNj46OnZhbHVlIAotICAgICAgICArIGlzX3NldF9jX2FyZzxDMTc+Ojp2YWx1ZSArIGlzX3NldF9jX2FyZzxDMTg+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfY19hcmc8QzE5Pjo6dmFsdWUgKyBpc19zZXRfY19hcmc8QzIwPjo6dmFsdWUKLSAgICAgICAgKTsKLQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgID4KLXN0cnVjdCBzZXRfY19pbXBsCi17Ci0gICAgdHlwZWRlZiBhdXg6OnNldF9jX2NvdW50X2FyZ3M8Ci0gICAgICAgICAgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUsIEMxNiwgQzE3LCBDMTgsIEMxOQotICAgICAgICA+IGFyZ19udW1fOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnNldF9jX2Nob29zZXI8IGFyZ19udW1fOjp2YWx1ZSA+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCA9IExPTkdfTUFYLCBsb25nIEMxID0gTE9OR19NQVgsIGxvbmcgQzIgPSBMT05HX01BWAotICAgICwgbG9uZyBDMyA9IExPTkdfTUFYLCBsb25nIEM0ID0gTE9OR19NQVgsIGxvbmcgQzUgPSBMT05HX01BWAotICAgICwgbG9uZyBDNiA9IExPTkdfTUFYLCBsb25nIEM3ID0gTE9OR19NQVgsIGxvbmcgQzggPSBMT05HX01BWAotICAgICwgbG9uZyBDOSA9IExPTkdfTUFYLCBsb25nIEMxMCA9IExPTkdfTUFYLCBsb25nIEMxMSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxMiA9IExPTkdfTUFYLCBsb25nIEMxMyA9IExPTkdfTUFYLCBsb25nIEMxNCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxNSA9IExPTkdfTUFYLCBsb25nIEMxNiA9IExPTkdfTUFYLCBsb25nIEMxNyA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxOCA9IExPTkdfTUFYLCBsb25nIEMxOSA9IExPTkdfTUFYCi0gICAgPgotc3RydWN0IHNldF9jCi0gICAgOiBhdXg6OnNldF9jX2ltcGw8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUsIEMxNiwgQzE3LCBDMTgsIEMxOQotICAgICAgICA+Ojp0eXBlCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnNldF9jX2ltcGw8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUsIEMxNiwgQzE3LCBDMTgsIEMxOQotICAgICAgICA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvc2hpZnRfbGVmdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvc2hpZnRfbGVmdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA2MzJlZDEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL3NoaWZ0X2xlZnQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTE0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLyBDb3B5cmlnaHQgSmFhcCBTdXRlciAyMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3NoaWZ0X2xlZnQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzFfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcxKTo6dmFsdWUKLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgdGFnMl8pICA9IE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKFRhZzIpOjp2YWx1ZQotICAgID4KLXN0cnVjdCBzaGlmdF9sZWZ0X2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCB0YWcxXyA+IHRhZzJfICkKLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgc2hpZnRfbGVmdF9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgc2hpZnRfbGVmdF9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IHNoaWZ0X2xlZnRfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHNoaWZ0X2xlZnRfaW1wbDwgbmEsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHNoaWZ0X2xlZnRfaW1wbDwgaW50ZWdyYWxfY190YWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHNoaWZ0X2xlZnRfdGFnCi0gICAgOiB0YWc8IFQsbmEgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3Qgc2hpZnRfbGVmdAotICAgIDogYXV4Ojptc3ZjX2V0aV9iYXNlPCB0eXBlbmFtZSBhcHBseV93cmFwMjwKLSAgICAgICAgICBzaGlmdF9sZWZ0X2ltcGw8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIHNoaWZ0X2xlZnRfdGFnPE4xPjo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBzaGlmdF9sZWZ0X3RhZzxOMj46OnR5cGUKLSAgICAgICAgICAgID4KLSAgICAgICAgLCBOMQotICAgICAgICAsIE4yCi0gICAgICAgID46OnR5cGUgPjo6dHlwZQotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBzaGlmdF9sZWZ0LCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBzaGlmdF9sZWZ0KQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgU2hpZnQsIFQgbiwgU2hpZnQgcyA+Ci1zdHJ1Y3Qgc2hpZnRfbGVmdF93a25kCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKFQsIHZhbHVlICA9IChuIDw8IHMpKTsKLSAgICB0eXBlZGVmIGludGVncmFsX2M8IFQsdmFsdWUgPiB0eXBlOwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2hpZnRfbGVmdF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4sIHR5cGVuYW1lIFMgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBhdXg6OnNoaWZ0X2xlZnRfd2tuZDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgTjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBTOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAsIE46OnZhbHVlCi0gICAgICAgICAgICAsIFM6OnZhbHVlCi0gICAgICAgICAgICA+Ojp0eXBlCi0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvc2hpZnRfcmlnaHQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL3NoaWZ0X3JpZ2h0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmU0MzgwMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvc2hpZnRfcmlnaHQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTE0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLyBDb3B5cmlnaHQgSmFhcCBTdXRlciAyMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3NoaWZ0X3JpZ2h0LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcxXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMSk6OnZhbHVlCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzJfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcyKTo6dmFsdWUKLSAgICA+Ci1zdHJ1Y3Qgc2hpZnRfcmlnaHRfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIHRhZzFfID4gdGFnMl8gKQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBzaGlmdF9yaWdodF9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgc2hpZnRfcmlnaHRfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBzaGlmdF9yaWdodF9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3Qgc2hpZnRfcmlnaHRfaW1wbDwgbmEsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHNoaWZ0X3JpZ2h0X2ltcGw8IGludGVncmFsX2NfdGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBzaGlmdF9yaWdodF90YWcKLSAgICA6IHRhZzwgVCxuYSA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBzaGlmdF9yaWdodAotICAgIDogYXV4Ojptc3ZjX2V0aV9iYXNlPCB0eXBlbmFtZSBhcHBseV93cmFwMjwKLSAgICAgICAgICBzaGlmdF9yaWdodF9pbXBsPAotICAgICAgICAgICAgICB0eXBlbmFtZSBzaGlmdF9yaWdodF90YWc8TjE+Ojp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHNoaWZ0X3JpZ2h0X3RhZzxOMj46OnR5cGUKLSAgICAgICAgICAgID4KLSAgICAgICAgLCBOMQotICAgICAgICAsIE4yCi0gICAgICAgID46OnR5cGUgPjo6dHlwZQotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBzaGlmdF9yaWdodCwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgc2hpZnRfcmlnaHQpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCB0eXBlbmFtZSBULCB0eXBlbmFtZSBTaGlmdCwgVCBuLCBTaGlmdCBzID4KLXN0cnVjdCBzaGlmdF9yaWdodF93a25kCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKFQsIHZhbHVlICA9IChuID4+IHMpKTsKLSAgICB0eXBlZGVmIGludGVncmFsX2M8IFQsdmFsdWUgPiB0eXBlOwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2hpZnRfcmlnaHRfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOLCB0eXBlbmFtZSBTID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogYXV4OjpzaGlmdF9yaWdodF93a25kPAotICAgICAgICAgICAgICB0eXBlbmFtZSBOOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFM6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICwgTjo6dmFsdWUKLSAgICAgICAgICAgICwgUzo6dmFsdWUKLSAgICAgICAgICAgID46OnR5cGUKLQotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC90ZW1wbGF0ZV9hcml0eS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvdGVtcGxhdGVfYXJpdHkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMzFkYmE0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC90ZW1wbGF0ZV9hcml0eS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL3RlbXBsYXRlX2FyaXR5LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGJvb2wgPgotc3RydWN0IHRlbXBsYXRlX2FyaXR5X2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiA+IHN0cnVjdCByZXN1bHRfCi0gICAgICAgIDogbXBsOjppbnRfPCAtMSA+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdGVtcGxhdGVfYXJpdHlfaW1wbDx0cnVlPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGID4gc3RydWN0IHJlc3VsdF8KLSAgICAgICAgOiBGOjphcml0eQotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYgPgotc3RydWN0IHRlbXBsYXRlX2FyaXR5Ci0gICAgOiB0ZW1wbGF0ZV9hcml0eV9pbXBsPCA6Om5kbmJvb3N0OjptcGw6OmF1eDo6aGFzX3JlYmluZDxGPjo6dmFsdWUgPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88Rj4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCB0ZW1wbGF0ZV9hcml0eTxpbnQ+Ci0gICAgOiBtcGw6OmludF88IC0xID4KLXsKLX07Ci0KLX19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvdGltZXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL3RpbWVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWYyZjI2Ny4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvdGltZXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTUwICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3RpbWVzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLQotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCB0YWcxXykgID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoVGFnMSk6OnZhbHVlCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHRhZzJfKSAgPSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChUYWcyKTo6dmFsdWUKLSAgICA+Ci1zdHJ1Y3QgdGltZXNfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIHRhZzFfID4gdGFnMl8gKQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCB0aW1lc19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgdGltZXNfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCB0aW1lc19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgdGltZXNfaW1wbDwgbmEsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHRpbWVzX2ltcGw8IGludGVncmFsX2NfdGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCB0aW1lc190YWcKLSAgICA6IHRhZzwgVCxuYSA+Ci17Ci19OwotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCB0aW1lczI7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IHRpbWVzCi0KLSAgICA6IGF1eDo6bXN2Y19ldGlfYmFzZTwgdHlwZW5hbWUgaWZfPAotCi0gICAgICAgICAgaXNfbmE8TjM+Ci0gICAgICAgICwgdGltZXMyPCBOMSxOMiA+Ci0gICAgICAgICwgdGltZXM8Ci0gICAgICAgICAgICAgIHRpbWVzMjwgTjEsTjIgPgotICAgICAgICAgICAgLCBOMywgTjQsIE41Ci0gICAgICAgICAgICA+Ci0gICAgICAgID46OnR5cGUKLQotICAgID4KLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIHRpbWVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xCi0gICAgLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCB0aW1lczIKLSAgICA6IGF1eDo6bXN2Y19ldGlfYmFzZTwgdHlwZW5hbWUgYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgdGltZXNfaW1wbDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgdGltZXNfdGFnPE4xPjo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSB0aW1lc190YWc8TjI+Ojp0eXBlCi0gICAgICAgICAgICA+Ci0gICAgICAgICwgTjEKLSAgICAgICAgLCBOMgotICAgICAgICA+Ojp0eXBlID46OnR5cGUKLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgdGltZXMyLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCB0aW1lcykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIFQgbjEsIFQgbjIgPgotc3RydWN0IHRpbWVzX3drbmQKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoVCwgdmFsdWUgID0gKG4xICogbjIpKTsKLSAgICB0eXBlZGVmIGludGVncmFsX2M8IFQsdmFsdWUgPiB0eXBlOwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdGltZXNfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBhdXg6OnRpbWVzX3drbmQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsIE4xOjp2YWx1ZQotICAgICAgICAgICAgLCBOMjo6dmFsdWUKLSAgICAgICAgICAgID46OnR5cGUKLQotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC91bnBhY2tfYXJncy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvdW5wYWNrX2FyZ3MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkY2RiNDZlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC91bnBhY2tfYXJncy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAyLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdW5wYWNrX2FyZ3MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCBzaXplKSA+IHN0cnVjdCB1bnBhY2tfYXJnc19pbXBsCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPiBzdHJ1Y3QgYXBwbHk7Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPDA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBhcHBseTA8Ci0gICAgICAgICAgICAgIEYKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHVucGFja19hcmdzX2ltcGw8MT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGFwcGx5MTwKLSAgICAgICAgICAgICAgRgotICAgICAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDAgPjo6dHlwZQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDwyPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogYXBwbHkyPAotICAgICAgICAgICAgICBGCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMCA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDEgPjo6dHlwZQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDwzPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogYXBwbHkzPAotICAgICAgICAgICAgICBGCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMCA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDEgPjo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDIgPjo6dHlwZQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDw0PgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogYXBwbHk0PAotICAgICAgICAgICAgICBGCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMCA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDEgPjo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDIgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywzID46OnR5cGUKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHVucGFja19hcmdzX2ltcGw8NT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGFwcGx5NTwKLSAgICAgICAgICAgICAgRgotICAgICAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDAgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywxID46OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywyID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMyA+Ojp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsNCA+Ojp0eXBlCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCB1bnBhY2tfYXJncwotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBBcmdzID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBhdXg6OnVucGFja19hcmdzX2ltcGw8IHNpemU8QXJncz46OnZhbHVlID4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgYXBwbHk8IEYsQXJncyA+Ci0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfUEFTU19USFJPVUdIX0xBTUJEQV9TUEVDKDEsIHVucGFja19hcmdzKQotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvdmVjdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC92ZWN0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhY2I2NzA0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL21zdmM3MC92ZWN0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTU2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3ZlY3Rvci5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgaW50IE4gPgotc3RydWN0IHZlY3Rvcl9jaG9vc2VyOwotCi19Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+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+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvdmVjdG9yX2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXN2YzcwL3ZlY3Rvcl9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzY1NGM2Zi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9tc3ZjNzAvdmVjdG9yX2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTM0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3ZlY3Rvcl9jLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCBpbnQgTiA+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+Ci1zdHJ1Y3QgdmVjdG9yX2MKLSAgICA6IGF1eDo6dmVjdG9yX2NfaW1wbDwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQsIEMxNSwgQzE2LCBDMTcsIEMxOCwgQzE5Ci0gICAgICAgID46OnR5cGUKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dmVjdG9yX2NfaW1wbDwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQsIEMxNSwgQzE2LCBDMTcsIEMxOCwgQzE5Ci0gICAgICAgID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvYWR2YW5jZV9iYWNrd2FyZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2FkdmFuY2VfYmFja3dhcmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZTBjODI4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvYWR2YW5jZV9iYWNrd2FyZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2FkdmFuY2VfYmFja3dhcmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgbG9uZyBOID4gc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDwwPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBpdGVyMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDwxPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjEgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfYmFja3dhcmQ8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiBpdGVyMiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDwzPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiBpdGVyMyB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDw0PgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjQgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IGxvbmcgTiA+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgYWR2YW5jZV9iYWNrd2FyZDw0PgotICAgICAgICAgICAgLCBJdGVyYXRvcgotICAgICAgICAgICAgPjo6dHlwZSBjaHVua19yZXN1bHRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGFkdmFuY2VfYmFja3dhcmQ8KAotICAgICAgICAgICAgICAgIChOIC0gNCkgPCAwCi0gICAgICAgICAgICAgICAgICAgID8gMAotICAgICAgICAgICAgICAgICAgICA6IE4gLSA0Ci0gICAgICAgICAgICAgICAgICAgICk+Ci0gICAgICAgICAgICAsIGNodW5rX3Jlc3VsdF8KLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotfX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvYWR2YW5jZV9mb3J3YXJkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvYWR2YW5jZV9mb3J3YXJkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjNhNWFmZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2FkdmFuY2VfZm9yd2FyZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2FkdmFuY2VfZm9yd2FyZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBsb25nIE4gPiBzdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkOwotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZDwwPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBpdGVyMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkPDE+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIGl0ZXIxIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjIgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZDwzPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgdHlwZWRlZiBpdGVyMyB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkPDQ+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgICAgICB0eXBlZGVmIGl0ZXI0IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCBsb25nIE4gPgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgYWR2YW5jZV9mb3J3YXJkPDQ+Ci0gICAgICAgICAgICAsIEl0ZXJhdG9yCi0gICAgICAgICAgICA+Ojp0eXBlIGNodW5rX3Jlc3VsdF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgYWR2YW5jZV9mb3J3YXJkPCgKLSAgICAgICAgICAgICAgICAoTiAtIDQpIDwgMAotICAgICAgICAgICAgICAgICAgICA/IDAKLSAgICAgICAgICAgICAgICAgICAgOiBOIC0gNAotICAgICAgICAgICAgICAgICAgICApPgotICAgICAgICAgICAgLCBjaHVua19yZXN1bHRfCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2FuZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2FuZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVjMWI5NWEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9hbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYW5kLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGJvb2wgQ18sIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0ID4KLXN0cnVjdCBhbmRfaW1wbAotICAgIDogZmFsc2VfCi17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQgPgotc3RydWN0IGFuZF9pbXBsPCB0cnVlLFQxLFQyLFQzLFQ0ID4KLSAgICA6IGFuZF9pbXBsPAotICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1RZUEVfV0tORChUMSk6OnZhbHVlCi0gICAgICAgICwgVDIsIFQzLCBUNAotICAgICAgICAsIHRydWVfCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhbmRfaW1wbDwKLSAgICAgICAgICB0cnVlCi0gICAgICAgICwgdHJ1ZV8sIHRydWVfLCB0cnVlXywgdHJ1ZV8KLSAgICAgICAgPgotICAgIDogdHJ1ZV8KLXsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQyKQotICAgICwgdHlwZW5hbWUgVDMgPSB0cnVlXywgdHlwZW5hbWUgVDQgPSB0cnVlXywgdHlwZW5hbWUgVDUgPSB0cnVlXwotICAgID4KLXN0cnVjdCBhbmRfCi0KLSAgICA6IGF1eDo6YW5kX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVFlQRV9XS05EKFQxKTo6dmFsdWUKLSAgICAgICAgLCBUMiwgVDMsIFQ0LCBUNQotICAgICAgICA+Ci0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBhbmRfCi0gICAgICAgICwgKCBUMSwgVDIsIFQzLCBUNCwgVDUpCi0gICAgICAgICkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoCi0gICAgICAyCi0gICAgLCA1Ci0gICAgLCBhbmRfCi0gICAgKQotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9hcHBseS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2FwcGx5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODBmNzJiMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2FwcGx5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE2OSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hcHBseS5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGFwcGx5MAotCi0gICAgOiBhcHBseV93cmFwMDwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgMQotICAgICAgICAsIGFwcGx5MAotICAgICAgICAsIChGICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGFwcGx5PCBGLG5hLG5hLG5hLG5hLG5hID4KLSAgICA6IGFwcGx5MDxGPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBhcHBseTEKLQotICAgIDogYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgICwgVDEKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgMgotICAgICAgICAsIGFwcGx5MQotICAgICAgICAsIChGLCBUMSkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBhcHBseTwgRixUMSxuYSxuYSxuYSxuYSA+Ci0gICAgOiBhcHBseTE8IEYsVDEgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkyCi0KLSAgICA6IGFwcGx5X3dyYXAyPAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgICAsIFQxLCBUMgotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICAzCi0gICAgICAgICwgYXBwbHkyCi0gICAgICAgICwgKEYsIFQxLCBUMikKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk8IEYsVDEsVDIsbmEsbmEsbmEgPgotICAgIDogYXBwbHkyPCBGLFQxLFQyID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBhcHBseTMKLQotICAgIDogYXBwbHlfd3JhcDM8Ci0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgICwgVDEsIFQyLCBUMwotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA0Ci0gICAgICAgICwgYXBwbHkzCi0gICAgICAgICwgKEYsIFQxLCBUMiwgVDMpCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBhcHBseTwgRixUMSxUMixUMyxuYSxuYSA+Ci0gICAgOiBhcHBseTM8IEYsVDEsVDIsVDMgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBhcHBseTQKLQotICAgIDogYXBwbHlfd3JhcDQ8Ci0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgICwgVDEsIFQyLCBUMywgVDQKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGFwcGx5NAotICAgICAgICAsIChGLCBUMSwgVDIsIFQzLCBUNCkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBhcHBseTwgRixUMSxUMixUMyxUNCxuYSA+Ci0gICAgOiBhcHBseTQ8IEYsVDEsVDIsVDMsVDQgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk1Ci0KLSAgICA6IGFwcGx5X3dyYXA1PAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgICAsIFQxLCBUMiwgVDMsIFQ0LCBUNQotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA2Ci0gICAgICAgICwgYXBwbHk1Ci0gICAgICAgICwgKEYsIFQxLCBUMiwgVDMsIFQ0LCBUNSkKLSAgICAgICAgKQotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkKLSAgICA6IGFwcGx5NTwgRixUMSxUMixUMyxUNCxUNSA+Ci17Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2FwcGx5X2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2FwcGx5X2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjY2M5NGUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9hcHBseV9md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXBwbHlfZndkLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseTA7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkxOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBhcHBseTI7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBhcHBseTM7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk0OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBhcHBseTU7Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvYXBwbHlfd3JhcC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2FwcGx5X3dyYXAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZDAzOTA3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvYXBwbHlfd3JhcC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NTYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXBwbHlfd3JhcC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTiwgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwwOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMDwKLSAgICAgICAgICAwCi0gICAgICAgICwgRgotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgIAotLy8vIHNpbmNlIHRoZSBkZWZhdWx0cyBhcmUgImxvc3QiLCB3ZSBoYXZlIHRvIHBhc3MgKnNvbWV0aGluZyogZXZlbiBmb3IgbnVsbGFyeQotLy8vIG1ldGFmdW5jdGlvbiBjbGFzc2VzCi0gICAgICAgIG5hCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwwPAotICAgICAgICAgIDEKLSAgICAgICAgLCBGCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgCi0gICAgICAgIG5hCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwwPAotICAgICAgICAgIDIKLSAgICAgICAgLCBGCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgCi0gICAgICAgIG5hLCBuYQotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwwPAotICAgICAgICAgIDMKLSAgICAgICAgLCBGCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgCi0gICAgICAgIG5hLCBuYSwgbmEKLQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMDwKLSAgICAgICAgICA0Ci0gICAgICAgICwgRgotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgIAotICAgICAgICBuYSwgbmEsIG5hLCBuYQotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwwPAotICAgICAgICAgIDUKLSAgICAgICAgLCBGCi0gICAgICAgCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgCi0gICAgICAgIG5hLCBuYSwgbmEsIG5hLCBuYQotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseV93cmFwMAotICAgIDogYXBwbHlfd3JhcF9pbXBsMDwKLSAgICAgICAgICA6Om5kbmJvb3N0OjptcGw6OmF1eDo6YXJpdHk8IEYsMCA+Ojp2YWx1ZQotICAgICAgICAsIEYKLSAgICAgICAKLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTiwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwxPAotICAgICAgICAgIDEKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAgVDEKLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwxPAotICAgICAgICAgIDIKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAgVDEKLSAgICAgICAgLCBuYQotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMTwKLSAgICAgICAgICAzCi0gICAgICAgICwgRgotICAgICAgICAsIFQxCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgIFQxCi0gICAgICAgICwgbmEsIG5hCi0KLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwxPAotICAgICAgICAgIDQKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAgVDEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0KLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGwxPAotICAgICAgICAgIDUKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAgVDEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDEKLSAgICA6IGFwcGx5X3dyYXBfaW1wbDE8Ci0gICAgICAgICAgOjpuZG5ib29zdDo6bXBsOjphdXg6OmFyaXR5PCBGLDEgPjo6dmFsdWUKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEKLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTiwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDI7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDI8Ci0gICAgICAgICAgMgotICAgICAgICAsIEYKLSAgICAgICAgLCBUMSwgVDIKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAgVDEsIFQyCi0KLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMjwKLSAgICAgICAgICAzCi0gICAgICAgICwgRgotICAgICAgICAsIFQxLCBUMgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgICBUMSwgVDIKLQotICAgICAgICAsIG5hCi0KLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMjwKLSAgICAgICAgICA0Ci0gICAgICAgICwgRgotICAgICAgICAsIFQxLCBUMgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgICBUMSwgVDIKLQotICAgICAgICAsIG5hLCBuYQotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDI8Ci0gICAgICAgICAgNQotICAgICAgICAsIEYKLSAgICAgICAgLCBUMSwgVDIKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAgVDEsIFQyCi0KLSAgICAgICAgLCBuYSwgbmEsIG5hCi0KLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDIKLSAgICA6IGFwcGx5X3dyYXBfaW1wbDI8Ci0gICAgICAgICAgOjpuZG5ib29zdDo6bXBsOjphdXg6OmFyaXR5PCBGLDIgPjo6dmFsdWUKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEsIFQyCi0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgaW50IE4sIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMzsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDM8Ci0gICAgICAgICAgMwotICAgICAgICAsIEYKLSAgICAgICAgLCBUMSwgVDIsIFQzCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgIFQxLCBUMiwgVDMKLQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMzwKLSAgICAgICAgICA0Ci0gICAgICAgICwgRgotICAgICAgICAsIFQxLCBUMiwgVDMKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAgVDEsIFQyLCBUMwotCi0gICAgICAgICwgbmEKLQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsMzwKLSAgICAgICAgICA1Ci0gICAgICAgICwgRgotICAgICAgICAsIFQxLCBUMiwgVDMKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAgVDEsIFQyLCBUMwotCi0gICAgICAgICwgbmEsIG5hCi0KLSAgICAgICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXAzCi0gICAgOiBhcHBseV93cmFwX2ltcGwzPAotICAgICAgICAgIDo6bmRuYm9vc3Q6Om1wbDo6YXV4Ojphcml0eTwgRiwzID46OnZhbHVlCi0gICAgICAgICwgRgotICAgICAgICAsIFQxLCBUMiwgVDMKLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTiwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcF9pbXBsNDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGw0PAotICAgICAgICAgIDQKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEsIFQyLCBUMywgVDQKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRjo6dGVtcGxhdGUgYXBwbHk8Ci0gICAgICAgICAgVDEsIFQyLCBUMywgVDQKLQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGFwcGx5X3dyYXBfaW1wbDQ8Ci0gICAgICAgICAgNQotICAgICAgICAsIEYKLSAgICAgICAgLCBUMSwgVDIsIFQzLCBUNAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBGOjp0ZW1wbGF0ZSBhcHBseTwKLSAgICAgICAgICBUMSwgVDIsIFQzLCBUNAotCi0gICAgICAgICwgbmEKLQotICAgICAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGFwcGx5X3dyYXA0Ci0gICAgOiBhcHBseV93cmFwX2ltcGw0PAotICAgICAgICAgIDo6bmRuYm9vc3Q6Om1wbDo6YXV4Ojphcml0eTwgRiw0ID46OnZhbHVlCi0gICAgICAgICwgRgotICAgICAgICAsIFQxLCBUMiwgVDMsIFQ0Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgaW50IE4sIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGw1OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwX2ltcGw1PAotICAgICAgICAgIDUKLSAgICAgICAgLCBGCi0gICAgICAgICwgVDEsIFQyLCBUMywgVDQsIFQ1Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEY6OnRlbXBsYXRlIGFwcGx5PAotICAgICAgICAgIFQxLCBUMiwgVDMsIFQ0LCBUNQotCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGFwcGx5X3dyYXA1Ci0gICAgOiBhcHBseV93cmFwX2ltcGw1PAotICAgICAgICAgIDo6bmRuYm9vc3Q6Om1wbDo6YXV4Ojphcml0eTwgRiw1ID46OnZhbHVlCi0gICAgICAgICwgRgotICAgICAgICAsIFQxLCBUMiwgVDMsIFQ0LCBUNQotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2FyZy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2FyZy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE1NDQ3NmEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9hcmcuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTIzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IFBldGVyIERpbW92IDIwMDEtMjAwMgotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2FyZy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8IC0xID4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAtMSk7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdGFnKQotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHR5cGUpCi0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFUxIHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPDE+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMSk7Ci0gICAgdHlwZWRlZiBhcmc8Mj4gbmV4dDsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTEgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8Mj4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAyKTsKLSAgICB0eXBlZGVmIGFyZzwzPiBuZXh0OwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBVMiB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEodHlwZSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGFyZzwzPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDMpOwotICAgIHR5cGVkZWYgYXJnPDQ+IG5leHQ7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdGFnKQotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHR5cGUpCi0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFUzIHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPDQ+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gNCk7Ci0gICAgdHlwZWRlZiBhcmc8NT4gbmV4dDsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTQgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8NT4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSA1KTsKLSAgICB0eXBlZGVmIGFyZzw2PiBuZXh0OwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBVNSB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEodHlwZSk7Ci0gICAgfTsKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTk9OVFlQRV9BUklUWV9TUEVDKDEsaW50LCBhcmcpCi0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2Jhc2ljX2JpbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9iYXNpY19iaW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGUwYmY3My4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2Jhc2ljX2JpbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDQwICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IFBldGVyIERpbW92IDIwMDEKLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2Jhc2ljX2JpbmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgLCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnCi17Ci0gICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+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+Ci17Ci19OwotCi0vLy8gaWZfL2V2YWxfaWYgc3BlY2lhbGl6YXRpb25zCi10ZW1wbGF0ZTwgdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMgPiBjbGFzcyBGLCB0eXBlbmFtZSBUYWcgPgotc3RydWN0IHF1b3RlMzsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMgPiBzdHJ1Y3QgaWZfOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBiaW5kMzwKLSAgICAgIHF1b3RlMzwgaWZfLFRhZyA+Ci0gICAgLCBUMSwgVDIsIFQzCi0gICAgPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgbXBsOjphcmc8MT4gbjE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICB0eXBlbmFtZSB0MTo6dHlwZQotICAgICAgICAgICAgLCB0MiwgdDMKLSAgICAgICAgICAgID46OnR5cGUgZl87Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGZfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMgPiBjbGFzcyBGLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgcXVvdGUzOwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMyA+IHN0cnVjdCBldmFsX2lmOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBiaW5kMzwKLSAgICAgIHF1b3RlMzwgZXZhbF9pZixUYWcgPgotICAgICwgVDEsIFQyLCBUMwotICAgID4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIG1wbDo6YXJnPDE+IG4xOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGV2YWxfaWY8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIHQxOjp0eXBlCi0gICAgICAgICAgICAsIHQyLCB0MwotICAgICAgICAgICAgPjo6dHlwZSBmXzsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZl86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9iaW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvYmluZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ1Y2ZjNjcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9iaW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU2MSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBQZXRlciBEaW1vdiAyMDAxCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYmluZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmcKLXsKLSAgICB0eXBlZGVmIFQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgdHlwZW5hbWUgQXJnCi0gICAgPgotc3RydWN0IHJlcGxhY2VfdW5uYW1lZF9hcmcKLXsKLSAgICB0eXBlZGVmIEFyZyBuZXh0OwotICAgIHR5cGVkZWYgVCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBBcmcKLSAgICA+Ci1zdHJ1Y3QgcmVwbGFjZV91bm5hbWVkX2FyZzwgYXJnPCAtMSA+LCBBcmcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgQXJnOjpuZXh0IG5leHQ7Ci0gICAgdHlwZWRlZiBBcmcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgaW50IE4sIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPCBhcmc8Tj4sIFUxLCBVMiwgVTMsIFU0LCBVNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTxtcGw6OmFyZzxOPiwgVTEsIFUyLCBVMywgVTQsIFU1Pjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgLCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPCBiaW5kPCBGLFQxLFQyLFQzLFQ0LFQ1ID4sIFUxLCBVMiwgVTMsIFU0LCBVNSA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kPCBGLFQxLFQyLFQzLFQ0LFQ1ID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBiaW5kMAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMDwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQwPEY+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMDxGPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDEsIGJpbmQwKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDEsIGJpbmQwKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYmluZDwgRixuYSxuYSxuYSxuYSxuYSA+Ci0gICAgOiBiaW5kMDxGPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBiaW5kMQotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMwotICAgICwgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kMTwgRixUMSA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMTwgRixUMSA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoMiwgYmluZDEpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMiwgYmluZDEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYmluZDwgRixUMSxuYSxuYSxuYSxuYSA+Ci0gICAgOiBiaW5kMTwgRixUMSA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBiaW5kMgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMixuMiA+IHIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjp0eXBlIGEyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjpuZXh0IG4zOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMjwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIKLSAgICAsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQyPCBGLFQxLFQyID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQyPCBGLFQxLFQyID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygzLCBiaW5kMikKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygzLCBiaW5kMikKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYmluZDwgRixUMSxUMixuYSxuYSxuYSA+Ci0gICAgOiBiaW5kMjwgRixUMSxUMiA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYmluZDMKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDEsbjEgPiByMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6dHlwZSBhMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6bmV4dCBuMjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGExLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDIsbjIgPiByMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6dHlwZSBhMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6bmV4dCBuMzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDMsbjMgPiByMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6dHlwZSBhMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6bmV4dCBuNDsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDM8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBVMQotICAgICwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQzPCBGLFQxLFQyLFQzID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQzPCBGLFQxLFQyLFQzID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg0LCBiaW5kMykKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg0LCBiaW5kMykKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGJpbmQ8IEYsVDEsVDIsVDMsbmEsbmEgPgotICAgIDogYmluZDM8IEYsVDEsVDIsVDMgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBiaW5kNAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMixuMiA+IHIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjp0eXBlIGEyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjpuZXh0IG4zOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMyxuMyA+IHIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjp0eXBlIGEzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjpuZXh0IG40OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUNCxuNCA+IHI0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI0Ojp0eXBlIGE0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI0OjpuZXh0IG41OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTQsVTEsVTIsVTMsVTQsVTUgPiB0NDsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNDwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlLCB0eXBlbmFtZSB0Mzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSB0NDo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg1LCBiaW5kNCkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg1LCBiaW5kNCkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBiaW5kPCBGLFQxLFQyLFQzLFQ0LG5hID4KLSAgICA6IGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGJpbmQ1Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IEYsIG1wbDo6YXJnPDE+ID4gcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6OnR5cGUgYTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6Om5leHQgbjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMCxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQxLG4xID4gcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6OnR5cGUgYTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6Om5leHQgbjI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQyLG4yID4gcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6OnR5cGUgYTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6Om5leHQgbjM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQzLG4zID4gcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6OnR5cGUgYTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6Om5leHQgbjQ7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQ0LG40ID4gcjQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjQ6OnR5cGUgYTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjQ6Om5leHQgbjU7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhNCxVMSxVMixVMyxVNCxVNSA+IHQ0OwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQ1LG41ID4gcjU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjU6OnR5cGUgYTU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjU6Om5leHQgbjY7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhNSxVMSxVMixVMyxVNCxVNSA+IHQ1OwotICAgICAgICAvLy8KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUsIHR5cGVuYW1lIHQzOjp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQ0Ojp0eXBlLCB0eXBlbmFtZSB0NTo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kNTwgRixUMSxUMixUMyxUNCxUNSA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kNTwgRixUMSxUMixUMyxUNCxUNSA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNiwgYmluZDUpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNiwgYmluZDUpCi0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGJpbmQKLSAgICA6IGJpbmQ1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLX07Ci0KLS8vLyBpZl8vZXZhbF9pZiBzcGVjaWFsaXphdGlvbnMKLXRlbXBsYXRlPCB0ZW1wbGF0ZTwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMyA+IGNsYXNzIEYsIHR5cGVuYW1lIFRhZyA+Ci1zdHJ1Y3QgcXVvdGUzOwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMyA+IHN0cnVjdCBpZl87Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGJpbmQzPAotICAgICAgcXVvdGUzPCBpZl8sVGFnID4KLSAgICAsIFQxLCBUMiwgVDMKLSAgICA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBtcGw6OmFyZzwxPiBuMTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQxLG4xID4gcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6OnR5cGUgYTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6Om5leHQgbjI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQyLG4yID4gcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6OnR5cGUgYTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6Om5leHQgbjM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQzLG4zID4gcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6OnR5cGUgYTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6Om5leHQgbjQ7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIHQxOjp0eXBlCi0gICAgICAgICAgICAsIHQyLCB0MwotICAgICAgICAgICAgPjo6dHlwZSBmXzsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZl86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMyA+IGNsYXNzIEYsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBxdW90ZTM7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzID4gc3RydWN0IGV2YWxfaWY7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGJpbmQzPAotICAgICAgcXVvdGUzPCBldmFsX2lmLFRhZyA+Ci0gICAgLCBUMSwgVDIsIFQzCi0gICAgPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgbXBsOjphcmc8MT4gbjE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMixuMiA+IHIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjp0eXBlIGEyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjpuZXh0IG4zOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMyxuMyA+IHIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjp0eXBlIGEzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjpuZXh0IG40OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZXZhbF9pZjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgdDE6OnR5cGUKLSAgICAgICAgICAgICwgdDIsIHQzCi0gICAgICAgICAgICA+Ojp0eXBlIGZfOwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBmXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2JpbmRfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvYmluZF9md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YTA0NmVlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvYmluZF9md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYmluZF9md2QuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYQotICAgID4KLXN0cnVjdCBiaW5kOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYmluZDA7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYmluZDE7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGJpbmQyOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYmluZDM7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYmluZDQ7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGJpbmQ1OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2JpdGFuZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2JpdGFuZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNkOGNjNWMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9iaXRhbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ3ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLyBDb3B5cmlnaHQgSmFhcCBTdXRlciAyMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2JpdGFuZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGJpdGFuZF9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgYml0YW5kX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBiaXRhbmRfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBiaXRhbmRfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgYml0YW5kX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBiaXRhbmRfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBiaXRhbmRfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IGJpdGFuZF8KLSAgICA6IGJpdGFuZF88IGJpdGFuZF88IGJpdGFuZF88IGJpdGFuZF88IE4xLE4yID4sIE4zPiwgTjQ+LCBONT4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRhbmRfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMsIHR5cGVuYW1lIE40Ci0gICAgPgotc3RydWN0IGJpdGFuZF88IE4xLE4yLE4zLE40LG5hID4KLQotICAgIDogYml0YW5kXzwgYml0YW5kXzwgYml0YW5kXzwgTjEsTjIgPiwgTjM+LCBOND4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdGFuZF8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMwotICAgID4KLXN0cnVjdCBiaXRhbmRfPCBOMSxOMixOMyxuYSxuYSA+Ci0KLSAgICA6IGJpdGFuZF88IGJpdGFuZF88IE4xLE4yID4sIE4zPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0YW5kXwotICAgICAgICAsICggTjEsIE4yLCBOMywgbmEsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgYml0YW5kXzwgTjEsTjIsbmEsbmEsbmEgPgotICAgIDogYml0YW5kX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgYml0YW5kX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBiaXRhbmRfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0YW5kXwotICAgICAgICAsICggTjEsIE4yLCBuYSwgbmEsIG5hICkKLSAgICAgICAgKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIGJpdGFuZF8pCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IGJpdGFuZF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgJiBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2JpdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvYml0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOTgyNDdiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvYml0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ3ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLyBDb3B5cmlnaHQgSmFhcCBTdXRlciAyMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2JpdG9yLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgYml0b3JfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGJpdG9yX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBiaXRvcl9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGJpdG9yX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGJpdG9yX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBiaXRvcl9pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGJpdG9yX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBiaXRvcl8KLSAgICA6IGJpdG9yXzwgYml0b3JfPCBiaXRvcl88IGJpdG9yXzwgTjEsTjIgPiwgTjM+LCBOND4sIE41PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdG9yXwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zLCB0eXBlbmFtZSBONAotICAgID4KLXN0cnVjdCBiaXRvcl88IE4xLE4yLE4zLE40LG5hID4KLQotICAgIDogYml0b3JfPCBiaXRvcl88IGJpdG9yXzwgTjEsTjIgPiwgTjM+LCBOND4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdG9yXwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zCi0gICAgPgotc3RydWN0IGJpdG9yXzwgTjEsTjIsTjMsbmEsbmEgPgotCi0gICAgOiBiaXRvcl88IGJpdG9yXzwgTjEsTjIgPiwgTjM+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIG5hLCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IGJpdG9yXzwgTjEsTjIsbmEsbmEsbmEgPgotICAgIDogYml0b3JfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBiaXRvcl90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgYml0b3JfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIG5hLCBuYSwgbmEgKQotICAgICAgICApCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgYml0b3JfKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBiaXRvcl9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgfCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2JpdHhvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2JpdHhvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmMjc2YjcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9iaXR4b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ3ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLyBDb3B5cmlnaHQgSmFhcCBTdXRlciAyMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2JpdHhvci5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGJpdHhvcl9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgYml0eG9yX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBiaXR4b3JfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBiaXR4b3JfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgYml0eG9yX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBiaXR4b3JfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBiaXR4b3JfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IGJpdHhvcl8KLSAgICA6IGJpdHhvcl88IGJpdHhvcl88IGJpdHhvcl88IGJpdHhvcl88IE4xLE4yID4sIE4zPiwgTjQ+LCBONT4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXR4b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMsIHR5cGVuYW1lIE40Ci0gICAgPgotc3RydWN0IGJpdHhvcl88IE4xLE4yLE4zLE40LG5hID4KLQotICAgIDogYml0eG9yXzwgYml0eG9yXzwgYml0eG9yXzwgTjEsTjIgPiwgTjM+LCBOND4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdHhvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMwotICAgID4KLXN0cnVjdCBiaXR4b3JfPCBOMSxOMixOMyxuYSxuYSA+Ci0KLSAgICA6IGJpdHhvcl88IGJpdHhvcl88IE4xLE4yID4sIE4zPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0eG9yXwotICAgICAgICAsICggTjEsIE4yLCBOMywgbmEsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgYml0eG9yXzwgTjEsTjIsbmEsbmEsbmEgPgotICAgIDogYml0eG9yX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgYml0eG9yX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBiaXR4b3JfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0eG9yXwotICAgICAgICAsICggTjEsIE4yLCBuYSwgbmEsIG5hICkKLSAgICAgICAgKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIGJpdHhvcl8pCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IGJpdHhvcl9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgXiBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2RlcXVlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvZGVxdWUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NjMxZjY2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvZGVxdWUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzIzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2RlcXVlLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwID0gbmEsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEsIHR5cGVuYW1lIFQ2ID0gbmEsIHR5cGVuYW1lIFQ3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ4ID0gbmEsIHR5cGVuYW1lIFQ5ID0gbmEsIHR5cGVuYW1lIFQxMCA9IG5hLCB0eXBlbmFtZSBUMTEgPSBuYQotICAgICwgdHlwZW5hbWUgVDEyID0gbmEsIHR5cGVuYW1lIFQxMyA9IG5hLCB0eXBlbmFtZSBUMTQgPSBuYQotICAgICwgdHlwZW5hbWUgVDE1ID0gbmEsIHR5cGVuYW1lIFQxNiA9IG5hLCB0eXBlbmFtZSBUMTcgPSBuYQotICAgICwgdHlwZW5hbWUgVDE4ID0gbmEsIHR5cGVuYW1lIFQxOSA9IG5hCi0gICAgPgotc3RydWN0IGRlcXVlOwotCi10ZW1wbGF0ZTwKLSAgICAgCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMDwgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjA8ICA+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+Ci1zdHJ1Y3QgZGVxdWUKLSAgICA6IHZlY3RvcjIwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjIwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9kaXZpZGVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvZGl2aWRlcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiYzQ0MzMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9kaXZpZGVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9kaXZpZGVzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgZGl2aWRlc19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgZGl2aWRlc19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgZGl2aWRlc19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGRpdmlkZXNfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZGl2aWRlc19pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZGl2aWRlc19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGRpdmlkZXNfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IGRpdmlkZXMKLSAgICA6IGRpdmlkZXM8IGRpdmlkZXM8IGRpdmlkZXM8IGRpdmlkZXM8IE4xLE4yID4sIE4zPiwgTjQ+LCBONT4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBkaXZpZGVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMsIHR5cGVuYW1lIE40Ci0gICAgPgotc3RydWN0IGRpdmlkZXM8IE4xLE4yLE4zLE40LG5hID4KLQotICAgIDogZGl2aWRlczwgZGl2aWRlczwgZGl2aWRlczwgTjEsTjIgPiwgTjM+LCBOND4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGRpdmlkZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMwotICAgID4KLXN0cnVjdCBkaXZpZGVzPCBOMSxOMixOMyxuYSxuYSA+Ci0KLSAgICA6IGRpdmlkZXM8IGRpdmlkZXM8IE4xLE4yID4sIE4zPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgZGl2aWRlcwotICAgICAgICAsICggTjEsIE4yLCBOMywgbmEsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgZGl2aWRlczwgTjEsTjIsbmEsbmEsbmEgPgotICAgIDogZGl2aWRlc19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGRpdmlkZXNfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGRpdmlkZXNfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgZGl2aWRlcwotICAgICAgICAsICggTjEsIE4yLCBuYSwgbmEsIG5hICkKLSAgICAgICAgKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIGRpdmlkZXMpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IGRpdmlkZXNfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgIC8gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9lcXVhbF90by5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2VxdWFsX3RvLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjQ1NTg4NS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2VxdWFsX3RvLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2VxdWFsX3RvLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgZXF1YWxfdG9faW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGVxdWFsX3RvX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBlcXVhbF90b19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGVxdWFsX3RvX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGVxdWFsX3RvX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBlcXVhbF90b19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGVxdWFsX3RvX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBlcXVhbF90bwotCi0gICAgOiBlcXVhbF90b19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGVxdWFsX3RvX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBlcXVhbF90b190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBlcXVhbF90bywgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgZXF1YWxfdG8pCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZXF1YWxfdG9faW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGJvb2xfPCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlICA9PSBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSApID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2ZvbGRfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2ZvbGRfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5NGNkNDEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9mb2xkX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTgwICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vZm9sZF9pbXBsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDwgMCxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHN0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIwIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw8IDEsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIAotCi0gICAgdHlwZWRlZiBzdGF0ZTEgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMSBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsPCAyLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHN0YXRlMiBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIyIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw8IDMsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHN0YXRlMyBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIzIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw8IDQsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUzLCB0eXBlbmFtZSBkZXJlZjxpdGVyMz46OnR5cGUgPjo6dHlwZSBzdGF0ZTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgIAotCi0gICAgdHlwZWRlZiBzdGF0ZTQgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyNCBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgaW50IE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbAotewotICAgIHR5cGVkZWYgZm9sZF9pbXBsPAotICAgICAgICAgIDQKLSAgICAgICAgLCBGaXJzdAotICAgICAgICAsIExhc3QKLSAgICAgICAgLCBTdGF0ZQotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IGNodW5rXzsKLQotICAgIHR5cGVkZWYgZm9sZF9pbXBsPAotICAgICAgICAgICggKE4gLSA0KSA8IDAgPyAwIDogTiAtIDQgKQotICAgICAgICAsIHR5cGVuYW1lIGNodW5rXzo6aXRlcmF0b3IKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgY2h1bmtfOjpzdGF0ZQotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IHJlc187Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186OnN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDwgLTEsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotICAgIDogZm9sZF9pbXBsPAotICAgICAgICAgIC0xCi0gICAgICAgICwgdHlwZW5hbWUgbXBsOjpuZXh0PEZpcnN0Pjo6dHlwZQotICAgICAgICAsIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBhcHBseTI8Rm9yd2FyZE9wLFN0YXRlLCB0eXBlbmFtZSBkZXJlZjxGaXJzdD46OnR5cGU+Ojp0eXBlCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw8IC0xLExhc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiBMYXN0IGl0ZXJhdG9yOwotfTsKLQotfX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2Z1bGxfbGFtYmRhLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvZnVsbF9sYW1iZGEuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZGE5NzFlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvZnVsbF9sYW1iZGEuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTU0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vZnVsbF9sYW1iZGEuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIGJvb2wgQzEgPSBmYWxzZSwgYm9vbCBDMiA9IGZhbHNlLCBib29sIEMzID0gZmFsc2UsIGJvb2wgQzQgPSBmYWxzZQotICAgICwgYm9vbCBDNSA9IGZhbHNlCi0gICAgPgotc3RydWN0IGxhbWJkYV9vcgotICAgIDogdHJ1ZV8KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsYW1iZGFfb3I8IGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlID4KLSAgICA6IGZhbHNlXwotewotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgdHlwZW5hbWUgVGFnCi0gICAKLSAgICA+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+IGwxOwotICAgIHR5cGVkZWYgbGFtYmRhPCBUYWcxLFRhZzIgPiBsMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTsKLSAgICB0eXBlZGVmIGF1eDo6bGVfcmVzdWx0Mjxpc19sZSwgVGFnMiwgbXBsOjpsYW1iZGEsIGwxLCBsMj4gbGVfcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnJlc3VsdF8gcmVzdWx0XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxlX3Jlc3VsdF86OnR5cGUgdHlwZTsKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQygyLCBsYW1iZGEpCi0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvZ3JlYXRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2dyZWF0ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhN2ViNGE0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvZ3JlYXRlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9ncmVhdGVyLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgZ3JlYXRlcl9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgZ3JlYXRlcl9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgZ3JlYXRlcl9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGdyZWF0ZXJfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZ3JlYXRlcl9pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZ3JlYXRlcl9pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGdyZWF0ZXJfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGdyZWF0ZXIKLQotICAgIDogZ3JlYXRlcl9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGdyZWF0ZXJfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGdyZWF0ZXJfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgZ3JlYXRlciwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgZ3JlYXRlcikKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBncmVhdGVyX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBib29sXzwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSA+IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlICkgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvZ3JlYXRlcl9lcXVhbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2dyZWF0ZXJfZXF1YWwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNWJkNDEzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvZ3JlYXRlcl9lcXVhbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9ncmVhdGVyX2VxdWFsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgZ3JlYXRlcl9lcXVhbF9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgZ3JlYXRlcl9lcXVhbF9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgZ3JlYXRlcl9lcXVhbF9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGdyZWF0ZXJfZXF1YWxfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZ3JlYXRlcl9lcXVhbF9pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZ3JlYXRlcl9lcXVhbF9pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGdyZWF0ZXJfZXF1YWxfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGdyZWF0ZXJfZXF1YWwKLQotICAgIDogZ3JlYXRlcl9lcXVhbF9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGdyZWF0ZXJfZXF1YWxfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGdyZWF0ZXJfZXF1YWxfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgZ3JlYXRlcl9lcXVhbCwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgZ3JlYXRlcl9lcXVhbCkKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBncmVhdGVyX2VxdWFsX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBib29sXzwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSA+PSBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSApID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2luaGVyaXQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9pbmhlcml0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTk3ZjMxMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2luaGVyaXQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQxICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2luaGVyaXQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDIpCi0gICAgPgotc3RydWN0IGluaGVyaXQyCi0gICAgOiBUMSwgVDIKLXsKLSAgICB0eXBlZGVmIGluaGVyaXQyIHR5cGU7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBpbmhlcml0MiwgKFQxLCBUMikpCi19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVDEgPgotc3RydWN0IGluaGVyaXQyPCBUMSxlbXB0eV9iYXNlID4KLXsKLSAgICB0eXBlZGVmIFQxIHR5cGU7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKDIsIGluaGVyaXQyLCAoVDEsIGVtcHR5X2Jhc2UpKQotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQyID4KLXN0cnVjdCBpbmhlcml0MjwgZW1wdHlfYmFzZSxUMiA+Ci17Ci0gICAgdHlwZWRlZiBUMiB0eXBlOwotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygyLCBpbmhlcml0MiwgKGVtcHR5X2Jhc2UsIFQyKSkKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpbmhlcml0MjwgZW1wdHlfYmFzZSxlbXB0eV9iYXNlID4KLXsKLSAgICB0eXBlZGVmIGVtcHR5X2Jhc2UgdHlwZTsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoMiwgaW5oZXJpdDIsIChlbXB0eV9iYXNlLCBlbXB0eV9iYXNlKSkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQygyLCBpbmhlcml0MikKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgPgotc3RydWN0IGluaGVyaXQzCi0gICAgOiBpbmhlcml0MjwKLSAgICAgICAgICB0eXBlbmFtZSBpbmhlcml0MjwKLSAgICAgICAgICAgICAgVDEsIFQyCi0gICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICwgVDMKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgMwotICAgICAgICAsIGluaGVyaXQzCi0gICAgICAgICwgKCBUMSwgVDIsIFQzKQotICAgICAgICApCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoMywgaW5oZXJpdDMpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYSwgdHlwZW5hbWUgVDQgPSBuYQotICAgID4KLXN0cnVjdCBpbmhlcml0NAotICAgIDogaW5oZXJpdDI8Ci0gICAgICAgICAgdHlwZW5hbWUgaW5oZXJpdDM8Ci0gICAgICAgICAgICAgIFQxLCBUMiwgVDMKLSAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgLCBUNAotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA0Ci0gICAgICAgICwgaW5oZXJpdDQKLSAgICAgICAgLCAoIFQxLCBUMiwgVDMsIFQ0KQotICAgICAgICApCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoNCwgaW5oZXJpdDQpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYSwgdHlwZW5hbWUgVDQgPSBuYQotICAgICwgdHlwZW5hbWUgVDUgPSBuYQotICAgID4KLXN0cnVjdCBpbmhlcml0NQotICAgIDogaW5oZXJpdDI8Ci0gICAgICAgICAgdHlwZW5hbWUgaW5oZXJpdDQ8Ci0gICAgICAgICAgICAgIFQxLCBUMiwgVDMsIFQ0Ci0gICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICwgVDUKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGluaGVyaXQ1Ci0gICAgICAgICwgKCBUMSwgVDIsIFQzLCBUNCwgVDUpCi0gICAgICAgICkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQyg1LCBpbmhlcml0NSkKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSA9IGVtcHR5X2Jhc2UsIHR5cGVuYW1lIFQyID0gZW1wdHlfYmFzZQotICAgICwgdHlwZW5hbWUgVDMgPSBlbXB0eV9iYXNlLCB0eXBlbmFtZSBUNCA9IGVtcHR5X2Jhc2UKLSAgICAsIHR5cGVuYW1lIFQ1ID0gZW1wdHlfYmFzZQotICAgID4KLXN0cnVjdCBpbmhlcml0Ci0gICAgOiBpbmhlcml0NTwgVDEsVDIsVDMsVDQsVDUgPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGluaGVyaXQ8IG5hLG5hLG5hLG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwKLQotICAgICAgICAgIHR5cGVuYW1lIFQxID0gZW1wdHlfYmFzZSwgdHlwZW5hbWUgVDIgPSBlbXB0eV9iYXNlCi0gICAgICAgICwgdHlwZW5hbWUgVDMgPSBlbXB0eV9iYXNlLCB0eXBlbmFtZSBUNCA9IGVtcHR5X2Jhc2UKLSAgICAgICAgLCB0eXBlbmFtZSBUNSA9IGVtcHR5X2Jhc2UKLQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgICAgIDogaW5oZXJpdDwgVDEsVDIsVDMsVDQsVDUgPgotICAgIHsKLSAgICB9OwotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDX0xBTUJEQSg1LCBpbmhlcml0KQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDX0FSSVRZKDUsIGluaGVyaXQpCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUNfVEVNUExBVEVfQVJJVFkoNSwgNSwgaW5oZXJpdCkKLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvaXRlcl9mb2xkX2lmX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9pdGVyX2ZvbGRfaWZfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3NGJkODMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9pdGVyX2ZvbGRfaWZfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vIENvcHlyaWdodCBEYXZpZCBBYnJhaGFtcyAyMDAxLTIwMDIKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9pdGVyX2ZvbGRfaWZfaW1wbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciwgdHlwZW5hbWUgU3RhdGUgPgotc3RydWN0IGl0ZXJfZm9sZF9pZl9udWxsX3N0ZXAKLXsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwgYm9vbCA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX3N0ZXBfaW1wbAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZU9wCi0gICAgICAgICwgdHlwZW5hbWUgSXRlcmF0b3JPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBTdGF0ZU9wLFN0YXRlLEl0ZXJhdG9yID46OnR5cGUgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgSXRlcmF0b3JPcDo6dHlwZSBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGl0ZXJfZm9sZF9pZl9zdGVwX2ltcGw8ZmFsc2U+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgSXRlcmF0b3IKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlT3AKLSAgICAgICAgLCB0eXBlbmFtZSBJdGVyYXRvck9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICwgdHlwZW5hbWUgUHJlZGljYXRlCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pZl9mb3J3YXJkX3N0ZXAKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgUHJlZGljYXRlLFN0YXRlLEl0ZXJhdG9yID46OnR5cGUgbm90X2xhc3Q7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyX2ZvbGRfaWZfc3RlcF9pbXBsPAotICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKG5vdF9sYXN0KTo6dmFsdWUKLSAgICAgICAgPjo6dGVtcGxhdGUgcmVzdWx0XzwgSXRlcmF0b3IsU3RhdGUsRm9yd2FyZE9wLCBtcGw6Om5leHQ8SXRlcmF0b3I+ID4gaW1wbF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGltcGxfOjpzdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGltcGxfOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXRlcmF0b3IKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBQcmVkaWNhdGUKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX2JhY2t3YXJkX3N0ZXAKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgUHJlZGljYXRlLFN0YXRlLEl0ZXJhdG9yID46OnR5cGUgbm90X2xhc3Q7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyX2ZvbGRfaWZfc3RlcF9pbXBsPAotICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKG5vdF9sYXN0KTo6dmFsdWUKLSAgICAgICAgPjo6dGVtcGxhdGUgcmVzdWx0XzwgSXRlcmF0b3IsU3RhdGUsQmFja3dhcmRPcCwgaWRlbnRpdHk8SXRlcmF0b3I+ID4gaW1wbF87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGltcGxfOjpzdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGltcGxfOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXRlcmF0b3IKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRQcmVkaWNhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkUHJlZGljYXRlCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pZl9pbXBsCi17Ci0gcHJpdmF0ZToKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9udWxsX3N0ZXA8IEl0ZXJhdG9yLFN0YXRlID4gZm9yd2FyZF9zdGVwMDsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9mb3J3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDA6Oml0ZXJhdG9yLCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAwOjpzdGF0ZSwgRm9yd2FyZE9wLCBGb3J3YXJkUHJlZGljYXRlID4gZm9yd2FyZF9zdGVwMTsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9mb3J3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDE6Oml0ZXJhdG9yLCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAxOjpzdGF0ZSwgRm9yd2FyZE9wLCBGb3J3YXJkUHJlZGljYXRlID4gZm9yd2FyZF9zdGVwMjsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9mb3J3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDI6Oml0ZXJhdG9yLCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAyOjpzdGF0ZSwgRm9yd2FyZE9wLCBGb3J3YXJkUHJlZGljYXRlID4gZm9yd2FyZF9zdGVwMzsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9mb3J3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDM6Oml0ZXJhdG9yLCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAzOjpzdGF0ZSwgRm9yd2FyZE9wLCBGb3J3YXJkUHJlZGljYXRlID4gZm9yd2FyZF9zdGVwNDsKLSAgICAKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgIHR5cGVuYW1lIGZvcndhcmRfc3RlcDQ6Om5vdF9sYXN0Ci0gICAgICAgICwgaXRlcl9mb2xkX2lmX2ltcGw8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGZvcndhcmRfc3RlcDQ6Oml0ZXJhdG9yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDQ6OnN0YXRlCi0gICAgICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICAgICAgLCBGb3J3YXJkUHJlZGljYXRlCi0gICAgICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgICAgICwgQmFja3dhcmRQcmVkaWNhdGUKLSAgICAgICAgICAgID4KLSAgICAgICAgLCBpdGVyX2ZvbGRfaWZfbnVsbF9zdGVwPAotICAgICAgICAgICAgICB0eXBlbmFtZSBmb3J3YXJkX3N0ZXA0OjppdGVyYXRvcgotICAgICAgICAgICAgLCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXA0OjpzdGF0ZQotICAgICAgICAgICAgPgotICAgICAgICA+Ojp0eXBlIGJhY2t3YXJkX3N0ZXA0OwotCi0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfYmFja3dhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMzo6aXRlcmF0b3IsIHR5cGVuYW1lIGJhY2t3YXJkX3N0ZXA0OjpzdGF0ZSwgQmFja3dhcmRPcCwgQmFja3dhcmRQcmVkaWNhdGUgPiBiYWNrd2FyZF9zdGVwMzsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9iYWNrd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAyOjppdGVyYXRvciwgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDM6OnN0YXRlLCBCYWNrd2FyZE9wLCBCYWNrd2FyZFByZWRpY2F0ZSA+IGJhY2t3YXJkX3N0ZXAyOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2JhY2t3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDE6Oml0ZXJhdG9yLCB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwMjo6c3RhdGUsIEJhY2t3YXJkT3AsIEJhY2t3YXJkUHJlZGljYXRlID4gYmFja3dhcmRfc3RlcDE7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfYmFja3dhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMDo6aXRlcmF0b3IsIHR5cGVuYW1lIGJhY2t3YXJkX3N0ZXAxOjpzdGF0ZSwgQmFja3dhcmRPcCwgQmFja3dhcmRQcmVkaWNhdGUgPiBiYWNrd2FyZF9zdGVwMDsKLSAgICAKLQotIHB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhY2t3YXJkX3N0ZXAwOjpzdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhY2t3YXJkX3N0ZXA0OjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLX19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9pdGVyX2ZvbGRfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2l0ZXJfZm9sZF9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2MwOGIzMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2l0ZXJfZm9sZF9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE4MCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2l0ZXJfZm9sZF9pbXBsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw8IDAsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiBzdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMCBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw8IDEsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTAsaXRlcjAgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIAotCi0gICAgdHlwZWRlZiBzdGF0ZTEgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMSBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw8IDIsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTAsaXRlcjAgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUxLGl0ZXIxID46OnR5cGUgc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAKLQotICAgIHR5cGVkZWYgc3RhdGUyIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjIgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsPCAzLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUwLGl0ZXIwID46OnR5cGUgc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMSxpdGVyMSA+Ojp0eXBlIHN0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTIsaXRlcjIgPjo6dHlwZSBzdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgIAotCi0gICAgdHlwZWRlZiBzdGF0ZTMgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMyBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw8IDQsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTAsaXRlcjAgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUxLGl0ZXIxID46OnR5cGUgc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMixpdGVyMiA+Ojp0eXBlIHN0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTMsaXRlcjMgPjo6dHlwZSBzdGF0ZTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjM+Ojp0eXBlIGl0ZXI0OwotICAgIAotCi0gICAgdHlwZWRlZiBzdGF0ZTQgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyNCBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgaW50IE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsCi17Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaW1wbDwKLSAgICAgICAgICA0Ci0gICAgICAgICwgRmlyc3QKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgU3RhdGUKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiBjaHVua187Ci0KLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pbXBsPAotICAgICAgICAgICggKE4gLSA0KSA8IDAgPyAwIDogTiAtIDQgKQotICAgICAgICAsIHR5cGVuYW1lIGNodW5rXzo6aXRlcmF0b3IKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgY2h1bmtfOjpzdGF0ZQotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IHJlc187Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186OnN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsPCAtMSxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci0gICAgOiBpdGVyX2ZvbGRfaW1wbDwKLSAgICAgICAgICAtMQotICAgICAgICAsIHR5cGVuYW1lIG1wbDo6bmV4dDxGaXJzdD46OnR5cGUKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsU3RhdGUsRmlyc3QgPjo6dHlwZQotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw8IC0xLExhc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiBMYXN0IGl0ZXJhdG9yOwotfTsKLQotfX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2xhbWJkYV9ub19jdHBzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvbGFtYmRhX25vX2N0cHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NWY1ZjZiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvbGFtYmRhX25vX2N0cHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjI5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX25vX2N0cHMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIGJvb2wgQzEgPSBmYWxzZSwgYm9vbCBDMiA9IGZhbHNlLCBib29sIEMzID0gZmFsc2UsIGJvb2wgQzQgPSBmYWxzZQotICAgICwgYm9vbCBDNSA9IGZhbHNlCi0gICAgPgotc3RydWN0IGxhbWJkYV9vcgotICAgIDogdHJ1ZV8KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsYW1iZGFfb3I8IGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlLGZhbHNlID4KLSAgICA6IGZhbHNlXwotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEFyaXR5ID4gc3RydWN0IGxhbWJkYV9pbXBsCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICAgICAgdHlwZWRlZiBpc19wbGFjZWhvbGRlcjxUPiBpc19sZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGFtYmRhX2ltcGw8IGludF88MT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFByb3RlY3QgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzEsIFRhZywgZmFsc2VfID4gbDE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUxKTo6dmFsdWUKLSAgICAgICAgICAgID4gaXNfbGU7Ci0KLSAgICAgICAgdHlwZWRlZiBiaW5kMTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgRjo6cmViaW5kCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGwxOjp0eXBlCi0gICAgICAgICAgICA+IGJpbmRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICBpc19sZQotICAgICAgICAgICAgLCBpZl88IFByb3RlY3QsIG1wbDo6cHJvdGVjdDxiaW5kXz4sIGJpbmRfID4KLSAgICAgICAgICAgICwgaWRlbnRpdHk8Rj4KLSAgICAgICAgICAgID46OnR5cGUgdHlwZV87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0eXBlXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsYW1iZGFfaW1wbDwgaW50XzwyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMSwgVGFnLCBmYWxzZV8gPiBsMTsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzIsIFRhZywgZmFsc2VfID4gbDI7Ci0gICAgICAgIAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUxKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMik6OnZhbHVlCi0gICAgICAgICAgICA+IGlzX2xlOwotCi0gICAgICAgIHR5cGVkZWYgYmluZDI8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIEY6OnJlYmluZAotICAgICAgICAgICAgLCB0eXBlbmFtZSBsMTo6dHlwZSwgdHlwZW5hbWUgbDI6OnR5cGUKLSAgICAgICAgICAgID4gYmluZF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIGlzX2xlCi0gICAgICAgICAgICAsIGlmXzwgUHJvdGVjdCwgbXBsOjpwcm90ZWN0PGJpbmRfPiwgYmluZF8gPgotICAgICAgICAgICAgLCBpZGVudGl0eTxGPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxhbWJkYV9pbXBsPCBpbnRfPDM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcxLCBUYWcsIGZhbHNlXyA+IGwxOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMiwgVGFnLCBmYWxzZV8gPiBsMjsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzMsIFRhZywgZmFsc2VfID4gbDM7Ci0gICAgICAgIAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwxOjppc19sZSBpc19sZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDI6OmlzX2xlIGlzX2xlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMzo6aXNfbGUgaXNfbGUzOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTEpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUyKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMyk6OnZhbHVlCi0gICAgICAgICAgICA+IGlzX2xlOwotCi0gICAgICAgIHR5cGVkZWYgYmluZDM8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIEY6OnJlYmluZAotICAgICAgICAgICAgLCB0eXBlbmFtZSBsMTo6dHlwZSwgdHlwZW5hbWUgbDI6OnR5cGUsIHR5cGVuYW1lIGwzOjp0eXBlCi0gICAgICAgICAgICA+IGJpbmRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICBpc19sZQotICAgICAgICAgICAgLCBpZl88IFByb3RlY3QsIG1wbDo6cHJvdGVjdDxiaW5kXz4sIGJpbmRfID4KLSAgICAgICAgICAgICwgaWRlbnRpdHk8Rj4KLSAgICAgICAgICAgID46OnR5cGUgdHlwZV87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0eXBlXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsYW1iZGFfaW1wbDwgaW50Xzw0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMSwgVGFnLCBmYWxzZV8gPiBsMTsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzIsIFRhZywgZmFsc2VfID4gbDI7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmczLCBUYWcsIGZhbHNlXyA+IGwzOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnNCwgVGFnLCBmYWxzZV8gPiBsNDsKLSAgICAgICAgCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwzOjppc19sZSBpc19sZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDQ6OmlzX2xlIGlzX2xlNDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBhdXg6OmxhbWJkYV9vcjwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUxKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMik6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTMpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGU0KTo6dmFsdWUKLSAgICAgICAgICAgID4gaXNfbGU7Ci0KLSAgICAgICAgdHlwZWRlZiBiaW5kNDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgRjo6cmViaW5kCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGwxOjp0eXBlLCB0eXBlbmFtZSBsMjo6dHlwZSwgdHlwZW5hbWUgbDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDQ6OnR5cGUKLSAgICAgICAgICAgID4gYmluZF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIGlzX2xlCi0gICAgICAgICAgICAsIGlmXzwgUHJvdGVjdCwgbXBsOjpwcm90ZWN0PGJpbmRfPiwgYmluZF8gPgotICAgICAgICAgICAgLCBpZGVudGl0eTxGPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxhbWJkYV9pbXBsPCBpbnRfPDU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcxLCBUYWcsIGZhbHNlXyA+IGwxOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMiwgVGFnLCBmYWxzZV8gPiBsMjsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzMsIFRhZywgZmFsc2VfID4gbDM7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmc0LCBUYWcsIGZhbHNlXyA+IGw0OwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnNSwgVGFnLCBmYWxzZV8gPiBsNTsKLSAgICAgICAgCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwzOjppc19sZSBpc19sZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDQ6OmlzX2xlIGlzX2xlNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsNTo6aXNfbGUgaXNfbGU1OwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTEpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUyKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMyk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTQpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGU1KTo6dmFsdWUKLSAgICAgICAgICAgID4gaXNfbGU7Ci0KLSAgICAgICAgdHlwZWRlZiBiaW5kNTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgRjo6cmViaW5kCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGwxOjp0eXBlLCB0eXBlbmFtZSBsMjo6dHlwZSwgdHlwZW5hbWUgbDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDQ6OnR5cGUsIHR5cGVuYW1lIGw1Ojp0eXBlCi0gICAgICAgICAgICA+IGJpbmRfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICBpc19sZQotICAgICAgICAgICAgLCBpZl88IFByb3RlY3QsIG1wbDo6cHJvdGVjdDxiaW5kXz4sIGJpbmRfID4KLSAgICAgICAgICAgICwgaWRlbnRpdHk8Rj4KLSAgICAgICAgICAgID46OnR5cGUgdHlwZV87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0eXBlXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCB0eXBlbmFtZSBUYWcKLSAgICAsIHR5cGVuYW1lIFByb3RlY3QKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhCi17Ci0gICAgLy8vIE1ldGFmdW5jdGlvbiBmb3J3YXJkaW5nIGNvbmZ1c2VzIE1TVkMgNi54Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnRlbXBsYXRlX2FyaXR5PFQ+Ojp0eXBlIGFyaXR5XzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGFtYmRhX2ltcGw8YXJpdHlfPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IFQsVGFnLFByb3RlY3QgPiBsXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbF86OnR5cGUgdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxfOjppc19sZSBpc19sZTsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDMsIGxhbWJkYSwgKFQsIFRhZywgUHJvdGVjdCkpCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDEsIDMsIGxhbWJkYSkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgPgotc3RydWN0IGlzX2xhbWJkYV9leHByZXNzaW9uCi0gICAgOiBsYW1iZGE8VD46OmlzX2xlCi17Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2xlc3MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9sZXNzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTRiOGVlYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2xlc3MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbGVzcy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGxlc3NfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGxlc3NfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGxlc3NfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBsZXNzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGxlc3NfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGxlc3NfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBsZXNzX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBsZXNzCi0KLSAgICA6IGxlc3NfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBsZXNzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBsZXNzX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGxlc3MsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIGxlc3MpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGVzc19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogYm9vbF88ICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUgPiBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSApID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2xlc3NfZXF1YWwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9sZXNzX2VxdWFsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWNkMTQxYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2xlc3NfZXF1YWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbGVzc19lcXVhbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGxlc3NfZXF1YWxfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGxlc3NfZXF1YWxfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGxlc3NfZXF1YWxfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBsZXNzX2VxdWFsX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGxlc3NfZXF1YWxfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGxlc3NfZXF1YWxfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBsZXNzX2VxdWFsX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBsZXNzX2VxdWFsCi0KLSAgICA6IGxlc3NfZXF1YWxfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBsZXNzX2VxdWFsX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBsZXNzX2VxdWFsX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGxlc3NfZXF1YWwsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIGxlc3NfZXF1YWwpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGVzc19lcXVhbF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogYm9vbF88ICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUgPD0gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUgKSA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9saXN0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvbGlzdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhjYzhjNDYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9saXN0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9saXN0LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwID0gbmEsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEsIHR5cGVuYW1lIFQ2ID0gbmEsIHR5cGVuYW1lIFQ3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ4ID0gbmEsIHR5cGVuYW1lIFQ5ID0gbmEsIHR5cGVuYW1lIFQxMCA9IG5hLCB0eXBlbmFtZSBUMTEgPSBuYQotICAgICwgdHlwZW5hbWUgVDEyID0gbmEsIHR5cGVuYW1lIFQxMyA9IG5hLCB0eXBlbmFtZSBUMTQgPSBuYQotICAgICwgdHlwZW5hbWUgVDE1ID0gbmEsIHR5cGVuYW1lIFQxNiA9IG5hLCB0eXBlbmFtZSBUMTcgPSBuYQotICAgICwgdHlwZW5hbWUgVDE4ID0gbmEsIHR5cGVuYW1lIFQxOSA9IG5hCi0gICAgPgotc3RydWN0IGxpc3Q7Ci0KLXRlbXBsYXRlPAotICAgICAKLSAgICA+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+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2xpc3RfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L2xpc3RfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU0M2YzOGYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9saXN0X2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzI4ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2xpc3RfYy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwID0gTE9OR19NQVgsIGxvbmcgQzEgPSBMT05HX01BWCwgbG9uZyBDMiA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMzID0gTE9OR19NQVgsIGxvbmcgQzQgPSBMT05HX01BWCwgbG9uZyBDNSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM2ID0gTE9OR19NQVgsIGxvbmcgQzcgPSBMT05HX01BWCwgbG9uZyBDOCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM5ID0gTE9OR19NQVgsIGxvbmcgQzEwID0gTE9OR19NQVgsIGxvbmcgQzExID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzEyID0gTE9OR19NQVgsIGxvbmcgQzEzID0gTE9OR19NQVgsIGxvbmcgQzE0ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE1ID0gTE9OR19NQVgsIGxvbmcgQzE2ID0gTE9OR19NQVgsIGxvbmcgQzE3ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE4ID0gTE9OR19NQVgsIGxvbmcgQzE5ID0gTE9OR19NQVgKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QwX2M8VD4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QwX2M8VD46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMAotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDFfYzwgVCxDMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MV9jPCBULEMwID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMQotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDJfYzwgVCxDMCxDMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0Ml9jPCBULEMwLEMxID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMgotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDNfYzwgVCxDMCxDMSxDMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0M19jPCBULEMwLEMxLEMyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMwotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDRfYzwgVCxDMCxDMSxDMixDMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0NF9jPCBULEMwLEMxLEMyLEMzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNAotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDVfYzwgVCxDMCxDMSxDMixDMyxDNCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0NV9jPCBULEMwLEMxLEMyLEMzLEM0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDZfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0Nl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNgotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDdfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0N19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNwotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDhfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0OF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOAotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDlfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0OV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOQotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDEwX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEwX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMAotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDExX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMQotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxMl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEyX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDEzX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEzX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMwotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMwotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDE0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTRfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTVfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE1X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDE2X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxN19jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxN19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNwotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxOF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE4X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIEMxOCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDE5X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgQzE4Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxOV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4ID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jCi0gICAgOiBsaXN0MjBfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBDMTgsIEMxOQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MjBfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9tYXAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9tYXAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OTc0ZjI4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvbWFwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9tYXAuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAgPSBuYSwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYSwgdHlwZW5hbWUgVDYgPSBuYSwgdHlwZW5hbWUgVDcgPSBuYQotICAgICwgdHlwZW5hbWUgVDggPSBuYSwgdHlwZW5hbWUgVDkgPSBuYSwgdHlwZW5hbWUgVDEwID0gbmEsIHR5cGVuYW1lIFQxMSA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTIgPSBuYSwgdHlwZW5hbWUgVDEzID0gbmEsIHR5cGVuYW1lIFQxNCA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTUgPSBuYSwgdHlwZW5hbWUgVDE2ID0gbmEsIHR5cGVuYW1lIFQxNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTggPSBuYSwgdHlwZW5hbWUgVDE5ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgbWFwOwotCi10ZW1wbGF0ZTwKLSAgICAgCi0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDA8ICA+Ci17Ci0gICAgdHlwZWRlZiBtYXAwPCAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMAotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxPFQwPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTxUMD46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDI8IFQwLFQxID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDI8IFQwLFQxID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAzPCBUMCxUMSxUMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAzPCBUMCxUMSxUMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDQ8IFQwLFQxLFQyLFQzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDQ8IFQwLFQxLFQyLFQzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDU8IFQwLFQxLFQyLFQzLFQ0ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDU8IFQwLFQxLFQyLFQzLFQ0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXA2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXA2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOAotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXA5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXA5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwCi0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyCi0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzCi0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxNTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTU8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNQotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxNjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTY8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNgotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTc8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNwotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDE4PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOAotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxOTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4ID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgID4KLXN0cnVjdCBtYXAKLSAgICA6IG1hcDIwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDIwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9taW51cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L21pbnVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDU0ZmRhOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L21pbnVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9taW51cy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IG1pbnVzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBtaW51c19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgbWludXNfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBtaW51c19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBtaW51c19pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgbWludXNfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBtaW51c190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgbWludXMKLSAgICA6IG1pbnVzPCBtaW51czwgbWludXM8IG1pbnVzPCBOMSxOMiA+LCBOMz4sIE40PiwgTjU+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgbWludXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMywgdHlwZW5hbWUgTjQKLSAgICA+Ci1zdHJ1Y3QgbWludXM8IE4xLE4yLE4zLE40LG5hID4KLQotICAgIDogbWludXM8IG1pbnVzPCBtaW51czwgTjEsTjIgPiwgTjM+LCBOND4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIG1pbnVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMKLSAgICA+Ci1zdHJ1Y3QgbWludXM8IE4xLE4yLE4zLG5hLG5hID4KLQotICAgIDogbWludXM8IG1pbnVzPCBOMSxOMiA+LCBOMz4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIG1pbnVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBuYSwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBtaW51czwgTjEsTjIsbmEsbmEsbmEgPgotICAgIDogbWludXNfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBtaW51c190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgbWludXNfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgbWludXMKLSAgICAgICAgLCAoIE4xLCBOMiwgbmEsIG5hLCBuYSApCi0gICAgICAgICkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBtaW51cykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWludXNfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgIC0gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9tb2R1bHVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvbW9kdWx1cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNlODk2OTEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9tb2R1bHVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwMSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9tb2R1bHVzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgbW9kdWx1c19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgbW9kdWx1c19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgbW9kdWx1c19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IG1vZHVsdXNfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgbW9kdWx1c19pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgbW9kdWx1c19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IG1vZHVsdXNfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IG1vZHVsdXMKLQotICAgIDogbW9kdWx1c19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIG1vZHVsdXNfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIG1vZHVsdXNfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgbW9kdWx1cywgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgbW9kdWx1cykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbW9kdWx1c19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgJSBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L25vdF9lcXVhbF90by5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L25vdF9lcXVhbF90by5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkZTFlMTYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9ub3RfZXF1YWxfdG8uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbm90X2VxdWFsX3RvLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3Qgbm90X2VxdWFsX3RvX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBub3RfZXF1YWxfdG9faW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IG5vdF9lcXVhbF90b19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IG5vdF9lcXVhbF90b19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBub3RfZXF1YWxfdG9faW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IG5vdF9lcXVhbF90b19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IG5vdF9lcXVhbF90b190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3Qgbm90X2VxdWFsX3RvCi0KLSAgICA6IG5vdF9lcXVhbF90b19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIG5vdF9lcXVhbF90b190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgbm90X2VxdWFsX3RvX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIG5vdF9lcXVhbF90bywgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgbm90X2VxdWFsX3RvKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG5vdF9lcXVhbF90b19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogYm9vbF88ICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUgIT0gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUgKSA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9vci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L29yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2FlOGVkZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L29yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL29yLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGJvb2wgQ18sIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0ID4KLXN0cnVjdCBvcl9pbXBsCi0gICAgOiB0cnVlXwotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0ID4KLXN0cnVjdCBvcl9pbXBsPCBmYWxzZSxUMSxUMixUMyxUNCA+Ci0gICAgOiBvcl9pbXBsPAotICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1RZUEVfV0tORChUMSk6OnZhbHVlCi0gICAgICAgICwgVDIsIFQzLCBUNAotICAgICAgICAsIGZhbHNlXwotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgb3JfaW1wbDwKLSAgICAgICAgICBmYWxzZQotICAgICAgICAsIGZhbHNlXywgZmFsc2VfLCBmYWxzZV8sIGZhbHNlXwotICAgICAgICA+Ci0gICAgOiBmYWxzZV8KLXsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQyKQotICAgICwgdHlwZW5hbWUgVDMgPSBmYWxzZV8sIHR5cGVuYW1lIFQ0ID0gZmFsc2VfLCB0eXBlbmFtZSBUNSA9IGZhbHNlXwotICAgID4KLXN0cnVjdCBvcl8KLQotICAgIDogYXV4Ojpvcl9pbXBsPAotICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1RZUEVfV0tORChUMSk6OnZhbHVlCi0gICAgICAgICwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgPgotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgb3JfCi0gICAgICAgICwgKCBUMSwgVDIsIFQzLCBUNCwgVDUpCi0gICAgICAgICkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoCi0gICAgICAyCi0gICAgLCA1Ci0gICAgLCBvcl8KLSAgICApCi0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L3BsYWNlaG9sZGVycy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L3BsYWNlaG9sZGVycy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNhMjhjMDkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9wbGFjZWhvbGRlcnMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTA1ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLyBDb3B5cmlnaHQgUGV0ZXIgRGltb3YgMjAwMS0yMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3BsYWNlaG9sZGVycy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzwgLTEgPiBfOwotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF8pCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol87Ci19Ci0KLX19Ci0KLS8vLyBhZ3VydCwgMTcvbWFyLzAyOiBvbmUgbW9yZSBwbGFjZWhvbGRlciBmb3IgdGhlIGxhc3QgJ2FwcGx5IycgCi0vLy8gc3BlY2lhbGl6YXRpb24KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDE+IF8xOwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzEpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol8xOwotfQotCi19fQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8Mj4gXzI7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfMikKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzI7Ci19Ci0KLX19Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzwzPiBfMzsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF8zKQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfMzsKLX0KLQotfX0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDQ+IF80OwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzQpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol80OwotfQotCi19fQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8NT4gXzU7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfNSkKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzU7Ci19Ci0KLX19Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzw2PiBfNjsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF82KQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfNjsKLX0KLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvcGx1cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L3BsdXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZDhiMmNkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvcGx1cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvcGx1cy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IHBsdXNfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IHBsdXNfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IHBsdXNfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBwbHVzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IHBsdXNfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IHBsdXNfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBwbHVzX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBwbHVzCi0gICAgOiBwbHVzPCBwbHVzPCBwbHVzPCBwbHVzPCBOMSxOMiA+LCBOMz4sIE40PiwgTjU+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgcGx1cwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIE41ICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zLCB0eXBlbmFtZSBONAotICAgID4KLXN0cnVjdCBwbHVzPCBOMSxOMixOMyxONCxuYSA+Ci0KLSAgICA6IHBsdXM8IHBsdXM8IHBsdXM8IE4xLE4yID4sIE4zPiwgTjQ+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBwbHVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMKLSAgICA+Ci1zdHJ1Y3QgcGx1czwgTjEsTjIsTjMsbmEsbmEgPgotCi0gICAgOiBwbHVzPCBwbHVzPCBOMSxOMiA+LCBOMz4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIHBsdXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIG5hLCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IHBsdXM8IE4xLE4yLG5hLG5hLG5hID4KLSAgICA6IHBsdXNfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBwbHVzX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBwbHVzX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIHBsdXMKLSAgICAgICAgLCAoIE4xLCBOMiwgbmEsIG5hLCBuYSApCi0gICAgICAgICkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBwbHVzKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBwbHVzX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlCi0gICAgICAgICAgICAgICAgICArIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvcXVvdGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9xdW90ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhjZTc5ZWQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9xdW90ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvcXVvdGUuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBULCBib29sIGhhc190eXBlXyA+Ci1zdHJ1Y3QgcXVvdGVfaW1wbAotICAgIDogVAotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotc3RydWN0IHF1b3RlX2ltcGw8IFQsZmFsc2UgPgotewotICAgIHR5cGVkZWYgVCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUYWcgPSB2b2lkXwotICAgID4KLXN0cnVjdCBxdW90ZTEKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IHF1b3RlX2ltcGw8Ci0gICAgICAgICAgICAgIEY8VTE+Ci0gICAgICAgICAgICAsIGF1eDo6aGFzX3R5cGU8IEY8VTE+ID46OnZhbHVlCi0gICAgICAgICAgICA+Ci0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFRhZyA9IHZvaWRfCi0gICAgPgotc3RydWN0IHF1b3RlMgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IHF1b3RlX2ltcGw8Ci0gICAgICAgICAgICAgIEY8IFUxLFUyID4KLSAgICAgICAgICAgICwgYXV4OjpoYXNfdHlwZTwgRjwgVTEsVTIgPiA+Ojp2YWx1ZQotICAgICAgICAgICAgPgotCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVGFnID0gdm9pZF8KLSAgICA+Ci1zdHJ1Y3QgcXVvdGUzCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IHF1b3RlX2ltcGw8Ci0gICAgICAgICAgICAgIEY8IFUxLFUyLFUzID4KLSAgICAgICAgICAgICwgYXV4OjpoYXNfdHlwZTwgRjwgVTEsVTIsVTMgPiA+Ojp2YWx1ZQotICAgICAgICAgICAgPgotCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNCA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFRhZyA9IHZvaWRfCi0gICAgPgotc3RydWN0IHF1b3RlNAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IHF1b3RlX2ltcGw8Ci0gICAgICAgICAgICAgIEY8IFUxLFUyLFUzLFU0ID4KLSAgICAgICAgICAgICwgYXV4OjpoYXNfdHlwZTwgRjwgVTEsVTIsVTMsVTQgPiA+Ojp2YWx1ZQotICAgICAgICAgICAgPgotCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0Ci0gICAgICAgICwgdHlwZW5hbWUgUDUKLSAgICAgICAgPgotICAgICAgY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVGFnID0gdm9pZF8KLSAgICA+Ci1zdHJ1Y3QgcXVvdGU1Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAgICAgLCB0eXBlbmFtZSBVNQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBxdW90ZV9pbXBsPAotICAgICAgICAgICAgICBGPCBVMSxVMixVMyxVNCxVNSA+Ci0gICAgICAgICAgICAsIGF1eDo6aGFzX3R5cGU8IEY8IFUxLFUyLFUzLFU0LFU1ID4gPjo6dmFsdWUKLSAgICAgICAgICAgID4KLQotICAgIHsKLSAgICB9OwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9yZXZlcnNlX2ZvbGRfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L3JldmVyc2VfZm9sZF9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2QzYWQ3NS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L3JldmVyc2VfZm9sZF9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIzMSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL3JldmVyc2VfZm9sZF9pbXBsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICBsb25nIE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9pbXBsOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9pbXBsPCAwLEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgZndkX3N0YXRlMCBia3dkX3N0YXRlMDsKLSAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjAgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9pbXBsPCAxLEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+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+Ojp0eXBlCi0gICAgICAgID46OnR5cGUgc3RhdGU7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9zdGVwOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfaW1wbDwgLTEsTGFzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgTGFzdCBpdGVyYXRvcjsKLX07Ci0KLX19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9yZXZlcnNlX2l0ZXJfZm9sZF9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMzYmY1MDguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9yZXZlcnNlX2l0ZXJfZm9sZF9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIzMSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL3JldmVyc2VfaXRlcl9mb2xkX2ltcGwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIGxvbmcgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+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+IG5lc3RlZF9zdGVwOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8Ci0gICAgICAgICAgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIG5lc3RlZF9zdGVwOjpzdGF0ZQotICAgICAgICAsIEZpcnN0Ci0gICAgICAgID46OnR5cGUgc3RhdGU7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9zdGVwOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsPCAtMSxMYXN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiBMYXN0IGl0ZXJhdG9yOwotfTsKLQotfX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L3NldC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L3NldC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRjNGNhMTEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9zZXQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzIzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3NldC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCA9IG5hLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hLCB0eXBlbmFtZSBUNiA9IG5hLCB0eXBlbmFtZSBUNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUOCA9IG5hLCB0eXBlbmFtZSBUOSA9IG5hLCB0eXBlbmFtZSBUMTAgPSBuYSwgdHlwZW5hbWUgVDExID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxMiA9IG5hLCB0eXBlbmFtZSBUMTMgPSBuYSwgdHlwZW5hbWUgVDE0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxNSA9IG5hLCB0eXBlbmFtZSBUMTYgPSBuYSwgdHlwZW5hbWUgVDE3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxOCA9IG5hLCB0eXBlbmFtZSBUMTkgPSBuYQotICAgID4KLXN0cnVjdCBzZXQ7Ci0KLXRlbXBsYXRlPAotICAgICAKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MDwgID4KLXsKLSAgICB0eXBlZGVmIHNldDA8ICA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwCi0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDE8VDA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxPFQwPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MjwgVDAsVDEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MjwgVDAsVDEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDM8IFQwLFQxLFQyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDM8IFQwLFQxLFQyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0NDwgVDAsVDEsVDIsVDMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NDwgVDAsVDEsVDIsVDMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0NTwgVDAsVDEsVDIsVDMsVDQgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NTwgVDAsVDEsVDIsVDMsVDQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0NzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0ODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0ODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMQotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDE1PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDE2PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxNzwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTg8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDE5PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTggPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgPgotc3RydWN0IHNldAotICAgIDogc2V0MjA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MjA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L3NldF9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvc2V0X2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZWYyZmRlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvc2V0X2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzI4ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3NldF9jLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAgPSBMT05HX01BWCwgbG9uZyBDMSA9IExPTkdfTUFYLCBsb25nIEMyID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzMgPSBMT05HX01BWCwgbG9uZyBDNCA9IExPTkdfTUFYLCBsb25nIEM1ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzYgPSBMT05HX01BWCwgbG9uZyBDNyA9IExPTkdfTUFYLCBsb25nIEM4ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzkgPSBMT05HX01BWCwgbG9uZyBDMTAgPSBMT05HX01BWCwgbG9uZyBDMTEgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTIgPSBMT05HX01BWCwgbG9uZyBDMTMgPSBMT05HX01BWCwgbG9uZyBDMTQgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTUgPSBMT05HX01BWCwgbG9uZyBDMTYgPSBMT05HX01BWCwgbG9uZyBDMTcgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTggPSBMT05HX01BWCwgbG9uZyBDMTkgPSBMT05HX01BWAotICAgID4KLXN0cnVjdCBzZXRfYzsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDBfYzxUPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MF9jPFQ+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+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgPgotc3RydWN0IHNldF9jCi0gICAgOiBzZXQyMF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIEMxOCwgQzE5Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDIwX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvc2hpZnRfbGVmdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L3NoaWZ0X2xlZnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOTY0ZmI4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvc2hpZnRfbGVmdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8gQ29weXJpZ2h0IEphYXAgU3V0ZXIgMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9zaGlmdF9sZWZ0LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3Qgc2hpZnRfbGVmdF9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgc2hpZnRfbGVmdF9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgc2hpZnRfbGVmdF9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IHNoaWZ0X2xlZnRfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3Qgc2hpZnRfbGVmdF9pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3Qgc2hpZnRfbGVmdF9pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHNoaWZ0X2xlZnRfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IHNoaWZ0X2xlZnQKLQotICAgIDogc2hpZnRfbGVmdF9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIHNoaWZ0X2xlZnRfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIHNoaWZ0X2xlZnRfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgc2hpZnRfbGVmdCwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgc2hpZnRfbGVmdCkKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2hpZnRfbGVmdF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4sIHR5cGVuYW1lIFMgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIE46OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlCi0gICAgICAgICAgICAgICAgICA8PCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoUyk6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvc2hpZnRfcmlnaHQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9zaGlmdF9yaWdodC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU3YTVmZTAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy9zaGlmdF9yaWdodC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8gQ29weXJpZ2h0IEphYXAgU3V0ZXIgMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9zaGlmdF9yaWdodC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IHNoaWZ0X3JpZ2h0X2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBzaGlmdF9yaWdodF9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgc2hpZnRfcmlnaHRfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBzaGlmdF9yaWdodF9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBzaGlmdF9yaWdodF9pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3Qgc2hpZnRfcmlnaHRfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBzaGlmdF9yaWdodF90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3Qgc2hpZnRfcmlnaHQKLQotICAgIDogc2hpZnRfcmlnaHRfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBzaGlmdF9yaWdodF90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgc2hpZnRfcmlnaHRfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgc2hpZnRfcmlnaHQsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIHNoaWZ0X3JpZ2h0KQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBzaGlmdF9yaWdodF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4sIHR5cGVuYW1lIFMgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIE46OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlCi0gICAgICAgICAgICAgICAgICA+PiBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoUyk6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvdGVtcGxhdGVfYXJpdHkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy90ZW1wbGF0ZV9hcml0eS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZjYjQyYWUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy90ZW1wbGF0ZV9hcml0eS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL3RlbXBsYXRlX2FyaXR5LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvdGltZXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy90aW1lcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlhNTVmZWQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy90aW1lcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdGltZXMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCB0aW1lc19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgdGltZXNfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IHRpbWVzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgdGltZXNfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgdGltZXNfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IHRpbWVzX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgdGltZXNfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IHRpbWVzCi0gICAgOiB0aW1lczwgdGltZXM8IHRpbWVzPCB0aW1lczwgTjEsTjIgPiwgTjM+LCBOND4sIE41PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIHRpbWVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMsIHR5cGVuYW1lIE40Ci0gICAgPgotc3RydWN0IHRpbWVzPCBOMSxOMixOMyxONCxuYSA+Ci0KLSAgICA6IHRpbWVzPCB0aW1lczwgdGltZXM8IE4xLE4yID4sIE4zPiwgTjQ+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCB0aW1lcwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zCi0gICAgPgotc3RydWN0IHRpbWVzPCBOMSxOMixOMyxuYSxuYSA+Ci0KLSAgICA6IHRpbWVzPCB0aW1lczwgTjEsTjIgPiwgTjM+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCB0aW1lcwotICAgICAgICAsICggTjEsIE4yLCBOMywgbmEsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgdGltZXM8IE4xLE4yLG5hLG5hLG5hID4KLSAgICA6IHRpbWVzX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgdGltZXNfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIHRpbWVzX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIHRpbWVzCi0gICAgICAgICwgKCBOMSwgTjIsIG5hLCBuYSwgbmEgKQotICAgICAgICApCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgdGltZXMpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IHRpbWVzX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlCi0gICAgICAgICAgICAgICAgICAqIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvdW5wYWNrX2FyZ3MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy91bnBhY2tfYXJncy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFlYzMxYWYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy91bnBhY2tfYXJncy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDItMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC91bnBhY2tfYXJncy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBpbnQgc2l6ZSwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPgotc3RydWN0IHVucGFja19hcmdzX2ltcGw8IDAsRixBcmdzID4KLSAgICA6IGFwcGx5MDwKLSAgICAgICAgICBGCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4KLXN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPCAxLEYsQXJncyA+Ci0gICAgOiBhcHBseTE8Ci0gICAgICAgICAgRgotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMCA+Ojp0eXBlCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4KLXN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPCAyLEYsQXJncyA+Ci0gICAgOiBhcHBseTI8Ci0gICAgICAgICAgRgotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMCA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDEgPjo6dHlwZQotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDwgMyxGLEFyZ3MgPgotICAgIDogYXBwbHkzPAotICAgICAgICAgIEYKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDAgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywxID46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDIgPjo6dHlwZQotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDwgNCxGLEFyZ3MgPgotICAgIDogYXBwbHk0PAotICAgICAgICAgIEYKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDAgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywxID46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDIgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywzID46OnR5cGUKLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPgotc3RydWN0IHVucGFja19hcmdzX2ltcGw8IDUsRixBcmdzID4KLSAgICA6IGFwcGx5NTwKLSAgICAgICAgICBGCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywwID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMSA+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywyID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMyA+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncyw0ID46OnR5cGUKLSAgICAgICAgPgotewotfTsKLQotfQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3MKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgQXJncyA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogYXV4Ojp1bnBhY2tfYXJnc19pbXBsPCBzaXplPEFyZ3M+Ojp2YWx1ZSxGLCBBcmdzID4KLQotICAgIHsKLSAgICB9OwotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9QQVNTX1RIUk9VR0hfTEFNQkRBX1NQRUMoMSwgdW5wYWNrX2FyZ3MpCi0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvdmVjdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvdmVjdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGY2NzU4OS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9td2N3L3ZlY3Rvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdmVjdG9yLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwID0gbmEsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEsIHR5cGVuYW1lIFQ2ID0gbmEsIHR5cGVuYW1lIFQ3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ4ID0gbmEsIHR5cGVuYW1lIFQ5ID0gbmEsIHR5cGVuYW1lIFQxMCA9IG5hLCB0eXBlbmFtZSBUMTEgPSBuYQotICAgICwgdHlwZW5hbWUgVDEyID0gbmEsIHR5cGVuYW1lIFQxMyA9IG5hLCB0eXBlbmFtZSBUMTQgPSBuYQotICAgICwgdHlwZW5hbWUgVDE1ID0gbmEsIHR5cGVuYW1lIFQxNiA9IG5hLCB0eXBlbmFtZSBUMTcgPSBuYQotICAgICwgdHlwZW5hbWUgVDE4ID0gbmEsIHR5cGVuYW1lIFQxOSA9IG5hCi0gICAgPgotc3RydWN0IHZlY3RvcjsKLQotdGVtcGxhdGU8Ci0gICAgIAotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+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+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IyMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL213Y3cvdmVjdG9yX2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy92ZWN0b3JfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUyZmJkYjQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbXdjdy92ZWN0b3JfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMDkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdmVjdG9yX2MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCA9IExPTkdfTUFYLCBsb25nIEMxID0gTE9OR19NQVgsIGxvbmcgQzIgPSBMT05HX01BWAotICAgICwgbG9uZyBDMyA9IExPTkdfTUFYLCBsb25nIEM0ID0gTE9OR19NQVgsIGxvbmcgQzUgPSBMT05HX01BWAotICAgICwgbG9uZyBDNiA9IExPTkdfTUFYLCBsb25nIEM3ID0gTE9OR19NQVgsIGxvbmcgQzggPSBMT05HX01BWAotICAgICwgbG9uZyBDOSA9IExPTkdfTUFYLCBsb25nIEMxMCA9IExPTkdfTUFYLCBsb25nIEMxMSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxMiA9IExPTkdfTUFYLCBsb25nIEMxMyA9IExPTkdfTUFYLCBsb25nIEMxNCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxNSA9IExPTkdfTUFYLCBsb25nIEMxNiA9IExPTkdfTUFYLCBsb25nIEMxNyA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxOCA9IExPTkdfTUFYLCBsb25nIEMxOSA9IExPTkdfTUFYCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMF9jPFQ+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IwX2M8VD46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxX2M8IFQsIFQoQzApID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjFfYzwgVCwgVChDMCkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjJfYzwgVCwgVChDMCksIFQoQzEpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjJfYzwgVCwgVChDMCksIFQoQzEpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMgotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IzX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMikgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yM19jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMwotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I0X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjRfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMykgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjVfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjVfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I2X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNl9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNgotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I3X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjdfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNikgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjhfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjhfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I5X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yOV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOQotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjExX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTFfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMQotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTJfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEyX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxM19jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxM19jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE0X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMykgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTRfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTVfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE1X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNl9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNl9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE3X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNikgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTdfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNwotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMThfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSwgVChDMTcpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE4X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNiksIFQoQzE3KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgQzE4LCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxOV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpLCBUKEMxNyksIFQoQzE4KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxOV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpLCBUKEMxNyksIFQoQzE4KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jCi0gICAgOiB2ZWN0b3IyMF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpLCBUKEMxNyksIFQoQzE4KSwgVChDMTkpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjIwX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNiksIFQoQzE3KSwgVChDMTgpLCBUKEMxOSkgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9hZHZhbmNlX2JhY2t3YXJkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvYWR2YW5jZV9iYWNrd2FyZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBlMGM4MjguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9hZHZhbmNlX2JhY2t3YXJkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk3ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vYWR2YW5jZV9iYWNrd2FyZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBsb25nIE4gPiBzdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDsKLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkPDA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIGl0ZXIwIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkPDE+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDwyPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIGl0ZXIyIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkPDM+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIGl0ZXIzIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkPDQ+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAgICAgdHlwZWRlZiBpdGVyNCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgbG9uZyBOID4KLXN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBhZHZhbmNlX2JhY2t3YXJkPDQ+Ci0gICAgICAgICAgICAsIEl0ZXJhdG9yCi0gICAgICAgICAgICA+Ojp0eXBlIGNodW5rX3Jlc3VsdF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgYWR2YW5jZV9iYWNrd2FyZDwoCi0gICAgICAgICAgICAgICAgKE4gLSA0KSA8IDAKLSAgICAgICAgICAgICAgICAgICAgPyAwCi0gICAgICAgICAgICAgICAgICAgIDogTiAtIDQKLSAgICAgICAgICAgICAgICAgICAgKT4KLSAgICAgICAgICAgICwgY2h1bmtfcmVzdWx0XwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi19fX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9hZHZhbmNlX2ZvcndhcmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9hZHZhbmNlX2ZvcndhcmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiM2E1YWZkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvYWR2YW5jZV9mb3J3YXJkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk3ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vYWR2YW5jZV9mb3J3YXJkLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGxvbmcgTiA+IHN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkPDA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIGl0ZXIwIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ8MT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjEgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZDwyPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiBpdGVyMiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkPDM+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIGl0ZXIzIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ8ND4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjQgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IGxvbmcgTiA+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBhZHZhbmNlX2ZvcndhcmQ8ND4KLSAgICAgICAgICAgICwgSXRlcmF0b3IKLSAgICAgICAgICAgID46OnR5cGUgY2h1bmtfcmVzdWx0XzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBhZHZhbmNlX2ZvcndhcmQ8KAotICAgICAgICAgICAgICAgIChOIC0gNCkgPCAwCi0gICAgICAgICAgICAgICAgICAgID8gMAotICAgICAgICAgICAgICAgICAgICA6IE4gLSA0Ci0gICAgICAgICAgICAgICAgICAgICk+Ci0gICAgICAgICAgICAsIGNodW5rX3Jlc3VsdF8KLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotfX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvYW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvYW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDY5Yjk0MC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2FuZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hbmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IGJvb2wgQ18gPiBzdHJ1Y3QgYW5kX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICAgICAgOiBmYWxzZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGFuZF9pbXBsPHRydWU+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgICAgIDogYW5kX2ltcGw8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1RZUEVfV0tORChUMSk6OnZhbHVlCi0gICAgICAgICAgICA+Ojp0ZW1wbGF0ZSByZXN1bHRfPCBUMixUMyxUNCx0cnVlXyA+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYW5kX2ltcGw8dHJ1ZT4KLSAgICA6OnJlc3VsdF88IHRydWVfLHRydWVfLHRydWVfLHRydWVfID4KLSAgICAgICAgOiB0cnVlXwotewotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDIpCi0gICAgLCB0eXBlbmFtZSBUMyA9IHRydWVfLCB0eXBlbmFtZSBUNCA9IHRydWVfLCB0eXBlbmFtZSBUNSA9IHRydWVfCi0gICAgPgotc3RydWN0IGFuZF8KLQotICAgIDogYXV4OjphbmRfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX05FU1RFRF9UWVBFX1dLTkQoVDEpOjp2YWx1ZQotICAgICAgICA+Ojp0ZW1wbGF0ZSByZXN1bHRfPCBUMixUMyxUNCxUNSA+Ci0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBhbmRfCi0gICAgICAgICwgKCBUMSwgVDIsIFQzLCBUNCwgVDUpCi0gICAgICAgICkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoCi0gICAgICAyCi0gICAgLCA1Ci0gICAgLCBhbmRfCi0gICAgKQotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9hcHBseS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2FwcGx5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2I2MGUwYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2FwcGx5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI2OCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hcHBseS5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGFwcGx5MAotCi0gICAgOiBhcHBseV93cmFwMDwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgMQotICAgICAgICAsIGFwcGx5MAotICAgICAgICAsIChGICkKLSAgICAgICAgKQotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhcHBseV9jaG9vc2VyPDA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkwPAotICAgICAgICAgICAgICBGCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGFwcGx5MQotCi0gICAgOiBhcHBseV93cmFwMTwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAgLCBUMQotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICAyCi0gICAgICAgICwgYXBwbHkxCi0gICAgICAgICwgKEYsIFQxKQotICAgICAgICApCi19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFwcGx5X2Nob29zZXI8MT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseTE8Ci0gICAgICAgICAgICAgIEYsIFQxCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBhcHBseTIKLQotICAgIDogYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgICwgVDEsIFQyCi0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDMKLSAgICAgICAgLCBhcHBseTIKLSAgICAgICAgLCAoRiwgVDEsIFQyKQotICAgICAgICApCi19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFwcGx5X2Nob29zZXI8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseTI8Ci0gICAgICAgICAgICAgIEYsIFQxLCBUMgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGFwcGx5MwotCi0gICAgOiBhcHBseV93cmFwMzwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAgLCBUMSwgVDIsIFQzCi0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDQKLSAgICAgICAgLCBhcHBseTMKLSAgICAgICAgLCAoRiwgVDEsIFQyLCBUMykKLSAgICAgICAgKQotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhcHBseV9jaG9vc2VyPDM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkzPAotICAgICAgICAgICAgICBGLCBUMSwgVDIsIFQzCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGFwcGx5NAotCi0gICAgOiBhcHBseV93cmFwNDwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAgLCBUMSwgVDIsIFQzLCBUNAotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgYXBwbHk0Ci0gICAgICAgICwgKEYsIFQxLCBUMiwgVDMsIFQ0KQotICAgICAgICApCi19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFwcGx5X2Nob29zZXI8ND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseTQ8Ci0gICAgICAgICAgICAgIEYsIFQxLCBUMiwgVDMsIFQ0Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBhcHBseTUKLQotICAgIDogYXBwbHlfd3JhcDU8Ci0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgICwgVDEsIFQyLCBUMywgVDQsIFQ1Ci0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDYKLSAgICAgICAgLCBhcHBseTUKLSAgICAgICAgLCAoRiwgVDEsIFQyLCBUMywgVDQsIFQ1KQotICAgICAgICApCi19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFwcGx5X2Nob29zZXI8NT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseTU8Ci0gICAgICAgICAgICAgIEYsIFQxLCBUMiwgVDMsIFQ0LCBUNQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLXN0cnVjdCBpc19hcHBseV9hcmcKLXsKLSAgICBzdGF0aWMgYm9vbCBjb25zdCB2YWx1ZSAgPSB0cnVlOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGlzX2FwcGx5X2FyZzxuYT4KLXsKLSAgICBzdGF0aWMgYm9vbCBjb25zdCB2YWx1ZSAgPSBmYWxzZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGFwcGx5X2NvdW50X2FyZ3MKLXsKLSAgICBzdGF0aWMgaW50IGNvbnN0IHZhbHVlICA9IGlzX2FwcGx5X2FyZzxUMT46OnZhbHVlICsgaXNfYXBwbHlfYXJnPFQyPjo6dmFsdWUgKyBpc19hcHBseV9hcmc8VDM+Ojp2YWx1ZSArIGlzX2FwcGx5X2FyZzxUND46OnZhbHVlICsgaXNfYXBwbHlfYXJnPFQ1Pjo6dmFsdWU7Ci0KLX07Ci0KLX0KLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hCi0gICAgPgotc3RydWN0IGFwcGx5Ci0gICAgOiBhdXg6OmFwcGx5X2Nob29zZXI8Ci0gICAgICAgICAgYXV4OjphcHBseV9jb3VudF9hcmdzPCBUMSxUMixUMyxUNCxUNSA+Ojp2YWx1ZQotICAgICAgICA+Ojp0ZW1wbGF0ZSByZXN1bHRfPCBGLFQxLFQyLFQzLFQ0LFQ1ID46OnR5cGUKLXsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvYXBwbHlfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvYXBwbHlfZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmY1Mjg4Yy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2FwcGx5X2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hcHBseV9md2QuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IE5ETkJPT1NUX0FVWF9OVFRQX0RFQ0woaW50LCBhcml0eV8pID4gc3RydWN0IGFwcGx5X2Nob29zZXI7Ci19Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBhcHBseTA7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkxOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBhcHBseTI7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBhcHBseTM7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk0OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBhcHBseTU7Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvYXBwbHlfd3JhcC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2FwcGx5X3dyYXAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NWNiZDU2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvYXBwbHlfd3JhcC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3OCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hcHBseV93cmFwLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLQotICAgICwgdHlwZW5hbWUgaGFzX2FwcGx5XyA9IHR5cGVuYW1lIGF1eDo6aGFzX2FwcGx5PEY+Ojp0eXBlCi0KLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDAKLQotICAgIDogRjo6dGVtcGxhdGUgYXBwbHk8ICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0KLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDEKLQotICAgIDogRjo6dGVtcGxhdGUgYXBwbHk8VDE+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXAyCi0KLSAgICA6IEY6OnRlbXBsYXRlIGFwcGx5PCBUMSxUMiA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwMwotCi0gICAgOiBGOjp0ZW1wbGF0ZSBhcHBseTwgVDEsVDIsVDMgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXA0Ci0KLSAgICA6IEY6OnRlbXBsYXRlIGFwcGx5PCBUMSxUMixUMyxUNCA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXA1Ci0KLSAgICA6IEY6OnRlbXBsYXRlIGFwcGx5PCBUMSxUMixUMyxUNCxUNSA+Ci17Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2FyZy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2FyZy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE1NDQ3NmEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9hcmcuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTIzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IFBldGVyIERpbW92IDIwMDEtMjAwMgotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2FyZy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8IC0xID4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAtMSk7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdGFnKQotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHR5cGUpCi0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFUxIHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPDE+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMSk7Ci0gICAgdHlwZWRlZiBhcmc8Mj4gbmV4dDsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTEgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8Mj4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAyKTsKLSAgICB0eXBlZGVmIGFyZzwzPiBuZXh0OwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBVMiB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEodHlwZSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGFyZzwzPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDMpOwotICAgIHR5cGVkZWYgYXJnPDQ+IG5leHQ7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdGFnKQotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHR5cGUpCi0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFUzIHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPDQ+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gNCk7Ci0gICAgdHlwZWRlZiBhcmc8NT4gbmV4dDsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTQgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8NT4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSA1KTsKLSAgICB0eXBlZGVmIGFyZzw2PiBuZXh0OwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBVNSB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEodHlwZSk7Ci0gICAgfTsKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTk9OVFlQRV9BUklUWV9TUEVDKDEsaW50LCBhcmcpCi0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2Jhc2ljX2JpbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9iYXNpY19iaW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWM5NjJlNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2Jhc2ljX2JpbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDg2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IFBldGVyIERpbW92IDIwMDEKLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2Jhc2ljX2JpbmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IGJvb2wgPgotc3RydWN0IHJlc29sdmVfYXJnX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzCi0gICAgICAgICwgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCByZXNvbHZlX2FyZ19pbXBsPHRydWU+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMwotICAgICAgICAsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGlzX2JpbmRfdGVtcGxhdGU7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmcKLSAgICA6IHJlc29sdmVfYXJnX2ltcGw8IGlzX2JpbmRfdGVtcGxhdGU8VD46OnZhbHVlID4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgVCxVMSxVMixVMyxVNCxVNSA+Ci17Ci19OwotCi10ZW1wbGF0ZTwgaW50IGFyaXR5XyA+IHN0cnVjdCBiaW5kX2Nob29zZXI7Ci0KLWF1eDo6bm9fdGFnIGlzX2JpbmRfaGVscGVyKC4uLik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IGF1eDo6bm9fdGFnIGlzX2JpbmRfaGVscGVyKHByb3RlY3Q8VD4qKTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1hdXg6Onllc190YWcgaXNfYmluZF9oZWxwZXIoYmluZDwgRixUMSxUMixUMyxUNCxUNSA+Kik7Ci0KLXRlbXBsYXRlPCBpbnQgTiA+Ci1hdXg6Onllc190YWcgaXNfYmluZF9oZWxwZXIoYXJnPE4+Kik7Ci0KLXRlbXBsYXRlPCBib29sIGlzX3JlZl8gID0gdHJ1ZSA+Ci1zdHJ1Y3QgaXNfYmluZF90ZW1wbGF0ZV9pbXBsCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlICA9IGZhbHNlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGlzX2JpbmRfdGVtcGxhdGVfaW1wbDxmYWxzZT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPQotICAgICAgICAgICAgICBzaXplb2YoYXV4Ojppc19iaW5kX2hlbHBlcihzdGF0aWNfY2FzdDxUKj4oMCkpKQotICAgICAgICAgICAgICAgID09IHNpemVvZihhdXg6Onllc190YWcpCi0gICAgICAgICAgICApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBpc19iaW5kX3RlbXBsYXRlCi0gICAgOiBpc19iaW5kX3RlbXBsYXRlX2ltcGw8IDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfcmVmZXJlbmNlX2ltcGw8VD46OnZhbHVlID4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFQ+Ci17Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGJpbmQwCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IEYsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDA8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLWF1eDo6eWVzX3RhZwotaXNfYmluZF9oZWxwZXIoYmluZDA8Rj4qKTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygxLCBiaW5kMCkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygxLCBiaW5kMCkKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiaW5kX2Nob29zZXI8MD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBiaW5kMDxGPiB0eXBlOwotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBiaW5kMQotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBGLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLWF1eDo6eWVzX3RhZwotaXNfYmluZF9oZWxwZXIoYmluZDE8IEYsVDEgPiopOwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDIsIGJpbmQxKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDIsIGJpbmQxKQotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJpbmRfY2hvb3NlcjwxPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGJpbmQxPCBGLFQxID4gdHlwZTsKLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGJpbmQyCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IEYsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQxLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMixVMSxVMixVMyxVNCxVNSA+IHQyOwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMjwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotYXV4Ojp5ZXNfdGFnCi1pc19iaW5kX2hlbHBlcihiaW5kMjwgRixUMSxUMiA+Kik7Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoMywgYmluZDIpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMywgYmluZDIpCi0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmluZF9jaG9vc2VyPDI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYmluZDI8IEYsVDEsVDIgPiB0eXBlOwotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGJpbmQzCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IEYsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQxLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDM8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotYXV4Ojp5ZXNfdGFnCi1pc19iaW5kX2hlbHBlcihiaW5kMzwgRixUMSxUMixUMyA+Kik7Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNCwgYmluZDMpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNCwgYmluZDMpCi0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmluZF9jaG9vc2VyPDM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYmluZDM8IEYsVDEsVDIsVDMgPiB0eXBlOwotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBiaW5kNAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBGLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUNCxVMSxVMixVMyxVNCxVNSA+IHQ0OwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNDwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlLCB0eXBlbmFtZSB0Mzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSB0NDo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotYXV4Ojp5ZXNfdGFnCi1pc19iaW5kX2hlbHBlcihiaW5kNDwgRixUMSxUMixUMyxUNCA+Kik7Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNSwgYmluZDQpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNSwgYmluZDQpCi0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmluZF9jaG9vc2VyPDQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYmluZDQ8IEYsVDEsVDIsVDMsVDQgPiB0eXBlOwotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYmluZDUKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgRixVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDQsVTEsVTIsVTMsVTQsVTUgPiB0NDsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQ1LFUxLFUyLFUzLFU0LFU1ID4gdDU7Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUsIHR5cGVuYW1lIHQzOjp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQ0Ojp0eXBlLCB0eXBlbmFtZSB0NTo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLWF1eDo6eWVzX3RhZwotaXNfYmluZF9oZWxwZXIoYmluZDU8IEYsVDEsVDIsVDMsVDQsVDUgPiopOwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDYsIGJpbmQ1KQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDYsIGJpbmQ1KQotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJpbmRfY2hvb3Nlcjw1PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGJpbmQ1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4gdHlwZTsKLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci1zdHJ1Y3QgaXNfYmluZF9hcmcKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gdHJ1ZSk7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaXNfYmluZF9hcmc8bmE+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlICA9IGZhbHNlKTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGJpbmRfY291bnRfYXJncwotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0KLSAgICAgICAgICBpc19iaW5kX2FyZzxUMT46OnZhbHVlICsgaXNfYmluZF9hcmc8VDI+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19iaW5kX2FyZzxUMz46OnZhbHVlICsgaXNfYmluZF9hcmc8VDQ+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19iaW5kX2FyZzxUNT46OnZhbHVlCi0gICAgICAgICk7Ci0KLX07Ci0KLX0KLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYmluZAotICAgIDogYXV4OjpiaW5kX2Nob29zZXI8Ci0gICAgICAgICAgYXV4OjpiaW5kX2NvdW50X2FyZ3M8IFQxLFQyLFQzLFQ0LFQ1ID46OnZhbHVlCi0gICAgICAgID46OnRlbXBsYXRlIHJlc3VsdF88IEYsVDEsVDIsVDMsVDQsVDUgPjo6dHlwZQotewotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKAotICAgICAgNgotICAgICwgYmluZAotICAgICkKLQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKAotICAgICAgNgotICAgICwgYmluZAotICAgICkKLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvYmluZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2JpbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOTUyNTFlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvYmluZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1OTAgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgUGV0ZXIgRGltb3YgMjAwMQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2JpbmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IGJvb2wgPgotc3RydWN0IHJlc29sdmVfYXJnX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzCi0gICAgICAgICwgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCByZXNvbHZlX2FyZ19pbXBsPHRydWU+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMwotICAgICAgICAsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGlzX2JpbmRfdGVtcGxhdGU7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmcKLSAgICA6IHJlc29sdmVfYXJnX2ltcGw8IGlzX2JpbmRfdGVtcGxhdGU8VD46OnZhbHVlID4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgVCxVMSxVMixVMyxVNCxVNSA+Ci17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci1zdHJ1Y3QgcmVwbGFjZV91bm5hbWVkX2FyZ19pbXBsCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEFyZyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEFyZyBuZXh0OwotICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHJlcGxhY2VfdW5uYW1lZF9hcmdfaW1wbDwgYXJnPCAtMSA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgQXJnID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxBcmc+Ojp0eXBlIG5leHQ7Ci0gICAgICAgIHR5cGVkZWYgQXJnIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBULCB0eXBlbmFtZSBBcmcgPgotc3RydWN0IHJlcGxhY2VfdW5uYW1lZF9hcmcKLSAgICA6IHJlcGxhY2VfdW5uYW1lZF9hcmdfaW1wbDxUPjo6dGVtcGxhdGUgcmVzdWx0XzxBcmc+Ci17Ci19OwotCi10ZW1wbGF0ZTwgaW50IGFyaXR5XyA+IHN0cnVjdCBiaW5kX2Nob29zZXI7Ci0KLWF1eDo6bm9fdGFnIGlzX2JpbmRfaGVscGVyKC4uLik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IGF1eDo6bm9fdGFnIGlzX2JpbmRfaGVscGVyKHByb3RlY3Q8VD4qKTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1hdXg6Onllc190YWcgaXNfYmluZF9oZWxwZXIoYmluZDwgRixUMSxUMixUMyxUNCxUNSA+Kik7Ci0KLXRlbXBsYXRlPCBpbnQgTiA+Ci1hdXg6Onllc190YWcgaXNfYmluZF9oZWxwZXIoYXJnPE4+Kik7Ci0KLXRlbXBsYXRlPCBib29sIGlzX3JlZl8gID0gdHJ1ZSA+Ci1zdHJ1Y3QgaXNfYmluZF90ZW1wbGF0ZV9pbXBsCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlICA9IGZhbHNlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGlzX2JpbmRfdGVtcGxhdGVfaW1wbDxmYWxzZT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPQotICAgICAgICAgICAgICBzaXplb2YoYXV4Ojppc19iaW5kX2hlbHBlcihzdGF0aWNfY2FzdDxUKj4oMCkpKQotICAgICAgICAgICAgICAgID09IHNpemVvZihhdXg6Onllc190YWcpCi0gICAgICAgICAgICApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBpc19iaW5kX3RlbXBsYXRlCi0gICAgOiBpc19iaW5kX3RlbXBsYXRlX2ltcGw8IDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfcmVmZXJlbmNlX2ltcGw8VD46OnZhbHVlID4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFQ+Ci17Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGJpbmQwCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IEYsIG1wbDo6YXJnPDE+ID4gcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6OnR5cGUgYTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6Om5leHQgbjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMCxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICAvLy8KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAwPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1hdXg6Onllc190YWcKLWlzX2JpbmRfaGVscGVyKGJpbmQwPEY+Kik7Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoMSwgYmluZDApCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMSwgYmluZDApCi0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmluZF9jaG9vc2VyPDA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYmluZDA8Rj4gdHlwZTsKLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYmluZDEKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDEsbjEgPiByMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6dHlwZSBhMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6bmV4dCBuMjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGExLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1hdXg6Onllc190YWcKLWlzX2JpbmRfaGVscGVyKGJpbmQxPCBGLFQxID4qKTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygyLCBiaW5kMSkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygyLCBiaW5kMSkKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiaW5kX2Nob29zZXI8MT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBiaW5kMTwgRixUMSA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBiaW5kMgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMixuMiA+IHIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjp0eXBlIGEyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjpuZXh0IG4zOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMjwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotYXV4Ojp5ZXNfdGFnCi1pc19iaW5kX2hlbHBlcihiaW5kMjwgRixUMSxUMiA+Kik7Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoMywgYmluZDIpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMywgYmluZDIpCi0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmluZF9jaG9vc2VyPDI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYmluZDI8IEYsVDEsVDIgPiB0eXBlOwotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGJpbmQzCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IEYsIG1wbDo6YXJnPDE+ID4gcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6OnR5cGUgYTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6Om5leHQgbjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMCxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQxLG4xID4gcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6OnR5cGUgYTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6Om5leHQgbjI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQyLG4yID4gcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6OnR5cGUgYTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6Om5leHQgbjM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQzLG4zID4gcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6OnR5cGUgYTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6Om5leHQgbjQ7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICAvLy8KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAzPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUsIHR5cGVuYW1lIHQzOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLWF1eDo6eWVzX3RhZwotaXNfYmluZF9oZWxwZXIoYmluZDM8IEYsVDEsVDIsVDMgPiopOwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDQsIGJpbmQzKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDQsIGJpbmQzKQotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJpbmRfY2hvb3NlcjwzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGJpbmQzPCBGLFQxLFQyLFQzID4gdHlwZTsKLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYmluZDQKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDEsbjEgPiByMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6dHlwZSBhMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6bmV4dCBuMjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGExLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDIsbjIgPiByMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6dHlwZSBhMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6bmV4dCBuMzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDMsbjMgPiByMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6dHlwZSBhMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6bmV4dCBuNDsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDQsbjQgPiByNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByNDo6dHlwZSBhNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByNDo6bmV4dCBuNTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGE0LFUxLFUyLFUzLFU0LFU1ID4gdDQ7Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDQ8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDQ6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLWF1eDo6eWVzX3RhZwotaXNfYmluZF9oZWxwZXIoYmluZDQ8IEYsVDEsVDIsVDMsVDQgPiopOwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDUsIGJpbmQ0KQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDUsIGJpbmQ0KQotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJpbmRfY2hvb3Nlcjw0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4gdHlwZTsKLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGJpbmQ1Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IEYsIG1wbDo6YXJnPDE+ID4gcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6OnR5cGUgYTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6Om5leHQgbjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMCxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQxLG4xID4gcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6OnR5cGUgYTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6Om5leHQgbjI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQyLG4yID4gcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6OnR5cGUgYTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6Om5leHQgbjM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQzLG4zID4gcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6OnR5cGUgYTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6Om5leHQgbjQ7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQ0LG40ID4gcjQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjQ6OnR5cGUgYTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjQ6Om5leHQgbjU7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhNCxVMSxVMixVMyxVNCxVNSA+IHQ0OwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQ1LG41ID4gcjU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjU6OnR5cGUgYTU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjU6Om5leHQgbjY7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhNSxVMSxVMixVMyxVNCxVNSA+IHQ1OwotICAgICAgICAvLy8KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUsIHR5cGVuYW1lIHQzOjp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQ0Ojp0eXBlLCB0eXBlbmFtZSB0NTo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLWF1eDo6eWVzX3RhZwotaXNfYmluZF9oZWxwZXIoYmluZDU8IEYsVDEsVDIsVDMsVDQsVDUgPiopOwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDYsIGJpbmQ1KQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDYsIGJpbmQ1KQotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJpbmRfY2hvb3Nlcjw1PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGJpbmQ1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4gdHlwZTsKLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci1zdHJ1Y3QgaXNfYmluZF9hcmcKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gdHJ1ZSk7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaXNfYmluZF9hcmc8bmE+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlICA9IGZhbHNlKTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGJpbmRfY291bnRfYXJncwotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0KLSAgICAgICAgICBpc19iaW5kX2FyZzxUMT46OnZhbHVlICsgaXNfYmluZF9hcmc8VDI+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19iaW5kX2FyZzxUMz46OnZhbHVlICsgaXNfYmluZF9hcmc8VDQ+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19iaW5kX2FyZzxUNT46OnZhbHVlCi0gICAgICAgICk7Ci0KLX07Ci0KLX0KLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYmluZAotICAgIDogYXV4OjpiaW5kX2Nob29zZXI8Ci0gICAgICAgICAgYXV4OjpiaW5kX2NvdW50X2FyZ3M8IFQxLFQyLFQzLFQ0LFQ1ID46OnZhbHVlCi0gICAgICAgID46OnRlbXBsYXRlIHJlc3VsdF88IEYsVDEsVDIsVDMsVDQsVDUgPjo6dHlwZQotewotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKAotICAgICAgNgotICAgICwgYmluZAotICAgICkKLQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKAotICAgICAgNgotICAgICwgYmluZAotICAgICkKLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvYmluZF9md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9iaW5kX2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlhMDQ2ZWUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9iaW5kX2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9iaW5kX2Z3ZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hCi0gICAgPgotc3RydWN0IGJpbmQ7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBiaW5kMDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBiaW5kMTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYmluZDI7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBiaW5kMzsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBiaW5kNDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYmluZDU7Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvYml0YW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvYml0YW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjNhMmUwMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2JpdGFuZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vIENvcHlyaWdodCBKYWFwIFN1dGVyIDIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYml0YW5kLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgYml0YW5kX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBiaXRhbmRfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGJpdGFuZF9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGJpdGFuZF9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYml0YW5kX2ltcGw8IG5hLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBiaXRhbmRfaW1wbDwgaW50ZWdyYWxfY190YWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGJpdGFuZF90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgYml0YW5kXzI7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IGJpdGFuZF8KLQotICAgIDogaWZfPAotCi0gICAgICAgICAgaXNfbmE8TjM+Ci0gICAgICAgICwgYml0YW5kXzI8IE4xLE4yID4KLSAgICAgICAgLCBiaXRhbmRfPAotICAgICAgICAgICAgICBiaXRhbmRfMjwgTjEsTjIgPgotICAgICAgICAgICAgLCBOMywgTjQsIE41Ci0gICAgICAgICAgICA+Ci0gICAgICAgID46OnR5cGUKLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdGFuZF8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEKLSAgICAsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IGJpdGFuZF8yCi0gICAgOiBiaXRhbmRfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBiaXRhbmRfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGJpdGFuZF90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBiaXRhbmRfMiwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgYml0YW5kXykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYml0YW5kX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlCi0gICAgICAgICAgICAgICAgICAmIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvYml0b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9iaXRvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJlYzkyM2QuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9iaXRvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vIENvcHlyaWdodCBKYWFwIFN1dGVyIDIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYml0b3IuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBiaXRvcl9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgYml0b3JfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGJpdG9yX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgYml0b3JfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGJpdG9yX2ltcGw8IG5hLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBiaXRvcl9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYml0b3JfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGJpdG9yXzI7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IGJpdG9yXwotCi0gICAgOiBpZl88Ci0KLSAgICAgICAgICBpc19uYTxOMz4KLSAgICAgICAgLCBiaXRvcl8yPCBOMSxOMiA+Ci0gICAgICAgICwgYml0b3JfPAotICAgICAgICAgICAgICBiaXRvcl8yPCBOMSxOMiA+Ci0gICAgICAgICAgICAsIE4zLCBONCwgTjUKLSAgICAgICAgICAgID4KLSAgICAgICAgPjo6dHlwZQotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xCi0gICAgLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBiaXRvcl8yCi0gICAgOiBiaXRvcl9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGJpdG9yX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBiaXRvcl90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBiaXRvcl8yLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBiaXRvcl8pCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IGJpdG9yX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlCi0gICAgICAgICAgICAgICAgICB8IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvYml0eG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvYml0eG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGQ0ODcxOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2JpdHhvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vIENvcHlyaWdodCBKYWFwIFN1dGVyIDIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYml0eG9yLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgYml0eG9yX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBiaXR4b3JfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGJpdHhvcl9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGJpdHhvcl9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYml0eG9yX2ltcGw8IG5hLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBiaXR4b3JfaW1wbDwgaW50ZWdyYWxfY190YWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGJpdHhvcl90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgYml0eG9yXzI7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IGJpdHhvcl8KLQotICAgIDogaWZfPAotCi0gICAgICAgICAgaXNfbmE8TjM+Ci0gICAgICAgICwgYml0eG9yXzI8IE4xLE4yID4KLSAgICAgICAgLCBiaXR4b3JfPAotICAgICAgICAgICAgICBiaXR4b3JfMjwgTjEsTjIgPgotICAgICAgICAgICAgLCBOMywgTjQsIE41Ci0gICAgICAgICAgICA+Ci0gICAgICAgID46OnR5cGUKLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdHhvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEKLSAgICAsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IGJpdHhvcl8yCi0gICAgOiBiaXR4b3JfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBiaXR4b3JfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGJpdHhvcl90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBiaXR4b3JfMiwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgYml0eG9yXykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYml0eG9yX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlCi0gICAgICAgICAgICAgICAgICBeIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvZGVxdWUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9kZXF1ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVkOTdkODIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9kZXF1ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NTYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvZGVxdWUuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IGludCBOID4KLXN0cnVjdCBkZXF1ZV9jaG9vc2VyOwotCi19Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3NlcjwwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjA8Ci0gICAgICAgICAgICAgCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3NlcjwxPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE8Ci0gICAgICAgICAgICAgIFQwCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3NlcjwyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjI8Ci0gICAgICAgICAgICAgIFQwLCBUMQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGRlcXVlX2Nob29zZXI8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IzPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3Nlcjw0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjQ8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3Nlcjw1PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjU8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGRlcXVlX2Nob29zZXI8Nj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I2PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3Nlcjw3PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcjc8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3Nlcjw4PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcjg8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGRlcXVlX2Nob29zZXI8OT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I5PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3NlcjwxMD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkZXF1ZV9jaG9vc2VyPDExPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjExPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3NlcjwxMj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMjwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3NlcjwxMz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMzwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkZXF1ZV9jaG9vc2VyPDE0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE0PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3NlcjwxNT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3NlcjwxNj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNjwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkZXF1ZV9jaG9vc2VyPDE3PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE3PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3NlcjwxOD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxODwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGVxdWVfY2hvb3NlcjwxOT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxOTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkZXF1ZV9jaG9vc2VyPDIwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjIwPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci1zdHJ1Y3QgaXNfZGVxdWVfYXJnCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlICA9IHRydWUpOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGlzX2RlcXVlX2FyZzxuYT4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gZmFsc2UpOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUKLSAgICAsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAKLSAgICAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1Ci0gICAgLCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMAotICAgID4KLXN0cnVjdCBkZXF1ZV9jb3VudF9hcmdzCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPQotICAgICAgICAgIGlzX2RlcXVlX2FyZzxUMT46OnZhbHVlICsgaXNfZGVxdWVfYXJnPFQyPjo6dmFsdWUgCi0gICAgICAgICsgaXNfZGVxdWVfYXJnPFQzPjo6dmFsdWUgKyBpc19kZXF1ZV9hcmc8VDQ+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19kZXF1ZV9hcmc8VDU+Ojp2YWx1ZSArIGlzX2RlcXVlX2FyZzxUNj46OnZhbHVlIAotICAgICAgICArIGlzX2RlcXVlX2FyZzxUNz46OnZhbHVlICsgaXNfZGVxdWVfYXJnPFQ4Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfZGVxdWVfYXJnPFQ5Pjo6dmFsdWUgKyBpc19kZXF1ZV9hcmc8VDEwPjo6dmFsdWUgCi0gICAgICAgICsgaXNfZGVxdWVfYXJnPFQxMT46OnZhbHVlICsgaXNfZGVxdWVfYXJnPFQxMj46OnZhbHVlIAotICAgICAgICArIGlzX2RlcXVlX2FyZzxUMTM+Ojp2YWx1ZSArIGlzX2RlcXVlX2FyZzxUMTQ+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19kZXF1ZV9hcmc8VDE1Pjo6dmFsdWUgKyBpc19kZXF1ZV9hcmc8VDE2Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfZGVxdWVfYXJnPFQxNz46OnZhbHVlICsgaXNfZGVxdWVfYXJnPFQxOD46OnZhbHVlIAotICAgICAgICArIGlzX2RlcXVlX2FyZzxUMTk+Ojp2YWx1ZSArIGlzX2RlcXVlX2FyZzxUMjA+Ojp2YWx1ZQotICAgICAgICApOwotCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICA+Ci1zdHJ1Y3QgZGVxdWVfaW1wbAotewotICAgIHR5cGVkZWYgYXV4OjpkZXF1ZV9jb3VudF9hcmdzPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPiBhcmdfbnVtXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpkZXF1ZV9jaG9vc2VyPCBhcmdfbnVtXzo6dmFsdWUgPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCA9IG5hLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hLCB0eXBlbmFtZSBUNiA9IG5hLCB0eXBlbmFtZSBUNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUOCA9IG5hLCB0eXBlbmFtZSBUOSA9IG5hLCB0eXBlbmFtZSBUMTAgPSBuYSwgdHlwZW5hbWUgVDExID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxMiA9IG5hLCB0eXBlbmFtZSBUMTMgPSBuYSwgdHlwZW5hbWUgVDE0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxNSA9IG5hLCB0eXBlbmFtZSBUMTYgPSBuYSwgdHlwZW5hbWUgVDE3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxOCA9IG5hLCB0eXBlbmFtZSBUMTkgPSBuYQotICAgID4KLXN0cnVjdCBkZXF1ZQotICAgIDogYXV4OjpkZXF1ZV9pbXBsPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPjo6dHlwZQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpkZXF1ZV9pbXBsPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9kaXZpZGVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvZGl2aWRlcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRhOThiYTAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9kaXZpZGVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9kaXZpZGVzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgZGl2aWRlc19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgZGl2aWRlc19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgZGl2aWRlc19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGRpdmlkZXNfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGRpdmlkZXNfaW1wbDwgbmEsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGRpdmlkZXNfaW1wbDwgaW50ZWdyYWxfY190YWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGRpdmlkZXNfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGRpdmlkZXMyOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBkaXZpZGVzCi0KLSAgICA6IGlmXzwKLQotICAgICAgICAgIGlzX25hPE4zPgotICAgICAgICAsIGRpdmlkZXMyPCBOMSxOMiA+Ci0gICAgICAgICwgZGl2aWRlczwKLSAgICAgICAgICAgICAgZGl2aWRlczI8IE4xLE4yID4KLSAgICAgICAgICAgICwgTjMsIE40LCBONQotICAgICAgICAgICAgPgotICAgICAgICA+Ojp0eXBlCi0KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBkaXZpZGVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xCi0gICAgLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBkaXZpZGVzMgotICAgIDogZGl2aWRlc19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGRpdmlkZXNfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGRpdmlkZXNfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgZGl2aWRlczIsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIGRpdmlkZXMpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IGRpdmlkZXNfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgIC8gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9lcXVhbF90by5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2VxdWFsX3RvLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTFlNmQxMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2VxdWFsX3RvLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2VxdWFsX3RvLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgZXF1YWxfdG9faW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGVxdWFsX3RvX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBlcXVhbF90b19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGVxdWFsX3RvX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBlcXVhbF90b19pbXBsPCBuYSxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgZXF1YWxfdG9faW1wbDwgaW50ZWdyYWxfY190YWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGVxdWFsX3RvX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBlcXVhbF90bwotCi0gICAgOiBlcXVhbF90b19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGVxdWFsX3RvX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBlcXVhbF90b190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBlcXVhbF90bywgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgZXF1YWxfdG8pCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZXF1YWxfdG9faW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGJvb2xfPCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlICA9PSBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSApID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2ZvbGRfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2ZvbGRfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM0Y2FjZTQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9mb2xkX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjQ1ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vZm9sZF9pbXBsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsOwotCi10ZW1wbGF0ZTwgaW50IE4gPgotc3RydWN0IGZvbGRfY2h1bms7Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGZvbGRfY2h1bms8MD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHN0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMCBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgZm9sZF9jaHVuazwxPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgc3RhdGUxIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIxIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBmb2xkX2NodW5rPDI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBzdGF0ZTIgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjIgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGZvbGRfY2h1bms8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIyPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIHN0YXRlMyBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMyBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgZm9sZF9jaHVuazw0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMywgdHlwZW5hbWUgZGVyZWY8aXRlcjM+Ojp0eXBlID46OnR5cGUgc3RhdGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgc3RhdGU0IHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXI0IGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgaW50IE4gPgotc3RydWN0IGZvbGRfY2h1bmsKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZm9sZF9pbXBsPAotICAgICAgICAgICAgICA0Ci0gICAgICAgICAgICAsIEZpcnN0Ci0gICAgICAgICAgICAsIExhc3QKLSAgICAgICAgICAgICwgU3RhdGUKLSAgICAgICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgICAgICA+IGNodW5rXzsKLQotICAgICAgICB0eXBlZGVmIGZvbGRfaW1wbDwKLSAgICAgICAgICAgICAgKCAoTiAtIDQpIDwgMCA/IDAgOiBOIC0gNCApCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGNodW5rXzo6aXRlcmF0b3IKLSAgICAgICAgICAgICwgTGFzdAotICAgICAgICAgICAgLCB0eXBlbmFtZSBjaHVua186OnN0YXRlCi0gICAgICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICAgICAgPiByZXNfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6c3RhdGUgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9zdGVwOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgPgotc3RydWN0IGZvbGRfbnVsbF9zdGVwCi17Ci0gICAgdHlwZWRlZiBMYXN0IGl0ZXJhdG9yOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZm9sZF9jaHVuazwgLTEgPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGlzX3NhbWU8IEZpcnN0LExhc3QgPjo6dHlwZQotICAgICAgICAgICAgLCBmb2xkX251bGxfc3RlcDwgTGFzdCxTdGF0ZSA+Ci0gICAgICAgICAgICAsIGZvbGRfc3RlcDwgRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotICAgICAgICAgICAgPjo6dHlwZSByZXNfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6c3RhdGUgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9zdGVwCi17Ci0gICAgdHlwZWRlZiBmb2xkX2NodW5rPCAtMSA+Ojp0ZW1wbGF0ZSByZXN1bHRfPAotICAgICAgICAgIHR5cGVuYW1lIG1wbDo6bmV4dDxGaXJzdD46OnR5cGUKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgYXBwbHkyPEZvcndhcmRPcCxTdGF0ZSwgdHlwZW5hbWUgZGVyZWY8Rmlyc3Q+Ojp0eXBlPjo6dHlwZQotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IGNodW5rXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgY2h1bmtfOjpzdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNodW5rXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGwKLSAgICA6IGZvbGRfY2h1bms8Tj4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci19OwotCi19fX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvZnVsbF9sYW1iZGEuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9mdWxsX2xhbWJkYS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkYTk3MWUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9mdWxsX2xhbWJkYS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NTQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9mdWxsX2xhbWJkYS5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgYm9vbCBDMSA9IGZhbHNlLCBib29sIEMyID0gZmFsc2UsIGJvb2wgQzMgPSBmYWxzZSwgYm9vbCBDNCA9IGZhbHNlCi0gICAgLCBib29sIEM1ID0gZmFsc2UKLSAgICA+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+IGwyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlOwotICAgIHR5cGVkZWYgYXV4OjpsZV9yZXN1bHQyPGlzX2xlLCBUYWcyLCBtcGw6OmxhbWJkYSwgbDEsIGwyPiBsZV9yZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6cmVzdWx0XyByZXN1bHRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGVfcmVzdWx0Xzo6dHlwZSB0eXBlOwotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDIsIGxhbWJkYSkKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9ncmVhdGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvZ3JlYXRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2ZWI2MWUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9ncmVhdGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2dyZWF0ZXIuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBncmVhdGVyX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBncmVhdGVyX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBncmVhdGVyX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgZ3JlYXRlcl9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgZ3JlYXRlcl9pbXBsPCBuYSxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgZ3JlYXRlcl9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgZ3JlYXRlcl90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgZ3JlYXRlcgotCi0gICAgOiBncmVhdGVyX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgZ3JlYXRlcl90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgZ3JlYXRlcl90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBncmVhdGVyLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBncmVhdGVyKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGdyZWF0ZXJfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGJvb2xfPCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlID4gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUgKSA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9ncmVhdGVyX2VxdWFsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvZ3JlYXRlcl9lcXVhbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVhYjQ0NDEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9ncmVhdGVyX2VxdWFsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2dyZWF0ZXJfZXF1YWwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBncmVhdGVyX2VxdWFsX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBncmVhdGVyX2VxdWFsX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBncmVhdGVyX2VxdWFsX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgZ3JlYXRlcl9lcXVhbF9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgZ3JlYXRlcl9lcXVhbF9pbXBsPCBuYSxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgZ3JlYXRlcl9lcXVhbF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgZ3JlYXRlcl9lcXVhbF90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgZ3JlYXRlcl9lcXVhbAotCi0gICAgOiBncmVhdGVyX2VxdWFsX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgZ3JlYXRlcl9lcXVhbF90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgZ3JlYXRlcl9lcXVhbF90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBncmVhdGVyX2VxdWFsLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBncmVhdGVyX2VxdWFsKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGdyZWF0ZXJfZXF1YWxfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGJvb2xfPCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlID49IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlICkgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvaW5oZXJpdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2luaGVyaXQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3Y2IwYTQ4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvaW5oZXJpdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNjYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvaW5oZXJpdC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBib29sIEMxLCBib29sIEMyID4KLXN0cnVjdCBpbmhlcml0Ml9pbXBsCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIERlcml2ZWQsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiA+IHN0cnVjdCByZXN1bHRfCi0gICAgICAgIDogVDEsIFQyCi0gICAgewotICAgICAgICB0eXBlZGVmIERlcml2ZWQgdHlwZV87Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpbmhlcml0Ml9pbXBsPCBmYWxzZSx0cnVlID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRGVyaXZlZCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyID4gc3RydWN0IHJlc3VsdF8KLSAgICAgICAgOiBUMQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBUMSB0eXBlXzsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGluaGVyaXQyX2ltcGw8IHRydWUsZmFsc2UgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBEZXJpdmVkLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIgPiBzdHJ1Y3QgcmVzdWx0XwotICAgICAgICA6IFQyCi0gICAgewotICAgICAgICB0eXBlZGVmIFQyIHR5cGVfOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaW5oZXJpdDJfaW1wbDwgdHJ1ZSx0cnVlID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRGVyaXZlZCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVDEgdHlwZV87Ci0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQyKQotICAgID4KLXN0cnVjdCBpbmhlcml0MgotICAgIDogYXV4Ojppbmhlcml0Ml9pbXBsPAotICAgICAgICAgIGlzX2VtcHR5X2Jhc2U8VDE+Ojp2YWx1ZQotICAgICAgICAsIGlzX2VtcHR5X2Jhc2U8VDI+Ojp2YWx1ZQotICAgICAgICA+Ojp0ZW1wbGF0ZSByZXN1bHRfPCBpbmhlcml0MjwgVDEsVDIgPixUMSwgVDIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgaW5oZXJpdDI6OnR5cGVfIHR5cGU7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBpbmhlcml0MiwgKFQxLCBUMikpCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoMiwgaW5oZXJpdDIpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgID4KLXN0cnVjdCBpbmhlcml0MwotICAgIDogaW5oZXJpdDI8Ci0gICAgICAgICAgdHlwZW5hbWUgaW5oZXJpdDI8Ci0gICAgICAgICAgICAgIFQxLCBUMgotICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAsIFQzCi0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDMKLSAgICAgICAgLCBpbmhlcml0MwotICAgICAgICAsICggVDEsIFQyLCBUMykKLSAgICAgICAgKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDMsIGluaGVyaXQzKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEsIHR5cGVuYW1lIFQ0ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgaW5oZXJpdDQKLSAgICA6IGluaGVyaXQyPAotICAgICAgICAgIHR5cGVuYW1lIGluaGVyaXQzPAotICAgICAgICAgICAgICBUMSwgVDIsIFQzCi0gICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICwgVDQKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNAotICAgICAgICAsIGluaGVyaXQ0Ci0gICAgICAgICwgKCBUMSwgVDIsIFQzLCBUNCkKLSAgICAgICAgKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDQsIGluaGVyaXQ0KQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEsIHR5cGVuYW1lIFQ0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ1ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgaW5oZXJpdDUKLSAgICA6IGluaGVyaXQyPAotICAgICAgICAgIHR5cGVuYW1lIGluaGVyaXQ0PAotICAgICAgICAgICAgICBUMSwgVDIsIFQzLCBUNAotICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAsIFQ1Ci0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBpbmhlcml0NQotICAgICAgICAsICggVDEsIFQyLCBUMywgVDQsIFQ1KQotICAgICAgICApCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoNSwgaW5oZXJpdDUpCi0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEgPSBlbXB0eV9iYXNlLCB0eXBlbmFtZSBUMiA9IGVtcHR5X2Jhc2UKLSAgICAsIHR5cGVuYW1lIFQzID0gZW1wdHlfYmFzZSwgdHlwZW5hbWUgVDQgPSBlbXB0eV9iYXNlCi0gICAgLCB0eXBlbmFtZSBUNSA9IGVtcHR5X2Jhc2UKLSAgICA+Ci1zdHJ1Y3QgaW5oZXJpdAotICAgIDogaW5oZXJpdDU8IFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpbmhlcml0PCBuYSxuYSxuYSxuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0KLSAgICAgICAgICB0eXBlbmFtZSBUMSA9IGVtcHR5X2Jhc2UsIHR5cGVuYW1lIFQyID0gZW1wdHlfYmFzZQotICAgICAgICAsIHR5cGVuYW1lIFQzID0gZW1wdHlfYmFzZSwgdHlwZW5hbWUgVDQgPSBlbXB0eV9iYXNlCi0gICAgICAgICwgdHlwZW5hbWUgVDUgPSBlbXB0eV9iYXNlCi0KLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgICAgICA6IGluaGVyaXQ8IFQxLFQyLFQzLFQ0LFQ1ID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQ19MQU1CREEoNSwgaW5oZXJpdCkKLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQ19BUklUWSg1LCBpbmhlcml0KQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDX1RFTVBMQVRFX0FSSVRZKDUsIDUsIGluaGVyaXQpCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2l0ZXJfZm9sZF9pZl9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvaXRlcl9mb2xkX2lmX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNzRiZDgzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvaXRlcl9mb2xkX2lmX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTMzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLyBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwMS0yMDAyCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vaXRlcl9mb2xkX2lmX2ltcGwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IsIHR5cGVuYW1lIFN0YXRlID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfbnVsbF9zdGVwCi17Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8IGJvb2wgPgotc3RydWN0IGl0ZXJfZm9sZF9pZl9zdGVwX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgU3RhdGVPcAotICAgICAgICAsIHR5cGVuYW1lIEl0ZXJhdG9yT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgU3RhdGVPcCxTdGF0ZSxJdGVyYXRvciA+Ojp0eXBlIHN0YXRlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEl0ZXJhdG9yT3A6OnR5cGUgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfc3RlcF9pbXBsPGZhbHNlPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZU9wCi0gICAgICAgICwgdHlwZW5hbWUgSXRlcmF0b3JPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXRlcmF0b3IKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAsIHR5cGVuYW1lIFByZWRpY2F0ZQotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IFByZWRpY2F0ZSxTdGF0ZSxJdGVyYXRvciA+Ojp0eXBlIG5vdF9sYXN0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcl9mb2xkX2lmX3N0ZXBfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChub3RfbGFzdCk6OnZhbHVlCi0gICAgICAgID46OnRlbXBsYXRlIHJlc3VsdF88IEl0ZXJhdG9yLFN0YXRlLEZvcndhcmRPcCwgbXBsOjpuZXh0PEl0ZXJhdG9yPiA+IGltcGxfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBpbXBsXzo6c3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpbXBsXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgUHJlZGljYXRlCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pZl9iYWNrd2FyZF9zdGVwCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IFByZWRpY2F0ZSxTdGF0ZSxJdGVyYXRvciA+Ojp0eXBlIG5vdF9sYXN0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcl9mb2xkX2lmX3N0ZXBfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChub3RfbGFzdCk6OnZhbHVlCi0gICAgICAgID46OnRlbXBsYXRlIHJlc3VsdF88IEl0ZXJhdG9yLFN0YXRlLEJhY2t3YXJkT3AsIGlkZW50aXR5PEl0ZXJhdG9yPiA+IGltcGxfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBpbXBsXzo6c3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpbXBsXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkUHJlZGljYXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZFByZWRpY2F0ZQotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfaW1wbAotewotIHByaXZhdGU6Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfbnVsbF9zdGVwPCBJdGVyYXRvcixTdGF0ZSA+IGZvcndhcmRfc3RlcDA7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAwOjppdGVyYXRvciwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMDo6c3RhdGUsIEZvcndhcmRPcCwgRm9yd2FyZFByZWRpY2F0ZSA+IGZvcndhcmRfc3RlcDE7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAxOjppdGVyYXRvciwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMTo6c3RhdGUsIEZvcndhcmRPcCwgRm9yd2FyZFByZWRpY2F0ZSA+IGZvcndhcmRfc3RlcDI7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAyOjppdGVyYXRvciwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMjo6c3RhdGUsIEZvcndhcmRPcCwgRm9yd2FyZFByZWRpY2F0ZSA+IGZvcndhcmRfc3RlcDM7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAzOjppdGVyYXRvciwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMzo6c3RhdGUsIEZvcndhcmRPcCwgRm9yd2FyZFByZWRpY2F0ZSA+IGZvcndhcmRfc3RlcDQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICB0eXBlbmFtZSBmb3J3YXJkX3N0ZXA0Ojpub3RfbGFzdAotICAgICAgICAsIGl0ZXJfZm9sZF9pZl9pbXBsPAotICAgICAgICAgICAgICB0eXBlbmFtZSBmb3J3YXJkX3N0ZXA0OjppdGVyYXRvcgotICAgICAgICAgICAgLCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXA0OjpzdGF0ZQotICAgICAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgICAgICwgRm9yd2FyZFByZWRpY2F0ZQotICAgICAgICAgICAgLCBCYWNrd2FyZE9wCi0gICAgICAgICAgICAsIEJhY2t3YXJkUHJlZGljYXRlCi0gICAgICAgICAgICA+Ci0gICAgICAgICwgaXRlcl9mb2xkX2lmX251bGxfc3RlcDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgZm9yd2FyZF9zdGVwNDo6aXRlcmF0b3IKLSAgICAgICAgICAgICwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwNDo6c3RhdGUKLSAgICAgICAgICAgID4KLSAgICAgICAgPjo6dHlwZSBiYWNrd2FyZF9zdGVwNDsKLQotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2JhY2t3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDM6Oml0ZXJhdG9yLCB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwNDo6c3RhdGUsIEJhY2t3YXJkT3AsIEJhY2t3YXJkUHJlZGljYXRlID4gYmFja3dhcmRfc3RlcDM7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfYmFja3dhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMjo6aXRlcmF0b3IsIHR5cGVuYW1lIGJhY2t3YXJkX3N0ZXAzOjpzdGF0ZSwgQmFja3dhcmRPcCwgQmFja3dhcmRQcmVkaWNhdGUgPiBiYWNrd2FyZF9zdGVwMjsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9iYWNrd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAxOjppdGVyYXRvciwgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDI6OnN0YXRlLCBCYWNrd2FyZE9wLCBCYWNrd2FyZFByZWRpY2F0ZSA+IGJhY2t3YXJkX3N0ZXAxOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2JhY2t3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDA6Oml0ZXJhdG9yLCB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwMTo6c3RhdGUsIEJhY2t3YXJkT3AsIEJhY2t3YXJkUHJlZGljYXRlID4gYmFja3dhcmRfc3RlcDA7Ci0gICAgCi0KLSBwdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwMDo6c3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwNDo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi19fX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvaXRlcl9mb2xkX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9pdGVyX2ZvbGRfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUxYTQ1ZmUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9pdGVyX2ZvbGRfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNDUgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9pdGVyX2ZvbGRfaW1wbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgaW50IE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsOwotCi10ZW1wbGF0ZTwgaW50IE4gPgotc3RydWN0IGl0ZXJfZm9sZF9jaHVuazsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgaXRlcl9mb2xkX2NodW5rPDA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICAgICAgdHlwZWRlZiBzdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjAgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGl0ZXJfZm9sZF9jaHVuazwxPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUwLGl0ZXIwID46OnR5cGUgc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgc3RhdGUxIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIxIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBpdGVyX2ZvbGRfY2h1bms8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMCxpdGVyMCA+Ojp0eXBlIHN0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMSxpdGVyMSA+Ojp0eXBlIHN0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIHN0YXRlMiBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMiBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgaXRlcl9mb2xkX2NodW5rPDM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTAsaXRlcjAgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTEsaXRlcjEgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTIsaXRlcjIgPjo6dHlwZSBzdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBzdGF0ZTMgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjMgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGl0ZXJfZm9sZF9jaHVuazw0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUwLGl0ZXIwID46OnR5cGUgc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUxLGl0ZXIxID46OnR5cGUgc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUyLGl0ZXIyID46OnR5cGUgc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUzLGl0ZXIzID46OnR5cGUgc3RhdGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgc3RhdGU0IHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXI0IGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgaW50IE4gPgotc3RydWN0IGl0ZXJfZm9sZF9jaHVuawotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBpdGVyX2ZvbGRfaW1wbDwKLSAgICAgICAgICAgICAgNAotICAgICAgICAgICAgLCBGaXJzdAotICAgICAgICAgICAgLCBMYXN0Ci0gICAgICAgICAgICAsIFN0YXRlCi0gICAgICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICAgICAgPiBjaHVua187Ci0KLSAgICAgICAgdHlwZWRlZiBpdGVyX2ZvbGRfaW1wbDwKLSAgICAgICAgICAgICAgKCAoTiAtIDQpIDwgMCA/IDAgOiBOIC0gNCApCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGNodW5rXzo6aXRlcmF0b3IKLSAgICAgICAgICAgICwgTGFzdAotICAgICAgICAgICAgLCB0eXBlbmFtZSBjaHVua186OnN0YXRlCi0gICAgICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICAgICAgPiByZXNfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6c3RhdGUgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX3N0ZXA7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX251bGxfc3RlcAotewotICAgIHR5cGVkZWYgTGFzdCBpdGVyYXRvcjsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGl0ZXJfZm9sZF9jaHVuazwgLTEgPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGlzX3NhbWU8IEZpcnN0LExhc3QgPjo6dHlwZQotICAgICAgICAgICAgLCBpdGVyX2ZvbGRfbnVsbF9zdGVwPCBMYXN0LFN0YXRlID4KLSAgICAgICAgICAgICwgaXRlcl9mb2xkX3N0ZXA8IEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLSAgICAgICAgICAgID46OnR5cGUgcmVzXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186OnN0YXRlIHN0YXRlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186Oml0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9zdGVwCi17Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfY2h1bms8IC0xID46OnRlbXBsYXRlIHJlc3VsdF88Ci0gICAgICAgICAgdHlwZW5hbWUgbXBsOjpuZXh0PEZpcnN0Pjo6dHlwZQotICAgICAgICAsIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxTdGF0ZSxGaXJzdCA+Ojp0eXBlCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gY2h1bmtfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBjaHVua186OnN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgY2h1bmtfOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgaW50IE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsCi0gICAgOiBpdGVyX2ZvbGRfY2h1bms8Tj4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci19OwotCi19fX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvbGFtYmRhX25vX2N0cHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9sYW1iZGFfbm9fY3Rwcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ1ZjVmNmIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9sYW1iZGFfbm9fY3Rwcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMjkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfbm9fY3Rwcy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgYm9vbCBDMSA9IGZhbHNlLCBib29sIEMyID0gZmFsc2UsIGJvb2wgQzMgPSBmYWxzZSwgYm9vbCBDNCA9IGZhbHNlCi0gICAgLCBib29sIEM1ID0gZmFsc2UKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhX29yCi0gICAgOiB0cnVlXwotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxhbWJkYV9vcjwgZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UgPgotICAgIDogZmFsc2VfCi17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgQXJpdHkgPiBzdHJ1Y3QgbGFtYmRhX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgICAgICB0eXBlZGVmIGlzX3BsYWNlaG9sZGVyPFQ+IGlzX2xlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsYW1iZGFfaW1wbDwgaW50XzwxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMSwgVGFnLCBmYWxzZV8gPiBsMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgICAgICB0eXBlZGVmIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTEpOjp2YWx1ZQotICAgICAgICAgICAgPiBpc19sZTsKLQotICAgICAgICB0eXBlZGVmIGJpbmQxPAotICAgICAgICAgICAgICB0eXBlbmFtZSBGOjpyZWJpbmQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDE6OnR5cGUKLSAgICAgICAgICAgID4gYmluZF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIGlzX2xlCi0gICAgICAgICAgICAsIGlmXzwgUHJvdGVjdCwgbXBsOjpwcm90ZWN0PGJpbmRfPiwgYmluZF8gPgotICAgICAgICAgICAgLCBpZGVudGl0eTxGPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxhbWJkYV9pbXBsPCBpbnRfPDI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcxLCBUYWcsIGZhbHNlXyA+IGwxOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMiwgVGFnLCBmYWxzZV8gPiBsMjsKLSAgICAgICAgCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTEpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUyKTo6dmFsdWUKLSAgICAgICAgICAgID4gaXNfbGU7Ci0KLSAgICAgICAgdHlwZWRlZiBiaW5kMjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgRjo6cmViaW5kCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGwxOjp0eXBlLCB0eXBlbmFtZSBsMjo6dHlwZQotICAgICAgICAgICAgPiBiaW5kXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgaXNfbGUKLSAgICAgICAgICAgICwgaWZfPCBQcm90ZWN0LCBtcGw6OnByb3RlY3Q8YmluZF8+LCBiaW5kXyA+Ci0gICAgICAgICAgICAsIGlkZW50aXR5PEY+Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGVfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHlwZV86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGFtYmRhX2ltcGw8IGludF88Mz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFByb3RlY3QgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzEsIFRhZywgZmFsc2VfID4gbDE7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcyLCBUYWcsIGZhbHNlXyA+IGwyOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMywgVGFnLCBmYWxzZV8gPiBsMzsKLSAgICAgICAgCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwzOjppc19sZSBpc19sZTM7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMSk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTIpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUzKTo6dmFsdWUKLSAgICAgICAgICAgID4gaXNfbGU7Ci0KLSAgICAgICAgdHlwZWRlZiBiaW5kMzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgRjo6cmViaW5kCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGwxOjp0eXBlLCB0eXBlbmFtZSBsMjo6dHlwZSwgdHlwZW5hbWUgbDM6OnR5cGUKLSAgICAgICAgICAgID4gYmluZF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIGlzX2xlCi0gICAgICAgICAgICAsIGlmXzwgUHJvdGVjdCwgbXBsOjpwcm90ZWN0PGJpbmRfPiwgYmluZF8gPgotICAgICAgICAgICAgLCBpZGVudGl0eTxGPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxhbWJkYV9pbXBsPCBpbnRfPDQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcxLCBUYWcsIGZhbHNlXyA+IGwxOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMiwgVGFnLCBmYWxzZV8gPiBsMjsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzMsIFRhZywgZmFsc2VfID4gbDM7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmc0LCBUYWcsIGZhbHNlXyA+IGw0OwotICAgICAgICAKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDM6OmlzX2xlIGlzX2xlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsNDo6aXNfbGUgaXNfbGU0OwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTEpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUyKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMyk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTQpOjp2YWx1ZQotICAgICAgICAgICAgPiBpc19sZTsKLQotICAgICAgICB0eXBlZGVmIGJpbmQ0PAotICAgICAgICAgICAgICB0eXBlbmFtZSBGOjpyZWJpbmQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDE6OnR5cGUsIHR5cGVuYW1lIGwyOjp0eXBlLCB0eXBlbmFtZSBsMzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBsNDo6dHlwZQotICAgICAgICAgICAgPiBiaW5kXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgaXNfbGUKLSAgICAgICAgICAgICwgaWZfPCBQcm90ZWN0LCBtcGw6OnByb3RlY3Q8YmluZF8+LCBiaW5kXyA+Ci0gICAgICAgICAgICAsIGlkZW50aXR5PEY+Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGVfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHlwZV86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGFtYmRhX2ltcGw8IGludF88NT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFByb3RlY3QgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzEsIFRhZywgZmFsc2VfID4gbDE7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcyLCBUYWcsIGZhbHNlXyA+IGwyOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMywgVGFnLCBmYWxzZV8gPiBsMzsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzQsIFRhZywgZmFsc2VfID4gbDQ7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmc1LCBUYWcsIGZhbHNlXyA+IGw1OwotICAgICAgICAKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDM6OmlzX2xlIGlzX2xlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsNDo6aXNfbGUgaXNfbGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGw1Ojppc19sZSBpc19sZTU7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMSk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTIpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUzKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlNCk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTUpOjp2YWx1ZQotICAgICAgICAgICAgPiBpc19sZTsKLQotICAgICAgICB0eXBlZGVmIGJpbmQ1PAotICAgICAgICAgICAgICB0eXBlbmFtZSBGOjpyZWJpbmQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDE6OnR5cGUsIHR5cGVuYW1lIGwyOjp0eXBlLCB0eXBlbmFtZSBsMzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBsNDo6dHlwZSwgdHlwZW5hbWUgbDU6OnR5cGUKLSAgICAgICAgICAgID4gYmluZF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIGlzX2xlCi0gICAgICAgICAgICAsIGlmXzwgUHJvdGVjdCwgbXBsOjpwcm90ZWN0PGJpbmRfPiwgYmluZF8gPgotICAgICAgICAgICAgLCBpZGVudGl0eTxGPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgICwgdHlwZW5hbWUgUHJvdGVjdAotICAgID4KLXN0cnVjdCBsYW1iZGEKLXsKLSAgICAvLy8gTWV0YWZ1bmN0aW9uIGZvcndhcmRpbmcgY29uZnVzZXMgTVNWQyA2LngKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dGVtcGxhdGVfYXJpdHk8VD46OnR5cGUgYXJpdHlfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsYW1iZGFfaW1wbDxhcml0eV8+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgVCxUYWcsUHJvdGVjdCA+IGxfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsXzo6dHlwZSB0eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbF86OmlzX2xlIGlzX2xlOwotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMywgbGFtYmRhLCAoVCwgVGFnLCBQcm90ZWN0KSkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMSwgMywgbGFtYmRhKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICA+Ci1zdHJ1Y3QgaXNfbGFtYmRhX2V4cHJlc3Npb24KLSAgICA6IGxhbWJkYTxUPjo6aXNfbGUKLXsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvbGVzcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2xlc3MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYmU4NjA3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvbGVzcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9sZXNzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgbGVzc19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgbGVzc19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgbGVzc19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGxlc3NfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxlc3NfaW1wbDwgbmEsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxlc3NfaW1wbDwgaW50ZWdyYWxfY190YWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGxlc3NfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGxlc3MKLQotICAgIDogbGVzc19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGxlc3NfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGxlc3NfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgbGVzcywgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgbGVzcykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsZXNzX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBib29sXzwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSA+IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlICkgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvbGVzc19lcXVhbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2xlc3NfZXF1YWwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzN2IxOWFhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvbGVzc19lcXVhbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9sZXNzX2VxdWFsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgbGVzc19lcXVhbF9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgbGVzc19lcXVhbF9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgbGVzc19lcXVhbF9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGxlc3NfZXF1YWxfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxlc3NfZXF1YWxfaW1wbDwgbmEsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxlc3NfZXF1YWxfaW1wbDwgaW50ZWdyYWxfY190YWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGxlc3NfZXF1YWxfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGxlc3NfZXF1YWwKLQotICAgIDogbGVzc19lcXVhbF9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGxlc3NfZXF1YWxfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGxlc3NfZXF1YWxfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgbGVzc19lcXVhbCwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgbGVzc19lcXVhbCkKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsZXNzX2VxdWFsX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBib29sXzwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSA8PSBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSApID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2xpc3QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9saXN0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmIxOWU2MC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL2xpc3QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTU2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2xpc3QuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IGludCBOID4KLXN0cnVjdCBsaXN0X2Nob29zZXI7Ci0KLX0KLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8MD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBsaXN0MDwKLSAgICAgICAgICAgICAKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8MT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTwKLSAgICAgICAgICAgICAgVDAKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MjwKLSAgICAgICAgICAgICAgVDAsIFQxCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jaG9vc2VyPDM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDM8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8ND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0NDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8NT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0NTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jaG9vc2VyPDY+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDY8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8Nz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0NzwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8OD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0ODwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jaG9vc2VyPDk+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDk8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8MTA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEwPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3NlcjwxMT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTE8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8MTI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEyPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8MTM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEzPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3NlcjwxND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTQ8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8MTU+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE1PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8MTY+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE2PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3NlcjwxNz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTc8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8MTg+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE4PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2Nob29zZXI8MTk+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE5PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY2hvb3NlcjwyMD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MjA8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLXN0cnVjdCBpc19saXN0X2FyZwotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSAgPSB0cnVlKTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpc19saXN0X2FyZzxuYT4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gZmFsc2UpOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUKLSAgICAsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAKLSAgICAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1Ci0gICAgLCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMAotICAgID4KLXN0cnVjdCBsaXN0X2NvdW50X2FyZ3MKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSA9Ci0gICAgICAgICAgaXNfbGlzdF9hcmc8VDE+Ojp2YWx1ZSArIGlzX2xpc3RfYXJnPFQyPjo6dmFsdWUgCi0gICAgICAgICsgaXNfbGlzdF9hcmc8VDM+Ojp2YWx1ZSArIGlzX2xpc3RfYXJnPFQ0Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfbGlzdF9hcmc8VDU+Ojp2YWx1ZSArIGlzX2xpc3RfYXJnPFQ2Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfbGlzdF9hcmc8VDc+Ojp2YWx1ZSArIGlzX2xpc3RfYXJnPFQ4Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfbGlzdF9hcmc8VDk+Ojp2YWx1ZSArIGlzX2xpc3RfYXJnPFQxMD46OnZhbHVlIAotICAgICAgICArIGlzX2xpc3RfYXJnPFQxMT46OnZhbHVlICsgaXNfbGlzdF9hcmc8VDEyPjo6dmFsdWUgCi0gICAgICAgICsgaXNfbGlzdF9hcmc8VDEzPjo6dmFsdWUgKyBpc19saXN0X2FyZzxUMTQ+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19saXN0X2FyZzxUMTU+Ojp2YWx1ZSArIGlzX2xpc3RfYXJnPFQxNj46OnZhbHVlIAotICAgICAgICArIGlzX2xpc3RfYXJnPFQxNz46OnZhbHVlICsgaXNfbGlzdF9hcmc8VDE4Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfbGlzdF9hcmc8VDE5Pjo6dmFsdWUgKyBpc19saXN0X2FyZzxUMjA+Ojp2YWx1ZQotICAgICAgICApOwotCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9pbXBsCi17Ci0gICAgdHlwZWRlZiBhdXg6Omxpc3RfY291bnRfYXJnczwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID4gYXJnX251bV87Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGlzdF9jaG9vc2VyPCBhcmdfbnVtXzo6dmFsdWUgPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCA9IG5hLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hLCB0eXBlbmFtZSBUNiA9IG5hLCB0eXBlbmFtZSBUNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUOCA9IG5hLCB0eXBlbmFtZSBUOSA9IG5hLCB0eXBlbmFtZSBUMTAgPSBuYSwgdHlwZW5hbWUgVDExID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxMiA9IG5hLCB0eXBlbmFtZSBUMTMgPSBuYSwgdHlwZW5hbWUgVDE0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxNSA9IG5hLCB0eXBlbmFtZSBUMTYgPSBuYSwgdHlwZW5hbWUgVDE3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxOCA9IG5hLCB0eXBlbmFtZSBUMTkgPSBuYQotICAgID4KLXN0cnVjdCBsaXN0Ci0gICAgOiBhdXg6Omxpc3RfaW1wbDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID46OnR5cGUKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6bGlzdF9pbXBsPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9saXN0X2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9saXN0X2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZWQ3ZjdlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvbGlzdF9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUzNCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9saXN0X2MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IGludCBOID4KLXN0cnVjdCBsaXN0X2NfY2hvb3NlcjsKLQotfQotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDBfYzwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDFfYzwKLSAgICAgICAgICAgICAgVCwgQzAKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2NfY2hvb3NlcjwyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QyX2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDNfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDRfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2NfY2hvb3Nlcjw1PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q1X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDY+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDZfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDc+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDdfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsaXN0X2NfY2hvb3Nlcjw4PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q4X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDk+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDlfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDEwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMF9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDExPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMV9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jX2Nob29zZXI8MTI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDEyX2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDEzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxM19jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDE0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNF9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jX2Nob29zZXI8MTU+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE1X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDE2PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNl9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQsIEMxNQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDE3PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxN19jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQsIEMxNSwgQzE2Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGlzdF9jX2Nob29zZXI8MTg+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE4X2M8Ci0gICAgICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNCwgQzE1LCBDMTYsIEMxNwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDE5PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxOV9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQsIEMxNSwgQzE2LCBDMTcsIEMxOAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxpc3RfY19jaG9vc2VyPDIwPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QyMF9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQsIEMxNSwgQzE2LCBDMTcsIEMxOCwgQzE5Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgbG9uZyBDID4KLXN0cnVjdCBpc19saXN0X2NfYXJnCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlICA9IHRydWUpOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGlzX2xpc3RfY19hcmc8TE9OR19NQVg+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlICA9IGZhbHNlKTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNSwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOAotICAgICwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMiwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNQotICAgICwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTksIGxvbmcgQzIwCi0gICAgPgotc3RydWN0IGxpc3RfY19jb3VudF9hcmdzCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPQotICAgICAgICAgIGlzX2xpc3RfY19hcmc8QzE+Ojp2YWx1ZSArIGlzX2xpc3RfY19hcmc8QzI+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19saXN0X2NfYXJnPEMzPjo6dmFsdWUgKyBpc19saXN0X2NfYXJnPEM0Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfbGlzdF9jX2FyZzxDNT46OnZhbHVlICsgaXNfbGlzdF9jX2FyZzxDNj46OnZhbHVlIAotICAgICAgICArIGlzX2xpc3RfY19hcmc8Qzc+Ojp2YWx1ZSArIGlzX2xpc3RfY19hcmc8Qzg+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19saXN0X2NfYXJnPEM5Pjo6dmFsdWUgKyBpc19saXN0X2NfYXJnPEMxMD46OnZhbHVlIAotICAgICAgICArIGlzX2xpc3RfY19hcmc8QzExPjo6dmFsdWUgKyBpc19saXN0X2NfYXJnPEMxMj46OnZhbHVlIAotICAgICAgICArIGlzX2xpc3RfY19hcmc8QzEzPjo6dmFsdWUgKyBpc19saXN0X2NfYXJnPEMxND46OnZhbHVlIAotICAgICAgICArIGlzX2xpc3RfY19hcmc8QzE1Pjo6dmFsdWUgKyBpc19saXN0X2NfYXJnPEMxNj46OnZhbHVlIAotICAgICAgICArIGlzX2xpc3RfY19hcmc8QzE3Pjo6dmFsdWUgKyBpc19saXN0X2NfYXJnPEMxOD46OnZhbHVlIAotICAgICAgICArIGlzX2xpc3RfY19hcmc8QzE5Pjo6dmFsdWUgKyBpc19saXN0X2NfYXJnPEMyMD46OnZhbHVlCi0gICAgICAgICk7Ci0KLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICA+Ci1zdHJ1Y3QgbGlzdF9jX2ltcGwKLXsKLSAgICB0eXBlZGVmIGF1eDo6bGlzdF9jX2NvdW50X2FyZ3M8Ci0gICAgICAgICAgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUsIEMxNiwgQzE3LCBDMTgsIEMxOQotICAgICAgICA+IGFyZ19udW1fOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6Omxpc3RfY19jaG9vc2VyPCBhcmdfbnVtXzo6dmFsdWUgPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAgPSBMT05HX01BWCwgbG9uZyBDMSA9IExPTkdfTUFYLCBsb25nIEMyID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzMgPSBMT05HX01BWCwgbG9uZyBDNCA9IExPTkdfTUFYLCBsb25nIEM1ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzYgPSBMT05HX01BWCwgbG9uZyBDNyA9IExPTkdfTUFYLCBsb25nIEM4ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzkgPSBMT05HX01BWCwgbG9uZyBDMTAgPSBMT05HX01BWCwgbG9uZyBDMTEgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTIgPSBMT05HX01BWCwgbG9uZyBDMTMgPSBMT05HX01BWCwgbG9uZyBDMTQgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTUgPSBMT05HX01BWCwgbG9uZyBDMTYgPSBMT05HX01BWCwgbG9uZyBDMTcgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTggPSBMT05HX01BWCwgbG9uZyBDMTkgPSBMT05HX01BWAotICAgID4KLXN0cnVjdCBsaXN0X2MKLSAgICA6IGF1eDo6bGlzdF9jX2ltcGw8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUsIEMxNiwgQzE3LCBDMTgsIEMxOQotICAgICAgICA+Ojp0eXBlCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6Omxpc3RfY19pbXBsPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNCwgQzE1LCBDMTYsIEMxNywgQzE4LCBDMTkKLSAgICAgICAgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9tYXAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9tYXAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NTE3NGM4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvbWFwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU1NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9tYXAuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IGludCBOID4KLXN0cnVjdCBtYXBfY2hvb3NlcjsKLQotfQotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG1hcF9jaG9vc2VyPDA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbWFwMDwKLSAgICAgICAgICAgICAKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3NlcjwxPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE8Ci0gICAgICAgICAgICAgIFQwCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWFwX2Nob29zZXI8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAyPAotICAgICAgICAgICAgICBUMCwgVDEKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3NlcjwzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDM8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3Nlcjw0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDQ8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWFwX2Nob29zZXI8NT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXA1PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3Nlcjw2PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDY8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3Nlcjw3PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDc8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWFwX2Nob29zZXI8OD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXA4PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3Nlcjw5PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDk8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3NlcjwxMD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxMDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3NlcjwxMT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxMTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG1hcF9jaG9vc2VyPDEyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDEyPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3NlcjwxMz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxMzwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3NlcjwxND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxNDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG1hcF9jaG9vc2VyPDE1PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE1PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3NlcjwxNj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxNjwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3NlcjwxNz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxNzwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG1hcF9jaG9vc2VyPDE4PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDE4PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3NlcjwxOT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxOTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtYXBfY2hvb3NlcjwyMD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAyMDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotc3RydWN0IGlzX21hcF9hcmcKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gdHJ1ZSk7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaXNfbWFwX2FyZzxuYT4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gZmFsc2UpOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUKLSAgICAsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAKLSAgICAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1Ci0gICAgLCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMAotICAgID4KLXN0cnVjdCBtYXBfY291bnRfYXJncwotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0KLSAgICAgICAgICBpc19tYXBfYXJnPFQxPjo6dmFsdWUgKyBpc19tYXBfYXJnPFQyPjo6dmFsdWUgCi0gICAgICAgICsgaXNfbWFwX2FyZzxUMz46OnZhbHVlICsgaXNfbWFwX2FyZzxUND46OnZhbHVlIAotICAgICAgICArIGlzX21hcF9hcmc8VDU+Ojp2YWx1ZSArIGlzX21hcF9hcmc8VDY+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19tYXBfYXJnPFQ3Pjo6dmFsdWUgKyBpc19tYXBfYXJnPFQ4Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfbWFwX2FyZzxUOT46OnZhbHVlICsgaXNfbWFwX2FyZzxUMTA+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19tYXBfYXJnPFQxMT46OnZhbHVlICsgaXNfbWFwX2FyZzxUMTI+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19tYXBfYXJnPFQxMz46OnZhbHVlICsgaXNfbWFwX2FyZzxUMTQ+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19tYXBfYXJnPFQxNT46OnZhbHVlICsgaXNfbWFwX2FyZzxUMTY+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19tYXBfYXJnPFQxNz46OnZhbHVlICsgaXNfbWFwX2FyZzxUMTg+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19tYXBfYXJnPFQxOT46OnZhbHVlICsgaXNfbWFwX2FyZzxUMjA+Ojp2YWx1ZQotICAgICAgICApOwotCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICA+Ci1zdHJ1Y3QgbWFwX2ltcGwKLXsKLSAgICB0eXBlZGVmIGF1eDo6bWFwX2NvdW50X2FyZ3M8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+IGFyZ19udW1fOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6Om1hcF9jaG9vc2VyPCBhcmdfbnVtXzo6dmFsdWUgPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCA9IG5hLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hLCB0eXBlbmFtZSBUNiA9IG5hLCB0eXBlbmFtZSBUNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUOCA9IG5hLCB0eXBlbmFtZSBUOSA9IG5hLCB0eXBlbmFtZSBUMTAgPSBuYSwgdHlwZW5hbWUgVDExID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxMiA9IG5hLCB0eXBlbmFtZSBUMTMgPSBuYSwgdHlwZW5hbWUgVDE0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxNSA9IG5hLCB0eXBlbmFtZSBUMTYgPSBuYSwgdHlwZW5hbWUgVDE3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxOCA9IG5hLCB0eXBlbmFtZSBUMTkgPSBuYQotICAgID4KLXN0cnVjdCBtYXAKLSAgICA6IGF1eDo6bWFwX2ltcGw8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ojp0eXBlCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6Om1hcF9pbXBsPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9taW51cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL21pbnVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTE0ZDY2OS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL21pbnVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9taW51cy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IG1pbnVzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBtaW51c19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgbWludXNfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBtaW51c19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbWludXNfaW1wbDwgbmEsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IG1pbnVzX2ltcGw8IGludGVncmFsX2NfdGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBtaW51c190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgbWludXMyOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBtaW51cwotCi0gICAgOiBpZl88Ci0KLSAgICAgICAgICBpc19uYTxOMz4KLSAgICAgICAgLCBtaW51czI8IE4xLE4yID4KLSAgICAgICAgLCBtaW51czwKLSAgICAgICAgICAgICAgbWludXMyPCBOMSxOMiA+Ci0gICAgICAgICAgICAsIE4zLCBONCwgTjUKLSAgICAgICAgICAgID4KLSAgICAgICAgPjo6dHlwZQotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgbWludXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEKLSAgICAsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IG1pbnVzMgotICAgIDogbWludXNfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBtaW51c190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgbWludXNfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgbWludXMyLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBtaW51cykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWludXNfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgIC0gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9tb2R1bHVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvbW9kdWx1cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdiMmU3YWIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9tb2R1bHVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwMSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9tb2R1bHVzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgbW9kdWx1c19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgbW9kdWx1c19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgbW9kdWx1c19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IG1vZHVsdXNfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IG1vZHVsdXNfaW1wbDwgbmEsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IG1vZHVsdXNfaW1wbDwgaW50ZWdyYWxfY190YWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IG1vZHVsdXNfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IG1vZHVsdXMKLQotICAgIDogbW9kdWx1c19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIG1vZHVsdXNfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIG1vZHVsdXNfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgbW9kdWx1cywgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgbW9kdWx1cykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbW9kdWx1c19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgJSBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL25vdF9lcXVhbF90by5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL25vdF9lcXVhbF90by5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRmOTEwOWYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9ub3RfZXF1YWxfdG8uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbm90X2VxdWFsX3RvLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3Qgbm90X2VxdWFsX3RvX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBub3RfZXF1YWxfdG9faW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IG5vdF9lcXVhbF90b19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IG5vdF9lcXVhbF90b19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3Qgbm90X2VxdWFsX3RvX2ltcGw8IG5hLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBub3RfZXF1YWxfdG9faW1wbDwgaW50ZWdyYWxfY190YWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IG5vdF9lcXVhbF90b190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3Qgbm90X2VxdWFsX3RvCi0KLSAgICA6IG5vdF9lcXVhbF90b19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIG5vdF9lcXVhbF90b190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgbm90X2VxdWFsX3RvX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIG5vdF9lcXVhbF90bywgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgbm90X2VxdWFsX3RvKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG5vdF9lcXVhbF90b19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogYm9vbF88ICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUgIT0gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUgKSA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9vci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL29yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzEyM2I4ZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL29yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDczICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL29yLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCBib29sIENfID4gc3RydWN0IG9yX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICAgICAgOiB0cnVlXwotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3Qgb3JfaW1wbDxmYWxzZT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICAgICAgOiBvcl9pbXBsPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX05FU1RFRF9UWVBFX1dLTkQoVDEpOjp2YWx1ZQotICAgICAgICAgICAgPjo6dGVtcGxhdGUgcmVzdWx0XzwgVDIsVDMsVDQsZmFsc2VfID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBvcl9pbXBsPGZhbHNlPgotICAgIDo6cmVzdWx0XzwgZmFsc2VfLGZhbHNlXyxmYWxzZV8sZmFsc2VfID4KLSAgICAgICAgOiBmYWxzZV8KLXsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQyKQotICAgICwgdHlwZW5hbWUgVDMgPSBmYWxzZV8sIHR5cGVuYW1lIFQ0ID0gZmFsc2VfLCB0eXBlbmFtZSBUNSA9IGZhbHNlXwotICAgID4KLXN0cnVjdCBvcl8KLQotICAgIDogYXV4Ojpvcl9pbXBsPAotICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1RZUEVfV0tORChUMSk6OnZhbHVlCi0gICAgICAgID46OnRlbXBsYXRlIHJlc3VsdF88IFQyLFQzLFQ0LFQ1ID4KLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIG9yXwotICAgICAgICAsICggVDEsIFQyLCBUMywgVDQsIFQ1KQotICAgICAgICApCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKAotICAgICAgMgotICAgICwgNQotICAgICwgb3JfCi0gICAgKQotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9wbGFjZWhvbGRlcnMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9wbGFjZWhvbGRlcnMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYTI4YzA5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvcGxhY2Vob2xkZXJzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwNSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8gQ29weXJpZ2h0IFBldGVyIERpbW92IDIwMDEtMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9wbGFjZWhvbGRlcnMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8IC0xID4gXzsKLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfKQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfOwotfQotCi19fQotCi0vLy8gYWd1cnQsIDE3L21hci8wMjogb25lIG1vcmUgcGxhY2Vob2xkZXIgZm9yIHRoZSBsYXN0ICdhcHBseSMnIAotLy8vIHNwZWNpYWxpemF0aW9uCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzwxPiBfMTsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF8xKQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfMTsKLX0KLQotfX0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDI+IF8yOwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzIpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol8yOwotfQotCi19fQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8Mz4gXzM7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfMykKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzM7Ci19Ci0KLX19Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzw0PiBfNDsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF80KQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfNDsKLX0KLQotfX0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDU+IF81OwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzUpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol81OwotfQotCi19fQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8Nj4gXzY7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfNikKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzY7Ci19Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3BsdXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9wbHVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjM3MmVhZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3BsdXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTMzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3BsdXMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBwbHVzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBwbHVzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBwbHVzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgcGx1c19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcGx1c19pbXBsPCBuYSxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcGx1c19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgcGx1c190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgcGx1czI7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IHBsdXMKLQotICAgIDogaWZfPAotCi0gICAgICAgICAgaXNfbmE8TjM+Ci0gICAgICAgICwgcGx1czI8IE4xLE4yID4KLSAgICAgICAgLCBwbHVzPAotICAgICAgICAgICAgICBwbHVzMjwgTjEsTjIgPgotICAgICAgICAgICAgLCBOMywgTjQsIE41Ci0gICAgICAgICAgICA+Ci0gICAgICAgID46OnR5cGUKLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIHBsdXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEKLSAgICAsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IHBsdXMyCi0gICAgOiBwbHVzX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgcGx1c190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgcGx1c190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBwbHVzMiwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgcGx1cykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcGx1c19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgKyBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3F1b3RlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvcXVvdGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MjU5OGNiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvcXVvdGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTE2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3F1b3RlLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8IGJvb2wgPiBzdHJ1Y3QgcXVvdGVfaW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHJlc3VsdF8KLSAgICAgICAgOiBUCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBxdW90ZV9pbXBsPGZhbHNlPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFRhZyA9IHZvaWRfCi0gICAgPgotc3RydWN0IHF1b3RlMQotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogcXVvdGVfaW1wbDwgYXV4OjpoYXNfdHlwZTwgRjxVMT4gPjo6dmFsdWUgPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBGPFUxPiA+Ci0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFRhZyA9IHZvaWRfCi0gICAgPgotc3RydWN0IHF1b3RlMgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IHF1b3RlX2ltcGw8IGF1eDo6aGFzX3R5cGU8IEY8IFUxLFUyID4gPjo6dmFsdWUgPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBGPCBVMSxVMiA+ID4KLQotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMyA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFRhZyA9IHZvaWRfCi0gICAgPgotc3RydWN0IHF1b3RlMwotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBxdW90ZV9pbXBsPCBhdXg6Omhhc190eXBlPCBGPCBVMSxVMixVMyA+ID46OnZhbHVlID4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgRjwgVTEsVTIsVTMgPiA+Ci0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0ID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVGFnID0gdm9pZF8KLSAgICA+Ci1zdHJ1Y3QgcXVvdGU0Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogcXVvdGVfaW1wbDwgYXV4OjpoYXNfdHlwZTwgRjwgVTEsVTIsVTMsVTQgPiA+Ojp2YWx1ZSA+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IEY8IFUxLFUyLFUzLFU0ID4gPgotCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFAxLCB0eXBlbmFtZSBQMiwgdHlwZW5hbWUgUDMsIHR5cGVuYW1lIFA0Ci0gICAgICAgICwgdHlwZW5hbWUgUDUKLSAgICAgICAgPgotICAgICAgY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVGFnID0gdm9pZF8KLSAgICA+Ci1zdHJ1Y3QgcXVvdGU1Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAgICAgLCB0eXBlbmFtZSBVNQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBxdW90ZV9pbXBsPCBhdXg6Omhhc190eXBlPCBGPCBVMSxVMixVMyxVNCxVNSA+ID46OnZhbHVlID4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgRjwgVTEsVTIsVTMsVTQsVTUgPiA+Ci0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvcmV2ZXJzZV9mb2xkX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9yZXZlcnNlX2ZvbGRfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJjNmMxNzMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9yZXZlcnNlX2ZvbGRfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyOTUgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9yZXZlcnNlX2ZvbGRfaW1wbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgbG9uZyBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfaW1wbDsKLQotdGVtcGxhdGU8IGxvbmcgTiA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2NodW5rOwotCi10ZW1wbGF0ZTw+IHN0cnVjdCByZXZlcnNlX2ZvbGRfY2h1bms8MD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgZndkX3N0YXRlMCBia3dkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMCBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcmV2ZXJzZV9mb2xkX2NodW5rPDE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgZndkX3N0YXRlMSBia3dkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMSBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcmV2ZXJzZV9mb2xkX2NodW5rPDI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBmd2Rfc3RhdGUyIGJrd2Rfc3RhdGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTIsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgICAgICB0eXBlZGVmIGl0ZXIyIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCByZXZlcnNlX2ZvbGRfY2h1bms8Mz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMSwgdHlwZW5hbWUgZGVyZWY8aXRlcjE+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgZndkX3N0YXRlMyBia3dkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUzLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMyBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcmV2ZXJzZV9mb2xkX2NodW5rPDQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUzLCB0eXBlbmFtZSBkZXJlZjxpdGVyMz46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgZndkX3N0YXRlNCBia3dkX3N0YXRlNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGU0LCB0eXBlbmFtZSBkZXJlZjxpdGVyMz46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUzLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyNCBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IGxvbmcgTiA+Ci1zdHJ1Y3QgcmV2ZXJzZV9mb2xkX2NodW5rCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIGZ3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgZndkX3N0YXRlMiwgdHlwZW5hbWUgZGVyZWY8aXRlcjI+Ojp0eXBlID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUzLCB0eXBlbmFtZSBkZXJlZjxpdGVyMz46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgcmV2ZXJzZV9mb2xkX2ltcGw8Ci0gICAgICAgICAgICAgICggKE4gLSA0KSA8IDAgPyAwIDogTiAtIDQgKQotICAgICAgICAgICAgLCBpdGVyNAotICAgICAgICAgICAgLCBMYXN0Ci0gICAgICAgICAgICAsIGZ3ZF9zdGF0ZTQKLSAgICAgICAgICAgICwgQmFja3dhcmRPcAotICAgICAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgICAgID4gbmVzdGVkX2NodW5rOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX2NodW5rOjpzdGF0ZSBia3dkX3N0YXRlNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGU0LCB0eXBlbmFtZSBkZXJlZjxpdGVyMz46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUzLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsIGJrd2Rfc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfY2h1bms6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9zdGVwOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9udWxsX3N0ZXAKLXsKLSAgICB0eXBlZGVmIExhc3QgaXRlcmF0b3I7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfY2h1bms8IC0xID4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgaXNfc2FtZTwgRmlyc3QsTGFzdCA+Ojp0eXBlCi0gICAgICAgICAgICAsIHJldmVyc2VfZm9sZF9udWxsX3N0ZXA8IExhc3QsU3RhdGUgPgotICAgICAgICAgICAgLCByZXZlcnNlX2ZvbGRfc3RlcDwgRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci0gICAgICAgICAgICA+Ojp0eXBlIHJlc187Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjpzdGF0ZSBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjppdGVyYXRvciBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfc3RlcAotewotICAgIHR5cGVkZWYgcmV2ZXJzZV9mb2xkX2NodW5rPCAtMSA+Ojp0ZW1wbGF0ZSByZXN1bHRfPAotICAgICAgICAgIHR5cGVuYW1lIG1wbDo6bmV4dDxGaXJzdD46OnR5cGUKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgYXBwbHkyPEZvcndhcmRPcCxTdGF0ZSwgdHlwZW5hbWUgZGVyZWY8Rmlyc3Q+Ojp0eXBlPjo6dHlwZQotICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiBuZXN0ZWRfc3RlcDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPAotICAgICAgICAgIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBuZXN0ZWRfc3RlcDo6c3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBkZXJlZjxGaXJzdD46OnR5cGUKLSAgICAgICAgPjo6dHlwZSBzdGF0ZTsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX3N0ZXA6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBsb25nIE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9pbXBsCi0gICAgOiByZXZlcnNlX2ZvbGRfY2h1bms8Tj4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLX07Ci0KLX19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9yZXZlcnNlX2l0ZXJfZm9sZF9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU3Y2M2ODguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9yZXZlcnNlX2l0ZXJfZm9sZF9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI5NSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL3JldmVyc2VfaXRlcl9mb2xkX2ltcGwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIGxvbmcgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbDsKLQotdGVtcGxhdGU8IGxvbmcgTiA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfY2h1bms7Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2NodW5rPDA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTAgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjAgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2NodW5rPDE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTAsaXRlcjAgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgZndkX3N0YXRlMSBia3dkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTEsaXRlcjAgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMSBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfY2h1bms8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMCxpdGVyMCA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUxLGl0ZXIxID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTIgYmt3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUyLGl0ZXIxID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUxLGl0ZXIwID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjIgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2NodW5rPDM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTAsaXRlcjAgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMSxpdGVyMSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUyLGl0ZXIyID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTMgYmt3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUzLGl0ZXIyID46OnR5cGUgYmt3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUyLGl0ZXIxID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUxLGl0ZXIwID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjMgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2NodW5rPDQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTAsaXRlcjAgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMSxpdGVyMSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUyLGl0ZXIyID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTMsaXRlcjMgPjo6dHlwZSBmd2Rfc3RhdGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgZndkX3N0YXRlNCBia3dkX3N0YXRlNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTQsaXRlcjMgPjo6dHlwZSBia3dkX3N0YXRlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTMsaXRlcjIgPjo6dHlwZSBia3dkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTIsaXRlcjEgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTEsaXRlcjAgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiBpdGVyNCBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IGxvbmcgTiA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfY2h1bmsKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBGaXJzdAotICAgICAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMCxpdGVyMCA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUxLGl0ZXIxID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTIsaXRlcjIgPjo6dHlwZSBmd2Rfc3RhdGUzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMyxpdGVyMyA+Ojp0eXBlIGZ3ZF9zdGF0ZTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAgICAgCi0KLSAgICAgICAgdHlwZWRlZiByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsPAotICAgICAgICAgICAgICAoIChOIC0gNCkgPCAwID8gMCA6IE4gLSA0ICkKLSAgICAgICAgICAgICwgaXRlcjQKLSAgICAgICAgICAgICwgTGFzdAotICAgICAgICAgICAgLCBmd2Rfc3RhdGU0Ci0gICAgICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgICAgICA+IG5lc3RlZF9jaHVuazsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9jaHVuazo6c3RhdGUgYmt3ZF9zdGF0ZTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGU0LGl0ZXIzID46OnR5cGUgYmt3ZF9zdGF0ZTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUzLGl0ZXIyID46OnR5cGUgYmt3ZF9zdGF0ZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUyLGl0ZXIxID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUxLGl0ZXIwID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX2NodW5rOjppdGVyYXRvciBpdGVyYXRvcjsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9zdGVwOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX251bGxfc3RlcAotewotICAgIHR5cGVkZWYgTGFzdCBpdGVyYXRvcjsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2NodW5rPCAtMSA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGlzX3NhbWU8IEZpcnN0LExhc3QgPjo6dHlwZQotICAgICAgICAgICAgLCByZXZlcnNlX2l0ZXJfZm9sZF9udWxsX3N0ZXA8IExhc3QsU3RhdGUgPgotICAgICAgICAgICAgLCByZXZlcnNlX2l0ZXJfZm9sZF9zdGVwPCBGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLSAgICAgICAgICAgID46OnR5cGUgcmVzXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186OnN0YXRlIHN0YXRlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186Oml0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX3N0ZXAKLXsKLSAgICB0eXBlZGVmIHJldmVyc2VfaXRlcl9mb2xkX2NodW5rPCAtMSA+Ojp0ZW1wbGF0ZSByZXN1bHRfPAotICAgICAgICAgIHR5cGVuYW1lIG1wbDo6bmV4dDxGaXJzdD46OnR5cGUKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsU3RhdGUsRmlyc3QgPjo6dHlwZQotICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiBuZXN0ZWRfc3RlcDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPAotICAgICAgICAgIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBuZXN0ZWRfc3RlcDo6c3RhdGUKLSAgICAgICAgLCBGaXJzdAotICAgICAgICA+Ojp0eXBlIHN0YXRlOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfc3RlcDo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGxvbmcgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbAotICAgIDogcmV2ZXJzZV9pdGVyX2ZvbGRfY2h1bms8Tj4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLX07Ci0KLX19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9zZXQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9zZXQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ODRkNTNlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvc2V0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU1NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9zZXQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IGludCBOID4KLXN0cnVjdCBzZXRfY2hvb3NlcjsKLQotfQotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jaG9vc2VyPDA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAgICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgc2V0MDwKLSAgICAgICAgICAgICAKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3NlcjwxPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE8Ci0gICAgICAgICAgICAgIFQwCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2Nob29zZXI8Mj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQyPAotICAgICAgICAgICAgICBUMCwgVDEKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3NlcjwzPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDM8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3Nlcjw0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDQ8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2Nob29zZXI8NT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ1PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3Nlcjw2PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDY8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3Nlcjw3PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDc8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2Nob29zZXI8OD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ4PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3Nlcjw5PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDk8Ci0gICAgICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3NlcjwxMD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDkKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3NlcjwxMT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jaG9vc2VyPDEyPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDEyPAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3NlcjwxMz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMzwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3NlcjwxND4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jaG9vc2VyPDE1PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE1PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3NlcjwxNj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNjwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3NlcjwxNz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNzwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jaG9vc2VyPDE4PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE4PAotICAgICAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3NlcjwxOT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxOTwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY2hvb3NlcjwyMD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAgICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAgICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQyMDwKLSAgICAgICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotc3RydWN0IGlzX3NldF9hcmcKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gdHJ1ZSk7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaXNfc2V0X2FyZzxuYT4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gZmFsc2UpOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUKLSAgICAsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5LCB0eXBlbmFtZSBUMTAKLSAgICAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNCwgdHlwZW5hbWUgVDE1Ci0gICAgLCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTksIHR5cGVuYW1lIFQyMAotICAgID4KLXN0cnVjdCBzZXRfY291bnRfYXJncwotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0KLSAgICAgICAgICBpc19zZXRfYXJnPFQxPjo6dmFsdWUgKyBpc19zZXRfYXJnPFQyPjo6dmFsdWUgCi0gICAgICAgICsgaXNfc2V0X2FyZzxUMz46OnZhbHVlICsgaXNfc2V0X2FyZzxUND46OnZhbHVlIAotICAgICAgICArIGlzX3NldF9hcmc8VDU+Ojp2YWx1ZSArIGlzX3NldF9hcmc8VDY+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfYXJnPFQ3Pjo6dmFsdWUgKyBpc19zZXRfYXJnPFQ4Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfc2V0X2FyZzxUOT46OnZhbHVlICsgaXNfc2V0X2FyZzxUMTA+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfYXJnPFQxMT46OnZhbHVlICsgaXNfc2V0X2FyZzxUMTI+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfYXJnPFQxMz46OnZhbHVlICsgaXNfc2V0X2FyZzxUMTQ+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfYXJnPFQxNT46OnZhbHVlICsgaXNfc2V0X2FyZzxUMTY+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfYXJnPFQxNz46OnZhbHVlICsgaXNfc2V0X2FyZzxUMTg+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfYXJnPFQxOT46OnZhbHVlICsgaXNfc2V0X2FyZzxUMjA+Ojp2YWx1ZQotICAgICAgICApOwotCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2ltcGwKLXsKLSAgICB0eXBlZGVmIGF1eDo6c2V0X2NvdW50X2FyZ3M8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+IGFyZ19udW1fOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnNldF9jaG9vc2VyPCBhcmdfbnVtXzo6dmFsdWUgPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCA9IG5hLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hLCB0eXBlbmFtZSBUNiA9IG5hLCB0eXBlbmFtZSBUNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUOCA9IG5hLCB0eXBlbmFtZSBUOSA9IG5hLCB0eXBlbmFtZSBUMTAgPSBuYSwgdHlwZW5hbWUgVDExID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxMiA9IG5hLCB0eXBlbmFtZSBUMTMgPSBuYSwgdHlwZW5hbWUgVDE0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxNSA9IG5hLCB0eXBlbmFtZSBUMTYgPSBuYSwgdHlwZW5hbWUgVDE3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxOCA9IG5hLCB0eXBlbmFtZSBUMTkgPSBuYQotICAgID4KLXN0cnVjdCBzZXQKLSAgICA6IGF1eDo6c2V0X2ltcGw8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBUMTUsIFQxNiwgVDE3LCBUMTgsIFQxOQotICAgICAgICA+Ojp0eXBlCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnNldF9pbXBsPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9zZXRfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3NldF9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2I1ZjJhYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3NldF9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUzNCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9zZXRfYy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgaW50IE4gPgotc3RydWN0IHNldF9jX2Nob29zZXI7Ci0KLX0KLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MF9jPAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3NlcjwxPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDFfYzwKLSAgICAgICAgICAgICAgVCwgQzAKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0Ml9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDM+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0M19jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3Nlcjw0PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDRfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDU+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0NV9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDY+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0Nl9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3Nlcjw3PgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAgICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDdfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDg+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0OF9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZXRfY19jaG9vc2VyPDk+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0OV9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3NlcjwxMD4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMF9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8MTE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTFfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8MTI+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTJfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3NlcjwxMz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxM19jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8MTQ+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTRfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8MTU+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTVfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3NlcjwxNj4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNl9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQsIEMxNQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8MTc+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTdfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUsIEMxNgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8MTg+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MThfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUsIEMxNiwgQzE3Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2V0X2NfY2hvb3NlcjwxOT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxOV9jPAotICAgICAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQsIEMxNSwgQzE2LCBDMTcsIEMxOAotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNldF9jX2Nob29zZXI8MjA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAgICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MjBfYzwKLSAgICAgICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUsIEMxNiwgQzE3LCBDMTgsIEMxOQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGxvbmcgQyA+Ci1zdHJ1Y3QgaXNfc2V0X2NfYXJnCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlICA9IHRydWUpOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGlzX3NldF9jX2FyZzxMT05HX01BWD4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgID0gZmFsc2UpOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1LCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4Ci0gICAgLCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1Ci0gICAgLCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOSwgbG9uZyBDMjAKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2NfY291bnRfYXJncwotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0KLSAgICAgICAgICBpc19zZXRfY19hcmc8QzE+Ojp2YWx1ZSArIGlzX3NldF9jX2FyZzxDMj46OnZhbHVlIAotICAgICAgICArIGlzX3NldF9jX2FyZzxDMz46OnZhbHVlICsgaXNfc2V0X2NfYXJnPEM0Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfc2V0X2NfYXJnPEM1Pjo6dmFsdWUgKyBpc19zZXRfY19hcmc8QzY+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfY19hcmc8Qzc+Ojp2YWx1ZSArIGlzX3NldF9jX2FyZzxDOD46OnZhbHVlIAotICAgICAgICArIGlzX3NldF9jX2FyZzxDOT46OnZhbHVlICsgaXNfc2V0X2NfYXJnPEMxMD46OnZhbHVlIAotICAgICAgICArIGlzX3NldF9jX2FyZzxDMTE+Ojp2YWx1ZSArIGlzX3NldF9jX2FyZzxDMTI+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfY19hcmc8QzEzPjo6dmFsdWUgKyBpc19zZXRfY19hcmc8QzE0Pjo6dmFsdWUgCi0gICAgICAgICsgaXNfc2V0X2NfYXJnPEMxNT46OnZhbHVlICsgaXNfc2V0X2NfYXJnPEMxNj46OnZhbHVlIAotICAgICAgICArIGlzX3NldF9jX2FyZzxDMTc+Ojp2YWx1ZSArIGlzX3NldF9jX2FyZzxDMTg+Ojp2YWx1ZSAKLSAgICAgICAgKyBpc19zZXRfY19hcmc8QzE5Pjo6dmFsdWUgKyBpc19zZXRfY19hcmc8QzIwPjo6dmFsdWUKLSAgICAgICAgKTsKLQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgID4KLXN0cnVjdCBzZXRfY19pbXBsCi17Ci0gICAgdHlwZWRlZiBhdXg6OnNldF9jX2NvdW50X2FyZ3M8Ci0gICAgICAgICAgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUsIEMxNiwgQzE3LCBDMTgsIEMxOQotICAgICAgICA+IGFyZ19udW1fOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnNldF9jX2Nob29zZXI8IGFyZ19udW1fOjp2YWx1ZSA+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCA9IExPTkdfTUFYLCBsb25nIEMxID0gTE9OR19NQVgsIGxvbmcgQzIgPSBMT05HX01BWAotICAgICwgbG9uZyBDMyA9IExPTkdfTUFYLCBsb25nIEM0ID0gTE9OR19NQVgsIGxvbmcgQzUgPSBMT05HX01BWAotICAgICwgbG9uZyBDNiA9IExPTkdfTUFYLCBsb25nIEM3ID0gTE9OR19NQVgsIGxvbmcgQzggPSBMT05HX01BWAotICAgICwgbG9uZyBDOSA9IExPTkdfTUFYLCBsb25nIEMxMCA9IExPTkdfTUFYLCBsb25nIEMxMSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxMiA9IExPTkdfTUFYLCBsb25nIEMxMyA9IExPTkdfTUFYLCBsb25nIEMxNCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxNSA9IExPTkdfTUFYLCBsb25nIEMxNiA9IExPTkdfTUFYLCBsb25nIEMxNyA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxOCA9IExPTkdfTUFYLCBsb25nIEMxOSA9IExPTkdfTUFYCi0gICAgPgotc3RydWN0IHNldF9jCi0gICAgOiBhdXg6OnNldF9jX2ltcGw8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUsIEMxNiwgQzE3LCBDMTgsIEMxOQotICAgICAgICA+Ojp0eXBlCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnNldF9jX2ltcGw8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0LCBDMTUsIEMxNiwgQzE3LCBDMTgsIEMxOQotICAgICAgICA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3NoaWZ0X2xlZnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy9zaGlmdF9sZWZ0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGI1Njc1OS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3NoaWZ0X2xlZnQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vIENvcHlyaWdodCBKYWFwIFN1dGVyIDIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvc2hpZnRfbGVmdC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IHNoaWZ0X2xlZnRfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IHNoaWZ0X2xlZnRfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IHNoaWZ0X2xlZnRfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBzaGlmdF9sZWZ0X2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBzaGlmdF9sZWZ0X2ltcGw8IG5hLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBzaGlmdF9sZWZ0X2ltcGw8IGludGVncmFsX2NfdGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBzaGlmdF9sZWZ0X3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBzaGlmdF9sZWZ0Ci0KLSAgICA6IHNoaWZ0X2xlZnRfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBzaGlmdF9sZWZ0X3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBzaGlmdF9sZWZ0X3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIHNoaWZ0X2xlZnQsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIHNoaWZ0X2xlZnQpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IHNoaWZ0X2xlZnRfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOLCB0eXBlbmFtZSBTID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBOOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgPDwgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKFMpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3NoaWZ0X3JpZ2h0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvc2hpZnRfcmlnaHQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOGRjMGRiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvc2hpZnRfcmlnaHQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vIENvcHlyaWdodCBKYWFwIFN1dGVyIDIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvc2hpZnRfcmlnaHQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBzaGlmdF9yaWdodF9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgc2hpZnRfcmlnaHRfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IHNoaWZ0X3JpZ2h0X2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3Qgc2hpZnRfcmlnaHRfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHNoaWZ0X3JpZ2h0X2ltcGw8IG5hLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBzaGlmdF9yaWdodF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3Qgc2hpZnRfcmlnaHRfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IHNoaWZ0X3JpZ2h0Ci0KLSAgICA6IHNoaWZ0X3JpZ2h0X2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgc2hpZnRfcmlnaHRfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIHNoaWZ0X3JpZ2h0X3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIHNoaWZ0X3JpZ2h0LCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBzaGlmdF9yaWdodCkKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2hpZnRfcmlnaHRfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOLCB0eXBlbmFtZSBTID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBOOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgPj4gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKFMpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3RlbXBsYXRlX2FyaXR5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvdGVtcGxhdGVfYXJpdHkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNTA1NzhmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvdGVtcGxhdGVfYXJpdHkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy90ZW1wbGF0ZV9hcml0eS5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBib29sID4KLXN0cnVjdCB0ZW1wbGF0ZV9hcml0eV9pbXBsCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYgPiBzdHJ1Y3QgcmVzdWx0XwotICAgICAgICA6IG1wbDo6aW50XzwgLTEgPgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHRlbXBsYXRlX2FyaXR5X2ltcGw8dHJ1ZT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiA+IHN0cnVjdCByZXN1bHRfCi0gICAgICAgIDogRjo6YXJpdHkKLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGID4KLXN0cnVjdCB0ZW1wbGF0ZV9hcml0eQotICAgIDogdGVtcGxhdGVfYXJpdHlfaW1wbDwgOjpuZG5ib29zdDo6bXBsOjphdXg6Omhhc19yZWJpbmQ8Rj46OnZhbHVlID4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPEY+Ci17Ci19OwotCi19fX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy90aW1lcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3RpbWVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2M5OWU2Ny4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3RpbWVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC90aW1lcy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IHRpbWVzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCB0aW1lc19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgdGltZXNfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCB0aW1lc19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgdGltZXNfaW1wbDwgbmEsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHRpbWVzX2ltcGw8IGludGVncmFsX2NfdGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCB0aW1lc190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgdGltZXMyOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCB0aW1lcwotCi0gICAgOiBpZl88Ci0KLSAgICAgICAgICBpc19uYTxOMz4KLSAgICAgICAgLCB0aW1lczI8IE4xLE4yID4KLSAgICAgICAgLCB0aW1lczwKLSAgICAgICAgICAgICAgdGltZXMyPCBOMSxOMiA+Ci0gICAgICAgICAgICAsIE4zLCBONCwgTjUKLSAgICAgICAgICAgID4KLSAgICAgICAgPjo6dHlwZQotCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgdGltZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEKLSAgICAsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IHRpbWVzMgotICAgIDogdGltZXNfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSB0aW1lc190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgdGltZXNfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgdGltZXMyLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCB0aW1lcykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdGltZXNfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgICogTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy91bnBhY2tfYXJncy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3VucGFja19hcmdzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGNkYjQ2ZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3VucGFja19hcmdzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwOSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDItMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC91bnBhY2tfYXJncy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIHNpemUpID4gc3RydWN0IHVucGFja19hcmdzX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+IHN0cnVjdCBhcHBseTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHVucGFja19hcmdzX2ltcGw8MD4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGFwcGx5MDwKLSAgICAgICAgICAgICAgRgotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDwxPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogYXBwbHkxPAotICAgICAgICAgICAgICBGCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMCA+Ojp0eXBlCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPDI+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBhcHBseTI8Ci0gICAgICAgICAgICAgIEYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywwID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMSA+Ojp0eXBlCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPDM+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBhcHBseTM8Ci0gICAgICAgICAgICAgIEYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywwID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMSA+Ojp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMiA+Ojp0eXBlCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPDQ+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBhcHBseTQ8Ci0gICAgICAgICAgICAgIEYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywwID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMSA+Ojp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMiA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDMgPjo6dHlwZQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDw1PgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogYXBwbHk1PAotICAgICAgICAgICAgICBGCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMCA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDEgPjo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDIgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywzID46OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncyw0ID46OnR5cGUKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IHVucGFja19hcmdzCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEFyZ3MgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGF1eDo6dW5wYWNrX2FyZ3NfaW1wbDwgc2l6ZTxBcmdzPjo6dmFsdWUgPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSBhcHBseTwgRixBcmdzID4KLQotICAgIHsKLSAgICB9OwotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9QQVNTX1RIUk9VR0hfTEFNQkRBX1NQRUMoMSwgdW5wYWNrX2FyZ3MpCi0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvdmVjdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvdmVjdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWNiNjcwNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3ZlY3Rvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NTYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdmVjdG9yLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCBpbnQgTiA+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+Ci1zdHJ1Y3QgdmVjdG9yCi0gICAgOiBhdXg6OnZlY3Rvcl9pbXBsPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPjo6dHlwZQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2ZWN0b3JfaW1wbDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvdmVjdG9yX2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy92ZWN0b3JfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2NTRjNmYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy92ZWN0b3JfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MzQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdmVjdG9yX2MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IGludCBOID4KLXN0cnVjdCB2ZWN0b3JfY19jaG9vc2VyOwotCi19Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+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+Ci1zdHJ1Y3QgdmVjdG9yX2NfaW1wbAotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfY19jb3VudF9hcmdzPAotICAgICAgICAgIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNCwgQzE1LCBDMTYsIEMxNywgQzE4LCBDMTkKLSAgICAgICAgPiBhcmdfbnVtXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2ZWN0b3JfY19jaG9vc2VyPCBhcmdfbnVtXzo6dmFsdWUgPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAgPSBMT05HX01BWCwgbG9uZyBDMSA9IExPTkdfTUFYLCBsb25nIEMyID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzMgPSBMT05HX01BWCwgbG9uZyBDNCA9IExPTkdfTUFYLCBsb25nIEM1ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzYgPSBMT05HX01BWCwgbG9uZyBDNyA9IExPTkdfTUFYLCBsb25nIEM4ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzkgPSBMT05HX01BWCwgbG9uZyBDMTAgPSBMT05HX01BWCwgbG9uZyBDMTEgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTIgPSBMT05HX01BWCwgbG9uZyBDMTMgPSBMT05HX01BWCwgbG9uZyBDMTQgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTUgPSBMT05HX01BWCwgbG9uZyBDMTYgPSBMT05HX01BWCwgbG9uZyBDMTcgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTggPSBMT05HX01BWCwgbG9uZyBDMTkgPSBMT05HX01BWAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYwotICAgIDogYXV4Ojp2ZWN0b3JfY19pbXBsPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNCwgQzE1LCBDMTYsIEMxNywgQzE4LCBDMTkKLSAgICAgICAgPjo6dHlwZQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2ZWN0b3JfY19pbXBsPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNCwgQzE1LCBDMTYsIEMxNywgQzE4LCBDMTkKLSAgICAgICAgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2FkdmFuY2VfYmFja3dhcmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2FkdmFuY2VfYmFja3dhcmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZTBjODI4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9hZHZhbmNlX2JhY2t3YXJkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk3ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vYWR2YW5jZV9iYWNrd2FyZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBsb25nIE4gPiBzdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDsKLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkPDA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIGl0ZXIwIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkPDE+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDwyPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIGl0ZXIyIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkPDM+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIGl0ZXIzIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkPDQ+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAgICAgdHlwZWRlZiBpdGVyNCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgbG9uZyBOID4KLXN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBhZHZhbmNlX2JhY2t3YXJkPDQ+Ci0gICAgICAgICAgICAsIEl0ZXJhdG9yCi0gICAgICAgICAgICA+Ojp0eXBlIGNodW5rX3Jlc3VsdF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgYWR2YW5jZV9iYWNrd2FyZDwoCi0gICAgICAgICAgICAgICAgKE4gLSA0KSA8IDAKLSAgICAgICAgICAgICAgICAgICAgPyAwCi0gICAgICAgICAgICAgICAgICAgIDogTiAtIDQKLSAgICAgICAgICAgICAgICAgICAgKT4KLSAgICAgICAgICAgICwgY2h1bmtfcmVzdWx0XwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi19fX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2FkdmFuY2VfZm9yd2FyZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvYWR2YW5jZV9mb3J3YXJkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjNhNWFmZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvYWR2YW5jZV9mb3J3YXJkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk3ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vYWR2YW5jZV9mb3J3YXJkLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGxvbmcgTiA+IHN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkPDA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIGl0ZXIwIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ8MT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjEgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZDwyPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiBpdGVyMiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkPDM+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIGl0ZXIzIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ8ND4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjQgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IGxvbmcgTiA+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBhZHZhbmNlX2ZvcndhcmQ8ND4KLSAgICAgICAgICAgICwgSXRlcmF0b3IKLSAgICAgICAgICAgID46OnR5cGUgY2h1bmtfcmVzdWx0XzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBhZHZhbmNlX2ZvcndhcmQ8KAotICAgICAgICAgICAgICAgIChOIC0gNCkgPCAwCi0gICAgICAgICAgICAgICAgICAgID8gMAotICAgICAgICAgICAgICAgICAgICA6IE4gLSA0Ci0gICAgICAgICAgICAgICAgICAgICk+Ci0gICAgICAgICAgICAsIGNodW5rX3Jlc3VsdF8KLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotfX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9hbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2FuZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVjMWI5NWEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2FuZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hbmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgYm9vbCBDXywgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQgPgotc3RydWN0IGFuZF9pbXBsCi0gICAgOiBmYWxzZV8KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCA+Ci1zdHJ1Y3QgYW5kX2ltcGw8IHRydWUsVDEsVDIsVDMsVDQgPgotICAgIDogYW5kX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVFlQRV9XS05EKFQxKTo6dmFsdWUKLSAgICAgICAgLCBUMiwgVDMsIFQ0Ci0gICAgICAgICwgdHJ1ZV8KLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFuZF9pbXBsPAotICAgICAgICAgIHRydWUKLSAgICAgICAgLCB0cnVlXywgdHJ1ZV8sIHRydWVfLCB0cnVlXwotICAgICAgICA+Ci0gICAgOiB0cnVlXwotewotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDIpCi0gICAgLCB0eXBlbmFtZSBUMyA9IHRydWVfLCB0eXBlbmFtZSBUNCA9IHRydWVfLCB0eXBlbmFtZSBUNSA9IHRydWVfCi0gICAgPgotc3RydWN0IGFuZF8KLQotICAgIDogYXV4OjphbmRfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX05FU1RFRF9UWVBFX1dLTkQoVDEpOjp2YWx1ZQotICAgICAgICAsIFQyLCBUMywgVDQsIFQ1Ci0gICAgICAgID4KLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGFuZF8KLSAgICAgICAgLCAoIFQxLCBUMiwgVDMsIFQ0LCBUNSkKLSAgICAgICAgKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigKLSAgICAgIDIKLSAgICAsIDUKLSAgICAsIGFuZF8KLSAgICApCi0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvYXBwbHkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2FwcGx5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODBmNzJiMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvYXBwbHkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTY5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2FwcGx5LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkwCi0KLSAgICA6IGFwcGx5X3dyYXAwPAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgIAotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICAxCi0gICAgICAgICwgYXBwbHkwCi0gICAgICAgICwgKEYgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk8IEYsbmEsbmEsbmEsbmEsbmEgPgotICAgIDogYXBwbHkwPEY+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGFwcGx5MQotCi0gICAgOiBhcHBseV93cmFwMTwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAgLCBUMQotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICAyCi0gICAgICAgICwgYXBwbHkxCi0gICAgICAgICwgKEYsIFQxKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGFwcGx5PCBGLFQxLG5hLG5hLG5hLG5hID4KLSAgICA6IGFwcGx5MTwgRixUMSA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBhcHBseTIKLQotICAgIDogYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgICwgVDEsIFQyCi0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDMKLSAgICAgICAgLCBhcHBseTIKLSAgICAgICAgLCAoRiwgVDEsIFQyKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBhcHBseTwgRixUMSxUMixuYSxuYSxuYSA+Ci0gICAgOiBhcHBseTI8IEYsVDEsVDIgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGFwcGx5MwotCi0gICAgOiBhcHBseV93cmFwMzwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAgLCBUMSwgVDIsIFQzCi0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDQKLSAgICAgICAgLCBhcHBseTMKLSAgICAgICAgLCAoRiwgVDEsIFQyLCBUMykKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGFwcGx5PCBGLFQxLFQyLFQzLG5hLG5hID4KLSAgICA6IGFwcGx5MzwgRixUMSxUMixUMyA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGFwcGx5NAotCi0gICAgOiBhcHBseV93cmFwNDwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAgLCBUMSwgVDIsIFQzLCBUNAotICAgICAgICA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgYXBwbHk0Ci0gICAgICAgICwgKEYsIFQxLCBUMiwgVDMsIFQ0KQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGFwcGx5PCBGLFQxLFQyLFQzLFQ0LG5hID4KLSAgICA6IGFwcGx5NDwgRixUMSxUMixUMyxUNCA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBhcHBseTUKLQotICAgIDogYXBwbHlfd3JhcDU8Ci0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgICwgVDEsIFQyLCBUMywgVDQsIFQ1Ci0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDYKLSAgICAgICAgLCBhcHBseTUKLSAgICAgICAgLCAoRiwgVDEsIFQyLCBUMywgVDQsIFQ1KQotICAgICAgICApCi19OwotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBhcHBseQotICAgIDogYXBwbHk1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9hcHBseV9md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2FwcGx5X2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjY2M5NGUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2FwcGx5X2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hcHBseV9md2QuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYQotICAgID4KLXN0cnVjdCBhcHBseTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGFwcGx5MDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBhcHBseTE7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGFwcGx5MjsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGFwcGx5MzsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBhcHBseTQ7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGFwcGx5NTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2FwcGx5X3dyYXAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2FwcGx5X3dyYXAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYzkwMjAyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9hcHBseV93cmFwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDg0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2FwcGx5X3dyYXAuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotCi0gICAgLCB0eXBlbmFtZSBoYXNfYXBwbHlfID0gdHlwZW5hbWUgYXV4OjpoYXNfYXBwbHk8Rj46OnR5cGUKLQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwMAotCi0gICAgOiBGOjp0ZW1wbGF0ZSBhcHBseTwgID4KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGID4KLXN0cnVjdCBhcHBseV93cmFwMDwgRix0cnVlXyA+Ci0gICAgOiBGOjphcHBseQotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXAxCi0KLSAgICA6IEY6OnRlbXBsYXRlIGFwcGx5PFQxPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwMgotCi0gICAgOiBGOjp0ZW1wbGF0ZSBhcHBseTwgVDEsVDIgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0KLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDMKLQotICAgIDogRjo6dGVtcGxhdGUgYXBwbHk8IFQxLFQyLFQzID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwNAotCi0gICAgOiBGOjp0ZW1wbGF0ZSBhcHBseTwgVDEsVDIsVDMsVDQgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwNQotCi0gICAgOiBGOjp0ZW1wbGF0ZSBhcHBseTwgVDEsVDIsVDMsVDQsVDUgPgotewotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2FyZy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvYXJnLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTU0NDc2YS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvYXJnLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBQZXRlciBEaW1vdiAyMDAxLTIwMDIKLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hcmcuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPCAtMSA+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gLTEpOwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBVMSB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEodHlwZSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGFyZzwxPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDEpOwotICAgIHR5cGVkZWYgYXJnPDI+IG5leHQ7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdGFnKQotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHR5cGUpCi0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFUxIHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPDI+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMik7Ci0gICAgdHlwZWRlZiBhcmc8Mz4gbmV4dDsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTIgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8Mz4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAzKTsKLSAgICB0eXBlZGVmIGFyZzw0PiBuZXh0OwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBVMyB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEodHlwZSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGFyZzw0PgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDQpOwotICAgIHR5cGVkZWYgYXJnPDU+IG5leHQ7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdGFnKQotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHR5cGUpCi0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFU0IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPDU+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gNSk7Ci0gICAgdHlwZWRlZiBhcmc8Nj4gbmV4dDsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTUgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX05PTlRZUEVfQVJJVFlfU1BFQygxLGludCwgYXJnKQotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2Jhc2ljX2JpbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2Jhc2ljX2JpbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MGY0YzRlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9iYXNpY19iaW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM2OSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBQZXRlciBEaW1vdiAyMDAxCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9iYXNpY19iaW5kLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZwotewotICAgIHR5cGVkZWYgVCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTiwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8IGFyZzxOPiwgVTEsIFUyLCBVMywgVTQsIFU1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PG1wbDo6YXJnPE4+LCBVMSwgVTIsIFUzLCBVNCwgVTU+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8IGJpbmQ8IEYsVDEsVDIsVDMsVDQsVDUgPiwgVTEsIFUyLCBVMywgVTQsIFU1ID4KLXsKLSAgICB0eXBlZGVmIGJpbmQ8IEYsVDEsVDIsVDMsVDQsVDUgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGJpbmQwCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IEYsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDA8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kMDxGPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDA8Rj4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygxLCBiaW5kMCkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygxLCBiaW5kMCkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0gICAgPgotc3RydWN0IGJpbmQ8IEYsbmEsbmEsbmEsbmEsbmEgPgotICAgIDogYmluZDA8Rj4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYmluZDEKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgRixVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDE8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMKLSAgICAsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDE8IEYsVDEgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDE8IEYsVDEgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDIsIGJpbmQxKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDIsIGJpbmQxKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGJpbmQ8IEYsVDEsbmEsbmEsbmEsbmEgPgotICAgIDogYmluZDE8IEYsVDEgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYmluZDIKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgRixVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAyPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMgotICAgICwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPAotICAgICAgYmluZDI8IEYsVDEsVDIgPiwgVTEsIFUyLCBVMywgVTQsIFU1Ci0gICAgPgotewotICAgIHR5cGVkZWYgYmluZDI8IEYsVDEsVDIgPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDMsIGJpbmQyKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDMsIGJpbmQyKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBiaW5kPCBGLFQxLFQyLG5hLG5hLG5hID4KLSAgICA6IGJpbmQyPCBGLFQxLFQyID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBiaW5kMwotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBGLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAzPAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUsIHR5cGVuYW1lIHQzOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVTEKLSAgICAsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kMzwgRixUMSxUMixUMyA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMzwgRixUMSxUMixUMyA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNCwgYmluZDMpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNCwgYmluZDMpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBiaW5kPCBGLFQxLFQyLFQzLG5hLG5hID4KLSAgICA6IGJpbmQzPCBGLFQxLFQyLFQzID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYmluZDQKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgRixVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDQsVTEsVTIsVTMsVTQsVTUgPiB0NDsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDQ8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDQ6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kNDwgRixUMSxUMixUMyxUNCA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kNDwgRixUMSxUMixUMyxUNCA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNSwgYmluZDQpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNSwgYmluZDQpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYmluZDwgRixUMSxUMixUMyxUNCxuYSA+Ci0gICAgOiBiaW5kNDwgRixUMSxUMixUMyxUNCA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBiaW5kNQotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBGLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUNCxVMSxVMixVMyxVNCxVNSA+IHQ0OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDUsVTEsVTIsVTMsVTQsVTUgPiB0NTsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDQ6OnR5cGUsIHR5cGVuYW1lIHQ1Ojp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQ1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQ1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg2LCBiaW5kNSkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg2LCBiaW5kNSkKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYmluZAotICAgIDogYmluZDU8IEYsVDEsVDIsVDMsVDQsVDUgPgotewotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2JpbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2JpbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMjM0NDY4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9iaW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ2NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBQZXRlciBEaW1vdiAyMDAxCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYmluZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmcKLXsKLSAgICB0eXBlZGVmIFQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgdHlwZW5hbWUgQXJnCi0gICAgPgotc3RydWN0IHJlcGxhY2VfdW5uYW1lZF9hcmcKLXsKLSAgICB0eXBlZGVmIEFyZyBuZXh0OwotICAgIHR5cGVkZWYgVCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBBcmcKLSAgICA+Ci1zdHJ1Y3QgcmVwbGFjZV91bm5hbWVkX2FyZzwgYXJnPCAtMSA+LCBBcmcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgQXJnOjpuZXh0IG5leHQ7Ci0gICAgdHlwZWRlZiBBcmcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgaW50IE4sIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPCBhcmc8Tj4sIFUxLCBVMiwgVTMsIFU0LCBVNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTxtcGw6OmFyZzxOPiwgVTEsIFUyLCBVMywgVTQsIFU1Pjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgLCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPCBiaW5kPCBGLFQxLFQyLFQzLFQ0LFQ1ID4sIFUxLCBVMiwgVTMsIFU0LCBVNSA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kPCBGLFQxLFQyLFQzLFQ0LFQ1ID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBiaW5kMAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMDwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQwPEY+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMDxGPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDEsIGJpbmQwKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDEsIGJpbmQwKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYmluZDwgRixuYSxuYSxuYSxuYSxuYSA+Ci0gICAgOiBiaW5kMDxGPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBiaW5kMQotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMwotICAgICwgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kMTwgRixUMSA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMTwgRixUMSA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoMiwgYmluZDEpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMiwgYmluZDEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYmluZDwgRixUMSxuYSxuYSxuYSxuYSA+Ci0gICAgOiBiaW5kMTwgRixUMSA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBiaW5kMgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMixuMiA+IHIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjp0eXBlIGEyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjpuZXh0IG4zOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMjwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIKLSAgICAsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQyPCBGLFQxLFQyID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQyPCBGLFQxLFQyID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygzLCBiaW5kMikKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygzLCBiaW5kMikKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYmluZDwgRixUMSxUMixuYSxuYSxuYSA+Ci0gICAgOiBiaW5kMjwgRixUMSxUMiA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYmluZDMKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDEsbjEgPiByMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6dHlwZSBhMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6bmV4dCBuMjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGExLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDIsbjIgPiByMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6dHlwZSBhMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6bmV4dCBuMzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDMsbjMgPiByMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6dHlwZSBhMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6bmV4dCBuNDsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDM8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBVMQotICAgICwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQzPCBGLFQxLFQyLFQzID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQzPCBGLFQxLFQyLFQzID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg0LCBiaW5kMykKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg0LCBiaW5kMykKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGJpbmQ8IEYsVDEsVDIsVDMsbmEsbmEgPgotICAgIDogYmluZDM8IEYsVDEsVDIsVDMgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBiaW5kNAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMixuMiA+IHIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjp0eXBlIGEyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjpuZXh0IG4zOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMyxuMyA+IHIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjp0eXBlIGEzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjpuZXh0IG40OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUNCxuNCA+IHI0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI0Ojp0eXBlIGE0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI0OjpuZXh0IG41OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTQsVTEsVTIsVTMsVTQsVTUgPiB0NDsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNDwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlLCB0eXBlbmFtZSB0Mzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSB0NDo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg1LCBiaW5kNCkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg1LCBiaW5kNCkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBiaW5kPCBGLFQxLFQyLFQzLFQ0LG5hID4KLSAgICA6IGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGJpbmQ1Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IEYsIG1wbDo6YXJnPDE+ID4gcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6OnR5cGUgYTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6Om5leHQgbjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMCxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQxLG4xID4gcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6OnR5cGUgYTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6Om5leHQgbjI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQyLG4yID4gcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6OnR5cGUgYTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6Om5leHQgbjM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQzLG4zID4gcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6OnR5cGUgYTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6Om5leHQgbjQ7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQ0LG40ID4gcjQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjQ6OnR5cGUgYTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjQ6Om5leHQgbjU7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhNCxVMSxVMixVMyxVNCxVNSA+IHQ0OwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQ1LG41ID4gcjU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjU6OnR5cGUgYTU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjU6Om5leHQgbjY7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhNSxVMSxVMixVMyxVNCxVNSA+IHQ1OwotICAgICAgICAvLy8KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUsIHR5cGVuYW1lIHQzOjp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQ0Ojp0eXBlLCB0eXBlbmFtZSB0NTo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kNTwgRixUMSxUMixUMyxUNCxUNSA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kNTwgRixUMSxUMixUMyxUNCxUNSA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNiwgYmluZDUpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNiwgYmluZDUpCi0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGJpbmQKLSAgICA6IGJpbmQ1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9iaW5kX2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvYmluZF9md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YTA0NmVlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9iaW5kX2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9iaW5kX2Z3ZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hCi0gICAgPgotc3RydWN0IGJpbmQ7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBiaW5kMDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBiaW5kMTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYmluZDI7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBiaW5kMzsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBiaW5kNDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYmluZDU7Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9iaXRhbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2JpdGFuZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQwNTQyYjQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2JpdGFuZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTcgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vIENvcHlyaWdodCBKYWFwIFN1dGVyIDIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYml0YW5kLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgYml0YW5kX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBiaXRhbmRfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGJpdGFuZF9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGJpdGFuZF9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBiaXRhbmRfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGJpdGFuZF9pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGJpdGFuZF90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgYml0YW5kXwotICAgIDogYml0YW5kXzwgYml0YW5kXzwgYml0YW5kXzwgYml0YW5kXzwgTjEsTjIgPiwgTjM+LCBOND4sIE41PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdGFuZF8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMywgdHlwZW5hbWUgTjQKLSAgICA+Ci1zdHJ1Y3QgYml0YW5kXzwgTjEsTjIsTjMsTjQsbmEgPgotCi0gICAgOiBiaXRhbmRfPCBiaXRhbmRfPCBiaXRhbmRfPCBOMSxOMiA+LCBOMz4sIE40PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0YW5kXwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zCi0gICAgPgotc3RydWN0IGJpdGFuZF88IE4xLE4yLE4zLG5hLG5hID4KLQotICAgIDogYml0YW5kXzwgYml0YW5kXzwgTjEsTjIgPiwgTjM+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRhbmRfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBuYSwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBiaXRhbmRfPCBOMSxOMixuYSxuYSxuYSA+Ci0gICAgOiBiaXRhbmRfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBiaXRhbmRfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGJpdGFuZF90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRhbmRfCi0gICAgICAgICwgKCBOMSwgTjIsIG5hLCBuYSwgbmEgKQotICAgICAgICApCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgYml0YW5kXykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIFQgbjEsIFQgbjIgPgotc3RydWN0IGJpdGFuZF93a25kCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKFQsIHZhbHVlICA9IChuMSAmIG4yKSk7Ci0gICAgdHlwZWRlZiBpbnRlZ3JhbF9jPCBULHZhbHVlID4gdHlwZTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGJpdGFuZF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGF1eDo6Yml0YW5kX3drbmQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsIE4xOjp2YWx1ZQotICAgICAgICAgICAgLCBOMjo6dmFsdWUKLSAgICAgICAgICAgID46OnR5cGUKLQotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9iaXRvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvYml0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NDg4NGRlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9iaXRvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTcgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vIENvcHlyaWdodCBKYWFwIFN1dGVyIDIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYml0b3IuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBiaXRvcl9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgYml0b3JfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGJpdG9yX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgYml0b3JfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgYml0b3JfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGJpdG9yX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYml0b3JfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IGJpdG9yXwotICAgIDogYml0b3JfPCBiaXRvcl88IGJpdG9yXzwgYml0b3JfPCBOMSxOMiA+LCBOMz4sIE40PiwgTjU+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMsIHR5cGVuYW1lIE40Ci0gICAgPgotc3RydWN0IGJpdG9yXzwgTjEsTjIsTjMsTjQsbmEgPgotCi0gICAgOiBiaXRvcl88IGJpdG9yXzwgYml0b3JfPCBOMSxOMiA+LCBOMz4sIE40PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMKLSAgICA+Ci1zdHJ1Y3QgYml0b3JfPCBOMSxOMixOMyxuYSxuYSA+Ci0KLSAgICA6IGJpdG9yXzwgYml0b3JfPCBOMSxOMiA+LCBOMz4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdG9yXwotICAgICAgICAsICggTjEsIE4yLCBOMywgbmEsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgYml0b3JfPCBOMSxOMixuYSxuYSxuYSA+Ci0gICAgOiBiaXRvcl9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGJpdG9yX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBiaXRvcl90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgbmEsIG5hLCBuYSApCi0gICAgICAgICkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBiaXRvcl8pCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCB0eXBlbmFtZSBULCBUIG4xLCBUIG4yID4KLXN0cnVjdCBiaXRvcl93a25kCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKFQsIHZhbHVlICA9IChuMSB8IG4yKSk7Ci0gICAgdHlwZWRlZiBpbnRlZ3JhbF9jPCBULHZhbHVlID4gdHlwZTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGJpdG9yX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogYXV4OjpiaXRvcl93a25kPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCBOMTo6dmFsdWUKLSAgICAgICAgICAgICwgTjI6OnZhbHVlCi0gICAgICAgICAgICA+Ojp0eXBlCi0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvYml0eG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9iaXR4b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMzkyZTJhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9iaXR4b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTU3ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLyBDb3B5cmlnaHQgSmFhcCBTdXRlciAyMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2JpdHhvci5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGJpdHhvcl9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgYml0eG9yX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBiaXR4b3JfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBiaXR4b3JfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgYml0eG9yX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBiaXR4b3JfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBiaXR4b3JfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IGJpdHhvcl8KLSAgICA6IGJpdHhvcl88IGJpdHhvcl88IGJpdHhvcl88IGJpdHhvcl88IE4xLE4yID4sIE4zPiwgTjQ+LCBONT4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXR4b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMsIHR5cGVuYW1lIE40Ci0gICAgPgotc3RydWN0IGJpdHhvcl88IE4xLE4yLE4zLE40LG5hID4KLQotICAgIDogYml0eG9yXzwgYml0eG9yXzwgYml0eG9yXzwgTjEsTjIgPiwgTjM+LCBOND4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdHhvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMwotICAgID4KLXN0cnVjdCBiaXR4b3JfPCBOMSxOMixOMyxuYSxuYSA+Ci0KLSAgICA6IGJpdHhvcl88IGJpdHhvcl88IE4xLE4yID4sIE4zPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0eG9yXwotICAgICAgICAsICggTjEsIE4yLCBOMywgbmEsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgYml0eG9yXzwgTjEsTjIsbmEsbmEsbmEgPgotICAgIDogYml0eG9yX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgYml0eG9yX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBiaXR4b3JfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0eG9yXwotICAgICAgICAsICggTjEsIE4yLCBuYSwgbmEsIG5hICkKLSAgICAgICAgKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIGJpdHhvcl8pCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCB0eXBlbmFtZSBULCBUIG4xLCBUIG4yID4KLXN0cnVjdCBiaXR4b3Jfd2tuZAotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChULCB2YWx1ZSAgPSAobjEgXiBuMikpOwotICAgIHR5cGVkZWYgaW50ZWdyYWxfYzwgVCx2YWx1ZSA+IHR5cGU7Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiaXR4b3JfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBhdXg6OmJpdHhvcl93a25kPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCBOMTo6dmFsdWUKLSAgICAgICAgICAgICwgTjI6OnZhbHVlCi0gICAgICAgICAgICA+Ojp0eXBlCi0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvZGVxdWUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2RlcXVlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDYzMWY2Ni4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvZGVxdWUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzIzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2RlcXVlLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwID0gbmEsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEsIHR5cGVuYW1lIFQ2ID0gbmEsIHR5cGVuYW1lIFQ3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ4ID0gbmEsIHR5cGVuYW1lIFQ5ID0gbmEsIHR5cGVuYW1lIFQxMCA9IG5hLCB0eXBlbmFtZSBUMTEgPSBuYQotICAgICwgdHlwZW5hbWUgVDEyID0gbmEsIHR5cGVuYW1lIFQxMyA9IG5hLCB0eXBlbmFtZSBUMTQgPSBuYQotICAgICwgdHlwZW5hbWUgVDE1ID0gbmEsIHR5cGVuYW1lIFQxNiA9IG5hLCB0eXBlbmFtZSBUMTcgPSBuYQotICAgICwgdHlwZW5hbWUgVDE4ID0gbmEsIHR5cGVuYW1lIFQxOSA9IG5hCi0gICAgPgotc3RydWN0IGRlcXVlOwotCi10ZW1wbGF0ZTwKLSAgICAgCi0gICAgPgotc3RydWN0IGRlcXVlPAotICAgICAgICAgIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMDwgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjA8ICA+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+Ci1zdHJ1Y3QgZGVxdWUKLSAgICA6IHZlY3RvcjIwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjIwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2RpdmlkZXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2RpdmlkZXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZjFlMDRmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9kaXZpZGVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9kaXZpZGVzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgZGl2aWRlc19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgZGl2aWRlc19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgZGl2aWRlc19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGRpdmlkZXNfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZGl2aWRlc19pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZGl2aWRlc19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGRpdmlkZXNfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IGRpdmlkZXMKLSAgICA6IGRpdmlkZXM8IGRpdmlkZXM8IGRpdmlkZXM8IGRpdmlkZXM8IE4xLE4yID4sIE4zPiwgTjQ+LCBONT4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBkaXZpZGVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMsIHR5cGVuYW1lIE40Ci0gICAgPgotc3RydWN0IGRpdmlkZXM8IE4xLE4yLE4zLE40LG5hID4KLQotICAgIDogZGl2aWRlczwgZGl2aWRlczwgZGl2aWRlczwgTjEsTjIgPiwgTjM+LCBOND4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGRpdmlkZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMwotICAgID4KLXN0cnVjdCBkaXZpZGVzPCBOMSxOMixOMyxuYSxuYSA+Ci0KLSAgICA6IGRpdmlkZXM8IGRpdmlkZXM8IE4xLE4yID4sIE4zPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgZGl2aWRlcwotICAgICAgICAsICggTjEsIE4yLCBOMywgbmEsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgZGl2aWRlczwgTjEsTjIsbmEsbmEsbmEgPgotICAgIDogZGl2aWRlc19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGRpdmlkZXNfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGRpdmlkZXNfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgZGl2aWRlcwotICAgICAgICAsICggTjEsIE4yLCBuYSwgbmEsIG5hICkKLSAgICAgICAgKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIGRpdmlkZXMpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCB0eXBlbmFtZSBULCBUIG4xLCBUIG4yID4KLXN0cnVjdCBkaXZpZGVzX3drbmQKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoVCwgdmFsdWUgID0gKG4xIC8gbjIpKTsKLSAgICB0eXBlZGVmIGludGVncmFsX2M8IFQsdmFsdWUgPiB0eXBlOwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZGl2aWRlc19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGF1eDo6ZGl2aWRlc193a25kPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCBOMTo6dmFsdWUKLSAgICAgICAgICAgICwgTjI6OnZhbHVlCi0gICAgICAgICAgICA+Ojp0eXBlCi0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvZXF1YWxfdG8uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2VxdWFsX3RvLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjJmMWUyYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvZXF1YWxfdG8uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTggKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvZXF1YWxfdG8uaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBlcXVhbF90b19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgZXF1YWxfdG9faW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGVxdWFsX3RvX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgZXF1YWxfdG9faW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZXF1YWxfdG9faW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGVxdWFsX3RvX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgZXF1YWxfdG9fdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGVxdWFsX3RvCi0KLSAgICA6IGVxdWFsX3RvX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgZXF1YWxfdG9fdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGVxdWFsX3RvX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGVxdWFsX3RvLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBlcXVhbF90bykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlcXVhbF90b19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgewotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPQotICAgICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUgPT0KLSAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSApCi0gICAgICAgICAgICApOwotICAgICAgICB0eXBlZGVmIGJvb2xfPHZhbHVlPiB0eXBlOwotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2ZvbGRfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvZm9sZF9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDk0Y2Q0MS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvZm9sZF9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE4MCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2ZvbGRfaW1wbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgaW50IE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw8IDAsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiBzdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMCBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsPCAxLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAKLQotICAgIHR5cGVkZWYgc3RhdGUxIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjEgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDwgMixGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIAotCi0gICAgdHlwZWRlZiBzdGF0ZTIgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMiBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsPCAzLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBzdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgIAotCi0gICAgdHlwZWRlZiBzdGF0ZTMgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMyBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsPCA0LEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBzdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMywgdHlwZW5hbWUgZGVyZWY8aXRlcjM+Ojp0eXBlID46OnR5cGUgc3RhdGU0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAKLQotICAgIHR5cGVkZWYgc3RhdGU0IHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjQgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGwKLXsKLSAgICB0eXBlZGVmIGZvbGRfaW1wbDwKLSAgICAgICAgICA0Ci0gICAgICAgICwgRmlyc3QKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgU3RhdGUKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiBjaHVua187Ci0KLSAgICB0eXBlZGVmIGZvbGRfaW1wbDwKLSAgICAgICAgICAoIChOIC0gNCkgPCAwID8gMCA6IE4gLSA0ICkKLSAgICAgICAgLCB0eXBlbmFtZSBjaHVua186Oml0ZXJhdG9yCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGNodW5rXzo6c3RhdGUKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiByZXNfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjpzdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw8IC0xLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLSAgICA6IGZvbGRfaW1wbDwKLSAgICAgICAgICAtMQotICAgICAgICAsIHR5cGVuYW1lIG1wbDo6bmV4dDxGaXJzdD46OnR5cGUKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgYXBwbHkyPEZvcndhcmRPcCxTdGF0ZSwgdHlwZW5hbWUgZGVyZWY8Rmlyc3Q+Ojp0eXBlPjo6dHlwZQotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsPCAtMSxMYXN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgTGFzdCBpdGVyYXRvcjsKLX07Ci0KLX19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2Z1bGxfbGFtYmRhLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9mdWxsX2xhbWJkYS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkYTk3MWUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2Z1bGxfbGFtYmRhLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU1NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2Z1bGxfbGFtYmRhLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICBib29sIEMxID0gZmFsc2UsIGJvb2wgQzIgPSBmYWxzZSwgYm9vbCBDMyA9IGZhbHNlLCBib29sIEM0ID0gZmFsc2UKLSAgICAsIGJvb2wgQzUgPSBmYWxzZQotICAgID4KLXN0cnVjdCBsYW1iZGFfb3IKLSAgICA6IHRydWVfCi17Ci19OwotCi10ZW1wbGF0ZTw+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+IGxlX3Jlc3VsdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjpyZXN1bHRfIHJlc3VsdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjp0eXBlIHR5cGU7Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoMiwgbGFtYmRhKQotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvZ3JlYXRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvZ3JlYXRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE2YTFiMzAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2dyZWF0ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTggKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvZ3JlYXRlci5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGdyZWF0ZXJfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGdyZWF0ZXJfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGdyZWF0ZXJfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBncmVhdGVyX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGdyZWF0ZXJfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGdyZWF0ZXJfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBncmVhdGVyX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBncmVhdGVyCi0KLSAgICA6IGdyZWF0ZXJfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBncmVhdGVyX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBncmVhdGVyX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGdyZWF0ZXIsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIGdyZWF0ZXIpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZ3JlYXRlcl9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgewotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPQotICAgICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUgPgotICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlICkKLSAgICAgICAgICAgICk7Ci0gICAgICAgIHR5cGVkZWYgYm9vbF88dmFsdWU+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvZ3JlYXRlcl9lcXVhbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvZ3JlYXRlcl9lcXVhbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkzZWE2Y2EuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2dyZWF0ZXJfZXF1YWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTggKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvZ3JlYXRlcl9lcXVhbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGdyZWF0ZXJfZXF1YWxfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGdyZWF0ZXJfZXF1YWxfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGdyZWF0ZXJfZXF1YWxfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBncmVhdGVyX2VxdWFsX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGdyZWF0ZXJfZXF1YWxfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGdyZWF0ZXJfZXF1YWxfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBncmVhdGVyX2VxdWFsX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBncmVhdGVyX2VxdWFsCi0KLSAgICA6IGdyZWF0ZXJfZXF1YWxfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBncmVhdGVyX2VxdWFsX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBncmVhdGVyX2VxdWFsX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGdyZWF0ZXJfZXF1YWwsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIGdyZWF0ZXJfZXF1YWwpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZ3JlYXRlcl9lcXVhbF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgewotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPQotICAgICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUgPj0KLSAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSApCi0gICAgICAgICAgICApOwotICAgICAgICB0eXBlZGVmIGJvb2xfPHZhbHVlPiB0eXBlOwotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2luaGVyaXQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2luaGVyaXQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOTdmMzEzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9pbmhlcml0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0MSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9pbmhlcml0LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQyKQotICAgID4KLXN0cnVjdCBpbmhlcml0MgotICAgIDogVDEsIFQyCi17Ci0gICAgdHlwZWRlZiBpbmhlcml0MiB0eXBlOwotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgaW5oZXJpdDIsIChUMSwgVDIpKQotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQxID4KLXN0cnVjdCBpbmhlcml0MjwgVDEsZW1wdHlfYmFzZSA+Ci17Ci0gICAgdHlwZWRlZiBUMSB0eXBlOwotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygyLCBpbmhlcml0MiwgKFQxLCBlbXB0eV9iYXNlKSkKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUMiA+Ci1zdHJ1Y3QgaW5oZXJpdDI8IGVtcHR5X2Jhc2UsVDIgPgotewotICAgIHR5cGVkZWYgVDIgdHlwZTsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoMiwgaW5oZXJpdDIsIChlbXB0eV9iYXNlLCBUMikpCi19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaW5oZXJpdDI8IGVtcHR5X2Jhc2UsZW1wdHlfYmFzZSA+Ci17Ci0gICAgdHlwZWRlZiBlbXB0eV9iYXNlIHR5cGU7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKDIsIGluaGVyaXQyLCAoZW1wdHlfYmFzZSwgZW1wdHlfYmFzZSkpCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoMiwgaW5oZXJpdDIpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgID4KLXN0cnVjdCBpbmhlcml0MwotICAgIDogaW5oZXJpdDI8Ci0gICAgICAgICAgdHlwZW5hbWUgaW5oZXJpdDI8Ci0gICAgICAgICAgICAgIFQxLCBUMgotICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAsIFQzCi0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDMKLSAgICAgICAgLCBpbmhlcml0MwotICAgICAgICAsICggVDEsIFQyLCBUMykKLSAgICAgICAgKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDMsIGluaGVyaXQzKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEsIHR5cGVuYW1lIFQ0ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgaW5oZXJpdDQKLSAgICA6IGluaGVyaXQyPAotICAgICAgICAgIHR5cGVuYW1lIGluaGVyaXQzPAotICAgICAgICAgICAgICBUMSwgVDIsIFQzCi0gICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICwgVDQKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNAotICAgICAgICAsIGluaGVyaXQ0Ci0gICAgICAgICwgKCBUMSwgVDIsIFQzLCBUNCkKLSAgICAgICAgKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDQsIGluaGVyaXQ0KQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEsIHR5cGVuYW1lIFQ0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ1ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgaW5oZXJpdDUKLSAgICA6IGluaGVyaXQyPAotICAgICAgICAgIHR5cGVuYW1lIGluaGVyaXQ0PAotICAgICAgICAgICAgICBUMSwgVDIsIFQzLCBUNAotICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAsIFQ1Ci0gICAgICAgID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIDUKLSAgICAgICAgLCBpbmhlcml0NQotICAgICAgICAsICggVDEsIFQyLCBUMywgVDQsIFQ1KQotICAgICAgICApCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoNSwgaW5oZXJpdDUpCi0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEgPSBlbXB0eV9iYXNlLCB0eXBlbmFtZSBUMiA9IGVtcHR5X2Jhc2UKLSAgICAsIHR5cGVuYW1lIFQzID0gZW1wdHlfYmFzZSwgdHlwZW5hbWUgVDQgPSBlbXB0eV9iYXNlCi0gICAgLCB0eXBlbmFtZSBUNSA9IGVtcHR5X2Jhc2UKLSAgICA+Ci1zdHJ1Y3QgaW5oZXJpdAotICAgIDogaW5oZXJpdDU8IFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpbmhlcml0PCBuYSxuYSxuYSxuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0KLSAgICAgICAgICB0eXBlbmFtZSBUMSA9IGVtcHR5X2Jhc2UsIHR5cGVuYW1lIFQyID0gZW1wdHlfYmFzZQotICAgICAgICAsIHR5cGVuYW1lIFQzID0gZW1wdHlfYmFzZSwgdHlwZW5hbWUgVDQgPSBlbXB0eV9iYXNlCi0gICAgICAgICwgdHlwZW5hbWUgVDUgPSBlbXB0eV9iYXNlCi0KLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgICAgICA6IGluaGVyaXQ8IFQxLFQyLFQzLFQ0LFQ1ID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQ19MQU1CREEoNSwgaW5oZXJpdCkKLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQ19BUklUWSg1LCBpbmhlcml0KQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDX1RFTVBMQVRFX0FSSVRZKDUsIDUsIGluaGVyaXQpCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvaXRlcl9mb2xkX2lmX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2l0ZXJfZm9sZF9pZl9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTc0YmQ4My4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvaXRlcl9mb2xkX2lmX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTMzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLyBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwMS0yMDAyCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vaXRlcl9mb2xkX2lmX2ltcGwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IsIHR5cGVuYW1lIFN0YXRlID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfbnVsbF9zdGVwCi17Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8IGJvb2wgPgotc3RydWN0IGl0ZXJfZm9sZF9pZl9zdGVwX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgU3RhdGVPcAotICAgICAgICAsIHR5cGVuYW1lIEl0ZXJhdG9yT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgU3RhdGVPcCxTdGF0ZSxJdGVyYXRvciA+Ojp0eXBlIHN0YXRlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEl0ZXJhdG9yT3A6OnR5cGUgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfc3RlcF9pbXBsPGZhbHNlPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZU9wCi0gICAgICAgICwgdHlwZW5hbWUgSXRlcmF0b3JPcAotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcmF0b3I7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgSXRlcmF0b3IKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICAsIHR5cGVuYW1lIFByZWRpY2F0ZQotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IFByZWRpY2F0ZSxTdGF0ZSxJdGVyYXRvciA+Ojp0eXBlIG5vdF9sYXN0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcl9mb2xkX2lmX3N0ZXBfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChub3RfbGFzdCk6OnZhbHVlCi0gICAgICAgID46OnRlbXBsYXRlIHJlc3VsdF88IEl0ZXJhdG9yLFN0YXRlLEZvcndhcmRPcCwgbXBsOjpuZXh0PEl0ZXJhdG9yPiA+IGltcGxfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBpbXBsXzo6c3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpbXBsXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgUHJlZGljYXRlCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pZl9iYWNrd2FyZF9zdGVwCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IFByZWRpY2F0ZSxTdGF0ZSxJdGVyYXRvciA+Ojp0eXBlIG5vdF9sYXN0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcl9mb2xkX2lmX3N0ZXBfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChub3RfbGFzdCk6OnZhbHVlCi0gICAgICAgID46OnRlbXBsYXRlIHJlc3VsdF88IEl0ZXJhdG9yLFN0YXRlLEJhY2t3YXJkT3AsIGlkZW50aXR5PEl0ZXJhdG9yPiA+IGltcGxfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBpbXBsXzo6c3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpbXBsXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkUHJlZGljYXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZFByZWRpY2F0ZQotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfaW1wbAotewotIHByaXZhdGU6Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfbnVsbF9zdGVwPCBJdGVyYXRvcixTdGF0ZSA+IGZvcndhcmRfc3RlcDA7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAwOjppdGVyYXRvciwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMDo6c3RhdGUsIEZvcndhcmRPcCwgRm9yd2FyZFByZWRpY2F0ZSA+IGZvcndhcmRfc3RlcDE7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAxOjppdGVyYXRvciwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMTo6c3RhdGUsIEZvcndhcmRPcCwgRm9yd2FyZFByZWRpY2F0ZSA+IGZvcndhcmRfc3RlcDI7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAyOjppdGVyYXRvciwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMjo6c3RhdGUsIEZvcndhcmRPcCwgRm9yd2FyZFByZWRpY2F0ZSA+IGZvcndhcmRfc3RlcDM7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfZm9yd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAzOjppdGVyYXRvciwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMzo6c3RhdGUsIEZvcndhcmRPcCwgRm9yd2FyZFByZWRpY2F0ZSA+IGZvcndhcmRfc3RlcDQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICB0eXBlbmFtZSBmb3J3YXJkX3N0ZXA0Ojpub3RfbGFzdAotICAgICAgICAsIGl0ZXJfZm9sZF9pZl9pbXBsPAotICAgICAgICAgICAgICB0eXBlbmFtZSBmb3J3YXJkX3N0ZXA0OjppdGVyYXRvcgotICAgICAgICAgICAgLCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXA0OjpzdGF0ZQotICAgICAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgICAgICwgRm9yd2FyZFByZWRpY2F0ZQotICAgICAgICAgICAgLCBCYWNrd2FyZE9wCi0gICAgICAgICAgICAsIEJhY2t3YXJkUHJlZGljYXRlCi0gICAgICAgICAgICA+Ci0gICAgICAgICwgaXRlcl9mb2xkX2lmX251bGxfc3RlcDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgZm9yd2FyZF9zdGVwNDo6aXRlcmF0b3IKLSAgICAgICAgICAgICwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwNDo6c3RhdGUKLSAgICAgICAgICAgID4KLSAgICAgICAgPjo6dHlwZSBiYWNrd2FyZF9zdGVwNDsKLQotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2JhY2t3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDM6Oml0ZXJhdG9yLCB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwNDo6c3RhdGUsIEJhY2t3YXJkT3AsIEJhY2t3YXJkUHJlZGljYXRlID4gYmFja3dhcmRfc3RlcDM7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfYmFja3dhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMjo6aXRlcmF0b3IsIHR5cGVuYW1lIGJhY2t3YXJkX3N0ZXAzOjpzdGF0ZSwgQmFja3dhcmRPcCwgQmFja3dhcmRQcmVkaWNhdGUgPiBiYWNrd2FyZF9zdGVwMjsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9iYWNrd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAxOjppdGVyYXRvciwgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDI6OnN0YXRlLCBCYWNrd2FyZE9wLCBCYWNrd2FyZFByZWRpY2F0ZSA+IGJhY2t3YXJkX3N0ZXAxOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2JhY2t3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDA6Oml0ZXJhdG9yLCB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwMTo6c3RhdGUsIEJhY2t3YXJkT3AsIEJhY2t3YXJkUHJlZGljYXRlID4gYmFja3dhcmRfc3RlcDA7Ci0gICAgCi0KLSBwdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwMDo6c3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwNDo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi19fX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9pdGVyX2ZvbGRfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvaXRlcl9mb2xkX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYzA4YjMwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9pdGVyX2ZvbGRfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxODAgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9pdGVyX2ZvbGRfaW1wbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgaW50IE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsPCAwLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjAgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsPCAxLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUwLGl0ZXIwID46OnR5cGUgc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAKLQotICAgIHR5cGVkZWYgc3RhdGUxIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjEgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsPCAyLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUwLGl0ZXIwID46OnR5cGUgc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMSxpdGVyMSA+Ojp0eXBlIHN0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHN0YXRlMiBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIyIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDwgMyxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMCxpdGVyMCA+Ojp0eXBlIHN0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTEsaXRlcjEgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUyLGl0ZXIyID46OnR5cGUgc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAKLQotICAgIHR5cGVkZWYgc3RhdGUzIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjMgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsPCA0LEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUwLGl0ZXIwID46OnR5cGUgc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMSxpdGVyMSA+Ojp0eXBlIHN0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTIsaXRlcjIgPjo6dHlwZSBzdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUzLGl0ZXIzID46OnR5cGUgc3RhdGU0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAKLQotICAgIHR5cGVkZWYgc3RhdGU0IHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjQgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbAotewotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2ltcGw8Ci0gICAgICAgICAgNAotICAgICAgICAsIEZpcnN0Ci0gICAgICAgICwgTGFzdAotICAgICAgICAsIFN0YXRlCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gY2h1bmtfOwotCi0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaW1wbDwKLSAgICAgICAgICAoIChOIC0gNCkgPCAwID8gMCA6IE4gLSA0ICkKLSAgICAgICAgLCB0eXBlbmFtZSBjaHVua186Oml0ZXJhdG9yCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGNodW5rXzo6c3RhdGUKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiByZXNfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjpzdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDwgLTEsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotICAgIDogaXRlcl9mb2xkX2ltcGw8Ci0gICAgICAgICAgLTEKLSAgICAgICAgLCB0eXBlbmFtZSBtcGw6Om5leHQ8Rmlyc3Q+Ojp0eXBlCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLFN0YXRlLEZpcnN0ID46OnR5cGUKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGl0ZXJfZm9sZF9pbXBsPCAtMSxMYXN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgTGFzdCBpdGVyYXRvcjsKLX07Ci0KLX19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2xhbWJkYV9ub19jdHBzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9sYW1iZGFfbm9fY3Rwcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ1ZjVmNmIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2xhbWJkYV9ub19jdHBzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIyOSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9ub19jdHBzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICBib29sIEMxID0gZmFsc2UsIGJvb2wgQzIgPSBmYWxzZSwgYm9vbCBDMyA9IGZhbHNlLCBib29sIEM0ID0gZmFsc2UKLSAgICAsIGJvb2wgQzUgPSBmYWxzZQotICAgID4KLXN0cnVjdCBsYW1iZGFfb3IKLSAgICA6IHRydWVfCi17Ci19OwotCi10ZW1wbGF0ZTw+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+Ojppc19sZQotewotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2xlc3MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2xlc3MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYTZmMDg4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9sZXNzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk4ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2xlc3MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBsZXNzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBsZXNzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBsZXNzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgbGVzc19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBsZXNzX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBsZXNzX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgbGVzc190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgbGVzcwotCi0gICAgOiBsZXNzX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgbGVzc190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgbGVzc190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBsZXNzLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBsZXNzKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxlc3NfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgIHsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlID4KLSAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSApCi0gICAgICAgICAgICApOwotICAgICAgICB0eXBlZGVmIGJvb2xfPHZhbHVlPiB0eXBlOwotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2xlc3NfZXF1YWwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2xlc3NfZXF1YWwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYTA2Zjk3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9sZXNzX2VxdWFsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk4ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2xlc3NfZXF1YWwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBsZXNzX2VxdWFsX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBsZXNzX2VxdWFsX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBsZXNzX2VxdWFsX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgbGVzc19lcXVhbF9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBsZXNzX2VxdWFsX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBsZXNzX2VxdWFsX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgbGVzc19lcXVhbF90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgbGVzc19lcXVhbAotCi0gICAgOiBsZXNzX2VxdWFsX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgbGVzc19lcXVhbF90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgbGVzc19lcXVhbF90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBsZXNzX2VxdWFsLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBsZXNzX2VxdWFsKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxlc3NfZXF1YWxfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgIHsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlIDw9Ci0gICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUgKQotICAgICAgICAgICAgKTsKLSAgICAgICAgdHlwZWRlZiBib29sXzx2YWx1ZT4gdHlwZTsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9saXN0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9saXN0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGNjOGM0Ni4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvbGlzdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbGlzdC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCA9IG5hLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hLCB0eXBlbmFtZSBUNiA9IG5hLCB0eXBlbmFtZSBUNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUOCA9IG5hLCB0eXBlbmFtZSBUOSA9IG5hLCB0eXBlbmFtZSBUMTAgPSBuYSwgdHlwZW5hbWUgVDExID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxMiA9IG5hLCB0eXBlbmFtZSBUMTMgPSBuYSwgdHlwZW5hbWUgVDE0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxNSA9IG5hLCB0eXBlbmFtZSBUMTYgPSBuYSwgdHlwZW5hbWUgVDE3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxOCA9IG5hLCB0eXBlbmFtZSBUMTkgPSBuYQotICAgID4KLXN0cnVjdCBsaXN0OwotCi10ZW1wbGF0ZTwKLSAgICAgCi0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MDwgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QwPCAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMAotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDE8VDA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTxUMD46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MjwgVDAsVDEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDI8IFQwLFQxID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDM8IFQwLFQxLFQyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QzPCBUMCxUMSxUMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0NDwgVDAsVDEsVDIsVDMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDQ8IFQwLFQxLFQyLFQzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0NTwgVDAsVDEsVDIsVDMsVDQgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDU8IFQwLFQxLFQyLFQzLFQ0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0NzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0ODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOAotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwCi0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyCi0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzCi0gICAgPgotc3RydWN0IGxpc3Q8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICA+Ci1zdHJ1Y3QgbGlzdDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDE1PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTU8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNQotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDE2PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTY8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNgotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IGxpc3QxNzwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNwotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBsaXN0MTg8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOAotICAgID4KLXN0cnVjdCBsaXN0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgbmEKLSAgICAgICAgPgotICAgIDogbGlzdDE5PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4ID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgID4KLXN0cnVjdCBsaXN0Ci0gICAgOiBsaXN0MjA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDIwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL2xpc3RfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvbGlzdF9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTQzZjM4Zi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvbGlzdF9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyOCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9saXN0X2MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCA9IExPTkdfTUFYLCBsb25nIEMxID0gTE9OR19NQVgsIGxvbmcgQzIgPSBMT05HX01BWAotICAgICwgbG9uZyBDMyA9IExPTkdfTUFYLCBsb25nIEM0ID0gTE9OR19NQVgsIGxvbmcgQzUgPSBMT05HX01BWAotICAgICwgbG9uZyBDNiA9IExPTkdfTUFYLCBsb25nIEM3ID0gTE9OR19NQVgsIGxvbmcgQzggPSBMT05HX01BWAotICAgICwgbG9uZyBDOSA9IExPTkdfTUFYLCBsb25nIEMxMCA9IExPTkdfTUFYLCBsb25nIEMxMSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxMiA9IExPTkdfTUFYLCBsb25nIEMxMyA9IExPTkdfTUFYLCBsb25nIEMxNCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxNSA9IExPTkdfTUFYLCBsb25nIEMxNiA9IExPTkdfTUFYLCBsb25nIEMxNyA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxOCA9IExPTkdfTUFYLCBsb25nIEMxOSA9IExPTkdfTUFYCi0gICAgPgotc3RydWN0IGxpc3RfYzsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+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+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgPgotc3RydWN0IGxpc3RfYwotICAgIDogbGlzdDIwX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgQzE4LCBDMTkKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDIwX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9tYXAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL21hcC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc5NzRmMjguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL21hcC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbWFwLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwID0gbmEsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEsIHR5cGVuYW1lIFQ2ID0gbmEsIHR5cGVuYW1lIFQ3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ4ID0gbmEsIHR5cGVuYW1lIFQ5ID0gbmEsIHR5cGVuYW1lIFQxMCA9IG5hLCB0eXBlbmFtZSBUMTEgPSBuYQotICAgICwgdHlwZW5hbWUgVDEyID0gbmEsIHR5cGVuYW1lIFQxMyA9IG5hLCB0eXBlbmFtZSBUMTQgPSBuYQotICAgICwgdHlwZW5hbWUgVDE1ID0gbmEsIHR5cGVuYW1lIFQxNiA9IG5hLCB0eXBlbmFtZSBUMTcgPSBuYQotICAgICwgdHlwZW5hbWUgVDE4ID0gbmEsIHR5cGVuYW1lIFQxOSA9IG5hCi0gICAgPgotc3RydWN0IG1hcDsKLQotdGVtcGxhdGU8Ci0gICAgIAotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+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+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAyMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9taW51cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvbWludXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NWNjYzhiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9taW51cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTYgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbWludXMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBtaW51c19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgbWludXNfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IG1pbnVzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgbWludXNfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgbWludXNfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IG1pbnVzX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgbWludXNfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IG1pbnVzCi0gICAgOiBtaW51czwgbWludXM8IG1pbnVzPCBtaW51czwgTjEsTjIgPiwgTjM+LCBOND4sIE41PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIG1pbnVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgTjUgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMsIHR5cGVuYW1lIE40Ci0gICAgPgotc3RydWN0IG1pbnVzPCBOMSxOMixOMyxONCxuYSA+Ci0KLSAgICA6IG1pbnVzPCBtaW51czwgbWludXM8IE4xLE4yID4sIE4zPiwgTjQ+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBtaW51cwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zCi0gICAgPgotc3RydWN0IG1pbnVzPCBOMSxOMixOMyxuYSxuYSA+Ci0KLSAgICA6IG1pbnVzPCBtaW51czwgTjEsTjIgPiwgTjM+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBtaW51cwotICAgICAgICAsICggTjEsIE4yLCBOMywgbmEsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgbWludXM8IE4xLE4yLG5hLG5hLG5hID4KLSAgICA6IG1pbnVzX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgbWludXNfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIG1pbnVzX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIG1pbnVzCi0gICAgICAgICwgKCBOMSwgTjIsIG5hLCBuYSwgbmEgKQotICAgICAgICApCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgbWludXMpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCB0eXBlbmFtZSBULCBUIG4xLCBUIG4yID4KLXN0cnVjdCBtaW51c193a25kCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKFQsIHZhbHVlICA9IChuMSAtIG4yKSk7Ci0gICAgdHlwZWRlZiBpbnRlZ3JhbF9jPCBULHZhbHVlID4gdHlwZTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IG1pbnVzX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogYXV4OjptaW51c193a25kPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCBOMTo6dmFsdWUKLSAgICAgICAgICAgICwgTjI6OnZhbHVlCi0gICAgICAgICAgICA+Ojp0eXBlCi0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvbW9kdWx1cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvbW9kdWx1cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiNjZhYjYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL21vZHVsdXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTExICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL21vZHVsdXMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBtb2R1bHVzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBtb2R1bHVzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBtb2R1bHVzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgbW9kdWx1c19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBtb2R1bHVzX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBtb2R1bHVzX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgbW9kdWx1c190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgbW9kdWx1cwotCi0gICAgOiBtb2R1bHVzX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgbW9kdWx1c190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgbW9kdWx1c190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBtb2R1bHVzLCAoTjEsIE4yKSkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBtb2R1bHVzKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgVCBuMSwgVCBuMiA+Ci1zdHJ1Y3QgbW9kdWx1c193a25kCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKFQsIHZhbHVlICA9IChuMSAlIG4yKSk7Ci0gICAgdHlwZWRlZiBpbnRlZ3JhbF9jPCBULHZhbHVlID4gdHlwZTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IG1vZHVsdXNfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBhdXg6Om1vZHVsdXNfd2tuZDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgTjE6OnZhbHVlCi0gICAgICAgICAgICAsIE4yOjp2YWx1ZQotICAgICAgICAgICAgPjo6dHlwZQotCi0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL25vdF9lcXVhbF90by5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvbm90X2VxdWFsX3RvLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDQwMWI0MS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvbm90X2VxdWFsX3RvLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk4ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL25vdF9lcXVhbF90by5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IG5vdF9lcXVhbF90b19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgbm90X2VxdWFsX3RvX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBub3RfZXF1YWxfdG9faW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBub3RfZXF1YWxfdG9faW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3Qgbm90X2VxdWFsX3RvX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBub3RfZXF1YWxfdG9faW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBub3RfZXF1YWxfdG9fdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IG5vdF9lcXVhbF90bwotCi0gICAgOiBub3RfZXF1YWxfdG9faW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBub3RfZXF1YWxfdG9fdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIG5vdF9lcXVhbF90b190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLCBub3RfZXF1YWxfdG8sIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIG5vdF9lcXVhbF90bykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBub3RfZXF1YWxfdG9faW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgIHsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlICE9Ci0gICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUgKQotICAgICAgICAgICAgKTsKLSAgICAgICAgdHlwZWRlZiBib29sXzx2YWx1ZT4gdHlwZTsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9vci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvb3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYWU4ZWRmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9vci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9vci5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBib29sIENfLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCA+Ci1zdHJ1Y3Qgb3JfaW1wbAotICAgIDogdHJ1ZV8KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCA+Ci1zdHJ1Y3Qgb3JfaW1wbDwgZmFsc2UsVDEsVDIsVDMsVDQgPgotICAgIDogb3JfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX05FU1RFRF9UWVBFX1dLTkQoVDEpOjp2YWx1ZQotICAgICAgICAsIFQyLCBUMywgVDQKLSAgICAgICAgLCBmYWxzZV8KLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG9yX2ltcGw8Ci0gICAgICAgICAgZmFsc2UKLSAgICAgICAgLCBmYWxzZV8sIGZhbHNlXywgZmFsc2VfLCBmYWxzZV8KLSAgICAgICAgPgotICAgIDogZmFsc2VfCi17Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQxKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMikKLSAgICAsIHR5cGVuYW1lIFQzID0gZmFsc2VfLCB0eXBlbmFtZSBUNCA9IGZhbHNlXywgdHlwZW5hbWUgVDUgPSBmYWxzZV8KLSAgICA+Ci1zdHJ1Y3Qgb3JfCi0KLSAgICA6IGF1eDo6b3JfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX05FU1RFRF9UWVBFX1dLTkQoVDEpOjp2YWx1ZQotICAgICAgICAsIFQyLCBUMywgVDQsIFQ1Ci0gICAgICAgID4KLQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIG9yXwotICAgICAgICAsICggVDEsIFQyLCBUMywgVDQsIFQ1KQotICAgICAgICApCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKAotICAgICAgMgotICAgICwgNQotICAgICwgb3JfCi0gICAgKQotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL3BsYWNlaG9sZGVycy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvcGxhY2Vob2xkZXJzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2EyOGMwOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvcGxhY2Vob2xkZXJzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwNSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8gQ29weXJpZ2h0IFBldGVyIERpbW92IDIwMDEtMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9wbGFjZWhvbGRlcnMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8IC0xID4gXzsKLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfKQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfOwotfQotCi19fQotCi0vLy8gYWd1cnQsIDE3L21hci8wMjogb25lIG1vcmUgcGxhY2Vob2xkZXIgZm9yIHRoZSBsYXN0ICdhcHBseSMnIAotLy8vIHNwZWNpYWxpemF0aW9uCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzwxPiBfMTsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF8xKQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfMTsKLX0KLQotfX0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDI+IF8yOwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzIpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol8yOwotfQotCi19fQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8Mz4gXzM7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfMykKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzM7Ci19Ci0KLX19Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzw0PiBfNDsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF80KQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfNDsKLX0KLQotfX0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDU+IF81OwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzUpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol81OwotfQotCi19fQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8Nj4gXzY7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfNikKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzY7Ci19Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvcGx1cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvcGx1cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJiNjFiYjEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL3BsdXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTU2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3BsdXMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBwbHVzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBwbHVzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBwbHVzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgcGx1c19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBwbHVzX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBwbHVzX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgcGx1c190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgcGx1cwotICAgIDogcGx1czwgcGx1czwgcGx1czwgcGx1czwgTjEsTjIgPiwgTjM+LCBOND4sIE41PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoCi0gICAgICAgICAgNQotICAgICAgICAsIHBsdXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMywgdHlwZW5hbWUgTjQKLSAgICA+Ci1zdHJ1Y3QgcGx1czwgTjEsTjIsTjMsTjQsbmEgPgotCi0gICAgOiBwbHVzPCBwbHVzPCBwbHVzPCBOMSxOMiA+LCBOMz4sIE40PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgcGx1cwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zCi0gICAgPgotc3RydWN0IHBsdXM8IE4xLE4yLE4zLG5hLG5hID4KLQotICAgIDogcGx1czwgcGx1czwgTjEsTjIgPiwgTjM+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBwbHVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBuYSwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBwbHVzPCBOMSxOMixuYSxuYSxuYSA+Ci0gICAgOiBwbHVzX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgcGx1c190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgcGx1c190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBwbHVzCi0gICAgICAgICwgKCBOMSwgTjIsIG5hLCBuYSwgbmEgKQotICAgICAgICApCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgcGx1cykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIFQgbjEsIFQgbjIgPgotc3RydWN0IHBsdXNfd2tuZAotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChULCB2YWx1ZSAgPSAobjEgKyBuMikpOwotICAgIHR5cGVkZWYgaW50ZWdyYWxfYzwgVCx2YWx1ZSA+IHR5cGU7Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwbHVzX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogYXV4OjpwbHVzX3drbmQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsIE4xOjp2YWx1ZQotICAgICAgICAgICAgLCBOMjo6dmFsdWUKLSAgICAgICAgICAgID46OnR5cGUKLQotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9xdW90ZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvcXVvdGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZTc3ZmJhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9xdW90ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9xdW90ZS5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvcmV2ZXJzZV9mb2xkX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL3JldmVyc2VfZm9sZF9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2QzYWQ3NS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvcmV2ZXJzZV9mb2xkX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjMxICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vcmV2ZXJzZV9mb2xkX2ltcGwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIGxvbmcgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+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+Ojp0eXBlPjo6dHlwZQotICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiBuZXN0ZWRfc3RlcDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPAotICAgICAgICAgIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBuZXN0ZWRfc3RlcDo6c3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBkZXJlZjxGaXJzdD46OnR5cGUKLSAgICAgICAgPjo6dHlwZSBzdGF0ZTsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX3N0ZXA6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZF9pbXBsPCAtMSxMYXN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiBMYXN0IGl0ZXJhdG9yOwotfTsKLQotfX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMzYmY1MDguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL3JldmVyc2VfaXRlcl9mb2xkX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjMxICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgbG9uZyBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2ltcGw8IDAsRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiBmd2Rfc3RhdGUwIGJrd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMCBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbDwgMSxGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTAsaXRlcjAgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAKLQotICAgIHR5cGVkZWYgZndkX3N0YXRlMSBia3dkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMSxpdGVyMCA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMSBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbDwgMixGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTAsaXRlcjAgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTEsaXRlcjEgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAKLQotICAgIHR5cGVkZWYgZndkX3N0YXRlMiBia3dkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMixpdGVyMSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUxLGl0ZXIwID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjIgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2ltcGw8IDMsRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUwLGl0ZXIwID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUxLGl0ZXIxID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUyLGl0ZXIyID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTMgYmt3ZF9zdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTMsaXRlcjIgPjo6dHlwZSBia3dkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMixpdGVyMSA+Ojp0eXBlIGJrd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUxLGl0ZXIwID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGJrd2Rfc3RhdGUwIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjMgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2ltcGw8IDQsRmlyc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUwLGl0ZXIwID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUxLGl0ZXIxID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUyLGl0ZXIyID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUzLGl0ZXIzID46OnR5cGUgZndkX3N0YXRlNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTQgYmt3ZF9zdGF0ZTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTQsaXRlcjMgPjo6dHlwZSBia3dkX3N0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMyxpdGVyMiA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUyLGl0ZXIxID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTEsaXRlcjAgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAKLQotICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyNCBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgbG9uZyBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsCi17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUwLGl0ZXIwID46OnR5cGUgZndkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUxLGl0ZXIxID46OnR5cGUgZndkX3N0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUyLGl0ZXIyID46OnR5cGUgZndkX3N0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxmd2Rfc3RhdGUzLGl0ZXIzID46OnR5cGUgZndkX3N0YXRlNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHJldmVyc2VfaXRlcl9mb2xkX2ltcGw8Ci0gICAgICAgICAgKCAoTiAtIDQpIDwgMCA/IDAgOiBOIC0gNCApCi0gICAgICAgICwgaXRlcjQKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgZndkX3N0YXRlNAotICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiBuZXN0ZWRfY2h1bms7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9jaHVuazo6c3RhdGUgYmt3ZF9zdGF0ZTQ7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTQsaXRlcjMgPjo6dHlwZSBia3dkX3N0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMyxpdGVyMiA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUyLGl0ZXIxID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTEsaXRlcjAgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAKLQotICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfY2h1bms6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsPCAtMSxGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIHJldmVyc2VfaXRlcl9mb2xkX2ltcGw8Ci0gICAgICAgICAgLTEKLSAgICAgICAgLCB0eXBlbmFtZSBtcGw6Om5leHQ8Rmlyc3Q+Ojp0eXBlCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLFN0YXRlLEZpcnN0ID46OnR5cGUKLSAgICAgICAgLCBCYWNrd2FyZE9wCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gbmVzdGVkX3N0ZXA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwKLSAgICAgICAgICBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgbmVzdGVkX3N0ZXA6OnN0YXRlCi0gICAgICAgICwgRmlyc3QKLSAgICAgICAgPjo6dHlwZSBzdGF0ZTsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX3N0ZXA6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2ltcGw8IC0xLExhc3QsTGFzdCxTdGF0ZSxCYWNrd2FyZE9wLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIExhc3QgaXRlcmF0b3I7Ci19OwotCi19fX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9zZXQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL3NldC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRjNGNhMTEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL3NldC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvc2V0LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwID0gbmEsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEsIHR5cGVuYW1lIFQ2ID0gbmEsIHR5cGVuYW1lIFQ3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ4ID0gbmEsIHR5cGVuYW1lIFQ5ID0gbmEsIHR5cGVuYW1lIFQxMCA9IG5hLCB0eXBlbmFtZSBUMTEgPSBuYQotICAgICwgdHlwZW5hbWUgVDEyID0gbmEsIHR5cGVuYW1lIFQxMyA9IG5hLCB0eXBlbmFtZSBUMTQgPSBuYQotICAgICwgdHlwZW5hbWUgVDE1ID0gbmEsIHR5cGVuYW1lIFQxNiA9IG5hLCB0eXBlbmFtZSBUMTcgPSBuYQotICAgICwgdHlwZW5hbWUgVDE4ID0gbmEsIHR5cGVuYW1lIFQxOSA9IG5hCi0gICAgPgotc3RydWN0IHNldDsKLQotdGVtcGxhdGU8Ci0gICAgIAotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+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+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQyMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9zZXRfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvc2V0X2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZWYyZmRlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9zZXRfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjggKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvc2V0X2MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCA9IExPTkdfTUFYLCBsb25nIEMxID0gTE9OR19NQVgsIGxvbmcgQzIgPSBMT05HX01BWAotICAgICwgbG9uZyBDMyA9IExPTkdfTUFYLCBsb25nIEM0ID0gTE9OR19NQVgsIGxvbmcgQzUgPSBMT05HX01BWAotICAgICwgbG9uZyBDNiA9IExPTkdfTUFYLCBsb25nIEM3ID0gTE9OR19NQVgsIGxvbmcgQzggPSBMT05HX01BWAotICAgICwgbG9uZyBDOSA9IExPTkdfTUFYLCBsb25nIEMxMCA9IExPTkdfTUFYLCBsb25nIEMxMSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxMiA9IExPTkdfTUFYLCBsb25nIEMxMyA9IExPTkdfTUFYLCBsb25nIEMxNCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxNSA9IExPTkdfTUFYLCBsb25nIEMxNiA9IExPTkdfTUFYLCBsb25nIEMxNyA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxOCA9IExPTkdfTUFYLCBsb25nIEMxOSA9IExPTkdfTUFYCi0gICAgPgotc3RydWN0IHNldF9jOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICA+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+Ci1zdHJ1Y3Qgc2V0X2MKLSAgICA6IHNldDIwX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgQzE4LCBDMTkKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MjBfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL3NoaWZ0X2xlZnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL3NoaWZ0X2xlZnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYmM5ZTZmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9zaGlmdF9sZWZ0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExMCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8gQ29weXJpZ2h0IEphYXAgU3V0ZXIgMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9zaGlmdF9sZWZ0LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3Qgc2hpZnRfbGVmdF9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgc2hpZnRfbGVmdF9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgc2hpZnRfbGVmdF9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IHNoaWZ0X2xlZnRfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3Qgc2hpZnRfbGVmdF9pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3Qgc2hpZnRfbGVmdF9pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHNoaWZ0X2xlZnRfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IHNoaWZ0X2xlZnQKLQotICAgIDogc2hpZnRfbGVmdF9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIHNoaWZ0X2xlZnRfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIHNoaWZ0X2xlZnRfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgc2hpZnRfbGVmdCwgKE4xLCBOMikpCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgc2hpZnRfbGVmdCkKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHR5cGVuYW1lIFNoaWZ0LCBUIG4sIFNoaWZ0IHMgPgotc3RydWN0IHNoaWZ0X2xlZnRfd2tuZAotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChULCB2YWx1ZSAgPSAobiA8PCBzKSk7Ci0gICAgdHlwZWRlZiBpbnRlZ3JhbF9jPCBULHZhbHVlID4gdHlwZTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IHNoaWZ0X2xlZnRfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOLCB0eXBlbmFtZSBTID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogYXV4OjpzaGlmdF9sZWZ0X3drbmQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIE46OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgUzo6dmFsdWVfdHlwZQotICAgICAgICAgICAgLCBOOjp2YWx1ZQotICAgICAgICAgICAgLCBTOjp2YWx1ZQotICAgICAgICAgICAgPjo6dHlwZQotCi0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL3NoaWZ0X3JpZ2h0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC9zaGlmdF9yaWdodC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmYjkxNmUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL3NoaWZ0X3JpZ2h0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExMCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8gQ29weXJpZ2h0IEphYXAgU3V0ZXIgMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9zaGlmdF9yaWdodC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IHNoaWZ0X3JpZ2h0X2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBzaGlmdF9yaWdodF9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgc2hpZnRfcmlnaHRfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBzaGlmdF9yaWdodF9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBzaGlmdF9yaWdodF9pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3Qgc2hpZnRfcmlnaHRfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBzaGlmdF9yaWdodF90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3Qgc2hpZnRfcmlnaHQKLQotICAgIDogc2hpZnRfcmlnaHRfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBzaGlmdF9yaWdodF90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgc2hpZnRfcmlnaHRfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMiwgc2hpZnRfcmlnaHQsIChOMSwgTjIpKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIHNoaWZ0X3JpZ2h0KQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgU2hpZnQsIFQgbiwgU2hpZnQgcyA+Ci1zdHJ1Y3Qgc2hpZnRfcmlnaHRfd2tuZAotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChULCB2YWx1ZSAgPSAobiA+PiBzKSk7Ci0gICAgdHlwZWRlZiBpbnRlZ3JhbF9jPCBULHZhbHVlID4gdHlwZTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IHNoaWZ0X3JpZ2h0X2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTiwgdHlwZW5hbWUgUyA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGF1eDo6c2hpZnRfcmlnaHRfd2tuZDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgTjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBTOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAsIE46OnZhbHVlCi0gICAgICAgICAgICAsIFM6OnZhbHVlCi0gICAgICAgICAgICA+Ojp0eXBlCi0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvdGVtcGxhdGVfYXJpdHkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL3RlbXBsYXRlX2FyaXR5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjUwNTc4Zi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvdGVtcGxhdGVfYXJpdHkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy90ZW1wbGF0ZV9hcml0eS5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBib29sID4KLXN0cnVjdCB0ZW1wbGF0ZV9hcml0eV9pbXBsCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYgPiBzdHJ1Y3QgcmVzdWx0XwotICAgICAgICA6IG1wbDo6aW50XzwgLTEgPgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHRlbXBsYXRlX2FyaXR5X2ltcGw8dHJ1ZT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiA+IHN0cnVjdCByZXN1bHRfCi0gICAgICAgIDogRjo6YXJpdHkKLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGID4KLXN0cnVjdCB0ZW1wbGF0ZV9hcml0eQotICAgIDogdGVtcGxhdGVfYXJpdHlfaW1wbDwgOjpuZG5ib29zdDo6bXBsOjphdXg6Omhhc19yZWJpbmQ8Rj46OnZhbHVlID4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPEY+Ci17Ci19OwotCi19fX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL3RpbWVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC90aW1lcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZhNTQwNzYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL3RpbWVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC90aW1lcy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IHRpbWVzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCB0aW1lc19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgdGltZXNfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCB0aW1lc19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCB0aW1lc19pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgdGltZXNfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCB0aW1lc190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgdGltZXMKLSAgICA6IHRpbWVzPCB0aW1lczwgdGltZXM8IHRpbWVzPCBOMSxOMiA+LCBOMz4sIE40PiwgTjU+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA1Ci0gICAgICAgICwgdGltZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBONSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMywgdHlwZW5hbWUgTjQKLSAgICA+Ci1zdHJ1Y3QgdGltZXM8IE4xLE4yLE4zLE40LG5hID4KLQotICAgIDogdGltZXM8IHRpbWVzPCB0aW1lczwgTjEsTjIgPiwgTjM+LCBOND4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIHRpbWVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMKLSAgICA+Ci1zdHJ1Y3QgdGltZXM8IE4xLE4yLE4zLG5hLG5hID4KLQotICAgIDogdGltZXM8IHRpbWVzPCBOMSxOMiA+LCBOMz4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIHRpbWVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBuYSwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCB0aW1lczwgTjEsTjIsbmEsbmEsbmEgPgotICAgIDogdGltZXNfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSB0aW1lc190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgdGltZXNfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgdGltZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgbmEsIG5hLCBuYSApCi0gICAgICAgICkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCB0aW1lcykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIFQgbjEsIFQgbjIgPgotc3RydWN0IHRpbWVzX3drbmQKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoVCwgdmFsdWUgID0gKG4xICogbjIpKTsKLSAgICB0eXBlZGVmIGludGVncmFsX2M8IFQsdmFsdWUgPiB0eXBlOwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdGltZXNfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBhdXg6OnRpbWVzX3drbmQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsIE4xOjp2YWx1ZQotICAgICAgICAgICAgLCBOMjo6dmFsdWUKLSAgICAgICAgICAgID46OnR5cGUKLQotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC91bnBhY2tfYXJncy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvdW5wYWNrX2FyZ3MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZWMzMWFmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC91bnBhY2tfYXJncy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDItMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC91bnBhY2tfYXJncy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBpbnQgc2l6ZSwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPgotc3RydWN0IHVucGFja19hcmdzX2ltcGw8IDAsRixBcmdzID4KLSAgICA6IGFwcGx5MDwKLSAgICAgICAgICBGCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4KLXN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPCAxLEYsQXJncyA+Ci0gICAgOiBhcHBseTE8Ci0gICAgICAgICAgRgotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMCA+Ojp0eXBlCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4KLXN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPCAyLEYsQXJncyA+Ci0gICAgOiBhcHBseTI8Ci0gICAgICAgICAgRgotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMCA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDEgPjo6dHlwZQotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDwgMyxGLEFyZ3MgPgotICAgIDogYXBwbHkzPAotICAgICAgICAgIEYKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDAgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywxID46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDIgPjo6dHlwZQotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDwgNCxGLEFyZ3MgPgotICAgIDogYXBwbHk0PAotICAgICAgICAgIEYKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDAgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywxID46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDIgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywzID46OnR5cGUKLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPgotc3RydWN0IHVucGFja19hcmdzX2ltcGw8IDUsRixBcmdzID4KLSAgICA6IGFwcGx5NTwKLSAgICAgICAgICBGCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywwID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMSA+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywyID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMyA+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncyw0ID46OnR5cGUKLSAgICAgICAgPgotewotfTsKLQotfQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3MKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgQXJncyA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogYXV4Ojp1bnBhY2tfYXJnc19pbXBsPCBzaXplPEFyZ3M+Ojp2YWx1ZSxGLCBBcmdzID4KLQotICAgIHsKLSAgICB9OwotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9QQVNTX1RIUk9VR0hfTEFNQkRBX1NQRUMoMSwgdW5wYWNrX2FyZ3MpCi0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC92ZWN0b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL3ZlY3Rvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRmNjc1ODkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fdHRwL3ZlY3Rvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdmVjdG9yLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwID0gbmEsIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ0ID0gbmEsIHR5cGVuYW1lIFQ1ID0gbmEsIHR5cGVuYW1lIFQ2ID0gbmEsIHR5cGVuYW1lIFQ3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQ4ID0gbmEsIHR5cGVuYW1lIFQ5ID0gbmEsIHR5cGVuYW1lIFQxMCA9IG5hLCB0eXBlbmFtZSBUMTEgPSBuYQotICAgICwgdHlwZW5hbWUgVDEyID0gbmEsIHR5cGVuYW1lIFQxMyA9IG5hLCB0eXBlbmFtZSBUMTQgPSBuYQotICAgICwgdHlwZW5hbWUgVDE1ID0gbmEsIHR5cGVuYW1lIFQxNiA9IG5hLCB0eXBlbmFtZSBUMTcgPSBuYQotICAgICwgdHlwZW5hbWUgVDE4ID0gbmEsIHR5cGVuYW1lIFQxOSA9IG5hCi0gICAgPgotc3RydWN0IHZlY3RvcjsKLQotdGVtcGxhdGU8Ci0gICAgIAotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+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+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IyMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC92ZWN0b3JfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9ub190dHAvdmVjdG9yX2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMmZiZGI0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL25vX3R0cC92ZWN0b3JfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMDkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdmVjdG9yX2MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCA9IExPTkdfTUFYLCBsb25nIEMxID0gTE9OR19NQVgsIGxvbmcgQzIgPSBMT05HX01BWAotICAgICwgbG9uZyBDMyA9IExPTkdfTUFYLCBsb25nIEM0ID0gTE9OR19NQVgsIGxvbmcgQzUgPSBMT05HX01BWAotICAgICwgbG9uZyBDNiA9IExPTkdfTUFYLCBsb25nIEM3ID0gTE9OR19NQVgsIGxvbmcgQzggPSBMT05HX01BWAotICAgICwgbG9uZyBDOSA9IExPTkdfTUFYLCBsb25nIEMxMCA9IExPTkdfTUFYLCBsb25nIEMxMSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxMiA9IExPTkdfTUFYLCBsb25nIEMxMyA9IExPTkdfTUFYLCBsb25nIEMxNCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxNSA9IExPTkdfTUFYLCBsb25nIEMxNiA9IExPTkdfTUFYLCBsb25nIEMxNyA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMxOCA9IExPTkdfTUFYLCBsb25nIEMxOSA9IExPTkdfTUFYCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMF9jPFQ+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IwX2M8VD46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxX2M8IFQsIFQoQzApID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjFfYzwgVCwgVChDMCkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjJfYzwgVCwgVChDMCksIFQoQzEpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjJfYzwgVCwgVChDMCksIFQoQzEpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMgotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IzX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMikgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yM19jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMwotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I0X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjRfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMykgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjVfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjVfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I2X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNl9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNgotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I3X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjdfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNikgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjhfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjhfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I5X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yOV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOQotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjExX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTFfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMQotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTJfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEyX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxM19jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxM19jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE0X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMykgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTRfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTVfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE1X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNl9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNl9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE3X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNikgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTdfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNwotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMThfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSwgVChDMTcpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE4X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNiksIFQoQzE3KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgQzE4LCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxOV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpLCBUKEMxNyksIFQoQzE4KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxOV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpLCBUKEMxNyksIFQoQzE4KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZSAobm90IGEgc3BlY2lhbGl6YXRpb24hKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNCwgbG9uZyBDMTUsIGxvbmcgQzE2LCBsb25nIEMxNywgbG9uZyBDMTgsIGxvbmcgQzE5Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jCi0gICAgOiB2ZWN0b3IyMF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpLCBUKEMxNyksIFQoQzE4KSwgVChDMTkpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjIwX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNiksIFQoQzE3KSwgVChDMTgpLCBUKEMxOSkgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vYWR2YW5jZV9iYWNrd2FyZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9hZHZhbmNlX2JhY2t3YXJkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGUwYzgyOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9hZHZhbmNlX2JhY2t3YXJkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk3ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vYWR2YW5jZV9iYWNrd2FyZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBsb25nIE4gPiBzdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDsKLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkPDA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIGl0ZXIwIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkPDE+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiBpdGVyMSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9iYWNrd2FyZDwyPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIGl0ZXIyIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkPDM+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIGl0ZXIzIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkPDQ+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAgICAgdHlwZWRlZiBpdGVyNCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgbG9uZyBOID4KLXN0cnVjdCBhZHZhbmNlX2JhY2t3YXJkCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBhZHZhbmNlX2JhY2t3YXJkPDQ+Ci0gICAgICAgICAgICAsIEl0ZXJhdG9yCi0gICAgICAgICAgICA+Ojp0eXBlIGNodW5rX3Jlc3VsdF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgYWR2YW5jZV9iYWNrd2FyZDwoCi0gICAgICAgICAgICAgICAgKE4gLSA0KSA8IDAKLSAgICAgICAgICAgICAgICAgICAgPyAwCi0gICAgICAgICAgICAgICAgICAgIDogTiAtIDQKLSAgICAgICAgICAgICAgICAgICAgKT4KLSAgICAgICAgICAgICwgY2h1bmtfcmVzdWx0XwotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi19fX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vYWR2YW5jZV9mb3J3YXJkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2FkdmFuY2VfZm9yd2FyZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzYTVhZmQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vYWR2YW5jZV9mb3J3YXJkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk3ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vYWR2YW5jZV9mb3J3YXJkLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGxvbmcgTiA+IHN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkPDA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIGl0ZXIwIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ8MT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjEgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFkdmFuY2VfZm9yd2FyZDwyPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICAgICAgdHlwZWRlZiBpdGVyMiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkPDM+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgICAgICB0eXBlZGVmIGl0ZXIzIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhZHZhbmNlX2ZvcndhcmQ8ND4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgaXRlcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgICAgIHR5cGVkZWYgaXRlcjQgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IGxvbmcgTiA+Ci1zdHJ1Y3QgYWR2YW5jZV9mb3J3YXJkCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBhZHZhbmNlX2ZvcndhcmQ8ND4KLSAgICAgICAgICAgICwgSXRlcmF0b3IKLSAgICAgICAgICAgID46OnR5cGUgY2h1bmtfcmVzdWx0XzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXAxPAotICAgICAgICAgICAgICBhZHZhbmNlX2ZvcndhcmQ8KAotICAgICAgICAgICAgICAgIChOIC0gNCkgPCAwCi0gICAgICAgICAgICAgICAgICAgID8gMAotICAgICAgICAgICAgICAgICAgICA6IE4gLSA0Ci0gICAgICAgICAgICAgICAgICAgICk+Ci0gICAgICAgICAgICAsIGNodW5rX3Jlc3VsdF8KLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotfX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2FuZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9hbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyODA5Mjc0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2FuZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hbmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgYm9vbCBDXywgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQgPgotc3RydWN0IGFuZF9pbXBsCi0gICAgOiBmYWxzZV8KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCA+Ci1zdHJ1Y3QgYW5kX2ltcGw8IHRydWUsVDEsVDIsVDMsVDQgPgotICAgIDogYW5kX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVFlQRV9XS05EKFQxKTo6dmFsdWUKLSAgICAgICAgLCBUMiwgVDMsIFQ0Ci0gICAgICAgICwgdHJ1ZV8KLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGFuZF9pbXBsPAotICAgICAgICAgIHRydWUKLSAgICAgICAgLCB0cnVlXywgdHJ1ZV8sIHRydWVfLCB0cnVlXwotICAgICAgICA+Ci0gICAgOiB0cnVlXwotewotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDIpCi0gICAgLCB0eXBlbmFtZSBUMyA9IHRydWVfLCB0eXBlbmFtZSBUNCA9IHRydWVfLCB0eXBlbmFtZSBUNSA9IHRydWVfCi0gICAgPgotc3RydWN0IGFuZF8KLQotICAgIDogYXV4OjphbmRfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX05FU1RFRF9UWVBFX1dLTkQoVDEpOjp2YWx1ZQotICAgICAgICAsIFQyLCBUMywgVDQsIFQ1Ci0gICAgICAgID4KLQotewotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigKLSAgICAgIDIKLSAgICAsIDUKLSAgICAsIGFuZF8KLSAgICApCi0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9hcHBseS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9hcHBseS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEyMGVjNDYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vYXBwbHkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTM5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2FwcGx5LmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkwCi0KLSAgICA6IGFwcGx5X3dyYXAwPAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgIAotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk8IEYsbmEsbmEsbmEsbmEsbmEgPgotICAgIDogYXBwbHkwPEY+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGFwcGx5MQotCi0gICAgOiBhcHBseV93cmFwMTwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAgLCBUMQotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGFwcGx5PCBGLFQxLG5hLG5hLG5hLG5hID4KLSAgICA6IGFwcGx5MTwgRixUMSA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBhcHBseTIKLQotICAgIDogYXBwbHlfd3JhcDI8Ci0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgICwgVDEsIFQyCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGFwcGx5PCBGLFQxLFQyLG5hLG5hLG5hID4KLSAgICA6IGFwcGx5MjwgRixUMSxUMiA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkzCi0KLSAgICA6IGFwcGx5X3dyYXAzPAotICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxGPjo6dHlwZQotICAgICAgICAsIFQxLCBUMiwgVDMKLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGFwcGx5PCBGLFQxLFQyLFQzLG5hLG5hID4KLSAgICA6IGFwcGx5MzwgRixUMSxUMixUMyA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGFwcGx5NAotCi0gICAgOiBhcHBseV93cmFwNDwKLSAgICAgICAgICB0eXBlbmFtZSBsYW1iZGE8Rj46OnR5cGUKLSAgICAgICAgLCBUMSwgVDIsIFQzLCBUNAotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGFwcGx5PCBGLFQxLFQyLFQzLFQ0LG5hID4KLSAgICA6IGFwcGx5NDwgRixUMSxUMixUMyxUNCA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBhcHBseTUKLQotICAgIDogYXBwbHlfd3JhcDU8Ci0gICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPEY+Ojp0eXBlCi0gICAgICAgICwgVDEsIFQyLCBUMywgVDQsIFQ1Ci0gICAgICAgID4KLXsKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGFwcGx5Ci0gICAgOiBhcHBseTU8IEYsVDEsVDIsVDMsVDQsVDUgPgotewotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vYXBwbHlfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2FwcGx5X2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjY2M5NGUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vYXBwbHlfZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2FwcGx5X2Z3ZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hCi0gICAgPgotc3RydWN0IGFwcGx5OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkwOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IGFwcGx5MTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkyOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYXBwbHkzOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGFwcGx5NDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgYXBwbHk1OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9hcHBseV93cmFwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2FwcGx5X3dyYXAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYzkwMjAyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2FwcGx5X3dyYXAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXBwbHlfd3JhcC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGCi0KLSAgICAsIHR5cGVuYW1lIGhhc19hcHBseV8gPSB0eXBlbmFtZSBhdXg6Omhhc19hcHBseTxGPjo6dHlwZQotCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXAwCi0KLSAgICA6IEY6OnRlbXBsYXRlIGFwcGx5PCAgPgotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYgPgotc3RydWN0IGFwcGx5X3dyYXAwPCBGLHRydWVfID4KLSAgICA6IEY6OmFwcGx5Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxCi0KLSAgICA+Ci1zdHJ1Y3QgYXBwbHlfd3JhcDEKLQotICAgIDogRjo6dGVtcGxhdGUgYXBwbHk8VDE+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXAyCi0KLSAgICA6IEY6OnRlbXBsYXRlIGFwcGx5PCBUMSxUMiA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLQotICAgID4KLXN0cnVjdCBhcHBseV93cmFwMwotCi0gICAgOiBGOjp0ZW1wbGF0ZSBhcHBseTwgVDEsVDIsVDMgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXA0Ci0KLSAgICA6IEY6OnRlbXBsYXRlIGFwcGx5PCBUMSxUMixUMyxUNCA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotCi0gICAgPgotc3RydWN0IGFwcGx5X3dyYXA1Ci0KLSAgICA6IEY6OnRlbXBsYXRlIGFwcGx5PCBUMSxUMixUMyxUNCxUNSA+Ci17Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9hcmcuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vYXJnLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTU0NDc2YS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9hcmcuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTIzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IFBldGVyIERpbW92IDIwMDEtMjAwMgotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2FyZy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8IC0xID4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAtMSk7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdGFnKQotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHR5cGUpCi0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFUxIHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPDE+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMSk7Ci0gICAgdHlwZWRlZiBhcmc8Mj4gbmV4dDsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTEgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8Mj4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAyKTsKLSAgICB0eXBlZGVmIGFyZzwzPiBuZXh0OwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBVMiB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEodHlwZSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGFyZzwzPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDMpOwotICAgIHR5cGVkZWYgYXJnPDQ+IG5leHQ7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdGFnKQotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHR5cGUpCi0KLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIFUzIHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfQVNTRVJUX05PVF9OQSh0eXBlKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYXJnPDQ+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gNCk7Ci0gICAgdHlwZWRlZiBhcmc8NT4gbmV4dDsKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0YWcpCi0gICAgTkROQk9PU1RfTVBMX0FVWF9BUkdfVFlQRURFRihuYSwgdHlwZSkKLQotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVTQgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9BU1NFUlRfTk9UX05BKHR5cGUpOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBhcmc8NT4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSA1KTsKLSAgICB0eXBlZGVmIGFyZzw2PiBuZXh0OwotICAgIE5ETkJPT1NUX01QTF9BVVhfQVJHX1RZUEVERUYobmEsIHRhZykKLSAgICBORE5CT09TVF9NUExfQVVYX0FSR19UWVBFREVGKG5hLCB0eXBlKQotCi0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBVNSB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0FTU0VSVF9OT1RfTkEodHlwZSk7Ci0gICAgfTsKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTk9OVFlQRV9BUklUWV9TUEVDKDEsaW50LCBhcmcpCi0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9iYXNpY19iaW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2Jhc2ljX2JpbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZTBiZjczLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2Jhc2ljX2JpbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDQwICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IFBldGVyIERpbW92IDIwMDEKLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2Jhc2ljX2JpbmQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgLCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnCi17Ci0gICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+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+Ci17Ci19OwotCi0vLy8gaWZfL2V2YWxfaWYgc3BlY2lhbGl6YXRpb25zCi10ZW1wbGF0ZTwgdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMgPiBjbGFzcyBGLCB0eXBlbmFtZSBUYWcgPgotc3RydWN0IHF1b3RlMzsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMgPiBzdHJ1Y3QgaWZfOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBiaW5kMzwKLSAgICAgIHF1b3RlMzwgaWZfLFRhZyA+Ci0gICAgLCBUMSwgVDIsIFQzCi0gICAgPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgbXBsOjphcmc8MT4gbjE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICB0eXBlbmFtZSB0MTo6dHlwZQotICAgICAgICAgICAgLCB0MiwgdDMKLSAgICAgICAgICAgID46OnR5cGUgZl87Ci0KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGZfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMgPiBjbGFzcyBGLCB0eXBlbmFtZSBUYWcKLSAgICA+Ci1zdHJ1Y3QgcXVvdGUzOwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMyA+IHN0cnVjdCBldmFsX2lmOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMwotICAgID4KLXN0cnVjdCBiaW5kMzwKLSAgICAgIHF1b3RlMzwgZXZhbF9pZixUYWcgPgotICAgICwgVDEsIFQyLCBUMwotICAgID4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIG1wbDo6YXJnPDE+IG4xOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgVDEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IFQyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBUMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGV2YWxfaWY8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIHQxOjp0eXBlCi0gICAgICAgICAgICAsIHQyLCB0MwotICAgICAgICAgICAgPjo6dHlwZSBmXzsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZl86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vYmluZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9iaW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDVjZmM2Ny4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9iaW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU2MSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBQZXRlciBEaW1vdiAyMDAxCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYmluZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmcKLXsKLSAgICB0eXBlZGVmIFQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgdHlwZW5hbWUgQXJnCi0gICAgPgotc3RydWN0IHJlcGxhY2VfdW5uYW1lZF9hcmcKLXsKLSAgICB0eXBlZGVmIEFyZyBuZXh0OwotICAgIHR5cGVkZWYgVCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBBcmcKLSAgICA+Ci1zdHJ1Y3QgcmVwbGFjZV91bm5hbWVkX2FyZzwgYXJnPCAtMSA+LCBBcmcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgQXJnOjpuZXh0IG5leHQ7Ci0gICAgdHlwZWRlZiBBcmcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgaW50IE4sIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0LCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPCBhcmc8Tj4sIFUxLCBVMiwgVTMsIFU0LCBVNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTxtcGw6OmFyZzxOPiwgVTEsIFUyLCBVMywgVTQsIFU1Pjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgLCB0eXBlbmFtZSBVNQotICAgID4KLXN0cnVjdCByZXNvbHZlX2JpbmRfYXJnPCBiaW5kPCBGLFQxLFQyLFQzLFQ0LFQ1ID4sIFUxLCBVMiwgVTMsIFU0LCBVNSA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kPCBGLFQxLFQyLFQzLFQ0LFQ1ID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCBiaW5kMAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMDwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQwPEY+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMDxGPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PCBmXyxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9BUklUWV9TUEVDKDEsIGJpbmQwKQotTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDEsIGJpbmQwKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYmluZDwgRixuYSxuYSxuYSxuYSxuYSA+Ci0gICAgOiBiaW5kMDxGPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCBiaW5kMQotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMwotICAgICwgdHlwZW5hbWUgVTQsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kMTwgRixUMSA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kMTwgRixUMSA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoMiwgYmluZDEpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMiwgYmluZDEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYmluZDwgRixUMSxuYSxuYSxuYSxuYSA+Ci0gICAgOiBiaW5kMTwgRixUMSA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBiaW5kMgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMixuMiA+IHIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjp0eXBlIGEyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjpuZXh0IG4zOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwMjwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIKLSAgICAsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQyPCBGLFQxLFQyID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQyPCBGLFQxLFQyID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQygzLCBiaW5kMikKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygzLCBiaW5kMikKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgYmluZDwgRixUMSxUMixuYSxuYSxuYSA+Ci0gICAgOiBiaW5kMjwgRixUMSxUMiA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYmluZDMKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSA9IG5hLCB0eXBlbmFtZSBVMiA9IG5hLCB0eXBlbmFtZSBVMyA9IG5hCi0gICAgICAgICwgdHlwZW5hbWUgVTQgPSBuYSwgdHlwZW5hbWUgVTUgPSBuYQotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0gICAgewotICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgRiwgbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEwLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgZl87Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDEsbjEgPiByMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6dHlwZSBhMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMTo6bmV4dCBuMjsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGExLFUxLFUyLFUzLFU0LFU1ID4gdDE7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDIsbjIgPiByMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6dHlwZSBhMjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMjo6bmV4dCBuMzsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEyLFUxLFUyLFUzLFU0LFU1ID4gdDI7Ci0gICAgICAgIC8vLwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVwbGFjZV91bm5hbWVkX2FyZzwgVDMsbjMgPiByMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6dHlwZSBhMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMzo6bmV4dCBuNDsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlc29sdmVfYmluZF9hcmc8IGEzLFUxLFUyLFUzLFU0LFU1ID4gdDM7Ci0gICAgICAgIC8vLwotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDM8Ci0gICAgICAgICAgICAgIGZfCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQxOjp0eXBlLCB0eXBlbmFtZSB0Mjo6dHlwZSwgdHlwZW5hbWUgdDM6OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLQotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBVMQotICAgICwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQzPCBGLFQxLFQyLFQzID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQzPCBGLFQxLFQyLFQzID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg0LCBiaW5kMykKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg0LCBiaW5kMykKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGJpbmQ8IEYsVDEsVDIsVDMsbmEsbmEgPgotICAgIDogYmluZDM8IEYsVDEsVDIsVDMgPgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBiaW5kNAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBGLCBtcGw6OmFyZzwxPiA+IHIwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjp0eXBlIGEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIwOjpuZXh0IG4xOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTAsVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMixuMiA+IHIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjp0eXBlIGEyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjpuZXh0IG4zOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMyxuMyA+IHIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjp0eXBlIGEzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjpuZXh0IG40OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUNCxuNCA+IHI0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI0Ojp0eXBlIGE0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHI0OjpuZXh0IG41OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTQsVTEsVTIsVTMsVTQsVTUgPiB0NDsKLSAgICAgICAgLy8vCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNDwKLSAgICAgICAgICAgICAgZl8KLSAgICAgICAgICAgICwgdHlwZW5hbWUgdDE6OnR5cGUsIHR5cGVuYW1lIHQyOjp0eXBlLCB0eXBlbmFtZSB0Mzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSB0NDo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNCwgdHlwZW5hbWUgVTUKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwKLSAgICAgIGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4sIFUxLCBVMiwgVTMsIFU0LCBVNQotICAgID4KLXsKLSAgICB0eXBlZGVmIGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4gZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseV93cmFwNTwgZl8sVTEsVTIsVTMsVTQsVTUgPjo6dHlwZSB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyg1LCBiaW5kNCkKLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyg1LCBiaW5kNCkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCBiaW5kPCBGLFQxLFQyLFQzLFQ0LG5hID4KLSAgICA6IGJpbmQ0PCBGLFQxLFQyLFQzLFQ0ID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGJpbmQ1Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IEYsIG1wbDo6YXJnPDE+ID4gcjA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6OnR5cGUgYTA7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjA6Om5leHQgbjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMCxVMSxVMixVMyxVNCxVNSA+Ojp0eXBlIGZfOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQxLG4xID4gcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6OnR5cGUgYTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6Om5leHQgbjI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQyLG4yID4gcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6OnR5cGUgYTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6Om5leHQgbjM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQzLG4zID4gcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6OnR5cGUgYTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6Om5leHQgbjQ7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQ0LG40ID4gcjQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjQ6OnR5cGUgYTQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjQ6Om5leHQgbjU7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhNCxVMSxVMixVMyxVNCxVNSA+IHQ0OwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQ1LG41ID4gcjU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjU6OnR5cGUgYTU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjU6Om5leHQgbjY7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhNSxVMSxVMixVMyxVNCxVNSA+IHQ1OwotICAgICAgICAvLy8KLSAgICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5X3dyYXA1PAotICAgICAgICAgICAgICBmXwotICAgICAgICAgICAgLCB0eXBlbmFtZSB0MTo6dHlwZSwgdHlwZW5hbWUgdDI6OnR5cGUsIHR5cGVuYW1lIHQzOjp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIHQ0Ojp0eXBlLCB0eXBlbmFtZSB0NTo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyLCB0eXBlbmFtZSBVMywgdHlwZW5hbWUgVTQKLSAgICAsIHR5cGVuYW1lIFU1Ci0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBiaW5kNTwgRixUMSxUMixUMyxUNCxUNSA+LCBVMSwgVTIsIFUzLCBVNCwgVTUKLSAgICA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kNTwgRixUMSxUMixUMyxUNCxUNSA+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHlfd3JhcDU8IGZfLFUxLFUyLFUzLFU0LFU1ID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoNiwgYmluZDUpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoNiwgYmluZDUpCi0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGJpbmQKLSAgICA6IGJpbmQ1PCBGLFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLX07Ci0KLS8vLyBpZl8vZXZhbF9pZiBzcGVjaWFsaXphdGlvbnMKLXRlbXBsYXRlPCB0ZW1wbGF0ZTwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMyA+IGNsYXNzIEYsIHR5cGVuYW1lIFRhZyA+Ci1zdHJ1Y3QgcXVvdGUzOwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMyA+IHN0cnVjdCBpZl87Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGJpbmQzPAotICAgICAgcXVvdGUzPCBpZl8sVGFnID4KLSAgICAsIFQxLCBUMiwgVDMKLSAgICA+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgVTEgPSBuYSwgdHlwZW5hbWUgVTIgPSBuYSwgdHlwZW5hbWUgVTMgPSBuYQotICAgICAgICAsIHR5cGVuYW1lIFU0ID0gbmEsIHR5cGVuYW1lIFU1ID0gbmEKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBtcGw6OmFyZzwxPiBuMTsKLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQxLG4xID4gcjE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6OnR5cGUgYTE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjE6Om5leHQgbjI7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMSxVMSxVMixVMyxVNCxVNSA+IHQxOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQyLG4yID4gcjI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6OnR5cGUgYTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjI6Om5leHQgbjM7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMixVMSxVMixVMyxVNCxVNSA+IHQyOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IFQzLG4zID4gcjM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6OnR5cGUgYTM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcjM6Om5leHQgbjQ7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBhMyxVMSxVMixVMyxVNCxVNSA+IHQzOwotICAgICAgICAvLy8KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIHQxOjp0eXBlCi0gICAgICAgICAgICAsIHQyLCB0MwotICAgICAgICAgICAgPjo6dHlwZSBmXzsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZl86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMyA+IGNsYXNzIEYsIHR5cGVuYW1lIFRhZwotICAgID4KLXN0cnVjdCBxdW90ZTM7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzID4gc3RydWN0IGV2YWxfaWY7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IGJpbmQzPAotICAgICAgcXVvdGUzPCBldmFsX2lmLFRhZyA+Ci0gICAgLCBUMSwgVDIsIFQzCi0gICAgPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxID0gbmEsIHR5cGVuYW1lIFUyID0gbmEsIHR5cGVuYW1lIFUzID0gbmEKLSAgICAgICAgLCB0eXBlbmFtZSBVNCA9IG5hLCB0eXBlbmFtZSBVNSA9IG5hCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgbXBsOjphcmc8MT4gbjE7Ci0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMSxuMSA+IHIxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjp0eXBlIGExOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIxOjpuZXh0IG4yOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTEsVTEsVTIsVTMsVTQsVTUgPiB0MTsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMixuMiA+IHIyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjp0eXBlIGEyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIyOjpuZXh0IG4zOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTIsVTEsVTIsVTMsVTQsVTUgPiB0MjsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBUMyxuMyA+IHIzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjp0eXBlIGEzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHIzOjpuZXh0IG40OwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzwgYTMsVTEsVTIsVTMsVTQsVTUgPiB0MzsKLSAgICAgICAgLy8vCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZXZhbF9pZjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgdDE6OnR5cGUKLSAgICAgICAgICAgICwgdDIsIHQzCi0gICAgICAgICAgICA+Ojp0eXBlIGZfOwotCi0gICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBmXzo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9iaW5kX2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9iaW5kX2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlhMDQ2ZWUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vYmluZF9md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYmluZF9md2QuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYQotICAgID4KLXN0cnVjdCBiaW5kOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYKLSAgICA+Ci1zdHJ1Y3QgYmluZDA7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgYmluZDE7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGJpbmQyOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgYmluZDM7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgYmluZDQ7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IGJpbmQ1OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9iaXRhbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vYml0YW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGQ1MGJiZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9iaXRhbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQyICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLyBDb3B5cmlnaHQgSmFhcCBTdXRlciAyMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2JpdGFuZC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGJpdGFuZF9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgYml0YW5kX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBiaXRhbmRfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBiaXRhbmRfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgYml0YW5kX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBiaXRhbmRfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBiaXRhbmRfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IGJpdGFuZF8KLSAgICA6IGJpdGFuZF88IGJpdGFuZF88IGJpdGFuZF88IGJpdGFuZF88IE4xLE4yID4sIE4zPiwgTjQ+LCBONT4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMywgdHlwZW5hbWUgTjQKLSAgICA+Ci1zdHJ1Y3QgYml0YW5kXzwgTjEsTjIsTjMsTjQsbmEgPgotCi0gICAgOiBiaXRhbmRfPCBiaXRhbmRfPCBiaXRhbmRfPCBOMSxOMiA+LCBOMz4sIE40PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0YW5kXwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zCi0gICAgPgotc3RydWN0IGJpdGFuZF88IE4xLE4yLE4zLG5hLG5hID4KLQotICAgIDogYml0YW5kXzwgYml0YW5kXzwgTjEsTjIgPiwgTjM+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRhbmRfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBuYSwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBiaXRhbmRfPCBOMSxOMixuYSxuYSxuYSA+Ci0gICAgOiBiaXRhbmRfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBiaXRhbmRfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGJpdGFuZF90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRhbmRfCi0gICAgICAgICwgKCBOMSwgTjIsIG5hLCBuYSwgbmEgKQotICAgICAgICApCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgYml0YW5kXykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYml0YW5kX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlCi0gICAgICAgICAgICAgICAgICAmIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2JpdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2JpdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWQwMmEzOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9iaXRvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDIgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vIENvcHlyaWdodCBKYWFwIFN1dGVyIDIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYml0b3IuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBiaXRvcl9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgYml0b3JfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGJpdG9yX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgYml0b3JfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgYml0b3JfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGJpdG9yX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYml0b3JfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IGJpdG9yXwotICAgIDogYml0b3JfPCBiaXRvcl88IGJpdG9yXzwgYml0b3JfPCBOMSxOMiA+LCBOMz4sIE40PiwgTjU+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMsIHR5cGVuYW1lIE40Ci0gICAgPgotc3RydWN0IGJpdG9yXzwgTjEsTjIsTjMsTjQsbmEgPgotCi0gICAgOiBiaXRvcl88IGJpdG9yXzwgYml0b3JfPCBOMSxOMiA+LCBOMz4sIE40PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgYml0b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMKLSAgICA+Ci1zdHJ1Y3QgYml0b3JfPCBOMSxOMixOMyxuYSxuYSA+Ci0KLSAgICA6IGJpdG9yXzwgYml0b3JfPCBOMSxOMiA+LCBOMz4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdG9yXwotICAgICAgICAsICggTjEsIE4yLCBOMywgbmEsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgYml0b3JfPCBOMSxOMixuYSxuYSxuYSA+Ci0gICAgOiBiaXRvcl9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGJpdG9yX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBiaXRvcl90YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXRvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgbmEsIG5hLCBuYSApCi0gICAgICAgICkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBiaXRvcl8pCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IGJpdG9yX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhdXg6Omxhcmdlc3RfaW50PAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTjE6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICAsIHR5cGVuYW1lIE4yOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlCi0gICAgICAgICAgICAgICAgICB8IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2JpdHhvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9iaXR4b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YTJlOGE2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2JpdHhvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDIgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vIENvcHlyaWdodCBKYWFwIFN1dGVyIDIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYml0eG9yLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgYml0eG9yX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBiaXR4b3JfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGJpdHhvcl9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGJpdHhvcl9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBiaXR4b3JfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGJpdHhvcl9pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGJpdHhvcl90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICAsIHR5cGVuYW1lIE4zID0gbmEsIHR5cGVuYW1lIE40ID0gbmEsIHR5cGVuYW1lIE41ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgYml0eG9yXwotICAgIDogYml0eG9yXzwgYml0eG9yXzwgYml0eG9yXzwgYml0eG9yXzwgTjEsTjIgPiwgTjM+LCBOND4sIE41PgotewotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zLCB0eXBlbmFtZSBONAotICAgID4KLXN0cnVjdCBiaXR4b3JfPCBOMSxOMixOMyxONCxuYSA+Ci0KLSAgICA6IGJpdHhvcl88IGJpdHhvcl88IGJpdHhvcl88IE4xLE4yID4sIE4zPiwgTjQ+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBiaXR4b3JfCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMKLSAgICA+Ci1zdHJ1Y3QgYml0eG9yXzwgTjEsTjIsTjMsbmEsbmEgPgotCi0gICAgOiBiaXR4b3JfPCBiaXR4b3JfPCBOMSxOMiA+LCBOMz4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdHhvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIG5hLCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yCi0gICAgPgotc3RydWN0IGJpdHhvcl88IE4xLE4yLG5hLG5hLG5hID4KLSAgICA6IGJpdHhvcl9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGJpdHhvcl90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgYml0eG9yX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGJpdHhvcl8KLSAgICAgICAgLCAoIE4xLCBOMiwgbmEsIG5hLCBuYSApCi0gICAgICAgICkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBiaXR4b3JfKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLXRlbXBsYXRlPD4KLXN0cnVjdCBiaXR4b3JfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgIF4gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vZGVxdWUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vZGVxdWUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NjMxZjY2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2RlcXVlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9kZXF1ZS5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCA9IG5hLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hLCB0eXBlbmFtZSBUNiA9IG5hLCB0eXBlbmFtZSBUNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUOCA9IG5hLCB0eXBlbmFtZSBUOSA9IG5hLCB0eXBlbmFtZSBUMTAgPSBuYSwgdHlwZW5hbWUgVDExID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxMiA9IG5hLCB0eXBlbmFtZSBUMTMgPSBuYSwgdHlwZW5hbWUgVDE0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxNSA9IG5hLCB0eXBlbmFtZSBUMTYgPSBuYSwgdHlwZW5hbWUgVDE3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxOCA9IG5hLCB0eXBlbmFtZSBUMTkgPSBuYQotICAgID4KLXN0cnVjdCBkZXF1ZTsKLQotdGVtcGxhdGU8Ci0gICAgIAotICAgID4KLXN0cnVjdCBkZXF1ZTwKLSAgICAgICAgICBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjA8ICA+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+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IyMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2RpdmlkZXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vZGl2aWRlcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjZjZlMjAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vZGl2aWRlcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDEgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvZGl2aWRlcy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGRpdmlkZXNfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGRpdmlkZXNfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGRpdmlkZXNfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBkaXZpZGVzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGRpdmlkZXNfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGRpdmlkZXNfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBkaXZpZGVzX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBkaXZpZGVzCi0gICAgOiBkaXZpZGVzPCBkaXZpZGVzPCBkaXZpZGVzPCBkaXZpZGVzPCBOMSxOMiA+LCBOMz4sIE40PiwgTjU+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMsIHR5cGVuYW1lIE40Ci0gICAgPgotc3RydWN0IGRpdmlkZXM8IE4xLE4yLE4zLE40LG5hID4KLQotICAgIDogZGl2aWRlczwgZGl2aWRlczwgZGl2aWRlczwgTjEsTjIgPiwgTjM+LCBOND4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIGRpdmlkZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgTjMsIE40LCBuYSApCi0gICAgICAgICkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMwotICAgID4KLXN0cnVjdCBkaXZpZGVzPCBOMSxOMixOMyxuYSxuYSA+Ci0KLSAgICA6IGRpdmlkZXM8IGRpdmlkZXM8IE4xLE4yID4sIE4zPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgZGl2aWRlcwotICAgICAgICAsICggTjEsIE4yLCBOMywgbmEsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIKLSAgICA+Ci1zdHJ1Y3QgZGl2aWRlczwgTjEsTjIsbmEsbmEsbmEgPgotICAgIDogZGl2aWRlc19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGRpdmlkZXNfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGRpdmlkZXNfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgZGl2aWRlcwotICAgICAgICAsICggTjEsIE4yLCBuYSwgbmEsIG5hICkKLSAgICAgICAgKQotCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDUsIGRpdmlkZXMpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IGRpdmlkZXNfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgIC8gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vZXF1YWxfdG8uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vZXF1YWxfdG8uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMDcwYTA4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2VxdWFsX3RvLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDkyICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2VxdWFsX3RvLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgZXF1YWxfdG9faW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGVxdWFsX3RvX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBlcXVhbF90b19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGVxdWFsX3RvX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGVxdWFsX3RvX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBlcXVhbF90b19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGVxdWFsX3RvX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBlcXVhbF90bwotCi0gICAgOiBlcXVhbF90b19pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGVxdWFsX3RvX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBlcXVhbF90b190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIGVxdWFsX3RvKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVxdWFsX3RvX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBib29sXzwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSAgPT0gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUgKSA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vZm9sZF9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2ZvbGRfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5NGNkNDEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vZm9sZF9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE4MCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2ZvbGRfaW1wbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgaW50IE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw8IDAsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiBzdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMCBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsPCAxLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAKLQotICAgIHR5cGVkZWYgc3RhdGUxIHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjEgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IGZvbGRfaW1wbDwgMixGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTAsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUxLCB0eXBlbmFtZSBkZXJlZjxpdGVyMT46OnR5cGUgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIAotCi0gICAgdHlwZWRlZiBzdGF0ZTIgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMiBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsPCAzLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBzdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgIAotCi0gICAgdHlwZWRlZiBzdGF0ZTMgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMyBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsPCA0LEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMCwgdHlwZW5hbWUgZGVyZWY8aXRlcjA+Ojp0eXBlID46OnR5cGUgc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBzdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIxPjo6dHlwZSA+Ojp0eXBlIHN0YXRlMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMT46OnR5cGUgaXRlcjI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCwgc3RhdGUyLCB0eXBlbmFtZSBkZXJlZjxpdGVyMj46OnR5cGUgPjo6dHlwZSBzdGF0ZTM7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjI+Ojp0eXBlIGl0ZXIzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsIHN0YXRlMywgdHlwZW5hbWUgZGVyZWY8aXRlcjM+Ojp0eXBlID46OnR5cGUgc3RhdGU0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAKLQotICAgIHR5cGVkZWYgc3RhdGU0IHN0YXRlOwotICAgIHR5cGVkZWYgaXRlcjQgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGwKLXsKLSAgICB0eXBlZGVmIGZvbGRfaW1wbDwKLSAgICAgICAgICA0Ci0gICAgICAgICwgRmlyc3QKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgU3RhdGUKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiBjaHVua187Ci0KLSAgICB0eXBlZGVmIGZvbGRfaW1wbDwKLSAgICAgICAgICAoIChOIC0gNCkgPCAwID8gMCA6IE4gLSA0ICkKLSAgICAgICAgLCB0eXBlbmFtZSBjaHVua186Oml0ZXJhdG9yCi0gICAgICAgICwgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIGNodW5rXzo6c3RhdGUKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiByZXNfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjpzdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHJlc186Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBmb2xkX2ltcGw8IC0xLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLSAgICA6IGZvbGRfaW1wbDwKLSAgICAgICAgICAtMQotICAgICAgICAsIHR5cGVuYW1lIG1wbDo6bmV4dDxGaXJzdD46OnR5cGUKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgYXBwbHkyPEZvcndhcmRPcCxTdGF0ZSwgdHlwZW5hbWUgZGVyZWY8Rmlyc3Q+Ojp0eXBlPjo6dHlwZQotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgZm9sZF9pbXBsPCAtMSxMYXN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgTGFzdCBpdGVyYXRvcjsKLX07Ci0KLX19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vZnVsbF9sYW1iZGEuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vZnVsbF9sYW1iZGEuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZGE5NzFlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2Z1bGxfbGFtYmRhLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU1NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2Z1bGxfbGFtYmRhLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8Ci0gICAgICBib29sIEMxID0gZmFsc2UsIGJvb2wgQzIgPSBmYWxzZSwgYm9vbCBDMyA9IGZhbHNlLCBib29sIEM0ID0gZmFsc2UKLSAgICAsIGJvb2wgQzUgPSBmYWxzZQotICAgID4KLXN0cnVjdCBsYW1iZGFfb3IKLSAgICA6IHRydWVfCi17Ci19OwotCi10ZW1wbGF0ZTw+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+IGxlX3Jlc3VsdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjpyZXN1bHRfIHJlc3VsdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsZV9yZXN1bHRfOjp0eXBlIHR5cGU7Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoMiwgbGFtYmRhKQotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9ncmVhdGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2dyZWF0ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NGEzNWQ1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2dyZWF0ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTIgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvZ3JlYXRlci5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGdyZWF0ZXJfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGdyZWF0ZXJfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGdyZWF0ZXJfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBncmVhdGVyX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGdyZWF0ZXJfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGdyZWF0ZXJfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBncmVhdGVyX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBncmVhdGVyCi0KLSAgICA6IGdyZWF0ZXJfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBncmVhdGVyX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBncmVhdGVyX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgZ3JlYXRlcikKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBncmVhdGVyX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBib29sXzwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSA+IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlICkgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2dyZWF0ZXJfZXF1YWwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vZ3JlYXRlcl9lcXVhbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzYjQwMzUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vZ3JlYXRlcl9lcXVhbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5MiArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9ncmVhdGVyX2VxdWFsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgZ3JlYXRlcl9lcXVhbF9pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgZ3JlYXRlcl9lcXVhbF9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgZ3JlYXRlcl9lcXVhbF9pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IGdyZWF0ZXJfZXF1YWxfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZ3JlYXRlcl9lcXVhbF9pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZ3JlYXRlcl9lcXVhbF9pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IGdyZWF0ZXJfZXF1YWxfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IGdyZWF0ZXJfZXF1YWwKLQotICAgIDogZ3JlYXRlcl9lcXVhbF9pbXBsPAotICAgICAgICAgIHR5cGVuYW1lIGdyZWF0ZXJfZXF1YWxfdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGdyZWF0ZXJfZXF1YWxfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBncmVhdGVyX2VxdWFsKQotCi19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGdyZWF0ZXJfZXF1YWxfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGJvb2xfPCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlID49IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlICkgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2luaGVyaXQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vaW5oZXJpdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI3NzMwMTIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vaW5oZXJpdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjUgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvaW5oZXJpdC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQxKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMikKLSAgICA+Ci1zdHJ1Y3QgaW5oZXJpdDIKLSAgICA6IFQxLCBUMgotewotICAgIHR5cGVkZWYgaW5oZXJpdDIgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUMSA+Ci1zdHJ1Y3QgaW5oZXJpdDI8IFQxLGVtcHR5X2Jhc2UgPgotewotICAgIHR5cGVkZWYgVDEgdHlwZTsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoMiwgaW5oZXJpdDIsIChUMSwgZW1wdHlfYmFzZSkpCi19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVDIgPgotc3RydWN0IGluaGVyaXQyPCBlbXB0eV9iYXNlLFQyID4KLXsKLSAgICB0eXBlZGVmIFQyIHR5cGU7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKDIsIGluaGVyaXQyLCAoZW1wdHlfYmFzZSwgVDIpKQotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGluaGVyaXQyPCBlbXB0eV9iYXNlLGVtcHR5X2Jhc2UgPgotewotICAgIHR5cGVkZWYgZW1wdHlfYmFzZSB0eXBlOwotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygyLCBpbmhlcml0MiwgKGVtcHR5X2Jhc2UsIGVtcHR5X2Jhc2UpKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDIsIGluaGVyaXQyKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQxID0gbmEsIHR5cGVuYW1lIFQyID0gbmEsIHR5cGVuYW1lIFQzID0gbmEKLSAgICA+Ci1zdHJ1Y3QgaW5oZXJpdDMKLSAgICA6IGluaGVyaXQyPAotICAgICAgICAgIHR5cGVuYW1lIGluaGVyaXQyPAotICAgICAgICAgICAgICBUMSwgVDIKLSAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgLCBUMwotICAgICAgICA+Ci17Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoMywgaW5oZXJpdDMpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYSwgdHlwZW5hbWUgVDQgPSBuYQotICAgID4KLXN0cnVjdCBpbmhlcml0NAotICAgIDogaW5oZXJpdDI8Ci0gICAgICAgICAgdHlwZW5hbWUgaW5oZXJpdDM8Ci0gICAgICAgICAgICAgIFQxLCBUMiwgVDMKLSAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgLCBUNAotICAgICAgICA+Ci17Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoNCwgaW5oZXJpdDQpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYSwgdHlwZW5hbWUgVDQgPSBuYQotICAgICwgdHlwZW5hbWUgVDUgPSBuYQotICAgID4KLXN0cnVjdCBpbmhlcml0NQotICAgIDogaW5oZXJpdDI8Ci0gICAgICAgICAgdHlwZW5hbWUgaW5oZXJpdDQ8Ci0gICAgICAgICAgICAgIFQxLCBUMiwgVDMsIFQ0Ci0gICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICwgVDUKLSAgICAgICAgPgotewotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDUsIGluaGVyaXQ1KQotCi0vLy8gcHJpbWFyeSB0ZW1wbGF0ZQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQxID0gZW1wdHlfYmFzZSwgdHlwZW5hbWUgVDIgPSBlbXB0eV9iYXNlCi0gICAgLCB0eXBlbmFtZSBUMyA9IGVtcHR5X2Jhc2UsIHR5cGVuYW1lIFQ0ID0gZW1wdHlfYmFzZQotICAgICwgdHlwZW5hbWUgVDUgPSBlbXB0eV9iYXNlCi0gICAgPgotc3RydWN0IGluaGVyaXQKLSAgICA6IGluaGVyaXQ1PCBUMSxUMixUMyxUNCxUNSA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaW5oZXJpdDwgbmEsbmEsbmEsbmEsbmEgPgotewotICAgIHRlbXBsYXRlPAotCi0gICAgICAgICAgdHlwZW5hbWUgVDEgPSBlbXB0eV9iYXNlLCB0eXBlbmFtZSBUMiA9IGVtcHR5X2Jhc2UKLSAgICAgICAgLCB0eXBlbmFtZSBUMyA9IGVtcHR5X2Jhc2UsIHR5cGVuYW1lIFQ0ID0gZW1wdHlfYmFzZQotICAgICAgICAsIHR5cGVuYW1lIFQ1ID0gZW1wdHlfYmFzZQotCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBpbmhlcml0PCBUMSxUMixUMyxUNCxUNSA+Ci0gICAgewotICAgIH07Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUNfTEFNQkRBKDUsIGluaGVyaXQpCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUNfQVJJVFkoNSwgaW5oZXJpdCkKLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQ19URU1QTEFURV9BUklUWSg1LCA1LCBpbmhlcml0KQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vaXRlcl9mb2xkX2lmX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vaXRlcl9mb2xkX2lmX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNzRiZDgzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2l0ZXJfZm9sZF9pZl9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8gQ29weXJpZ2h0IERhdmlkIEFicmFoYW1zIDIwMDEtMjAwMgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9hdXhfL2l0ZXJfZm9sZF9pZl9pbXBsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yLCB0eXBlbmFtZSBTdGF0ZSA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX251bGxfc3RlcAotewotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiBJdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPCBib29sID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfc3RlcF9pbXBsCi17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgSXRlcmF0b3IKLSAgICAgICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlT3AKLSAgICAgICAgLCB0eXBlbmFtZSBJdGVyYXRvck9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IFN0YXRlT3AsU3RhdGUsSXRlcmF0b3IgPjo6dHlwZSBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBJdGVyYXRvck9wOjp0eXBlIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX3N0ZXBfaW1wbDxmYWxzZT4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgU3RhdGVPcAotICAgICAgICAsIHR5cGVuYW1lIEl0ZXJhdG9yT3AKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBQcmVkaWNhdGUKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX2ZvcndhcmRfc3RlcAotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBQcmVkaWNhdGUsU3RhdGUsSXRlcmF0b3IgPjo6dHlwZSBub3RfbGFzdDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJfZm9sZF9pZl9zdGVwX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQobm90X2xhc3QpOjp2YWx1ZQotICAgICAgICA+Ojp0ZW1wbGF0ZSByZXN1bHRfPCBJdGVyYXRvcixTdGF0ZSxGb3J3YXJkT3AsIG1wbDo6bmV4dDxJdGVyYXRvcj4gPiBpbXBsXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgaW1wbF86OnN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgaW1wbF86Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIFByZWRpY2F0ZQotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfYmFja3dhcmRfc3RlcAotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBQcmVkaWNhdGUsU3RhdGUsSXRlcmF0b3IgPjo6dHlwZSBub3RfbGFzdDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJfZm9sZF9pZl9zdGVwX2ltcGw8Ci0gICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQobm90X2xhc3QpOjp2YWx1ZQotICAgICAgICA+Ojp0ZW1wbGF0ZSByZXN1bHRfPCBJdGVyYXRvcixTdGF0ZSxCYWNrd2FyZE9wLCBpZGVudGl0eTxJdGVyYXRvcj4gPiBpbXBsXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgaW1wbF86OnN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgaW1wbF86Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBJdGVyYXRvcgotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZFByZWRpY2F0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgQmFja3dhcmRQcmVkaWNhdGUKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmX2ltcGwKLXsKLSBwcml2YXRlOgotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX251bGxfc3RlcDwgSXRlcmF0b3IsU3RhdGUgPiBmb3J3YXJkX3N0ZXAwOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2ZvcndhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMDo6aXRlcmF0b3IsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDA6OnN0YXRlLCBGb3J3YXJkT3AsIEZvcndhcmRQcmVkaWNhdGUgPiBmb3J3YXJkX3N0ZXAxOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2ZvcndhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMTo6aXRlcmF0b3IsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDE6OnN0YXRlLCBGb3J3YXJkT3AsIEZvcndhcmRQcmVkaWNhdGUgPiBmb3J3YXJkX3N0ZXAyOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2ZvcndhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMjo6aXRlcmF0b3IsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDI6OnN0YXRlLCBGb3J3YXJkT3AsIEZvcndhcmRQcmVkaWNhdGUgPiBmb3J3YXJkX3N0ZXAzOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2ZvcndhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMzo6aXRlcmF0b3IsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDM6OnN0YXRlLCBGb3J3YXJkT3AsIEZvcndhcmRQcmVkaWNhdGUgPiBmb3J3YXJkX3N0ZXA0OwotICAgIAotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgdHlwZW5hbWUgZm9yd2FyZF9zdGVwNDo6bm90X2xhc3QKLSAgICAgICAgLCBpdGVyX2ZvbGRfaWZfaW1wbDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgZm9yd2FyZF9zdGVwNDo6aXRlcmF0b3IKLSAgICAgICAgICAgICwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwNDo6c3RhdGUKLSAgICAgICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgICAgICAsIEZvcndhcmRQcmVkaWNhdGUKLSAgICAgICAgICAgICwgQmFja3dhcmRPcAotICAgICAgICAgICAgLCBCYWNrd2FyZFByZWRpY2F0ZQotICAgICAgICAgICAgPgotICAgICAgICAsIGl0ZXJfZm9sZF9pZl9udWxsX3N0ZXA8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGZvcndhcmRfc3RlcDQ6Oml0ZXJhdG9yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGZvcndhcmRfc3RlcDQ6OnN0YXRlCi0gICAgICAgICAgICA+Ci0gICAgICAgID46OnR5cGUgYmFja3dhcmRfc3RlcDQ7Ci0KLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9iYWNrd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAzOjppdGVyYXRvciwgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDQ6OnN0YXRlLCBCYWNrd2FyZE9wLCBCYWNrd2FyZFByZWRpY2F0ZSA+IGJhY2t3YXJkX3N0ZXAzOwotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2lmX2JhY2t3YXJkX3N0ZXA8IHR5cGVuYW1lIGZvcndhcmRfc3RlcDI6Oml0ZXJhdG9yLCB0eXBlbmFtZSBiYWNrd2FyZF9zdGVwMzo6c3RhdGUsIEJhY2t3YXJkT3AsIEJhY2t3YXJkUHJlZGljYXRlID4gYmFja3dhcmRfc3RlcDI7Ci0gICAgdHlwZWRlZiBpdGVyX2ZvbGRfaWZfYmFja3dhcmRfc3RlcDwgdHlwZW5hbWUgZm9yd2FyZF9zdGVwMTo6aXRlcmF0b3IsIHR5cGVuYW1lIGJhY2t3YXJkX3N0ZXAyOjpzdGF0ZSwgQmFja3dhcmRPcCwgQmFja3dhcmRQcmVkaWNhdGUgPiBiYWNrd2FyZF9zdGVwMTsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pZl9iYWNrd2FyZF9zdGVwPCB0eXBlbmFtZSBmb3J3YXJkX3N0ZXAwOjppdGVyYXRvciwgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDE6OnN0YXRlLCBCYWNrd2FyZE9wLCBCYWNrd2FyZFByZWRpY2F0ZSA+IGJhY2t3YXJkX3N0ZXAwOwotICAgIAotCi0gcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDA6OnN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFja3dhcmRfc3RlcDQ6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotfX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9pdGVyX2ZvbGRfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9pdGVyX2ZvbGRfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjMDhiMzAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vaXRlcl9mb2xkX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTgwICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2F1eF8vaXRlcl9mb2xkX2ltcGwuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi0vLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotCi10ZW1wbGF0ZTwKLSAgICAgIGludCBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDwgMCxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHN0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIwIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDwgMSxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMCxpdGVyMCA+Ojp0eXBlIHN0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHN0YXRlMSBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIxIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDwgMixGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMCxpdGVyMCA+Ojp0eXBlIHN0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTEsaXRlcjEgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIAotCi0gICAgdHlwZWRlZiBzdGF0ZTIgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMiBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw8IDMsRmlyc3QsTGFzdCxTdGF0ZSxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTAsaXRlcjAgPjo6dHlwZSBzdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUxLGl0ZXIxID46OnR5cGUgc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMixpdGVyMiA+Ojp0eXBlIHN0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMj46OnR5cGUgaXRlcjM7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHN0YXRlMyBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIzIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDwgNCxGaXJzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMCxpdGVyMCA+Ojp0eXBlIHN0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMD46OnR5cGUgaXRlcjE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxzdGF0ZTEsaXRlcjEgPjo6dHlwZSBzdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3Asc3RhdGUyLGl0ZXIyID46OnR5cGUgc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLHN0YXRlMyxpdGVyMyA+Ojp0eXBlIHN0YXRlNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxpdGVyMz46OnR5cGUgaXRlcjQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHN0YXRlNCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXI0IGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBpbnQgTgotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGwKLXsKLSAgICB0eXBlZGVmIGl0ZXJfZm9sZF9pbXBsPAotICAgICAgICAgIDQKLSAgICAgICAgLCBGaXJzdAotICAgICAgICAsIExhc3QKLSAgICAgICAgLCBTdGF0ZQotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IGNodW5rXzsKLQotICAgIHR5cGVkZWYgaXRlcl9mb2xkX2ltcGw8Ci0gICAgICAgICAgKCAoTiAtIDQpIDwgMCA/IDAgOiBOIC0gNCApCi0gICAgICAgICwgdHlwZW5hbWUgY2h1bmtfOjppdGVyYXRvcgotICAgICAgICAsIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBjaHVua186OnN0YXRlCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4gcmVzXzsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6c3RhdGUgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSByZXNfOjppdGVyYXRvciBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2ltcGw8IC0xLEZpcnN0LExhc3QsU3RhdGUsRm9yd2FyZE9wID4KLSAgICA6IGl0ZXJfZm9sZF9pbXBsPAotICAgICAgICAgIC0xCi0gICAgICAgICwgdHlwZW5hbWUgbXBsOjpuZXh0PEZpcnN0Pjo6dHlwZQotICAgICAgICAsIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBhcHBseTI8IEZvcndhcmRPcCxTdGF0ZSxGaXJzdCA+Ojp0eXBlCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCBpdGVyX2ZvbGRfaW1wbDwgLTEsTGFzdCxMYXN0LFN0YXRlLEZvcndhcmRPcCA+Ci17Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIExhc3QgaXRlcmF0b3I7Ci19OwotCi19fX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2xhbWJkYV9ub19jdHBzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2xhbWJkYV9ub19jdHBzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTU0MDI4Yi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9sYW1iZGFfbm9fY3Rwcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMjggKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfbm9fY3Rwcy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPAotICAgICAgYm9vbCBDMSA9IGZhbHNlLCBib29sIEMyID0gZmFsc2UsIGJvb2wgQzMgPSBmYWxzZSwgYm9vbCBDNCA9IGZhbHNlCi0gICAgLCBib29sIEM1ID0gZmFsc2UKLSAgICA+Ci1zdHJ1Y3QgbGFtYmRhX29yCi0gICAgOiB0cnVlXwotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxhbWJkYV9vcjwgZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UsZmFsc2UgPgotICAgIDogZmFsc2VfCi17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgQXJpdHkgPiBzdHJ1Y3QgbGFtYmRhX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgICAgICB0eXBlZGVmIGlzX3BsYWNlaG9sZGVyPFQ+IGlzX2xlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsYW1iZGFfaW1wbDwgaW50XzwxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIFRhZywgdHlwZW5hbWUgUHJvdGVjdCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMSwgVGFnLCBmYWxzZV8gPiBsMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgICAgICB0eXBlZGVmIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTEpOjp2YWx1ZQotICAgICAgICAgICAgPiBpc19sZTsKLQotICAgICAgICB0eXBlZGVmIGJpbmQxPAotICAgICAgICAgICAgICB0eXBlbmFtZSBGOjpyZWJpbmQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDE6OnR5cGUKLSAgICAgICAgICAgID4gYmluZF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIGlzX2xlCi0gICAgICAgICAgICAsIGlmXzwgUHJvdGVjdCwgbXBsOjpwcm90ZWN0PGJpbmRfPiwgYmluZF8gPgotICAgICAgICAgICAgLCBpZGVudGl0eTxGPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxhbWJkYV9pbXBsPCBpbnRfPDI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcxLCBUYWcsIGZhbHNlXyA+IGwxOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMiwgVGFnLCBmYWxzZV8gPiBsMjsKLSAgICAgICAgCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTEpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUyKTo6dmFsdWUKLSAgICAgICAgICAgID4gaXNfbGU7Ci0KLSAgICAgICAgdHlwZWRlZiBiaW5kMjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgRjo6cmViaW5kCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGwxOjp0eXBlLCB0eXBlbmFtZSBsMjo6dHlwZQotICAgICAgICAgICAgPiBiaW5kXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgaXNfbGUKLSAgICAgICAgICAgICwgaWZfPCBQcm90ZWN0LCBtcGw6OnByb3RlY3Q8YmluZF8+LCBiaW5kXyA+Ci0gICAgICAgICAgICAsIGlkZW50aXR5PEY+Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGVfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHlwZV86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGFtYmRhX2ltcGw8IGludF88Mz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFByb3RlY3QgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzEsIFRhZywgZmFsc2VfID4gbDE7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcyLCBUYWcsIGZhbHNlXyA+IGwyOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMywgVGFnLCBmYWxzZV8gPiBsMzsKLSAgICAgICAgCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDE6OmlzX2xlIGlzX2xlMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMjo6aXNfbGUgaXNfbGUyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwzOjppc19sZSBpc19sZTM7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMSk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTIpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUzKTo6dmFsdWUKLSAgICAgICAgICAgID4gaXNfbGU7Ci0KLSAgICAgICAgdHlwZWRlZiBiaW5kMzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgRjo6cmViaW5kCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGwxOjp0eXBlLCB0eXBlbmFtZSBsMjo6dHlwZSwgdHlwZW5hbWUgbDM6OnR5cGUKLSAgICAgICAgICAgID4gYmluZF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIGlzX2xlCi0gICAgICAgICAgICAsIGlmXzwgUHJvdGVjdCwgbXBsOjpwcm90ZWN0PGJpbmRfPiwgYmluZF8gPgotICAgICAgICAgICAgLCBpZGVudGl0eTxGPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IGxhbWJkYV9pbXBsPCBpbnRfPDQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgVGFnLCB0eXBlbmFtZSBQcm90ZWN0ID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcxLCBUYWcsIGZhbHNlXyA+IGwxOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMiwgVGFnLCBmYWxzZV8gPiBsMjsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzMsIFRhZywgZmFsc2VfID4gbDM7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmc0LCBUYWcsIGZhbHNlXyA+IGw0OwotICAgICAgICAKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDM6OmlzX2xlIGlzX2xlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsNDo6aXNfbGUgaXNfbGU0OwotICAgICAgICAKLQotICAgICAgICB0eXBlZGVmIGF1eDo6bGFtYmRhX29yPAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTEpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUyKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMyk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTQpOjp2YWx1ZQotICAgICAgICAgICAgPiBpc19sZTsKLQotICAgICAgICB0eXBlZGVmIGJpbmQ0PAotICAgICAgICAgICAgICB0eXBlbmFtZSBGOjpyZWJpbmQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDE6OnR5cGUsIHR5cGVuYW1lIGwyOjp0eXBlLCB0eXBlbmFtZSBsMzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBsNDo6dHlwZQotICAgICAgICAgICAgPiBiaW5kXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzwKLSAgICAgICAgICAgICAgaXNfbGUKLSAgICAgICAgICAgICwgaWZfPCBQcm90ZWN0LCBtcGw6OnByb3RlY3Q8YmluZF8+LCBiaW5kXyA+Ci0gICAgICAgICAgICAsIGlkZW50aXR5PEY+Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGVfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHlwZV86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGFtYmRhX2ltcGw8IGludF88NT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBUYWcsIHR5cGVuYW1lIFByb3RlY3QgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzEsIFRhZywgZmFsc2VfID4gbDE7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmcyLCBUYWcsIGZhbHNlXyA+IGwyOwotICAgICAgICB0eXBlZGVmIGxhbWJkYTwgdHlwZW5hbWUgRjo6YXJnMywgVGFnLCBmYWxzZV8gPiBsMzsKLSAgICAgICAgdHlwZWRlZiBsYW1iZGE8IHR5cGVuYW1lIEY6OmFyZzQsIFRhZywgZmFsc2VfID4gbDQ7Ci0gICAgICAgIHR5cGVkZWYgbGFtYmRhPCB0eXBlbmFtZSBGOjphcmc1LCBUYWcsIGZhbHNlXyA+IGw1OwotICAgICAgICAKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsMTo6aXNfbGUgaXNfbGUxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGwyOjppc19sZSBpc19sZTI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbDM6OmlzX2xlIGlzX2xlMzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBsNDo6aXNfbGUgaXNfbGU0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGw1Ojppc19sZSBpc19sZTU7Ci0gICAgICAgIAotCi0gICAgICAgIHR5cGVkZWYgYXV4OjpsYW1iZGFfb3I8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlMSk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTIpOjp2YWx1ZSwgTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoaXNfbGUzKTo6dmFsdWUsIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKGlzX2xlNCk6OnZhbHVlLCBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChpc19sZTUpOjp2YWx1ZQotICAgICAgICAgICAgPiBpc19sZTsKLQotICAgICAgICB0eXBlZGVmIGJpbmQ1PAotICAgICAgICAgICAgICB0eXBlbmFtZSBGOjpyZWJpbmQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgbDE6OnR5cGUsIHR5cGVuYW1lIGwyOjp0eXBlLCB0eXBlbmFtZSBsMzo6dHlwZQotICAgICAgICAgICAgLCB0eXBlbmFtZSBsNDo6dHlwZSwgdHlwZW5hbWUgbDU6OnR5cGUKLSAgICAgICAgICAgID4gYmluZF87Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZl88Ci0gICAgICAgICAgICAgIGlzX2xlCi0gICAgICAgICAgICAsIGlmXzwgUHJvdGVjdCwgbXBsOjpwcm90ZWN0PGJpbmRfPiwgYmluZF8gPgotICAgICAgICAgICAgLCBpZGVudGl0eTxGPgotICAgICAgICAgICAgPjo6dHlwZSB0eXBlXzsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVfOjp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIHR5cGVuYW1lIFRhZwotICAgICwgdHlwZW5hbWUgUHJvdGVjdAotICAgID4KLXN0cnVjdCBsYW1iZGEKLXsKLSAgICAvLy8gTWV0YWZ1bmN0aW9uIGZvcndhcmRpbmcgY29uZnVzZXMgTVNWQyA2LngKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dGVtcGxhdGVfYXJpdHk8VD46OnR5cGUgYXJpdHlfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpsYW1iZGFfaW1wbDxhcml0eV8+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzwgVCxUYWcsUHJvdGVjdCA+IGxfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBsXzo6dHlwZSB0eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbF86OmlzX2xlIGlzX2xlOwotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigxLCAzLCBsYW1iZGEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgID4KLXN0cnVjdCBpc19sYW1iZGFfZXhwcmVzc2lvbgotICAgIDogbGFtYmRhPFQ+Ojppc19sZQotewotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vbGVzcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9sZXNzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjJlZGQwYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9sZXNzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDkyICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2xlc3MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBsZXNzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBsZXNzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBsZXNzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgbGVzc19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBsZXNzX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBsZXNzX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgbGVzc190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgbGVzcwotCi0gICAgOiBsZXNzX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgbGVzc190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgbGVzc190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIGxlc3MpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGVzc19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogYm9vbF88ICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUgPiBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSApID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9sZXNzX2VxdWFsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2xlc3NfZXF1YWwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MzhhZjkxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2xlc3NfZXF1YWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTIgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbGVzc19lcXVhbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IGxlc3NfZXF1YWxfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IGxlc3NfZXF1YWxfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IGxlc3NfZXF1YWxfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBsZXNzX2VxdWFsX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGxlc3NfZXF1YWxfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGxlc3NfZXF1YWxfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBsZXNzX2VxdWFsX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBsZXNzX2VxdWFsCi0KLSAgICA6IGxlc3NfZXF1YWxfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBsZXNzX2VxdWFsX3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBsZXNzX2VxdWFsX3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgbGVzc19lcXVhbCkKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBsZXNzX2VxdWFsX2ltcGw8IGludGVncmFsX2NfdGFnLGludGVncmFsX2NfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBib29sXzwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZSA8PSBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZSApID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9saXN0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2xpc3QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4Y2M4YzQ2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2xpc3QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzIzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2xpc3QuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAgPSBuYSwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYSwgdHlwZW5hbWUgVDYgPSBuYSwgdHlwZW5hbWUgVDcgPSBuYQotICAgICwgdHlwZW5hbWUgVDggPSBuYSwgdHlwZW5hbWUgVDkgPSBuYSwgdHlwZW5hbWUgVDEwID0gbmEsIHR5cGVuYW1lIFQxMSA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTIgPSBuYSwgdHlwZW5hbWUgVDEzID0gbmEsIHR5cGVuYW1lIFQxNCA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTUgPSBuYSwgdHlwZW5hbWUgVDE2ID0gbmEsIHR5cGVuYW1lIFQxNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTggPSBuYSwgdHlwZW5hbWUgVDE5ID0gbmEKLSAgICA+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+Ci1zdHJ1Y3QgbGlzdAotICAgIDogbGlzdDIwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QyMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTgsVDE5ID46OnR5cGUgdHlwZTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2xpc3RfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9saXN0X2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNDNmMzhmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2xpc3RfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjggKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbGlzdF9jLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAgPSBMT05HX01BWCwgbG9uZyBDMSA9IExPTkdfTUFYLCBsb25nIEMyID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzMgPSBMT05HX01BWCwgbG9uZyBDNCA9IExPTkdfTUFYLCBsb25nIEM1ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzYgPSBMT05HX01BWCwgbG9uZyBDNyA9IExPTkdfTUFYLCBsb25nIEM4ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzkgPSBMT05HX01BWCwgbG9uZyBDMTAgPSBMT05HX01BWCwgbG9uZyBDMTEgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTIgPSBMT05HX01BWCwgbG9uZyBDMTMgPSBMT05HX01BWCwgbG9uZyBDMTQgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTUgPSBMT05HX01BWCwgbG9uZyBDMTYgPSBMT05HX01BWCwgbG9uZyBDMTcgPSBMT05HX01BWAotICAgICwgbG9uZyBDMTggPSBMT05HX01BWCwgbG9uZyBDMTkgPSBMT05HX01BWAotICAgID4KLXN0cnVjdCBsaXN0X2M7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDBfYzxUPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDBfYzxUPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MV9jPCBULEMwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxX2M8IFQsQzAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0Ml9jPCBULEMwLEMxID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QyX2M8IFQsQzAsQzEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0M19jPCBULEMwLEMxLEMyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QzX2M8IFQsQzAsQzEsQzIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0NF9jPCBULEMwLEMxLEMyLEMzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q0X2M8IFQsQzAsQzEsQzIsQzMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0NV9jPCBULEMwLEMxLEMyLEMzLEM0ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q1X2M8IFQsQzAsQzEsQzIsQzMsQzQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0Nl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q2X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0N19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q3X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0OF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q4X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0OV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3Q5X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzggPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTBfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTBfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTFfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDExX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDEyX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTJfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTNfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTNfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzCi0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QxNF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNAotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IGxpc3QxNV9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MTVfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNQotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTZfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE2X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNgotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDE3X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE3X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3Ci0gICAgPgotc3RydWN0IGxpc3RfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogbGlzdDE4X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0MThfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOAotICAgID4KLXN0cnVjdCBsaXN0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgQzE4LCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBsaXN0MTlfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBDMTgKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdDE5X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTggPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgID4KLXN0cnVjdCBsaXN0X2MKLSAgICA6IGxpc3QyMF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIEMxOCwgQzE5Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGxpc3QyMF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9tYXAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vbWFwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzk3NGYyOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9tYXAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzIzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL21hcC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCA9IG5hLCB0eXBlbmFtZSBUMSA9IG5hLCB0eXBlbmFtZSBUMiA9IG5hLCB0eXBlbmFtZSBUMyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUNCA9IG5hLCB0eXBlbmFtZSBUNSA9IG5hLCB0eXBlbmFtZSBUNiA9IG5hLCB0eXBlbmFtZSBUNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUOCA9IG5hLCB0eXBlbmFtZSBUOSA9IG5hLCB0eXBlbmFtZSBUMTAgPSBuYSwgdHlwZW5hbWUgVDExID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxMiA9IG5hLCB0eXBlbmFtZSBUMTMgPSBuYSwgdHlwZW5hbWUgVDE0ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxNSA9IG5hLCB0eXBlbmFtZSBUMTYgPSBuYSwgdHlwZW5hbWUgVDE3ID0gbmEKLSAgICAsIHR5cGVuYW1lIFQxOCA9IG5hLCB0eXBlbmFtZSBUMTkgPSBuYQotICAgID4KLXN0cnVjdCBtYXA7Ci0KLXRlbXBsYXRlPAotICAgICAKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMDwgID4KLXsKLSAgICB0eXBlZGVmIG1hcDA8ICA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwCi0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDE8VDA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxPFQwPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMjwgVDAsVDEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMjwgVDAsVDEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDM8IFQwLFQxLFQyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDM8IFQwLFQxLFQyID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwNDwgVDAsVDEsVDIsVDMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwNDwgVDAsVDEsVDIsVDMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwNTwgVDAsVDEsVDIsVDMsVDQgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwNTwgVDAsVDEsVDIsVDMsVDQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDY8IFQwLFQxLFQyLFQzLFQ0LFQ1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMQotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1hcDEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMKLSAgICA+Ci1zdHJ1Y3QgbWFwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMTQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgID4KLXN0cnVjdCBtYXA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0LCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDE1PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxNTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDE2PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxNjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBtYXAxNzwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxNzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogbWFwMTg8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxODwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4Ci0gICAgPgotc3RydWN0IG1hcDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgsIG5hCi0gICAgICAgID4KLSAgICA6IG1hcDE5PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtYXAxOTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzLFQxNCxUMTUsVDE2LFQxNyxUMTggPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgPgotc3RydWN0IG1hcAotICAgIDogbWFwMjA8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBUMTkKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwMjA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9taW51cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9taW51cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDllODJmYjAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vbWludXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQxICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL21pbnVzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgbWludXNfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IG1pbnVzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBtaW51c19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IG1pbnVzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IG1pbnVzX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBtaW51c19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IG1pbnVzX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCBtaW51cwotICAgIDogbWludXM8IG1pbnVzPCBtaW51czwgbWludXM8IE4xLE4yID4sIE4zPiwgTjQ+LCBONT4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMywgdHlwZW5hbWUgTjQKLSAgICA+Ci1zdHJ1Y3QgbWludXM8IE4xLE4yLE4zLE40LG5hID4KLQotICAgIDogbWludXM8IG1pbnVzPCBtaW51czwgTjEsTjIgPiwgTjM+LCBOND4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIG1pbnVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMKLSAgICA+Ci1zdHJ1Y3QgbWludXM8IE4xLE4yLE4zLG5hLG5hID4KLQotICAgIDogbWludXM8IG1pbnVzPCBOMSxOMiA+LCBOMz4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIG1pbnVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBuYSwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBtaW51czwgTjEsTjIsbmEsbmEsbmEgPgotICAgIDogbWludXNfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBtaW51c190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgbWludXNfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgbWludXMKLSAgICAgICAgLCAoIE4xLCBOMiwgbmEsIG5hLCBuYSApCi0gICAgICAgICkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCBtaW51cykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWludXNfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgIC0gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vbW9kdWx1cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9tb2R1bHVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTUxNDNkNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9tb2R1bHVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL21vZHVsdXMuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnMQotICAgICwgdHlwZW5hbWUgVGFnMgotICAgID4KLXN0cnVjdCBtb2R1bHVzX2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBtb2R1bHVzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBtb2R1bHVzX2ltcGw8IFRhZzIsVGFnMiA+LFRhZzEsIFRhZzIgPgotICAgICAgICA+Ojp0eXBlCi17Ci19OwotCi0vLy8gZm9yIERpZ2l0YWwgTWFycyBDKysvY29tcGlsZXJzIHdpdGggbm8gQ1RQUy9UVFAgc3VwcG9ydAotdGVtcGxhdGU8PiBzdHJ1Y3QgbW9kdWx1c19pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBtb2R1bHVzX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBtb2R1bHVzX2ltcGw8IFRhZyxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgbW9kdWx1c190YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3QgbW9kdWx1cwotCi0gICAgOiBtb2R1bHVzX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgbW9kdWx1c190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgbW9kdWx1c190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIG1vZHVsdXMpCi0KLX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotdGVtcGxhdGU8Pgotc3RydWN0IG1vZHVsdXNfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgICUgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vbm90X2VxdWFsX3RvLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL25vdF9lcXVhbF90by5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZmMTE1YWYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vbm90X2VxdWFsX3RvLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDkyICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL25vdF9lcXVhbF90by5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IG5vdF9lcXVhbF90b19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgbm90X2VxdWFsX3RvX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCBub3RfZXF1YWxfdG9faW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBub3RfZXF1YWxfdG9faW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3Qgbm90X2VxdWFsX3RvX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBub3RfZXF1YWxfdG9faW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBub3RfZXF1YWxfdG9fdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgPgotc3RydWN0IG5vdF9lcXVhbF90bwotCi0gICAgOiBub3RfZXF1YWxfdG9faW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBub3RfZXF1YWxfdG9fdGFnPE4xPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIG5vdF9lcXVhbF90b190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMyKDIsIDIsIG5vdF9lcXVhbF90bykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBub3RfZXF1YWxfdG9faW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGJvb2xfPCAoIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMSk6OnZhbHVlICE9IE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOMik6OnZhbHVlICkgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL29yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL29yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDFjZTNkMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9vci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9vci5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBib29sIENfLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCA+Ci1zdHJ1Y3Qgb3JfaW1wbAotICAgIDogdHJ1ZV8KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCA+Ci1zdHJ1Y3Qgb3JfaW1wbDwgZmFsc2UsVDEsVDIsVDMsVDQgPgotICAgIDogb3JfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX05FU1RFRF9UWVBFX1dLTkQoVDEpOjp2YWx1ZQotICAgICAgICAsIFQyLCBUMywgVDQKLSAgICAgICAgLCBmYWxzZV8KLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG9yX2ltcGw8Ci0gICAgICAgICAgZmFsc2UKLSAgICAgICAgLCBmYWxzZV8sIGZhbHNlXywgZmFsc2VfLCBmYWxzZV8KLSAgICAgICAgPgotICAgIDogZmFsc2VfCi17Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQxKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMikKLSAgICAsIHR5cGVuYW1lIFQzID0gZmFsc2VfLCB0eXBlbmFtZSBUNCA9IGZhbHNlXywgdHlwZW5hbWUgVDUgPSBmYWxzZV8KLSAgICA+Ci1zdHJ1Y3Qgb3JfCi0KLSAgICA6IGF1eDo6b3JfaW1wbDwKLSAgICAgICAgICBORE5CT09TVF9NUExfQVVYX05FU1RFRF9UWVBFX1dLTkQoVDEpOjp2YWx1ZQotICAgICAgICAsIFQyLCBUMywgVDQsIFQ1Ci0gICAgICAgID4KLQotewotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigKLSAgICAgIDIKLSAgICAsIDUKLSAgICAsIG9yXwotICAgICkKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3BsYWNlaG9sZGVycy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9wbGFjZWhvbGRlcnMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYTI4YzA5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3BsYWNlaG9sZGVycy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDUgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vIENvcHlyaWdodCBQZXRlciBEaW1vdiAyMDAxLTIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvcGxhY2Vob2xkZXJzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPCAtMSA+IF87Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXykKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzsKLX0KLQotfX0KLQotLy8vIGFndXJ0LCAxNy9tYXIvMDI6IG9uZSBtb3JlIHBsYWNlaG9sZGVyIGZvciB0aGUgbGFzdCAnYXBwbHkjJyAKLS8vLyBzcGVjaWFsaXphdGlvbgotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8MT4gXzE7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfMSkKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzE7Ci19Ci0KLX19Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzwyPiBfMjsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF8yKQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfMjsKLX0KLQotfX0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDM+IF8zOwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzMpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol8zOwotfQotCi19fQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotdHlwZWRlZiBhcmc8ND4gXzQ7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX0NMT1NFCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTChfNCkKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6XzQ7Ci19Ci0KLX19Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi10eXBlZGVmIGFyZzw1PiBfNTsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF81KQotCi1uYW1lc3BhY2UgcGxhY2Vob2xkZXJzIHsKLXVzaW5nIE5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjpfNTsKLX0KLQotfX0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPDY+IF82OwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0woXzYpCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol82OwotfQotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vcGx1cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9wbHVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGU3ZmU3NS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9wbHVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0MSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9wbHVzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgcGx1c19pbXBsCi0gICAgOiBpZl9jPAotICAgICAgICAgICggTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzEpCi0gICAgICAgICAgICAgID4gTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChpbnQsIFRhZzIpCi0gICAgICAgICAgICApCi0KLSAgICAgICAgLCBhdXg6OmNhc3QybmRfaW1wbDwgcGx1c19pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgcGx1c19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IHBsdXNfaW1wbDwgbmEsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgcGx1c19pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgcGx1c19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHBsdXNfdGFnCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0YWcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjIpCi0gICAgLCB0eXBlbmFtZSBOMyA9IG5hLCB0eXBlbmFtZSBONCA9IG5hLCB0eXBlbmFtZSBONSA9IG5hCi0gICAgPgotc3RydWN0IHBsdXMKLSAgICA6IHBsdXM8IHBsdXM8IHBsdXM8IHBsdXM8IE4xLE4yID4sIE4zPiwgTjQ+LCBONT4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMywgdHlwZW5hbWUgTjQKLSAgICA+Ci1zdHJ1Y3QgcGx1czwgTjEsTjIsTjMsTjQsbmEgPgotCi0gICAgOiBwbHVzPCBwbHVzPCBwbHVzPCBOMSxOMiA+LCBOMz4sIE40PgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgcGx1cwotICAgICAgICAsICggTjEsIE4yLCBOMywgTjQsIG5hICkKLSAgICAgICAgKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIsIHR5cGVuYW1lIE4zCi0gICAgPgotc3RydWN0IHBsdXM8IE4xLE4yLE4zLG5hLG5hID4KLQotICAgIDogcGx1czwgcGx1czwgTjEsTjIgPiwgTjM+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBwbHVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBuYSwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCBwbHVzPCBOMSxOMixuYSxuYSxuYSA+Ci0gICAgOiBwbHVzX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgcGx1c190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgcGx1c190YWc8TjI+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PCBOMSxOMiA+Ojp0eXBlCi17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKAotICAgICAgICAgIDUKLSAgICAgICAgLCBwbHVzCi0gICAgICAgICwgKCBOMSwgTjIsIG5hLCBuYSwgbmEgKQotICAgICAgICApCi0KLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgNSwgcGx1cykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcGx1c19pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiA+IHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogaW50ZWdyYWxfYzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYXV4OjpsYXJnZXN0X2ludDwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE4xOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAgICAgLCB0eXBlbmFtZSBOMjo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjEpOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgKyBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTjIpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9xdW90ZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9xdW90ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhjZTc5ZWQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vcXVvdGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTIzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3F1b3RlLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgYm9vbCBoYXNfdHlwZV8gPgotc3RydWN0IHF1b3RlX2ltcGwKLSAgICA6IFQKLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLXN0cnVjdCBxdW90ZV9pbXBsPCBULGZhbHNlID4KLXsKLSAgICB0eXBlZGVmIFQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAxID4gY2xhc3MgRgotICAgICwgdHlwZW5hbWUgVGFnID0gdm9pZF8KLSAgICA+Ci1zdHJ1Y3QgcXVvdGUxCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBxdW90ZV9pbXBsPAotICAgICAgICAgICAgICBGPFUxPgotICAgICAgICAgICAgLCBhdXg6Omhhc190eXBlPCBGPFUxPiA+Ojp2YWx1ZQotICAgICAgICAgICAgPgotCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUYWcgPSB2b2lkXwotICAgID4KLXN0cnVjdCBxdW90ZTIKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBxdW90ZV9pbXBsPAotICAgICAgICAgICAgICBGPCBVMSxVMiA+Ci0gICAgICAgICAgICAsIGF1eDo6aGFzX3R5cGU8IEY8IFUxLFUyID4gPjo6dmFsdWUKLSAgICAgICAgICAgID4KLQotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMyA+IGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFRhZyA9IHZvaWRfCi0gICAgPgotc3RydWN0IHF1b3RlMwotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBxdW90ZV9pbXBsPAotICAgICAgICAgICAgICBGPCBVMSxVMixVMyA+Ci0gICAgICAgICAgICAsIGF1eDo6aGFzX3R5cGU8IEY8IFUxLFUyLFUzID4gPjo6dmFsdWUKLSAgICAgICAgICAgID4KLQotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUDEsIHR5cGVuYW1lIFAyLCB0eXBlbmFtZSBQMywgdHlwZW5hbWUgUDQgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUYWcgPSB2b2lkXwotICAgID4KLXN0cnVjdCBxdW90ZTQKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIsIHR5cGVuYW1lIFUzLCB0eXBlbmFtZSBVNAotICAgICAgICA+Ci0gICAgc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBxdW90ZV9pbXBsPAotICAgICAgICAgICAgICBGPCBVMSxVMixVMyxVNCA+Ci0gICAgICAgICAgICAsIGF1eDo6aGFzX3R5cGU8IEY8IFUxLFUyLFUzLFU0ID4gPjo6dmFsdWUKLSAgICAgICAgICAgID4KLQotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICB0eXBlbmFtZSBQMSwgdHlwZW5hbWUgUDIsIHR5cGVuYW1lIFAzLCB0eXBlbmFtZSBQNAotICAgICAgICAsIHR5cGVuYW1lIFA1Ci0gICAgICAgID4KLSAgICAgIGNsYXNzIEYKLSAgICAsIHR5cGVuYW1lIFRhZyA9IHZvaWRfCi0gICAgPgotc3RydWN0IHF1b3RlNQotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiwgdHlwZW5hbWUgVTMsIHR5cGVuYW1lIFU0Ci0gICAgICAgICwgdHlwZW5hbWUgVTUKLSAgICAgICAgPgotICAgIHN0cnVjdCBhcHBseQotCi0gICAgICAgIDogcXVvdGVfaW1wbDwKLSAgICAgICAgICAgICAgRjwgVTEsVTIsVTMsVTQsVTUgPgotICAgICAgICAgICAgLCBhdXg6Omhhc190eXBlPCBGPCBVMSxVMixVMyxVNCxVNSA+ID46OnZhbHVlCi0gICAgICAgICAgICA+Ci0KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3JldmVyc2VfZm9sZF9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3JldmVyc2VfZm9sZF9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2QzYWQ3NS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9yZXZlcnNlX2ZvbGRfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMzEgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9yZXZlcnNlX2ZvbGRfaW1wbC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLS8vLyBmb3J3YXJkIGRlY2xhcmF0aW9uCi0KLXRlbXBsYXRlPAotICAgICAgbG9uZyBOCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfaW1wbDsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfaW1wbDwgMCxGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTAgYmt3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIwIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2ZvbGRfaW1wbDwgMSxGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLCBmd2Rfc3RhdGUwLCB0eXBlbmFtZSBkZXJlZjxpdGVyMD46OnR5cGUgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICAKLQotICAgIHR5cGVkZWYgZndkX3N0YXRlMSBia3dkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCwgYmt3ZF9zdGF0ZTEsIHR5cGVuYW1lIGRlcmVmPGl0ZXIwPjo6dHlwZSA+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+Ci17Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIExhc3QgaXRlcmF0b3I7Ci19OwotCi19fX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3JldmVyc2VfaXRlcl9mb2xkX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMzYmY1MDguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMzEgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy9yZXZlcnNlX2l0ZXJfZm9sZF9pbXBsLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLQotdGVtcGxhdGU8Ci0gICAgICBsb25nIE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2ltcGw7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbDwgMCxGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICB0eXBlZGVmIGZ3ZF9zdGF0ZTAgYmt3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIwIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsPCAxLEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMCxpdGVyMCA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIAotCi0gICAgdHlwZWRlZiBmd2Rfc3RhdGUxIGJrd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUxLGl0ZXIwID46OnR5cGUgYmt3ZF9zdGF0ZTA7Ci0gICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXIxIGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4KLXN0cnVjdCByZXZlcnNlX2l0ZXJfZm9sZF9pbXBsPCAyLEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMCxpdGVyMCA+Ojp0eXBlIGZ3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjA+Ojp0eXBlIGl0ZXIxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsZndkX3N0YXRlMSxpdGVyMSA+Ojp0eXBlIGZ3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5leHQ8aXRlcjE+Ojp0eXBlIGl0ZXIyOwotICAgIAotCi0gICAgdHlwZWRlZiBmd2Rfc3RhdGUyIGJrd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUyLGl0ZXIxID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTEsaXRlcjAgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAKLQotICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMiBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbDwgMyxGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTAsaXRlcjAgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTEsaXRlcjEgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTIsaXRlcjIgPjo6dHlwZSBmd2Rfc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICAKLQotICAgIHR5cGVkZWYgZndkX3N0YXRlMyBia3dkX3N0YXRlMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMyxpdGVyMiA+Ojp0eXBlIGJrd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUyLGl0ZXIxID46OnR5cGUgYmt3ZF9zdGF0ZTE7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTEsaXRlcjAgPjo6dHlwZSBia3dkX3N0YXRlMDsKLSAgICAKLQotICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiBpdGVyMyBpdGVyYXRvcjsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbDwgNCxGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTAsaXRlcjAgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTEsaXRlcjEgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTIsaXRlcjIgPjo6dHlwZSBmd2Rfc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTMsaXRlcjMgPjo6dHlwZSBmd2Rfc3RhdGU0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAKLQotICAgIHR5cGVkZWYgZndkX3N0YXRlNCBia3dkX3N0YXRlNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlNCxpdGVyMyA+Ojp0eXBlIGJrd2Rfc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUzLGl0ZXIyID46OnR5cGUgYmt3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTIsaXRlcjEgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMSxpdGVyMCA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgIAotCi0gICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIGl0ZXI0IGl0ZXJhdG9yOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICBsb25nIE4KLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2ltcGwKLXsKLSAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgIHR5cGVkZWYgU3RhdGUgZndkX3N0YXRlMDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTAsaXRlcjAgPjo6dHlwZSBmd2Rfc3RhdGUxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIwPjo6dHlwZSBpdGVyMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTEsaXRlcjEgPjo6dHlwZSBmd2Rfc3RhdGUyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIxPjo6dHlwZSBpdGVyMjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTIsaXRlcjIgPjo6dHlwZSBmd2Rfc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIyPjo6dHlwZSBpdGVyMzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgRm9yd2FyZE9wLGZ3ZF9zdGF0ZTMsaXRlcjMgPjo6dHlwZSBmd2Rfc3RhdGU0OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PGl0ZXIzPjo6dHlwZSBpdGVyNDsKLSAgICAKLQotICAgIHR5cGVkZWYgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbDwKLSAgICAgICAgICAoIChOIC0gNCkgPCAwID8gMCA6IE4gLSA0ICkKLSAgICAgICAgLCBpdGVyNAotICAgICAgICAsIExhc3QKLSAgICAgICAgLCBmd2Rfc3RhdGU0Ci0gICAgICAgICwgQmFja3dhcmRPcAotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+IG5lc3RlZF9jaHVuazsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmVzdGVkX2NodW5rOjpzdGF0ZSBia3dkX3N0YXRlNDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlNCxpdGVyMyA+Ojp0eXBlIGJrd2Rfc3RhdGUzOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPCBCYWNrd2FyZE9wLGJrd2Rfc3RhdGUzLGl0ZXIyID46OnR5cGUgYmt3ZF9zdGF0ZTI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IEJhY2t3YXJkT3AsYmt3ZF9zdGF0ZTIsaXRlcjEgPjo6dHlwZSBia3dkX3N0YXRlMTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgQmFja3dhcmRPcCxia3dkX3N0YXRlMSxpdGVyMCA+Ojp0eXBlIGJrd2Rfc3RhdGUwOwotICAgIAotCi0gICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5lc3RlZF9jaHVuazo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPgotc3RydWN0IHJldmVyc2VfaXRlcl9mb2xkX2ltcGw8IC0xLEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3AgPgotewotICAgIHR5cGVkZWYgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbDwKLSAgICAgICAgICAtMQotICAgICAgICAsIHR5cGVuYW1lIG1wbDo6bmV4dDxGaXJzdD46OnR5cGUKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgYXBwbHkyPCBGb3J3YXJkT3AsU3RhdGUsRmlyc3QgPjo6dHlwZQotICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiBuZXN0ZWRfc3RlcDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPAotICAgICAgICAgIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBuZXN0ZWRfc3RlcDo6c3RhdGUKLSAgICAgICAgLCBGaXJzdAotICAgICAgICA+Ojp0eXBlIHN0YXRlOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfc3RlcDo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgcmV2ZXJzZV9pdGVyX2ZvbGRfaW1wbDwgLTEsTGFzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wID4KLXsKLSAgICB0eXBlZGVmIFN0YXRlIHN0YXRlOwotICAgIHR5cGVkZWYgTGFzdCBpdGVyYXRvcjsKLX07Ci0KLX19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vc2V0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3NldC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRjNGNhMTEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vc2V0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9zZXQuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAgPSBuYSwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYSwgdHlwZW5hbWUgVDYgPSBuYSwgdHlwZW5hbWUgVDcgPSBuYQotICAgICwgdHlwZW5hbWUgVDggPSBuYSwgdHlwZW5hbWUgVDkgPSBuYSwgdHlwZW5hbWUgVDEwID0gbmEsIHR5cGVuYW1lIFQxMSA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTIgPSBuYSwgdHlwZW5hbWUgVDEzID0gbmEsIHR5cGVuYW1lIFQxNCA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTUgPSBuYSwgdHlwZW5hbWUgVDE2ID0gbmEsIHR5cGVuYW1lIFQxNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTggPSBuYSwgdHlwZW5hbWUgVDE5ID0gbmEKLSAgICA+Ci1zdHJ1Y3Qgc2V0OwotCi10ZW1wbGF0ZTwKLSAgICAgCi0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDA8ICA+Ci17Ci0gICAgdHlwZWRlZiBzZXQwPCAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMAotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxPFQwPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTxUMD46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDI8IFQwLFQxID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDI8IFQwLFQxID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQzPCBUMCxUMSxUMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQzPCBUMCxUMSxUMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDQ8IFQwLFQxLFQyLFQzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDQ8IFQwLFQxLFQyLFQzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDU8IFQwLFQxLFQyLFQzLFQ0ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDU8IFQwLFQxLFQyLFQzLFQ0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQ2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOAotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQ5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwCi0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyCi0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzCi0gICAgPgotc3RydWN0IHNldDwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICA+Ci1zdHJ1Y3Qgc2V0PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxNTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTU8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNQotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxNjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTY8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNgotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogc2V0MTc8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNwotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHNldDE4PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOAotICAgID4KLXN0cnVjdCBzZXQ8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBuYQotICAgICAgICA+Ci0gICAgOiBzZXQxOTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4ID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgID4KLXN0cnVjdCBzZXQKLSAgICA6IHNldDIwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDIwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vc2V0X2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vc2V0X2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZWYyZmRlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3NldF9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyOCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9zZXRfYy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwID0gTE9OR19NQVgsIGxvbmcgQzEgPSBMT05HX01BWCwgbG9uZyBDMiA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMzID0gTE9OR19NQVgsIGxvbmcgQzQgPSBMT05HX01BWCwgbG9uZyBDNSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM2ID0gTE9OR19NQVgsIGxvbmcgQzcgPSBMT05HX01BWCwgbG9uZyBDOCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM5ID0gTE9OR19NQVgsIGxvbmcgQzEwID0gTE9OR19NQVgsIGxvbmcgQzExID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzEyID0gTE9OR19NQVgsIGxvbmcgQzEzID0gTE9OR19NQVgsIGxvbmcgQzE0ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE1ID0gTE9OR19NQVgsIGxvbmcgQzE2ID0gTE9OR19NQVgsIGxvbmcgQzE3ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE4ID0gTE9OR19NQVgsIGxvbmcgQzE5ID0gTE9OR19NQVgKLSAgICA+Ci1zdHJ1Y3Qgc2V0X2M7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQwX2M8VD4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDBfYzxUPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDFfYzwgVCxDMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxX2M8IFQsQzAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDJfYzwgVCxDMCxDMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQyX2M8IFQsQzAsQzEgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDNfYzwgVCxDMCxDMSxDMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQzX2M8IFQsQzAsQzEsQzIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDRfYzwgVCxDMCxDMSxDMixDMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ0X2M8IFQsQzAsQzEsQzIsQzMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDVfYzwgVCxDMCxDMSxDMixDMyxDNCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ1X2M8IFQsQzAsQzEsQzIsQzMsQzQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDZfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ2X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDdfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ3X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDhfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ4X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDlfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQ5X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzggPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDEwX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTBfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDExX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDExX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxMl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTJfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDEzX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTNfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzCi0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDE0X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMwotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQxNF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcsIGxvbmcgQzgsIGxvbmcgQzksIGxvbmcgQzEwLCBsb25nIEMxMSwgbG9uZyBDMTIKLSAgICAsIGxvbmcgQzEzLCBsb25nIEMxNAotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogc2V0MTVfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MTVfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNQotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDE2X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE2X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNgotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxN19jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE3X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3Ci0gICAgPgotc3RydWN0IHNldF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiBzZXQxOF9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2V0MThfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOAotICAgID4KLXN0cnVjdCBzZXRfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBDMTgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHNldDE5X2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIEMxNywgQzE4Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNldDE5X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTggPjo6dHlwZSB0eXBlOwotfTsKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5LCBsb25nIEMxMCwgbG9uZyBDMTEsIGxvbmcgQzEyCi0gICAgLCBsb25nIEMxMywgbG9uZyBDMTQsIGxvbmcgQzE1LCBsb25nIEMxNiwgbG9uZyBDMTcsIGxvbmcgQzE4LCBsb25nIEMxOQotICAgID4KLXN0cnVjdCBzZXRfYwotICAgIDogc2V0MjBfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBDMTgsIEMxOQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZXQyMF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9zaGlmdF9sZWZ0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3NoaWZ0X2xlZnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YzRkMzg5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3NoaWZ0X2xlZnQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vIENvcHlyaWdodCBKYWFwIFN1dGVyIDIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvc2hpZnRfbGVmdC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IHNoaWZ0X2xlZnRfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IHNoaWZ0X2xlZnRfaW1wbDwgVGFnMSxUYWcxID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgICwgYXV4OjpjYXN0MXN0X2ltcGw8IHNoaWZ0X2xlZnRfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBzaGlmdF9sZWZ0X2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IHNoaWZ0X2xlZnRfaW1wbDwgbmEsVGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IHNoaWZ0X2xlZnRfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBzaGlmdF9sZWZ0X3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgID4KLXN0cnVjdCBzaGlmdF9sZWZ0Ci0KLSAgICA6IHNoaWZ0X2xlZnRfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBzaGlmdF9sZWZ0X3RhZzxOMT46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBzaGlmdF9sZWZ0X3RhZzxOMj46OnR5cGUKLSAgICAgICAgPjo6dGVtcGxhdGUgYXBwbHk8IE4xLE4yID46OnR5cGUKLXsKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQzIoMiwgMiwgc2hpZnRfbGVmdCkKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2hpZnRfbGVmdF9pbXBsPCBpbnRlZ3JhbF9jX3RhZyxpbnRlZ3JhbF9jX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4sIHR5cGVuYW1lIFMgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIE46OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICwgKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlCi0gICAgICAgICAgICAgICAgICA8PCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoUyk6OnZhbHVlCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3NoaWZ0X3JpZ2h0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3NoaWZ0X3JpZ2h0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWI2MDhjMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9zaGlmdF9yaWdodC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8gQ29weXJpZ2h0IEphYXAgU3V0ZXIgMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9zaGlmdF9yaWdodC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUYWcxCi0gICAgLCB0eXBlbmFtZSBUYWcyCi0gICAgPgotc3RydWN0IHNoaWZ0X3JpZ2h0X2ltcGwKLSAgICA6IGlmX2M8Ci0gICAgICAgICAgKCBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMSkKLSAgICAgICAgICAgICAgPiBORE5CT09TVF9NUExfQVVYX05FU1RFRF9WQUxVRV9XS05EKGludCwgVGFnMikKLSAgICAgICAgICAgICkKLQotICAgICAgICAsIGF1eDo6Y2FzdDJuZF9pbXBsPCBzaGlmdF9yaWdodF9pbXBsPCBUYWcxLFRhZzEgPixUYWcxLCBUYWcyID4KLSAgICAgICAgLCBhdXg6OmNhc3Qxc3RfaW1wbDwgc2hpZnRfcmlnaHRfaW1wbDwgVGFnMixUYWcyID4sVGFnMSwgVGFnMiA+Ci0gICAgICAgID46OnR5cGUKLXsKLX07Ci0KLS8vLyBmb3IgRGlnaXRhbCBNYXJzIEMrKy9jb21waWxlcnMgd2l0aCBubyBDVFBTL1RUUCBzdXBwb3J0Ci10ZW1wbGF0ZTw+IHN0cnVjdCBzaGlmdF9yaWdodF9pbXBsPCBuYSxuYSA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBzaGlmdF9yaWdodF9pbXBsPCBuYSxUYWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3Qgc2hpZnRfcmlnaHRfaW1wbDwgVGFnLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBzaGlmdF9yaWdodF90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnRhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4xKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShOMikKLSAgICA+Ci1zdHJ1Y3Qgc2hpZnRfcmlnaHQKLQotICAgIDogc2hpZnRfcmlnaHRfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBzaGlmdF9yaWdodF90YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgc2hpZnRfcmlnaHRfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCAyLCBzaGlmdF9yaWdodCkKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2hpZnRfcmlnaHRfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOLCB0eXBlbmFtZSBTID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBpbnRlZ3JhbF9jPAotICAgICAgICAgICAgICB0eXBlbmFtZSBOOjp2YWx1ZV90eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZQotICAgICAgICAgICAgICAgICAgPj4gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKFMpOjp2YWx1ZQotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgID4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi90ZW1wbGF0ZV9hcml0eS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi90ZW1wbGF0ZV9hcml0eS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZjYjQyYWUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vdGVtcGxhdGVfYXJpdHkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvYXV4Xy90ZW1wbGF0ZV9hcml0eS5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi90aW1lcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi90aW1lcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZlZTg1M2EuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vdGltZXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQxICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3RpbWVzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFRhZzEKLSAgICAsIHR5cGVuYW1lIFRhZzIKLSAgICA+Ci1zdHJ1Y3QgdGltZXNfaW1wbAotICAgIDogaWZfYzwKLSAgICAgICAgICAoIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcxKQotICAgICAgICAgICAgICA+IE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1ZBTFVFX1dLTkQoaW50LCBUYWcyKQotICAgICAgICAgICAgKQotCi0gICAgICAgICwgYXV4OjpjYXN0Mm5kX2ltcGw8IHRpbWVzX2ltcGw8IFRhZzEsVGFnMSA+LFRhZzEsIFRhZzIgPgotICAgICAgICAsIGF1eDo6Y2FzdDFzdF9pbXBsPCB0aW1lc19pbXBsPCBUYWcyLFRhZzIgPixUYWcxLCBUYWcyID4KLSAgICAgICAgPjo6dHlwZQotewotfTsKLQotLy8vIGZvciBEaWdpdGFsIE1hcnMgQysrL2NvbXBpbGVycyB3aXRoIG5vIENUUFMvVFRQIHN1cHBvcnQKLXRlbXBsYXRlPD4gc3RydWN0IHRpbWVzX2ltcGw8IG5hLG5hID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVTEsIHR5cGVuYW1lIFUyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGFwcGx5IHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlICA9IDApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IHRpbWVzX2ltcGw8IG5hLFRhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUxLCB0eXBlbmFtZSBVMiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBhcHBseSB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSAgPSAwKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCB0aW1lc19pbXBsPCBUYWcsbmEgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVMSwgdHlwZW5hbWUgVTIgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYXBwbHkgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgID0gMCk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHRpbWVzX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKE4yKQotICAgICwgdHlwZW5hbWUgTjMgPSBuYSwgdHlwZW5hbWUgTjQgPSBuYSwgdHlwZW5hbWUgTjUgPSBuYQotICAgID4KLXN0cnVjdCB0aW1lcwotICAgIDogdGltZXM8IHRpbWVzPCB0aW1lczwgdGltZXM8IE4xLE4yID4sIE4zPiwgTjQ+LCBONT4KLXsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTjEsIHR5cGVuYW1lIE4yLCB0eXBlbmFtZSBOMywgdHlwZW5hbWUgTjQKLSAgICA+Ci1zdHJ1Y3QgdGltZXM8IE4xLE4yLE4zLE40LG5hID4KLQotICAgIDogdGltZXM8IHRpbWVzPCB0aW1lczwgTjEsTjIgPiwgTjM+LCBOND4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIHRpbWVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBONCwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMiwgdHlwZW5hbWUgTjMKLSAgICA+Ci1zdHJ1Y3QgdGltZXM8IE4xLE4yLE4zLG5hLG5hID4KLQotICAgIDogdGltZXM8IHRpbWVzPCBOMSxOMiA+LCBOMz4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoCi0gICAgICAgICAgNQotICAgICAgICAsIHRpbWVzCi0gICAgICAgICwgKCBOMSwgTjIsIE4zLCBuYSwgbmEgKQotICAgICAgICApCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE4xLCB0eXBlbmFtZSBOMgotICAgID4KLXN0cnVjdCB0aW1lczwgTjEsTjIsbmEsbmEsbmEgPgotICAgIDogdGltZXNfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSB0aW1lc190YWc8TjE+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgdGltZXNfdGFnPE4yPjo6dHlwZQotICAgICAgICA+Ojp0ZW1wbGF0ZSBhcHBseTwgTjEsTjIgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygKLSAgICAgICAgICA1Ci0gICAgICAgICwgdGltZXMKLSAgICAgICAgLCAoIE4xLCBOMiwgbmEsIG5hLCBuYSApCi0gICAgICAgICkKLQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDMigyLCA1LCB0aW1lcykKLQotfX0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdGltZXNfaW1wbDwgaW50ZWdyYWxfY190YWcsaW50ZWdyYWxfY190YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOMSwgdHlwZW5hbWUgTjIgPiBzdHJ1Y3QgYXBwbHkKLQotICAgICAgICA6IGludGVncmFsX2M8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGF1eDo6bGFyZ2VzdF9pbnQ8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOMTo6dmFsdWVfdHlwZQotICAgICAgICAgICAgICAgICwgdHlwZW5hbWUgTjI6OnZhbHVlX3R5cGUKLSAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAsICggTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4xKTo6dmFsdWUKLSAgICAgICAgICAgICAgICAgICogTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4yKTo6dmFsdWUKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vdW5wYWNrX2FyZ3MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vdW5wYWNrX2FyZ3MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZWMzMWFmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3VucGFja19hcmdzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMi0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3VucGFja19hcmdzLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IGludCBzaXplLCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4KLXN0cnVjdCB1bnBhY2tfYXJnc19pbXBsOwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDwgMCxGLEFyZ3MgPgotICAgIDogYXBwbHkwPAotICAgICAgICAgIEYKLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPgotc3RydWN0IHVucGFja19hcmdzX2ltcGw8IDEsRixBcmdzID4KLSAgICA6IGFwcGx5MTwKLSAgICAgICAgICBGCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywwID46OnR5cGUKLSAgICAgICAgPgotewotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYsIHR5cGVuYW1lIEFyZ3MgPgotc3RydWN0IHVucGFja19hcmdzX2ltcGw8IDIsRixBcmdzID4KLSAgICA6IGFwcGx5MjwKLSAgICAgICAgICBGCi0gICAgICAgICwgdHlwZW5hbWUgYXRfYzwgQXJncywwID46OnR5cGUsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMSA+Ojp0eXBlCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4KLXN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPCAzLEYsQXJncyA+Ci0gICAgOiBhcHBseTM8Ci0gICAgICAgICAgRgotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMCA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDEgPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMiA+Ojp0eXBlCi0gICAgICAgID4KLXsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGLCB0eXBlbmFtZSBBcmdzID4KLXN0cnVjdCB1bnBhY2tfYXJnc19pbXBsPCA0LEYsQXJncyA+Ci0gICAgOiBhcHBseTQ8Ci0gICAgICAgICAgRgotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMCA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDEgPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGF0X2M8IEFyZ3MsMiA+Ojp0eXBlLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDMgPjo6dHlwZQotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgdHlwZW5hbWUgQXJncyA+Ci1zdHJ1Y3QgdW5wYWNrX2FyZ3NfaW1wbDwgNSxGLEFyZ3MgPgotICAgIDogYXBwbHk1PAotICAgICAgICAgIEYKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDAgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywxID46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDIgPjo6dHlwZSwgdHlwZW5hbWUgYXRfYzwgQXJncywzID46OnR5cGUKLSAgICAgICAgLCB0eXBlbmFtZSBhdF9jPCBBcmdzLDQgPjo6dHlwZQotICAgICAgICA+Ci17Ci19OwotCi19Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRgotICAgID4KLXN0cnVjdCB1bnBhY2tfYXJncwotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBBcmdzID4gc3RydWN0IGFwcGx5Ci0KLSAgICAgICAgOiBhdXg6OnVucGFja19hcmdzX2ltcGw8IHNpemU8QXJncz46OnZhbHVlLEYsIEFyZ3MgPgotCi0gICAgewotICAgIH07Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX1BBU1NfVEhST1VHSF9MQU1CREFfU1BFQygxLCB1bnBhY2tfYXJncykKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vdmVjdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3ZlY3Rvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRmNjc1ODkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vdmVjdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC92ZWN0b3IuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAgPSBuYSwgdHlwZW5hbWUgVDEgPSBuYSwgdHlwZW5hbWUgVDIgPSBuYSwgdHlwZW5hbWUgVDMgPSBuYQotICAgICwgdHlwZW5hbWUgVDQgPSBuYSwgdHlwZW5hbWUgVDUgPSBuYSwgdHlwZW5hbWUgVDYgPSBuYSwgdHlwZW5hbWUgVDcgPSBuYQotICAgICwgdHlwZW5hbWUgVDggPSBuYSwgdHlwZW5hbWUgVDkgPSBuYSwgdHlwZW5hbWUgVDEwID0gbmEsIHR5cGVuYW1lIFQxMSA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTIgPSBuYSwgdHlwZW5hbWUgVDEzID0gbmEsIHR5cGVuYW1lIFQxNCA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTUgPSBuYSwgdHlwZW5hbWUgVDE2ID0gbmEsIHR5cGVuYW1lIFQxNyA9IG5hCi0gICAgLCB0eXBlbmFtZSBUMTggPSBuYSwgdHlwZW5hbWUgVDE5ID0gbmEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yOwotCi10ZW1wbGF0ZTwKLSAgICAgCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjA8ICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IwPCAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMAotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxPFQwPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTxUMD46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjI8IFQwLFQxID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjI8IFQwLFQxID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IzPCBUMCxUMSxUMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IzPCBUMCxUMSxUMiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjQ8IFQwLFQxLFQyLFQzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjQ8IFQwLFQxLFQyLFQzID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjU8IFQwLFQxLFQyLFQzLFQ0ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjU8IFQwLFQxLFQyLFQzLFQ0ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I2PCBUMCxUMSxUMixUMyxUNCxUNSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3Rvcjc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcjc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3Rvcjg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcjg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOAotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3I5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgbmEsIG5hLCBuYSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBuYSwgbmEsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgICwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMTwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgbmEsIG5hLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMjwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgbmEsIG5hLCBuYQotICAgICAgICAsIG5hLCBuYSwgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMzwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzCi0gICAgPgotc3RydWN0IHZlY3RvcjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBuYSwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNDwgVDAsVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDksVDEwLFQxMSxUMTIsVDEzID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNCwgbmEKLSAgICAgICAgLCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTU8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNQotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBuYSwgbmEsIG5hLCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNjwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTY8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1ID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNgotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIG5hLCBuYSwgbmEKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTc8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNiA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNwotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgbmEsIG5hCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE4PAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOAotICAgID4KLXN0cnVjdCB2ZWN0b3I8Ci0gICAgICAgICAgVDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMCwgVDExLCBUMTIsIFQxMywgVDE0Ci0gICAgICAgICwgVDE1LCBUMTYsIFQxNywgVDE4LCBuYQotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxOTwKLSAgICAgICAgICBUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwLCBUMTEsIFQxMiwgVDEzLCBUMTQKLSAgICAgICAgLCBUMTUsIFQxNiwgVDE3LCBUMTgKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4ID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgID4KLXN0cnVjdCB2ZWN0b3IKLSAgICA6IHZlY3RvcjIwPAotICAgICAgICAgIFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTAsIFQxMSwgVDEyLCBUMTMsIFQxNAotICAgICAgICAsIFQxNSwgVDE2LCBUMTcsIFQxOCwgVDE5Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjIwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTkgPjo6dHlwZSB0eXBlOwotfTsKLQotfX0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vdmVjdG9yX2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vdmVjdG9yX2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMmZiZGI0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3ZlY3Rvcl9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMwOSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC92ZWN0b3JfYy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwID0gTE9OR19NQVgsIGxvbmcgQzEgPSBMT05HX01BWCwgbG9uZyBDMiA9IExPTkdfTUFYCi0gICAgLCBsb25nIEMzID0gTE9OR19NQVgsIGxvbmcgQzQgPSBMT05HX01BWCwgbG9uZyBDNSA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM2ID0gTE9OR19NQVgsIGxvbmcgQzcgPSBMT05HX01BWCwgbG9uZyBDOCA9IExPTkdfTUFYCi0gICAgLCBsb25nIEM5ID0gTE9OR19NQVgsIGxvbmcgQzEwID0gTE9OR19NQVgsIGxvbmcgQzExID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzEyID0gTE9OR19NQVgsIGxvbmcgQzEzID0gTE9OR19NQVgsIGxvbmcgQzE0ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE1ID0gTE9OR19NQVgsIGxvbmcgQzE2ID0gTE9OR19NQVgsIGxvbmcgQzE3ID0gTE9OR19NQVgKLSAgICAsIGxvbmcgQzE4ID0gTE9OR19NQVgsIGxvbmcgQzE5ID0gTE9OR19NQVgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IwX2M8VD4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjBfYzxUPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjFfYzwgVCwgVChDMCkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMV9jPCBULCBUKEMwKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMl9jPCBULCBUKEMwKSwgVChDMSkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMl9jPCBULCBUKEMwKSwgVChDMSkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjNfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IzX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMikgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjRfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMykgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yNV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yNV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjZfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I2X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjdfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNikgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yN19jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQsIGxvbmcgQzAsIGxvbmcgQzEsIGxvbmcgQzIsIGxvbmcgQzMsIGxvbmcgQzQsIGxvbmcgQzUKLSAgICAsIGxvbmcgQzYsIGxvbmcgQzcKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yOF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNykgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yOF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNykgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjlfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I5X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCkgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBsb25nIEMwLCBsb25nIEMxLCBsb25nIEMyLCBsb25nIEMzLCBsb25nIEM0LCBsb25nIEM1Ci0gICAgLCBsb25nIEM2LCBsb25nIEM3LCBsb25nIEM4LCBsb25nIEM5Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICAsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEwX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEwX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgICwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTFfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxMV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExCi0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxMl9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTJfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgTE9OR19NQVgKLSAgICAgICAgLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjEzX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjEzX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMwotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTRfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxNF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxNV9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMTVfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNQotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE2X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE2X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2M8Ci0gICAgICAgICAgVCwgQzAsIEMxLCBDMiwgQzMsIEM0LCBDNSwgQzYsIEM3LCBDOCwgQzksIEMxMCwgQzExLCBDMTIsIEMxMywgQzE0Ci0gICAgICAgICwgQzE1LCBDMTYsIExPTkdfTUFYLCBMT05HX01BWCwgTE9OR19NQVgKLSAgICAgICAgPgotICAgIDogdmVjdG9yMTdfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3IxN19jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3Ci0gICAgPgotc3RydWN0IHZlY3Rvcl9jPAotICAgICAgICAgIFQsIEMwLCBDMSwgQzIsIEMzLCBDNCwgQzUsIEM2LCBDNywgQzgsIEM5LCBDMTAsIEMxMSwgQzEyLCBDMTMsIEMxNAotICAgICAgICAsIEMxNSwgQzE2LCBDMTcsIExPTkdfTUFYLCBMT05HX01BWAotICAgICAgICA+Ci0gICAgOiB2ZWN0b3IxOF9jPCBULCBUKEMwKSwgVChDMSksIFQoQzIpLCBUKEMzKSwgVChDNCksIFQoQzUpLCBUKEM2KSwgVChDNyksIFQoQzgpLCBUKEM5KSwgVChDMTApLCBUKEMxMSksIFQoQzEyKSwgVChDMTMpLCBUKEMxNCksIFQoQzE1KSwgVChDMTYpLCBUKEMxNykgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMThfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSwgVChDMTcpID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOAotICAgID4KLXN0cnVjdCB2ZWN0b3JfYzwKLSAgICAgICAgICBULCBDMCwgQzEsIEMyLCBDMywgQzQsIEM1LCBDNiwgQzcsIEM4LCBDOSwgQzEwLCBDMTEsIEMxMiwgQzEzLCBDMTQKLSAgICAgICAgLCBDMTUsIEMxNiwgQzE3LCBDMTgsIExPTkdfTUFYCi0gICAgICAgID4KLSAgICA6IHZlY3RvcjE5X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNiksIFQoQzE3KSwgVChDMTgpID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjE5X2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNiksIFQoQzE3KSwgVChDMTgpID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vLyBwcmltYXJ5IHRlbXBsYXRlIChub3QgYSBzcGVjaWFsaXphdGlvbiEpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVCwgbG9uZyBDMCwgbG9uZyBDMSwgbG9uZyBDMiwgbG9uZyBDMywgbG9uZyBDNCwgbG9uZyBDNQotICAgICwgbG9uZyBDNiwgbG9uZyBDNywgbG9uZyBDOCwgbG9uZyBDOSwgbG9uZyBDMTAsIGxvbmcgQzExLCBsb25nIEMxMgotICAgICwgbG9uZyBDMTMsIGxvbmcgQzE0LCBsb25nIEMxNSwgbG9uZyBDMTYsIGxvbmcgQzE3LCBsb25nIEMxOCwgbG9uZyBDMTkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yX2MKLSAgICA6IHZlY3RvcjIwX2M8IFQsIFQoQzApLCBUKEMxKSwgVChDMiksIFQoQzMpLCBUKEM0KSwgVChDNSksIFQoQzYpLCBUKEM3KSwgVChDOCksIFQoQzkpLCBUKEMxMCksIFQoQzExKSwgVChDMTIpLCBUKEMxMyksIFQoQzE0KSwgVChDMTUpLCBUKEMxNiksIFQoQzE3KSwgVChDMTgpLCBUKEMxOSkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yMjBfYzwgVCwgVChDMCksIFQoQzEpLCBUKEMyKSwgVChDMyksIFQoQzQpLCBUKEM1KSwgVChDNiksIFQoQzcpLCBUKEM4KSwgVChDOSksIFQoQzEwKSwgVChDMTEpLCBUKEMxMiksIFQoQzEzKSwgVChDMTQpLCBUKEMxNSksIFQoQzE2KSwgVChDMTcpLCBUKEMxOCksIFQoQzE5KSA+Ojp0eXBlIHR5cGU7Ci19OwotCi19fQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9hZGQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvYWRkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzQwYjcwMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9hZGQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjUgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfUFJFUFJPQ0VTU09SX0FERF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9QUkVQUk9DRVNTT1JfQUREX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAyLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogYWRkLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3ByZXByb2Nlc3Nvci5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX09XTl9QUF9QUklNSVRJVkVTKQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL3R1cGxlLmhwcD4KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19CUk9LRU5fUFBfTUFDUk9fRVhQQU5TSU9OKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9BREQoaSxqKSBcCi0gICAgTkROQk9PU1RfTVBMX1BQX0FERF9ERUxBWShpLGopIFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0FERF9ERUxBWShpLGopIFwKLSAgICBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfTVBMX1BQX1RVUExFXzExX0VMRU1fIyNpLE5ETkJPT1NUX01QTF9QUF9BRERfIyNqKSBcCi0gICAgLyoqLwotI2Vsc2UKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0FERChpLGopIFwKLSAgICBORE5CT09TVF9NUExfUFBfQUREX0RFTEFZKGksaikgXAotICAgIC8qKi8KLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfQUREX0RFTEFZKGksaikgXAotICAgIE5ETkJPT1NUX01QTF9QUF9UVVBMRV8xMV9FTEVNXyMjaSBORE5CT09TVF9NUExfUFBfQUREXyMjaiBcCi0gICAgLyoqLwotI2VuZGlmCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0FERF8wICgwLDEsMiwzLDQsNSw2LDcsOCw5LDEwKQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfQUREXzEgKDEsMiwzLDQsNSw2LDcsOCw5LDEwLDApCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9BRERfMiAoMiwzLDQsNSw2LDcsOCw5LDEwLDAsMCkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0FERF8zICgzLDQsNSw2LDcsOCw5LDEwLDAsMCwwKQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfQUREXzQgKDQsNSw2LDcsOCw5LDEwLDAsMCwwLDApCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9BRERfNSAoNSw2LDcsOCw5LDEwLDAsMCwwLDAsMCkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0FERF82ICg2LDcsOCw5LDEwLDAsMCwwLDAsMCwwKQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfQUREXzcgKDcsOCw5LDEwLDAsMCwwLDAsMCwwLDApCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9BRERfOCAoOCw5LDEwLDAsMCwwLDAsMCwwLDAsMCkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0FERF85ICg5LDEwLDAsMCwwLDAsMCwwLDAsMCwwKQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfQUREXzEwICgxMCwwLDAsMCwwLDAsMCwwLDAsMCwwKQotCi0jZWxzZQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvYWRkLmhwcD4KLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfQUREKGksaikgXAotICAgIE5ETkJPT1NUX1BQX0FERChpLGopIFwKLSAgICAvKiovCi0gICAgCi0jZW5kaWYgCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX1BSRVBST0NFU1NPUl9BRERfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9kZWZfcGFyYW1zX3RhaWwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvZGVmX3BhcmFtc190YWlsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjY1MzZkMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9kZWZfcGFyYW1zX3RhaWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTA1ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX1BSRVBST0NFU1NPUl9ERUZfUEFSQU1TX1RBSUxfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfUFJFUFJPQ0VTU09SX0RFRl9QQVJBTVNfVEFJTF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGRlZl9wYXJhbXNfdGFpbC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9saW1pdHMvYXJpdHkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9kdHAuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9wcmVwcm9jZXNzb3IuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbW1hX2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvbG9naWNhbC9hbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pZGVudGl0eS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2VtcHR5LmhwcD4KLQotLy8gTkROQk9PU1RfTVBMX1BQX0RFRl9QQVJBTVNfVEFJTCgxLFQsdmFsdWUpOiAsIFQxID0gdmFsdWUsIC4uLCBUbiA9IHZhbHVlCi0vLyBORE5CT09TVF9NUExfUFBfREVGX1BBUkFNU19UQUlMKDIsVCx2YWx1ZSk6ICwgVDIgPSB2YWx1ZSwgLi4sIFRuID0gdmFsdWUKLS8vIE5ETkJPT1NUX01QTF9QUF9ERUZfUEFSQU1TX1RBSUwobixULHZhbHVlKTogPG5vdGhpbmc+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX09XTl9QUF9QUklNSVRJVkVTKQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL2ZpbHRlcl9wYXJhbXMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9zdWIuaHBwPgotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9ERUZfUEFSQU1TX1RBSUxfSU1QTChpLCBwYXJhbSwgdmFsdWVfZnVuYykgXAotICAgIE5ETkJPT1NUX01QTF9QUF9ERUZfUEFSQU1TX1RBSUxfREVMQVlfMSggXAotICAgICAgICAgIGkgXAotICAgICAgICAsIE5ETkJPT1NUX01QTF9QUF9TVUIoTkROQk9PU1RfTVBMX0xJTUlUX01FVEFGVU5DVElPTl9BUklUWSxpKSBcCi0gICAgICAgICwgcGFyYW0gXAotICAgICAgICAsIHZhbHVlX2Z1bmMgXAotICAgICAgICApIFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0RFRl9QQVJBTVNfVEFJTF9ERUxBWV8xKGksIG4sIHBhcmFtLCB2YWx1ZV9mdW5jKSBcCi0gICAgTkROQk9PU1RfTVBMX1BQX0RFRl9QQVJBTVNfVEFJTF9ERUxBWV8yKGksbixwYXJhbSx2YWx1ZV9mdW5jKSBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9ERUZfUEFSQU1TX1RBSUxfREVMQVlfMihpLCBuLCBwYXJhbSwgdmFsdWVfZnVuYykgXAotICAgIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE5ETkJPT1NUX1BQX0FORChpLG4pKSBcCi0gICAgTkROQk9PU1RfTVBMX1BQX0RFRl9QQVJBTVNfVEFJTF8jI2kobixwYXJhbSx2YWx1ZV9mdW5jKSBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9ERUZfUEFSQU1TX1RBSUxfMChpLHAsdikgTkROQk9PU1RfTVBMX1BQX0ZJTFRFUl9QQVJBTVNfIyNpKHAjIzEgdigpLHAjIzIgdigpLHAjIzMgdigpLHAjIzQgdigpLHAjIzUgdigpLHAjIzYgdigpLHAjIzcgdigpLHAjIzggdigpLHAjIzkgdigpKQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfREVGX1BBUkFNU19UQUlMXzEoaSxwLHYpIE5ETkJPT1NUX01QTF9QUF9GSUxURVJfUEFSQU1TXyMjaShwIyMyIHYoKSxwIyMzIHYoKSxwIyM0IHYoKSxwIyM1IHYoKSxwIyM2IHYoKSxwIyM3IHYoKSxwIyM4IHYoKSxwIyM5IHYoKSxwMSkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0RFRl9QQVJBTVNfVEFJTF8yKGkscCx2KSBORE5CT09TVF9NUExfUFBfRklMVEVSX1BBUkFNU18jI2kocCMjMyB2KCkscCMjNCB2KCkscCMjNSB2KCkscCMjNiB2KCkscCMjNyB2KCkscCMjOCB2KCkscCMjOSB2KCkscDEscDIpCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9ERUZfUEFSQU1TX1RBSUxfMyhpLHAsdikgTkROQk9PU1RfTVBMX1BQX0ZJTFRFUl9QQVJBTVNfIyNpKHAjIzQgdigpLHAjIzUgdigpLHAjIzYgdigpLHAjIzcgdigpLHAjIzggdigpLHAjIzkgdigpLHAxLHAyLHAzKQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfREVGX1BBUkFNU19UQUlMXzQoaSxwLHYpIE5ETkJPT1NUX01QTF9QUF9GSUxURVJfUEFSQU1TXyMjaShwIyM1IHYoKSxwIyM2IHYoKSxwIyM3IHYoKSxwIyM4IHYoKSxwIyM5IHYoKSxwMSxwMixwMyxwNCkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0RFRl9QQVJBTVNfVEFJTF81KGkscCx2KSBORE5CT09TVF9NUExfUFBfRklMVEVSX1BBUkFNU18jI2kocCMjNiB2KCkscCMjNyB2KCkscCMjOCB2KCkscCMjOSB2KCkscDEscDIscDMscDQscDUpCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9ERUZfUEFSQU1TX1RBSUxfNihpLHAsdikgTkROQk9PU1RfTVBMX1BQX0ZJTFRFUl9QQVJBTVNfIyNpKHAjIzcgdigpLHAjIzggdigpLHAjIzkgdigpLHAxLHAyLHAzLHA0LHA1LHA2KQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfREVGX1BBUkFNU19UQUlMXzcoaSxwLHYpIE5ETkJPT1NUX01QTF9QUF9GSUxURVJfUEFSQU1TXyMjaShwIyM4IHYoKSxwIyM5IHYoKSxwMSxwMixwMyxwNCxwNSxwNixwNykKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0RFRl9QQVJBTVNfVEFJTF84KGkscCx2KSBORE5CT09TVF9NUExfUFBfRklMVEVSX1BBUkFNU18jI2kocCMjOSB2KCkscDEscDIscDMscDQscDUscDYscDcscDgpCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9ERUZfUEFSQU1TX1RBSUxfOShpLHAsdikgTkROQk9PU1RfTVBMX1BQX0ZJTFRFUl9QQVJBTVNfIyNpKHAxLHAyLHAzLHA0LHA1LHA2LHA3LHA4LHA5KQotCi0jZWxzZQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvYWRkLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9zdWIuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pbmMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9lbGVtLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZWF0LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfQVVYX1RBSUxfUEFSQU1fRlVOQyh1bnVzZWQsIGksIG9wKSBcCi0gICAgLCBORE5CT09TVF9QUF9DQVQoIFwKLSAgICAgICAgICBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDMsIDEsIG9wKSBcCi0gICAgICAgICwgTkROQk9PU1RfUFBfQUREX0QoMSwgaSwgTkROQk9PU1RfUFBfSU5DKE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMywgMCwgb3ApKSkgXAotICAgICAgICApIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMywgMiwgb3ApKCkgXAotICAgIC8qKi8KLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfREVGX1BBUkFNU19UQUlMX0lNUEwoaSwgcGFyYW0sIHZhbHVlX2Z1bmMpIFwKLSAgICBORE5CT09TVF9QUF9SRVBFQVQoIFwKLSAgICAgICAgICBORE5CT09TVF9QUF9TVUJfRCgxLCBORE5CT09TVF9NUExfTElNSVRfTUVUQUZVTkNUSU9OX0FSSVRZLCBpKSBcCi0gICAgICAgICwgTkROQk9PU1RfTVBMX1BQX0FVWF9UQUlMX1BBUkFNX0ZVTkMgXAotICAgICAgICAsIChpLCBwYXJhbSwgdmFsdWVfZnVuYykgXAotICAgICAgICApIFwKLSAgICAvKiovCi0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfTk9fT1dOX1BQX1BSSU1JVElWRVMKLQotI2RlZmluZSBORE5CT09TVF9NUExfUFBfREVGX1BBUkFNU19UQUlMKGksIHBhcmFtLCB2YWx1ZSkgXAotICAgIE5ETkJPT1NUX01QTF9QUF9ERUZfUEFSQU1TX1RBSUxfSU1QTChpLCBwYXJhbSwgTkROQk9PU1RfUFBfSURFTlRJVFkoPXZhbHVlKSkgXAotICAgIC8qKi8KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fREVGQVVMVF9QQVJBTUVURVJTX0lOX05FU1RFRF9URU1QTEFURVMpCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9ORVNURURfREVGX1BBUkFNU19UQUlMKGksIHBhcmFtLCB2YWx1ZSkgXAotICAgIE5ETkJPT1NUX01QTF9QUF9ERUZfUEFSQU1TX1RBSUxfSU1QTChpLCBwYXJhbSwgTkROQk9PU1RfUFBfSURFTlRJVFkoPXZhbHVlKSkgXAotICAgIC8qKi8KLSNlbHNlCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9ORVNURURfREVGX1BBUkFNU19UQUlMKGksIHBhcmFtLCB2YWx1ZSkgXAotICAgIE5ETkJPT1NUX01QTF9QUF9ERUZfUEFSQU1TX1RBSUxfSU1QTChpLCBwYXJhbSwgTkROQk9PU1RfUFBfRU1QVFkpIFwKLSAgICAvKiovCi0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfUFJFUFJPQ0VTU09SX0RFRl9QQVJBTVNfVEFJTF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL2RlZmF1bHRfcGFyYW1zLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL2RlZmF1bHRfcGFyYW1zLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTUyMzNmNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9kZWZhdWx0X3BhcmFtcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2NyArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9QUkVQUk9DRVNTT1JfREVGQVVMVF9QQVJBTVNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfUFJFUFJPQ0VTU09SX0RFRkFVTFRfUEFSQU1TX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAyLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogZGVmYXVsdF9wYXJhbXMuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvcHJlcHJvY2Vzc29yLmhwcD4KLQotLy8gTkROQk9PU1RfTVBMX1BQX0RFRkFVTFRfUEFSQU1TKDAsVCxpbnQpOiA8bm90aGluZz4KLS8vIE5ETkJPT1NUX01QTF9QUF9ERUZBVUxUX1BBUkFNUygxLFQsaW50KTogVDEgPSBpbnQKLS8vIE5ETkJPT1NUX01QTF9QUF9ERUZBVUxUX1BBUkFNUygyLFQsaW50KTogVDEgPSBpbnQsIFQyID0gaW50Ci0vLyBORE5CT09TVF9NUExfUFBfREVGQVVMVF9QQVJBTVMobixULGludCk6IFQxID0gaW50LCBUMiA9IGludCwgLi4sIFRuID0gaW50Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX09XTl9QUF9QUklNSVRJVkVTKQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0RFRkFVTFRfUEFSQU1TKG4scCx2KSBcCi0gICAgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX01QTF9QUF9ERUZBVUxUX1BBUkFNU18sbikocCx2KSBcCi0gICAgLyoqLwotICAgIAotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfREVGQVVMVF9QQVJBTVNfMChwLHYpCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9ERUZBVUxUX1BBUkFNU18xKHAsdikgcCMjMT12Ci0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9ERUZBVUxUX1BBUkFNU18yKHAsdikgcCMjMT12LHAjIzI9dgotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfREVGQVVMVF9QQVJBTVNfMyhwLHYpIHAjIzE9dixwIyMyPXYscCMjMz12Ci0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9ERUZBVUxUX1BBUkFNU180KHAsdikgcCMjMT12LHAjIzI9dixwIyMzPXYscCMjND12Ci0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9ERUZBVUxUX1BBUkFNU181KHAsdikgcCMjMT12LHAjIzI9dixwIyMzPXYscCMjND12LHAjIzU9dgotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfREVGQVVMVF9QQVJBTVNfNihwLHYpIHAjIzE9dixwIyMyPXYscCMjMz12LHAjIzQ9dixwIyM1PXYscCMjNj12Ci0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9ERUZBVUxUX1BBUkFNU183KHAsdikgcCMjMT12LHAjIzI9dixwIyMzPXYscCMjND12LHAjIzU9dixwIyM2PXYscCMjNz12Ci0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9ERUZBVUxUX1BBUkFNU184KHAsdikgcCMjMT12LHAjIzI9dixwIyMzPXYscCMjND12LHAjIzU9dixwIyM2PXYscCMjNz12LHAjIzg9dgotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfREVGQVVMVF9QQVJBTVNfOShwLHYpIHAjIzE9dixwIyMyPXYscCMjMz12LHAjIzQ9dixwIyM1PXYscCMjNj12LHAjIzc9dixwIyM4PXYscCMjOT12Ci0KLSNlbHNlCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvZWxlbS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbW1hX2lmLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZWF0LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaW5jLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfQVVYX0RFRkFVTFRfUEFSQU1fRlVOQyh1bnVzZWQsIGksIHB2KSBcCi0gICAgTkROQk9PU1RfUFBfQ09NTUFfSUYoaSkgXAotICAgIE5ETkJPT1NUX1BQX0NBVCggTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgyLDAscHYpLCBORE5CT09TVF9QUF9JTkMoaSkgKSBcCi0gICAgICAgID0gTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgyLDEscHYpIFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0RFRkFVTFRfUEFSQU1TKG4sIHBhcmFtLCB2YWx1ZSkgXAotICAgIE5ETkJPT1NUX1BQX1JFUEVBVCggXAotICAgICAgICAgIG4gXAotICAgICAgICAsIE5ETkJPT1NUX01QTF9QUF9BVVhfREVGQVVMVF9QQVJBTV9GVU5DIFwKLSAgICAgICAgLCAocGFyYW0sdmFsdWUpIFwKLSAgICAgICAgKSBcCi0gICAgLyoqLwotCi0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfUFJFUFJPQ0VTU09SX0RFRkFVTFRfUEFSQU1TX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvZW51bS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9lbnVtLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDVhMTY0MS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9lbnVtLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX1BSRVBST0NFU1NPUl9FTlVNX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX1BSRVBST0NFU1NPUl9FTlVNX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogZW51bS5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9wcmVwcm9jZXNzb3IuaHBwPgotCi0vLyBORE5CT09TVF9NUExfUFBfRU5VTSgwLGludCk6IDxub3RoaW5nPgotLy8gTkROQk9PU1RfTVBMX1BQX0VOVU0oMSxpbnQpOiBpbnQKLS8vIE5ETkJPT1NUX01QTF9QUF9FTlVNKDIsaW50KTogaW50LCBpbnQKLS8vIE5ETkJPT1NUX01QTF9QUF9FTlVNKG4saW50KTogaW50LCBpbnQsIC4uLCBpbnQKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fT1dOX1BQX1BSSU1JVElWRVMpCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfRU5VTShuLCBwYXJhbSkgXAotICAgIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9NUExfUFBfRU5VTV8sbikocGFyYW0pIFwKLSAgICAvKiovCi0gICAgCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9FTlVNXzAocCkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0VOVU1fMShwKSBwCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9FTlVNXzIocCkgcCxwCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9FTlVNXzMocCkgcCxwLHAKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0VOVU1fNChwKSBwLHAscCxwCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9FTlVNXzUocCkgcCxwLHAscCxwCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9FTlVNXzYocCkgcCxwLHAscCxwLHAKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0VOVU1fNyhwKSBwLHAscCxwLHAscCxwCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9FTlVNXzgocCkgcCxwLHAscCxwLHAscCxwCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9FTlVNXzkocCkgcCxwLHAscCxwLHAscCxwLHAKLQotI2Vsc2UKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb21tYV9pZi5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGVhdC5ocHA+Ci0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0FVWF9FTlVNX0ZVTkModW51c2VkLCBpLCBwYXJhbSkgXAotICAgIE5ETkJPT1NUX1BQX0NPTU1BX0lGKGkpIHBhcmFtIFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0VOVU0obiwgcGFyYW0pIFwKLSAgICBORE5CT09TVF9QUF9SRVBFQVQoIFwKLSAgICAgICAgICBuIFwKLSAgICAgICAgLCBORE5CT09TVF9NUExfUFBfQVVYX0VOVU1fRlVOQyBcCi0gICAgICAgICwgcGFyYW0gXAotICAgICAgICApIFwKLSAgICAvKiovCi0KLSNlbmRpZgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9QUkVQUk9DRVNTT1JfRU5VTV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL2V4dF9wYXJhbXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvZXh0X3BhcmFtcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ4OWU0OTQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvZXh0X3BhcmFtcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3OCArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9QUkVQUk9DRVNTT1JfRVhUX1BBUkFNU19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9QUkVQUk9DRVNTT1JfRVhUX1BBUkFNU19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGV4dF9wYXJhbXMuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvcHJlcHJvY2Vzc29yLmhwcD4KLQotLy8gTkROQk9PU1RfTVBMX1BQX0VYVF9QQVJBTVMoMiwyLFQpOiA8bm90aGluZz4KLS8vIE5ETkJPT1NUX01QTF9QUF9FWFRfUEFSQU1TKDIsMyxUKTogVDIKLS8vIE5ETkJPT1NUX01QTF9QUF9FWFRfUEFSQU1TKDIsNCxUKTogVDIsIFQzCi0vLyBORE5CT09TVF9NUExfUFBfRVhUX1BBUkFNUygyLG4sVCk6IFQyLCBUMywgLi4sIFRuLTEKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fT1dOX1BQX1BSSU1JVElWRVMpCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvZmlsdGVyX3BhcmFtcy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL3N1Yi5ocHA+Ci0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0VYVF9QQVJBTVMoaSxqLHApIFwKLSAgICBORE5CT09TVF9NUExfUFBfRVhUX1BBUkFNU19ERUxBWV8xKGksTkROQk9PU1RfTVBMX1BQX1NVQihqLGkpLHApIFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0VYVF9QQVJBTVNfREVMQVlfMShpLG4scCkgXAotICAgIE5ETkJPT1NUX01QTF9QUF9FWFRfUEFSQU1TX0RFTEFZXzIoaSxuLHApIFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0VYVF9QQVJBTVNfREVMQVlfMihpLG4scCkgXAotICAgIE5ETkJPT1NUX01QTF9QUF9FWFRfUEFSQU1TXyMjaShuLHApIFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0VYVF9QQVJBTVNfMShpLHApIE5ETkJPT1NUX01QTF9QUF9GSUxURVJfUEFSQU1TXyMjaShwIyMxLHAjIzIscCMjMyxwIyM0LHAjIzUscCMjNixwIyM3LHAjIzgscCMjOSkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0VYVF9QQVJBTVNfMihpLHApIE5ETkJPT1NUX01QTF9QUF9GSUxURVJfUEFSQU1TXyMjaShwIyMyLHAjIzMscCMjNCxwIyM1LHAjIzYscCMjNyxwIyM4LHAjIzkscDEpCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9FWFRfUEFSQU1TXzMoaSxwKSBORE5CT09TVF9NUExfUFBfRklMVEVSX1BBUkFNU18jI2kocCMjMyxwIyM0LHAjIzUscCMjNixwIyM3LHAjIzgscCMjOSxwMSxwMikKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0VYVF9QQVJBTVNfNChpLHApIE5ETkJPT1NUX01QTF9QUF9GSUxURVJfUEFSQU1TXyMjaShwIyM0LHAjIzUscCMjNixwIyM3LHAjIzgscCMjOSxwMSxwMixwMykKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0VYVF9QQVJBTVNfNShpLHApIE5ETkJPT1NUX01QTF9QUF9GSUxURVJfUEFSQU1TXyMjaShwIyM1LHAjIzYscCMjNyxwIyM4LHAjIzkscDEscDIscDMscDQpCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9FWFRfUEFSQU1TXzYoaSxwKSBORE5CT09TVF9NUExfUFBfRklMVEVSX1BBUkFNU18jI2kocCMjNixwIyM3LHAjIzgscCMjOSxwMSxwMixwMyxwNCxwNSkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0VYVF9QQVJBTVNfNyhpLHApIE5ETkJPT1NUX01QTF9QUF9GSUxURVJfUEFSQU1TXyMjaShwIyM3LHAjIzgscCMjOSxwMSxwMixwMyxwNCxwNSxwNikKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0VYVF9QQVJBTVNfOChpLHApIE5ETkJPT1NUX01QTF9QUF9GSUxURVJfUEFSQU1TXyMjaShwIyM4LHAjIzkscDEscDIscDMscDQscDUscDYscDcpCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9FWFRfUEFSQU1TXzkoaSxwKSBORE5CT09TVF9NUExfUFBfRklMVEVSX1BBUkFNU18jI2kocCMjOSxwMSxwMixwMyxwNCxwNSxwNixwNyxwOCkKLQotI2Vsc2UKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL2FkZC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvc3ViLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29tbWFfaWYuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBlYXQuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9lbGVtLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfQVVYX0VYVF9QQVJBTV9GVU5DKHVudXNlZCwgaSwgb3ApIFwKLSAgICBORE5CT09TVF9QUF9DT01NQV9JRihpKSBcCi0gICAgTkROQk9PU1RfUFBfQ0FUKCBcCi0gICAgICAgICAgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgyLDEsb3ApIFwKLSAgICAgICAgLCBORE5CT09TVF9QUF9BRERfRCgxLCBpLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDIsMCxvcCkpIFwKLSAgICAgICAgKSBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9FWFRfUEFSQU1TKGksIGosIHBhcmFtKSBcCi0gICAgTkROQk9PU1RfUFBfUkVQRUFUKCBcCi0gICAgICAgICAgTkROQk9PU1RfUFBfU1VCX0QoMSxqLGkpIFwKLSAgICAgICAgLCBORE5CT09TVF9NUExfUFBfQVVYX0VYVF9QQVJBTV9GVU5DIFwKLSAgICAgICAgLCAoaSxwYXJhbSkgXAotICAgICAgICApIFwKLSAgICAvKiovCi0KLSNlbmRpZgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9QUkVQUk9DRVNTT1JfRVhUX1BBUkFNU19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL2ZpbHRlcl9wYXJhbXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvZmlsdGVyX3BhcmFtcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdhNzUxMDcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvZmlsdGVyX3BhcmFtcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9QUkVQUk9DRVNTT1JfRklMVEVSX1BBUkFNU19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9QUkVQUk9DRVNTT1JfRklMVEVSX1BBUkFNU19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGZpbHRlcl9wYXJhbXMuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNkZWZpbmUgTkROQk9PU1RfTVBMX1BQX0ZJTFRFUl9QQVJBTVNfMChwMSxwMixwMyxwNCxwNSxwNixwNyxwOCxwOSkgCi0jZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9GSUxURVJfUEFSQU1TXzEocDEscDIscDMscDQscDUscDYscDcscDgscDkpIHAxCi0jZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9GSUxURVJfUEFSQU1TXzIocDEscDIscDMscDQscDUscDYscDcscDgscDkpIHAxLHAyCi0jZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9GSUxURVJfUEFSQU1TXzMocDEscDIscDMscDQscDUscDYscDcscDgscDkpIHAxLHAyLHAzCi0jZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9GSUxURVJfUEFSQU1TXzQocDEscDIscDMscDQscDUscDYscDcscDgscDkpIHAxLHAyLHAzLHA0Ci0jZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9GSUxURVJfUEFSQU1TXzUocDEscDIscDMscDQscDUscDYscDcscDgscDkpIHAxLHAyLHAzLHA0LHA1Ci0jZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9GSUxURVJfUEFSQU1TXzYocDEscDIscDMscDQscDUscDYscDcscDgscDkpIHAxLHAyLHAzLHA0LHA1LHA2Ci0jZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9GSUxURVJfUEFSQU1TXzcocDEscDIscDMscDQscDUscDYscDcscDgscDkpIHAxLHAyLHAzLHA0LHA1LHA2LHA3Ci0jZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9GSUxURVJfUEFSQU1TXzgocDEscDIscDMscDQscDUscDYscDcscDgscDkpIHAxLHAyLHAzLHA0LHA1LHA2LHA3LHA4Ci0jZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9GSUxURVJfUEFSQU1TXzkocDEscDIscDMscDQscDUscDYscDcscDgscDkpIHAxLHAyLHAzLHA0LHA1LHA2LHA3LHA4LHA5Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX1BSRVBST0NFU1NPUl9GSUxURVJfUEFSQU1TX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvcGFyYW1zLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL3BhcmFtcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNkZDZjNjkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvcGFyYW1zLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX1BSRVBST0NFU1NPUl9QQVJBTVNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfUFJFUFJPQ0VTU09SX1BBUkFNU19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHBhcmFtcy5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9wcmVwcm9jZXNzb3IuaHBwPgotCi0vLyBORE5CT09TVF9NUExfUFBfUEFSQU1TKDAsVCk6IDxub3RoaW5nPgotLy8gTkROQk9PU1RfTVBMX1BQX1BBUkFNUygxLFQpOiBUMQotLy8gTkROQk9PU1RfTVBMX1BQX1BBUkFNUygyLFQpOiBUMSwgVDIKLS8vIE5ETkJPT1NUX01QTF9QUF9QQVJBTVMobixUKTogVDEsIFQyLCAuLiwgVG4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fT1dOX1BQX1BSSU1JVElWRVMpCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfUEFSQU1TKG4scCkgXAotICAgIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9NUExfUFBfUEFSQU1TXyxuKShwKSBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9QQVJBTVNfMChwKQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfUEFSQU1TXzEocCkgcCMjMQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfUEFSQU1TXzIocCkgcCMjMSxwIyMyCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9QQVJBTVNfMyhwKSBwIyMxLHAjIzIscCMjMwotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfUEFSQU1TXzQocCkgcCMjMSxwIyMyLHAjIzMscCMjNAotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfUEFSQU1TXzUocCkgcCMjMSxwIyMyLHAjIzMscCMjNCxwIyM1Ci0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9QQVJBTVNfNihwKSBwIyMxLHAjIzIscCMjMyxwIyM0LHAjIzUscCMjNgotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfUEFSQU1TXzcocCkgcCMjMSxwIyMyLHAjIzMscCMjNCxwIyM1LHAjIzYscCMjNwotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfUEFSQU1TXzgocCkgcCMjMSxwIyMyLHAjIzMscCMjNCxwIyM1LHAjIzYscCMjNyxwIyM4Ci0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9QQVJBTVNfOShwKSBwIyMxLHAjIzIscCMjMyxwIyM0LHAjIzUscCMjNixwIyM3LHAjIzgscCMjOQotCi0jZWxzZQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbW1hX2lmLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZWF0LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaW5jLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfQVVYX1BBUkFNX0ZVTkModW51c2VkLCBpLCBwYXJhbSkgXAotICAgIE5ETkJPT1NUX1BQX0NPTU1BX0lGKGkpIFwKLSAgICBORE5CT09TVF9QUF9DQVQocGFyYW0sIE5ETkJPT1NUX1BQX0lOQyhpKSkgXAotICAgIC8qKi8KLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfUEFSQU1TKG4sIHBhcmFtKSBcCi0gICAgTkROQk9PU1RfUFBfUkVQRUFUKCBcCi0gICAgICAgICAgbiBcCi0gICAgICAgICwgTkROQk9PU1RfTVBMX1BQX0FVWF9QQVJBTV9GVU5DIFwKLSAgICAgICAgLCBwYXJhbSBcCi0gICAgICAgICkgXAotICAgIC8qKi8KLQotI2VuZGlmIAotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9QUkVQUk9DRVNTT1JfUEFSQU1TX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvcGFydGlhbF9zcGVjX3BhcmFtcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9wYXJ0aWFsX3NwZWNfcGFyYW1zLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTFiNjNhNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9wYXJ0aWFsX3NwZWNfcGFyYW1zLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX1BSRVBST0NFU1NPUl9QQVJUSUFMX1NQRUNfUEFSQU1TX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX1BSRVBST0NFU1NPUl9QQVJUSUFMX1NQRUNfUEFSQU1TX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogcGFydGlhbF9zcGVjX3BhcmFtcy5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9saW1pdHMvYXJpdHkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9wYXJhbXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9lbnVtLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3Ivc3ViLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29tbWFfaWYuaHBwPgotCi0jZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9QQVJUSUFMX1NQRUNfUEFSQU1TKG4sIHBhcmFtLCBkZWYpIFwKLU5ETkJPT1NUX01QTF9QUF9QQVJBTVMobiwgcGFyYW0pIFwKLU5ETkJPT1NUX1BQX0NPTU1BX0lGKE5ETkJPT1NUX01QTF9QUF9TVUIoTkROQk9PU1RfTVBMX0xJTUlUX01FVEFGVU5DVElPTl9BUklUWSxuKSkgXAotTkROQk9PU1RfTVBMX1BQX0VOVU0oIFwKLSAgICAgIE5ETkJPT1NUX01QTF9QUF9TVUIoTkROQk9PU1RfTVBMX0xJTUlUX01FVEFGVU5DVElPTl9BUklUWSxuKSBcCi0gICAgLCBkZWYgXAotICAgICkgXAotLyoqLwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9QUkVQUk9DRVNTT1JfUEFSVElBTF9TUEVDX1BBUkFNU19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL3JhbmdlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL3JhbmdlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmM1MzZkNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9yYW5nZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9QUkVQUk9DRVNTT1JfUkFOR0VfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfUFJFUFJPQ0VTU09SX1JBTkdFX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAyLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogcmFuZ2UuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL3N1YnNlcS5ocHA+Ci0KLSNkZWZpbmUgTkROQk9PU1RfTVBMX1BQX1JBTkdFKGZpcnN0LCBsZW5ndGgpIFwKLSAgICBORE5CT09TVF9QUF9TRVFfU1VCU0VRKCgwKSgxKSgyKSgzKSg0KSg1KSg2KSg3KSg4KSg5KSwgZmlyc3QsIGxlbmd0aCkgXAotLyoqLwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9QUkVQUk9DRVNTT1JfUkFOR0VfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9yZXBlYXQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvcmVwZWF0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjY4YTIwMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9yZXBlYXQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfUFJFUFJPQ0VTU09SX1JFUEVBVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9QUkVQUk9DRVNTT1JfUkVQRUFUX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAyLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogcmVwZWF0LmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3ByZXByb2Nlc3Nvci5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX09XTl9QUF9QUklNSVRJVkVTKQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX1JFUEVBVChuLGYscGFyYW0pIFwKLSAgICBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfTVBMX1BQX1JFUEVBVF8sbikoZixwYXJhbSkgXAotICAgIC8qKi8KLSAgICAKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX1JFUEVBVF8wKGYscCkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX1JFUEVBVF8xKGYscCkgZigwLDAscCkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX1JFUEVBVF8yKGYscCkgZigwLDAscCkgZigwLDEscCkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX1JFUEVBVF8zKGYscCkgZigwLDAscCkgZigwLDEscCkgZigwLDIscCkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX1JFUEVBVF80KGYscCkgZigwLDAscCkgZigwLDEscCkgZigwLDIscCkgZigwLDMscCkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX1JFUEVBVF81KGYscCkgZigwLDAscCkgZigwLDEscCkgZigwLDIscCkgZigwLDMscCkgZigwLDQscCkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX1JFUEVBVF82KGYscCkgZigwLDAscCkgZigwLDEscCkgZigwLDIscCkgZigwLDMscCkgZigwLDQscCkgZigwLDUscCkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX1JFUEVBVF83KGYscCkgZigwLDAscCkgZigwLDEscCkgZigwLDIscCkgZigwLDMscCkgZigwLDQscCkgZigwLDUscCkgZigwLDYscCkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX1JFUEVBVF84KGYscCkgZigwLDAscCkgZigwLDEscCkgZigwLDIscCkgZigwLDMscCkgZigwLDQscCkgZigwLDUscCkgZigwLDYscCkgZigwLDcscCkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX1JFUEVBVF85KGYscCkgZigwLDAscCkgZigwLDEscCkgZigwLDIscCkgZigwLDMscCkgZigwLDQscCkgZigwLDUscCkgZigwLDYscCkgZigwLDcscCkgZigwLDgscCkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX1JFUEVBVF8xMChmLHApIGYoMCwwLHApIGYoMCwxLHApIGYoMCwyLHApIGYoMCwzLHApIGYoMCw0LHApIGYoMCw1LHApIGYoMCw2LHApIGYoMCw3LHApIGYoMCw4LHApIGYoMCw5LHApCi0KLSNlbHNlIAotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGVhdC5ocHA+Ci0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX1JFUEVBVChuLGYscGFyYW0pIFwKLSAgICBORE5CT09TVF9QUF9SRVBFQVQobixmLHBhcmFtKSBcCi0gICAgLyoqLwotCi0jZW5kaWYgCi0KLSNkZWZpbmUgTkROQk9PU1RfTVBMX1BQX1JFUEVBVF9JREVOVElUWV9GVU5DKHVudXNlZDEsIHVudXNlZDIsIHgpIHgKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfUFJFUFJPQ0VTU09SX1JFUEVBVF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL3N1Yi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9zdWIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMTk0ODJhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL3N1Yi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2NSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9QUkVQUk9DRVNTT1JfU1VCX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX1BSRVBST0NFU1NPUl9TVUJfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDItMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBzdWIuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvcHJlcHJvY2Vzc29yLmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fT1dOX1BQX1BSSU1JVElWRVMpCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvdHVwbGUuaHBwPgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX0JST0tFTl9QUF9NQUNST19FWFBBTlNJT04pCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX1NVQihpLGopIFwKLSAgICBORE5CT09TVF9NUExfUFBfU1VCX0RFTEFZKGksaikgXAotICAgIC8qKi8KLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfU1VCX0RFTEFZKGksaikgXAotICAgIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9NUExfUFBfVFVQTEVfMTFfRUxFTV8jI2ksTkROQk9PU1RfTVBMX1BQX1NVQl8jI2opIFwKLSAgICAvKiovCi0jZWxzZQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfU1VCKGksaikgXAotICAgIE5ETkJPT1NUX01QTF9QUF9TVUJfREVMQVkoaSxqKSBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9TVUJfREVMQVkoaSxqKSBcCi0gICAgTkROQk9PU1RfTVBMX1BQX1RVUExFXzExX0VMRU1fIyNpIE5ETkJPT1NUX01QTF9QUF9TVUJfIyNqIFwKLSAgICAvKiovCi0jZW5kaWYKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfU1VCXzAgKDAsMSwyLDMsNCw1LDYsNyw4LDksMTApCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9TVUJfMSAoMCwwLDEsMiwzLDQsNSw2LDcsOCw5KQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfU1VCXzIgKDAsMCwwLDEsMiwzLDQsNSw2LDcsOCkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX1NVQl8zICgwLDAsMCwwLDEsMiwzLDQsNSw2LDcpCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9TVUJfNCAoMCwwLDAsMCwwLDEsMiwzLDQsNSw2KQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfU1VCXzUgKDAsMCwwLDAsMCwwLDEsMiwzLDQsNSkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX1NVQl82ICgwLDAsMCwwLDAsMCwwLDEsMiwzLDQpCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9TVUJfNyAoMCwwLDAsMCwwLDAsMCwwLDEsMiwzKQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFBfU1VCXzggKDAsMCwwLDAsMCwwLDAsMCwwLDEsMikKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX1NVQl85ICgwLDAsMCwwLDAsMCwwLDAsMCwwLDEpCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9TVUJfMTAgKDAsMCwwLDAsMCwwLDAsMCwwLDAsMCkKLQotI2Vsc2UKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL3N1Yi5ocHA+Ci0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BQX1NVQihpLGopIFwKLSAgICBORE5CT09TVF9QUF9TVUIoaSxqKSBcCi0gICAgLyoqLwotICAgIAotI2VuZGlmCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX1BSRVBST0NFU1NPUl9TVUJfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci90dXBsZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci90dXBsZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiYjM2OWQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvdHVwbGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfUFJFUFJPQ0VTU09SX1RVUExFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX1BSRVBST0NFU1NPUl9UVVBMRV9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMi0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHR1cGxlLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9UVVBMRV8xMV9FTEVNXzAoZTAsZTEsZTIsZTMsZTQsZTUsZTYsZTcsZTgsZTksZTEwKSBlMAotI2RlZmluZSBORE5CT09TVF9NUExfUFBfVFVQTEVfMTFfRUxFTV8xKGUwLGUxLGUyLGUzLGU0LGU1LGU2LGU3LGU4LGU5LGUxMCkgZTEKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1BQX1RVUExFXzExX0VMRU1fMihlMCxlMSxlMixlMyxlNCxlNSxlNixlNyxlOCxlOSxlMTApIGUyCi0jZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9UVVBMRV8xMV9FTEVNXzMoZTAsZTEsZTIsZTMsZTQsZTUsZTYsZTcsZTgsZTksZTEwKSBlMwotI2RlZmluZSBORE5CT09TVF9NUExfUFBfVFVQTEVfMTFfRUxFTV80KGUwLGUxLGUyLGUzLGU0LGU1LGU2LGU3LGU4LGU5LGUxMCkgZTQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1BQX1RVUExFXzExX0VMRU1fNShlMCxlMSxlMixlMyxlNCxlNSxlNixlNyxlOCxlOSxlMTApIGU1Ci0jZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9UVVBMRV8xMV9FTEVNXzYoZTAsZTEsZTIsZTMsZTQsZTUsZTYsZTcsZTgsZTksZTEwKSBlNgotI2RlZmluZSBORE5CT09TVF9NUExfUFBfVFVQTEVfMTFfRUxFTV83KGUwLGUxLGUyLGUzLGU0LGU1LGU2LGU3LGU4LGU5LGUxMCkgZTcKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1BQX1RVUExFXzExX0VMRU1fOChlMCxlMSxlMixlMyxlNCxlNSxlNixlNyxlOCxlOSxlMTApIGU4Ci0jZGVmaW5lIE5ETkJPT1NUX01QTF9QUF9UVVBMRV8xMV9FTEVNXzkoZTAsZTEsZTIsZTMsZTQsZTUsZTYsZTcsZTgsZTksZTEwKSBlOQotI2RlZmluZSBORE5CT09TVF9NUExfUFBfVFVQTEVfMTFfRUxFTV8xMChlMCxlMSxlMixlMyxlNCxlNSxlNixlNyxlOCxlOSxlMTApIGUxMAotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9QUkVQUk9DRVNTT1JfVFVQTEVfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3B1c2hfYmFja19pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHVzaF9iYWNrX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZTgxZGU5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHVzaF9iYWNrX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzAgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfUFVTSF9CQUNLX0lNUExfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfUFVTSF9CQUNLX0lNUExfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwOAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBwdXNoX2JhY2tfaW1wbC5ocHAgNTU2NzkgMjAwOS0wOC0yMCAwNzo1MDoxNlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA5LTA4LTIwIDAwOjUwOjE2IC0wNzAwIChUaHUsIDIwIEF1ZyAyMDA5KSAkCi0vLyAkUmV2aXNpb246IDU1Njc5ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9wdXNoX2JhY2tfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9oYXNfdHlwZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vdHJhaXRzX2xhbWJkYV9zcGVjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvZm9yd2FyZGluZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3N0YXRpY19jb25zdGFudC5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXN0cnVjdCBoYXNfcHVzaF9iYWNrX2FyZyB7fTsKLQotLy8gYWd1cnQgMDUvZmViLzA0OiBubyBkZWZhdWx0IGltcGxlbWVudGF0aW9uOyB0aGUgc3R1YiBkZWZpbml0aW9uIGlzIG5lZWRlZCAKLS8vIHRvIGVuYWJsZSB0aGUgZGVmYXVsdCAnaGFzX3B1c2hfYmFjaycgaW1wbGVtZW50YXRpb24gYmVsb3cKLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPgotc3RydWN0IHB1c2hfYmFja19pbXBsCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFNlcXVlbmNlLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICAvLyBzaG91bGQgYmUgaW5zdGFudGlhdGVkIG9ubHkgaW4gdGhlIGNvbnRleHQgb2YgJ2hhc19wdXNoX2JhY2tfaW1wbCc7Ci0gICAgICAgIC8vIGlmIHlvdSd2ZSBnb3QgYW4gYXNzZXJ0IGhlcmUsIHlvdSBhcmUgcmVxdWVzdGluZyBhICdwdXNoX2JhY2snIAotICAgICAgICAvLyBzcGVjaWFsaXphdGlvbiB0aGF0IGRvZXNuJ3QgZXhpc3QuCi0gICAgICAgIE5ETkJPT1NUX01QTF9BU1NFUlRfTVNHKAotICAgICAgICAgICAgICAoIG5kbmJvb3N0Ojppc19zYW1lPCBULCBoYXNfcHVzaF9iYWNrX2FyZyA+Ojp2YWx1ZSApCi0gICAgICAgICAgICAsIFJFUVVFU1RFRF9QVVNIX0JBQ0tfU1BFQ0lBTElaQVRJT05fRk9SX1NFUVVFTkNFX0RPRVNfTk9UX0VYSVNUCi0gICAgICAgICAgICAsICggU2VxdWVuY2UgKQotICAgICAgICAgICAgKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+Ci1zdHJ1Y3QgaGFzX3B1c2hfYmFja19pbXBsCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFNlcSA+IHN0cnVjdCBhcHBseQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fTkVTVEVEX0ZPUldBUkRJTkcpCi0gICAgICAgIDogYXV4OjpoYXNfdHlwZTwgcHVzaF9iYWNrPCBTZXEsIGhhc19wdXNoX2JhY2tfYXJnID4gPgotICAgIHsKLSNlbHNlCi0gICAgewotICAgICAgICB0eXBlZGVmIGF1eDo6aGFzX3R5cGU8IHB1c2hfYmFjazwgU2VxLCBoYXNfcHVzaF9iYWNrX2FyZyA+ID4gdHlwZTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gCi0gICAgICAgICAgICAgIChhdXg6Omhhc190eXBlPCBwdXNoX2JhY2s8IFNlcSwgaGFzX3B1c2hfYmFja19hcmcgPiA+Ojp2YWx1ZSkKLSAgICAgICAgICAgICk7Ci0jZW5kaWYKLSAgICB9OwotfTsKLQotTkROQk9PU1RfTVBMX0FMR09SSVRNX1RSQUlUU19MQU1CREFfU1BFQygyLCBwdXNoX2JhY2tfaW1wbCkKLU5ETkJPT1NUX01QTF9BTEdPUklUTV9UUkFJVFNfTEFNQkRBX1NQRUMoMSwgaGFzX3B1c2hfYmFja19pbXBsKQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9QVVNIX0JBQ0tfSU1QTF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHVzaF9mcm9udF9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcHVzaF9mcm9udF9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGZhODc0NS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3B1c2hfZnJvbnRfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9QVVNIX0ZST05UX0lNUExfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfUFVTSF9GUk9OVF9JTVBMX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDgKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogcHVzaF9mcm9udF9pbXBsLmhwcCA1NTY3OSAyMDA5LTA4LTIwIDA3OjUwOjE2WiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDktMDgtMjAgMDA6NTA6MTYgLTA3MDAgKFRodSwgMjAgQXVnIDIwMDkpICQKLS8vICRSZXZpc2lvbjogNTU2NzkgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3B1c2hfZnJvbnRfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9oYXNfdHlwZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vdHJhaXRzX2xhbWJkYV9zcGVjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvZm9yd2FyZGluZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3N0YXRpY19jb25zdGFudC5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXN0cnVjdCBoYXNfcHVzaF9mcm9udF9hcmcge307Ci0KLS8vIGFndXJ0IDA1L2ZlYi8wNDogbm8gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbjsgdGhlIHN0dWIgZGVmaW5pdGlvbiBpcyBuZWVkZWQgCi0vLyB0byBlbmFibGUgdGhlIGRlZmF1bHQgJ2hhc19wdXNoX2Zyb250JyBpbXBsZW1lbnRhdGlvbiBiZWxvdwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgU2VxdWVuY2UsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIC8vIHNob3VsZCBiZSBpbnN0YW50aWF0ZWQgb25seSBpbiB0aGUgY29udGV4dCBvZiAnaGFzX3B1c2hfZnJvbnRfaW1wbCc7Ci0gICAgICAgIC8vIGlmIHlvdSd2ZSBnb3QgYW4gYXNzZXJ0IGhlcmUsIHlvdSBhcmUgcmVxdWVzdGluZyBhICdwdXNoX2Zyb250JyAKLSAgICAgICAgLy8gc3BlY2lhbGl6YXRpb24gdGhhdCBkb2Vzbid0IGV4aXN0LgotICAgICAgICBORE5CT09TVF9NUExfQVNTRVJUX01TRygKLSAgICAgICAgICAgICAgKCBuZG5ib29zdDo6aXNfc2FtZTwgVCwgaGFzX3B1c2hfZnJvbnRfYXJnID46OnZhbHVlICkKLSAgICAgICAgICAgICwgUkVRVUVTVEVEX1BVU0hfRlJPTlRfU1BFQ0lBTElaQVRJT05fRk9SX1NFUVVFTkNFX0RPRVNfTk9UX0VYSVNUCi0gICAgICAgICAgICAsICggU2VxdWVuY2UgKQotICAgICAgICAgICAgKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+Ci1zdHJ1Y3QgaGFzX3B1c2hfZnJvbnRfaW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBTZXEgPiBzdHJ1Y3QgYXBwbHkKLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX05FU1RFRF9GT1JXQVJESU5HKQotICAgICAgICA6IGF1eDo6aGFzX3R5cGU8IHB1c2hfZnJvbnQ8IFNlcSwgaGFzX3B1c2hfZnJvbnRfYXJnID4gPgotICAgIHsKLSNlbHNlCi0gICAgewotICAgICAgICB0eXBlZGVmIGF1eDo6aGFzX3R5cGU8IHB1c2hfZnJvbnQ8IFNlcSwgaGFzX3B1c2hfZnJvbnRfYXJnID4gPiB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSAKLSAgICAgICAgICAgICAgKGF1eDo6aGFzX3R5cGU8IHB1c2hfZnJvbnQ8IFNlcSwgaGFzX3B1c2hfZnJvbnRfYXJnID4gPjo6dmFsdWUpCi0gICAgICAgICAgICApOwotI2VuZGlmCi0gICAgfTsKLX07Ci0KLU5ETkJPT1NUX01QTF9BTEdPUklUTV9UUkFJVFNfTEFNQkRBX1NQRUMoMiwgcHVzaF9mcm9udF9pbXBsKQotTkROQk9PU1RfTVBMX0FMR09SSVRNX1RSQUlUU19MQU1CREFfU1BFQygxLCBoYXNfcHVzaF9mcm9udF9pbXBsKQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9QVVNIX0ZST05UX0lNUExfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3JldmVyc2VfZm9sZF9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcmV2ZXJzZV9mb2xkX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ODY0OWMxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vcmV2ZXJzZV9mb2xkX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfUkVWRVJTRV9GT0xEX0lNUExfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfUkVWRVJTRV9GT0xEX0lNUExfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiByZXZlcnNlX2ZvbGRfaW1wbC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL25leHRfcHJpb3IuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9kZXJlZi5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2FwcGx5LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvY3Rwcy5ocHA+Ci0jICAgaWYgZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKSBcCi0gICAgfHwgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX05PTlRZUEVfVEVNUExBVEVfUEFSVElBTF9TUEVDKQotIyAgICAgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWYuaHBwPgotIyAgICAgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcD4KLSMgICBlbmRpZgotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdXNlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTKSBcCi0gICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFJFUFJPQ0VTU0VEX0hFQURFUiByZXZlcnNlX2ZvbGRfaW1wbC5ocHAKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9pbmNsdWRlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNlbHNlCi0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X0ZPTERfSU1QTF9PUChpdGVyKSB0eXBlbmFtZSBkZXJlZjxpdGVyPjo6dHlwZQotIyAgIGRlZmluZSBBVVg3NzgwNzZfRk9MRF9JTVBMX05BTUVfUFJFRklYIHJldmVyc2VfZm9sZAotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3JldmVyc2VfZm9sZF9pbXBsX2JvZHkuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUwotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfUkVWRVJTRV9GT0xEX0lNUExfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3JldmVyc2VfZm9sZF9pbXBsX2JvZHkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9yZXZlcnNlX2ZvbGRfaW1wbF9ib2R5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2NhNmVlZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3JldmVyc2VfZm9sZF9pbXBsX2JvZHkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDEyICswLDAgQEAKLQotLy8gTk8gSU5DTFVERSBHVUFSRFMsIFRIRSBIRUFERVIgSVMgSU5URU5ERUQgRk9SIE1VTFRJUExFIElOQ0xVU0lPTiEKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1BQX0lTX0lURVJBVElORykKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHJldmVyc2VfZm9sZF9pbXBsX2JvZHkuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGltaXRzL3Vucm9sbGluZy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL3JlcGVhdC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2N0cHMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL250dHBfZGVjbC5ocHA+Ci0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9zdWIuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRlLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZGVjLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaW5jLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLQotLy8gbG9jYWwgbWFjcm9zLCAjdW5kZWYtaW5lZCBhdCB0aGUgZW5kIG9mIHRoZSBoZWFkZXIKLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfSVRFUl9GT0xEX0ZPUldBUkRfU1RFUCh1bnVzZWQsIG5fLCB1bnVzZWQyKSBcCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhcHBseTI8IFwKLSAgICAgICAgICBGb3J3YXJkT3AgXAotICAgICAgICAsIE5ETkJPT1NUX1BQX0NBVChmd2Rfc3RhdGUsbl8pIFwKLSAgICAgICAgLCBBVVg3NzgwNzZfRk9MRF9JTVBMX09QKE5ETkJPT1NUX1BQX0NBVChpdGVyLG5fKSkgXAotICAgICAgICA+Ojp0eXBlIE5ETkJPT1NUX1BQX0NBVChmd2Rfc3RhdGUsTkROQk9PU1RfUFBfSU5DKG5fKSk7IFwKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bmV4dDxORE5CT09TVF9QUF9DQVQoaXRlcixuXyk+Ojp0eXBlIFwKLSAgICAgICAgTkROQk9PU1RfUFBfQ0FUKGl0ZXIsTkROQk9PU1RfUFBfSU5DKG5fKSk7IFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X0lURVJfRk9MRF9CQUNLV0FSRF9TVEVQX0ZVTkMobl8pIFwKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MjwgXAotICAgICAgICAgIEJhY2t3YXJkT3AgXAotICAgICAgICAsIE5ETkJPT1NUX1BQX0NBVChia3dkX3N0YXRlLG5fKSBcCi0gICAgICAgICwgQVVYNzc4MDc2X0ZPTERfSU1QTF9PUChORE5CT09TVF9QUF9DQVQoaXRlcixORE5CT09TVF9QUF9ERUMobl8pKSkgXAotICAgICAgICA+Ojp0eXBlIE5ETkJPT1NUX1BQX0NBVChia3dkX3N0YXRlLE5ETkJPT1NUX1BQX0RFQyhuXykpOyBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9JVEVSX0ZPTERfQkFDS1dBUkRfU1RFUCh1bnVzZWQsIG5fLCBqKSBcCi0gICAgQVVYNzc4MDc2X0lURVJfRk9MRF9CQUNLV0FSRF9TVEVQX0ZVTkMoIFwKLSAgICAgICAgICBORE5CT09TVF9QUF9TVUJfRCgxLGosbl8pIFwKLSAgICAgICAgKSBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9GSVJTVF9CQUNLV0FSRF9TVEFURV9UWVBFREVGKG5fKSBcCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfY2h1bms6OnN0YXRlIE5ETkJPT1NUX1BQX0NBVChia3dkX3N0YXRlLG5fKTsKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X0ZPTERfSU1QTF9OQU1FIFwKLSAgICBORE5CT09TVF9QUF9DQVQoQVVYNzc4MDc2X0ZPTERfSU1QTF9OQU1FX1BSRUZJWCxfaW1wbCkgXAotICAgIC8qKi8KLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfRk9MRF9DSFVOS19OQU1FIFwKLSAgICBORE5CT09TVF9QUF9DQVQoQVVYNzc4MDc2X0ZPTERfSU1QTF9OQU1FX1BSRUZJWCxfY2h1bmspIFwKLSAgICAvKiovCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotLy8vIGZvcndhcmQgZGVjbGFyYXRpb24KLXRlbXBsYXRlPAotICAgICAgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0wobG9uZywgTikKLSAgICAsIHR5cGVuYW1lIEZpcnN0Ci0gICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgLCB0eXBlbmFtZSBTdGF0ZQotICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgPiAKLXN0cnVjdCBBVVg3NzgwNzZfRk9MRF9JTVBMX05BTUU7Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKSBcCi0gICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19OT05UWVBFX1RFTVBMQVRFX1BBUlRJQUxfU1BFQykKLQotIyAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEgXAotICAgICgzLCgwLCBORE5CT09TVF9NUExfTElNSVRfVU5ST0xMSU5HLCA8bmRuYm9vc3QvbXBsL2F1eF8vcmV2ZXJzZV9mb2xkX2ltcGxfYm9keS5ocHA+KSkKLSMgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0lURVJBVEUoKQotCi0vLyBpbXBsZW1lbnRhdGlvbiBmb3IgTiB0aGF0IGV4Y2VlZHMgTkROQk9PU1RfTVBMX0xJTUlUX1VOUk9MTElORwotdGVtcGxhdGU8Ci0gICAgICBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChsb25nLCBOKQotICAgICwgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+IAotc3RydWN0IEFVWDc3ODA3Nl9GT0xEX0lNUExfTkFNRQotewotICAgIHR5cGVkZWYgRmlyc3QgaXRlcjA7Ci0gICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotCi0gICAgTkROQk9PU1RfTVBMX1BQX1JFUEVBVCgKLSAgICAgICAgICBORE5CT09TVF9NUExfTElNSVRfVU5ST0xMSU5HCi0gICAgICAgICwgQVVYNzc4MDc2X0lURVJfRk9MRF9GT1JXQVJEX1NURVAKLSAgICAgICAgLCB1bnVzZWQKLSAgICAgICAgKQotCi0gICAgdHlwZWRlZiBBVVg3NzgwNzZfRk9MRF9JTVBMX05BTUU8Ci0gICAgICAgICAgKCAoTiAtIE5ETkJPT1NUX01QTF9MSU1JVF9VTlJPTExJTkcpIDwgMCA/IDAgOiBOIC0gTkROQk9PU1RfTVBMX0xJTUlUX1VOUk9MTElORyApCi0gICAgICAgICwgTkROQk9PU1RfUFBfQ0FUKGl0ZXIsTkROQk9PU1RfTVBMX0xJTUlUX1VOUk9MTElORykKLSAgICAgICAgLCBMYXN0Ci0gICAgICAgICwgTkROQk9PU1RfUFBfQ0FUKGZ3ZF9zdGF0ZSxORE5CT09TVF9NUExfTElNSVRfVU5ST0xMSU5HKQotICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiBuZXN0ZWRfY2h1bms7Ci0gICAgICAgIAotICAgIEFVWDc3ODA3Nl9GSVJTVF9CQUNLV0FSRF9TVEFURV9UWVBFREVGKE5ETkJPT1NUX01QTF9MSU1JVF9VTlJPTExJTkcpCi0KLSAgICBORE5CT09TVF9NUExfUFBfUkVQRUFUKAotICAgICAgICAgIE5ETkJPT1NUX01QTF9MSU1JVF9VTlJPTExJTkcKLSAgICAgICAgLCBBVVg3NzgwNzZfSVRFUl9GT0xEX0JBQ0tXQVJEX1NURVAKLSAgICAgICAgLCBORE5CT09TVF9NUExfTElNSVRfVU5ST0xMSU5HCi0gICAgICAgICkKLQotICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfY2h1bms6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotfTsKLQotLy8gZmFsbGJhY2sgaW1wbGVtZW50YXRpb24gZm9yIHNlcXVlbmNlcyBvZiB1bmtub3duIHNpemUKLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+IAotc3RydWN0IEFVWDc3ODA3Nl9GT0xEX0lNUExfTkFNRTwtMSxGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wPgotewotICAgIHR5cGVkZWYgQVVYNzc4MDc2X0ZPTERfSU1QTF9OQU1FPAotICAgICAgICAgIC0xCi0gICAgICAgICwgdHlwZW5hbWUgbXBsOjpuZXh0PEZpcnN0Pjo6dHlwZQotICAgICAgICAsIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBhcHBseTI8Rm9yd2FyZE9wLFN0YXRlLEFVWDc3ODA3Nl9GT0xEX0lNUExfT1AoRmlyc3QpPjo6dHlwZQotICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiBuZXN0ZWRfc3RlcDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPAotICAgICAgICAgIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBuZXN0ZWRfc3RlcDo6c3RhdGUKLSAgICAgICAgLCBBVVg3NzgwNzZfRk9MRF9JTVBMX09QKEZpcnN0KQotICAgICAgICA+Ojp0eXBlIHN0YXRlOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfc3RlcDo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+IAotc3RydWN0IEFVWDc3ODA3Nl9GT0xEX0lNUExfTkFNRTwtMSxMYXN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3A+Ci17Ci0gICAgdHlwZWRlZiBTdGF0ZSBzdGF0ZTsKLSAgICB0eXBlZGVmIExhc3QgaXRlcmF0b3I7Ci19OwotCi0jZWxzZSAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLXRlbXBsYXRlPCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChsb25nLCBOKSA+Ci1zdHJ1Y3QgQVVYNzc4MDc2X0ZPTERfQ0hVTktfTkFNRTsKLQotIyAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEgXAotICAgICgzLCgwLCBORE5CT09TVF9NUExfTElNSVRfVU5ST0xMSU5HLCA8bmRuYm9vc3QvbXBsL2F1eF8vcmV2ZXJzZV9mb2xkX2ltcGxfYm9keS5ocHA+KSkKLSMgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0lURVJBVEUoKQotCi0vLyBpbXBsZW1lbnRhdGlvbiBmb3IgTiB0aGF0IGV4Y2VlZHMgTkROQk9PU1RfTVBMX0xJTUlUX1VOUk9MTElORwotdGVtcGxhdGU8IE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGxvbmcsIE4pID4gCi1zdHJ1Y3QgQVVYNzc4MDc2X0ZPTERfQ0hVTktfTkFNRQotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEZpcnN0Ci0gICAgICAgICwgdHlwZW5hbWUgTGFzdAotICAgICAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgQmFja3dhcmRPcAotICAgICAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgICAgICA+IAotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEZpcnN0IGl0ZXIwOwotICAgICAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0KLSAgICAgICAgTkROQk9PU1RfTVBMX1BQX1JFUEVBVCgKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0xJTUlUX1VOUk9MTElORwotICAgICAgICAgICAgLCBBVVg3NzgwNzZfSVRFUl9GT0xEX0ZPUldBUkRfU1RFUAotICAgICAgICAgICAgLCB1bnVzZWQKLSAgICAgICAgICAgICkKLQotICAgICAgICB0eXBlZGVmIEFVWDc3ODA3Nl9GT0xEX0lNUExfTkFNRTwKLSAgICAgICAgICAgICAgKCAoTiAtIE5ETkJPT1NUX01QTF9MSU1JVF9VTlJPTExJTkcpIDwgMCA/IDAgOiBOIC0gTkROQk9PU1RfTVBMX0xJTUlUX1VOUk9MTElORyApCi0gICAgICAgICAgICAsIE5ETkJPT1NUX1BQX0NBVChpdGVyLE5ETkJPT1NUX01QTF9MSU1JVF9VTlJPTExJTkcpCi0gICAgICAgICAgICAsIExhc3QKLSAgICAgICAgICAgICwgTkROQk9PU1RfUFBfQ0FUKGZ3ZF9zdGF0ZSxORE5CT09TVF9NUExfTElNSVRfVU5ST0xMSU5HKQotICAgICAgICAgICAgLCBCYWNrd2FyZE9wCi0gICAgICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICAgICAgPiBuZXN0ZWRfY2h1bms7Ci0gICAgICAgICAgICAKLSAgICAgICAgQVVYNzc4MDc2X0ZJUlNUX0JBQ0tXQVJEX1NUQVRFX1RZUEVERUYoTkROQk9PU1RfTVBMX0xJTUlUX1VOUk9MTElORykKLQotICAgICAgICBORE5CT09TVF9NUExfUFBfUkVQRUFUKAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfTElNSVRfVU5ST0xMSU5HCi0gICAgICAgICAgICAsIEFVWDc3ODA3Nl9JVEVSX0ZPTERfQkFDS1dBUkRfU1RFUAotICAgICAgICAgICAgLCBORE5CT09TVF9NUExfTElNSVRfVU5ST0xMSU5HCi0gICAgICAgICAgICApCi0KLSAgICAgICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfY2h1bms6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIH07Ci19OwotCi0vLyBmYWxsYmFjayBpbXBsZW1lbnRhdGlvbiBmb3Igc2VxdWVuY2VzIG9mIHVua25vd24gc2l6ZQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4gCi1zdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKEFVWDc3ODA3Nl9GT0xEX0lNUExfTkFNRV9QUkVGSVgsX3N0ZXApOwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgPgotc3RydWN0IE5ETkJPT1NUX1BQX0NBVChBVVg3NzgwNzZfRk9MRF9JTVBMX05BTUVfUFJFRklYLF9udWxsX3N0ZXApCi17Ci0gICAgdHlwZWRlZiBMYXN0IGl0ZXJhdG9yOwotICAgIHR5cGVkZWYgU3RhdGUgc3RhdGU7Ci19OwotCi10ZW1wbGF0ZTw+IAotc3RydWN0IEFVWDc3ODA3Nl9GT0xEX0NIVU5LX05BTUU8LTE+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4gCi0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWZfPAotICAgICAgICAgICAgICB0eXBlbmFtZSBpc19zYW1lPEZpcnN0LExhc3Q+Ojp0eXBlCi0gICAgICAgICAgICAsIE5ETkJPT1NUX1BQX0NBVChBVVg3NzgwNzZfRk9MRF9JTVBMX05BTUVfUFJFRklYLF9udWxsX3N0ZXApPExhc3QsU3RhdGU+Ci0gICAgICAgICAgICAsIE5ETkJPT1NUX1BQX0NBVChBVVg3NzgwNzZfRk9MRF9JTVBMX05BTUVfUFJFRklYLF9zdGVwKTxGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wPgotICAgICAgICAgICAgPjo6dHlwZSByZXNfOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6c3RhdGUgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzXzo6aXRlcmF0b3IgaXRlcmF0b3I7Ci0gICAgfTsKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19NU1ZDXzYwX0VUSV9CVUcpCi0gICAgLy8vIEVUSSB3b3JrYXJvdW5kCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgcmVzdWx0XzxpbnQsaW50LGludCxpbnQsaW50PgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBpbnQgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgaW50IGl0ZXJhdG9yOwotICAgIH07Ci0jZW5kaWYKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+IAotc3RydWN0IE5ETkJPT1NUX1BQX0NBVChBVVg3NzgwNzZfRk9MRF9JTVBMX05BTUVfUFJFRklYLF9zdGVwKQotewotICAgIHR5cGVkZWYgQVVYNzc4MDc2X0ZPTERfQ0hVTktfTkFNRTwtMT46OnRlbXBsYXRlIHJlc3VsdF88Ci0gICAgICAgICAgdHlwZW5hbWUgbXBsOjpuZXh0PEZpcnN0Pjo6dHlwZQotICAgICAgICAsIExhc3QKLSAgICAgICAgLCB0eXBlbmFtZSBhcHBseTI8Rm9yd2FyZE9wLFN0YXRlLEFVWDc3ODA3Nl9GT0xEX0lNUExfT1AoRmlyc3QpPjo6dHlwZQotICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPiBuZXN0ZWRfc3RlcDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXBwbHkyPAotICAgICAgICAgIEJhY2t3YXJkT3AKLSAgICAgICAgLCB0eXBlbmFtZSBuZXN0ZWRfc3RlcDo6c3RhdGUKLSAgICAgICAgLCBBVVg3NzgwNzZfRk9MRF9JTVBMX09QKEZpcnN0KQotICAgICAgICA+Ojp0eXBlIHN0YXRlOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZXN0ZWRfc3RlcDo6aXRlcmF0b3IgaXRlcmF0b3I7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGxvbmcsIE4pCi0gICAgLCB0eXBlbmFtZSBGaXJzdAotICAgICwgdHlwZW5hbWUgTGFzdAotICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAsIHR5cGVuYW1lIEJhY2t3YXJkT3AKLSAgICAsIHR5cGVuYW1lIEZvcndhcmRPcAotICAgID4gCi1zdHJ1Y3QgQVVYNzc4MDc2X0ZPTERfSU1QTF9OQU1FCi0gICAgOiBBVVg3NzgwNzZfRk9MRF9DSFVOS19OQU1FPE4+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxGaXJzdCxMYXN0LFN0YXRlLEJhY2t3YXJkT3AsRm9yd2FyZE9wPgotewotfTsKLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotfX19Ci0KLSMgICB1bmRlZiBBVVg3NzgwNzZfRklSU1RfQkFDS1dBUkRfU1RBVEVfVFlQRURFRgotIyAgIHVuZGVmIEFVWDc3ODA3Nl9JVEVSX0ZPTERfQkFDS1dBUkRfU1RFUAotIyAgIHVuZGVmIEFVWDc3ODA3Nl9JVEVSX0ZPTERfQkFDS1dBUkRfU1RFUF9GVU5DCi0jICAgdW5kZWYgQVVYNzc4MDc2X0lURVJfRk9MRF9GT1JXQVJEX1NURVAKLQotI3VuZGVmIEFVWDc3ODA3Nl9GT0xEX0lNUExfT1AKLSN1bmRlZiBBVVg3NzgwNzZfRk9MRF9JTVBMX05BTUVfUFJFRklYCi0KLS8vLy8vIGl0ZXJhdGlvbgotCi0jZWxzZQotCi0jICAgZGVmaW5lIG5fIE5ETkJPT1NUX1BQX0ZSQU1FX0lURVJBVElPTigxKQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fTk9OVFlQRV9URU1QTEFURV9QQVJUSUFMX1NQRUMpCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAsIHR5cGVuYW1lIExhc3QKLSAgICAsIHR5cGVuYW1lIFN0YXRlCi0gICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgLCB0eXBlbmFtZSBGb3J3YXJkT3AKLSAgICA+Ci1zdHJ1Y3QgQVVYNzc4MDc2X0ZPTERfSU1QTF9OQU1FPG5fLEZpcnN0LExhc3QsU3RhdGUsQmFja3dhcmRPcCxGb3J3YXJkT3A+Ci17Ci0gICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICB0eXBlZGVmIFN0YXRlIGZ3ZF9zdGF0ZTA7Ci0KLSAgICBORE5CT09TVF9NUExfUFBfUkVQRUFUKAotICAgICAgICAgIG5fCi0gICAgICAgICwgQVVYNzc4MDc2X0lURVJfRk9MRF9GT1JXQVJEX1NURVAKLSAgICAgICAgLCB1bnVzZWQKLSAgICAgICAgKQotCi0gICAgdHlwZWRlZiBORE5CT09TVF9QUF9DQVQoZndkX3N0YXRlLG5fKSBORE5CT09TVF9QUF9DQVQoYmt3ZF9zdGF0ZSxuXyk7Ci0KLSAgICBORE5CT09TVF9NUExfUFBfUkVQRUFUKAotICAgICAgICAgIG5fCi0gICAgICAgICwgQVVYNzc4MDc2X0lURVJfRk9MRF9CQUNLV0FSRF9TVEVQCi0gICAgICAgICwgbl8KLSAgICAgICAgKQotCi0gICAgdHlwZWRlZiBia3dkX3N0YXRlMCBzdGF0ZTsKLSAgICB0eXBlZGVmIE5ETkJPT1NUX1BQX0NBVChpdGVyLG5fKSBpdGVyYXRvcjsKLX07Ci0KLSNlbHNlCi0KLXRlbXBsYXRlPD4gc3RydWN0IEFVWDc3ODA3Nl9GT0xEX0NIVU5LX05BTUU8bl8+Ci17Ci0gICAgdGVtcGxhdGU8Ci0gICAgICAgICAgdHlwZW5hbWUgRmlyc3QKLSAgICAgICAgLCB0eXBlbmFtZSBMYXN0Ci0gICAgICAgICwgdHlwZW5hbWUgU3RhdGUKLSAgICAgICAgLCB0eXBlbmFtZSBCYWNrd2FyZE9wCi0gICAgICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiBGaXJzdCBpdGVyMDsKLSAgICAgICAgdHlwZWRlZiBTdGF0ZSBmd2Rfc3RhdGUwOwotCi0gICAgICAgIE5ETkJPT1NUX01QTF9QUF9SRVBFQVQoCi0gICAgICAgICAgICAgIG5fCi0gICAgICAgICAgICAsIEFVWDc3ODA3Nl9JVEVSX0ZPTERfRk9SV0FSRF9TVEVQCi0gICAgICAgICAgICAsIHVudXNlZAotICAgICAgICAgICAgKQotCi0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfUFBfQ0FUKGZ3ZF9zdGF0ZSxuXykgTkROQk9PU1RfUFBfQ0FUKGJrd2Rfc3RhdGUsbl8pOwotCi0gICAgICAgIE5ETkJPT1NUX01QTF9QUF9SRVBFQVQoCi0gICAgICAgICAgICAgIG5fCi0gICAgICAgICAgICAsIEFVWDc3ODA3Nl9JVEVSX0ZPTERfQkFDS1dBUkRfU1RFUAotICAgICAgICAgICAgLCBuXwotICAgICAgICAgICAgKQotCi0gICAgICAgIHR5cGVkZWYgYmt3ZF9zdGF0ZTAgc3RhdGU7Ci0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfUFBfQ0FUKGl0ZXIsbl8pIGl0ZXJhdG9yOwotICAgIH07Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTVNWQ182MF9FVElfQlVHKQotICAgIC8vLyBFVEkgd29ya2Fyb3VuZAotICAgIHRlbXBsYXRlPD4gc3RydWN0IHJlc3VsdF88aW50LGludCxpbnQsaW50LGludD4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgaW50IHN0YXRlOwotICAgICAgICB0eXBlZGVmIGludCBpdGVyYXRvcjsKLSAgICB9OwotI2VuZGlmCi19OwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi0jICAgdW5kZWYgbl8KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1BQX0lTX0lURVJBVElORwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9zZXF1ZW5jZV93cmFwcGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vc2VxdWVuY2Vfd3JhcHBlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMyYTI3NTQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9zZXF1ZW5jZV93cmFwcGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI5MiArMCwwIEBACi0KLS8vIE5PIElOQ0xVREUgR1VBUkRTLCBUSEUgSEVBREVSIElTIElOVEVOREVEIEZPUiBNVUxUSVBMRSBJTkNMVVNJT04KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1BQX0lTX0lURVJBVElORykKLQotLy8vLy8gaGVhZGVyIGJvZHkKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA4Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHNlcXVlbmNlX3dyYXBwZXIuaHBwIDQ5MjcxIDIwMDgtMTAtMTEgMDY6NDY6MDBaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzo0NjowMCAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI3MSAkCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvY3Rwcy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3N0YXRpY19jb25zdGFudC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbnR0cF9kZWNsLmhwcD4KLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL3N1Yi5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL2VsZW0uaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9lbnVtX3BhcmFtc193aXRoX2FfZGVmYXVsdC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2VudW1fcGFyYW1zLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZW51bS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGVhdC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbW1hX2lmLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0ZS5ocHA+Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0jICAgdW5kZWYgTE9OR19NQVgKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotI2lmICFkZWZpbmVkKEFVWDc3ODA3Nl9TRVFVRU5DRV9CQVNFX05BTUUpCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9TRVFVRU5DRV9CQVNFX05BTUUgQVVYNzc4MDc2X1NFUVVFTkNFX05BTUUKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoQVVYNzc4MDc2X1NFUVVFTkNFX0lOVEVHUkFMX1dSQVBQRVIpCi0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X1NFUVVFTkNFX1BBUkFNX05BTUUgVAotIyAgIGRlZmluZSBBVVg3NzgwNzZfU0VRVUVOQ0VfVEVNUExBVEVfUEFSQU0gdHlwZW5hbWUgVAotIyAgIGRlZmluZSBBVVg3NzgwNzZfU0VRVUVOQ0VfREVGQVVMVCBuYQotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9TRVFVRU5DRV9OQU1FX04obikgXAotICAgIE5ETkJPT1NUX1BQX0NBVChBVVg3NzgwNzZfU0VRVUVOQ0VfQkFTRV9OQU1FLG4pIFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X1NFUVVFTkNFX1BBUkFNUygpIFwKLSAgICBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyggXAotICAgICAgICAgIEFVWDc3ODA3Nl9TRVFVRU5DRV9MSU1JVCBcCi0gICAgICAgICwgQVVYNzc4MDc2X1NFUVVFTkNFX1RFTVBMQVRFX1BBUkFNIFwKLSAgICAgICAgKSBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9TRVFVRU5DRV9BUkdTKCkgXAotICAgIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKCBcCi0gICAgICAgICAgQVVYNzc4MDc2X1NFUVVFTkNFX0xJTUlUIFwKLSAgICAgICAgLCBUIFwKLSAgICAgICAgKSBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9TRVFVRU5DRV9ERUZBVUxUX1BBUkFNUygpIFwKLSAgICAgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVNfV0lUSF9BX0RFRkFVTFQoIFwKLSAgICAgICAgICBBVVg3NzgwNzZfU0VRVUVOQ0VfTElNSVQgXAotICAgICAgICAsIEFVWDc3ODA3Nl9TRVFVRU5DRV9URU1QTEFURV9QQVJBTSBcCi0gICAgICAgICwgQVVYNzc4MDc2X1NFUVVFTkNFX0RFRkFVTFQgXAotICAgICAgICApIFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X1NFUVVFTkNFX05fUEFSQU1TKG4pIFwKLSAgICBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhuLCBBVVg3NzgwNzZfU0VRVUVOQ0VfVEVNUExBVEVfUEFSQU0pIFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X1NFUVVFTkNFX05fQVJHUyhuKSBcCi0gICAgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMobiwgVCkgXAotICAgIC8qKi8KLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfU0VRVUVOQ0VfTl9QQVJUSUFMX1NQRUNfQVJHUyhuKSBcCi0gICAgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMobiwgVCkgXAotICAgIE5ETkJPT1NUX1BQX0NPTU1BX0lGKG4pIFwKLSAgICBORE5CT09TVF9QUF9FTlVNKCBcCi0gICAgICAgICAgTkROQk9PU1RfUFBfU1VCX0QoMSxBVVg3NzgwNzZfU0VRVUVOQ0VfTElNSVQsbikgXAotICAgICAgICAsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yIFwKLSAgICAgICAgLCBBVVg3NzgwNzZfU0VRVUVOQ0VfREVGQVVMVCBcCi0gICAgICAgICkgXAotICAgIC8qKi8KLQotI2Vsc2UgLy8gQVVYNzc4MDc2X1NFUVVFTkNFX0lOVEVHUkFMX1dSQVBQRVIKLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfU0VRVUVOQ0VfUEFSQU1fTkFNRSBDCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9TRVFVRU5DRV9URU1QTEFURV9QQVJBTSBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChsb25nLCBDKQotIyAgIGRlZmluZSBBVVg3NzgwNzZfU0VRVUVOQ0VfREVGQVVMVCBMT05HX01BWAotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9TRVFVRU5DRV9QQVJBTVMoKSBcCi0gICAgdHlwZW5hbWUgVCwgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoIFwKLSAgICAgICAgICBBVVg3NzgwNzZfU0VRVUVOQ0VfTElNSVQgXAotICAgICAgICAsIEFVWDc3ODA3Nl9TRVFVRU5DRV9URU1QTEFURV9QQVJBTSBcCi0gICAgICAgICkgXAotICAgIC8qKi8KLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfU0VRVUVOQ0VfQVJHUygpIFwKLSAgICBULCBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyggXAotICAgICAgICAgIEFVWDc3ODA3Nl9TRVFVRU5DRV9MSU1JVCBcCi0gICAgICAgICwgQyBcCi0gICAgICAgICkgXAotICAgIC8qKi8KLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfU0VRVUVOQ0VfREVGQVVMVF9QQVJBTVMoKSBcCi0gICAgdHlwZW5hbWUgVCwgXAotICAgIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TX1dJVEhfQV9ERUZBVUxUKCBcCi0gICAgICAgICAgQVVYNzc4MDc2X1NFUVVFTkNFX0xJTUlUIFwKLSAgICAgICAgLCBBVVg3NzgwNzZfU0VRVUVOQ0VfVEVNUExBVEVfUEFSQU0gXAotICAgICAgICAsIEFVWDc3ODA3Nl9TRVFVRU5DRV9ERUZBVUxUIFwKLSAgICAgICAgKSBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9TRVFVRU5DRV9OX1BBUkFNUyhuKSBcCi0gICAgdHlwZW5hbWUgVCBORE5CT09TVF9QUF9DT01NQV9JRihuKSBcCi0gICAgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMobiwgQVVYNzc4MDc2X1NFUVVFTkNFX1RFTVBMQVRFX1BBUkFNKSBcCi0gICAgLyoqLwotCi0jICAgaWYgIWRlZmluZWQoQVVYNzc4MDc2X1NFUVVFTkNFX0NPTlZFUlRfQ05fVE8pCi0jICAgICAgIGRlZmluZSBBVVg3NzgwNzZfU0VRVUVOQ0VfQ09OVkVSVF9DTl9UTyh6LG4sVEFSR0VUKSBORE5CT09TVF9QUF9DQVQoQyxuKQotIyAgIGVuZGlmCi0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X1NFUVVFTkNFX05fQVJHUyhuKSBcCi0gICAgVCBORE5CT09TVF9QUF9DT01NQV9JRihuKSBcCi0gICAgTkROQk9PU1RfUFBfRU5VTShuLEFVWDc3ODA3Nl9TRVFVRU5DRV9DT05WRVJUX0NOX1RPLFQpIFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X1NFUVVFTkNFX05fUEFSVElBTF9TUEVDX0FSR1MobikgXAotICAgIFQsIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKG4sIEMpIFwKLSAgICBORE5CT09TVF9QUF9DT01NQV9JRihuKSBcCi0gICAgTkROQk9PU1RfUFBfRU5VTSggXAotICAgICAgICAgIE5ETkJPT1NUX1BQX1NVQl9EKDEsQVVYNzc4MDc2X1NFUVVFTkNFX0xJTUlULG4pIFwKLSAgICAgICAgLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMiBcCi0gICAgICAgICwgQVVYNzc4MDc2X1NFUVVFTkNFX0RFRkFVTFQgXAotICAgICAgICApIFwKLSAgICAvKiovCi0KLSNlbmRpZiAvLyBBVVg3NzgwNzZfU0VRVUVOQ0VfSU5URUdSQUxfV1JBUFBFUgotCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotLy8gZm9yd2FyZCBkZWNsYXJhdGlvbgotdGVtcGxhdGU8Ci0gICAgICBBVVg3NzgwNzZfU0VRVUVOQ0VfREVGQVVMVF9QQVJBTVMoKQotICAgID4KLXN0cnVjdCBBVVg3NzgwNzZfU0VRVUVOQ0VfTkFNRTsKLSNlbHNlCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIE4pID4gCi1zdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKEFVWDc3ODA3Nl9TRVFVRU5DRV9OQU1FLF9jaG9vc2VyKTsKLX0KLSNlbmRpZgotCi0jZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMSBcCi0gICAgKDMsKDAsIEFVWDc3ODA3Nl9TRVFVRU5DRV9MSU1JVCwgPG5kbmJvb3N0L21wbC9hdXhfL3NlcXVlbmNlX3dyYXBwZXIuaHBwPikpCi0jaW5jbHVkZSBORE5CT09TVF9QUF9JVEVSQVRFKCkKLQotLy8gcmVhbCBDKysgdmVyc2lvbiBpcyBhbHJlYWR5IHRha2VuIGNhcmUgb2YKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi0KLW5hbWVzcGFjZSBhdXggewotLy8gPz8/X2NvdW50X2FyZ3MKLSNkZWZpbmUgQVVYNzc4MDc2X0NPVU5UX0FSR1NfUFJFRklYICAgICAgICAgQVVYNzc4MDc2X1NFUVVFTkNFX05BTUUKLSNkZWZpbmUgQVVYNzc4MDc2X0NPVU5UX0FSR1NfREVGQVVMVCAgICAgICAgQVVYNzc4MDc2X1NFUVVFTkNFX0RFRkFVTFQKLSNkZWZpbmUgQVVYNzc4MDc2X0NPVU5UX0FSR1NfUEFSQU1fTkFNRSAgICAgQVVYNzc4MDc2X1NFUVVFTkNFX1BBUkFNX05BTUUKLSNkZWZpbmUgQVVYNzc4MDc2X0NPVU5UX0FSR1NfVEVNUExBVEVfUEFSQU0gQVVYNzc4MDc2X1NFUVVFTkNFX1RFTVBMQVRFX1BBUkFNCi0jZGVmaW5lIEFVWDc3ODA3Nl9DT1VOVF9BUkdTX0FSSVRZICAgICAgICAgIEFVWDc3ODA3Nl9TRVFVRU5DRV9MSU1JVAotI2RlZmluZSBBVVg3NzgwNzZfQ09VTlRfQVJHU19VU0VfU1RBTkRBUkRfUFBfUFJJTUlUSVZFUwotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvdW50X2FyZ3MuaHBwPgotCi10ZW1wbGF0ZTwKLSAgICAgIEFVWDc3ODA3Nl9TRVFVRU5DRV9QQVJBTVMoKQotICAgID4KLXN0cnVjdCBORE5CT09TVF9QUF9DQVQoQVVYNzc4MDc2X1NFUVVFTkNFX05BTUUsX2ltcGwpCi17Ci0gICAgdHlwZWRlZiBhdXg6Ok5ETkJPT1NUX1BQX0NBVChBVVg3NzgwNzZfU0VRVUVOQ0VfTkFNRSxfY291bnRfYXJncyk8Ci0gICAgICAgICAgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoQVVYNzc4MDc2X1NFUVVFTkNFX0xJTUlULCBBVVg3NzgwNzZfU0VRVUVOQ0VfUEFSQU1fTkFNRSkKLSAgICAgICAgPiBhcmdfbnVtXzsKLSAgICAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6TkROQk9PU1RfUFBfQ0FUKEFVWDc3ODA3Nl9TRVFVRU5DRV9OQU1FLF9jaG9vc2VyKTwgYXJnX251bV86OnZhbHVlID4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBBVVg3NzgwNzZfU0VRVUVOQ0VfQVJHUygpID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIEFVWDc3ODA3Nl9TRVFVRU5DRV9ERUZBVUxUX1BBUkFNUygpCi0gICAgPgotc3RydWN0IEFVWDc3ODA3Nl9TRVFVRU5DRV9OQU1FCi0gICAgOiBhdXg6Ok5ETkJPT1NUX1BQX0NBVChBVVg3NzgwNzZfU0VRVUVOQ0VfTkFNRSxfaW1wbCk8Ci0gICAgICAgICAgQVVYNzc4MDc2X1NFUVVFTkNFX0FSR1MoKQotICAgICAgICA+Ojp0eXBlCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6Ok5ETkJPT1NUX1BQX0NBVChBVVg3NzgwNzZfU0VRVUVOQ0VfTkFNRSxfaW1wbCk8Ci0gICAgICAgICAgQVVYNzc4MDc2X1NFUVVFTkNFX0FSR1MoKQotICAgICAgICA+Ojp0eXBlIHR5cGU7Ci19OwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi0jICAgdW5kZWYgQVVYNzc4MDc2X1NFUVVFTkNFX05fUEFSVElBTF9TUEVDX0FSR1MKLSMgICB1bmRlZiBBVVg3NzgwNzZfU0VRVUVOQ0VfTl9BUkdTCi0jICAgdW5kZWYgQVVYNzc4MDc2X1NFUVVFTkNFX0NPTlZFUlRfQ05fVE8KLSMgICB1bmRlZiBBVVg3NzgwNzZfU0VRVUVOQ0VfTl9QQVJBTVMKLSMgICB1bmRlZiBBVVg3NzgwNzZfU0VRVUVOQ0VfREVGQVVMVF9QQVJBTVMKLSMgICB1bmRlZiBBVVg3NzgwNzZfU0VRVUVOQ0VfQVJHUwotIyAgIHVuZGVmIEFVWDc3ODA3Nl9TRVFVRU5DRV9QQVJBTVMKLSMgICB1bmRlZiBBVVg3NzgwNzZfU0VRVUVOQ0VfTkFNRV9OCi0jICAgdW5kZWYgQVVYNzc4MDc2X1NFUVVFTkNFX0RFRkFVTFQKLSMgICB1bmRlZiBBVVg3NzgwNzZfU0VRVUVOQ0VfVEVNUExBVEVfUEFSQU0KLSMgICB1bmRlZiBBVVg3NzgwNzZfU0VRVUVOQ0VfUEFSQU1fTkFNRQotIyAgIHVuZGVmIEFVWDc3ODA3Nl9TRVFVRU5DRV9MSU1JVAotIyAgIHVuZGVmIEFVWDc3ODA3Nl9TRVFVRU5DRV9CQVNFX05BTUUKLSMgICB1bmRlZiBBVVg3NzgwNzZfU0VRVUVOQ0VfTkFNRQotIyAgIHVuZGVmIEFVWDc3ODA3Nl9TRVFVRU5DRV9JTlRFR1JBTF9XUkFQUEVSCi0KLX19Ci0KLS8vLy8vIGl0ZXJhdGlvbgotCi0jZWxzZQotI2RlZmluZSBpXyBORE5CT09TVF9QUF9GUkFNRV9JVEVSQVRJT04oMSkKLQotIyAgIGlmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi0KLSNpZiBpXyA9PSBBVVg3NzgwNzZfU0VRVUVOQ0VfTElNSVQKLQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLXRlbXBsYXRlPAotICAgICAgQVVYNzc4MDc2X1NFUVVFTkNFX05fUEFSQU1TKGlfKQotICAgID4KLXN0cnVjdCBBVVg3NzgwNzZfU0VRVUVOQ0VfTkFNRQotICAgIDogQVVYNzc4MDc2X1NFUVVFTkNFX05BTUVfTihpXyk8IEFVWDc3ODA3Nl9TRVFVRU5DRV9OX0FSR1MoaV8pID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEFVWDc3ODA3Nl9TRVFVRU5DRV9OQU1FX04oaV8pPCBBVVg3NzgwNzZfU0VRVUVOQ0VfTl9BUkdTKGlfKSA+Ojp0eXBlIHR5cGU7Ci19OwotCi0jZWxzZQotCi10ZW1wbGF0ZTwKLSAgICAgIEFVWDc3ODA3Nl9TRVFVRU5DRV9OX1BBUkFNUyhpXykKLSAgICA+Ci1zdHJ1Y3QgQVVYNzc4MDc2X1NFUVVFTkNFX05BTUU8IEFVWDc3ODA3Nl9TRVFVRU5DRV9OX1BBUlRJQUxfU1BFQ19BUkdTKGlfKSA+Ci0gICAgOiBBVVg3NzgwNzZfU0VRVUVOQ0VfTkFNRV9OKGlfKTwgQVVYNzc4MDc2X1NFUVVFTkNFX05fQVJHUyhpXykgPgotewotI2lmIGlfID4gMCB8fCBkZWZpbmVkKEFVWDc3ODA3Nl9TRVFVRU5DRV9JTlRFR1JBTF9XUkFQUEVSKQotICAgIHR5cGVkZWYgdHlwZW5hbWUgQVVYNzc4MDc2X1NFUVVFTkNFX05BTUVfTihpXyk8IEFVWDc3ODA3Nl9TRVFVRU5DRV9OX0FSR1MoaV8pID46OnR5cGUgdHlwZTsKLSNlbHNlCi0gICAgdHlwZWRlZiBBVVg3NzgwNzZfU0VRVUVOQ0VfTkFNRV9OKGlfKTwgQVVYNzc4MDc2X1NFUVVFTkNFX05fQVJHUyhpXykgPjo6dHlwZSB0eXBlOwotI2VuZGlmCi19OwotCi0jZW5kaWYgLy8gaV8gPT0gQVVYNzc4MDc2X1NFUVVFTkNFX0xJTUlUCi0KLSMgICBlbHNlCi0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKEFVWDc3ODA3Nl9TRVFVRU5DRV9OQU1FLF9jaG9vc2VyKTxpXz4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICBBVVg3NzgwNzZfU0VRVUVOQ0VfUEFSQU1TKCkKLSAgICAgICAgPgotICAgIHN0cnVjdCByZXN1bHRfCi0gICAgewotI2lmIGlfID4gMCB8fCBkZWZpbmVkKEFVWDc3ODA3Nl9TRVFVRU5DRV9JTlRFR1JBTF9XUkFQUEVSKQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEFVWDc3ODA3Nl9TRVFVRU5DRV9OQU1FX04oaV8pPAotICAgICAgICAgICAgICBBVVg3NzgwNzZfU0VRVUVOQ0VfTl9BUkdTKGlfKQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotI2Vsc2UKLSAgICAgICAgdHlwZWRlZiBBVVg3NzgwNzZfU0VRVUVOQ0VfTkFNRV9OKGlfKTwKLSAgICAgICAgICAgICAgQVVYNzc4MDc2X1NFUVVFTkNFX05fQVJHUyhpXykKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLSNlbmRpZgotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotIyAgIGVuZGlmIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotI3VuZGVmIGlfCi0jZW5kaWYgLy8gTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3NpemVfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3NpemVfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNmYjE2ZmEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9zaXplX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfU0laRV9JTVBMX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX1NJWkVfSU1QTF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHNpemVfaW1wbC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9zaXplX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2JlZ2luX2VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2Rpc3RhbmNlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy90cmFpdHNfbGFtYmRhX3NwZWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy93b3JrYXJvdW5kLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLS8vIGRlZmF1bHQgaW1wbGVtZW50YXRpb247IGNvbnJldGUgc2VxdWVuY2VzIG1pZ2h0IG92ZXJyaWRlIGl0IGJ5IAotLy8gc3BlY2lhbGl6aW5nIGVpdGhlciB0aGUgJ3NpemVfaW1wbCcgb3IgdGhlIHByaW1hcnkgJ3NpemUnIHRlbXBsYXRlCi0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPgotc3RydWN0IHNpemVfaW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBTZXF1ZW5jZSA+IHN0cnVjdCBhcHBseQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTYxKSkKLSAgICAgICAgOiBkaXN0YW5jZTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYmVnaW48U2VxdWVuY2U+Ojp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGVuZDxTZXF1ZW5jZT46OnR5cGUKLSAgICAgICAgICAgID4KLSAgICB7Ci0jZWxzZQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBkaXN0YW5jZTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgYmVnaW48U2VxdWVuY2U+Ojp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIGVuZDxTZXF1ZW5jZT46OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLSNlbmRpZgotICAgIH07Ci19OwotCi1ORE5CT09TVF9NUExfQUxHT1JJVE1fVFJBSVRTX0xBTUJEQV9TUEVDKDEsIHNpemVfaW1wbCkKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfU0laRV9JTVBMX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy9zdGF0aWNfY2FzdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3N0YXRpY19jYXN0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTMxMjFlYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3N0YXRpY19jYXN0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX1NUQVRJQ19DQVNUX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX1NUQVRJQ19DQVNUX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogc3RhdGljX2Nhc3QuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTYxKSkgXAotIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoX19HTlVDX18sIDwgMykgXAotIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoX19NV0VSS1NfXywgPD0gMHgzMDAxKQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX1NUQVRJQ19DQVNUKFQsIGV4cHIpIChUKShleHByKQotI2Vsc2UKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9TVEFUSUNfQ0FTVChULCBleHByKSBzdGF0aWNfY2FzdDxUPihleHByKQotI2VuZGlmCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX1NUQVRJQ19DQVNUX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy90ZW1wbGF0ZV9hcml0eS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3RlbXBsYXRlX2FyaXR5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjU3MzA4MC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3RlbXBsYXRlX2FyaXR5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE4OSArMCwwIEBACi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9QUF9JU19JVEVSQVRJTkcpCi0KLS8vLy8vIGhlYWRlciBib2R5Ci0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9URU1QTEFURV9BUklUWV9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHRlbXBsYXRlX2FyaXR5LmhwcCA2MTU4NCAyMDEwLTA0LTI2IDE4OjQ4OjI2WiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMTAtMDQtMjYgMTE6NDg6MjYgLTA3MDAgKE1vbiwgMjYgQXByIDIwMTApICQKLS8vICRSZXZpc2lvbjogNjE1ODQgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3R0cC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2xhbWJkYS5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3RlbXBsYXRlX2FyaXR5X2Z3ZC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2ludC5ocHA+Ci0jICAgaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19GVUxMX0xBTUJEQV9TVVBQT1JUKQotIyAgIGlmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19FWFRFTkRFRF9URU1QTEFURV9QQVJBTUVURVJTX01BVENISU5HKQotIyAgICAgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy90eXBlX3dyYXBwZXIuaHBwPgotIyAgIGVuZGlmCi0jICAgZWxzZQotIyAgICAgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9oYXNfcmViaW5kLmhwcD4KLSMgICBlbmRpZgotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvc3RhdGljX2NvbnN0YW50LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdXNlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTKSBcCi0gICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFJFUFJPQ0VTU0VEX0hFQURFUiB0ZW1wbGF0ZV9hcml0eS5ocHAKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9pbmNsdWRlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNlbHNlCi0KLSMgICBpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX0ZVTExfTEFNQkRBX1NVUFBPUlQpCi0jICAgaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX0VYVEVOREVEX1RFTVBMQVRFX1BBUkFNRVRFUlNfTUFUQ0hJTkcpCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGltaXRzL2FyaXR5LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvcmFuZ2UuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9yZXBlYXQuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9wYXJhbXMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL250dHBfZGVjbC5ocHA+Ci0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL2ZvbGRfbGVmdC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbW1hX2lmLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0ZS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2luYy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X0FSSVRZIE5ETkJPT1NUX1BQX0lOQyhORE5CT09TVF9NUExfTElNSVRfTUVUQUZVTkNUSU9OX0FSSVRZKQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIE4pID4gc3RydWN0IGFyaXR5X3RhZwotewotICAgIHR5cGVkZWYgY2hhciAoJnR5cGUpW04gKyAxXTsKLX07Ci0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X01BWF9BUklUWV9PUCh1bnVzZWQsIHN0YXRlLCBpXykgXAotICAgICggTkROQk9PU1RfUFBfQ0FUKEMsaV8pID4gMCA/IE5ETkJPT1NUX1BQX0NBVChDLGlfKSA6IHN0YXRlICkgXAotLyoqLwotCi10ZW1wbGF0ZTwKLSAgICAgIE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoQVVYNzc4MDc2X0FSSVRZLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIEMpKQotICAgID4KLXN0cnVjdCBtYXhfYXJpdHkKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSA9IAotICAgICAgICAgIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlQoCi0gICAgICAgICAgICAgIEFVWDc3ODA3Nl9NQVhfQVJJVFlfT1AKLSAgICAgICAgICAgICwgLTEKLSAgICAgICAgICAgICwgTkROQk9PU1RfTVBMX1BQX1JBTkdFKDEsIEFVWDc3ODA3Nl9BUklUWSkKLSAgICAgICAgICAgICkKLSAgICAgICAgKTsKLX07Ci0KLSMgICB1bmRlZiBBVVg3NzgwNzZfTUFYX0FSSVRZX09QCi0KLWFyaXR5X3RhZzwwPjo6dHlwZSBhcml0eV9oZWxwZXIoLi4uKTsKLQotIyAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fTElNSVRTICgxLCBBVVg3NzgwNzZfQVJJVFkpCi0jICAgZGVmaW5lIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEgPG5kbmJvb3N0L21wbC9hdXhfL3RlbXBsYXRlX2FyaXR5LmhwcD4KLSMgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0lURVJBVEUoKQotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCBOKSA+Ci1zdHJ1Y3QgdGVtcGxhdGVfYXJpdHlfaW1wbAotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0gCi0gICAgICAgICAgc2l6ZW9mKDo6bmRuYm9vc3Q6Om1wbDo6YXV4Ojphcml0eV9oZWxwZXIodHlwZV93cmFwcGVyPEY+KCksYXJpdHlfdGFnPE4+KCkpKSAtIDEKLSAgICAgICAgKTsKLX07Ci0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X1RFTVBMQVRFX0FSSVRZX0lNUExfSU5WT0NBVElPTih1bnVzZWQsIGlfLCBGKSBcCi0gICAgTkROQk9PU1RfUFBfQ09NTUFfSUYoaV8pIHRlbXBsYXRlX2FyaXR5X2ltcGw8RixORE5CT09TVF9QUF9JTkMoaV8pPjo6dmFsdWUgXAotLyoqLwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiA+Ci1zdHJ1Y3QgdGVtcGxhdGVfYXJpdHkKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSA9ICgKLSAgICAgICAgICBtYXhfYXJpdHk8IE5ETkJPT1NUX01QTF9QUF9SRVBFQVQoCi0gICAgICAgICAgICAgIEFVWDc3ODA3Nl9BUklUWQotICAgICAgICAgICAgLCBBVVg3NzgwNzZfVEVNUExBVEVfQVJJVFlfSU1QTF9JTlZPQ0FUSU9OCi0gICAgICAgICAgICAsIEYKLSAgICAgICAgICAgICkgPjo6dmFsdWUKLSAgICAgICAgKSk7Ci0gICAgICAgIAotICAgIHR5cGVkZWYgbXBsOjppbnRfPHZhbHVlPiB0eXBlOwotfTsKLQotIyAgIHVuZGVmIEFVWDc3ODA3Nl9URU1QTEFURV9BUklUWV9JTVBMX0lOVk9DQVRJT04KLQotIyAgIHVuZGVmIEFVWDc3ODA3Nl9BUklUWQotCi19fX0KLQotIyAgIGVuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfRVhURU5ERURfVEVNUExBVEVfUEFSQU1FVEVSU19NQVRDSElORwotIyAgIGVsc2UgLy8gTkROQk9PU1RfTVBMX0NGR19OT19GVUxMX0xBTUJEQV9TVVBQT1JUCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvZXRpLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgYm9vbCA+Ci1zdHJ1Y3QgdGVtcGxhdGVfYXJpdHlfaW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGID4gc3RydWN0IHJlc3VsdF8KLSAgICAgICAgOiBtcGw6OmludF88LTE+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdGVtcGxhdGVfYXJpdHlfaW1wbDx0cnVlPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGID4gc3RydWN0IHJlc3VsdF8KLSAgICAgICAgOiBGOjphcml0eQotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIEYgPgotc3RydWN0IHRlbXBsYXRlX2FyaXR5Ci0gICAgOiB0ZW1wbGF0ZV9hcml0eV9pbXBsPCA6Om5kbmJvb3N0OjptcGw6OmF1eDo6aGFzX3JlYmluZDxGPjo6dmFsdWUgPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88Rj4KLXsKLX07Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTVNWQ19FVElfQlVHKQotdGVtcGxhdGU8Pgotc3RydWN0IHRlbXBsYXRlX2FyaXR5PGludD4KLSAgICA6IG1wbDo6aW50XzwtMT4KLXsKLX07Ci0jZW5kaWYKLQotfX19Ci0KLSMgICBlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX05PX0ZVTExfTEFNQkRBX1NVUFBPUlQKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMKLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX0hQUF9JTkNMVURFRAotCi0vLy8vLyBpdGVyYXRpb24KLQotI2Vsc2UKLSNkZWZpbmUgaV8gTkROQk9PU1RfUFBfRlJBTUVfSVRFUkFUSU9OKDEpCi0KLXRlbXBsYXRlPAotICAgICAgdGVtcGxhdGU8IE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoaV8sIHR5cGVuYW1lIFApID4gY2xhc3MgRgotICAgICwgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhpXywgdHlwZW5hbWUgVCkKLSAgICA+Ci10eXBlbmFtZSBhcml0eV90YWc8aV8+Ojp0eXBlCi1hcml0eV9oZWxwZXIodHlwZV93cmFwcGVyPCBGPE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoaV8sIFQpPiA+LCBhcml0eV90YWc8aV8+KTsKLQotI3VuZGVmIGlfCi0jZW5kaWYgLy8gTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3RlbXBsYXRlX2FyaXR5X2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3RlbXBsYXRlX2FyaXR5X2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyNGJkOTkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy90ZW1wbGF0ZV9hcml0eV9md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfRldEX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX0ZXRF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHRlbXBsYXRlX2FyaXR5X2Z3ZC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiA+IHN0cnVjdCB0ZW1wbGF0ZV9hcml0eTsKLQotfX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX0ZXRF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vdHJhaXRzX2xhbWJkYV9zcGVjLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vdHJhaXRzX2xhbWJkYV9zcGVjLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGYyMWRkYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3RyYWl0c19sYW1iZGFfc3BlYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MyArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9UUkFJVFNfTEFNQkRBX1NQRUNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfVFJBSVRTX0xBTUJEQV9TUEVDX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDgKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogdHJhaXRzX2xhbWJkYV9zcGVjLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3NlcXVlbmNlX3RhZ19md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC92b2lkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvcGFyYW1zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvbGFtYmRhLmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fRlVMTF9MQU1CREFfU1VQUE9SVCkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQUxHT1JJVE1fVFJBSVRTX0xBTUJEQV9TUEVDX0lNUEwoaSwgdHJhaXQpIC8qKi8KLQotI2VsaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19NU1ZDX0VUSV9CVUcpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FMR09SSVRNX1RSQUlUU19MQU1CREFfU1BFQ19JTVBMKGksIHRyYWl0KSBcCi10ZW1wbGF0ZTw+IHN0cnVjdCB0cmFpdDx2b2lkXz4gXAoteyBcCi0gICAgdGVtcGxhdGU8IE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoaSwgdHlwZW5hbWUgVCkgPiBzdHJ1Y3QgYXBwbHkgXAotICAgIHsgXAotICAgIH07IFwKLX07IFwKLS8qKi8KLQotI2Vsc2UKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQUxHT1JJVE1fVFJBSVRTX0xBTUJEQV9TUEVDX0lNUEwoaSwgdHJhaXQpIFwKLXRlbXBsYXRlPD4gc3RydWN0IHRyYWl0PHZvaWRfPiBcCi17IFwKLSAgICB0ZW1wbGF0ZTwgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhpLCB0eXBlbmFtZSBUKSA+IHN0cnVjdCBhcHBseSBcCi0gICAgeyBcCi0gICAgfTsgXAotfTsgXAotdGVtcGxhdGU8PiBzdHJ1Y3QgdHJhaXQ8aW50PiBcCi17IFwKLSAgICB0ZW1wbGF0ZTwgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhpLCB0eXBlbmFtZSBUKSA+IHN0cnVjdCBhcHBseSBcCi0gICAgeyBcCi0gICAgICAgIHR5cGVkZWYgaW50IHR5cGU7IFwKLSAgICB9OyBcCi19OyBcCi0vKiovCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX05PX0ZVTExfTEFNQkRBX1NVUFBPUlQKLQotCi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BTEdPUklUTV9UUkFJVFNfTEFNQkRBX1NQRUMoaSwgdHJhaXQpIFwKLSAgICBORE5CT09TVF9NUExfQUxHT1JJVE1fVFJBSVRTX0xBTUJEQV9TUEVDX0lNUEwoaSwgdHJhaXQpIFwKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCB0cmFpdDxub25fc2VxdWVuY2VfdGFnPiB7fTsgXAotLyoqLwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9UUkFJVFNfTEFNQkRBX1NQRUNfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3R5cGVfd3JhcHBlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3R5cGVfd3JhcHBlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZhYWY1NGIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy90eXBlX3dyYXBwZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9BVVhfVFlQRV9XUkFQUEVSX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX1RZUEVfV1JBUFBFUl9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLyBDb3B5cmlnaHQgUGV0ZXIgRGltb3YgMjAwMC0yMDAzCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHR5cGVfd3JhcHBlci5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9jdHBzLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCB0eXBlX3dyYXBwZXIKLXsKLSAgICB0eXBlZGVmIFQgdHlwZTsKLX07Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotLy8gYWd1cnQgMDgvbWF5LzAzOiBhIGNvbXBsaWNhdGVkIHdheSB0byBleHRyYWN0IHRoZSB3cmFwcGVkIHR5cGU7IG5lZWQgaXQgCi0vLyBtb3N0bHkgZm9yIHRoZSBzYWtlIG9mIEdDQyAoMy4yLngpLCB3aGljaCBJQ0VzIGlmIHlvdSB0cnkgdG8gZXh0cmFjdCB0aGUgCi0vLyBuZXN0ZWQgJ3R5cGUnIGZyb20gJ3R5cGVfd3JhcHBlcjxUPicgd2hlbiB0aGUgbGF0dGVyIHdhcyB0aGUgcmVzdWx0IG9mIGEKLS8vICd0eXBlb2YnIGV4cHJlc3Npb24KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHdyYXBwZWRfdHlwZTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3Qgd3JhcHBlZF90eXBlPCB0eXBlX3dyYXBwZXI8VD4gPgotewotICAgIHR5cGVkZWYgVCB0eXBlOwotfTsKLSNlbHNlCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVyA+IHN0cnVjdCB3cmFwcGVkX3R5cGUKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFc6OnR5cGUgdHlwZTsKLX07Ci0jZW5kaWYKLQotfX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX1RZUEVfV1JBUFBFUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vdW53cmFwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vdW53cmFwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjkyZDhjOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3Vud3JhcC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9VTldSQVBfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfVU5XUkFQX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgUGV0ZXIgRGltb3YgYW5kIE11bHRpIE1lZGlhIEx0ZCAyMDAxLCAyMDAyCi0vLyBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwMQotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiB1bndyYXAuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9yZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGID4KLWlubGluZQotRiYgdW53cmFwKEYmIGYsIGxvbmcpCi17Ci0gICAgcmV0dXJuIGY7Ci19Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBGID4KLWlubGluZQotRiYKLXVud3JhcChyZWZlcmVuY2Vfd3JhcHBlcjxGPiYgZiwgaW50KQotewotICAgIHJldHVybiBmOwotfQotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRiA+Ci1pbmxpbmUKLUYmCi11bndyYXAocmVmZXJlbmNlX3dyYXBwZXI8Rj4gY29uc3QmIGYsIGludCkKLXsKLSAgICByZXR1cm4gZjsKLX0KLQotfX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQVVYX1VOV1JBUF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vdmFsdWVfd2tuZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9hdXhfL3ZhbHVlX3drbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMjAzYmFlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8vdmFsdWVfd2tuZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw4OSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkRfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiB2YWx1ZV93a25kLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vc3RhdGljX2Nhc3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9pbnRlZ3JhbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2V0aS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3dvcmthcm91bmQuaHBwPgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX0JDQ19JTlRFR1JBTF9DT05TVEFOVFMpIFwKLSAgICB8fCBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTVNWQ182MF9FVElfQlVHKQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2ludC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCB0eXBlbmFtZSBDXyA+IHN0cnVjdCB2YWx1ZV93a25kCi0gICAgOiBDXwotewotfTsKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19NU1ZDXzYwX0VUSV9CVUcpCi10ZW1wbGF0ZTw+IHN0cnVjdCB2YWx1ZV93a25kPGludD4KLSAgICA6IGludF88MT4KLXsKLSAgICB1c2luZyBpbnRfPDE+Ojp2YWx1ZTsKLX07Ci0jZW5kaWYKLX19fQotCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX01TVkNfNjBfRVRJX0JVRykKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKEMpIFwKLSAgICA6Ok5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFOjphdXg6OnZhbHVlX3drbmQ8IEMgPiBcCi0vKiovCi0jICAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChDKSBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoQykKLSNlbHNlCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChDKSBDCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfTVNWQ19WQUxVRV9XS05EKEMpIFwKLSAgICA6Om5kbmJvb3N0OjptcGw6OmF1eDo6dmFsdWVfd2tuZDwgQyA+IFwKLS8qKi8KLSNlbmRpZgotCi0jZWxzZSAvLyBORE5CT09TVF9NUExfQ0ZHX0JDQ19JTlRFR1JBTF9DT05TVEFOVFMKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoQykgQwotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX01TVkNfVkFMVUVfV0tORChDKSBDCi0KLSNlbmRpZgotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0VER19WRVJTSU9OX18sIDw9IDIzOCkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChULCBDKSBcCi0gICAgTkROQk9PU1RfTVBMX0FVWF9TVEFUSUNfQ0FTVChULCBDOjp2YWx1ZSkgXAotLyoqLwotI2Vsc2UKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChULCBDKSBcCi0gICAgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKEMpOjp2YWx1ZSBcCi0vKiovCi0jZW5kaWYKLQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHZhbHVlX3R5cGVfd2tuZAotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dmFsdWVfdHlwZSB0eXBlOwotfTsKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19NU1ZDX0VUSV9CVUcpCi10ZW1wbGF0ZTw+IHN0cnVjdCB2YWx1ZV90eXBlX3drbmQ8aW50PgotewotICAgIHR5cGVkZWYgaW50IHR5cGU7Ci19OwotI2VuZGlmCi0KLX19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy95ZXNfbm8uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYXV4Xy95ZXNfbm8uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NDIyMjYyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2F1eF8veWVzX25vLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU4ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX1lFU19OT19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9ZRVNfTk9fSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiB5ZXNfbm8uaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9udHRwX2RlY2wuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9hcnJheXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9tc3ZjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvd29ya2Fyb3VuZC5ocHA+Ci0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi10eXBlZGVmIGNoYXIgKCZub190YWcpWzFdOwotdHlwZWRlZiBjaGFyICgmeWVzX3RhZylbMl07Ci0KLXRlbXBsYXRlPCBib29sIENfID4gc3RydWN0IHllc19ub190YWcKLXsKLSAgICB0eXBlZGVmIG5vX3RhZyB0eXBlOwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgeWVzX25vX3RhZzx0cnVlPgotewotICAgIHR5cGVkZWYgeWVzX3RhZyB0eXBlOwotfTsKLQotCi10ZW1wbGF0ZTwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0wobG9uZywgbikgPiBzdHJ1Y3Qgd2VpZ2h0ZWRfdGFnCi17Ci0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKQotICAgIHR5cGVkZWYgY2hhciAoJnR5cGUpW25dOwotI2Vsc2UKLSAgICBjaGFyIGJ1ZltuXTsKLSAgICB0eXBlZGVmIHdlaWdodGVkX3RhZyB0eXBlOwotI2VuZGlmCi19OwotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX0RFUEVOREVOVF9BUlJBWV9UWVBFUykKLXRlbXBsYXRlPD4gc3RydWN0IHdlaWdodGVkX3RhZzwwPgotewotICAgIHR5cGVkZWYgY2hhciAoJnR5cGUpWzFdOwotfTsKLSNlbmRpZgotCi19fX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9BVVhfWUVTX05PX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYmFja19md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYmFja19md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NGQ4NWU1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2JhY2tfZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQkFDS19GV0RfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9CQUNLX0ZXRF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGJhY2tfZndkLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBiYWNrX2ltcGw7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgU2VxdWVuY2UgPiBzdHJ1Y3QgYmFjazsKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9CQUNLX0ZXRF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2JhY2tfaW5zZXJ0ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYmFja19pbnNlcnRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk5ZjZjMTAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYmFja19pbnNlcnRlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0JBQ0tfSU5TRVJURVJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9CQUNLX0lOU0VSVEVSX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAzLTIwMDQKLS8vIENvcHlyaWdodCBEYXZpZCBBYnJhaGFtcyAyMDAzLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogYmFja19pbnNlcnRlci5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9wdXNoX2JhY2suaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pbnNlcnRlci5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci1uYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBTZXF1ZW5jZQotICAgID4KLXN0cnVjdCBiYWNrX2luc2VydGVyCi0gICAgOiBpbnNlcnRlcjwgU2VxdWVuY2UscHVzaF9iYWNrPD4gPgotewotfTsKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9CQUNLX0lOU0VSVEVSX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYmVnaW5fZW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2JlZ2luX2VuZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1OTkxZjguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYmVnaW5fZW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQkVHSU5fRU5EX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQkVHSU5fRU5EX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogYmVnaW5fZW5kLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2JlZ2luX2VuZF9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2JlZ2luX2VuZF9pbXBsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvc2VxdWVuY2VfdGFnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uYV9zcGVjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfc3VwcG9ydC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi0vLyBhZ3VydCwgMTMvc2VwLzAyOiBzd2l0Y2hlZCBmcm9tIGluaGVyaXRhbmNlIHRvIHR5cGVkZWY7IE1TVkMgaXMgbW9yZQotLy8gaGFwcHkgdGhpcyB3YXkgKGxlc3MgRVRJLXJlbGF0ZWQgZXJyb3JzKSwgYW5kIGl0IGRvZXNuJ3QgYWZmZWN0IAotLy8gYW55dGhpbmcgZWxzZQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFNlcXVlbmNlKQotICAgID4KLXN0cnVjdCBiZWdpbgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2VxdWVuY2VfdGFnPFNlcXVlbmNlPjo6dHlwZSB0YWdfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmVnaW5faW1wbDwgdGFnXyA+Ci0gICAgICAgIDo6dGVtcGxhdGUgYXBwbHk8IFNlcXVlbmNlID46OnR5cGUgdHlwZTsKLQotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMSxiZWdpbiwoU2VxdWVuY2UpKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFNlcXVlbmNlKQotICAgID4KLXN0cnVjdCBlbmQKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNlcXVlbmNlX3RhZzxTZXF1ZW5jZT46OnR5cGUgdGFnXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGVuZF9pbXBsPCB0YWdfID4KLSAgICAgICAgOjp0ZW1wbGF0ZSBhcHBseTwgU2VxdWVuY2UgPjo6dHlwZSB0eXBlOwotCi0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgxLGVuZCwoU2VxdWVuY2UpKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDEsIGJlZ2luKQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDEsIGVuZCkKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9CRUdJTl9FTkRfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9iZWdpbl9lbmRfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2JlZ2luX2VuZF9md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZTQ4NmFiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2JlZ2luX2VuZF9md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9CRUdJTl9FTkRfRldEX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQkVHSU5fRU5EX0ZXRF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGJlZ2luX2VuZF9md2QuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGJlZ2luX2ltcGw7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGVuZF9pbXBsOwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgU2VxdWVuY2UgPiBzdHJ1Y3QgYmVnaW47Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgU2VxdWVuY2UgPiBzdHJ1Y3QgZW5kOwotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0JFR0lOX0VORF9GV0RfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9iaW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2JpbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YjMwYTE2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2JpbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTUxICswLDAgQEAKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1BQX0lTX0lURVJBVElORykKLQotLy8vLy8gaGVhZGVyIGJvZHkKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQklORF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0JJTkRfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBQZXRlciBEaW1vdiAyMDAxCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogYmluZC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2JpbmRfZndkLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvcGxhY2Vob2xkZXJzLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvbmV4dC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3Byb3RlY3QuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hcHBseV93cmFwLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGltaXRzL2FyaXR5LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uYS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vYXJpdHlfc3BlYy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vdHlwZV93cmFwcGVyLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy95ZXNfbm8uaHBwPgotIyAgIGlmIGRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLSMgICAgICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcmVmZXJlbmNlLmhwcD4KLSMgICBlbmRpZiAKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2JpbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9zdGF0aWNfY29uc3RhbnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy91c2VfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMpIFwKLSAgICAmJiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotCi0jICAgaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX1VOTkFNRURfUExBQ0VIT0xERVJfU1VQUE9SVCkKLSMgICAgICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTRURfSEVBREVSIGJhc2ljX2JpbmQuaHBwCi0jICAgZWxzZQotIyAgICAgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BSRVBST0NFU1NFRF9IRUFERVIgYmluZC5ocHAKLSMgICBlbmRpZgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2luY2x1ZGVfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2Vsc2UKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9wYXJhbXMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9kZWZhdWx0X3BhcmFtcy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL2RlZl9wYXJhbXNfdGFpbC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL3BhcnRpYWxfc3BlY19wYXJhbXMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9leHRfcGFyYW1zLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvcmVwZWF0LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvZW51bS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHJlcHJvY2Vzc29yL2FkZC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2RtY19hbWJpZ3VvdXNfY3Rwcy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2N0cHMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy90dHAuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9kdHAuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL250dHBfZGVjbC5ocHA+Ci0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0ZS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbW1hX2lmLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaW5jLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLS8vIGxvY2FsIG1hY3JvcywgI3VuZGVmLWluZWQgYXQgdGhlIGVuZCBvZiB0aGUgaGVhZGVyCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9BUFBMWSBcCi0gICAgTkROQk9PU1RfUFBfQ0FUKGFwcGx5X3dyYXAsTkROQk9PU1RfTVBMX0xJTUlUX01FVEFGVU5DVElPTl9BUklUWSkgXAotICAgIC8qKi8KLQotIyAgIGlmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19ETUNfQU1CSUdVT1VTX0NUUFMpCi0jICAgICAgIGRlZmluZSBBVVg3NzgwNzZfRE1DX1BBUkFNKCkgLCBpbnQgZHVtbXlfCi0jICAgZWxzZQotIyAgICAgICBkZWZpbmUgQVVYNzc4MDc2X0RNQ19QQVJBTSgpCi0jICAgZW5kaWYKLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfQklORF9QQVJBTVMocGFyYW0pIFwKLSAgICBORE5CT09TVF9NUExfUFBfUEFSQU1TKCBcCi0gICAgICAgICAgTkROQk9PU1RfTVBMX0xJTUlUX01FVEFGVU5DVElPTl9BUklUWSBcCi0gICAgICAgICwgcGFyYW0gXAotICAgICAgICApIFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X0JJTkRfREVGQVVMVF9QQVJBTVMocGFyYW0sIHZhbHVlKSBcCi0gICAgTkROQk9PU1RfTVBMX1BQX0RFRkFVTFRfUEFSQU1TKCBcCi0gICAgICAgICAgTkROQk9PU1RfTVBMX0xJTUlUX01FVEFGVU5DVElPTl9BUklUWSBcCi0gICAgICAgICwgcGFyYW0gXAotICAgICAgICAsIHZhbHVlIFwKLSAgICAgICAgKSBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9CSU5EX05fUEFSQU1TKG4sIHBhcmFtKSBcCi0gICAgTkROQk9PU1RfUFBfQ09NTUFfSUYobikgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhuLCBwYXJhbSkgXAotICAgIC8qKi8KLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfQklORF9OX1NQRUNfUEFSQU1TKG4sIHBhcmFtLCBkZWYpIFwKLSAgICBORE5CT09TVF9QUF9DT01NQV9JRihuKSBcCi0gICAgTkROQk9PU1RfTVBMX1BQX1BBUlRJQUxfU1BFQ19QQVJBTVMobiwgcGFyYW0sIGRlZikgXAotICAgIC8qKi8KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fREVGQVVMVF9QQVJBTUVURVJTX0lOX05FU1RFRF9URU1QTEFURVMpCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9CSU5EX05FU1RFRF9ERUZBVUxUX1BBUkFNUyhwYXJhbSwgdmFsdWUpIFwKLSAgICBBVVg3NzgwNzZfQklORF9ERUZBVUxUX1BBUkFNUyhwYXJhbSwgdmFsdWUpIFwKLSAgICAvKiovCi0jZWxzZQotIyAgIGRlZmluZSBBVVg3NzgwNzZfQklORF9ORVNURURfREVGQVVMVF9QQVJBTVMocGFyYW0sIHZhbHVlKSBcCi0gICAgQVVYNzc4MDc2X0JJTkRfUEFSQU1TKHBhcmFtKSBcCi0gICAgLyoqLwotI2VuZGlmCi0KLW5hbWVzcGFjZSBhdXggewotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBULCBBVVg3NzgwNzZfQklORF9QQVJBTVModHlwZW5hbWUgVSkKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZwotewotICAgIHR5cGVkZWYgVCB0eXBlOwotfTsKLQotIyAgIGlmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fVU5OQU1FRF9QTEFDRUhPTERFUl9TVVBQT1JUKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIHR5cGVuYW1lIEFyZwotICAgID4KLXN0cnVjdCByZXBsYWNlX3VubmFtZWRfYXJnCi17Ci0gICAgdHlwZWRlZiBBcmcgbmV4dDsKLSAgICB0eXBlZGVmIFQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgQXJnCi0gICAgPgotc3RydWN0IHJlcGxhY2VfdW5uYW1lZF9hcmc8IGFyZzwtMT4sQXJnID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEFyZzo6bmV4dCBuZXh0OwotICAgIHR5cGVkZWYgQXJnIHR5cGU7Ci19OwotCi0jICAgZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19OT19VTk5BTUVEX1BMQUNFSE9MREVSX1NVUFBPUlQKLQotdGVtcGxhdGU8Ci0gICAgICBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIE4pLCBBVVg3NzgwNzZfQklORF9QQVJBTVModHlwZW5hbWUgVSkKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZzwgYXJnPE4+LEFVWDc3ODA3Nl9CSU5EX1BBUkFNUyhVKSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBBVVg3NzgwNzZfQVBQTFk8bXBsOjphcmc8Tj4sIEFVWDc3ODA3Nl9CSU5EX1BBUkFNUyhVKT46OnR5cGUgdHlwZTsKLX07Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX0JJTkRfVEVNUExBVEUpCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYsIEFVWDc3ODA3Nl9CSU5EX1BBUkFNUyh0eXBlbmFtZSBUKSwgQVVYNzc4MDc2X0JJTkRfUEFSQU1TKHR5cGVuYW1lIFUpCi0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8IGJpbmQ8RixBVVg3NzgwNzZfQklORF9QQVJBTVMoVCk+LEFVWDc3ODA3Nl9CSU5EX1BBUkFNUyhVKSA+Ci17Ci0gICAgdHlwZWRlZiBiaW5kPEYsQVVYNzc4MDc2X0JJTkRfUEFSQU1TKFQpPiBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEFVWDc3ODA3Nl9BUFBMWTxmXywgQVVYNzc4MDc2X0JJTkRfUEFSQU1TKFUpPjo6dHlwZSB0eXBlOwotfTsKLSNlbmRpZgotCi0jZWxzZSAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLS8vIGFndXJ0LCAxNS9qYW4vMDI6IGl0J3Mgbm90IGEgaW50ZW5kZWQgdG8gYmUgdXNlZCBhcyBhIGZ1bmN0aW9uIGNsYXNzLCBhbmQgCi0vLyBNU1ZDNi41IGhhcyBwcm9ibGVtcyB3aXRoICdhcHBseScgbmFtZSBoZXJlICh0aGUgY29kZSBjb21waWxlcywgYnV0IGRvZXNuJ3QKLS8vIHdvcmspLCBzbyBJIHdlbnQgd2l0aCB0aGUgJ3Jlc3VsdF8nIGhlcmUsIGFuZCBpbiBhbGwgb3RoZXIgc2ltaWxhciBjYXNlcwotdGVtcGxhdGU8IGJvb2wgPgotc3RydWN0IHJlc29sdmVfYXJnX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgQVVYNzc4MDc2X0JJTkRfUEFSQU1TKHR5cGVuYW1lIFUpID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IAotc3RydWN0IHJlc29sdmVfYXJnX2ltcGw8dHJ1ZT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgQVVYNzc4MDc2X0JJTkRfUEFSQU1TKHR5cGVuYW1lIFUpID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgQVVYNzc4MDc2X0FQUExZPAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAsIEFVWDc3ODA3Nl9CSU5EX1BBUkFNUyhVKQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi0vLyBmb3IgJ3Jlc29sdmVfYmluZF9hcmcnCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBpc19iaW5kX3RlbXBsYXRlOwotCi10ZW1wbGF0ZTwgCi0gICAgICB0eXBlbmFtZSBULCBBVVg3NzgwNzZfQklORF9QQVJBTVModHlwZW5hbWUgVSkKLSAgICA+Ci1zdHJ1Y3QgcmVzb2x2ZV9iaW5kX2FyZwotICAgIDogcmVzb2x2ZV9hcmdfaW1wbDwgaXNfYmluZF90ZW1wbGF0ZTxUPjo6dmFsdWUgPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBULEFVWDc3ODA3Nl9CSU5EX1BBUkFNUyhVKSA+Ci17Ci19OwotCi0jICAgaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19VTk5BTUVEX1BMQUNFSE9MREVSX1NVUFBPUlQpCi0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gCi1zdHJ1Y3QgcmVwbGFjZV91bm5hbWVkX2FyZ19pbXBsCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEFyZyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIEFyZyBuZXh0OwotICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiAKLXN0cnVjdCByZXBsYWNlX3VubmFtZWRfYXJnX2ltcGw8IGFyZzwtMT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBBcmcgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PEFyZz46OnR5cGUgbmV4dDsKLSAgICAgICAgdHlwZWRlZiBBcmcgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHR5cGVuYW1lIEFyZyA+IAotc3RydWN0IHJlcGxhY2VfdW5uYW1lZF9hcmcKLSAgICA6IHJlcGxhY2VfdW5uYW1lZF9hcmdfaW1wbDxUPjo6dGVtcGxhdGUgcmVzdWx0XzxBcmc+Ci17Ci19OwotCi0jICAgZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19OT19VTk5BTUVEX1BMQUNFSE9MREVSX1NVUFBPUlQKLQotLy8gYWd1cnQsIDEwL21hci8wMjogdGhlIGZvcndhcmQgZGVjbGFyYXRpb24gaGFzIHRvIGFwcGVhciBiZWZvcmUgYW55IG9mCi0vLyAnaXNfYmluZF9oZWxwZXInIG92ZXJsb2Fkcywgb3RoZXJ3aXNlIE1TVkM2LjUgaXNzdWVzIGFuIElDRSBvbiBpdAotdGVtcGxhdGU8IE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGludCwgYXJpdHlfKSA+IHN0cnVjdCBiaW5kX2Nob29zZXI7Ci0KLWF1eDo6bm9fdGFnIGlzX2JpbmRfaGVscGVyKC4uLik7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IGF1eDo6bm9fdGFnIGlzX2JpbmRfaGVscGVyKHByb3RlY3Q8VD4qKTsKLQotLy8gb3ZlcmxvYWQgZm9yICJtYWluIiBmb3JtCi0vLyBhZ3VydCwgMTUvbWFyLzAyOiBNU1ZDIDYuNSBmYWlscyB0byBwcm9wZXJseSByZXNvbHZlIHRoZSBvdmVybG9hZCAKLS8vIGluIGNhc2UgaWYgd2UgdXNlICdhdXg6OnR5cGVfd3JhcHBlcjwgYmluZDwuLi4+ID4nIGhlcmUsIGFuZCBhbGwgCi0vLyAnYmluZCcgaW5zdGFudGlhdGlvbnMgZm9ybSBhIGNvbXBsZXRlIHR5cGUgYW55d2F5Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19CSU5EX1RFTVBMQVRFKQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGLCBBVVg3NzgwNzZfQklORF9QQVJBTVModHlwZW5hbWUgVCkKLSAgICA+Ci1hdXg6Onllc190YWcgaXNfYmluZF9oZWxwZXIoYmluZDxGLEFVWDc3ODA3Nl9CSU5EX1BBUkFNUyhUKT4qKTsKLSNlbmRpZgotCi10ZW1wbGF0ZTwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCBOKSA+Ci1hdXg6Onllc190YWcgaXNfYmluZF9oZWxwZXIoYXJnPE4+Kik7Ci0KLXRlbXBsYXRlPCBib29sIGlzX3JlZl8gPSB0cnVlID4KLXN0cnVjdCBpc19iaW5kX3RlbXBsYXRlX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBmYWxzZSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpc19iaW5kX3RlbXBsYXRlX2ltcGw8ZmFsc2U+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gCi0gICAgICAgICAgICAgIHNpemVvZihhdXg6OmlzX2JpbmRfaGVscGVyKHN0YXRpY19jYXN0PFQqPigwKSkpIAotICAgICAgICAgICAgICAgID09IHNpemVvZihhdXg6Onllc190YWcpCi0gICAgICAgICAgICApOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBpc19iaW5kX3RlbXBsYXRlCi0gICAgOiBpc19iaW5kX3RlbXBsYXRlX2ltcGw8IDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfcmVmZXJlbmNlX2ltcGw8VD46OnZhbHVlID4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFQ+Ci17Ci19OwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotCi0jZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMSBcCi0gICAgKDMsKDAsIE5ETkJPT1NUX01QTF9MSU1JVF9NRVRBRlVOQ1RJT05fQVJJVFksIDxuZG5ib29zdC9tcGwvYmluZC5ocHA+KSkKLSNpbmNsdWRlIE5ETkJPT1NUX1BQX0lURVJBVEUoKQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fVEVNUExBVEVfVEVNUExBVEVfUEFSQU1FVEVSUykKLS8vLyBpZl8vZXZhbF9pZiBzcGVjaWFsaXphdGlvbnMKLSMgICBkZWZpbmUgQVVYNzc4MDc2X1NQRUNfTkFNRSBpZl8KLSMgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18xICgzLCgzLCAzLCA8bmRuYm9vc3QvbXBsL2JpbmQuaHBwPikpCi0jICAgaW5jbHVkZSBORE5CT09TVF9QUF9JVEVSQVRFKCkKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfRE1DX0FNQklHVU9VU19DVFBTKQotIyAgIGRlZmluZSBBVVg3NzgwNzZfU1BFQ19OQU1FIGV2YWxfaWYKLSMgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18xICgzLCgzLCAzLCA8bmRuYm9vc3QvbXBsL2JpbmQuaHBwPikpCi0jICAgaW5jbHVkZSBORE5CT09TVF9QUF9JVEVSQVRFKCkKLSNlbmRpZgotI2VuZGlmCi0KLS8vIHJlYWwgQysrIHZlcnNpb24gaXMgYWxyZWFkeSB0YWtlbiBjYXJlIG9mCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKSBcCi0gICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19CSU5EX1RFTVBMQVRFKQotCi1uYW1lc3BhY2UgYXV4IHsKLS8vIGFwcGx5X2NvdW50X2FyZ3MKLSNkZWZpbmUgQVVYNzc4MDc2X0NPVU5UX0FSR1NfUFJFRklYIGJpbmQKLSNkZWZpbmUgQVVYNzc4MDc2X0NPVU5UX0FSR1NfREVGQVVMVCBuYQotI2RlZmluZSBBVVg3NzgwNzZfQ09VTlRfQVJHU19BUklUWSBORE5CT09TVF9NUExfTElNSVRfTUVUQUZVTkNUSU9OX0FSSVRZCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY291bnRfYXJncy5ocHA+Ci19Ci0KLS8vIGJpbmQKLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgQVVYNzc4MDc2X0JJTkRfUEFSQU1TKHR5cGVuYW1lIFQpIEFVWDc3ODA3Nl9ETUNfUEFSQU0oKQotICAgID4KLXN0cnVjdCBiaW5kCi0gICAgOiBhdXg6OmJpbmRfY2hvb3NlcjwKLSAgICAgICAgICBhdXg6OmJpbmRfY291bnRfYXJnczxBVVg3NzgwNzZfQklORF9QQVJBTVMoVCk+Ojp2YWx1ZQotICAgICAgICA+Ojp0ZW1wbGF0ZSByZXN1bHRfPCBGLEFVWDc3ODA3Nl9CSU5EX1BBUkFNUyhUKSA+Ojp0eXBlCi17Ci19OwotCi1ORE5CT09TVF9NUExfQVVYX0FSSVRZX1NQRUMoCi0gICAgICBORE5CT09TVF9QUF9JTkMoTkROQk9PU1RfTVBMX0xJTUlUX01FVEFGVU5DVElPTl9BUklUWSkKLSAgICAsIGJpbmQKLSAgICApCi0KLU5ETkJPT1NUX01QTF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygKLSAgICAgIE5ETkJPT1NUX1BQX0lOQyhORE5CT09TVF9NUExfTElNSVRfTUVUQUZVTkNUSU9OX0FSSVRZKQotICAgICwgYmluZAotICAgICkKLQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi0jICAgdW5kZWYgQVVYNzc4MDc2X0JJTkRfTkVTVEVEX0RFRkFVTFRfUEFSQU1TCi0jICAgdW5kZWYgQVVYNzc4MDc2X0JJTkRfTl9TUEVDX1BBUkFNUwotIyAgIHVuZGVmIEFVWDc3ODA3Nl9CSU5EX05fUEFSQU1TCi0jICAgdW5kZWYgQVVYNzc4MDc2X0JJTkRfREVGQVVMVF9QQVJBTVMKLSMgICB1bmRlZiBBVVg3NzgwNzZfQklORF9QQVJBTVMKLSMgICB1bmRlZiBBVVg3NzgwNzZfRE1DX1BBUkFNCi0jICAgdW5kZWYgQVVYNzc4MDc2X0FQUExZCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0JJTkRfSFBQX0lOQ0xVREVECi0KLS8vLy8vIGl0ZXJhdGlvbiwgZGVwdGggPT0gMQotCi0vLyBGb3IgZ2NjIDQuNCBjb21wYXRhYmlsaXR5LCB3ZSBtdXN0IGluY2x1ZGUgdGhlCi0vLyBORE5CT09TVF9QUF9JVEVSQVRJT05fREVQVEggdGVzdCBpbnNpZGUgYW4gI2Vsc2UgY2xhdXNlLgotI2Vsc2UgLy8gTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HCi0jaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0RFUFRIKCkgPT0gMQotCi0jICAgZGVmaW5lIGlfIE5ETkJPT1NUX1BQX0ZSQU1FX0lURVJBVElPTigxKQotCi0jaWYgZGVmaW5lZChBVVg3NzgwNzZfU1BFQ19OQU1FKQotCi0vLyBsYXp5IG1ldGFmdW5jdGlvbiBzcGVjaWFsaXphdGlvbgotdGVtcGxhdGU8IHRlbXBsYXRlPCBORE5CT09TVF9NUExfUFBfUEFSQU1TKGlfLCB0eXBlbmFtZSBUKSA+IGNsYXNzIEYsIHR5cGVuYW1lIFRhZyA+Ci1zdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKHF1b3RlLGlfKTsKLQotdGVtcGxhdGU8IE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoaV8sIHR5cGVuYW1lIFQpID4gc3RydWN0IEFVWDc3ODA3Nl9TUEVDX05BTUU7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVGFnIEFVWDc3ODA3Nl9CSU5EX05fUEFSQU1TKGlfLCB0eXBlbmFtZSBUKQotICAgID4KLXN0cnVjdCBORE5CT09TVF9QUF9DQVQoYmluZCxpXyk8IAotICAgICAgTkROQk9PU1RfUFBfQ0FUKHF1b3RlLGlfKTxBVVg3NzgwNzZfU1BFQ19OQU1FLFRhZz4KLSAgICBBVVg3NzgwNzZfQklORF9OX1BBUkFNUyhpXyxUKQotICAgID4KLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICBBVVg3NzgwNzZfQklORF9ORVNURURfREVGQVVMVF9QQVJBTVModHlwZW5hbWUgVSwgbmEpCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgbXBsOjphcmc8MT4gbjE7Ci0jICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzIgKDMsKDEsIGlfLCA8bmRuYm9vc3QvbXBsL2JpbmQuaHBwPikpCi0jICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBBVVg3NzgwNzZfU1BFQ19OQU1FPAotICAgICAgICAgICAgICB0eXBlbmFtZSB0MTo6dHlwZQotICAgICAgICAgICAgLCBORE5CT09TVF9NUExfUFBfRVhUX1BBUkFNUygyLCBORE5CT09TVF9QUF9JTkMoaV8pLCB0KQotICAgICAgICAgICAgPjo6dHlwZSBmXzsKLQotICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZl86OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotI3VuZGVmIEFVWDc3ODA3Nl9TUEVDX05BTUUKLQotI2Vsc2UgLy8gQVVYNzc4MDc2X1NQRUNfTkFNRQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYgQVVYNzc4MDc2X0JJTkRfTl9QQVJBTVMoaV8sIHR5cGVuYW1lIFQpIEFVWDc3ODA3Nl9ETUNfUEFSQU0oKQotICAgID4KLXN0cnVjdCBORE5CT09TVF9QUF9DQVQoYmluZCxpXykKLXsKLSAgICB0ZW1wbGF0ZTwKLSAgICAgICAgICBBVVg3NzgwNzZfQklORF9ORVNURURfREVGQVVMVF9QQVJBTVModHlwZW5hbWUgVSwgbmEpCi0gICAgICAgID4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgIHByaXZhdGU6Ci0jICAgaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19VTk5BTUVEX1BMQUNFSE9MREVSX1NVUFBPUlQpCi0KLSAgICAgICAgdHlwZWRlZiBhdXg6OnJlcGxhY2VfdW5uYW1lZF9hcmc8IEYsbXBsOjphcmc8MT4gPiByMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6dHlwZSBhMDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByMDo6bmV4dCBuMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnJlc29sdmVfYmluZF9hcmc8YTAsQVVYNzc4MDc2X0JJTkRfUEFSQU1TKFUpPjo6dHlwZSBmXzsKLSAgICAgICAgLy8vCi0jICAgZWxzZQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzxGLEFVWDc3ODA3Nl9CSU5EX1BBUkFNUyhVKT46OnR5cGUgZl87Ci0KLSMgICBlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX05PX1VOTkFNRURfUExBQ0VIT0xERVJfU1VQUE9SVAotCi0jICAgaWYgaV8gPiAwCi0jICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzIgKDMsKDEsIGlfLCA8bmRuYm9vc3QvbXBsL2JpbmQuaHBwPikpCi0jICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0jICAgZW5kaWYKLQotICAgICBwdWJsaWM6Ci0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X0FSRyh1bnVzZWQsIGlfLCB0KSBcCi0gICAgTkROQk9PU1RfUFBfQ09NTUFfSUYoaV8pIFwKLSAgICB0eXBlbmFtZSBORE5CT09TVF9QUF9DQVQodCxORE5CT09TVF9QUF9JTkMoaV8pKTo6dHlwZSBcCi0vKiovCi0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBORE5CT09TVF9QUF9DQVQoYXBwbHlfd3JhcCxpXyk8Ci0gICAgICAgICAgICAgIGZfIAotICAgICAgICAgICAgTkROQk9PU1RfUFBfQ09NTUFfSUYoaV8pIE5ETkJPT1NUX01QTF9QUF9SRVBFQVQoaV8sIEFVWDc3ODA3Nl9BUkcsIHQpCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0KLSMgICB1bmRlZiBBVVg3NzgwNzZfQVJHCi0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGIEFVWDc3ODA3Nl9CSU5EX05fUEFSQU1TKGlfLCB0eXBlbmFtZSBUKSwgQVVYNzc4MDc2X0JJTkRfUEFSQU1TKHR5cGVuYW1lIFUpCi0gICAgPgotc3RydWN0IHJlc29sdmVfYmluZF9hcmc8Ci0gICAgICBORE5CT09TVF9QUF9DQVQoYmluZCxpXyk8RiBBVVg3NzgwNzZfQklORF9OX1BBUkFNUyhpXyxUKT4sQVVYNzc4MDc2X0JJTkRfUEFSQU1TKFUpCi0gICAgPgotewotICAgIHR5cGVkZWYgTkROQk9PU1RfUFBfQ0FUKGJpbmQsaV8pPEYgQVVYNzc4MDc2X0JJTkRfTl9QQVJBTVMoaV8sVCk+IGZfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgQVVYNzc4MDc2X0FQUExZPGZfLCBBVVg3NzgwNzZfQklORF9QQVJBTVMoVSk+Ojp0eXBlIHR5cGU7Ci19OwotCi0jZWxzZQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIEYgQVVYNzc4MDc2X0JJTkRfTl9QQVJBTVMoaV8sIHR5cGVuYW1lIFQpCi0gICAgPgotYXV4Ojp5ZXNfdGFnCi1pc19iaW5kX2hlbHBlcihORE5CT09TVF9QUF9DQVQoYmluZCxpXyk8RiBBVVg3NzgwNzZfQklORF9OX1BBUkFNUyhpXyxUKT4qKTsKLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLU5ETkJPT1NUX01QTF9BVVhfQVJJVFlfU1BFQyhORE5CT09TVF9QUF9JTkMoaV8pLCBORE5CT09TVF9QUF9DQVQoYmluZCxpXykpCi1ORE5CT09TVF9NUExfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoTkROQk9PU1RfUFBfSU5DKGlfKSwgTkROQk9PU1RfUFBfQ0FUKGJpbmQsaV8pKQotCi0jICAgaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19CSU5EX1RFTVBMQVRFKQotIyAgIGlmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi0gICAgCi0jaWYgaV8gPT0gTkROQk9PU1RfTVBMX0xJTUlUX01FVEFGVU5DVElPTl9BUklUWQotLy8vIHByaW1hcnkgdGVtcGxhdGUgKG5vdCBhIHNwZWNpYWxpemF0aW9uISkKLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiBBVVg3NzgwNzZfQklORF9OX1BBUkFNUyhpXywgdHlwZW5hbWUgVCkgQVVYNzc4MDc2X0RNQ19QQVJBTSgpCi0gICAgPgotc3RydWN0IGJpbmQKLSAgICA6IE5ETkJPT1NUX1BQX0NBVChiaW5kLGlfKTxGIEFVWDc3ODA3Nl9CSU5EX05fUEFSQU1TKGlfLFQpID4KLXsKLX07Ci0jZWxzZQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGIEFVWDc3ODA3Nl9CSU5EX05fUEFSQU1TKGlfLCB0eXBlbmFtZSBUKSBBVVg3NzgwNzZfRE1DX1BBUkFNKCkKLSAgICA+Ci1zdHJ1Y3QgYmluZDwgRiBBVVg3NzgwNzZfQklORF9OX1NQRUNfUEFSQU1TKGlfLCBULCBuYSkgPgotICAgIDogTkROQk9PU1RfUFBfQ0FUKGJpbmQsaV8pPEYgQVVYNzc4MDc2X0JJTkRfTl9QQVJBTVMoaV8sVCkgPgotewotfTsKLSNlbmRpZgotCi0jICAgZWxzZSAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmluZF9jaG9vc2VyPGlfPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEYsIEFVWDc3ODA3Nl9CSU5EX1BBUkFNUyh0eXBlbmFtZSBUKQotICAgICAgICA+Ci0gICAgc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfUFBfQ0FUKGJpbmQsaV8pPCBGIEFVWDc3ODA3Nl9CSU5EX05fUEFSQU1TKGlfLFQpID4gdHlwZTsKLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLSMgICBlbmRpZiAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0jICAgZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19OT19CSU5EX1RFTVBMQVRFCi0KLSNlbmRpZiAvLyBBVVg3NzgwNzZfU1BFQ19OQU1FCi0KLSMgICB1bmRlZiBpXwotCi0vLy8vLyBpdGVyYXRpb24sIGRlcHRoID09IDIKLQotI2VsaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0RFUFRIKCkgPT0gMgotCi0jICAgZGVmaW5lIGpfIE5ETkJPT1NUX1BQX0ZSQU1FX0lURVJBVElPTigyKQotIyAgIGlmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fVU5OQU1FRF9QTEFDRUhPTERFUl9TVVBQT1JUKQotCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXBsYWNlX3VubmFtZWRfYXJnPCBORE5CT09TVF9QUF9DQVQoVCxqXyksTkROQk9PU1RfUFBfQ0FUKG4sal8pID4gTkROQk9PU1RfUFBfQ0FUKHIsal8pOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIE5ETkJPT1NUX1BQX0NBVChyLGpfKTo6dHlwZSBORE5CT09TVF9QUF9DQVQoYSxqXyk7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgTkROQk9PU1RfUFBfQ0FUKHIsal8pOjpuZXh0IE5ETkJPT1NUX1BQX0NBVChuLE5ETkJPT1NUX1BQX0lOQyhqXykpOwotICAgICAgICB0eXBlZGVmIGF1eDo6cmVzb2x2ZV9iaW5kX2FyZzxORE5CT09TVF9QUF9DQVQoYSxqXyksIEFVWDc3ODA3Nl9CSU5EX1BBUkFNUyhVKT4gTkROQk9PU1RfUFBfQ0FUKHQsal8pOwotICAgICAgICAvLy8KLSMgICBlbHNlCi0gICAgICAgIHR5cGVkZWYgYXV4OjpyZXNvbHZlX2JpbmRfYXJnPCBORE5CT09TVF9QUF9DQVQoVCxqXyksQVVYNzc4MDc2X0JJTkRfUEFSQU1TKFUpPiBORE5CT09TVF9QUF9DQVQodCxqXyk7Ci0KLSMgICBlbmRpZgotIyAgIHVuZGVmIGpfCi0KLSNlbmRpZiAvLyBORE5CT09TVF9QUF9JVEVSQVRJT05fREVQVEgoKQotI2VuZGlmIC8vIE5ETkJPT1NUX1BQX0lTX0lURVJBVElORwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYmluZF9md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvYmluZF9md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkODliY2M1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2JpbmRfZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1BQX0lTX0lURVJBVElORykKLQotLy8vLy8gaGVhZGVyIGJvZHkKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQklORF9GV0RfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9CSU5EX0ZXRF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGJpbmRfZndkLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uYS5ocHA+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9iaW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdXNlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTKSBcCi0gICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFJFUFJPQ0VTU0VEX0hFQURFUiBiaW5kX2Z3ZC5ocHAKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9pbmNsdWRlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNlbHNlCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGltaXRzL2FyaXR5LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvcGFyYW1zLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvZGVmYXVsdF9wYXJhbXMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9kbWNfYW1iaWd1b3VzX2N0cHMuaHBwPgotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbW1hX2lmLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0ZS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi0vLyBsb2NhbCBtYWNyb3MsICN1bmRlZi1pbmVkIGF0IHRoZSBlbmQgb2YgdGhlIGhlYWRlcgotCi0jICAgaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX0RNQ19BTUJJR1VPVVNfQ1RQUykKLSMgICAgICAgZGVmaW5lIEFVWDc3ODA3Nl9ETUNfUEFSQU0oKSAsIGludCBkdW1teV8gPSAwCi0jICAgZWxzZQotIyAgICAgICBkZWZpbmUgQVVYNzc4MDc2X0RNQ19QQVJBTSgpCi0jICAgZW5kaWYKLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfQklORF9ERUZBVUxUX1BBUkFNUyhwYXJhbSwgdmFsdWUpIFwKLSAgICBORE5CT09TVF9NUExfUFBfREVGQVVMVF9QQVJBTVMoIFwKLSAgICAgICAgICBORE5CT09TVF9NUExfTElNSVRfTUVUQUZVTkNUSU9OX0FSSVRZIFwKLSAgICAgICAgLCBwYXJhbSBcCi0gICAgICAgICwgdmFsdWUgXAotICAgICAgICApIFwKLSAgICBBVVg3NzgwNzZfRE1DX1BBUkFNKCkgXAotICAgIC8qKi8KLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfQklORF9OX1BBUkFNUyhuLCBwYXJhbSkgXAotICAgIE5ETkJPT1NUX1BQX0NPTU1BX0lGKG4pIE5ETkJPT1NUX01QTF9QUF9QQVJBTVMobiwgcGFyYW0pIFwKLSAgICBBVVg3NzgwNzZfRE1DX1BBUkFNKCkgXAotICAgIC8qKi8KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fQklORF9URU1QTEFURSkKLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgRiwgQVVYNzc4MDc2X0JJTkRfREVGQVVMVF9QQVJBTVModHlwZW5hbWUgVCwgbmEpCi0gICAgPgotc3RydWN0IGJpbmQ7Ci0jZW5kaWYKLQotI2RlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEgXAotICAgICgzLCgwLCBORE5CT09TVF9NUExfTElNSVRfTUVUQUZVTkNUSU9OX0FSSVRZLCA8bmRuYm9vc3QvbXBsL2JpbmRfZndkLmhwcD4pKQotI2luY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0KLSMgICB1bmRlZiBBVVg3NzgwNzZfQklORF9OX1BBUkFNUwotIyAgIHVuZGVmIEFVWDc3ODA3Nl9CSU5EX0RFRkFVTFRfUEFSQU1TCi0jICAgdW5kZWYgQVVYNzc4MDc2X0RNQ19QQVJBTQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMKLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQklORF9GV0RfSFBQX0lOQ0xVREVECi0KLS8vLy8vIGl0ZXJhdGlvbgotCi0jZWxzZQotI2RlZmluZSBpXyBORE5CT09TVF9QUF9GUkFNRV9JVEVSQVRJT04oMSkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBGIEFVWDc3ODA3Nl9CSU5EX05fUEFSQU1TKGlfLCB0eXBlbmFtZSBUKQotICAgID4KLXN0cnVjdCBORE5CT09TVF9QUF9DQVQoYmluZCxpXyk7Ci0KLSN1bmRlZiBpXwotI2VuZGlmIC8vIE5ETkJPT1NUX1BQX0lTX0lURVJBVElORwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYm9vbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9ib29sLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGJlNzAzMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9ib29sLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQk9PTF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0JPT0xfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBib29sLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2Jvb2xfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaW50ZWdyYWxfY190YWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9zdGF0aWNfY29uc3RhbnQuaHBwPgotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi0KLXRlbXBsYXRlPCBib29sIENfID4gc3RydWN0IGJvb2xfCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gQ18pOwotICAgIHR5cGVkZWYgaW50ZWdyYWxfY190YWcgdGFnOwotICAgIHR5cGVkZWYgYm9vbF8gdHlwZTsKLSAgICB0eXBlZGVmIGJvb2wgdmFsdWVfdHlwZTsKLSAgICBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gdGhpcy0+dmFsdWU7IH0KLX07Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19JTkNMQVNTX01FTUJFUl9JTklUSUFMSVpBVElPTikKLXRlbXBsYXRlPCBib29sIENfID4KLWJvb2wgY29uc3QgYm9vbF88Q18+Ojp2YWx1ZTsKLSNlbmRpZgotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0JPT0xfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9ib29sX2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9ib29sX2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMyNWNhYzQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvYm9vbF9md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9CT09MX0ZXRF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0JPT0xfRldEX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogYm9vbF9md2QuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9hZGxfYmFycmllci5ocHA+Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLQotdGVtcGxhdGU8IGJvb2wgQ18gPiBzdHJ1Y3QgYm9vbF87Ci0KLS8vIHNob3JjdXRzCi10eXBlZGVmIGJvb2xfPHRydWU+IHRydWVfOwotdHlwZWRlZiBib29sXzxmYWxzZT4gZmFsc2VfOwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX0RFQ0woYm9vbF8pCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX0RFQ0wodHJ1ZV8pCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX0RFQ0woZmFsc2VfKQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0JPT0xfRldEX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvY2xlYXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvY2xlYXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMWI0OWEyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2NsZWFyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQ0xFQVJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9DTEVBUl9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGNsZWFyLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2NsZWFyX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY2xlYXJfaW1wbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3NlcXVlbmNlX3RhZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbmFfc3BlYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX3N1cHBvcnQuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFNlcXVlbmNlKQotICAgID4KLXN0cnVjdCBjbGVhcgotICAgIDogY2xlYXJfaW1wbDwgdHlwZW5hbWUgc2VxdWVuY2VfdGFnPFNlcXVlbmNlPjo6dHlwZSA+Ci0gICAgICAgIDo6dGVtcGxhdGUgYXBwbHk8IFNlcXVlbmNlID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDEsY2xlYXIsKFNlcXVlbmNlKSkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQygxLCBjbGVhcikKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DTEVBUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2NsZWFyX2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9jbGVhcl9md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZDBkYWYyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2NsZWFyX2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0NMRUFSX0ZXRF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0NMRUFSX0ZXRF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGNsZWFyX2Z3ZC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgY2xlYXJfaW1wbDsKLXRlbXBsYXRlPCB0eXBlbmFtZSBTZXF1ZW5jZSA+IHN0cnVjdCBjbGVhcjsKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DTEVBUl9GV0RfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9jb21wYXJpc29uLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2NvbXBhcmlzb24uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YWZhZDFmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2NvbXBhcmlzb24uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9DT01QQVJJU09OX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQ09NUEFSSVNPTl9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGNvbXBhcmlzb24uaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvZXF1YWxfdG8uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ub3RfZXF1YWxfdG8uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9sZXNzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvZ3JlYXRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xlc3NfZXF1YWwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ncmVhdGVyX2VxdWFsLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DT01QQVJJU09OX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvY29udGFpbnMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvY29udGFpbnMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4Mzk1ZThjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2NvbnRhaW5zLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQ09OVEFJTlNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9DT05UQUlOU19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEVyaWMgRnJpZWRtYW4gMjAwMgotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBjb250YWlucy5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9jb250YWluc19md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9zZXF1ZW5jZV90YWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbnRhaW5zX2ltcGwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL25hX3NwZWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9zdXBwb3J0LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShTZXF1ZW5jZSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVCkKLSAgICA+Ci1zdHJ1Y3QgY29udGFpbnMKLSAgICA6IGNvbnRhaW5zX2ltcGw8IHR5cGVuYW1lIHNlcXVlbmNlX3RhZzxTZXF1ZW5jZT46OnR5cGUgPgotICAgICAgICA6OnRlbXBsYXRlIGFwcGx5PCBTZXF1ZW5jZSxUID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsY29udGFpbnMsKFNlcXVlbmNlLFQpKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDIsIGNvbnRhaW5zKQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NPTlRBSU5TX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvY29udGFpbnNfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2NvbnRhaW5zX2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDViNGMyZGYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvY29udGFpbnNfZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQ09OVEFJTlNfRldEX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQ09OVEFJTlNfRldEX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgRXJpYyBGcmllZG1hbiAyMDAyCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGNvbnRhaW5zX2Z3ZC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgY29udGFpbnNfaW1wbDsKLXRlbXBsYXRlPCB0eXBlbmFtZSBTZXF1ZW5jZSwgdHlwZW5hbWUgVCA+IHN0cnVjdCBjb250YWluczsKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DT05UQUlOU19GV0RfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9jb3B5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2NvcHkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjM2UxNmM4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2NvcHkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9DT1BZX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfQ09QWV9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLyBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwMy0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGNvcHkuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvZm9sZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3JldmVyc2VfZm9sZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vaW5zZXJ0ZXJfYWxnb3JpdGhtLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFNlcXVlbmNlCi0gICAgLCB0eXBlbmFtZSBJbnNlcnRlcgotICAgID4KLXN0cnVjdCBjb3B5X2ltcGwKLSAgICA6IGZvbGQ8IAotICAgICAgICAgIFNlcXVlbmNlCi0gICAgICAgICwgdHlwZW5hbWUgSW5zZXJ0ZXI6OnN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgSW5zZXJ0ZXI6Om9wZXJhdGlvbgotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFNlcXVlbmNlCi0gICAgLCB0eXBlbmFtZSBJbnNlcnRlcgotICAgID4KLXN0cnVjdCByZXZlcnNlX2NvcHlfaW1wbAotICAgIDogcmV2ZXJzZV9mb2xkPAotICAgICAgICAgIFNlcXVlbmNlCi0gICAgICAgICwgdHlwZW5hbWUgSW5zZXJ0ZXI6OnN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgSW5zZXJ0ZXI6Om9wZXJhdGlvbgotICAgICAgICA+Ci17Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotTkROQk9PU1RfTVBMX0FVWF9JTlNFUlRFUl9BTEdPUklUSE1fREVGKDIsIGNvcHkpCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ09QWV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2RlcmVmLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2RlcmVmLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTVmYzJhYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9kZXJlZi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0RFUkVGX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfREVSRUZfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDItMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBkZXJlZi5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL21zdmNfdHlwZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbmFfc3BlYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX3N1cHBvcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9ldGkuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKEl0ZXJhdG9yKQotICAgID4KLXN0cnVjdCBkZXJlZgotewotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTVNWQ183MF9FVElfQlVHKQotICAgIHR5cGVkZWYgdHlwZW5hbWUgSXRlcmF0b3I6OnR5cGUgdHlwZTsKLSNlbHNlCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6Om1zdmNfdHlwZTxJdGVyYXRvcj46OnR5cGUgdHlwZTsKLSNlbmRpZgotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMSxkZXJlZiwoSXRlcmF0b3IpKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDEsIGRlcmVmKQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0RFUkVGX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvZGlzdGFuY2UuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvZGlzdGFuY2UuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNTM2MGY0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2Rpc3RhbmNlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDc4ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfRElTVEFOQ0VfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9ESVNUQU5DRV9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGRpc3RhbmNlLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2Rpc3RhbmNlX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2l0ZXJfZm9sZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2l0ZXJhdG9yX3JhbmdlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbG9uZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL25leHQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC90YWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hcHBseV93cmFwLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9tc3ZjX2V0aV9iYXNlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy92YWx1ZV93a25kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uYV9zcGVjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvZm9yd2FyZGluZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3N0YXRpY19jb25zdGFudC5ocHA+Ci0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLS8vIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gZm9yIGZvcndhcmQvYmlkaXJlY3Rpb25hbCBpdGVyYXRvcnMKLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZGlzdGFuY2VfaW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBGaXJzdCwgdHlwZW5hbWUgTGFzdCA+IHN0cnVjdCBhcHBseQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fTkVTVEVEX0ZPUldBUkRJTkcpCi0gICAgICAgIDogYXV4Ojptc3ZjX2V0aV9iYXNlPCB0eXBlbmFtZSBpdGVyX2ZvbGQ8Ci0gICAgICAgICAgICAgIGl0ZXJhdG9yX3JhbmdlPEZpcnN0LExhc3Q+Ci0gICAgICAgICAgICAsIG1wbDo6bG9uZ188MD4KLSAgICAgICAgICAgICwgbmV4dDw+Ci0gICAgICAgICAgICA+Ojp0eXBlID4KLSAgICB7Ci0jZWxzZQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyX2ZvbGQ8Ci0gICAgICAgICAgICAgIGl0ZXJhdG9yX3JhbmdlPEZpcnN0LExhc3Q+Ci0gICAgICAgICAgICAsIG1wbDo6bG9uZ188MD4KLSAgICAgICAgICAgICwgbmV4dDw+Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0gICAgICAgIAotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQobG9uZywgdmFsdWUgPQotICAgICAgICAgICAgICAoaXRlcl9mb2xkPAotICAgICAgICAgICAgICAgICAgaXRlcmF0b3JfcmFuZ2U8Rmlyc3QsTGFzdD4KLSAgICAgICAgICAgICAgICAsIG1wbDo6bG9uZ188MD4KLSAgICAgICAgICAgICAgICAsIG5leHQ8PgotICAgICAgICAgICAgICAgID46OnR5cGU6OnZhbHVlKQotICAgICAgICAgICAgKTsKLSNlbmRpZgotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oRmlyc3QpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKExhc3QpCi0gICAgPgotc3RydWN0IGRpc3RhbmNlCi0gICAgOiBkaXN0YW5jZV9pbXBsPCB0eXBlbmFtZSB0YWc8Rmlyc3Q+Ojp0eXBlID4KLSAgICAgICAgOjp0ZW1wbGF0ZSBhcHBseTxGaXJzdCwgTGFzdD4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsIGRpc3RhbmNlLCAoRmlyc3QsIExhc3QpKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDIsIGRpc3RhbmNlKQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0RJU1RBTkNFX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvZGlzdGFuY2VfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2Rpc3RhbmNlX2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg1M2U5YjAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvZGlzdGFuY2VfZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfRElTVEFOQ0VfRldEX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfRElTVEFOQ0VfRldEX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogZGlzdGFuY2VfZndkLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29tbW9uX25hbWVfd2tuZC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0NPTU1PTl9OQU1FX1dLTkQoZGlzdGFuY2UpCi0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgZGlzdGFuY2VfaW1wbDsKLXRlbXBsYXRlPCB0eXBlbmFtZSBGaXJzdCwgdHlwZW5hbWUgTGFzdCA+IHN0cnVjdCBkaXN0YW5jZTsKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9ESVNUQU5DRV9GV0RfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9lbXB0eV9md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvZW1wdHlfZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzQxMjgxNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9lbXB0eV9md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9FTVBUWV9GV0RfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9FTVBUWV9GV0RfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBlbXB0eV9md2QuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGVtcHR5X2ltcGw7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgU2VxdWVuY2UgPiBzdHJ1Y3QgZW1wdHk7Ci0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfRU1QVFlfRldEX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvZXF1YWxfdG8uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvZXF1YWxfdG8uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZmEwYWU3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2VxdWFsX3RvLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfRVFVQUxfVE9fSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9FUVVBTF9UT19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGVxdWFsX3RvLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jZGVmaW5lIEFVWDc3ODA3Nl9PUF9OQU1FIGVxdWFsX3RvCi0jZGVmaW5lIEFVWDc3ODA3Nl9PUF9UT0tFTiA9PQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbXBhcmlzb25fb3AuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0VRVUFMX1RPX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvZXZhbF9pZi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9ldmFsX2lmLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmMzMmZhZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9ldmFsX2lmLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfRVZBTF9JRl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0VWQUxfSUZfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBldmFsX2lmLmhwcCA2MTkyMSAyMDEwLTA1LTExIDIxOjMzOjI0WiBuZWlsZ3JvdmVzICQKLS8vICREYXRlOiAyMDEwLTA1LTExIDE0OjMzOjI0IC0wNzAwIChUdWUsIDExIE1heSAyMDEwKSAkCi0vLyAkUmV2aXNpb246IDYxOTIxICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbmFfc3BlYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX3N1cHBvcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9tc3ZjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvZ2NjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvd29ya2Fyb3VuZC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oQykKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oRjEpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKEYyKQotICAgID4KLXN0cnVjdCBldmFsX2lmCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKSBcCi0gICAgIHx8ICggTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NUExfQ0ZHX0dDQywgPj0gMHgwMzAwKSBcCi0gICAgICAgICYmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVBMX0NGR19HQ0MsIE5ETkJPT1NUX1RFU1RFRF9BVCgweDAzMDQpKSBcCi0gICAgICAgICkKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGlmXzxDLEYxLEYyPjo6dHlwZSBmXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGZfOjp0eXBlIHR5cGU7Ci0jZWxzZQotICAgIDogaWZfPEMsRjEsRjI+Ojp0eXBlCi17Ci0jZW5kaWYKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDMsZXZhbF9pZiwoQyxGMSxGMikpCi19OwotCi0vLyAoYWxtb3N0KSBjb3B5ICYgcGFzdGUgaW4gb3JkZXIgdG8gc2F2ZSBvbmUgbW9yZSAKLS8vIHJlY3Vyc2l2ZWx5IG5lc3RlZCB0ZW1wbGF0ZSBpbnN0YW50aWF0aW9uIHRvIHVzZXIKLXRlbXBsYXRlPAotICAgICAgYm9vbCBDCi0gICAgLCB0eXBlbmFtZSBGMQotICAgICwgdHlwZW5hbWUgRjIKLSAgICA+Ci1zdHJ1Y3QgZXZhbF9pZl9jCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKSBcCi0gICAgIHx8ICggTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NUExfQ0ZHX0dDQywgPj0gMHgwMzAwKSBcCi0gICAgICAgICYmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVBMX0NGR19HQ0MsIE5ETkJPT1NUX1RFU1RFRF9BVCgweDAzMDQpKSBcCi0gICAgICAgICkKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGlmX2M8QyxGMSxGMj46OnR5cGUgZl87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBmXzo6dHlwZSB0eXBlOwotI2Vsc2UKLSAgICA6IGlmX2M8QyxGMSxGMj46OnR5cGUKLXsKLSNlbmRpZgotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDMsIGV2YWxfaWYpCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfRVZBTF9JRl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2ZpbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvZmluZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAxMWMxZWEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvZmluZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0ZJTkRfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9GSU5EX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDIKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogZmluZC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9maW5kX2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvc2FtZV9hcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbmFfc3BlYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX3N1cHBvcnQuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFNlcXVlbmNlKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUKQotICAgID4KLXN0cnVjdCBmaW5kCi0gICAgOiBmaW5kX2lmPCBTZXF1ZW5jZSxzYW1lX2FzPFQ+ID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIsZmluZCwoU2VxdWVuY2UsVCkpCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoMiwgZmluZCkKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9GSU5EX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvZmluZF9pZi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9maW5kX2lmLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzJmM2FhZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9maW5kX2lmLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfRklORF9JRl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0ZJTkRfSUZfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBmaW5kX2lmLmhwcCA0OTI3NCAyMDA4LTEwLTExIDA3OjIyOjA1WiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTEgMDA6MjI6MDUgLTA3MDAgKFNhdCwgMTEgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNzQgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vZmluZF9pZl9wcmVkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXJnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaXRlcl9mb2xkX2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb21tb25fbmFtZV93a25kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uYV9zcGVjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfc3VwcG9ydC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0NPTU1PTl9OQU1FX1dLTkQoZmluZF9pZikKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFNlcXVlbmNlKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShQcmVkaWNhdGUpCi0gICAgPgotc3RydWN0IGZpbmRfaWYKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJfZm9sZF9pZjwKLSAgICAgICAgICBTZXF1ZW5jZQotICAgICAgICAsIHZvaWQKLSAgICAgICAgLCBtcGw6OmFyZzwxPiAvLyBpZ25vcmUKLSAgICAgICAgLCBwcm90ZWN0PCBhdXg6OmZpbmRfaWZfcHJlZDxQcmVkaWNhdGU+ID4KLSAgICAgICAgPjo6dHlwZSByZXN1bHRfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZWNvbmQ8cmVzdWx0Xz46OnR5cGUgdHlwZTsKLQotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMixmaW5kX2lmLChTZXF1ZW5jZSxQcmVkaWNhdGUpKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDIsZmluZF9pZikKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9GSU5EX0lGX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvZm9sZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9mb2xkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzRlYTU2MS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9mb2xkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfRk9MRF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0ZPTERfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8gQ29weXJpZ2h0IERhdmlkIEFicmFoYW1zIDIwMDEtMjAwMgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBmb2xkLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2JlZ2luX2VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL08xX3NpemUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2ZvbGRfaW1wbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbmFfc3BlYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX3N1cHBvcnQuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFNlcXVlbmNlKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShTdGF0ZSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oRm9yd2FyZE9wKQotICAgID4KLXN0cnVjdCBmb2xkCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OmZvbGRfaW1wbDwKLSAgICAgICAgICA6Om5kbmJvb3N0OjptcGw6Ok8xX3NpemU8U2VxdWVuY2U+Ojp2YWx1ZQotICAgICAgICAsIHR5cGVuYW1lIGJlZ2luPFNlcXVlbmNlPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGVuZDxTZXF1ZW5jZT46OnR5cGUKLSAgICAgICAgLCBTdGF0ZQotICAgICAgICAsIEZvcndhcmRPcAotICAgICAgICA+OjpzdGF0ZSB0eXBlOwotCi0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgzLGZvbGQsKFNlcXVlbmNlLFN0YXRlLEZvcndhcmRPcCkpCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoMywgZm9sZCkKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9GT0xEX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvZm9yX2VhY2guaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvZm9yX2VhY2guaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYjcyNjMyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2Zvcl9lYWNoLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExNiArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0ZPUl9FQUNIX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfRk9SX0VBQ0hfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwOAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBmb3JfZWFjaC5ocHAgNTU2NDggMjAwOS0wOC0xOCAwNToxNjo1M1ogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA5LTA4LTE3IDIyOjE2OjUzIC0wNzAwIChNb24sIDE3IEF1ZyAyMDA5KSAkCi0vLyAkUmV2aXNpb246IDU1NjQ4ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pc19zZXF1ZW5jZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2JlZ2luX2VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2FwcGx5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYm9vbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL25leHRfcHJpb3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9kZXJlZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lkZW50aXR5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy91bndyYXAuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2FtZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdXRpbGl0eS92YWx1ZV9pbml0LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgYm9vbCBkb25lID0gdHJ1ZSA+Ci1zdHJ1Y3QgZm9yX2VhY2hfaW1wbAotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgICAgICwgdHlwZW5hbWUgTGFzdEl0ZXJhdG9yCi0gICAgICAgICwgdHlwZW5hbWUgVHJhbnNmb3JtRnVuYwotICAgICAgICAsIHR5cGVuYW1lIEYKLSAgICAgICAgPgotICAgIHN0YXRpYyB2b2lkIGV4ZWN1dGUoCi0gICAgICAgICAgSXRlcmF0b3IqCi0gICAgICAgICwgTGFzdEl0ZXJhdG9yKgotICAgICAgICAsIFRyYW5zZm9ybUZ1bmMqCi0gICAgICAgICwgRgotICAgICAgICApCi0gICAgewotICAgIH0KLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmb3JfZWFjaF9pbXBsPGZhbHNlPgotewotICAgIHRlbXBsYXRlPAotICAgICAgICAgIHR5cGVuYW1lIEl0ZXJhdG9yCi0gICAgICAgICwgdHlwZW5hbWUgTGFzdEl0ZXJhdG9yCi0gICAgICAgICwgdHlwZW5hbWUgVHJhbnNmb3JtRnVuYwotICAgICAgICAsIHR5cGVuYW1lIEYKLSAgICAgICAgPgotICAgIHN0YXRpYyB2b2lkIGV4ZWN1dGUoCi0gICAgICAgICAgSXRlcmF0b3IqCi0gICAgICAgICwgTGFzdEl0ZXJhdG9yKgotICAgICAgICAsIFRyYW5zZm9ybUZ1bmMqIAotICAgICAgICAsIEYgZgotICAgICAgICApCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGRlcmVmPEl0ZXJhdG9yPjo6dHlwZSBpdGVtOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFwcGx5MTxUcmFuc2Zvcm1GdW5jLGl0ZW0+Ojp0eXBlIGFyZzsKLSAgICAKLSAgICAgICAgLy8gZHdhIDIwMDIvOS8xMCAtLSBtYWtlIHN1cmUgbm90IHRvIGludm9rZSB1bmRlZmluZWQgYmVoYXZpb3IKLSAgICAgICAgLy8gd2hlbiB3ZSBwYXNzIGFyZy4KLSAgICAgICAgdmFsdWVfaW5pdGlhbGl6ZWQ8YXJnPiB4OwotICAgICAgICBhdXg6OnVud3JhcChmLCAwKShuZG5ib29zdDo6Z2V0KHgpKTsKLSAgICAgICAgCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PEl0ZXJhdG9yPjo6dHlwZSBpdGVyOwotICAgICAgICBmb3JfZWFjaF9pbXBsPG5kbmJvb3N0Ojppc19zYW1lPGl0ZXIsTGFzdEl0ZXJhdG9yPjo6dmFsdWU+Ci0gICAgICAgICAgICA6OmV4ZWN1dGUoIHN0YXRpY19jYXN0PGl0ZXIqPigwKSwgc3RhdGljX2Nhc3Q8TGFzdEl0ZXJhdG9yKj4oMCksIHN0YXRpY19jYXN0PFRyYW5zZm9ybUZ1bmMqPigwKSwgZik7Ci0gICAgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLS8vIGFndXJ0LCAxNy9tYXIvMDI6IHBvaW50ZXIgZGVmYXVsdCBwYXJhbWV0ZXJzIGFyZSBuZWNlc3NhcnkgdG8gd29ya2Fyb3VuZCAKLS8vIE1TVkMgNi41IGZ1bmN0aW9uIHRlbXBsYXRlIHNpZ25hdHVyZSdzIG1hbmdsaW5nIGJ1ZwotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBTZXF1ZW5jZQotICAgICwgdHlwZW5hbWUgVHJhbnNmb3JtT3AKLSAgICAsIHR5cGVuYW1lIEYKLSAgICA+Ci1pbmxpbmUKLXZvaWQgZm9yX2VhY2goRiBmLCBTZXF1ZW5jZSogPSAwLCBUcmFuc2Zvcm1PcCogPSAwKQotewotICAgIE5ETkJPT1NUX01QTF9BU1NFUlQoKCBpc19zZXF1ZW5jZTxTZXF1ZW5jZT4gKSk7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJlZ2luPFNlcXVlbmNlPjo6dHlwZSBmaXJzdDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGVuZDxTZXF1ZW5jZT46OnR5cGUgbGFzdDsKLQotICAgIGF1eDo6Zm9yX2VhY2hfaW1wbDwgbmRuYm9vc3Q6OmlzX3NhbWU8Zmlyc3QsbGFzdD46OnZhbHVlID4KLSAgICAgICAgOjpleGVjdXRlKHN0YXRpY19jYXN0PGZpcnN0Kj4oMCksIHN0YXRpY19jYXN0PGxhc3QqPigwKSwgc3RhdGljX2Nhc3Q8VHJhbnNmb3JtT3AqPigwKSwgZik7Ci19Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgU2VxdWVuY2UKLSAgICAsIHR5cGVuYW1lIEYKLSAgICA+Ci1pbmxpbmUKLXZvaWQgZm9yX2VhY2goRiBmLCBTZXF1ZW5jZSogPSAwKQotewotICAgIGZvcl9lYWNoPFNlcXVlbmNlLCBpZGVudGl0eTw+ID4oZik7Ci19Ci0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfRk9SX0VBQ0hfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9mcm9udF9md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvZnJvbnRfZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzQ3YzZlZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9mcm9udF9md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9GUk9OVF9GV0RfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9GUk9OVF9GV0RfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBmcm9udF9md2QuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IGZyb250X2ltcGw7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgU2VxdWVuY2UgPiBzdHJ1Y3QgZnJvbnQ7Ci0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfRlJPTlRfRldEX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvZnJvbnRfaW5zZXJ0ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvZnJvbnRfaW5zZXJ0ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNTA2MWM3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2Zyb250X2luc2VydGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfRlJPTlRfSU5TRVJURVJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9GUk9OVF9JTlNFUlRFUl9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMy0yMDA0Ci0vLyBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwMy0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGZyb250X2luc2VydGVyLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3B1c2hfZnJvbnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pbnNlcnRlci5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFNlcXVlbmNlCi0gICAgPgotc3RydWN0IGZyb250X2luc2VydGVyCi0gICAgOiBpbnNlcnRlcjwgU2VxdWVuY2UscHVzaF9mcm9udDw+ID4KLXsKLX07Ci0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfRlJPTlRfSU5TRVJURVJfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9ncmVhdGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2dyZWF0ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZDYxNDQxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2dyZWF0ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9HUkVBVEVSX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfR1JFQVRFUl9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGdyZWF0ZXIuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNkZWZpbmUgQVVYNzc4MDc2X09QX05BTUUgZ3JlYXRlcgotI2RlZmluZSBBVVg3NzgwNzZfT1BfVE9LRU4gPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbXBhcmlzb25fb3AuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0dSRUFURVJfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9ncmVhdGVyX2VxdWFsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2dyZWF0ZXJfZXF1YWwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZDBhOGU5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2dyZWF0ZXJfZXF1YWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9HUkVBVEVSX0VRVUFMX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfR1JFQVRFUl9FUVVBTF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGdyZWF0ZXJfZXF1YWwuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNkZWZpbmUgQVVYNzc4MDc2X09QX05BTUUgZ3JlYXRlcl9lcXVhbAotI2RlZmluZSBBVVg3NzgwNzZfT1BfVE9LRU4gPj0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb21wYXJpc29uX29wLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9HUkVBVEVSX0VRVUFMX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvaGFzX3h4eC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9oYXNfeHh4LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzg4NTYwOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9oYXNfeHh4LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY0MCArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0hBU19YWFhfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9IQVNfWFhYX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAyLTIwMDYKLS8vIENvcHlyaWdodCBEYXZpZCBBYnJhaGFtcyAyMDAyLTIwMDMKLS8vIENvcHlyaWdodCBEYW5pZWwgV2Fsa2VyIDIwMDcKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogaGFzX3h4eC5ocHAgNjQxNDYgMjAxMC0wNy0xOSAwMDo0NjozMVogZGp3YWxrZXIgJAotLy8gJERhdGU6IDIwMTAtMDctMTggMTc6NDY6MzEgLTA3MDAgKFN1biwgMTggSnVsIDIwMTApICQKLS8vICRSZXZpc2lvbjogNjQxNDYgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2Jvb2wuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL25hX3NwZWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3R5cGVfd3JhcHBlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8veWVzX25vLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvZ2NjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvaGFzX3h4eC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL21zdmNfdHlwZW5hbWUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9tc3ZjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvc3RhdGljX2NvbnN0YW50LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJyYXkvZWxlbS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW1fcGFyYW1zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX3RyYWlsaW5nX3BhcmFtcy5ocHA+Ci0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKCBfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU5MCkgKQotIyBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jbGFzcy5ocHA+Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fSEFTX1hYWCkKLQotIyAgIGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkKLQotLy8gYWd1cnQsIDExL3NlcC8wMjogTVNWQy1zcGVjaWZpYyB2ZXJzaW9uICg8IDcuMSksIGJhc2VkIG9uIGEgVVNFTkVUIAotLy8gbmV3c2dyb3VwJ3MgcG9zdGluZyBieSBKb2huIE1hZHNlbiAoY29tcC5sYW5nLmMrKy5tb2RlcmF0ZWQsIAotLy8gMTk5OS0xMS0xMiAxOToxNzowNiBHTVQpOyB0aGUgY29kZSBpcyBfbm90XyBzdGFuZGFyZC1jb25mb3JtaW5nLCBidXQgCi0vLyBpdCB3b3JrcyB3YXkgbW9yZSByZWxpYWJseSB0aGFuIHRoZSBTRklOQUUtYmFzZWQgaW1wbGVtZW50YXRpb24KLQotLy8gTW9kaWZpZWQgZHdhIDgvT2N0LzAyIHRvIGhhbmRsZSByZWZlcmVuY2UgdHlwZXMuCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWYuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9ib29sLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi1zdHJ1Y3QgaGFzX3h4eF90YWc7Ci0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsID09IDEzMDApCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVSA+IHN0cnVjdCBtc3ZjX2luY29tcGxldGVfYXJyYXkKLXsKLSAgICB0eXBlZGVmIGNoYXIgKCZ0eXBlKVtzaXplb2YoVSkgKyAxXTsKLX07Ci0jZW5kaWYKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotc3RydWN0IG1zdmNfaXNfaW5jb21wbGV0ZQotewotICAgIC8vIE1TVkMgaXMgY2FwYWJsZSBvZiBzb21lIGtpbmRzIG9mIFNGSU5BRS4gIElmIFUgaXMgYW4gaW5jb21wbGV0ZQotICAgIC8vIHR5cGUsIGl0IHdvbid0IHBpY2sgdGhlIHNlY29uZCBvdmVybG9hZAotICAgIHN0YXRpYyBjaGFyIHRlc3RlciguLi4pOwotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA9PSAxMzAwKQotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVID4KLSAgICBzdGF0aWMgdHlwZW5hbWUgbXN2Y19pbmNvbXBsZXRlX2FycmF5PFU+Ojp0eXBlIHRlc3Rlcih0eXBlX3dyYXBwZXI8VT4pOwotI2Vsc2UKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVSA+Ci0gICAgc3RhdGljIGNoYXIgKCYgdGVzdGVyKHR5cGVfd3JhcHBlcjxVPikgKVtzaXplb2YoVSkrMV07Ci0jZW5kaWYgCi0gICAgCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gCi0gICAgICAgICAgc2l6ZW9mKHRlc3Rlcih0eXBlX3dyYXBwZXI8VD4oKSkpID09IDEKLSAgICAgICAgKTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBtc3ZjX2lzX2luY29tcGxldGU8aW50PgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGZhbHNlKTsKLX07Ci0KLX19fQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9IQVNfWFhYX1RSQUlUX05BTUVEX0RFRl8odHJhaXQsIG5hbWUsIGRlZmF1bHRfKSBcCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgbmFtZSA9IDo6bmRuYm9vc3Q6Om1wbDo6YXV4OjpoYXNfeHh4X3RhZyA+IFwKLXN0cnVjdCBORE5CT09TVF9QUF9DQVQodHJhaXQsX2ltcGwpIDogVCBcCi17IFwKLSAgICBzdGF0aWMgbmRuYm9vc3Q6Om1wbDo6YXV4Ojpub190YWcgXAotICAgIHRlc3Qodm9pZCgqKSg6Om5kbmJvb3N0OjptcGw6OmF1eDo6aGFzX3h4eF90YWcpKTsgXAotICAgIFwKLSAgICBzdGF0aWMgbmRuYm9vc3Q6Om1wbDo6YXV4Ojp5ZXNfdGFnIHRlc3QoLi4uKTsgXAotICAgIFwKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBcCi0gICAgICAgICAgc2l6ZW9mKHRlc3Qoc3RhdGljX2Nhc3Q8dm9pZCgqKShuYW1lKT4oMCkpKSBcCi0gICAgICAgICAgICAhPSBzaXplb2YobmRuYm9vc3Q6Om1wbDo6YXV4Ojpub190YWcpIFwKLSAgICAgICAgKTsgXAotICAgIHR5cGVkZWYgbmRuYm9vc3Q6Om1wbDo6Ym9vbF88dmFsdWU+IHR5cGU7IFwKLX07IFwKLVwKLXRlbXBsYXRlPCB0eXBlbmFtZSBULCB0eXBlbmFtZSBmYWxsYmFja18gPSBuZG5ib29zdDo6bXBsOjpib29sXzxkZWZhdWx0Xz4gPiBcCi1zdHJ1Y3QgdHJhaXQgXAotICAgIDogbmRuYm9vc3Q6Om1wbDo6aWZfYzwgXAotICAgICAgICAgIG5kbmJvb3N0OjptcGw6OmF1eDo6bXN2Y19pc19pbmNvbXBsZXRlPFQ+Ojp2YWx1ZSBcCi0gICAgICAgICwgbmRuYm9vc3Q6Om1wbDo6Ym9vbF88ZmFsc2U+IFwKLSAgICAgICAgLCBORE5CT09TVF9QUF9DQVQodHJhaXQsX2ltcGwpPFQ+IFwKLSAgICAgICAgPjo6dHlwZSBcCi17IFwKLX07IFwKLVwKLU5ETkJPT1NUX01QTF9BVVhfSEFTX1hYWF9UUkFJVF9TUEVDKHRyYWl0LCB2b2lkKSBcCi1ORE5CT09TVF9NUExfQVVYX0hBU19YWFhfVFJBSVRfU1BFQyh0cmFpdCwgYm9vbCkgXAotTkROQk9PU1RfTVBMX0FVWF9IQVNfWFhYX1RSQUlUX1NQRUModHJhaXQsIGNoYXIpIFwKLU5ETkJPT1NUX01QTF9BVVhfSEFTX1hYWF9UUkFJVF9TUEVDKHRyYWl0LCBzaWduZWQgY2hhcikgXAotTkROQk9PU1RfTVBMX0FVWF9IQVNfWFhYX1RSQUlUX1NQRUModHJhaXQsIHVuc2lnbmVkIGNoYXIpIFwKLU5ETkJPT1NUX01QTF9BVVhfSEFTX1hYWF9UUkFJVF9TUEVDKHRyYWl0LCBzaWduZWQgc2hvcnQpIFwKLU5ETkJPT1NUX01QTF9BVVhfSEFTX1hYWF9UUkFJVF9TUEVDKHRyYWl0LCB1bnNpZ25lZCBzaG9ydCkgXAotTkROQk9PU1RfTVBMX0FVWF9IQVNfWFhYX1RSQUlUX1NQRUModHJhaXQsIHNpZ25lZCBpbnQpIFwKLU5ETkJPT1NUX01QTF9BVVhfSEFTX1hYWF9UUkFJVF9TUEVDKHRyYWl0LCB1bnNpZ25lZCBpbnQpIFwKLU5ETkJPT1NUX01QTF9BVVhfSEFTX1hYWF9UUkFJVF9TUEVDKHRyYWl0LCBzaWduZWQgbG9uZykgXAotTkROQk9PU1RfTVBMX0FVWF9IQVNfWFhYX1RSQUlUX1NQRUModHJhaXQsIHVuc2lnbmVkIGxvbmcpIFwKLU5ETkJPT1NUX01QTF9BVVhfSEFTX1hYWF9UUkFJVF9TUEVDKHRyYWl0LCBmbG9hdCkgXAotTkROQk9PU1RfTVBMX0FVWF9IQVNfWFhYX1RSQUlUX1NQRUModHJhaXQsIGRvdWJsZSkgXAotTkROQk9PU1RfTVBMX0FVWF9IQVNfWFhYX1RSQUlUX1NQRUModHJhaXQsIGxvbmcgZG91YmxlKSBcCi0vKiovCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9IQVNfWFhYX1RSQUlUX1NQRUModHJhaXQsIFQpIFwKLXRlbXBsYXRlPD4gc3RydWN0IHRyYWl0PFQ+IFwKLXsgXAotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGZhbHNlKTsgXAotICAgIHR5cGVkZWYgbmRuYm9vc3Q6Om1wbDo6Ym9vbF88ZmFsc2U+IHR5cGU7IFwKLX07IFwKLS8qKi8KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0lOVFJJTlNJQ19XQ0hBUl9UKQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfSEFTX1hYWF9UUkFJVF9OQU1FRF9ERUYodHJhaXQsIG5hbWUsIHVudXNlZCkgXAotICAgIE5ETkJPT1NUX01QTF9IQVNfWFhYX1RSQUlUX05BTUVEX0RFRl8odHJhaXQsIG5hbWUsIHVudXNlZCkgXAotICAgIE5ETkJPT1NUX01QTF9BVVhfSEFTX1hYWF9UUkFJVF9TUEVDKHRyYWl0LCB3Y2hhcl90KSBcCi0vKiovCi0jZWxzZQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfSEFTX1hYWF9UUkFJVF9OQU1FRF9ERUYodHJhaXQsIG5hbWUsIHVudXNlZCkgXAotICAgIE5ETkJPT1NUX01QTF9IQVNfWFhYX1RSQUlUX05BTUVEX0RFRl8odHJhaXQsIG5hbWUsIHVudXNlZCkgXAotLyoqLwotI2VuZGlmCi0KLQotLy8gU0ZJTkFFLWJhc2VkIGltcGxlbWVudGF0aW9ucyBiZWxvdyBhcmUgZGVyaXZlZCBmcm9tIGEgVVNFTkVUIG5ld3Nncm91cCdzIAotLy8gcG9zdGluZyBieSBSYW5pIFNoYXJvbmkgKGNvbXAubGFuZy5jKysubW9kZXJhdGVkLCAyMDAyLTAzLTE3IDA3OjQ1OjA5IFBTVCkKLQotIyAgIGVsaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCBORE5CT09TVF9URVNURURfQVQoMTQwMCkpIFwKLSAgICAgIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoX19JQk1DUFBfXywgPD0gNzAwKQotCi0vLyBNU1ZDIDcuMSsgJiBWQUNQUAotCi0vLyBhZ3VydCwgMTUvanVuLzA1OiByZXBsYWNlIG92ZXJsb2FkLWJhc2VkIFNGSU5BRSBpbXBsZW1lbnRhdGlvbiB3aXRoIFNGSU5BRQotLy8gYXBwbGllZCB0byBwYXJ0aWFsIHNwZWNpYWxpemF0aW9uIHRvIGZpeCBzb21lIGFwcGFyZW50bHkgcmFuZG9tIGZhaWx1cmVzIAotLy8gKHRoYW5rcyB0byBEYW5pZWwgV2FsbGluIGZvciByZXNlYXJjaGluZyB0aGlzISkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfSEFTX1hYWF9UUkFJVF9OQU1FRF9ERUYodHJhaXQsIG5hbWUsIGRlZmF1bHRfKSBcCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IFwKLXN0cnVjdCBORE5CT09TVF9QUF9DQVQodHJhaXQsIF9tc3ZjX3NmaW5hZV9oZWxwZXIpIFwKLXsgXAotICAgIHR5cGVkZWYgdm9pZCB0eXBlOyBcCi19O1wKLVwKLXRlbXBsYXRlPCB0eXBlbmFtZSBULCB0eXBlbmFtZSBVID0gdm9pZCA+IFwKLXN0cnVjdCBORE5CT09TVF9QUF9DQVQodHJhaXQsX2ltcGxfKSBcCi17IFwKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBmYWxzZSk7IFwKLSAgICB0eXBlZGVmIG5kbmJvb3N0OjptcGw6OmJvb2xfPHZhbHVlPiB0eXBlOyBcCi19OyBcCi1cCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IFwKLXN0cnVjdCBORE5CT09TVF9QUF9DQVQodHJhaXQsX2ltcGxfKTwgXAotICAgICAgVCBcCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9QUF9DQVQodHJhaXQsIF9tc3ZjX3NmaW5hZV9oZWxwZXIpPCB0eXBlbmFtZSBUOjpuYW1lID46OnR5cGUgXAotICAgID4gXAoteyBcCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IFwKLSAgICB0eXBlZGVmIG5kbmJvb3N0OjptcGw6OmJvb2xfPHZhbHVlPiB0eXBlOyBcCi19OyBcCi1cCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgZmFsbGJhY2tfID0gbmRuYm9vc3Q6Om1wbDo6Ym9vbF88ZGVmYXVsdF8+ID4gXAotc3RydWN0IHRyYWl0IFwKLSAgICA6IE5ETkJPT1NUX1BQX0NBVCh0cmFpdCxfaW1wbF8pPFQ+IFwKLXsgXAotfTsgXAotLyoqLwotCi0jICAgZWxpZiBORE5CT09TVF9XT1JLQVJPVU5EKCBfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU5MCkgKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9IQVNfWFhYX1RSQUlUX05BTUVEX0JDQl9ERUYodHJhaXQsIHRyYWl0X3Rlc3RlciwgbmFtZSwgZGVmYXVsdF8pIFwKLXRlbXBsYXRlPCB0eXBlbmFtZSBULCBib29sIElTX0NMQVNTID4gXAotc3RydWN0IHRyYWl0X3Rlc3RlciBcCi17IFwKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoIGJvb2wsICB2YWx1ZSA9IGZhbHNlICk7IFwKLX07IFwKLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gXAotc3RydWN0IHRyYWl0X3Rlc3RlcjwgVCwgdHJ1ZSA+IFwKLXsgXAotICAgIHN0cnVjdCB0cmFpdF90ZXN0ZXJfaW1wbCBcCi0gICAgeyBcCi0gICAgICAgIHRlbXBsYXRlIDwgY2xhc3MgVSA+IFwKLSAgICAgICAgc3RhdGljIGludCAgcmVzb2x2ZSggbmRuYm9vc3Q6Om1wbDo6YXV4Ojp0eXBlX3dyYXBwZXI8VT4gY29uc3Qgdm9sYXRpbGUgKiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAsIG5kbmJvb3N0OjptcGw6OmF1eDo6dHlwZV93cmFwcGVyPHR5cGVuYW1lIFU6Om5hbWUgPiogPSAwICk7IFwKLSAgICAgICAgc3RhdGljIGNoYXIgcmVzb2x2ZSggLi4uICk7IFwKLSAgICB9OyBcCi0gICAgdHlwZWRlZiBuZG5ib29zdDo6bXBsOjphdXg6OnR5cGVfd3JhcHBlcjxUPiB0XzsgXAotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCggYm9vbCwgdmFsdWUgPSAoIHNpemVvZiggdHJhaXRfdGVzdGVyX2ltcGw6OnJlc29sdmUoIHN0YXRpY19jYXN0PCB0XyAqID4oMCkgKSApID09IHNpemVvZihpbnQpICkgKTsgXAotfTsgXAotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHR5cGVuYW1lIGZhbGxiYWNrXyA9IG5kbmJvb3N0OjptcGw6OmJvb2xfPGRlZmF1bHRfPiA+IFwKLXN0cnVjdCB0cmFpdCAgICAgICAgICAgXAoteyAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKCBib29sLCB2YWx1ZSA9ICh0cmFpdF90ZXN0ZXI8IFQsIG5kbmJvb3N0Ojppc19jbGFzczwgVCA+Ojp2YWx1ZSA+Ojp2YWx1ZSkgKTsgICAgIFwKLSAgICB0eXBlZGVmIG5kbmJvb3N0OjptcGw6OmJvb2xfPCB0cmFpdDwgVCwgZmFsbGJhY2tfID46OnZhbHVlID4gdHlwZTsgXAotfTsKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfSEFTX1hYWF9UUkFJVF9OQU1FRF9ERUYodHJhaXQsIG5hbWUsIGRlZmF1bHRfKSBcCi0gICAgTkROQk9PU1RfTVBMX0hBU19YWFhfVFJBSVRfTkFNRURfQkNCX0RFRiggdHJhaXQgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIE5ETkJPT1NUX1BQX0NBVCh0cmFpdCxfdGVzdGVyKSAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBuYW1lICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBkZWZhdWx0XyApIFwKLS8qKi8KLQotIyAgIGVsc2UgLy8gb3RoZXIgU0ZJTkFFLWNhcGFibGUgY29tcGlsZXJzCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0hBU19YWFhfVFJBSVRfTkFNRURfREVGKHRyYWl0LCBuYW1lLCBkZWZhdWx0XykgXAotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHR5cGVuYW1lIGZhbGxiYWNrXyA9IG5kbmJvb3N0OjptcGw6OmJvb2xfPGRlZmF1bHRfPiA+IFwKLXN0cnVjdCB0cmFpdCBcCi17IFwKLSAgICBzdHJ1Y3QgZ2NjXzNfMl93a25kIFwKLSAgICB7IFwKLSAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUgPiBcCi0gICAgICAgIHN0YXRpYyBuZG5ib29zdDo6bXBsOjphdXg6Onllc190YWcgdGVzdCggXAotICAgICAgICAgICAgICBuZG5ib29zdDo6bXBsOjphdXg6OnR5cGVfd3JhcHBlcjxVPiBjb25zdCB2b2xhdGlsZSogXAotICAgICAgICAgICAgLCBuZG5ib29zdDo6bXBsOjphdXg6OnR5cGVfd3JhcHBlcjxORE5CT09TVF9NU1ZDX1RZUEVOQU1FIFU6Om5hbWU+KiA9IDAgXAotICAgICAgICAgICAgKTsgXAotICAgIFwKLSAgICAgICAgc3RhdGljIG5kbmJvb3N0OjptcGw6OmF1eDo6bm9fdGFnIHRlc3QoLi4uKTsgXAotICAgIH07IFwKLSAgICBcCi0gICAgdHlwZWRlZiBuZG5ib29zdDo6bXBsOjphdXg6OnR5cGVfd3JhcHBlcjxUPiB0XzsgXAotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IFwKLSAgICAgICAgICBzaXplb2YoZ2NjXzNfMl93a25kOjp0ZXN0KHN0YXRpY19jYXN0PHRfKj4oMCkpKSBcCi0gICAgICAgICAgICA9PSBzaXplb2YobmRuYm9vc3Q6Om1wbDo6YXV4Ojp5ZXNfdGFnKSBcCi0gICAgICAgICk7IFwKLSAgICB0eXBlZGVmIG5kbmJvb3N0OjptcGw6OmJvb2xfPHZhbHVlPiB0eXBlOyBcCi19OyBcCi0vKiovCi0KLSMgICBlbmRpZiAvLyBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMDApCi0KLQotI2Vsc2UgLy8gTkROQk9PU1RfTVBMX0NGR19OT19IQVNfWFhYCi0KLS8vIHBsYWNlaG9sZGVyIGltcGxlbWVudGF0aW9uCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0hBU19YWFhfVFJBSVRfTkFNRURfREVGKHRyYWl0LCBuYW1lLCBkZWZhdWx0XykgXAotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHR5cGVuYW1lIGZhbGxiYWNrXyA9IG5kbmJvb3N0OjptcGw6OmJvb2xfPGRlZmF1bHRfPiA+IFwKLXN0cnVjdCB0cmFpdCBcCi17IFwKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBmYWxsYmFja186OnZhbHVlKTsgXAotICAgIHR5cGVkZWYgZmFsbGJhY2tfIHR5cGU7IFwKLX07IFwKLS8qKi8KLQotI2VuZGlmCi0KLSNkZWZpbmUgTkROQk9PU1RfTVBMX0hBU19YWFhfVFJBSVRfREVGKG5hbWUpIFwKLSAgICBORE5CT09TVF9NUExfSEFTX1hYWF9UUkFJVF9OQU1FRF9ERUYoTkROQk9PU1RfUFBfQ0FUKGhhc18sbmFtZSksIG5hbWUsIGZhbHNlKSBcCi0vKiovCi0KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fSEFTX1hYWF9URU1QTEFURSkKLQotLy8gQ3JlYXRlIGEgYm9vbGVhbiBNZXRhZnVuY3Rpb24gdG8gZGV0ZWN0IGEgbmVzdGVkIHRlbXBsYXRlCi0vLyBtZW1iZXIuIFRoaXMgaW1wbGVtZW50YXRpb24gaXMgYmFzZWQgb24gYSBVU0VORVQgbmV3c2dyb3VwJ3MKLS8vIHBvc3RpbmcgYnkgQWxla3NleSBHdXJ0b3ZveSAoY29tcC5sYW5nLmMrKy5tb2RlcmF0ZWQsIDIwMDItMDMtMTkpLAotLy8gUmFuaSBTaGFyb25pJ3MgVVNFTkVUIHBvc3RpbmcgY2l0ZWQgYWJvdmUsIHRoZSBub24tdGVtcGxhdGUgaGFzX3h4eAotLy8gaW1wbGVtZW50YXRpb25zIGFib3ZlLCBhbmQgZGlzY3Vzc2lvbiBvbiB0aGUgQm9vc3QgbWFpbGluZyBsaXN0LgotCi0jICAgaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0hBU19YWFhfTk9fV1JBUFBFRF9UWVBFUykKLSMgICAgIGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTQwMCkKLSMgICAgICAgZGVmaW5lIE5ETkJPT1NUX01QTF9IQVNfWFhYX05PX1dSQVBQRURfVFlQRVMgMQotIyAgICAgZW5kaWYKLSMgICBlbmRpZgotCi0jICAgaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0hBU19YWFhfTk9fRVhQTElDSVRfVEVTVF9GVU5DVElPTikKLSMgICAgIGlmIChkZWZpbmVkKE5ETkJPT1NUX05PX0VYUExJQ0lUX0ZVTkNUSU9OX1RFTVBMQVRFX0FSR1VNRU5UUykpCi0jICAgICAgIGRlZmluZSBORE5CT09TVF9NUExfSEFTX1hYWF9OT19FWFBMSUNJVF9URVNUX0ZVTkNUSU9OIDEKLSMgICAgIGVuZGlmCi0jICAgZW5kaWYKLQotIyAgIGlmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9IQVNfWFhYX05FRURTX1RFTVBMQVRFX1NGSU5BRSkKLSMgICAgIGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTQwMCkKLSMgICAgICAgZGVmaW5lIE5ETkJPT1NUX01QTF9IQVNfWFhYX05FRURTX1RFTVBMQVRFX1NGSU5BRSAxCi0jICAgICBlbmRpZgotIyAgIGVuZGlmCi0KLS8vIE5PVEU6IE1hbnkgaW50ZXJuYWwgaW1wbGVtZW50YXRpb24gbWFjcm9zIHRha2UgYSBCb29zdC5QcmVwcm9jZXNzb3IKLS8vIGFycmF5IGFyZ3VtZW50IGNhbGxlZCBhcmdzIHdoaWNoIGlzIG9mIHRoZSBmb2xsb3dpbmcgZm9ybS4KLS8vICAgICAgICAgICAoIDQsICggdHJhaXQsIG5hbWUsIG1heF9hcml0eSwgZGVmYXVsdF8gKSApCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfSU5UUk9TUEVDVElPTl9OQU1FKGFyZ3MpIFwKLSAgICAgIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9BUlJBWV9FTEVNKDAsIGFyZ3MpICwgX2ludHJvc3BlY3QpIFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfSU5UUk9TUEVDVElPTl9TVUJTVElUVVRFX05BTUUoYXJncywgbikgXAotICAgICAgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9BUlJBWV9FTEVNKDAsIGFyZ3MpICwgX3N1YnN0aXR1dGUpLCBuKSBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX0lOVFJPU1BFQ1RJT05fVEVTVF9OQU1FKGFyZ3MpIFwKLSAgICAgIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9BUlJBWV9FTEVNKDAsIGFyZ3MpICwgX3Rlc3QpIFwKLSAgICAvKiovCi0KLS8vIFRoYW5rcyB0byBHdWlsbGF1bWUgTWVscXVpb25kIGZvciBwb2ludGluZyBvdXQgdGhlIG5lZWQgZm9yIHRoZQotLy8gInN1YnN0aXR1dGUiIHRlbXBsYXRlIGFzIGFuIGFyZ3VtZW50IHRvIHRoZSBvdmVybG9hZGVkIHRlc3QKLS8vIGZ1bmN0aW9ucyB0byBnZXQgU0ZJTkFFIHRvIHdvcmsgZm9yIG1lbWJlciB0ZW1wbGF0ZXMgd2l0aCB0aGUKLS8vIGNvcnJlY3QgbmFtZSBidXQgZGlmZmVyZW50IG51bWJlciBvZiBhcmd1bWVudHMuCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX01VTFRJX1NVQlNUSVRVVEUoeiwgbiwgYXJncykgXAotICAgICAgdGVtcGxhdGU8IFwKLSAgICAgICAgICB0ZW1wbGF0ZTwgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfSU5DKG4pLCB0eXBlbmFtZSBWKSA+IGNsYXNzIFYgXAotICAgICAgID4gXAotICAgICAgc3RydWN0IE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX0lOVFJPU1BFQ1RJT05fU1VCU1RJVFVURV9OQU1FKGFyZ3MsIG4pIHsgXAotICAgICAgfTsgXAotICAgIC8qKi8KLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfSEFTX01FTUJFUl9TVUJTVElUVVRFKGFyZ3MsIHN1YnN0aXR1dGVfbWFjcm8pIFwKLSAgICAgIE5ETkJPT1NUX1BQX1JFUEVBVCggXAotICAgICAgICAgIE5ETkJPT1NUX1BQX0FSUkFZX0VMRU0oMiwgYXJncykgXAotICAgICAgICAsIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX01VTFRJX1NVQlNUSVRVVEUgXAotICAgICAgICAsIGFyZ3MgXAotICAgICAgKSBcCi0gICAgLyoqLwotCi0jICAgaWYgIU5ETkJPT1NUX01QTF9IQVNfWFhYX05PX0VYUExJQ0lUX1RFU1RfRlVOQ1RJT04KLSMgICAgIGRlZmluZSBORE5CT09TVF9NUExfSEFTX01FTUJFUl9SRUpFQ1QoYXJncywgbWVtYmVyX21hY3JvKSBcCi0gICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWID4gXAotICAgICAgICBzdGF0aWMgbmRuYm9vc3Q6Om1wbDo6YXV4Ojpub190YWcgXAotICAgICAgICBORE5CT09TVF9NUExfSEFTX01FTUJFUl9JTlRST1NQRUNUSU9OX1RFU1RfTkFNRShhcmdzKSguLi4pOyBcCi0gICAgICAvKiovCi0jICAgZWxzZQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX1JFSkVDVChhcmdzLCBtZW1iZXJfbWFjcm8pIFwKLSAgICAgICAgc3RhdGljIG5kbmJvb3N0OjptcGw6OmF1eDo6bm9fdGFnIFwKLSAgICAgICAgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfSU5UUk9TUEVDVElPTl9URVNUX05BTUUoYXJncykoLi4uKTsgXAotICAgICAgLyoqLwotIyAgIGVuZGlmCi0KLSMgICBpZiAhTkROQk9PU1RfTVBMX0hBU19YWFhfTk9fV1JBUFBFRF9UWVBFUwotIyAgICAgZGVmaW5lIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX01VTFRJX0FDQ0VQVCh6LCBuLCBhcmdzKSBcCi0gICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWID4gXAotICAgICAgICBzdGF0aWMgbmRuYm9vc3Q6Om1wbDo6YXV4Ojp5ZXNfdGFnIFwKLSAgICAgICAgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfSU5UUk9TUEVDVElPTl9URVNUX05BTUUoYXJncykoIFwKLSAgICAgICAgICAgIG5kbmJvb3N0OjptcGw6OmF1eDo6dHlwZV93cmFwcGVyPCBWID4gY29uc3Qgdm9sYXRpbGUqIFwKLSAgICAgICAgICAsIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX0lOVFJPU1BFQ1RJT05fU1VCU1RJVFVURV9OQU1FKGFyZ3MsIG4pIDwgXAotICAgICAgICAgICAgICAgIFY6OnRlbXBsYXRlIE5ETkJPT1NUX1BQX0FSUkFZX0VMRU0oMSwgYXJncykgXAotICAgICAgICAgICAgPiogPSAwIFwKLSAgICAgICAgKTsgXAotICAgICAgLyoqLwotIyAgICAgZGVmaW5lIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX0FDQ0VQVChhcmdzLCBtZW1iZXJfbWFjcm8pIFwKLSAgICAgICAgTkROQk9PU1RfUFBfUkVQRUFUKCBcCi0gICAgICAgICAgICBORE5CT09TVF9QUF9BUlJBWV9FTEVNKDIsIGFyZ3MpIFwKLSAgICAgICAgICAsIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX01VTFRJX0FDQ0VQVCBcCi0gICAgICAgICAgLCBhcmdzIFwKLSAgICAgICAgKSBcCi0gICAgICAvKiovCi0jICAgZWxzZQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX0FDQ0VQVChhcmdzLCBtZW1iZXJfbWFjcm8pIFwKLSAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFYgPiBcCi0gICAgICAgIHN0YXRpYyBuZG5ib29zdDo6bXBsOjphdXg6Onllc190YWcgXAotICAgICAgICBORE5CT09TVF9NUExfSEFTX01FTUJFUl9JTlRST1NQRUNUSU9OX1RFU1RfTkFNRShhcmdzKSggXAotICAgICAgICAgICAgViBjb25zdCB2b2xhdGlsZSogXAotICAgICAgICAgICwgbWVtYmVyX21hY3JvKGFyZ3MsIFYsIFQpKiA9IDAgXAotICAgICAgICApOyBcCi0gICAgICAvKiovCi0jICAgZW5kaWYKLQotIyAgIGlmICFORE5CT09TVF9NUExfSEFTX1hYWF9OT19FWFBMSUNJVF9URVNUX0ZVTkNUSU9OCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfVEVTVChhcmdzKSBcCi0gICAgICAgICAgc2l6ZW9mKE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX0lOVFJPU1BFQ1RJT05fVEVTVF9OQU1FKGFyZ3MpPCBVID4oMCkpIFwKLSAgICAgICAgICAgICAgPT0gc2l6ZW9mKG5kbmJvb3N0OjptcGw6OmF1eDo6eWVzX3RhZykgXAotICAgICAgLyoqLwotIyAgIGVsc2UKLSMgICAgIGlmICFORE5CT09TVF9NUExfSEFTX1hYWF9OT19XUkFQUEVEX1RZUEVTCi0jICAgICAgIGRlZmluZSBORE5CT09TVF9NUExfSEFTX01FTUJFUl9URVNUKGFyZ3MpIFwKLSAgICAgICAgICBzaXplb2YoIFwKLSAgICAgICAgICAgICAgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfSU5UUk9TUEVDVElPTl9URVNUX05BTUUoYXJncykoIFwKLSAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PCBuZG5ib29zdDo6bXBsOjphdXg6OnR5cGVfd3JhcHBlcjwgVSA+KiA+KDApIFwKLSAgICAgICAgICAgICAgKSBcCi0gICAgICAgICAgKSA9PSBzaXplb2YobmRuYm9vc3Q6Om1wbDo6YXV4Ojp5ZXNfdGFnKSBcCi0gICAgICAgIC8qKi8KLSMgICAgIGVsc2UKLSMgICAgICAgZGVmaW5lIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX1RFU1QoYXJncykgXAotICAgICAgICAgIHNpemVvZiggXAotICAgICAgICAgICAgICBORE5CT09TVF9NUExfSEFTX01FTUJFUl9JTlRST1NQRUNUSU9OX1RFU1RfTkFNRShhcmdzKSggXAotICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8IFUqID4oMCkgXAotICAgICAgICAgICAgICApIFwKLSAgICAgICAgICApID09IHNpemVvZihuZG5ib29zdDo6bXBsOjphdXg6Onllc190YWcpIFwKLSAgICAgICAgLyoqLwotIyAgICAgZW5kaWYKLSMgICBlbmRpZgotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX0lOVFJPU1BFQ1QoIFwKLSAgICAgICAgICAgICAgIGFyZ3MsIHN1YnN0aXR1dGVfbWFjcm8sIG1lbWJlcl9tYWNybyBcCi0gICAgICAgICAgICkgXAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFUgPiBcCi0gICAgICBzdHJ1Y3QgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfSU5UUk9TUEVDVElPTl9OQU1FKGFyZ3MpIHsgXAotICAgICAgICAgIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX1NVQlNUSVRVVEUoYXJncywgc3Vic3RpdHV0ZV9tYWNybykgXAotICAgICAgICAgIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX1JFSkVDVChhcmdzLCBtZW1iZXJfbWFjcm8pIFwKLSAgICAgICAgICBORE5CT09TVF9NUExfSEFTX01FTUJFUl9BQ0NFUFQoYXJncywgbWVtYmVyX21hY3JvKSBcCi0gICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKCBcCi0gICAgICAgICAgICAgIGJvb2wsIHZhbHVlID0gTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfVEVTVChhcmdzKSBcCi0gICAgICAgICAgKTsgXAotICAgICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6Om1wbDo6Ym9vbF88IHZhbHVlID4gdHlwZTsgXAotICAgICAgfTsgXAotICAgIC8qKi8KLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfSEFTX01FTUJFUl9JTVBMRU1FTlRBVElPTiggXAotICAgICAgICAgICAgICAgYXJncywgaW50cm9zcGVjdF9tYWNybywgc3Vic3RpdHV0ZV9tYWNybywgbWVtYmVyX21hY3JvIFwKLSAgICAgICAgICAgKSBcCi0gICAgICB0ZW1wbGF0ZTwgXAotICAgICAgICAgIHR5cGVuYW1lIFQgXAotICAgICAgICAsIHR5cGVuYW1lIGZhbGxiYWNrXyBcCi0gICAgICAgICAgICAgID0gbmRuYm9vc3Q6Om1wbDo6Ym9vbF88IE5ETkJPT1NUX1BQX0FSUkFZX0VMRU0oMywgYXJncykgPiBcCi0gICAgICA+IFwKLSAgICAgIGNsYXNzIE5ETkJPT1NUX1BQX0FSUkFZX0VMRU0oMCwgYXJncykgeyBcCi0gICAgICAgICAgaW50cm9zcGVjdF9tYWNybyhhcmdzLCBzdWJzdGl0dXRlX21hY3JvLCBtZW1iZXJfbWFjcm8pIFwKLSAgICAgIHB1YmxpYzogXAotICAgICAgICAgIHN0YXRpYyBjb25zdCBib29sIHZhbHVlIFwKLSAgICAgICAgICAgICAgPSBORE5CT09TVF9NUExfSEFTX01FTUJFUl9JTlRST1NQRUNUSU9OX05BTUUoYXJncyk8IFQgPjo6dmFsdWU7IFwKLSAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX0lOVFJPU1BFQ1RJT05fTkFNRShhcmdzKTwgXAotICAgICAgICAgICAgICBUIFwKLSAgICAgICAgICA+Ojp0eXBlIHR5cGU7IFwKLSAgICAgIH07IFwKLSAgICAvKiovCi0KLS8vIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX1dJVEhfRlVOQ1RJT05fU0ZJTkFFIGV4cGFuZHMgdG8gdGhlIGZ1bGwKLS8vIGltcGxlbWVudGF0aW9uIG9mIHRoZSBmdW5jdGlvbi1iYXNlZCBtZXRhZnVuY3Rpb24uIENvbXBpbGUgd2l0aCAtRQotLy8gdG8gc2VlIHRoZSBwcmVwcm9jZXNzb3Igb3V0cHV0IGZvciB0aGlzIG1hY3JvLgotIyAgIGRlZmluZSBORE5CT09TVF9NUExfSEFTX01FTUJFUl9XSVRIX0ZVTkNUSU9OX1NGSU5BRSggXAotICAgICAgICAgICAgICAgYXJncywgc3Vic3RpdHV0ZV9tYWNybywgbWVtYmVyX21hY3JvIFwKLSAgICAgICAgICAgKSBcCi0gICAgICBORE5CT09TVF9NUExfSEFTX01FTUJFUl9JTVBMRU1FTlRBVElPTiggXAotICAgICAgICAgIGFyZ3MgXAotICAgICAgICAsIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX0lOVFJPU1BFQ1QgXAotICAgICAgICAsIHN1YnN0aXR1dGVfbWFjcm8gXAotICAgICAgICAsIG1lbWJlcl9tYWNybyBcCi0gICAgICApIFwKLSAgICAvKiovCi0KLSMgICBpZiBORE5CT09TVF9NUExfSEFTX1hYWF9ORUVEU19URU1QTEFURV9TRklOQUUKLQotIyAgICAgaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0hBU19YWFhfTkVFRFNfTkFNRVNQQUNFX0xFVkVMX1NVQlNUSVRVVEUpCi0jICAgICAgIGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTQwMCkKLSMgICAgICAgICBkZWZpbmUgTkROQk9PU1RfTVBMX0hBU19YWFhfTkVFRFNfTkFNRVNQQUNFX0xFVkVMX1NVQlNUSVRVVEUgMQotIyAgICAgICBlbmRpZgotIyAgICAgZW5kaWYKLQotIyAgICAgaWYgIU5ETkJPT1NUX01QTF9IQVNfWFhYX05FRURTX05BTUVTUEFDRV9MRVZFTF9TVUJTVElUVVRFCi0jICAgICAgIGRlZmluZSBORE5CT09TVF9NUExfSEFTX01FTUJFUl9JTlRST1NQRUNUSU9OX1NVQlNUSVRVVEVfTkFNRV9XSVRIX1RFTVBMQVRFX1NGSU5BRSggXAotICAgICAgICAgICAgICAgICAgIGFyZ3MsIG4gXAotICAgICAgICAgICAgICAgKSBcCi0gICAgICAgICAgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfSU5UUk9TUEVDVElPTl9TVUJTVElUVVRFX05BTUUoYXJncywgbikgXAotICAgICAgICAvKiovCi0jICAgICBlbHNlCi0jICAgICAgIGRlZmluZSBORE5CT09TVF9NUExfSEFTX01FTUJFUl9JTlRST1NQRUNUSU9OX1NVQlNUSVRVVEVfTkFNRV9XSVRIX1RFTVBMQVRFX1NGSU5BRSggXAotICAgICAgICAgICAgICAgICAgIGFyZ3MsIG4gXAotICAgICAgICAgICAgICAgKSBcCi0gICAgICAgICAgTkROQk9PU1RfUFBfQ0FUKCBcCi0gICAgICAgICAgICAgIGJvb3N0X21wbF9oYXNfeHh4XyBcCi0gICAgICAgICAgICAsIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX0lOVFJPU1BFQ1RJT05fU1VCU1RJVFVURV9OQU1FKGFyZ3MsIG4pIFwKLSAgICAgICAgICApIFwKLSAgICAgICAgLyoqLwotIyAgICAgZW5kaWYKLQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX0lOVFJPU1BFQ1RJT05fU1VCU1RJVFVURV9UQUdfTkFNRSggXAotICAgICAgICAgICAgICAgICBhcmdzIFwKLSAgICAgICAgICAgICApIFwKLSAgICAgICAgTkROQk9PU1RfUFBfQ0FUKCBcCi0gICAgICAgICAgICBORE5CT09TVF9NUExfSEFTX01FTUJFUl9JTlRST1NQRUNUSU9OX1NVQlNUSVRVVEVfTkFNRV9XSVRIX1RFTVBMQVRFX1NGSU5BRSggXAotICAgICAgICAgICAgICAgIGFyZ3MsIDAgXAotICAgICAgICAgICAgKSBcCi0gICAgICAgICAgLCBfdGFnIFwKLSAgICAgICAgKSBcCi0gICAgICAvKiovCi0KLSMgICAgIGRlZmluZSBORE5CT09TVF9NUExfSEFTX01FTUJFUl9NVUxUSV9TVUJTVElUVVRFX1dJVEhfVEVNUExBVEVfU0ZJTkFFKCBcCi0gICAgICAgICAgICAgICAgIHosIG4sIGFyZ3MgXAotICAgICAgICAgICAgICkgXAotICAgICAgICB0ZW1wbGF0ZTwgXAotICAgICAgICAgICAgIHRlbXBsYXRlPCBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9JTkMobiksIHR5cGVuYW1lIFUpID4gY2xhc3MgVSBcCi0gICAgICAgID4gXAotICAgICAgICBzdHJ1Y3QgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfSU5UUk9TUEVDVElPTl9TVUJTVElUVVRFX05BTUVfV0lUSF9URU1QTEFURV9TRklOQUUoIFwKLSAgICAgICAgICAgICAgICBhcmdzLCBuIFwKLSAgICAgICAgICAgICAgICkgeyBcCi0gICAgICAgICAgICB0eXBlZGVmIFwKLSAgICAgICAgICAgICAgICBORE5CT09TVF9NUExfSEFTX01FTUJFUl9JTlRST1NQRUNUSU9OX1NVQlNUSVRVVEVfVEFHX05BTUUoYXJncykgXAotICAgICAgICAgICAgICAgIHR5cGU7IFwKLSAgICAgICAgfTsgXAotICAgICAgLyoqLwotCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfU1VCU1RJVFVURV9XSVRIX1RFTVBMQVRFX1NGSU5BRSggXAotICAgICAgICAgICAgICAgICBhcmdzLCBzdWJzdGl0dXRlX21hY3JvIFwKLSAgICAgICAgICAgICApIFwKLSAgICAgICAgdHlwZWRlZiB2b2lkIFwKLSAgICAgICAgICAgIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX0lOVFJPU1BFQ1RJT05fU1VCU1RJVFVURV9UQUdfTkFNRShhcmdzKTsgXAotICAgICAgICBORE5CT09TVF9QUF9SRVBFQVQoIFwKLSAgICAgICAgICAgIE5ETkJPT1NUX1BQX0FSUkFZX0VMRU0oMiwgYXJncykgXAotICAgICAgICAgICwgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfTVVMVElfU1VCU1RJVFVURV9XSVRIX1RFTVBMQVRFX1NGSU5BRSBcCi0gICAgICAgICAgLCBhcmdzIFwKLSAgICAgICAgKSBcCi0gICAgICAvKiovCi0KLSMgICAgIGRlZmluZSBORE5CT09TVF9NUExfSEFTX01FTUJFUl9SRUpFQ1RfV0lUSF9URU1QTEFURV9TRklOQUUoIFwKLSAgICAgICAgICAgICAgICAgYXJncywgbWVtYmVyX21hY3JvIFwKLSAgICAgICAgICAgICApIFwKLSAgICAgICAgdGVtcGxhdGU8IFwKLSAgICAgICAgICAgIHR5cGVuYW1lIFUgXAotICAgICAgICAgICwgdHlwZW5hbWUgViBcCi0gICAgICAgICAgICAgICAgPSBORE5CT09TVF9NUExfSEFTX01FTUJFUl9JTlRST1NQRUNUSU9OX1NVQlNUSVRVVEVfVEFHX05BTUUoYXJncykgXAotICAgICAgICA+IFwKLSAgICAgICAgc3RydWN0IE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX0lOVFJPU1BFQ1RJT05fVEVTVF9OQU1FKGFyZ3MpIHsgXAotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gZmFsc2UpOyBcCi0gICAgICAgICAgICB0eXBlZGVmIG5kbmJvb3N0OjptcGw6OmJvb2xfPCB2YWx1ZSA+IHR5cGU7IFwKLSAgICAgICAgfTsgXAotICAgICAgLyoqLwotCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfTVVMVElfQUNDRVBUX1dJVEhfVEVNUExBVEVfU0ZJTkFFKCBcCi0gICAgICAgICAgICAgICAgIHosIG4sIGFyZ3MgXAotICAgICAgICAgICAgICkgXAotICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVSA+IFwKLSAgICAgICAgc3RydWN0IE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX0lOVFJPU1BFQ1RJT05fVEVTVF9OQU1FKGFyZ3MpPCBcCi0gICAgICAgICAgICBVIFwKLSAgICAgICAgICAsIHR5cGVuYW1lIFwKLSAgICAgICAgICAgICAgICBORE5CT09TVF9NUExfSEFTX01FTUJFUl9JTlRST1NQRUNUSU9OX1NVQlNUSVRVVEVfTkFNRV9XSVRIX1RFTVBMQVRFX1NGSU5BRSggXAotICAgICAgICAgICAgICAgICAgICBhcmdzLCBuIFwKLSAgICAgICAgICAgICAgICApPCBcCi0gICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX01TVkNfVFlQRU5BTUUgVTo6TkROQk9PU1RfUFBfQVJSQVlfRUxFTSgxLCBhcmdzKTwgPiBcCi0gICAgICAgICAgICAgICAgPjo6dHlwZSBcCi0gICAgICAgID4geyBcCi0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgXAotICAgICAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6bXBsOjpib29sXzwgdmFsdWUgPiB0eXBlOyBcCi0gICAgICAgIH07IFwKLSAgICAgIC8qKi8KLQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX0FDQ0VQVF9XSVRIX1RFTVBMQVRFX1NGSU5BRSggXAotICAgICAgICAgICAgICAgICBhcmdzLCBtZW1iZXJfbWFjcm8gXAotICAgICAgICAgICAgICkgXAotICAgICAgICBORE5CT09TVF9QUF9SRVBFQVQoIFwKLSAgICAgICAgICAgIE5ETkJPT1NUX1BQX0FSUkFZX0VMRU0oMiwgYXJncykgXAotICAgICAgICAgICwgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfTVVMVElfQUNDRVBUX1dJVEhfVEVNUExBVEVfU0ZJTkFFIFwKLSAgICAgICAgICAsIGFyZ3MgXAotICAgICAgICApIFwKLSAgICAgIC8qKi8KLQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX0lOVFJPU1BFQ1RfV0lUSF9URU1QTEFURV9TRklOQUUoIFwKLSAgICAgICAgICAgICAgICAgYXJncywgc3Vic3RpdHV0ZV9tYWNybywgbWVtYmVyX21hY3JvIFwKLSAgICAgICAgICAgICApIFwKLSAgICAgICAgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfUkVKRUNUX1dJVEhfVEVNUExBVEVfU0ZJTkFFKGFyZ3MsIG1lbWJlcl9tYWNybykgXAotICAgICAgICBORE5CT09TVF9NUExfSEFTX01FTUJFUl9BQ0NFUFRfV0lUSF9URU1QTEFURV9TRklOQUUoYXJncywgbWVtYmVyX21hY3JvKSBcCi0gICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBVID4gXAotICAgICAgICBzdHJ1Y3QgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfSU5UUk9TUEVDVElPTl9OQU1FKGFyZ3MpIFwKLSAgICAgICAgICAgIDogTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfSU5UUk9TUEVDVElPTl9URVNUX05BTUUoYXJncyk8IFUgPiB7IFwKLSAgICAgICAgfTsgXAotICAgICAgLyoqLwotIAotLy8gTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfV0lUSF9URU1QTEFURV9TRklOQUUgZXhwYW5kcyB0byB0aGUgZnVsbAotLy8gaW1wbGVtZW50YXRpb24gb2YgdGhlIHRlbXBsYXRlLWJhc2VkIG1ldGFmdW5jdGlvbi4gQ29tcGlsZSB3aXRoIC1FCi0vLyB0byBzZWUgdGhlIHByZXByb2Nlc3NvciBvdXRwdXQgZm9yIHRoaXMgbWFjcm8uCi0vLwotLy8gTm90ZSB0aGF0IGlmIE5ETkJPT1NUX01QTF9IQVNfWFhYX05FRURTX05BTUVTUEFDRV9MRVZFTF9TVUJTVElUVVRFIGlzCi0vLyBkZWZpbmVkIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX1NVQlNUSVRVVEVfV0lUSF9URU1QTEFURV9TRklOQUUgbmVlZHMKLS8vIHRvIGJlIGV4cGFuZGVkIGF0IG5hbWVzcGFjZSBsZXZlbCBiZWZvcmUKLS8vIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX1dJVEhfVEVNUExBVEVfU0ZJTkFFIGNhbiBiZSB1c2VkLgotIyAgICAgZGVmaW5lIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX1dJVEhfVEVNUExBVEVfU0ZJTkFFKCBcCi0gICAgICAgICAgICAgICAgIGFyZ3MsIHN1YnN0aXR1dGVfbWFjcm8sIG1lbWJlcl9tYWNybyBcCi0gICAgICAgICAgICAgKSBcCi0gICAgICAgIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX1NVQlNUSVRVVEVfV0lUSF9URU1QTEFURV9TRklOQUUoIFwKLSAgICAgICAgICAgIGFyZ3MsIHN1YnN0aXR1dGVfbWFjcm8gXAotICAgICAgICApIFwKLSAgICAgICAgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfSU1QTEVNRU5UQVRJT04oIFwKLSAgICAgICAgICAgIGFyZ3MgXAotICAgICAgICAgICwgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfSU5UUk9TUEVDVF9XSVRIX1RFTVBMQVRFX1NGSU5BRSBcCi0gICAgICAgICAgLCBzdWJzdGl0dXRlX21hY3JvIFwKLSAgICAgICAgICAsIG1lbWJlcl9tYWNybyBcCi0gICAgICAgICkgXAotICAgICAgLyoqLwotCi0jICAgZW5kaWYgLy8gTkROQk9PU1RfTVBMX0hBU19YWFhfTkVFRFNfVEVNUExBVEVfU0ZJTkFFCi0KLS8vIE5vdGU6IEluIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIHRoZSBwYXJhbWV0ZXIgYW5kIGFjY2VzcyBtYWNyb3MKLS8vIGFyZSBubyBsb25nZXIgZXhwYW5kZWQuCi0jICAgaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTQwMCkKLSMgICAgIGRlZmluZSBORE5CT09TVF9NUExfSEFTX1hYWF9URU1QTEFURV9OQU1FRF9ERUYodHJhaXQsIG5hbWUsIGRlZmF1bHRfKSBcCi0gICAgICAgIE5ETkJPT1NUX01QTF9IQVNfTUVNQkVSX1dJVEhfRlVOQ1RJT05fU0ZJTkFFKCBcCi0gICAgICAgICAgICAoIDQsICggdHJhaXQsIG5hbWUsIE5ETkJPT1NUX01QTF9MSU1JVF9NRVRBRlVOQ1RJT05fQVJJVFksIGRlZmF1bHRfICkgKSBcCi0gICAgICAgICAgLCBORE5CT09TVF9NUExfSEFTX01FTUJFUl9URU1QTEFURV9TVUJTVElUVVRFX1BBUkFNRVRFUiBcCi0gICAgICAgICAgLCBORE5CT09TVF9NUExfSEFTX01FTUJFUl9URU1QTEFURV9BQ0NFU1MgXAotICAgICAgICApIFwKLSAgICAgIC8qKi8KLSMgICBlbHNlCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTVBMX0hBU19YWFhfVEVNUExBVEVfTkFNRURfREVGKHRyYWl0LCBuYW1lLCBkZWZhdWx0XykgXAotICAgICAgICBORE5CT09TVF9NUExfSEFTX01FTUJFUl9XSVRIX1RFTVBMQVRFX1NGSU5BRSggXAotICAgICAgICAgICAgKCA0LCAoIHRyYWl0LCBuYW1lLCBORE5CT09TVF9NUExfTElNSVRfTUVUQUZVTkNUSU9OX0FSSVRZLCBkZWZhdWx0XyApICkgXAotICAgICAgICAgICwgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfVEVNUExBVEVfU1VCU1RJVFVURV9QQVJBTUVURVIgXAotICAgICAgICAgICwgTkROQk9PU1RfTVBMX0hBU19NRU1CRVJfVEVNUExBVEVfQUNDRVNTIFwKLSAgICAgICAgKSBcCi0gICAgICAvKiovCi0jICAgZW5kaWYKLQotI2Vsc2UgLy8gTkROQk9PU1RfTVBMX0NGR19OT19IQVNfWFhYX1RFTVBMQVRFCi0KLS8vIHBsYWNlaG9sZGVyIGltcGxlbWVudGF0aW9uCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0hBU19YWFhfVEVNUExBVEVfTkFNRURfREVGKHRyYWl0LCBuYW1lLCBkZWZhdWx0XykgXAotICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQgXAotICAgICAgICAgICAgICAsIHR5cGVuYW1lIGZhbGxiYWNrXyA9IG5kbmJvb3N0OjptcGw6OmJvb2xfPCBkZWZhdWx0XyA+ID4gXAotICAgICAgc3RydWN0IHRyYWl0IHsgXAotICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGZhbGxiYWNrXzo6dmFsdWUpOyBcCi0gICAgICAgICAgdHlwZWRlZiBmYWxsYmFja18gdHlwZTsgXAotICAgICAgfTsgXAotICAgIC8qKi8KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfTk9fSEFTX1hYWF9URU1QTEFURQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9IQVNfWFhYX1RFTVBMQVRFX0RFRihuYW1lKSBcCi0gICAgICBORE5CT09TVF9NUExfSEFTX1hYWF9URU1QTEFURV9OQU1FRF9ERUYoIFwKLSAgICAgICAgICBORE5CT09TVF9QUF9DQVQoaGFzXywgbmFtZSksIG5hbWUsIGZhbHNlIFwKLSAgICAgICkgXAotICAgIC8qKi8KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9IQVNfWFhYX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvaWRlbnRpdHkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvaWRlbnRpdHkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZTkyMDdmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2lkZW50aXR5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfSURFTlRJVFlfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9JREVOVElUWV9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGlkZW50aXR5LmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbmFfc3BlYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX3N1cHBvcnQuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQpCi0gICAgPgotc3RydWN0IGlkZW50aXR5Ci17Ci0gICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgxLCBpZGVudGl0eSwgKFQpKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQpCi0gICAgPgotc3RydWN0IG1ha2VfaWRlbnRpdHkKLXsKLSAgICB0eXBlZGVmIGlkZW50aXR5PFQ+IHR5cGU7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgxLCBtYWtlX2lkZW50aXR5LCAoVCkpCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUNfTk9fRVRJKDEsIGlkZW50aXR5KQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDX05PX0VUSSgxLCBtYWtlX2lkZW50aXR5KQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0lERU5USVRZX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvaWYuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvaWYuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNzRiZTVmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2lmLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzNSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0lGX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfSUZfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBpZi5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ZhbHVlX3drbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3N0YXRpY19jYXN0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uYV9zcGVjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfc3VwcG9ydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2ludGVncmFsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvY3Rwcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3dvcmthcm91bmQuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi0KLXRlbXBsYXRlPAotICAgICAgYm9vbCBDCi0gICAgLCB0eXBlbmFtZSBUMQotICAgICwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgaWZfYwotewotICAgIHR5cGVkZWYgVDEgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDEKLSAgICAsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IGlmX2M8ZmFsc2UsVDEsVDI+Ci17Ci0gICAgdHlwZWRlZiBUMiB0eXBlOwotfTsKLQotLy8gYWd1cnQsIDA1L3NlcC8wNDogbm9uZGVzY3JpcHRpdmUgcGFyYW1ldGVyIG5hbWVzIGZvciB0aGUgc2FrZSBvZiBEaWdpdGFsTWFycwotLy8gKGFuZCBwb3NzaWJseSBNV0NXIDwgOC4wKTsgc2VlIGh0dHA6Ly9hcnRpY2xlLmdtYW5lLm9yZy9nbWFuZS5jb21wLmxpYi5ib29zdC5kZXZlbC8xMDg5NTkKLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDIpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQzKQotICAgID4KLXN0cnVjdCBpZl8KLXsKLSBwcml2YXRlOgotICAgIC8vIGFndXJ0LCAwMi9qYW4vMDM6IHR3by1zdGVwICd0eXBlJyBkZWZpbml0aW9uIGZvciB0aGUgc2FrZSBvZiBhQ0MgCi0gICAgdHlwZWRlZiBpZl9jPAotI2lmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19CQ0NfSU5URUdSQUxfQ09OU1RBTlRTKQotICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChUMSk6OnZhbHVlCi0jZWxzZQotICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfU1RBVElDX0NBU1QoYm9vbCwgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKFQxKTo6dmFsdWUpCi0jZW5kaWYKLSAgICAgICAgLCBUMgotICAgICAgICAsIFQzCi0gICAgICAgID4gYWxtb3N0X3R5cGVfOwotIAotIHB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFsbW9zdF90eXBlXzo6dHlwZSB0eXBlOwotICAgIAotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMyxpZl8sKFQxLFQyLFQzKSkKLX07Ci0KLSNlbHNlCi0KLS8vIG5vIHBhcnRpYWwgY2xhc3MgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb24KLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBib29sIEMgPgotc3RydWN0IGlmX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVDEgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGlmX2ltcGw8ZmFsc2U+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiA+IHN0cnVjdCByZXN1bHRfCi0gICAgeyAKLSAgICAgICAgdHlwZWRlZiBUMiB0eXBlOwotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICBib29sIENfCi0gICAgLCB0eXBlbmFtZSBUMQotICAgICwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgaWZfYwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjppZl9pbXBsPCBDXyA+Ci0gICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxUMSxUMj46OnR5cGUgdHlwZTsKLX07Ci0KLS8vIChhbG1vc3QpIGNvcHkgJiBwYXN0ZSBpbiBvcmRlciB0byBzYXZlIG9uZSBtb3JlIAotLy8gcmVjdXJzaXZlbHkgbmVzdGVkIHRlbXBsYXRlIGluc3RhbnRpYXRpb24gdG8gdXNlcgotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKENfKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDIpCi0gICAgPgotc3RydWN0IGlmXwotewotICAgIGVudW0geyBtc3ZjX3drbmRfID0gTkROQk9PU1RfTVBMX0FVWF9NU1ZDX1ZBTFVFX1dLTkQoQ18pOjp2YWx1ZSB9OwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OmlmX2ltcGw8IE5ETkJPT1NUX01QTF9BVVhfU1RBVElDX0NBU1QoYm9vbCwgbXN2Y193a25kXykgPgotICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88VDEsVDI+Ojp0eXBlIHR5cGU7Ci0KLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDMsaWZfLChDXyxUMSxUMikpCi19OwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoMywgaWZfKQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0lGX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvaW5zZXJ0ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvaW5zZXJ0ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YmNlYmExLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2luc2VydGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfSU5TRVJURVJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9JTlNFUlRFUl9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMy0yMDA0Ci0vLyBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwMy0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGluc2VydGVyLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBTZXF1ZW5jZQotICAgICwgdHlwZW5hbWUgT3BlcmF0aW9uCi0gICAgPgotc3RydWN0IGluc2VydGVyCi17Ci0gICAgdHlwZWRlZiBTZXF1ZW5jZSAgICBzdGF0ZTsKLSAgICB0eXBlZGVmIE9wZXJhdGlvbiAgIG9wZXJhdGlvbjsKLX07Ci0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfSU5TRVJURVJfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9pbnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvaW50LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDVmNjk5Ny4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9pbnQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9JTlRfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9JTlRfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBpbnQuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaW50X2Z3ZC5ocHA+Ci0KLSNkZWZpbmUgQVVYX1dSQVBQRVJfVkFMVUVfVFlQRSBpbnQKLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9pbnRlZ3JhbF93cmFwcGVyLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9JTlRfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9pbnRfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2ludF9md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYjMwMjQ3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2ludF9md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9JTlRfRldEX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfSU5UX0ZXRF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGludF9md2QuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9hZGxfYmFycmllci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbnR0cF9kZWNsLmhwcD4KLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfT1BFTgotCi10ZW1wbGF0ZTwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCBOKSA+IHN0cnVjdCBpbnRfOwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9ERUNMKGludF8pCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfSU5UX0ZXRF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2ludGVncmFsX2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvaW50ZWdyYWxfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDljOWZhOTEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvaW50ZWdyYWxfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0lOVEVHUkFMX0NfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9JTlRFR1JBTF9DX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDYKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogaW50ZWdyYWxfYy5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pbnRlZ3JhbF9jX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2N0cHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9zdGF0aWNfY29uc3RhbnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy93b3JrYXJvdW5kLmhwcD4KLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19IUF9hQ0MsIDw9IDUzODAwKQotLy8gdGhlIHR5cGUgb2Ygbm9uLXR5cGUgdGVtcGxhdGUgYXJndW1lbnRzIG1heSBub3QgZGVwZW5kIG9uIHRlbXBsYXRlIGFyZ3VtZW50cwotIyAgIGRlZmluZSBBVVhfV1JBUFBFUl9QQVJBTVMoTikgdHlwZW5hbWUgVCwgbG9uZyBOCi0jZWxzZQotIyAgIGRlZmluZSBBVVhfV1JBUFBFUl9QQVJBTVMoTikgdHlwZW5hbWUgVCwgVCBOCi0jZW5kaWYKLQotI2RlZmluZSBBVVhfV1JBUFBFUl9OQU1FIGludGVncmFsX2MKLSNkZWZpbmUgQVVYX1dSQVBQRVJfVkFMVUVfVFlQRSBUCi0jZGVmaW5lIEFVWF9XUkFQUEVSX0lOU1QodmFsdWUpIEFVWF9XUkFQUEVSX05BTUU8IFQsIHZhbHVlID4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9pbnRlZ3JhbF93cmFwcGVyLmhwcD4KLQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikgXAotICYmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgPD0gMHg1NTEpCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi0vLyAnYm9vbCcgY29uc3RhbnQgZG9lc24ndCBoYXZlICduZXh0Jy8ncHJpb3InIG1lbWJlcnMKLXRlbXBsYXRlPCBib29sIEMgPgotc3RydWN0IGludGVncmFsX2M8Ym9vbCwgQz4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBDKTsKLSAgICB0eXBlZGVmIGludGVncmFsX2NfdGFnIHRhZzsKLSAgICB0eXBlZGVmIGludGVncmFsX2MgdHlwZTsKLSAgICB0eXBlZGVmIGJvb2wgdmFsdWVfdHlwZTsKLSAgICBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gdGhpcy0+dmFsdWU7IH0KLX07Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotI2VuZGlmCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfSU5URUdSQUxfQ19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2ludGVncmFsX2NfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2ludGVncmFsX2NfZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWVhZWM2NC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9pbnRlZ3JhbF9jX2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0lOVEVHUkFMX0NfRldEX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfSU5URUdSQUxfQ19GV0RfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBpbnRlZ3JhbF9jX2Z3ZC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy93b3JrYXJvdW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9hZGxfYmFycmllci5ocHA+Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19IUF9hQ0MsIDw9IDUzODAwKQotLy8gdGhlIHR5cGUgb2Ygbm9uLXR5cGUgdGVtcGxhdGUgYXJndW1lbnRzIG1heSBub3QgZGVwZW5kIG9uIHRlbXBsYXRlIGFyZ3VtZW50cwotdGVtcGxhdGU8IHR5cGVuYW1lIFQsIGxvbmcgTiA+IHN0cnVjdCBpbnRlZ3JhbF9jOwotI2Vsc2UKLXRlbXBsYXRlPCB0eXBlbmFtZSBULCBUIE4gPiBzdHJ1Y3QgaW50ZWdyYWxfYzsKLSNlbmRpZgotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9ERUNMKGludGVncmFsX2MpCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfSU5URUdSQUxfQ19GV0RfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9pbnRlZ3JhbF9jX3RhZy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9pbnRlZ3JhbF9jX3RhZy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE1ZDJhYTcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvaW50ZWdyYWxfY190YWcuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9JTlRFR1JBTF9DX1RBR19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0lOVEVHUkFMX0NfVEFHX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGludGVncmFsX2NfdGFnLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9hZGxfYmFycmllci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3N0YXRpY19jb25zdGFudC5ocHA+Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXN0cnVjdCBpbnRlZ3JhbF9jX3RhZyB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0gMCk7IH07Ci1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9ERUNMKGludGVncmFsX2NfdGFnKQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0lOVEVHUkFMX0NfVEFHX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvaXNfcGxhY2Vob2xkZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvaXNfcGxhY2Vob2xkZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5M2Y5NjUzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2lzX3BsYWNlaG9sZGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfSVNfUExBQ0VIT0xERVJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9JU19QTEFDRUhPTERFUl9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGlzX3BsYWNlaG9sZGVyLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2FyZ19md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ib29sLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy95ZXNfbm8uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3R5cGVfd3JhcHBlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbnR0cF9kZWNsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvY3Rwcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3N0YXRpY19jb25zdGFudC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotc3RydWN0IGlzX3BsYWNlaG9sZGVyCi0gICAgOiBib29sXzxmYWxzZT4KLXsKLX07Ci0KLXRlbXBsYXRlPCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIE4pID4KLXN0cnVjdCBpc19wbGFjZWhvbGRlcjwgYXJnPE4+ID4KLSAgICA6IGJvb2xfPHRydWU+Ci17Ci19OwotCi0jZWxzZQotCi1uYW1lc3BhY2UgYXV4IHsKLQotYXV4Ojpub190YWcgaXNfcGxhY2Vob2xkZXJfaGVscGVyKC4uLik7Ci0KLXRlbXBsYXRlPCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChpbnQsIE4pID4KLWF1eDo6eWVzX3RhZyBpc19wbGFjZWhvbGRlcl9oZWxwZXIoYXV4Ojp0eXBlX3dyYXBwZXI8IGFyZzxOPiA+Kik7Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci1zdHJ1Y3QgaXNfcGxhY2Vob2xkZXIKLXsKLSAgICBzdGF0aWMgYXV4Ojp0eXBlX3dyYXBwZXI8VD4qIGdldCgpOwotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IAotICAgICAgICAgIHNpemVvZihhdXg6OmlzX3BsYWNlaG9sZGVyX2hlbHBlcihnZXQoKSkpID09IHNpemVvZihhdXg6Onllc190YWcpCi0gICAgICAgICk7Ci0gICAgCi0gICAgdHlwZWRlZiBib29sXzx2YWx1ZT4gdHlwZTsKLX07Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfSVNfUExBQ0VIT0xERVJfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9pc19zZXF1ZW5jZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9pc19zZXF1ZW5jZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI0MTExYmYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvaXNfc2VxdWVuY2UuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTEyICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfSVNfU0VRVUVOQ0VfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9JU19TRVFVRU5DRV9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMi0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGlzX3NlcXVlbmNlLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL25vdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2FuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2JlZ2luX2VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYm9vbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3NlcXVlbmNlX3RhZ19md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZGVudGl0eS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZvaWQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2hhc190YWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2hhc19iZWdpbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbmFfc3BlYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX3N1cHBvcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9ldGkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9tc3ZjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvd29ya2Fyb3VuZC5ocHA+Ci0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbXN2Y19pc19jbGFzcy5ocHA+Ci0jZWxpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsID09IDEzMDApCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY2xhc3MuaHBwPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMDApCi0KLW5hbWVzcGFjZSBhdXggewotCi0vLyBhZ3VydCwgMTEvanVuLzAzOiAKLS8vIE1TVkMgNi41LzcuMCBmYWlscyBpZiAnaGFzX2JlZ2luJyBpcyBpbnN0YW50aWF0ZWQgb24gYSBjbGFzcyB0eXBlIHRoYXQgaGFzIGEKLS8vICdiZWdpbicgbWVtYmVyIHRoYXQgZG9lc24ndCBuYW1lIGEgdHlwZTsgZS5nLiAnaGFzX2JlZ2luPCBzdGQ6OnZlY3RvcjxpbnQ+ID4nCi0vLyB3b3VsZCBmYWlsOyByZXF1aXJpbmcgJ1QnIHRvIGhhdmUgX2JvdGhfICd0YWcnIGFuZCAnYmVnaW4nIG1lbWJlcnMgd29ya2Fyb3VuZHMKLS8vIHRoZSBpc3N1ZSBmb3IgbW9zdCByZWFsLXdvcmxkIGNhc2VzCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBpc19zZXF1ZW5jZV9pbXBsCi0gICAgOiBhbmRfPAotICAgICAgICAgIGlkZW50aXR5PCBhdXg6Omhhc190YWc8VD4gPgotICAgICAgICAsIGlkZW50aXR5PCBhdXg6Omhhc19iZWdpbjxUPiA+Ci0gICAgICAgID4KLXsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotICAgICAgICAKLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUKQotICAgID4KLXN0cnVjdCBpc19zZXF1ZW5jZQotICAgIDogaWZfPAotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKQotICAgICAgICAgIGF1eDo6bXN2Y19pc19jbGFzczxUPiAKLSNlbHNlCi0gICAgICAgICAgbmRuYm9vc3Q6OmlzX2NsYXNzPFQ+IAotI2VuZGlmCi0gICAgICAgICwgYXV4Ojppc19zZXF1ZW5jZV9pbXBsPFQ+Ci0gICAgICAgICwgYm9vbF88ZmFsc2U+Ci0gICAgICAgID46OnR5cGUKLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDEsIGlzX3NlcXVlbmNlLCAoVCkpCi19OwotCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fSEFTX1hYWCkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQpCi0gICAgPgotc3RydWN0IGlzX3NlcXVlbmNlCi0gICAgOiBib29sXzxmYWxzZT4KLXsKLX07Ci0KLSNlbHNlCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUKQotICAgID4KLXN0cnVjdCBpc19zZXF1ZW5jZQotICAgIDogbm90XzwgaXNfc2FtZTwgdHlwZW5hbWUgYmVnaW48VD46OnR5cGUsIHZvaWRfID4gPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMSwgaXNfc2VxdWVuY2UsIChUKSkKLX07Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NU1ZDCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTVNWQ182MF9FVElfQlVHKQotdGVtcGxhdGU8PiBzdHJ1Y3QgaXNfc2VxdWVuY2U8aW50PgotICAgIDogYm9vbF88ZmFsc2U+Ci17Ci19OwotI2VuZGlmCi0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQ19OT19FVEkoMSwgaXNfc2VxdWVuY2UpCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfSVNfU0VRVUVOQ0VfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9pdGVyX2ZvbGQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvaXRlcl9mb2xkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTg0ODBiOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9pdGVyX2ZvbGQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9JVEVSX0ZPTERfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9JVEVSX0ZPTERfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8gQ29weXJpZ2h0IERhdmlkIEFicmFoYW1zIDIwMDEtMjAwMgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBpdGVyX2ZvbGQuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYmVnaW5fZW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvTzFfc2l6ZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xhbWJkYS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vaXRlcl9mb2xkX2ltcGwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL25hX3NwZWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9zdXBwb3J0LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShTZXF1ZW5jZSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oU3RhdGUpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKEZvcndhcmRPcCkKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6Oml0ZXJfZm9sZF9pbXBsPAotICAgICAgICAgIDo6bmRuYm9vc3Q6Om1wbDo6TzFfc2l6ZTxTZXF1ZW5jZT46OnZhbHVlCi0gICAgICAgICwgdHlwZW5hbWUgYmVnaW48U2VxdWVuY2U+Ojp0eXBlCi0gICAgICAgICwgdHlwZW5hbWUgZW5kPFNlcXVlbmNlPjo6dHlwZQotICAgICAgICAsIFN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgbGFtYmRhPEZvcndhcmRPcD46OnR5cGUKLSAgICAgICAgPjo6c3RhdGUgdHlwZTsKLQotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMyxpdGVyX2ZvbGQsKFNlcXVlbmNlLFN0YXRlLEZvcndhcmRPcCkpCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoMywgaXRlcl9mb2xkKQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0lURVJfRk9MRF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2l0ZXJfZm9sZF9pZi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9pdGVyX2ZvbGRfaWYuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNGY4NzY1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2l0ZXJfZm9sZF9pZi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTcgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9JVEVSX0ZPTERfSUZfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9JVEVSX0ZPTERfSUZfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDMtMjAwNAotLy8gQ29weXJpZ2h0IEVyaWMgRnJpZWRtYW4gMjAwMwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBpdGVyX2ZvbGRfaWYuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYmVnaW5fZW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbG9naWNhbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2Fsd2F5cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2V2YWxfaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3BhaXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hcHBseS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vaXRlcl9mb2xkX2lmX2ltcGwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL25hX3NwZWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9zdXBwb3J0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvZm9yd2FyZGluZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3dvcmthcm91bmQuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2FtZS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFByZWRpY2F0ZSwgdHlwZW5hbWUgTGFzdEl0ZXJhdG9yID4KLXN0cnVjdCBpdGVyX2ZvbGRfaWZfcHJlZAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBTdGF0ZSwgdHlwZW5hbWUgSXRlcmF0b3IgPiBzdHJ1Y3QgYXBwbHkKLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX05FU1RFRF9GT1JXQVJESU5HKQotICAgICAgICA6IGFuZF88Ci0gICAgICAgICAgICAgIG5vdF88IGlzX3NhbWU8SXRlcmF0b3IsTGFzdEl0ZXJhdG9yPiA+Ci0gICAgICAgICAgICAsIGFwcGx5MTxQcmVkaWNhdGUsSXRlcmF0b3I+Ci0gICAgICAgICAgICA+Ci0gICAgewotI2Vsc2UKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgYW5kXzwKLSAgICAgICAgICAgICAgbm90XzwgaXNfc2FtZTxJdGVyYXRvcixMYXN0SXRlcmF0b3I+ID4KLSAgICAgICAgICAgICwgYXBwbHkxPFByZWRpY2F0ZSxJdGVyYXRvcj4KLSAgICAgICAgICAgID4gdHlwZTsKLSNlbmRpZgotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFNlcXVlbmNlKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShTdGF0ZSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oRm9yd2FyZE9wKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShGb3J3YXJkUHJlZGljYXRlKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShCYWNrd2FyZE9wKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShCYWNrd2FyZFByZWRpY2F0ZSkKLSAgICA+Ci1zdHJ1Y3QgaXRlcl9mb2xkX2lmCi17Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJlZ2luPFNlcXVlbmNlPjo6dHlwZSBmaXJzdF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBlbmQ8U2VxdWVuY2U+Ojp0eXBlIGxhc3RfOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBldmFsX2lmPAotICAgICAgICAgIGlzX25hPEJhY2t3YXJkUHJlZGljYXRlPgotICAgICAgICAsIGlmXzwgaXNfbmE8QmFja3dhcmRPcD4sIGFsd2F5czxmYWxzZV8+LCBhbHdheXM8dHJ1ZV8+ID4KLSAgICAgICAgLCBpZGVudGl0eTxCYWNrd2FyZFByZWRpY2F0ZT4KLSAgICAgICAgPjo6dHlwZSBiYWNrd2FyZF9wcmVkXzsKLQotLy8gY3dwcm84IGRvZXNuJ3QgbGlrZSAnY3V0LW9mZicgdHlwZSBoZXJlICh1c2UgdHlwZWRlZiBpbnN0ZWFkKQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fTVdFUktTX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDMwMDMpKSAmJiAhTkROQk9PU1RfV09SS0FST1VORChfX0lCTUNQUF9fLCBORE5CT09TVF9URVNURURfQVQoNjAwKSkKLSAgICBzdHJ1Y3QgcmVzdWx0XyA6Ci0jZWxzZQotICAgIHR5cGVkZWYKLSNlbmRpZgotICAgICAgICBhdXg6Oml0ZXJfZm9sZF9pZl9pbXBsPAotICAgICAgICAgIGZpcnN0XwotICAgICAgICAsIFN0YXRlCi0gICAgICAgICwgRm9yd2FyZE9wCi0gICAgICAgICwgcHJvdGVjdDwgYXV4OjppdGVyX2ZvbGRfaWZfcHJlZDwgRm9yd2FyZFByZWRpY2F0ZSxsYXN0XyA+ID4KLSAgICAgICAgLCBCYWNrd2FyZE9wCi0gICAgICAgICwgYmFja3dhcmRfcHJlZF8KLSAgICAgICAgPgotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fTVdFUktTX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDMwMDMpKSAmJiAhTkROQk9PU1RfV09SS0FST1VORChfX0lCTUNQUF9fLCBORE5CT09TVF9URVNURURfQVQoNjAwKSkKLSAgICB7IH07Ci0jZWxzZQotICAgIHJlc3VsdF87Ci0jZW5kaWYKLQotcHVibGljOgotCi0gICAgdHlwZWRlZiBwYWlyPAotICAgICAgICAgIHR5cGVuYW1lIHJlc3VsdF86OnN0YXRlCi0gICAgICAgICwgdHlwZW5hbWUgcmVzdWx0Xzo6aXRlcmF0b3IKLSAgICAgICAgPiB0eXBlOwotCi0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgKLSAgICAgICAgICA2Ci0gICAgICAgICwgaXRlcl9mb2xkX2lmCi0gICAgICAgICwgKFNlcXVlbmNlLFN0YXRlLEZvcndhcmRPcCxGb3J3YXJkUHJlZGljYXRlLEJhY2t3YXJkT3AsQmFja3dhcmRQcmVkaWNhdGUpCi0gICAgICAgICkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQyg2LCBpdGVyX2ZvbGRfaWYpCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfSVRFUl9GT0xEX0lGX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvaXRlcmF0b3JfcmFuZ2UuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvaXRlcmF0b3JfcmFuZ2UuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYzhjYzg4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2l0ZXJhdG9yX3JhbmdlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfSVRFUkFUT1JfUkFOR0VfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9JVEVSQVRPUl9SQU5HRV9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGl0ZXJhdG9yX3JhbmdlLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbmFfc3BlYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX3N1cHBvcnQuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotc3RydWN0IGl0ZXJhdG9yX3JhbmdlX3RhZzsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKEZpcnN0KQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShMYXN0KQotICAgID4KLXN0cnVjdCBpdGVyYXRvcl9yYW5nZQotewotICAgIHR5cGVkZWYgaXRlcmF0b3JfcmFuZ2VfdGFnIHRhZzsKLSAgICB0eXBlZGVmIGl0ZXJhdG9yX3JhbmdlIHR5cGU7Ci0gICAgdHlwZWRlZiBGaXJzdCBiZWdpbjsKLSAgICB0eXBlZGVmIExhc3QgZW5kOwotCi0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLGl0ZXJhdG9yX3JhbmdlLChGaXJzdCxMYXN0KSkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQygyLCBpdGVyYXRvcl9yYW5nZSkKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9JVEVSQVRPUl9SQU5HRV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2l0ZXJhdG9yX3RhZ3MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvaXRlcmF0b3JfdGFncy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk4NmFiNjkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvaXRlcmF0b3JfdGFncy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0lURVJBVE9SX1RBR19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0lURVJBVE9SX1RBR19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGl0ZXJhdG9yX3RhZ3MuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaW50LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXN0cnVjdCBmb3J3YXJkX2l0ZXJhdG9yX3RhZyAgICAgICA6IGludF88MD4geyB0eXBlZGVmIGZvcndhcmRfaXRlcmF0b3JfdGFnIHR5cGU7IH07Ci1zdHJ1Y3QgYmlkaXJlY3Rpb25hbF9pdGVyYXRvcl90YWcgOiBpbnRfPDE+IHsgdHlwZWRlZiBiaWRpcmVjdGlvbmFsX2l0ZXJhdG9yX3RhZyB0eXBlOyB9Owotc3RydWN0IHJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnIDogaW50XzwyPiB7IHR5cGVkZWYgcmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcgdHlwZTsgfTsKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9JVEVSQVRPUl9UQUdfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9sYW1iZGEuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGFtYmRhLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTYxNzU0Ny4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9sYW1iZGEuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9MQU1CREFfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9MQU1CREFfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDEtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBsYW1iZGEuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGFtYmRhX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2JpbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9sYW1iZGEuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19GVUxMX0xBTUJEQV9TVVBQT1JUKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2Z1bGxfbGFtYmRhLmhwcD4KLSNlbHNlCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX25vX2N0cHMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9zdXBwb3J0LmhwcD4KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0NGR19OT19JTVBMSUNJVF9NRVRBRlVOQ1RJT05TCi0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9MQU1CREFfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9sYW1iZGFfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xhbWJkYV9md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZmI5NGQ4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xhbWJkYV9md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9MQU1CREFfRldEX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfTEFNQkRBX0ZXRF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGxhbWJkYV9md2QuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvdm9pZF9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL25hLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvbGFtYmRhLmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fRlVMTF9MQU1CREFfU1VQUE9SVCkKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9pbnQuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9hcml0eV9wYXJhbS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vdGVtcGxhdGVfYXJpdHlfZndkLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPCAKLSAgICAgIHR5cGVuYW1lIFQgPSBuYQotICAgICwgdHlwZW5hbWUgVGFnID0gdm9pZF8KLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9BUklUWV9QQVJBTSgKLSAgICAgICAgICB0eXBlbmFtZSBBcml0eSA9IGludF88IGF1eDo6dGVtcGxhdGVfYXJpdHk8VD46OnZhbHVlID4KLSAgICAgICAgKQotICAgID4KLXN0cnVjdCBsYW1iZGE7Ci0KLX19Ci0KLSNlbHNlIC8vIE5ETkJPT1NUX01QTF9DRkdfTk9fRlVMTF9MQU1CREFfU1VQUE9SVAotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2Jvb2wuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8IAotICAgICAgdHlwZW5hbWUgVCA9IG5hCi0gICAgLCB0eXBlbmFtZSBUYWcgPSB2b2lkXwotICAgICwgdHlwZW5hbWUgUHJvdGVjdCA9IHRydWVfCi0gICAgPiAKLXN0cnVjdCBsYW1iZGE7Ci0KLX19Ci0KLSNlbmRpZgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0xBTUJEQV9GV0RfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9sZXNzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xlc3MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNDQzMWY1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xlc3MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9MRVNTX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfTEVTU19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGxlc3MuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNkZWZpbmUgQVVYNzc4MDc2X09QX05BTUUgbGVzcwotI2RlZmluZSBBVVg3NzgwNzZfT1BfVE9LRU4gPAotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbXBhcmlzb25fb3AuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0xFU1NfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9sZXNzX2VxdWFsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xlc3NfZXF1YWwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNzU4YTNmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xlc3NfZXF1YWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9MRVNTX0VRVUFMX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfTEVTU19FUVVBTF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGxlc3NfZXF1YWwuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNkZWZpbmUgQVVYNzc4MDc2X09QX05BTUUgbGVzc19lcXVhbAotI2RlZmluZSBBVVg3NzgwNzZfT1BfVE9LRU4gPD0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb21wYXJpc29uX29wLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9MRVNTX0VRVUFMX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGltaXRzL2FyaXR5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpbWl0cy9hcml0eS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBjOTY1MGIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGltaXRzL2FyaXR5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfTElNSVRTX0FSSVRZX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfTElNSVRTX0FSSVRZX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogYXJpdHkuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfTElNSVRfTUVUQUZVTkNUSU9OX0FSSVRZKQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfTElNSVRfTUVUQUZVTkNUSU9OX0FSSVRZIDUKLSNlbmRpZgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0xJTUlUU19BUklUWV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpbWl0cy9saXN0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpbWl0cy9saXN0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWEzN2VhMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saW1pdHMvbGlzdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0xJTUlUU19MSVNUX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfTElNSVRTX0xJU1RfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBsaXN0LmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0xJTUlUX0xJU1RfU0laRSkKLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX0xJTUlUX0xJU1RfU0laRSAyMAotI2VuZGlmCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfTElNSVRTX0xJU1RfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saW1pdHMvdW5yb2xsaW5nLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpbWl0cy91bnJvbGxpbmcuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZGY1NTAwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpbWl0cy91bnJvbGxpbmcuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9MSU1JVFNfVU5ST0xMSU5HX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfTElNSVRTX1VOUk9MTElOR19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHVucm9sbGluZy5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9MSU1JVF9VTlJPTExJTkcpCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9MSU1JVF9VTlJPTExJTkcgNAotI2VuZGlmCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfTElNSVRTX1VOUk9MTElOR19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpbWl0cy92ZWN0b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGltaXRzL3ZlY3Rvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU2N2IyNTguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGltaXRzL3ZlY3Rvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0xJTUlUU19WRUNUT1JfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9MSU1JVFNfVkVDVE9SX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogdmVjdG9yLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0xJTUlUX1ZFQ1RPUl9TSVpFKQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfTElNSVRfVkVDVE9SX1NJWkUgMjAKLSNlbmRpZgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0xJTUlUU19WRUNUT1JfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMzRjODI4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9MSVNUX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfTElTVF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGxpc3QuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9saW1pdHMvbGlzdC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbmEuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9wcmVwcm9jZXNzb3IuaHBwPgotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2luYy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3N0cmluZ2l6ZS5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9ORUVEU19UT0tFTl9QQVNUSU5HX09QX0ZPUl9UT0tFTlNfSlVYVEFQT1NJTkcpCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9MSVNUX0hFQURFUiBcCi0gICAgTkROQk9PU1RfUFBfQ0FUKGxpc3QsTkROQk9PU1RfTVBMX0xJTUlUX0xJU1RfU0laRSkuaHBwIFwKLSAgICAvKiovCi0jZWxzZQotIyAgIGRlZmluZSBBVVg3NzgwNzZfTElTVF9IRUFERVIgXAotICAgIE5ETkJPT1NUX1BQX0NBVChsaXN0LE5ETkJPT1NUX01QTF9MSU1JVF9MSVNUX1NJWkUpIyMuaHBwIFwKLSAgICAvKiovCi0jZW5kaWYKLQotIyAgIGluY2x1ZGUgTkROQk9PU1RfUFBfU1RSSU5HSVpFKG5kbmJvb3N0L21wbC9saXN0L0FVWDc3ODA3Nl9MSVNUX0hFQURFUikKLSMgICB1bmRlZiBBVVg3NzgwNzZfTElTVF9IRUFERVIKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3VzZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUykgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BSRVBST0NFU1NFRF9IRUFERVIgbGlzdC5ocHAKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9pbmNsdWRlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNlbHNlCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGltaXRzL2xpc3QuaHBwPgotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9TRVFVRU5DRV9OQU1FIGxpc3QKLSMgICBkZWZpbmUgQVVYNzc4MDc2X1NFUVVFTkNFX0xJTUlUIE5ETkJPT1NUX01QTF9MSU1JVF9MSVNUX1NJWkUKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9zZXF1ZW5jZV93cmFwcGVyLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMKLSNlbmRpZiAvLyBORE5CT09TVF9NUExfTElTVF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9PMV9zaXplLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9PMV9zaXplLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODAxYTQwNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vTzFfc2l6ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0xJU1RfQVVYX08xX1NJWkVfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9MSVNUX0FVWF9PMV9TSVpFX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogTzFfc2l6ZS5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9PMV9zaXplX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy90YWcuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IE8xX3NpemVfaW1wbDwgYXV4OjpsaXN0X3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIExpc3QgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBMaXN0OjpzaXplCi0gICAgewotICAgIH07Ci19OwotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0xJU1RfQVVYX08xX1NJWkVfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vYmVnaW5fZW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9iZWdpbl9lbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ODFlY2U5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9iZWdpbl9lbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9MSVNUX0FVWF9CRUdJTl9FTkRfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9MSVNUX0FVWF9CRUdJTl9FTkRfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBiZWdpbl9lbmQuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYmVnaW5fZW5kX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9pdGVyYXRvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy90YWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9saXN0L2F1eF8vaXRlbS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmVnaW5faW1wbDwgYXV4OjpsaXN0X3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIExpc3QgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbF9pdGVyPHR5cGVuYW1lIExpc3Q6OnR5cGU+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlbmRfaW1wbDwgYXV4OjpsaXN0X3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIGxfaXRlcjxsX2VuZD4gdHlwZTsKLSAgICB9OwotfTsKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9MSVNUX0FVWF9CRUdJTl9FTkRfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vY2xlYXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL2NsZWFyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTg2Y2E1Ni4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vY2xlYXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9MSVNUX0FVWF9DTEVBUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0xJU1RfQVVYX0NMRUFSX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogY2xlYXIuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvY2xlYXJfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGlzdC9hdXhfL2l0ZW0uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9saXN0L2F1eF8vdGFnLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjbGVhcl9pbXBsPCBhdXg6Omxpc3RfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTGlzdCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBsX2VuZCB0eXBlOwotICAgIH07Ci19OwotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0xJU1RfQVVYX0NMRUFSX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL2VtcHR5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9lbXB0eS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJkZDlmMzEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL2VtcHR5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfTElTVF9BVVhfRU1QVFlfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9MSVNUX0FVWF9FTVBUWV9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGVtcHR5LmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2VtcHR5X2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL25vdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy90YWcuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVtcHR5X2ltcGw8IGF1eDo6bGlzdF90YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBMaXN0ID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogbm90Xzx0eXBlbmFtZSBMaXN0OjpzaXplPgotICAgIHsKLSAgICB9OwotfTsKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9MSVNUX0FVWF9FTVBUWV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9mcm9udC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vZnJvbnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZWUxZGQ2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9mcm9udC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0xJU1RfQVVYX0ZST05UX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfTElTVF9BVVhfRlJPTlRfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBmcm9udC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9mcm9udF9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9saXN0L2F1eF8vdGFnLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmcm9udF9pbXBsPCBhdXg6Omxpc3RfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTGlzdCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBMaXN0OjppdGVtIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfTElTVF9BVVhfRlJPTlRfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vaW5jbHVkZV9wcmVwcm9jZXNzZWQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL2luY2x1ZGVfcHJlcHJvY2Vzc2VkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2JlZWE4Yi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vaW5jbHVkZV9wcmVwcm9jZXNzZWQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDYKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogaW5jbHVkZV9wcmVwcm9jZXNzZWQuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLS8vIE5PIElOQ0xVREUgR1VBUkRTLCBUSEUgSEVBREVSIElTIElOVEVOREVEIEZPUiBNVUxUSVBMRSBJTkNMVVNJT04hCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc3RyaW5naXplLmhwcD4KLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfSEVBREVSIFwKLSAgICBhdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9ORE5CT09TVF9NUExfUFJFUFJPQ0VTU0VEX0hFQURFUiBcCi0vKiovCi0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fSUJNQ1BQX18sIE5ETkJPT1NUX1RFU1RFRF9BVCg3MDApKQotIyAgIGRlZmluZSBBVVg3NzgwNzZfSU5DTFVERV9TVFJJTkcgTkROQk9PU1RfUFBfU1RSSU5HSVpFKG5kbmJvb3N0L21wbC9saXN0L0FVWDc3ODA3Nl9IRUFERVIpCi0jICAgaW5jbHVkZSBBVVg3NzgwNzZfSU5DTFVERV9TVFJJTkcKLSMgICB1bmRlZiBBVVg3NzgwNzZfSU5DTFVERV9TVFJJTkcKLSNlbHNlCi0jICAgaW5jbHVkZSBORE5CT09TVF9QUF9TVFJJTkdJWkUobmRuYm9vc3QvbXBsL2xpc3QvQVVYNzc4MDc2X0hFQURFUikKLSNlbmRpZgotCi0jICAgdW5kZWYgQVVYNzc4MDc2X0hFQURFUgotCi0jdW5kZWYgTkROQk9PU1RfTVBMX1BSRVBST0NFU1NFRF9IRUFERVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9pdGVtLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9pdGVtLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzkzNTI5YS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vaXRlbS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0xJU1RfQVVYX05PREVfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9MSVNUX0FVWF9OT0RFX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogaXRlbS5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9sb25nLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGlzdC9hdXhfL3RhZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL21zdmMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy93b3JrYXJvdW5kLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgU2l6ZQotICAgICwgdHlwZW5hbWUgVAotICAgICwgdHlwZW5hbWUgTmV4dAotICAgID4KLXN0cnVjdCBsX2l0ZW0KLXsKLS8vIGFndXJ0LCAxNy9qdWwvMDM6IHRvIGZhY2lsaXRhdGUgdGhlIGRlZmljaWVudCAnaXNfc2VxdWVuY2UnIGltcGxlbWVudGF0aW9uIAotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkKLSAgICB0eXBlZGVmIGludCBiZWdpbjsKLSNlbmRpZgotICAgIHR5cGVkZWYgYXV4OjpsaXN0X3RhZyB0YWc7Ci0gICAgdHlwZWRlZiBsX2l0ZW0gdHlwZTsKLQotICAgIHR5cGVkZWYgU2l6ZSBzaXplOwotICAgIHR5cGVkZWYgVCBpdGVtOwotICAgIHR5cGVkZWYgTmV4dCBuZXh0OwotfTsKLQotc3RydWN0IGxfZW5kCi17Ci0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKQotICAgIHR5cGVkZWYgaW50IGJlZ2luOwotI2VuZGlmCi0gICAgdHlwZWRlZiBhdXg6Omxpc3RfdGFnIHRhZzsKLSAgICB0eXBlZGVmIGxfZW5kIHR5cGU7Ci0gICAgdHlwZWRlZiBsb25nXzwwPiBzaXplOwotfTsKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9MSVNUX0FVWF9OT0RFX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL2l0ZXJhdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9pdGVyYXRvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkxNGEyN2QuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL2l0ZXJhdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDc2ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfTElTVF9BVVhfSVRFUkFUT1JfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9MSVNUX0FVWF9JVEVSQVRPUl9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGl0ZXJhdG9yLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2l0ZXJhdG9yX3RhZ3MuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9uZXh0X3ByaW9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvZGVyZWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9saXN0L2F1eF8vaXRlbS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbmEuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9zcGVjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvY3Rwcy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLQotdGVtcGxhdGU8IHR5cGVuYW1lIE5vZGUgPgotc3RydWN0IGxfaXRlcgotewotICAgIHR5cGVkZWYgYXV4OjpsX2l0ZXJfdGFnIHRhZzsKLSAgICB0eXBlZGVmIGZvcndhcmRfaXRlcmF0b3JfdGFnIGNhdGVnb3J5OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIE5vZGUgPgotc3RydWN0IGRlcmVmPCBsX2l0ZXI8Tm9kZT4gPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgTm9kZTo6aXRlbSB0eXBlOwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIE5vZGUgPgotc3RydWN0IG5leHQ8IGxfaXRlcjxOb2RlPiA+Ci17Ci0gICAgdHlwZWRlZiBsX2l0ZXI8IHR5cGVuYW1lIE5vZGU6Om5leHQgPiB0eXBlOwotfTsKLQotI2Vsc2UgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgTm9kZSA+Ci1zdHJ1Y3QgbF9pdGVyCi17Ci0gICAgdHlwZWRlZiBhdXg6OmxfaXRlcl90YWcgdGFnOwotICAgIHR5cGVkZWYgZm9yd2FyZF9pdGVyYXRvcl90YWcgY2F0ZWdvcnk7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBOb2RlOjppdGVtIHR5cGU7Ci0gICAgdHlwZWRlZiBsX2l0ZXI8IHR5cGVuYW1lIG1wbDo6bmV4dDxOb2RlPjo6dHlwZSA+IG5leHQ7Ci19OwotCi0jZW5kaWYKLQotCi10ZW1wbGF0ZTw+IHN0cnVjdCBsX2l0ZXI8bF9lbmQ+Ci17Ci0gICAgdHlwZWRlZiBhdXg6OmxfaXRlcl90YWcgdGFnOwotICAgIHR5cGVkZWYgZm9yd2FyZF9pdGVyYXRvcl90YWcgY2F0ZWdvcnk7Ci0jaWYgZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotICAgIHR5cGVkZWYgbmEgdHlwZTsKLSAgICB0eXBlZGVmIGxfaXRlciBuZXh0OwotI2VuZGlmCi19OwotCi1ORE5CT09TVF9NUExfQVVYX1BBU1NfVEhST1VHSF9MQU1CREFfU1BFQygxLCBsX2l0ZXIpCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfTElTVF9BVVhfSVRFUkFUT1JfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vbnVtYmVyZWQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL251bWJlcmVkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTVjNjQyZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vbnVtYmVyZWQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjggKzAsMCBAQAotCi0vLyBOTyBJTkNMVURFIEdVQVJEUywgVEhFIEhFQURFUiBJUyBJTlRFTkRFRCBGT1IgTVVMVElQTEUgSU5DTFVTSU9OCi0KLS8vIENvcHlyaWdodCBQZXRlciBEaW1vdiAyMDAwLTIwMDIKLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBudW1iZXJlZC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HKQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2VudW1fcGFyYW1zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZW51bV9zaGlmdGVkX3BhcmFtcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2RlYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0KLSNkZWZpbmUgaSBORE5CT09TVF9QUF9GUkFNRV9JVEVSQVRJT04oMSkKLQotI2lmIGkgPT0gMQotCi10ZW1wbGF0ZTwKLSAgICAgIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKGksIHR5cGVuYW1lIFQpCi0gICAgPgotc3RydWN0IGxpc3QxCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188MT4KLSAgICAgICAgLCBUMAotICAgICAgICAsIGxfZW5kCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QxIHR5cGU7Ci19OwotCi0jZWxzZQotCi0jICAgZGVmaW5lIE1QTF9BVVhfTElTVF9UQUlMKGxpc3QsIGksIFQpIFwKLSAgICBORE5CT09TVF9QUF9DQVQobGlzdCxORE5CT09TVF9QUF9ERUMoaSkpPCBcCi0gICAgICBORE5CT09TVF9QUF9FTlVNX1NISUZURURfUEFSQU1TKGksIFQpIFwKLSAgICA+IFwKLSAgICAvKiovCi0gICAgCi10ZW1wbGF0ZTwKLSAgICAgIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKGksIHR5cGVuYW1lIFQpCi0gICAgPgotc3RydWN0IE5ETkJPT1NUX1BQX0NBVChsaXN0LGkpCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188aT4KLSAgICAgICAgLCBUMAotICAgICAgICAsIE1QTF9BVVhfTElTVF9UQUlMKGxpc3QsaSxUKQotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBORE5CT09TVF9QUF9DQVQobGlzdCxpKSB0eXBlOwotfTsKLQotIyAgIHVuZGVmIE1QTF9BVVhfTElTVF9UQUlMCi0KLSNlbmRpZiAvLyBpID09IDEKLQotI3VuZGVmIGkKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1BQX0lTX0lURVJBVElORwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL251bWJlcmVkX2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL251bWJlcmVkX2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYzhmZDYzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9udW1iZXJlZF9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLQotLy8gTk8gSU5DTFVERSBHVUFSRFMsIFRIRSBIRUFERVIgSVMgSU5URU5ERUQgRk9SIE1VTFRJUExFIElOQ0xVU0lPTgotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogbnVtYmVyZWRfYy5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HKQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2VudW1fcGFyYW1zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZW51bV9zaGlmdGVkX3BhcmFtcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2RlYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0KLSNkZWZpbmUgaSBORE5CT09TVF9QUF9GUkFNRV9JVEVSQVRJT04oMSkKLQotI2lmIGkgPT0gMQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKGksIFQgQykKLSAgICA+Ci1zdHJ1Y3QgbGlzdDFfYwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDE+Ci0gICAgICAgICwgaW50ZWdyYWxfYzxULEMwPgotICAgICAgICAsIGxfZW5kCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QxX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLSNlbHNlCi0KLSMgICBkZWZpbmUgTVBMX0FVWF9MSVNUX0NfVEFJTChsaXN0LCBpLCBDKSBcCi0gICAgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX0NBVChsaXN0LE5ETkJPT1NUX1BQX0RFQyhpKSksX2MpPFQsIFwKLSAgICAgIE5ETkJPT1NUX1BQX0VOVU1fU0hJRlRFRF9QQVJBTVMoaSwgQykgXAotICAgID4gXAotICAgIC8qKi8KLSAgICAKLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoaSwgVCBDKQotICAgID4KLXN0cnVjdCBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfQ0FUKGxpc3QsaSksX2MpCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188aT4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPFQsQzA+Ci0gICAgICAgICwgTVBMX0FVWF9MSVNUX0NfVEFJTChsaXN0LGksQykKLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX0NBVChsaXN0LGkpLF9jKSB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotIyAgIHVuZGVmIE1QTF9BVVhfTElTVF9DX1RBSUwKLQotI2VuZGlmIC8vIGkgPT0gMQotCi0jdW5kZWYgaQotCi0jZW5kaWYgLy8gTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vcG9wX2Zyb250LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9wb3BfZnJvbnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOGQ3NDQ0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9wb3BfZnJvbnQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9MSVNUX0FVWF9QT1BfRlJPTlRfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9MSVNUX0FVWF9QT1BfRlJPTlRfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBwb3BfZnJvbnQuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvcG9wX2Zyb250X2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL25leHRfcHJpb3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9saXN0L2F1eF8vdGFnLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4OjpsaXN0X3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIExpc3QgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpuZXh0PExpc3Q+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfTElTVF9BVVhfUE9QX0ZST05UX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9saXN0MTAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9saXN0MTAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZThlZGIyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vbGlzdDEwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0OSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9saXN0L2xpc3QxMC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMAotICAgID4KLXN0cnVjdCBsaXN0MQotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDE+Ci0gICAgICAgICwgVDAKLSAgICAgICAgLCBsX2VuZAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgbGlzdDIKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwyPgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDE8VDE+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QyIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgbGlzdDMKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwzPgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDI8IFQxLFQyID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDMgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgbGlzdDQKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzw0PgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDM8IFQxLFQyLFQzID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IGxpc3Q1Ci0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188NT4KLSAgICAgICAgLCBUMAotICAgICAgICAsIGxpc3Q0PCBUMSxUMixUMyxUNCA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3Q1IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUKLSAgICA+Ci1zdHJ1Y3QgbGlzdDYKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzw2PgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDU8IFQxLFQyLFQzLFQ0LFQ1ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDYgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYKLSAgICA+Ci1zdHJ1Y3QgbGlzdDcKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzw3PgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDY8IFQxLFQyLFQzLFQ0LFQ1LFQ2ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3Ci0gICAgPgotc3RydWN0IGxpc3Q4Ci0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188OD4KLSAgICAgICAgLCBUMAotICAgICAgICAsIGxpc3Q3PCBUMSxUMixUMyxUNCxUNSxUNixUNyA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3Q4IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgKLSAgICA+Ci1zdHJ1Y3QgbGlzdDkKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzw5PgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDg8IFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDkgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICA+Ci1zdHJ1Y3QgbGlzdDEwCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188MTA+Ci0gICAgICAgICwgVDAKLSAgICAgICAgLCBsaXN0OTwgVDEsVDIsVDMsVDQsVDUsVDYsVDcsVDgsVDkgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MTAgdHlwZTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2xpc3QxMF9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vbGlzdDEwX2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZmMwNTgyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vbGlzdDEwX2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTY0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2xpc3QvbGlzdDEwX2MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMAotICAgID4KLXN0cnVjdCBsaXN0MV9jCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188MT4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMwID4KLSAgICAgICAgLCBsX2VuZAotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MV9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEKLSAgICA+Ci1zdHJ1Y3QgbGlzdDJfYwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDI+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMCA+Ci0gICAgICAgICwgbGlzdDFfYzwgVCxDMSA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QyX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMgotICAgID4KLXN0cnVjdCBsaXN0M19jCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188Mz4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMwID4KLSAgICAgICAgLCBsaXN0Ml9jPCBULEMxLEMyID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDNfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzCi0gICAgPgotc3RydWN0IGxpc3Q0X2MKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzw0PgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzAgPgotICAgICAgICAsIGxpc3QzX2M8IFQsQzEsQzIsQzMgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0NF9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQKLSAgICA+Ci1zdHJ1Y3QgbGlzdDVfYwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDU+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMCA+Ci0gICAgICAgICwgbGlzdDRfYzwgVCxDMSxDMixDMyxDNCA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3Q1X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNQotICAgID4KLXN0cnVjdCBsaXN0Nl9jCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188Nj4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMwID4KLSAgICAgICAgLCBsaXN0NV9jPCBULEMxLEMyLEMzLEM0LEM1ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDZfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2Ci0gICAgPgotc3RydWN0IGxpc3Q3X2MKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzw3PgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzAgPgotICAgICAgICAsIGxpc3Q2X2M8IFQsQzEsQzIsQzMsQzQsQzUsQzYgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0N19jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcKLSAgICA+Ci1zdHJ1Y3QgbGlzdDhfYwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDg+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMCA+Ci0gICAgICAgICwgbGlzdDdfYzwgVCxDMSxDMixDMyxDNCxDNSxDNixDNyA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3Q4X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOAotICAgID4KLXN0cnVjdCBsaXN0OV9jCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188OT4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMwID4KLSAgICAgICAgLCBsaXN0OF9jPCBULEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDlfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5Ci0gICAgPgotc3RydWN0IGxpc3QxMF9jCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188MTA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMCA+Ci0gICAgICAgICwgbGlzdDlfYzwgVCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QxMF9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9saXN0MjAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9saXN0MjAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YjY0Mjk1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vbGlzdDIwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE2OSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9saXN0L2xpc3QyMC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwCi0gICAgPgotc3RydWN0IGxpc3QxMQotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDExPgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDEwPCBUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MTEgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExCi0gICAgPgotc3RydWN0IGxpc3QxMgotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDEyPgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDExPCBUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDEyIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyCi0gICAgPgotc3RydWN0IGxpc3QxMwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDEzPgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDEyPCBUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QxMyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzCi0gICAgPgotc3RydWN0IGxpc3QxNAotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDE0PgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDEzPCBUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MTQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgPgotc3RydWN0IGxpc3QxNQotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDE1PgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDE0PCBUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDE1IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1Ci0gICAgPgotc3RydWN0IGxpc3QxNgotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDE2PgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDE1PCBUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QxNiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2Ci0gICAgPgotc3RydWN0IGxpc3QxNwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDE3PgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDE2PCBUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MTcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3Ci0gICAgPgotc3RydWN0IGxpc3QxOAotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDE4PgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDE3PCBUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDE4IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4Ci0gICAgPgotc3RydWN0IGxpc3QxOQotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDE5PgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDE4PCBUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QxOSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgPgotc3RydWN0IGxpc3QyMAotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDIwPgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDE5PCBUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTkgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MjAgdHlwZTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2xpc3QyMF9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vbGlzdDIwX2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYzM0ZGVmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vbGlzdDIwX2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTczICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2xpc3QvbGlzdDIwX2MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICA+Ci1zdHJ1Y3QgbGlzdDExX2MKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwxMT4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMwID4KLSAgICAgICAgLCBsaXN0MTBfYzwgVCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MTFfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEKLSAgICA+Ci1zdHJ1Y3QgbGlzdDEyX2MKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwxMj4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMwID4KLSAgICAgICAgLCBsaXN0MTFfYzwgVCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDEyX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMgotICAgID4KLXN0cnVjdCBsaXN0MTNfYwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDEzPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzAgPgotICAgICAgICAsIGxpc3QxMl9jPCBULEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDEzX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMKLSAgICA+Ci1zdHJ1Y3QgbGlzdDE0X2MKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwxND4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMwID4KLSAgICAgICAgLCBsaXN0MTNfYzwgVCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MTRfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQKLSAgICA+Ci1zdHJ1Y3QgbGlzdDE1X2MKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwxNT4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMwID4KLSAgICAgICAgLCBsaXN0MTRfYzwgVCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDE1X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNQotICAgID4KLXN0cnVjdCBsaXN0MTZfYwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDE2PgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzAgPgotICAgICAgICAsIGxpc3QxNV9jPCBULEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDE2X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYKLSAgICA+Ci1zdHJ1Y3QgbGlzdDE3X2MKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwxNz4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMwID4KLSAgICAgICAgLCBsaXN0MTZfYzwgVCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MTdfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcKLSAgICA+Ci1zdHJ1Y3QgbGlzdDE4X2MKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwxOD4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMwID4KLSAgICAgICAgLCBsaXN0MTdfYzwgVCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDE4X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOAotICAgID4KLXN0cnVjdCBsaXN0MTlfYwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDE5PgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzAgPgotICAgICAgICAsIGxpc3QxOF9jPCBULEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDE5X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTkKLSAgICA+Ci1zdHJ1Y3QgbGlzdDIwX2MKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwyMD4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMwID4KLSAgICAgICAgLCBsaXN0MTlfYzwgVCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTkgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MjBfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vbGlzdDMwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vbGlzdDMwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWNkY2FjNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2xpc3QzMC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxODkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbGlzdC9saXN0MzAuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwCi0gICAgPgotc3RydWN0IGxpc3QyMQotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDIxPgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDIwPCBUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDIxIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxCi0gICAgPgotc3RydWN0IGxpc3QyMgotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDIyPgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDIxPCBUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QyMiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyCi0gICAgPgotc3RydWN0IGxpc3QyMwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDIzPgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDIyPCBUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MjMgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzCi0gICAgPgotc3RydWN0IGxpc3QyNAotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDI0PgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDIzPCBUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDI0IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgPgotc3RydWN0IGxpc3QyNQotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDI1PgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDI0PCBUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QyNSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1Ci0gICAgPgotc3RydWN0IGxpc3QyNgotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDI2PgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDI1PCBUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MjYgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2Ci0gICAgPgotc3RydWN0IGxpc3QyNwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDI3PgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDI2PCBUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDI3IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3Ci0gICAgPgotc3RydWN0IGxpc3QyOAotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDI4PgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDI3PCBUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2LFQyNyA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QyOCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4Ci0gICAgPgotc3RydWN0IGxpc3QyOQotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDI5PgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDI4PCBUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2LFQyNyxUMjggPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MjkgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgPgotc3RydWN0IGxpc3QzMAotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDMwPgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDI5PCBUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2LFQyNyxUMjgsVDI5ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDMwIHR5cGU7Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9saXN0MzBfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2xpc3QzMF9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzM5ODE1MC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2xpc3QzMF9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE4MyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9saXN0L2xpc3QzMF9jLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgID4KLXN0cnVjdCBsaXN0MjFfYwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDIxPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzAgPgotICAgICAgICAsIGxpc3QyMF9jPCBULEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MjFfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxCi0gICAgPgotc3RydWN0IGxpc3QyMl9jCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188MjI+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMCA+Ci0gICAgICAgICwgbGlzdDIxX2M8IFQsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5LEMyMCxDMjEgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MjJfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMgotICAgID4KLXN0cnVjdCBsaXN0MjNfYwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDIzPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzAgPgotICAgICAgICAsIGxpc3QyMl9jPCBULEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAsQzIxLEMyMiA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QyM19jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMwotICAgID4KLXN0cnVjdCBsaXN0MjRfYwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDI0PgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzAgPgotICAgICAgICAsIGxpc3QyM19jPCBULEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAsQzIxLEMyMixDMjMgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MjRfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0Ci0gICAgPgotc3RydWN0IGxpc3QyNV9jCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188MjU+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMCA+Ci0gICAgICAgICwgbGlzdDI0X2M8IFQsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5LEMyMCxDMjEsQzIyLEMyMyxDMjQgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MjVfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNQotICAgID4KLXN0cnVjdCBsaXN0MjZfYwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDI2PgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzAgPgotICAgICAgICAsIGxpc3QyNV9jPCBULEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAsQzIxLEMyMixDMjMsQzI0LEMyNSA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QyNl9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNgotICAgID4KLXN0cnVjdCBsaXN0MjdfYwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDI3PgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzAgPgotICAgICAgICAsIGxpc3QyNl9jPCBULEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAsQzIxLEMyMixDMjMsQzI0LEMyNSxDMjYgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MjdfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3Ci0gICAgPgotc3RydWN0IGxpc3QyOF9jCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188Mjg+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMCA+Ci0gICAgICAgICwgbGlzdDI3X2M8IFQsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5LEMyMCxDMjEsQzIyLEMyMyxDMjQsQzI1LEMyNixDMjcgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MjhfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOAotICAgID4KLXN0cnVjdCBsaXN0MjlfYwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDI5PgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzAgPgotICAgICAgICAsIGxpc3QyOF9jPCBULEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAsQzIxLEMyMixDMjMsQzI0LEMyNSxDMjYsQzI3LEMyOCA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QyOV9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOQotICAgID4KLXN0cnVjdCBsaXN0MzBfYwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDMwPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzAgPgotICAgICAgICAsIGxpc3QyOV9jPCBULEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAsQzIxLEMyMixDMjMsQzI0LEMyNSxDMjYsQzI3LEMyOCxDMjkgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MzBfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vbGlzdDQwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vbGlzdDQwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODEwYWU5OS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2xpc3Q0MC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMDkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvbGlzdC9saXN0NDAuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAKLSAgICA+Ci1zdHJ1Y3QgbGlzdDMxCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188MzE+Ci0gICAgICAgICwgVDAKLSAgICAgICAgLCBsaXN0MzA8IFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxLFQyMixUMjMsVDI0LFQyNSxUMjYsVDI3LFQyOCxUMjksVDMwID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDMxIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEKLSAgICA+Ci1zdHJ1Y3QgbGlzdDMyCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188MzI+Ci0gICAgICAgICwgVDAKLSAgICAgICAgLCBsaXN0MzE8IFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxLFQyMixUMjMsVDI0LFQyNSxUMjYsVDI3LFQyOCxUMjksVDMwLFQzMSA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QzMiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIKLSAgICA+Ci1zdHJ1Y3QgbGlzdDMzCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188MzM+Ci0gICAgICAgICwgVDAKLSAgICAgICAgLCBsaXN0MzI8IFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxLFQyMixUMjMsVDI0LFQyNSxUMjYsVDI3LFQyOCxUMjksVDMwLFQzMSxUMzIgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MzMgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMKLSAgICA+Ci1zdHJ1Y3QgbGlzdDM0Ci0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188MzQ+Ci0gICAgICAgICwgVDAKLSAgICAgICAgLCBsaXN0MzM8IFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxLFQyMixUMjMsVDI0LFQyNSxUMjYsVDI3LFQyOCxUMjksVDMwLFQzMSxUMzIsVDMzID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDM0IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICA+Ci1zdHJ1Y3QgbGlzdDM1Ci0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188MzU+Ci0gICAgICAgICwgVDAKLSAgICAgICAgLCBsaXN0MzQ8IFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxLFQyMixUMjMsVDI0LFQyNSxUMjYsVDI3LFQyOCxUMjksVDMwLFQzMSxUMzIsVDMzLFQzNCA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QzNSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUKLSAgICA+Ci1zdHJ1Y3QgbGlzdDM2Ci0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188MzY+Ci0gICAgICAgICwgVDAKLSAgICAgICAgLCBsaXN0MzU8IFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxLFQyMixUMjMsVDI0LFQyNSxUMjYsVDI3LFQyOCxUMjksVDMwLFQzMSxUMzIsVDMzLFQzNCxUMzUgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MzYgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1LCB0eXBlbmFtZSBUMzYKLSAgICA+Ci1zdHJ1Y3QgbGlzdDM3Ci0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188Mzc+Ci0gICAgICAgICwgVDAKLSAgICAgICAgLCBsaXN0MzY8IFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxLFQyMixUMjMsVDI0LFQyNSxUMjYsVDI3LFQyOCxUMjksVDMwLFQzMSxUMzIsVDMzLFQzNCxUMzUsVDM2ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDM3IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICAsIHR5cGVuYW1lIFQzNSwgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcKLSAgICA+Ci1zdHJ1Y3QgbGlzdDM4Ci0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188Mzg+Ci0gICAgICAgICwgVDAKLSAgICAgICAgLCBsaXN0Mzc8IFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxLFQyMixUMjMsVDI0LFQyNSxUMjYsVDI3LFQyOCxUMjksVDMwLFQzMSxUMzIsVDMzLFQzNCxUMzUsVDM2LFQzNyA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QzOCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgKLSAgICA+Ci1zdHJ1Y3QgbGlzdDM5Ci0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188Mzk+Ci0gICAgICAgICwgVDAKLSAgICAgICAgLCBsaXN0Mzg8IFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxLFQyMixUMjMsVDI0LFQyNSxUMjYsVDI3LFQyOCxUMjksVDMwLFQzMSxUMzIsVDMzLFQzNCxUMzUsVDM2LFQzNyxUMzggPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0MzkgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1LCB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzkKLSAgICA+Ci1zdHJ1Y3QgbGlzdDQwCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188NDA+Ci0gICAgICAgICwgVDAKLSAgICAgICAgLCBsaXN0Mzk8IFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxLFQyMixUMjMsVDI0LFQyNSxUMjYsVDI3LFQyOCxUMjksVDMwLFQzMSxUMzIsVDMzLFQzNCxUMzUsVDM2LFQzNyxUMzgsVDM5ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDQwIHR5cGU7Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9saXN0NDBfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2xpc3Q0MF9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMThlZDY0OS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2xpc3Q0MF9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE5MyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9saXN0L2xpc3Q0MF9jLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICA+Ci1zdHJ1Y3QgbGlzdDMxX2MKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwzMT4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMwID4KLSAgICAgICAgLCBsaXN0MzBfYzwgVCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwLEMyMSxDMjIsQzIzLEMyNCxDMjUsQzI2LEMyNyxDMjgsQzI5LEMzMCA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QzMV9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxCi0gICAgPgotc3RydWN0IGxpc3QzMl9jCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188MzI+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMCA+Ci0gICAgICAgICwgbGlzdDMxX2M8IFQsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5LEMyMCxDMjEsQzIyLEMyMyxDMjQsQzI1LEMyNixDMjcsQzI4LEMyOSxDMzAsQzMxID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDMyX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyCi0gICAgPgotc3RydWN0IGxpc3QzM19jCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188MzM+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMCA+Ci0gICAgICAgICwgbGlzdDMyX2M8IFQsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5LEMyMCxDMjEsQzIyLEMyMyxDMjQsQzI1LEMyNixDMjcsQzI4LEMyOSxDMzAsQzMxLEMzMiA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QzM19jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMKLSAgICA+Ci1zdHJ1Y3QgbGlzdDM0X2MKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwzND4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMwID4KLSAgICAgICAgLCBsaXN0MzNfYzwgVCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwLEMyMSxDMjIsQzIzLEMyNCxDMjUsQzI2LEMyNyxDMjgsQzI5LEMzMCxDMzEsQzMyLEMzMyA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QzNF9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMsIFQgQzM0Ci0gICAgPgotc3RydWN0IGxpc3QzNV9jCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188MzU+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMCA+Ci0gICAgICAgICwgbGlzdDM0X2M8IFQsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5LEMyMCxDMjEsQzIyLEMyMyxDMjQsQzI1LEMyNixDMjcsQzI4LEMyOSxDMzAsQzMxLEMzMixDMzMsQzM0ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDM1X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1Ci0gICAgPgotc3RydWN0IGxpc3QzNl9jCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188MzY+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMCA+Ci0gICAgICAgICwgbGlzdDM1X2M8IFQsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5LEMyMCxDMjEsQzIyLEMyMyxDMjQsQzI1LEMyNixDMjcsQzI4LEMyOSxDMzAsQzMxLEMzMixDMzMsQzM0LEMzNSA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QzNl9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMsIFQgQzM0LCBUIEMzNSwgVCBDMzYKLSAgICA+Ci1zdHJ1Y3QgbGlzdDM3X2MKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzwzNz4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMwID4KLSAgICAgICAgLCBsaXN0MzZfYzwgVCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwLEMyMSxDMjIsQzIzLEMyNCxDMjUsQzI2LEMyNyxDMjgsQzI5LEMzMCxDMzEsQzMyLEMzMyxDMzQsQzM1LEMzNiA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QzN19jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMsIFQgQzM0LCBUIEMzNSwgVCBDMzYsIFQgQzM3Ci0gICAgPgotc3RydWN0IGxpc3QzOF9jCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188Mzg+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMCA+Ci0gICAgICAgICwgbGlzdDM3X2M8IFQsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5LEMyMCxDMjEsQzIyLEMyMyxDMjQsQzI1LEMyNixDMjcsQzI4LEMyOSxDMzAsQzMxLEMzMixDMzMsQzM0LEMzNSxDMzYsQzM3ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDM4X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1LCBUIEMzNiwgVCBDMzcsIFQgQzM4Ci0gICAgPgotc3RydWN0IGxpc3QzOV9jCi0gICAgOiBsX2l0ZW08Ci0gICAgICAgICAgbG9uZ188Mzk+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMCA+Ci0gICAgICAgICwgbGlzdDM4X2M8IFQsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5LEMyMCxDMjEsQzIyLEMyMyxDMjQsQzI1LEMyNixDMjcsQzI4LEMyOSxDMzAsQzMxLEMzMixDMzMsQzM0LEMzNSxDMzYsQzM3LEMzOCA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3QzOV9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMsIFQgQzM0LCBUIEMzNSwgVCBDMzYsIFQgQzM3LCBUIEMzOCwgVCBDMzkKLSAgICA+Ci1zdHJ1Y3QgbGlzdDQwX2MKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzw0MD4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMwID4KLSAgICAgICAgLCBsaXN0MzlfYzwgVCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwLEMyMSxDMjIsQzIzLEMyNCxDMjUsQzI2LEMyNyxDMjgsQzI5LEMzMCxDMzEsQzMyLEMzMyxDMzQsQzM1LEMzNixDMzcsQzM4LEMzOSA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3Q0MF9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9saXN0NTAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi9saXN0NTAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YjhmZGE1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vbGlzdDUwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIyOSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC9saXN0L2xpc3Q1MC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOQotICAgICwgdHlwZW5hbWUgVDQwCi0gICAgPgotc3RydWN0IGxpc3Q0MQotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDQxPgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDQwPCBUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2LFQyNyxUMjgsVDI5LFQzMCxUMzEsVDMyLFQzMyxUMzQsVDM1LFQzNixUMzcsVDM4LFQzOSxUNDAgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0NDEgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1LCB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzkKLSAgICAsIHR5cGVuYW1lIFQ0MCwgdHlwZW5hbWUgVDQxCi0gICAgPgotc3RydWN0IGxpc3Q0MgotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDQyPgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDQxPCBUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2LFQyNyxUMjgsVDI5LFQzMCxUMzEsVDMyLFQzMyxUMzQsVDM1LFQzNixUMzcsVDM4LFQzOSxUNDAsVDQxID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDQyIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICAsIHR5cGVuYW1lIFQzNSwgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5Ci0gICAgLCB0eXBlbmFtZSBUNDAsIHR5cGVuYW1lIFQ0MSwgdHlwZW5hbWUgVDQyCi0gICAgPgotc3RydWN0IGxpc3Q0MwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDQzPgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDQyPCBUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2LFQyNyxUMjgsVDI5LFQzMCxUMzEsVDMyLFQzMyxUMzQsVDM1LFQzNixUMzcsVDM4LFQzOSxUNDAsVDQxLFQ0MiA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3Q0MyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOQotICAgICwgdHlwZW5hbWUgVDQwLCB0eXBlbmFtZSBUNDEsIHR5cGVuYW1lIFQ0MiwgdHlwZW5hbWUgVDQzCi0gICAgPgotc3RydWN0IGxpc3Q0NAotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDQ0PgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDQzPCBUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2LFQyNyxUMjgsVDI5LFQzMCxUMzEsVDMyLFQzMyxUMzQsVDM1LFQzNixUMzcsVDM4LFQzOSxUNDAsVDQxLFQ0MixUNDMgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0NDQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1LCB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzkKLSAgICAsIHR5cGVuYW1lIFQ0MCwgdHlwZW5hbWUgVDQxLCB0eXBlbmFtZSBUNDIsIHR5cGVuYW1lIFQ0MywgdHlwZW5hbWUgVDQ0Ci0gICAgPgotc3RydWN0IGxpc3Q0NQotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDQ1PgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDQ0PCBUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2LFQyNyxUMjgsVDI5LFQzMCxUMzEsVDMyLFQzMyxUMzQsVDM1LFQzNixUMzcsVDM4LFQzOSxUNDAsVDQxLFQ0MixUNDMsVDQ0ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDQ1IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICAsIHR5cGVuYW1lIFQzNSwgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5Ci0gICAgLCB0eXBlbmFtZSBUNDAsIHR5cGVuYW1lIFQ0MSwgdHlwZW5hbWUgVDQyLCB0eXBlbmFtZSBUNDMsIHR5cGVuYW1lIFQ0NAotICAgICwgdHlwZW5hbWUgVDQ1Ci0gICAgPgotc3RydWN0IGxpc3Q0NgotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDQ2PgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDQ1PCBUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2LFQyNyxUMjgsVDI5LFQzMCxUMzEsVDMyLFQzMyxUMzQsVDM1LFQzNixUMzcsVDM4LFQzOSxUNDAsVDQxLFQ0MixUNDMsVDQ0LFQ0NSA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3Q0NiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOQotICAgICwgdHlwZW5hbWUgVDQwLCB0eXBlbmFtZSBUNDEsIHR5cGVuYW1lIFQ0MiwgdHlwZW5hbWUgVDQzLCB0eXBlbmFtZSBUNDQKLSAgICAsIHR5cGVuYW1lIFQ0NSwgdHlwZW5hbWUgVDQ2Ci0gICAgPgotc3RydWN0IGxpc3Q0NwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDQ3PgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDQ2PCBUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2LFQyNyxUMjgsVDI5LFQzMCxUMzEsVDMyLFQzMyxUMzQsVDM1LFQzNixUMzcsVDM4LFQzOSxUNDAsVDQxLFQ0MixUNDMsVDQ0LFQ0NSxUNDYgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0NDcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1LCB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzkKLSAgICAsIHR5cGVuYW1lIFQ0MCwgdHlwZW5hbWUgVDQxLCB0eXBlbmFtZSBUNDIsIHR5cGVuYW1lIFQ0MywgdHlwZW5hbWUgVDQ0Ci0gICAgLCB0eXBlbmFtZSBUNDUsIHR5cGVuYW1lIFQ0NiwgdHlwZW5hbWUgVDQ3Ci0gICAgPgotc3RydWN0IGxpc3Q0OAotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDQ4PgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDQ3PCBUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2LFQyNyxUMjgsVDI5LFQzMCxUMzEsVDMyLFQzMyxUMzQsVDM1LFQzNixUMzcsVDM4LFQzOSxUNDAsVDQxLFQ0MixUNDMsVDQ0LFQ0NSxUNDYsVDQ3ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDQ4IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICAsIHR5cGVuYW1lIFQzNSwgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5Ci0gICAgLCB0eXBlbmFtZSBUNDAsIHR5cGVuYW1lIFQ0MSwgdHlwZW5hbWUgVDQyLCB0eXBlbmFtZSBUNDMsIHR5cGVuYW1lIFQ0NAotICAgICwgdHlwZW5hbWUgVDQ1LCB0eXBlbmFtZSBUNDYsIHR5cGVuYW1lIFQ0NywgdHlwZW5hbWUgVDQ4Ci0gICAgPgotc3RydWN0IGxpc3Q0OQotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDQ5PgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDQ4PCBUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2LFQyNyxUMjgsVDI5LFQzMCxUMzEsVDMyLFQzMyxUMzQsVDM1LFQzNixUMzcsVDM4LFQzOSxUNDAsVDQxLFQ0MixUNDMsVDQ0LFQ0NSxUNDYsVDQ3LFQ0OCA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIGxpc3Q0OSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOQotICAgICwgdHlwZW5hbWUgVDQwLCB0eXBlbmFtZSBUNDEsIHR5cGVuYW1lIFQ0MiwgdHlwZW5hbWUgVDQzLCB0eXBlbmFtZSBUNDQKLSAgICAsIHR5cGVuYW1lIFQ0NSwgdHlwZW5hbWUgVDQ2LCB0eXBlbmFtZSBUNDcsIHR5cGVuYW1lIFQ0OCwgdHlwZW5hbWUgVDQ5Ci0gICAgPgotc3RydWN0IGxpc3Q1MAotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDUwPgotICAgICAgICAsIFQwCi0gICAgICAgICwgbGlzdDQ5PCBUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2LFQyNyxUMjgsVDI5LFQzMCxUMzEsVDMyLFQzMyxUMzQsVDM1LFQzNixUMzcsVDM4LFQzOSxUNDAsVDQxLFQ0MixUNDMsVDQ0LFQ0NSxUNDYsVDQ3LFQ0OCxUNDkgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0NTAgdHlwZTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL2xpc3Q1MF9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vbGlzdDUwX2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMGY2MTllLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vbGlzdDUwX2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjAzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL2xpc3QvbGlzdDUwX2MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1LCBUIEMzNiwgVCBDMzcsIFQgQzM4LCBUIEMzOSwgVCBDNDAKLSAgICA+Ci1zdHJ1Y3QgbGlzdDQxX2MKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzw0MT4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMwID4KLSAgICAgICAgLCBsaXN0NDBfYzwgVCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwLEMyMSxDMjIsQzIzLEMyNCxDMjUsQzI2LEMyNyxDMjgsQzI5LEMzMCxDMzEsQzMyLEMzMyxDMzQsQzM1LEMzNixDMzcsQzM4LEMzOSxDNDAgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0NDFfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNCwgVCBDMzUsIFQgQzM2LCBUIEMzNywgVCBDMzgsIFQgQzM5LCBUIEM0MAotICAgICwgVCBDNDEKLSAgICA+Ci1zdHJ1Y3QgbGlzdDQyX2MKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzw0Mj4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMwID4KLSAgICAgICAgLCBsaXN0NDFfYzwgVCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwLEMyMSxDMjIsQzIzLEMyNCxDMjUsQzI2LEMyNyxDMjgsQzI5LEMzMCxDMzEsQzMyLEMzMyxDMzQsQzM1LEMzNixDMzcsQzM4LEMzOSxDNDAsQzQxID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDQyX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1LCBUIEMzNiwgVCBDMzcsIFQgQzM4LCBUIEMzOSwgVCBDNDAKLSAgICAsIFQgQzQxLCBUIEM0MgotICAgID4KLXN0cnVjdCBsaXN0NDNfYwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDQzPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzAgPgotICAgICAgICAsIGxpc3Q0Ml9jPCBULEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAsQzIxLEMyMixDMjMsQzI0LEMyNSxDMjYsQzI3LEMyOCxDMjksQzMwLEMzMSxDMzIsQzMzLEMzNCxDMzUsQzM2LEMzNyxDMzgsQzM5LEM0MCxDNDEsQzQyID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDQzX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1LCBUIEMzNiwgVCBDMzcsIFQgQzM4LCBUIEMzOSwgVCBDNDAKLSAgICAsIFQgQzQxLCBUIEM0MiwgVCBDNDMKLSAgICA+Ci1zdHJ1Y3QgbGlzdDQ0X2MKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzw0ND4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMwID4KLSAgICAgICAgLCBsaXN0NDNfYzwgVCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwLEMyMSxDMjIsQzIzLEMyNCxDMjUsQzI2LEMyNyxDMjgsQzI5LEMzMCxDMzEsQzMyLEMzMyxDMzQsQzM1LEMzNixDMzcsQzM4LEMzOSxDNDAsQzQxLEM0MixDNDMgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0NDRfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNCwgVCBDMzUsIFQgQzM2LCBUIEMzNywgVCBDMzgsIFQgQzM5LCBUIEM0MAotICAgICwgVCBDNDEsIFQgQzQyLCBUIEM0MywgVCBDNDQKLSAgICA+Ci1zdHJ1Y3QgbGlzdDQ1X2MKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzw0NT4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMwID4KLSAgICAgICAgLCBsaXN0NDRfYzwgVCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwLEMyMSxDMjIsQzIzLEMyNCxDMjUsQzI2LEMyNyxDMjgsQzI5LEMzMCxDMzEsQzMyLEMzMyxDMzQsQzM1LEMzNixDMzcsQzM4LEMzOSxDNDAsQzQxLEM0MixDNDMsQzQ0ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDQ1X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1LCBUIEMzNiwgVCBDMzcsIFQgQzM4LCBUIEMzOSwgVCBDNDAKLSAgICAsIFQgQzQxLCBUIEM0MiwgVCBDNDMsIFQgQzQ0LCBUIEM0NQotICAgID4KLXN0cnVjdCBsaXN0NDZfYwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDQ2PgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzAgPgotICAgICAgICAsIGxpc3Q0NV9jPCBULEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAsQzIxLEMyMixDMjMsQzI0LEMyNSxDMjYsQzI3LEMyOCxDMjksQzMwLEMzMSxDMzIsQzMzLEMzNCxDMzUsQzM2LEMzNyxDMzgsQzM5LEM0MCxDNDEsQzQyLEM0MyxDNDQsQzQ1ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDQ2X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1LCBUIEMzNiwgVCBDMzcsIFQgQzM4LCBUIEMzOSwgVCBDNDAKLSAgICAsIFQgQzQxLCBUIEM0MiwgVCBDNDMsIFQgQzQ0LCBUIEM0NSwgVCBDNDYKLSAgICA+Ci1zdHJ1Y3QgbGlzdDQ3X2MKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzw0Nz4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMwID4KLSAgICAgICAgLCBsaXN0NDZfYzwgVCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwLEMyMSxDMjIsQzIzLEMyNCxDMjUsQzI2LEMyNyxDMjgsQzI5LEMzMCxDMzEsQzMyLEMzMyxDMzQsQzM1LEMzNixDMzcsQzM4LEMzOSxDNDAsQzQxLEM0MixDNDMsQzQ0LEM0NSxDNDYgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0NDdfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNCwgVCBDMzUsIFQgQzM2LCBUIEMzNywgVCBDMzgsIFQgQzM5LCBUIEM0MAotICAgICwgVCBDNDEsIFQgQzQyLCBUIEM0MywgVCBDNDQsIFQgQzQ1LCBUIEM0NiwgVCBDNDcKLSAgICA+Ci1zdHJ1Y3QgbGlzdDQ4X2MKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzw0OD4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMwID4KLSAgICAgICAgLCBsaXN0NDdfYzwgVCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwLEMyMSxDMjIsQzIzLEMyNCxDMjUsQzI2LEMyNyxDMjgsQzI5LEMzMCxDMzEsQzMyLEMzMyxDMzQsQzM1LEMzNixDMzcsQzM4LEMzOSxDNDAsQzQxLEM0MixDNDMsQzQ0LEM0NSxDNDYsQzQ3ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDQ4X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1LCBUIEMzNiwgVCBDMzcsIFQgQzM4LCBUIEMzOSwgVCBDNDAKLSAgICAsIFQgQzQxLCBUIEM0MiwgVCBDNDMsIFQgQzQ0LCBUIEM0NSwgVCBDNDYsIFQgQzQ3LCBUIEM0OAotICAgID4KLXN0cnVjdCBsaXN0NDlfYwotICAgIDogbF9pdGVtPAotICAgICAgICAgIGxvbmdfPDQ5PgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzAgPgotICAgICAgICAsIGxpc3Q0OF9jPCBULEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAsQzIxLEMyMixDMjMsQzI0LEMyNSxDMjYsQzI3LEMyOCxDMjksQzMwLEMzMSxDMzIsQzMzLEMzNCxDMzUsQzM2LEMzNyxDMzgsQzM5LEM0MCxDNDEsQzQyLEM0MyxDNDQsQzQ1LEM0NixDNDcsQzQ4ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgbGlzdDQ5X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1LCBUIEMzNiwgVCBDMzcsIFQgQzM4LCBUIEMzOSwgVCBDNDAKLSAgICAsIFQgQzQxLCBUIEM0MiwgVCBDNDMsIFQgQzQ0LCBUIEM0NSwgVCBDNDYsIFQgQzQ3LCBUIEM0OCwgVCBDNDkKLSAgICA+Ci1zdHJ1Y3QgbGlzdDUwX2MKLSAgICA6IGxfaXRlbTwKLSAgICAgICAgICBsb25nXzw1MD4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMwID4KLSAgICAgICAgLCBsaXN0NDlfYzwgVCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwLEMyMSxDMjIsQzIzLEMyNCxDMjUsQzI2LEMyNyxDMjgsQzI5LEMzMCxDMzEsQzMyLEMzMyxDMzQsQzM1LEMzNixDMzcsQzM4LEMzOSxDNDAsQzQxLEM0MixDNDMsQzQ0LEM0NSxDNDYsQzQ3LEM0OCxDNDkgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiBsaXN0NTBfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9wdXNoX2JhY2suaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL3B1c2hfYmFjay5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY4Mjc1OGMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL3B1c2hfYmFjay5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0xJU1RfQVVYX1BVU0hfQkFDS19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0xJU1RfQVVYX1BVU0hfQkFDS19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHB1c2hfYmFjay5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9wdXNoX2JhY2tfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYm9vbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy90YWcuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBoYXNfcHVzaF9iYWNrX2ltcGw7Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBoYXNfcHVzaF9iYWNrX2ltcGw8IGF1eDo6bGlzdF90YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBTZXEgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBmYWxzZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfTElTVF9BVVhfUFVTSF9CQUNLX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL3B1c2hfZnJvbnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9hdXhfL3B1c2hfZnJvbnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMjMzODgyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9wdXNoX2Zyb250LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfTElTVF9BVVhfUFVTSF9GUk9OVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0xJU1RfQVVYX1BVU0hfRlJPTlRfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBwdXNoX2Zyb250LmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3B1c2hfZnJvbnRfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbmV4dC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9pdGVtLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGlzdC9hdXhfL3RhZy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6Omxpc3RfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTGlzdCwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBsX2l0ZW08Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIG5leHQ8dHlwZW5hbWUgTGlzdDo6c2l6ZT46OnR5cGUKLSAgICAgICAgICAgICwgVAotICAgICAgICAgICAgLCB0eXBlbmFtZSBMaXN0Ojp0eXBlCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfTElTVF9BVVhfUFVTSF9GUk9OVF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9zaXplLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9zaXplLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWU5YzVkMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vc2l6ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0xJU1RfQVVYX1NJWkVfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9MSVNUX0FVWF9TSVpFX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogc2l6ZS5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9zaXplX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy90YWcuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNpemVfaW1wbDwgYXV4OjpsaXN0X3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIExpc3QgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBMaXN0OjpzaXplCi0gICAgewotICAgIH07Ci19OwotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0xJU1RfQVVYX1NJWkVfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2F1eF8vdGFnLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy90YWcuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZWE1M2MyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy90YWcuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9MSVNUX0FVWF9UQUdfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9MSVNUX0FVWF9UQUdfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiB0YWcuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgeyBuYW1lc3BhY2UgYXV4IHsKLQotc3RydWN0IGxpc3RfdGFnOwotc3RydWN0IGxfaXRlcl90YWc7Ci0KLX19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0xJU1RfQVVYX1RBR19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvbGlzdDAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9saXN0MC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRmYWU5MzcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9saXN0MC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0xJU1RfTElTVDBfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9MSVNUX0xJU1QwX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogbGlzdDAuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbG9uZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbmEuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9saXN0L2F1eF8vcHVzaF9mcm9udC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9wb3BfZnJvbnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9saXN0L2F1eF8vcHVzaF9iYWNrLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGlzdC9hdXhfL2Zyb250LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGlzdC9hdXhfL2NsZWFyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGlzdC9hdXhfL08xX3NpemUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9saXN0L2F1eF8vc2l6ZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9lbXB0eS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpc3QvYXV4Xy9iZWdpbl9lbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9saXN0L2F1eF8vaXRlbS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRHVtbXkgPSBuYSA+IHN0cnVjdCBsaXN0MDsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgbGlzdDA8bmE+Ci0gICAgOiBsX2VuZAotewotICAgIHR5cGVkZWYgbF9lbmQgdHlwZTsKLX07Ci0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfTElTVF9MSVNUMF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvbGlzdDBfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2xpc3QwX2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNzYxY2FiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvbGlzdDBfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0xJU1RfTElTVDBfQ19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0xJU1RfTElTVDBfQ19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGxpc3QwX2MuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGlzdC9saXN0MC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2ludGVncmFsX2MuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgbGlzdDBfYwotICAgIDogbF9lbmQKLXsKLSAgICB0eXBlZGVmIGxfZW5kIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0xJU1RfTElTVDBfQ19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvbGlzdDEwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvbGlzdDEwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjhjYzczMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2xpc3QxMC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0xJU1RfTElTVDEwX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfTElTVF9MSVNUMTBfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBsaXN0MTAuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9saXN0L2xpc3QwLmhwcD4KLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3VzZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUykgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BSRVBST0NFU1NFRF9IRUFERVIgbGlzdDEwLmhwcAotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9saXN0L2F1eF8vaW5jbHVkZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jZWxzZQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGUuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotIyAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEgXAotICAgICgzLCgxLCAxMCwgPG5kbmJvb3N0L21wbC9saXN0L2F1eF8vbnVtYmVyZWQuaHBwPikpCi0jICAgaW5jbHVkZSBORE5CT09TVF9QUF9JVEVSQVRFKCkKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9MSVNUX0xJU1QxMF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvbGlzdDEwX2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9saXN0MTBfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1OTc1Y2YuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9saXN0MTBfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX0xJU1RfTElTVDEwX0NfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9MSVNUX0xJU1QxMF9DX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogbGlzdDEwX2MuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9saXN0L2xpc3QwX2MuaHBwPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdXNlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTKSBcCi0gJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFJFUFJPQ0VTU0VEX0hFQURFUiBsaXN0MTBfYy5ocHAKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGlzdC9hdXhfL2luY2x1ZGVfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2Vsc2UKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRlLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLSMgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18xIFwKLSAgICAoMywoMSwgMTAsIDxuZG5ib29zdC9tcGwvbGlzdC9hdXhfL251bWJlcmVkX2MuaHBwPikpCi0jICAgaW5jbHVkZSBORE5CT09TVF9QUF9JVEVSQVRFKCkKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9MSVNUX0xJU1QxMF9DX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9saXN0MjAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9saXN0MjAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzODE3ZTU0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvbGlzdDIwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfTElTVF9MSVNUMjBfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9MSVNUX0xJU1QyMF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGxpc3QyMC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpc3QvbGlzdDEwLmhwcD4KLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3VzZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUykgXAotICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BSRVBST0NFU1NFRF9IRUFERVIgbGlzdDIwLmhwcAotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9saXN0L2F1eF8vaW5jbHVkZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jZWxzZQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGUuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotIyAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEgXAotICAgICgzLCgxMSwgMjAsIDxuZG5ib29zdC9tcGwvbGlzdC9hdXhfL251bWJlcmVkLmhwcD4pKQotIyAgIGluY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfTElTVF9MSVNUMjBfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2xpc3QyMF9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvbGlzdDIwX2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMjY3YjVmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvbGlzdDIwX2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9MSVNUX0xJU1QyMF9DX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfTElTVF9MSVNUMjBfQ19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGxpc3QyMF9jLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGlzdC9saXN0MTBfYy5ocHA+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy91c2VfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMpIFwKLSAmJiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTRURfSEVBREVSIGxpc3QyMF9jLmhwcAotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9saXN0L2F1eF8vaW5jbHVkZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jZWxzZQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGUuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotIyAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEgXAotICAgICgzLCgxMSwgMjAsIDxuZG5ib29zdC9tcGwvbGlzdC9hdXhfL251bWJlcmVkX2MuaHBwPikpCi0jICAgaW5jbHVkZSBORE5CT09TVF9QUF9JVEVSQVRFKCkKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9MSVNUX0xJU1QyMF9DX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9saXN0MzAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9saXN0MzAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5N2M3M2EzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvbGlzdDMwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfTElTVF9MSVNUMzBfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9MSVNUX0xJU1QzMF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGxpc3QzMC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpc3QvbGlzdDIwLmhwcD4KLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3VzZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUykgXAotICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BSRVBST0NFU1NFRF9IRUFERVIgbGlzdDMwLmhwcAotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9saXN0L2F1eF8vaW5jbHVkZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jZWxzZQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGUuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotIyAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEgXAotICAgICgzLCgyMSwgMzAsIDxuZG5ib29zdC9tcGwvbGlzdC9hdXhfL251bWJlcmVkLmhwcD4pKQotIyAgIGluY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfTElTVF9MSVNUMzBfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2xpc3QzMF9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvbGlzdDMwX2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZTg2NWZkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvbGlzdDMwX2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9MSVNUX0xJU1QzMF9DX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfTElTVF9MSVNUMzBfQ19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGxpc3QzMF9jLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGlzdC9saXN0MjBfYy5ocHA+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy91c2VfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMpIFwKLSAmJiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTRURfSEVBREVSIGxpc3QzMF9jLmhwcAotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9saXN0L2F1eF8vaW5jbHVkZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jZWxzZQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGUuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotIyAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEgXAotICAgICgzLCgyMSwgMzAsIDxuZG5ib29zdC9tcGwvbGlzdC9hdXhfL251bWJlcmVkX2MuaHBwPikpCi0jICAgaW5jbHVkZSBORE5CT09TVF9QUF9JVEVSQVRFKCkKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9MSVNUX0xJU1QzMF9DX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9saXN0NDAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9saXN0NDAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMWExZGVjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvbGlzdDQwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfTElTVF9MSVNUNDBfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9MSVNUX0xJU1Q0MF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGxpc3Q0MC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpc3QvbGlzdDMwLmhwcD4KLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3VzZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUykgXAotICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BSRVBST0NFU1NFRF9IRUFERVIgbGlzdDQwLmhwcAotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9saXN0L2F1eF8vaW5jbHVkZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jZWxzZQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGUuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotIyAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEgXAotICAgICgzLCgzMSwgNDAsIDxuZG5ib29zdC9tcGwvbGlzdC9hdXhfL251bWJlcmVkLmhwcD4pKQotIyAgIGluY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfTElTVF9MSVNUNDBfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2xpc3Q0MF9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvbGlzdDQwX2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZTE0YzNjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvbGlzdDQwX2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9MSVNUX0xJU1Q0MF9DX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfTElTVF9MSVNUNDBfQ19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGxpc3Q0MF9jLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGlzdC9saXN0MzBfYy5ocHA+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy91c2VfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMpIFwKLSAmJiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTRURfSEVBREVSIGxpc3Q0MF9jLmhwcAotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9saXN0L2F1eF8vaW5jbHVkZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jZWxzZQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGUuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotIyAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEgXAotICAgICgzLCgzMSwgNDAsIDxuZG5ib29zdC9tcGwvbGlzdC9hdXhfL251bWJlcmVkX2MuaHBwPikpCi0jICAgaW5jbHVkZSBORE5CT09TVF9QUF9JVEVSQVRFKCkKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9MSVNUX0xJU1Q0MF9DX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9saXN0NTAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvbGlzdC9saXN0NTAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YmQwMGI1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvbGlzdDUwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfTElTVF9MSVNUNTBfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9MSVNUX0xJU1Q1MF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGxpc3Q1MC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpc3QvbGlzdDQwLmhwcD4KLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3VzZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUykgXAotICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BSRVBST0NFU1NFRF9IRUFERVIgbGlzdDUwLmhwcAotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9saXN0L2F1eF8vaW5jbHVkZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jZWxzZQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGUuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotIyAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEgXAotICAgICgzLCg0MSwgNTAsIDxuZG5ib29zdC9tcGwvbGlzdC9hdXhfL251bWJlcmVkLmhwcD4pKQotIyAgIGluY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfTElTVF9MSVNUNTBfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9saXN0L2xpc3Q1MF9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvbGlzdDUwX2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNzg0ZGI2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xpc3QvbGlzdDUwX2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9MSVNUX0xJU1Q1MF9DX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfTElTVF9MSVNUNTBfQ19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGxpc3Q1MF9jLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGlzdC9saXN0NDBfYy5ocHA+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy91c2VfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMpIFwKLSAmJiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTRURfSEVBREVSIGxpc3Q1MF9jLmhwcAotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9saXN0L2F1eF8vaW5jbHVkZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jZWxzZQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGUuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotIyAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEgXAotICAgICgzLCg0MSwgNTAsIDxuZG5ib29zdC9tcGwvbGlzdC9hdXhfL251bWJlcmVkX2MuaHBwPikpCi0jICAgaW5jbHVkZSBORE5CT09TVF9QUF9JVEVSQVRFKCkKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9MSVNUX0xJU1Q1MF9DX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbG9naWNhbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9sb2dpY2FsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWM0MzZjOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9sb2dpY2FsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfTE9HSUNBTF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0xPR0lDQUxfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBsb2dpY2FsLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL29yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbm90LmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9MT0dJQ0FMX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbG9uZy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9sb25nLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGI3MGI0OS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9sb25nLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfTE9OR19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0xPTkdfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBsb25nLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xvbmdfZndkLmhwcD4KLQotI2RlZmluZSBBVVhfV1JBUFBFUl9WQUxVRV9UWVBFIGxvbmcKLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9pbnRlZ3JhbF93cmFwcGVyLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9MT05HX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbG9uZ19md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvbG9uZ19md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZGNkYWRhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL2xvbmdfZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfTE9OR19GV0RfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9MT05HX0ZXRF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGxvbmdfZndkLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vYWRsX2JhcnJpZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL250dHBfZGVjbC5ocHA+Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLQotdGVtcGxhdGU8IE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGxvbmcsIE4pID4gc3RydWN0IGxvbmdfOwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9ERUNMKGxvbmdfKQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0xPTkdfRldEX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbWludXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvbWludXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNzY1Y2I3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL21pbnVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfTUlOVVNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9NSU5VU19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IG1pbnVzLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jZGVmaW5lIEFVWDc3ODA3Nl9PUF9OQU1FIG1pbnVzCi0jZGVmaW5lIEFVWDc3ODA3Nl9PUF9UT0tFTiAtCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vYXJpdGhtZXRpY19vcC5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfTUlOVVNfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9tdWx0aXBsaWVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL211bHRpcGxpZXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYjA2ZDc3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL211bHRpcGxpZXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9NVUxUSVBMSUVTX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfTVVMVElQTElFU19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IG11bHRpcGxpZXMuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvdGltZXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL25hX3NwZWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9zdXBwb3J0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvZGVmYXVsdF9wYXJhbXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9wYXJhbXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9jdHBzLmhwcD4KLQotLy8gYmFja3dhcmQgY29tcGF0aWJpbGl0eSBoZWFkZXIsIGRlcHJlY2F0ZWQKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotIyAgIGRlZmluZSBBVVg3NzgwNzZfT1BfQVJJVFkgTkROQk9PU1RfTVBMX0xJTUlUX01FVEFGVU5DVElPTl9BUklUWQotI2Vsc2UKLSMgICBkZWZpbmUgQVVYNzc4MDc2X09QX0FSSVRZIDIKLSNlbmRpZgotCi10ZW1wbGF0ZTwKLSAgICAgIE5ETkJPT1NUX01QTF9QUF9ERUZBVUxUX1BBUkFNUyhBVVg3NzgwNzZfT1BfQVJJVFksIHR5cGVuYW1lIE4sIG5hKQotICAgID4KLXN0cnVjdCBtdWx0aXBsaWVzCi0gICAgOiB0aW1lczwgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhBVVg3NzgwNzZfT1BfQVJJVFksIE4pID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKAotICAgICAgICAgIEFVWDc3ODA3Nl9PUF9BUklUWQotICAgICAgICAsIG11bHRpcGxpZXMKLSAgICAgICAgLCAoIE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoQVVYNzc4MDc2X09QX0FSSVRZLCBOKSApCi0gICAgICAgICkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQyhBVVg3NzgwNzZfT1BfQVJJVFksIG11bHRpcGxpZXMpCi0KLSN1bmRlZiBBVVg3NzgwNzZfT1BfQVJJVFkKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9NVUxUSVBMSUVTX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbmVnYXRlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL25lZ2F0ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU4YjlhY2MuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbmVnYXRlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDgxICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfTkVHQVRFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfTkVHQVRFX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogbmVnYXRlLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2ludGVncmFsX2MuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL21zdmNfZXRpX2Jhc2UuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL25hX3NwZWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9zdXBwb3J0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvZXRpLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvaW50ZWdyYWwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9zdGF0aWNfY29uc3RhbnQuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFRhZyA+IHN0cnVjdCBuZWdhdGVfaW1wbDsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgbmVnYXRlX3RhZwotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oTikKLSAgICA+Ci1zdHJ1Y3QgbmVnYXRlCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19NU1ZDX0VUSV9CVUcpCi0gICAgOiBuZWdhdGVfaW1wbDwKLSAgICAgICAgICB0eXBlbmFtZSBuZWdhdGVfdGFnPE4+Ojp0eXBlCi0gICAgICAgID46OnRlbXBsYXRlIGFwcGx5PE4+Ojp0eXBlCi0jZWxzZQotICAgIDogYXV4Ojptc3ZjX2V0aV9iYXNlPCB0eXBlbmFtZSBhcHBseV93cmFwMTwKLSAgICAgICAgICBuZWdhdGVfaW1wbDwgdHlwZW5hbWUgbmVnYXRlX3RhZzxOPjo6dHlwZSA+Ci0gICAgICAgICwgTgotICAgICAgICA+Ojp0eXBlID46OnR5cGUKLSNlbmRpZgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMSwgbmVnYXRlLCAoTikpCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoMSwgbmVnYXRlKQotCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fTkVTVEVEX1ZBTFVFX0FSSVRITUVUSUMpCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPCB0eXBlbmFtZSBULCBUIG4gPiBzdHJ1Y3QgbmVnYXRlX3drbmQKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoVCwgdmFsdWUgPSAtbik7Ci0gICAgdHlwZWRlZiBpbnRlZ3JhbF9jPFQsdmFsdWU+IHR5cGU7Ci19OwotfQotI2VuZGlmCi0KLXRlbXBsYXRlPD4KLXN0cnVjdCBuZWdhdGVfaW1wbDxpbnRlZ3JhbF9jX3RhZz4KLXsKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fTkVTVEVEX1ZBTFVFX0FSSVRITUVUSUMpCi0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBhdXg6Om5lZ2F0ZV93a25kPCB0eXBlbmFtZSBOOjp2YWx1ZV90eXBlLCBOOjp2YWx1ZSA+Ci0jZWxzZQotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBOID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogaW50ZWdyYWxfYzwgdHlwZW5hbWUgTjo6dmFsdWVfdHlwZSwgKC1OOjp2YWx1ZSkgPgotI2VuZGlmICAgIAotICAgIHsKLSAgICB9OwotfTsKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9ORUdBVEVfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9uZXh0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL25leHQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OWM0Yzk5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL25leHQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9ORVhUX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfTkVYVF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBuZXh0LmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL25leHRfcHJpb3IuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX05FWFRfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9uZXh0X3ByaW9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL25leHRfcHJpb3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMTkwMmM3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL25leHRfcHJpb3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9ORVhUX1BSSU9SX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfTkVYVF9QUklPUl9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IG5leHRfcHJpb3IuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb21tb25fbmFtZV93a25kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uYV9zcGVjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfc3VwcG9ydC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1ORE5CT09TVF9NUExfQVVYX0NPTU1PTl9OQU1FX1dLTkQobmV4dCkKLU5ETkJPT1NUX01QTF9BVVhfQ09NTU9OX05BTUVfV0tORChwcmlvcikKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFQpCi0gICAgPgotc3RydWN0IG5leHQKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6Om5leHQgdHlwZTsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDEsbmV4dCwoVCkpCi19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVCkKLSAgICA+Ci1zdHJ1Y3QgcHJpb3IKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFQ6OnByaW9yIHR5cGU7Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgxLHByaW9yLChUKSkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQygxLCBuZXh0KQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDEsIHByaW9yKQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX05FWFRfUFJJT1JfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9ub3QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvbm90LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjYxMmE5NS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9ub3QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9OT1RfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9OT1RfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBub3QuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYm9vbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbnR0cF9kZWNsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uZXN0ZWRfdHlwZV93a25kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uYV9zcGVjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfc3VwcG9ydC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1uYW1lc3BhY2UgYXV4IHsKLQotdGVtcGxhdGU8IE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGxvbmcsIENfKSA+IC8vICdsb25nJyBpcyBpbnRlbnRpb25hbCBoZXJlCi1zdHJ1Y3Qgbm90X2ltcGwKLSAgICA6IGJvb2xfPCFDXz4KLXsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUKQotICAgID4KLXN0cnVjdCBub3RfCi0gICAgOiBhdXg6Om5vdF9pbXBsPAotICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTkVTVEVEX1RZUEVfV0tORChUKTo6dmFsdWUKLSAgICAgICAgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMSxub3RfLChUKSkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQygxLG5vdF8pCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfTk9UX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbm90X2VxdWFsX3RvLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL25vdF9lcXVhbF90by5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA3NGFmOGEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvbm90X2VxdWFsX3RvLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfTk9UX0VRVUFMX1RPX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfTk9UX0VRVUFMX1RPX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogbm90X2VxdWFsX3RvLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jZGVmaW5lIEFVWDc3ODA3Nl9PUF9OQU1FIG5vdF9lcXVhbF90bwotI2RlZmluZSBBVVg3NzgwNzZfT1BfVE9LRU4gIT0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb21wYXJpc29uX29wLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9OT1RfRVFVQUxfVE9fSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9udW1lcmljX2Nhc3QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvbnVtZXJpY19jYXN0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWJmNGFiZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9udW1lcmljX2Nhc3QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9OVU1FUklDX0NBU1RfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9OVU1FUklDX0NBU1RfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDMtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogbnVtZXJpY19jYXN0LmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL21zdmMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy93b3JrYXJvdW5kLmhwcD4KLQotLy8gYWd1cnQgMjEvc2VwLzA0OiBwb3J0YWJpbGl0eSBtYWNybyBmb3IgdGhlIHNha2Ugb2YgTVNWQyA2LngtNy4wOwotLy8gcmVzb2x2ZXMgY29uZmxpY3RzIHdpdGggJ25kbmJvb3N0OjpudW1lcmljX2Nhc3QnIGZ1bmN0aW9uIHRlbXBsYXRlLgotLy8gdXNlIGl0IGluIHlvdXIgb3duIGNvZGUgX29ubHlfIGlmIHlvdSBjYXJlIGFib3V0IGNvbXBhdGliaWxpdHkgd2l0aAotLy8gdGhlc2Ugb3V0ZGF0ZWQgY29tcGlsZXJzIQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkgfHwgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU3MCkgKQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX05VTUVSSUNfQ0FTVCBudW1lcmljX2Nhc3RfCi0jZWxzZQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfQVVYX05VTUVSSUNfQ0FTVCBudW1lcmljX2Nhc3QKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotLy8gbm8gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbjsgdGhlIGRlZmluaXRpb24gaXMgbmVlZGVkIHRvIG1ha2UgTVNWQyBoYXBweQotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgU291cmNlVGFnLCB0eXBlbmFtZSBUYXJnZXRUYWcgPiBzdHJ1Y3QgTkROQk9PU1RfTVBMX0FVWF9OVU1FUklDX0NBU1QKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseTsKLX07Ci0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfTlVNRVJJQ19DQVNUX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvb3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvb3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMzVkYjRkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL29yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfT1JfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9PUl9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IG9yLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3VzZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUykgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYm9vbC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbmVzdGVkX3R5cGVfd2tuZC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbmFfc3BlYy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX3N1cHBvcnQuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9tc3ZjLmhwcD4KLQotLy8gYWd1cnQsIDE5L21heS8wNDogd29ya2Fyb3VuZCBhIGNvbmZsaWN0IHdpdGggPGlzbzY0Ni5oPiBoZWFkZXIncyAKLS8vICdvcicgYW5kICdhbmQnIG1hY3Jvcywgc2VlIGh0dHA6Ly90aW55dXJsLmNvbS8zZXQ2OTsgJ2RlZmluZWQob3IpJwotLy8gaGFzIHRvIGJlIGNoZWNrZWQgaW4gYSBzZXBhcmF0ZSBjb25kaXRpb24sIG90aGVyd2lzZSBHQ0MgY29tcGxhaW5zIAotLy8gYWJvdXQgJ29yJyBiZWluZyBhbiBhbHRlcm5hdGl2ZSB0b2tlbgotI2lmIGRlZmluZWQoX01TQ19WRVIpCi0jaWZuZGVmIF9fR0NDWE1MX18KLSNpZiBkZWZpbmVkKG9yKQotIyAgIHByYWdtYSBwdXNoX21hY3JvKCJvciIpCi0jICAgdW5kZWYgb3IKLSMgICBkZWZpbmUgb3IoeCkKLSNlbmRpZgotI2VuZGlmCi0jZW5kaWYKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFJFUFJPQ0VTU0VEX0hFQURFUiBvci5ocHAKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9pbmNsdWRlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAKLSNpZm5kZWYgX19HQ0NYTUxfXwotI2lmIGRlZmluZWQob3IpCi0jICAgcHJhZ21hIHBvcF9tYWNybygib3IiKQotI2VuZGlmCi0jZW5kaWYKLSNlbmRpZgotCi0jZWxzZQotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9PUF9OQU1FIG9yXwotIyAgIGRlZmluZSBBVVg3NzgwNzZfT1BfVkFMVUUxIHRydWUKLSMgICBkZWZpbmUgQVVYNzc4MDc2X09QX1ZBTFVFMiBmYWxzZQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2xvZ2ljYWxfb3AuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUwotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9PUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3BhaXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvcGFpci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjMjk1YzUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvcGFpci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX1BBSVJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9QQUlSX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogcGFpci5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL21zdmNfZXRpX2Jhc2UuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL25hX3NwZWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9zdXBwb3J0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvZXRpLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUMSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVDIpCi0gICAgPgotc3RydWN0IHBhaXIKLXsKLSAgICB0eXBlZGVmIHBhaXIgdHlwZTsKLSAgICB0eXBlZGVmIFQxIGZpcnN0OwotICAgIHR5cGVkZWYgVDIgc2Vjb25kOwotCi0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgyLHBhaXIsKFQxLFQyKSkKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShQKQotICAgID4KLXN0cnVjdCBmaXJzdAotewotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTVNWQ183MF9FVElfQlVHKQotICAgIHR5cGVkZWYgdHlwZW5hbWUgUDo6Zmlyc3QgdHlwZTsKLSNlbHNlCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6Om1zdmNfZXRpX2Jhc2U8UD46OmZpcnN0IHR5cGU7Ci0jZW5kaWYKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDEsZmlyc3QsKFApKQotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFApCi0gICAgPgotc3RydWN0IHNlY29uZAotewotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTVNWQ183MF9FVElfQlVHKQotICAgIHR5cGVkZWYgdHlwZW5hbWUgUDo6c2Vjb25kIHR5cGU7Ci0jZWxzZQotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojptc3ZjX2V0aV9iYXNlPFA+OjpzZWNvbmQgdHlwZTsKLSNlbmRpZgotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMSxzZWNvbmQsKFApKQotfTsKLQotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUNfTk9fRVRJKDIsIHBhaXIpCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoMSwgZmlyc3QpCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoMSwgc2Vjb25kKQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX1BBSVJfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9wbGFjZWhvbGRlcnMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvcGxhY2Vob2xkZXJzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDQ0NGQ4YS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9wbGFjZWhvbGRlcnMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTAwICswLDAgQEAKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1BQX0lTX0lURVJBVElORykKLQotLy8vLy8gaGVhZGVyIGJvZHkKLQotI2lmbmRlZiBORE5CT09TVF9NUExfUExBQ0VIT0xERVJTX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfUExBQ0VIT0xERVJTX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vIENvcHlyaWdodCBQZXRlciBEaW1vdiAyMDAxLTIwMDMKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogcGxhY2Vob2xkZXJzLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hcmcuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2FkbF9iYXJyaWVyLmhwcD4KLQotIyAgIGlmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fQURMX0JBUlJJRVJfTkFNRVNQQUNFKQotIyAgICAgICBkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9BUkdfQURMX0JBUlJJRVJfREVDTCh0eXBlKSBcCi0gICAgICAgIHVzaW5nIDo6TkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6OnR5cGU7IFwKLSAgICAgICAgLyoqLwotIyAgIGVsc2UKLSMgICAgICAgZGVmaW5lIE5ETkJPT1NUX01QTF9BVVhfQVJHX0FETF9CQVJSSUVSX0RFQ0wodHlwZSkgLyoqLwotIyAgIGVuZGlmCi0KLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3VzZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUykgXAotICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BSRVBST0NFU1NFRF9IRUFERVIgcGxhY2Vob2xkZXJzLmhwcAotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2luY2x1ZGVfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2Vsc2UKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL250dHBfZGVjbC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xpbWl0cy9hcml0eS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGUuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotCi0vLyB3YXRjaCBvdXQgZm9yIEdOVSBnZXR0ZXh0IHVzZXJzLCB3aG8gI2RlZmluZSBfKHgpCi0jaWYgIWRlZmluZWQoXykgfHwgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX1VOTkFNRURfUExBQ0VIT0xERVJfU1VQUE9SVCkKLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLXR5cGVkZWYgYXJnPC0xPiBfOwotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IAotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKF8pCi0KLW5hbWVzcGFjZSBwbGFjZWhvbGRlcnMgewotdXNpbmcgTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0U6Ol87Ci19Ci0KLX19Ci0jZW5kaWYKLQotLy8vIGFndXJ0LCAxNy9tYXIvMDI6IG9uZSBtb3JlIHBsYWNlaG9sZGVyIGZvciB0aGUgbGFzdCAnYXBwbHkjJyAKLS8vLyBzcGVjaWFsaXphdGlvbgotI2RlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEgXAotICAgICgzLCgxLCBORE5CT09TVF9NUExfTElNSVRfTUVUQUZVTkNUSU9OX0FSSVRZICsgMSwgPG5kbmJvb3N0L21wbC9wbGFjZWhvbGRlcnMuaHBwPikpCi0jaW5jbHVkZSBORE5CT09TVF9QUF9JVEVSQVRFKCkKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMKLSNlbmRpZiAvLyBORE5CT09TVF9NUExfUExBQ0VIT0xERVJTX0hQUF9JTkNMVURFRAotCi0vLy8vLyBpdGVyYXRpb24KLQotI2Vsc2UKLSNkZWZpbmUgaV8gTkROQk9PU1RfUFBfRlJBTUVfSVRFUkFUSU9OKDEpCi0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLQotdHlwZWRlZiBhcmc8aV8+IE5ETkJPT1NUX1BQX0NBVChfLGlfKTsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IAotCi1ORE5CT09TVF9NUExfQVVYX0FSR19BRExfQkFSUklFUl9ERUNMKE5ETkJPT1NUX1BQX0NBVChfLGlfKSkKLQotbmFtZXNwYWNlIHBsYWNlaG9sZGVycyB7Ci11c2luZyBORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRTo6TkROQk9PU1RfUFBfQ0FUKF8saV8pOwotfQotCi19fQotCi0jdW5kZWYgaV8KLSNlbmRpZiAvLyBORE5CT09TVF9QUF9JU19JVEVSQVRJTkcKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3BsdXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvcGx1cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIyNjVjZmEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvcGx1cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX1BMVVNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9QTFVTX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogcGx1cy5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2RlZmluZSBBVVg3NzgwNzZfT1BfTkFNRSBwbHVzCi0jZGVmaW5lIEFVWDc3ODA3Nl9PUF9UT0tFTiArCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vYXJpdGhtZXRpY19vcC5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfUExVU19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3BvcF9iYWNrX2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9wb3BfYmFja19md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmM2U5NDUxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3BvcF9iYWNrX2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX1BPUF9CQUNLX0ZXRF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1BPUF9CQUNLX0ZXRF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHBvcF9iYWNrX2Z3ZC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgcG9wX2JhY2tfaW1wbDsKLXRlbXBsYXRlPCB0eXBlbmFtZSBTZXF1ZW5jZSA+IHN0cnVjdCBwb3BfYmFjazsKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9QT1BfQkFDS19GV0RfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9wb3BfZnJvbnRfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3BvcF9mcm9udF9md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNDEyMDViLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3BvcF9mcm9udF9md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9QT1BfRlJPTlRfRldEX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfUE9QX0ZST05UX0ZXRF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHBvcF9mcm9udF9md2QuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IHBvcF9mcm9udF9pbXBsOwotdGVtcGxhdGU8IHR5cGVuYW1lIFNlcXVlbmNlID4gc3RydWN0IHBvcF9mcm9udDsKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9QT1BfRlJPTlRfRldEX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvcHJpb3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvcHJpb3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZTg4MGVhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ByaW9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfUFJJT1JfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9QUklPUl9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBwcmlvci5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9uZXh0X3ByaW9yLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9QUklPUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3Byb3RlY3QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvcHJvdGVjdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAyZDRjNDEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvcHJvdGVjdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX1BST1RFQ1RfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9QUk9URUNUX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgUGV0ZXIgRGltb3YgMjAwMQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMi0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHByb3RlY3QuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9hcml0eS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2R0cC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbnR0cF9kZWNsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uYV9zcGVjLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUKQotICAgICwgaW50IG5vdF9sZV8gPSAwCi0gICAgPgotc3RydWN0IHByb3RlY3QgOiBUCi17Ci0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0VER19WRVJTSU9OX18sID09IDIzOCkKLSAgICB0eXBlZGVmIG1wbDo6cHJvdGVjdCB0eXBlOwotI2Vsc2UKLSAgICB0eXBlZGVmIHByb3RlY3QgdHlwZTsKLSNlbmRpZgotfTsKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19CUk9LRU5fREVGQVVMVF9QQVJBTUVURVJTX0lOX05FU1RFRF9URU1QTEFURVMpCi1uYW1lc3BhY2UgYXV4IHsgCi10ZW1wbGF0ZTwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0woaW50LCBOKSwgdHlwZW5hbWUgVCA+Ci1zdHJ1Y3QgYXJpdHk8IHByb3RlY3Q8VD4sIE4gPiAKLSAgICA6IGFyaXR5PFQsTj4KLXsgCi19OwotfSAvLyBuYW1lc3BhY2UgYXV4Ci0jZW5kaWYKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDX01BSU4oMSwgcHJvdGVjdCkKLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX0ZVTExfTEFNQkRBX1NVUFBPUlQpCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUNfVEVNUExBVEVfQVJJVFkoMSwgMSwgcHJvdGVjdCkKLSNlbmRpZgotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX1BST1RFQ1RfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9wdXNoX2JhY2suaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvcHVzaF9iYWNrLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWNlYTg5NS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9wdXNoX2JhY2suaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9QVVNIX0JBQ0tfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9QVVNIX0JBQ0tfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBwdXNoX2JhY2suaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvcHVzaF9iYWNrX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vcHVzaF9iYWNrX2ltcGwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9zZXF1ZW5jZV90YWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL25hX3NwZWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9zdXBwb3J0LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShTZXF1ZW5jZSkKLSAgICAsIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oVCkKLSAgICA+Ci1zdHJ1Y3QgcHVzaF9iYWNrCi0gICAgOiBwdXNoX2JhY2tfaW1wbDwgdHlwZW5hbWUgc2VxdWVuY2VfdGFnPFNlcXVlbmNlPjo6dHlwZSA+Ci0gICAgICAgIDo6dGVtcGxhdGUgYXBwbHk8IFNlcXVlbmNlLFQgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMixwdXNoX2JhY2ssKFNlcXVlbmNlLFQpKQotfTsKLQotCi10ZW1wbGF0ZTwgCi0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFNlcXVlbmNlKQotICAgID4KLXN0cnVjdCBoYXNfcHVzaF9iYWNrCi0gICAgOiBoYXNfcHVzaF9iYWNrX2ltcGw8IHR5cGVuYW1lIHNlcXVlbmNlX3RhZzxTZXF1ZW5jZT46OnR5cGUgPgotICAgICAgICA6OnRlbXBsYXRlIGFwcGx5PCBTZXF1ZW5jZSA+Ci17Ci0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgxLGhhc19wdXNoX2JhY2ssKFNlcXVlbmNlKSkKLX07Ci0KLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDIsIHB1c2hfYmFjaykKLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQygxLCBoYXNfcHVzaF9iYWNrKQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX1BVU0hfQkFDS19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3B1c2hfYmFja19md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvcHVzaF9iYWNrX2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkZTBmZjAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvcHVzaF9iYWNrX2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX1BVU0hfQkFDS19GV0RfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9QVVNIX0JBQ0tfRldEX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogcHVzaF9iYWNrX2Z3ZC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgcHVzaF9iYWNrX2ltcGw7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgU2VxdWVuY2UsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgcHVzaF9iYWNrOwotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX1BVU0hfQkFDS19GV0RfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9wdXNoX2Zyb250LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3B1c2hfZnJvbnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMzMxM2M4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3B1c2hfZnJvbnQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9QVVNIX0ZST05UX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfUFVTSF9GUk9OVF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHB1c2hfZnJvbnQuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvcHVzaF9mcm9udF9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3B1c2hfZnJvbnRfaW1wbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3NlcXVlbmNlX3RhZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbmFfc3BlYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX3N1cHBvcnQuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFNlcXVlbmNlKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShUKQotICAgID4KLXN0cnVjdCBwdXNoX2Zyb250Ci0gICAgOiBwdXNoX2Zyb250X2ltcGw8IHR5cGVuYW1lIHNlcXVlbmNlX3RhZzxTZXF1ZW5jZT46OnR5cGUgPgotICAgICAgICA6OnRlbXBsYXRlIGFwcGx5PCBTZXF1ZW5jZSxUID4KLXsKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDIscHVzaF9mcm9udCwoU2VxdWVuY2UsVCkpCi19OwotCi0KLXRlbXBsYXRlPCAKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oU2VxdWVuY2UpCi0gICAgPgotc3RydWN0IGhhc19wdXNoX2Zyb250Ci0gICAgOiBoYXNfcHVzaF9mcm9udF9pbXBsPCB0eXBlbmFtZSBzZXF1ZW5jZV90YWc8U2VxdWVuY2U+Ojp0eXBlID4KLSAgICAgICAgOjp0ZW1wbGF0ZSBhcHBseTwgU2VxdWVuY2UgPgotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMSxoYXNfcHVzaF9mcm9udCwoU2VxdWVuY2UpKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDIsIHB1c2hfZnJvbnQpCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoMSwgaGFzX3B1c2hfZnJvbnQpCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfUFVTSF9GUk9OVF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3B1c2hfZnJvbnRfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3B1c2hfZnJvbnRfZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDQzOTRmZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9wdXNoX2Zyb250X2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX1BVU0hfRlJPTlRfRldEX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfUFVTSF9GUk9OVF9GV0RfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBwdXNoX2Zyb250X2Z3ZC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUYWcgPiBzdHJ1Y3QgcHVzaF9mcm9udF9pbXBsOwotdGVtcGxhdGU8IHR5cGVuYW1lIFNlcXVlbmNlLCB0eXBlbmFtZSBUID4gc3RydWN0IHB1c2hfZnJvbnQ7Ci0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfUFVTSF9GUk9OVF9GV0RfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9xdW90ZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9xdW90ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5YjdkM2EuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvcXVvdGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTUxICswLDAgQEAKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1BQX0lTX0lURVJBVElORykKLQotLy8vLy8gaGVhZGVyIGJvZHkKLQotI2lmbmRlZiBORE5CT09TVF9NUExfUVVPVEVfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9RVU9URV9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA4Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHF1b3RlLmhwcCA0OTI3MiAyMDA4LTEwLTExIDA2OjUwOjQ2WiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6NTA6NDYgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNzIgJAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvdm9pZC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vaGFzX3R5cGUuaHBwPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvYmNjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdHRwLmhwcD4KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19URU1QTEFURV9URU1QTEFURV9QQVJBTUVURVJTKSBcCi0gICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19CQ0M1OTBfV09SS0FST1VORFMpCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9DRkdfTk9fUVVPVEVfVEVNUExBVEUKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19JTVBMSUNJVF9NRVRBRlVOQ1RJT05TKSBcCi0gICAgJiYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX0hBU19YWFgpCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9DRkdfTk9fSU1QTElDSVRfTUVUQUZVTkNUSU9OUwotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdXNlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTKSBcCi0gJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFJFUFJPQ0VTU0VEX0hFQURFUiBxdW90ZS5ocHAKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9pbmNsdWRlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNlbHNlCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGltaXRzL2FyaXR5LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9wcmVwcm9jZXNzb3IvcGFyYW1zLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvY3Rwcy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3dvcmthcm91bmQuaHBwPgotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGUuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19RVU9URV9URU1QTEFURSkKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgYm9vbCBoYXNfdHlwZV8gPgotc3RydWN0IHF1b3RlX2ltcGwKLS8vIEdDQyBoYXMgYSBwcm9ibGVtIHdpdGggbWV0YWZ1bmN0aW9uIGZvcndhcmRpbmcgd2hlbiBUIGlzIGEKLS8vIHNwZWNpYWxpemF0aW9uIG9mIGEgdGVtcGxhdGUgY2FsbGVkICd0eXBlJy4KLSMgaWYgTkROQk9PU1RfV09SS0FST1VORChfX0dOVUNfXywgTkROQk9PU1RfVEVTVEVEX0FUKDQpKSBcCi0gICAgJiYgTkROQk9PU1RfV09SS0FST1VORChfX0dOVUNfTUlOT1JfXywgTkROQk9PU1RfVEVTVEVEX0FUKDApKSBcCi0gICAgJiYgTkROQk9PU1RfV09SS0FST1VORChfX0dOVUNfUEFUQ0hMRVZFTF9fLCBORE5CT09TVF9URVNURURfQVQoMikpCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0eXBlIHR5cGU7Ci19OwotIyBlbHNlIAotICAgIDogVAotewotfTsKLSMgZW5kaWYgCi0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLXN0cnVjdCBxdW90ZV9pbXBsPFQsZmFsc2U+Ci17Ci0gICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotCi0jZWxzZSAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLXRlbXBsYXRlPCBib29sID4gc3RydWN0IHF1b3RlX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCByZXN1bHRfCi0gICAgICAgIDogVAotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgcXVvdGVfaW1wbDxmYWxzZT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICB9OwotfTsKLQotI2VuZGlmIAotCi0jZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMSBcCi0gICAgKDMsKDEsIE5ETkJPT1NUX01QTF9MSU1JVF9NRVRBRlVOQ1RJT05fQVJJVFksIDxuZG5ib29zdC9tcGwvcXVvdGUuaHBwPikpCi0jaW5jbHVkZSBORE5CT09TVF9QUF9JVEVSQVRFKCkKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfTk9fUVVPVEVfVEVNUExBVEUKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMKLSNlbmRpZiAvLyBORE5CT09TVF9NUExfUVVPVEVfSFBQX0lOQ0xVREVECi0KLS8vLy8vIGl0ZXJhdGlvbgotCi0jZWxzZQotI2RlZmluZSBpXyBORE5CT09TVF9QUF9GUkFNRV9JVEVSQVRJT04oMSkKLQotdGVtcGxhdGU8Ci0gICAgICB0ZW1wbGF0ZTwgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhpXywgdHlwZW5hbWUgUCkgPiBjbGFzcyBGCi0gICAgLCB0eXBlbmFtZSBUYWcgPSB2b2lkXwotICAgID4KLXN0cnVjdCBORE5CT09TVF9QUF9DQVQocXVvdGUsaV8pCi17Ci0gICAgdGVtcGxhdGU8IE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoaV8sIHR5cGVuYW1lIFUpID4gc3RydWN0IGFwcGx5Ci0jaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX0JDQzU5MF9XT1JLQVJPVU5EUykKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcXVvdGVfaW1wbDwKLSAgICAgICAgICAgICAgRjwgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhpXywgVSkgPgotICAgICAgICAgICAgLCBhdXg6Omhhc190eXBlPCBGPCBORE5CT09TVF9NUExfUFBfUEFSQU1TKGlfLCBVKSA+ID46OnZhbHVlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLSNlbGlmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi0gICAgICAgIDogcXVvdGVfaW1wbDwKLSAgICAgICAgICAgICAgRjwgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhpXywgVSkgPgotICAgICAgICAgICAgLCBhdXg6Omhhc190eXBlPCBGPCBORE5CT09TVF9NUExfUFBfUEFSQU1TKGlfLCBVKSA+ID46OnZhbHVlCi0gICAgICAgICAgICA+Ci0gICAgewotICAgIH07Ci0jZWxzZQotICAgICAgICA6IHF1b3RlX2ltcGw8IGF1eDo6aGFzX3R5cGU8IEY8IE5ETkJPT1NUX01QTF9QUF9QQVJBTVMoaV8sIFUpID4gPjo6dmFsdWUgPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPCBGPCBORE5CT09TVF9NUExfUFBfUEFSQU1TKGlfLCBVKSA+ID4KLSAgICB7Ci0gICAgfTsKLSNlbmRpZgotfTsKLQotI3VuZGVmIGlfCi0jZW5kaWYgLy8gTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9yZW1vdmVfaWYuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvcmVtb3ZlX2lmLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWQ5OTdlMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9yZW1vdmVfaWYuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODMgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9SRU1PVkVfSUZfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9SRU1PVkVfSUZfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8gQ29weXJpZ2h0IERhdmlkIEFicmFoYW1zIDIwMDMtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiByZW1vdmVfaWYuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvZm9sZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3JldmVyc2VfZm9sZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2V2YWxfaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZGVudGl0eS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3Byb3RlY3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9sYW1iZGEuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hcHBseS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vaW5zZXJ0ZXJfYWxnb3JpdGhtLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgUHJlZCwgdHlwZW5hbWUgSW5zZXJ0T3AgPiBzdHJ1Y3QgcmVtb3ZlX2lmX2hlbHBlcgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBTZXF1ZW5jZSwgdHlwZW5hbWUgVSA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBldmFsX2lmPAotICAgICAgICAgICAgICB0eXBlbmFtZSBhcHBseTE8UHJlZCxVPjo6dHlwZQotICAgICAgICAgICAgLCBpZGVudGl0eTxTZXF1ZW5jZT4KLSAgICAgICAgICAgICwgYXBwbHkyPEluc2VydE9wLFNlcXVlbmNlLFU+Ci0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgU2VxdWVuY2UKLSAgICAsIHR5cGVuYW1lIFByZWRpY2F0ZQotICAgICwgdHlwZW5hbWUgSW5zZXJ0ZXIKLSAgICA+Ci1zdHJ1Y3QgcmVtb3ZlX2lmX2ltcGwKLSAgICA6IGZvbGQ8Ci0gICAgICAgICAgU2VxdWVuY2UKLSAgICAgICAgLCB0eXBlbmFtZSBJbnNlcnRlcjo6c3RhdGUKLSAgICAgICAgLCBwcm90ZWN0PCBhdXg6OnJlbW92ZV9pZl9oZWxwZXI8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIGxhbWJkYTxQcmVkaWNhdGU+Ojp0eXBlCi0gICAgICAgICAgICAsIHR5cGVuYW1lIEluc2VydGVyOjpvcGVyYXRpb24KLSAgICAgICAgICAgID4gPgotICAgICAgICA+Ci17Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFNlcXVlbmNlCi0gICAgLCB0eXBlbmFtZSBQcmVkaWNhdGUKLSAgICAsIHR5cGVuYW1lIEluc2VydGVyCi0gICAgPgotc3RydWN0IHJldmVyc2VfcmVtb3ZlX2lmX2ltcGwKLSAgICA6IHJldmVyc2VfZm9sZDwKLSAgICAgICAgICBTZXF1ZW5jZQotICAgICAgICAsIHR5cGVuYW1lIEluc2VydGVyOjpzdGF0ZQotICAgICAgICAsIHByb3RlY3Q8IGF1eDo6cmVtb3ZlX2lmX2hlbHBlcjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgbGFtYmRhPFByZWRpY2F0ZT46OnR5cGUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgSW5zZXJ0ZXI6Om9wZXJhdGlvbgotICAgICAgICAgICAgPiA+Ci0gICAgICAgID4KLXsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi1ORE5CT09TVF9NUExfQVVYX0lOU0VSVEVSX0FMR09SSVRITV9ERUYoMywgcmVtb3ZlX2lmKQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX1JFTU9WRV9JRl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3JldmVyc2VfZm9sZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9yZXZlcnNlX2ZvbGQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNzkwYTQzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3JldmVyc2VfZm9sZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX1JFVkVSU0VfRk9MRF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1JFVkVSU0VfRk9MRF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLyBDb3B5cmlnaHQgRGF2aWQgQWJyYWhhbXMgMjAwMS0yMDAyCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHJldmVyc2VfZm9sZC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9iZWdpbl9lbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9PMV9zaXplLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXJnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9yZXZlcnNlX2ZvbGRfaW1wbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbmFfc3BlYy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oU2VxdWVuY2UpCi0gICAgLCB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFN0YXRlKQotICAgICwgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShCYWNrd2FyZE9wKQotICAgICwgdHlwZW5hbWUgRm9yd2FyZE9wID0gYXJnPDE+Ci0gICAgPgotc3RydWN0IHJldmVyc2VfZm9sZAotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4OjpyZXZlcnNlX2ZvbGRfaW1wbDwKLSAgICAgICAgICA6Om5kbmJvb3N0OjptcGw6Ok8xX3NpemU8U2VxdWVuY2U+Ojp2YWx1ZQotICAgICAgICAsIHR5cGVuYW1lIGJlZ2luPFNlcXVlbmNlPjo6dHlwZQotICAgICAgICAsIHR5cGVuYW1lIGVuZDxTZXF1ZW5jZT46OnR5cGUKLSAgICAgICAgLCBTdGF0ZQotICAgICAgICAsIEJhY2t3YXJkT3AKLSAgICAgICAgLCBGb3J3YXJkT3AKLSAgICAgICAgPjo6c3RhdGUgdHlwZTsKLQotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMyxyZXZlcnNlX2ZvbGQsKFNlcXVlbmNlLFN0YXRlLEJhY2t3YXJkT3ApKQotfTsKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDMsIHJldmVyc2VfZm9sZCkKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9SRVZFUlNFX0ZPTERfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9zYW1lX2FzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3NhbWVfYXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkOWZkYmNiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3NhbWVfYXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9TQU1FX0FTX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfU0FNRV9BU19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHNhbWVfYXMuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbm90LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9sYW1iZGFfc3BlYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2ZvcndhcmRpbmcuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2FtZS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVDEgPgotc3RydWN0IHNhbWVfYXMKLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVDIgPiBzdHJ1Y3QgYXBwbHkKLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX05FU1RFRF9GT1JXQVJESU5HKQotICAgICAgICA6IGlzX3NhbWU8VDEsVDI+Ci0gICAgewotI2Vsc2UKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXNfc2FtZTxUMSxUMj46OnR5cGUgdHlwZTsKLSNlbmRpZgotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVDEgPgotc3RydWN0IG5vdF9zYW1lX2FzCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQyID4gc3RydWN0IGFwcGx5Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19ORVNURURfRk9SV0FSRElORykKLSAgICAgICAgOiBub3RfPCBpc19zYW1lPFQxLFQyPiA+Ci0gICAgewotI2Vsc2UKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbm90XzwgaXNfc2FtZTxUMSxUMj4gPjo6dHlwZSB0eXBlOwotI2VuZGlmCi0gICAgfTsKLX07Ci0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfU0FNRV9BU19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3NlcXVlbmNlX3RhZy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9zZXF1ZW5jZV90YWcuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MWMxZTc4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3NlcXVlbmNlX3RhZy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjQgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9TRVFVRU5DRV9UQUdfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9TRVFVRU5DRV9UQUdfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBzZXF1ZW5jZV90YWcuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvc2VxdWVuY2VfdGFnX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vaGFzX3RhZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vaGFzX2JlZ2luLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uYV9zcGVjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9pc19tc3ZjX2V0aV9hcmcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9ldGkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3llc19uby5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3dvcmthcm91bmQuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotLy8gYWd1cnQsIDI3L25vdi8wMjogaGF2ZSB0byB1c2UgYSBzaW1wbGlzdGljICdzZXF1ZW5jZV90YWcnIGltcGxlbWVudGF0aW9uCi0vLyBvbiBNU1ZDIHRvIGF2b2lkIGRyZWFkZnVsICJpbnRlcm5hbCBzdHJ1Y3R1cmUgb3ZlcmZsb3ciIGVycm9yCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApIFwKLSAgICB8fCBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fSEFTX1hYWCkKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFNlcXVlbmNlKQotICAgID4KLXN0cnVjdCBzZXF1ZW5jZV90YWcKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFNlcXVlbmNlOjp0YWcgdHlwZTsKLX07Ci0KLSNlbGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPT0gMTMwMCkKLQotLy8gYWd1cnQsIDA3L2ZlYi8wMzogd29ya2Fyb3VuZCBmb3Igd2hhdCBzZWVtcyB0byBiZSBNU1ZDIDcuMC1zcGVjaWZpYyBFVEkgaXNzdWUKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBib29sID4KLXN0cnVjdCBzZXF1ZW5jZV90YWdfaW1wbAotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBTZXF1ZW5jZSA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFNlcXVlbmNlOjp0YWcgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNlcXVlbmNlX3RhZ19pbXBsPGZhbHNlPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBTZXF1ZW5jZSA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIGludCB0eXBlOwotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBhdXgKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBORE5CT09TVF9NUExfQVVYX05BX1BBUkFNKFNlcXVlbmNlKQotICAgID4KLXN0cnVjdCBzZXF1ZW5jZV90YWcKLSAgICA6IGF1eDo6c2VxdWVuY2VfdGFnX2ltcGw8ICFhdXg6OmlzX21zdmNfZXRpX2FyZzxTZXF1ZW5jZT46OnZhbHVlID4KLSAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFNlcXVlbmNlPgotewotfTsKLQotI2Vsc2UKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBib29sIGhhc190YWdfLCBib29sIGhhc19iZWdpbl8gPgotc3RydWN0IHNlcXVlbmNlX3RhZ19pbXBsCi17Ci0gICAgLy8gYWd1cnQgMjQvbm92LzAyOiBNU1ZDIDYuNSBnZXRzIGNvbmZ1c2VkIGluICdzZXF1ZW5jZV90YWdfaW1wbDx0cnVlPicgCi0gICAgLy8gc3BlY2lhbGl6YXRpb24gYmVsb3csIGlmIHdlIG5hbWUgaXQgJ3Jlc3VsdF8nIGhlcmUKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgU2VxdWVuY2UgPiBzdHJ1Y3QgcmVzdWx0Ml87Ci19OwotCi0jICAgZGVmaW5lIEFVWF9DTEFTU19TRVFVRU5DRV9UQUdfU1BFQyhoYXNfdGFnLCBoYXNfYmVnaW4sIHJlc3VsdF90eXBlKSBcCi10ZW1wbGF0ZTw+IHN0cnVjdCBzZXF1ZW5jZV90YWdfaW1wbDxoYXNfdGFnLGhhc19iZWdpbj4gXAoteyBcCi0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFNlcXVlbmNlID4gc3RydWN0IHJlc3VsdDJfIFwKLSAgICB7IFwKLSAgICAgICAgdHlwZWRlZiByZXN1bHRfdHlwZSB0eXBlOyBcCi0gICAgfTsgXAotfTsgXAotLyoqLwotCi1BVVhfQ0xBU1NfU0VRVUVOQ0VfVEFHX1NQRUModHJ1ZSwgdHJ1ZSwgdHlwZW5hbWUgU2VxdWVuY2U6OnRhZykKLUFVWF9DTEFTU19TRVFVRU5DRV9UQUdfU1BFQyh0cnVlLCBmYWxzZSwgdHlwZW5hbWUgU2VxdWVuY2U6OnRhZykKLUFVWF9DTEFTU19TRVFVRU5DRV9UQUdfU1BFQyhmYWxzZSwgdHJ1ZSwgbmVzdGVkX2JlZ2luX2VuZF90YWcpCi1BVVhfQ0xBU1NfU0VRVUVOQ0VfVEFHX1NQRUMoZmFsc2UsIGZhbHNlLCBub25fc2VxdWVuY2VfdGFnKQotCi0jICAgdW5kZWYgQVVYX0NMQVNTX1NFUVVFTkNFX1RBR19TUEVDCi0KLX0gLy8gbmFtZXNwYWNlIGF1eAotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIE5ETkJPT1NUX01QTF9BVVhfTkFfUEFSQU0oU2VxdWVuY2UpCi0gICAgPgotc3RydWN0IHNlcXVlbmNlX3RhZwotICAgIDogYXV4OjpzZXF1ZW5jZV90YWdfaW1wbDwKLSAgICAgICAgICA6Om5kbmJvb3N0OjptcGw6OmF1eDo6aGFzX3RhZzxTZXF1ZW5jZT46OnZhbHVlCi0gICAgICAgICwgOjpuZG5ib29zdDo6bXBsOjphdXg6Omhhc19iZWdpbjxTZXF1ZW5jZT46OnZhbHVlCi0gICAgICAgID46OnRlbXBsYXRlIHJlc3VsdDJfPFNlcXVlbmNlPgotewotfTsKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01TVkMKLQotTkROQk9PU1RfTVBMX0FVWF9OQV9TUEVDKDEsIHNlcXVlbmNlX3RhZykKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9TRVFVRU5DRV9UQUdfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9zZXF1ZW5jZV90YWdfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3NlcXVlbmNlX3RhZ19md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZTNhZWUzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3NlcXVlbmNlX3RhZ19md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9TRVFVRU5DRV9UQUdfRldEX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfU0VRVUVOQ0VfVEFHX0ZXRF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHNlcXVlbmNlX3RhZ19md2QuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi1zdHJ1Y3QgbmVzdGVkX2JlZ2luX2VuZF90YWc7Ci1zdHJ1Y3Qgbm9uX3NlcXVlbmNlX3RhZzsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFNlcXVlbmNlID4gc3RydWN0IHNlcXVlbmNlX3RhZzsKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9TRVFVRU5DRV9UQUdfRldEX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvc2l6ZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9zaXplLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDUxNTQ5Yi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC9zaXplLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfU0laRV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1NJWkVfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBzaXplLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3NpemVfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvc2VxdWVuY2VfdGFnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9zaXplX2ltcGwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL25hX3NwZWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9zdXBwb3J0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9tc3ZjX2V0aV9iYXNlLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgTkROQk9PU1RfTVBMX0FVWF9OQV9QQVJBTShTZXF1ZW5jZSkKLSAgICA+Ci1zdHJ1Y3Qgc2l6ZQotICAgIDogYXV4Ojptc3ZjX2V0aV9iYXNlPAotICAgICAgICB0eXBlbmFtZSBzaXplX2ltcGw8IHR5cGVuYW1lIHNlcXVlbmNlX3RhZzxTZXF1ZW5jZT46OnR5cGUgPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSBhcHBseTwgU2VxdWVuY2UgPjo6dHlwZQotICAgICAgPjo6dHlwZQotewotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMSwgc2l6ZSwgKFNlcXVlbmNlKSkKLX07Ci0KLU5ETkJPT1NUX01QTF9BVVhfTkFfU1BFQygxLCBzaXplKQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX1NJWkVfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC9zaXplX2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC9zaXplX2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFkOTQ4YTIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvc2l6ZV9md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9TSVpFX0ZXRF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1NJWkVfRldEX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogc2l6ZV9md2QuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVGFnID4gc3RydWN0IHNpemVfaW1wbDsKLXRlbXBsYXRlPCB0eXBlbmFtZSBTZXF1ZW5jZSA+IHN0cnVjdCBzaXplOwotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX1NJWkVfRldEX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvc2l6ZV90LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3NpemVfdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZjODY2OTkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvc2l6ZV90LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfU0laRV9UX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfU0laRV9UX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogc2l6ZV90LmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3NpemVfdF9md2QuaHBwPgotCi0jZGVmaW5lIEFVWF9XUkFQUEVSX1ZBTFVFX1RZUEUgc3RkOjpzaXplX3QKLSNkZWZpbmUgQVVYX1dSQVBQRVJfTkFNRSBzaXplX3QKLSNkZWZpbmUgQVVYX1dSQVBQRVJfUEFSQU1TKE4pIHN0ZDo6c2l6ZV90IE4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2ludGVncmFsX3dyYXBwZXIuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX1NJWkVfVF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3NpemVfdF9md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvc2l6ZV90X2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZhZGM5ODEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvc2l6ZV90X2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX1NJWkVfVF9GV0RfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9TSVpFX1RfRldEX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogc2l6ZV90X2Z3ZC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2FkbF9iYXJyaWVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiAvLyBtYWtlIHN1cmUgJ3NpemVfdCcgaXMgcGxhY2VkIGludG8gJ3N0ZCcKLSNpbmNsdWRlIDxjc3RkZGVmPgotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi0KLXRlbXBsYXRlPCBzdGQ6OnNpemVfdCBOID4gc3RydWN0IHNpemVfdDsKLQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9OQU1FU1BBQ0VfQ0xPU0UKLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfREVDTChzaXplX3QpCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfU0laRV9UX0ZXRF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3RhZy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC90YWcuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZWVkNjk4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3RhZy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX1RBR19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1RBR19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiB0YWcuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvZXZhbF9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZvaWQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2hhc190YWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9ldGkuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCB0YWdfaW1wbAotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dGFnIHR5cGU7Ci19OwotfQotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgRGVmYXVsdCA9IHZvaWRfID4gc3RydWN0IHRhZwotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTVNWQ19FVElfQlVHKQotICAgIDogaWZfPCAKLSAgICAgICAgICBhdXg6Omhhc190YWc8VD4KLSAgICAgICAgLCBhdXg6OnRhZ19pbXBsPFQ+Ci0gICAgICAgICwgRGVmYXVsdAotICAgICAgICA+Ojp0eXBlCi17Ci0jZWxzZQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgZXZhbF9pZjwgCi0gICAgICAgICAgYXV4OjpoYXNfdGFnPFQ+Ci0gICAgICAgICwgYXV4Ojp0YWdfaW1wbDxUPgotICAgICAgICAsIERlZmF1bHQKLSAgICAgICAgPjo6dHlwZSB0eXBlOwotCi0jZW5kaWYKLX07Ci0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfVEFHX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdGltZXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdGltZXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNmZhNzAyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3RpbWVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfVElNRVNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9USU1FU19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHRpbWVzLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jZGVmaW5lIEFVWDc3ODA3Nl9PUF9OQU1FIHRpbWVzCi0jZGVmaW5lIEFVWDc3ODA3Nl9PUF9UT0tFTiAqCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vYXJpdGhtZXRpY19vcC5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfVElNRVNfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDQ5MmYyMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9WRUNUT1JfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9WRUNUT1JfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiB2ZWN0b3IuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9saW1pdHMvdmVjdG9yLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uYS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3ByZXByb2Nlc3Nvci5ocHA+Ci0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaW5jLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc3RyaW5naXplLmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05FRURTX1RPS0VOX1BBU1RJTkdfT1BfRk9SX1RPS0VOU19KVVhUQVBPU0lORykKLSMgICBkZWZpbmUgQVVYNzc4MDc2X1ZFQ1RPUl9IRUFERVIgXAotICAgIE5ETkJPT1NUX1BQX0NBVCh2ZWN0b3IsIE5ETkJPT1NUX01QTF9MSU1JVF9WRUNUT1JfU0laRSkuaHBwIFwKLSAgICAvKiovCi0jZWxzZQotIyAgIGRlZmluZSBBVVg3NzgwNzZfVkVDVE9SX0hFQURFUiBcCi0gICAgTkROQk9PU1RfUFBfQ0FUKHZlY3RvciwgTkROQk9PU1RfTVBMX0xJTUlUX1ZFQ1RPUl9TSVpFKSMjLmhwcCBcCi0gICAgLyoqLwotI2VuZGlmCi0KLSMgICBpbmNsdWRlIE5ETkJPT1NUX1BQX1NUUklOR0laRShuZG5ib29zdC9tcGwvdmVjdG9yL0FVWDc3ODA3Nl9WRUNUT1JfSEVBREVSKQotIyAgIHVuZGVmIEFVWDc3ODA3Nl9WRUNUT1JfSEVBREVSCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy91c2VfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMpIFwKLSAgICAmJiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTRURfSEVBREVSIHZlY3Rvci5ocHAKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9pbmNsdWRlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNlbHNlCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvbGltaXRzL3ZlY3Rvci5ocHA+Ci0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X1NFUVVFTkNFX05BTUUgdmVjdG9yCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9TRVFVRU5DRV9MSU1JVCBORE5CT09TVF9NUExfTElNSVRfVkVDVE9SX1NJWkUKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9zZXF1ZW5jZV93cmFwcGVyLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMKLSNlbmRpZiAvLyBORE5CT09TVF9NUExfVkVDVE9SX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vTzFfc2l6ZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9PMV9zaXplLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTBiMGY4OC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9PMV9zaXplLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfVkVDVE9SX0FVWF9PMV9TSVpFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfVkVDVE9SX0FVWF9PMV9TSVpFX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogTzFfc2l6ZS5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9PMV9zaXplX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL21pbnVzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbG9uZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3RhZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3R5cGVvZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2N0cHMuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19UWVBFT0ZfQkFTRURfU0VRVUVOQ0VTKQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTzFfc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBWZWN0b3I6OnNpemUKLSAgICB7Ci0gICAgfTsKLX07Ci0KLSNlbHNlCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotCi10ZW1wbGF0ZTwgbG9uZyBOID4KLXN0cnVjdCBPMV9zaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzxOPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IG1wbDo6bG9uZ188Tj4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX1RZUEVPRl9CQVNFRF9TRVFVRU5DRVMKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9WRUNUT1JfQVVYX08xX1NJWkVfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9hdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9hdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1MDc3NDMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vYXQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTE2ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfVkVDVE9SX0FVWF9BVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1ZFQ1RPUl9BVVhfQVRfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBhdC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdF9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy90YWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9sb25nLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvdm9pZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbnR0cF9kZWNsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy90eXBlX3dyYXBwZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ZhbHVlX3drbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy90eXBlb2YuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9jdHBzLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfVFlQRU9GX0JBU0VEX1NFUVVFTkNFUykKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgbG9uZyBuXyA+Ci1zdHJ1Y3Qgdl9hdF9pbXBsCi17Ci0gICAgdHlwZWRlZiBsb25nXzwgKFZlY3Rvcjo6bG93ZXJfYm91bmRfOjp2YWx1ZSArIG5fKSA+IGluZGV4XzsKLSAgICB0eXBlZGVmIF9fdHlwZW9mX18oIFZlY3Rvcjo6aXRlbV8oaW5kZXhfKCkpICkgdHlwZTsKLX07Ci0KLQotdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgbG9uZyBuXyA+Ci1zdHJ1Y3Qgdl9hdAotICAgIDogYXV4Ojp3cmFwcGVkX3R5cGU8IHR5cGVuYW1lIHZfYXRfaW1wbDxWZWN0b3Isbl8+Ojp0eXBlID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhdF9pbXBsPCBhdXg6OnZlY3Rvcl90YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiB2X2F0PAotICAgICAgICAgICAgICBWZWN0b3IKLSAgICAgICAgICAgICwgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotI2Vsc2UKLQotIyAgIGlmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pIFwKLSAgICAmJiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX05PTlRZUEVfVEVNUExBVEVfUEFSVElBTF9TUEVDKQotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChsb25nLCBuXykgPiBzdHJ1Y3Qgdl9hdDsKLQotdGVtcGxhdGU8IE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGxvbmcsIG5fKSA+Ci1zdHJ1Y3QgYXRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPG5fPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotI2lmICFkZWZpbmVkKF9fQk9STEFORENfXykKLSAgICAgICAgOiB2X2F0PAotICAgICAgICAgICAgICBWZWN0b3IKLSAgICAgICAgICAgICwgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZQotICAgICAgICAgICAgPgotICAgIHsKLSNlbHNlCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZfYXQ8Ci0gICAgICAgICAgICAgIFZlY3RvcgotICAgICAgICAgICAgLCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlCi0gICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0jZW5kaWYKLSAgICB9OwotfTsKLQotIyAgIGVsc2UKLQotbmFtZXNwYWNlIGF1eCB7Ci0KLXRlbXBsYXRlPCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChsb25nLCBuXykgPiBzdHJ1Y3Qgdl9hdF9pbXBsCi17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFYgPiBzdHJ1Y3QgcmVzdWx0XzsKLX07Ci0KLS8vIHRvIHdvcmsgYXJvdW5kIEVUSSwgZXRjLgotdGVtcGxhdGU8PiBzdHJ1Y3Qgdl9hdF9pbXBsPC0xPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdm9pZF8gdHlwZTsKLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgYXV4Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBULCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChsb25nLCBuXykgPgotc3RydWN0IHZfYXQKLSAgICA6IGF1eDo6dl9hdF9pbXBsPG5fPjo6dGVtcGxhdGUgcmVzdWx0XzxUPgotewotfTsKLQotIyAgIGVuZGlmIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfVFlQRU9GX0JBU0VEX1NFUVVFTkNFUwotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX1ZFQ1RPUl9BVVhfQVRfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9iYWNrLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL2JhY2suaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzk0NmFmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL2JhY2suaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9WRUNUT1JfQVVYX0JBQ0tfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9WRUNUT1JfQVVYX0JBQ0tfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBiYWNrLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2JhY2tfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbmV4dF9wcmlvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL2F0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vdGFnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdHlwZW9mLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvY3Rwcy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX1RZUEVPRl9CQVNFRF9TRVFVRU5DRVMpCi0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IHZfYXQ8Ci0gICAgICAgICAgICAgIFZlY3RvcgotICAgICAgICAgICAgLCBwcmlvcjx0eXBlbmFtZSBWZWN0b3I6OnNpemU+Ojp0eXBlOjp2YWx1ZQotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotI2Vsc2UKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi0KLXRlbXBsYXRlPCBsb25nIG5fID4KLXN0cnVjdCBiYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzxuXz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjpiYWNrIHR5cGU7Ci0gICAgfTsKLX07Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX1RZUEVPRl9CQVNFRF9TRVFVRU5DRVMKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9WRUNUT1JfQVVYX0JBQ0tfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9iZWdpbl9lbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vYmVnaW5fZW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWI0ZDA2OC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9iZWdpbl9lbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9WRUNUT1JfQVVYX0JFR0lOX0VORF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1ZFQ1RPUl9BVVhfQkVHSU5fRU5EX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogYmVnaW5fZW5kLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3R5cGVvZi5ocHA+Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfVFlQRU9GX0JBU0VEX1NFUVVFTkNFUykKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9iZWdpbl9lbmRfZndkLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vaXRlcmF0b3IuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy90YWcuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJlZ2luX2ltcGw8IGF1eDo6dmVjdG9yX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2X2l0ZXI8VmVjdG9yLDA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlbmRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZfaXRlcjxWZWN0b3IsVmVjdG9yOjpzaXplOjp2YWx1ZT4gdHlwZTsKLSAgICB9OwotfTsKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfVFlQRU9GX0JBU0VEX1NFUVVFTkNFUwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX1ZFQ1RPUl9BVVhfQkVHSU5fRU5EX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vY2xlYXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vY2xlYXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YmJjNzhjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL2NsZWFyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfVkVDVE9SX0FVWF9DTEVBUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1ZFQ1RPUl9BVVhfQ0xFQVJfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBjbGVhci5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9jbGVhcl9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy92ZWN0b3IwLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vdGFnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdHlwZW9mLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvY3Rwcy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX1RZUEVPRl9CQVNFRF9TRVFVRU5DRVMpCi0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjbGVhcl9pbXBsPCBhdXg6OnZlY3Rvcl90YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDw+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLSNlbHNlCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotCi10ZW1wbGF0ZTwgbG9uZyBOID4KLXN0cnVjdCBjbGVhcl9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Tj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDw+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX1RZUEVPRl9CQVNFRF9TRVFVRU5DRVMKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9WRUNUT1JfQVVYX0NMRUFSX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vZW1wdHkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vZW1wdHkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MTc3OWUzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL2VtcHR5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY4ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfVkVDVE9SX0FVWF9FTVBUWV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1ZFQ1RPUl9BVVhfRU1QVFlfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBlbXB0eS5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9lbXB0eV9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ib29sLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vdGFnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdHlwZW9mLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvY3Rwcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2FtZS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX1RZUEVPRl9CQVNFRF9TRVFVRU5DRVMpCi0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlbXB0eV9pbXBsPCBhdXg6OnZlY3Rvcl90YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBpc19zYW1lPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Omxvd2VyX2JvdW5kXwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6OnVwcGVyX2JvdW5kXwotICAgICAgICAgICAgPgotICAgIHsKLSAgICB9OwotfTsKLQotI2Vsc2UKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVtcHR5X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IHRydWVfCi0gICAgewotICAgIH07Ci19OwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLQotdGVtcGxhdGU8IGxvbmcgTiA+Ci1zdHJ1Y3QgZW1wdHlfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPE4+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogZmFsc2VfCi0gICAgewotICAgIH07Ci19OwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19UWVBFT0ZfQkFTRURfU0VRVUVOQ0VTCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfVkVDVE9SX0FVWF9FTVBUWV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL2Zyb250LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL2Zyb250LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDAxYjRhZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9mcm9udC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX1ZFQ1RPUl9BVVhfRlJPTlRfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9WRUNUT1JfQVVYX0ZST05UX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDgKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogZnJvbnQuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvZnJvbnRfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vYXQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy90YWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL250dHBfZGVjbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3R5cGVvZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2N0cHMuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19UWVBFT0ZfQkFTRURfU0VRVUVOQ0VTKQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogdl9hdDxWZWN0b3IsMD4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLSNlbHNlCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotCi10ZW1wbGF0ZTwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0wobG9uZywgbl8pID4KLXN0cnVjdCBmcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8bl8+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAgdHlwZTsKLSAgICB9OwotfTsKLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfVFlQRU9GX0JBU0VEX1NFUVVFTkNFUwotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX1ZFQ1RPUl9BVVhfRlJPTlRfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9pbmNsdWRlX3ByZXByb2Nlc3NlZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9pbmNsdWRlX3ByZXByb2Nlc3NlZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM0MjcwZGEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vaW5jbHVkZV9wcmVwcm9jZXNzZWQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotCi0vLyBOTyBJTkNMVURFIEdVQVJEUywgVEhFIEhFQURFUiBJUyBJTlRFTkRFRCBGT1IgTVVMVElQTEUgSU5DTFVTSU9OCi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBpbmNsdWRlX3ByZXByb2Nlc3NlZC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy90eXBlb2YuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9jdHBzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvcHJlcHJvY2Vzc29yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc3RyaW5naXplLmhwcD4KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19UWVBFT0ZfQkFTRURfU0VRVUVOQ0VTKQotIyAgIGRlZmluZSBBVVg3NzgwNzZfSU5DTFVERV9ESVIgdHlwZW9mX2Jhc2VkCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pIFwKLSAgIHx8IGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19OT05UWVBFX1RFTVBMQVRFX1BBUlRJQUxfU1BFQykKLSMgICBkZWZpbmUgQVVYNzc4MDc2X0lOQ0xVREVfRElSIG5vX2N0cHMKLSNlbHNlCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9JTkNMVURFX0RJUiBwbGFpbgotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9ORUVEU19UT0tFTl9QQVNUSU5HX09QX0ZPUl9UT0tFTlNfSlVYVEFQT1NJTkcpCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9IRUFERVIgXAotICAgIEFVWDc3ODA3Nl9JTkNMVURFX0RJUi9ORE5CT09TVF9NUExfUFJFUFJPQ0VTU0VEX0hFQURFUiBcCi0vKiovCi0jZWxzZQotIyAgIGRlZmluZSBBVVg3NzgwNzZfSEVBREVSIFwKLSAgICBORE5CT09TVF9QUF9DQVQoQVVYNzc4MDc2X0lOQ0xVREVfRElSLC8pIyNORE5CT09TVF9NUExfUFJFUFJPQ0VTU0VEX0hFQURFUiBcCi0vKiovCi0jZW5kaWYKLQotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0lCTUNQUF9fLCBORE5CT09TVF9URVNURURfQVQoNzAwKSkKLSMgICBkZWZpbmUgQVVYNzc4MDc2X0lOQ0xVREVfU1RSSU5HIE5ETkJPT1NUX1BQX1NUUklOR0laRShuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL0FVWDc3ODA3Nl9IRUFERVIpCi0jICAgaW5jbHVkZSBBVVg3NzgwNzZfSU5DTFVERV9TVFJJTkcKLSMgICB1bmRlZiBBVVg3NzgwNzZfSU5DTFVERV9TVFJJTkcKLSNlbHNlCi0jICAgaW5jbHVkZSBORE5CT09TVF9QUF9TVFJJTkdJWkUobmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9BVVg3NzgwNzZfSEVBREVSKQotI2VuZGlmCi0KLSMgICB1bmRlZiBBVVg3NzgwNzZfSEVBREVSCi0jICAgdW5kZWYgQVVYNzc4MDc2X0lOQ0xVREVfRElSCi0KLSN1bmRlZiBORE5CT09TVF9NUExfUFJFUFJPQ0VTU0VEX0hFQURFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vaXRlbS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9pdGVtLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODg1OGFhMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9pdGVtLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwMyArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX1ZFQ1RPUl9BVVhfSVRFTV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1ZFQ1RPUl9BVVhfSVRFTV9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IGl0ZW0uaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbG9uZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZvaWQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9uZXh0X3ByaW9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy90eXBlX3dyYXBwZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy90eXBlb2YuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9jdHBzLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfVFlQRU9GX0JBU0VEX1NFUVVFTkNFUykKLQotdGVtcGxhdGU8IAotICAgICAgdHlwZW5hbWUgVAotICAgICwgdHlwZW5hbWUgQmFzZQotICAgICwgaW50IGF0X2Zyb250ID0gMAotICAgID4KLXN0cnVjdCB2X2l0ZW0KLSAgICA6IEJhc2UKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEJhc2U6OnVwcGVyX2JvdW5kXyBpbmRleF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZXh0PGluZGV4Xz46OnR5cGUgdXBwZXJfYm91bmRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDx0eXBlbmFtZSBCYXNlOjpzaXplPjo6dHlwZSBzaXplOwotICAgIHR5cGVkZWYgQmFzZSBiYXNlOwotICAgIHR5cGVkZWYgdl9pdGVtIHR5cGU7Ci0KLSAgICAvLyBhZ3VydCAxMC9zZXAvMDQ6IE1XQ1cgPD0gOS4zIHdvcmthcm91bmQgaGVyZSBhbmQgYmVsb3c7IHRoZSBjb21waWxlcgotICAgIC8vIGJyZWFrcyBpZiB1c2luZyBkZWNsYXJhdGlvbiBjb21lcyBfYmVmb3JlXyB0aGUgbmV3IG92ZXJsb2FkCi0gICAgc3RhdGljIGF1eDo6dHlwZV93cmFwcGVyPFQ+IGl0ZW1fKGluZGV4Xyk7Ci0gICAgdXNpbmcgQmFzZTo6aXRlbV87Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIHR5cGVuYW1lIEJhc2UKLSAgICA+Ci1zdHJ1Y3Qgdl9pdGVtPFQsQmFzZSwxPgotICAgIDogQmFzZQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgcHJpb3I8dHlwZW5hbWUgQmFzZTo6bG93ZXJfYm91bmRfPjo6dHlwZSBpbmRleF87Ci0gICAgdHlwZWRlZiBpbmRleF8gbG93ZXJfYm91bmRfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDx0eXBlbmFtZSBCYXNlOjpzaXplPjo6dHlwZSBzaXplOwotICAgIHR5cGVkZWYgQmFzZSBiYXNlOwotICAgIHR5cGVkZWYgdl9pdGVtIHR5cGU7Ci0KLSAgICBzdGF0aWMgYXV4Ojp0eXBlX3dyYXBwZXI8VD4gaXRlbV8oaW5kZXhfKTsKLSAgICB1c2luZyBCYXNlOjppdGVtXzsKLX07Ci0KLS8vICJlcmFzdXJlIiBpdGVtCi10ZW1wbGF0ZTwgCi0gICAgICB0eXBlbmFtZSBCYXNlCi0gICAgLCBpbnQgYXRfZnJvbnQKLSAgICA+Ci1zdHJ1Y3Qgdl9tYXNrCi0gICAgOiBCYXNlCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjx0eXBlbmFtZSBCYXNlOjp1cHBlcl9ib3VuZF8+Ojp0eXBlIGluZGV4XzsKLSAgICB0eXBlZGVmIGluZGV4XyB1cHBlcl9ib3VuZF87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBwcmlvcjx0eXBlbmFtZSBCYXNlOjpzaXplPjo6dHlwZSBzaXplOwotICAgIHR5cGVkZWYgQmFzZSBiYXNlOwotICAgIHR5cGVkZWYgdl9tYXNrIHR5cGU7Ci0KLSAgICBzdGF0aWMgYXV4Ojp0eXBlX3dyYXBwZXI8dm9pZF8+IGl0ZW1fKGluZGV4Xyk7Ci0gICAgdXNpbmcgQmFzZTo6aXRlbV87Ci19OwotCi10ZW1wbGF0ZTwgCi0gICAgICB0eXBlbmFtZSBCYXNlCi0gICAgPgotc3RydWN0IHZfbWFzazxCYXNlLDE+Ci0gICAgOiBCYXNlCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBCYXNlOjpsb3dlcl9ib3VuZF8gaW5kZXhfOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmV4dDxpbmRleF8+Ojp0eXBlIGxvd2VyX2JvdW5kXzsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHByaW9yPHR5cGVuYW1lIEJhc2U6OnNpemU+Ojp0eXBlIHNpemU7Ci0gICAgdHlwZWRlZiBCYXNlIGJhc2U7Ci0gICAgdHlwZWRlZiB2X21hc2sgdHlwZTsKLQotICAgIHN0YXRpYyBhdXg6OnR5cGVfd3JhcHBlcjx2b2lkXz4gaXRlbV8oaW5kZXhfKTsKLSAgICB1c2luZyBCYXNlOjppdGVtXzsKLX07Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX1RZUEVPRl9CQVNFRF9TRVFVRU5DRVMKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9WRUNUT1JfQVVYX0lURU1fSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9pdGVyYXRvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9pdGVyYXRvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc5OWQwZTcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vaXRlcmF0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTMwICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfQVVYX1ZFQ1RPUl9JVEVSQVRPUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX0FVWF9WRUNUT1JfSVRFUkFUT1JfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBpdGVyYXRvci5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9hdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2l0ZXJhdG9yX3RhZ3MuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9wbHVzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbWludXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hZHZhbmNlX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2Rpc3RhbmNlX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL25leHQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9wcmlvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbnR0cF9kZWNsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy92YWx1ZV93a25kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvY3Rwcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3dvcmthcm91bmQuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBWZWN0b3IKLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGxvbmcsIG5fKQotICAgID4KLXN0cnVjdCB2X2l0ZXIKLXsKLSAgICB0eXBlZGVmIGF1eDo6dl9pdGVyX3RhZyB0YWc7Ci0gICAgdHlwZWRlZiByYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZyBjYXRlZ29yeTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZfYXQ8VmVjdG9yLG5fPjo6dHlwZSB0eXBlOwotCi0gICAgdHlwZWRlZiBWZWN0b3IgdmVjdG9yXzsKLSAgICB0eXBlZGVmIG1wbDo6bG9uZ188bl8+IHBvczsKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLSAgICBlbnVtIHsgCi0gICAgICAgICAgbmV4dF8gPSBuXyArIDEKLSAgICAgICAgLCBwcmlvcl8gPSBuXyAtIDEKLSAgICAgICAgLCBwb3NfID0gbl8KLSAgICB9OwotICAgIAotICAgIHR5cGVkZWYgdl9pdGVyPFZlY3RvcixuZXh0Xz4gbmV4dDsKLSAgICB0eXBlZGVmIHZfaXRlcjxWZWN0b3IscHJpb3JfPiBwcmlvcjsKLSNlbmRpZgotCi19OwotCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFZlY3RvcgotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0wobG9uZywgbl8pCi0gICAgPgotc3RydWN0IG5leHQ8IHZfaXRlcjxWZWN0b3Isbl8+ID4KLXsKLSAgICB0eXBlZGVmIHZfaXRlcjxWZWN0b3IsKG5fICsgMSk+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFZlY3RvcgotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0wobG9uZywgbl8pCi0gICAgPgotc3RydWN0IHByaW9yPCB2X2l0ZXI8VmVjdG9yLG5fPiA+Ci17Ci0gICAgdHlwZWRlZiB2X2l0ZXI8VmVjdG9yLChuXyAtIDEpPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBWZWN0b3IKLSAgICAsIE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGxvbmcsIG5fKQotICAgICwgdHlwZW5hbWUgRGlzdGFuY2UKLSAgICA+Ci1zdHJ1Y3QgYWR2YW5jZTwgdl9pdGVyPFZlY3RvcixuXz4sRGlzdGFuY2U+Ci17Ci0gICAgdHlwZWRlZiB2X2l0ZXI8Ci0gICAgICAgICAgVmVjdG9yCi0gICAgICAgICwgKG5fICsgTkROQk9PU1RfTVBMX0FVWF9ORVNURURfVkFMVUVfV0tORChsb25nLCBEaXN0YW5jZSkpCi0gICAgICAgID4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPCAKLSAgICAgIHR5cGVuYW1lIFZlY3RvcgotICAgICwgTkROQk9PU1RfTVBMX0FVWF9OVFRQX0RFQ0wobG9uZywgbl8pCi0gICAgLCBORE5CT09TVF9NUExfQVVYX05UVFBfREVDTChsb25nLCBtXykKLSAgICA+IAotc3RydWN0IGRpc3RhbmNlPCB2X2l0ZXI8VmVjdG9yLG5fPiwgdl9pdGVyPFZlY3RvcixtXz4gPgotICAgIDogbXBsOjpsb25nXzwobV8gLSBuXyk+Ci17Ci19OwotCi0jZWxzZSAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLXRlbXBsYXRlPD4gc3RydWN0IGFkdmFuY2VfaW1wbDxhdXg6OnZfaXRlcl90YWc+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yLCB0eXBlbmFtZSBOID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICBlbnVtIHsgcG9zXyA9IEl0ZXJhdG9yOjpwb3NfLCBuXyA9IE46OnZhbHVlIH07Ci0gICAgICAgIHR5cGVkZWYgdl9pdGVyPAotICAgICAgICAgICAgICB0eXBlbmFtZSBJdGVyYXRvcjo6dmVjdG9yXwotICAgICAgICAgICAgLCAocG9zXyArIG5fKQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBkaXN0YW5jZV9pbXBsPGF1eDo6dl9pdGVyX3RhZz4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcjEsIHR5cGVuYW1lIEl0ZXIyID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICBlbnVtIHsgcG9zMV8gPSBJdGVyMTo6cG9zXywgcG9zMl8gPSBJdGVyMjo6cG9zXyB9OwotICAgICAgICB0eXBlZGVmIGxvbmdfPCggcG9zMl8gLSBwb3MxXyApPiB0eXBlOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQobG9uZywgdmFsdWUgPSAoIHBvczJfIC0gcG9zMV8gKSk7Ci0gICAgfTsKLX07Ci0KLSNlbmRpZgotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0FVWF9WRUNUT1JfSVRFUkFUT1JfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9udW1iZXJlZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9udW1iZXJlZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQyNTZlMzEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vbnVtYmVyZWQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjE4ICswLDAgQEAKLQotLy8gTk8gSU5DTFVERSBHVUFSRFMsIFRIRSBIRUFERVIgSVMgSU5URU5ERUQgRk9SIE1VTFRJUExFIElOQ0xVU0lPTgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9QUF9JU19JVEVSQVRJTkcpCi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBudW1iZXJlZC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9lbnVtX3BhcmFtcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2VudW1fc2hpZnRlZF9wYXJhbXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb21tYV9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGVhdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2RlYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0KLSNkZWZpbmUgaV8gTkROQk9PU1RfUFBfRlJBTUVfSVRFUkFUSU9OKDEpCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfVFlQRU9GX0JBU0VEX1NFUVVFTkNFUykKLQotIyAgIGRlZmluZSBBVVg3NzgwNzZfVkVDVE9SX1RBSUwodmVjdG9yLCBpXywgVCkgXAotICAgIE5ETkJPT1NUX1BQX0NBVCh2ZWN0b3IsaV8pPCBcCi0gICAgICAgICAgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoaV8sIFQpIFwKLSAgICAgICAgPiBcCi0gICAgLyoqLwotCi0jaWYgaV8gPiAwCi10ZW1wbGF0ZTwKLSAgICAgIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKGlfLCB0eXBlbmFtZSBUKQotICAgID4KLXN0cnVjdCBORE5CT09TVF9QUF9DQVQodmVjdG9yLGlfKQotICAgIDogdl9pdGVtPAotICAgICAgICAgIE5ETkJPT1NUX1BQX0NBVChULE5ETkJPT1NUX1BQX0RFQyhpXykpCi0gICAgICAgICwgQVVYNzc4MDc2X1ZFQ1RPUl9UQUlMKHZlY3RvcixORE5CT09TVF9QUF9ERUMoaV8pLFQpCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIE5ETkJPT1NUX1BQX0NBVCh2ZWN0b3IsaV8pIHR5cGU7Ci19OwotI2VuZGlmCi0KLSMgICB1bmRlZiBBVVg3NzgwNzZfVkVDVE9SX1RBSUwKLQotI2Vsc2UgLy8gImJydXRlIGZvcmNlIiBpbXBsZW1lbnRhdGlvbgotCi0jICAgaWYgaV8gPiAwCi0KLXRlbXBsYXRlPAotICAgICAgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoaV8sIHR5cGVuYW1lIFQpCi0gICAgPgotc3RydWN0IE5ETkJPT1NUX1BQX0NBVCh2ZWN0b3IsaV8pCi17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8aV8+IHRhZzsKLSAgICB0eXBlZGVmIE5ETkJPT1NUX1BQX0NBVCh2ZWN0b3IsaV8pIHR5cGU7Ci0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X1ZFQ1RPUl9JVEVNKHVudXNlZCwgaV8sIHVudXNlZDIpIFwKLSAgICB0eXBlZGVmIE5ETkJPT1NUX1BQX0NBVChULGlfKSBORE5CT09TVF9QUF9DQVQoaXRlbSxpXyk7IFwKLSAgICAvKiovCi0KLSAgICBORE5CT09TVF9QUF9SRVBFQVQoaV8sIEFVWDc3ODA3Nl9WRUNUT1JfSVRFTSwgdW51c2VkKQotIyAgIHVuZGVmIEFVWDc3ODA3Nl9WRUNUT1JfSVRFTQotICAgIHR5cGVkZWYgdm9pZF8gTkROQk9PU1RfUFBfQ0FUKGl0ZW0saV8pOwotICAgIHR5cGVkZWYgTkROQk9PU1RfUFBfQ0FUKFQsTkROQk9PU1RfUFBfREVDKGlfKSkgYmFjazsKLQotICAgIC8vIEJvcmxhbmQgZm9yY2VzIHVzIHRvIHVzZSAndHlwZScgaGVyZSAoaW5zdGVhZCBvZiB0aGUgY2xhc3MgbmFtZSkKLSAgICB0eXBlZGVmIHZfaXRlcjx0eXBlLDA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPHR5cGUsaV8+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzxORE5CT09TVF9QUF9ERUMoaV8pPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9QUF9DQVQodmVjdG9yLGlfKTwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9QUF9ERUMoaV8pKQotICAgICAgICAgICAgICBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9ERUMoaV8pLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0pCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPGlfPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9QUF9DQVQodmVjdG9yLE5ETkJPT1NUX1BQX0RFQyhpXykpPAotICAgICAgICAgICAgICBORE5CT09TVF9QUF9FTlVNX1NISUZURURfUEFSQU1TKGlfLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0pCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8TkROQk9PU1RfUFBfREVDKGlfKT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfUFBfQ0FUKHZlY3RvcixpXyk8Ci0gICAgICAgICAgICAgIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0RFQyhpXyksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbSkKLSAgICAgICAgICAgICAgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfREVDKGlfKSkKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPGlfPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9QUF9DQVQodmVjdG9yLE5ETkJPT1NUX1BQX0RFQyhpXykpPAotICAgICAgICAgICAgICBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9ERUMoaV8pLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0pCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLSMgICBlbmRpZiAvLyBpXyA+IDAKLQotIyAgIGlmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pIFwKLSAgICAmJiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX05PTlRZUEVfVEVNUExBVEVfUEFSVElBTF9TUEVDKQotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgViA+Ci1zdHJ1Y3Qgdl9hdDxWLGlfPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVjo6TkROQk9PU1RfUFBfQ0FUKGl0ZW0saV8pIHR5cGU7Ci19OwotCi0jICAgZWxzZQotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPD4gc3RydWN0IHZfYXRfaW1wbDxpXz4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8gPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWXzo6TkROQk9PU1RfUFBfQ0FUKGl0ZW0saV8pIHR5cGU7Ci0gICAgfTsKLX07Ci19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhdF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8aV8+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8sIHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2X2F0X2ltcGw8TkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZT4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxWXz46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotI2lmIGlfID4gMAotdGVtcGxhdGU8Pgotc3RydWN0IGZyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzxpXz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8aV8+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6YmFjayB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZW1wdHlfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPGlfPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLSNlbmRpZgotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8aV8+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogbG9uZ188aV8+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTzFfc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8aV8+ID4KLSAgICA6IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPGlfPiA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xlYXJfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPGlfPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPD4gdHlwZTsKLSAgICB9OwotfTsKLQotIyAgIGVuZGlmIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfVFlQRU9GX0JBU0VEX1NFUVVFTkNFUwotCi0jdW5kZWYgaV8KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1BQX0lTX0lURVJBVElORwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vbnVtYmVyZWRfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9udW1iZXJlZF9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTlmZDkwNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9udW1iZXJlZF9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDc3ICswLDAgQEAKLQotLy8gTk8gSU5DTFVERSBHVUFSRFMsIFRIRSBIRUFERVIgSVMgSU5URU5ERUQgRk9SIE1VTFRJUExFIElOQ0xVU0lPTgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9QUF9JU19JVEVSQVRJTkcpCi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBudW1iZXJlZF9jLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2VudW1fcGFyYW1zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZW51bV9zaGlmdGVkX3BhcmFtcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbW1hX2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZWF0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZGVjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLQotI2RlZmluZSBpXyBORE5CT09TVF9QUF9GUkFNRV9JVEVSQVRJT04oMSkKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19UWVBFT0ZfQkFTRURfU0VRVUVOQ0VTKQotCi0jICAgZGVmaW5lIEFVWDc3ODA3Nl9WRUNUT1JfVEFJTCh2ZWN0b3IsIGlfLCBDKSBcCi0gICAgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX0NBVCh2ZWN0b3IsaV8pLF9jKTxUIFwKLSAgICAgICAgICBORE5CT09TVF9QUF9DT01NQV9JRihpXykgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoaV8sIEMpIFwKLSAgICAgICAgPiBcCi0gICAgLyoqLwotCi0jaWYgaV8gPiAwCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKGlfLCBUIEMpCi0gICAgPgotc3RydWN0IE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9DQVQodmVjdG9yLGlfKSxfYykKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPFQsTkROQk9PU1RfUFBfQ0FUKEMsTkROQk9PU1RfUFBfREVDKGlfKSk+Ci0gICAgICAgICwgQVVYNzc4MDc2X1ZFQ1RPUl9UQUlMKHZlY3RvcixORE5CT09TVF9QUF9ERUMoaV8pLEMpCi0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9DQVQodmVjdG9yLGlfKSxfYykgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0jZW5kaWYKLQotIyAgIHVuZGVmIEFVWDc3ODA3Nl9WRUNUT1JfVEFJTAotCi0jZWxzZSAvLyAiYnJ1dGUgZm9yY2UiIGltcGxlbWVudGF0aW9uCi0KLSMgICBkZWZpbmUgQVVYNzc4MDc2X1ZFQ1RPUl9DX1BBUkFNX0ZVTkModW51c2VkLCBpXywgcGFyYW0pIFwKLSAgICBORE5CT09TVF9QUF9DT01NQV9JRihpXykgXAotICAgIGludGVncmFsX2M8VCxORE5CT09TVF9QUF9DQVQocGFyYW0saV8pPiBcCi0gICAgLyoqLwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKGlfLCBUIEMpCi0gICAgPgotc3RydWN0IE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9DQVQodmVjdG9yLGlfKSxfYykKLSAgICA6IE5ETkJPT1NUX1BQX0NBVCh2ZWN0b3IsaV8pPCBORE5CT09TVF9QUF9SRVBFQVQoaV8sQVVYNzc4MDc2X1ZFQ1RPUl9DX1BBUkFNX0ZVTkMsQykgPgotewotICAgIHR5cGVkZWYgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX0NBVCh2ZWN0b3IsaV8pLF9jKSB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotIyAgIHVuZGVmIEFVWDc3ODA3Nl9WRUNUT1JfQ19QQVJBTV9GVU5DCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX1RZUEVPRl9CQVNFRF9TRVFVRU5DRVMKLQotI3VuZGVmIGlfCi0KLSNlbmRpZiAvLyBORE5CT09TVF9QUF9JU19JVEVSQVRJTkcKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3BvcF9iYWNrLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3BvcF9iYWNrLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmI2MDNhYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wb3BfYmFjay5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX1ZFQ1RPUl9BVVhfUE9QX0JBQ0tfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9WRUNUT1JfQVVYX1BPUF9CQUNLX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogcG9wX2JhY2suaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvcG9wX2JhY2tfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdHlwZW9mLmhwcD4KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19UWVBFT0ZfQkFTRURfU0VRVUVOQ0VTKQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL2l0ZW0uaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy90YWcuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZyA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2X21hc2s8VmVjdG9yLDA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX1RZUEVPRl9CQVNFRF9TRVFVRU5DRVMKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9WRUNUT1JfQVVYX1BPUF9CQUNLX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcG9wX2Zyb250LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3BvcF9mcm9udC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5N2I1NDAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcG9wX2Zyb250LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfVkVDVE9SX0FVWF9QT1BfRlJPTlRfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9WRUNUT1JfQVVYX1BPUF9GUk9OVF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHBvcF9mcm9udC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9wb3BfZnJvbnRfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdHlwZW9mLmhwcD4KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19UWVBFT0ZfQkFTRURfU0VRVUVOQ0VTKQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL2l0ZW0uaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy90YWcuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdl9tYXNrPFZlY3RvciwxPiB0eXBlOwotICAgIH07Ci19OwotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19UWVBFT0ZfQkFTRURfU0VRVUVOQ0VTCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfVkVDVE9SX0FVWF9QT1BfRlJPTlRfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy92ZWN0b3IxMC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy92ZWN0b3IxMC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmOWFlN2YuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvdmVjdG9yMTAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTUyOCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yMTAuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8PiBzdHJ1Y3Qgdl9hdF9pbXBsPDA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVl86Oml0ZW0wIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGF0X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfLCB0eXBlbmFtZSBOID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dl9hdF9pbXBsPE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWU+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88Vl8+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGxvbmdfPDA+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTzFfc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MD4gPgotICAgIDogc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MD4gPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsZWFyX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPD4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMAotICAgID4KLXN0cnVjdCB2ZWN0b3IxCi17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8MT4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMSB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMTsKLSAgICB0eXBlZGVmIFQwIGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDEgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPAotICAgICAgICAgICAgIAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxPAotICAgICAgICAgICAgIAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDwKLSAgICAgICAgICAgICAKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCB2X2F0X2ltcGw8MT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8gPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWXzo6aXRlbTEgdHlwZTsKLSAgICB9OwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8sIHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2X2F0X2ltcGw8TkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZT4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxWXz46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6OmJhY2sgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVtcHR5X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogbG9uZ188MT4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBPMV9zaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxPiA+Ci0gICAgOiBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxPiA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xlYXJfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjA8PiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMQotICAgID4KLXN0cnVjdCB2ZWN0b3IyCi17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8Mj4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMiB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTI7Ci0gICAgdHlwZWRlZiBUMSBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwyID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjI8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjE8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8PiBzdHJ1Y3Qgdl9hdF9pbXBsPDI+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVl86Oml0ZW0yIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGF0X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfLCB0eXBlbmFtZSBOID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dl9hdF9pbXBsPE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWU+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88Vl8+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjpiYWNrIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlbXB0eV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBmYWxzZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGxvbmdfPDI+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTzFfc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mj4gPgotICAgIDogc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mj4gPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsZWFyX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPD4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyCi0gICAgPgotc3RydWN0IHZlY3RvcjMKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwzPiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IzIHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0zOwotICAgIHR5cGVkZWYgVDIgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMyA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzPAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjM8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPD4gc3RydWN0IHZfYXRfaW1wbDwzPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZfOjppdGVtMyB0eXBlOwotICAgIH07Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhdF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXywgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZfYXRfaW1wbDxORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFZfPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6YmFjayB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZW1wdHlfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogZmFsc2VfCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBsb25nXzwzPgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IE8xX3NpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM+ID4KLSAgICA6IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM+ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjbGVhcl9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDw+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNAotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDQ+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjQgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtNDsKLSAgICB0eXBlZGVmIFQzIGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDQgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjM8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPD4gc3RydWN0IHZfYXRfaW1wbDw0PgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZfOjppdGVtNCB0eXBlOwotICAgIH07Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhdF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8ND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXywgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZfYXRfaW1wbDxORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFZfPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6YmFjayB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZW1wdHlfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogZmFsc2VfCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8ND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBsb25nXzw0PgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IE8xX3NpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ+ID4KLSAgICA6IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ+ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjbGVhcl9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8ND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDw+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgPgotc3RydWN0IHZlY3RvcjUKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzw1PiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3I1IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtNTsKLSAgICB0eXBlZGVmIFQ0IGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDUgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8ND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNTwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8ND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPD4gc3RydWN0IHZfYXRfaW1wbDw1PgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZfOjppdGVtNSB0eXBlOwotICAgIH07Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhdF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXywgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZfYXRfaW1wbDxORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFZfPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6YmFjayB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZW1wdHlfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogZmFsc2VfCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBsb25nXzw1PgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IE8xX3NpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDU+ID4KLSAgICA6IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDU+ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjbGVhcl9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDw+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCB2ZWN0b3I2Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8Nj4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yNiB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtNjsKLSAgICB0eXBlZGVmIFQ1IGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDYgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNjwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjU8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjY8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjU8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8PiBzdHJ1Y3Qgdl9hdF9pbXBsPDY+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVl86Oml0ZW02IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGF0X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfLCB0eXBlbmFtZSBOID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dl9hdF9pbXBsPE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWU+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88Vl8+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Nj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Nj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjpiYWNrIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlbXB0eV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Nj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBmYWxzZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGxvbmdfPDY+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTzFfc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Nj4gPgotICAgIDogc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Nj4gPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsZWFyX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPD4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNgotICAgID4KLXN0cnVjdCB2ZWN0b3I3Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8Nz4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yNyB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW03OwotICAgIHR5cGVkZWYgVDYgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsNyA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I3PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Nz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Nj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Nz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCB2X2F0X2ltcGw8Nz4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8gPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWXzo6aXRlbTcgdHlwZTsKLSAgICB9OwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8sIHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2X2F0X2ltcGw8TkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZT4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxWXz46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6OmJhY2sgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVtcHR5X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogbG9uZ188Nz4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBPMV9zaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw3PiA+Ci0gICAgOiBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw3PiA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xlYXJfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjA8PiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNwotICAgID4KLXN0cnVjdCB2ZWN0b3I4Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8OD4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yOCB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTg7Ci0gICAgdHlwZWRlZiBUNyBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSw4ID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3Rvcjg8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3Rvcjc8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Nz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yODwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I3PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8PiBzdHJ1Y3Qgdl9hdF9pbXBsPDg+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVl86Oml0ZW04IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGF0X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfLCB0eXBlbmFtZSBOID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dl9hdF9pbXBsPE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWU+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88Vl8+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8OD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8OD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjpiYWNrIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlbXB0eV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8OD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBmYWxzZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGxvbmdfPDg+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTzFfc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8OD4gPgotICAgIDogc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8OD4gPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsZWFyX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPD4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4Ci0gICAgPgotc3RydWN0IHZlY3RvcjkKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzw5PiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3I5IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW05OwotICAgIHR5cGVkZWYgVDggYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsOSA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I5PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I4PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3Rvcjk8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8OT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yODwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPD4gc3RydWN0IHZfYXRfaW1wbDw5PgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZfOjppdGVtOSB0eXBlOwotICAgIH07Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhdF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8OT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXywgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZfYXRfaW1wbDxORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFZfPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6YmFjayB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZW1wdHlfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogZmFsc2VfCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8OT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBsb25nXzw5PgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IE8xX3NpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDk+ID4KLSAgICA6IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDk+ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjbGVhcl9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8OT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDw+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMTAKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwxMD4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMTAgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUOSBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwxMCA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxMDwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yOTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjEwPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3Rvcjk8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPD4gc3RydWN0IHZfYXRfaW1wbDwxMD4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8gPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWXzo6aXRlbTEwIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGF0X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXywgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZfYXRfaW1wbDxORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFZfPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDEwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjpiYWNrIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlbXB0eV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogZmFsc2VfCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogbG9uZ188MTA+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTzFfc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTA+ID4KLSAgICA6IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDEwPiA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xlYXJfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDEwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPD4gdHlwZTsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3ZlY3RvcjEwX2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvdmVjdG9yMTBfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQyNWM5M2YuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvdmVjdG9yMTBfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjEwX2MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMAotICAgID4KLXN0cnVjdCB2ZWN0b3IxX2MKLSAgICA6IHZlY3RvcjE8IGludGVncmFsX2M8IFQsQzAgPiA+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+LCBpbnRlZ3JhbF9jPCBULEM5ID4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMTBfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3ZlY3RvcjIwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3ZlY3RvcjIwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmZiNmQ3ZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy92ZWN0b3IyMC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxODA0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IyMC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwCi0gICAgPgotc3RydWN0IHZlY3RvcjExCi17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8MTE+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjExIHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMCBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwxMSA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTE8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjEwPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDEwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxMTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDExPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxMDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8PiBzdHJ1Y3Qgdl9hdF9pbXBsPDExPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZfOjppdGVtMTEgdHlwZTsKLSAgICB9OwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDExPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfLCB0eXBlbmFtZSBOID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dl9hdF9pbXBsPE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWU+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88Vl8+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDExPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6OmJhY2sgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVtcHR5X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBmYWxzZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBsb25nXzwxMT4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBPMV9zaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMT4gPgotICAgIDogc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTE+ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjbGVhcl9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjA8PiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMQotICAgID4KLXN0cnVjdCB2ZWN0b3IxMgotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDEyPiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IxMiB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTEyOwotICAgIHR5cGVkZWYgVDExIGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDEyID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDExPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxMjwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTE8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjEyPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjExPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCB2X2F0X2ltcGw8MTI+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVl86Oml0ZW0xMiB0eXBlOwotICAgIH07Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhdF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8sIHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2X2F0X2ltcGw8TkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZT4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxWXz46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6YmFjayB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZW1wdHlfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDEyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDEyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGxvbmdfPDEyPgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IE8xX3NpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDEyPiA+Ci0gICAgOiBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMj4gPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsZWFyX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDw+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMTMKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwxMz4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMTMgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTIgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMTMgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjEzPAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTI8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDEyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxMzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTI8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCB2X2F0X2ltcGw8MTM+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVl86Oml0ZW0xMyB0eXBlOwotICAgIH07Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhdF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8sIHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2X2F0X2ltcGw8TkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZT4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxWXz46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6YmFjayB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZW1wdHlfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDEzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDEzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGxvbmdfPDEzPgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IE8xX3NpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDEzPiA+Ci0gICAgOiBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMz4gPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsZWFyX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDw+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMwotICAgID4KLXN0cnVjdCB2ZWN0b3IxNAotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDE0PiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IxNCB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTMgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMTQgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjE0PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTM8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDEzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxNDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTM8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCB2X2F0X2ltcGw8MTQ+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVl86Oml0ZW0xNCB0eXBlOwotICAgIH07Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhdF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8sIHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2X2F0X2ltcGw8TkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZT4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxWXz46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6YmFjayB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZW1wdHlfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGxvbmdfPDE0PgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IE8xX3NpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE0PiA+Ci0gICAgOiBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxND4gPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsZWFyX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDw+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgPgotc3RydWN0IHZlY3RvcjE1Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8MTU+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjE1IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTQgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMTUgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjE1PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjE0PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjE1PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxNT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8PiBzdHJ1Y3Qgdl9hdF9pbXBsPDE1PgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZfOjppdGVtMTUgdHlwZTsKLSAgICB9OwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfLCB0eXBlbmFtZSBOID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dl9hdF9pbXBsPE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWU+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88Vl8+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6OmJhY2sgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVtcHR5X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxNT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBmYWxzZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxNT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBsb25nXzwxNT4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBPMV9zaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxNT4gPgotICAgIDogc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTU+ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjbGVhcl9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjA8PiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1Ci0gICAgPgotc3RydWN0IHZlY3RvcjE2Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8MTY+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjE2IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTE2OwotICAgIHR5cGVkZWYgVDE1IGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDE2ID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxNjwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxNTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxNjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjE1PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPD4gc3RydWN0IHZfYXRfaW1wbDwxNj4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8gPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWXzo6aXRlbTE2IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGF0X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxNj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXywgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZfYXRfaW1wbDxORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFZfPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxNj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjpiYWNrIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlbXB0eV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogZmFsc2VfCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogbG9uZ188MTY+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTzFfc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTY+ID4KLSAgICA6IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE2PiA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xlYXJfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPD4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2Ci0gICAgPgotc3RydWN0IHZlY3RvcjE3Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8MTc+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjE3IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxNiBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwxNyA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxNj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTc8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjE2PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxNzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxNjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8PiBzdHJ1Y3Qgdl9hdF9pbXBsPDE3PgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZfOjppdGVtMTcgdHlwZTsKLSAgICB9OwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfLCB0eXBlbmFtZSBOID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dl9hdF9pbXBsPE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWU+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88Vl8+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6OmJhY2sgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVtcHR5X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxNz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBmYWxzZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxNz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBsb25nXzwxNz4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBPMV9zaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxNz4gPgotICAgIDogc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTc+ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjbGVhcl9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjA8PiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNwotICAgID4KLXN0cnVjdCB2ZWN0b3IxOAotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDE4PiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IxOCB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTE4OwotICAgIHR5cGVkZWYgVDE3IGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDE4ID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxODwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxOD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTc8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjE4PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjE3PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCB2X2F0X2ltcGw8MTg+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVl86Oml0ZW0xOCB0eXBlOwotICAgIH07Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhdF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8sIHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2X2F0X2ltcGw8TkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZT4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxWXz46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxOD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6YmFjayB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZW1wdHlfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGxvbmdfPDE4PgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IE8xX3NpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE4PiA+Ci0gICAgOiBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxOD4gPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsZWFyX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxOD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDw+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMTkKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwxOT4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMTkgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMTggYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMTkgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjE5PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxOT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTg8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxOTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxOT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTg8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCB2X2F0X2ltcGw8MTk+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVl86Oml0ZW0xOSB0eXBlOwotICAgIH07Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhdF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8sIHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2X2F0X2ltcGw8TkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZT4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxWXz46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxOT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6YmFjayB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZW1wdHlfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGxvbmdfPDE5PgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IE8xX3NpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE5PiA+Ci0gICAgOiBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxOT4gPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsZWFyX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxOT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDw+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgID4KLXN0cnVjdCB2ZWN0b3IyMAotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDIwPiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IyMCB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMTkgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMjAgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjIwPAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTk8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyMDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTk8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCB2X2F0X2ltcGw8MjA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVl86Oml0ZW0yMCB0eXBlOwotICAgIH07Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhdF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8sIHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2X2F0X2ltcGw8TkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZT4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxWXz46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6YmFjayB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZW1wdHlfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGxvbmdfPDIwPgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IE8xX3NpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIwPiA+Ci0gICAgOiBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMD4gPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsZWFyX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDw+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy92ZWN0b3IyMF9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3ZlY3RvcjIwX2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxODE0Y2NiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3ZlY3RvcjIwX2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTk1ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IyMF9jLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgPgotc3RydWN0IHZlY3RvcjExX2MKLSAgICA6IHZlY3RvcjExPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+LCBpbnRlZ3JhbF9jPFQKLSAgICAgICAgLCBDMTA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjExX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExCi0gICAgPgotc3RydWN0IHZlY3RvcjEyX2MKLSAgICA6IHZlY3RvcjEyPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IxMl9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMTNfYwotICAgIDogdmVjdG9yMTM8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjEzX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMTRfYwotICAgIDogdmVjdG9yMTQ8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+LCBpbnRlZ3JhbF9jPFQKLSAgICAgICAgLCBDMTM+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjE0X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0Ci0gICAgPgotc3RydWN0IHZlY3RvcjE1X2MKLSAgICA6IHZlY3RvcjE1PAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMTVfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1Ci0gICAgPgotc3RydWN0IHZlY3RvcjE2X2MKLSAgICA6IHZlY3RvcjE2PAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMTZfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNgotICAgID4KLXN0cnVjdCB2ZWN0b3IxN19jCi0gICAgOiB2ZWN0b3IxNzwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+LCBpbnRlZ3JhbF9jPFQKLSAgICAgICAgLCBDMTY+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjE3X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3Ci0gICAgPgotc3RydWN0IHZlY3RvcjE4X2MKLSAgICA6IHZlY3RvcjE4PAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjE4X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOAotICAgID4KLXN0cnVjdCB2ZWN0b3IxOV9jCi0gICAgOiB2ZWN0b3IxOTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IxOV9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5Ci0gICAgPgotc3RydWN0IHZlY3RvcjIwX2MKLSAgICA6IHZlY3RvcjIwPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+LCBpbnRlZ3JhbF9jPCBULEMxOCA+LCBpbnRlZ3JhbF9jPFQKLSAgICAgICAgLCBDMTk+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjIwX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy92ZWN0b3IzMC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy92ZWN0b3IzMC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQwNzA1ZjYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvdmVjdG9yMzAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjEyNCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yMzAuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwCi0gICAgPgotc3RydWN0IHZlY3RvcjIxCi17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8MjE+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjIxIHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjAgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMjEgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjIxPAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjIwPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjIxPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjA8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8PiBzdHJ1Y3Qgdl9hdF9pbXBsPDIxPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZfOjppdGVtMjEgdHlwZTsKLSAgICB9OwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfLCB0eXBlbmFtZSBOID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dl9hdF9pbXBsPE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWU+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88Vl8+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6OmJhY2sgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVtcHR5X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBmYWxzZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBsb25nXzwyMT4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBPMV9zaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMT4gPgotICAgIDogc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjE+ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjbGVhcl9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjA8PiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxCi0gICAgPgotc3RydWN0IHZlY3RvcjIyCi17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8MjI+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjIyIHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIHR5cGVkZWYgVDIxIGl0ZW0yMTsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTIyOwotICAgIHR5cGVkZWYgVDIxIGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDIyID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyMjwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyMTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyMjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjIxPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPD4gc3RydWN0IHZfYXRfaW1wbDwyMj4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8gPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWXzo6aXRlbTIyIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGF0X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXywgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZfYXRfaW1wbDxORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFZfPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjpiYWNrIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlbXB0eV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogZmFsc2VfCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogbG9uZ188MjI+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTzFfc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjI+ID4KLSAgICA6IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIyPiA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xlYXJfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPD4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyCi0gICAgPgotc3RydWN0IHZlY3RvcjIzCi17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8MjM+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjIzIHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIHR5cGVkZWYgVDIxIGl0ZW0yMTsKLSAgICB0eXBlZGVmIFQyMiBpdGVtMjI7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0yMzsKLSAgICB0eXBlZGVmIFQyMiBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwyMyA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjM8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjIyPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyMzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyMjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8PiBzdHJ1Y3Qgdl9hdF9pbXBsPDIzPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZfOjppdGVtMjMgdHlwZTsKLSAgICB9OwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfLCB0eXBlbmFtZSBOID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dl9hdF9pbXBsPE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWU+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88Vl8+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6OmJhY2sgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVtcHR5X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBmYWxzZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBsb25nXzwyMz4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBPMV9zaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMz4gPgotICAgIDogc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjM+ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjbGVhcl9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjA8PiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMwotICAgID4KLXN0cnVjdCB2ZWN0b3IyNAotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDI0PiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IyNCB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQyMSBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjIgaXRlbTIyOwotICAgIHR5cGVkZWYgVDIzIGl0ZW0yMzsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTI0OwotICAgIHR5cGVkZWYgVDIzIGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDI0ID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyNDwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjM8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjI0PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjIzPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCB2X2F0X2ltcGw8MjQ+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVl86Oml0ZW0yNCB0eXBlOwotICAgIH07Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhdF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8sIHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2X2F0X2ltcGw8TkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZT4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxWXz46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6YmFjayB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZW1wdHlfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGxvbmdfPDI0PgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IE8xX3NpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI0PiA+Ci0gICAgOiBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyND4gPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsZWFyX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDw+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMjUKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwyNT4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMjUgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMjEgaXRlbTIxOwotICAgIHR5cGVkZWYgVDIyIGl0ZW0yMjsKLSAgICB0eXBlZGVmIFQyMyBpdGVtMjM7Ci0gICAgdHlwZWRlZiBUMjQgaXRlbTI0OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMjU7Ci0gICAgdHlwZWRlZiBUMjQgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMjUgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjI1PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyNT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyNTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyNT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCB2X2F0X2ltcGw8MjU+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVl86Oml0ZW0yNSB0eXBlOwotICAgIH07Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhdF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8sIHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2X2F0X2ltcGw8TkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZT4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxWXz46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyNT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6YmFjayB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZW1wdHlfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGxvbmdfPDI1PgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IE8xX3NpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI1PiA+Ci0gICAgOiBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyNT4gPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsZWFyX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyNT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDw+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNQotICAgID4KLXN0cnVjdCB2ZWN0b3IyNgotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDI2PiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IyNiB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQyMSBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjIgaXRlbTIyOwotICAgIHR5cGVkZWYgVDIzIGl0ZW0yMzsKLSAgICB0eXBlZGVmIFQyNCBpdGVtMjQ7Ci0gICAgdHlwZWRlZiBUMjUgaXRlbTI1OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMjY7Ci0gICAgdHlwZWRlZiBUMjUgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMjYgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjI2PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyNj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjU8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyNjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyNj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjU8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCB2X2F0X2ltcGw8MjY+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVl86Oml0ZW0yNiB0eXBlOwotICAgIH07Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhdF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8sIHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2X2F0X2ltcGw8TkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZT4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxWXz46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyNj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6YmFjayB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZW1wdHlfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGxvbmdfPDI2PgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IE8xX3NpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI2PiA+Ci0gICAgOiBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyNj4gPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsZWFyX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyNj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDw+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2Ci0gICAgPgotc3RydWN0IHZlY3RvcjI3Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8Mjc+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjI3IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIHR5cGVkZWYgVDIxIGl0ZW0yMTsKLSAgICB0eXBlZGVmIFQyMiBpdGVtMjI7Ci0gICAgdHlwZWRlZiBUMjMgaXRlbTIzOwotICAgIHR5cGVkZWYgVDI0IGl0ZW0yNDsKLSAgICB0eXBlZGVmIFQyNSBpdGVtMjU7Ci0gICAgdHlwZWRlZiBUMjYgaXRlbTI2OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMjc7Ci0gICAgdHlwZWRlZiBUMjYgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMjcgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjI3PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mjc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjI2PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjI3PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyNz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjY8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8PiBzdHJ1Y3Qgdl9hdF9pbXBsPDI3PgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZfOjppdGVtMjcgdHlwZTsKLSAgICB9OwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfLCB0eXBlbmFtZSBOID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dl9hdF9pbXBsPE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWU+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88Vl8+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mjc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6OmJhY2sgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVtcHR5X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyNz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBmYWxzZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyNz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBsb25nXzwyNz4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBPMV9zaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyNz4gPgotICAgIDogc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mjc+ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjbGVhcl9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mjc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjA8PiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3Ci0gICAgPgotc3RydWN0IHZlY3RvcjI4Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8Mjg+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjI4IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIHR5cGVkZWYgVDIxIGl0ZW0yMTsKLSAgICB0eXBlZGVmIFQyMiBpdGVtMjI7Ci0gICAgdHlwZWRlZiBUMjMgaXRlbTIzOwotICAgIHR5cGVkZWYgVDI0IGl0ZW0yNDsKLSAgICB0eXBlZGVmIFQyNSBpdGVtMjU7Ci0gICAgdHlwZWRlZiBUMjYgaXRlbTI2OwotICAgIHR5cGVkZWYgVDI3IGl0ZW0yNzsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTI4OwotICAgIHR5cGVkZWYgVDI3IGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDI4ID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyODwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyNzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyODwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mjg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjI3PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPD4gc3RydWN0IHZfYXRfaW1wbDwyOD4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8gPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWXzo6aXRlbTI4IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGF0X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyOD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXywgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZfYXRfaW1wbDxORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFZfPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyOD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjpiYWNrIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlbXB0eV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mjg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogZmFsc2VfCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mjg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogbG9uZ188Mjg+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTzFfc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mjg+ID4KLSAgICA6IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI4PiA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xlYXJfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPD4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4Ci0gICAgPgotc3RydWN0IHZlY3RvcjI5Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8Mjk+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjI5IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIHR5cGVkZWYgVDIxIGl0ZW0yMTsKLSAgICB0eXBlZGVmIFQyMiBpdGVtMjI7Ci0gICAgdHlwZWRlZiBUMjMgaXRlbTIzOwotICAgIHR5cGVkZWYgVDI0IGl0ZW0yNDsKLSAgICB0eXBlZGVmIFQyNSBpdGVtMjU7Ci0gICAgdHlwZWRlZiBUMjYgaXRlbTI2OwotICAgIHR5cGVkZWYgVDI3IGl0ZW0yNzsKLSAgICB0eXBlZGVmIFQyOCBpdGVtMjg7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0yOTsKLSAgICB0eXBlZGVmIFQyOCBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwyOSA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyOD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjk8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mjk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjI4PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyOTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyODwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8PiBzdHJ1Y3Qgdl9hdF9pbXBsPDI5PgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZfOjppdGVtMjkgdHlwZTsKLSAgICB9OwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfLCB0eXBlbmFtZSBOID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dl9hdF9pbXBsPE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWU+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88Vl8+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mjk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6OmJhY2sgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVtcHR5X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyOT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBmYWxzZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyOT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBsb25nXzwyOT4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBPMV9zaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyOT4gPgotICAgIDogc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mjk+ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjbGVhcl9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mjk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjA8PiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgID4KLXN0cnVjdCB2ZWN0b3IzMAotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDMwPiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IzMCB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQyMSBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjIgaXRlbTIyOwotICAgIHR5cGVkZWYgVDIzIGl0ZW0yMzsKLSAgICB0eXBlZGVmIFQyNCBpdGVtMjQ7Ci0gICAgdHlwZWRlZiBUMjUgaXRlbTI1OwotICAgIHR5cGVkZWYgVDI2IGl0ZW0yNjsKLSAgICB0eXBlZGVmIFQyNyBpdGVtMjc7Ci0gICAgdHlwZWRlZiBUMjggaXRlbTI4OwotICAgIHR5cGVkZWYgVDI5IGl0ZW0yOTsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTMwOwotICAgIHR5cGVkZWYgVDI5IGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDMwID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzMDwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjk8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mjk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjMwPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjI5PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCB2X2F0X2ltcGw8MzA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVl86Oml0ZW0zMCB0eXBlOwotICAgIH07Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhdF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8sIHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2X2F0X2ltcGw8TkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZT4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxWXz46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6YmFjayB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZW1wdHlfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGxvbmdfPDMwPgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IE8xX3NpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMwPiA+Ci0gICAgOiBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMD4gPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsZWFyX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDw+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy92ZWN0b3IzMF9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3ZlY3RvcjMwX2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YjEwNDQ0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3ZlY3RvcjMwX2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjM4ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IzMF9jLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgID4KLXN0cnVjdCB2ZWN0b3IyMV9jCi0gICAgOiB2ZWN0b3IyMTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE5ID4sIGludGVncmFsX2M8IFQsQzIwID4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMjFfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxCi0gICAgPgotc3RydWN0IHZlY3RvcjIyX2MKLSAgICA6IHZlY3RvcjIyPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+LCBpbnRlZ3JhbF9jPCBULEMxOCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTkgPiwgaW50ZWdyYWxfYzwgVCxDMjAgPiwgaW50ZWdyYWxfYzwgVCxDMjEgPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IyMl9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyCi0gICAgPgotc3RydWN0IHZlY3RvcjIzX2MKLSAgICA6IHZlY3RvcjIzPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+LCBpbnRlZ3JhbF9jPCBULEMxOCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTkgPiwgaW50ZWdyYWxfYzwgVCxDMjAgPiwgaW50ZWdyYWxfYzwgVCxDMjEgPiwgaW50ZWdyYWxfYzxUCi0gICAgICAgICwgQzIyPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IyM19jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMwotICAgID4KLXN0cnVjdCB2ZWN0b3IyNF9jCi0gICAgOiB2ZWN0b3IyNDwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE5ID4sIGludGVncmFsX2M8IFQsQzIwID4sIGludGVncmFsX2M8IFQsQzIxID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyMiA+LCBpbnRlZ3JhbF9jPCBULEMyMyA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjI0X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNAotICAgID4KLXN0cnVjdCB2ZWN0b3IyNV9jCi0gICAgOiB2ZWN0b3IyNTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE5ID4sIGludGVncmFsX2M8IFQsQzIwID4sIGludGVncmFsX2M8IFQsQzIxID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyMiA+LCBpbnRlZ3JhbF9jPCBULEMyMyA+LCBpbnRlZ3JhbF9jPCBULEMyNCA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjI1X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMjZfYwotICAgIDogdmVjdG9yMjY8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4sIGludGVncmFsX2M8IFQsQzE4ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxOSA+LCBpbnRlZ3JhbF9jPCBULEMyMCA+LCBpbnRlZ3JhbF9jPCBULEMyMSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjIgPiwgaW50ZWdyYWxfYzwgVCxDMjMgPiwgaW50ZWdyYWxfYzwgVCxDMjQgPiwgaW50ZWdyYWxfYzxUCi0gICAgICAgICwgQzI1PiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IyNl9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNgotICAgID4KLXN0cnVjdCB2ZWN0b3IyN19jCi0gICAgOiB2ZWN0b3IyNzwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE5ID4sIGludGVncmFsX2M8IFQsQzIwID4sIGludGVncmFsX2M8IFQsQzIxID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyMiA+LCBpbnRlZ3JhbF9jPCBULEMyMyA+LCBpbnRlZ3JhbF9jPCBULEMyNCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjUgPiwgaW50ZWdyYWxfYzwgVCxDMjYgPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IyN19jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMjhfYwotICAgIDogdmVjdG9yMjg8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4sIGludGVncmFsX2M8IFQsQzE4ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxOSA+LCBpbnRlZ3JhbF9jPCBULEMyMCA+LCBpbnRlZ3JhbF9jPCBULEMyMSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjIgPiwgaW50ZWdyYWxfYzwgVCxDMjMgPiwgaW50ZWdyYWxfYzwgVCxDMjQgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI1ID4sIGludGVncmFsX2M8IFQsQzI2ID4sIGludGVncmFsX2M8IFQsQzI3ID4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMjhfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOAotICAgID4KLXN0cnVjdCB2ZWN0b3IyOV9jCi0gICAgOiB2ZWN0b3IyOTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE5ID4sIGludGVncmFsX2M8IFQsQzIwID4sIGludGVncmFsX2M8IFQsQzIxID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyMiA+LCBpbnRlZ3JhbF9jPCBULEMyMyA+LCBpbnRlZ3JhbF9jPCBULEMyNCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjUgPiwgaW50ZWdyYWxfYzwgVCxDMjYgPiwgaW50ZWdyYWxfYzwgVCxDMjcgPiwgaW50ZWdyYWxfYzxUCi0gICAgICAgICwgQzI4PiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IyOV9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOQotICAgID4KLXN0cnVjdCB2ZWN0b3IzMF9jCi0gICAgOiB2ZWN0b3IzMDwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE5ID4sIGludGVncmFsX2M8IFQsQzIwID4sIGludGVncmFsX2M8IFQsQzIxID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyMiA+LCBpbnRlZ3JhbF9jPCBULEMyMyA+LCBpbnRlZ3JhbF9jPCBULEMyNCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjUgPiwgaW50ZWdyYWxfYzwgVCxDMjYgPiwgaW50ZWdyYWxfYzwgVCxDMjcgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI4ID4sIGludGVncmFsX2M8IFQsQzI5ID4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMzBfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3ZlY3RvcjQwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3ZlY3RvcjQwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjUyMDQ1NS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy92ZWN0b3I0MC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNDQ0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3I0MC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMAotICAgID4KLXN0cnVjdCB2ZWN0b3IzMQotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDMxPiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IzMSB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQyMSBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjIgaXRlbTIyOwotICAgIHR5cGVkZWYgVDIzIGl0ZW0yMzsKLSAgICB0eXBlZGVmIFQyNCBpdGVtMjQ7Ci0gICAgdHlwZWRlZiBUMjUgaXRlbTI1OwotICAgIHR5cGVkZWYgVDI2IGl0ZW0yNjsKLSAgICB0eXBlZGVmIFQyNyBpdGVtMjc7Ci0gICAgdHlwZWRlZiBUMjggaXRlbTI4OwotICAgIHR5cGVkZWYgVDI5IGl0ZW0yOTsKLSAgICB0eXBlZGVmIFQzMCBpdGVtMzA7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0zMTsKLSAgICB0eXBlZGVmIFQzMCBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwzMSA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzE8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzMDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjMxPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzMDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPD4gc3RydWN0IHZfYXRfaW1wbDwzMT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8gPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWXzo6aXRlbTMxIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGF0X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXywgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZfYXRfaW1wbDxORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFZfPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjpiYWNrIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlbXB0eV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogZmFsc2VfCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogbG9uZ188MzE+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTzFfc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzE+ID4KLSAgICA6IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMxPiA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xlYXJfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPD4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxCi0gICAgPgotc3RydWN0IHZlY3RvcjMyCi17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8MzI+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjMyIHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIHR5cGVkZWYgVDIxIGl0ZW0yMTsKLSAgICB0eXBlZGVmIFQyMiBpdGVtMjI7Ci0gICAgdHlwZWRlZiBUMjMgaXRlbTIzOwotICAgIHR5cGVkZWYgVDI0IGl0ZW0yNDsKLSAgICB0eXBlZGVmIFQyNSBpdGVtMjU7Ci0gICAgdHlwZWRlZiBUMjYgaXRlbTI2OwotICAgIHR5cGVkZWYgVDI3IGl0ZW0yNzsKLSAgICB0eXBlZGVmIFQyOCBpdGVtMjg7Ci0gICAgdHlwZWRlZiBUMjkgaXRlbTI5OwotICAgIHR5cGVkZWYgVDMwIGl0ZW0zMDsKLSAgICB0eXBlZGVmIFQzMSBpdGVtMzE7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0zMjsKLSAgICB0eXBlZGVmIFQzMSBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwzMiA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzI8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzMTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjMyPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzMTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPD4gc3RydWN0IHZfYXRfaW1wbDwzMj4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8gPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWXzo6aXRlbTMyIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGF0X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXywgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZfYXRfaW1wbDxORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFZfPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjpiYWNrIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlbXB0eV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogZmFsc2VfCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogbG9uZ188MzI+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTzFfc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzI+ID4KLSAgICA6IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMyPiA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xlYXJfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPD4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMzMKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwzMz4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMzMgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMjEgaXRlbTIxOwotICAgIHR5cGVkZWYgVDIyIGl0ZW0yMjsKLSAgICB0eXBlZGVmIFQyMyBpdGVtMjM7Ci0gICAgdHlwZWRlZiBUMjQgaXRlbTI0OwotICAgIHR5cGVkZWYgVDI1IGl0ZW0yNTsKLSAgICB0eXBlZGVmIFQyNiBpdGVtMjY7Ci0gICAgdHlwZWRlZiBUMjcgaXRlbTI3OwotICAgIHR5cGVkZWYgVDI4IGl0ZW0yODsKLSAgICB0eXBlZGVmIFQyOSBpdGVtMjk7Ci0gICAgdHlwZWRlZiBUMzAgaXRlbTMwOwotICAgIHR5cGVkZWYgVDMxIGl0ZW0zMTsKLSAgICB0eXBlZGVmIFQzMiBpdGVtMzI7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0zMzsKLSAgICB0eXBlZGVmIFQzMiBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwzMyA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzM8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzI8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzM8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzMjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCB2X2F0X2ltcGw8MzM+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVl86Oml0ZW0zMyB0eXBlOwotICAgIH07Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhdF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8sIHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2X2F0X2ltcGw8TkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZT4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxWXz46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6YmFjayB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZW1wdHlfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGxvbmdfPDMzPgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IE8xX3NpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMzPiA+Ci0gICAgOiBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMz4gPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsZWFyX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDw+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMzQKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwzND4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMzQgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMjEgaXRlbTIxOwotICAgIHR5cGVkZWYgVDIyIGl0ZW0yMjsKLSAgICB0eXBlZGVmIFQyMyBpdGVtMjM7Ci0gICAgdHlwZWRlZiBUMjQgaXRlbTI0OwotICAgIHR5cGVkZWYgVDI1IGl0ZW0yNTsKLSAgICB0eXBlZGVmIFQyNiBpdGVtMjY7Ci0gICAgdHlwZWRlZiBUMjcgaXRlbTI3OwotICAgIHR5cGVkZWYgVDI4IGl0ZW0yODsKLSAgICB0eXBlZGVmIFQyOSBpdGVtMjk7Ci0gICAgdHlwZWRlZiBUMzAgaXRlbTMwOwotICAgIHR5cGVkZWYgVDMxIGl0ZW0zMTsKLSAgICB0eXBlZGVmIFQzMiBpdGVtMzI7Ci0gICAgdHlwZWRlZiBUMzMgaXRlbTMzOwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMzQ7Ci0gICAgdHlwZWRlZiBUMzMgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMzQgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjM0PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjMzPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjM0PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMgotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzM8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8PiBzdHJ1Y3Qgdl9hdF9pbXBsPDM0PgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZfOjppdGVtMzQgdHlwZTsKLSAgICB9OwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfLCB0eXBlbmFtZSBOID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dl9hdF9pbXBsPE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWU+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88Vl8+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6OmJhY2sgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVtcHR5X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBmYWxzZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBsb25nXzwzND4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBPMV9zaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzND4gPgotICAgIDogc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzQ+ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjbGVhcl9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjA8PiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMzUKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwzNT4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMzUgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMjEgaXRlbTIxOwotICAgIHR5cGVkZWYgVDIyIGl0ZW0yMjsKLSAgICB0eXBlZGVmIFQyMyBpdGVtMjM7Ci0gICAgdHlwZWRlZiBUMjQgaXRlbTI0OwotICAgIHR5cGVkZWYgVDI1IGl0ZW0yNTsKLSAgICB0eXBlZGVmIFQyNiBpdGVtMjY7Ci0gICAgdHlwZWRlZiBUMjcgaXRlbTI3OwotICAgIHR5cGVkZWYgVDI4IGl0ZW0yODsKLSAgICB0eXBlZGVmIFQyOSBpdGVtMjk7Ci0gICAgdHlwZWRlZiBUMzAgaXRlbTMwOwotICAgIHR5cGVkZWYgVDMxIGl0ZW0zMTsKLSAgICB0eXBlZGVmIFQzMiBpdGVtMzI7Ci0gICAgdHlwZWRlZiBUMzMgaXRlbTMzOwotICAgIHR5cGVkZWYgVDM0IGl0ZW0zNDsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTM1OwotICAgIHR5cGVkZWYgVDM0IGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDM1ID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzNTwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzNT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjM1PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjM0PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCB2X2F0X2ltcGw8MzU+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVl86Oml0ZW0zNSB0eXBlOwotICAgIH07Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhdF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8sIHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2X2F0X2ltcGw8TkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZT4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxWXz46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzNT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6YmFjayB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZW1wdHlfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGxvbmdfPDM1PgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IE8xX3NpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM1PiA+Ci0gICAgOiBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzNT4gPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsZWFyX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzNT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDw+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1Ci0gICAgPgotc3RydWN0IHZlY3RvcjM2Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8MzY+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjM2IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIHR5cGVkZWYgVDIxIGl0ZW0yMTsKLSAgICB0eXBlZGVmIFQyMiBpdGVtMjI7Ci0gICAgdHlwZWRlZiBUMjMgaXRlbTIzOwotICAgIHR5cGVkZWYgVDI0IGl0ZW0yNDsKLSAgICB0eXBlZGVmIFQyNSBpdGVtMjU7Ci0gICAgdHlwZWRlZiBUMjYgaXRlbTI2OwotICAgIHR5cGVkZWYgVDI3IGl0ZW0yNzsKLSAgICB0eXBlZGVmIFQyOCBpdGVtMjg7Ci0gICAgdHlwZWRlZiBUMjkgaXRlbTI5OwotICAgIHR5cGVkZWYgVDMwIGl0ZW0zMDsKLSAgICB0eXBlZGVmIFQzMSBpdGVtMzE7Ci0gICAgdHlwZWRlZiBUMzIgaXRlbTMyOwotICAgIHR5cGVkZWYgVDMzIGl0ZW0zMzsKLSAgICB0eXBlZGVmIFQzNCBpdGVtMzQ7Ci0gICAgdHlwZWRlZiBUMzUgaXRlbTM1OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMzY7Ci0gICAgdHlwZWRlZiBUMzUgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMzYgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjM2PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzNTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzNT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzY8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzNj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzU8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPD4gc3RydWN0IHZfYXRfaW1wbDwzNj4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8gPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWXzo6aXRlbTM2IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGF0X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzNj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXywgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZfYXRfaW1wbDxORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFZfPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzNj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjpiYWNrIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlbXB0eV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogZmFsc2VfCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogbG9uZ188MzY+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTzFfc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzY+ID4KLSAgICA6IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM2PiA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xlYXJfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPD4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNgotICAgID4KLXN0cnVjdCB2ZWN0b3IzNwotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDM3PiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IzNyB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQyMSBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjIgaXRlbTIyOwotICAgIHR5cGVkZWYgVDIzIGl0ZW0yMzsKLSAgICB0eXBlZGVmIFQyNCBpdGVtMjQ7Ci0gICAgdHlwZWRlZiBUMjUgaXRlbTI1OwotICAgIHR5cGVkZWYgVDI2IGl0ZW0yNjsKLSAgICB0eXBlZGVmIFQyNyBpdGVtMjc7Ci0gICAgdHlwZWRlZiBUMjggaXRlbTI4OwotICAgIHR5cGVkZWYgVDI5IGl0ZW0yOTsKLSAgICB0eXBlZGVmIFQzMCBpdGVtMzA7Ci0gICAgdHlwZWRlZiBUMzEgaXRlbTMxOwotICAgIHR5cGVkZWYgVDMyIGl0ZW0zMjsKLSAgICB0eXBlZGVmIFQzMyBpdGVtMzM7Ci0gICAgdHlwZWRlZiBUMzQgaXRlbTM0OwotICAgIHR5cGVkZWYgVDM1IGl0ZW0zNTsKLSAgICB0eXBlZGVmIFQzNiBpdGVtMzY7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0zNzsKLSAgICB0eXBlZGVmIFQzNiBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwzNyA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzNj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzc8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzNjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjM3PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzNjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPD4gc3RydWN0IHZfYXRfaW1wbDwzNz4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8gPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWXzo6aXRlbTM3IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGF0X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzNz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXywgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZfYXRfaW1wbDxORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFZfPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzNz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjpiYWNrIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlbXB0eV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mzc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogZmFsc2VfCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mzc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogbG9uZ188Mzc+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTzFfc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mzc+ID4KLSAgICA6IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM3PiA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xlYXJfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPD4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3Ci0gICAgPgotc3RydWN0IHZlY3RvcjM4Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8Mzg+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjM4IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIHR5cGVkZWYgVDIxIGl0ZW0yMTsKLSAgICB0eXBlZGVmIFQyMiBpdGVtMjI7Ci0gICAgdHlwZWRlZiBUMjMgaXRlbTIzOwotICAgIHR5cGVkZWYgVDI0IGl0ZW0yNDsKLSAgICB0eXBlZGVmIFQyNSBpdGVtMjU7Ci0gICAgdHlwZWRlZiBUMjYgaXRlbTI2OwotICAgIHR5cGVkZWYgVDI3IGl0ZW0yNzsKLSAgICB0eXBlZGVmIFQyOCBpdGVtMjg7Ci0gICAgdHlwZWRlZiBUMjkgaXRlbTI5OwotICAgIHR5cGVkZWYgVDMwIGl0ZW0zMDsKLSAgICB0eXBlZGVmIFQzMSBpdGVtMzE7Ci0gICAgdHlwZWRlZiBUMzIgaXRlbTMyOwotICAgIHR5cGVkZWYgVDMzIGl0ZW0zMzsKLSAgICB0eXBlZGVmIFQzNCBpdGVtMzQ7Ci0gICAgdHlwZWRlZiBUMzUgaXRlbTM1OwotICAgIHR5cGVkZWYgVDM2IGl0ZW0zNjsKLSAgICB0eXBlZGVmIFQzNyBpdGVtMzc7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0zODsKLSAgICB0eXBlZGVmIFQzNyBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwzOCA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzNz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzg8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzNzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mzc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjM4PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2Ci0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzNzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPD4gc3RydWN0IHZfYXRfaW1wbDwzOD4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8gPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWXzo6aXRlbTM4IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGF0X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzOD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXywgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZfYXRfaW1wbDxORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFZfPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzOD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjpiYWNrIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlbXB0eV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mzg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogZmFsc2VfCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mzg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogbG9uZ188Mzg+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTzFfc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mzg+ID4KLSAgICA6IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM4PiA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xlYXJfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPD4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMzkKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwzOT4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMzkgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMjEgaXRlbTIxOwotICAgIHR5cGVkZWYgVDIyIGl0ZW0yMjsKLSAgICB0eXBlZGVmIFQyMyBpdGVtMjM7Ci0gICAgdHlwZWRlZiBUMjQgaXRlbTI0OwotICAgIHR5cGVkZWYgVDI1IGl0ZW0yNTsKLSAgICB0eXBlZGVmIFQyNiBpdGVtMjY7Ci0gICAgdHlwZWRlZiBUMjcgaXRlbTI3OwotICAgIHR5cGVkZWYgVDI4IGl0ZW0yODsKLSAgICB0eXBlZGVmIFQyOSBpdGVtMjk7Ci0gICAgdHlwZWRlZiBUMzAgaXRlbTMwOwotICAgIHR5cGVkZWYgVDMxIGl0ZW0zMTsKLSAgICB0eXBlZGVmIFQzMiBpdGVtMzI7Ci0gICAgdHlwZWRlZiBUMzMgaXRlbTMzOwotICAgIHR5cGVkZWYgVDM0IGl0ZW0zNDsKLSAgICB0eXBlZGVmIFQzNSBpdGVtMzU7Ci0gICAgdHlwZWRlZiBUMzYgaXRlbTM2OwotICAgIHR5cGVkZWYgVDM3IGl0ZW0zNzsKLSAgICB0eXBlZGVmIFQzOCBpdGVtMzg7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0zOTsKLSAgICB0eXBlZGVmIFQzOCBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwzOSA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzOD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzk8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzOT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzg8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzOD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzk8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzODwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCB2X2F0X2ltcGw8Mzk+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVl86Oml0ZW0zOSB0eXBlOwotICAgIH07Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhdF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mzk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8sIHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2X2F0X2ltcGw8TkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZT4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxWXz46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzOT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mzk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6YmFjayB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZW1wdHlfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGxvbmdfPDM5PgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IE8xX3NpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM5PiA+Ci0gICAgOiBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzOT4gPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsZWFyX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzOT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDw+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1LCB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNDAKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzw0MD4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yNDAgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMjEgaXRlbTIxOwotICAgIHR5cGVkZWYgVDIyIGl0ZW0yMjsKLSAgICB0eXBlZGVmIFQyMyBpdGVtMjM7Ci0gICAgdHlwZWRlZiBUMjQgaXRlbTI0OwotICAgIHR5cGVkZWYgVDI1IGl0ZW0yNTsKLSAgICB0eXBlZGVmIFQyNiBpdGVtMjY7Ci0gICAgdHlwZWRlZiBUMjcgaXRlbTI3OwotICAgIHR5cGVkZWYgVDI4IGl0ZW0yODsKLSAgICB0eXBlZGVmIFQyOSBpdGVtMjk7Ci0gICAgdHlwZWRlZiBUMzAgaXRlbTMwOwotICAgIHR5cGVkZWYgVDMxIGl0ZW0zMTsKLSAgICB0eXBlZGVmIFQzMiBpdGVtMzI7Ci0gICAgdHlwZWRlZiBUMzMgaXRlbTMzOwotICAgIHR5cGVkZWYgVDM0IGl0ZW0zNDsKLSAgICB0eXBlZGVmIFQzNSBpdGVtMzU7Ci0gICAgdHlwZWRlZiBUMzYgaXRlbTM2OwotICAgIHR5cGVkZWYgVDM3IGl0ZW0zNzsKLSAgICB0eXBlZGVmIFQzOCBpdGVtMzg7Ci0gICAgdHlwZWRlZiBUMzkgaXRlbTM5OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtNDA7Ci0gICAgdHlwZWRlZiBUMzkgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsNDAgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mzk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQwPAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjM5PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mzk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQwPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0MD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzk8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8PiBzdHJ1Y3Qgdl9hdF9pbXBsPDQwPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZfOjppdGVtNDAgdHlwZTsKLSAgICB9OwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfLCB0eXBlbmFtZSBOID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dl9hdF9pbXBsPE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWU+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88Vl8+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6OmJhY2sgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVtcHR5X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0MD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBmYWxzZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0MD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBsb25nXzw0MD4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBPMV9zaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0MD4gPgotICAgIDogc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDA+ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjbGVhcl9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjA8PiB0eXBlOwotICAgIH07Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvdmVjdG9yNDBfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy92ZWN0b3I0MF9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDVkNjJkMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvbm9fY3Rwcy92ZWN0b3I0MF9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI4MSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yNDBfYy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgPgotc3RydWN0IHZlY3RvcjMxX2MKLSAgICA6IHZlY3RvcjMxPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+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+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I0MF9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvdmVjdG9yNTAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvdmVjdG9yNTAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZTZlNWRlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3ZlY3RvcjUwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI3NjQgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjUwLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICAsIHR5cGVuYW1lIFQzNSwgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5Ci0gICAgLCB0eXBlbmFtZSBUNDAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNDEKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzw0MT4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yNDEgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMjEgaXRlbTIxOwotICAgIHR5cGVkZWYgVDIyIGl0ZW0yMjsKLSAgICB0eXBlZGVmIFQyMyBpdGVtMjM7Ci0gICAgdHlwZWRlZiBUMjQgaXRlbTI0OwotICAgIHR5cGVkZWYgVDI1IGl0ZW0yNTsKLSAgICB0eXBlZGVmIFQyNiBpdGVtMjY7Ci0gICAgdHlwZWRlZiBUMjcgaXRlbTI3OwotICAgIHR5cGVkZWYgVDI4IGl0ZW0yODsKLSAgICB0eXBlZGVmIFQyOSBpdGVtMjk7Ci0gICAgdHlwZWRlZiBUMzAgaXRlbTMwOwotICAgIHR5cGVkZWYgVDMxIGl0ZW0zMTsKLSAgICB0eXBlZGVmIFQzMiBpdGVtMzI7Ci0gICAgdHlwZWRlZiBUMzMgaXRlbTMzOwotICAgIHR5cGVkZWYgVDM0IGl0ZW0zNDsKLSAgICB0eXBlZGVmIFQzNSBpdGVtMzU7Ci0gICAgdHlwZWRlZiBUMzYgaXRlbTM2OwotICAgIHR5cGVkZWYgVDM3IGl0ZW0zNzsKLSAgICB0eXBlZGVmIFQzOCBpdGVtMzg7Ci0gICAgdHlwZWRlZiBUMzkgaXRlbTM5OwotICAgIHR5cGVkZWYgVDQwIGl0ZW00MDsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTQxOwotICAgIHR5cGVkZWYgVDQwIGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDQxID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0MTwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0MT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDA8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQxPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQwPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCB2X2F0X2ltcGw8NDE+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVl86Oml0ZW00MSB0eXBlOwotICAgIH07Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhdF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8sIHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2X2F0X2ltcGw8TkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZT4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxWXz46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0MT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6YmFjayB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZW1wdHlfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGxvbmdfPDQxPgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IE8xX3NpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQxPiA+Ci0gICAgOiBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0MT4gPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsZWFyX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0MT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDw+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1LCB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzkKLSAgICAsIHR5cGVuYW1lIFQ0MCwgdHlwZW5hbWUgVDQxCi0gICAgPgotc3RydWN0IHZlY3RvcjQyCi17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8NDI+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjQyIHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIHR5cGVkZWYgVDIxIGl0ZW0yMTsKLSAgICB0eXBlZGVmIFQyMiBpdGVtMjI7Ci0gICAgdHlwZWRlZiBUMjMgaXRlbTIzOwotICAgIHR5cGVkZWYgVDI0IGl0ZW0yNDsKLSAgICB0eXBlZGVmIFQyNSBpdGVtMjU7Ci0gICAgdHlwZWRlZiBUMjYgaXRlbTI2OwotICAgIHR5cGVkZWYgVDI3IGl0ZW0yNzsKLSAgICB0eXBlZGVmIFQyOCBpdGVtMjg7Ci0gICAgdHlwZWRlZiBUMjkgaXRlbTI5OwotICAgIHR5cGVkZWYgVDMwIGl0ZW0zMDsKLSAgICB0eXBlZGVmIFQzMSBpdGVtMzE7Ci0gICAgdHlwZWRlZiBUMzIgaXRlbTMyOwotICAgIHR5cGVkZWYgVDMzIGl0ZW0zMzsKLSAgICB0eXBlZGVmIFQzNCBpdGVtMzQ7Ci0gICAgdHlwZWRlZiBUMzUgaXRlbTM1OwotICAgIHR5cGVkZWYgVDM2IGl0ZW0zNjsKLSAgICB0eXBlZGVmIFQzNyBpdGVtMzc7Ci0gICAgdHlwZWRlZiBUMzggaXRlbTM4OwotICAgIHR5cGVkZWYgVDM5IGl0ZW0zOTsKLSAgICB0eXBlZGVmIFQ0MCBpdGVtNDA7Ci0gICAgdHlwZWRlZiBUNDEgaXRlbTQxOwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtNDI7Ci0gICAgdHlwZWRlZiBUNDEgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsNDIgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQyPAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0MTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0MT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDI8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Mj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDE8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPD4gc3RydWN0IHZfYXRfaW1wbDw0Mj4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8gPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWXzo6aXRlbTQyIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGF0X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Mj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXywgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZfYXRfaW1wbDxORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFZfPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Mj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjpiYWNrIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlbXB0eV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogZmFsc2VfCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogbG9uZ188NDI+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTzFfc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDI+ID4KLSAgICA6IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQyPiA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xlYXJfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPD4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOQotICAgICwgdHlwZW5hbWUgVDQwLCB0eXBlbmFtZSBUNDEsIHR5cGVuYW1lIFQ0MgotICAgID4KLXN0cnVjdCB2ZWN0b3I0MwotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDQzPiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3I0MyB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQyMSBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjIgaXRlbTIyOwotICAgIHR5cGVkZWYgVDIzIGl0ZW0yMzsKLSAgICB0eXBlZGVmIFQyNCBpdGVtMjQ7Ci0gICAgdHlwZWRlZiBUMjUgaXRlbTI1OwotICAgIHR5cGVkZWYgVDI2IGl0ZW0yNjsKLSAgICB0eXBlZGVmIFQyNyBpdGVtMjc7Ci0gICAgdHlwZWRlZiBUMjggaXRlbTI4OwotICAgIHR5cGVkZWYgVDI5IGl0ZW0yOTsKLSAgICB0eXBlZGVmIFQzMCBpdGVtMzA7Ci0gICAgdHlwZWRlZiBUMzEgaXRlbTMxOwotICAgIHR5cGVkZWYgVDMyIGl0ZW0zMjsKLSAgICB0eXBlZGVmIFQzMyBpdGVtMzM7Ci0gICAgdHlwZWRlZiBUMzQgaXRlbTM0OwotICAgIHR5cGVkZWYgVDM1IGl0ZW0zNTsKLSAgICB0eXBlZGVmIFQzNiBpdGVtMzY7Ci0gICAgdHlwZWRlZiBUMzcgaXRlbTM3OwotICAgIHR5cGVkZWYgVDM4IGl0ZW0zODsKLSAgICB0eXBlZGVmIFQzOSBpdGVtMzk7Ci0gICAgdHlwZWRlZiBUNDAgaXRlbTQwOwotICAgIHR5cGVkZWYgVDQxIGl0ZW00MTsKLSAgICB0eXBlZGVmIFQ0MiBpdGVtNDI7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW00MzsKLSAgICB0eXBlZGVmIFQ0MiBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSw0MyA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Mj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDM8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0MjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDIKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQzPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0MjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPD4gc3RydWN0IHZfYXRfaW1wbDw0Mz4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8gPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWXzo6aXRlbTQzIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGF0X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Mz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXywgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZfYXRfaW1wbDxORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFZfPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Mz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjpiYWNrIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlbXB0eV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogZmFsc2VfCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogbG9uZ188NDM+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTzFfc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDM+ID4KLSAgICA6IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQzPiA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xlYXJfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPD4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOQotICAgICwgdHlwZW5hbWUgVDQwLCB0eXBlbmFtZSBUNDEsIHR5cGVuYW1lIFQ0MiwgdHlwZW5hbWUgVDQzCi0gICAgPgotc3RydWN0IHZlY3RvcjQ0Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8NDQ+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjQ0IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIHR5cGVkZWYgVDIxIGl0ZW0yMTsKLSAgICB0eXBlZGVmIFQyMiBpdGVtMjI7Ci0gICAgdHlwZWRlZiBUMjMgaXRlbTIzOwotICAgIHR5cGVkZWYgVDI0IGl0ZW0yNDsKLSAgICB0eXBlZGVmIFQyNSBpdGVtMjU7Ci0gICAgdHlwZWRlZiBUMjYgaXRlbTI2OwotICAgIHR5cGVkZWYgVDI3IGl0ZW0yNzsKLSAgICB0eXBlZGVmIFQyOCBpdGVtMjg7Ci0gICAgdHlwZWRlZiBUMjkgaXRlbTI5OwotICAgIHR5cGVkZWYgVDMwIGl0ZW0zMDsKLSAgICB0eXBlZGVmIFQzMSBpdGVtMzE7Ci0gICAgdHlwZWRlZiBUMzIgaXRlbTMyOwotICAgIHR5cGVkZWYgVDMzIGl0ZW0zMzsKLSAgICB0eXBlZGVmIFQzNCBpdGVtMzQ7Ci0gICAgdHlwZWRlZiBUMzUgaXRlbTM1OwotICAgIHR5cGVkZWYgVDM2IGl0ZW0zNjsKLSAgICB0eXBlZGVmIFQzNyBpdGVtMzc7Ci0gICAgdHlwZWRlZiBUMzggaXRlbTM4OwotICAgIHR5cGVkZWYgVDM5IGl0ZW0zOTsKLSAgICB0eXBlZGVmIFQ0MCBpdGVtNDA7Ci0gICAgdHlwZWRlZiBUNDEgaXRlbTQxOwotICAgIHR5cGVkZWYgVDQyIGl0ZW00MjsKLSAgICB0eXBlZGVmIFQ0MyBpdGVtNDM7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW00NDsKLSAgICB0eXBlZGVmIFQ0MyBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSw0NCA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Mz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDQ8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQyCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0MzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDMKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQ0PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQyCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0MzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPD4gc3RydWN0IHZfYXRfaW1wbDw0ND4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8gPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWXzo6aXRlbTQ0IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGF0X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0ND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXywgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZfYXRfaW1wbDxORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFZfPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0ND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjpiYWNrIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlbXB0eV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogZmFsc2VfCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogbG9uZ188NDQ+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTzFfc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDQ+ID4KLSAgICA6IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ0PiA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xlYXJfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPD4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOQotICAgICwgdHlwZW5hbWUgVDQwLCB0eXBlbmFtZSBUNDEsIHR5cGVuYW1lIFQ0MiwgdHlwZW5hbWUgVDQzLCB0eXBlbmFtZSBUNDQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNDUKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzw0NT4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yNDUgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMjEgaXRlbTIxOwotICAgIHR5cGVkZWYgVDIyIGl0ZW0yMjsKLSAgICB0eXBlZGVmIFQyMyBpdGVtMjM7Ci0gICAgdHlwZWRlZiBUMjQgaXRlbTI0OwotICAgIHR5cGVkZWYgVDI1IGl0ZW0yNTsKLSAgICB0eXBlZGVmIFQyNiBpdGVtMjY7Ci0gICAgdHlwZWRlZiBUMjcgaXRlbTI3OwotICAgIHR5cGVkZWYgVDI4IGl0ZW0yODsKLSAgICB0eXBlZGVmIFQyOSBpdGVtMjk7Ci0gICAgdHlwZWRlZiBUMzAgaXRlbTMwOwotICAgIHR5cGVkZWYgVDMxIGl0ZW0zMTsKLSAgICB0eXBlZGVmIFQzMiBpdGVtMzI7Ci0gICAgdHlwZWRlZiBUMzMgaXRlbTMzOwotICAgIHR5cGVkZWYgVDM0IGl0ZW0zNDsKLSAgICB0eXBlZGVmIFQzNSBpdGVtMzU7Ci0gICAgdHlwZWRlZiBUMzYgaXRlbTM2OwotICAgIHR5cGVkZWYgVDM3IGl0ZW0zNzsKLSAgICB0eXBlZGVmIFQzOCBpdGVtMzg7Ci0gICAgdHlwZWRlZiBUMzkgaXRlbTM5OwotICAgIHR5cGVkZWYgVDQwIGl0ZW00MDsKLSAgICB0eXBlZGVmIFQ0MSBpdGVtNDE7Ci0gICAgdHlwZWRlZiBUNDIgaXRlbTQyOwotICAgIHR5cGVkZWYgVDQzIGl0ZW00MzsKLSAgICB0eXBlZGVmIFQ0NCBpdGVtNDQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW00NTsKLSAgICB0eXBlZGVmIFQ0NCBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSw0NSA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0ND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDU8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0NT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0ND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDU8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQzCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0NDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDMKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCB2X2F0X2ltcGw8NDU+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVl86Oml0ZW00NSB0eXBlOwotICAgIH07Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhdF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8sIHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2X2F0X2ltcGw8TkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZT4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxWXz46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0NT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6YmFjayB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZW1wdHlfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGxvbmdfPDQ1PgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IE8xX3NpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ1PiA+Ci0gICAgOiBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0NT4gPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsZWFyX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0NT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDw+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1LCB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzkKLSAgICAsIHR5cGVuYW1lIFQ0MCwgdHlwZW5hbWUgVDQxLCB0eXBlbmFtZSBUNDIsIHR5cGVuYW1lIFQ0MywgdHlwZW5hbWUgVDQ0Ci0gICAgLCB0eXBlbmFtZSBUNDUKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNDYKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzw0Nj4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yNDYgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMjEgaXRlbTIxOwotICAgIHR5cGVkZWYgVDIyIGl0ZW0yMjsKLSAgICB0eXBlZGVmIFQyMyBpdGVtMjM7Ci0gICAgdHlwZWRlZiBUMjQgaXRlbTI0OwotICAgIHR5cGVkZWYgVDI1IGl0ZW0yNTsKLSAgICB0eXBlZGVmIFQyNiBpdGVtMjY7Ci0gICAgdHlwZWRlZiBUMjcgaXRlbTI3OwotICAgIHR5cGVkZWYgVDI4IGl0ZW0yODsKLSAgICB0eXBlZGVmIFQyOSBpdGVtMjk7Ci0gICAgdHlwZWRlZiBUMzAgaXRlbTMwOwotICAgIHR5cGVkZWYgVDMxIGl0ZW0zMTsKLSAgICB0eXBlZGVmIFQzMiBpdGVtMzI7Ci0gICAgdHlwZWRlZiBUMzMgaXRlbTMzOwotICAgIHR5cGVkZWYgVDM0IGl0ZW0zNDsKLSAgICB0eXBlZGVmIFQzNSBpdGVtMzU7Ci0gICAgdHlwZWRlZiBUMzYgaXRlbTM2OwotICAgIHR5cGVkZWYgVDM3IGl0ZW0zNzsKLSAgICB0eXBlZGVmIFQzOCBpdGVtMzg7Ci0gICAgdHlwZWRlZiBUMzkgaXRlbTM5OwotICAgIHR5cGVkZWYgVDQwIGl0ZW00MDsKLSAgICB0eXBlZGVmIFQ0MSBpdGVtNDE7Ci0gICAgdHlwZWRlZiBUNDIgaXRlbTQyOwotICAgIHR5cGVkZWYgVDQzIGl0ZW00MzsKLSAgICB0eXBlZGVmIFQ0NCBpdGVtNDQ7Ci0gICAgdHlwZWRlZiBUNDUgaXRlbTQ1OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtNDY7Ci0gICAgdHlwZWRlZiBUNDUgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsNDYgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQ2PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQ1PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDUKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQ2PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Nj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDU8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ0Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLW5hbWVzcGFjZSBhdXggewotdGVtcGxhdGU8PiBzdHJ1Y3Qgdl9hdF9pbXBsPDQ2PgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXyA+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZfOjppdGVtNDYgdHlwZTsKLSAgICB9OwotfTsKLQotfQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYXRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfLCB0eXBlbmFtZSBOID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGF1eDo6dl9hdF9pbXBsPE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChOKTo6dmFsdWU+Ci0gICAgICAgICAgICA6OnRlbXBsYXRlIHJlc3VsdF88Vl8+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBmcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGJhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6OmJhY2sgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGVtcHR5X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Nj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBmYWxzZV8KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Nj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICAgICAgOiBsb25nXzw0Nj4KLSAgICB7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBPMV9zaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Nj4gPgotICAgIDogc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDY+ID4KLXsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBjbGVhcl9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjA8PiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICAsIHR5cGVuYW1lIFQzNSwgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5Ci0gICAgLCB0eXBlbmFtZSBUNDAsIHR5cGVuYW1lIFQ0MSwgdHlwZW5hbWUgVDQyLCB0eXBlbmFtZSBUNDMsIHR5cGVuYW1lIFQ0NAotICAgICwgdHlwZW5hbWUgVDQ1LCB0eXBlbmFtZSBUNDYKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNDcKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzw0Nz4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yNDcgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMjEgaXRlbTIxOwotICAgIHR5cGVkZWYgVDIyIGl0ZW0yMjsKLSAgICB0eXBlZGVmIFQyMyBpdGVtMjM7Ci0gICAgdHlwZWRlZiBUMjQgaXRlbTI0OwotICAgIHR5cGVkZWYgVDI1IGl0ZW0yNTsKLSAgICB0eXBlZGVmIFQyNiBpdGVtMjY7Ci0gICAgdHlwZWRlZiBUMjcgaXRlbTI3OwotICAgIHR5cGVkZWYgVDI4IGl0ZW0yODsKLSAgICB0eXBlZGVmIFQyOSBpdGVtMjk7Ci0gICAgdHlwZWRlZiBUMzAgaXRlbTMwOwotICAgIHR5cGVkZWYgVDMxIGl0ZW0zMTsKLSAgICB0eXBlZGVmIFQzMiBpdGVtMzI7Ci0gICAgdHlwZWRlZiBUMzMgaXRlbTMzOwotICAgIHR5cGVkZWYgVDM0IGl0ZW0zNDsKLSAgICB0eXBlZGVmIFQzNSBpdGVtMzU7Ci0gICAgdHlwZWRlZiBUMzYgaXRlbTM2OwotICAgIHR5cGVkZWYgVDM3IGl0ZW0zNzsKLSAgICB0eXBlZGVmIFQzOCBpdGVtMzg7Ci0gICAgdHlwZWRlZiBUMzkgaXRlbTM5OwotICAgIHR5cGVkZWYgVDQwIGl0ZW00MDsKLSAgICB0eXBlZGVmIFQ0MSBpdGVtNDE7Ci0gICAgdHlwZWRlZiBUNDIgaXRlbTQyOwotICAgIHR5cGVkZWYgVDQzIGl0ZW00MzsKLSAgICB0eXBlZGVmIFQ0NCBpdGVtNDQ7Ci0gICAgdHlwZWRlZiBUNDUgaXRlbTQ1OwotICAgIHR5cGVkZWYgVDQ2IGl0ZW00NjsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTQ3OwotICAgIHR5cGVkZWYgVDQ2IGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDQ3ID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0NzwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Nz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDY8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDYKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQ3PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDUKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQ2PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDUKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotbmFtZXNwYWNlIGF1eCB7Ci10ZW1wbGF0ZTw+IHN0cnVjdCB2X2F0X2ltcGw8NDc+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZfID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVl86Oml0ZW00NyB0eXBlOwotICAgIH07Ci19OwotCi19Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBhdF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8sIHR5cGVuYW1lIE4gPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXV4Ojp2X2F0X2ltcGw8TkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKE4pOjp2YWx1ZT4KLSAgICAgICAgICAgIDo6dGVtcGxhdGUgcmVzdWx0XzxWXz46OnR5cGUgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGZyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Nz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFZlY3Rvcjo6YmFjayB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZW1wdHlfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGZhbHNlXwotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgICAgICA6IGxvbmdfPDQ3PgotICAgIHsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IE8xX3NpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ3PiA+Ci0gICAgOiBzaXplX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Nz4gPgotewotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNsZWFyX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Nz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDw+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1LCB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzkKLSAgICAsIHR5cGVuYW1lIFQ0MCwgdHlwZW5hbWUgVDQxLCB0eXBlbmFtZSBUNDIsIHR5cGVuYW1lIFQ0MywgdHlwZW5hbWUgVDQ0Ci0gICAgLCB0eXBlbmFtZSBUNDUsIHR5cGVuYW1lIFQ0NiwgdHlwZW5hbWUgVDQ3Ci0gICAgPgotc3RydWN0IHZlY3RvcjQ4Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8NDg+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjQ4IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIHR5cGVkZWYgVDIxIGl0ZW0yMTsKLSAgICB0eXBlZGVmIFQyMiBpdGVtMjI7Ci0gICAgdHlwZWRlZiBUMjMgaXRlbTIzOwotICAgIHR5cGVkZWYgVDI0IGl0ZW0yNDsKLSAgICB0eXBlZGVmIFQyNSBpdGVtMjU7Ci0gICAgdHlwZWRlZiBUMjYgaXRlbTI2OwotICAgIHR5cGVkZWYgVDI3IGl0ZW0yNzsKLSAgICB0eXBlZGVmIFQyOCBpdGVtMjg7Ci0gICAgdHlwZWRlZiBUMjkgaXRlbTI5OwotICAgIHR5cGVkZWYgVDMwIGl0ZW0zMDsKLSAgICB0eXBlZGVmIFQzMSBpdGVtMzE7Ci0gICAgdHlwZWRlZiBUMzIgaXRlbTMyOwotICAgIHR5cGVkZWYgVDMzIGl0ZW0zMzsKLSAgICB0eXBlZGVmIFQzNCBpdGVtMzQ7Ci0gICAgdHlwZWRlZiBUMzUgaXRlbTM1OwotICAgIHR5cGVkZWYgVDM2IGl0ZW0zNjsKLSAgICB0eXBlZGVmIFQzNyBpdGVtMzc7Ci0gICAgdHlwZWRlZiBUMzggaXRlbTM4OwotICAgIHR5cGVkZWYgVDM5IGl0ZW0zOTsKLSAgICB0eXBlZGVmIFQ0MCBpdGVtNDA7Ci0gICAgdHlwZWRlZiBUNDEgaXRlbTQxOwotICAgIHR5cGVkZWYgVDQyIGl0ZW00MjsKLSAgICB0eXBlZGVmIFQ0MyBpdGVtNDM7Ci0gICAgdHlwZWRlZiBUNDQgaXRlbTQ0OwotICAgIHR5cGVkZWYgVDQ1IGl0ZW00NTsKLSAgICB0eXBlZGVmIFQ0NiBpdGVtNDY7Ci0gICAgdHlwZWRlZiBUNDcgaXRlbTQ3OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtNDg7Ci0gICAgdHlwZWRlZiBUNDcgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsNDggPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQ4PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ2Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0NzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Nz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDg8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NgotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0OD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDc8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPD4gc3RydWN0IHZfYXRfaW1wbDw0OD4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8gPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWXzo6aXRlbTQ4IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGF0X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0OD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXywgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZfYXRfaW1wbDxORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFZfPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0OD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjpiYWNrIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlbXB0eV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogZmFsc2VfCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogbG9uZ188NDg+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTzFfc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDg+ID4KLSAgICA6IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ4PiA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xlYXJfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPD4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOQotICAgICwgdHlwZW5hbWUgVDQwLCB0eXBlbmFtZSBUNDEsIHR5cGVuYW1lIFQ0MiwgdHlwZW5hbWUgVDQzLCB0eXBlbmFtZSBUNDQKLSAgICAsIHR5cGVuYW1lIFQ0NSwgdHlwZW5hbWUgVDQ2LCB0eXBlbmFtZSBUNDcsIHR5cGVuYW1lIFQ0OAotICAgID4KLXN0cnVjdCB2ZWN0b3I0OQotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDQ5PiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3I0OSB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQyMSBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjIgaXRlbTIyOwotICAgIHR5cGVkZWYgVDIzIGl0ZW0yMzsKLSAgICB0eXBlZGVmIFQyNCBpdGVtMjQ7Ci0gICAgdHlwZWRlZiBUMjUgaXRlbTI1OwotICAgIHR5cGVkZWYgVDI2IGl0ZW0yNjsKLSAgICB0eXBlZGVmIFQyNyBpdGVtMjc7Ci0gICAgdHlwZWRlZiBUMjggaXRlbTI4OwotICAgIHR5cGVkZWYgVDI5IGl0ZW0yOTsKLSAgICB0eXBlZGVmIFQzMCBpdGVtMzA7Ci0gICAgdHlwZWRlZiBUMzEgaXRlbTMxOwotICAgIHR5cGVkZWYgVDMyIGl0ZW0zMjsKLSAgICB0eXBlZGVmIFQzMyBpdGVtMzM7Ci0gICAgdHlwZWRlZiBUMzQgaXRlbTM0OwotICAgIHR5cGVkZWYgVDM1IGl0ZW0zNTsKLSAgICB0eXBlZGVmIFQzNiBpdGVtMzY7Ci0gICAgdHlwZWRlZiBUMzcgaXRlbTM3OwotICAgIHR5cGVkZWYgVDM4IGl0ZW0zODsKLSAgICB0eXBlZGVmIFQzOSBpdGVtMzk7Ci0gICAgdHlwZWRlZiBUNDAgaXRlbTQwOwotICAgIHR5cGVkZWYgVDQxIGl0ZW00MTsKLSAgICB0eXBlZGVmIFQ0MiBpdGVtNDI7Ci0gICAgdHlwZWRlZiBUNDMgaXRlbTQzOwotICAgIHR5cGVkZWYgVDQ0IGl0ZW00NDsKLSAgICB0eXBlZGVmIFQ0NSBpdGVtNDU7Ci0gICAgdHlwZWRlZiBUNDYgaXRlbTQ2OwotICAgIHR5cGVkZWYgVDQ3IGl0ZW00NzsKLSAgICB0eXBlZGVmIFQ0OCBpdGVtNDg7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW00OTsKLSAgICB0eXBlZGVmIFQ0OCBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSw0OSA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0OD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDk8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ3Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0ODwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDgKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQ5PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ3Ci0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0ODwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPD4gc3RydWN0IHZfYXRfaW1wbDw0OT4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8gPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWXzo6aXRlbTQ5IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGF0X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0OT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXywgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZfYXRfaW1wbDxORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFZfPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0OT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjpiYWNrIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlbXB0eV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogZmFsc2VfCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogbG9uZ188NDk+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTzFfc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDk+ID4KLSAgICA6IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ5PiA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xlYXJfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPD4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOQotICAgICwgdHlwZW5hbWUgVDQwLCB0eXBlbmFtZSBUNDEsIHR5cGVuYW1lIFQ0MiwgdHlwZW5hbWUgVDQzLCB0eXBlbmFtZSBUNDQKLSAgICAsIHR5cGVuYW1lIFQ0NSwgdHlwZW5hbWUgVDQ2LCB0eXBlbmFtZSBUNDcsIHR5cGVuYW1lIFQ0OCwgdHlwZW5hbWUgVDQ5Ci0gICAgPgotc3RydWN0IHZlY3RvcjUwCi17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8NTA+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjUwIHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIHR5cGVkZWYgVDIxIGl0ZW0yMTsKLSAgICB0eXBlZGVmIFQyMiBpdGVtMjI7Ci0gICAgdHlwZWRlZiBUMjMgaXRlbTIzOwotICAgIHR5cGVkZWYgVDI0IGl0ZW0yNDsKLSAgICB0eXBlZGVmIFQyNSBpdGVtMjU7Ci0gICAgdHlwZWRlZiBUMjYgaXRlbTI2OwotICAgIHR5cGVkZWYgVDI3IGl0ZW0yNzsKLSAgICB0eXBlZGVmIFQyOCBpdGVtMjg7Ci0gICAgdHlwZWRlZiBUMjkgaXRlbTI5OwotICAgIHR5cGVkZWYgVDMwIGl0ZW0zMDsKLSAgICB0eXBlZGVmIFQzMSBpdGVtMzE7Ci0gICAgdHlwZWRlZiBUMzIgaXRlbTMyOwotICAgIHR5cGVkZWYgVDMzIGl0ZW0zMzsKLSAgICB0eXBlZGVmIFQzNCBpdGVtMzQ7Ci0gICAgdHlwZWRlZiBUMzUgaXRlbTM1OwotICAgIHR5cGVkZWYgVDM2IGl0ZW0zNjsKLSAgICB0eXBlZGVmIFQzNyBpdGVtMzc7Ci0gICAgdHlwZWRlZiBUMzggaXRlbTM4OwotICAgIHR5cGVkZWYgVDM5IGl0ZW0zOTsKLSAgICB0eXBlZGVmIFQ0MCBpdGVtNDA7Ci0gICAgdHlwZWRlZiBUNDEgaXRlbTQxOwotICAgIHR5cGVkZWYgVDQyIGl0ZW00MjsKLSAgICB0eXBlZGVmIFQ0MyBpdGVtNDM7Ci0gICAgdHlwZWRlZiBUNDQgaXRlbTQ0OwotICAgIHR5cGVkZWYgVDQ1IGl0ZW00NTsKLSAgICB0eXBlZGVmIFQ0NiBpdGVtNDY7Ci0gICAgdHlwZWRlZiBUNDcgaXRlbTQ3OwotICAgIHR5cGVkZWYgVDQ4IGl0ZW00ODsKLSAgICB0eXBlZGVmIFQ0OSBpdGVtNDk7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW01MDsKLSAgICB0eXBlZGVmIFQ0OSBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSw1MCA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0OT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNTA8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ4Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDUwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0OTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDkKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjUwPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ4Ci0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDUwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0OTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00OAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi1uYW1lc3BhY2UgYXV4IHsKLXRlbXBsYXRlPD4gc3RydWN0IHZfYXRfaW1wbDw1MD4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVl8gPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWXzo6aXRlbTUwIHR5cGU7Ci0gICAgfTsKLX07Ci0KLX0KLQotdGVtcGxhdGU8Pgotc3RydWN0IGF0X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw1MD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWXywgdHlwZW5hbWUgTiA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhdXg6OnZfYXRfaW1wbDxORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoTik6OnZhbHVlPgotICAgICAgICAgICAgOjp0ZW1wbGF0ZSByZXN1bHRfPFZfPjo6dHlwZSB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDUwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBiYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw1MD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVmVjdG9yOjpiYWNrIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBlbXB0eV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NTA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogZmFsc2VfCi0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NTA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgICAgIDogbG9uZ188NTA+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTzFfc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NTA+ID4KLSAgICA6IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDUwPiA+Ci17Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgY2xlYXJfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDUwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPD4gdHlwZTsKLSAgICB9OwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9ub19jdHBzL3ZlY3RvcjUwX2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvdmVjdG9yNTBfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRlNWE2MzkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL25vX2N0cHMvdmVjdG9yNTBfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMjUgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjUwX2MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1LCBUIEMzNiwgVCBDMzcsIFQgQzM4LCBUIEMzOSwgVCBDNDAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNDFfYwotICAgIDogdmVjdG9yNDE8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4sIGludGVncmFsX2M8IFQsQzE4ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxOSA+LCBpbnRlZ3JhbF9jPCBULEMyMCA+LCBpbnRlZ3JhbF9jPCBULEMyMSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjIgPiwgaW50ZWdyYWxfYzwgVCxDMjMgPiwgaW50ZWdyYWxfYzwgVCxDMjQgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI1ID4sIGludGVncmFsX2M8IFQsQzI2ID4sIGludGVncmFsX2M8IFQsQzI3ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyOCA+LCBpbnRlZ3JhbF9jPCBULEMyOSA+LCBpbnRlZ3JhbF9jPCBULEMzMCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzEgPiwgaW50ZWdyYWxfYzwgVCxDMzIgPiwgaW50ZWdyYWxfYzwgVCxDMzMgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzM0ID4sIGludGVncmFsX2M8IFQsQzM1ID4sIGludGVncmFsX2M8IFQsQzM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzNyA+LCBpbnRlZ3JhbF9jPCBULEMzOCA+LCBpbnRlZ3JhbF9jPCBULEMzOSA+LCBpbnRlZ3JhbF9jPFQKLSAgICAgICAgLCBDNDA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjQxX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1LCBUIEMzNiwgVCBDMzcsIFQgQzM4LCBUIEMzOSwgVCBDNDAKLSAgICAsIFQgQzQxCi0gICAgPgotc3RydWN0IHZlY3RvcjQyX2MKLSAgICA6IHZlY3RvcjQyPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+LCBpbnRlZ3JhbF9jPCBULEMxOCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTkgPiwgaW50ZWdyYWxfYzwgVCxDMjAgPiwgaW50ZWdyYWxfYzwgVCxDMjEgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzIyID4sIGludGVncmFsX2M8IFQsQzIzID4sIGludGVncmFsX2M8IFQsQzI0ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyNSA+LCBpbnRlZ3JhbF9jPCBULEMyNiA+LCBpbnRlZ3JhbF9jPCBULEMyNyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjggPiwgaW50ZWdyYWxfYzwgVCxDMjkgPiwgaW50ZWdyYWxfYzwgVCxDMzAgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMxID4sIGludGVncmFsX2M8IFQsQzMyID4sIGludGVncmFsX2M8IFQsQzMzID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzNCA+LCBpbnRlZ3JhbF9jPCBULEMzNSA+LCBpbnRlZ3JhbF9jPCBULEMzNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzcgPiwgaW50ZWdyYWxfYzwgVCxDMzggPiwgaW50ZWdyYWxfYzwgVCxDMzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzQwID4sIGludGVncmFsX2M8IFQsQzQxID4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yNDJfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNCwgVCBDMzUsIFQgQzM2LCBUIEMzNywgVCBDMzgsIFQgQzM5LCBUIEM0MAotICAgICwgVCBDNDEsIFQgQzQyCi0gICAgPgotc3RydWN0IHZlY3RvcjQzX2MKLSAgICA6IHZlY3RvcjQzPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+LCBpbnRlZ3JhbF9jPCBULEMxOCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTkgPiwgaW50ZWdyYWxfYzwgVCxDMjAgPiwgaW50ZWdyYWxfYzwgVCxDMjEgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzIyID4sIGludGVncmFsX2M8IFQsQzIzID4sIGludGVncmFsX2M8IFQsQzI0ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyNSA+LCBpbnRlZ3JhbF9jPCBULEMyNiA+LCBpbnRlZ3JhbF9jPCBULEMyNyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjggPiwgaW50ZWdyYWxfYzwgVCxDMjkgPiwgaW50ZWdyYWxfYzwgVCxDMzAgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMxID4sIGludGVncmFsX2M8IFQsQzMyID4sIGludGVncmFsX2M8IFQsQzMzID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzNCA+LCBpbnRlZ3JhbF9jPCBULEMzNSA+LCBpbnRlZ3JhbF9jPCBULEMzNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzcgPiwgaW50ZWdyYWxfYzwgVCxDMzggPiwgaW50ZWdyYWxfYzwgVCxDMzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzQwID4sIGludGVncmFsX2M8IFQsQzQxID4sIGludGVncmFsX2M8IFQsQzQyID4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yNDNfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNCwgVCBDMzUsIFQgQzM2LCBUIEMzNywgVCBDMzgsIFQgQzM5LCBUIEM0MAotICAgICwgVCBDNDEsIFQgQzQyLCBUIEM0MwotICAgID4KLXN0cnVjdCB2ZWN0b3I0NF9jCi0gICAgOiB2ZWN0b3I0NDwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE5ID4sIGludGVncmFsX2M8IFQsQzIwID4sIGludGVncmFsX2M8IFQsQzIxID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyMiA+LCBpbnRlZ3JhbF9jPCBULEMyMyA+LCBpbnRlZ3JhbF9jPCBULEMyNCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjUgPiwgaW50ZWdyYWxfYzwgVCxDMjYgPiwgaW50ZWdyYWxfYzwgVCxDMjcgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI4ID4sIGludGVncmFsX2M8IFQsQzI5ID4sIGludGVncmFsX2M8IFQsQzMwID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzMSA+LCBpbnRlZ3JhbF9jPCBULEMzMiA+LCBpbnRlZ3JhbF9jPCBULEMzMyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzQgPiwgaW50ZWdyYWxfYzwgVCxDMzUgPiwgaW50ZWdyYWxfYzwgVCxDMzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzM3ID4sIGludGVncmFsX2M8IFQsQzM4ID4sIGludGVncmFsX2M8IFQsQzM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM0MCA+LCBpbnRlZ3JhbF9jPCBULEM0MSA+LCBpbnRlZ3JhbF9jPCBULEM0MiA+LCBpbnRlZ3JhbF9jPFQKLSAgICAgICAgLCBDNDM+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjQ0X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1LCBUIEMzNiwgVCBDMzcsIFQgQzM4LCBUIEMzOSwgVCBDNDAKLSAgICAsIFQgQzQxLCBUIEM0MiwgVCBDNDMsIFQgQzQ0Ci0gICAgPgotc3RydWN0IHZlY3RvcjQ1X2MKLSAgICA6IHZlY3RvcjQ1PAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+LCBpbnRlZ3JhbF9jPCBULEMxOCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTkgPiwgaW50ZWdyYWxfYzwgVCxDMjAgPiwgaW50ZWdyYWxfYzwgVCxDMjEgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzIyID4sIGludGVncmFsX2M8IFQsQzIzID4sIGludGVncmFsX2M8IFQsQzI0ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyNSA+LCBpbnRlZ3JhbF9jPCBULEMyNiA+LCBpbnRlZ3JhbF9jPCBULEMyNyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjggPiwgaW50ZWdyYWxfYzwgVCxDMjkgPiwgaW50ZWdyYWxfYzwgVCxDMzAgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMxID4sIGludGVncmFsX2M8IFQsQzMyID4sIGludGVncmFsX2M8IFQsQzMzID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzNCA+LCBpbnRlZ3JhbF9jPCBULEMzNSA+LCBpbnRlZ3JhbF9jPCBULEMzNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzcgPiwgaW50ZWdyYWxfYzwgVCxDMzggPiwgaW50ZWdyYWxfYzwgVCxDMzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzQwID4sIGludGVncmFsX2M8IFQsQzQxID4sIGludGVncmFsX2M8IFQsQzQyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM0MyA+LCBpbnRlZ3JhbF9jPCBULEM0NCA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjQ1X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1LCBUIEMzNiwgVCBDMzcsIFQgQzM4LCBUIEMzOSwgVCBDNDAKLSAgICAsIFQgQzQxLCBUIEM0MiwgVCBDNDMsIFQgQzQ0LCBUIEM0NQotICAgID4KLXN0cnVjdCB2ZWN0b3I0Nl9jCi0gICAgOiB2ZWN0b3I0NjwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE5ID4sIGludGVncmFsX2M8IFQsQzIwID4sIGludGVncmFsX2M8IFQsQzIxID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyMiA+LCBpbnRlZ3JhbF9jPCBULEMyMyA+LCBpbnRlZ3JhbF9jPCBULEMyNCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjUgPiwgaW50ZWdyYWxfYzwgVCxDMjYgPiwgaW50ZWdyYWxfYzwgVCxDMjcgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI4ID4sIGludGVncmFsX2M8IFQsQzI5ID4sIGludGVncmFsX2M8IFQsQzMwID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzMSA+LCBpbnRlZ3JhbF9jPCBULEMzMiA+LCBpbnRlZ3JhbF9jPCBULEMzMyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzQgPiwgaW50ZWdyYWxfYzwgVCxDMzUgPiwgaW50ZWdyYWxfYzwgVCxDMzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzM3ID4sIGludGVncmFsX2M8IFQsQzM4ID4sIGludGVncmFsX2M8IFQsQzM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM0MCA+LCBpbnRlZ3JhbF9jPCBULEM0MSA+LCBpbnRlZ3JhbF9jPCBULEM0MiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNDMgPiwgaW50ZWdyYWxfYzwgVCxDNDQgPiwgaW50ZWdyYWxfYzwgVCxDNDUgPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I0Nl9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMsIFQgQzM0LCBUIEMzNSwgVCBDMzYsIFQgQzM3LCBUIEMzOCwgVCBDMzksIFQgQzQwCi0gICAgLCBUIEM0MSwgVCBDNDIsIFQgQzQzLCBUIEM0NCwgVCBDNDUsIFQgQzQ2Ci0gICAgPgotc3RydWN0IHZlY3RvcjQ3X2MKLSAgICA6IHZlY3RvcjQ3PAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+LCBpbnRlZ3JhbF9jPCBULEMxOCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTkgPiwgaW50ZWdyYWxfYzwgVCxDMjAgPiwgaW50ZWdyYWxfYzwgVCxDMjEgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzIyID4sIGludGVncmFsX2M8IFQsQzIzID4sIGludGVncmFsX2M8IFQsQzI0ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyNSA+LCBpbnRlZ3JhbF9jPCBULEMyNiA+LCBpbnRlZ3JhbF9jPCBULEMyNyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjggPiwgaW50ZWdyYWxfYzwgVCxDMjkgPiwgaW50ZWdyYWxfYzwgVCxDMzAgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMxID4sIGludGVncmFsX2M8IFQsQzMyID4sIGludGVncmFsX2M8IFQsQzMzID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzNCA+LCBpbnRlZ3JhbF9jPCBULEMzNSA+LCBpbnRlZ3JhbF9jPCBULEMzNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzcgPiwgaW50ZWdyYWxfYzwgVCxDMzggPiwgaW50ZWdyYWxfYzwgVCxDMzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzQwID4sIGludGVncmFsX2M8IFQsQzQxID4sIGludGVncmFsX2M8IFQsQzQyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM0MyA+LCBpbnRlZ3JhbF9jPCBULEM0NCA+LCBpbnRlZ3JhbF9jPCBULEM0NSA+LCBpbnRlZ3JhbF9jPFQKLSAgICAgICAgLCBDNDY+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjQ3X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1LCBUIEMzNiwgVCBDMzcsIFQgQzM4LCBUIEMzOSwgVCBDNDAKLSAgICAsIFQgQzQxLCBUIEM0MiwgVCBDNDMsIFQgQzQ0LCBUIEM0NSwgVCBDNDYsIFQgQzQ3Ci0gICAgPgotc3RydWN0IHZlY3RvcjQ4X2MKLSAgICA6IHZlY3RvcjQ4PAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+LCBpbnRlZ3JhbF9jPCBULEMxOCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTkgPiwgaW50ZWdyYWxfYzwgVCxDMjAgPiwgaW50ZWdyYWxfYzwgVCxDMjEgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzIyID4sIGludGVncmFsX2M8IFQsQzIzID4sIGludGVncmFsX2M8IFQsQzI0ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyNSA+LCBpbnRlZ3JhbF9jPCBULEMyNiA+LCBpbnRlZ3JhbF9jPCBULEMyNyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjggPiwgaW50ZWdyYWxfYzwgVCxDMjkgPiwgaW50ZWdyYWxfYzwgVCxDMzAgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMxID4sIGludGVncmFsX2M8IFQsQzMyID4sIGludGVncmFsX2M8IFQsQzMzID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzNCA+LCBpbnRlZ3JhbF9jPCBULEMzNSA+LCBpbnRlZ3JhbF9jPCBULEMzNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzcgPiwgaW50ZWdyYWxfYzwgVCxDMzggPiwgaW50ZWdyYWxfYzwgVCxDMzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzQwID4sIGludGVncmFsX2M8IFQsQzQxID4sIGludGVncmFsX2M8IFQsQzQyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM0MyA+LCBpbnRlZ3JhbF9jPCBULEM0NCA+LCBpbnRlZ3JhbF9jPCBULEM0NSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNDYgPiwgaW50ZWdyYWxfYzwgVCxDNDcgPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I0OF9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMsIFQgQzM0LCBUIEMzNSwgVCBDMzYsIFQgQzM3LCBUIEMzOCwgVCBDMzksIFQgQzQwCi0gICAgLCBUIEM0MSwgVCBDNDIsIFQgQzQzLCBUIEM0NCwgVCBDNDUsIFQgQzQ2LCBUIEM0NywgVCBDNDgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNDlfYwotICAgIDogdmVjdG9yNDk8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4sIGludGVncmFsX2M8IFQsQzE4ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxOSA+LCBpbnRlZ3JhbF9jPCBULEMyMCA+LCBpbnRlZ3JhbF9jPCBULEMyMSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjIgPiwgaW50ZWdyYWxfYzwgVCxDMjMgPiwgaW50ZWdyYWxfYzwgVCxDMjQgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI1ID4sIGludGVncmFsX2M8IFQsQzI2ID4sIGludGVncmFsX2M8IFQsQzI3ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyOCA+LCBpbnRlZ3JhbF9jPCBULEMyOSA+LCBpbnRlZ3JhbF9jPCBULEMzMCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzEgPiwgaW50ZWdyYWxfYzwgVCxDMzIgPiwgaW50ZWdyYWxfYzwgVCxDMzMgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzM0ID4sIGludGVncmFsX2M8IFQsQzM1ID4sIGludGVncmFsX2M8IFQsQzM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzNyA+LCBpbnRlZ3JhbF9jPCBULEMzOCA+LCBpbnRlZ3JhbF9jPCBULEMzOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNDAgPiwgaW50ZWdyYWxfYzwgVCxDNDEgPiwgaW50ZWdyYWxfYzwgVCxDNDIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzQzID4sIGludGVncmFsX2M8IFQsQzQ0ID4sIGludGVncmFsX2M8IFQsQzQ1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM0NiA+LCBpbnRlZ3JhbF9jPCBULEM0NyA+LCBpbnRlZ3JhbF9jPCBULEM0OCA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjQ5X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1LCBUIEMzNiwgVCBDMzcsIFQgQzM4LCBUIEMzOSwgVCBDNDAKLSAgICAsIFQgQzQxLCBUIEM0MiwgVCBDNDMsIFQgQzQ0LCBUIEM0NSwgVCBDNDYsIFQgQzQ3LCBUIEM0OCwgVCBDNDkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNTBfYwotICAgIDogdmVjdG9yNTA8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4sIGludGVncmFsX2M8IFQsQzE4ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxOSA+LCBpbnRlZ3JhbF9jPCBULEMyMCA+LCBpbnRlZ3JhbF9jPCBULEMyMSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjIgPiwgaW50ZWdyYWxfYzwgVCxDMjMgPiwgaW50ZWdyYWxfYzwgVCxDMjQgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI1ID4sIGludGVncmFsX2M8IFQsQzI2ID4sIGludGVncmFsX2M8IFQsQzI3ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyOCA+LCBpbnRlZ3JhbF9jPCBULEMyOSA+LCBpbnRlZ3JhbF9jPCBULEMzMCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzEgPiwgaW50ZWdyYWxfYzwgVCxDMzIgPiwgaW50ZWdyYWxfYzwgVCxDMzMgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzM0ID4sIGludGVncmFsX2M8IFQsQzM1ID4sIGludGVncmFsX2M8IFQsQzM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzNyA+LCBpbnRlZ3JhbF9jPCBULEMzOCA+LCBpbnRlZ3JhbF9jPCBULEMzOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNDAgPiwgaW50ZWdyYWxfYzwgVCxDNDEgPiwgaW50ZWdyYWxfYzwgVCxDNDIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzQzID4sIGludGVncmFsX2M8IFQsQzQ0ID4sIGludGVncmFsX2M8IFQsQzQ1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM0NiA+LCBpbnRlZ3JhbF9jPCBULEM0NyA+LCBpbnRlZ3JhbF9jPCBULEM0OCA+LCBpbnRlZ3JhbF9jPFQKLSAgICAgICAgLCBDNDk+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjUwX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vdmVjdG9yMTAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3ZlY3RvcjEwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWVmZTMyYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vdmVjdG9yMTAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODI5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IxMC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFYgPgotc3RydWN0IHZfYXQ8IFYsMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMAotICAgID4KLXN0cnVjdCB2ZWN0b3IxCi17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8MT4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMSB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMTsKLSAgICB0eXBlZGVmIFQwIGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDEgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IwPAotICAgICAgICAgICAgIAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxPAotICAgICAgICAgICAgIAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMDwKLSAgICAgICAgICAgICAKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFYgPgotc3RydWN0IHZfYXQ8IFYsMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMgotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDI+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjIgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0yOwotICAgIHR5cGVkZWYgVDEgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMiA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyPAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjI8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgViA+Ci1zdHJ1Y3Qgdl9hdDwgViwyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0yIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMwotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDM+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjMgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTM7Ci0gICAgdHlwZWRlZiBUMiBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwzID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjM8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjI8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBWID4KLXN0cnVjdCB2X2F0PCBWLDMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTMgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNAotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDQ+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjQgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtNDsKLSAgICB0eXBlZGVmIFQzIGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDQgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjM8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgViA+Ci1zdHJ1Y3Qgdl9hdDwgViw0ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW00IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCB2ZWN0b3I1Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8NT4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yNSB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTU7Ci0gICAgdHlwZWRlZiBUNCBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSw1ID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjU8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjU8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFYgPgotc3RydWN0IHZfYXQ8IFYsNSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1Ci0gICAgPgotc3RydWN0IHZlY3RvcjYKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzw2PiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3I2IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW02OwotICAgIHR5cGVkZWYgVDUgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsNiA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I2PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Nj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Nj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFYgPgotc3RydWN0IHZfYXQ8IFYsNiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNgotICAgID4KLXN0cnVjdCB2ZWN0b3I3Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8Nz4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yNyB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW03OwotICAgIHR5cGVkZWYgVDYgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsNyA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I3PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Nz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Nj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Nz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFYgPgotc3RydWN0IHZfYXQ8IFYsNyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yOAotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDg+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjggdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW04OwotICAgIHR5cGVkZWYgVDcgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsOCA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I4PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I3PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3Rvcjg8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8OD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgViA+Ci1zdHJ1Y3Qgdl9hdDwgViw4ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW04IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yOQotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDk+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjkgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTk7Ci0gICAgdHlwZWRlZiBUOCBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSw5ID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3Rvcjk8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3Rvcjg8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8OD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yOTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I4PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBWID4KLXN0cnVjdCB2X2F0PCBWLDkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTkgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMTAKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwxMD4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMTAgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUOSBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwxMCA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxMDwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yOTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjEwPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3Rvcjk8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgViA+Ci1zdHJ1Y3Qgdl9hdDwgViwxMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTAgdHlwZTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vdmVjdG9yMTBfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vdmVjdG9yMTBfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQyNWM5M2YuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3ZlY3RvcjEwX2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQ5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IxMF9jLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMV9jCi0gICAgOiB2ZWN0b3IxPCBpbnRlZ3JhbF9jPCBULEMwID4gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMV9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMl9jCi0gICAgOiB2ZWN0b3IyPCBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IyX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMgotICAgID4KLXN0cnVjdCB2ZWN0b3IzX2MKLSAgICA6IHZlY3RvcjM8IGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4gPgotewotICAgIHR5cGVkZWYgdmVjdG9yM19jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNF9jCi0gICAgOiB2ZWN0b3I0PAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4sIGludGVncmFsX2M8VAotICAgICAgICAsIEMzPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I0X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNAotICAgID4KLXN0cnVjdCB2ZWN0b3I1X2MKLSAgICA6IHZlY3RvcjU8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjVfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1Ci0gICAgPgotc3RydWN0IHZlY3RvcjZfYwotICAgIDogdmVjdG9yNjwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I2X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNgotICAgID4KLXN0cnVjdCB2ZWN0b3I3X2MKLSAgICA6IHZlY3Rvcjc8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8VAotICAgICAgICAsIEM2PiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I3X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNwotICAgID4KLXN0cnVjdCB2ZWN0b3I4X2MKLSAgICA6IHZlY3Rvcjg8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I4X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOAotICAgID4KLXN0cnVjdCB2ZWN0b3I5X2MKLSAgICA6IHZlY3Rvcjk8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjlfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5Ci0gICAgPgotc3RydWN0IHZlY3RvcjEwX2MKLSAgICA6IHZlY3RvcjEwPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjEwX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vdmVjdG9yMjAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3ZlY3RvcjIwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDQ5MjA5ZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vdmVjdG9yMjAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTE0NCArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yMjAuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMAotICAgID4KLXN0cnVjdCB2ZWN0b3IxMQotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDExPiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IxMSB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTAgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMTEgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjExPAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDExPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxMDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTE8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTA8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgViA+Ci1zdHJ1Y3Qgdl9hdDwgViwxMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTEgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExCi0gICAgPgotc3RydWN0IHZlY3RvcjEyCi17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8MTI+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjEyIHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTEgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMTIgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjEyPAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDEyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxMTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTI8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTE8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgViA+Ci1zdHJ1Y3Qgdl9hdDwgViwxMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTIgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMTMKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwxMz4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMTMgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTIgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMTMgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjEzPAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTI8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDEyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxMzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTI8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFYgPgotc3RydWN0IHZfYXQ8IFYsMTMgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEzIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMTQKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwxND4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMTQgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTE0OwotICAgIHR5cGVkZWYgVDEzIGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDE0ID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDEzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxNDwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjEzPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxMz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjEzPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBWID4KLXN0cnVjdCB2X2F0PCBWLDE0ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMTUKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwxNT4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMTUgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNCBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwxNSA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTU8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxNT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTU8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxNDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFYgPgotc3RydWN0IHZfYXQ8IFYsMTUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE1IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1Ci0gICAgPgotc3RydWN0IHZlY3RvcjE2Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8MTY+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjE2IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTE2OwotICAgIHR5cGVkZWYgVDE1IGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDE2ID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxNjwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxNTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxNjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjE1PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgViA+Ci1zdHJ1Y3Qgdl9hdDwgViwxNiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTYgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNgotICAgID4KLXN0cnVjdCB2ZWN0b3IxNwotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDE3PiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IxNyB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTYgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMTcgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjE3PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxNjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxNj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTc8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxNz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTY8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgViA+Ci1zdHJ1Y3Qgdl9hdDwgViwxNyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3Ci0gICAgPgotc3RydWN0IHZlY3RvcjE4Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8MTg+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjE4IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTcgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMTggPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjE4PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxNzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxNz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTg8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxOD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTc8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgViA+Ci1zdHJ1Y3Qgdl9hdDwgViwxOCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTggdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMTkKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwxOT4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMTkgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMTggYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMTkgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MTg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjE5PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxOT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTg8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IxOTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxOT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMTg8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFYgPgotc3RydWN0IHZfYXQ8IFYsMTkgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE5IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMjAKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwyMD4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMjAgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTIwOwotICAgIHR5cGVkZWYgVDE5IGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDIwID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDE5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyMDwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjE5PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwxOT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjA8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjE5PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBWID4KLXN0cnVjdCB2X2F0PCBWLDIwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0yMCB0eXBlOwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi92ZWN0b3IyMF9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi92ZWN0b3IyMF9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTgxNGNjYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vdmVjdG9yMjBfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxOTUgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjIwX2MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICA+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+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4sIGludGVncmFsX2M8IFQsQzE4ID4sIGludGVncmFsX2M8VAotICAgICAgICAsIEMxOT4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMjBfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi92ZWN0b3IzMC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vdmVjdG9yMzAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ODhmNWNhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi92ZWN0b3IzMC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDY0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IzMC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMjEKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwyMT4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMjEgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0yMTsKLSAgICB0eXBlZGVmIFQyMCBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwyMSA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjE8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjA8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjE8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyMDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFYgPgotc3RydWN0IHZfYXQ8IFYsMjEgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTIxIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxCi0gICAgPgotc3RydWN0IHZlY3RvcjIyCi17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8MjI+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjIyIHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIHR5cGVkZWYgVDIxIGl0ZW0yMTsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTIyOwotICAgIHR5cGVkZWYgVDIxIGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDIyID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyMjwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyMTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyMjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjIxPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgViA+Ci1zdHJ1Y3Qgdl9hdDwgViwyMiA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMjIgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMgotICAgID4KLXN0cnVjdCB2ZWN0b3IyMwotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDIzPiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IyMyB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQyMSBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjIgaXRlbTIyOwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMjM7Ci0gICAgdHlwZWRlZiBUMjIgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMjMgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjIzPAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDIzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyMjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjM8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjI8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgViA+Ci1zdHJ1Y3Qgdl9hdDwgViwyMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMjMgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzCi0gICAgPgotc3RydWN0IHZlY3RvcjI0Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8MjQ+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjI0IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIHR5cGVkZWYgVDIxIGl0ZW0yMTsKLSAgICB0eXBlZGVmIFQyMiBpdGVtMjI7Ci0gICAgdHlwZWRlZiBUMjMgaXRlbTIzOwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMjQ7Ci0gICAgdHlwZWRlZiBUMjMgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMjQgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjI0PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyMzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyMz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjM8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgViA+Ci1zdHJ1Y3Qgdl9hdDwgViwyNCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMjQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMjUKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwyNT4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMjUgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMjEgaXRlbTIxOwotICAgIHR5cGVkZWYgVDIyIGl0ZW0yMjsKLSAgICB0eXBlZGVmIFQyMyBpdGVtMjM7Ci0gICAgdHlwZWRlZiBUMjQgaXRlbTI0OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMjU7Ci0gICAgdHlwZWRlZiBUMjQgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMjUgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjI1PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyNT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyNTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyNT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjQ8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFYgPgotc3RydWN0IHZfYXQ8IFYsMjUgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTI1IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMjYKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwyNj4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMjYgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMjEgaXRlbTIxOwotICAgIHR5cGVkZWYgVDIyIGl0ZW0yMjsKLSAgICB0eXBlZGVmIFQyMyBpdGVtMjM7Ci0gICAgdHlwZWRlZiBUMjQgaXRlbTI0OwotICAgIHR5cGVkZWYgVDI1IGl0ZW0yNTsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTI2OwotICAgIHR5cGVkZWYgVDI1IGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDI2ID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyNjwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjI1PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyNT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjY8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MjY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjI1PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBWID4KLXN0cnVjdCB2X2F0PCBWLDI2ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0yNiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMjcKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwyNz4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMjcgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMjEgaXRlbTIxOwotICAgIHR5cGVkZWYgVDIyIGl0ZW0yMjsKLSAgICB0eXBlZGVmIFQyMyBpdGVtMjM7Ci0gICAgdHlwZWRlZiBUMjQgaXRlbTI0OwotICAgIHR5cGVkZWYgVDI1IGl0ZW0yNTsKLSAgICB0eXBlZGVmIFQyNiBpdGVtMjY7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0yNzsKLSAgICB0eXBlZGVmIFQyNiBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwyNyA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyNj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjc8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyNz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjY8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyNj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjc8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyNjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFYgPgotc3RydWN0IHZfYXQ8IFYsMjcgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTI3IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3Ci0gICAgPgotc3RydWN0IHZlY3RvcjI4Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8Mjg+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjI4IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIHR5cGVkZWYgVDIxIGl0ZW0yMTsKLSAgICB0eXBlZGVmIFQyMiBpdGVtMjI7Ci0gICAgdHlwZWRlZiBUMjMgaXRlbTIzOwotICAgIHR5cGVkZWYgVDI0IGl0ZW0yNDsKLSAgICB0eXBlZGVmIFQyNSBpdGVtMjU7Ci0gICAgdHlwZWRlZiBUMjYgaXRlbTI2OwotICAgIHR5cGVkZWYgVDI3IGl0ZW0yNzsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTI4OwotICAgIHR5cGVkZWYgVDI3IGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDI4ID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyODwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyNzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyODwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mjg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjI3PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgViA+Ci1zdHJ1Y3Qgdl9hdDwgViwyOCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMjggdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOAotICAgID4KLXN0cnVjdCB2ZWN0b3IyOQotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDI5PiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IyOSB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQyMSBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjIgaXRlbTIyOwotICAgIHR5cGVkZWYgVDIzIGl0ZW0yMzsKLSAgICB0eXBlZGVmIFQyNCBpdGVtMjQ7Ci0gICAgdHlwZWRlZiBUMjUgaXRlbTI1OwotICAgIHR5cGVkZWYgVDI2IGl0ZW0yNjsKLSAgICB0eXBlZGVmIFQyNyBpdGVtMjc7Ci0gICAgdHlwZWRlZiBUMjggaXRlbTI4OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMjk7Ci0gICAgdHlwZWRlZiBUMjggYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMjkgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mjg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjI5PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDI5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyODwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyOD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjk8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyOT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjg8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgViA+Ci1zdHJ1Y3Qgdl9hdDwgViwyOSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMjkgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgPgotc3RydWN0IHZlY3RvcjMwCi17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8MzA+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjMwIHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIHR5cGVkZWYgVDIxIGl0ZW0yMTsKLSAgICB0eXBlZGVmIFQyMiBpdGVtMjI7Ci0gICAgdHlwZWRlZiBUMjMgaXRlbTIzOwotICAgIHR5cGVkZWYgVDI0IGl0ZW0yNDsKLSAgICB0eXBlZGVmIFQyNSBpdGVtMjU7Ci0gICAgdHlwZWRlZiBUMjYgaXRlbTI2OwotICAgIHR5cGVkZWYgVDI3IGl0ZW0yNzsKLSAgICB0eXBlZGVmIFQyOCBpdGVtMjg7Ci0gICAgdHlwZWRlZiBUMjkgaXRlbTI5OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMzA7Ci0gICAgdHlwZWRlZiBUMjkgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMzAgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mjk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjMwPAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IyOTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwyOT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzA8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMjk8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgViA+Ci1zdHJ1Y3Qgdl9hdDwgViwzMCA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMzAgdHlwZTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vdmVjdG9yMzBfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vdmVjdG9yMzBfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdiMTA0NDQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3ZlY3RvcjMwX2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjM4ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IzMF9jLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgID4KLXN0cnVjdCB2ZWN0b3IyMV9jCi0gICAgOiB2ZWN0b3IyMTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE5ID4sIGludGVncmFsX2M8IFQsQzIwID4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMjFfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxCi0gICAgPgotc3RydWN0IHZlY3RvcjIyX2MKLSAgICA6IHZlY3RvcjIyPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+LCBpbnRlZ3JhbF9jPCBULEMxOCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTkgPiwgaW50ZWdyYWxfYzwgVCxDMjAgPiwgaW50ZWdyYWxfYzwgVCxDMjEgPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IyMl9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyCi0gICAgPgotc3RydWN0IHZlY3RvcjIzX2MKLSAgICA6IHZlY3RvcjIzPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+LCBpbnRlZ3JhbF9jPCBULEMxOCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTkgPiwgaW50ZWdyYWxfYzwgVCxDMjAgPiwgaW50ZWdyYWxfYzwgVCxDMjEgPiwgaW50ZWdyYWxfYzxUCi0gICAgICAgICwgQzIyPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IyM19jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMwotICAgID4KLXN0cnVjdCB2ZWN0b3IyNF9jCi0gICAgOiB2ZWN0b3IyNDwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE5ID4sIGludGVncmFsX2M8IFQsQzIwID4sIGludGVncmFsX2M8IFQsQzIxID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyMiA+LCBpbnRlZ3JhbF9jPCBULEMyMyA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjI0X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNAotICAgID4KLXN0cnVjdCB2ZWN0b3IyNV9jCi0gICAgOiB2ZWN0b3IyNTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE5ID4sIGludGVncmFsX2M8IFQsQzIwID4sIGludGVncmFsX2M8IFQsQzIxID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyMiA+LCBpbnRlZ3JhbF9jPCBULEMyMyA+LCBpbnRlZ3JhbF9jPCBULEMyNCA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjI1X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMjZfYwotICAgIDogdmVjdG9yMjY8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4sIGludGVncmFsX2M8IFQsQzE4ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxOSA+LCBpbnRlZ3JhbF9jPCBULEMyMCA+LCBpbnRlZ3JhbF9jPCBULEMyMSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjIgPiwgaW50ZWdyYWxfYzwgVCxDMjMgPiwgaW50ZWdyYWxfYzwgVCxDMjQgPiwgaW50ZWdyYWxfYzxUCi0gICAgICAgICwgQzI1PiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IyNl9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNgotICAgID4KLXN0cnVjdCB2ZWN0b3IyN19jCi0gICAgOiB2ZWN0b3IyNzwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE5ID4sIGludGVncmFsX2M8IFQsQzIwID4sIGludGVncmFsX2M8IFQsQzIxID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyMiA+LCBpbnRlZ3JhbF9jPCBULEMyMyA+LCBpbnRlZ3JhbF9jPCBULEMyNCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjUgPiwgaW50ZWdyYWxfYzwgVCxDMjYgPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IyN19jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMjhfYwotICAgIDogdmVjdG9yMjg8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4sIGludGVncmFsX2M8IFQsQzE4ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxOSA+LCBpbnRlZ3JhbF9jPCBULEMyMCA+LCBpbnRlZ3JhbF9jPCBULEMyMSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjIgPiwgaW50ZWdyYWxfYzwgVCxDMjMgPiwgaW50ZWdyYWxfYzwgVCxDMjQgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI1ID4sIGludGVncmFsX2M8IFQsQzI2ID4sIGludGVncmFsX2M8IFQsQzI3ID4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMjhfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOAotICAgID4KLXN0cnVjdCB2ZWN0b3IyOV9jCi0gICAgOiB2ZWN0b3IyOTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE5ID4sIGludGVncmFsX2M8IFQsQzIwID4sIGludGVncmFsX2M8IFQsQzIxID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyMiA+LCBpbnRlZ3JhbF9jPCBULEMyMyA+LCBpbnRlZ3JhbF9jPCBULEMyNCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjUgPiwgaW50ZWdyYWxfYzwgVCxDMjYgPiwgaW50ZWdyYWxfYzwgVCxDMjcgPiwgaW50ZWdyYWxfYzxUCi0gICAgICAgICwgQzI4PiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IyOV9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOQotICAgID4KLXN0cnVjdCB2ZWN0b3IzMF9jCi0gICAgOiB2ZWN0b3IzMDwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE5ID4sIGludGVncmFsX2M8IFQsQzIwID4sIGludGVncmFsX2M8IFQsQzIxID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyMiA+LCBpbnRlZ3JhbF9jPCBULEMyMyA+LCBpbnRlZ3JhbF9jPCBULEMyNCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjUgPiwgaW50ZWdyYWxfYzwgVCxDMjYgPiwgaW50ZWdyYWxfYzwgVCxDMjcgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI4ID4sIGludGVncmFsX2M8IFQsQzI5ID4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMzBfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi92ZWN0b3I0MC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vdmVjdG9yNDAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkN2M3NTNkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi92ZWN0b3I0MC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNzg0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3I0MC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMAotICAgID4KLXN0cnVjdCB2ZWN0b3IzMQotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDMxPiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IzMSB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQyMSBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjIgaXRlbTIyOwotICAgIHR5cGVkZWYgVDIzIGl0ZW0yMzsKLSAgICB0eXBlZGVmIFQyNCBpdGVtMjQ7Ci0gICAgdHlwZWRlZiBUMjUgaXRlbTI1OwotICAgIHR5cGVkZWYgVDI2IGl0ZW0yNjsKLSAgICB0eXBlZGVmIFQyNyBpdGVtMjc7Ci0gICAgdHlwZWRlZiBUMjggaXRlbTI4OwotICAgIHR5cGVkZWYgVDI5IGl0ZW0yOTsKLSAgICB0eXBlZGVmIFQzMCBpdGVtMzA7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0zMTsKLSAgICB0eXBlZGVmIFQzMCBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwzMSA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzE8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzMDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjMxPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzMDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgViA+Ci1zdHJ1Y3Qgdl9hdDwgViwzMSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMzEgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMQotICAgID4KLXN0cnVjdCB2ZWN0b3IzMgotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDMyPiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IzMiB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQyMSBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjIgaXRlbTIyOwotICAgIHR5cGVkZWYgVDIzIGl0ZW0yMzsKLSAgICB0eXBlZGVmIFQyNCBpdGVtMjQ7Ci0gICAgdHlwZWRlZiBUMjUgaXRlbTI1OwotICAgIHR5cGVkZWYgVDI2IGl0ZW0yNjsKLSAgICB0eXBlZGVmIFQyNyBpdGVtMjc7Ci0gICAgdHlwZWRlZiBUMjggaXRlbTI4OwotICAgIHR5cGVkZWYgVDI5IGl0ZW0yOTsKLSAgICB0eXBlZGVmIFQzMCBpdGVtMzA7Ci0gICAgdHlwZWRlZiBUMzEgaXRlbTMxOwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMzI7Ci0gICAgdHlwZWRlZiBUMzEgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMzIgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjMyPAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzE8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzMjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzMj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzE8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFYgPgotc3RydWN0IHZfYXQ8IFYsMzIgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTMyIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMgotICAgID4KLXN0cnVjdCB2ZWN0b3IzMwotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDMzPiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IzMyB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQyMSBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjIgaXRlbTIyOwotICAgIHR5cGVkZWYgVDIzIGl0ZW0yMzsKLSAgICB0eXBlZGVmIFQyNCBpdGVtMjQ7Ci0gICAgdHlwZWRlZiBUMjUgaXRlbTI1OwotICAgIHR5cGVkZWYgVDI2IGl0ZW0yNjsKLSAgICB0eXBlZGVmIFQyNyBpdGVtMjc7Ci0gICAgdHlwZWRlZiBUMjggaXRlbTI4OwotICAgIHR5cGVkZWYgVDI5IGl0ZW0yOTsKLSAgICB0eXBlZGVmIFQzMCBpdGVtMzA7Ci0gICAgdHlwZWRlZiBUMzEgaXRlbTMxOwotICAgIHR5cGVkZWYgVDMyIGl0ZW0zMjsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTMzOwotICAgIHR5cGVkZWYgVDMyIGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDMzID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzMzwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzMjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDMyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzMzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjMyPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgViA+Ci1zdHJ1Y3Qgdl9hdDwgViwzMyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMzMgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMzQKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwzND4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMzQgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMjEgaXRlbTIxOwotICAgIHR5cGVkZWYgVDIyIGl0ZW0yMjsKLSAgICB0eXBlZGVmIFQyMyBpdGVtMjM7Ci0gICAgdHlwZWRlZiBUMjQgaXRlbTI0OwotICAgIHR5cGVkZWYgVDI1IGl0ZW0yNTsKLSAgICB0eXBlZGVmIFQyNiBpdGVtMjY7Ci0gICAgdHlwZWRlZiBUMjcgaXRlbTI3OwotICAgIHR5cGVkZWYgVDI4IGl0ZW0yODsKLSAgICB0eXBlZGVmIFQyOSBpdGVtMjk7Ci0gICAgdHlwZWRlZiBUMzAgaXRlbTMwOwotICAgIHR5cGVkZWYgVDMxIGl0ZW0zMTsKLSAgICB0eXBlZGVmIFQzMiBpdGVtMzI7Ci0gICAgdHlwZWRlZiBUMzMgaXRlbTMzOwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMzQ7Ci0gICAgdHlwZWRlZiBUMzMgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMzQgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjM0PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzQ+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjMzPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjM0PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMgotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzM8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBWID4KLXN0cnVjdCB2X2F0PCBWLDM0ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0zNCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgPgotc3RydWN0IHZlY3RvcjM1Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8MzU+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjM1IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIHR5cGVkZWYgVDIxIGl0ZW0yMTsKLSAgICB0eXBlZGVmIFQyMiBpdGVtMjI7Ci0gICAgdHlwZWRlZiBUMjMgaXRlbTIzOwotICAgIHR5cGVkZWYgVDI0IGl0ZW0yNDsKLSAgICB0eXBlZGVmIFQyNSBpdGVtMjU7Ci0gICAgdHlwZWRlZiBUMjYgaXRlbTI2OwotICAgIHR5cGVkZWYgVDI3IGl0ZW0yNzsKLSAgICB0eXBlZGVmIFQyOCBpdGVtMjg7Ci0gICAgdHlwZWRlZiBUMjkgaXRlbTI5OwotICAgIHR5cGVkZWYgVDMwIGl0ZW0zMDsKLSAgICB0eXBlZGVmIFQzMSBpdGVtMzE7Ci0gICAgdHlwZWRlZiBUMzIgaXRlbTMyOwotICAgIHR5cGVkZWYgVDMzIGl0ZW0zMzsKLSAgICB0eXBlZGVmIFQzNCBpdGVtMzQ7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0zNTsKLSAgICB0eXBlZGVmIFQzNCBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwzNSA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzU8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjM0PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzNTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzNDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBWID4KLXN0cnVjdCB2X2F0PCBWLDM1ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0zNSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMzYKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzwzNj4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMzYgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMjEgaXRlbTIxOwotICAgIHR5cGVkZWYgVDIyIGl0ZW0yMjsKLSAgICB0eXBlZGVmIFQyMyBpdGVtMjM7Ci0gICAgdHlwZWRlZiBUMjQgaXRlbTI0OwotICAgIHR5cGVkZWYgVDI1IGl0ZW0yNTsKLSAgICB0eXBlZGVmIFQyNiBpdGVtMjY7Ci0gICAgdHlwZWRlZiBUMjcgaXRlbTI3OwotICAgIHR5cGVkZWYgVDI4IGl0ZW0yODsKLSAgICB0eXBlZGVmIFQyOSBpdGVtMjk7Ci0gICAgdHlwZWRlZiBUMzAgaXRlbTMwOwotICAgIHR5cGVkZWYgVDMxIGl0ZW0zMTsKLSAgICB0eXBlZGVmIFQzMiBpdGVtMzI7Ci0gICAgdHlwZWRlZiBUMzMgaXRlbTMzOwotICAgIHR5cGVkZWYgVDM0IGl0ZW0zNDsKLSAgICB0eXBlZGVmIFQzNSBpdGVtMzU7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0zNjsKLSAgICB0eXBlZGVmIFQzNSBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwzNiA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzNT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzY8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjM1PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzNjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0Ci0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzNTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBWID4KLXN0cnVjdCB2X2F0PCBWLDM2ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0zNiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNgotICAgID4KLXN0cnVjdCB2ZWN0b3IzNwotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDM3PiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IzNyB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQyMSBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjIgaXRlbTIyOwotICAgIHR5cGVkZWYgVDIzIGl0ZW0yMzsKLSAgICB0eXBlZGVmIFQyNCBpdGVtMjQ7Ci0gICAgdHlwZWRlZiBUMjUgaXRlbTI1OwotICAgIHR5cGVkZWYgVDI2IGl0ZW0yNjsKLSAgICB0eXBlZGVmIFQyNyBpdGVtMjc7Ci0gICAgdHlwZWRlZiBUMjggaXRlbTI4OwotICAgIHR5cGVkZWYgVDI5IGl0ZW0yOTsKLSAgICB0eXBlZGVmIFQzMCBpdGVtMzA7Ci0gICAgdHlwZWRlZiBUMzEgaXRlbTMxOwotICAgIHR5cGVkZWYgVDMyIGl0ZW0zMjsKLSAgICB0eXBlZGVmIFQzMyBpdGVtMzM7Ci0gICAgdHlwZWRlZiBUMzQgaXRlbTM0OwotICAgIHR5cGVkZWYgVDM1IGl0ZW0zNTsKLSAgICB0eXBlZGVmIFQzNiBpdGVtMzY7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW0zNzsKLSAgICB0eXBlZGVmIFQzNiBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwzNyA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzNj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzc8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzNjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8MzY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjM3PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzNjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgViA+Ci1zdHJ1Y3Qgdl9hdDwgViwzNyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMzcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1LCB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNwotICAgID4KLXN0cnVjdCB2ZWN0b3IzOAotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDM4PiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IzOCB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQyMSBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjIgaXRlbTIyOwotICAgIHR5cGVkZWYgVDIzIGl0ZW0yMzsKLSAgICB0eXBlZGVmIFQyNCBpdGVtMjQ7Ci0gICAgdHlwZWRlZiBUMjUgaXRlbTI1OwotICAgIHR5cGVkZWYgVDI2IGl0ZW0yNjsKLSAgICB0eXBlZGVmIFQyNyBpdGVtMjc7Ci0gICAgdHlwZWRlZiBUMjggaXRlbTI4OwotICAgIHR5cGVkZWYgVDI5IGl0ZW0yOTsKLSAgICB0eXBlZGVmIFQzMCBpdGVtMzA7Ci0gICAgdHlwZWRlZiBUMzEgaXRlbTMxOwotICAgIHR5cGVkZWYgVDMyIGl0ZW0zMjsKLSAgICB0eXBlZGVmIFQzMyBpdGVtMzM7Ci0gICAgdHlwZWRlZiBUMzQgaXRlbTM0OwotICAgIHR5cGVkZWYgVDM1IGl0ZW0zNTsKLSAgICB0eXBlZGVmIFQzNiBpdGVtMzY7Ci0gICAgdHlwZWRlZiBUMzcgaXRlbTM3OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtMzg7Ci0gICAgdHlwZWRlZiBUMzcgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMzggPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mzc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjM4PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzOD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzc8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzODwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNgotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzwzOD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzc8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFYgPgotc3RydWN0IHZfYXQ8IFYsMzggPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTM4IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICAsIHR5cGVuYW1lIFQzNSwgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOAotICAgID4KLXN0cnVjdCB2ZWN0b3IzOQotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDM5PiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3IzOSB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQyMSBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjIgaXRlbTIyOwotICAgIHR5cGVkZWYgVDIzIGl0ZW0yMzsKLSAgICB0eXBlZGVmIFQyNCBpdGVtMjQ7Ci0gICAgdHlwZWRlZiBUMjUgaXRlbTI1OwotICAgIHR5cGVkZWYgVDI2IGl0ZW0yNjsKLSAgICB0eXBlZGVmIFQyNyBpdGVtMjc7Ci0gICAgdHlwZWRlZiBUMjggaXRlbTI4OwotICAgIHR5cGVkZWYgVDI5IGl0ZW0yOTsKLSAgICB0eXBlZGVmIFQzMCBpdGVtMzA7Ci0gICAgdHlwZWRlZiBUMzEgaXRlbTMxOwotICAgIHR5cGVkZWYgVDMyIGl0ZW0zMjsKLSAgICB0eXBlZGVmIFQzMyBpdGVtMzM7Ci0gICAgdHlwZWRlZiBUMzQgaXRlbTM0OwotICAgIHR5cGVkZWYgVDM1IGl0ZW0zNTsKLSAgICB0eXBlZGVmIFQzNiBpdGVtMzY7Ci0gICAgdHlwZWRlZiBUMzcgaXRlbTM3OwotICAgIHR5cGVkZWYgVDM4IGl0ZW0zODsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTM5OwotICAgIHR5cGVkZWYgVDM4IGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDM5ID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzOTwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzODwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDM4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3IzOTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mzk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjM4PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgViA+Ci1zdHJ1Y3Qgdl9hdDwgViwzOSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMzkgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1LCB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNDAKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzw0MD4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yNDAgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMjEgaXRlbTIxOwotICAgIHR5cGVkZWYgVDIyIGl0ZW0yMjsKLSAgICB0eXBlZGVmIFQyMyBpdGVtMjM7Ci0gICAgdHlwZWRlZiBUMjQgaXRlbTI0OwotICAgIHR5cGVkZWYgVDI1IGl0ZW0yNTsKLSAgICB0eXBlZGVmIFQyNiBpdGVtMjY7Ci0gICAgdHlwZWRlZiBUMjcgaXRlbTI3OwotICAgIHR5cGVkZWYgVDI4IGl0ZW0yODsKLSAgICB0eXBlZGVmIFQyOSBpdGVtMjk7Ci0gICAgdHlwZWRlZiBUMzAgaXRlbTMwOwotICAgIHR5cGVkZWYgVDMxIGl0ZW0zMTsKLSAgICB0eXBlZGVmIFQzMiBpdGVtMzI7Ci0gICAgdHlwZWRlZiBUMzMgaXRlbTMzOwotICAgIHR5cGVkZWYgVDM0IGl0ZW0zNDsKLSAgICB0eXBlZGVmIFQzNSBpdGVtMzU7Ci0gICAgdHlwZWRlZiBUMzYgaXRlbTM2OwotICAgIHR5cGVkZWYgVDM3IGl0ZW0zNzsKLSAgICB0eXBlZGVmIFQzOCBpdGVtMzg7Ci0gICAgdHlwZWRlZiBUMzkgaXRlbTM5OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtNDA7Ci0gICAgdHlwZWRlZiBUMzkgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsNDAgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mzk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQwPAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDA+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjM5PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8Mzk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQwPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0MD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yMzk8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBWID4KLXN0cnVjdCB2X2F0PCBWLDQwID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW00MCB0eXBlOwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi92ZWN0b3I0MF9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi92ZWN0b3I0MF9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDVkNjJkMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vdmVjdG9yNDBfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyODEgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjQwX2MuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgID4KLXN0cnVjdCB2ZWN0b3IzMV9jCi0gICAgOiB2ZWN0b3IzMTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE5ID4sIGludGVncmFsX2M8IFQsQzIwID4sIGludGVncmFsX2M8IFQsQzIxID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyMiA+LCBpbnRlZ3JhbF9jPCBULEMyMyA+LCBpbnRlZ3JhbF9jPCBULEMyNCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjUgPiwgaW50ZWdyYWxfYzwgVCxDMjYgPiwgaW50ZWdyYWxfYzwgVCxDMjcgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI4ID4sIGludGVncmFsX2M8IFQsQzI5ID4sIGludGVncmFsX2M8IFQsQzMwID4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMzFfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMQotICAgID4KLXN0cnVjdCB2ZWN0b3IzMl9jCi0gICAgOiB2ZWN0b3IzMjwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE5ID4sIGludGVncmFsX2M8IFQsQzIwID4sIGludGVncmFsX2M8IFQsQzIxID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyMiA+LCBpbnRlZ3JhbF9jPCBULEMyMyA+LCBpbnRlZ3JhbF9jPCBULEMyNCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjUgPiwgaW50ZWdyYWxfYzwgVCxDMjYgPiwgaW50ZWdyYWxfYzwgVCxDMjcgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI4ID4sIGludGVncmFsX2M8IFQsQzI5ID4sIGludGVncmFsX2M8IFQsQzMwID4sIGludGVncmFsX2M8VAotICAgICAgICAsIEMzMT4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMzJfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMzNfYwotICAgIDogdmVjdG9yMzM8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4sIGludGVncmFsX2M8IFQsQzE4ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxOSA+LCBpbnRlZ3JhbF9jPCBULEMyMCA+LCBpbnRlZ3JhbF9jPCBULEMyMSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjIgPiwgaW50ZWdyYWxfYzwgVCxDMjMgPiwgaW50ZWdyYWxfYzwgVCxDMjQgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI1ID4sIGludGVncmFsX2M8IFQsQzI2ID4sIGludGVncmFsX2M8IFQsQzI3ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyOCA+LCBpbnRlZ3JhbF9jPCBULEMyOSA+LCBpbnRlZ3JhbF9jPCBULEMzMCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzEgPiwgaW50ZWdyYWxfYzwgVCxDMzIgPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IzM19jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMzRfYwotICAgIDogdmVjdG9yMzQ8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4sIGludGVncmFsX2M8IFQsQzE4ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxOSA+LCBpbnRlZ3JhbF9jPCBULEMyMCA+LCBpbnRlZ3JhbF9jPCBULEMyMSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjIgPiwgaW50ZWdyYWxfYzwgVCxDMjMgPiwgaW50ZWdyYWxfYzwgVCxDMjQgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI1ID4sIGludGVncmFsX2M8IFQsQzI2ID4sIGludGVncmFsX2M8IFQsQzI3ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyOCA+LCBpbnRlZ3JhbF9jPCBULEMyOSA+LCBpbnRlZ3JhbF9jPCBULEMzMCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzEgPiwgaW50ZWdyYWxfYzwgVCxDMzIgPiwgaW50ZWdyYWxfYzwgVCxDMzMgPiAKLSA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IzNF9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMsIFQgQzM0Ci0gICAgPgotc3RydWN0IHZlY3RvcjM1X2MKLSAgICA6IHZlY3RvcjM1PAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+LCBpbnRlZ3JhbF9jPCBULEMxOCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTkgPiwgaW50ZWdyYWxfYzwgVCxDMjAgPiwgaW50ZWdyYWxfYzwgVCxDMjEgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzIyID4sIGludGVncmFsX2M8IFQsQzIzID4sIGludGVncmFsX2M8IFQsQzI0ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyNSA+LCBpbnRlZ3JhbF9jPCBULEMyNiA+LCBpbnRlZ3JhbF9jPCBULEMyNyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjggPiwgaW50ZWdyYWxfYzwgVCxDMjkgPiwgaW50ZWdyYWxfYzwgVCxDMzAgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMxID4sIGludGVncmFsX2M8IFQsQzMyID4sIGludGVncmFsX2M8IFQsQzMzID4sIGludGVncmFsX2M8VAotICAgICAgICAsIEMzND4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMzVfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNCwgVCBDMzUKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMzZfYwotICAgIDogdmVjdG9yMzY8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4sIGludGVncmFsX2M8IFQsQzE4ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxOSA+LCBpbnRlZ3JhbF9jPCBULEMyMCA+LCBpbnRlZ3JhbF9jPCBULEMyMSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjIgPiwgaW50ZWdyYWxfYzwgVCxDMjMgPiwgaW50ZWdyYWxfYzwgVCxDMjQgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI1ID4sIGludGVncmFsX2M8IFQsQzI2ID4sIGludGVncmFsX2M8IFQsQzI3ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyOCA+LCBpbnRlZ3JhbF9jPCBULEMyOSA+LCBpbnRlZ3JhbF9jPCBULEMzMCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzEgPiwgaW50ZWdyYWxfYzwgVCxDMzIgPiwgaW50ZWdyYWxfYzwgVCxDMzMgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzM0ID4sIGludGVncmFsX2M8IFQsQzM1ID4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMzZfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNCwgVCBDMzUsIFQgQzM2Ci0gICAgPgotc3RydWN0IHZlY3RvcjM3X2MKLSAgICA6IHZlY3RvcjM3PAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzAgPiwgaW50ZWdyYWxfYzwgVCxDMSA+LCBpbnRlZ3JhbF9jPCBULEMyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzID4sIGludGVncmFsX2M8IFQsQzQgPiwgaW50ZWdyYWxfYzwgVCxDNSA+LCBpbnRlZ3JhbF9jPCBULEM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEM3ID4sIGludGVncmFsX2M8IFQsQzggPiwgaW50ZWdyYWxfYzwgVCxDOSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTAgPiwgaW50ZWdyYWxfYzwgVCxDMTEgPiwgaW50ZWdyYWxfYzwgVCxDMTIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEzID4sIGludGVncmFsX2M8IFQsQzE0ID4sIGludGVncmFsX2M8IFQsQzE1ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxNiA+LCBpbnRlZ3JhbF9jPCBULEMxNyA+LCBpbnRlZ3JhbF9jPCBULEMxOCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTkgPiwgaW50ZWdyYWxfYzwgVCxDMjAgPiwgaW50ZWdyYWxfYzwgVCxDMjEgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzIyID4sIGludGVncmFsX2M8IFQsQzIzID4sIGludGVncmFsX2M8IFQsQzI0ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyNSA+LCBpbnRlZ3JhbF9jPCBULEMyNiA+LCBpbnRlZ3JhbF9jPCBULEMyNyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjggPiwgaW50ZWdyYWxfYzwgVCxDMjkgPiwgaW50ZWdyYWxfYzwgVCxDMzAgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMxID4sIGludGVncmFsX2M8IFQsQzMyID4sIGludGVncmFsX2M8IFQsQzMzID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzNCA+LCBpbnRlZ3JhbF9jPCBULEMzNSA+LCBpbnRlZ3JhbF9jPCBULEMzNiA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjM3X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1LCBUIEMzNiwgVCBDMzcKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMzhfYwotICAgIDogdmVjdG9yMzg8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4sIGludGVncmFsX2M8IFQsQzE4ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxOSA+LCBpbnRlZ3JhbF9jPCBULEMyMCA+LCBpbnRlZ3JhbF9jPCBULEMyMSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjIgPiwgaW50ZWdyYWxfYzwgVCxDMjMgPiwgaW50ZWdyYWxfYzwgVCxDMjQgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI1ID4sIGludGVncmFsX2M8IFQsQzI2ID4sIGludGVncmFsX2M8IFQsQzI3ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyOCA+LCBpbnRlZ3JhbF9jPCBULEMyOSA+LCBpbnRlZ3JhbF9jPCBULEMzMCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzEgPiwgaW50ZWdyYWxfYzwgVCxDMzIgPiwgaW50ZWdyYWxfYzwgVCxDMzMgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzM0ID4sIGludGVncmFsX2M8IFQsQzM1ID4sIGludGVncmFsX2M8IFQsQzM2ID4sIGludGVncmFsX2M8VAotICAgICAgICAsIEMzNz4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yMzhfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNCwgVCBDMzUsIFQgQzM2LCBUIEMzNywgVCBDMzgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMzlfYwotICAgIDogdmVjdG9yMzk8Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+LCBpbnRlZ3JhbF9jPCBULEMxID4sIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzMgPiwgaW50ZWdyYWxfYzwgVCxDNCA+LCBpbnRlZ3JhbF9jPCBULEM1ID4sIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzcgPiwgaW50ZWdyYWxfYzwgVCxDOCA+LCBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMCA+LCBpbnRlZ3JhbF9jPCBULEMxMSA+LCBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTMgPiwgaW50ZWdyYWxfYzwgVCxDMTQgPiwgaW50ZWdyYWxfYzwgVCxDMTUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE2ID4sIGludGVncmFsX2M8IFQsQzE3ID4sIGludGVncmFsX2M8IFQsQzE4ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxOSA+LCBpbnRlZ3JhbF9jPCBULEMyMCA+LCBpbnRlZ3JhbF9jPCBULEMyMSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjIgPiwgaW50ZWdyYWxfYzwgVCxDMjMgPiwgaW50ZWdyYWxfYzwgVCxDMjQgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI1ID4sIGludGVncmFsX2M8IFQsQzI2ID4sIGludGVncmFsX2M8IFQsQzI3ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyOCA+LCBpbnRlZ3JhbF9jPCBULEMyOSA+LCBpbnRlZ3JhbF9jPCBULEMzMCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzEgPiwgaW50ZWdyYWxfYzwgVCxDMzIgPiwgaW50ZWdyYWxfYzwgVCxDMzMgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzM0ID4sIGludGVncmFsX2M8IFQsQzM1ID4sIGludGVncmFsX2M8IFQsQzM2ID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzNyA+LCBpbnRlZ3JhbF9jPCBULEMzOCA+IAotID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjM5X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1LCBUIEMzNiwgVCBDMzcsIFQgQzM4LCBUIEMzOQotICAgID4KLXN0cnVjdCB2ZWN0b3I0MF9jCi0gICAgOiB2ZWN0b3I0MDwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMyA+LCBpbnRlZ3JhbF9jPCBULEM0ID4sIGludGVncmFsX2M8IFQsQzUgPiwgaW50ZWdyYWxfYzwgVCxDNiA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNyA+LCBpbnRlZ3JhbF9jPCBULEM4ID4sIGludGVncmFsX2M8IFQsQzkgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzEwID4sIGludGVncmFsX2M8IFQsQzExID4sIGludGVncmFsX2M8IFQsQzEyID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMxMyA+LCBpbnRlZ3JhbF9jPCBULEMxNCA+LCBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMTYgPiwgaW50ZWdyYWxfYzwgVCxDMTcgPiwgaW50ZWdyYWxfYzwgVCxDMTggPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzE5ID4sIGludGVncmFsX2M8IFQsQzIwID4sIGludGVncmFsX2M8IFQsQzIxID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMyMiA+LCBpbnRlZ3JhbF9jPCBULEMyMyA+LCBpbnRlZ3JhbF9jPCBULEMyNCA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMjUgPiwgaW50ZWdyYWxfYzwgVCxDMjYgPiwgaW50ZWdyYWxfYzwgVCxDMjcgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzI4ID4sIGludGVncmFsX2M8IFQsQzI5ID4sIGludGVncmFsX2M8IFQsQzMwID4KLSAgICAgICAgLCBpbnRlZ3JhbF9jPCBULEMzMSA+LCBpbnRlZ3JhbF9jPCBULEMzMiA+LCBpbnRlZ3JhbF9jPCBULEMzMyA+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDMzQgPiwgaW50ZWdyYWxfYzwgVCxDMzUgPiwgaW50ZWdyYWxfYzwgVCxDMzYgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzM3ID4sIGludGVncmFsX2M8IFQsQzM4ID4sIGludGVncmFsX2M8IFQsQzM5ID4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yNDBfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi92ZWN0b3I1MC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvcGxhaW4vdmVjdG9yNTAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZmQyYzNhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi92ZWN0b3I1MC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMTA0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3I1MC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOQotICAgICwgdHlwZW5hbWUgVDQwCi0gICAgPgotc3RydWN0IHZlY3RvcjQxCi17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8NDE+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjQxIHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIHR5cGVkZWYgVDIxIGl0ZW0yMTsKLSAgICB0eXBlZGVmIFQyMiBpdGVtMjI7Ci0gICAgdHlwZWRlZiBUMjMgaXRlbTIzOwotICAgIHR5cGVkZWYgVDI0IGl0ZW0yNDsKLSAgICB0eXBlZGVmIFQyNSBpdGVtMjU7Ci0gICAgdHlwZWRlZiBUMjYgaXRlbTI2OwotICAgIHR5cGVkZWYgVDI3IGl0ZW0yNzsKLSAgICB0eXBlZGVmIFQyOCBpdGVtMjg7Ci0gICAgdHlwZWRlZiBUMjkgaXRlbTI5OwotICAgIHR5cGVkZWYgVDMwIGl0ZW0zMDsKLSAgICB0eXBlZGVmIFQzMSBpdGVtMzE7Ci0gICAgdHlwZWRlZiBUMzIgaXRlbTMyOwotICAgIHR5cGVkZWYgVDMzIGl0ZW0zMzsKLSAgICB0eXBlZGVmIFQzNCBpdGVtMzQ7Ci0gICAgdHlwZWRlZiBUMzUgaXRlbTM1OwotICAgIHR5cGVkZWYgVDM2IGl0ZW0zNjsKLSAgICB0eXBlZGVmIFQzNyBpdGVtMzc7Ci0gICAgdHlwZWRlZiBUMzggaXRlbTM4OwotICAgIHR5cGVkZWYgVDM5IGl0ZW0zOTsKLSAgICB0eXBlZGVmIFQ0MCBpdGVtNDA7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW00MTsKLSAgICB0eXBlZGVmIFQ0MCBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSw0MSA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0MD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDE8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDE+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQwPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQwPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0MTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0MDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBWID4KLXN0cnVjdCB2X2F0PCBWLDQxID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW00MSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOQotICAgICwgdHlwZW5hbWUgVDQwLCB0eXBlbmFtZSBUNDEKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNDIKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzw0Mj4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yNDIgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMjEgaXRlbTIxOwotICAgIHR5cGVkZWYgVDIyIGl0ZW0yMjsKLSAgICB0eXBlZGVmIFQyMyBpdGVtMjM7Ci0gICAgdHlwZWRlZiBUMjQgaXRlbTI0OwotICAgIHR5cGVkZWYgVDI1IGl0ZW0yNTsKLSAgICB0eXBlZGVmIFQyNiBpdGVtMjY7Ci0gICAgdHlwZWRlZiBUMjcgaXRlbTI3OwotICAgIHR5cGVkZWYgVDI4IGl0ZW0yODsKLSAgICB0eXBlZGVmIFQyOSBpdGVtMjk7Ci0gICAgdHlwZWRlZiBUMzAgaXRlbTMwOwotICAgIHR5cGVkZWYgVDMxIGl0ZW0zMTsKLSAgICB0eXBlZGVmIFQzMiBpdGVtMzI7Ci0gICAgdHlwZWRlZiBUMzMgaXRlbTMzOwotICAgIHR5cGVkZWYgVDM0IGl0ZW0zNDsKLSAgICB0eXBlZGVmIFQzNSBpdGVtMzU7Ci0gICAgdHlwZWRlZiBUMzYgaXRlbTM2OwotICAgIHR5cGVkZWYgVDM3IGl0ZW0zNzsKLSAgICB0eXBlZGVmIFQzOCBpdGVtMzg7Ci0gICAgdHlwZWRlZiBUMzkgaXRlbTM5OwotICAgIHR5cGVkZWYgVDQwIGl0ZW00MDsKLSAgICB0eXBlZGVmIFQ0MSBpdGVtNDE7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW00MjsKLSAgICB0eXBlZGVmIFQ0MSBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSw0MiA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0MT4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDI8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQxPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQxPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0MjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQyPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0MTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBWID4KLXN0cnVjdCB2X2F0PCBWLDQyID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW00MiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOQotICAgICwgdHlwZW5hbWUgVDQwLCB0eXBlbmFtZSBUNDEsIHR5cGVuYW1lIFQ0MgotICAgID4KLXN0cnVjdCB2ZWN0b3I0MwotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDQzPiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3I0MyB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQyMSBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjIgaXRlbTIyOwotICAgIHR5cGVkZWYgVDIzIGl0ZW0yMzsKLSAgICB0eXBlZGVmIFQyNCBpdGVtMjQ7Ci0gICAgdHlwZWRlZiBUMjUgaXRlbTI1OwotICAgIHR5cGVkZWYgVDI2IGl0ZW0yNjsKLSAgICB0eXBlZGVmIFQyNyBpdGVtMjc7Ci0gICAgdHlwZWRlZiBUMjggaXRlbTI4OwotICAgIHR5cGVkZWYgVDI5IGl0ZW0yOTsKLSAgICB0eXBlZGVmIFQzMCBpdGVtMzA7Ci0gICAgdHlwZWRlZiBUMzEgaXRlbTMxOwotICAgIHR5cGVkZWYgVDMyIGl0ZW0zMjsKLSAgICB0eXBlZGVmIFQzMyBpdGVtMzM7Ci0gICAgdHlwZWRlZiBUMzQgaXRlbTM0OwotICAgIHR5cGVkZWYgVDM1IGl0ZW0zNTsKLSAgICB0eXBlZGVmIFQzNiBpdGVtMzY7Ci0gICAgdHlwZWRlZiBUMzcgaXRlbTM3OwotICAgIHR5cGVkZWYgVDM4IGl0ZW0zODsKLSAgICB0eXBlZGVmIFQzOSBpdGVtMzk7Ci0gICAgdHlwZWRlZiBUNDAgaXRlbTQwOwotICAgIHR5cGVkZWYgVDQxIGl0ZW00MTsKLSAgICB0eXBlZGVmIFQ0MiBpdGVtNDI7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW00MzsKLSAgICB0eXBlZGVmIFQ0MiBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSw0MyA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Mj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDM8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0MjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDIKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDI+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQzPAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0MjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MQotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgViA+Ci1zdHJ1Y3Qgdl9hdDwgViw0MyA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNDMgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1LCB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzkKLSAgICAsIHR5cGVuYW1lIFQ0MCwgdHlwZW5hbWUgVDQxLCB0eXBlbmFtZSBUNDIsIHR5cGVuYW1lIFQ0MwotICAgID4KLXN0cnVjdCB2ZWN0b3I0NAotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDQ0PiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3I0NCB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQyMSBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjIgaXRlbTIyOwotICAgIHR5cGVkZWYgVDIzIGl0ZW0yMzsKLSAgICB0eXBlZGVmIFQyNCBpdGVtMjQ7Ci0gICAgdHlwZWRlZiBUMjUgaXRlbTI1OwotICAgIHR5cGVkZWYgVDI2IGl0ZW0yNjsKLSAgICB0eXBlZGVmIFQyNyBpdGVtMjc7Ci0gICAgdHlwZWRlZiBUMjggaXRlbTI4OwotICAgIHR5cGVkZWYgVDI5IGl0ZW0yOTsKLSAgICB0eXBlZGVmIFQzMCBpdGVtMzA7Ci0gICAgdHlwZWRlZiBUMzEgaXRlbTMxOwotICAgIHR5cGVkZWYgVDMyIGl0ZW0zMjsKLSAgICB0eXBlZGVmIFQzMyBpdGVtMzM7Ci0gICAgdHlwZWRlZiBUMzQgaXRlbTM0OwotICAgIHR5cGVkZWYgVDM1IGl0ZW0zNTsKLSAgICB0eXBlZGVmIFQzNiBpdGVtMzY7Ci0gICAgdHlwZWRlZiBUMzcgaXRlbTM3OwotICAgIHR5cGVkZWYgVDM4IGl0ZW0zODsKLSAgICB0eXBlZGVmIFQzOSBpdGVtMzk7Ci0gICAgdHlwZWRlZiBUNDAgaXRlbTQwOwotICAgIHR5cGVkZWYgVDQxIGl0ZW00MTsKLSAgICB0eXBlZGVmIFQ0MiBpdGVtNDI7Ci0gICAgdHlwZWRlZiBUNDMgaXRlbTQzOwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtNDQ7Ci0gICAgdHlwZWRlZiBUNDMgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsNDQgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDM+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQ0PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MgotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0ND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDM8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQzCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQzPiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0NDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MgotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0ND4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDM8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDIKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFYgPgotc3RydWN0IHZfYXQ8IFYsNDQgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTQ0IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICAsIHR5cGVuYW1lIFQzNSwgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5Ci0gICAgLCB0eXBlbmFtZSBUNDAsIHR5cGVuYW1lIFQ0MSwgdHlwZW5hbWUgVDQyLCB0eXBlbmFtZSBUNDMsIHR5cGVuYW1lIFQ0NAotICAgID4KLXN0cnVjdCB2ZWN0b3I0NQotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDQ1PiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3I0NSB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQyMSBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjIgaXRlbTIyOwotICAgIHR5cGVkZWYgVDIzIGl0ZW0yMzsKLSAgICB0eXBlZGVmIFQyNCBpdGVtMjQ7Ci0gICAgdHlwZWRlZiBUMjUgaXRlbTI1OwotICAgIHR5cGVkZWYgVDI2IGl0ZW0yNjsKLSAgICB0eXBlZGVmIFQyNyBpdGVtMjc7Ci0gICAgdHlwZWRlZiBUMjggaXRlbTI4OwotICAgIHR5cGVkZWYgVDI5IGl0ZW0yOTsKLSAgICB0eXBlZGVmIFQzMCBpdGVtMzA7Ci0gICAgdHlwZWRlZiBUMzEgaXRlbTMxOwotICAgIHR5cGVkZWYgVDMyIGl0ZW0zMjsKLSAgICB0eXBlZGVmIFQzMyBpdGVtMzM7Ci0gICAgdHlwZWRlZiBUMzQgaXRlbTM0OwotICAgIHR5cGVkZWYgVDM1IGl0ZW0zNTsKLSAgICB0eXBlZGVmIFQzNiBpdGVtMzY7Ci0gICAgdHlwZWRlZiBUMzcgaXRlbTM3OwotICAgIHR5cGVkZWYgVDM4IGl0ZW0zODsKLSAgICB0eXBlZGVmIFQzOSBpdGVtMzk7Ci0gICAgdHlwZWRlZiBUNDAgaXRlbTQwOwotICAgIHR5cGVkZWYgVDQxIGl0ZW00MTsKLSAgICB0eXBlZGVmIFQ0MiBpdGVtNDI7Ci0gICAgdHlwZWRlZiBUNDMgaXRlbTQzOwotICAgIHR5cGVkZWYgVDQ0IGl0ZW00NDsKLSAgICAKLQotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTQ1OwotICAgIHR5cGVkZWYgVDQ0IGJhY2s7Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsMCA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDQ1ID4gZW5kOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0NTwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQzCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ1PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0NDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ0Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ0PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0NTwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDMKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQ0PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgViA+Ci1zdHJ1Y3Qgdl9hdDwgViw0NSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNDUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1LCB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzkKLSAgICAsIHR5cGVuYW1lIFQ0MCwgdHlwZW5hbWUgVDQxLCB0eXBlbmFtZSBUNDIsIHR5cGVuYW1lIFQ0MywgdHlwZW5hbWUgVDQ0Ci0gICAgLCB0eXBlbmFtZSBUNDUKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNDYKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzw0Nj4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yNDYgdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMjEgaXRlbTIxOwotICAgIHR5cGVkZWYgVDIyIGl0ZW0yMjsKLSAgICB0eXBlZGVmIFQyMyBpdGVtMjM7Ci0gICAgdHlwZWRlZiBUMjQgaXRlbTI0OwotICAgIHR5cGVkZWYgVDI1IGl0ZW0yNTsKLSAgICB0eXBlZGVmIFQyNiBpdGVtMjY7Ci0gICAgdHlwZWRlZiBUMjcgaXRlbTI3OwotICAgIHR5cGVkZWYgVDI4IGl0ZW0yODsKLSAgICB0eXBlZGVmIFQyOSBpdGVtMjk7Ci0gICAgdHlwZWRlZiBUMzAgaXRlbTMwOwotICAgIHR5cGVkZWYgVDMxIGl0ZW0zMTsKLSAgICB0eXBlZGVmIFQzMiBpdGVtMzI7Ci0gICAgdHlwZWRlZiBUMzMgaXRlbTMzOwotICAgIHR5cGVkZWYgVDM0IGl0ZW0zNDsKLSAgICB0eXBlZGVmIFQzNSBpdGVtMzU7Ci0gICAgdHlwZWRlZiBUMzYgaXRlbTM2OwotICAgIHR5cGVkZWYgVDM3IGl0ZW0zNzsKLSAgICB0eXBlZGVmIFQzOCBpdGVtMzg7Ci0gICAgdHlwZWRlZiBUMzkgaXRlbTM5OwotICAgIHR5cGVkZWYgVDQwIGl0ZW00MDsKLSAgICB0eXBlZGVmIFQ0MSBpdGVtNDE7Ci0gICAgdHlwZWRlZiBUNDIgaXRlbTQyOwotICAgIHR5cGVkZWYgVDQzIGl0ZW00MzsKLSAgICB0eXBlZGVmIFQ0NCBpdGVtNDQ7Ci0gICAgdHlwZWRlZiBUNDUgaXRlbTQ1OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtNDY7Ci0gICAgdHlwZWRlZiBUNDUgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsNDYgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQ2PAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDY+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQ1PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDUKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDU+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQ2PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Nj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDU8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ0Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBWID4KLXN0cnVjdCB2X2F0PCBWLDQ2ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW00NiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOQotICAgICwgdHlwZW5hbWUgVDQwLCB0eXBlbmFtZSBUNDEsIHR5cGVuYW1lIFQ0MiwgdHlwZW5hbWUgVDQzLCB0eXBlbmFtZSBUNDQKLSAgICAsIHR5cGVuYW1lIFQ0NSwgdHlwZW5hbWUgVDQ2Ci0gICAgPgotc3RydWN0IHZlY3RvcjQ3Ci17Ci0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8NDc+IHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjQ3IHR5cGU7Ci0gICAgdHlwZWRlZiBUMCBpdGVtMDsKLSAgICB0eXBlZGVmIFQxIGl0ZW0xOwotICAgIHR5cGVkZWYgVDIgaXRlbTI7Ci0gICAgdHlwZWRlZiBUMyBpdGVtMzsKLSAgICB0eXBlZGVmIFQ0IGl0ZW00OwotICAgIHR5cGVkZWYgVDUgaXRlbTU7Ci0gICAgdHlwZWRlZiBUNiBpdGVtNjsKLSAgICB0eXBlZGVmIFQ3IGl0ZW03OwotICAgIHR5cGVkZWYgVDggaXRlbTg7Ci0gICAgdHlwZWRlZiBUOSBpdGVtOTsKLSAgICB0eXBlZGVmIFQxMCBpdGVtMTA7Ci0gICAgdHlwZWRlZiBUMTEgaXRlbTExOwotICAgIHR5cGVkZWYgVDEyIGl0ZW0xMjsKLSAgICB0eXBlZGVmIFQxMyBpdGVtMTM7Ci0gICAgdHlwZWRlZiBUMTQgaXRlbTE0OwotICAgIHR5cGVkZWYgVDE1IGl0ZW0xNTsKLSAgICB0eXBlZGVmIFQxNiBpdGVtMTY7Ci0gICAgdHlwZWRlZiBUMTcgaXRlbTE3OwotICAgIHR5cGVkZWYgVDE4IGl0ZW0xODsKLSAgICB0eXBlZGVmIFQxOSBpdGVtMTk7Ci0gICAgdHlwZWRlZiBUMjAgaXRlbTIwOwotICAgIHR5cGVkZWYgVDIxIGl0ZW0yMTsKLSAgICB0eXBlZGVmIFQyMiBpdGVtMjI7Ci0gICAgdHlwZWRlZiBUMjMgaXRlbTIzOwotICAgIHR5cGVkZWYgVDI0IGl0ZW0yNDsKLSAgICB0eXBlZGVmIFQyNSBpdGVtMjU7Ci0gICAgdHlwZWRlZiBUMjYgaXRlbTI2OwotICAgIHR5cGVkZWYgVDI3IGl0ZW0yNzsKLSAgICB0eXBlZGVmIFQyOCBpdGVtMjg7Ci0gICAgdHlwZWRlZiBUMjkgaXRlbTI5OwotICAgIHR5cGVkZWYgVDMwIGl0ZW0zMDsKLSAgICB0eXBlZGVmIFQzMSBpdGVtMzE7Ci0gICAgdHlwZWRlZiBUMzIgaXRlbTMyOwotICAgIHR5cGVkZWYgVDMzIGl0ZW0zMzsKLSAgICB0eXBlZGVmIFQzNCBpdGVtMzQ7Ci0gICAgdHlwZWRlZiBUMzUgaXRlbTM1OwotICAgIHR5cGVkZWYgVDM2IGl0ZW0zNjsKLSAgICB0eXBlZGVmIFQzNyBpdGVtMzc7Ci0gICAgdHlwZWRlZiBUMzggaXRlbTM4OwotICAgIHR5cGVkZWYgVDM5IGl0ZW0zOTsKLSAgICB0eXBlZGVmIFQ0MCBpdGVtNDA7Ci0gICAgdHlwZWRlZiBUNDEgaXRlbTQxOwotICAgIHR5cGVkZWYgVDQyIGl0ZW00MjsKLSAgICB0eXBlZGVmIFQ0MyBpdGVtNDM7Ci0gICAgdHlwZWRlZiBUNDQgaXRlbTQ0OwotICAgIHR5cGVkZWYgVDQ1IGl0ZW00NTsKLSAgICB0eXBlZGVmIFQ0NiBpdGVtNDY7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW00NzsKLSAgICB0eXBlZGVmIFQ0NiBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSw0NyA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Nj4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDc8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDUKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDc+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQ2PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ2Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ2PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0NzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ1Ci0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0NjwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ1Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBWID4KLXN0cnVjdCB2X2F0PCBWLDQ3ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW00NyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOQotICAgICwgdHlwZW5hbWUgVDQwLCB0eXBlbmFtZSBUNDEsIHR5cGVuYW1lIFQ0MiwgdHlwZW5hbWUgVDQzLCB0eXBlbmFtZSBUNDQKLSAgICAsIHR5cGVuYW1lIFQ0NSwgdHlwZW5hbWUgVDQ2LCB0eXBlbmFtZSBUNDcKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNDgKLXsKLSAgICB0eXBlZGVmIGF1eDo6dmVjdG9yX3RhZzw0OD4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yNDggdHlwZTsKLSAgICB0eXBlZGVmIFQwIGl0ZW0wOwotICAgIHR5cGVkZWYgVDEgaXRlbTE7Ci0gICAgdHlwZWRlZiBUMiBpdGVtMjsKLSAgICB0eXBlZGVmIFQzIGl0ZW0zOwotICAgIHR5cGVkZWYgVDQgaXRlbTQ7Ci0gICAgdHlwZWRlZiBUNSBpdGVtNTsKLSAgICB0eXBlZGVmIFQ2IGl0ZW02OwotICAgIHR5cGVkZWYgVDcgaXRlbTc7Ci0gICAgdHlwZWRlZiBUOCBpdGVtODsKLSAgICB0eXBlZGVmIFQ5IGl0ZW05OwotICAgIHR5cGVkZWYgVDEwIGl0ZW0xMDsKLSAgICB0eXBlZGVmIFQxMSBpdGVtMTE7Ci0gICAgdHlwZWRlZiBUMTIgaXRlbTEyOwotICAgIHR5cGVkZWYgVDEzIGl0ZW0xMzsKLSAgICB0eXBlZGVmIFQxNCBpdGVtMTQ7Ci0gICAgdHlwZWRlZiBUMTUgaXRlbTE1OwotICAgIHR5cGVkZWYgVDE2IGl0ZW0xNjsKLSAgICB0eXBlZGVmIFQxNyBpdGVtMTc7Ci0gICAgdHlwZWRlZiBUMTggaXRlbTE4OwotICAgIHR5cGVkZWYgVDE5IGl0ZW0xOTsKLSAgICB0eXBlZGVmIFQyMCBpdGVtMjA7Ci0gICAgdHlwZWRlZiBUMjEgaXRlbTIxOwotICAgIHR5cGVkZWYgVDIyIGl0ZW0yMjsKLSAgICB0eXBlZGVmIFQyMyBpdGVtMjM7Ci0gICAgdHlwZWRlZiBUMjQgaXRlbTI0OwotICAgIHR5cGVkZWYgVDI1IGl0ZW0yNTsKLSAgICB0eXBlZGVmIFQyNiBpdGVtMjY7Ci0gICAgdHlwZWRlZiBUMjcgaXRlbTI3OwotICAgIHR5cGVkZWYgVDI4IGl0ZW0yODsKLSAgICB0eXBlZGVmIFQyOSBpdGVtMjk7Ci0gICAgdHlwZWRlZiBUMzAgaXRlbTMwOwotICAgIHR5cGVkZWYgVDMxIGl0ZW0zMTsKLSAgICB0eXBlZGVmIFQzMiBpdGVtMzI7Ci0gICAgdHlwZWRlZiBUMzMgaXRlbTMzOwotICAgIHR5cGVkZWYgVDM0IGl0ZW0zNDsKLSAgICB0eXBlZGVmIFQzNSBpdGVtMzU7Ci0gICAgdHlwZWRlZiBUMzYgaXRlbTM2OwotICAgIHR5cGVkZWYgVDM3IGl0ZW0zNzsKLSAgICB0eXBlZGVmIFQzOCBpdGVtMzg7Ci0gICAgdHlwZWRlZiBUMzkgaXRlbTM5OwotICAgIHR5cGVkZWYgVDQwIGl0ZW00MDsKLSAgICB0eXBlZGVmIFQ0MSBpdGVtNDE7Ci0gICAgdHlwZWRlZiBUNDIgaXRlbTQyOwotICAgIHR5cGVkZWYgVDQzIGl0ZW00MzsKLSAgICB0eXBlZGVmIFQ0NCBpdGVtNDQ7Ci0gICAgdHlwZWRlZiBUNDUgaXRlbTQ1OwotICAgIHR5cGVkZWYgVDQ2IGl0ZW00NjsKLSAgICB0eXBlZGVmIFQ0NyBpdGVtNDc7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW00ODsKLSAgICB0eXBlZGVmIFQ0NyBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSw0OCA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0Nz4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDg8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDYKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQ3PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ3Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ3PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0ODwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ2Ci0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ4PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0NzwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ2Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBWID4KLXN0cnVjdCB2X2F0PCBWLDQ4ID4KLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW00OCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOQotICAgICwgdHlwZW5hbWUgVDQwLCB0eXBlbmFtZSBUNDEsIHR5cGVuYW1lIFQ0MiwgdHlwZW5hbWUgVDQzLCB0eXBlbmFtZSBUNDQKLSAgICAsIHR5cGVuYW1lIFQ0NSwgdHlwZW5hbWUgVDQ2LCB0eXBlbmFtZSBUNDcsIHR5cGVuYW1lIFQ0OAotICAgID4KLXN0cnVjdCB2ZWN0b3I0OQotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDQ5PiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3I0OSB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQyMSBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjIgaXRlbTIyOwotICAgIHR5cGVkZWYgVDIzIGl0ZW0yMzsKLSAgICB0eXBlZGVmIFQyNCBpdGVtMjQ7Ci0gICAgdHlwZWRlZiBUMjUgaXRlbTI1OwotICAgIHR5cGVkZWYgVDI2IGl0ZW0yNjsKLSAgICB0eXBlZGVmIFQyNyBpdGVtMjc7Ci0gICAgdHlwZWRlZiBUMjggaXRlbTI4OwotICAgIHR5cGVkZWYgVDI5IGl0ZW0yOTsKLSAgICB0eXBlZGVmIFQzMCBpdGVtMzA7Ci0gICAgdHlwZWRlZiBUMzEgaXRlbTMxOwotICAgIHR5cGVkZWYgVDMyIGl0ZW0zMjsKLSAgICB0eXBlZGVmIFQzMyBpdGVtMzM7Ci0gICAgdHlwZWRlZiBUMzQgaXRlbTM0OwotICAgIHR5cGVkZWYgVDM1IGl0ZW0zNTsKLSAgICB0eXBlZGVmIFQzNiBpdGVtMzY7Ci0gICAgdHlwZWRlZiBUMzcgaXRlbTM3OwotICAgIHR5cGVkZWYgVDM4IGl0ZW0zODsKLSAgICB0eXBlZGVmIFQzOSBpdGVtMzk7Ci0gICAgdHlwZWRlZiBUNDAgaXRlbTQwOwotICAgIHR5cGVkZWYgVDQxIGl0ZW00MTsKLSAgICB0eXBlZGVmIFQ0MiBpdGVtNDI7Ci0gICAgdHlwZWRlZiBUNDMgaXRlbTQzOwotICAgIHR5cGVkZWYgVDQ0IGl0ZW00NDsKLSAgICB0eXBlZGVmIFQ0NSBpdGVtNDU7Ci0gICAgdHlwZWRlZiBUNDYgaXRlbTQ2OwotICAgIHR5cGVkZWYgVDQ3IGl0ZW00NzsKLSAgICB0eXBlZGVmIFQ0OCBpdGVtNDg7Ci0gICAgCi0KLSAgICB0eXBlZGVmIHZvaWRfIGl0ZW00OTsKLSAgICB0eXBlZGVmIFQ0OCBiYWNrOwotICAgIHR5cGVkZWYgdl9pdGVyPCB0eXBlLDAgPiBiZWdpbjsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSw0OSA+IGVuZDsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw0OD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDk8Ci0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgICAgLAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ3Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwb3BfZnJvbnRfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0ODwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDgKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDg+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjQ5PAotICAgICAgICAgICAgICB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0wLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW03Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTExCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ3Ci0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgVAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I0ODwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NwotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgViA+Ci1zdHJ1Y3Qgdl9hdDwgViw0OSA+Ci17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNDkgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1LCB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzkKLSAgICAsIHR5cGVuYW1lIFQ0MCwgdHlwZW5hbWUgVDQxLCB0eXBlbmFtZSBUNDIsIHR5cGVuYW1lIFQ0MywgdHlwZW5hbWUgVDQ0Ci0gICAgLCB0eXBlbmFtZSBUNDUsIHR5cGVuYW1lIFQ0NiwgdHlwZW5hbWUgVDQ3LCB0eXBlbmFtZSBUNDgsIHR5cGVuYW1lIFQ0OQotICAgID4KLXN0cnVjdCB2ZWN0b3I1MAotewotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnPDUwPiB0YWc7Ci0gICAgdHlwZWRlZiB2ZWN0b3I1MCB0eXBlOwotICAgIHR5cGVkZWYgVDAgaXRlbTA7Ci0gICAgdHlwZWRlZiBUMSBpdGVtMTsKLSAgICB0eXBlZGVmIFQyIGl0ZW0yOwotICAgIHR5cGVkZWYgVDMgaXRlbTM7Ci0gICAgdHlwZWRlZiBUNCBpdGVtNDsKLSAgICB0eXBlZGVmIFQ1IGl0ZW01OwotICAgIHR5cGVkZWYgVDYgaXRlbTY7Ci0gICAgdHlwZWRlZiBUNyBpdGVtNzsKLSAgICB0eXBlZGVmIFQ4IGl0ZW04OwotICAgIHR5cGVkZWYgVDkgaXRlbTk7Ci0gICAgdHlwZWRlZiBUMTAgaXRlbTEwOwotICAgIHR5cGVkZWYgVDExIGl0ZW0xMTsKLSAgICB0eXBlZGVmIFQxMiBpdGVtMTI7Ci0gICAgdHlwZWRlZiBUMTMgaXRlbTEzOwotICAgIHR5cGVkZWYgVDE0IGl0ZW0xNDsKLSAgICB0eXBlZGVmIFQxNSBpdGVtMTU7Ci0gICAgdHlwZWRlZiBUMTYgaXRlbTE2OwotICAgIHR5cGVkZWYgVDE3IGl0ZW0xNzsKLSAgICB0eXBlZGVmIFQxOCBpdGVtMTg7Ci0gICAgdHlwZWRlZiBUMTkgaXRlbTE5OwotICAgIHR5cGVkZWYgVDIwIGl0ZW0yMDsKLSAgICB0eXBlZGVmIFQyMSBpdGVtMjE7Ci0gICAgdHlwZWRlZiBUMjIgaXRlbTIyOwotICAgIHR5cGVkZWYgVDIzIGl0ZW0yMzsKLSAgICB0eXBlZGVmIFQyNCBpdGVtMjQ7Ci0gICAgdHlwZWRlZiBUMjUgaXRlbTI1OwotICAgIHR5cGVkZWYgVDI2IGl0ZW0yNjsKLSAgICB0eXBlZGVmIFQyNyBpdGVtMjc7Ci0gICAgdHlwZWRlZiBUMjggaXRlbTI4OwotICAgIHR5cGVkZWYgVDI5IGl0ZW0yOTsKLSAgICB0eXBlZGVmIFQzMCBpdGVtMzA7Ci0gICAgdHlwZWRlZiBUMzEgaXRlbTMxOwotICAgIHR5cGVkZWYgVDMyIGl0ZW0zMjsKLSAgICB0eXBlZGVmIFQzMyBpdGVtMzM7Ci0gICAgdHlwZWRlZiBUMzQgaXRlbTM0OwotICAgIHR5cGVkZWYgVDM1IGl0ZW0zNTsKLSAgICB0eXBlZGVmIFQzNiBpdGVtMzY7Ci0gICAgdHlwZWRlZiBUMzcgaXRlbTM3OwotICAgIHR5cGVkZWYgVDM4IGl0ZW0zODsKLSAgICB0eXBlZGVmIFQzOSBpdGVtMzk7Ci0gICAgdHlwZWRlZiBUNDAgaXRlbTQwOwotICAgIHR5cGVkZWYgVDQxIGl0ZW00MTsKLSAgICB0eXBlZGVmIFQ0MiBpdGVtNDI7Ci0gICAgdHlwZWRlZiBUNDMgaXRlbTQzOwotICAgIHR5cGVkZWYgVDQ0IGl0ZW00NDsKLSAgICB0eXBlZGVmIFQ0NSBpdGVtNDU7Ci0gICAgdHlwZWRlZiBUNDYgaXRlbTQ2OwotICAgIHR5cGVkZWYgVDQ3IGl0ZW00NzsKLSAgICB0eXBlZGVmIFQ0OCBpdGVtNDg7Ci0gICAgdHlwZWRlZiBUNDkgaXRlbTQ5OwotICAgIAotCi0gICAgdHlwZWRlZiB2b2lkXyBpdGVtNTA7Ci0gICAgdHlwZWRlZiBUNDkgYmFjazsKLSAgICB0eXBlZGVmIHZfaXRlcjwgdHlwZSwwID4gYmVnaW47Ci0gICAgdHlwZWRlZiB2X2l0ZXI8IHR5cGUsNTAgPiBlbmQ7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWc8NDk+ID4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVmVjdG9yLCB0eXBlbmFtZSBUID4gc3RydWN0IGFwcGx5Ci0gICAgewotICAgICAgICB0eXBlZGVmIHZlY3RvcjUwPAotICAgICAgICAgICAgICBUCi0gICAgICAgICAgICAgICwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00OAotICAgICAgICAgICAgPiB0eXBlOwotICAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcG9wX2Zyb250X2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw1MD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDk8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW02Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjIKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI0Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjgKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjksIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMwCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMgotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMywgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzQKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM2Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDAKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQyCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQzLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NAotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NSwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDYKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDcsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ4Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ5Ci0gICAgICAgICAgICA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwdXNoX2JhY2tfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPDQ5PiA+Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFZlY3RvciwgdHlwZW5hbWUgVCA+IHN0cnVjdCBhcHBseQotICAgIHsKLSAgICAgICAgdHlwZWRlZiB2ZWN0b3I1MDwKLSAgICAgICAgICAgICAgdHlwZW5hbWUgVmVjdG9yOjppdGVtMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW04LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW05Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00OAotICAgICAgICAgICAgICAsCi0gICAgICAgICAgICAgIFQKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBvcF9iYWNrX2ltcGw8IGF1eDo6dmVjdG9yX3RhZzw1MD4gPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdmVjdG9yNDk8Ci0gICAgICAgICAgICAgIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW01Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xMCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTEzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0xNiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMTgsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTE5Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTIwLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yMiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjMKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjQsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI1Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTI2LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yNwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0yOCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMjkKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMxCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTMyLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zMwotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zNCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzUKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtMzYsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM3Ci0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTM4LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW0zOQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00MCwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDEKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDIsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQzCi0gICAgICAgICAgICAsIHR5cGVuYW1lIFZlY3Rvcjo6aXRlbTQ0LCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NQotICAgICAgICAgICAgLCB0eXBlbmFtZSBWZWN0b3I6Oml0ZW00NiwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDcKLSAgICAgICAgICAgICwgdHlwZW5hbWUgVmVjdG9yOjppdGVtNDgKLSAgICAgICAgICAgID4gdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFYgPgotc3RydWN0IHZfYXQ8IFYsNTAgPgotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTUwIHR5cGU7Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3ZlY3RvcjUwX2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3BsYWluL3ZlY3RvcjUwX2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZTVhNjM5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC9wbGFpbi92ZWN0b3I1MF9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyNSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yNTBfYy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNCwgVCBDMzUsIFQgQzM2LCBUIEMzNywgVCBDMzgsIFQgQzM5LCBUIEM0MAotICAgID4KLXN0cnVjdCB2ZWN0b3I0MV9jCi0gICAgOiB2ZWN0b3I0MTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMwID4sIGludGVncmFsX2M8IFQsQzEgPiwgaW50ZWdyYWxfYzwgVCxDMiA+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+Ci0gICAgICAgICwgaW50ZWdyYWxfYzwgVCxDNDMgPiwgaW50ZWdyYWxfYzwgVCxDNDQgPiwgaW50ZWdyYWxfYzwgVCxDNDUgPgotICAgICAgICAsIGludGVncmFsX2M8IFQsQzQ2ID4sIGludGVncmFsX2M8IFQsQzQ3ID4sIGludGVncmFsX2M8IFQsQzQ4ID4sIGludGVncmFsX2M8VAotICAgICAgICAsIEM0OT4gCi0gPgotewotICAgIHR5cGVkZWYgdmVjdG9yNTBfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC90eXBlb2ZfYmFzZWQvdmVjdG9yMTAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3R5cGVvZl9iYXNlZC92ZWN0b3IxMC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE0ZjRhMjEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3R5cGVvZl9iYXNlZC92ZWN0b3IxMC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLS8vIFByZXByb2Nlc3NlZCB2ZXJzaW9uIG9mICJuZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjEwLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwCi0gICAgPgotc3RydWN0IHZlY3RvcjEKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBUMAotICAgICAgICAsIHZlY3RvcjA8ICA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjEgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxCi0gICAgPgotc3RydWN0IHZlY3RvcjIKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBUMQotICAgICAgICAsIHZlY3RvcjE8VDA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjIgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMgotICAgID4KLXN0cnVjdCB2ZWN0b3IzCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgVDIKLSAgICAgICAgLCB2ZWN0b3IyPCBUMCxUMSA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjMgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNAotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQzCi0gICAgICAgICwgdmVjdG9yMzwgVDAsVDEsVDIgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I0IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgID4KLXN0cnVjdCB2ZWN0b3I1Ci0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgVDQKLSAgICAgICAgLCB2ZWN0b3I0PCBUMCxUMSxUMixUMyA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNQotICAgID4KLXN0cnVjdCB2ZWN0b3I2Ci0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgVDUKLSAgICAgICAgLCB2ZWN0b3I1PCBUMCxUMSxUMixUMyxUNCA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjYgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNwotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQ2Ci0gICAgICAgICwgdmVjdG9yNjwgVDAsVDEsVDIsVDMsVDQsVDUgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I3IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNwotICAgID4KLXN0cnVjdCB2ZWN0b3I4Ci0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgVDcKLSAgICAgICAgLCB2ZWN0b3I3PCBUMCxUMSxUMixUMyxUNCxUNSxUNiA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjggdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOAotICAgID4KLXN0cnVjdCB2ZWN0b3I5Ci0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgVDgKLSAgICAgICAgLCB2ZWN0b3I4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjkgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMTAKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBUOQotICAgICAgICAsIHZlY3Rvcjk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMTAgdHlwZTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvdHlwZW9mX2Jhc2VkL3ZlY3RvcjEwX2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3R5cGVvZl9iYXNlZC92ZWN0b3IxMF9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTBhMTgyMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvdHlwZW9mX2Jhc2VkL3ZlY3RvcjEwX2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTU0ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IxMF9jLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMV9jCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMCA+Ci0gICAgICAgICwgdmVjdG9yMF9jPFQ+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjFfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxCi0gICAgPgotc3RydWN0IHZlY3RvcjJfYwotICAgIDogdl9pdGVtPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzEgPgotICAgICAgICAsIHZlY3RvcjFfYzwgVCxDMCA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjJfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyCi0gICAgPgotc3RydWN0IHZlY3RvcjNfYwotICAgIDogdl9pdGVtPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzIgPgotICAgICAgICAsIHZlY3RvcjJfYzwgVCxDMCxDMSA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjNfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzCi0gICAgPgotc3RydWN0IHZlY3RvcjRfYwotICAgIDogdl9pdGVtPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzMgPgotICAgICAgICAsIHZlY3RvcjNfYzwgVCxDMCxDMSxDMiA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjRfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0Ci0gICAgPgotc3RydWN0IHZlY3RvcjVfYwotICAgIDogdl9pdGVtPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzQgPgotICAgICAgICAsIHZlY3RvcjRfYzwgVCxDMCxDMSxDMixDMyA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjVfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1Ci0gICAgPgotc3RydWN0IHZlY3RvcjZfYwotICAgIDogdl9pdGVtPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzUgPgotICAgICAgICAsIHZlY3RvcjVfYzwgVCxDMCxDMSxDMixDMyxDNCA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjZfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2Ci0gICAgPgotc3RydWN0IHZlY3RvcjdfYwotICAgIDogdl9pdGVtPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzYgPgotICAgICAgICAsIHZlY3RvcjZfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjdfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3Ci0gICAgPgotc3RydWN0IHZlY3RvcjhfYwotICAgIDogdl9pdGVtPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzcgPgotICAgICAgICAsIHZlY3RvcjdfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNiA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjhfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4Ci0gICAgPgotc3RydWN0IHZlY3RvcjlfYwotICAgIDogdl9pdGVtPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzggPgotICAgICAgICAsIHZlY3RvcjhfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjlfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5Ci0gICAgPgotc3RydWN0IHZlY3RvcjEwX2MKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEM5ID4KLSAgICAgICAgLCB2ZWN0b3I5X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzggPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IxMF9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3R5cGVvZl9iYXNlZC92ZWN0b3IyMC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvdHlwZW9mX2Jhc2VkL3ZlY3RvcjIwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGEzNGYzMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvdHlwZW9mX2Jhc2VkL3ZlY3RvcjIwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1OSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yMjAuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMAotICAgID4KLXN0cnVjdCB2ZWN0b3IxMQotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQxMAotICAgICAgICAsIHZlY3RvcjEwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjExIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMQotICAgID4KLXN0cnVjdCB2ZWN0b3IxMgotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQxMQotICAgICAgICAsIHZlY3RvcjExPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IxMiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMgotICAgID4KLXN0cnVjdCB2ZWN0b3IxMwotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQxMgotICAgICAgICAsIHZlY3RvcjEyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMTMgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMwotICAgID4KLXN0cnVjdCB2ZWN0b3IxNAotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQxMwotICAgICAgICAsIHZlY3RvcjEzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMiA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjE0IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgID4KLXN0cnVjdCB2ZWN0b3IxNQotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQxNAotICAgICAgICAsIHZlY3RvcjE0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IxNSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNQotICAgID4KLXN0cnVjdCB2ZWN0b3IxNgotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQxNQotICAgICAgICAsIHZlY3RvcjE1PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMTYgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNgotICAgID4KLXN0cnVjdCB2ZWN0b3IxNwotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQxNgotICAgICAgICAsIHZlY3RvcjE2PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjE3IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNwotICAgID4KLXN0cnVjdCB2ZWN0b3IxOAotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQxNwotICAgICAgICAsIHZlY3RvcjE3PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IxOCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOAotICAgID4KLXN0cnVjdCB2ZWN0b3IxOQotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQxOAotICAgICAgICAsIHZlY3RvcjE4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMTkgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgID4KLXN0cnVjdCB2ZWN0b3IyMAotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQxOQotICAgICAgICAsIHZlY3RvcjE5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjIwIHR5cGU7Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3R5cGVvZl9iYXNlZC92ZWN0b3IyMF9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC90eXBlb2ZfYmFzZWQvdmVjdG9yMjBfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU1MWU3OGUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3R5cGVvZl9iYXNlZC92ZWN0b3IyMF9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE2MyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yMjBfYy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgID4KLXN0cnVjdCB2ZWN0b3IxMV9jCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMTAgPgotICAgICAgICAsIHZlY3RvcjEwX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzkgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IxMV9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMQotICAgID4KLXN0cnVjdCB2ZWN0b3IxMl9jCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMTEgPgotICAgICAgICAsIHZlY3RvcjExX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMTJfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyCi0gICAgPgotc3RydWN0IHZlY3RvcjEzX2MKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMxMiA+Ci0gICAgICAgICwgdmVjdG9yMTJfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMTNfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMwotICAgID4KLXN0cnVjdCB2ZWN0b3IxNF9jCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMTMgPgotICAgICAgICAsIHZlY3RvcjEzX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IxNF9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNAotICAgID4KLXN0cnVjdCB2ZWN0b3IxNV9jCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMTQgPgotICAgICAgICAsIHZlY3RvcjE0X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMTVfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1Ci0gICAgPgotc3RydWN0IHZlY3RvcjE2X2MKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMxNSA+Ci0gICAgICAgICwgdmVjdG9yMTVfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMTZfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNgotICAgID4KLXN0cnVjdCB2ZWN0b3IxN19jCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMTYgPgotICAgICAgICAsIHZlY3RvcjE2X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IxN19jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNwotICAgID4KLXN0cnVjdCB2ZWN0b3IxOF9jCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMTcgPgotICAgICAgICAsIHZlY3RvcjE3X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMThfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4Ci0gICAgPgotc3RydWN0IHZlY3RvcjE5X2MKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMxOCA+Ci0gICAgICAgICwgdmVjdG9yMThfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMTlfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOQotICAgID4KLXN0cnVjdCB2ZWN0b3IyMF9jCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMTkgPgotICAgICAgICAsIHZlY3RvcjE5X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTggPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IyMF9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3R5cGVvZl9iYXNlZC92ZWN0b3IzMC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvdHlwZW9mX2Jhc2VkL3ZlY3RvcjMwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTc2ZDVkZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvdHlwZW9mX2Jhc2VkL3ZlY3RvcjMwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE3OSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yMzAuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwCi0gICAgPgotc3RydWN0IHZlY3RvcjIxCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgVDIwCi0gICAgICAgICwgdmVjdG9yMjA8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjIxIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxCi0gICAgPgotc3RydWN0IHZlY3RvcjIyCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgVDIxCi0gICAgICAgICwgdmVjdG9yMjE8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IyMiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyCi0gICAgPgotc3RydWN0IHZlY3RvcjIzCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgVDIyCi0gICAgICAgICwgdmVjdG9yMjI8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMjMgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzCi0gICAgPgotc3RydWN0IHZlY3RvcjI0Ci0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgVDIzCi0gICAgICAgICwgdmVjdG9yMjM8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxLFQyMiA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjI0IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgPgotc3RydWN0IHZlY3RvcjI1Ci0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgVDI0Ci0gICAgICAgICwgdmVjdG9yMjQ8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxLFQyMixUMjMgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IyNSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1Ci0gICAgPgotc3RydWN0IHZlY3RvcjI2Ci0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgVDI1Ci0gICAgICAgICwgdmVjdG9yMjU8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxLFQyMixUMjMsVDI0ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMjYgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2Ci0gICAgPgotc3RydWN0IHZlY3RvcjI3Ci0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgVDI2Ci0gICAgICAgICwgdmVjdG9yMjY8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxLFQyMixUMjMsVDI0LFQyNSA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjI3IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3Ci0gICAgPgotc3RydWN0IHZlY3RvcjI4Ci0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgVDI3Ci0gICAgICAgICwgdmVjdG9yMjc8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxLFQyMixUMjMsVDI0LFQyNSxUMjYgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IyOCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4Ci0gICAgPgotc3RydWN0IHZlY3RvcjI5Ci0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgVDI4Ci0gICAgICAgICwgdmVjdG9yMjg8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxLFQyMixUMjMsVDI0LFQyNSxUMjYsVDI3ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMjkgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgPgotc3RydWN0IHZlY3RvcjMwCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgVDI5Ci0gICAgICAgICwgdmVjdG9yMjk8IFQwLFQxLFQyLFQzLFQ0LFQ1LFQ2LFQ3LFQ4LFQ5LFQxMCxUMTEsVDEyLFQxMyxUMTQsVDE1LFQxNixUMTcsVDE4LFQxOSxUMjAsVDIxLFQyMixUMjMsVDI0LFQyNSxUMjYsVDI3LFQyOCA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjMwIHR5cGU7Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3R5cGVvZl9iYXNlZC92ZWN0b3IzMF9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC90eXBlb2ZfYmFzZWQvdmVjdG9yMzBfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI3ZmEyMzUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3R5cGVvZl9iYXNlZC92ZWN0b3IzMF9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE3MyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yMzBfYy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMjFfYwotICAgIDogdl9pdGVtPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzIwID4KLSAgICAgICAgLCB2ZWN0b3IyMF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjIxX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMQotICAgID4KLXN0cnVjdCB2ZWN0b3IyMl9jCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMjEgPgotICAgICAgICAsIHZlY3RvcjIxX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5LEMyMCA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjIyX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMjNfYwotICAgIDogdl9pdGVtPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzIyID4KLSAgICAgICAgLCB2ZWN0b3IyMl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAsQzIxID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMjNfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMjRfYwotICAgIDogdl9pdGVtPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzIzID4KLSAgICAgICAgLCB2ZWN0b3IyM19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAsQzIxLEMyMiA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjI0X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNAotICAgID4KLXN0cnVjdCB2ZWN0b3IyNV9jCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMjQgPgotICAgICAgICAsIHZlY3RvcjI0X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5LEMyMCxDMjEsQzIyLEMyMyA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjI1X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMjZfYwotICAgIDogdl9pdGVtPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzI1ID4KLSAgICAgICAgLCB2ZWN0b3IyNV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAsQzIxLEMyMixDMjMsQzI0ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMjZfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMjdfYwotICAgIDogdl9pdGVtPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzI2ID4KLSAgICAgICAgLCB2ZWN0b3IyNl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAsQzIxLEMyMixDMjMsQzI0LEMyNSA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjI3X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNwotICAgID4KLXN0cnVjdCB2ZWN0b3IyOF9jCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDMjcgPgotICAgICAgICAsIHZlY3RvcjI3X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5LEMyMCxDMjEsQzIyLEMyMyxDMjQsQzI1LEMyNiA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjI4X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMjlfYwotICAgIDogdl9pdGVtPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzI4ID4KLSAgICAgICAgLCB2ZWN0b3IyOF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAsQzIxLEMyMixDMjMsQzI0LEMyNSxDMjYsQzI3ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMjlfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMzBfYwotICAgIDogdl9pdGVtPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzI5ID4KLSAgICAgICAgLCB2ZWN0b3IyOV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAsQzIxLEMyMixDMjMsQzI0LEMyNSxDMjYsQzI3LEMyOCA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjMwX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvdHlwZW9mX2Jhc2VkL3ZlY3RvcjQwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC90eXBlb2ZfYmFzZWQvdmVjdG9yNDAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YTE0MjM1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC90eXBlb2ZfYmFzZWQvdmVjdG9yNDAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTk5ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3I0MC5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMAotICAgID4KLXN0cnVjdCB2ZWN0b3IzMQotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQzMAotICAgICAgICAsIHZlY3RvcjMwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2LFQyNyxUMjgsVDI5ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMzEgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMQotICAgID4KLXN0cnVjdCB2ZWN0b3IzMgotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQzMQotICAgICAgICAsIHZlY3RvcjMxPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2LFQyNyxUMjgsVDI5LFQzMCA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjMyIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMgotICAgID4KLXN0cnVjdCB2ZWN0b3IzMwotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQzMgotICAgICAgICAsIHZlY3RvcjMyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2LFQyNyxUMjgsVDI5LFQzMCxUMzEgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IzMyB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMwotICAgID4KLXN0cnVjdCB2ZWN0b3IzNAotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQzMwotICAgICAgICAsIHZlY3RvcjMzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2LFQyNyxUMjgsVDI5LFQzMCxUMzEsVDMyID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMzQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgID4KLXN0cnVjdCB2ZWN0b3IzNQotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQzNAotICAgICAgICAsIHZlY3RvcjM0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2LFQyNyxUMjgsVDI5LFQzMCxUMzEsVDMyLFQzMyA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjM1IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICAsIHR5cGVuYW1lIFQzNQotICAgID4KLXN0cnVjdCB2ZWN0b3IzNgotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQzNQotICAgICAgICAsIHZlY3RvcjM1PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2LFQyNyxUMjgsVDI5LFQzMCxUMzEsVDMyLFQzMyxUMzQgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IzNiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNgotICAgID4KLXN0cnVjdCB2ZWN0b3IzNwotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQzNgotICAgICAgICAsIHZlY3RvcjM2PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2LFQyNyxUMjgsVDI5LFQzMCxUMzEsVDMyLFQzMyxUMzQsVDM1ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yMzcgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1LCB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNwotICAgID4KLXN0cnVjdCB2ZWN0b3IzOAotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQzNwotICAgICAgICAsIHZlY3RvcjM3PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2LFQyNyxUMjgsVDI5LFQzMCxUMzEsVDMyLFQzMyxUMzQsVDM1LFQzNiA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjM4IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICAsIHR5cGVuYW1lIFQzNSwgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOAotICAgID4KLXN0cnVjdCB2ZWN0b3IzOQotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQzOAotICAgICAgICAsIHZlY3RvcjM4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2LFQyNyxUMjgsVDI5LFQzMCxUMzEsVDMyLFQzMyxUMzQsVDM1LFQzNixUMzcgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IzOSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOQotICAgID4KLXN0cnVjdCB2ZWN0b3I0MAotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQzOQotICAgICAgICAsIHZlY3RvcjM5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2LFQyNyxUMjgsVDI5LFQzMCxUMzEsVDMyLFQzMyxUMzQsVDM1LFQzNixUMzcsVDM4ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yNDAgdHlwZTsKLX07Ci0KLX19CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvdHlwZW9mX2Jhc2VkL3ZlY3RvcjQwX2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3R5cGVvZl9iYXNlZC92ZWN0b3I0MF9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWE3NDhhOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvdHlwZW9mX2Jhc2VkL3ZlY3RvcjQwX2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTgzICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0vLyBQcmVwcm9jZXNzZWQgdmVyc2lvbiBvZiAibmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3I0MF9jLmhwcCIgaGVhZGVyCi0vLyAtLSBETyBOT1QgbW9kaWZ5IGJ5IGhhbmQhCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMzFfYwotICAgIDogdl9pdGVtPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzMwID4KLSAgICAgICAgLCB2ZWN0b3IzMF9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAsQzIxLEMyMixDMjMsQzI0LEMyNSxDMjYsQzI3LEMyOCxDMjkgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IzMV9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxCi0gICAgPgotc3RydWN0IHZlY3RvcjMyX2MKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMzMSA+Ci0gICAgICAgICwgdmVjdG9yMzFfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwLEMyMSxDMjIsQzIzLEMyNCxDMjUsQzI2LEMyNyxDMjgsQzI5LEMzMCA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjMyX2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyCi0gICAgPgotc3RydWN0IHZlY3RvcjMzX2MKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMzMiA+Ci0gICAgICAgICwgdmVjdG9yMzJfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwLEMyMSxDMjIsQzIzLEMyNCxDMjUsQzI2LEMyNyxDMjgsQzI5LEMzMCxDMzEgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IzM19jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMzRfYwotICAgIDogdl9pdGVtPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzMzID4KLSAgICAgICAgLCB2ZWN0b3IzM19jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAsQzIxLEMyMixDMjMsQzI0LEMyNSxDMjYsQzI3LEMyOCxDMjksQzMwLEMzMSxDMzIgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IzNF9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMsIFQgQzM0Ci0gICAgPgotc3RydWN0IHZlY3RvcjM1X2MKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMzNCA+Ci0gICAgICAgICwgdmVjdG9yMzRfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwLEMyMSxDMjIsQzIzLEMyNCxDMjUsQzI2LEMyNyxDMjgsQzI5LEMzMCxDMzEsQzMyLEMzMyA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjM1X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1Ci0gICAgPgotc3RydWN0IHZlY3RvcjM2X2MKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMzNSA+Ci0gICAgICAgICwgdmVjdG9yMzVfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwLEMyMSxDMjIsQzIzLEMyNCxDMjUsQzI2LEMyNyxDMjgsQzI5LEMzMCxDMzEsQzMyLEMzMyxDMzQgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IzNl9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMsIFQgQzM0LCBUIEMzNSwgVCBDMzYKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yMzdfYwotICAgIDogdl9pdGVtPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzM2ID4KLSAgICAgICAgLCB2ZWN0b3IzNl9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAsQzIxLEMyMixDMjMsQzI0LEMyNSxDMjYsQzI3LEMyOCxDMjksQzMwLEMzMSxDMzIsQzMzLEMzNCxDMzUgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IzN19jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMsIFQgQzM0LCBUIEMzNSwgVCBDMzYsIFQgQzM3Ci0gICAgPgotc3RydWN0IHZlY3RvcjM4X2MKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMzNyA+Ci0gICAgICAgICwgdmVjdG9yMzdfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwLEMyMSxDMjIsQzIzLEMyNCxDMjUsQzI2LEMyNyxDMjgsQzI5LEMzMCxDMzEsQzMyLEMzMyxDMzQsQzM1LEMzNiA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjM4X2MgdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVAotICAgICwgVCBDMCwgVCBDMSwgVCBDMiwgVCBDMywgVCBDNCwgVCBDNSwgVCBDNiwgVCBDNywgVCBDOCwgVCBDOSwgVCBDMTAKLSAgICAsIFQgQzExLCBUIEMxMiwgVCBDMTMsIFQgQzE0LCBUIEMxNSwgVCBDMTYsIFQgQzE3LCBUIEMxOCwgVCBDMTksIFQgQzIwCi0gICAgLCBUIEMyMSwgVCBDMjIsIFQgQzIzLCBUIEMyNCwgVCBDMjUsIFQgQzI2LCBUIEMyNywgVCBDMjgsIFQgQzI5LCBUIEMzMAotICAgICwgVCBDMzEsIFQgQzMyLCBUIEMzMywgVCBDMzQsIFQgQzM1LCBUIEMzNiwgVCBDMzcsIFQgQzM4Ci0gICAgPgotc3RydWN0IHZlY3RvcjM5X2MKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEMzOCA+Ci0gICAgICAgICwgdmVjdG9yMzhfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwLEMyMSxDMjIsQzIzLEMyNCxDMjUsQzI2LEMyNyxDMjgsQzI5LEMzMCxDMzEsQzMyLEMzMyxDMzQsQzM1LEMzNixDMzcgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3IzOV9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMsIFQgQzM0LCBUIEMzNSwgVCBDMzYsIFQgQzM3LCBUIEMzOCwgVCBDMzkKLSAgICA+Ci1zdHJ1Y3QgdmVjdG9yNDBfYwotICAgIDogdl9pdGVtPAotICAgICAgICAgIGludGVncmFsX2M8IFQsQzM5ID4KLSAgICAgICAgLCB2ZWN0b3IzOV9jPCBULEMwLEMxLEMyLEMzLEM0LEM1LEM2LEM3LEM4LEM5LEMxMCxDMTEsQzEyLEMxMyxDMTQsQzE1LEMxNixDMTcsQzE4LEMxOSxDMjAsQzIxLEMyMixDMjMsQzI0LEMyNSxDMjYsQzI3LEMyOCxDMjksQzMwLEMzMSxDMzIsQzMzLEMzNCxDMzUsQzM2LEMzNyxDMzggPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I0MF9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3R5cGVvZl9iYXNlZC92ZWN0b3I1MC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvdHlwZW9mX2Jhc2VkL3ZlY3RvcjUwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWY2YWU2Ny4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wcmVwcm9jZXNzZWQvdHlwZW9mX2Jhc2VkL3ZlY3RvcjUwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIxOSArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yNTAuaHBwIiBoZWFkZXIKLS8vIC0tIERPIE5PVCBtb2RpZnkgYnkgaGFuZCEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1LCB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzkKLSAgICAsIHR5cGVuYW1lIFQ0MAotICAgID4KLXN0cnVjdCB2ZWN0b3I0MQotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQ0MAotICAgICAgICAsIHZlY3RvcjQwPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2LFQyNyxUMjgsVDI5LFQzMCxUMzEsVDMyLFQzMyxUMzQsVDM1LFQzNixUMzcsVDM4LFQzOSA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjQxIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICAsIHR5cGVuYW1lIFQzNSwgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5Ci0gICAgLCB0eXBlbmFtZSBUNDAsIHR5cGVuYW1lIFQ0MQotICAgID4KLXN0cnVjdCB2ZWN0b3I0MgotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQ0MQotICAgICAgICAsIHZlY3RvcjQxPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2LFQyNyxUMjgsVDI5LFQzMCxUMzEsVDMyLFQzMyxUMzQsVDM1LFQzNixUMzcsVDM4LFQzOSxUNDAgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I0MiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOQotICAgICwgdHlwZW5hbWUgVDQwLCB0eXBlbmFtZSBUNDEsIHR5cGVuYW1lIFQ0MgotICAgID4KLXN0cnVjdCB2ZWN0b3I0MwotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQ0MgotICAgICAgICAsIHZlY3RvcjQyPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2LFQyNyxUMjgsVDI5LFQzMCxUMzEsVDMyLFQzMyxUMzQsVDM1LFQzNixUMzcsVDM4LFQzOSxUNDAsVDQxID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yNDMgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1LCB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzkKLSAgICAsIHR5cGVuYW1lIFQ0MCwgdHlwZW5hbWUgVDQxLCB0eXBlbmFtZSBUNDIsIHR5cGVuYW1lIFQ0MwotICAgID4KLXN0cnVjdCB2ZWN0b3I0NAotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQ0MwotICAgICAgICAsIHZlY3RvcjQzPCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2LFQyNyxUMjgsVDI5LFQzMCxUMzEsVDMyLFQzMyxUMzQsVDM1LFQzNixUMzcsVDM4LFQzOSxUNDAsVDQxLFQ0MiA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjQ0IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICAsIHR5cGVuYW1lIFQzNSwgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5Ci0gICAgLCB0eXBlbmFtZSBUNDAsIHR5cGVuYW1lIFQ0MSwgdHlwZW5hbWUgVDQyLCB0eXBlbmFtZSBUNDMsIHR5cGVuYW1lIFQ0NAotICAgID4KLXN0cnVjdCB2ZWN0b3I0NQotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQ0NAotICAgICAgICAsIHZlY3RvcjQ0PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2LFQyNyxUMjgsVDI5LFQzMCxUMzEsVDMyLFQzMyxUMzQsVDM1LFQzNixUMzcsVDM4LFQzOSxUNDAsVDQxLFQ0MixUNDMgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I0NSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOQotICAgICwgdHlwZW5hbWUgVDQwLCB0eXBlbmFtZSBUNDEsIHR5cGVuYW1lIFQ0MiwgdHlwZW5hbWUgVDQzLCB0eXBlbmFtZSBUNDQKLSAgICAsIHR5cGVuYW1lIFQ0NQotICAgID4KLXN0cnVjdCB2ZWN0b3I0NgotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQ0NQotICAgICAgICAsIHZlY3RvcjQ1PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2LFQyNyxUMjgsVDI5LFQzMCxUMzEsVDMyLFQzMyxUMzQsVDM1LFQzNixUMzcsVDM4LFQzOSxUNDAsVDQxLFQ0MixUNDMsVDQ0ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yNDYgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1LCB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzkKLSAgICAsIHR5cGVuYW1lIFQ0MCwgdHlwZW5hbWUgVDQxLCB0eXBlbmFtZSBUNDIsIHR5cGVuYW1lIFQ0MywgdHlwZW5hbWUgVDQ0Ci0gICAgLCB0eXBlbmFtZSBUNDUsIHR5cGVuYW1lIFQ0NgotICAgID4KLXN0cnVjdCB2ZWN0b3I0NwotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQ0NgotICAgICAgICAsIHZlY3RvcjQ2PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2LFQyNyxUMjgsVDI5LFQzMCxUMzEsVDMyLFQzMyxUMzQsVDM1LFQzNixUMzcsVDM4LFQzOSxUNDAsVDQxLFQ0MixUNDMsVDQ0LFQ0NSA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjQ3IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQwLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNAotICAgICwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Ci0gICAgLCB0eXBlbmFtZSBUMTAsIHR5cGVuYW1lIFQxMSwgdHlwZW5hbWUgVDEyLCB0eXBlbmFtZSBUMTMsIHR5cGVuYW1lIFQxNAotICAgICwgdHlwZW5hbWUgVDE1LCB0eXBlbmFtZSBUMTYsIHR5cGVuYW1lIFQxNywgdHlwZW5hbWUgVDE4LCB0eXBlbmFtZSBUMTkKLSAgICAsIHR5cGVuYW1lIFQyMCwgdHlwZW5hbWUgVDIxLCB0eXBlbmFtZSBUMjIsIHR5cGVuYW1lIFQyMywgdHlwZW5hbWUgVDI0Ci0gICAgLCB0eXBlbmFtZSBUMjUsIHR5cGVuYW1lIFQyNiwgdHlwZW5hbWUgVDI3LCB0eXBlbmFtZSBUMjgsIHR5cGVuYW1lIFQyOQotICAgICwgdHlwZW5hbWUgVDMwLCB0eXBlbmFtZSBUMzEsIHR5cGVuYW1lIFQzMiwgdHlwZW5hbWUgVDMzLCB0eXBlbmFtZSBUMzQKLSAgICAsIHR5cGVuYW1lIFQzNSwgdHlwZW5hbWUgVDM2LCB0eXBlbmFtZSBUMzcsIHR5cGVuYW1lIFQzOCwgdHlwZW5hbWUgVDM5Ci0gICAgLCB0eXBlbmFtZSBUNDAsIHR5cGVuYW1lIFQ0MSwgdHlwZW5hbWUgVDQyLCB0eXBlbmFtZSBUNDMsIHR5cGVuYW1lIFQ0NAotICAgICwgdHlwZW5hbWUgVDQ1LCB0eXBlbmFtZSBUNDYsIHR5cGVuYW1lIFQ0NwotICAgID4KLXN0cnVjdCB2ZWN0b3I0OAotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQ0NwotICAgICAgICAsIHZlY3RvcjQ3PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2LFQyNyxUMjgsVDI5LFQzMCxUMzEsVDMyLFQzMyxUMzQsVDM1LFQzNixUMzcsVDM4LFQzOSxUNDAsVDQxLFQ0MixUNDMsVDQ0LFQ0NSxUNDYgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I0OCB0eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMCwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQKLSAgICAsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOQotICAgICwgdHlwZW5hbWUgVDEwLCB0eXBlbmFtZSBUMTEsIHR5cGVuYW1lIFQxMiwgdHlwZW5hbWUgVDEzLCB0eXBlbmFtZSBUMTQKLSAgICAsIHR5cGVuYW1lIFQxNSwgdHlwZW5hbWUgVDE2LCB0eXBlbmFtZSBUMTcsIHR5cGVuYW1lIFQxOCwgdHlwZW5hbWUgVDE5Ci0gICAgLCB0eXBlbmFtZSBUMjAsIHR5cGVuYW1lIFQyMSwgdHlwZW5hbWUgVDIyLCB0eXBlbmFtZSBUMjMsIHR5cGVuYW1lIFQyNAotICAgICwgdHlwZW5hbWUgVDI1LCB0eXBlbmFtZSBUMjYsIHR5cGVuYW1lIFQyNywgdHlwZW5hbWUgVDI4LCB0eXBlbmFtZSBUMjkKLSAgICAsIHR5cGVuYW1lIFQzMCwgdHlwZW5hbWUgVDMxLCB0eXBlbmFtZSBUMzIsIHR5cGVuYW1lIFQzMywgdHlwZW5hbWUgVDM0Ci0gICAgLCB0eXBlbmFtZSBUMzUsIHR5cGVuYW1lIFQzNiwgdHlwZW5hbWUgVDM3LCB0eXBlbmFtZSBUMzgsIHR5cGVuYW1lIFQzOQotICAgICwgdHlwZW5hbWUgVDQwLCB0eXBlbmFtZSBUNDEsIHR5cGVuYW1lIFQ0MiwgdHlwZW5hbWUgVDQzLCB0eXBlbmFtZSBUNDQKLSAgICAsIHR5cGVuYW1lIFQ0NSwgdHlwZW5hbWUgVDQ2LCB0eXBlbmFtZSBUNDcsIHR5cGVuYW1lIFQ0OAotICAgID4KLXN0cnVjdCB2ZWN0b3I0OQotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQ0OAotICAgICAgICAsIHZlY3RvcjQ4PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2LFQyNyxUMjgsVDI5LFQzMCxUMzEsVDMyLFQzMyxUMzQsVDM1LFQzNixUMzcsVDM4LFQzOSxUNDAsVDQxLFQ0MixUNDMsVDQ0LFQ0NSxUNDYsVDQ3ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yNDkgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPAotICAgICAgdHlwZW5hbWUgVDAsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Ci0gICAgLCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDkKLSAgICAsIHR5cGVuYW1lIFQxMCwgdHlwZW5hbWUgVDExLCB0eXBlbmFtZSBUMTIsIHR5cGVuYW1lIFQxMywgdHlwZW5hbWUgVDE0Ci0gICAgLCB0eXBlbmFtZSBUMTUsIHR5cGVuYW1lIFQxNiwgdHlwZW5hbWUgVDE3LCB0eXBlbmFtZSBUMTgsIHR5cGVuYW1lIFQxOQotICAgICwgdHlwZW5hbWUgVDIwLCB0eXBlbmFtZSBUMjEsIHR5cGVuYW1lIFQyMiwgdHlwZW5hbWUgVDIzLCB0eXBlbmFtZSBUMjQKLSAgICAsIHR5cGVuYW1lIFQyNSwgdHlwZW5hbWUgVDI2LCB0eXBlbmFtZSBUMjcsIHR5cGVuYW1lIFQyOCwgdHlwZW5hbWUgVDI5Ci0gICAgLCB0eXBlbmFtZSBUMzAsIHR5cGVuYW1lIFQzMSwgdHlwZW5hbWUgVDMyLCB0eXBlbmFtZSBUMzMsIHR5cGVuYW1lIFQzNAotICAgICwgdHlwZW5hbWUgVDM1LCB0eXBlbmFtZSBUMzYsIHR5cGVuYW1lIFQzNywgdHlwZW5hbWUgVDM4LCB0eXBlbmFtZSBUMzkKLSAgICAsIHR5cGVuYW1lIFQ0MCwgdHlwZW5hbWUgVDQxLCB0eXBlbmFtZSBUNDIsIHR5cGVuYW1lIFQ0MywgdHlwZW5hbWUgVDQ0Ci0gICAgLCB0eXBlbmFtZSBUNDUsIHR5cGVuYW1lIFQ0NiwgdHlwZW5hbWUgVDQ3LCB0eXBlbmFtZSBUNDgsIHR5cGVuYW1lIFQ0OQotICAgID4KLXN0cnVjdCB2ZWN0b3I1MAotICAgIDogdl9pdGVtPAotICAgICAgICAgIFQ0OQotICAgICAgICAsIHZlY3RvcjQ5PCBUMCxUMSxUMixUMyxUNCxUNSxUNixUNyxUOCxUOSxUMTAsVDExLFQxMixUMTMsVDE0LFQxNSxUMTYsVDE3LFQxOCxUMTksVDIwLFQyMSxUMjIsVDIzLFQyNCxUMjUsVDI2LFQyNyxUMjgsVDI5LFQzMCxUMzEsVDMyLFQzMyxUMzQsVDM1LFQzNixUMzcsVDM4LFQzOSxUNDAsVDQxLFQ0MixUNDMsVDQ0LFQ0NSxUNDYsVDQ3LFQ0OCA+Ci0gICAgICAgID4KLXsKLSAgICB0eXBlZGVmIHZlY3RvcjUwIHR5cGU7Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3R5cGVvZl9iYXNlZC92ZWN0b3I1MF9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ByZXByb2Nlc3NlZC90eXBlb2ZfYmFzZWQvdmVjdG9yNTBfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg2OWM2YTEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHJlcHJvY2Vzc2VkL3R5cGVvZl9iYXNlZC92ZWN0b3I1MF9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE5MyArMCwwIEBACi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotLy8gUHJlcHJvY2Vzc2VkIHZlcnNpb24gb2YgIm5kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yNTBfYy5ocHAiIGhlYWRlcgotLy8gLS0gRE8gTk9UIG1vZGlmeSBieSBoYW5kIQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNCwgVCBDMzUsIFQgQzM2LCBUIEMzNywgVCBDMzgsIFQgQzM5LCBUIEM0MAotICAgID4KLXN0cnVjdCB2ZWN0b3I0MV9jCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDNDAgPgotICAgICAgICAsIHZlY3RvcjQwX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5LEMyMCxDMjEsQzIyLEMyMyxDMjQsQzI1LEMyNixDMjcsQzI4LEMyOSxDMzAsQzMxLEMzMixDMzMsQzM0LEMzNSxDMzYsQzM3LEMzOCxDMzkgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I0MV9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMsIFQgQzM0LCBUIEMzNSwgVCBDMzYsIFQgQzM3LCBUIEMzOCwgVCBDMzksIFQgQzQwCi0gICAgLCBUIEM0MQotICAgID4KLXN0cnVjdCB2ZWN0b3I0Ml9jCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDNDEgPgotICAgICAgICAsIHZlY3RvcjQxX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5LEMyMCxDMjEsQzIyLEMyMyxDMjQsQzI1LEMyNixDMjcsQzI4LEMyOSxDMzAsQzMxLEMzMixDMzMsQzM0LEMzNSxDMzYsQzM3LEMzOCxDMzksQzQwID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yNDJfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNCwgVCBDMzUsIFQgQzM2LCBUIEMzNywgVCBDMzgsIFQgQzM5LCBUIEM0MAotICAgICwgVCBDNDEsIFQgQzQyCi0gICAgPgotc3RydWN0IHZlY3RvcjQzX2MKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEM0MiA+Ci0gICAgICAgICwgdmVjdG9yNDJfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwLEMyMSxDMjIsQzIzLEMyNCxDMjUsQzI2LEMyNyxDMjgsQzI5LEMzMCxDMzEsQzMyLEMzMyxDMzQsQzM1LEMzNixDMzcsQzM4LEMzOSxDNDAsQzQxID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yNDNfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNCwgVCBDMzUsIFQgQzM2LCBUIEMzNywgVCBDMzgsIFQgQzM5LCBUIEM0MAotICAgICwgVCBDNDEsIFQgQzQyLCBUIEM0MwotICAgID4KLXN0cnVjdCB2ZWN0b3I0NF9jCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDNDMgPgotICAgICAgICAsIHZlY3RvcjQzX2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5LEMyMCxDMjEsQzIyLEMyMyxDMjQsQzI1LEMyNixDMjcsQzI4LEMyOSxDMzAsQzMxLEMzMixDMzMsQzM0LEMzNSxDMzYsQzM3LEMzOCxDMzksQzQwLEM0MSxDNDIgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I0NF9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMsIFQgQzM0LCBUIEMzNSwgVCBDMzYsIFQgQzM3LCBUIEMzOCwgVCBDMzksIFQgQzQwCi0gICAgLCBUIEM0MSwgVCBDNDIsIFQgQzQzLCBUIEM0NAotICAgID4KLXN0cnVjdCB2ZWN0b3I0NV9jCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDNDQgPgotICAgICAgICAsIHZlY3RvcjQ0X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5LEMyMCxDMjEsQzIyLEMyMyxDMjQsQzI1LEMyNixDMjcsQzI4LEMyOSxDMzAsQzMxLEMzMixDMzMsQzM0LEMzNSxDMzYsQzM3LEMzOCxDMzksQzQwLEM0MSxDNDIsQzQzID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yNDVfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNCwgVCBDMzUsIFQgQzM2LCBUIEMzNywgVCBDMzgsIFQgQzM5LCBUIEM0MAotICAgICwgVCBDNDEsIFQgQzQyLCBUIEM0MywgVCBDNDQsIFQgQzQ1Ci0gICAgPgotc3RydWN0IHZlY3RvcjQ2X2MKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEM0NSA+Ci0gICAgICAgICwgdmVjdG9yNDVfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwLEMyMSxDMjIsQzIzLEMyNCxDMjUsQzI2LEMyNyxDMjgsQzI5LEMzMCxDMzEsQzMyLEMzMyxDMzQsQzM1LEMzNixDMzcsQzM4LEMzOSxDNDAsQzQxLEM0MixDNDMsQzQ0ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yNDZfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNCwgVCBDMzUsIFQgQzM2LCBUIEMzNywgVCBDMzgsIFQgQzM5LCBUIEM0MAotICAgICwgVCBDNDEsIFQgQzQyLCBUIEM0MywgVCBDNDQsIFQgQzQ1LCBUIEM0NgotICAgID4KLXN0cnVjdCB2ZWN0b3I0N19jCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDNDYgPgotICAgICAgICAsIHZlY3RvcjQ2X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5LEMyMCxDMjEsQzIyLEMyMyxDMjQsQzI1LEMyNixDMjcsQzI4LEMyOSxDMzAsQzMxLEMzMixDMzMsQzM0LEMzNSxDMzYsQzM3LEMzOCxDMzksQzQwLEM0MSxDNDIsQzQzLEM0NCxDNDUgPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I0N19jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICAgIHR5cGVuYW1lIFQKLSAgICAsIFQgQzAsIFQgQzEsIFQgQzIsIFQgQzMsIFQgQzQsIFQgQzUsIFQgQzYsIFQgQzcsIFQgQzgsIFQgQzksIFQgQzEwCi0gICAgLCBUIEMxMSwgVCBDMTIsIFQgQzEzLCBUIEMxNCwgVCBDMTUsIFQgQzE2LCBUIEMxNywgVCBDMTgsIFQgQzE5LCBUIEMyMAotICAgICwgVCBDMjEsIFQgQzIyLCBUIEMyMywgVCBDMjQsIFQgQzI1LCBUIEMyNiwgVCBDMjcsIFQgQzI4LCBUIEMyOSwgVCBDMzAKLSAgICAsIFQgQzMxLCBUIEMzMiwgVCBDMzMsIFQgQzM0LCBUIEMzNSwgVCBDMzYsIFQgQzM3LCBUIEMzOCwgVCBDMzksIFQgQzQwCi0gICAgLCBUIEM0MSwgVCBDNDIsIFQgQzQzLCBUIEM0NCwgVCBDNDUsIFQgQzQ2LCBUIEM0NwotICAgID4KLXN0cnVjdCB2ZWN0b3I0OF9jCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDNDcgPgotICAgICAgICAsIHZlY3RvcjQ3X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5LEMyMCxDMjEsQzIyLEMyMyxDMjQsQzI1LEMyNixDMjcsQzI4LEMyOSxDMzAsQzMxLEMzMixDMzMsQzM0LEMzNSxDMzYsQzM3LEMzOCxDMzksQzQwLEM0MSxDNDIsQzQzLEM0NCxDNDUsQzQ2ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yNDhfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNCwgVCBDMzUsIFQgQzM2LCBUIEMzNywgVCBDMzgsIFQgQzM5LCBUIEM0MAotICAgICwgVCBDNDEsIFQgQzQyLCBUIEM0MywgVCBDNDQsIFQgQzQ1LCBUIEM0NiwgVCBDNDcsIFQgQzQ4Ci0gICAgPgotc3RydWN0IHZlY3RvcjQ5X2MKLSAgICA6IHZfaXRlbTwKLSAgICAgICAgICBpbnRlZ3JhbF9jPCBULEM0OCA+Ci0gICAgICAgICwgdmVjdG9yNDhfYzwgVCxDMCxDMSxDMixDMyxDNCxDNSxDNixDNyxDOCxDOSxDMTAsQzExLEMxMixDMTMsQzE0LEMxNSxDMTYsQzE3LEMxOCxDMTksQzIwLEMyMSxDMjIsQzIzLEMyNCxDMjUsQzI2LEMyNyxDMjgsQzI5LEMzMCxDMzEsQzMyLEMzMyxDMzQsQzM1LEMzNixDMzcsQzM4LEMzOSxDNDAsQzQxLEM0MixDNDMsQzQ0LEM0NSxDNDYsQzQ3ID4KLSAgICAgICAgPgotewotICAgIHR5cGVkZWYgdmVjdG9yNDlfYyB0eXBlOwotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotfTsKLQotdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUCi0gICAgLCBUIEMwLCBUIEMxLCBUIEMyLCBUIEMzLCBUIEM0LCBUIEM1LCBUIEM2LCBUIEM3LCBUIEM4LCBUIEM5LCBUIEMxMAotICAgICwgVCBDMTEsIFQgQzEyLCBUIEMxMywgVCBDMTQsIFQgQzE1LCBUIEMxNiwgVCBDMTcsIFQgQzE4LCBUIEMxOSwgVCBDMjAKLSAgICAsIFQgQzIxLCBUIEMyMiwgVCBDMjMsIFQgQzI0LCBUIEMyNSwgVCBDMjYsIFQgQzI3LCBUIEMyOCwgVCBDMjksIFQgQzMwCi0gICAgLCBUIEMzMSwgVCBDMzIsIFQgQzMzLCBUIEMzNCwgVCBDMzUsIFQgQzM2LCBUIEMzNywgVCBDMzgsIFQgQzM5LCBUIEM0MAotICAgICwgVCBDNDEsIFQgQzQyLCBUIEM0MywgVCBDNDQsIFQgQzQ1LCBUIEM0NiwgVCBDNDcsIFQgQzQ4LCBUIEM0OQotICAgID4KLXN0cnVjdCB2ZWN0b3I1MF9jCi0gICAgOiB2X2l0ZW08Ci0gICAgICAgICAgaW50ZWdyYWxfYzwgVCxDNDkgPgotICAgICAgICAsIHZlY3RvcjQ5X2M8IFQsQzAsQzEsQzIsQzMsQzQsQzUsQzYsQzcsQzgsQzksQzEwLEMxMSxDMTIsQzEzLEMxNCxDMTUsQzE2LEMxNyxDMTgsQzE5LEMyMCxDMjEsQzIyLEMyMyxDMjQsQzI1LEMyNixDMjcsQzI4LEMyOSxDMzAsQzMxLEMzMixDMzMsQzM0LEMzNSxDMzYsQzM3LEMzOCxDMzksQzQwLEM0MSxDNDIsQzQzLEM0NCxDNDUsQzQ2LEM0NyxDNDggPgotICAgICAgICA+Ci17Ci0gICAgdHlwZWRlZiB2ZWN0b3I1MF9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHVzaF9iYWNrLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3B1c2hfYmFjay5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY2MWQ5YjIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHVzaF9iYWNrLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfVkVDVE9SX0FVWF9QVVNIX0JBQ0tfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9WRUNUT1JfQVVYX1BVU0hfQkFDS19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHB1c2hfYmFjay5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9wdXNoX2JhY2tfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdHlwZW9mLmhwcD4KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19UWVBFT0ZfQkFTRURfU0VRVUVOQ0VTKQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL2l0ZW0uaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy90YWcuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHB1c2hfYmFja19pbXBsPCBhdXg6OnZlY3Rvcl90YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdl9pdGVtPFQsVmVjdG9yLDA+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19Ci0KLSNlbmRpZiAKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9WRUNUT1JfQVVYX1BVU0hfQkFDS19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3B1c2hfZnJvbnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHVzaF9mcm9udC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA2NDNmZWYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vcHVzaF9mcm9udC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX1ZFQ1RPUl9BVVhfUFVTSF9GUk9OVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1ZFQ1RPUl9BVVhfUFVTSF9GUk9OVF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHB1c2hfZnJvbnQuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvcHVzaF9mcm9udF9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy90eXBlb2YuaHBwPgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX1RZUEVPRl9CQVNFRF9TRVFVRU5DRVMpCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vaXRlbS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3RhZy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcHVzaF9mcm9udF9pbXBsPCBhdXg6OnZlY3Rvcl90YWcgPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBWZWN0b3IsIHR5cGVuYW1lIFQgPiBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdl9pdGVtPFQsVmVjdG9yLDE+IHR5cGU7Ci0gICAgfTsKLX07Ci0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX1RZUEVPRl9CQVNFRF9TRVFVRU5DRVMKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9WRUNUT1JfQVVYX1BVU0hfRlJPTlRfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9zaXplLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3NpemUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMzg3YWZhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3NpemUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9WRUNUT1JfQVVYX1NJWkVfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9WRUNUT1JfQVVYX1NJWkVfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiBzaXplLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3NpemVfZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vTzFfc2l6ZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3RhZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3R5cGVvZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2N0cHMuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19UWVBFT0ZfQkFTRURfU0VRVUVOQ0VTKQotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWcgPgotICAgIDogTzFfc2l6ZV9pbXBsPCBhdXg6OnZlY3Rvcl90YWcgPgotewotfTsKLQotI2Vsc2UKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi0KLXRlbXBsYXRlPCBsb25nIE4gPgotc3RydWN0IHNpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPE4+ID4KLSAgICA6IE8xX3NpemVfaW1wbDwgYXV4Ojp2ZWN0b3JfdGFnPE4+ID4KLXsKLX07Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX1RZUEVPRl9CQVNFRF9TRVFVRU5DRVMKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9WRUNUT1JfQVVYX1NJWkVfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy90YWcuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vdGFnLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmNkNTFkNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy90YWcuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9WRUNUT1JfQVVYX1RBR19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1ZFQ1RPUl9BVVhfVEFHX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogdGFnLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3R5cGVvZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbnR0cF9kZWNsLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7IG5hbWVzcGFjZSBhdXggewotCi1zdHJ1Y3Qgdl9pdGVyX3RhZzsKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19UWVBFT0ZfQkFTRURfU0VRVUVOQ0VTKQotc3RydWN0IHZlY3Rvcl90YWc7Ci0jZWxzZQotdGVtcGxhdGU8IE5ETkJPT1NUX01QTF9BVVhfTlRUUF9ERUNMKGxvbmcsIE4pID4gc3RydWN0IHZlY3Rvcl90YWc7Ci0jZW5kaWYKLQotfX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfVkVDVE9SX0FVWF9UQUdfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy92ZWN0b3IwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ZlY3RvcjAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YWFkYjEzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3ZlY3RvcjAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9WRUNUT1JfQVVYX1ZFQ1RPUjBfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9WRUNUT1JfQVVYX1ZFQ1RPUjBfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiB2ZWN0b3IwLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2xvbmcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC92b2lkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uYS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vdHlwZV93cmFwcGVyLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9pdGVyYXRvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3RhZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3R5cGVvZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRHVtbXkgPSBuYSA+IHN0cnVjdCB2ZWN0b3IwOwotCi10ZW1wbGF0ZTw+IHN0cnVjdCB2ZWN0b3IwPG5hPgotewotI2lmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19UWVBFT0ZfQkFTRURfU0VRVUVOQ0VTKQotICAgIHR5cGVkZWYgYXV4Ojp2ZWN0b3JfdGFnIHRhZzsKLSAgICB0eXBlZGVmIHZlY3RvcjAgICAgICAgICB0eXBlOwotICAgIHR5cGVkZWYgbG9uZ188MzI3Njg+ICAgIGxvd2VyX2JvdW5kXzsKLSAgICB0eXBlZGVmIGxvd2VyX2JvdW5kXyAgICB1cHBlcl9ib3VuZF87Ci0gICAgdHlwZWRlZiBsb25nXzwwPiAgICAgICAgc2l6ZTsKLQotICAgIHN0YXRpYyBhdXg6OnR5cGVfd3JhcHBlcjx2b2lkXz4gaXRlbV8oLi4uKTsKLSNlbHNlCi0gICAgdHlwZWRlZiBhdXg6OnZlY3Rvcl90YWc8MD4gdGFnOwotICAgIHR5cGVkZWYgdmVjdG9yMCB0eXBlOwotICAgIHR5cGVkZWYgdm9pZF8gaXRlbTA7Ci0gICAgCi0gICAgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMDw+LDA+IGJlZ2luOwotICAgIHR5cGVkZWYgdl9pdGVyPHZlY3RvcjA8PiwwPiBlbmQ7Ci0jZW5kaWYKLX07Ci0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfVkVDVE9SX0FVWF9WRUNUT1IwX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZTExYjYxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfVkVDVE9SX1ZFQ1RPUjBfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9WRUNUT1JfVkVDVE9SMF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHZlY3RvcjAuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vYXQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9mcm9udC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL3B1c2hfZnJvbnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wb3BfZnJvbnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wdXNoX2JhY2suaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9wb3BfYmFjay5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL2JhY2suaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9jbGVhci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL08xX3NpemUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9zaXplLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vZW1wdHkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9pdGVtLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vaXRlcmF0b3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy92ZWN0b3IwLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vYmVnaW5fZW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vdGFnLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9WRUNUT1JfVkVDVE9SMF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IwX2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjBfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFjNmJiYWIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjBfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX1ZFQ1RPUl9WRUNUT1IwX0NfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9WRUNUT1JfVkVDVE9SMF9DX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogdmVjdG9yMF9jLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IwLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaW50ZWdyYWxfYy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCB2ZWN0b3IwX2MKLSAgICA6IHZlY3RvcjA8PgotewotICAgIHR5cGVkZWYgdmVjdG9yMF9jIHR5cGU7Ci0gICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci19OwotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX1ZFQ1RPUl9WRUNUT1IwX0NfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yMTAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjEwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGRiNDhjYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yMTAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9WRUNUT1JfVkVDVE9SMTBfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9WRUNUT1JfVkVDVE9SMTBfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiB2ZWN0b3IxMC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IwLmhwcD4KLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3VzZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUykgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BSRVBST0NFU1NFRF9IRUFERVIgdmVjdG9yMTAuaHBwCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL2luY2x1ZGVfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2Vsc2UKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy90eXBlb2YuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9jdHBzLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0ZS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMSBcCi0gICAgKDMsKDAsIDEwLCA8bmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL251bWJlcmVkLmhwcD4pKQotIyAgIGluY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfVkVDVE9SX1ZFQ1RPUjEwX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjEwX2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjEwX2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYWZkMWY5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IxMF9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfVkVDVE9SX1ZFQ1RPUjEwX0NfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9WRUNUT1JfVkVDVE9SMTBfQ19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHZlY3RvcjEwX2MuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yMF9jLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjEwLmhwcD4KLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3VzZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUykgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BSRVBST0NFU1NFRF9IRUFERVIgdmVjdG9yMTBfYy5ocHAKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vaW5jbHVkZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jZWxzZQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3R5cGVvZi5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2N0cHMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRlLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLSMgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18xIFwKLSAgICAoMywoMSwgMTAsIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vbnVtYmVyZWRfYy5ocHA+KSkKLSMgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0lURVJBVEUoKQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX1ZFQ1RPUl9WRUNUT1IxMF9DX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjIwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IyMC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdiMGEwZDQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjIwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfVkVDVE9SX1ZFQ1RPUjIwX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfVkVDVE9SX1ZFQ1RPUjIwX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogdmVjdG9yMjAuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yMTAuaHBwPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdXNlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTKSBcCi0gICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFJFUFJPQ0VTU0VEX0hFQURFUiB2ZWN0b3IyMC5ocHAKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vaW5jbHVkZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jZWxzZQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3R5cGVvZi5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2N0cHMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRlLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLSMgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18xIFwKLSAgICAoMywoMTEsIDIwLCA8bmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL251bWJlcmVkLmhwcD4pKQotIyAgIGluY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfVkVDVE9SX1ZFQ1RPUjIwX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjIwX2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjIwX2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMzI0ZWQyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IyMF9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfVkVDVE9SX1ZFQ1RPUjIwX0NfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9WRUNUT1JfVkVDVE9SMjBfQ19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHZlY3RvcjIwX2MuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yMTBfYy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IyMC5ocHA+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy91c2VfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMpIFwKLSAgICAmJiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTRURfSEVBREVSIHZlY3RvcjIwX2MuaHBwCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL2luY2x1ZGVfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2Vsc2UKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy90eXBlb2YuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9jdHBzLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0ZS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMSBcCi0gICAgKDMsKDExLCAyMCwgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9udW1iZXJlZF9jLmhwcD4pKQotIyAgIGluY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfVkVDVE9SX1ZFQ1RPUjIwX0NfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yMzAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjMwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGVlNGU0Ni4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yMzAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9WRUNUT1JfVkVDVE9SMzBfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9WRUNUT1JfVkVDVE9SMzBfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiB2ZWN0b3IzMC5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IyMC5ocHA+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy91c2VfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMpIFwKLSAgICAmJiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTRURfSEVBREVSIHZlY3RvcjMwLmhwcAotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9pbmNsdWRlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNlbHNlCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdHlwZW9mLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvY3Rwcy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGUuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotIyAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEgXAotICAgICgzLCgyMSwgMzAsIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vbnVtYmVyZWQuaHBwPikpCi0jICAgaW5jbHVkZSBORE5CT09TVF9QUF9JVEVSQVRFKCkKLQotfX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9WRUNUT1JfVkVDVE9SMzBfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yMzBfYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yMzBfYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVjYTEwZjIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjMwX2MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9WRUNUT1JfVkVDVE9SMzBfQ19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1ZFQ1RPUl9WRUNUT1IzMF9DX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogdmVjdG9yMzBfYy5ocHAgNDkyNjcgMjAwOC0xMC0xMSAwNjoxOTowMlogYWd1cnRvdm95ICQKLS8vICREYXRlOiAyMDA4LTEwLTEwIDIzOjE5OjAyIC0wNzAwIChGcmksIDEwIE9jdCAyMDA4KSAkCi0vLyAkUmV2aXNpb246IDQ5MjY3ICQKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IyMF9jLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjMwLmhwcD4KLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3VzZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUykgXAotICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BSRVBST0NFU1NFRF9IRUFERVIgdmVjdG9yMzBfYy5ocHAKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vaW5jbHVkZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jZWxzZQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3R5cGVvZi5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2N0cHMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRlLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotIyAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEgXAotICAgICgzLCgyMSwgMzAsIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vbnVtYmVyZWRfYy5ocHA+KSkKLSMgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0lURVJBVEUoKQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19VU0VfUFJFUFJPQ0VTU0VEX0hFQURFUlMKLQotI2VuZGlmIC8vIE5ETkJPT1NUX01QTF9WRUNUT1JfVkVDVE9SMzBfQ19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3I0MC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yNDAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NTVmZmQ3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3I0MC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX1ZFQ1RPUl9WRUNUT1I0MF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1ZFQ1RPUl9WRUNUT1I0MF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHZlY3RvcjQwLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjMwLmhwcD4KLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3VzZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUykgXAotICAgICYmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTSU5HX01PREUpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfTVBMX1BSRVBST0NFU1NFRF9IRUFERVIgdmVjdG9yNDAuaHBwCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL2luY2x1ZGVfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2Vsc2UKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy90eXBlb2YuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9jdHBzLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0ZS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMSBcCi0gICAgKDMsKDMxLCA0MCwgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9udW1iZXJlZC5ocHA+KSkKLSMgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0lURVJBVEUoKQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX1ZFQ1RPUl9WRUNUT1I0MF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3I0MF9jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3I0MF9jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTA0N2EwMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yNDBfYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi0KLSNpZm5kZWYgTkROQk9PU1RfTVBMX1ZFQ1RPUl9WRUNUT1I0MF9DX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfVkVDVE9SX1ZFQ1RPUjQwX0NfSFBQX0lOQ0xVREVECi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDAtMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL21wbCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gJElkOiB2ZWN0b3I0MF9jLmhwcCA0OTI2NyAyMDA4LTEwLTExIDA2OjE5OjAyWiBhZ3VydG92b3kgJAotLy8gJERhdGU6IDIwMDgtMTAtMTAgMjM6MTk6MDIgLTA3MDAgKEZyaSwgMTAgT2N0IDIwMDgpICQKLS8vICRSZXZpc2lvbjogNDkyNjcgJAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjMwX2MuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yNDAuaHBwPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdXNlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTKSBcCi0gICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFJFUFJPQ0VTU0VEX0hFQURFUiB2ZWN0b3I0MF9jLmhwcAotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9pbmNsdWRlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNlbHNlCi0KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdHlwZW9mLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvY3Rwcy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGUuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotIyAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEgXAotICAgICgzLCgzMSwgNDAsIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vbnVtYmVyZWRfYy5ocHA+KSkKLSMgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0lURVJBVEUoKQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX0NGR19OT19QUkVQUk9DRVNTRURfSEVBREVSUwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX1ZFQ1RPUl9WRUNUT1I0MF9DX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjUwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3I1MC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZmYTkxNmEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjUwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfVkVDVE9SX1ZFQ1RPUjUwX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfVkVDVE9SX1ZFQ1RPUjUwX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAwLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogdmVjdG9yNTAuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yNDAuaHBwPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvdXNlX3ByZXByb2Nlc3NlZC5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTKSBcCi0gICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTVBMX1BSRVBST0NFU1NJTkdfTU9ERSkKLQotIyAgIGRlZmluZSBORE5CT09TVF9NUExfUFJFUFJPQ0VTU0VEX0hFQURFUiB2ZWN0b3I1MC5ocHAKLSMgICBpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL2F1eF8vaW5jbHVkZV9wcmVwcm9jZXNzZWQuaHBwPgotCi0jZWxzZQotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3R5cGVvZi5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL2N0cHMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRlLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG1wbCB7Ci0KLSMgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18xIFwKLSAgICAoMywoNDEsIDUwLCA8bmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL251bWJlcmVkLmhwcD4pKQotIyAgIGluY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfVkVDVE9SX1ZFQ1RPUjUwX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjUwX2MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjUwX2MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYmRjZjY0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3I1MF9jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLQotI2lmbmRlZiBORE5CT09TVF9NUExfVkVDVE9SX1ZFQ1RPUjUwX0NfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX01QTF9WRUNUT1JfVkVDVE9SNTBfQ19IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMC0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHZlY3RvcjUwX2MuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC92ZWN0b3IvdmVjdG9yNDBfYy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3I1MC5ocHA+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy91c2VfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01QTF9DRkdfTk9fUFJFUFJPQ0VTU0VEX0hFQURFUlMpIFwKLSAmJiAhZGVmaW5lZChORE5CT09TVF9NUExfUFJFUFJPQ0VTU0lOR19NT0RFKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX01QTF9QUkVQUk9DRVNTRURfSEVBREVSIHZlY3RvcjUwX2MuaHBwCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci9hdXhfL2luY2x1ZGVfcHJlcHJvY2Vzc2VkLmhwcD4KLQotI2Vsc2UKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy90eXBlb2YuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9jdHBzLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0ZS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBtcGwgewotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMSBcCi0gICAgKDMsKDQxLCA1MCwgPG5kbmJvb3N0L21wbC92ZWN0b3IvYXV4Xy9udW1iZXJlZF9jLmhwcD4pKQotIyAgIGluY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0KLX19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfQ0ZHX05PX1BSRVBST0NFU1NFRF9IRUFERVJTCi0KLSNlbmRpZiAvLyBORE5CT09TVF9NUExfVkVDVE9SX1ZFQ1RPUjUwX0NfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92b2lkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZvaWQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YWEyMzdiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbXBsL3ZvaWQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzYgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9WT0lEX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9NUExfVk9JRF9IUFBfSU5DTFVERUQKLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMS0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbXBsIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAkSWQ6IHZvaWQuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvdm9pZF9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ib29sLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9uYV9zcGVjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9jb25maWcvbXN2Yy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vY29uZmlnL3dvcmthcm91bmQuaHBwPgotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9PUEVOCi0KLS8vICBbSkRHIEZlYi00LTIwMDNdIG1hZGUgdm9pZF8gYSBjb21wbGV0ZSB0eXBlIHRvIGFsbG93IGl0IHRvIGJlCi0vLyAgaW5zdGFudGlhdGVkIHNvIHRoYXQgaXQgY2FuIGJlIHBhc3NlZCBpbiBhcyBhbiBvYmplY3QgdGhhdCBjYW4gYmUKLS8vICB1c2VkIHRvIHNlbGVjdCBhbiBvdmVybG9hZGVkIGZ1bmN0aW9uLiBQb3NzaWJsZSB1c2UgaW5jbHVkZXMgc2lnbmFsaW5nCi0vLyAgYSB6ZXJvIGFyaXR5IGZ1bmN0b3IgZXZhbHVhdGlvbiBjYWxsLgotc3RydWN0IHZvaWRfIHsgdHlwZWRlZiB2b2lkXyB0eXBlOyB9OwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbXBsIHsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotc3RydWN0IGlzX3ZvaWRfCi0gICAgOiBmYWxzZV8KLXsKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkKLSAgICB1c2luZyBmYWxzZV86OnZhbHVlOwotI2VuZGlmCi19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaXNfdm9pZF88dm9pZF8+Ci0gICAgOiB0cnVlXwotewotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKQotICAgIHVzaW5nIHRydWVfOjp2YWx1ZTsKLSNlbmRpZgotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotc3RydWN0IGlzX25vdF92b2lkXwotICAgIDogdHJ1ZV8KLXsKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkKLSAgICB1c2luZyB0cnVlXzo6dmFsdWU7Ci0jZW5kaWYKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBpc19ub3Rfdm9pZF88dm9pZF8+Ci0gICAgOiBmYWxzZV8KLXsKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkKLSAgICB1c2luZyBmYWxzZV86OnZhbHVlOwotI2VuZGlmCi19OwotCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoMSwgaXNfdm9pZF8pCi1ORE5CT09TVF9NUExfQVVYX05BX1NQRUMoMSwgaXNfbm90X3ZvaWRfKQotCi19fQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX1ZPSURfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L21wbC92b2lkX2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L21wbC92b2lkX2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmMmE3NmQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9tcGwvdm9pZF9md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotCi0jaWZuZGVmIE5ETkJPT1NUX01QTF9WT0lEX0ZXRF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTVBMX1ZPSURfRldEX0hQUF9JTkNMVURFRAotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAxLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9tcGwgZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICRJZDogdm9pZF9md2QuaHBwIDQ5MjY3IDIwMDgtMTAtMTEgMDY6MTk6MDJaIGFndXJ0b3ZveSAkCi0vLyAkRGF0ZTogMjAwOC0xMC0xMCAyMzoxOTowMiAtMDcwMCAoRnJpLCAxMCBPY3QgMjAwOCkgJAotLy8gJFJldmlzaW9uOiA0OTI2NyAkCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy9hZGxfYmFycmllci5ocHA+Ci0KLU5ETkJPT1NUX01QTF9BVVhfQURMX0JBUlJJRVJfTkFNRVNQQUNFX09QRU4KLQotc3RydWN0IHZvaWRfOwotCi1ORE5CT09TVF9NUExfQVVYX0FETF9CQVJSSUVSX05BTUVTUEFDRV9DTE9TRQotTkROQk9PU1RfTVBMX0FVWF9BRExfQkFSUklFUl9ERUNMKHZvaWRfKQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVBMX1ZPSURfRldEX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9uZXh0X3ByaW9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbmV4dF9wcmlvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRlNjAyODAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9uZXh0X3ByaW9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLS8vICBCb29zdCBuZXh0X3ByaW9yLmhwcCBoZWFkZXIgZmlsZSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gIChDKSBDb3B5cmlnaHQgRGF2ZSBBYnJhaGFtcyBhbmQgRGFuaWVsIFdhbGtlciAxOTk5LTIwMDMuIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdAotLy8gIFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdXRpbGl0eSBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLy8gIFJldmlzaW9uIEhpc3RvcnkKLS8vICAxMyBEZWMgMjAwMyAgQWRkZWQgbmV4dCh4LCBuKSBhbmQgcHJpb3IoeCwgbikgKERhbmllbCBXYWxrZXIpCi0KLSNpZm5kZWYgTkROQk9PU1RfTkVYVF9QUklPUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfTkVYVF9QUklPUl9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPGl0ZXJhdG9yPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi0vLyAgSGVscGVyIGZ1bmN0aW9ucyBmb3IgY2xhc3NlcyBsaWtlIGJpZGlyZWN0aW9uYWwgaXRlcmF0b3JzIG5vdCBzdXBwb3J0aW5nCi0vLyAgb3BlcmF0b3IrIGFuZCBvcGVyYXRvci0KLS8vCi0vLyAgVXNhZ2U6Ci0vLyAgICBjb25zdCBzdGQ6Omxpc3Q8VD46Oml0ZXJhdG9yIHAgPSBnZXRfc29tZV9pdGVyYXRvcigpOwotLy8gICAgY29uc3Qgc3RkOjpsaXN0PFQ+OjppdGVyYXRvciBwcmV2ID0gbmRuYm9vc3Q6OnByaW9yKHApOwotLy8gICAgY29uc3Qgc3RkOjpsaXN0PFQ+OjppdGVyYXRvciBuZXh0ID0gbmRuYm9vc3Q6Om5leHQocHJldiwgMik7Ci0KLS8vICBDb250cmlidXRlZCBieSBEYXZlIEFicmFoYW1zCi0KLXRlbXBsYXRlIDxjbGFzcyBUPgotaW5saW5lIFQgbmV4dChUIHgpIHsgcmV0dXJuICsreDsgfQotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgRGlzdGFuY2U+Ci1pbmxpbmUgVCBuZXh0KFQgeCwgRGlzdGFuY2UgbikKLXsKLSAgICBzdGQ6OmFkdmFuY2UoeCwgbik7Ci0gICAgcmV0dXJuIHg7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPgotaW5saW5lIFQgcHJpb3IoVCB4KSB7IHJldHVybiAtLXg7IH0KLQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIERpc3RhbmNlPgotaW5saW5lIFQgcHJpb3IoVCB4LCBEaXN0YW5jZSBuKQotewotICAgIHN0ZDo6YWR2YW5jZSh4LCAtbik7Ci0gICAgcmV0dXJuIHg7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAgLy8gTkROQk9PU1RfTkVYVF9QUklPUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvbm9uX3R5cGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9ub25fdHlwZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU1NTBiMWMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9ub25fdHlwZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLwotLy8gICAgICAgICAgIChDKSBDb3B5cmlnaHQgR2VubmFybyBQcm90YSAyMDAzLgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAgIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICAgICAgICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotI2lmbmRlZiBORE5CT09TVF9OT05fVFlQRV9IUFBfR1BfMjAwMzA0MTcKLSNkZWZpbmUgTkROQk9PU1RfTk9OX1RZUEVfSFBQX0dQXzIwMDMwNDE3Ci0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotICAvLyBKdXN0IGEgc2ltcGxlICJlbnZlbG9wZSIgZm9yIG5vbi10eXBlIHRlbXBsYXRlIHBhcmFtZXRlcnMuIFVzZWZ1bAotICAvLyB0byB3b3JrIGFyb3VuZCBzb21lIE1TVkMgZGVmaWNpZW5jaWVzLgotCi0gdGVtcGxhdGUgPHR5cGVuYW1lIFQsIFQgbj4KLSBzdHJ1Y3Qgbm9uX3R5cGUgeyB9OwotCi0KLX0KLQotCi0jZW5kaWYgLy8gaW5jbHVkZSBndWFyZApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9ub25jb3B5YWJsZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L25vbmNvcHlhYmxlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2FlOWQxMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L25vbmNvcHlhYmxlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLS8vICBCb29zdCBub25jb3B5YWJsZS5ocHAgaGVhZGVyIGZpbGUgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gIChDKSBDb3B5cmlnaHQgQmVtYW4gRGF3ZXMgMTk5OS0yMDAzLiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QKLS8vICBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZQotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3V0aWxpdHkgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfTk9OQ09QWUFCTEVfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX05PTkNPUFlBQkxFX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotLy8gIFByaXZhdGUgY29weSBjb25zdHJ1Y3RvciBhbmQgY29weSBhc3NpZ25tZW50IGVuc3VyZSBjbGFzc2VzIGRlcml2ZWQgZnJvbQotLy8gIGNsYXNzIG5vbmNvcHlhYmxlIGNhbm5vdCBiZSBjb3BpZWQuCi0KLS8vICBDb250cmlidXRlZCBieSBEYXZlIEFicmFoYW1zCi0KLW5hbWVzcGFjZSBub25jb3B5YWJsZV8gIC8vIHByb3RlY3Rpb24gZnJvbSB1bmludGVuZGVkIEFETAotewotICBjbGFzcyBub25jb3B5YWJsZQotICB7Ci0gICBwcm90ZWN0ZWQ6Ci0jaWZuZGVmIE5ETkJPT1NUX05PX0RFRkFVTFRFRF9GVU5DVElPTlMKLSAgICBORE5CT09TVF9DT05TVEVYUFIgbm9uY29weWFibGUoKSA9IGRlZmF1bHQ7Ci0gICAgfm5vbmNvcHlhYmxlKCkgPSBkZWZhdWx0OwotI2Vsc2UKLSAgICBub25jb3B5YWJsZSgpIHt9Ci0gICAgICB+bm9uY29weWFibGUoKSB7fQotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX05PX0RFTEVURURfRlVOQ1RJT05TCi0gICAgICAgIG5vbmNvcHlhYmxlKCBjb25zdCBub25jb3B5YWJsZSYgKSA9IGRlbGV0ZTsKLSAgICAgICAgbm9uY29weWFibGUmIG9wZXJhdG9yPSggY29uc3Qgbm9uY29weWFibGUmICkgPSBkZWxldGU7Ci0jZWxzZQotICAgIHByaXZhdGU6ICAvLyBlbXBoYXNpemUgdGhlIGZvbGxvd2luZyBtZW1iZXJzIGFyZSBwcml2YXRlCi0gICAgICBub25jb3B5YWJsZSggY29uc3Qgbm9uY29weWFibGUmICk7Ci0gICAgICBub25jb3B5YWJsZSYgb3BlcmF0b3I9KCBjb25zdCBub25jb3B5YWJsZSYgKTsKLSNlbmRpZgotICB9OwotfQotCi10eXBlZGVmIG5vbmNvcHlhYmxlXzo6bm9uY29weWFibGUgbm9uY29weWFibGU7Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAgLy8gTkROQk9PU1RfTk9OQ09QWUFCTEVfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L25vbmUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9ub25lLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDRlMTkyMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L25vbmUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDAzLCBGZXJuYW5kbyBMdWlzIENhY2Npb2xhIENhcmJhbGxhbC4KLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvb3B0aW9uYWwgZm9yIGRvY3VtZW50YXRpb24uCi0vLwotLy8gWW91IGFyZSB3ZWxjb21lIHRvIGNvbnRhY3QgdGhlIGF1dGhvciBhdDoKLS8vICBmZXJuYW5kb19jYWNjaW9sYUBob3RtYWlsLmNvbQotLy8KLSNpZm5kZWYgTkROQk9PU1RfTk9ORV8xN1NFUDIwMDNfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX05PTkVfMTdTRVAyMDAzX0hQUAotCi0jaW5jbHVkZSAibmRuYm9vc3Qvbm9uZV90LmhwcCIKLQotLy8gTk9URTogQm9ybGFuZCB1c2VycyBoYXZlIHRvIGluY2x1ZGUgdGhpcyBoZWFkZXIgb3V0c2lkZSBhbnkgcHJlY29tcGlsZWQgaGVhZGVycwotLy8gKGJjYzw9NS42NCBjYW5ub3QgaW5jbHVkZSBpbnN0YW5jZSBkYXRhIGluIGEgcHJlY29tcGlsZWQgaGVhZGVyKQotLy8gIC0tICogVG8gYmUgdmVyaWZpZWQsIG5vdyB0aGF0IHRoZXJlJ3Mgbm8gdW5uYW1lZCBuYW1lc3BhY2UKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbm9uZV90IGNvbnN0IG5vbmUgPSAoc3RhdGljX2Nhc3Q8bm9uZV90PigwKSkgOwotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9ub25lX3QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9ub25lX3QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNjg0Mjg4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvbm9uZV90LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAwMywgRmVybmFuZG8gTHVpcyBDYWNjaW9sYSBDYXJiYWxsYWwuCi0vLwotLy8gVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLS8vIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvb3B0aW9uYWwgZm9yIGRvY3VtZW50YXRpb24uCi0vLwotLy8gWW91IGFyZSB3ZWxjb21lIHRvIGNvbnRhY3QgdGhlIGF1dGhvciBhdDoKLS8vICBmZXJuYW5kb19jYWNjaW9sYUBob3RtYWlsLmNvbQotLy8KLSNpZm5kZWYgTkROQk9PU1RfTk9ORV9UXzE3U0VQMjAwM19IUFAKLSNkZWZpbmUgTkROQk9PU1RfTk9ORV9UXzE3U0VQMjAwM19IUFAKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIGRldGFpbCB7IHN0cnVjdCBub25lX2hlbHBlcnt9OyB9Ci0KLXR5cGVkZWYgaW50IGRldGFpbDo6bm9uZV9oZWxwZXI6Oipub25lX3QgOwotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vYm91bmRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2JvdW5kcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUxOWRlODEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vYm91bmRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLS8vICAoYykgQ29weXJpZ2h0IEZlcm5hbmRvIEx1aXMgQ2FjY2lvbGEgQ2FyYmFsbGFsIDIwMDAtMjAwNAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCi0vLyAgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgbGlicmFyeSBob21lIHBhZ2UgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9udW1lcmljL2NvbnZlcnNpb24KLS8vCi0vLyBDb250YWN0IHRoZSBhdXRob3IgYXQ6IGZlcm5hbmRvX2NhY2Npb2xhQGhvdG1haWwuY29tCi0vLyAKLSNpZm5kZWYgTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX0JPVU5EU18xMk5PVjIwMDJfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9CT1VORFNfMTJOT1YyMDAyX0hQUAotCi0jaW5jbHVkZSAibmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC9ib3VuZHMuaHBwIgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbnVtZXJpYyAKLXsKLQotdGVtcGxhdGU8Y2xhc3MgTj4KLXN0cnVjdCBib3VuZHMgOiBib3VuZHNkZXRhaWw6OmdldF9pbXBsPE4+Ojp0eXBlCi17fSA7Ci0KLX0gfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3Q6Om51bWVyaWMKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9jYXN0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2Nhc3QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1Nzk5ZmNkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2Nhc3QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotLy8gIChjKSBDb3B5cmlnaHQgRmVybmFuZG8gTHVpcyBDYWNjaW9sYSBDYXJiYWxsYWwgMjAwMC0yMDA0Ci0vLyAgVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLS8vICBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBsaWJyYXJ5IGhvbWUgcGFnZSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL251bWVyaWMvY29udmVyc2lvbgotLy8KLS8vIENvbnRhY3QgdGhlIGF1dGhvciBhdDogZmVybmFuZG9fY2FjY2lvbGFAaG90bWFpbC5jb20KLS8vCi0vLwotLy8gIFJldmlzaW9uIEhpc3RvcnkKLS8vCi0vLyAgICAxOSBOb3YgMjAwMSBTeW50YXRpYyBjaGFuZ2VzIGFzIHN1Z2dlc3RlZCBieSBEYXJpbiBBZGxlciAoRmVybmFuZG8gQ2FjY2lvbGEpCi0vLyAgICAwOCBOb3YgMjAwMSBGaXhlcyB0byBhY2NvbW1vZGF0ZSBNU1ZDIChGZXJuYW5kbyBDYWNjaW9sYSkKLS8vICAgIDA0IE5vdiAyMDAxIEZpeGVzIHRvIGFjY29tbW9kYXRlIGdjYzIuOTIgKEZlcm5hbmRvIENhY2Npb2xhKQotLy8gICAgMzAgT2N0IDIwMDEgU29tZSBmaXhlcyBzdWdnZXN0ZWQgYnkgRGFyeWxlIFdhbGtlciAoRmVybmFuZG8gQ2FjY2lvbGEpCi0vLyAgICAyNSBPY3QgMjAwMSBJbml0aWFsIGJvb3N0aWZpY2F0aW9uIChGZXJuYW5kbyBDYWNjaW9sYSkKLS8vICAgIDIzIEphbiAyMDA0IEluaXRhbCBhZGQgdG8gY3ZzIChwb3N0IHJldmlldylzCi0vLyAgICAyMiBKdW4gMjAxMSBBZGRlZCBzdXBwb3J0IGZvciBzcGVjaWFsaXppbmcgY2FzdCBwb2xpY2llcyB2aWEgbnVtZXJpY19jYXN0X3RyYWl0cyAoQnJhbmRvbiBLb2huKS4KLS8vCi0jaWZuZGVmIE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9DQVNUXzI1T0NUMjAwMV9IUFAKLSNkZWZpbmUgTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX0NBU1RfMjVPQ1QyMDAxX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1ODIpKQotCi0jICBpbmNsdWRlPG5kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvb2xkX251bWVyaWNfY2FzdC5ocHA+Ci0KLSNlbHNlCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vY29udmVydGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vbnVtZXJpY19jYXN0X3RyYWl0cy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gCi0gICAgaW5saW5lIFRhcmdldCBudW1lcmljX2Nhc3QoIFNvdXJjZSBhcmcgKQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBudW1lcmljOjpjb252ZXJzaW9uX3RyYWl0czxUYXJnZXQsIFNvdXJjZT4gICBjb252X3RyYWl0czsKLSAgICAgICAgdHlwZWRlZiBudW1lcmljOjpudW1lcmljX2Nhc3RfdHJhaXRzPFRhcmdldCwgU291cmNlPiBjYXN0X3RyYWl0czsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6bnVtZXJpYzo6Y29udmVydGVyCi0gICAgICAgICAgICA8Ci0gICAgICAgICAgICAgICAgVGFyZ2V0LAotICAgICAgICAgICAgICAgIFNvdXJjZSwgCi0gICAgICAgICAgICAgICAgY29udl90cmFpdHMsCi0gICAgICAgICAgICAgICAgdHlwZW5hbWUgY2FzdF90cmFpdHM6Om92ZXJmbG93X3BvbGljeSwgCi0gICAgICAgICAgICAgICAgdHlwZW5hbWUgY2FzdF90cmFpdHM6OnJvdW5kaW5nX3BvbGljeSwgCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6Om51bWVyaWM6OnJhd19jb252ZXJ0ZXI8IGNvbnZfdHJhaXRzID4sCi0gICAgICAgICAgICAgICAgdHlwZW5hbWUgY2FzdF90cmFpdHM6OnJhbmdlX2NoZWNraW5nX3BvbGljeQotICAgICAgICAgICAgPiBjb252ZXJ0ZXI7Ci0gICAgICAgIHJldHVybiBjb252ZXJ0ZXI6OmNvbnZlcnQoYXJnKTsKLSAgICB9Ci0gICAgCi0gICAgdXNpbmcgbnVtZXJpYzo6YmFkX251bWVyaWNfY2FzdDsKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2NvbnZlcnNpb25fdHJhaXRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2NvbnZlcnNpb25fdHJhaXRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGUyNWQ4ZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9jb252ZXJzaW9uX3RyYWl0cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi0vLyAgKGMpIENvcHlyaWdodCBGZXJuYW5kbyBMdWlzIENhY2Npb2xhIENhcmJhbGxhbCAyMDAwLTIwMDQKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZQotLy8gIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGxpYnJhcnkgaG9tZSBwYWdlIGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbnVtZXJpYy9jb252ZXJzaW9uCi0vLwotLy8gQ29udGFjdCB0aGUgYXV0aG9yIGF0OiBmZXJuYW5kb19jYWNjaW9sYUBob3RtYWlsLmNvbQotLy8gCi0jaWZuZGVmIE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9DT05WRVJTSU9OX1RSQUlUU19GTENfMTJOT1YyMDAyX0hQUAotI2RlZmluZSBORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fQ09OVkVSU0lPTl9UUkFJVFNfRkxDXzEyTk9WMjAwMl9IUFAKLQotI2luY2x1ZGUgIm5kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvY29udmVyc2lvbl90cmFpdHMuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC9jb25maWcuaHBwIgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbnVtZXJpYwotewotCi10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBTPgotc3RydWN0IGNvbnZlcnNpb25fdHJhaXRzIAotICAgIDogY29udmRldGFpbDo6Z2V0X2NvbnZlcnNpb25fdHJhaXRzPFQsUz46OnR5cGUgCi17Ci0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKQotICAgIHR5cGVkZWYgdHlwZW5hbWUgY29udmRldGFpbDo6Z2V0X2NvbnZlcnNpb25fdHJhaXRzPFQsUz46OnR5cGUgYmFzZV87Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlXzo6dGFyZ2V0X3R5cGUgICAgIHRhcmdldF90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZV86OnNvdXJjZV90eXBlICAgICBzb3VyY2VfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfOjpyZXN1bHRfdHlwZSAgICAgcmVzdWx0X3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlXzo6YXJndW1lbnRfdHlwZSAgIGFyZ3VtZW50X3R5cGU7Ci0jZW5kaWYKLX0gOwotCi19IH0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0OjpudW1lcmljCi0KLSNlbmRpZgotLy8KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vY29udmVydGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2NvbnZlcnRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk1NzUyZmYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vY29udmVydGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY4ICswLDAgQEAKLS8vICAoYykgQ29weXJpZ2h0IEZlcm5hbmRvIEx1aXMgQ2FjY2lvbGEgQ2FyYmFsbGFsIDIwMDAtMjAwNAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCi0vLyAgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgbGlicmFyeSBob21lIHBhZ2UgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9udW1lcmljL2NvbnZlcnNpb24KLS8vCi0vLyBDb250YWN0IHRoZSBhdXRob3IgYXQ6IGZlcm5hbmRvX2NhY2Npb2xhQGhvdG1haWwuY29tCi0vLyAKLSNpZm5kZWYgTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX0NPTlZFUlRFUl9GTENfMTJOT1YyMDAyX0hQUAotI2RlZmluZSBORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fQ09OVkVSVEVSX0ZMQ18xMk5PVjIwMDJfSFBQCi0KLSNpbmNsdWRlICJuZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vY29udmVyc2lvbl90cmFpdHMuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9jb252ZXJ0ZXJfcG9saWNpZXMuaHBwIgotCi0jaW5jbHVkZSAibmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC9jb252ZXJ0ZXIuaHBwIgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbnVtZXJpYyAKLXsKLQotdGVtcGxhdGU8Y2xhc3MgVCwKLSAgICAgICAgIGNsYXNzIFMsCi0gICAgICAgICBjbGFzcyBUcmFpdHMgICAgICAgICAgID0gY29udmVyc2lvbl90cmFpdHM8VCxTPiwKLSAgICAgICAgIGNsYXNzIE92ZXJmbG93SGFuZGxlciAgPSBkZWZfb3ZlcmZsb3dfaGFuZGxlciwKLSAgICAgICAgIGNsYXNzIEZsb2F0MkludFJvdW5kZXIgPSBUcnVuYzwgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBUcmFpdHM6OnNvdXJjZV90eXBlPiAgLAotICAgICAgICAgY2xhc3MgUmF3Q29udmVydGVyICAgICA9IHJhd19jb252ZXJ0ZXI8VHJhaXRzPiwKLSAgICAgICAgIGNsYXNzIFVzZXJSYW5nZUNoZWNrZXIgPSBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlcgotICAgICAgICA+Ci1zdHJ1Y3QgY29udmVydGVyIDogY29udmRldGFpbDo6Z2V0X2NvbnZlcnRlcl9pbXBsPFRyYWl0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3ZlcmZsb3dIYW5kbGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGbG9hdDJJbnRSb3VuZGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSYXdDb252ZXJ0ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJSYW5nZUNoZWNrZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+Ojp0eXBlCi17Ci0gIHR5cGVkZWYgVHJhaXRzIHRyYWl0cyA7Ci0KLSAgdHlwZWRlZiB0eXBlbmFtZSBUcmFpdHM6OmFyZ3VtZW50X3R5cGUgYXJndW1lbnRfdHlwZSA7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgVHJhaXRzOjpyZXN1bHRfdHlwZSAgIHJlc3VsdF90eXBlICAgOwotCi0gIHJlc3VsdF90eXBlIG9wZXJhdG9yKCkgKCBhcmd1bWVudF90eXBlIHMgKSBjb25zdCB7IHJldHVybiB0aGlzLT5jb252ZXJ0KHMpIDsgfQotfSA7Ci0KLQotCi10ZW1wbGF0ZTxjbGFzcyBTLAotICAgICAgICAgY2xhc3MgT3ZlcmZsb3dIYW5kbGVyICA9IGRlZl9vdmVyZmxvd19oYW5kbGVyLAotICAgICAgICAgY2xhc3MgRmxvYXQySW50Um91bmRlciA9IFRydW5jPFM+ICAsCi0gICAgICAgICBjbGFzcyBVc2VyUmFuZ2VDaGVja2VyID0gVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIKLSAgICAgICAgPgotc3RydWN0IG1ha2VfY29udmVydGVyX2Zyb20KLXsKLSAgdGVtcGxhdGU8Y2xhc3MgVCwKLSAgICAgICAgICAgY2xhc3MgVHJhaXRzICAgICAgID0gY29udmVyc2lvbl90cmFpdHM8VCxTPiwKLSAgICAgICAgICAgY2xhc3MgUmF3Q29udmVydGVyID0gcmF3X2NvbnZlcnRlcjxUcmFpdHM+Ci0gICAgICAgICAgPiAKLSAgc3RydWN0IHRvCi0gIHsKLSAgICB0eXBlZGVmIGNvbnZlcnRlcjxULFMsVHJhaXRzLE92ZXJmbG93SGFuZGxlcixGbG9hdDJJbnRSb3VuZGVyLFJhd0NvbnZlcnRlcixVc2VyUmFuZ2VDaGVja2VyPiB0eXBlIDsKLSAgfSA7Ci0KLX0gOwotCi19IH0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0OjpudW1lcmljCi0KLSNlbmRpZgotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2NvbnZlcnRlcl9wb2xpY2llcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9jb252ZXJ0ZXJfcG9saWNpZXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMWM5NzhlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2NvbnZlcnRlcl9wb2xpY2llcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxOTQgKzAsMCBAQAotLy8gIChjKSBDb3B5cmlnaHQgRmVybmFuZG8gTHVpcyBDYWNjaW9sYSBDYXJiYWxsYWwgMjAwMC0yMDA0Ci0vLyAgVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLS8vICBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBsaWJyYXJ5IGhvbWUgcGFnZSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL251bWVyaWMvY29udmVyc2lvbgotLy8KLS8vIENvbnRhY3QgdGhlIGF1dGhvciBhdDogZmVybmFuZG9fY2FjY2lvbGFAaG90bWFpbC5jb20KLS8vCi0jaWZuZGVmIE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9DT05WRVJURVJfUE9MSUNJRVNfRkxDXzEyTk9WMjAwMl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX0NPTlZFUlRFUl9QT0xJQ0lFU19GTENfMTJOT1YyMDAyX0hQUAotCi0jaW5jbHVkZSA8dHlwZWluZm8+IC8vIGZvciBzdGQ6OmJhZF9jYXN0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcvbm9fdHIxL2NtYXRoLmhwcD4gLy8gZm9yIHN0ZDo6Zmxvb3IgYW5kIHN0ZDo6Y2VpbAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rocm93X2V4Y2VwdGlvbi5ocHA+Ci0KLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgotCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYXJpdGhtZXRpYy5ocHAiCi0KLSNpbmNsdWRlICJuZG5ib29zdC9tcGwvaWYuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L21wbC9pbnRlZ3JhbF9jLmhwcCIKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG51bWVyaWMKLXsKLQotdGVtcGxhdGU8Y2xhc3MgUz4KLXN0cnVjdCBUcnVuYwotewotICB0eXBlZGVmIFMgc291cmNlX3R5cGUgOwotCi0gIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjppZl88IGlzX2FyaXRobWV0aWM8Uz4sUyxTIGNvbnN0Jj46OnR5cGUgYXJndW1lbnRfdHlwZSA7Ci0KLSAgc3RhdGljIHNvdXJjZV90eXBlIG5lYXJieWludCAoIGFyZ3VtZW50X3R5cGUgcyApCi0gIHsKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19TVERDX05BTUVTUEFDRSkKLSAgICB1c2luZyBzdGQ6OmZsb29yIDsKLSAgICB1c2luZyBzdGQ6OmNlaWwgIDsKLSNlbmRpZgotCi0gICAgcmV0dXJuIHMgPCBzdGF0aWNfY2FzdDxTPigwKSA/IGNlaWwocykgOiBmbG9vcihzKSA7Ci0gIH0KLQotICB0eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzwgc3RkOjpmbG9hdF9yb3VuZF9zdHlsZSwgc3RkOjpyb3VuZF90b3dhcmRfemVybz4gcm91bmRfc3R5bGUgOwotfSA7Ci0KLQotCi10ZW1wbGF0ZTxjbGFzcyBTPgotc3RydWN0IEZsb29yCi17Ci0gIHR5cGVkZWYgUyBzb3VyY2VfdHlwZSA7Ci0KLSAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmlmXzwgaXNfYXJpdGhtZXRpYzxTPixTLFMgY29uc3QmPjo6dHlwZSBhcmd1bWVudF90eXBlIDsKLQotICBzdGF0aWMgc291cmNlX3R5cGUgbmVhcmJ5aW50ICggYXJndW1lbnRfdHlwZSBzICkKLSAgewotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFKQotICAgIHVzaW5nIHN0ZDo6Zmxvb3IgOwotI2VuZGlmCi0KLSAgICByZXR1cm4gZmxvb3IocykgOwotICB9Ci0KLSAgdHlwZWRlZiBtcGw6OmludGVncmFsX2M8IHN0ZDo6ZmxvYXRfcm91bmRfc3R5bGUsIHN0ZDo6cm91bmRfdG93YXJkX25lZ19pbmZpbml0eT4gcm91bmRfc3R5bGUgOwotfSA7Ci0KLXRlbXBsYXRlPGNsYXNzIFM+Ci1zdHJ1Y3QgQ2VpbAotewotICB0eXBlZGVmIFMgc291cmNlX3R5cGUgOwotCi0gIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjppZl88IGlzX2FyaXRobWV0aWM8Uz4sUyxTIGNvbnN0Jj46OnR5cGUgYXJndW1lbnRfdHlwZSA7Ci0KLSAgc3RhdGljIHNvdXJjZV90eXBlIG5lYXJieWludCAoIGFyZ3VtZW50X3R5cGUgcyApCi0gIHsKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19TVERDX05BTUVTUEFDRSkKLSAgICB1c2luZyBzdGQ6OmNlaWwgOwotI2VuZGlmCi0KLSAgICByZXR1cm4gY2VpbChzKSA7Ci0gIH0KLQotICB0eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzwgc3RkOjpmbG9hdF9yb3VuZF9zdHlsZSwgc3RkOjpyb3VuZF90b3dhcmRfaW5maW5pdHk+IHJvdW5kX3N0eWxlIDsKLX0gOwotCi10ZW1wbGF0ZTxjbGFzcyBTPgotc3RydWN0IFJvdW5kRXZlbgotewotICB0eXBlZGVmIFMgc291cmNlX3R5cGUgOwotCi0gIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjppZl88IGlzX2FyaXRobWV0aWM8Uz4sUyxTIGNvbnN0Jj46OnR5cGUgYXJndW1lbnRfdHlwZSA7Ci0KLSAgc3RhdGljIHNvdXJjZV90eXBlIG5lYXJieWludCAoIGFyZ3VtZW50X3R5cGUgcyApCi0gIHsKLSAgICAvLyBBbGdvcml0aG0gY29udHJpYnV0ZWQgYnkgR3VpbGxhdW1lIE1lbHF1aW9uZAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UpCi0gICAgdXNpbmcgc3RkOjpmbG9vciA7Ci0gICAgdXNpbmcgc3RkOjpjZWlsICA7Ci0jZW5kaWYKLQotICAgIC8vIG9ubHkgd29ya3MgaW5zaWRlIHRoZSByYW5nZSBub3QgYXQgdGhlIGJvdW5kYXJpZXMKLSAgICBTIHByZXYgPSBmbG9vcihzKTsKLSAgICBTIG5leHQgPSBjZWlsKHMpOwotCi0gICAgUyBydCA9IChzIC0gcHJldikgLSAobmV4dCAtIHMpOyAvLyByZW1haW5kZXIgdHlwZQotCi0gICAgUyBjb25zdCB6ZXJvKDAuMCk7Ci0gICAgUyBjb25zdCB0d28oMi4wKTsKLQotICAgIGlmICggcnQgPCB6ZXJvICkKLSAgICAgIHJldHVybiBwcmV2OwotICAgIGVsc2UgaWYgKCBydCA+IHplcm8gKQotICAgICAgcmV0dXJuIG5leHQ7Ci0gICAgZWxzZQotICAgIHsKLSAgICAgIGJvb2wgaXNfcHJldl9ldmVuID0gdHdvICogZmxvb3IocHJldiAvIHR3bykgPT0gcHJldiA7Ci0gICAgICByZXR1cm4gKCBpc19wcmV2X2V2ZW4gPyBwcmV2IDogbmV4dCApIDsKLSAgICB9Ci0gIH0KLQotICB0eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzwgc3RkOjpmbG9hdF9yb3VuZF9zdHlsZSwgc3RkOjpyb3VuZF90b19uZWFyZXN0PiByb3VuZF9zdHlsZSA7Ci19IDsKLQotCi1lbnVtIHJhbmdlX2NoZWNrX3Jlc3VsdAotewotICBjSW5SYW5nZSAgICAgPSAwICwKLSAgY05lZ092ZXJmbG93ID0gMSAsCi0gIGNQb3NPdmVyZmxvdyA9IDIKLX0gOwotCi1jbGFzcyBiYWRfbnVtZXJpY19jYXN0IDogcHVibGljIHN0ZDo6YmFkX2Nhc3QKLXsKLSAgcHVibGljOgotCi0gICAgdmlydHVhbCBjb25zdCBjaGFyICogd2hhdCgpIGNvbnN0IHRocm93KCkKLSAgICAgIHsgIHJldHVybiAiYmFkIG51bWVyaWMgY29udmVyc2lvbjogb3ZlcmZsb3ciOyB9Ci19OwotCi1jbGFzcyBuZWdhdGl2ZV9vdmVyZmxvdyA6IHB1YmxpYyBiYWRfbnVtZXJpY19jYXN0Ci17Ci0gIHB1YmxpYzoKLQotICAgIHZpcnR1YWwgY29uc3QgY2hhciAqIHdoYXQoKSBjb25zdCB0aHJvdygpCi0gICAgICB7ICByZXR1cm4gImJhZCBudW1lcmljIGNvbnZlcnNpb246IG5lZ2F0aXZlIG92ZXJmbG93IjsgfQotfTsKLWNsYXNzIHBvc2l0aXZlX292ZXJmbG93IDogcHVibGljIGJhZF9udW1lcmljX2Nhc3QKLXsKLSAgcHVibGljOgotCi0gICAgdmlydHVhbCBjb25zdCBjaGFyICogd2hhdCgpIGNvbnN0IHRocm93KCkKLSAgICAgIHsgcmV0dXJuICJiYWQgbnVtZXJpYyBjb252ZXJzaW9uOiBwb3NpdGl2ZSBvdmVyZmxvdyI7IH0KLX07Ci0KLXN0cnVjdCBkZWZfb3ZlcmZsb3dfaGFuZGxlcgotewotICB2b2lkIG9wZXJhdG9yKCkgKCByYW5nZV9jaGVja19yZXN1bHQgciApIC8vIHRocm93KG5lZ2F0aXZlX292ZXJmbG93LHBvc2l0aXZlX292ZXJmbG93KQotICB7Ci0jaWZuZGVmIE5ETkJPT1NUX05PX0VYQ0VQVElPTlMKLSAgICBpZiAoIHIgPT0gY05lZ092ZXJmbG93ICkKLSAgICAgIHRocm93IG5lZ2F0aXZlX292ZXJmbG93KCkgOwotICAgIGVsc2UgaWYgKCByID09IGNQb3NPdmVyZmxvdyApCi0gICAgICAgICAgIHRocm93IHBvc2l0aXZlX292ZXJmbG93KCkgOwotI2Vsc2UKLSAgICBpZiAoIHIgPT0gY05lZ092ZXJmbG93ICkKLSAgICAgIDo6bmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihuZWdhdGl2ZV9vdmVyZmxvdygpKSA7Ci0gICAgZWxzZSBpZiAoIHIgPT0gY1Bvc092ZXJmbG93ICkKLSAgICAgICAgICAgOjpuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKHBvc2l0aXZlX292ZXJmbG93KCkpIDsKLSNlbmRpZgotICB9Ci19IDsKLQotc3RydWN0IHNpbGVudF9vdmVyZmxvd19oYW5kbGVyCi17Ci0gIHZvaWQgb3BlcmF0b3IoKSAoIHJhbmdlX2NoZWNrX3Jlc3VsdCApIHt9IC8vIHRocm93KCkKLX0gOwotCi10ZW1wbGF0ZTxjbGFzcyBUcmFpdHM+Ci1zdHJ1Y3QgcmF3X2NvbnZlcnRlcgotewotICB0eXBlZGVmIHR5cGVuYW1lIFRyYWl0czo6cmVzdWx0X3R5cGUgICByZXN1bHRfdHlwZSAgIDsKLSAgdHlwZWRlZiB0eXBlbmFtZSBUcmFpdHM6OmFyZ3VtZW50X3R5cGUgYXJndW1lbnRfdHlwZSA7Ci0KLSAgc3RhdGljIHJlc3VsdF90eXBlIGxvd19sZXZlbF9jb252ZXJ0ICggYXJndW1lbnRfdHlwZSBzICkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8cmVzdWx0X3R5cGU+KHMpIDsgfQotfSA7Ci0KLXN0cnVjdCBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciB7fSA7Ci0KLX0gfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3Q6Om51bWVyaWMKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvYm91bmRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC9ib3VuZHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OWQzMjAyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC9ib3VuZHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotLy8gIChjKSBDb3B5cmlnaHQgRmVybmFuZG8gTHVpcyBDYWNjaW9sYSBDYXJiYWxsYWwgMjAwMC0yMDA0Ci0vLyAgVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLS8vICBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBsaWJyYXJ5IGhvbWUgcGFnZSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL251bWVyaWMvY29udmVyc2lvbgotLy8KLS8vIENvbnRhY3QgdGhlIGF1dGhvciBhdDogZmVybmFuZG9fY2FjY2lvbGFAaG90bWFpbC5jb20KLS8vIAotI2lmbmRlZiBORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fQk9VTkRTX0RFVEFJTF9GTENfMTJOT1YyMDAyX0hQUAotI2RlZmluZSBORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fQk9VTkRTX0RFVEFJTF9GTENfMTJOT1YyMDAyX0hQUAotCi0jaW5jbHVkZSAibmRuYm9vc3QvbGltaXRzLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC9jb25maWcuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L21wbC9pZi5ocHAiCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBudW1lcmljIHsgbmFtZXNwYWNlIGJvdW5kc2RldGFpbAotewotICB0ZW1wbGF0ZTxjbGFzcyBOPgotICBjbGFzcyBJbnRlZ3JhbAotICB7Ci0gICAgICB0eXBlZGVmIHN0ZDo6bnVtZXJpY19saW1pdHM8Tj4gbGltaXRzIDsKLQotICAgIHB1YmxpYyA6Ci0gICAgCi0gICAgICBzdGF0aWMgTiBsb3dlc3QgICgpIHsgcmV0dXJuIGxpbWl0czo6bWluIE5ETkJPT1NUX1BSRVZFTlRfTUFDUk9fU1VCU1RJVFVUSU9OICgpOyB9Ci0gICAgICBzdGF0aWMgTiBoaWdoZXN0ICgpIHsgcmV0dXJuIGxpbWl0czo6bWF4IE5ETkJPT1NUX1BSRVZFTlRfTUFDUk9fU1VCU1RJVFVUSU9OICgpOyB9Ci0gICAgICBzdGF0aWMgTiBzbWFsbGVzdCgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PE4+KDEpOyB9Ci0gIH0gOwotCi0gIHRlbXBsYXRlPGNsYXNzIE4+Ci0gIGNsYXNzIEZsb2F0Ci0gIHsKLSAgICAgIHR5cGVkZWYgc3RkOjpudW1lcmljX2xpbWl0czxOPiBsaW1pdHMgOwotCi0gICAgcHVibGljIDoKLSAgICAKLSAgICAgIHN0YXRpYyBOIGxvd2VzdCAgKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Tj4oLWxpbWl0czo6bWF4IE5ETkJPT1NUX1BSRVZFTlRfTUFDUk9fU1VCU1RJVFVUSU9OICgpKSA7IH0KLSAgICAgIHN0YXRpYyBOIGhpZ2hlc3QgKCkgeyByZXR1cm4gbGltaXRzOjptYXggTkROQk9PU1RfUFJFVkVOVF9NQUNST19TVUJTVElUVVRJT04gKCk7IH0KLSAgICAgIHN0YXRpYyBOIHNtYWxsZXN0KCkgeyByZXR1cm4gbGltaXRzOjptaW4gTkROQk9PU1RfUFJFVkVOVF9NQUNST19TVUJTVElUVVRJT04gKCk7IH0KLSAgfSA7Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgTj4KLSAgc3RydWN0IGdldF9pbXBsCi0gIHsKLSAgICB0eXBlZGVmIG1wbDo6Ym9vbF88IDo6c3RkOjpudW1lcmljX2xpbWl0czxOPjo6aXNfaW50ZWdlciA+IGlzX2ludCA7Ci0KLSAgICB0eXBlZGVmIEludGVncmFsPE4+IGltcGxfaW50ICAgOwotICAgIHR5cGVkZWYgRmxvYXQgICA8Tj4gaW1wbF9mbG9hdCA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6aWZfPGlzX2ludCxpbXBsX2ludCxpbXBsX2Zsb2F0Pjo6dHlwZSB0eXBlIDsKLSAgfSA7Ci0KLX0gfSB9IC8vIG5hbWVzcGFjZSBuZG5ib29zdDo6bnVtZXJpYzo6Ym91bmRzZGV0YWlsLgotCi0jZW5kaWYKLS8vCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL2NvbnZlcnNpb25fdHJhaXRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC9jb252ZXJzaW9uX3RyYWl0cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA5ZmUxMDcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL2NvbnZlcnNpb25fdHJhaXRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk3ICswLDAgQEAKLS8vICAoYykgQ29weXJpZ2h0IEZlcm5hbmRvIEx1aXMgQ2FjY2lvbGEgQ2FyYmFsbGFsIDIwMDAtMjAwNAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCi0vLyAgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgbGlicmFyeSBob21lIHBhZ2UgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9udW1lcmljL2NvbnZlcnNpb24KLS8vCi0vLyBDb250YWN0IHRoZSBhdXRob3IgYXQ6IGZlcm5hbmRvX2NhY2Npb2xhQGhvdG1haWwuY29tCi0vLyAKLSNpZm5kZWYgTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX0RFVEFJTF9DT05WRVJTSU9OX1RSQUlUU19GTENfMTJOT1YyMDAyX0hQUAotI2RlZmluZSBORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fREVUQUlMX0NPTlZFUlNJT05fVFJBSVRTX0ZMQ18xMk5PVjIwMDJfSFBQCi0KLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9pc19hcml0aG1ldGljLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfY3YuaHBwIgotCi0jaW5jbHVkZSAibmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC9tZXRhLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL2ludF9mbG9hdF9taXh0dXJlLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL3NpZ25fbWl4dHVyZS5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC91ZHRfYnVpbHRpbl9taXh0dXJlLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL2lzX3N1YnJhbmdlZC5ocHAiCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBudW1lcmljIHsgbmFtZXNwYWNlIGNvbnZkZXRhaWwKLXsKLSAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gIC8vIEltcGxlbWVudGF0aW9uIG9mIHRoZSBDb252ZXJzaW9uIFRyYWl0cyBmb3IgVCAhPSBTCi0gIC8vCi0gIC8vIFRoaXMgaXMgYSBWSVNJQkxFIGJhc2UgY2xhc3Mgb2YgdGhlIHVzZXItbGV2ZWwgY29udmVyc2lvbl90cmFpdHM8PiBjbGFzcy4KLSAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gIHRlbXBsYXRlPGNsYXNzIFQsY2xhc3MgUz4KLSAgc3RydWN0IG5vbl90cml2aWFsX3RyYWl0c19pbXBsCi0gIHsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGdldF9pbnRfZmxvYXRfbWl4dHVyZSAgIDxULFM+Ojp0eXBlIGludF9mbG9hdF9taXh0dXJlIDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGdldF9zaWduX21peHR1cmUgICAgICAgIDxULFM+Ojp0eXBlIHNpZ25fbWl4dHVyZSA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBnZXRfdWR0X2J1aWx0aW5fbWl4dHVyZSA8VCxTPjo6dHlwZSB1ZHRfYnVpbHRpbl9taXh0dXJlIDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgZ2V0X2lzX3N1YnJhbmdlZDxULFM+Ojp0eXBlIHN1YnJhbmdlZCA7Ci0KLSAgICB0eXBlZGVmIG1wbDo6ZmFsc2VfIHRyaXZpYWwgOwotCi0gICAgdHlwZWRlZiBUIHRhcmdldF90eXBlIDsKLSAgICB0eXBlZGVmIFMgc291cmNlX3R5cGUgOwotICAgIHR5cGVkZWYgVCByZXN1bHRfdHlwZSA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6aWZfPCBpc19hcml0aG1ldGljPFM+LCBTLCBTIGNvbnN0Jj46OnR5cGUgYXJndW1lbnRfdHlwZSA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6aWZfPHN1YnJhbmdlZCxTLFQ+Ojp0eXBlIHN1cGVydHlwZSA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmlmXzxzdWJyYW5nZWQsVCxTPjo6dHlwZSBzdWJ0eXBlICAgOwotICB9IDsKLQotICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgLy8gSW1wbGVtZW50YXRpb24gb2YgdGhlIENvbnZlcnNpb24gVHJhaXRzIGZvciBUID09IFMKLSAgLy8KLSAgLy8gVGhpcyBpcyBhIFZJU0lCTEUgYmFzZSBjbGFzcyBvZiB0aGUgdXNlci1sZXZlbCBjb252ZXJzaW9uX3RyYWl0czw+IGNsYXNzLgotICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgdGVtcGxhdGU8Y2xhc3MgTj4KLSAgc3RydWN0IHRyaXZpYWxfdHJhaXRzX2ltcGwKLSAgewotICAgIHR5cGVkZWYgdHlwZW5hbWUgZ2V0X2ludF9mbG9hdF9taXh0dXJlICA8TixOPjo6dHlwZSBpbnRfZmxvYXRfbWl4dHVyZSA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBnZXRfc2lnbl9taXh0dXJlICAgICAgIDxOLE4+Ojp0eXBlIHNpZ25fbWl4dHVyZSA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBnZXRfdWR0X2J1aWx0aW5fbWl4dHVyZTxOLE4+Ojp0eXBlIHVkdF9idWlsdGluX21peHR1cmUgOwotCi0gICAgdHlwZWRlZiBtcGw6OmZhbHNlXyBzdWJyYW5nZWQgOwotICAgIHR5cGVkZWYgbXBsOjp0cnVlXyAgdHJpdmlhbCA7Ci0KLSAgICB0eXBlZGVmIE4gICAgICAgIHRhcmdldF90eXBlIDsKLSAgICB0eXBlZGVmIE4gICAgICAgIHNvdXJjZV90eXBlIDsKLSAgICB0eXBlZGVmIE4gY29uc3QmIHJlc3VsdF90eXBlIDsKLSAgICB0eXBlZGVmIE4gY29uc3QmIGFyZ3VtZW50X3R5cGUgOwotCi0gICAgdHlwZWRlZiBOIHN1cGVydHlwZSA7Ci0gICAgdHlwZWRlZiBOIHN1YnR5cGUgIDsKLQotICB9IDsKLQotICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgLy8gVG9wIGxldmVsIGltcGxlbWVudGF0aW9uIHNlbGVjdG9yLgotICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgUz4KLSAgc3RydWN0IGdldF9jb252ZXJzaW9uX3RyYWl0cwotICB7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSByZW1vdmVfY3Y8VD46OnR5cGUgdGFyZ2V0X3R5cGUgOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVtb3ZlX2N2PFM+Ojp0eXBlIHNvdXJjZV90eXBlIDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgaXNfc2FtZTx0YXJnZXRfdHlwZSxzb3VyY2VfdHlwZT46OnR5cGUgaXNfdHJpdmlhbCA7Ci0KLSAgICB0eXBlZGVmIHRyaXZpYWxfdHJhaXRzX2ltcGwgICAgPHRhcmdldF90eXBlPiAgICAgICAgICAgICB0cml2aWFsX2ltcCA7Ci0gICAgdHlwZWRlZiBub25fdHJpdmlhbF90cmFpdHNfaW1wbDx0YXJnZXRfdHlwZSxzb3VyY2VfdHlwZT4gbm9uX3RyaXZpYWxfaW1wIDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjppZl88aXNfdHJpdmlhbCx0cml2aWFsX2ltcCxub25fdHJpdmlhbF9pbXA+Ojp0eXBlIHR5cGUgOwotICB9IDsKLQotfSB9IH0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0OjpudW1lcmljOjpjb252ZGV0YWlsCi0KLSNlbmRpZgotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC9jb252ZXJ0ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL2NvbnZlcnRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3MDk5ZWYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL2NvbnZlcnRlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MDIgKzAsMCBAQAotLy8gIChjKSBDb3B5cmlnaHQgRmVybmFuZG8gTHVpcyBDYWNjaW9sYSBDYXJiYWxsYWwgMjAwMC0yMDA0Ci0vLyAgVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLS8vICBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBsaWJyYXJ5IGhvbWUgcGFnZSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL251bWVyaWMvY29udmVyc2lvbgotLy8KLS8vIENvbnRhY3QgdGhlIGF1dGhvciBhdDogZmVybmFuZG9fY2FjY2lvbGFAaG90bWFpbC5jb20KLS8vCi0jaWZuZGVmIE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9ERVRBSUxfQ09OVkVSVEVSX0ZMQ18xMk5PVjIwMDJfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9ERVRBSUxfQ09OVkVSVEVSX0ZMQ18xMk5PVjIwMDJfSFBQCi0KLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgotCi0jaW5jbHVkZSAibmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC9tZXRhLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL2NvbnZlcnNpb25fdHJhaXRzLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vYm91bmRzLmhwcCIKLQotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NhbWUuaHBwIgotCi0jaW5jbHVkZSAibmRuYm9vc3QvbXBsL2ludGVncmFsX2MuaHBwIgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbnVtZXJpYyB7IG5hbWVzcGFjZSBjb252ZGV0YWlsCi17Ci0gIC8vIEludGVncmFsIENvbnN0YW50cyByZXByZXNlbnRpbmcgcm91bmRpbmcgbW9kZXMKLSAgdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c3RkOjpmbG9hdF9yb3VuZF9zdHlsZSwgc3RkOjpyb3VuZF90b3dhcmRfemVybz4gICAgICAgICByb3VuZDJ6ZXJvX2MgOwotICB0eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OmZsb2F0X3JvdW5kX3N0eWxlLCBzdGQ6OnJvdW5kX3RvX25lYXJlc3Q+ICAgICAgICAgIHJvdW5kMm5lYXJlc3RfYyA7Ci0gIHR5cGVkZWYgbXBsOjppbnRlZ3JhbF9jPHN0ZDo6ZmxvYXRfcm91bmRfc3R5bGUsIHN0ZDo6cm91bmRfdG93YXJkX2luZmluaXR5PiAgICAgcm91bmQyaW5mX2MgOwotICB0eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzxzdGQ6OmZsb2F0X3JvdW5kX3N0eWxlLCBzdGQ6OnJvdW5kX3Rvd2FyZF9uZWdfaW5maW5pdHk+IHJvdW5kMm5lZ19pbmZfYyA7Ci0KLSAgLy8gTWV0YWZ1bmN0aW9uOgotICAvLwotICAvLyAgIGZvcl9yb3VuZF9zdHlsZTxSb3VuZFN0eWxlLFJvdW5kVG9aZXJvLFJvdW5kVG9OZWFyZXN0LFJvdW5kVG9JbmYsUm91bmRUb05lZ0luZj46OnR5cGUKLSAgLy8KLSAgLy8ge1JvdW5kU3R5bGV9IEludGVncmFsIENvbnN0YW50IHNwZWNpZnlpbmcgYSByb3VuZCBzdHlsZSBhcyBkZWNsYXJlZCBhYm92ZS4KLSAgLy8ge1JvdW5kVG9aZXJvLFJvdW5kVG9OZWFyZXN0LFJvdW5kVG9JbmYsUm91bmRUb05lZ0luZn0gYXJiaXRyYXJ5IHR5cGVzLgotICAvLwotICAvLyBTZWxlY3RzIG9uZSBvZiB0aGUgNCB0eXBlcyBhY2NvcmRpbmcgdG8gdGhlIHZhbHVlIG9mIFJvdW5kU3R5bGUuCi0gIC8vCi0gIHRlbXBsYXRlPGNsYXNzIFJvdW5kU3R5bGUsY2xhc3MgUm91bmRUb1plcm8sY2xhc3MgUm91bmRUb05lYXJlc3QsY2xhc3MgUm91bmRUb0luZixjbGFzcyBSb3VuZFRvTmVnSW5mPgotICBzdHJ1Y3QgZm9yX3JvdW5kX3N0eWxlCi0gIHsKLSAgICB0eXBlZGVmIGN0X3N3aXRjaDQ8Um91bmRTdHlsZQotICAgICAgICAgICAgICAgICAgICAgICAsIHJvdW5kMnplcm9fYywgcm91bmQybmVhcmVzdF9jLCByb3VuZDJpbmZfYyAvLyByb3VuZDJuZWdfaW5mX2MKLSAgICAgICAgICAgICAgICAgICAgICAgLCBSb3VuZFRvWmVybyAsIFJvdW5kVG9OZWFyZXN0ICwgUm91bmRUb0luZiAsIFJvdW5kVG9OZWdJbmYKLSAgICAgICAgICAgICAgICAgICAgICA+IHNlbGVjdG9yIDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2VsZWN0b3I6OnR5cGUgdHlwZSA7Ci0gIH0gOwotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJhbmdlIENoZWNraW5nIExvZ2ljLgotLy8KLS8vIFRoZSByYW5nZSBjaGVja2luZyBsb2dpYyBpcyBidWlsdCB1cCBieSBjb21iaW5pbmcgMSBvciAyIHByZWRpY2F0ZXMuCi0vLyBFYWNoIHByZWRpY2F0ZSBpcyBlbmNhcHN1bGF0ZWQgaW4gYSB0ZW1wbGF0ZSBjbGFzcyBhbmQgZXhwb3NlcwotLy8gdGhlIHN0YXRpYyBtZW1iZXIgZnVuY3Rpb24gJ2FwcGx5Jy4KLS8vCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLQotICAvLyBCZWNhdXNlIGEgcGFydGljdWxhciBsb2dpYyBjYW4gY29tYmluZSBlaXRoZXIgMSBvciB0d28gcHJlZGljYXRlcywgdGhlIGZvbGxvd2luZwotICAvLyB0YWdzIGFyZSB1c2VkIHRvIGFsbG93IHRoZSBwcmVkaWNhdGUgYXBwbGllciB0byByZWNlaXZlIDIgcHJlZHMsIGJ1dCBvcHRpbWl6ZSBhd2F5Ci0gIC8vIG9uZSBvZiB0aGVtIGlmIGl0IGlzICdub24tYXBwbGljYWJsZScKLSAgc3RydWN0IG5vbl9hcHBsaWNhYmxlIHsgdHlwZWRlZiBtcGw6OmZhbHNlXyBkb19hcHBseSA7IH0gOwotICBzdHJ1Y3QgYXBwbGljYWJsZSAgICAgeyB0eXBlZGVmIG1wbDo6dHJ1ZV8gIGRvX2FwcGx5IDsgfSA7Ci0KLQotICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gIC8vCi0gIC8vICAgICAgICAgICAgICAgICAgICAgIFJhbmdlIENoZWNraW5nIExvZ2ljIGltcGxlbWVudGF0aW9ucy4KLSAgLy8KLSAgLy8gVGhlIGZvbGxvd2luZyBjbGFzc2VzLCBjb2xsZWN0aXZlbGx5IG5hbWVkICdQcmVkaWNhdGVzJywgYXJlIGluc3RhbnRpYXRlZCB3aXRoaW4KLSAgLy8gdGhlIGNvcnJlc3BvbmRpbmcgcmFuZ2UgY2hlY2tlcnMuCi0gIC8vIFRoZWlyIHN0YXRpYyBtZW1iZXIgZnVuY3Rpb24gJ2FwcGx5JyBpcyBjYWxsZWQgdG8gcGVyZm9ybSB0aGUgYWN0dWFsIHJhbmdlIGNoZWNraW5nIGxvZ2ljLgotICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSAgICAvLyBzIDwgTG93ZXN0KFQpID8gY05lZ092ZXJmbG93IDogY0luUmFuZ2UKLSAgICAvLwotICAgIHRlbXBsYXRlPGNsYXNzIFRyYWl0cz4KLSAgICBzdHJ1Y3QgTFRfTG9UIDogYXBwbGljYWJsZQotICAgIHsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVHJhaXRzOjp0YXJnZXRfdHlwZSBUIDsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVHJhaXRzOjpzb3VyY2VfdHlwZSBTIDsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVHJhaXRzOjphcmd1bWVudF90eXBlIGFyZ3VtZW50X3R5cGUgOwotCi0gICAgICBzdGF0aWMgcmFuZ2VfY2hlY2tfcmVzdWx0IGFwcGx5ICggYXJndW1lbnRfdHlwZSBzICkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIHMgPCBzdGF0aWNfY2FzdDxTPihib3VuZHM8VD46Omxvd2VzdCgpKSA/IGNOZWdPdmVyZmxvdyA6IGNJblJhbmdlIDsKLSAgICAgIH0KLSAgICB9IDsKLQotICAgIC8vIHMgPCAwID8gY05lZ092ZXJmbG93IDogY0luUmFuZ2UKLSAgICAvLwotICAgIHRlbXBsYXRlPGNsYXNzIFRyYWl0cz4KLSAgICBzdHJ1Y3QgTFRfWmVybyA6IGFwcGxpY2FibGUKLSAgICB7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIFRyYWl0czo6c291cmNlX3R5cGUgUyA7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIFRyYWl0czo6YXJndW1lbnRfdHlwZSBhcmd1bWVudF90eXBlIDsKLQotICAgICAgc3RhdGljIHJhbmdlX2NoZWNrX3Jlc3VsdCBhcHBseSAoIGFyZ3VtZW50X3R5cGUgcyApCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBzIDwgc3RhdGljX2Nhc3Q8Uz4oMCkgPyBjTmVnT3ZlcmZsb3cgOiBjSW5SYW5nZSA7Ci0gICAgICB9Ci0gICAgfSA7Ci0KLSAgICAvLyBzIDw9IExvd2VzdChUKS0xID8gY05lZ092ZXJmbG93IDogY0luUmFuZ2UKLSAgICAvLwotICAgIHRlbXBsYXRlPGNsYXNzIFRyYWl0cz4KLSAgICBzdHJ1Y3QgTEVfUHJldkxvVCA6IGFwcGxpY2FibGUKLSAgICB7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIFRyYWl0czo6dGFyZ2V0X3R5cGUgVCA7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIFRyYWl0czo6c291cmNlX3R5cGUgUyA7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIFRyYWl0czo6YXJndW1lbnRfdHlwZSBhcmd1bWVudF90eXBlIDsKLQotICAgICAgc3RhdGljIHJhbmdlX2NoZWNrX3Jlc3VsdCBhcHBseSAoIGFyZ3VtZW50X3R5cGUgcyApCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBzIDw9IHN0YXRpY19jYXN0PFM+KGJvdW5kczxUPjo6bG93ZXN0KCkpIC0gc3RhdGljX2Nhc3Q8Uz4oMS4wKQotICAgICAgICAgICAgICAgICA/IGNOZWdPdmVyZmxvdyA6IGNJblJhbmdlIDsKLSAgICAgIH0KLSAgICB9IDsKLQotICAgIC8vIHMgPCBMb3dlc3QoVCktMC41ID8gY05lZ092ZXJmbG93IDogY0luUmFuZ2UKLSAgICAvLwotICAgIHRlbXBsYXRlPGNsYXNzIFRyYWl0cz4KLSAgICBzdHJ1Y3QgTFRfSGFsZlByZXZMb1QgOiBhcHBsaWNhYmxlCi0gICAgewotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBUcmFpdHM6OnRhcmdldF90eXBlIFQgOwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBUcmFpdHM6OnNvdXJjZV90eXBlIFMgOwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBUcmFpdHM6OmFyZ3VtZW50X3R5cGUgYXJndW1lbnRfdHlwZSA7Ci0KLSAgICAgIHN0YXRpYyByYW5nZV9jaGVja19yZXN1bHQgYXBwbHkgKCBhcmd1bWVudF90eXBlIHMgKQotICAgICAgewotICAgICAgICByZXR1cm4gcyA8IHN0YXRpY19jYXN0PFM+KGJvdW5kczxUPjo6bG93ZXN0KCkpIC0gc3RhdGljX2Nhc3Q8Uz4oMC41KQotICAgICAgICAgICAgICAgICA/IGNOZWdPdmVyZmxvdyA6IGNJblJhbmdlIDsKLSAgICAgIH0KLSAgICB9IDsKLQotICAgIC8vIHMgPiBIaWdoZXN0KFQpID8gY1Bvc092ZXJmbG93IDogY0luUmFuZ2UKLSAgICAvLwotICAgIHRlbXBsYXRlPGNsYXNzIFRyYWl0cz4KLSAgICBzdHJ1Y3QgR1RfSGlUIDogYXBwbGljYWJsZQotICAgIHsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVHJhaXRzOjp0YXJnZXRfdHlwZSBUIDsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVHJhaXRzOjpzb3VyY2VfdHlwZSBTIDsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVHJhaXRzOjphcmd1bWVudF90eXBlIGFyZ3VtZW50X3R5cGUgOwotCi0gICAgICBzdGF0aWMgcmFuZ2VfY2hlY2tfcmVzdWx0IGFwcGx5ICggYXJndW1lbnRfdHlwZSBzICkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIHMgPiBzdGF0aWNfY2FzdDxTPihib3VuZHM8VD46OmhpZ2hlc3QoKSkKLSAgICAgICAgICAgICAgICAgPyBjUG9zT3ZlcmZsb3cgOiBjSW5SYW5nZSA7Ci0gICAgICB9Ci0gICAgfSA7Ci0KLSAgICAvLyBzID49IExvd2VzdChUKSArIDEgPyBjUG9zT3ZlcmZsb3cgOiBjSW5SYW5nZQotICAgIC8vCi0gICAgdGVtcGxhdGU8Y2xhc3MgVHJhaXRzPgotICAgIHN0cnVjdCBHRV9TdWNjSGlUIDogYXBwbGljYWJsZQotICAgIHsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVHJhaXRzOjp0YXJnZXRfdHlwZSBUIDsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVHJhaXRzOjpzb3VyY2VfdHlwZSBTIDsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVHJhaXRzOjphcmd1bWVudF90eXBlIGFyZ3VtZW50X3R5cGUgOwotCi0gICAgICBzdGF0aWMgcmFuZ2VfY2hlY2tfcmVzdWx0IGFwcGx5ICggYXJndW1lbnRfdHlwZSBzICkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIHMgPj0gc3RhdGljX2Nhc3Q8Uz4oYm91bmRzPFQ+OjpoaWdoZXN0KCkpICsgc3RhdGljX2Nhc3Q8Uz4oMS4wKQotICAgICAgICAgICAgICAgICA/IGNQb3NPdmVyZmxvdyA6IGNJblJhbmdlIDsKLSAgICAgIH0KLSAgICB9IDsKLQotICAgIC8vIHMgPj0gTG93ZXN0KFQpICsgMC41ID8gY1Bvc2dPdmVyZmxvdyA6IGNJblJhbmdlCi0gICAgLy8KLSAgICB0ZW1wbGF0ZTxjbGFzcyBUcmFpdHM+Ci0gICAgc3RydWN0IEdUX0hhbGZTdWNjSGlUIDogYXBwbGljYWJsZQotICAgIHsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVHJhaXRzOjp0YXJnZXRfdHlwZSBUIDsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVHJhaXRzOjpzb3VyY2VfdHlwZSBTIDsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVHJhaXRzOjphcmd1bWVudF90eXBlIGFyZ3VtZW50X3R5cGUgOwotCi0gICAgICBzdGF0aWMgcmFuZ2VfY2hlY2tfcmVzdWx0IGFwcGx5ICggYXJndW1lbnRfdHlwZSBzICkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIHMgPj0gc3RhdGljX2Nhc3Q8Uz4oYm91bmRzPFQ+OjpoaWdoZXN0KCkpICsgc3RhdGljX2Nhc3Q8Uz4oMC41KQotICAgICAgICAgICAgICAgICA/IGNQb3NPdmVyZmxvdyA6IGNJblJhbmdlIDsKLSAgICAgIH0KLSAgICB9IDsKLQotCi0gIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgLy8KLSAgLy8gUHJlZGljYXRlIENvbWJpbmVyLgotICAvLwotICAvLyBUaGlzIGhlbHBlciBjbGFzc2VzIGFyZSB1c2VkIHRvIHBvc3NpYmx5IGNvbWJpbmUgdGhlIHJhbmdlIGNoZWNraW5nIGxvZ2ljCi0gIC8vIGluZGl2aWR1YWxseSBwZXJmb3JtZWQgYnkgdGhlIHByZWRpY2F0ZXMKLSAgLy8KLSAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0KLSAgICAvLyBBcHBsaWVzIGJvdGggcHJlZGljYXRlczogZmlyc3QgJ1ByZWRBJywgYW5kIGlmIGl0IGVxdWFscyAnY0luUmFuZ2UnLCAnUHJlZEInCi0gICAgdGVtcGxhdGU8Y2xhc3MgUHJlZEEsIGNsYXNzIFByZWRCPgotICAgIHN0cnVjdCBhcHBseUJvdGgKLSAgICB7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIFByZWRBOjphcmd1bWVudF90eXBlIGFyZ3VtZW50X3R5cGUgOwotCi0gICAgICBzdGF0aWMgcmFuZ2VfY2hlY2tfcmVzdWx0IGFwcGx5ICggYXJndW1lbnRfdHlwZSBzICkKLSAgICAgIHsKLSAgICAgICAgcmFuZ2VfY2hlY2tfcmVzdWx0IHIgPSBQcmVkQTo6YXBwbHkocykgOwotICAgICAgICBpZiAoIHIgPT0gY0luUmFuZ2UgKQotICAgICAgICAgIHIgPSBQcmVkQjo6YXBwbHkocyk7Ci0gICAgICAgIHJldHVybiByIDsKLSAgICAgIH0KLSAgICB9IDsKLQotICAgIHRlbXBsYXRlPGNsYXNzIFByZWRBLCBjbGFzcyBQcmVkQj4KLSAgICBzdHJ1Y3QgY29tYmluZQotICAgIHsKLSAgICAgIHR5cGVkZWYgYXBwbHlCb3RoPFByZWRBLFByZWRCPiBCb3RoIDsKLSAgICAgIHR5cGVkZWYgdm9pZCAgICAgICAgICAgICAgICAgICBOTm9uZSA7IC8vICdOb25lJyBpcyBkZWZpbmVkIGFzIGEgbWFjcm8gaW4gKC91c3IvWDExUjYvaW5jbHVkZS9YMTEvWC5oKQotCi0gICAgICB0eXBlZGVmIHR5cGVuYW1lIFByZWRBOjpkb19hcHBseSBkb19hcHBseUEgOwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBQcmVkQjo6ZG9fYXBwbHkgZG9fYXBwbHlCIDsKLQotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBmb3JfYm90aDxkb19hcHBseUEsIGRvX2FwcGx5QiwgQm90aCwgUHJlZEEsIFByZWRCLCBOTm9uZT46OnR5cGUgdHlwZSA7Ci0gICAgfSA7Ci0KLQotCi0KLQotCi0KLQotCi0KLQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmFuZ2UgQ2hlY2tlciBjbGFzc2VzLgotLy8KLS8vIFRoZSBmb2xsb3dpbmcgY2xhc3NlcyBhcmUgVklTSUJMRSBiYXNlIGNsYXNzZXMgb2YgdGhlIHVzZXItbGV2ZWwgY29udmVydGVyPD4gY2xhc3MuCi0vLyBUaGV5IHN1cHBseSB0aGUgb3B0aW1pemVkICdvdXRfb2ZfcmFuZ2UoKScgYW5kICd2YWxpZGF0ZV9yYW5nZSgpJyBzdGF0aWMgbWVtYmVyIGZ1bmN0aW9ucwotLy8gdmlzaWJsZSBpbiB0aGUgdXNlciBpbnRlcmZhY2UuCi0vLwotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0gIC8vIER1bW15IHJhbmdlIGNoZWNrZXIuCi0gIHRlbXBsYXRlPGNsYXNzIFRyYWl0cz4KLSAgc3RydWN0IGR1bW15X3JhbmdlX2NoZWNrZXIKLSAgewotICAgIHR5cGVkZWYgdHlwZW5hbWUgVHJhaXRzOjphcmd1bWVudF90eXBlIGFyZ3VtZW50X3R5cGUgOwotCi0gICAgc3RhdGljIHJhbmdlX2NoZWNrX3Jlc3VsdCBvdXRfb2ZfcmFuZ2UgKCBhcmd1bWVudF90eXBlICkgeyByZXR1cm4gY0luUmFuZ2UgOyB9Ci0gICAgc3RhdGljIHZvaWQgdmFsaWRhdGVfcmFuZ2UgKCBhcmd1bWVudF90eXBlICkge30KLSAgfSA7Ci0KLSAgLy8gR2VuZXJpYyByYW5nZSBjaGVja2VyLgotICAvLwotICAvLyBBbGwgdGhlIHJhbmdlIGNoZWNraW5nIGxvZ2ljIGZvciBhbGwgcG9zc2libGUgY29tYmluYXRpb25zIG9mIHNvdXJjZSBhbmQgdGFyZ2V0Ci0gIC8vIGNhbiBiZSBhcnJhbmdlZCBpbiB0ZXJtcyBvZiBvbmUgb3IgdHdvIHByZWRpY2F0ZXMsIHdoaWNoIHRlc3Qgb3ZlcmZsb3cgb24gYm90aCBuZWcvcG9zICdzaWRlcycKLSAgLy8gb2YgdGhlIHJhbmdlcy4KLSAgLy8KLSAgLy8gVGhlc2UgcHJlZGljYXRlcyBhcmUgZ2l2ZW4gaGVyZSBhcyBJc05lZ092ZXJmbG93IGFuZCBJc1Bvc092ZXJmbG93LgotICAvLwotICB0ZW1wbGF0ZTxjbGFzcyBUcmFpdHMsIGNsYXNzIElzTmVnT3ZlcmZsb3csIGNsYXNzIElzUG9zT3ZlcmZsb3csIGNsYXNzIE92ZXJmbG93SGFuZGxlcj4KLSAgc3RydWN0IGdlbmVyaWNfcmFuZ2VfY2hlY2tlcgotICB7Ci0gICAgdHlwZWRlZiBPdmVyZmxvd0hhbmRsZXIgb3ZlcmZsb3dfaGFuZGxlciA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIFRyYWl0czo6YXJndW1lbnRfdHlwZSBhcmd1bWVudF90eXBlIDsKLQotICAgIHN0YXRpYyByYW5nZV9jaGVja19yZXN1bHQgb3V0X29mX3JhbmdlICggYXJndW1lbnRfdHlwZSBzICkKLSAgICB7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIGNvbWJpbmU8SXNOZWdPdmVyZmxvdyxJc1Bvc092ZXJmbG93Pjo6dHlwZSBQcmVkaWNhdGUgOwotCi0gICAgICByZXR1cm4gUHJlZGljYXRlOjphcHBseShzKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCB2YWxpZGF0ZV9yYW5nZSAoIGFyZ3VtZW50X3R5cGUgcyApCi0gICAgICB7IE92ZXJmbG93SGFuZGxlcigpKCBvdXRfb2ZfcmFuZ2UocykgKSA7IH0KLSAgfSA7Ci0KLQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLwotLy8gU2VsZWN0b3JzIGZvciB0aGUgb3B0aW1pemVkIFJhbmdlIENoZWNrZXIgY2xhc3MuCi0vLwotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0gIHRlbXBsYXRlPGNsYXNzIFRyYWl0cyxjbGFzcyBPdmVyZmxvd0hhbmRsZXI+Ci0gIHN0cnVjdCBHZXRSQ19TaWcyU2lnX29yX1Vuc2lnMlVuc2lnCi0gIHsKLSAgICB0eXBlZGVmIGR1bW15X3JhbmdlX2NoZWNrZXI8VHJhaXRzPiBEdW1teSA7Ci0KLSAgICB0eXBlZGVmIExUX0xvVDxUcmFpdHM+IFByZWQxIDsKLSAgICB0eXBlZGVmIEdUX0hpVDxUcmFpdHM+IFByZWQyIDsKLQotICAgIHR5cGVkZWYgZ2VuZXJpY19yYW5nZV9jaGVja2VyPFRyYWl0cyxQcmVkMSxQcmVkMixPdmVyZmxvd0hhbmRsZXI+IE5vcm1hbCA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIFRyYWl0czo6c3VicmFuZ2VkIHN1YnJhbmdlZCA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6aWZfPHN1YnJhbmdlZCxOb3JtYWwsRHVtbXk+Ojp0eXBlIHR5cGUgOwotICB9IDsKLQotICB0ZW1wbGF0ZTxjbGFzcyBUcmFpdHMsIGNsYXNzIE92ZXJmbG93SGFuZGxlcj4KLSAgc3RydWN0IEdldFJDX1NpZzJVbnNpZwotICB7Ci0gICAgdHlwZWRlZiBMVF9aZXJvPFRyYWl0cz4gUHJlZDEgOwotICAgIHR5cGVkZWYgR1RfSGlUIDxUcmFpdHM+IFByZWQyIDsKLQotICAgIHR5cGVkZWYgZ2VuZXJpY19yYW5nZV9jaGVja2VyPFRyYWl0cyxQcmVkMSxQcmVkMixPdmVyZmxvd0hhbmRsZXI+IENob2ljZUEgOwotCi0gICAgdHlwZWRlZiBnZW5lcmljX3JhbmdlX2NoZWNrZXI8VHJhaXRzLFByZWQxLG5vbl9hcHBsaWNhYmxlLE92ZXJmbG93SGFuZGxlcj4gQ2hvaWNlQiA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIFRyYWl0czo6dGFyZ2V0X3R5cGUgVCA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUcmFpdHM6OnNvdXJjZV90eXBlIFMgOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBzdWJyYW5nZWRfVW5zaWcyU2lnPFMsVD46OnR5cGUgb3Bvc2l0ZV9zdWJyYW5nZWQgOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Om5vdF88b3Bvc2l0ZV9zdWJyYW5nZWQ+Ojp0eXBlIHBvc2l0aXZlbHlfc3VicmFuZ2VkIDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjppZl88cG9zaXRpdmVseV9zdWJyYW5nZWQsQ2hvaWNlQSxDaG9pY2VCPjo6dHlwZSB0eXBlIDsKLSAgfSA7Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgVHJhaXRzLCBjbGFzcyBPdmVyZmxvd0hhbmRsZXI+Ci0gIHN0cnVjdCBHZXRSQ19VbnNpZzJTaWcKLSAgewotICAgIHR5cGVkZWYgR1RfSGlUPFRyYWl0cz4gUHJlZDEgOwotCi0gICAgdHlwZWRlZiBnZW5lcmljX3JhbmdlX2NoZWNrZXI8VHJhaXRzLG5vbl9hcHBsaWNhYmxlLFByZWQxLE92ZXJmbG93SGFuZGxlcj4gdHlwZSA7Ci0gIH0gOwotCi0gIHRlbXBsYXRlPGNsYXNzIFRyYWl0cyxjbGFzcyBPdmVyZmxvd0hhbmRsZXI+Ci0gIHN0cnVjdCBHZXRSQ19JbnQySW50Ci0gIHsKLSAgICB0eXBlZGVmIEdldFJDX1NpZzJTaWdfb3JfVW5zaWcyVW5zaWc8VHJhaXRzLE92ZXJmbG93SGFuZGxlcj4gU2lnMlNpZ1EgICAgIDsKLSAgICB0eXBlZGVmIEdldFJDX1NpZzJVbnNpZyAgICAgICAgICAgICA8VHJhaXRzLE92ZXJmbG93SGFuZGxlcj4gU2lnMlVuc2lnUSAgIDsKLSAgICB0eXBlZGVmIEdldFJDX1Vuc2lnMlNpZyAgICAgICAgICAgICA8VHJhaXRzLE92ZXJmbG93SGFuZGxlcj4gVW5zaWcyU2lnUSAgIDsKLSAgICB0eXBlZGVmIFNpZzJTaWdRICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5zaWcyVW5zaWdRIDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgVHJhaXRzOjpzaWduX21peHR1cmUgc2lnbl9taXh0dXJlIDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUKLSAgICAgIGZvcl9zaWduX21peHR1cmU8c2lnbl9taXh0dXJlLFNpZzJTaWdRLFNpZzJVbnNpZ1EsVW5zaWcyU2lnUSxVbnNpZzJVbnNpZ1E+Ojp0eXBlCi0gICAgICAgIHNlbGVjdG9yIDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2VsZWN0b3I6OnR5cGUgdHlwZSA7Ci0gIH0gOwotCi0gIHRlbXBsYXRlPGNsYXNzIFRyYWl0cz4KLSAgc3RydWN0IEdldFJDX0ludDJGbG9hdAotICB7Ci0gICAgdHlwZWRlZiBkdW1teV9yYW5nZV9jaGVja2VyPFRyYWl0cz4gdHlwZSA7Ci0gIH0gOwotCi0gIHRlbXBsYXRlPGNsYXNzIFRyYWl0cywgY2xhc3MgT3ZlcmZsb3dIYW5kbGVyLCBjbGFzcyBGbG9hdDJJbnRSb3VuZGVyPgotICBzdHJ1Y3QgR2V0UkNfRmxvYXQySW50Ci0gIHsKLSAgICB0eXBlZGVmIExFX1ByZXZMb1QgICAgPFRyYWl0cz4gUHJlZDEgOwotICAgIHR5cGVkZWYgR0VfU3VjY0hpVCAgICA8VHJhaXRzPiBQcmVkMiA7Ci0gICAgdHlwZWRlZiBMVF9IYWxmUHJldkxvVDxUcmFpdHM+IFByZWQzIDsKLSAgICB0eXBlZGVmIEdUX0hhbGZTdWNjSGlUPFRyYWl0cz4gUHJlZDQgOwotICAgIHR5cGVkZWYgR1RfSGlUICAgICAgICA8VHJhaXRzPiBQcmVkNSA7Ci0gICAgdHlwZWRlZiBMVF9Mb1QgICAgICAgIDxUcmFpdHM+IFByZWQ2IDsKLQotICAgIHR5cGVkZWYgZ2VuZXJpY19yYW5nZV9jaGVja2VyPFRyYWl0cyxQcmVkMSxQcmVkMixPdmVyZmxvd0hhbmRsZXI+IFRvWmVybyAgICA7Ci0gICAgdHlwZWRlZiBnZW5lcmljX3JhbmdlX2NoZWNrZXI8VHJhaXRzLFByZWQzLFByZWQ0LE92ZXJmbG93SGFuZGxlcj4gVG9OZWFyZXN0IDsKLSAgICB0eXBlZGVmIGdlbmVyaWNfcmFuZ2VfY2hlY2tlcjxUcmFpdHMsUHJlZDEsUHJlZDUsT3ZlcmZsb3dIYW5kbGVyPiBUb0luZiAgICAgOwotICAgIHR5cGVkZWYgZ2VuZXJpY19yYW5nZV9jaGVja2VyPFRyYWl0cyxQcmVkNixQcmVkMixPdmVyZmxvd0hhbmRsZXI+IFRvTmVnSW5mICA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIEZsb2F0MkludFJvdW5kZXI6OnJvdW5kX3N0eWxlIHJvdW5kX3N0eWxlIDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgZm9yX3JvdW5kX3N0eWxlPHJvdW5kX3N0eWxlLFRvWmVybyxUb05lYXJlc3QsVG9JbmYsVG9OZWdJbmY+Ojp0eXBlIHR5cGUgOwotICB9IDsKLQotICB0ZW1wbGF0ZTxjbGFzcyBUcmFpdHMsIGNsYXNzIE92ZXJmbG93SGFuZGxlcj4KLSAgc3RydWN0IEdldFJDX0Zsb2F0MkZsb2F0Ci0gIHsKLSAgICB0eXBlZGVmIGR1bW15X3JhbmdlX2NoZWNrZXI8VHJhaXRzPiBEdW1teSA7Ci0KLSAgICB0eXBlZGVmIExUX0xvVDxUcmFpdHM+IFByZWQxIDsKLSAgICB0eXBlZGVmIEdUX0hpVDxUcmFpdHM+IFByZWQyIDsKLQotICAgIHR5cGVkZWYgZ2VuZXJpY19yYW5nZV9jaGVja2VyPFRyYWl0cyxQcmVkMSxQcmVkMixPdmVyZmxvd0hhbmRsZXI+IE5vcm1hbCA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIFRyYWl0czo6c3VicmFuZ2VkIHN1YnJhbmdlZCA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6aWZfPHN1YnJhbmdlZCxOb3JtYWwsRHVtbXk+Ojp0eXBlIHR5cGUgOwotICB9IDsKLQotICB0ZW1wbGF0ZTxjbGFzcyBUcmFpdHMsIGNsYXNzIE92ZXJmbG93SGFuZGxlciwgY2xhc3MgRmxvYXQySW50Um91bmRlcj4KLSAgc3RydWN0IEdldFJDX0J1aWx0SW4yQnVpbHRJbgotICB7Ci0gICAgdHlwZWRlZiBHZXRSQ19JbnQySW50PFRyYWl0cyxPdmVyZmxvd0hhbmRsZXI+ICAgICAgICAgICAgICAgICAgICBJbnQySW50USA7Ci0gICAgdHlwZWRlZiBHZXRSQ19JbnQyRmxvYXQ8VHJhaXRzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnQyRmxvYXRRIDsKLSAgICB0eXBlZGVmIEdldFJDX0Zsb2F0MkludDxUcmFpdHMsT3ZlcmZsb3dIYW5kbGVyLEZsb2F0MkludFJvdW5kZXI+IEZsb2F0MkludFEgOwotICAgIHR5cGVkZWYgR2V0UkNfRmxvYXQyRmxvYXQ8VHJhaXRzLE92ZXJmbG93SGFuZGxlcj4gICAgICAgICAgICAgICAgRmxvYXQyRmxvYXRRIDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgVHJhaXRzOjppbnRfZmxvYXRfbWl4dHVyZSBpbnRfZmxvYXRfbWl4dHVyZSA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIGZvcl9pbnRfZmxvYXRfbWl4dHVyZTxpbnRfZmxvYXRfbWl4dHVyZSwgSW50MkludFEsIEludDJGbG9hdFEsIEZsb2F0MkludFEsIEZsb2F0MkZsb2F0UT46OnR5cGUgc2VsZWN0b3IgOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBzZWxlY3Rvcjo6dHlwZSB0eXBlIDsKLSAgfSA7Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgVHJhaXRzLCBjbGFzcyBPdmVyZmxvd0hhbmRsZXIsIGNsYXNzIEZsb2F0MkludFJvdW5kZXI+Ci0gIHN0cnVjdCBHZXRSQwotICB7Ci0gICAgdHlwZWRlZiBHZXRSQ19CdWlsdEluMkJ1aWx0SW48VHJhaXRzLE92ZXJmbG93SGFuZGxlcixGbG9hdDJJbnRSb3VuZGVyPiBCdWlsdEluMkJ1aWx0SW5RIDsKLQotICAgIHR5cGVkZWYgZHVtbXlfcmFuZ2VfY2hlY2tlcjxUcmFpdHM+IER1bW15IDsKLQotICAgIHR5cGVkZWYgbXBsOjppZGVudGl0eTxEdW1teT4gRHVtbXlRIDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgVHJhaXRzOjp1ZHRfYnVpbHRpbl9taXh0dXJlIHVkdF9idWlsdGluX21peHR1cmUgOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBmb3JfdWR0X2J1aWx0aW5fbWl4dHVyZTx1ZHRfYnVpbHRpbl9taXh0dXJlLEJ1aWx0SW4yQnVpbHRJblEsRHVtbXlRLER1bW15USxEdW1teVE+Ojp0eXBlIHNlbGVjdG9yIDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2VsZWN0b3I6OnR5cGUgdHlwZSA7Ci0gIH0gOwotCi0KLQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udmVydGVyIGNsYXNzZXMuCi0vLwotLy8gVGhlIGZvbGxvd2luZyBjbGFzc2VzIGFyZSBWSVNJQkxFIGJhc2UgY2xhc3NlcyBvZiB0aGUgdXNlci1sZXZlbCBjb252ZXJ0ZXI8PiBjbGFzcy4KLS8vIFRoZXkgc3VwcGx5IHRoZSBvcHRpbWl6ZWQgJ25lYXJieWludCgpJyBhbmQgJ2NvbnZlcnQoKScgc3RhdGljIG1lbWJlciBmdW5jdGlvbnMKLS8vIHZpc2libGUgaW4gdGhlIHVzZXIgaW50ZXJmYWNlLgotLy8KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotICAvLwotICAvLyBUcml2aWFsIENvbnZlcnRlciA6IHVzZWQgd2hlbiAoY3YtdW5xdWFsaWZpZWQpIFQgPT0gKGN2LXVucXVhbGlmaWVkKSAgUwotICAvLwotICB0ZW1wbGF0ZTxjbGFzcyBUcmFpdHM+Ci0gIHN0cnVjdCB0cml2aWFsX2NvbnZlcnRlcl9pbXBsIDogcHVibGljIHN0ZDo6dW5hcnlfZnVuY3Rpb248ICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIFRyYWl0czo6YXJndW1lbnRfdHlwZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBUcmFpdHM6OnJlc3VsdF90eXBlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAscHVibGljIGR1bW15X3JhbmdlX2NoZWNrZXI8VHJhaXRzPgotICB7Ci0gICAgdHlwZWRlZiBUcmFpdHMgdHJhaXRzIDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgVHJhaXRzOjpzb3VyY2VfdHlwZSAgIHNvdXJjZV90eXBlICAgOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgVHJhaXRzOjphcmd1bWVudF90eXBlIGFyZ3VtZW50X3R5cGUgOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgVHJhaXRzOjpyZXN1bHRfdHlwZSAgIHJlc3VsdF90eXBlICAgOwotCi0gICAgc3RhdGljIHJlc3VsdF90eXBlIGxvd19sZXZlbF9jb252ZXJ0ICggYXJndW1lbnRfdHlwZSBzICkgeyByZXR1cm4gcyA7IH0KLSAgICBzdGF0aWMgc291cmNlX3R5cGUgbmVhcmJ5aW50ICAgICAgICAgKCBhcmd1bWVudF90eXBlIHMgKSB7IHJldHVybiBzIDsgfQotICAgIHN0YXRpYyByZXN1bHRfdHlwZSBjb252ZXJ0ICAgICAgICAgICAoIGFyZ3VtZW50X3R5cGUgcyApIHsgcmV0dXJuIHMgOyB9Ci0gIH0gOwotCi0KLSAgLy8KLSAgLy8gUm91bmRpbmcgQ29udmVydGVyIDogdXNlZCBmb3IgZmxvYXQgdG8gaW50ZWdyYWwgY29udmVyc2lvbnMuCi0gIC8vCi0gIHRlbXBsYXRlPGNsYXNzIFRyYWl0cyxjbGFzcyBSYW5nZUNoZWNrZXIsY2xhc3MgUmF3Q29udmVydGVyLGNsYXNzIEZsb2F0MkludFJvdW5kZXI+Ci0gIHN0cnVjdCByb3VuZGluZ19jb252ZXJ0ZXIgOiBwdWJsaWMgc3RkOjp1bmFyeV9mdW5jdGlvbjwgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgVHJhaXRzOjphcmd1bWVudF90eXBlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgVHJhaXRzOjpyZXN1bHRfdHlwZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICxwdWJsaWMgUmFuZ2VDaGVja2VyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICxwdWJsaWMgRmxvYXQySW50Um91bmRlcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAscHVibGljIFJhd0NvbnZlcnRlcgotICB7Ci0gICAgdHlwZWRlZiBSYW5nZUNoZWNrZXIgICAgIFJhbmdlQ2hlY2tlckJhc2UgOwotICAgIHR5cGVkZWYgRmxvYXQySW50Um91bmRlciBGbG9hdDJJbnRSb3VuZGVyQmFzZSA7Ci0gICAgdHlwZWRlZiBSYXdDb252ZXJ0ZXIgICAgIFJhd0NvbnZlcnRlckJhc2UgOwotCi0gICAgdHlwZWRlZiBUcmFpdHMgdHJhaXRzIDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgVHJhaXRzOjpzb3VyY2VfdHlwZSAgIHNvdXJjZV90eXBlICAgOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgVHJhaXRzOjphcmd1bWVudF90eXBlIGFyZ3VtZW50X3R5cGUgOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgVHJhaXRzOjpyZXN1bHRfdHlwZSAgIHJlc3VsdF90eXBlICAgOwotCi0gICAgc3RhdGljIHJlc3VsdF90eXBlIGNvbnZlcnQgKCBhcmd1bWVudF90eXBlIHMgKQotICAgIHsKLSAgICAgIFJhbmdlQ2hlY2tlckJhc2U6OnZhbGlkYXRlX3JhbmdlKHMpOwotICAgICAgc291cmNlX3R5cGUgczEgPSBGbG9hdDJJbnRSb3VuZGVyQmFzZTo6bmVhcmJ5aW50KHMpOwotICAgICAgcmV0dXJuIFJhd0NvbnZlcnRlckJhc2U6Omxvd19sZXZlbF9jb252ZXJ0KHMxKTsKLSAgICB9Ci0gIH0gOwotCi0KLSAgLy8KLSAgLy8gTm9uLVJvdW5kaW5nIENvbnZlcnRlciA6IHVzZWQgZm9yIGFsbCBvdGhlciBjb252ZXJzaW9ucy4KLSAgLy8KLSAgdGVtcGxhdGU8Y2xhc3MgVHJhaXRzLGNsYXNzIFJhbmdlQ2hlY2tlcixjbGFzcyBSYXdDb252ZXJ0ZXI+Ci0gIHN0cnVjdCBub25fcm91bmRpbmdfY29udmVydGVyIDogcHVibGljIHN0ZDo6dW5hcnlfZnVuY3Rpb248IE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgVHJhaXRzOjphcmd1bWVudF90eXBlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgVHJhaXRzOjpyZXN1bHRfdHlwZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAscHVibGljIFJhbmdlQ2hlY2tlcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLHB1YmxpYyBSYXdDb252ZXJ0ZXIKLSAgewotICAgIHR5cGVkZWYgUmFuZ2VDaGVja2VyIFJhbmdlQ2hlY2tlckJhc2UgOwotICAgIHR5cGVkZWYgUmF3Q29udmVydGVyIFJhd0NvbnZlcnRlckJhc2UgOwotCi0gICAgdHlwZWRlZiBUcmFpdHMgdHJhaXRzIDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgVHJhaXRzOjpzb3VyY2VfdHlwZSAgIHNvdXJjZV90eXBlICAgOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgVHJhaXRzOjphcmd1bWVudF90eXBlIGFyZ3VtZW50X3R5cGUgOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgVHJhaXRzOjpyZXN1bHRfdHlwZSAgIHJlc3VsdF90eXBlICAgOwotCi0gICAgc3RhdGljIHNvdXJjZV90eXBlIG5lYXJieWludCAoIGFyZ3VtZW50X3R5cGUgcyApIHsgcmV0dXJuIHMgOyB9Ci0KLSAgICBzdGF0aWMgcmVzdWx0X3R5cGUgY29udmVydCAoIGFyZ3VtZW50X3R5cGUgcyApCi0gICAgewotICAgICAgUmFuZ2VDaGVja2VyQmFzZTo6dmFsaWRhdGVfcmFuZ2Uocyk7Ci0gICAgICByZXR1cm4gUmF3Q29udmVydGVyQmFzZTo6bG93X2xldmVsX2NvbnZlcnQocyk7Ci0gICAgfQotICB9IDsKLQotCi0KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8KLS8vIFNlbGVjdG9ycyBmb3IgdGhlIG9wdGltaXplZCBDb252ZXJ0ZXIgY2xhc3MuCi0vLwotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0gIHRlbXBsYXRlPGNsYXNzIFRyYWl0cyxjbGFzcyBPdmVyZmxvd0hhbmRsZXIsY2xhc3MgRmxvYXQySW50Um91bmRlcixjbGFzcyBSYXdDb252ZXJ0ZXIsIGNsYXNzIFVzZXJSYW5nZUNoZWNrZXI+Ci0gIHN0cnVjdCBnZXRfbm9uX3RyaXZpYWxfY29udmVydGVyCi0gIHsKLSAgICB0eXBlZGVmIEdldFJDPFRyYWl0cyxPdmVyZmxvd0hhbmRsZXIsRmxvYXQySW50Um91bmRlcj4gSW50ZXJuYWxSYW5nZUNoZWNrZXJRIDsKLQotICAgIHR5cGVkZWYgaXNfc2FtZTxVc2VyUmFuZ2VDaGVja2VyLFVzZUludGVybmFsUmFuZ2VDaGVja2VyPiB1c2VfaW50ZXJuYWxfUkMgOwotCi0gICAgdHlwZWRlZiBtcGw6OmlkZW50aXR5PFVzZXJSYW5nZUNoZWNrZXI+IFVzZXJSYW5nZUNoZWNrZXJRIDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUKLSAgICAgIG1wbDo6ZXZhbF9pZjx1c2VfaW50ZXJuYWxfUkMsSW50ZXJuYWxSYW5nZUNoZWNrZXJRLFVzZXJSYW5nZUNoZWNrZXJRPjo6dHlwZQotICAgICAgICBSYW5nZUNoZWNrZXIgOwotCi0gICAgdHlwZWRlZiBub25fcm91bmRpbmdfY29udmVydGVyPFRyYWl0cyxSYW5nZUNoZWNrZXIsUmF3Q29udmVydGVyPiAgICAgICAgICAgICAgTm9uUm91bmRpbmcgOwotICAgIHR5cGVkZWYgcm91bmRpbmdfY29udmVydGVyPFRyYWl0cyxSYW5nZUNoZWNrZXIsUmF3Q29udmVydGVyLEZsb2F0MkludFJvdW5kZXI+IFJvdW5kaW5nIDsKLQotICAgIHR5cGVkZWYgbXBsOjppZGVudGl0eTxOb25Sb3VuZGluZz4gTm9uUm91bmRpbmdRIDsKLSAgICB0eXBlZGVmIG1wbDo6aWRlbnRpdHk8Um91bmRpbmc+ICAgIFJvdW5kaW5nUSAgICA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIFRyYWl0czo6aW50X2Zsb2F0X21peHR1cmUgaW50X2Zsb2F0X21peHR1cmUgOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZQotICAgICAgZm9yX2ludF9mbG9hdF9taXh0dXJlPGludF9mbG9hdF9taXh0dXJlLCBOb25Sb3VuZGluZ1EsIE5vblJvdW5kaW5nUSwgUm91bmRpbmdRLCBOb25Sb3VuZGluZ1E+Ojp0eXBlCi0gICAgICAgIHNlbGVjdG9yIDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2VsZWN0b3I6OnR5cGUgdHlwZSA7Ci0gIH0gOwotCi0gIHRlbXBsYXRlPCBjbGFzcyBUcmFpdHMKLSAgICAgICAgICAgLGNsYXNzIE92ZXJmbG93SGFuZGxlcgotICAgICAgICAgICAsY2xhc3MgRmxvYXQySW50Um91bmRlcgotICAgICAgICAgICAsY2xhc3MgUmF3Q29udmVydGVyCi0gICAgICAgICAgICxjbGFzcyBVc2VyUmFuZ2VDaGVja2VyCi0gICAgICAgICAgPgotICBzdHJ1Y3QgZ2V0X2NvbnZlcnRlcl9pbXBsCi0gIHsKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKCAweDA1NjEgKSApCi0gICAgLy8gYmNjNTUgcHJlZmVycyBzb21ldGltZXMgdGVtcGxhdGUgcGFyYW1ldGVycyB0byBiZSBleHBsaWNpdCBsb2NhbCB0eXBlcy4KLSAgICAvLyAobm90aWNlIHRoYXQgaXMgaXMgaWxsZWdhbCB0byByZXVzZSB0aGUgbmFtZXMgbGlrZSB0aGlzKQotICAgIHR5cGVkZWYgVHJhaXRzICAgICAgICAgICBUcmFpdHMgOwotICAgIHR5cGVkZWYgT3ZlcmZsb3dIYW5kbGVyICBPdmVyZmxvd0hhbmRsZXIgOwotICAgIHR5cGVkZWYgRmxvYXQySW50Um91bmRlciBGbG9hdDJJbnRSb3VuZGVyIDsKLSAgICB0eXBlZGVmIFJhd0NvbnZlcnRlciAgICAgUmF3Q29udmVydGVyIDsKLSAgICB0eXBlZGVmIFVzZXJSYW5nZUNoZWNrZXIgVXNlclJhbmdlQ2hlY2tlciA7Ci0jZW5kaWYKLQotICAgIHR5cGVkZWYgdHJpdmlhbF9jb252ZXJ0ZXJfaW1wbDxUcmFpdHM+IFRyaXZpYWwgOwotICAgIHR5cGVkZWYgbXBsOjppZGVudGl0eSAgICAgICAgPFRyaXZpYWw+IFRyaXZpYWxRIDsKLQotICAgIHR5cGVkZWYgZ2V0X25vbl90cml2aWFsX2NvbnZlcnRlcjwgVHJhaXRzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICxPdmVyZmxvd0hhbmRsZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLEZsb2F0MkludFJvdW5kZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLFJhd0NvbnZlcnRlcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsVXNlclJhbmdlQ2hlY2tlcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4gTm9uVHJpdmlhbFEgOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBUcmFpdHM6OnRyaXZpYWwgdHJpdmlhbCA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6ZXZhbF9pZjx0cml2aWFsLFRyaXZpYWxRLE5vblRyaXZpYWxRPjo6dHlwZSB0eXBlIDsKLSAgfSA7Ci0KLX0gfSB9IC8vIG5hbWVzcGFjZSBuZG5ib29zdDo6bnVtZXJpYzo6Y29udmRldGFpbAotCi0jZW5kaWYKLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvaW50X2Zsb2F0X21peHR1cmUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL2ludF9mbG9hdF9taXh0dXJlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTkxYWM0MC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvaW50X2Zsb2F0X21peHR1cmUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzIgKzAsMCBAQAotLy8gIChjKSBDb3B5cmlnaHQgRmVybmFuZG8gTHVpcyBDYWNjaW9sYSBDYXJiYWxsYWwgMjAwMC0yMDA0Ci0vLyAgVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLS8vICBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBsaWJyYXJ5IGhvbWUgcGFnZSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL251bWVyaWMvY29udmVyc2lvbgotLy8KLS8vIENvbnRhY3QgdGhlIGF1dGhvciBhdDogZmVybmFuZG9fY2FjY2lvbGFAaG90bWFpbC5jb20KLS8vIAotI2lmbmRlZiBORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fREVUQUlMX0lOVF9GTE9BVF9NSVhUVVJFX0ZMQ18xMk5PVjIwMDJfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9ERVRBSUxfSU5UX0ZMT0FUX01JWFRVUkVfRkxDXzEyTk9WMjAwMl9IUFAKLQotI2luY2x1ZGUgIm5kbmJvb3N0L2NvbmZpZy5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvbGltaXRzLmhwcCIKLQotI2luY2x1ZGUgIm5kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9pbnRfZmxvYXRfbWl4dHVyZV9lbnVtLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL21ldGEuaHBwIgotCi0jaW5jbHVkZSAibmRuYm9vc3QvbXBsL2ludGVncmFsX2MuaHBwIgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbnVtZXJpYyB7IG5hbWVzcGFjZSBjb252ZGV0YWlsCi17Ci0gIC8vIEludGVncmFsIENvbnN0YW50cyBmb3IgJ0ludEZsb2F0TWl4dHVyZScKLSAgdHlwZWRlZiBtcGw6OmludGVncmFsX2M8aW50X2Zsb2F0X21peHR1cmVfZW51bSwgaW50ZWdyYWxfdG9faW50ZWdyYWw+IGludDJpbnRfYyA7Ci0gIHR5cGVkZWYgbXBsOjppbnRlZ3JhbF9jPGludF9mbG9hdF9taXh0dXJlX2VudW0sIGludGVncmFsX3RvX2Zsb2F0PiAgICBpbnQyZmxvYXRfYyA7Ci0gIHR5cGVkZWYgbXBsOjppbnRlZ3JhbF9jPGludF9mbG9hdF9taXh0dXJlX2VudW0sIGZsb2F0X3RvX2ludGVncmFsPiAgICBmbG9hdDJpbnRfYyA7Ci0gIHR5cGVkZWYgbXBsOjppbnRlZ3JhbF9jPGludF9mbG9hdF9taXh0dXJlX2VudW0sIGZsb2F0X3RvX2Zsb2F0PiAgICAgICBmbG9hdDJmbG9hdF9jIDsKLQotICAvLyBNZXRhZnVuY3Rpb246Ci0gIC8vCi0gIC8vICAgZ2V0X2ludF9mbG9hdF9taXh0dXJlPFQsUz46OnR5cGUKLSAgLy8KLSAgLy8gU2VsZWN0cyB0aGUgYXBwcm9wcmlhdGUgSW50LUZsb2F0IE1peHR1cmUgSW50ZWdyYWwgQ29uc3RhbnQgZm9yIHRoZSBjb21iaW5hdGlvbiBULFMuCi0gIC8vCi0gIHRlbXBsYXRlPGNsYXNzIFQsY2xhc3MgUz4KLSAgc3RydWN0IGdldF9pbnRfZmxvYXRfbWl4dHVyZQotICB7Ci0gICAgdHlwZWRlZiBtcGw6OmJvb2xfPCA6OnN0ZDo6bnVtZXJpY19saW1pdHM8Uz46OmlzX2ludGVnZXIgPiBTX2ludCA7Ci0gICAgdHlwZWRlZiBtcGw6OmJvb2xfPCA6OnN0ZDo6bnVtZXJpY19saW1pdHM8VD46OmlzX2ludGVnZXIgPiBUX2ludCA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lCi0gICAgICBmb3JfYm90aDxTX2ludCwgVF9pbnQsIGludDJpbnRfYywgaW50MmZsb2F0X2MsIGZsb2F0MmludF9jLCBmbG9hdDJmbG9hdF9jPjo6dHlwZQotICAgICAgICB0eXBlIDsKLSAgfSA7Ci0KLSAgLy8gTWV0YWZ1bmN0aW9uOgotICAvLwotICAvLyAgIGZvcl9pbnRfZmxvYXRfbWl4dHVyZTxNaXh0dXJlLGludF9pbnQsaW50X2Zsb2F0LGZsb2F0X2ludCxmbG9hdF9mbG9hdD46OnR5cGUKLSAgLy8KLSAgLy8ge01peHR1cmV9IGlzIG9uZSBvZiB0aGUgSW50ZWdyYWwgQ29uc3RhbnRzIGZvciBNaXh0dXJlLCBkZWNsYXJlZCBhYm92ZS4KLSAgLy8ge2ludF9pbnQsaW50X2Zsb2F0LGZsb2F0X2ludCxmbG9hdF9mbG9hdH0gYXJlIGFyaWJ0cmFyeSB0eXBlcy4gKG5vdCBtZXRhZnVuY3Rpb25zKQotICAvLwotICAvLyBBY2NvcmRpbmcgdG8gdGhlIHZhbHVlIG9mICdJbnRGbG9hdE1peHR1cmUnLCBzZWxlY3RzIHRoZSBjb3JyZXNwb25kaW5nIHR5cGUuCi0gIC8vCi0gIHRlbXBsYXRlPGNsYXNzIEludEZsb2F0TWl4dHVyZSwgY2xhc3MgSW50MkludCwgY2xhc3MgSW50MkZsb2F0LCBjbGFzcyBGbG9hdDJJbnQsIGNsYXNzIEZsb2F0MkZsb2F0PgotICBzdHJ1Y3QgZm9yX2ludF9mbG9hdF9taXh0dXJlCi0gIHsKLSAgICB0eXBlZGVmIHR5cGVuYW1lCi0gICAgICBjdF9zd2l0Y2g0PEludEZsb2F0TWl4dHVyZQotICAgICAgICAgICAgICAgICAsaW50MmludF9jLCBpbnQyZmxvYXRfYywgZmxvYXQyaW50X2MgIC8vIGRlZmF1bHQKLSAgICAgICAgICAgICAgICAgLEludDJJbnQgICwgSW50MkZsb2F0ICAsIEZsb2F0MkludCAgLCBGbG9hdDJGbG9hdAotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgdHlwZSA7Ci0gIH0gOwotCi19IH0gfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3Q6Om51bWVyaWM6OmNvbnZkZXRhaWwKLQotI2VuZGlmCi0vLwotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvaXNfc3VicmFuZ2VkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC9pc19zdWJyYW5nZWQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YWYxMmMwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC9pc19zdWJyYW5nZWQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjM0ICswLDAgQEAKLS8vICAoYykgQ29weXJpZ2h0IEZlcm5hbmRvIEx1aXMgQ2FjY2lvbGEgQ2FyYmFsbGFsIDIwMDAtMjAwNAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCi0vLyAgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgbGlicmFyeSBob21lIHBhZ2UgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9udW1lcmljL2NvbnZlcnNpb24KLS8vCi0vLyBDb250YWN0IHRoZSBhdXRob3IgYXQ6IGZlcm5hbmRvX2NhY2Npb2xhQGhvdG1haWwuY29tCi0vLyAKLSNpZm5kZWYgTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX0RFVEFJTF9JU19TVUJSQU5HRURfRkxDXzEyTk9WMjAwMl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX0RFVEFJTF9JU19TVUJSQU5HRURfRkxDXzEyTk9WMjAwMl9IUFAKLQotI2luY2x1ZGUgIm5kbmJvb3N0L2NvbmZpZy5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvbGltaXRzLmhwcCIKLQotI2luY2x1ZGUgIm5kbmJvb3N0L21wbC9pbnQuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L21wbC9tdWx0aXBsaWVzLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC9tcGwvbGVzcy5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvbXBsL2VxdWFsX3RvLmhwcCIKLQotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NhbWUuaHBwIgotCi0jaW5jbHVkZSAibmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC9tZXRhLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL2ludF9mbG9hdF9taXh0dXJlLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL3NpZ25fbWl4dHVyZS5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC91ZHRfYnVpbHRpbl9taXh0dXJlLmhwcCIKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG51bWVyaWMgeyBuYW1lc3BhY2UgY29udmRldGFpbAotewotICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAvLyBJbXBsZW1lbnRhdGlvbnMgb2YgdGhlIGNvbXBpbGUgdGltZSBwcmVkaWNhdGUgIlQgaXMgc3VicmFuZ2VkIgotICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0gICAgLy8gZm9yIGludGVncmFsIHRvIGludGVncmFsIGNvbnZlcnNpb25zCi0gICAgdGVtcGxhdGU8Y2xhc3MgVCxjbGFzcyBTPgotICAgIHN0cnVjdCBzdWJyYW5nZWRfU2lnMlVuc2lnCi0gICAgewotICAgICAgLy8gU2lnbmVkIHRvIHVuc2lnbmVkIGNvbnZlcnNpb25zIGFyZSAnc3VicmFuZ2VkJyBiZWNhdXNlIG9mIHBvc3NpYmxlIGxvb3NlCi0gICAgICAvLyBvZiBuZWdhdGl2ZSB2YWx1ZXMuCi0gICAgICB0eXBlZGVmIG1wbDo6dHJ1ZV8gdHlwZSA7Ci0gICAgfSA7Ci0KLSAgICAvLyBmb3IgdW5zaWduZWQgaW50ZWdyYWwgdG8gc2lnbmVkIGludGVncmFsIGNvbnZlcnNpb25zCi0gICAgdGVtcGxhdGU8Y2xhc3MgVCxjbGFzcyBTPgotICAgIHN0cnVjdCBzdWJyYW5nZWRfVW5zaWcyU2lnCi0gICAgewotICAgICAgIC8vIElNUE9SVEFOVCBOT1RFOgotICAgICAgIC8vCi0gICAgICAgLy8gVGhpcyBjb2RlIGFzc3VtZXMgdGhhdCBzaWduZWQvdW5zaWduZWQgaW50ZWdyYWwgdmFsdWVzIGFyZSByZXByZXNlbnRlZAotICAgICAgIC8vIHN1Y2ggdGhhdDoKLSAgICAgICAvLwotICAgICAgIC8vICBudW1lcmljX2xpbWl0czxzaWduZWQgVD46OmRpZ2l0cyArIDEgPT0gbnVtZXJpY19saW1pdHM8dW5zaWduZWQgVD46OmRpZ2l0cwotICAgICAgIC8vCi0gICAgICAgLy8gVGhlICcrMScgaXMgcmVxdWlyZWQgc2luY2UgbnVtZXJpY19saW1pdHM8Pjo6ZGlnaXRzIGdpdmVzIDEgYml0IGxlc3MgZm9yIHNpZ25lZCBpbnRlZ3JhbCB0eXBlcy4KLSAgICAgICAvLwotICAgICAgIC8vIFRoaXMgZmFjdCBpcyB1c2VkIGJ5IHRoZSBmb2xsb3dpbmcgbG9naWM6Ci0gICAgICAgLy8KLSAgICAgICAvLyAgaWYgKCAobnVtZXJpY19saW1pdHM8VD46OmRpZ2l0cysxKSA8ICgyKm51bWVyaWNfbGltaXRzPFM+OjpkaWdpdHMpICkKLSAgICAgICAvLyAgICB0aGVuIHRoZSBjb252ZXJzaW9uIGlzIHN1YnJhbmdlZC4KLSAgICAgICAvLwotCi0gICAgICAgdHlwZWRlZiBtcGw6OmludF88IDo6c3RkOjpudW1lcmljX2xpbWl0czxTPjo6ZGlnaXRzID4gU19kaWdpdHMgOwotICAgICAgIHR5cGVkZWYgbXBsOjppbnRfPCA6OnN0ZDo6bnVtZXJpY19saW1pdHM8VD46OmRpZ2l0cyA+IFRfZGlnaXRzIDsKLQotICAgICAgIC8vIFQgaXMgc2lnbmVkLCBzbyB0YWtlIGRpZ2l0cysxCi0gICAgICAgdHlwZWRlZiB0eXBlbmFtZSBUX2RpZ2l0czo6bmV4dCB1X1RfZGlnaXRzIDsKLQotICAgICAgIHR5cGVkZWYgbXBsOjppbnRfPDI+IFR3byA7Ci0KLSAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bXVsdGlwbGllczxTX2RpZ2l0cyxUd28+Ojp0eXBlIFNfZGlnaXRzX3RpbWVzXzIgOwotCi0gICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6Omxlc3M8dV9UX2RpZ2l0cyxTX2RpZ2l0c190aW1lc18yPjo6dHlwZSB0eXBlIDsKLSAgICB9IDsKLQotICAgIC8vIGZvciBpbnRlZ3JhbCB0byBpbnRlZ3JhbCBjb252ZXJzaW9ucyBvZiB0aGUgc2FtZSBzaWduLgotICAgIHRlbXBsYXRlPGNsYXNzIFQsY2xhc3MgUz4KLSAgICBzdHJ1Y3Qgc3VicmFuZ2VkX1NhbWVTaWduCi0gICAgewotICAgICAgIC8vIEFuIGludGVncmFsIGNvbnZlcnNpb24gb2YgdGhlIHNhbWUgc2lnbiBpcyBzdWJyYW5nZWQgaWYgZGlnaXRzKFQpIDwgZGlnaXRzKFMpLgotCi0gICAgICAgdHlwZWRlZiBtcGw6OmludF88IDo6c3RkOjpudW1lcmljX2xpbWl0czxTPjo6ZGlnaXRzID4gU19kaWdpdHMgOwotICAgICAgIHR5cGVkZWYgbXBsOjppbnRfPCA6OnN0ZDo6bnVtZXJpY19saW1pdHM8VD46OmRpZ2l0cyA+IFRfZGlnaXRzIDsKLQotICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpsZXNzPFRfZGlnaXRzLFNfZGlnaXRzPjo6dHlwZSB0eXBlIDsKLSAgICB9IDsKLQotICAgIC8vIGZvciBpbnRlZ3JhbCB0byBmbG9hdCBjb252ZXJzaW9ucwotICAgIHRlbXBsYXRlPGNsYXNzIFQsY2xhc3MgUz4KLSAgICBzdHJ1Y3Qgc3VicmFuZ2VkX0ludDJGbG9hdAotICAgIHsKLSAgICAgIHR5cGVkZWYgbXBsOjpmYWxzZV8gdHlwZSA7Ci0gICAgfSA7Ci0KLSAgICAvLyBmb3IgZmxvYXQgdG8gaW50ZWdyYWwgY29udmVyc2lvbnMKLSAgICB0ZW1wbGF0ZTxjbGFzcyBULGNsYXNzIFM+Ci0gICAgc3RydWN0IHN1YnJhbmdlZF9GbG9hdDJJbnQKLSAgICB7Ci0gICAgICB0eXBlZGVmIG1wbDo6dHJ1ZV8gdHlwZSA7Ci0gICAgfSA7Ci0KLSAgICAvLyBmb3IgZmxvYXQgdG8gZmxvYXQgY29udmVyc2lvbnMKLSAgICB0ZW1wbGF0ZTxjbGFzcyBULGNsYXNzIFM+Ci0gICAgc3RydWN0IHN1YnJhbmdlZF9GbG9hdDJGbG9hdAotICAgIHsKLSAgICAgIC8vIElmIGJvdGggVCBhbmQgUyBhcmUgZmxvYXRzLAotICAgICAgLy8gY29tcGFyZSBleHBvbmVudCBiaXRzIGFuZCBpZiB0aGV5IG1hdGNoLCBtYW50aXNhIGJpdHMuCi0KLSAgICAgIHR5cGVkZWYgbXBsOjppbnRfPCA6OnN0ZDo6bnVtZXJpY19saW1pdHM8Uz46OmRpZ2l0cyA+IFNfbWFudGlzYSA7Ci0gICAgICB0eXBlZGVmIG1wbDo6aW50XzwgOjpzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjpkaWdpdHMgPiBUX21hbnRpc2EgOwotCi0gICAgICB0eXBlZGVmIG1wbDo6aW50XzwgOjpzdGQ6Om51bWVyaWNfbGltaXRzPFM+OjptYXhfZXhwb25lbnQgPiBTX2V4cG9uZW50IDsKLSAgICAgIHR5cGVkZWYgbXBsOjppbnRfPCA6OnN0ZDo6bnVtZXJpY19saW1pdHM8VD46Om1heF9leHBvbmVudCA+IFRfZXhwb25lbnQgOwotCi0gICAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bGVzczxUX2V4cG9uZW50LFNfZXhwb25lbnQ+Ojp0eXBlIFRfc21hbGxlcl9leHBvbmVudCA7Ci0KLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjplcXVhbF90bzxUX2V4cG9uZW50LFNfZXhwb25lbnQ+Ojp0eXBlIGVxdWFsX2V4cG9uZW50cyA7Ci0KLSAgICAgIHR5cGVkZWYgbXBsOjpsZXNzPFRfbWFudGlzYSxTX21hbnRpc2E+IFRfc21hbGxlcl9tYW50aXNhIDsKLQotICAgICAgdHlwZWRlZiBtcGw6OmV2YWxfaWY8ZXF1YWxfZXhwb25lbnRzLFRfc21hbGxlcl9tYW50aXNhLG1wbDo6ZmFsc2VfPiBub3RfYmlnZ2VyX2V4cG9uZW50X2Nhc2UgOwotCi0gICAgICB0eXBlZGVmIHR5cGVuYW1lCi0gICAgICAgIG1wbDo6ZXZhbF9pZjxUX3NtYWxsZXJfZXhwb25lbnQsbXBsOjp0cnVlXyxub3RfYmlnZ2VyX2V4cG9uZW50X2Nhc2U+Ojp0eXBlCi0gICAgICAgICAgdHlwZSA7Ci0gICAgfSA7Ci0KLSAgICAvLyBmb3IgVWR0IHRvIGJ1aWx0LWluIGNvbnZlcnNpb25zCi0gICAgdGVtcGxhdGU8Y2xhc3MgVCxjbGFzcyBTPgotICAgIHN0cnVjdCBzdWJyYW5nZWRfVWR0MkJ1aWx0SW4KLSAgICB7Ci0gICAgICB0eXBlZGVmIG1wbDo6dHJ1ZV8gdHlwZSA7Ci0gICAgfSA7Ci0KLSAgICAvLyBmb3IgYnVpbHQtaW4gdG8gVWR0IGNvbnZlcnNpb25zCi0gICAgdGVtcGxhdGU8Y2xhc3MgVCxjbGFzcyBTPgotICAgIHN0cnVjdCBzdWJyYW5nZWRfQnVpbHRJbjJVZHQKLSAgICB7Ci0gICAgICB0eXBlZGVmIG1wbDo6ZmFsc2VfIHR5cGUgOwotICAgIH0gOwotCi0gICAgLy8gZm9yIFVkdCB0byBVZHQgY29udmVyc2lvbnMKLSAgICB0ZW1wbGF0ZTxjbGFzcyBULGNsYXNzIFM+Ci0gICAgc3RydWN0IHN1YnJhbmdlZF9VZHQyVWR0Ci0gICAgewotICAgICAgdHlwZWRlZiBtcGw6OmZhbHNlXyB0eXBlIDsKLSAgICB9IDsKLQotICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgLy8gU2VsZWN0b3JzIGZvciB0aGUgaW1wbGVtZW50YXRpb25zIG9mIHRoZSBzdWJyYW5nZWQgcHJlZGljYXRlCi0gIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVCxjbGFzcyBTPgotICAgIHN0cnVjdCBnZXRfc3VicmFuZ2VkX0ludDJJbnQKLSAgICB7Ci0gICAgICB0eXBlZGVmIHN1YnJhbmdlZF9TYW1lU2lnbjxULFM+ICBTaWcyU2lnICAgICA7Ci0gICAgICB0eXBlZGVmIHN1YnJhbmdlZF9TaWcyVW5zaWc8VCxTPiBTaWcyVW5zaWcgICA7Ci0gICAgICB0eXBlZGVmIHN1YnJhbmdlZF9VbnNpZzJTaWc8VCxTPiBVbnNpZzJTaWcgICA7Ci0gICAgICB0eXBlZGVmIFNpZzJTaWcgICAgICAgICAgICAgICAgICBVbnNpZzJVbnNpZyA7Ci0KLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZ2V0X3NpZ25fbWl4dHVyZTxULFM+Ojp0eXBlIHNpZ25fbWl4dHVyZSA7Ci0KLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUKLSAgICAgICAgZm9yX3NpZ25fbWl4dHVyZTxzaWduX21peHR1cmUsIFNpZzJTaWcsIFNpZzJVbnNpZywgVW5zaWcyU2lnLCBVbnNpZzJVbnNpZz46OnR5cGUKLSAgICAgICAgICAgdHlwZSA7Ci0gICAgfSA7Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBULGNsYXNzIFM+Ci0gICAgc3RydWN0IGdldF9zdWJyYW5nZWRfQnVpbHRJbjJCdWlsdEluCi0gICAgewotICAgICAgdHlwZWRlZiBnZXRfc3VicmFuZ2VkX0ludDJJbnQ8VCxTPiBJbnQySW50USA7Ci0KLSAgICAgIHR5cGVkZWYgc3VicmFuZ2VkX0ludDJGbG9hdCAgPFQsUz4gSW50MkZsb2F0ICAgOwotICAgICAgdHlwZWRlZiBzdWJyYW5nZWRfRmxvYXQySW50ICA8VCxTPiBGbG9hdDJJbnQgICA7Ci0gICAgICB0eXBlZGVmIHN1YnJhbmdlZF9GbG9hdDJGbG9hdDxULFM+IEZsb2F0MkZsb2F0IDsKLQotICAgICAgdHlwZWRlZiBtcGw6OmlkZW50aXR5PEludDJGbG9hdCAgPiBJbnQyRmxvYXRRICAgOwotICAgICAgdHlwZWRlZiBtcGw6OmlkZW50aXR5PEZsb2F0MkludCAgPiBGbG9hdDJJbnRRICAgOwotICAgICAgdHlwZWRlZiBtcGw6OmlkZW50aXR5PEZsb2F0MkZsb2F0PiBGbG9hdDJGbG9hdFEgOwotCi0gICAgICB0eXBlZGVmIHR5cGVuYW1lIGdldF9pbnRfZmxvYXRfbWl4dHVyZTxULFM+Ojp0eXBlIGludF9mbG9hdF9taXh0dXJlIDsKLQotICAgICAgdHlwZWRlZiBmb3JfaW50X2Zsb2F0X21peHR1cmU8aW50X2Zsb2F0X21peHR1cmUsIEludDJJbnRRLCBJbnQyRmxvYXRRLCBGbG9hdDJJbnRRLCBGbG9hdDJGbG9hdFE+IGZvcl8gOwotCi0gICAgICB0eXBlZGVmIHR5cGVuYW1lIGZvcl86OnR5cGUgc2VsZWN0ZWQgOwotCi0gICAgICB0eXBlZGVmIHR5cGVuYW1lIHNlbGVjdGVkOjp0eXBlIHR5cGUgOwotICAgIH0gOwotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVCxjbGFzcyBTPgotICAgIHN0cnVjdCBnZXRfc3VicmFuZ2VkCi0gICAgewotICAgICAgdHlwZWRlZiBnZXRfc3VicmFuZ2VkX0J1aWx0SW4yQnVpbHRJbjxULFM+IEJ1aWx0SW4yQnVpbHRJblEgOwotCi0gICAgICB0eXBlZGVmIHN1YnJhbmdlZF9CdWlsdEluMlVkdDxULFM+IEJ1aWx0SW4yVWR0IDsKLSAgICAgIHR5cGVkZWYgc3VicmFuZ2VkX1VkdDJCdWlsdEluPFQsUz4gVWR0MkJ1aWx0SW4gOwotICAgICAgdHlwZWRlZiBzdWJyYW5nZWRfVWR0MlVkdDxULFM+ICAgICBVZHQyVWR0IDsKLQotICAgICAgdHlwZWRlZiBtcGw6OmlkZW50aXR5PEJ1aWx0SW4yVWR0PiBCdWlsdEluMlVkdFEgOwotICAgICAgdHlwZWRlZiBtcGw6OmlkZW50aXR5PFVkdDJCdWlsdEluPiBVZHQyQnVpbHRJblEgOwotICAgICAgdHlwZWRlZiBtcGw6OmlkZW50aXR5PFVkdDJVZHQgICAgPiBVZHQyVWR0USAgICAgOwotCi0gICAgICB0eXBlZGVmIHR5cGVuYW1lIGdldF91ZHRfYnVpbHRpbl9taXh0dXJlPFQsUz46OnR5cGUgdWR0X2J1aWx0aW5fbWl4dHVyZSA7Ci0gICAgICAKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUKLSAgICAgICAgZm9yX3VkdF9idWlsdGluX21peHR1cmU8dWR0X2J1aWx0aW5fbWl4dHVyZSwgQnVpbHRJbjJCdWlsdEluUSwgQnVpbHRJbjJVZHRRLCBVZHQyQnVpbHRJblEsIFVkdDJVZHRRPjo6dHlwZQotICAgICAgICAgIHNlbGVjdGVkIDsKLQotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZWxlY3RlZDo6dHlwZSBzZWxlY3RlZDIgOwotIAotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZWxlY3RlZDI6OnR5cGUgdHlwZSA7Ci0gICAgfSA7Ci0KLQotICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgLy8gVG9wIGxldmVsIGltcGxlbWVudGF0aW9uIHNlbGVjdG9yLgotICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgUz4KLSAgc3RydWN0IGdldF9pc19zdWJyYW5nZWQKLSAgewotICAgIHR5cGVkZWYgZ2V0X3N1YnJhbmdlZDxULFM+ICAgICAgICAgbm9uX3RyaXZpYWxfY2FzZSA7Ci0gICAgdHlwZWRlZiBtcGw6OmlkZW50aXR5PG1wbDo6ZmFsc2VfPiB0cml2aWFsX2Nhc2UgOwotCi0gICAgdHlwZWRlZiBpc19zYW1lPFQsUz4gaXNfdHJpdmlhbCA7Ci0gICAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6aWZfPGlzX3RyaXZpYWwsdHJpdmlhbF9jYXNlLG5vbl90cml2aWFsX2Nhc2U+Ojp0eXBlIHNlbGVjdGVkIDsKLSAgICAKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNlbGVjdGVkOjp0eXBlIHR5cGUgOwotICB9IDsKLQotfSB9IH0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0OjpudW1lcmljOjpjb252ZGV0YWlsCi0KLSNlbmRpZgotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC9tZXRhLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC9tZXRhLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzg3YmJiOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvbWV0YS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjAgKzAsMCBAQAotLy8gIChjKSBDb3B5cmlnaHQgRmVybmFuZG8gTHVpcyBDYWNjaW9sYSBDYXJiYWxsYWwgMjAwMC0yMDA0Ci0vLyAgVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLS8vICBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBsaWJyYXJ5IGhvbWUgcGFnZSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL251bWVyaWMvY29udmVyc2lvbgotLy8KLS8vIENvbnRhY3QgdGhlIGF1dGhvciBhdDogZmVybmFuZG9fY2FjY2lvbGFAaG90bWFpbC5jb20KLS8vIAotI2lmbmRlZiBORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fREVUQUlMX01FVEFfRkxDXzEyTk9WMjAwMl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX0RFVEFJTF9NRVRBX0ZMQ18xMk5PVjIwMDJfSFBQCi0KLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfY3YuaHBwIgotCi0jaW5jbHVkZSAibmRuYm9vc3QvbXBsL2lmLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC9tcGwvZXZhbF9pZi5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvbXBsL2VxdWFsX3RvLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC9tcGwvbm90LmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC9tcGwvYW5kLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC9tcGwvYm9vbC5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvbXBsL2lkZW50aXR5LmhwcCIKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG51bWVyaWMgeyBuYW1lc3BhY2UgY29udmRldGFpbAotewotICAgdGVtcGxhdGU8IGNsYXNzIFQxLCBjbGFzcyBUMj4KLSAgIHN0cnVjdCBlcXVhbF90bwotICAgewotICAgI2lmICFkZWZpbmVkKF9fQk9STEFORENfXykKLSAgIAotICAgICAgIGVudW0geyB4ID0gKCBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoVDEpOjp2YWx1ZSA9PSBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoVDIpOjp2YWx1ZSApIH07Ci0gICAgICAgICAgIAotICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHgpOwotICAgICAgICAgICAKLSAgICAgICB0eXBlZGVmIG1wbDo6Ym9vbF88dmFsdWU+IHR5cGU7Ci0gICAgICAgCi0gICAjZWxzZQotICAgCi0gICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gKAotICAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BVVhfVkFMVUVfV0tORChUMSk6OnZhbHVlIAotICAgICAgICAgICAgICAgPT0gTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKFQyKTo6dmFsdWUKLSAgICAgICAgICAgKSk7Ci0gICAgICAgICAgIAotICAgICAgIHR5cGVkZWYgbXBsOjpib29sXzwoCi0gICAgICAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9WQUxVRV9XS05EKFQxKTo6dmFsdWUgCi0gICAgICAgICAgICAgICA9PSBORE5CT09TVF9NUExfQVVYX1ZBTFVFX1dLTkQoVDIpOjp2YWx1ZQotICAgICAgICAgICApPiB0eXBlOwotICAgI2VuZGlmCi0gICB9OwotICAgIAotLy8gTWV0YWZ1bmN0aW9uOgotICAvLwotICAvLyAgIGN0X3N3aXRjaDQ8VmFsdWUsQ2FzZTBWYWwsQ2FzZTFWYWwsQ2FzZTJWYWwsQ2FzZTBUeXBlLENhc2UxVHlwZSxDYXNlMlR5cGUsRGVmYXVsdFR5cGU+Ojp0eXBlCi0gIC8vCi0gIC8vIHtWYWx1ZSxDYXNlKFgpVmFsfSBhcmUgSW50ZWdyYWwgQ29uc3RhbnRzIChzdWNoIGFzOiBtcGw6OmludF88PikKLSAgLy8ge0Nhc2UoWClUeXBlLERlZmF1bHRUeXBlfSBhcmUgYXJiaXRyYXJ5IHR5cGVzLiAobm90IG1ldGFmdW5jdGlvbnMpCi0gIC8vCi0gIC8vIFJldHVybnMgQ2FzZShYKVR5cGUgaWYgVmFsPT1DYXNlKFgpVmFsOyBEZWZhdWx0VHlwZSBvdGhlcndpc2UuCi0gIC8vCi0gIHRlbXBsYXRlPGNsYXNzIFZhbHVlLAotICAgICAgICAgICBjbGFzcyBDYXNlMFZhbCwKLSAgICAgICAgICAgY2xhc3MgQ2FzZTFWYWwsCi0gICAgICAgICAgIGNsYXNzIENhc2UyVmFsLAotICAgICAgICAgICBjbGFzcyBDYXNlMFR5cGUsCi0gICAgICAgICAgIGNsYXNzIENhc2UxVHlwZSwKLSAgICAgICAgICAgY2xhc3MgQ2FzZTJUeXBlLAotICAgICAgICAgICBjbGFzcyBEZWZhdWx0VHlwZQotICAgICAgICAgID4KLSAgc3RydWN0IGN0X3N3aXRjaDQKLSAgewotICAgIHR5cGVkZWYgbXBsOjppZGVudGl0eTxDYXNlMFR5cGU+IENhc2UwVHlwZVEgOwotICAgIHR5cGVkZWYgbXBsOjppZGVudGl0eTxDYXNlMVR5cGU+IENhc2UxVHlwZVEgOwotCi0gICAgdHlwZWRlZiBlcXVhbF90bzxWYWx1ZSxDYXNlMFZhbD4gaXNfY2FzZTAgOwotICAgIHR5cGVkZWYgZXF1YWxfdG88VmFsdWUsQ2FzZTFWYWw+IGlzX2Nhc2UxIDsKLSAgICB0eXBlZGVmIGVxdWFsX3RvPFZhbHVlLENhc2UyVmFsPiBpc19jYXNlMiA7Ci0KLSAgICB0eXBlZGVmIG1wbDo6aWZfPGlzX2Nhc2UyLENhc2UyVHlwZSxEZWZhdWx0VHlwZT4gY2hvb3NlXzJfM1EgOwotICAgIHR5cGVkZWYgbXBsOjpldmFsX2lmPGlzX2Nhc2UxLENhc2UxVHlwZVEsY2hvb3NlXzJfM1E+IGNob29zZV8xXzJfM1EgOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZQotICAgICAgbXBsOjpldmFsX2lmPGlzX2Nhc2UwLENhc2UwVHlwZVEsY2hvb3NlXzFfMl8zUT46OnR5cGUKLSAgICAgICAgdHlwZSA7Ci0gIH0gOwotCi0KLQotCi0gIC8vIE1ldGFmdW5jdGlvbjoKLSAgLy8KLSAgLy8gICBmb3JfYm90aDxleHByMCxleHByMSxUVCxURixGVCxGRj46OnR5cGUKLSAgLy8KLSAgLy8ge2V4cDAsZXhwcjF9IGFyZSBCb29sZWFuIEludGVncmFsIENvbnN0YW50cwotICAvLyB7VFQsVEYsRlQsRkZ9IGFyZSBhcmlidHJhcnkgdHlwZXMuIChub3QgbWV0YWZ1bmN0aW9ucykKLSAgLy8KLSAgLy8gQWNjb3JkaW5nIHRvIHRoZSBjb21iaW5lZCBib29sZWFuIHZhbHVlIG9mICdleHByMCAmJiBleHByMScsIHNlbGVjdHMgdGhlIGNvcnJlc3BvbmRpbmcgdHlwZS4KLSAgLy8KLSAgdGVtcGxhdGU8Y2xhc3MgZXhwcjAsIGNsYXNzIGV4cHIxLCBjbGFzcyBUVCwgY2xhc3MgVEYsIGNsYXNzIEZULCBjbGFzcyBGRj4KLSAgc3RydWN0IGZvcl9ib3RoCi0gIHsKLSAgICB0eXBlZGVmIG1wbDo6aWRlbnRpdHk8VEY+IFRGX1EgOwotICAgIHR5cGVkZWYgbXBsOjppZGVudGl0eTxUVD4gVFRfUSA7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bm90XzxleHByMD46OnR5cGUgbm90X2V4cHIwIDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6bm90XzxleHByMT46OnR5cGUgbm90X2V4cHIxIDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjphbmRfPGV4cHIwLGV4cHIxPjo6dHlwZSAgICAgY2FzZVRUIDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6YW5kXzxleHByMCxub3RfZXhwcjE+Ojp0eXBlIGNhc2VURiA7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmFuZF88bm90X2V4cHIwLGV4cHIxPjo6dHlwZSBjYXNlRlQgOwotCi0gICAgdHlwZWRlZiBtcGw6OmlmXzxjYXNlRlQsRlQsRkY+ICAgICAgICAgICAgICAgICAgICBjaG9vc2VfRlRfRkZfUSA7Ci0gICAgdHlwZWRlZiBtcGw6OmV2YWxfaWY8Y2FzZVRGLFRGX1EsY2hvb3NlX0ZUX0ZGX1E+IGNob29zZV9URl9GVF9GRl9RIDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpldmFsX2lmPGNhc2VUVCxUVF9RLGNob29zZV9URl9GVF9GRl9RPjo6dHlwZSB0eXBlIDsKLSAgfSA7Ci0KLX0gfSB9IC8vIG5hbWVzcGFjZSBuZG5ib29zdDo6bnVtZXJpYzo6Y29udmRldGFpbAotCi0jZW5kaWYKLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvbnVtZXJpY19jYXN0X3RyYWl0cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvbnVtZXJpY19jYXN0X3RyYWl0cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk2YmQ5NjEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL251bWVyaWNfY2FzdF90cmFpdHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTM4ICswLDAgQEAKLS8vCi0vLyEgQ29weXJpZ2h0IChjKSAyMDExLTIwMTIKLS8vISBCcmFuZG9uIEtvaG4KLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX0RPTlRfVVNFX1BSRVBST0NFU1NFRF9GSUxFUykKLQotICAgICNpbmNsdWRlIDxuZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL3ByZXByb2Nlc3NlZC9udW1lcmljX2Nhc3RfdHJhaXRzX2NvbW1vbi5ocHA+Ci0JCi0JI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0xPTkdfTE9ORykKLSAgICAgICAgI2luY2x1ZGUgPG5kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvcHJlcHJvY2Vzc2VkL251bWVyaWNfY2FzdF90cmFpdHNfbG9uZ19sb25nLmhwcD4KLQkjZW5kaWYKLQkKLSNlbHNlCi0jaWYgIU5ETkJPT1NUX1BQX0lTX0lURVJBVElORwotCi0gICAgI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvZWxlbS5ocHA+Ci0gICAgI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvc2l6ZS5ocHA+Ci0gICAgI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vaXRlcmF0ZS5ocHA+Ci0gICAgCi0gICAgI2lmIGRlZmluZWQoX19XQVZFX18pICYmIGRlZmluZWQoTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX0NSRUFURV9QUkVQUk9DRVNTRURfRklMRVMpCi0gICAgICAgICNwcmFnbWEgd2F2ZSBvcHRpb24ocHJlc2VydmU6IDIsIGxpbmU6IDAsIG91dHB1dDogInByZXByb2Nlc3NlZC9udW1lcmljX2Nhc3RfdHJhaXRzX2NvbW1vbi5ocHAiKQotICAgICNlbmRpZgotLy8KLS8vISBDb3B5cmlnaHQgKGMpIDIwMTEtMjAxMgotLy8hIEJyYW5kb24gS29obgotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0gICAgI2lmIGRlZmluZWQoX19XQVZFX18pICYmIGRlZmluZWQoTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX0NSRUFURV9QUkVQUk9DRVNTRURfRklMRVMpCi0gICAgICAgICNwcmFnbWEgd2F2ZSBvcHRpb24ocHJlc2VydmU6IDEpCi0gICAgI2VuZGlmCi0JCi0JLy8hIFRoZXNlIGFyZSB0aGUgYXNzdW1lZCBjb21tb24gYnVpbHQgaW4gZnVuZGFtZW50YWwgdHlwZXMgKG5vdCB0eXBlZGVmcy9tYWNyb3MuKQotCSNkZWZpbmUgTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX0JBU0VfQlVJTFRJTl9UWVBFUygpIFwKLSAgICAgICAgKGNoYXIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIChzaWduZWQgY2hhcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAodW5zaWduZWQgY2hhcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgKHNob3J0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICh1bnNpZ25lZCBzaG9ydCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAoaW50KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgKHVuc2lnbmVkIGludCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIChsb25nKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAodW5zaWduZWQgbG9uZykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgKGZsb2F0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIChkb3VibGUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAobG9uZyBkb3VibGUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAvKioqLwotCQotICAgICNkZWZpbmUgTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX1NFUV9BKCkgTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX0JBU0VfQlVJTFRJTl9UWVBFUygpCi0JI2RlZmluZSBORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fU0VRX0IoKSBORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fQkFTRV9CVUlMVElOX1RZUEVTKCkKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG51bWVyaWMgewotCi0gICAgI2RlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEgKDMsICgwLCBORE5CT09TVF9QUF9ERUMoTkROQk9PU1RfUFBfU0VRX1NJWkUoTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX1NFUV9BKCkpKSwgPG5kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvbnVtZXJpY19jYXN0X3RyYWl0cy5ocHA+KSkKLSAgICAjaW5jbHVkZSBORE5CT09TVF9QUF9JVEVSQVRFKCkgICAgCi0KLX19Ly9uYW1lc3BhY2UgbmRuYm9vc3Q6Om51bWVyaWM7Ci0KLSAgICAjaWYgZGVmaW5lZChfX1dBVkVfXykgJiYgZGVmaW5lZChORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fQ1JFQVRFX1BSRVBST0NFU1NFRF9GSUxFUykKLSAgICAgICAgI3ByYWdtYSB3YXZlIG9wdGlvbihvdXRwdXQ6IG51bGwpCi0gICAgI2VuZGlmICAgCi0JCi0JI2lmICggZGVmaW5lZChfX1dBVkVfXykgJiYgZGVmaW5lZChORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fQ1JFQVRFX1BSRVBST0NFU1NFRF9GSUxFUykgKSB8fCAhZGVmaW5lZChORE5CT09TVF9OT19MT05HX0xPTkcpCi0JCi0JICAgICN1bmRlZiBORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fU0VRX0EKLQkgICAgI3VuZGVmIE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9TRVFfQgotCi0JICAgICNpZiBkZWZpbmVkKF9fV0FWRV9fKSAmJiBkZWZpbmVkKE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9DUkVBVEVfUFJFUFJPQ0VTU0VEX0ZJTEVTKQotICAgICAgICAgICAgI3ByYWdtYSB3YXZlIG9wdGlvbihwcmVzZXJ2ZTogMiwgbGluZTogMCwgb3V0cHV0OiAicHJlcHJvY2Vzc2VkL251bWVyaWNfY2FzdF90cmFpdHNfbG9uZ19sb25nLmhwcCIpCi0gICAgICAgICNlbmRpZgotCi0vLwotLy8hIENvcHlyaWdodCAoYykgMjAxMS0yMDEyCi0vLyEgQnJhbmRvbiBLb2huCi0vLwotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLSAgICAgICAgI2lmIGRlZmluZWQoX19XQVZFX18pICYmIGRlZmluZWQoTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX0NSRUFURV9QUkVQUk9DRVNTRURfRklMRVMpCi0gICAgICAgICAgICAjcHJhZ21hIHdhdmUgb3B0aW9uKHByZXNlcnZlOiAxKQotICAgICAgICAjZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG51bWVyaWMgewotCi0gICAgI2RlZmluZSBORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fU0VRX0EoKSBORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fQkFTRV9CVUlMVElOX1RZUEVTKCkobmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlKShuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlKQotCSNkZWZpbmUgTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX1NFUV9CKCkgKG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZSkobmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZSkKLSAgICAKLSAgICAjZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMSAoMywgKDAsIE5ETkJPT1NUX1BQX0RFQyhORE5CT09TVF9QUF9TRVFfU0laRShORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fU0VRX0EoKSkpLCA8bmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC9udW1lcmljX2Nhc3RfdHJhaXRzLmhwcD4pKQotICAgICNpbmNsdWRlIE5ETkJPT1NUX1BQX0lURVJBVEUoKSAgICAKLQotfX0vL25hbWVzcGFjZSBuZG5ib29zdDo6bnVtZXJpYzsKLQotICAgICAgICAjaWYgZGVmaW5lZChfX1dBVkVfXykgJiYgZGVmaW5lZChORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fQ1JFQVRFX1BSRVBST0NFU1NFRF9GSUxFUykKLSAgICAgICAgICAgICNwcmFnbWEgd2F2ZSBvcHRpb24ob3V0cHV0OiBudWxsKQotICAgICAgICAjZW5kaWYgICAKLQkKLQkjZW5kaWYKLQkJCi0gICAgI3VuZGVmIE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9CQVNFX0JVSUxUSU5fVFlQRVMKLQkjdW5kZWYgTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX1NFUV9BCi0JI3VuZGVmIE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9TRVFfQgotICAgIAotI2VsaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0RFUFRIKCkgPT0gMQotCi0gICAgI2RlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzIgKDMsICgwLCBORE5CT09TVF9QUF9ERUMoTkROQk9PU1RfUFBfU0VRX1NJWkUoTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX1NFUV9CKCkpKSwgPG5kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvbnVtZXJpY19jYXN0X3RyYWl0cy5ocHA+KSkKLSAgICAjaW5jbHVkZSBORE5CT09TVF9QUF9JVEVSQVRFKCkKLQotI2VsaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0RFUFRIKCkgPT0gMgotCi0gICAgLy8hIEdlbmVyYXRlIGRlZmF1bHQgdHJhaXRzIGZvciB0aGUgc3BlY2lmaWVkIHNvdXJjZSBhbmQgdGFyZ2V0LgotICAgICNkZWZpbmUgTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX0EgTkROQk9PU1RfUFBfRlJBTUVfSVRFUkFUSU9OKDEpCi0gICAgI2RlZmluZSBORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fQiBORE5CT09TVF9QUF9GUkFNRV9JVEVSQVRJT04oMikKLQotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgTkROQk9PU1RfUFBfU0VRX0VMRU0oTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX0EsIE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9TRVFfQSgpKQotICAgICAgICAgICwgTkROQk9PU1RfUFBfU0VRX0VMRU0oTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX0IsIE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9TRVFfQigpKQotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8TkROQk9PU1RfUFBfU0VRX0VMRU0oTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX0IsIE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9TRVFfQigpKT4gcm91bmRpbmdfcG9saWN5OwotICAgIH07ICAgICAKLQotICAgICN1bmRlZiBORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fQQotICAgICN1bmRlZiBORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fQgotCi0jZW5kaWYvLyEgRGVwdGggMi4KLSNlbmRpZi8vIE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9ET05UX1VTRV9QUkVQUk9DRVNTRURfRklMRVMKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC9vbGRfbnVtZXJpY19jYXN0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC9vbGRfbnVtZXJpY19jYXN0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGZjNGNhYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvb2xkX251bWVyaWNfY2FzdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMzkgKzAsMCBAQAotLy8gIGJvb3N0IGNhc3QuaHBwIGhlYWRlciBmaWxlICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gIChDKSBDb3B5cmlnaHQgS2V2bGluIEhlbm5leSBhbmQgRGF2ZSBBYnJhaGFtcyAxOTk5LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdAotLy8gIFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvY29udmVyc2lvbiBmb3IgRG9jdW1lbnRhdGlvbi4KLQotLy8gIFJldmlzaW9uIEhpc3RvcnkKLS8vICAyMyBKVU4gMDUgIENvZGUgZXh0cmFjdGVkIGZyb20gL2Jvb3N0L2Nhc3QuaHBwIGludG8gdGhpcyBuZXcgaGVhZGVyLgotLy8gICAgICAgICAgICAgS2VlcHMgdGhpcyBsZWdhY3kgdmVyc2lvbiBvZiBudW1lcmljX2Nhc3Q8PiBmb3Igb2xkIGNvbXBpbGVycwotLy8gICAgICAgICAgICAgd2ljaCBjYW4ndCBjb21waWxlIHRoZSBuZXcgdmVyc2lvbiBpbiAvYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2Nhc3QuaHBwCi0vLyAgICAgICAgICAgICAoRmVybmFuZG8gQ2FjY2lvbGEpCi0vLyAgMDIgQXByIDAxICBSZW1vdmVkIE5ETkJPT1NUX05PX0xJTUlUUyB3b3JrYXJvdW5kcyBhbmQgaW5jbHVkZWQKLS8vICAgICAgICAgICAgIDxuZG5ib29zdC9saW1pdHMuaHBwPiBpbnN0ZWFkICh0aGUgd29ya2Fyb3VuZCBkaWQgbm90Ci0vLyAgICAgICAgICAgICBhY3R1YWxseSBjb21waWxlIHdoZW4gTkROQk9PU1RfTk9fTElNSVRTIHdhcyBkZWZpbmVkIGluCi0vLyAgICAgICAgICAgICBhbnkgY2FzZSwgc28gd2UgbG9vc2Ugbm90aGluZykuIChKb2huIE1hZGRvY2spCi0vLyAgMjEgSmFuIDAxICBVbmRpZCBhIGJ1ZyBJIGludHJvZHVjZWQgeWVzdGVyZGF5LiBudW1lcmljX2Nhc3Q8PiBuZXZlcgotLy8gICAgICAgICAgICAgd29ya2VkIHdpdGggc3RvY2sgR0NDOyB0cnlpbmcgdG8gZ2V0IGl0IHRvIGRvIHRoYXQgYnJva2UKLS8vICAgICAgICAgICAgIHZjLXN0bHBvcnQuCi0vLyAgMjAgSmFuIDAxICBNb3ZlZCBORE5CT09TVF9OT19MSU1JVFNfQ09NUElMRV9USU1FX0NPTlNUQU5UUyB0byBjb25maWcuaHBwLgotLy8gICAgICAgICAgICAgUmVtb3ZlZCB1bnVzZWQgTkROQk9PU1RfRVhQTElDSVRfVEFSR0VUIG1hY3JvLiBNb3ZlZAotLy8gICAgICAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6dHlwZSB0byBuZG5ib29zdC90eXBlLmhwcC4gTWFkZSBpdCBjb21waWxlIHdpdGgKLS8vICAgICAgICAgICAgIHN0b2NrIGdjYyBhZ2FpbiAoRGF2ZSBBYnJhaGFtcykKLS8vICAyOSBOb3YgMDAgIFJlbW92ZSBuZXN0ZWQgbmFtZXNwYWNlIGNhc3QsIGNsZWFudXAgc3BhY2luZyBiZWZvcmUgRm9ybWFsCi0vLyAgICAgICAgICAgICBSZXZpZXcgKEJlbWFuIERhd2VzKQotLy8gIDE5IE9jdCAwMCAgRml4IG51bWVyaWNfY2FzdCBmb3IgZmxvYXRpbmctcG9pbnQgdHlwZXMgKERhdmUgQWJyYWhhbXMpCi0vLyAgMTUgSnVsIDAwICBTdXBwcmVzcyBudW1lcmljX2Nhc3Qgd2FybmluZ3MgZm9yIEdDQywgQm9ybGFuZCBhbmQgTVNWQwotLy8gICAgICAgICAgICAgKERhdmUgQWJyYWhhbXMpCi0vLyAgMzAgSnVuIDAwICBNb3JlIE1TVkM2IHdvcmRhcm91bmRzLiAgU2VlIGNvbW1lbnRzIGJlbG93LiAgKERhdmUgQWJyYWhhbXMpCi0vLyAgMjggSnVuIDAwICBSZW1vdmVkIGltcGxpY2l0X2Nhc3Q8Pi4gIFNlZSBjb21tZW50IGJlbG93LiAoQmVtYW4gRGF3ZXMpCi0vLyAgMjcgSnVuIDAwICBNb3JlIE1TVkM2IHdvcmthcm91bmRzCi0vLyAgMTUgSnVuIDAwICBBZGQgd29ya2Fyb3VuZHMgZm9yIE1TVkM2Ci0vLyAgIDIgRmViIDAwICBSZW1vdmUgYmFkX251bWVyaWNfY2FzdCAiOyIgc3ludGF4IGVycm9yIChEb25jaG8gQW5nZWxvdikKLS8vICAyNiBKYW4gMDAgIEFkZCBtaXNzaW5nIHRocm93KCkgdG8gYmFkX251bWVyaWNfY2FzdDo6d2hhdCgwIChBZGFtIExldmFyKQotLy8gIDI5IERlYyA5OSAgQ2hhbmdlIHVzaW5nIGRlY2xhcmF0aW9ucyBzbyB1c2FnZXMgaW4gb3RoZXIgbmFtZXNwYWNlcyB3b3JrCi0vLyAgICAgICAgICAgICBjb3JyZWN0bHkgKERhdmUgQWJyYWhhbXMpCi0vLyAgMjMgU2VwIDk5ICBDaGFuZ2UgcG9seW1vcnBoaWNfZG93bmNhc3QgYXNzZXJ0IHRvIGFsc28gZGV0ZWN0IE0uSS4gZXJyb3JzCi0vLyAgICAgICAgICAgICBhcyBzdWdnZXN0ZWQgRGFyaW4gQWRsZXIgYW5kIGltcHJvdmVkIGJ5IFZhbGVudGluIEJvbm5hcmQuCi0vLyAgIDIgU2VwIDk5ICBSZW1vdmUgY29udHJvdmVyc2lhbCBhc3NlcnRzLCBzaW1wbGlmeSwgcmVuYW1lLgotLy8gIDMwIEF1ZyA5OSAgTW92ZSB0byBjYXN0LmhwcCwgcmVwbGFjZSB2YWx1ZV9jYXN0IHdpdGggbnVtZXJpY19jYXN0LAotLy8gICAgICAgICAgICAgcGxhY2UgaW4gbmVzdGVkIG5hbWVzcGFjZS4KLS8vICAgMyBBdWcgOTkgIEluaXRpYWwgdmVyc2lvbgotCi0jaWZuZGVmIE5ETkJPT1NUX09MRF9OVU1FUklDX0NBU1RfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX09MRF9OVU1FUklDX0NBU1RfSFBQCi0KLSMgaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSMgaW5jbHVkZSA8Y2Fzc2VydD4KLSMgaW5jbHVkZSA8dHlwZWluZm8+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGUuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9saW1pdHMuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vY29udmVydGVyX3BvbGljaWVzLmhwcD4KLQotLy8gIEl0IGhhcyBiZWVuIGRlbW9uc3RyYXRlZCBudW1lcm91cyB0aW1lcyB0aGF0IE1TVkMgNi4wIGZhaWxzIHNpbGVudGx5IGF0IGxpbmsKLS8vICB0aW1lIGlmIHlvdSB1c2UgYSB0ZW1wbGF0ZSBmdW5jdGlvbiB3aGljaCBoYXMgdGVtcGxhdGUgcGFyYW1ldGVycyB0aGF0IGRvbid0Ci0vLyAgYXBwZWFyIGluIHRoZSBmdW5jdGlvbidzIGFyZ3VtZW50IGxpc3QuCi0vLwotLy8gIFRPRE86IEFkZCB0aGlzIHRvIGNvbmZpZy5ocHA/Ci0vLyAgRkxDOiBUaGlzIG1hY3JvIGlzIHJlcGVhdGVkIGluIG5kbmJvb3N0L2Nhc3QuaHBwIGJ1dCBvbmx5IGxvY2FsbHkgKGlzIHVuZGVmaW5lZCBhdCB0aGUgYm90dG9tKQotLy8gICAgICAgc28gaXMgT0sgdG8gcmVwcm9kdWNlIGl0IGhlcmUuCi0jIGlmIGRlZmluZWQoTkROQk9PU1RfTVNWQykgJiYgTkROQk9PU1RfTVNWQyA8IDEzMDAKLSMgIGRlZmluZSBORE5CT09TVF9FWFBMSUNJVF9ERUZBVUxUX1RBUkdFVCAsIDo6bmRuYm9vc3Q6OnR5cGU8VGFyZ2V0PiogPSAwCi0jIGVsc2UKLSMgIGRlZmluZSBORE5CT09TVF9FWFBMSUNJVF9ERUZBVUxUX1RBUkdFVAotIyBlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLSAgdXNpbmcgbnVtZXJpYzo6YmFkX251bWVyaWNfY2FzdDsKLQotLy8gIExFR0FDWSBudW1lcmljX2Nhc3QgW29ubHkgZm9yIHNvbWUgb2xkIGJyb2tlbiBjb21waWxlcnNdIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gIENvbnRyaWJ1dGVkIGJ5IEtldmxpbiBIZW5uZXkKLQotLy8gIG51bWVyaWNfY2FzdCAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0xJTUlUU19DT01QSUxFX1RJTUVfQ09OU1RBTlRTKSB8fCBkZWZpbmVkKE5ETkJPT1NUX1NHSV9DUFBfTElNSVRTKQotCi0gICAgbmFtZXNwYWNlIGRldGFpbAotICAgIHsKLSAgICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgICAgc3RydWN0IHNpZ25lZF9udW1lcmljX2xpbWl0cyA6IHN0ZDo6bnVtZXJpY19saW1pdHM8VD4KLSAgICAgIHsKLSAgICAgICAgICAgICBzdGF0aWMgaW5saW5lIFQgbWluIE5ETkJPT1NUX1BSRVZFTlRfTUFDUk9fU1VCU1RJVFVUSU9OICgpCi0gICAgICAgICB7Ci0gICAgICAgICAgICAgcmV0dXJuIChzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptaW4pKCkgPj0gMAotICAgICAgICAgICAgICAgICAgICAgLy8gdW5hcnkgbWludXMgY2F1c2VzIGludGVncmFsIHByb21vdGlvbiwgdGh1cyB0aGUgc3RhdGljX2Nhc3Q8PgotICAgICAgICAgICAgICAgICAgICAgPyBzdGF0aWNfY2FzdDxUPigtKHN0ZDo6bnVtZXJpY19saW1pdHM8VD46Om1heCkoKSkKLSAgICAgICAgICAgICAgICAgICAgIDogKHN0ZDo6bnVtZXJpY19saW1pdHM8VD46Om1pbikoKTsKLSAgICAgICAgIH07Ci0gICAgICB9OwotCi0gICAgICAvLyBNb3ZlIHRvIG5hbWVzcGFjZSBuZG5ib29zdCBpbiB1dGlsaXR5LmhwcD8KLSAgICAgIHRlbXBsYXRlIDxjbGFzcyBULCBib29sIHNwZWNpYWxpemVkPgotICAgICAgc3RydWN0IGZpeGVkX251bWVyaWNfbGltaXRzX2Jhc2UKLSAgICAgICAgICA6IHB1YmxpYyBpZl90cnVlPCBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+Ojppc19zaWduZWQgPgotICAgICAgICAgICA6Ok5ETkJPT1NUX05FU1RFRF9URU1QTEFURSB0aGVuPCBzaWduZWRfbnVtZXJpY19saW1pdHM8VD4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxUPgotICAgICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgIHt9OwotCi0gICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICAgIHN0cnVjdCBmaXhlZF9udW1lcmljX2xpbWl0cwotICAgICAgICAgIDogZml4ZWRfbnVtZXJpY19saW1pdHNfYmFzZTxULChzdGQ6Om51bWVyaWNfbGltaXRzPFQ+Ojppc19zcGVjaWFsaXplZCk+Ci0gICAgICB7fTsKLQotIyBpZmRlZiBORE5CT09TVF9IQVNfTE9OR19MT05HCi0gICAgICAvLyBjb3ZlciBpbXBsZW1lbnRhdGlvbnMgd2hpY2ggc3VwcGx5IG5vIHNwZWNpYWxpemF0aW9uIGZvciBsb25nCi0gICAgICAvLyBsb25nIC8gdW5zaWduZWQgbG9uZyBsb25nLiBOb3QgaW50ZW5kZWQgdG8gYmUgZnVsbAotICAgICAgLy8gbnVtZXJpY19saW1pdHMgcmVwbGFjZW1lbnRzLCBidXQgZ29vZCBlbm91Z2ggZm9yIG51bWVyaWNfY2FzdDw+Ci0gICAgICB0ZW1wbGF0ZSA8PgotICAgICAgc3RydWN0IGZpeGVkX251bWVyaWNfbGltaXRzX2Jhc2U8IDo6bmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlLCBmYWxzZT4KLSAgICAgIHsKLSAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfc3BlY2lhbGl6ZWQgPSB0cnVlKTsKLSAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfc2lnbmVkID0gdHJ1ZSk7Ci0gICAgICAgICAgc3RhdGljICA6Om5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZSBtYXggTkROQk9PU1RfUFJFVkVOVF9NQUNST19TVUJTVElUVVRJT04gKCkKLSAgICAgICAgICB7Ci0jICBpZmRlZiBMT05HTE9OR19NQVgKLSAgICAgICAgICAgICAgcmV0dXJuIExPTkdMT05HX01BWDsKLSMgIGVsc2UKLSAgICAgICAgICAgICAgcmV0dXJuIDkyMjMzNzIwMzY4NTQ3NzU4MDdMTDsgLy8gaG9wZSB0aGlzIGlzIHBvcnRhYmxlCi0jICBlbmRpZgotICAgICAgICAgIH0KLQotICAgICAgICAgIHN0YXRpYyAgOjpuZG5ib29zdDo6bG9uZ19sb25nX3R5cGUgbWluIE5ETkJPT1NUX1BSRVZFTlRfTUFDUk9fU1VCU1RJVFVUSU9OICgpCi0gICAgICAgICAgewotIyAgaWZkZWYgTE9OR0xPTkdfTUlOCi0gICAgICAgICAgICAgIHJldHVybiBMT05HTE9OR19NSU47Ci0jICBlbHNlCi0gICAgICAgICAgICAgICByZXR1cm4gLSggOTIyMzM3MjAzNjg1NDc3NTgwN0xMICktMTsgLy8gaG9wZSB0aGlzIGlzIHBvcnRhYmxlCi0jICBlbmRpZgotICAgICAgICAgIH0KLSAgICAgIH07Ci0KLSAgICAgIHRlbXBsYXRlIDw+Ci0gICAgICBzdHJ1Y3QgZml4ZWRfbnVtZXJpY19saW1pdHNfYmFzZTwgOjpuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlLCBmYWxzZT4KLSAgICAgIHsKLSAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfc3BlY2lhbGl6ZWQgPSB0cnVlKTsKLSAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfc2lnbmVkID0gZmFsc2UpOwotICAgICAgICAgIHN0YXRpYyAgOjpuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlIG1heCBORE5CT09TVF9QUkVWRU5UX01BQ1JPX1NVQlNUSVRVVElPTiAoKQotICAgICAgICAgIHsKLSMgIGlmZGVmIFVMT05HTE9OR19NQVgKLSAgICAgICAgICAgICAgcmV0dXJuIFVMT05HTE9OR19NQVg7Ci0jICBlbHNlCi0gICAgICAgICAgICAgIHJldHVybiAweGZmZmZmZmZmZmZmZmZmZmZVTEw7IC8vIGhvcGUgdGhpcyBpcyBwb3J0YWJsZQotIyAgZW5kaWYKLSAgICAgICAgICB9Ci0KLSAgICAgICAgICBzdGF0aWMgIDo6bmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZSBtaW4gTkROQk9PU1RfUFJFVkVOVF9NQUNST19TVUJTVElUVVRJT04gKCkgeyByZXR1cm4gMDsgfQotICAgICAgfTsKLSMgZW5kaWYKLSAgICB9IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotLy8gbGVzc190aGFuX3R5cGVfbWluIC0KLSAgLy8gICAgeF9pc19zaWduZWQgc2hvdWxkIGJlIG51bWVyaWNfbGltaXRzPFg+Ojppc19zaWduZWQKLSAgLy8gICAgeV9pc19zaWduZWQgc2hvdWxkIGJlIG51bWVyaWNfbGltaXRzPFk+Ojppc19zaWduZWQKLSAgLy8gICAgeV9taW4gc2hvdWxkIGJlIG51bWVyaWNfbGltaXRzPFk+OjptaW4oKQotICAvLwotICAvLyAgICBjaGVjayh4LCB5X21pbikgcmV0dXJucyB0cnVlIGlmZiB4IDwgeV9taW4gd2l0aG91dCBpbnZva2luZyBjb21wYXJpc29ucwotICAvLyAgICBiZXR3ZWVuIHNpZ25lZCBhbmQgdW5zaWduZWQgdmFsdWVzLgotICAvLwotICAvLyAgICAicG9vciBtYW4ncyBwYXJ0aWFsIHNwZWNpYWxpemF0aW9uIiBpcyBpbiB1c2UgaGVyZS4KLSAgICB0ZW1wbGF0ZSA8Ym9vbCB4X2lzX3NpZ25lZCwgYm9vbCB5X2lzX3NpZ25lZD4KLSAgICBzdHJ1Y3QgbGVzc190aGFuX3R5cGVfbWluCi0gICAgewotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgWCwgY2xhc3MgWT4KLSAgICAgICAgc3RhdGljIGJvb2wgY2hlY2soWCB4LCBZIHlfbWluKQotICAgICAgICAgICAgeyByZXR1cm4geCA8IHlfbWluOyB9Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IGxlc3NfdGhhbl90eXBlX21pbjxmYWxzZSwgdHJ1ZT4KLSAgICB7Ci0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBYLCBjbGFzcyBZPgotICAgICAgICBzdGF0aWMgYm9vbCBjaGVjayhYLCBZKQotICAgICAgICAgICAgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB9OwotCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbGVzc190aGFuX3R5cGVfbWluPHRydWUsIGZhbHNlPgotICAgIHsKLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFgsIGNsYXNzIFk+Ci0gICAgICAgIHN0YXRpYyBib29sIGNoZWNrKFggeCwgWSkKLSAgICAgICAgICAgIHsgcmV0dXJuIHggPCAwOyB9Ci0gICAgfTsKLQotICAvLyBncmVhdGVyX3RoYW5fdHlwZV9tYXggLQotICAvLyAgICBzYW1lX3NpZ24gc2hvdWxkIGJlOgotICAvLyAgICAgICAgICAgIG51bWVyaWNfbGltaXRzPFg+Ojppc19zaWduZWQgPT0gbnVtZXJpY19saW1pdHM8WT46OmlzX3NpZ25lZAotICAvLyAgICB5X21heCBzaG91bGQgYmUgbnVtZXJpY19saW1pdHM8WT46Om1heCgpCi0gIC8vCi0gIC8vICAgIGNoZWNrKHgsIHlfbWF4KSByZXR1cm5zIHRydWUgaWZmIHggPiB5X21heCB3aXRob3V0IGludm9raW5nIGNvbXBhcmlzb25zCi0gIC8vICAgIGJldHdlZW4gc2lnbmVkIGFuZCB1bnNpZ25lZCB2YWx1ZXMuCi0gIC8vCi0gIC8vICAgICJwb29yIG1hbidzIHBhcnRpYWwgc3BlY2lhbGl6YXRpb24iIGlzIGluIHVzZSBoZXJlLgotICAgIHRlbXBsYXRlIDxib29sIHNhbWVfc2lnbiwgYm9vbCB4X2lzX3NpZ25lZD4KLSAgICBzdHJ1Y3QgZ3JlYXRlcl90aGFuX3R5cGVfbWF4OwotCi0gICAgdGVtcGxhdGU8PgotICAgIHN0cnVjdCBncmVhdGVyX3RoYW5fdHlwZV9tYXg8dHJ1ZSwgdHJ1ZT4KLSAgICB7Ci0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBYLCBjbGFzcyBZPgotICAgICAgICBzdGF0aWMgaW5saW5lIGJvb2wgY2hlY2soWCB4LCBZIHlfbWF4KQotICAgICAgICAgICAgeyByZXR1cm4geCA+IHlfbWF4OyB9Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IGdyZWF0ZXJfdGhhbl90eXBlX21heDxmYWxzZSwgdHJ1ZT4KLSAgICB7Ci0gICAgICAgIC8vIFdoYXQgZG9lcyB0aGUgc3RhbmRhcmQgc2F5IGFib3V0IHRoaXM/IEkgdGhpbmsgaXQncyByaWdodCwgYW5kIGl0Ci0gICAgICAgIC8vIHdpbGwgd29yayB3aXRoIGV2ZXJ5IGNvbXBpbGVyIEkga25vdyBvZi4KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFgsIGNsYXNzIFk+Ci0gICAgICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBjaGVjayhYIHgsIFkpCi0gICAgICAgICAgICB7IHJldHVybiB4ID49IDAgJiYgc3RhdGljX2Nhc3Q8WD4oc3RhdGljX2Nhc3Q8WT4oeCkpICE9IHg7IH0KLQotIyBpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpICYmIE5ETkJPT1NUX01TVkMgPCAxMzAwCi0gICAgICAgIC8vIE1TVkM2IGNhbid0IHN0YXRpY19jYXN0ICB1bnNpZ25lZCBfX2ludDY0IC0+IGZsb2F0aW5nIHR5cGVzCi0jICBkZWZpbmUgTkROQk9PU1RfVUlOVDY0X0NBU1Qoc3JjX3R5cGUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBjaGVjayhzcmNfdHlwZSB4LCB1bnNpZ25lZCBfX2ludDY0KSAgICAgICAgICBcCi0gICAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBpZiAoeCA8IDApIHJldHVybiBmYWxzZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICB1bnNpZ25lZCBfX2ludDY0IHkgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBfX2ludDY0Pih4KTsgICAgICBcCi0gICAgICAgICAgICBib29sIG9kZCA9IHkgJiAweDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBfX2ludDY0IGRpdjIgPSBzdGF0aWNfY2FzdDxfX2ludDY0Pih5ID4+IDEpOyAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICByZXR1cm4gKChzdGF0aWNfY2FzdDxzcmNfdHlwZT4oZGl2MikgKiAyLjApICsgb2RkKSAhPSB4OyAgICBcCi0gICAgICAgIH0KLQotICAgICAgICBORE5CT09TVF9VSU5UNjRfQ0FTVChsb25nIGRvdWJsZSk7Ci0gICAgICAgIE5ETkJPT1NUX1VJTlQ2NF9DQVNUKGRvdWJsZSk7Ci0gICAgICAgIE5ETkJPT1NUX1VJTlQ2NF9DQVNUKGZsb2F0KTsKLSMgIHVuZGVmIE5ETkJPT1NUX1VJTlQ2NF9DQVNUCi0jIGVuZGlmCi0gICAgfTsKLQotICAgIHRlbXBsYXRlPD4KLSAgICBzdHJ1Y3QgZ3JlYXRlcl90aGFuX3R5cGVfbWF4PHRydWUsIGZhbHNlPgotICAgIHsKLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFgsIGNsYXNzIFk+Ci0gICAgICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBjaGVjayhYIHgsIFkgeV9tYXgpCi0gICAgICAgICAgICB7IHJldHVybiB4ID4geV9tYXg7IH0KLSAgICB9OwotCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgZ3JlYXRlcl90aGFuX3R5cGVfbWF4PGZhbHNlLCBmYWxzZT4KLSAgICB7Ci0gICAgICAgIC8vIFdoYXQgZG9lcyB0aGUgc3RhbmRhcmQgc2F5IGFib3V0IHRoaXM/IEkgdGhpbmsgaXQncyByaWdodCwgYW5kIGl0Ci0gICAgICAgIC8vIHdpbGwgd29yayB3aXRoIGV2ZXJ5IGNvbXBpbGVyIEkga25vdyBvZi4KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFgsIGNsYXNzIFk+Ci0gICAgICAgIHN0YXRpYyBpbmxpbmUgYm9vbCBjaGVjayhYIHgsIFkpCi0gICAgICAgICAgICB7IHJldHVybiBzdGF0aWNfY2FzdDxYPihzdGF0aWNfY2FzdDxZPih4KSkgIT0geDsgfQotICAgIH07Ci0KLSNlbHNlIC8vIHVzZSAjcHJhZ21hIGhhY2tzIGlmIGF2YWlsYWJsZQotCi0gIG5hbWVzcGFjZSBkZXRhaWwKLSAgewotIyBpZiBORE5CT09TVF9NU1ZDCi0jICBwcmFnbWEgd2FybmluZyhwdXNoKQotIyAgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZSA6IDQwMTgpCi0jICBwcmFnbWEgd2FybmluZyhkaXNhYmxlIDogNDE0NikKLSNlbGlmIGRlZmluZWQoX19CT1JMQU5EQ19fKQotIyAgcHJhZ21hIG9wdGlvbiBwdXNoIC13LTgwNDEKLSMgZW5kaWYKLQotICAgICAgIC8vIE1vdmUgdG8gbmFtZXNwYWNlIG5kbmJvb3N0IGluIHV0aWxpdHkuaHBwPwotICAgICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgICAgIHN0cnVjdCBmaXhlZF9udW1lcmljX2xpbWl0cyA6IHB1YmxpYyBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+Ci0gICAgICAgewotICAgICAgICAgICBzdGF0aWMgaW5saW5lIFQgbWluIE5ETkJPT1NUX1BSRVZFTlRfTUFDUk9fU1VCU1RJVFVUSU9OICgpCi0gICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPFQ+Ojppc19zaWduZWQgJiYgKHN0ZDo6bnVtZXJpY19saW1pdHM8VD46Om1pbikoKSA+PSAwCi0gICAgICAgICAgICAgICAgICAgPyBUKC0oc3RkOjpudW1lcmljX2xpbWl0czxUPjo6bWF4KSgpKSA6IChzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjptaW4pKCk7Ci0gICAgICAgICAgIH0KLSAgICAgICB9OwotCi0jIGlmIE5ETkJPT1NUX01TVkMKLSMgIHByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbGlmIGRlZmluZWQoX19CT1JMQU5EQ19fKQotIyAgcHJhZ21hIG9wdGlvbiBwb3AKLSMgZW5kaWYKLSAgfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLSNlbmRpZgotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+Ci0gICAgaW5saW5lIFRhcmdldCBudW1lcmljX2Nhc3QoU291cmNlIGFyZyBORE5CT09TVF9FWFBMSUNJVF9ERUZBVUxUX1RBUkdFVCkKLSAgICB7Ci0gICAgICAgIC8vIHR5cGVkZWZzIGFiYnJldmlhdGluZyByZXNwZWN0aXZlIHRyYWl0IGNsYXNzZXMKLSAgICAgICAgdHlwZWRlZiBkZXRhaWw6OmZpeGVkX251bWVyaWNfbGltaXRzPFNvdXJjZT4gYXJnX3RyYWl0czsKLSAgICAgICAgdHlwZWRlZiBkZXRhaWw6OmZpeGVkX251bWVyaWNfbGltaXRzPFRhcmdldD4gcmVzdWx0X3RyYWl0czsKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfU1RSSUNUX0NPTkZJRykgXAotICAgIHx8ICghZGVmaW5lZChfX0hQX2FDQykgfHwgX19IUF9hQ0MgPiAzMzkwMCkgXAotICAgICAgICAgJiYgKCFkZWZpbmVkKE5ETkJPT1NUX05PX0xJTUlUU19DT01QSUxFX1RJTUVfQ09OU1RBTlRTKSBcCi0gICAgICAgICAgICAgfHwgZGVmaW5lZChORE5CT09TVF9TR0lfQ1BQX0xJTUlUUykpCi0gICAgICAgIC8vIHR5cGVkZWZzIHRoYXQgYWN0IGFzIGNvbXBpbGUgdGltZSBhc3NlcnRpb25zCi0gICAgICAgIC8vICh0byBiZSByZXBsYWNlZCBieSBib29zdCBjb21waWxlIHRpbWUgYXNzZXJ0aW9ucwotICAgICAgICAvLyBhcyBhbmQgd2hlbiB0aGV5IGJlY29tZSBhdmFpbGFibGUgYW5kIGFyZSBzdGFibGUpCi0gICAgICAgIHR5cGVkZWYgYm9vbCBhcmd1bWVudF9tdXN0X2JlX251bWVyaWNbYXJnX3RyYWl0czo6aXNfc3BlY2lhbGl6ZWRdOwotICAgICAgICB0eXBlZGVmIGJvb2wgcmVzdWx0X211c3RfYmVfbnVtZXJpY1tyZXN1bHRfdHJhaXRzOjppc19zcGVjaWFsaXplZF07Ci0KLSAgICAgICAgY29uc3QgYm9vbCBhcmdfaXNfc2lnbmVkID0gYXJnX3RyYWl0czo6aXNfc2lnbmVkOwotICAgICAgICBjb25zdCBib29sIHJlc3VsdF9pc19zaWduZWQgPSByZXN1bHRfdHJhaXRzOjppc19zaWduZWQ7Ci0gICAgICAgIGNvbnN0IGJvb2wgc2FtZV9zaWduID0gYXJnX2lzX3NpZ25lZCA9PSByZXN1bHRfaXNfc2lnbmVkOwotCi0gICAgICAgIGlmIChsZXNzX3RoYW5fdHlwZV9taW48YXJnX2lzX3NpZ25lZCwgcmVzdWx0X2lzX3NpZ25lZD46OmNoZWNrKGFyZywgKHJlc3VsdF90cmFpdHM6Om1pbikoKSkKLSAgICAgICAgICAgIHx8IGdyZWF0ZXJfdGhhbl90eXBlX21heDxzYW1lX3NpZ24sIGFyZ19pc19zaWduZWQ+OjpjaGVjayhhcmcsIChyZXN1bHRfdHJhaXRzOjptYXgpKCkpCi0gICAgICAgICAgICApCi0KLSNlbHNlIC8vIFdlIG5lZWQgdG8gdXNlICNwcmFnbWEgaGFja3MgaWYgYXZhaWxhYmxlCi0KLSMgaWYgTkROQk9PU1RfTVNWQwotIyAgcHJhZ21hIHdhcm5pbmcocHVzaCkKLSMgIHByYWdtYSB3YXJuaW5nKGRpc2FibGUgOiA0MDE4KQotI2VsaWYgZGVmaW5lZChfX0JPUkxBTkRDX18pCi0jcHJhZ21hIG9wdGlvbiBwdXNoIC13LTgwMTIKLSMgZW5kaWYKLSAgICAgICAgaWYgKChhcmcgPCAwICYmICFyZXN1bHRfdHJhaXRzOjppc19zaWduZWQpICAvLyBsb3NzIG9mIG5lZ2F0aXZlIHJhbmdlCi0gICAgICAgICAgICAgfHwgKGFyZ190cmFpdHM6OmlzX3NpZ25lZCAmJiBhcmcgPCAocmVzdWx0X3RyYWl0czo6bWluKSgpKSAgLy8gdW5kZXJmbG93Ci0gICAgICAgICAgICAgfHwgYXJnID4gKHJlc3VsdF90cmFpdHM6Om1heCkoKSkgICAgICAgICAgICAvLyBvdmVyZmxvdwotIyBpZiBORE5CT09TVF9NU1ZDCi0jICBwcmFnbWEgd2FybmluZyhwb3ApCi0jZWxpZiBkZWZpbmVkKF9fQk9STEFORENfXykKLSNwcmFnbWEgb3B0aW9uIHBvcAotIyBlbmRpZgotI2VuZGlmCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRocm93IGJhZF9udW1lcmljX2Nhc3QoKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VGFyZ2V0PihhcmcpOwotICAgIH0gLy8gbnVtZXJpY19jYXN0Ci0KLSMgIHVuZGVmIE5ETkJPT1NUX0VYUExJQ0lUX0RFRkFVTFRfVEFSR0VUCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAgLy8gTkROQk9PU1RfT0xEX05VTUVSSUNfQ0FTVF9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC9wcmVwcm9jZXNzZWQvbnVtZXJpY19jYXN0X3RyYWl0c19jb21tb24uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL3ByZXByb2Nlc3NlZC9udW1lcmljX2Nhc3RfdHJhaXRzX2NvbW1vbi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ4ZWVlNmEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL3ByZXByb2Nlc3NlZC9udW1lcmljX2Nhc3RfdHJhaXRzX2NvbW1vbi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNzQxICswLDAgQEAKLS8vCi0vLyEgQ29weXJpZ2h0IChjKSAyMDExLTIwMTIKLS8vISBCcmFuZG9uIEtvaG4KLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCQotCQotCQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG51bWVyaWMgewotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgY2hhcgotICAgICAgICAgICwgY2hhcgotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8Y2hhcj4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgY2hhcgotICAgICAgICAgICwgc2lnbmVkIGNoYXIKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHNpZ25lZCBjaGFyPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBjaGFyCi0gICAgICAgICAgLCB1bnNpZ25lZCBjaGFyCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzx1bnNpZ25lZCBjaGFyPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBjaGFyCi0gICAgICAgICAgLCBzaG9ydAotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8c2hvcnQ+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGNoYXIKLSAgICAgICAgICAsIHVuc2lnbmVkIHNob3J0Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzx1bnNpZ25lZCBzaG9ydD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgY2hhcgotICAgICAgICAgICwgaW50Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxpbnQ+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGNoYXIKLSAgICAgICAgICAsIHVuc2lnbmVkIGludAotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8dW5zaWduZWQgaW50PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBjaGFyCi0gICAgICAgICAgLCBsb25nCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxsb25nPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBjaGFyCi0gICAgICAgICAgLCB1bnNpZ25lZCBsb25nCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzx1bnNpZ25lZCBsb25nPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBjaGFyCi0gICAgICAgICAgLCBmbG9hdAotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8ZmxvYXQ+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGNoYXIKLSAgICAgICAgICAsIGRvdWJsZQotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8ZG91YmxlPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBjaGFyCi0gICAgICAgICAgLCBsb25nIGRvdWJsZQotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8bG9uZyBkb3VibGU+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHNpZ25lZCBjaGFyCi0gICAgICAgICAgLCBjaGFyCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxjaGFyPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBzaWduZWQgY2hhcgotICAgICAgICAgICwgc2lnbmVkIGNoYXIKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHNpZ25lZCBjaGFyPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBzaWduZWQgY2hhcgotICAgICAgICAgICwgdW5zaWduZWQgY2hhcgotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8dW5zaWduZWQgY2hhcj4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgc2lnbmVkIGNoYXIKLSAgICAgICAgICAsIHNob3J0Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxzaG9ydD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgc2lnbmVkIGNoYXIKLSAgICAgICAgICAsIHVuc2lnbmVkIHNob3J0Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzx1bnNpZ25lZCBzaG9ydD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgc2lnbmVkIGNoYXIKLSAgICAgICAgICAsIGludAotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8aW50PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBzaWduZWQgY2hhcgotICAgICAgICAgICwgdW5zaWduZWQgaW50Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzx1bnNpZ25lZCBpbnQ+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHNpZ25lZCBjaGFyCi0gICAgICAgICAgLCBsb25nCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxsb25nPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBzaWduZWQgY2hhcgotICAgICAgICAgICwgdW5zaWduZWQgbG9uZwotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8dW5zaWduZWQgbG9uZz4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgc2lnbmVkIGNoYXIKLSAgICAgICAgICAsIGZsb2F0Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxmbG9hdD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgc2lnbmVkIGNoYXIKLSAgICAgICAgICAsIGRvdWJsZQotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8ZG91YmxlPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBzaWduZWQgY2hhcgotICAgICAgICAgICwgbG9uZyBkb3VibGUKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGxvbmcgZG91YmxlPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICB1bnNpZ25lZCBjaGFyCi0gICAgICAgICAgLCBjaGFyCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxjaGFyPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICB1bnNpZ25lZCBjaGFyCi0gICAgICAgICAgLCBzaWduZWQgY2hhcgotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8c2lnbmVkIGNoYXI+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIKLSAgICAgICAgICAsIHVuc2lnbmVkIGNoYXIKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHVuc2lnbmVkIGNoYXI+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIKLSAgICAgICAgICAsIHNob3J0Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxzaG9ydD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgdW5zaWduZWQgY2hhcgotICAgICAgICAgICwgdW5zaWduZWQgc2hvcnQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHVuc2lnbmVkIHNob3J0PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICB1bnNpZ25lZCBjaGFyCi0gICAgICAgICAgLCBpbnQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGludD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgdW5zaWduZWQgY2hhcgotICAgICAgICAgICwgdW5zaWduZWQgaW50Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzx1bnNpZ25lZCBpbnQ+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIKLSAgICAgICAgICAsIGxvbmcKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGxvbmc+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIKLSAgICAgICAgICAsIHVuc2lnbmVkIGxvbmcKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHVuc2lnbmVkIGxvbmc+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIKLSAgICAgICAgICAsIGZsb2F0Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxmbG9hdD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgdW5zaWduZWQgY2hhcgotICAgICAgICAgICwgZG91YmxlCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxkb3VibGU+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIKLSAgICAgICAgICAsIGxvbmcgZG91YmxlCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxsb25nIGRvdWJsZT4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgc2hvcnQKLSAgICAgICAgICAsIGNoYXIKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGNoYXI+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHNob3J0Ci0gICAgICAgICAgLCBzaWduZWQgY2hhcgotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8c2lnbmVkIGNoYXI+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHNob3J0Ci0gICAgICAgICAgLCB1bnNpZ25lZCBjaGFyCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzx1bnNpZ25lZCBjaGFyPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBzaG9ydAotICAgICAgICAgICwgc2hvcnQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHNob3J0PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBzaG9ydAotICAgICAgICAgICwgdW5zaWduZWQgc2hvcnQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHVuc2lnbmVkIHNob3J0PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBzaG9ydAotICAgICAgICAgICwgaW50Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxpbnQ+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHNob3J0Ci0gICAgICAgICAgLCB1bnNpZ25lZCBpbnQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHVuc2lnbmVkIGludD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgc2hvcnQKLSAgICAgICAgICAsIGxvbmcKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGxvbmc+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHNob3J0Ci0gICAgICAgICAgLCB1bnNpZ25lZCBsb25nCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzx1bnNpZ25lZCBsb25nPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBzaG9ydAotICAgICAgICAgICwgZmxvYXQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGZsb2F0PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBzaG9ydAotICAgICAgICAgICwgZG91YmxlCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxkb3VibGU+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHNob3J0Ci0gICAgICAgICAgLCBsb25nIGRvdWJsZQotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8bG9uZyBkb3VibGU+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0Ci0gICAgICAgICAgLCBjaGFyCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxjaGFyPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICB1bnNpZ25lZCBzaG9ydAotICAgICAgICAgICwgc2lnbmVkIGNoYXIKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHNpZ25lZCBjaGFyPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICB1bnNpZ25lZCBzaG9ydAotICAgICAgICAgICwgdW5zaWduZWQgY2hhcgotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8dW5zaWduZWQgY2hhcj4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQKLSAgICAgICAgICAsIHNob3J0Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxzaG9ydD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQKLSAgICAgICAgICAsIHVuc2lnbmVkIHNob3J0Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzx1bnNpZ25lZCBzaG9ydD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQKLSAgICAgICAgICAsIGludAotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8aW50PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICB1bnNpZ25lZCBzaG9ydAotICAgICAgICAgICwgdW5zaWduZWQgaW50Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzx1bnNpZ25lZCBpbnQ+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0Ci0gICAgICAgICAgLCBsb25nCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxsb25nPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICB1bnNpZ25lZCBzaG9ydAotICAgICAgICAgICwgdW5zaWduZWQgbG9uZwotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8dW5zaWduZWQgbG9uZz4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQKLSAgICAgICAgICAsIGZsb2F0Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxmbG9hdD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQKLSAgICAgICAgICAsIGRvdWJsZQotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8ZG91YmxlPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICB1bnNpZ25lZCBzaG9ydAotICAgICAgICAgICwgbG9uZyBkb3VibGUKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGxvbmcgZG91YmxlPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBpbnQKLSAgICAgICAgICAsIGNoYXIKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGNoYXI+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGludAotICAgICAgICAgICwgc2lnbmVkIGNoYXIKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHNpZ25lZCBjaGFyPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBpbnQKLSAgICAgICAgICAsIHVuc2lnbmVkIGNoYXIKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHVuc2lnbmVkIGNoYXI+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGludAotICAgICAgICAgICwgc2hvcnQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHNob3J0PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBpbnQKLSAgICAgICAgICAsIHVuc2lnbmVkIHNob3J0Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzx1bnNpZ25lZCBzaG9ydD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgaW50Ci0gICAgICAgICAgLCBpbnQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGludD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgaW50Ci0gICAgICAgICAgLCB1bnNpZ25lZCBpbnQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHVuc2lnbmVkIGludD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgaW50Ci0gICAgICAgICAgLCBsb25nCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxsb25nPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBpbnQKLSAgICAgICAgICAsIHVuc2lnbmVkIGxvbmcKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHVuc2lnbmVkIGxvbmc+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGludAotICAgICAgICAgICwgZmxvYXQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGZsb2F0PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBpbnQKLSAgICAgICAgICAsIGRvdWJsZQotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8ZG91YmxlPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBpbnQKLSAgICAgICAgICAsIGxvbmcgZG91YmxlCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxsb25nIGRvdWJsZT4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgdW5zaWduZWQgaW50Ci0gICAgICAgICAgLCBjaGFyCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxjaGFyPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICB1bnNpZ25lZCBpbnQKLSAgICAgICAgICAsIHNpZ25lZCBjaGFyCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxzaWduZWQgY2hhcj4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgdW5zaWduZWQgaW50Ci0gICAgICAgICAgLCB1bnNpZ25lZCBjaGFyCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzx1bnNpZ25lZCBjaGFyPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICB1bnNpZ25lZCBpbnQKLSAgICAgICAgICAsIHNob3J0Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxzaG9ydD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgdW5zaWduZWQgaW50Ci0gICAgICAgICAgLCB1bnNpZ25lZCBzaG9ydAotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8dW5zaWduZWQgc2hvcnQ+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHVuc2lnbmVkIGludAotICAgICAgICAgICwgaW50Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxpbnQ+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHVuc2lnbmVkIGludAotICAgICAgICAgICwgdW5zaWduZWQgaW50Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzx1bnNpZ25lZCBpbnQ+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHVuc2lnbmVkIGludAotICAgICAgICAgICwgbG9uZwotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8bG9uZz4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgdW5zaWduZWQgaW50Ci0gICAgICAgICAgLCB1bnNpZ25lZCBsb25nCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzx1bnNpZ25lZCBsb25nPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICB1bnNpZ25lZCBpbnQKLSAgICAgICAgICAsIGZsb2F0Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxmbG9hdD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgdW5zaWduZWQgaW50Ci0gICAgICAgICAgLCBkb3VibGUKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGRvdWJsZT4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgdW5zaWduZWQgaW50Ci0gICAgICAgICAgLCBsb25nIGRvdWJsZQotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8bG9uZyBkb3VibGU+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGxvbmcKLSAgICAgICAgICAsIGNoYXIKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGNoYXI+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGxvbmcKLSAgICAgICAgICAsIHNpZ25lZCBjaGFyCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxzaWduZWQgY2hhcj4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgbG9uZwotICAgICAgICAgICwgdW5zaWduZWQgY2hhcgotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8dW5zaWduZWQgY2hhcj4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgbG9uZwotICAgICAgICAgICwgc2hvcnQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHNob3J0PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBsb25nCi0gICAgICAgICAgLCB1bnNpZ25lZCBzaG9ydAotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8dW5zaWduZWQgc2hvcnQ+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGxvbmcKLSAgICAgICAgICAsIGludAotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8aW50PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBsb25nCi0gICAgICAgICAgLCB1bnNpZ25lZCBpbnQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHVuc2lnbmVkIGludD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgbG9uZwotICAgICAgICAgICwgbG9uZwotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8bG9uZz4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgbG9uZwotICAgICAgICAgICwgdW5zaWduZWQgbG9uZwotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8dW5zaWduZWQgbG9uZz4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgbG9uZwotICAgICAgICAgICwgZmxvYXQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGZsb2F0PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBsb25nCi0gICAgICAgICAgLCBkb3VibGUKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGRvdWJsZT4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgbG9uZwotICAgICAgICAgICwgbG9uZyBkb3VibGUKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGxvbmcgZG91YmxlPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICB1bnNpZ25lZCBsb25nCi0gICAgICAgICAgLCBjaGFyCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxjaGFyPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICB1bnNpZ25lZCBsb25nCi0gICAgICAgICAgLCBzaWduZWQgY2hhcgotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8c2lnbmVkIGNoYXI+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcKLSAgICAgICAgICAsIHVuc2lnbmVkIGNoYXIKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHVuc2lnbmVkIGNoYXI+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcKLSAgICAgICAgICAsIHNob3J0Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxzaG9ydD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgdW5zaWduZWQgbG9uZwotICAgICAgICAgICwgdW5zaWduZWQgc2hvcnQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHVuc2lnbmVkIHNob3J0PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICB1bnNpZ25lZCBsb25nCi0gICAgICAgICAgLCBpbnQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGludD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgdW5zaWduZWQgbG9uZwotICAgICAgICAgICwgdW5zaWduZWQgaW50Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzx1bnNpZ25lZCBpbnQ+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcKLSAgICAgICAgICAsIGxvbmcKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGxvbmc+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcKLSAgICAgICAgICAsIHVuc2lnbmVkIGxvbmcKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHVuc2lnbmVkIGxvbmc+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcKLSAgICAgICAgICAsIGZsb2F0Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxmbG9hdD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgdW5zaWduZWQgbG9uZwotICAgICAgICAgICwgZG91YmxlCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxkb3VibGU+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcKLSAgICAgICAgICAsIGxvbmcgZG91YmxlCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxsb25nIGRvdWJsZT4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgZmxvYXQKLSAgICAgICAgICAsIGNoYXIKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGNoYXI+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGZsb2F0Ci0gICAgICAgICAgLCBzaWduZWQgY2hhcgotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8c2lnbmVkIGNoYXI+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGZsb2F0Ci0gICAgICAgICAgLCB1bnNpZ25lZCBjaGFyCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzx1bnNpZ25lZCBjaGFyPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBmbG9hdAotICAgICAgICAgICwgc2hvcnQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHNob3J0PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBmbG9hdAotICAgICAgICAgICwgdW5zaWduZWQgc2hvcnQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHVuc2lnbmVkIHNob3J0PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBmbG9hdAotICAgICAgICAgICwgaW50Ci0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxpbnQ+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGZsb2F0Ci0gICAgICAgICAgLCB1bnNpZ25lZCBpbnQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHVuc2lnbmVkIGludD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgZmxvYXQKLSAgICAgICAgICAsIGxvbmcKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGxvbmc+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGZsb2F0Ci0gICAgICAgICAgLCB1bnNpZ25lZCBsb25nCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzx1bnNpZ25lZCBsb25nPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBmbG9hdAotICAgICAgICAgICwgZmxvYXQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGZsb2F0PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBmbG9hdAotICAgICAgICAgICwgZG91YmxlCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxkb3VibGU+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGZsb2F0Ci0gICAgICAgICAgLCBsb25nIGRvdWJsZQotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8bG9uZyBkb3VibGU+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGRvdWJsZQotICAgICAgICAgICwgY2hhcgotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8Y2hhcj4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgZG91YmxlCi0gICAgICAgICAgLCBzaWduZWQgY2hhcgotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8c2lnbmVkIGNoYXI+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGRvdWJsZQotICAgICAgICAgICwgdW5zaWduZWQgY2hhcgotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8dW5zaWduZWQgY2hhcj4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgZG91YmxlCi0gICAgICAgICAgLCBzaG9ydAotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8c2hvcnQ+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGRvdWJsZQotICAgICAgICAgICwgdW5zaWduZWQgc2hvcnQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHVuc2lnbmVkIHNob3J0PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBkb3VibGUKLSAgICAgICAgICAsIGludAotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8aW50PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBkb3VibGUKLSAgICAgICAgICAsIHVuc2lnbmVkIGludAotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8dW5zaWduZWQgaW50PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBkb3VibGUKLSAgICAgICAgICAsIGxvbmcKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGxvbmc+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGRvdWJsZQotICAgICAgICAgICwgdW5zaWduZWQgbG9uZwotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8dW5zaWduZWQgbG9uZz4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgZG91YmxlCi0gICAgICAgICAgLCBmbG9hdAotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8ZmxvYXQ+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGRvdWJsZQotICAgICAgICAgICwgZG91YmxlCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxkb3VibGU+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGRvdWJsZQotICAgICAgICAgICwgbG9uZyBkb3VibGUKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGxvbmcgZG91YmxlPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBsb25nIGRvdWJsZQotICAgICAgICAgICwgY2hhcgotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8Y2hhcj4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgbG9uZyBkb3VibGUKLSAgICAgICAgICAsIHNpZ25lZCBjaGFyCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxzaWduZWQgY2hhcj4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgbG9uZyBkb3VibGUKLSAgICAgICAgICAsIHVuc2lnbmVkIGNoYXIKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHVuc2lnbmVkIGNoYXI+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGxvbmcgZG91YmxlCi0gICAgICAgICAgLCBzaG9ydAotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8c2hvcnQ+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGxvbmcgZG91YmxlCi0gICAgICAgICAgLCB1bnNpZ25lZCBzaG9ydAotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8dW5zaWduZWQgc2hvcnQ+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGxvbmcgZG91YmxlCi0gICAgICAgICAgLCBpbnQKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGludD4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgbG9uZyBkb3VibGUKLSAgICAgICAgICAsIHVuc2lnbmVkIGludAotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8dW5zaWduZWQgaW50PiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBsb25nIGRvdWJsZQotICAgICAgICAgICwgbG9uZwotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8bG9uZz4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgbG9uZyBkb3VibGUKLSAgICAgICAgICAsIHVuc2lnbmVkIGxvbmcKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPHVuc2lnbmVkIGxvbmc+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGxvbmcgZG91YmxlCi0gICAgICAgICAgLCBmbG9hdAotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8ZmxvYXQ+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGxvbmcgZG91YmxlCi0gICAgICAgICAgLCBkb3VibGUKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPGRvdWJsZT4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgbG9uZyBkb3VibGUKLSAgICAgICAgICAsIGxvbmcgZG91YmxlCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxsb25nIGRvdWJsZT4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC9wcmVwcm9jZXNzZWQvbnVtZXJpY19jYXN0X3RyYWl0c19sb25nX2xvbmcuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL3ByZXByb2Nlc3NlZC9udW1lcmljX2Nhc3RfdHJhaXRzX2xvbmdfbG9uZy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmOGQ1NDEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL3ByZXByb2Nlc3NlZC9udW1lcmljX2Nhc3RfdHJhaXRzX2xvbmdfbG9uZy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNDcgKzAsMCBAQAotLy8KLS8vISBDb3B5cmlnaHQgKGMpIDIwMTEtMjAxMgotLy8hIEJyYW5kb24gS29obgotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbnVtZXJpYyB7Ci0gICAgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBjaGFyCi0gICAgICAgICAgLCBuZG5ib29zdDo6bG9uZ19sb25nX3R5cGUKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZT4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgY2hhcgotICAgICAgICAgICwgbmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZQotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8bmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZT4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgc2lnbmVkIGNoYXIKLSAgICAgICAgICAsIG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZQotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8bmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBzaWduZWQgY2hhcgotICAgICAgICAgICwgbmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZQotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8bmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZT4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgdW5zaWduZWQgY2hhcgotICAgICAgICAgICwgbmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxuZG5ib29zdDo6bG9uZ19sb25nX3R5cGU+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIKLSAgICAgICAgICAsIG5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGUKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPG5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGU+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHNob3J0Ci0gICAgICAgICAgLCBuZG5ib29zdDo6bG9uZ19sb25nX3R5cGUKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZT4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgc2hvcnQKLSAgICAgICAgICAsIG5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGUKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPG5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGU+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0Ci0gICAgICAgICAgLCBuZG5ib29zdDo6bG9uZ19sb25nX3R5cGUKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZT4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQKLSAgICAgICAgICAsIG5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGUKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPG5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGU+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGludAotICAgICAgICAgICwgbmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxuZG5ib29zdDo6bG9uZ19sb25nX3R5cGU+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGludAotICAgICAgICAgICwgbmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZQotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8bmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZT4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgdW5zaWduZWQgaW50Ci0gICAgICAgICAgLCBuZG5ib29zdDo6bG9uZ19sb25nX3R5cGUKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZT4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgdW5zaWduZWQgaW50Ci0gICAgICAgICAgLCBuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBsb25nCi0gICAgICAgICAgLCBuZG5ib29zdDo6bG9uZ19sb25nX3R5cGUKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZT4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgbG9uZwotICAgICAgICAgICwgbmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZQotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8bmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZT4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgdW5zaWduZWQgbG9uZwotICAgICAgICAgICwgbmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxuZG5ib29zdDo6bG9uZ19sb25nX3R5cGU+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcKLSAgICAgICAgICAsIG5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGUKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPG5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGU+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGZsb2F0Ci0gICAgICAgICAgLCBuZG5ib29zdDo6bG9uZ19sb25nX3R5cGUKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZT4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgZmxvYXQKLSAgICAgICAgICAsIG5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGUKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPG5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGU+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGRvdWJsZQotICAgICAgICAgICwgbmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxuZG5ib29zdDo6bG9uZ19sb25nX3R5cGU+IHJvdW5kaW5nX3BvbGljeTsKLSAgICB9OyAKLSAgICAKLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBudW1lcmljX2Nhc3RfdHJhaXRzCi0gICAgICAgIDwKLSAgICAgICAgICAgIGRvdWJsZQotICAgICAgICAgICwgbmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZQotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8bmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZT4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgbG9uZyBkb3VibGUKLSAgICAgICAgICAsIG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZQotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8bmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBsb25nIGRvdWJsZQotICAgICAgICAgICwgbmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZQotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8bmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZT4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgbmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlCi0gICAgICAgICAgLCBuZG5ib29zdDo6bG9uZ19sb25nX3R5cGUKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZT4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgbmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlCi0gICAgICAgICAgLCBuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlCi0gICAgICAgID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlPiByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsgCi0gICAgCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgbnVtZXJpY19jYXN0X3RyYWl0cwotICAgICAgICA8Ci0gICAgICAgICAgICBuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlCi0gICAgICAgICAgLCBuZG5ib29zdDo6bG9uZ19sb25nX3R5cGUKLSAgICAgICAgPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBkZWZfb3ZlcmZsb3dfaGFuZGxlciBvdmVyZmxvd19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVXNlSW50ZXJuYWxSYW5nZUNoZWNrZXIgcmFuZ2VfY2hlY2tpbmdfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFRydW5jPG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZT4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotICAgIAotICAgIHRlbXBsYXRlIDw+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICAgICAgPAotICAgICAgICAgICAgbmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZQotICAgICAgICAgICwgbmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZQotICAgICAgICA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGRlZl9vdmVyZmxvd19oYW5kbGVyIG92ZXJmbG93X3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBVc2VJbnRlcm5hbFJhbmdlQ2hlY2tlciByYW5nZV9jaGVja2luZ19wb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgVHJ1bmM8bmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZT4gcm91bmRpbmdfcG9saWN5OwotICAgIH07IAotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2RldGFpbC9zaWduX21peHR1cmUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL3NpZ25fbWl4dHVyZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFlOTBlZTkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL3NpZ25fbWl4dHVyZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MiArMCwwIEBACi0vLyAgKGMpIENvcHlyaWdodCBGZXJuYW5kbyBMdWlzIENhY2Npb2xhIENhcmJhbGxhbCAyMDAwLTIwMDQKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZQotLy8gIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGxpYnJhcnkgaG9tZSBwYWdlIGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvbnVtZXJpYy9jb252ZXJzaW9uCi0vLwotLy8gQ29udGFjdCB0aGUgYXV0aG9yIGF0OiBmZXJuYW5kb19jYWNjaW9sYUBob3RtYWlsLmNvbQotLy8gCi0jaWZuZGVmIE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9ERVRBSUxfU0lHTl9NSVhUVVJFX0ZMQ18xMk5PVjIwMDJfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9ERVRBSUxfU0lHTl9NSVhUVVJFX0ZMQ18xMk5PVjIwMDJfSFBQCi0KLSNpbmNsdWRlICJuZG5ib29zdC9jb25maWcuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L2xpbWl0cy5ocHAiCi0KLSNpbmNsdWRlICJuZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vc2lnbl9taXh0dXJlX2VudW0uaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvbWV0YS5ocHAiCi0KLSNpbmNsdWRlICJuZG5ib29zdC9tcGwvaW50ZWdyYWxfYy5ocHAiCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBudW1lcmljIHsgbmFtZXNwYWNlIGNvbnZkZXRhaWwKLXsKLSAgLy8gSW50ZWdyYWwgQ29uc3RhbnRzIGZvciAnU2lnbk1peHR1cmUnCi0gIHR5cGVkZWYgbXBsOjppbnRlZ3JhbF9jPHNpZ25fbWl4dHVyZV9lbnVtLCB1bnNpZ25lZF90b191bnNpZ25lZD4gdW5zaWcydW5zaWdfYyA7Ci0gIHR5cGVkZWYgbXBsOjppbnRlZ3JhbF9jPHNpZ25fbWl4dHVyZV9lbnVtLCBzaWduZWRfdG9fc2lnbmVkPiAgICAgc2lnMnNpZ19jIDsKLSAgdHlwZWRlZiBtcGw6OmludGVncmFsX2M8c2lnbl9taXh0dXJlX2VudW0sIHNpZ25lZF90b191bnNpZ25lZD4gICBzaWcydW5zaWdfYyA7Ci0gIHR5cGVkZWYgbXBsOjppbnRlZ3JhbF9jPHNpZ25fbWl4dHVyZV9lbnVtLCB1bnNpZ25lZF90b19zaWduZWQ+ICAgdW5zaWcyc2lnX2MgOwotCi0gIC8vIE1ldGFmdW5jdGlvbjoKLSAgLy8KLSAgLy8gICBnZXRfc2lnbl9taXh0dXJlPFQsUz46OnR5cGUKLSAgLy8KLSAgLy8gU2VsZWN0cyB0aGUgYXBwcm9wcmlhdGUgU2lnbk1peHR1cmUgSW50ZWdyYWwgQ29uc3RhbnQgZm9yIHRoZSBjb21iaW5hdGlvbiBULFMuCi0gIC8vCi0gIHRlbXBsYXRlPGNsYXNzIFQsY2xhc3MgUz4KLSAgc3RydWN0IGdldF9zaWduX21peHR1cmUKLSAgewotICAgIHR5cGVkZWYgbXBsOjpib29sXzwgOjpzdGQ6Om51bWVyaWNfbGltaXRzPFM+Ojppc19zaWduZWQgPiBTX3NpZ25lZCA7Ci0gICAgdHlwZWRlZiBtcGw6OmJvb2xfPCA6OnN0ZDo6bnVtZXJpY19saW1pdHM8VD46OmlzX3NpZ25lZCA+IFRfc2lnbmVkIDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUKLSAgICAgIGZvcl9ib3RoPFNfc2lnbmVkLCBUX3NpZ25lZCwgc2lnMnNpZ19jLCBzaWcydW5zaWdfYywgdW5zaWcyc2lnX2MsIHVuc2lnMnVuc2lnX2M+Ojp0eXBlCi0gICAgICAgIHR5cGUgOwotICB9IDsKLQotICAvLyBNZXRhZnVuY3Rpb246Ci0gIC8vCi0gIC8vICAgZm9yX3NpZ25fbWl4dHVyZTxTaWduTWl4dHVyZSxTaWcyU2lnLFNpZzJVbnNpZyxVbnNpZzJTaWcsVW5zaWcyVW5zaWc+Ojp0eXBlCi0gIC8vCi0gIC8vIHtTaWduTWl4dHVyZX0gaXMgb25lIG9mIHRoZSBJbnRlZ3JhbCBDb25zdGFudHMgZm9yIFNpZ25NaXh0dXJlLCBkZWNsYXJlZCBhYm92ZS4KLSAgLy8ge1NpZzJTaWcsU2lnMlVuc2lnLFVuc2lnMlNpZyxVbnNpZzJVbnNpZ30gYXJlIGFyaWJ0cmFyeSB0eXBlcy4gKG5vdCBtZXRhZnVuY3Rpb25zKQotICAvLwotICAvLyBBY2NvcmRpbmcgdG8gdGhlIHZhbHVlIG9mICdTaWduTWl4dHVyZScsIHNlbGVjdHMgdGhlIGNvcnJlc3BvbmRpbmcgdHlwZS4KLSAgLy8KLSAgdGVtcGxhdGU8Y2xhc3MgU2lnbk1peHR1cmUsIGNsYXNzIFNpZzJTaWcsIGNsYXNzIFNpZzJVbnNpZywgY2xhc3MgVW5zaWcyU2lnLCBjbGFzcyBVbnNpZzJVbnNpZz4KLSAgc3RydWN0IGZvcl9zaWduX21peHR1cmUKLSAgewotICAgIHR5cGVkZWYgdHlwZW5hbWUKLSAgICAgIGN0X3N3aXRjaDQ8U2lnbk1peHR1cmUKLSAgICAgICAgICAgICAgICAgLCBzaWcyc2lnX2MsIHNpZzJ1bnNpZ19jLCB1bnNpZzJzaWdfYyAgLy8gZGVmYXVsdAotICAgICAgICAgICAgICAgICAsIFNpZzJTaWcgICwgU2lnMlVuc2lnICAsIFVuc2lnMlNpZyAgLCBVbnNpZzJVbnNpZwotICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgdHlwZSA7Ci0gIH0gOwotCi19IH0gfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3Q6Om51bWVyaWM6OmNvbnZkZXRhaWwKLQotI2VuZGlmCi0vLwotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvdWR0X2J1aWx0aW5fbWl4dHVyZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvdWR0X2J1aWx0aW5fbWl4dHVyZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMzMzgyZWMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vZGV0YWlsL3VkdF9idWlsdGluX21peHR1cmUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotLy8gIChjKSBDb3B5cmlnaHQgRmVybmFuZG8gTHVpcyBDYWNjaW9sYSBDYXJiYWxsYWwgMjAwMC0yMDA0Ci0vLyAgVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLS8vICBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBsaWJyYXJ5IGhvbWUgcGFnZSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL251bWVyaWMvY29udmVyc2lvbgotLy8KLS8vIENvbnRhY3QgdGhlIGF1dGhvciBhdDogZmVybmFuZG9fY2FjY2lvbGFAaG90bWFpbC5jb20KLS8vIAotI2lmbmRlZiBORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fREVUQUlMX1VEVF9CVUlMVElOX01JWFRVUkVfRkxDXzEyTk9WMjAwMl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX0RFVEFJTF9VRFRfQlVJTFRJTl9NSVhUVVJFX0ZMQ18xMk5PVjIwMDJfSFBQCi0KLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9pc19hcml0aG1ldGljLmhwcCIKLQotI2luY2x1ZGUgIm5kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi91ZHRfYnVpbHRpbl9taXh0dXJlX2VudW0uaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvbWV0YS5ocHAiCi0KLSNpbmNsdWRlICJuZG5ib29zdC9tcGwvaW50ZWdyYWxfYy5ocHAiCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBudW1lcmljIHsgbmFtZXNwYWNlIGNvbnZkZXRhaWwKLXsKLSAgLy8gSW50ZWdyYWwgQ29uc3RhbnRzIGZvciAnVWR0TWl4dHVyZScKLSAgdHlwZWRlZiBtcGw6OmludGVncmFsX2M8dWR0X2J1aWx0aW5fbWl4dHVyZV9lbnVtLCBidWlsdGluX3RvX2J1aWx0aW4+IGJ1aWx0aW4yYnVpbHRpbl9jIDsKLSAgdHlwZWRlZiBtcGw6OmludGVncmFsX2M8dWR0X2J1aWx0aW5fbWl4dHVyZV9lbnVtLCBidWlsdGluX3RvX3VkdD4gICAgIGJ1aWx0aW4ydWR0X2MgOwotICB0eXBlZGVmIG1wbDo6aW50ZWdyYWxfYzx1ZHRfYnVpbHRpbl9taXh0dXJlX2VudW0sIHVkdF90b19idWlsdGluPiAgICAgdWR0MmJ1aWx0aW5fYyA7Ci0gIHR5cGVkZWYgbXBsOjppbnRlZ3JhbF9jPHVkdF9idWlsdGluX21peHR1cmVfZW51bSwgdWR0X3RvX3VkdD4gICAgICAgICB1ZHQydWR0X2MgOwotCi0gIC8vIE1ldGFmdW5jdGlvbjoKLSAgLy8KLSAgLy8gICBmb3JfdWR0X21peHR1cmU8VWR0TWl4dHVyZSxCdWlsdEluMkJ1aWx0SW4sQnVpbHRJbjJVZHQsVWR0MkJ1aWx0SW4sVWR0MlVkdD46OnR5cGUKLSAgLy8KLSAgLy8ge1VkdE1peHR1cmV9IGlzIG9uZSBvZiB0aGUgSW50ZWdyYWwgQ29uc3RhbnRzIGZvciBVZE1peHR1cmUsIGRlY2xhcmVkIGFib3ZlLgotICAvLyB7QnVpbHRJbjJCdWlsdEluLEJ1aWx0SW4yVWR0LFVkdDJCdWlsdEluLFVkdDJVZHR9IGFyZSBhcmlidHJhcnkgdHlwZXMuIChub3QgbWV0YWZ1bmN0aW9ucykKLSAgLy8KLSAgLy8gQWNjb3JkaW5nIHRvIHRoZSB2YWx1ZSBvZiAnVWR0TWl4dHVyZScsIHNlbGVjdHMgdGhlIGNvcnJlc3BvbmRpbmcgdHlwZS4KLSAgLy8KLSAgdGVtcGxhdGU8Y2xhc3MgVWR0TWl4dHVyZSwgY2xhc3MgQnVpbHRJbjJCdWlsdEluLCBjbGFzcyBCdWlsdEluMlVkdCwgY2xhc3MgVWR0MkJ1aWx0SW4sIGNsYXNzIFVkdDJVZHQ+Ci0gIHN0cnVjdCBmb3JfdWR0X2J1aWx0aW5fbWl4dHVyZQotICB7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZQotICAgICAgY3Rfc3dpdGNoNDxVZHRNaXh0dXJlCi0gICAgICAgICAgICAgICAgICwgYnVpbHRpbjJidWlsdGluX2MsIGJ1aWx0aW4ydWR0X2MsIHVkdDJidWlsdGluX2MgLy8gZGVmYXVsdAotICAgICAgICAgICAgICAgICAsIEJ1aWx0SW4yQnVpbHRJbiAgLCBCdWlsdEluMlVkdCAgLCBVZHQyQnVpbHRJbiAgLCBVZHQyVWR0Ci0gICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICB0eXBlIDsKLSAgfSA7Ci0KLSAgLy8gTWV0YWZ1bmN0aW9uOgotICAvLwotICAvLyAgIGdldF91ZHRfbWl4dHVyZTxULFM+Ojp0eXBlCi0gIC8vCi0gIC8vIFNlbGVjdHMgdGhlIGFwcHJvcHJpYXRlIFVkdE1peHR1cmUgSW50ZWdyYWwgQ29uc3RhbnQgZm9yIHRoZSBjb21iaW5hdGlvbiBULFMuCi0gIC8vCi0gIHRlbXBsYXRlPGNsYXNzIFQsY2xhc3MgUz4KLSAgc3RydWN0IGdldF91ZHRfYnVpbHRpbl9taXh0dXJlCi0gIHsKLSAgICB0eXBlZGVmIGlzX2FyaXRobWV0aWM8Uz4gU19idWlsdGluIDsKLSAgICB0eXBlZGVmIGlzX2FyaXRobWV0aWM8VD4gVF9idWlsdGluIDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUKLSAgICAgIGZvcl9ib3RoPFNfYnVpbHRpbiwgVF9idWlsdGluLCBidWlsdGluMmJ1aWx0aW5fYywgYnVpbHRpbjJ1ZHRfYywgdWR0MmJ1aWx0aW5fYywgdWR0MnVkdF9jPjo6dHlwZQotICAgICAgICB0eXBlIDsKLSAgfSA7Ci0KLX0gfSB9IC8vIG5hbWVzcGFjZSBuZG5ib29zdDo6bnVtZXJpYzo6Y29udmRldGFpbAotCi0jZW5kaWYKLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9pbnRfZmxvYXRfbWl4dHVyZV9lbnVtLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2ludF9mbG9hdF9taXh0dXJlX2VudW0uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNjVjYzU1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL2ludF9mbG9hdF9taXh0dXJlX2VudW0uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotLy8gIChjKSBDb3B5cmlnaHQgRmVybmFuZG8gTHVpcyBDYWNjaW9sYSBDYXJiYWxsYWwgMjAwMC0yMDA0Ci0vLyAgVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLS8vICBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBsaWJyYXJ5IGhvbWUgcGFnZSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL251bWVyaWMvY29udmVyc2lvbgotLy8KLS8vIENvbnRhY3QgdGhlIGF1dGhvciBhdDogZmVybmFuZG9fY2FjY2lvbGFAaG90bWFpbC5jb20KLS8vIAotI2lmbmRlZiBORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fSU5UX0ZMT0FUX01JWFRVUkVfRU5VTV9GTENfMTJOT1YyMDAyX0hQUAotI2RlZmluZSBORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fSU5UX0ZMT0FUX01JWFRVUkVfRU5VTV9GTENfMTJOT1YyMDAyX0hQUAotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgbnVtZXJpYwotewotICBlbnVtIGludF9mbG9hdF9taXh0dXJlX2VudW0KLSAgewotICAgICBpbnRlZ3JhbF90b19pbnRlZ3JhbAotICAgICxpbnRlZ3JhbF90b19mbG9hdAotICAgICxmbG9hdF90b19pbnRlZ3JhbAotICAgICxmbG9hdF90b19mbG9hdAotICB9IDsKLQotfSB9IC8vIG5hbWVzcGFjZSBuZG5ib29zdDo6bnVtZXJpYwotCi0jZW5kaWYKLS8vCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvbnVtZXJpYy9jb252ZXJzaW9uL251bWVyaWNfY2FzdF90cmFpdHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vbnVtZXJpY19jYXN0X3RyYWl0cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM0OTM2NGIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vbnVtZXJpY19jYXN0X3RyYWl0cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi0vLwotLy8hIENvcHlyaWdodCAoYykgMjAxMQotLy8hIEJyYW5kb24gS29obgotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0jaWZuZGVmIE5ETkJPT1NUX05VTUVSSUNfQ0FTVF9UUkFJVFNfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX05VTUVSSUNfQ0FTVF9UUkFJVFNfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vY29udmVydGVyX3BvbGljaWVzLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG51bWVyaWMgewotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlLCB0eXBlbmFtZSBFbmFibGVJZiA9IHZvaWQ+Ci0gICAgc3RydWN0IG51bWVyaWNfY2FzdF90cmFpdHMKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVmX292ZXJmbG93X2hhbmRsZXIgICAgb3ZlcmZsb3dfcG9saWN5OwotICAgICAgICB0eXBlZGVmIFVzZUludGVybmFsUmFuZ2VDaGVja2VyIHJhbmdlX2NoZWNraW5nX3BvbGljeTsKLSAgICAgICAgdHlwZWRlZiBUcnVuYzxTb3VyY2U+ICAgICAgICAgICByb3VuZGluZ19wb2xpY3k7Ci0gICAgfTsKLQotfX0vL25hbWVzcGFjZSBuZG5ib29zdDo6bnVtZXJpYzsKLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fUkVMQVhfQlVJTFRfSU5fQ0FTVF9UUkFJVFMgKQotI2luY2x1ZGUgPG5kbmJvb3N0L2NzdGRpbnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9kZXRhaWwvbnVtZXJpY19jYXN0X3RyYWl0cy5ocHA+Ci0jZW5kaWYvLyFkZWZpbmVkIE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9SRUxBWF9CVUlMVF9JTl9DQVNUX1RSQUlUUwotCi0jZW5kaWYvL05ETkJPT1NUX05VTUVSSUNfQ0FTVF9UUkFJVFNfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9zaWduX21peHR1cmVfZW51bS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi9zaWduX21peHR1cmVfZW51bS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJkNDFkZjIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vc2lnbl9taXh0dXJlX2VudW0uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotLy8gIChjKSBDb3B5cmlnaHQgRmVybmFuZG8gTHVpcyBDYWNjaW9sYSBDYXJiYWxsYWwgMjAwMC0yMDA0Ci0vLyAgVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLS8vICBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBsaWJyYXJ5IGhvbWUgcGFnZSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL251bWVyaWMvY29udmVyc2lvbgotLy8KLS8vIENvbnRhY3QgdGhlIGF1dGhvciBhdDogZmVybmFuZG9fY2FjY2lvbGFAaG90bWFpbC5jb20KLS8vIAotI2lmbmRlZiBORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fU0lHTl9NSVhUVVJFX0VOVU1fRkxDXzEyTk9WMjAwMl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfTlVNRVJJQ19DT05WRVJTSU9OX1NJR05fTUlYVFVSRV9FTlVNX0ZMQ18xMk5PVjIwMDJfSFBQCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBudW1lcmljCi17Ci0gIGVudW0gc2lnbl9taXh0dXJlX2VudW0KLSAgewotICAgICB1bnNpZ25lZF90b191bnNpZ25lZAotICAgICxzaWduZWRfdG9fc2lnbmVkCi0gICAgLHNpZ25lZF90b191bnNpZ25lZAotICAgICx1bnNpZ25lZF90b19zaWduZWQKLSAgfSA7Ci0KLX0gfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3Q6Om51bWVyaWMKLQotI2VuZGlmCi0vLwotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi91ZHRfYnVpbHRpbl9taXh0dXJlX2VudW0uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vdWR0X2J1aWx0aW5fbWl4dHVyZV9lbnVtLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2JhNDQxYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L251bWVyaWMvY29udmVyc2lvbi91ZHRfYnVpbHRpbl9taXh0dXJlX2VudW0uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotLy8gIChjKSBDb3B5cmlnaHQgRmVybmFuZG8gTHVpcyBDYWNjaW9sYSBDYXJiYWxsYWwgMjAwMC0yMDA0Ci0vLyAgVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLS8vICBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBsaWJyYXJ5IGhvbWUgcGFnZSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL251bWVyaWMvY29udmVyc2lvbgotLy8KLS8vIENvbnRhY3QgdGhlIGF1dGhvciBhdDogZmVybmFuZG9fY2FjY2lvbGFAaG90bWFpbC5jb20KLS8vIAotI2lmbmRlZiBORE5CT09TVF9OVU1FUklDX0NPTlZFUlNJT05fVURUX0JVSUxUSU5fTUlYVFVSRV9FTlVNX0ZMQ18xMk5PVjIwMDJfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX05VTUVSSUNfQ09OVkVSU0lPTl9VRFRfQlVJTFRJTl9NSVhUVVJFX0VOVU1fRkxDXzEyTk9WMjAwMl9IUFAKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIG51bWVyaWMKLXsKLSAgZW51bSB1ZHRfYnVpbHRpbl9taXh0dXJlX2VudW0KLSAgewotICAgICBidWlsdGluX3RvX2J1aWx0aW4KLSAgICAsYnVpbHRpbl90b191ZHQKLSAgICAsdWR0X3RvX2J1aWx0aW4KLSAgICAsdWR0X3RvX3VkdAotICB9IDsKLQotfSB9IC8vIG5hbWVzcGFjZSBuZG5ib29zdDo6bnVtZXJpYwotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9vcGVyYXRvcnMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9vcGVyYXRvcnMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiODJhMDY5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvb3BlcmF0b3JzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk3OCArMCwwIEBACi0vLyAgQm9vc3Qgb3BlcmF0b3JzLmhwcCBoZWFkZXIgZmlsZSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vICAoQykgQ29weXJpZ2h0IERhdmlkIEFicmFoYW1zLCBKZXJlbXkgU2llaywgRGFyeWxlIFdhbGtlciAxOTk5LTIwMDEuCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy91dGlsaXR5L29wZXJhdG9ycy5odG0gZm9yIGRvY3VtZW50YXRpb24uCi0KLS8vICBSZXZpc2lvbiBIaXN0b3J5Ci0vLyAgMTYgRGVjIDEwIExpbWl0IHdhcm5pbmcgc3VwcHJlc3Npb24gZm9yIDQyODQgdG8gb2xkZXIgdmVyc2lvbnMgb2YgVkMrKwotLy8gICAgICAgICAgICAoTWF0dGhldyBCcmFkYnVyeSwgZml4ZXMgIzQ0MzIpCi0vLyAgMDcgQXVnIDA4IEFkZGVkICJldWNsaWRlYW4iIHNwZWxsaW5nLiAoRGFuaWVsIEZyZXkpCi0vLyAgMDMgQXByIDA4IE1ha2Ugc3VyZSAiY29udmVydGlibGUgdG8gYm9vbCIgaXMgc3VmZmljaWVudAotLy8gICAgICAgICAgICBmb3IgVDo6b3BlcmF0b3I8LCBldGMuIChEYW5pZWwgRnJleSkKLS8vICAyNCBNYXkgMDcgQ2hhbmdlZCBlbXB0eV9iYXNlIHRvIGRlcGVuZCBvbiBULCBzZWUKLS8vICAgICAgICAgICAgaHR0cDovL3N2bi5ib29zdC5vcmcvdHJhYy9ib29zdC90aWNrZXQvOTc5Ci0vLyAgMjEgT2N0IDAyIE1vZGlmaWVkIGltcGxlbWVudGF0aW9uIG9mIG9wZXJhdG9ycyB0byBhbGxvdyBjb21waWxlcnMgd2l0aCBhCi0vLyAgICAgICAgICAgIGNvcnJlY3QgbmFtZWQgcmV0dXJuIHZhbHVlIG9wdGltaXphdGlvbiAoTlJWTykgdG8gcHJvZHVjZSBvcHRpbWFsCi0vLyAgICAgICAgICAgIGNvZGUuICAoRGFuaWVsIEZyZXkpCi0vLyAgMDIgRGVjIDAxIEJ1ZyBmaXhlZCBpbiByYW5kb21fYWNjZXNzX2l0ZXJhdGFibGUuICAoSGVsbXV0IFplaXNlbCkKLS8vICAyOCBTZXAgMDEgRmFjdG9yZWQgb3V0IGl0ZXJhdG9yIG9wZXJhdG9yIGdyb3Vwcy4gIChEYXJ5bGUgV2Fsa2VyKQotLy8gIDI3IEF1ZyAwMSAnbGVmdCcgZm9ybSBmb3Igbm9uIGNvbW11dGF0aXZlIG9wZXJhdG9ycyBhZGRlZDsKLS8vICAgICAgICAgICAgYWRkaXRpb25hbCBjbGFzc2VzIGZvciBncm91cHMgb2YgcmVsYXRlZCBvcGVyYXRvcnMgYWRkZWQ7Ci0vLyAgICAgICAgICAgIHdvcmthcm91bmQgZm9yIGVtcHR5IGJhc2UgY2xhc3Mgb3B0aW1pemF0aW9uCi0vLyAgICAgICAgICAgIGJ1ZyBvZiBHQ0MgMy4wIChIZWxtdXQgWmVpc2VsKQotLy8gIDI1IEp1biAwMSBvdXRwdXRfaXRlcmF0b3JfaGVscGVyIGNoYW5nZXM6IHJlbW92ZWQgZGVmYXVsdCB0ZW1wbGF0ZSAKLS8vICAgICAgICAgICAgcGFyYW1ldGVycywgYWRkZWQgc3VwcG9ydCBmb3Igc2VsZi1wcm94eWluZywgYWRkaXRpb25hbCAKLS8vICAgICAgICAgICAgZG9jdW1lbnRhdGlvbiBhbmQgdGVzdHMgKEFsZWtzZXkgR3VydG92b3kpCi0vLyAgMjkgTWF5IDAxIEFkZGVkIG9wZXJhdG9yIGNsYXNzZXMgZm9yIDw8IGFuZCA+Pi4gIEFkZGVkIGlucHV0IGFuZCBvdXRwdXQKLS8vICAgICAgICAgICAgaXRlcmF0b3IgaGVscGVyIGNsYXNzZXMuICBBZGRlZCBjbGFzc2VzIHRvIGNvbm5lY3QgZXF1YWxpdHkgYW5kCi0vLyAgICAgICAgICAgIHJlbGF0aW9uYWwgb3BlcmF0b3JzLiAgQWRkZWQgY2xhc3NlcyBmb3IgZ3JvdXBzIG9mIHJlbGF0ZWQKLS8vICAgICAgICAgICAgb3BlcmF0b3JzLiAgUmVpbXBsZW1lbnRlZCBleGFtcGxlIG9wZXJhdG9yIGFuZCBpdGVyYXRvciBoZWxwZXIKLS8vICAgICAgICAgICAgY2xhc3NlcyBpbiB0ZXJtcyBvZiB0aGUgbmV3IGdyb3Vwcy4gIChEYXJ5bGUgV2Fsa2VyLCB3aXRoIGhlbHAKLS8vICAgICAgICAgICAgZnJvbSBBbGV4eSBHdXJ0b3ZveSkKLS8vICAxMSBGZWIgMDEgRml4ZWQgYnVncyBpbiB0aGUgaXRlcmF0b3IgaGVscGVycyB3aGljaCBwcmV2ZW50ZWQgZXhwbGljaXRseQotLy8gICAgICAgICAgICBzdXBwbGllZCBhcmd1bWVudHMgZnJvbSBhY3R1YWxseSBiZWluZyB1c2VkIChEYXZlIEFicmFoYW1zKQotLy8gIDA0IEp1bCAwMCBGaXhlZCBOT19PUEVSQVRPUlNfSU5fTkFNRVNQQUNFIGJ1Z3MsIG1ham9yIGNsZWFudXAgYW5kCi0vLyAgICAgICAgICAgIHJlZmFjdG9yaW5nIG9mIGNvbXBpbGVyIHdvcmthcm91bmRzLCBhZGRpdGlvbmFsIGRvY3VtZW50YXRpb24KLS8vICAgICAgICAgICAgKEFsZXh5IEd1cnRvdm95IGFuZCBNYXJrIFJvZGdlcnMgd2l0aCBzb21lIGhlbHAgYW5kIHByb21wdGluZyBmcm9tCi0vLyAgICAgICAgICAgIERhdmUgQWJyYWhhbXMpIAotLy8gIDI4IEp1biAwMCBHZW5lcmFsIGNsZWFudXAgYW5kIGludGVncmF0aW9uIG9mIGJ1Z2ZpeGVzIGZyb20gTWFyayBSb2RnZXJzIGFuZAotLy8gICAgICAgICAgICBKZXJlbXkgU2llayAoRGF2ZSBBYnJhaGFtcykKLS8vICAyMCBKdW4gMDAgQ2hhbmdlcyB0byBhY2NvbW1vZGF0ZSBCb3JsYW5kIEMrK0J1aWxkZXIgNCBhbmQgQm9ybGFuZCBDKysgNS41Ci0vLyAgICAgICAgICAgIChNYXJrIFJvZGdlcnMpCi0vLyAgMjAgSnVuIDAwIE1pbm9yIGZpeGVzIHRvIHRoZSBwcmlvciByZXZpc2lvbiAoQWxla3NleSBHdXJ0b3ZveSkKLS8vICAxMCBKdW4gMDAgU3VwcG9ydCBmb3IgdGhlIGJhc2UgY2xhc3MgY2hhaW5pbmcgdGVjaG5pcXVlIHdhcyBhZGRlZAotLy8gICAgICAgICAgICAoQWxla3NleSBHdXJ0b3ZveSkuIFNlZSBkb2N1bWVudGF0aW9uIGFuZCB0aGUgY29tbWVudHMgYmVsb3cgCi0vLyAgICAgICAgICAgIGZvciB0aGUgZGV0YWlscy4gCi0vLyAgMTIgRGVjIDk5IEluaXRpYWwgdmVyc2lvbiB3aXRoIGl0ZXJhdG9yIG9wZXJhdG9ycyAoSmVyZW15IFNpZWspCi0vLyAgMTggTm92IDk5IENoYW5nZSBuYW1lICJkaXZpZGVhYmxlIiB0byAiZGl2aWRhYmxlIiwgcmVtb3ZlIHVubmVjZXNzYXJ5Ci0vLyAgICAgICAgICAgIHNwZWNpYWxpemF0aW9ucyBvZiBkaXZpZGFibGUsIHN1YnRyYWN0YWJsZSwgbW9kYWJsZSAoRWQgQnJleSkgCi0vLyAgMTcgTm92IDk5IEFkZCBjb21tZW50cyAoQmVtYW4gRGF3ZXMpCi0vLyAgICAgICAgICAgIFJlbW92ZSB1bm5lY2Vzc2FyeSBzcGVjaWFsaXphdGlvbiBvZiBvcGVyYXRvcnM8PiAoRWQgQnJleSkKLS8vICAxNSBOb3YgOTkgRml4IGxlc3NfdGhhbl9jb21wYXJhYmxlPFQsVT4gc2Vjb25kIG9wZXJhbmQgdHlwZSBmb3IgZmlyc3QgdHdvCi0vLyAgICAgICAgICAgIG9wZXJhdG9ycy4oQmVtYW4gRGF3ZXMpCi0vLyAgMTIgTm92IDk5IEFkZCBvcGVyYXRvcnMgdGVtcGxhdGVzIChFZCBCcmV5KQotLy8gIDExIE5vdiA5OSBBZGQgc2luZ2xlIHRlbXBsYXRlIHBhcmFtZXRlciB2ZXJzaW9uIGZvciBjb21waWxlcnMgd2l0aG91dAotLy8gICAgICAgICAgICBwYXJ0aWFsIHNwZWNpYWxpemF0aW9uIChCZW1hbiBEYXdlcykKLS8vICAxMCBOb3YgOTkgSW5pdGlhbCB2ZXJzaW9uCi0KLS8vIDEwIEp1biAwMDoKLS8vIEFuIGFkZGl0aW9uYWwgb3B0aW9uYWwgdGVtcGxhdGUgcGFyYW1ldGVyIHdhcyBhZGRlZCB0byBtb3N0IG9mIAotLy8gb3BlcmF0b3IgdGVtcGxhdGVzIHRvIHN1cHBvcnQgdGhlIGJhc2UgY2xhc3MgY2hhaW5pbmcgdGVjaG5pcXVlIChzZWUgCi0vLyBkb2N1bWVudGF0aW9uIGZvciB0aGUgZGV0YWlscykuIFVuZm9ydHVuYXRlbHksIGEgc3RyYWlnaHRmb3J3YXJkCi0vLyBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGNoYW5nZSB3b3VsZCBoYXZlIGJyb2tlbiBjb21wYXRpYmlsaXR5IHdpdGggdGhlCi0vLyBwcmV2aW91cyB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5IGJ5IG1ha2luZyBpdCBpbXBvc3NpYmxlIHRvIHVzZSB0aGUgc2FtZQotLy8gdGVtcGxhdGUgbmFtZSAoZS5nLiAnYWRkYWJsZScpIGZvciBib3RoIHRoZSAxLSBhbmQgMi1hcmd1bWVudCB2ZXJzaW9ucyBvZgotLy8gYW4gb3BlcmF0b3IgdGVtcGxhdGUuIFRoaXMgaW1wbGVtZW50YXRpb24gc29sdmVzIHRoZSBiYWNrd2FyZC1jb21wYXRpYmlsaXR5Ci0vLyBpc3N1ZSBhdCB0aGUgY29zdCBvZiBzb21lIHNpbXBsaWNpdHkuCi0vLwotLy8gT25lIG9mIHRoZSBjb21wbGljYXRpb25zIGlzIGFuIGV4aXN0ZW5jZSBvZiBzcGVjaWFsIGF1eGlsaWFyeSBjbGFzcyB0ZW1wbGF0ZQotLy8gJ2lzX2NoYWluZWRfYmFzZTw+JyAoc2VlICdkZXRhaWwnIG5hbWVzcGFjZSBiZWxvdyksIHdoaWNoIGlzIHVzZWQKLS8vIHRvIGRldGVybWluZSB3aGV0aGVyIGl0cyB0ZW1wbGF0ZSBwYXJhbWV0ZXIgaXMgYSBsaWJyYXJ5J3Mgb3BlcmF0b3IgdGVtcGxhdGUKLS8vIG9yIG5vdC4gWW91IGhhdmUgdG8gc3BlY2lhbGl6ZSAnaXNfY2hhaW5lZF9iYXNlPD4nIGZvciBlYWNoIG5ldyAKLS8vIG9wZXJhdG9yIHRlbXBsYXRlIHlvdSBhZGQgdG8gdGhlIGxpYnJhcnkuCi0vLwotLy8gSG93ZXZlciwgbW9zdCBvZiB0aGUgbm9uLXRyaXZpYWwgaW1wbGVtZW50YXRpb24gZGV0YWlscyBhcmUgaGlkZGVuIGJlaGluZCAKLS8vIHNldmVyYWwgbG9jYWwgbWFjcm9zIGRlZmluZWQgYmVsb3csIGFuZCBhcyBzb29uIGFzIHlvdSB1bmRlcnN0YW5kIHRoZW0sCi0vLyB5b3UgdW5kZXJzdGFuZCB0aGUgd2hvbGUgbGlicmFyeSBpbXBsZW1lbnRhdGlvbi4gCi0KLSNpZm5kZWYgTkROQk9PU1RfT1BFUkFUT1JTX0hQUAotI2RlZmluZSBORE5CT09TVF9PUEVSQVRPUlNfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2l0ZXJhdG9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpZiBkZWZpbmVkKF9fc2dpKSAmJiAhZGVmaW5lZChfX0dOVUNfXykKLSMgICBwcmFnbWEgc2V0IHdvZmYgMTIzNAotI2VuZGlmCi0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTYwMCkKLSMgICBwcmFnbWEgd2FybmluZyggZGlzYWJsZSA6IDQyODQgKSAvLyBjb21wbGFpbnQgYWJvdXQgcmV0dXJuIHR5cGUgb2YgCi0jZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3BlcmF0b3ItPiBub3QgYmVnaW4gYSBVRFQKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgZW1wdHlfYmFzZSB7Ci0KLS8vIEhlbG11dCBaZWlzZWwsIGVtcHR5IGJhc2UgY2xhc3Mgb3B0aW1pemF0aW9uIGJ1ZyB3aXRoIEdDQyAzLjAuMAotI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fPT0zICYmIF9fR05VQ19NSU5PUl9fPT0wICYmIF9fR05VX1BBVENITEVWRUxfXz09MAotICBib29sIGR1bW15OyAKLSNlbmRpZgotCi19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vIEluIHRoaXMgc2VjdGlvbiB3ZSBzdXBwbHkgdGhlIHh4eHgxIGFuZCB4eHh4MiBmb3JtcyBvZiB0aGUgb3BlcmF0b3IKLS8vIHRlbXBsYXRlcywgd2hpY2ggYXJlIGV4cGxpY2l0bHkgdGFyZ2V0ZWQgYXQgdGhlIDEtdHlwZS1hcmd1bWVudCBhbmQKLS8vIDItdHlwZS1hcmd1bWVudCBvcGVyYXRvciBmb3JtcywgcmVzcGVjdGl2ZWx5LiBTb21lIGNvbXBpbGVycyBnZXQgY29uZnVzZWQKLS8vIHdoZW4gaW5saW5lIGZyaWVuZCBmdW5jdGlvbnMgYXJlIG92ZXJsb2FkZWQgaW4gbmFtZXNwYWNlcyBvdGhlciB0aGFuIHRoZQotLy8gZ2xvYmFsIG5hbWVzcGFjZS4gV2hlbiBORE5CT09TVF9OT19PUEVSQVRPUlNfSU5fTkFNRVNQQUNFIGlzIGRlZmluZWQsIGFsbCBvZgotLy8gdGhlc2UgdGVtcGxhdGVzIG11c3QgZ28gaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UuCi0KLSNpZm5kZWYgTkROQk9PU1RfTk9fT1BFUkFUT1JTX0lOX05BTUVTUEFDRQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0jZW5kaWYKLQotLy8gIEJhc2ljIG9wZXJhdG9yIGNsYXNzZXMgKGNvbnRyaWJ1dGVkIGJ5IERhdmUgQWJyYWhhbXMpIC0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vICBOb3RlIHRoYXQgZnJpZW5kIGZ1bmN0aW9ucyBkZWZpbmVkIGluIGEgY2xhc3MgYXJlIGltcGxpY2l0bHkgaW5saW5lLgotLy8gIFNlZSB0aGUgQysrIHN0ZCwgMTEuNCBbY2xhc3MuZnJpZW5kXSBwYXJhZ3JhcGggNQotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+Ci1zdHJ1Y3QgbGVzc190aGFuX2NvbXBhcmFibGUyIDogQgotewotICAgICBmcmllbmQgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IFQmIHgsIGNvbnN0IFUmIHkpIHsgcmV0dXJuICFzdGF0aWNfY2FzdDxib29sPih4ID4geSk7IH0KLSAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I+PShjb25zdCBUJiB4LCBjb25zdCBVJiB5KSB7IHJldHVybiAhc3RhdGljX2Nhc3Q8Ym9vbD4oeCA8IHkpOyB9Ci0gICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPihjb25zdCBVJiB4LCBjb25zdCBUJiB5KSAgeyByZXR1cm4geSA8IHg7IH0KLSAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFUmIHgsIGNvbnN0IFQmIHkpICB7IHJldHVybiB5ID4geDsgfQotICAgICBmcmllbmQgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IFUmIHgsIGNvbnN0IFQmIHkpIHsgcmV0dXJuICFzdGF0aWNfY2FzdDxib29sPih5IDwgeCk7IH0KLSAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I+PShjb25zdCBVJiB4LCBjb25zdCBUJiB5KSB7IHJldHVybiAhc3RhdGljX2Nhc3Q8Ym9vbD4oeSA+IHgpOyB9Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+Ci1zdHJ1Y3QgbGVzc190aGFuX2NvbXBhcmFibGUxIDogQgotewotICAgICBmcmllbmQgYm9vbCBvcGVyYXRvcj4oY29uc3QgVCYgeCwgY29uc3QgVCYgeSkgIHsgcmV0dXJuIHkgPCB4OyB9Ci0gICAgIGZyaWVuZCBib29sIG9wZXJhdG9yPD0oY29uc3QgVCYgeCwgY29uc3QgVCYgeSkgeyByZXR1cm4gIXN0YXRpY19jYXN0PGJvb2w+KHkgPCB4KTsgfQotICAgICBmcmllbmQgYm9vbCBvcGVyYXRvcj49KGNvbnN0IFQmIHgsIGNvbnN0IFQmIHkpIHsgcmV0dXJuICFzdGF0aWNfY2FzdDxib29sPih4IDwgeSk7IH0KLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4KLXN0cnVjdCBlcXVhbGl0eV9jb21wYXJhYmxlMiA6IEIKLXsKLSAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBVJiB5LCBjb25zdCBUJiB4KSB7IHJldHVybiB4ID09IHk7IH0KLSAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IhPShjb25zdCBVJiB5LCBjb25zdCBUJiB4KSB7IHJldHVybiAhc3RhdGljX2Nhc3Q8Ym9vbD4oeCA9PSB5KTsgfQotICAgICBmcmllbmQgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFQmIHksIGNvbnN0IFUmIHgpIHsgcmV0dXJuICFzdGF0aWNfY2FzdDxib29sPih5ID09IHgpOyB9Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+Ci1zdHJ1Y3QgZXF1YWxpdHlfY29tcGFyYWJsZTEgOiBCCi17Ci0gICAgIGZyaWVuZCBib29sIG9wZXJhdG9yIT0oY29uc3QgVCYgeCwgY29uc3QgVCYgeSkgeyByZXR1cm4gIXN0YXRpY19jYXN0PGJvb2w+KHggPT0geSk7IH0KLX07Ci0KLS8vIEEgbWFjcm8gd2hpY2ggcHJvZHVjZXMgIm5hbWVfMmxlZnQiIGZyb20gIm5hbWUiLgotI2RlZmluZSBORE5CT09TVF9PUEVSQVRPUjJfTEVGVChuYW1lKSBuYW1lIyMyIyNfIyNsZWZ0Ci0KLS8vICBOUlZPLWZyaWVuZGx5IGltcGxlbWVudGF0aW9uIChjb250cmlidXRlZCBieSBEYW5pZWwgRnJleSkgLS0tLS0tLS0tLS0tLS0tLy8KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfSEFTX05SVk8pIHx8IGRlZmluZWQoTkROQk9PU1RfRk9SQ0VfU1lNTUVUUklDX09QRVJBVE9SUykKLQotLy8gVGhpcyBpcyB0aGUgb3B0aW1hbCBpbXBsZW1lbnRhdGlvbiBmb3IgSVNPL0FOU0kgQysrLAotLy8gYnV0IGl0IHJlcXVpcmVzIHRoZSBjb21waWxlciB0byBpbXBsZW1lbnQgdGhlIE5SVk8uCi0vLyBJZiB0aGUgY29tcGlsZXIgaGFzIG5vIE5SVk8sIHRoaXMgaXMgdGhlIGJlc3Qgc3ltbWV0cmljCi0vLyBpbXBsZW1lbnRhdGlvbiBhdmFpbGFibGUuCi0KLSNkZWZpbmUgTkROQk9PU1RfQklOQVJZX09QRVJBVE9SX0NPTU1VVEFUSVZFKCBOQU1FLCBPUCApICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4gICAgICAgIFwKLXN0cnVjdCBOQU1FIyMyIDogQiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgZnJpZW5kIFQgb3BlcmF0b3IgT1AoIGNvbnN0IFQmIGxocywgY29uc3QgVSYgcmhzICkgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB7IFQgbnJ2KCBsaHMgKTsgbnJ2IE9QIyM9IHJoczsgcmV0dXJuIG5ydjsgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgZnJpZW5kIFQgb3BlcmF0b3IgT1AoIGNvbnN0IFUmIGxocywgY29uc3QgVCYgcmhzICkgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB7IFQgbnJ2KCByaHMgKTsgbnJ2IE9QIyM9IGxoczsgcmV0dXJuIG5ydjsgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLX07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4gICAgICAgICAgICAgICAgIFwKLXN0cnVjdCBOQU1FIyMxIDogQiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgZnJpZW5kIFQgb3BlcmF0b3IgT1AoIGNvbnN0IFQmIGxocywgY29uc3QgVCYgcmhzICkgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB7IFQgbnJ2KCBsaHMgKTsgbnJ2IE9QIyM9IHJoczsgcmV0dXJuIG5ydjsgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLX07Ci0KLSNkZWZpbmUgTkROQk9PU1RfQklOQVJZX09QRVJBVE9SX05PTl9DT01NVVRBVElWRSggTkFNRSwgT1AgKSAgICAgICAgICAgICAgIFwKLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4gIFwKLXN0cnVjdCBOQU1FIyMyIDogQiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgZnJpZW5kIFQgb3BlcmF0b3IgT1AoIGNvbnN0IFQmIGxocywgY29uc3QgVSYgcmhzICkgICAgICAgICAgICAgICAgICAgIFwKLSAgICB7IFQgbnJ2KCBsaHMgKTsgbnJ2IE9QIyM9IHJoczsgcmV0dXJuIG5ydjsgfSAgICAgICAgICAgICAgICAgICAgICAgIFwKLX07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4gIFwKLXN0cnVjdCBORE5CT09TVF9PUEVSQVRPUjJfTEVGVChOQU1FKSA6IEIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgZnJpZW5kIFQgb3BlcmF0b3IgT1AoIGNvbnN0IFUmIGxocywgY29uc3QgVCYgcmhzICkgICAgICAgICAgICAgICAgICAgIFwKLSAgICB7IFQgbnJ2KCBsaHMgKTsgbnJ2IE9QIyM9IHJoczsgcmV0dXJuIG5ydjsgfSAgICAgICAgICAgICAgICAgICAgICAgIFwKLX07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4gICAgICAgICAgIFwKLXN0cnVjdCBOQU1FIyMxIDogQiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgZnJpZW5kIFQgb3BlcmF0b3IgT1AoIGNvbnN0IFQmIGxocywgY29uc3QgVCYgcmhzICkgICAgICAgICAgICAgICAgICAgIFwKLSAgICB7IFQgbnJ2KCBsaHMgKTsgbnJ2IE9QIyM9IHJoczsgcmV0dXJuIG5ydjsgfSAgICAgICAgICAgICAgICAgICAgICAgIFwKLX07Ci0KLSNlbHNlIC8vIGRlZmluZWQoTkROQk9PU1RfSEFTX05SVk8pIHx8IGRlZmluZWQoTkROQk9PU1RfRk9SQ0VfU1lNTUVUUklDX09QRVJBVE9SUykKLQotLy8gRm9yIGNvbXBpbGVycyB3aXRob3V0IE5SVk8gdGhlIGZvbGxvd2luZyBjb2RlIGlzIG9wdGltYWwsIGJ1dCBub3QKLS8vIHN5bW1ldHJpYyEgIE5vdGUgdGhhdCB0aGUgaW1wbGVtZW50YXRpb24gb2YKLS8vIE5ETkJPT1NUX09QRVJBVE9SMl9MRUZUKE5BTUUpIG9ubHkgbG9va3MgY29vbCwgYnV0IGRvZXNuJ3QgcHJvdmlkZQotLy8gb3B0aW1pemF0aW9uIG9wcG9ydHVuaXRpZXMgdG8gdGhlIGNvbXBpbGVyIDopCi0KLSNkZWZpbmUgTkROQk9PU1RfQklOQVJZX09QRVJBVE9SX0NPTU1VVEFUSVZFKCBOQU1FLCBPUCApICAgICAgICAgICAgICAgICAgIFwKLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4gIFwKLXN0cnVjdCBOQU1FIyMyIDogQiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgZnJpZW5kIFQgb3BlcmF0b3IgT1AoIFQgbGhzLCBjb25zdCBVJiByaHMgKSB7IHJldHVybiBsaHMgT1AjIz0gcmhzOyB9IFwKLSAgZnJpZW5kIFQgb3BlcmF0b3IgT1AoIGNvbnN0IFUmIGxocywgVCByaHMgKSB7IHJldHVybiByaHMgT1AjIz0gbGhzOyB9IFwKLX07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4gICAgICAgICAgIFwKLXN0cnVjdCBOQU1FIyMxIDogQiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgZnJpZW5kIFQgb3BlcmF0b3IgT1AoIFQgbGhzLCBjb25zdCBUJiByaHMgKSB7IHJldHVybiBsaHMgT1AjIz0gcmhzOyB9IFwKLX07Ci0KLSNkZWZpbmUgTkROQk9PU1RfQklOQVJZX09QRVJBVE9SX05PTl9DT01NVVRBVElWRSggTkFNRSwgT1AgKSAgICAgICAgICAgICAgIFwKLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4gIFwKLXN0cnVjdCBOQU1FIyMyIDogQiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgZnJpZW5kIFQgb3BlcmF0b3IgT1AoIFQgbGhzLCBjb25zdCBVJiByaHMgKSB7IHJldHVybiBsaHMgT1AjIz0gcmhzOyB9IFwKLX07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4gIFwKLXN0cnVjdCBORE5CT09TVF9PUEVSQVRPUjJfTEVGVChOQU1FKSA6IEIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgZnJpZW5kIFQgb3BlcmF0b3IgT1AoIGNvbnN0IFUmIGxocywgY29uc3QgVCYgcmhzICkgICAgICAgICAgICAgICAgICAgIFwKLSAgICB7IHJldHVybiBUKCBsaHMgKSBPUCMjPSByaHM7IH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLX07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4gICAgICAgICAgIFwKLXN0cnVjdCBOQU1FIyMxIDogQiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgZnJpZW5kIFQgb3BlcmF0b3IgT1AoIFQgbGhzLCBjb25zdCBUJiByaHMgKSB7IHJldHVybiBsaHMgT1AjIz0gcmhzOyB9IFwKLX07Ci0KLSNlbmRpZiAvLyBkZWZpbmVkKE5ETkJPT1NUX0hBU19OUlZPKSB8fCBkZWZpbmVkKE5ETkJPT1NUX0ZPUkNFX1NZTU1FVFJJQ19PUEVSQVRPUlMpCi0KLU5ETkJPT1NUX0JJTkFSWV9PUEVSQVRPUl9DT01NVVRBVElWRSggbXVsdGlwbGlhYmxlLCAqICkKLU5ETkJPT1NUX0JJTkFSWV9PUEVSQVRPUl9DT01NVVRBVElWRSggYWRkYWJsZSwgKyApCi1ORE5CT09TVF9CSU5BUllfT1BFUkFUT1JfTk9OX0NPTU1VVEFUSVZFKCBzdWJ0cmFjdGFibGUsIC0gKQotTkROQk9PU1RfQklOQVJZX09QRVJBVE9SX05PTl9DT01NVVRBVElWRSggZGl2aWRhYmxlLCAvICkKLU5ETkJPT1NUX0JJTkFSWV9PUEVSQVRPUl9OT05fQ09NTVVUQVRJVkUoIG1vZGFibGUsICUgKQotTkROQk9PU1RfQklOQVJZX09QRVJBVE9SX0NPTU1VVEFUSVZFKCB4b3JhYmxlLCBeICkKLU5ETkJPT1NUX0JJTkFSWV9PUEVSQVRPUl9DT01NVVRBVElWRSggYW5kYWJsZSwgJiApCi1ORE5CT09TVF9CSU5BUllfT1BFUkFUT1JfQ09NTVVUQVRJVkUoIG9yYWJsZSwgfCApCi0KLSN1bmRlZiBORE5CT09TVF9CSU5BUllfT1BFUkFUT1JfQ09NTVVUQVRJVkUKLSN1bmRlZiBORE5CT09TVF9CSU5BUllfT1BFUkFUT1JfTk9OX0NPTU1VVEFUSVZFCi0jdW5kZWYgTkROQk9PU1RfT1BFUkFUT1IyX0xFRlQKLQotLy8gIGluY3JlbWVudGFibGUgYW5kIGRlY3JlbWVudGFibGUgY29udHJpYnV0ZWQgYnkgSmVyZW15IFNpZWsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPgotc3RydWN0IGluY3JlbWVudGFibGUgOiBCCi17Ci0gIGZyaWVuZCBUIG9wZXJhdG9yKysoVCYgeCwgaW50KQotICB7Ci0gICAgaW5jcmVtZW50YWJsZV90eXBlIG5ydih4KTsKLSAgICArK3g7Ci0gICAgcmV0dXJuIG5ydjsKLSAgfQotcHJpdmF0ZTogLy8gVGhlIHVzZSBvZiB0aGlzIHR5cGVkZWYgd29ya3MgYXJvdW5kIGEgQm9ybGFuZCBidWcKLSAgdHlwZWRlZiBUIGluY3JlbWVudGFibGVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4KLXN0cnVjdCBkZWNyZW1lbnRhYmxlIDogQgotewotICBmcmllbmQgVCBvcGVyYXRvci0tKFQmIHgsIGludCkKLSAgewotICAgIGRlY3JlbWVudGFibGVfdHlwZSBucnYoeCk7Ci0gICAgLS14OwotICAgIHJldHVybiBucnY7Ci0gIH0KLXByaXZhdGU6IC8vIFRoZSB1c2Ugb2YgdGhpcyB0eXBlZGVmIHdvcmtzIGFyb3VuZCBhIEJvcmxhbmQgYnVnCi0gIHR5cGVkZWYgVCBkZWNyZW1lbnRhYmxlX3R5cGU7Ci19OwotCi0vLyAgSXRlcmF0b3Igb3BlcmF0b3IgY2xhc3NlcyAoY29udHJpYnV0ZWQgYnkgSmVyZW15IFNpZWspIC0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBQLCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4KLXN0cnVjdCBkZXJlZmVyZW5jZWFibGUgOiBCCi17Ci0gIFAgb3BlcmF0b3ItPigpIGNvbnN0Ci0gIHsgCi0gICAgcmV0dXJuICYqc3RhdGljX2Nhc3Q8Y29uc3QgVCY+KCp0aGlzKTsgCi0gIH0KLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBJLCBjbGFzcyBSLCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4KLXN0cnVjdCBpbmRleGFibGUgOiBCCi17Ci0gIFIgb3BlcmF0b3JbXShJIG4pIGNvbnN0Ci0gIHsKLSAgICByZXR1cm4gKihzdGF0aWNfY2FzdDxjb25zdCBUJj4oKnRoaXMpICsgbik7Ci0gIH0KLX07Ci0KLS8vICBNb3JlIG9wZXJhdG9yIGNsYXNzZXMgKGNvbnRyaWJ1dGVkIGJ5IERhcnlsZSBXYWxrZXIpIC0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLS8vICAoTlJWTy1mcmllbmRseSBpbXBsZW1lbnRhdGlvbiBjb250cmlidXRlZCBieSBEYW5pZWwgRnJleSkgLS0tLS0tLS0tLS0tLS0tLy8KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfSEFTX05SVk8pIHx8IGRlZmluZWQoTkROQk9PU1RfRk9SQ0VfU1lNTUVUUklDX09QRVJBVE9SUykKLQotI2RlZmluZSBORE5CT09TVF9CSU5BUllfT1BFUkFUT1IoIE5BTUUsIE9QICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPiAgICAgICAgXAotc3RydWN0IE5BTUUjIzIgOiBCICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAoteyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBmcmllbmQgVCBvcGVyYXRvciBPUCggY29uc3QgVCYgbGhzLCBjb25zdCBVJiByaHMgKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHsgVCBucnYoIGxocyApOyBucnYgT1AjIz0gcmhzOyByZXR1cm4gbnJ2OyB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPiAgICAgICAgICAgICAgICAgXAotc3RydWN0IE5BTUUjIzEgOiBCICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAoteyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBmcmllbmQgVCBvcGVyYXRvciBPUCggY29uc3QgVCYgbGhzLCBjb25zdCBUJiByaHMgKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHsgVCBucnYoIGxocyApOyBucnYgT1AjIz0gcmhzOyByZXR1cm4gbnJ2OyB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotfTsKLQotI2Vsc2UgLy8gZGVmaW5lZChORE5CT09TVF9IQVNfTlJWTykgfHwgZGVmaW5lZChORE5CT09TVF9GT1JDRV9TWU1NRVRSSUNfT1BFUkFUT1JTKQotCi0jZGVmaW5lIE5ETkJPT1NUX0JJTkFSWV9PUEVSQVRPUiggTkFNRSwgT1AgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+ICAgICAgICBcCi1zdHJ1Y3QgTkFNRSMjMiA6IEIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi17ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIGZyaWVuZCBUIG9wZXJhdG9yIE9QKCBUIGxocywgY29uc3QgVSYgcmhzICkgeyByZXR1cm4gbGhzIE9QIyM9IHJoczsgfSAgICAgICBcCi19OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+ICAgICAgICAgICAgICAgICBcCi1zdHJ1Y3QgTkFNRSMjMSA6IEIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi17ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIGZyaWVuZCBUIG9wZXJhdG9yIE9QKCBUIGxocywgY29uc3QgVCYgcmhzICkgeyByZXR1cm4gbGhzIE9QIyM9IHJoczsgfSAgICAgICBcCi19OwotCi0jZW5kaWYgLy8gZGVmaW5lZChORE5CT09TVF9IQVNfTlJWTykgfHwgZGVmaW5lZChORE5CT09TVF9GT1JDRV9TWU1NRVRSSUNfT1BFUkFUT1JTKQotCi1ORE5CT09TVF9CSU5BUllfT1BFUkFUT1IoIGxlZnRfc2hpZnRhYmxlLCA8PCApCi1ORE5CT09TVF9CSU5BUllfT1BFUkFUT1IoIHJpZ2h0X3NoaWZ0YWJsZSwgPj4gKQotCi0jdW5kZWYgTkROQk9PU1RfQklOQVJZX09QRVJBVE9SCi0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4KLXN0cnVjdCBlcXVpdmFsZW50MiA6IEIKLXsKLSAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUJiB4LCBjb25zdCBVJiB5KQotICB7Ci0gICAgcmV0dXJuICFzdGF0aWNfY2FzdDxib29sPih4IDwgeSkgJiYgIXN0YXRpY19jYXN0PGJvb2w+KHggPiB5KTsKLSAgfQotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPgotc3RydWN0IGVxdWl2YWxlbnQxIDogQgotewotICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFQmeCwgY29uc3QgVCZ5KQotICB7Ci0gICAgcmV0dXJuICFzdGF0aWNfY2FzdDxib29sPih4IDwgeSkgJiYgIXN0YXRpY19jYXN0PGJvb2w+KHkgPCB4KTsKLSAgfQotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPgotc3RydWN0IHBhcnRpYWxseV9vcmRlcmVkMiA6IEIKLXsKLSAgZnJpZW5kIGJvb2wgb3BlcmF0b3I8PShjb25zdCBUJiB4LCBjb25zdCBVJiB5KQotICAgIHsgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KHggPCB5KSB8fCBzdGF0aWNfY2FzdDxib29sPih4ID09IHkpOyB9Ci0gIGZyaWVuZCBib29sIG9wZXJhdG9yPj0oY29uc3QgVCYgeCwgY29uc3QgVSYgeSkKLSAgICB7IHJldHVybiBzdGF0aWNfY2FzdDxib29sPih4ID4geSkgfHwgc3RhdGljX2Nhc3Q8Ym9vbD4oeCA9PSB5KTsgfQotICBmcmllbmQgYm9vbCBvcGVyYXRvcj4oY29uc3QgVSYgeCwgY29uc3QgVCYgeSkKLSAgICB7IHJldHVybiB5IDwgeDsgfQotICBmcmllbmQgYm9vbCBvcGVyYXRvcjwoY29uc3QgVSYgeCwgY29uc3QgVCYgeSkKLSAgICB7IHJldHVybiB5ID4geDsgfQotICBmcmllbmQgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IFUmIHgsIGNvbnN0IFQmIHkpCi0gICAgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4oeSA+IHgpIHx8IHN0YXRpY19jYXN0PGJvb2w+KHkgPT0geCk7IH0KLSAgZnJpZW5kIGJvb2wgb3BlcmF0b3I+PShjb25zdCBVJiB4LCBjb25zdCBUJiB5KQotICAgIHsgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KHkgPCB4KSB8fCBzdGF0aWNfY2FzdDxib29sPih5ID09IHgpOyB9Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+Ci1zdHJ1Y3QgcGFydGlhbGx5X29yZGVyZWQxIDogQgotewotICBmcmllbmQgYm9vbCBvcGVyYXRvcj4oY29uc3QgVCYgeCwgY29uc3QgVCYgeSkKLSAgICB7IHJldHVybiB5IDwgeDsgfQotICBmcmllbmQgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IFQmIHgsIGNvbnN0IFQmIHkpCi0gICAgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Ym9vbD4oeCA8IHkpIHx8IHN0YXRpY19jYXN0PGJvb2w+KHggPT0geSk7IH0KLSAgZnJpZW5kIGJvb2wgb3BlcmF0b3I+PShjb25zdCBUJiB4LCBjb25zdCBUJiB5KQotICAgIHsgcmV0dXJuIHN0YXRpY19jYXN0PGJvb2w+KHkgPCB4KSB8fCBzdGF0aWNfY2FzdDxib29sPih4ID09IHkpOyB9Ci19OwotCi0vLyAgQ29tYmluZWQgb3BlcmF0b3IgY2xhc3NlcyAoY29udHJpYnV0ZWQgYnkgRGFyeWxlIFdhbGtlcikgLS0tLS0tLS0tLS0tLS0tLS8vCi0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4KLXN0cnVjdCB0b3RhbGx5X29yZGVyZWQyCi0gICAgOiBsZXNzX3RoYW5fY29tcGFyYWJsZTI8VCwgVQotICAgICwgZXF1YWxpdHlfY29tcGFyYWJsZTI8VCwgVSwgQgotICAgICAgPiA+IHt9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+Ci1zdHJ1Y3QgdG90YWxseV9vcmRlcmVkMQotICAgIDogbGVzc190aGFuX2NvbXBhcmFibGUxPFQKLSAgICAsIGVxdWFsaXR5X2NvbXBhcmFibGUxPFQsIEIKLSAgICAgID4gPiB7fTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPgotc3RydWN0IGFkZGl0aXZlMgotICAgIDogYWRkYWJsZTI8VCwgVQotICAgICwgc3VidHJhY3RhYmxlMjxULCBVLCBCCi0gICAgICA+ID4ge307Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4KLXN0cnVjdCBhZGRpdGl2ZTEKLSAgICA6IGFkZGFibGUxPFQKLSAgICAsIHN1YnRyYWN0YWJsZTE8VCwgQgotICAgICAgPiA+IHt9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+Ci1zdHJ1Y3QgbXVsdGlwbGljYXRpdmUyCi0gICAgOiBtdWx0aXBsaWFibGUyPFQsIFUKLSAgICAsIGRpdmlkYWJsZTI8VCwgVSwgQgotICAgICAgPiA+IHt9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+Ci1zdHJ1Y3QgbXVsdGlwbGljYXRpdmUxCi0gICAgOiBtdWx0aXBsaWFibGUxPFQKLSAgICAsIGRpdmlkYWJsZTE8VCwgQgotICAgICAgPiA+IHt9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+Ci1zdHJ1Y3QgaW50ZWdlcl9tdWx0aXBsaWNhdGl2ZTIKLSAgICA6IG11bHRpcGxpY2F0aXZlMjxULCBVCi0gICAgLCBtb2RhYmxlMjxULCBVLCBCCi0gICAgICA+ID4ge307Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4KLXN0cnVjdCBpbnRlZ2VyX211bHRpcGxpY2F0aXZlMQotICAgIDogbXVsdGlwbGljYXRpdmUxPFQKLSAgICAsIG1vZGFibGUxPFQsIEIKLSAgICAgID4gPiB7fTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPgotc3RydWN0IGFyaXRobWV0aWMyCi0gICAgOiBhZGRpdGl2ZTI8VCwgVQotICAgICwgbXVsdGlwbGljYXRpdmUyPFQsIFUsIEIKLSAgICAgID4gPiB7fTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPgotc3RydWN0IGFyaXRobWV0aWMxCi0gICAgOiBhZGRpdGl2ZTE8VAotICAgICwgbXVsdGlwbGljYXRpdmUxPFQsIEIKLSAgICAgID4gPiB7fTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPgotc3RydWN0IGludGVnZXJfYXJpdGhtZXRpYzIKLSAgICA6IGFkZGl0aXZlMjxULCBVCi0gICAgLCBpbnRlZ2VyX211bHRpcGxpY2F0aXZlMjxULCBVLCBCCi0gICAgICA+ID4ge307Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4KLXN0cnVjdCBpbnRlZ2VyX2FyaXRobWV0aWMxCi0gICAgOiBhZGRpdGl2ZTE8VAotICAgICwgaW50ZWdlcl9tdWx0aXBsaWNhdGl2ZTE8VCwgQgotICAgICAgPiA+IHt9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+Ci1zdHJ1Y3QgYml0d2lzZTIKLSAgICA6IHhvcmFibGUyPFQsIFUKLSAgICAsIGFuZGFibGUyPFQsIFUKLSAgICAsIG9yYWJsZTI8VCwgVSwgQgotICAgICAgPiA+ID4ge307Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4KLXN0cnVjdCBiaXR3aXNlMQotICAgIDogeG9yYWJsZTE8VAotICAgICwgYW5kYWJsZTE8VAotICAgICwgb3JhYmxlMTxULCBCCi0gICAgICA+ID4gPiB7fTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPgotc3RydWN0IHVuaXRfc3RlcHBhYmxlCi0gICAgOiBpbmNyZW1lbnRhYmxlPFQKLSAgICAsIGRlY3JlbWVudGFibGU8VCwgQgotICAgICAgPiA+IHt9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+Ci1zdHJ1Y3Qgc2hpZnRhYmxlMgotICAgIDogbGVmdF9zaGlmdGFibGUyPFQsIFUKLSAgICAsIHJpZ2h0X3NoaWZ0YWJsZTI8VCwgVSwgQgotICAgICAgPiA+IHt9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+Ci1zdHJ1Y3Qgc2hpZnRhYmxlMQotICAgIDogbGVmdF9zaGlmdGFibGUxPFQKLSAgICAsIHJpZ2h0X3NoaWZ0YWJsZTE8VCwgQgotICAgICAgPiA+IHt9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+Ci1zdHJ1Y3QgcmluZ19vcGVyYXRvcnMyCi0gICAgOiBhZGRpdGl2ZTI8VCwgVQotICAgICwgc3VidHJhY3RhYmxlMl9sZWZ0PFQsIFUKLSAgICAsIG11bHRpcGxpYWJsZTI8VCwgVSwgQgotICAgICAgPiA+ID4ge307Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4KLXN0cnVjdCByaW5nX29wZXJhdG9yczEKLSAgICA6IGFkZGl0aXZlMTxUCi0gICAgLCBtdWx0aXBsaWFibGUxPFQsIEIKLSAgICAgID4gPiB7fTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPgotc3RydWN0IG9yZGVyZWRfcmluZ19vcGVyYXRvcnMyCi0gICAgOiByaW5nX29wZXJhdG9yczI8VCwgVQotICAgICwgdG90YWxseV9vcmRlcmVkMjxULCBVLCBCCi0gICAgICA+ID4ge307Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4KLXN0cnVjdCBvcmRlcmVkX3Jpbmdfb3BlcmF0b3JzMQotICAgIDogcmluZ19vcGVyYXRvcnMxPFQKLSAgICAsIHRvdGFsbHlfb3JkZXJlZDE8VCwgQgotICAgICAgPiA+IHt9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+Ci1zdHJ1Y3QgZmllbGRfb3BlcmF0b3JzMgotICAgIDogcmluZ19vcGVyYXRvcnMyPFQsIFUKLSAgICAsIGRpdmlkYWJsZTI8VCwgVQotICAgICwgZGl2aWRhYmxlMl9sZWZ0PFQsIFUsIEIKLSAgICAgID4gPiA+IHt9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+Ci1zdHJ1Y3QgZmllbGRfb3BlcmF0b3JzMQotICAgIDogcmluZ19vcGVyYXRvcnMxPFQKLSAgICAsIGRpdmlkYWJsZTE8VCwgQgotICAgICAgPiA+IHt9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+Ci1zdHJ1Y3Qgb3JkZXJlZF9maWVsZF9vcGVyYXRvcnMyCi0gICAgOiBmaWVsZF9vcGVyYXRvcnMyPFQsIFUKLSAgICAsIHRvdGFsbHlfb3JkZXJlZDI8VCwgVSwgQgotICAgICAgPiA+IHt9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+Ci1zdHJ1Y3Qgb3JkZXJlZF9maWVsZF9vcGVyYXRvcnMxCi0gICAgOiBmaWVsZF9vcGVyYXRvcnMxPFQKLSAgICAsIHRvdGFsbHlfb3JkZXJlZDE8VCwgQgotICAgICAgPiA+IHt9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+Ci1zdHJ1Y3QgZXVjbGlkaWFuX3Jpbmdfb3BlcmF0b3JzMgotICAgIDogcmluZ19vcGVyYXRvcnMyPFQsIFUKLSAgICAsIGRpdmlkYWJsZTI8VCwgVQotICAgICwgZGl2aWRhYmxlMl9sZWZ0PFQsIFUKLSAgICAsIG1vZGFibGUyPFQsIFUKLSAgICAsIG1vZGFibGUyX2xlZnQ8VCwgVSwgQgotICAgICAgPiA+ID4gPiA+IHt9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+Ci1zdHJ1Y3QgZXVjbGlkaWFuX3Jpbmdfb3BlcmF0b3JzMQotICAgIDogcmluZ19vcGVyYXRvcnMxPFQKLSAgICAsIGRpdmlkYWJsZTE8VAotICAgICwgbW9kYWJsZTE8VCwgQgotICAgICAgPiA+ID4ge307Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4KLXN0cnVjdCBvcmRlcmVkX2V1Y2xpZGlhbl9yaW5nX29wZXJhdG9yczIKLSAgICA6IHRvdGFsbHlfb3JkZXJlZDI8VCwgVQotICAgICwgZXVjbGlkaWFuX3Jpbmdfb3BlcmF0b3JzMjxULCBVLCBCCi0gICAgICA+ID4ge307Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4KLXN0cnVjdCBvcmRlcmVkX2V1Y2xpZGlhbl9yaW5nX29wZXJhdG9yczEKLSAgICA6IHRvdGFsbHlfb3JkZXJlZDE8VAotICAgICwgZXVjbGlkaWFuX3Jpbmdfb3BlcmF0b3JzMTxULCBCCi0gICAgICA+ID4ge307Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4KLXN0cnVjdCBldWNsaWRlYW5fcmluZ19vcGVyYXRvcnMyCi0gICAgOiByaW5nX29wZXJhdG9yczI8VCwgVQotICAgICwgZGl2aWRhYmxlMjxULCBVCi0gICAgLCBkaXZpZGFibGUyX2xlZnQ8VCwgVQotICAgICwgbW9kYWJsZTI8VCwgVQotICAgICwgbW9kYWJsZTJfbGVmdDxULCBVLCBCCi0gICAgICA+ID4gPiA+ID4ge307Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4KLXN0cnVjdCBldWNsaWRlYW5fcmluZ19vcGVyYXRvcnMxCi0gICAgOiByaW5nX29wZXJhdG9yczE8VAotICAgICwgZGl2aWRhYmxlMTxUCi0gICAgLCBtb2RhYmxlMTxULCBCCi0gICAgICA+ID4gPiB7fTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPgotc3RydWN0IG9yZGVyZWRfZXVjbGlkZWFuX3Jpbmdfb3BlcmF0b3JzMgotICAgIDogdG90YWxseV9vcmRlcmVkMjxULCBVCi0gICAgLCBldWNsaWRlYW5fcmluZ19vcGVyYXRvcnMyPFQsIFUsIEIKLSAgICAgID4gPiB7fTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPgotc3RydWN0IG9yZGVyZWRfZXVjbGlkZWFuX3Jpbmdfb3BlcmF0b3JzMQotICAgIDogdG90YWxseV9vcmRlcmVkMTxUCi0gICAgLCBldWNsaWRlYW5fcmluZ19vcGVyYXRvcnMxPFQsIEIKLSAgICAgID4gPiB7fTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFAsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPgotc3RydWN0IGlucHV0X2l0ZXJhdGFibGUKLSAgICA6IGVxdWFsaXR5X2NvbXBhcmFibGUxPFQKLSAgICAsIGluY3JlbWVudGFibGU8VAotICAgICwgZGVyZWZlcmVuY2VhYmxlPFQsIFAsIEIKLSAgICAgID4gPiA+IHt9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+Ci1zdHJ1Y3Qgb3V0cHV0X2l0ZXJhdGFibGUKLSAgICA6IGluY3JlbWVudGFibGU8VCwgQgotICAgICAgPiB7fTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFAsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPgotc3RydWN0IGZvcndhcmRfaXRlcmF0YWJsZQotICAgIDogaW5wdXRfaXRlcmF0YWJsZTxULCBQLCBCCi0gICAgICA+IHt9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgUCwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+Ci1zdHJ1Y3QgYmlkaXJlY3Rpb25hbF9pdGVyYXRhYmxlCi0gICAgOiBmb3J3YXJkX2l0ZXJhdGFibGU8VCwgUAotICAgICwgZGVjcmVtZW50YWJsZTxULCBCCi0gICAgICA+ID4ge307Ci0KLS8vICBUbyBhdm9pZCByZXBlYXRlZCBkZXJpdmF0aW9uIGZyb20gZXF1YWxpdHlfY29tcGFyYWJsZSwKLS8vICB3aGljaCBpcyBhbiBpbmRpcmVjdCBiYXNlIGNsYXNzIG9mIGJpZGlyZWN0aW9uYWxfaXRlcmFibGUsCi0vLyAgcmFuZG9tX2FjY2Vzc19pdGVyYXRhYmxlIG11c3Qgbm90IGJlIGRlcml2ZWQgZnJvbSB0b3RhbGx5X29yZGVyZWQxCi0vLyAgYnV0IGZyb20gbGVzc190aGFuX2NvbXBhcmFibGUxIG9ubHkuIChIZWxtdXQgWmVpc2VsLCAwMi1EZWMtMjAwMSkKLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBQLCBjbGFzcyBELCBjbGFzcyBSLCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4KLXN0cnVjdCByYW5kb21fYWNjZXNzX2l0ZXJhdGFibGUKLSAgICA6IGJpZGlyZWN0aW9uYWxfaXRlcmF0YWJsZTxULCBQCi0gICAgLCBsZXNzX3RoYW5fY29tcGFyYWJsZTE8VAotICAgICwgYWRkaXRpdmUyPFQsIEQKLSAgICAsIGluZGV4YWJsZTxULCBELCBSLCBCCi0gICAgICA+ID4gPiA+IHt9OwotCi0jaWZuZGVmIE5ETkJPT1NUX05PX09QRVJBVE9SU19JTl9OQU1FU1BBQ0UKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0jZW5kaWYgLy8gTkROQk9PU1RfTk9fT1BFUkFUT1JTX0lOX05BTUVTUEFDRQotCi0KLS8vIE5ETkJPT1NUX0lNUE9SVF9URU1QTEFURTEgLi4gTkROQk9PU1RfSU1QT1JUX1RFTVBMQVRFNCAtCi0vLwotLy8gV2hlbiBORE5CT09TVF9OT19PUEVSQVRPUlNfSU5fTkFNRVNQQUNFIGlzIGRlZmluZWQgd2UgbmVlZCBhIHdheSB0byBpbXBvcnQgYW4KLS8vIG9wZXJhdG9yIHRlbXBsYXRlIGludG8gdGhlIGJvb3N0IG5hbWVzcGFjZS4gTkROQk9PU1RfSU1QT1JUX1RFTVBMQVRFMSBpcyB1c2VkCi0vLyBmb3Igb25lLWFyZ3VtZW50IGZvcm1zIG9mIG9wZXJhdG9yIHRlbXBsYXRlczsgTkROQk9PU1RfSU1QT1JUX1RFTVBMQVRFMiBmb3IKLS8vIHR3by1hcmd1bWVudCBmb3Jtcy4gTm90ZSB0aGF0IHRoZXNlIG1hY3JvcyBleHBlY3QgdG8gYmUgaW52b2tlZCBmcm9tIHdpdGhpbgotLy8gYm9vc3QuCi0KLSNpZm5kZWYgTkROQk9PU1RfTk9fT1BFUkFUT1JTX0lOX05BTUVTUEFDRQotCi0gIC8vIFRoZSB0ZW1wbGF0ZSBpcyBhbHJlYWR5IGluIGJvb3N0IHNvIHdlIGhhdmUgbm90aGluZyB0byBkby4KLSMgZGVmaW5lIE5ETkJPT1NUX0lNUE9SVF9URU1QTEFURTQodGVtcGxhdGVfbmFtZSkKLSMgZGVmaW5lIE5ETkJPT1NUX0lNUE9SVF9URU1QTEFURTModGVtcGxhdGVfbmFtZSkKLSMgZGVmaW5lIE5ETkJPT1NUX0lNUE9SVF9URU1QTEFURTIodGVtcGxhdGVfbmFtZSkKLSMgZGVmaW5lIE5ETkJPT1NUX0lNUE9SVF9URU1QTEFURTEodGVtcGxhdGVfbmFtZSkKLQotI2Vsc2UgLy8gTkROQk9PU1RfTk9fT1BFUkFUT1JTX0lOX05BTUVTUEFDRQotCi0jICBpZm5kZWYgTkROQk9PU1RfTk9fVVNJTkdfVEVNUExBVEUKLQotICAgICAvLyBCcmluZyB0aGUgbmFtZXMgaW4gd2l0aCBhIHVzaW5nLWRlY2xhcmF0aW9uCi0gICAgIC8vIHRvIGF2b2lkIHN0cmVzc2luZyB0aGUgY29tcGlsZXIuCi0jICAgIGRlZmluZSBORE5CT09TVF9JTVBPUlRfVEVNUExBVEU0KHRlbXBsYXRlX25hbWUpIHVzaW5nIDo6dGVtcGxhdGVfbmFtZTsKLSMgICAgZGVmaW5lIE5ETkJPT1NUX0lNUE9SVF9URU1QTEFURTModGVtcGxhdGVfbmFtZSkgdXNpbmcgOjp0ZW1wbGF0ZV9uYW1lOwotIyAgICBkZWZpbmUgTkROQk9PU1RfSU1QT1JUX1RFTVBMQVRFMih0ZW1wbGF0ZV9uYW1lKSB1c2luZyA6OnRlbXBsYXRlX25hbWU7Ci0jICAgIGRlZmluZSBORE5CT09TVF9JTVBPUlRfVEVNUExBVEUxKHRlbXBsYXRlX25hbWUpIHVzaW5nIDo6dGVtcGxhdGVfbmFtZTsKLQotIyAgZWxzZQotCi0gICAgIC8vIE90aGVyd2lzZSwgYmVjYXVzZSBhIEJvcmxhbmQgQysrIDUuNSBidWcgcHJldmVudHMgYSB1c2luZyBkZWNsYXJhdGlvbgotICAgICAvLyBmcm9tIHdvcmtpbmcsIHdlIGFyZSBmb3JjZWQgdG8gdXNlIGluaGVyaXRhbmNlIGZvciB0aGF0IGNvbXBpbGVyLgotIyAgICBkZWZpbmUgTkROQk9PU1RfSU1QT1JUX1RFTVBMQVRFNCh0ZW1wbGF0ZV9uYW1lKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIFYsIGNsYXNzIFcsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPiBcCi0gICAgIHN0cnVjdCB0ZW1wbGF0ZV9uYW1lIDogOjp0ZW1wbGF0ZV9uYW1lPFQsIFUsIFYsIFcsIEI+IHt9OwotCi0jICAgIGRlZmluZSBORE5CT09TVF9JTVBPUlRfVEVNUExBVEUzKHRlbXBsYXRlX25hbWUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgViwgY2xhc3MgQiA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfYmFzZTxUPiA+IFwKLSAgICAgc3RydWN0IHRlbXBsYXRlX25hbWUgOiA6OnRlbXBsYXRlX25hbWU8VCwgVSwgViwgQj4ge307Ci0KLSMgICAgZGVmaW5lIE5ETkJPT1NUX0lNUE9SVF9URU1QTEFURTIodGVtcGxhdGVfbmFtZSkgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBCID0gOjpuZG5ib29zdDo6ZGV0YWlsOjplbXB0eV9iYXNlPFQ+ID4gXAotICAgICBzdHJ1Y3QgdGVtcGxhdGVfbmFtZSA6IDo6dGVtcGxhdGVfbmFtZTxULCBVLCBCPiB7fTsKLQotIyAgICBkZWZpbmUgTkROQk9PU1RfSU1QT1JUX1RFTVBMQVRFMSh0ZW1wbGF0ZV9uYW1lKSAgICAgICAgICAgICAgICAgIFwKLSAgICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPiBcCi0gICAgIHN0cnVjdCB0ZW1wbGF0ZV9uYW1lIDogOjp0ZW1wbGF0ZV9uYW1lPFQsIEI+IHt9OwotCi0jICBlbmRpZiAvLyBORE5CT09TVF9OT19VU0lOR19URU1QTEFURQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fT1BFUkFUT1JTX0lOX05BTUVTUEFDRQotCi0vLwotLy8gSGVyZSdzIHdoZXJlIHdlIHB1dCBpdCBhbGwgdG9nZXRoZXIsIGRlZmluaW5nIHRoZSB4eHh4IGZvcm1zIG9mIHRoZSB0ZW1wbGF0ZXMKLS8vIGluIG5hbWVzcGFjZSBuZG5ib29zdC4gV2UgYWxzbyBkZWZpbmUgc3BlY2lhbGl6YXRpb25zIG9mIGlzX2NoYWluZWRfYmFzZTw+IGZvcgotLy8gdGhlIHh4eHgsIHh4eHgxLCBhbmQgeHh4eDIgdGVtcGxhdGVzLCBpbXBvcnRpbmcgdGhlbSBpbnRvIG5kbmJvb3N0OjogYXMKLS8vIG5lY2Vzc2FyeS4KLS8vCi0jaWZuZGVmIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotLy8gaXNfY2hhaW5lZF9iYXNlPD4gLSBhIHRyYWl0cyBjbGFzcyB1c2VkIHRvIGRpc3Rpbmd1aXNoIHdoZXRoZXIgYW4gb3BlcmF0b3IKLS8vIHRlbXBsYXRlIGFyZ3VtZW50IGlzIGJlaW5nIHVzZWQgZm9yIGJhc2UgY2xhc3MgY2hhaW5pbmcsIG9yIGlzIHNwZWNpZnlpbmcgYQotLy8gMm5kIGFyZ3VtZW50IHR5cGUuCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0vLyBBIHR5cGUgcGFyYW1ldGVyIGlzIHVzZWQgaW5zdGVhZCBvZiBhIHBsYWluIGJvb2wgYmVjYXVzZSBCb3JsYW5kJ3MgY29tcGlsZXIKLS8vIGRpZG4ndCBjb3BlIHdlbGwgd2l0aCB0aGUgbW9yZSBvYnZpb3VzIG5vbi10eXBlIHRlbXBsYXRlIHBhcmFtZXRlci4KLW5hbWVzcGFjZSBkZXRhaWwgewotICBzdHJ1Y3QgdHJ1ZV90IHt9OwotICBzdHJ1Y3QgZmFsc2VfdCB7fTsKLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi0vLyBVbnNwZWNpYWxpemVkIHZlcnNpb24gYXNzdW1lcyB0aGF0IG1vc3QgdHlwZXMgYXJlIG5vdCBiZWluZyB1c2VkIGZvciBiYXNlCi0vLyBjbGFzcyBjaGFpbmluZy4gV2Ugc3BlY2lhbGl6ZSBmb3IgdGhlIG9wZXJhdG9yIHRlbXBsYXRlcyBkZWZpbmVkIGluIHRoaXMKLS8vIGxpYnJhcnkuCi10ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3QgaXNfY2hhaW5lZF9iYXNlIHsKLSAgdHlwZWRlZiA6Om5kbmJvb3N0OjpkZXRhaWw6OmZhbHNlX3QgdmFsdWU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vLyBJbXBvcnQgYSA0LXR5cGUtYXJndW1lbnQgb3BlcmF0b3IgdGVtcGxhdGUgaW50byBib29zdCAoaWYgbmVjZXNzYXJ5KSBhbmQKLS8vIHByb3ZpZGUgYSBzcGVjaWFsaXphdGlvbiBvZiAnaXNfY2hhaW5lZF9iYXNlPD4nIGZvciBpdC4KLSMgZGVmaW5lIE5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFNCh0ZW1wbGF0ZV9uYW1lNCkgICAgICAgICAgICAgICAgICAgICBcCi0gIE5ETkJPT1NUX0lNUE9SVF9URU1QTEFURTQodGVtcGxhdGVfbmFtZTQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICB0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBWLCBjbGFzcyBXLCBjbGFzcyBCPiAgICAgICAgICAgICAgIFwKLSAgc3RydWN0IGlzX2NoYWluZWRfYmFzZTwgOjpuZG5ib29zdDo6dGVtcGxhdGVfbmFtZTQ8VCwgVSwgViwgVywgQj4gPiB7ICBcCi0gICAgdHlwZWRlZiA6Om5kbmJvb3N0OjpkZXRhaWw6OnRydWVfdCB2YWx1ZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICB9OwotCi0vLyBJbXBvcnQgYSAzLXR5cGUtYXJndW1lbnQgb3BlcmF0b3IgdGVtcGxhdGUgaW50byBib29zdCAoaWYgbmVjZXNzYXJ5KSBhbmQKLS8vIHByb3ZpZGUgYSBzcGVjaWFsaXphdGlvbiBvZiAnaXNfY2hhaW5lZF9iYXNlPD4nIGZvciBpdC4KLSMgZGVmaW5lIE5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFMyh0ZW1wbGF0ZV9uYW1lMykgICAgICAgICAgICAgICAgICAgICBcCi0gIE5ETkJPT1NUX0lNUE9SVF9URU1QTEFURTModGVtcGxhdGVfbmFtZTMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICB0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBWLCBjbGFzcyBCPiAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgc3RydWN0IGlzX2NoYWluZWRfYmFzZTwgOjpuZG5ib29zdDo6dGVtcGxhdGVfbmFtZTM8VCwgVSwgViwgQj4gPiB7ICAgICBcCi0gICAgdHlwZWRlZiA6Om5kbmJvb3N0OjpkZXRhaWw6OnRydWVfdCB2YWx1ZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICB9OwotCi0vLyBJbXBvcnQgYSAyLXR5cGUtYXJndW1lbnQgb3BlcmF0b3IgdGVtcGxhdGUgaW50byBib29zdCAoaWYgbmVjZXNzYXJ5KSBhbmQKLS8vIHByb3ZpZGUgYSBzcGVjaWFsaXphdGlvbiBvZiAnaXNfY2hhaW5lZF9iYXNlPD4nIGZvciBpdC4KLSMgZGVmaW5lIE5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFMih0ZW1wbGF0ZV9uYW1lMikgICAgICAgICAgICAgICAgICBcCi0gIE5ETkJPT1NUX0lNUE9SVF9URU1QTEFURTIodGVtcGxhdGVfbmFtZTIpICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICB0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBCPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgc3RydWN0IGlzX2NoYWluZWRfYmFzZTwgOjpuZG5ib29zdDo6dGVtcGxhdGVfbmFtZTI8VCwgVSwgQj4gPiB7ICAgICBcCi0gICAgdHlwZWRlZiA6Om5kbmJvb3N0OjpkZXRhaWw6OnRydWVfdCB2YWx1ZTsgICAgICAgICAgICAgICAgICAgICAgICAgXAotICB9OwotCi0vLyBJbXBvcnQgYSAxLXR5cGUtYXJndW1lbnQgb3BlcmF0b3IgdGVtcGxhdGUgaW50byBib29zdCAoaWYgbmVjZXNzYXJ5KSBhbmQKLS8vIHByb3ZpZGUgYSBzcGVjaWFsaXphdGlvbiBvZiAnaXNfY2hhaW5lZF9iYXNlPD4nIGZvciBpdC4KLSMgZGVmaW5lIE5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFMSh0ZW1wbGF0ZV9uYW1lMSkgICAgICAgICAgICAgICAgICBcCi0gIE5ETkJPT1NUX0lNUE9SVF9URU1QTEFURTEodGVtcGxhdGVfbmFtZTEpICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICB0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBCPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgc3RydWN0IGlzX2NoYWluZWRfYmFzZTwgOjpuZG5ib29zdDo6dGVtcGxhdGVfbmFtZTE8VCwgQj4gPiB7ICAgICAgICBcCi0gICAgdHlwZWRlZiA6Om5kbmJvb3N0OjpkZXRhaWw6OnRydWVfdCB2YWx1ZTsgICAgICAgICAgICAgICAgICAgICAgICAgXAotICB9OwotCi0vLyBORE5CT09TVF9PUEVSQVRPUl9URU1QTEFURSh0ZW1wbGF0ZV9uYW1lKSBkZWZpbmVzIHRlbXBsYXRlX25hbWU8PiBzdWNoIHRoYXQgaXQKLS8vIGNhbiBiZSB1c2VkIGZvciBzcGVjaWZ5aW5nIGJvdGggMS1hcmd1bWVudCBhbmQgMi1hcmd1bWVudCBmb3Jtcy4gUmVxdWlyZXMgdGhlCi0vLyBleGlzdGVuY2Ugb2YgdHdvIHByZXZpb3VzbHkgZGVmaW5lZCBjbGFzcyB0ZW1wbGF0ZXMgbmFtZWQgJzx0ZW1wbGF0ZV9uYW1lPjEnCi0vLyBhbmQgJzx0ZW1wbGF0ZV9uYW1lPjInIHdoaWNoIG11c3QgaW1wbGVtZW50IHRoZSBjb3JyZXNwb25kaW5nIDEtIGFuZCAyLQotLy8gYXJndW1lbnQgZm9ybXMuCi0vLwotLy8gVGhlIHRlbXBsYXRlIHR5cGUgcGFyYW1ldGVyIE8gPT0gaXNfY2hhaW5lZF9iYXNlPFU+Ojp2YWx1ZSBpcyB1c2VkIHRvCi0vLyBkaXN0aW5ndWlzaCB3aGV0aGVyIHRoZSAybmQgYXJndW1lbnQgdG8gPHRlbXBsYXRlX25hbWU+IGlzIGJlaW5nIHVzZWQgZm9yCi0vLyBiYXNlIGNsYXNzIGNoYWluaW5nIGZyb20gYW5vdGhlciBib29zdCBvcGVyYXRvciB0ZW1wbGF0ZSBvciBpcyBkZXNjcmliaW5nIGEKLS8vIDJuZCBvcGVyYW5kIHR5cGUuIE8gPT0gdHJ1ZV90IG9ubHkgd2hlbiBVIGlzIGFjdHVhbGx5IGFuIGFub3RoZXIgb3BlcmF0b3IKLS8vIHRlbXBsYXRlIGZyb20gdGhlIGxpYnJhcnkuIFBhcnRpYWwgc3BlY2lhbGl6YXRpb24gaXMgdXNlZCB0byBzZWxlY3QgYW4KLS8vIGltcGxlbWVudGF0aW9uIGluIHRlcm1zIG9mIGVpdGhlciAnPHRlbXBsYXRlX25hbWU+MScgb3IgJzx0ZW1wbGF0ZV9uYW1lPjInLgotLy8KLQotIyBkZWZpbmUgTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEUodGVtcGxhdGVfbmFtZSkgICAgICAgICAgICAgICAgICAgIFwKLXRlbXBsYXRlIDxjbGFzcyBUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAsY2xhc3MgVSA9IFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgLGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICxjbGFzcyBPID0gdHlwZW5hbWUgaXNfY2hhaW5lZF9iYXNlPFU+Ojp2YWx1ZSAgICAgICAgICAgICBcCi0gICAgICAgICA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotc3RydWN0IHRlbXBsYXRlX25hbWUgOiB0ZW1wbGF0ZV9uYW1lIyMyPFQsIFUsIEI+IHt9OyAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBCPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotc3RydWN0IHRlbXBsYXRlX25hbWU8VCwgVSwgQiwgOjpuZG5ib29zdDo6ZGV0YWlsOjp0cnVlX3Q+ICAgICAgICAgICAgIFwKLSAgOiB0ZW1wbGF0ZV9uYW1lIyMxPFQsIFU+IHt9OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXN0cnVjdCB0ZW1wbGF0ZV9uYW1lPFQsIFQsIEIsIDo6bmRuYm9vc3Q6OmRldGFpbDo6ZmFsc2VfdD4gICAgICAgICAgICBcCi0gIDogdGVtcGxhdGVfbmFtZSMjMTxULCBCPiB7fTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIEIsIGNsYXNzIE8+ICAgICAgICAgICAgICAgICAgICAgICBcCi1zdHJ1Y3QgaXNfY2hhaW5lZF9iYXNlPCA6Om5kbmJvb3N0Ojp0ZW1wbGF0ZV9uYW1lPFQsIFUsIEIsIE8+ID4geyAgICAgXAotICB0eXBlZGVmIDo6bmRuYm9vc3Q6OmRldGFpbDo6dHJ1ZV90IHZhbHVlOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLX07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEUyKHRlbXBsYXRlX25hbWUjIzIpICAgICAgICAgICAgICAgICAgICAgICAgIFwKLU5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFMSh0ZW1wbGF0ZV9uYW1lIyMxKQotCi0KLSNlbHNlIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotIyAgZGVmaW5lIE5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFNCh0ZW1wbGF0ZV9uYW1lNCkgXAotICAgICAgICBORE5CT09TVF9JTVBPUlRfVEVNUExBVEU0KHRlbXBsYXRlX25hbWU0KQotIyAgZGVmaW5lIE5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFMyh0ZW1wbGF0ZV9uYW1lMykgXAotICAgICAgICBORE5CT09TVF9JTVBPUlRfVEVNUExBVEUzKHRlbXBsYXRlX25hbWUzKQotIyAgZGVmaW5lIE5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFMih0ZW1wbGF0ZV9uYW1lMikgXAotICAgICAgICBORE5CT09TVF9JTVBPUlRfVEVNUExBVEUyKHRlbXBsYXRlX25hbWUyKQotIyAgZGVmaW5lIE5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFMSh0ZW1wbGF0ZV9uYW1lMSkgXAotICAgICAgICBORE5CT09TVF9JTVBPUlRfVEVNUExBVEUxKHRlbXBsYXRlX25hbWUxKQotCi0gICAvLyBJbiB0aGlzIGNhc2Ugd2UgY2FuIG9ubHkgYXNzdW1lIHRoYXQgdGVtcGxhdGVfbmFtZTw+IGlzIGVxdWl2YWxlbnQgdG8gdGhlCi0gICAvLyBtb3JlIGNvbW1vbmx5IG5lZWRlZCB0ZW1wbGF0ZV9uYW1lMTw+IGZvcm0uCi0jICBkZWZpbmUgTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEUodGVtcGxhdGVfbmFtZSkgICAgICAgICAgICAgICAgICAgXAotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEIgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2Jhc2U8VD4gPiAgIFwKLSAgIHN0cnVjdCB0ZW1wbGF0ZV9uYW1lIDogdGVtcGxhdGVfbmFtZSMjMTxULCBCPiB7fTsKLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLSAgICAKLU5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFKGxlc3NfdGhhbl9jb21wYXJhYmxlKQotTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEUoZXF1YWxpdHlfY29tcGFyYWJsZSkKLU5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFKG11bHRpcGxpYWJsZSkKLU5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFKGFkZGFibGUpCi1ORE5CT09TVF9PUEVSQVRPUl9URU1QTEFURShzdWJ0cmFjdGFibGUpCi1ORE5CT09TVF9PUEVSQVRPUl9URU1QTEFURTIoc3VidHJhY3RhYmxlMl9sZWZ0KQotTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEUoZGl2aWRhYmxlKQotTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEUyKGRpdmlkYWJsZTJfbGVmdCkKLU5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFKG1vZGFibGUpCi1ORE5CT09TVF9PUEVSQVRPUl9URU1QTEFURTIobW9kYWJsZTJfbGVmdCkKLU5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFKHhvcmFibGUpCi1ORE5CT09TVF9PUEVSQVRPUl9URU1QTEFURShhbmRhYmxlKQotTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEUob3JhYmxlKQotCi1ORE5CT09TVF9PUEVSQVRPUl9URU1QTEFURTEoaW5jcmVtZW50YWJsZSkKLU5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFMShkZWNyZW1lbnRhYmxlKQotCi1ORE5CT09TVF9PUEVSQVRPUl9URU1QTEFURTIoZGVyZWZlcmVuY2VhYmxlKQotTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEUzKGluZGV4YWJsZSkKLQotTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEUobGVmdF9zaGlmdGFibGUpCi1ORE5CT09TVF9PUEVSQVRPUl9URU1QTEFURShyaWdodF9zaGlmdGFibGUpCi1ORE5CT09TVF9PUEVSQVRPUl9URU1QTEFURShlcXVpdmFsZW50KQotTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEUocGFydGlhbGx5X29yZGVyZWQpCi0KLU5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFKHRvdGFsbHlfb3JkZXJlZCkKLU5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFKGFkZGl0aXZlKQotTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEUobXVsdGlwbGljYXRpdmUpCi1ORE5CT09TVF9PUEVSQVRPUl9URU1QTEFURShpbnRlZ2VyX211bHRpcGxpY2F0aXZlKQotTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEUoYXJpdGhtZXRpYykKLU5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFKGludGVnZXJfYXJpdGhtZXRpYykKLU5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFKGJpdHdpc2UpCi1ORE5CT09TVF9PUEVSQVRPUl9URU1QTEFURTEodW5pdF9zdGVwcGFibGUpCi1ORE5CT09TVF9PUEVSQVRPUl9URU1QTEFURShzaGlmdGFibGUpCi1ORE5CT09TVF9PUEVSQVRPUl9URU1QTEFURShyaW5nX29wZXJhdG9ycykKLU5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFKG9yZGVyZWRfcmluZ19vcGVyYXRvcnMpCi1ORE5CT09TVF9PUEVSQVRPUl9URU1QTEFURShmaWVsZF9vcGVyYXRvcnMpCi1ORE5CT09TVF9PUEVSQVRPUl9URU1QTEFURShvcmRlcmVkX2ZpZWxkX29wZXJhdG9ycykKLU5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFKGV1Y2xpZGlhbl9yaW5nX29wZXJhdG9ycykKLU5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFKG9yZGVyZWRfZXVjbGlkaWFuX3Jpbmdfb3BlcmF0b3JzKQotTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEUoZXVjbGlkZWFuX3Jpbmdfb3BlcmF0b3JzKQotTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEUob3JkZXJlZF9ldWNsaWRlYW5fcmluZ19vcGVyYXRvcnMpCi1ORE5CT09TVF9PUEVSQVRPUl9URU1QTEFURTIoaW5wdXRfaXRlcmF0YWJsZSkKLU5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFMShvdXRwdXRfaXRlcmF0YWJsZSkKLU5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFMihmb3J3YXJkX2l0ZXJhdGFibGUpCi1ORE5CT09TVF9PUEVSQVRPUl9URU1QTEFURTIoYmlkaXJlY3Rpb25hbF9pdGVyYXRhYmxlKQotTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEU0KHJhbmRvbV9hY2Nlc3NfaXRlcmF0YWJsZSkKLQotI3VuZGVmIE5ETkJPT1NUX09QRVJBVE9SX1RFTVBMQVRFCi0jdW5kZWYgTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEU0Ci0jdW5kZWYgTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEUzCi0jdW5kZWYgTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEUyCi0jdW5kZWYgTkROQk9PU1RfT1BFUkFUT1JfVEVNUExBVEUxCi0jdW5kZWYgTkROQk9PU1RfSU1QT1JUX1RFTVBMQVRFMQotI3VuZGVmIE5ETkJPT1NUX0lNUE9SVF9URU1QTEFURTIKLSN1bmRlZiBORE5CT09TVF9JTVBPUlRfVEVNUExBVEUzCi0jdW5kZWYgTkROQk9PU1RfSU1QT1JUX1RFTVBMQVRFNAotCi0vLyBUaGUgZm9sbG93aW5nICdvcGVyYXRvcnMnIGNsYXNzZXMgY2FuIG9ubHkgYmUgdXNlZCBwb3J0YWJseSBpZiB0aGUgZGVyaXZlZCBjbGFzcwotLy8gZGVjbGFyZXMgQUxMIG9mIHRoZSByZXF1aXJlZCBtZW1iZXIgb3BlcmF0b3JzLgotdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFU+Ci1zdHJ1Y3Qgb3BlcmF0b3JzMgotICAgIDogdG90YWxseV9vcmRlcmVkMjxULFUKLSAgICAsIGludGVnZXJfYXJpdGhtZXRpYzI8VCxVCi0gICAgLCBiaXR3aXNlMjxULFUKLSAgICAgID4gPiA+IHt9OwotCi0jaWZuZGVmIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVID0gVD4KLXN0cnVjdCBvcGVyYXRvcnMgOiBvcGVyYXRvcnMyPFQsIFU+IHt9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4gc3RydWN0IG9wZXJhdG9yczxULCBUPgotI2Vsc2UKLXRlbXBsYXRlIDxjbGFzcyBUPiBzdHJ1Y3Qgb3BlcmF0b3JzCi0jZW5kaWYKLSAgICA6IHRvdGFsbHlfb3JkZXJlZDxUCi0gICAgLCBpbnRlZ2VyX2FyaXRobWV0aWM8VAotICAgICwgYml0d2lzZTxUCi0gICAgLCB1bml0X3N0ZXBwYWJsZTxUCi0gICAgICA+ID4gPiA+IHt9OwotCi0vLyAgSXRlcmF0b3IgaGVscGVyIGNsYXNzZXMgKGNvbnRyaWJ1dGVkIGJ5IEplcmVteSBTaWVrKSAtLS0tLS0tLS0tLS0tLS0tLS0tLy8KLS8vICAoSW5wdXQgYW5kIG91dHB1dCBpdGVyYXRvciBoZWxwZXJzIGNvbnRyaWJ1dGVkIGJ5IERhcnlsZSBXYWxrZXIpIC0tLS0tLS0vLwotLy8gIChDaGFuZ2VkIHRvIHVzZSBjb21iaW5lZCBvcGVyYXRvciBjbGFzc2VzIGJ5IERhcnlsZSBXYWxrZXIpIC0tLS0tLS0tLS0tLS8vCi10ZW1wbGF0ZSA8Y2xhc3MgVCwKLSAgICAgICAgICBjbGFzcyBWLAotICAgICAgICAgIGNsYXNzIEQgPSBzdGQ6OnB0cmRpZmZfdCwKLSAgICAgICAgICBjbGFzcyBQID0gViBjb25zdCAqLAotICAgICAgICAgIGNsYXNzIFIgPSBWIGNvbnN0ICY+Ci1zdHJ1Y3QgaW5wdXRfaXRlcmF0b3JfaGVscGVyCi0gIDogaW5wdXRfaXRlcmF0YWJsZTxULCBQCi0gICwgbmRuYm9vc3Q6Oml0ZXJhdG9yPHN0ZDo6aW5wdXRfaXRlcmF0b3JfdGFnLCBWLCBELCBQLCBSCi0gICAgPiA+IHt9OwotCi10ZW1wbGF0ZTxjbGFzcyBUPgotc3RydWN0IG91dHB1dF9pdGVyYXRvcl9oZWxwZXIKLSAgOiBvdXRwdXRfaXRlcmF0YWJsZTxUCi0gICwgbmRuYm9vc3Q6Oml0ZXJhdG9yPHN0ZDo6b3V0cHV0X2l0ZXJhdG9yX3RhZywgdm9pZCwgdm9pZCwgdm9pZCwgdm9pZAotICA+ID4KLXsKLSAgVCYgb3BlcmF0b3IqKCkgIHsgcmV0dXJuIHN0YXRpY19jYXN0PFQmPigqdGhpcyk7IH0KLSAgVCYgb3BlcmF0b3IrKygpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFQmPigqdGhpcyk7IH0KLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBULAotICAgICAgICAgIGNsYXNzIFYsCi0gICAgICAgICAgY2xhc3MgRCA9IHN0ZDo6cHRyZGlmZl90LAotICAgICAgICAgIGNsYXNzIFAgPSBWKiwKLSAgICAgICAgICBjbGFzcyBSID0gViY+Ci1zdHJ1Y3QgZm9yd2FyZF9pdGVyYXRvcl9oZWxwZXIKLSAgOiBmb3J3YXJkX2l0ZXJhdGFibGU8VCwgUAotICAsIG5kbmJvb3N0OjppdGVyYXRvcjxzdGQ6OmZvcndhcmRfaXRlcmF0b3JfdGFnLCBWLCBELCBQLCBSCi0gICAgPiA+IHt9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwKLSAgICAgICAgICBjbGFzcyBWLAotICAgICAgICAgIGNsYXNzIEQgPSBzdGQ6OnB0cmRpZmZfdCwKLSAgICAgICAgICBjbGFzcyBQID0gViosCi0gICAgICAgICAgY2xhc3MgUiA9IFYmPgotc3RydWN0IGJpZGlyZWN0aW9uYWxfaXRlcmF0b3JfaGVscGVyCi0gIDogYmlkaXJlY3Rpb25hbF9pdGVyYXRhYmxlPFQsIFAKLSAgLCBuZG5ib29zdDo6aXRlcmF0b3I8c3RkOjpiaWRpcmVjdGlvbmFsX2l0ZXJhdG9yX3RhZywgViwgRCwgUCwgUgotICAgID4gPiB7fTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsCi0gICAgICAgICAgY2xhc3MgViwgCi0gICAgICAgICAgY2xhc3MgRCA9IHN0ZDo6cHRyZGlmZl90LAotICAgICAgICAgIGNsYXNzIFAgPSBWKiwKLSAgICAgICAgICBjbGFzcyBSID0gViY+Ci1zdHJ1Y3QgcmFuZG9tX2FjY2Vzc19pdGVyYXRvcl9oZWxwZXIKLSAgOiByYW5kb21fYWNjZXNzX2l0ZXJhdGFibGU8VCwgUCwgRCwgUgotICAsIG5kbmJvb3N0OjppdGVyYXRvcjxzdGQ6OnJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnLCBWLCBELCBQLCBSCi0gICAgPiA+Ci17Ci0gIGZyaWVuZCBEIHJlcXVpcmVzX2RpZmZlcmVuY2Vfb3BlcmF0b3IoY29uc3QgVCYgeCwgY29uc3QgVCYgeSkgewotICAgIHJldHVybiB4IC0geTsKLSAgfQotfTsgLy8gcmFuZG9tX2FjY2Vzc19pdGVyYXRvcl9oZWxwZXIKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2lmIGRlZmluZWQoX19zZ2kpICYmICFkZWZpbmVkKF9fR05VQ19fKQotI3ByYWdtYSByZXNldCB3b2ZmIDEyMzQKLSNlbmRpZgotCi0jZW5kaWYgLy8gTkROQk9PU1RfT1BFUkFUT1JTX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9vcHRpb25hbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L29wdGlvbmFsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWY5MjYzOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L29wdGlvbmFsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAwMywgRmVybmFuZG8gTHVpcyBDYWNjaW9sYSBDYXJiYWxsYWwuCi0vLwotLy8gVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLS8vIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvb3B0aW9uYWwgZm9yIGRvY3VtZW50YXRpb24uCi0vLwotLy8gWW91IGFyZSB3ZWxjb21lIHRvIGNvbnRhY3QgdGhlIGF1dGhvciBhdDoKLS8vICBmZXJuYW5kb19jYWNjaW9sYUBob3RtYWlsLmNvbQotLy8KLSNpZm5kZWYgTkROQk9PU1RfT1BUSU9OQUxfRkxDXzE5Tk9WMjAwMl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfT1BUSU9OQUxfRkxDXzE5Tk9WMjAwMl9IUFAKLQotI2luY2x1ZGUgIm5kbmJvb3N0L29wdGlvbmFsL29wdGlvbmFsLmhwcCIKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvb3B0aW9uYWwvb3B0aW9uYWwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9vcHRpb25hbC9vcHRpb25hbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdhM2RiMTcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9vcHRpb25hbC9vcHRpb25hbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5OTEgKzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA4IEZlcm5hbmRvIEx1aXMgQ2FjY2lvbGEgQ2FyYmFsbGFsLgotLy8KLS8vIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCi0vLyBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL29wdGlvbmFsIGZvciBkb2N1bWVudGF0aW9uLgotLy8KLS8vIFlvdSBhcmUgd2VsY29tZSB0byBjb250YWN0IHRoZSBhdXRob3IgYXQ6Ci0vLyAgZmVybmFuZG9fY2FjY2lvbGFAaG90bWFpbC5jb20KLS8vCi0vLyBSZXZpc2lvbnM6Ci0vLyAyNyBBcHIgMjAwOCAoaW1wcm92ZWQgc3dhcCkgRmVybmFuZG8gQ2FjY2lvbGEsIE5pZWxzIERla2tlciwgVGhvcnN0ZW4gT3R0b3NlbgotLy8KLSNpZm5kZWYgTkROQk9PU1RfT1BUSU9OQUxfT1BUSU9OQUxfRkxDXzE5Tk9WMjAwMl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfT1BUSU9OQUxfT1BUSU9OQUxfRkxDXzE5Tk9WMjAwMl9IUFAKLQotI2luY2x1ZGUgPG5ldz4KLSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2Fzc2VydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvYWxpZ25tZW50X29mLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbm90aHJvd19jb25zdHJ1Y3Rvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvdHlwZV93aXRoX2FsaWdubWVudC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX3JlZmVyZW5jZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcmVmZXJlbmNlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ib29sLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbm90LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvcmVmZXJlbmNlX2NvbnRlbnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L25vbmUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3V0aWxpdHkvc3dhcC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdXRpbGl0eS9hZGRyZXNzb2YuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3V0aWxpdHkvY29tcGFyZV9wb2ludGVlcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdXRpbGl0eS9pbl9wbGFjZV9mYWN0b3J5LmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L29wdGlvbmFsL29wdGlvbmFsX2Z3ZC5ocHA+Ci0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsID09IDEyMDApCi0vLyBWQzYuMCBoYXMgdGhlIGZvbGxvd2luZyBidWc6Ci0vLyAgIFdoZW4gYSB0ZW1wbGF0ZWQgYXNzaWdubWVudCBvcGVyYXRvciBleGlzdCwgYW4gaW1wbGljaXQgY29udmVyc2lvbgotLy8gICBjb25zdHJ1Y3RpbmcgYW4gb3B0aW9uYWw8VD4gaXMgdXNlZCB3aGVuIGFzc2lnbWVudCBvZiB0aGUgZm9ybToKLS8vICAgICBvcHRpb25hbDxUPiBvcHQgOyBvcHQgPSBUKC4uLik7Ci0vLyAgIGlzIGNvbXBpbGVkLgotLy8gICBIb3dldmVyLCBvcHRpb25hbCdzIGN0b3IgaXMgX2V4cGxpY2l0XyBhbmQgdGhlIGFzc2lnbmVtdCBzaG91bGRuJ3QgY29tcGlsZS4KLS8vICAgVGhlcmVmb3JlLCBmb3IgVkM2LjAgdGVtcGxhdGVkIGFzc2lnbm1lbnQgaXMgZGlzYWJsZWQuCi0vLwotI2RlZmluZSBORE5CT09TVF9PUFRJT05BTF9OT19DT05WRVJUSU5HX0FTU0lHTk1FTlQKLSNlbmRpZgotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA9PSAxMzAwKQotLy8gVkM3LjAgaGFzIHRoZSBmb2xsb3dpbmcgYnVnOgotLy8gICBXaGVuIGJvdGggYSBub24tdGVtcGxhdGUgYW5kIGEgdGVtcGxhdGUgY29weS1jdG9yIGV4aXN0Ci0vLyAgIGFuZCB0aGUgdGVtcGxhdGVkIHZlcnNpb24gaXMgbWFkZSAnZXhwbGljaXQnLCB0aGUgZXhwbGljaXQgaXMgYWxzbwotLy8gICBnaXZlbiB0byB0aGUgbm9uLXRlbXBsYXRlZCB2ZXJzaW9uLCBtYWtpbmcgdGhlIGNsYXNzIG5vbi1pbXBsaWNpdGVseS1jb3B5YWJsZS4KLS8vCi0jZGVmaW5lIE5ETkJPT1NUX09QVElPTkFMX05PX0NPTlZFUlRJTkdfQ09QWV9DVE9SCi0jZW5kaWYKLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkgfHwgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9JTlRFTF9DWFhfVkVSU0lPTiw8PTcwMCkKLS8vIEFGQUlDVCBvbmx5IFZDNy4xIGNvcnJlY3RseSByZXNvbHZlcyB0aGUgb3ZlcmxvYWQgc2V0Ci0vLyB0aGF0IGluY2x1ZGVzIHRoZSBpbi1wbGFjZSBmYWN0b3J5IHRha2luZyBmdW5jdGlvbnMsCi0vLyBzbyBmb3IgdGhlIG90aGVyIFZDIHZlcnNpb25zLCBpbi1wbGFjZSBmYWN0b3J5IHN1cHBvcnQKLS8vIGlzIGRpc2FibGVkCi0jZGVmaW5lIE5ETkJPT1NUX09QVElPTkFMX05PX0lOUExBQ0VfRkFDVE9SWV9TVVBQT1JUCi0jZW5kaWYKLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCA8PSAweDU1MSkKLS8vIEJDQiAoNS41LjEpIGNhbm5vdCBwYXJzZSB0aGUgbmVzdGVkIHRlbXBsYXRlIHN0cnVjdCBpbiBhbiBpbnBsYWNlIGZhY3RvcnkuCi0jZGVmaW5lIE5ETkJPT1NUX09QVElPTkFMX05PX0lOUExBQ0VfRkFDVE9SWV9TVVBQT1JUCi0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX09QVElPTkFMX05PX0lOUExBQ0VfRkFDVE9SWV9TVVBQT1JUKSBcCi0gICAgJiYgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU4MSkgKQotLy8gQkNCICh1cCB0byA1LjY0KSBoYXMgdGhlIGZvbGxvd2luZyBidWc6Ci0vLyAgIElmIHRoZXJlIGlzIGEgbWVtYmVyIGZ1bmN0aW9uL29wZXJhdG9yIHRlbXBsYXRlIG9mIHRoZSBmb3JtCi0vLyAgICAgdGVtcGxhdGU8Y2xhc3MgRXhwcj4gbWZ1bmMoIEV4cHIgZXhwciApIDsKLS8vICAgc29tZSBjYWxscyBhcmUgcmVzb2x2ZWQgdG8gdGhpcyBldmVuIGlmIHRoZXJlIGFyZSBvdGhlciBiZXR0ZXIgbWF0Y2hlcy4KLS8vICAgVGhlIGVmZmVjdCBvZiB0aGlzIGJ1ZyBpcyB0aGF0IGNhbGxzIHRvIGNvbnZlcnRpbmcgY3RvcnMgYW5kIGFzc2lnbm1lbnRzCi0vLyAgIGFyZSBpbmNyb3JyZWN0bHkgc2luayB0byB0aGlzIGdlbmVyYWwgY2F0Y2gtYWxsIG1lbWJlciBmdW5jdGlvbiB0ZW1wbGF0ZSBhcyBzaG93biBhYm92ZS4KLSNkZWZpbmUgTkROQk9PU1RfT1BUSU9OQUxfV0VBS19PVkVSTE9BRF9SRVNPTFVUSU9OCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoX19HTlVDX18pICYmIChfX0dOVUNfXyAqIDEwMCArIF9fR05VQ19NSU5PUl9fKSA+IDMwMiBcCi0gICAgJiYgIWRlZmluZWQoX19JTlRFTF9DT01QSUxFUikKLS8vIEdDQyBzaW5jZSAzLjMgaGFzIG1heV9hbGlhcyBhdHRyaWJ1dGUgdGhhdCBoZWxwcyB0byBhbGxldmlhdGUgb3B0aW1pemVyIGlzc3VlcyB3aXRoCi0vLyByZWdhcmQgdG8gdmlvbGF0aW9uIG9mIHRoZSBzdHJpY3QgYWxpYXNpbmcgcnVsZXMuIFRoZSBvcHRpb25hbDwgVCA+IHN0b3JhZ2UgdHlwZSBpcyBtYXJrZWQKLS8vIHdpdGggdGhpcyBhdHRyaWJ1dGUgaW4gb3JkZXIgdG8gbGV0IHRoZSBjb21waWxlciBrbm93IHRoYXQgaXQgd2lsbCBhbGlhcyBvYmplY3RzIG9mIHR5cGUgVAotLy8gYW5kIHNpbGVuY2UgY29tcGlsYXRpb24gd2FybmluZ3MuCi0jZGVmaW5lIE5ETkJPT1NUX09QVElPTkFMX0RFVEFJTF9VU0VfQVRUUklCVVRFX01BWV9BTElBUwotI2VuZGlmCi0KLS8vIERhbmllbCBXYWxsaW4gZGlzY292ZXJlZCB0aGF0IGJpbmQvYXBwbHkuaHBwIGJhZGx5IGludGVyYWN0cyB3aXRoIHRoZSBhcHBseTw+Ci0vLyBtZW1iZXIgdGVtcGxhdGUgb2YgYSBmYWN0b3J5IGFzIHVzZWQgaW4gdGhlIG9wdGlvbmFsPD4gaW1wbGVtZW50YXRpb24uCi0vLyBIZSBwcm9wb3NlZCB0aGlzIHNpbXBsZSBmaXggd2hpY2ggaXMgdG8gbW92ZSB0aGUgY2FsbCB0byBhcHBseTw+IG91dHNpZGUKLS8vIG5hbWVzcGFjZSBuZG5ib29zdC4KLW5hbWVzcGFjZSBuZG5ib29zdF9vcHRpb25hbF9kZXRhaWwKLXsKLSAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEZhY3Rvcnk+Ci0gIGlubGluZSB2b2lkIGNvbnN0cnVjdChGYWN0b3J5IGNvbnN0JiBmYWN0b3J5LCB2b2lkKiBhZGRyZXNzKQotICB7Ci0gICAgZmFjdG9yeS5ORE5CT09TVF9ORVNURURfVEVNUExBVEUgYXBwbHk8VD4oYWRkcmVzcyk7Ci0gIH0KLX0KLQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1jbGFzcyBpbl9wbGFjZV9mYWN0b3J5X2Jhc2UgOwotY2xhc3MgdHlwZWRfaW5fcGxhY2VfZmFjdG9yeV9iYXNlIDsKLQotLy8gVGhpcyBmb3J3YXJkIGlzIG5lZWRlZCB0byByZWZlciB0byBuYW1lc3BhY2Ugc2NvcGUgc3dhcCBmcm9tIHRoZSBtZW1iZXIgc3dhcAotdGVtcGxhdGU8Y2xhc3MgVD4gdm9pZCBzd2FwICggb3B0aW9uYWw8VD4mIHgsIG9wdGlvbmFsPFQ+JiB5ICk7Ci0KLW5hbWVzcGFjZSBvcHRpb25hbF9kZXRhaWwgewotCi0vLyBUaGlzIGxvY2FsIGNsYXNzIGlzIHVzZWQgaW5zdGVhZCBvZiB0aGF0IGluICJhbGlnbmVkX3N0b3JhZ2UuaHBwIgotLy8gYmVjYXVzZSBJJ3ZlIGZvdW5kIHRoZSAnb2ZmaWNpYWwnIGNsYXNzIHRvIElDRSBCQ0I1LjUKLS8vIHdoZW4gc29tZSB0eXBlcyBhcmUgdXNlZCB3aXRoIG9wdGlvbmFsPD4KLS8vIChkdWUgdG8gc2l6ZW9mKCkgcGFzc2VkIGRvd24gYXMgYSBub24tdHlwZSB0ZW1wbGF0ZSBwYXJhbWV0ZXIpCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLWNsYXNzIGFsaWduZWRfc3RvcmFnZQotewotICAgIC8vIEJvcmxhbmQgSUNFcyBpZiB1bm5hbWVkIHVuaW9ucyBhcmUgdXNlZCBmb3IgdGhpcyEKLSAgICB1bmlvbgotICAgIC8vIFRoaXMgd29ya3MgYXJvdW5kIEdDQyB3YXJuaW5ncyBhYm91dCBicmVha2luZyBzdHJpY3QgYWxpYXNpbmcgcnVsZXMgd2hlbiBjYXN0aW5nIHN0b3JhZ2UgYWRkcmVzcyB0byBUKgotI2lmIGRlZmluZWQoTkROQk9PU1RfT1BUSU9OQUxfREVUQUlMX1VTRV9BVFRSSUJVVEVfTUFZX0FMSUFTKQotICAgIF9fYXR0cmlidXRlX18oKG1heV9hbGlhcykpCi0jZW5kaWYKLSAgICBkdW1teV91Ci0gICAgewotICAgICAgICBjaGFyIGRhdGFbIHNpemVvZihUKSBdOwotICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHR5cGVfd2l0aF9hbGlnbm1lbnQ8Ci0gICAgICAgICAgOjpuZG5ib29zdDo6YWxpZ25tZW50X29mPFQ+Ojp2YWx1ZSA+Ojp0eXBlIGFsaWduZXJfOwotICAgIH0gZHVtbXlfIDsKLQotICBwdWJsaWM6Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX09QVElPTkFMX0RFVEFJTF9VU0VfQVRUUklCVVRFX01BWV9BTElBUykKLSAgICB2b2lkIGNvbnN0KiBhZGRyZXNzKCkgY29uc3QgeyByZXR1cm4gJmR1bW15XzsgfQotICAgIHZvaWQgICAgICAqIGFkZHJlc3MoKSAgICAgICB7IHJldHVybiAmZHVtbXlfOyB9Ci0jZWxzZQotICAgIHZvaWQgY29uc3QqIGFkZHJlc3MoKSBjb25zdCB7IHJldHVybiBkdW1teV8uZGF0YTsgfQotICAgIHZvaWQgICAgICAqIGFkZHJlc3MoKSAgICAgICB7IHJldHVybiBkdW1teV8uZGF0YTsgfQotI2VuZGlmCi19IDsKLQotdGVtcGxhdGU8Y2xhc3MgVD4KLXN0cnVjdCB0eXBlc193aGVuX2lzbnRfcmVmCi17Ci0gIHR5cGVkZWYgVCBjb25zdCYgcmVmZXJlbmNlX2NvbnN0X3R5cGUgOwotICB0eXBlZGVmIFQgJiAgICAgIHJlZmVyZW5jZV90eXBlIDsKLSAgdHlwZWRlZiBUIGNvbnN0KiBwb2ludGVyX2NvbnN0X3R5cGUgOwotICB0eXBlZGVmIFQgKiAgICAgIHBvaW50ZXJfdHlwZSA7Ci0gIHR5cGVkZWYgVCBjb25zdCYgYXJndW1lbnRfdHlwZSA7Ci19IDsKLXRlbXBsYXRlPGNsYXNzIFQ+Ci1zdHJ1Y3QgdHlwZXNfd2hlbl9pc19yZWYKLXsKLSAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJlbW92ZV9yZWZlcmVuY2U8VD46OnR5cGUgcmF3X3R5cGUgOwotCi0gIHR5cGVkZWYgcmF3X3R5cGUmIHJlZmVyZW5jZV9jb25zdF90eXBlIDsKLSAgdHlwZWRlZiByYXdfdHlwZSYgcmVmZXJlbmNlX3R5cGUgOwotICB0eXBlZGVmIHJhd190eXBlKiBwb2ludGVyX2NvbnN0X3R5cGUgOwotICB0eXBlZGVmIHJhd190eXBlKiBwb2ludGVyX3R5cGUgOwotICB0eXBlZGVmIHJhd190eXBlJiBhcmd1bWVudF90eXBlIDsKLX0gOwotCi1zdHJ1Y3Qgb3B0aW9uYWxfdGFnIHt9IDsKLQotdGVtcGxhdGU8Y2xhc3MgVD4KLWNsYXNzIG9wdGlvbmFsX2Jhc2UgOiBwdWJsaWMgb3B0aW9uYWxfdGFnCi17Ci0gIHByaXZhdGUgOgotCi0gICAgdHlwZWRlZgotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTY0KSkKLSAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FCi0jZW5kaWYKLSAgICA6Om5kbmJvb3N0OjpkZXRhaWw6Om1ha2VfcmVmZXJlbmNlX2NvbnRlbnQ8VD46OnR5cGUgaW50ZXJuYWxfdHlwZSA7Ci0KLSAgICB0eXBlZGVmIGFsaWduZWRfc3RvcmFnZTxpbnRlcm5hbF90eXBlPiBzdG9yYWdlX3R5cGUgOwotCi0gICAgdHlwZWRlZiB0eXBlc193aGVuX2lzbnRfcmVmPFQ+IHR5cGVzX3doZW5fbm90X3JlZiA7Ci0gICAgdHlwZWRlZiB0eXBlc193aGVuX2lzX3JlZjxUPiAgIHR5cGVzX3doZW5fcmVmICAgOwotCi0gICAgdHlwZWRlZiBvcHRpb25hbF9iYXNlPFQ+IHRoaXNfdHlwZSA7Ci0KLSAgcHJvdGVjdGVkIDoKLQotICAgIHR5cGVkZWYgVCB2YWx1ZV90eXBlIDsKLQotICAgIHR5cGVkZWYgbXBsOjp0cnVlXyAgaXNfcmVmZXJlbmNlX3RhZyA7Ci0gICAgdHlwZWRlZiBtcGw6OmZhbHNlXyBpc19ub3RfcmVmZXJlbmNlX3RhZyA7Ci0KLSAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgaXNfcmVmZXJlbmNlPFQ+Ojp0eXBlIGlzX3JlZmVyZW5jZV9wcmVkaWNhdGUgOwotCi0gIHB1YmxpYzoKLSAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgbXBsOjppZl88aXNfcmVmZXJlbmNlX3ByZWRpY2F0ZSx0eXBlc193aGVuX3JlZix0eXBlc193aGVuX25vdF9yZWY+Ojp0eXBlIHR5cGVzIDsKLQotICBwcm90ZWN0ZWQ6Ci0gICAgdHlwZWRlZiBib29sICh0aGlzX3R5cGU6Oip1bnNwZWNpZmllZF9ib29sX3R5cGUpKCkgY29uc3Q7Ci0KLSAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgdHlwZXM6OnJlZmVyZW5jZV90eXBlICAgICAgIHJlZmVyZW5jZV90eXBlIDsKLSAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgdHlwZXM6OnJlZmVyZW5jZV9jb25zdF90eXBlIHJlZmVyZW5jZV9jb25zdF90eXBlIDsKLSAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgdHlwZXM6OnBvaW50ZXJfdHlwZSAgICAgICAgIHBvaW50ZXJfdHlwZSA7Ci0gICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHR5cGVzOjpwb2ludGVyX2NvbnN0X3R5cGUgICBwb2ludGVyX2NvbnN0X3R5cGUgOwotICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSB0eXBlczo6YXJndW1lbnRfdHlwZSAgICAgICAgYXJndW1lbnRfdHlwZSA7Ci0KLSAgICAvLyBDcmVhdGVzIGFuIG9wdGlvbmFsPFQ+IHVuaW5pdGlhbGl6ZWQuCi0gICAgLy8gTm8tdGhyb3cKLSAgICBvcHRpb25hbF9iYXNlKCkKLSAgICAgIDoKLSAgICAgIG1faW5pdGlhbGl6ZWQoZmFsc2UpIHt9Ci0KLSAgICAvLyBDcmVhdGVzIGFuIG9wdGlvbmFsPFQ+IHVuaW5pdGlhbGl6ZWQuCi0gICAgLy8gTm8tdGhyb3cKLSAgICBvcHRpb25hbF9iYXNlICggbm9uZV90ICkKLSAgICAgIDoKLSAgICAgIG1faW5pdGlhbGl6ZWQoZmFsc2UpIHt9Ci0KLSAgICAvLyBDcmVhdGVzIGFuIG9wdGlvbmFsPFQ+IGluaXRpYWxpemVkIHdpdGggJ3ZhbCcuCi0gICAgLy8gQ2FuIHRocm93IGlmIFQ6OlQoVCBjb25zdCYpIGRvZXMKLSAgICBvcHRpb25hbF9iYXNlICggYXJndW1lbnRfdHlwZSB2YWwgKQotICAgICAgOgotICAgICAgbV9pbml0aWFsaXplZChmYWxzZSkKLSAgICB7Ci0gICAgICBjb25zdHJ1Y3QodmFsKTsKLSAgICB9Ci0KLSAgICAvLyBDcmVhdGVzIGFuIG9wdGlvbmFsPFQ+IGluaXRpYWxpemVkIHdpdGggJ3ZhbCcgSUZGIGNvbmQgaXMgdHJ1ZSwgb3RoZXJ3aXNlIGNyZWF0ZXMgYW4gdW5pbml0aWFsemVkIG9wdGlvbmFsPFQ+LgotICAgIC8vIENhbiB0aHJvdyBpZiBUOjpUKFQgY29uc3QmKSBkb2VzCi0gICAgb3B0aW9uYWxfYmFzZSAoIGJvb2wgY29uZCwgYXJndW1lbnRfdHlwZSB2YWwgKQotICAgICAgOgotICAgICAgbV9pbml0aWFsaXplZChmYWxzZSkKLSAgICB7Ci0gICAgICBpZiAoIGNvbmQgKQotICAgICAgICBjb25zdHJ1Y3QodmFsKTsKLSAgICB9Ci0KLSAgICAvLyBDcmVhdGVzIGEgZGVlcCBjb3B5IG9mIGFub3RoZXIgb3B0aW9uYWw8VD4KLSAgICAvLyBDYW4gdGhyb3cgaWYgVDo6VChUIGNvbnN0JikgZG9lcwotICAgIG9wdGlvbmFsX2Jhc2UgKCBvcHRpb25hbF9iYXNlIGNvbnN0JiByaHMgKQotICAgICAgOgotICAgICAgbV9pbml0aWFsaXplZChmYWxzZSkKLSAgICB7Ci0gICAgICBpZiAoIHJocy5pc19pbml0aWFsaXplZCgpICkKLSAgICAgICAgY29uc3RydWN0KHJocy5nZXRfaW1wbCgpKTsKLSAgICB9Ci0KLQotICAgIC8vIFRoaXMgaXMgdXNlZCBmb3IgYm90aCBjb252ZXJ0aW5nIGFuZCBpbi1wbGFjZSBjb25zdHJ1Y3Rpb25zLgotICAgIC8vIERlcml2ZWQgY2xhc3NlcyB1c2UgdGhlICd0YWcnIHRvIHNlbGVjdCB0aGUgYXBwcm9wcmlhdGUKLSAgICAvLyBpbXBsZW1lbnRhdGlvbiAodGhlIGNvcnJlY3QgJ2NvbnN0cnVjdCgpJyBvdmVybG9hZCkKLSAgICB0ZW1wbGF0ZTxjbGFzcyBFeHByPgotICAgIGV4cGxpY2l0IG9wdGlvbmFsX2Jhc2UgKCBFeHByIGNvbnN0JiBleHByLCBFeHByIGNvbnN0KiB0YWcgKQotICAgICAgOgotICAgICAgbV9pbml0aWFsaXplZChmYWxzZSkKLSAgICB7Ci0gICAgICBjb25zdHJ1Y3QoZXhwcix0YWcpOwotICAgIH0KLQotCi0KLSAgICAvLyBOby10aHJvdyAoYXNzdW1pbmcgVDo6flQoKSBkb2Vzbid0KQotICAgIH5vcHRpb25hbF9iYXNlKCkgeyBkZXN0cm95KCkgOyB9Ci0KLSAgICAvLyBBc3NpZ25zIGZyb20gYW5vdGhlciBvcHRpb25hbDxUPiAoZGVlcC1jb3BpZXMgdGhlIHJocyB2YWx1ZSkKLSAgICB2b2lkIGFzc2lnbiAoIG9wdGlvbmFsX2Jhc2UgY29uc3QmIHJocyApCi0gICAgewotICAgICAgaWYgKGlzX2luaXRpYWxpemVkKCkpCi0gICAgICB7Ci0gICAgICAgIGlmICggcmhzLmlzX2luaXRpYWxpemVkKCkgKQotICAgICAgICAgICAgIGFzc2lnbl92YWx1ZShyaHMuZ2V0X2ltcGwoKSwgaXNfcmVmZXJlbmNlX3ByZWRpY2F0ZSgpICk7Ci0gICAgICAgIGVsc2UgZGVzdHJveSgpOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICBpZiAoIHJocy5pc19pbml0aWFsaXplZCgpICkKLSAgICAgICAgICBjb25zdHJ1Y3QocmhzLmdldF9pbXBsKCkpOwotICAgICAgfQotICAgIH0KLQotICAgIC8vIEFzc2lnbnMgZnJvbSBhbm90aGVyIF9jb252ZXJ0aWJsZV8gb3B0aW9uYWw8VT4gKGRlZXAtY29waWVzIHRoZSByaHMgdmFsdWUpCi0gICAgdGVtcGxhdGU8Y2xhc3MgVT4KLSAgICB2b2lkIGFzc2lnbiAoIG9wdGlvbmFsPFU+IGNvbnN0JiByaHMgKQotICAgIHsKLSAgICAgIGlmIChpc19pbml0aWFsaXplZCgpKQotICAgICAgewotICAgICAgICBpZiAoIHJocy5pc19pbml0aWFsaXplZCgpICkKLSAgICAgICAgICAgICBhc3NpZ25fdmFsdWUoc3RhdGljX2Nhc3Q8dmFsdWVfdHlwZT4ocmhzLmdldCgpKSwgaXNfcmVmZXJlbmNlX3ByZWRpY2F0ZSgpICk7Ci0gICAgICAgIGVsc2UgZGVzdHJveSgpOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICBpZiAoIHJocy5pc19pbml0aWFsaXplZCgpICkKLSAgICAgICAgICBjb25zdHJ1Y3Qoc3RhdGljX2Nhc3Q8dmFsdWVfdHlwZT4ocmhzLmdldCgpKSk7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgLy8gQXNzaWducyBmcm9tIGEgVCAoZGVlcC1jb3BpZXMgdGhlIHJocyB2YWx1ZSkKLSAgICB2b2lkIGFzc2lnbiAoIGFyZ3VtZW50X3R5cGUgdmFsICkKLSAgICB7Ci0gICAgICBpZiAoaXNfaW5pdGlhbGl6ZWQoKSkKLSAgICAgICAgICAgYXNzaWduX3ZhbHVlKHZhbCwgaXNfcmVmZXJlbmNlX3ByZWRpY2F0ZSgpICk7Ci0gICAgICBlbHNlIGNvbnN0cnVjdCh2YWwpOwotICAgIH0KLQotICAgIC8vIEFzc2lnbnMgZnJvbSAibm9uZSIsIGRlc3Ryb3lpbmcgdGhlIGN1cnJlbnQgdmFsdWUsIGlmIGFueSwgbGVhdmluZyB0aGlzIFVOSU5JVElBTElaRUQKLSAgICAvLyBOby10aHJvdyAoYXNzdW1pbmcgVDo6flQoKSBkb2Vzbid0KQotICAgIHZvaWQgYXNzaWduICggbm9uZV90ICkgeyBkZXN0cm95KCk7IH0KLQotI2lmbmRlZiBORE5CT09TVF9PUFRJT05BTF9OT19JTlBMQUNFX0ZBQ1RPUllfU1VQUE9SVAotICAgIHRlbXBsYXRlPGNsYXNzIEV4cHI+Ci0gICAgdm9pZCBhc3NpZ25fZXhwciAoIEV4cHIgY29uc3QmIGV4cHIsIEV4cHIgY29uc3QqIHRhZyApCi0gICAgICB7Ci0gICAgICAgIGlmIChpc19pbml0aWFsaXplZCgpKQotICAgICAgICAgICAgIGFzc2lnbl9leHByX3RvX2luaXRpYWxpemVkKGV4cHIsdGFnKTsKLSAgICAgICAgZWxzZSBjb25zdHJ1Y3QoZXhwcix0YWcpOwotICAgICAgfQotI2VuZGlmCi0KLSAgcHVibGljIDoKLQotICAgIC8vIERlc3Ryb3lzIHRoZSBjdXJyZW50IHZhbHVlLCBpZiBhbnksIGxlYXZpbmcgdGhpcyBVTklOSVRJQUxJWkVECi0gICAgLy8gTm8tdGhyb3cgKGFzc3VtaW5nIFQ6On5UKCkgZG9lc24ndCkKLSAgICB2b2lkIHJlc2V0KCkgeyBkZXN0cm95KCk7IH0KLQotICAgIC8vIFJlcGxhY2VzIHRoZSBjdXJyZW50IHZhbHVlIC1pZiBhbnktIHdpdGggJ3ZhbCcKLSAgICB2b2lkIHJlc2V0ICggYXJndW1lbnRfdHlwZSB2YWwgKSB7IGFzc2lnbih2YWwpOyB9Ci0KLSAgICAvLyBSZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgdmFsdWUgaWYgdGhpcyBpcyBpbml0aWFsaXplZCwgb3RoZXJ3aXNlLAotICAgIC8vIHJldHVybnMgTlVMTC4KLSAgICAvLyBOby10aHJvdwotICAgIHBvaW50ZXJfY29uc3RfdHlwZSBnZXRfcHRyKCkgY29uc3QgeyByZXR1cm4gbV9pbml0aWFsaXplZCA/IGdldF9wdHJfaW1wbCgpIDogMCA7IH0KLSAgICBwb2ludGVyX3R5cGUgICAgICAgZ2V0X3B0cigpICAgICAgIHsgcmV0dXJuIG1faW5pdGlhbGl6ZWQgPyBnZXRfcHRyX2ltcGwoKSA6IDAgOyB9Ci0KLSAgICBib29sIGlzX2luaXRpYWxpemVkKCkgY29uc3QgeyByZXR1cm4gbV9pbml0aWFsaXplZCA7IH0KLQotICBwcm90ZWN0ZWQgOgotCi0gICAgdm9pZCBjb25zdHJ1Y3QgKCBhcmd1bWVudF90eXBlIHZhbCApCi0gICAgIHsKLSAgICAgICBuZXcgKG1fc3RvcmFnZS5hZGRyZXNzKCkpIGludGVybmFsX3R5cGUodmFsKSA7Ci0gICAgICAgbV9pbml0aWFsaXplZCA9IHRydWUgOwotICAgICB9Ci0KLSNpZm5kZWYgTkROQk9PU1RfT1BUSU9OQUxfTk9fSU5QTEFDRV9GQUNUT1JZX1NVUFBPUlQKLSAgICAvLyBDb25zdHJ1Y3RzIGluLXBsYWNlIHVzaW5nIHRoZSBnaXZlbiBmYWN0b3J5Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRXhwcj4KLSAgICB2b2lkIGNvbnN0cnVjdCAoIEV4cHIgY29uc3QmIGZhY3RvcnksIGluX3BsYWNlX2ZhY3RvcnlfYmFzZSBjb25zdCogKQotICAgICB7Ci0gICAgICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCAoIDo6bmRuYm9vc3Q6Om1wbDo6bm90Xzxpc19yZWZlcmVuY2VfcHJlZGljYXRlPjo6dmFsdWUgKSA7Ci0gICAgICAgbmRuYm9vc3Rfb3B0aW9uYWxfZGV0YWlsOjpjb25zdHJ1Y3Q8dmFsdWVfdHlwZT4oZmFjdG9yeSwgbV9zdG9yYWdlLmFkZHJlc3MoKSk7Ci0gICAgICAgbV9pbml0aWFsaXplZCA9IHRydWUgOwotICAgICB9Ci0KLSAgICAvLyBDb25zdHJ1Y3RzIGluLXBsYWNlIHVzaW5nIHRoZSBnaXZlbiB0eXBlZCBmYWN0b3J5Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRXhwcj4KLSAgICB2b2lkIGNvbnN0cnVjdCAoIEV4cHIgY29uc3QmIGZhY3RvcnksIHR5cGVkX2luX3BsYWNlX2ZhY3RvcnlfYmFzZSBjb25zdCogKQotICAgICB7Ci0gICAgICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCAoIDo6bmRuYm9vc3Q6Om1wbDo6bm90Xzxpc19yZWZlcmVuY2VfcHJlZGljYXRlPjo6dmFsdWUgKSA7Ci0gICAgICAgZmFjdG9yeS5hcHBseShtX3N0b3JhZ2UuYWRkcmVzcygpKSA7Ci0gICAgICAgbV9pbml0aWFsaXplZCA9IHRydWUgOwotICAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBFeHByPgotICAgIHZvaWQgYXNzaWduX2V4cHJfdG9faW5pdGlhbGl6ZWQgKCBFeHByIGNvbnN0JiBmYWN0b3J5LCBpbl9wbGFjZV9mYWN0b3J5X2Jhc2UgY29uc3QqIHRhZyApCi0gICAgIHsKLSAgICAgICBkZXN0cm95KCk7Ci0gICAgICAgY29uc3RydWN0KGZhY3RvcnksdGFnKTsKLSAgICAgfQotCi0gICAgLy8gQ29uc3RydWN0cyBpbi1wbGFjZSB1c2luZyB0aGUgZ2l2ZW4gdHlwZWQgZmFjdG9yeQotICAgIHRlbXBsYXRlPGNsYXNzIEV4cHI+Ci0gICAgdm9pZCBhc3NpZ25fZXhwcl90b19pbml0aWFsaXplZCAoIEV4cHIgY29uc3QmIGZhY3RvcnksIHR5cGVkX2luX3BsYWNlX2ZhY3RvcnlfYmFzZSBjb25zdCogdGFnICkKLSAgICAgewotICAgICAgIGRlc3Ryb3koKTsKLSAgICAgICBjb25zdHJ1Y3QoZmFjdG9yeSx0YWcpOwotICAgICB9Ci0jZW5kaWYKLQotICAgIC8vIENvbnN0cnVjdHMgdXNpbmcgYW55IGV4cHJlc3Npb24gaW1wbGljaXRlbHkgY29udmVydGlibGUgdG8gdGhlIHNpbmdsZSBhcmd1bWVudAotICAgIC8vIG9mIGEgb25lLWFyZ3VtZW50IFQgY29uc3RydWN0b3IuCi0gICAgLy8gQ29udmVydGluZyBjb25zdHJ1Y3Rpb25zIG9mIG9wdGlvbmFsPFQ+IGZyb20gb3B0aW9uYWw8VT4gdXNlcyB0aGlzIGZ1bmN0aW9uIHdpdGgKLSAgICAvLyAnRXhwcicgYmVpbmcgb2YgdHlwZSAnVScgYW5kIHJlbHlpbmcgb24gYSBjb252ZXJ0aW5nIGNvbnN0cnVjdG9yIG9mIFQgZnJvbSBVLgotICAgIHRlbXBsYXRlPGNsYXNzIEV4cHI+Ci0gICAgdm9pZCBjb25zdHJ1Y3QgKCBFeHByIGNvbnN0JiBleHByLCB2b2lkIGNvbnN0KiApCi0gICAgIHsKLSAgICAgICBuZXcgKG1fc3RvcmFnZS5hZGRyZXNzKCkpIGludGVybmFsX3R5cGUoZXhwcikgOwotICAgICAgIG1faW5pdGlhbGl6ZWQgPSB0cnVlIDsKLSAgICAgfQotCi0gICAgLy8gQXNzaWducyB1c2luZyBhIGZvcm0gYW55IGV4cHJlc3Npb24gaW1wbGljaXRlbHkgY29udmVydGlibGUgdG8gdGhlIHNpbmdsZSBhcmd1bWVudAotICAgIC8vIG9mIGEgVCdzIGFzc2lnbm1lbnQgb3BlcmF0b3IuCi0gICAgLy8gQ29udmVydGluZyBhc3NpZ25tZW50cyBvZiBvcHRpb25hbDxUPiBmcm9tIG9wdGlvbmFsPFU+IHVzZXMgdGhpcyBmdW5jdGlvbiB3aXRoCi0gICAgLy8gJ0V4cHInIGJlaW5nIG9mIHR5cGUgJ1UnIGFuZCByZWx5aW5nIG9uIGEgY29udmVydGluZyBhc3NpZ25tZW50IG9mIFQgZnJvbSBVLgotICAgIHRlbXBsYXRlPGNsYXNzIEV4cHI+Ci0gICAgdm9pZCBhc3NpZ25fZXhwcl90b19pbml0aWFsaXplZCAoIEV4cHIgY29uc3QmIGV4cHIsIHZvaWQgY29uc3QqICkKLSAgICAgewotICAgICAgIGFzc2lnbl92YWx1ZShleHByLCBpc19yZWZlcmVuY2VfcHJlZGljYXRlKCkpOwotICAgICB9Ci0KLSNpZmRlZiBORE5CT09TVF9PUFRJT05BTF9XRUFLX09WRVJMT0FEX1JFU09MVVRJT04KLSAgICAvLyBCQ0I1LjY0IChhbmQgcHJvYmFibHkgbG93ZXIgdmVyc2lvbnMpIHdvcmthcm91bmQuCi0gICAgLy8gICBUaGUgaW4tcGxhY2UgZmFjdG9yaWVzIGFyZSBzdXBwb3J0ZWQgYnkgbWVhbnMgb2YgY2F0Y2gtYWxsIGNvbnN0cnVjdG9ycwotICAgIC8vICAgYW5kIGFzc2lnbm1lbnQgb3BlcmF0b3JzICh0aGUgZnVuY3Rpb25zIGFyZSBwYXJhbWV0ZXJpemVkIGluIHRlcm1zIG9mCi0gICAgLy8gICBhbiBhcmJpdHJhcnkgJ0V4cHInIHR5cGUpCi0gICAgLy8gICBUaGlzIGNvbXBpbGVyIGluY29ycmVjdGx5IHJlc29sdmVzIHRoZSBvdmVybG9hZCBzZXQgYW5kIHNpbmtzIG9wdGlvbmFsPFQ+IGFuZCBvcHRpb25hbDxVPgotICAgIC8vICAgdG8gdGhlICdFeHByJy10YWtpbmcgZnVuY3Rpb25zIGV2ZW4gdGhvdWdoIGV4cGxpY2l0IG92ZXJsb2FkcyBhcmUgcHJlc2VudCBmb3IgdGhlbS4KLSAgICAvLyAgIFRodXMsIHRoZSBmb2xsb3dpbmcgb3ZlcmxvYWQgaXMgbmVlZGVkIHRvIHByb3Blcmx5IGhhbmRsZSB0aGUgY2FzZSB3aGVuIHRoZSAnbGhzJwotICAgIC8vICAgaXMgYW5vdGhlciBvcHRpb25hbC4KLSAgICAvLwotICAgIC8vIEZvciBWQzw9NzAgY29tcGlsZXJzIHRoaXMgd29ya2Fyb3VuZCBkb3Nlbid0IHdvcmsgYmVjYXN1ZSB0aGUgY29tbnBpbGVyIGlzc3VlcyBhbmQgZXJyb3IKLSAgICAvLyBpbnN0ZWFkIG9mIGNob29zaW5nIHRoZSB3cm9uZyBvdmVybG9hZAotICAgIC8vCi0gICAgLy8gTm90aWNlIHRoYXQgJ0V4cHInIHdpbGwgYmUgb3B0aW9uYWw8VD4gb3Igb3B0aW9uYWw8VT4gKGJ1dCBub3Qgb3B0aW9uYWxfYmFzZTwuLj4pCi0gICAgdGVtcGxhdGU8Y2xhc3MgRXhwcj4KLSAgICB2b2lkIGNvbnN0cnVjdCAoIEV4cHIgY29uc3QmIGV4cHIsIG9wdGlvbmFsX3RhZyBjb25zdCogKQotICAgICB7Ci0gICAgICAgaWYgKCBleHByLmlzX2luaXRpYWxpemVkKCkgKQotICAgICAgIHsKLSAgICAgICAgIC8vIEFuIGV4Y2VwdGlvbiBjYW4gYmUgdGhyb3duIGhlcmUuCi0gICAgICAgICAvLyBJdCBpdCBoYXBwZW5zLCBUSElTIHdpbGwgYmUgbGVmdCB1bmluaXRpYWxpemVkLgotICAgICAgICAgbmV3IChtX3N0b3JhZ2UuYWRkcmVzcygpKSBpbnRlcm5hbF90eXBlKGV4cHIuZ2V0KCkpIDsKLSAgICAgICAgIG1faW5pdGlhbGl6ZWQgPSB0cnVlIDsKLSAgICAgICB9Ci0gICAgIH0KLSNlbmRpZgotCi0gICAgdm9pZCBhc3NpZ25fdmFsdWUgKCBhcmd1bWVudF90eXBlIHZhbCwgaXNfbm90X3JlZmVyZW5jZV90YWcgKSB7IGdldF9pbXBsKCkgPSB2YWw7IH0KLSAgICB2b2lkIGFzc2lnbl92YWx1ZSAoIGFyZ3VtZW50X3R5cGUgdmFsLCBpc19yZWZlcmVuY2VfdGFnICAgICApIHsgY29uc3RydWN0KHZhbCk7IH0KLQotICAgIHZvaWQgZGVzdHJveSgpCi0gICAgewotICAgICAgaWYgKCBtX2luaXRpYWxpemVkICkKLSAgICAgICAgZGVzdHJveV9pbXBsKGlzX3JlZmVyZW5jZV9wcmVkaWNhdGUoKSkgOwotICAgIH0KLQotICAgIHVuc3BlY2lmaWVkX2Jvb2xfdHlwZSBzYWZlX2Jvb2woKSBjb25zdCB7IHJldHVybiBtX2luaXRpYWxpemVkID8gJnRoaXNfdHlwZTo6aXNfaW5pdGlhbGl6ZWQgOiAwIDsgfQotCi0gICAgcmVmZXJlbmNlX2NvbnN0X3R5cGUgZ2V0X2ltcGwoKSBjb25zdCB7IHJldHVybiBkZXJlZmVyZW5jZShnZXRfb2JqZWN0KCksIGlzX3JlZmVyZW5jZV9wcmVkaWNhdGUoKSApIDsgfQotICAgIHJlZmVyZW5jZV90eXBlICAgICAgIGdldF9pbXBsKCkgICAgICAgeyByZXR1cm4gZGVyZWZlcmVuY2UoZ2V0X29iamVjdCgpLCBpc19yZWZlcmVuY2VfcHJlZGljYXRlKCkgKSA7IH0KLQotICAgIHBvaW50ZXJfY29uc3RfdHlwZSBnZXRfcHRyX2ltcGwoKSBjb25zdCB7IHJldHVybiBjYXN0X3B0cihnZXRfb2JqZWN0KCksIGlzX3JlZmVyZW5jZV9wcmVkaWNhdGUoKSApIDsgfQotICAgIHBvaW50ZXJfdHlwZSAgICAgICBnZXRfcHRyX2ltcGwoKSAgICAgICB7IHJldHVybiBjYXN0X3B0cihnZXRfb2JqZWN0KCksIGlzX3JlZmVyZW5jZV9wcmVkaWNhdGUoKSApIDsgfQotCi0gIHByaXZhdGUgOgotCi0gICAgLy8gaW50ZXJuYWxfdHlwZSBjYW4gYmUgZWl0aGVyIFQgb3IgcmVmZXJlbmNlX2NvbnRlbnQ8VD4KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX09QVElPTkFMX0RFVEFJTF9VU0VfQVRUUklCVVRFX01BWV9BTElBUykKLSAgICAvLyBUaGlzIHdvcmthcm91bmQgaXMgc3VwcG9zZWQgdG8gc2lsZW5jZSBHQ0Mgd2FybmluZ3MgYWJvdXQgYnJva2VuIHN0cmljdCBhbGlhc2luZyBydWxlcwotICAgIGludGVybmFsX3R5cGUgY29uc3QqIGdldF9vYmplY3QoKSBjb25zdAotICAgIHsKLSAgICAgICAgdW5pb24geyB2b2lkIGNvbnN0KiBhcF9wdm9pZDsgaW50ZXJuYWxfdHlwZSBjb25zdCogYXNfcHR5cGU7IH0gY2FzdGVyID0geyBtX3N0b3JhZ2UuYWRkcmVzcygpIH07Ci0gICAgICAgIHJldHVybiBjYXN0ZXIuYXNfcHR5cGU7Ci0gICAgfQotICAgIGludGVybmFsX3R5cGUgKiAgICAgIGdldF9vYmplY3QoKQotICAgIHsKLSAgICAgICAgdW5pb24geyB2b2lkKiBhcF9wdm9pZDsgaW50ZXJuYWxfdHlwZSogYXNfcHR5cGU7IH0gY2FzdGVyID0geyBtX3N0b3JhZ2UuYWRkcmVzcygpIH07Ci0gICAgICAgIHJldHVybiBjYXN0ZXIuYXNfcHR5cGU7Ci0gICAgfQotI2Vsc2UKLSAgICBpbnRlcm5hbF90eXBlIGNvbnN0KiBnZXRfb2JqZWN0KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8aW50ZXJuYWxfdHlwZSBjb25zdCo+KG1fc3RvcmFnZS5hZGRyZXNzKCkpOyB9Ci0gICAgaW50ZXJuYWxfdHlwZSAqICAgICAgZ2V0X29iamVjdCgpICAgICAgIHsgcmV0dXJuIHN0YXRpY19jYXN0PGludGVybmFsX3R5cGUgKj4gICAgIChtX3N0b3JhZ2UuYWRkcmVzcygpKTsgfQotI2VuZGlmCi0KLSAgICAvLyByZWZlcmVuY2VfY29udGVudDxUPiBsYWNrcyBhbiBpbXBsaWNpdCBjb252ZXJzaW9uIHRvIFQmLCBzbyB0aGUgZm9sbG93aW5nIGlzIG5lZWRlZCB0byBvYnRhaW4gYSBwcm9wZXIgcmVmZXJlbmNlLgotICAgIHJlZmVyZW5jZV9jb25zdF90eXBlIGRlcmVmZXJlbmNlKCBpbnRlcm5hbF90eXBlIGNvbnN0KiBwLCBpc19ub3RfcmVmZXJlbmNlX3RhZyApIGNvbnN0IHsgcmV0dXJuICpwIDsgfQotICAgIHJlZmVyZW5jZV90eXBlICAgICAgIGRlcmVmZXJlbmNlKCBpbnRlcm5hbF90eXBlKiAgICAgICBwLCBpc19ub3RfcmVmZXJlbmNlX3RhZyApICAgICAgIHsgcmV0dXJuICpwIDsgfQotICAgIHJlZmVyZW5jZV9jb25zdF90eXBlIGRlcmVmZXJlbmNlKCBpbnRlcm5hbF90eXBlIGNvbnN0KiBwLCBpc19yZWZlcmVuY2VfdGFnICAgICApIGNvbnN0IHsgcmV0dXJuIHAtPmdldCgpIDsgfQotICAgIHJlZmVyZW5jZV90eXBlICAgICAgIGRlcmVmZXJlbmNlKCBpbnRlcm5hbF90eXBlKiAgICAgICBwLCBpc19yZWZlcmVuY2VfdGFnICAgICApICAgICAgIHsgcmV0dXJuIHAtPmdldCgpIDsgfQotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU4MSkpCi0gICAgdm9pZCBkZXN0cm95X2ltcGwgKCBpc19ub3RfcmVmZXJlbmNlX3RhZyApIHsgZ2V0X3B0cl9pbXBsKCktPmludGVybmFsX3R5cGU6On5pbnRlcm5hbF90eXBlKCkgOyBtX2luaXRpYWxpemVkID0gZmFsc2UgOyB9Ci0jZWxzZQotICAgIHZvaWQgZGVzdHJveV9pbXBsICggaXNfbm90X3JlZmVyZW5jZV90YWcgKSB7IGdldF9wdHJfaW1wbCgpLT5UOjp+VCgpIDsgbV9pbml0aWFsaXplZCA9IGZhbHNlIDsgfQotI2VuZGlmCi0KLSAgICB2b2lkIGRlc3Ryb3lfaW1wbCAoIGlzX3JlZmVyZW5jZV90YWcgICAgICkgeyBtX2luaXRpYWxpemVkID0gZmFsc2UgOyB9Ci0KLSAgICAvLyBJZiBUIGlzIG9mIHJlZmVyZW5jZSB0eXBlLCB0cnlpbmcgdG8gZ2V0IGEgcG9pbnRlciB0byB0aGUgaGVsZCB2YWx1ZSBtdXN0IHJlc3VsdCBpbiBhIGNvbXBpbGUtdGltZSBlcnJvci4KLSAgICAvLyBEZWNlbnQgY29tcGlsZXJzIHNob3VsZCBkaXNhbGxvdyBjb252ZXJzaW9ucyBmcm9tIHJlZmVyZW5jZV9jb250ZW50PFQ+KiB0byBUKiwgYnV0IGp1c3QgaW4gY2FzZSwKLSAgICAvLyB0aGUgZm9sbG93aW5nIG9sdmVybG9hZHMgYXJlIHVzZWQgdG8gZmlsdGVyIG91dCB0aGUgY2FzZSBhbmQgZ3VhcmFudGVlIGFuIGVycm9yIGluIGNhc2Ugb2YgVCBiZWluZyBhIHJlZmVyZW5jZS4KLSAgICBwb2ludGVyX2NvbnN0X3R5cGUgY2FzdF9wdHIoIGludGVybmFsX3R5cGUgY29uc3QqIHAsIGlzX25vdF9yZWZlcmVuY2VfdGFnICkgY29uc3QgeyByZXR1cm4gcCA7IH0KLSAgICBwb2ludGVyX3R5cGUgICAgICAgY2FzdF9wdHIoIGludGVybmFsX3R5cGUgKiAgICAgIHAsIGlzX25vdF9yZWZlcmVuY2VfdGFnICkgICAgICAgeyByZXR1cm4gcCA7IH0KLSAgICBwb2ludGVyX2NvbnN0X3R5cGUgY2FzdF9wdHIoIGludGVybmFsX3R5cGUgY29uc3QqIHAsIGlzX3JlZmVyZW5jZV90YWcgICAgICkgY29uc3QgeyByZXR1cm4gJnAtPmdldCgpIDsgfQotICAgIHBvaW50ZXJfdHlwZSAgICAgICBjYXN0X3B0ciggaW50ZXJuYWxfdHlwZSAqICAgICAgcCwgaXNfcmVmZXJlbmNlX3RhZyAgICAgKSAgICAgICB7IHJldHVybiAmcC0+Z2V0KCkgOyB9Ci0KLSAgICBib29sIG1faW5pdGlhbGl6ZWQgOwotICAgIHN0b3JhZ2VfdHlwZSBtX3N0b3JhZ2UgOwotfSA7Ci0KLX0gLy8gbmFtZXNwYWNlIG9wdGlvbmFsX2RldGFpbAotCi10ZW1wbGF0ZTxjbGFzcyBUPgotY2xhc3Mgb3B0aW9uYWwgOiBwdWJsaWMgb3B0aW9uYWxfZGV0YWlsOjpvcHRpb25hbF9iYXNlPFQ+Ci17Ci0gICAgdHlwZWRlZiBvcHRpb25hbF9kZXRhaWw6Om9wdGlvbmFsX2Jhc2U8VD4gYmFzZSA7Ci0KLSAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgYmFzZTo6dW5zcGVjaWZpZWRfYm9vbF90eXBlICB1bnNwZWNpZmllZF9ib29sX3R5cGUgOwotCi0gIHB1YmxpYyA6Ci0KLSAgICB0eXBlZGVmIG9wdGlvbmFsPFQ+IHRoaXNfdHlwZSA7Ci0KLSAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgYmFzZTo6dmFsdWVfdHlwZSAgICAgICAgICAgdmFsdWVfdHlwZSA7Ci0gICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGJhc2U6OnJlZmVyZW5jZV90eXBlICAgICAgIHJlZmVyZW5jZV90eXBlIDsKLSAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgYmFzZTo6cmVmZXJlbmNlX2NvbnN0X3R5cGUgcmVmZXJlbmNlX2NvbnN0X3R5cGUgOwotICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBiYXNlOjpwb2ludGVyX3R5cGUgICAgICAgICBwb2ludGVyX3R5cGUgOwotICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBiYXNlOjpwb2ludGVyX2NvbnN0X3R5cGUgICBwb2ludGVyX2NvbnN0X3R5cGUgOwotICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBiYXNlOjphcmd1bWVudF90eXBlICAgICAgICBhcmd1bWVudF90eXBlIDsKLQotICAgIC8vIENyZWF0ZXMgYW4gb3B0aW9uYWw8VD4gdW5pbml0aWFsaXplZC4KLSAgICAvLyBOby10aHJvdwotICAgIG9wdGlvbmFsKCkgOiBiYXNlKCkge30KLQotICAgIC8vIENyZWF0ZXMgYW4gb3B0aW9uYWw8VD4gdW5pbml0aWFsaXplZC4KLSAgICAvLyBOby10aHJvdwotICAgIG9wdGlvbmFsKCBub25lX3Qgbm9uZV8gKSA6IGJhc2Uobm9uZV8pIHt9Ci0KLSAgICAvLyBDcmVhdGVzIGFuIG9wdGlvbmFsPFQ+IGluaXRpYWxpemVkIHdpdGggJ3ZhbCcuCi0gICAgLy8gQ2FuIHRocm93IGlmIFQ6OlQoVCBjb25zdCYpIGRvZXMKLSAgICBvcHRpb25hbCAoIGFyZ3VtZW50X3R5cGUgdmFsICkgOiBiYXNlKHZhbCkge30KLQotICAgIC8vIENyZWF0ZXMgYW4gb3B0aW9uYWw8VD4gaW5pdGlhbGl6ZWQgd2l0aCAndmFsJyBJRkYgY29uZCBpcyB0cnVlLCBvdGhlcndpc2UgY3JlYXRlcyBhbiB1bmluaXRpYWxpemVkIG9wdGlvbmFsLgotICAgIC8vIENhbiB0aHJvdyBpZiBUOjpUKFQgY29uc3QmKSBkb2VzCi0gICAgb3B0aW9uYWwgKCBib29sIGNvbmQsIGFyZ3VtZW50X3R5cGUgdmFsICkgOiBiYXNlKGNvbmQsdmFsKSB7fQotCi0jaWZuZGVmIE5ETkJPT1NUX09QVElPTkFMX05PX0NPTlZFUlRJTkdfQ09QWV9DVE9SCi0gICAgLy8gTk9URTogTVNWQyBuZWVkcyB0ZW1wbGF0ZWQgdmVyc2lvbnMgZmlyc3QKLQotICAgIC8vIENyZWF0ZXMgYSBkZWVwIGNvcHkgb2YgYW5vdGhlciBjb252ZXJ0aWJsZSBvcHRpb25hbDxVPgotICAgIC8vIFJlcXVpcmVzIGEgdmFsaWQgY29udmVyc2lvbiBmcm9tIFUgdG8gVC4KLSAgICAvLyBDYW4gdGhyb3cgaWYgVDo6VChVIGNvbnN0JikgZG9lcwotICAgIHRlbXBsYXRlPGNsYXNzIFU+Ci0gICAgZXhwbGljaXQgb3B0aW9uYWwgKCBvcHRpb25hbDxVPiBjb25zdCYgcmhzICkKLSAgICAgIDoKLSAgICAgIGJhc2UoKQotICAgIHsKLSAgICAgIGlmICggcmhzLmlzX2luaXRpYWxpemVkKCkgKQotICAgICAgICB0aGlzLT5jb25zdHJ1Y3QocmhzLmdldCgpKTsKLSAgICB9Ci0jZW5kaWYKLQotI2lmbmRlZiBORE5CT09TVF9PUFRJT05BTF9OT19JTlBMQUNFX0ZBQ1RPUllfU1VQUE9SVAotICAgIC8vIENyZWF0ZXMgYW4gb3B0aW9uYWw8VD4gd2l0aCBhbiBleHByZXNzaW9uIHdoaWNoIGNhbiBiZSBlaXRoZXIKLSAgICAvLyAgKGEpIEFuIGluc3RhbmNlIG9mIEluUGxhY2VGYWN0b3J5IChpLmUuIGluX3BsYWNlKGEsYiwuLi4sbik7Ci0gICAgLy8gIChiKSBBbiBpbnN0YW5jZSBvZiBUeXBlZEluUGxhY2VGYWN0b3J5ICggaS5lLiBpbl9wbGFjZTxUPihhLGIsLi4uLG4pOwotICAgIC8vICAoYykgQW55IGV4cHJlc3Npb24gaW1wbGljaXRlbHkgY29udmVydGlibGUgdG8gdGhlIHNpbmdsZSB0eXBlCi0gICAgLy8gICAgICBvZiBhIG9uZS1hcmd1bWVudCBUJ3MgY29uc3RydWN0b3IuCi0gICAgLy8gIChkKikgV2VhayBjb21waWxlcnMgKEJDQikgbWlnaHQgYWxzbyByZXNvbHZlZCBFeHByIGFzIG9wdGlvbmFsPFQ+IGFuZCBvcHRpb25hbDxVPgotICAgIC8vICAgICAgIGV2ZW4gdGhvdWdoIGV4cGxpY2l0IG92ZXJsb2FkcyBhcmUgcHJlc2VudCBmb3IgdGhlc2UuCi0gICAgLy8gRGVwZW5kaW5nIG9uIHRoZSBhYm92ZSBzb21lIFQgY3RvciBpcyBjYWxsZWQuCi0gICAgLy8gQ2FuIHRocm93IGlzIHRoZSByZXNvbHZlZCBUIGN0b3IgdGhyb3dzLgotICAgIHRlbXBsYXRlPGNsYXNzIEV4cHI+Ci0gICAgZXhwbGljaXQgb3B0aW9uYWwgKCBFeHByIGNvbnN0JiBleHByICkgOiBiYXNlKGV4cHIsbmRuYm9vc3Q6OmFkZHJlc3NvZihleHByKSkge30KLSNlbmRpZgotCi0gICAgLy8gQ3JlYXRlcyBhIGRlZXAgY29weSBvZiBhbm90aGVyIG9wdGlvbmFsPFQ+Ci0gICAgLy8gQ2FuIHRocm93IGlmIFQ6OlQoVCBjb25zdCYpIGRvZXMKLSAgICBvcHRpb25hbCAoIG9wdGlvbmFsIGNvbnN0JiByaHMgKSA6IGJhc2UoIHN0YXRpY19jYXN0PGJhc2UgY29uc3QmPihyaHMpICkge30KLQotICAgLy8gTm8tdGhyb3cgKGFzc3VtaW5nIFQ6On5UKCkgZG9lc24ndCkKLSAgICB+b3B0aW9uYWwoKSB7fQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfT1BUSU9OQUxfTk9fSU5QTEFDRV9GQUNUT1JZX1NVUFBPUlQpICYmICFkZWZpbmVkKE5ETkJPT1NUX09QVElPTkFMX1dFQUtfT1ZFUkxPQURfUkVTT0xVVElPTikKLSAgICAvLyBBc3NpZ25zIGZyb20gYW4gZXhwcmVzc2lvbi4gU2VlIGNvcnJlc3BvbmRpbmcgY29uc3RydWN0b3IuCi0gICAgLy8gQmFzaWMgR3VhcmFudGVlOiBJZiB0aGUgcmVzb2x2ZWQgVCBjdG9yIHRocm93cywgdGhpcyBpcyBsZWZ0IFVOSU5JVElBTElaRUQKLSAgICB0ZW1wbGF0ZTxjbGFzcyBFeHByPgotICAgIG9wdGlvbmFsJiBvcGVyYXRvcj0gKCBFeHByIGNvbnN0JiBleHByICkKLSAgICAgIHsKLSAgICAgICAgdGhpcy0+YXNzaWduX2V4cHIoZXhwcixuZG5ib29zdDo6YWRkcmVzc29mKGV4cHIpKTsKLSAgICAgICAgcmV0dXJuICp0aGlzIDsKLSAgICAgIH0KLSNlbmRpZgotCi0KLSNpZm5kZWYgTkROQk9PU1RfT1BUSU9OQUxfTk9fQ09OVkVSVElOR19BU1NJR05NRU5UCi0gICAgLy8gQXNzaWducyBmcm9tIGFub3RoZXIgY29udmVydGlibGUgb3B0aW9uYWw8VT4gKGNvbnZlcnRzICYmIGRlZXAtY29waWVzIHRoZSByaHMgdmFsdWUpCi0gICAgLy8gUmVxdWlyZXMgYSB2YWxpZCBjb252ZXJzaW9uIGZyb20gVSB0byBULgotICAgIC8vIEJhc2ljIEd1YXJhbnRlZTogSWYgVDo6VCggVSBjb25zdCYgKSB0aHJvd3MsIHRoaXMgaXMgbGVmdCBVTklOSVRJQUxJWkVECi0gICAgdGVtcGxhdGU8Y2xhc3MgVT4KLSAgICBvcHRpb25hbCYgb3BlcmF0b3I9ICggb3B0aW9uYWw8VT4gY29uc3QmIHJocyApCi0gICAgICB7Ci0gICAgICAgIHRoaXMtPmFzc2lnbihyaHMpOwotICAgICAgICByZXR1cm4gKnRoaXMgOwotICAgICAgfQotI2VuZGlmCi0KLSAgICAvLyBBc3NpZ25zIGZyb20gYW5vdGhlciBvcHRpb25hbDxUPiAoZGVlcC1jb3BpZXMgdGhlIHJocyB2YWx1ZSkKLSAgICAvLyBCYXNpYyBHdWFyYW50ZWU6IElmIFQ6OlQoIFQgY29uc3QmICkgdGhyb3dzLCB0aGlzIGlzIGxlZnQgVU5JTklUSUFMSVpFRAotICAgIC8vICAoTk9URTogT24gQkNCLCB0aGlzIG9wZXJhdG9yIGlzIG5vdCBhY3R1YWxseSBjYWxsZWQgYW5kIGxlZnQgaXMgbGVmdCBVTk1PRElGSUVEIGluIGNhc2Ugb2YgYSB0aHJvdykKLSAgICBvcHRpb25hbCYgb3BlcmF0b3I9ICggb3B0aW9uYWwgY29uc3QmIHJocyApCi0gICAgICB7Ci0gICAgICAgIHRoaXMtPmFzc2lnbiggc3RhdGljX2Nhc3Q8YmFzZSBjb25zdCY+KHJocykgKSA7Ci0gICAgICAgIHJldHVybiAqdGhpcyA7Ci0gICAgICB9Ci0KLSAgICAvLyBBc3NpZ25zIGZyb20gYSBUIChkZWVwLWNvcGllcyB0aGUgcmhzIHZhbHVlKQotICAgIC8vIEJhc2ljIEd1YXJhbnRlZTogSWYgVDo6KCBUIGNvbnN0JiApIHRocm93cywgdGhpcyBpcyBsZWZ0IFVOSU5JVElBTElaRUQKLSAgICBvcHRpb25hbCYgb3BlcmF0b3I9ICggYXJndW1lbnRfdHlwZSB2YWwgKQotICAgICAgewotICAgICAgICB0aGlzLT5hc3NpZ24oIHZhbCApIDsKLSAgICAgICAgcmV0dXJuICp0aGlzIDsKLSAgICAgIH0KLQotICAgIC8vIEFzc2lnbnMgZnJvbSBhICJub25lIgotICAgIC8vIFdoaWNoIGRlc3Ryb3lzIHRoZSBjdXJyZW50IHZhbHVlLCBpZiBhbnksIGxlYXZpbmcgdGhpcyBVTklOSVRJQUxJWkVECi0gICAgLy8gTm8tdGhyb3cgKGFzc3VtaW5nIFQ6On5UKCkgZG9lc24ndCkKLSAgICBvcHRpb25hbCYgb3BlcmF0b3I9ICggbm9uZV90IG5vbmVfICkKLSAgICAgIHsKLSAgICAgICAgdGhpcy0+YXNzaWduKCBub25lXyApIDsKLSAgICAgICAgcmV0dXJuICp0aGlzIDsKLSAgICAgIH0KLQotICAgIHZvaWQgc3dhcCggb3B0aW9uYWwgJiBhcmcgKQotICAgICAgewotICAgICAgICAvLyBhbGxvdyBmb3IgS29lbmlnIGxvb2t1cAotICAgICAgICB1c2luZyBuZG5ib29zdDo6c3dhcDsKLSAgICAgICAgc3dhcCgqdGhpcywgYXJnKTsKLSAgICAgIH0KLQotCi0gICAgLy8gUmV0dXJucyBhIHJlZmVyZW5jZSB0byB0aGUgdmFsdWUgaWYgdGhpcyBpcyBpbml0aWFsaXplZCwgb3RoZXJ3aXNlLAotICAgIC8vIHRoZSBiZWhhdmlvdXIgaXMgVU5ERUZJTkVECi0gICAgLy8gTm8tdGhyb3cKLSAgICByZWZlcmVuY2VfY29uc3RfdHlwZSBnZXQoKSBjb25zdCB7IE5ETkJPT1NUX0FTU0VSVCh0aGlzLT5pc19pbml0aWFsaXplZCgpKSA7IHJldHVybiB0aGlzLT5nZXRfaW1wbCgpOyB9Ci0gICAgcmVmZXJlbmNlX3R5cGUgICAgICAgZ2V0KCkgICAgICAgeyBORE5CT09TVF9BU1NFUlQodGhpcy0+aXNfaW5pdGlhbGl6ZWQoKSkgOyByZXR1cm4gdGhpcy0+Z2V0X2ltcGwoKTsgfQotCi0gICAgLy8gUmV0dXJucyBhIGNvcHkgb2YgdGhlIHZhbHVlIGlmIHRoaXMgaXMgaW5pdGlhbGl6ZWQsICd2JyBvdGhlcndpc2UKLSAgICByZWZlcmVuY2VfY29uc3RfdHlwZSBnZXRfdmFsdWVfb3IgKCByZWZlcmVuY2VfY29uc3RfdHlwZSB2ICkgY29uc3QgeyByZXR1cm4gdGhpcy0+aXNfaW5pdGlhbGl6ZWQoKSA/IGdldCgpIDogdiA7IH0KLSAgICByZWZlcmVuY2VfdHlwZSAgICAgICBnZXRfdmFsdWVfb3IgKCByZWZlcmVuY2VfdHlwZSAgICAgICB2ICkgICAgICAgeyByZXR1cm4gdGhpcy0+aXNfaW5pdGlhbGl6ZWQoKSA/IGdldCgpIDogdiA7IH0KLQotICAgIC8vIFJldHVybnMgYSBwb2ludGVyIHRvIHRoZSB2YWx1ZSBpZiB0aGlzIGlzIGluaXRpYWxpemVkLCBvdGhlcndpc2UsCi0gICAgLy8gdGhlIGJlaGF2aW91ciBpcyBVTkRFRklORUQKLSAgICAvLyBOby10aHJvdwotICAgIHBvaW50ZXJfY29uc3RfdHlwZSBvcGVyYXRvci0+KCkgY29uc3QgeyBORE5CT09TVF9BU1NFUlQodGhpcy0+aXNfaW5pdGlhbGl6ZWQoKSkgOyByZXR1cm4gdGhpcy0+Z2V0X3B0cl9pbXBsKCkgOyB9Ci0gICAgcG9pbnRlcl90eXBlICAgICAgIG9wZXJhdG9yLT4oKSAgICAgICB7IE5ETkJPT1NUX0FTU0VSVCh0aGlzLT5pc19pbml0aWFsaXplZCgpKSA7IHJldHVybiB0aGlzLT5nZXRfcHRyX2ltcGwoKSA7IH0KLQotICAgIC8vIFJldHVybnMgYSByZWZlcmVuY2UgdG8gdGhlIHZhbHVlIGlmIHRoaXMgaXMgaW5pdGlhbGl6ZWQsIG90aGVyd2lzZSwKLSAgICAvLyB0aGUgYmVoYXZpb3VyIGlzIFVOREVGSU5FRAotICAgIC8vIE5vLXRocm93Ci0gICAgcmVmZXJlbmNlX2NvbnN0X3R5cGUgb3BlcmF0b3IgKigpIGNvbnN0IHsgcmV0dXJuIHRoaXMtPmdldCgpIDsgfQotICAgIHJlZmVyZW5jZV90eXBlICAgICAgIG9wZXJhdG9yICooKSAgICAgICB7IHJldHVybiB0aGlzLT5nZXQoKSA7IH0KLQotICAgIC8vIGltcGxpY2l0IGNvbnZlcnNpb24gdG8gImJvb2wiCi0gICAgLy8gTm8tdGhyb3cKLSAgICBvcGVyYXRvciB1bnNwZWNpZmllZF9ib29sX3R5cGUoKSBjb25zdCB7IHJldHVybiB0aGlzLT5zYWZlX2Jvb2woKSA7IH0KLQotICAgIC8vIFRoaXMgaXMgcHJvdmlkZWQgZm9yIHRob3NlIGNvbXBpbGVycyB3aGljaCBkb24ndCBsaWtlIHRoZSBjb252ZXJzaW9uIHRvIGJvb2wKLSAgICAvLyBvbiBzb21lIGNvbnRleHRzLgotICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIXRoaXMtPmlzX2luaXRpYWxpemVkKCkgOyB9Ci19IDsKLQotLy8gUmV0dXJucyBvcHRpb25hbDxUPih2KQotdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZQotb3B0aW9uYWw8VD4gbWFrZV9vcHRpb25hbCAoIFQgY29uc3QmIHYgICkKLXsKLSAgcmV0dXJuIG9wdGlvbmFsPFQ+KHYpOwotfQotCi0vLyBSZXR1cm5zIG9wdGlvbmFsPFQ+KGNvbmQsdikKLXRlbXBsYXRlPGNsYXNzIFQ+Ci1pbmxpbmUKLW9wdGlvbmFsPFQ+IG1ha2Vfb3B0aW9uYWwgKCBib29sIGNvbmQsIFQgY29uc3QmIHYgKQotewotICByZXR1cm4gb3B0aW9uYWw8VD4oY29uZCx2KTsKLX0KLQotLy8gUmV0dXJucyBhIHJlZmVyZW5jZSB0byB0aGUgdmFsdWUgaWYgdGhpcyBpcyBpbml0aWFsaXplZCwgb3RoZXJ3aXNlLCB0aGUgYmVoYXZpb3VyIGlzIFVOREVGSU5FRC4KLS8vIE5vLXRocm93Ci10ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lCi1ORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIG9wdGlvbmFsPFQ+OjpyZWZlcmVuY2VfY29uc3RfdHlwZQotZ2V0ICggb3B0aW9uYWw8VD4gY29uc3QmIG9wdCApCi17Ci0gIHJldHVybiBvcHQuZ2V0KCkgOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lCi1ORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIG9wdGlvbmFsPFQ+OjpyZWZlcmVuY2VfdHlwZQotZ2V0ICggb3B0aW9uYWw8VD4mIG9wdCApCi17Ci0gIHJldHVybiBvcHQuZ2V0KCkgOwotfQotCi0vLyBSZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgdmFsdWUgaWYgdGhpcyBpcyBpbml0aWFsaXplZCwgb3RoZXJ3aXNlLCByZXR1cm5zIE5VTEwuCi0vLyBOby10aHJvdwotdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZQotTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBvcHRpb25hbDxUPjo6cG9pbnRlcl9jb25zdF90eXBlCi1nZXQgKCBvcHRpb25hbDxUPiBjb25zdCogb3B0ICkKLXsKLSAgcmV0dXJuIG9wdC0+Z2V0X3B0cigpIDsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZQotTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBvcHRpb25hbDxUPjo6cG9pbnRlcl90eXBlCi1nZXQgKCBvcHRpb25hbDxUPiogb3B0ICkKLXsKLSAgcmV0dXJuIG9wdC0+Z2V0X3B0cigpIDsKLX0KLQotLy8gUmV0dXJucyBhIHJlZmVyZW5jZSB0byB0aGUgdmFsdWUgaWYgdGhpcyBpcyBpbml0aWFsaXplZCwgb3RoZXJ3aXNlLCB0aGUgYmVoYXZpb3VyIGlzIFVOREVGSU5FRC4KLS8vIE5vLXRocm93Ci10ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lCi1ORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIG9wdGlvbmFsPFQ+OjpyZWZlcmVuY2VfY29uc3RfdHlwZQotZ2V0X29wdGlvbmFsX3ZhbHVlX29yICggb3B0aW9uYWw8VD4gY29uc3QmIG9wdCwgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBvcHRpb25hbDxUPjo6cmVmZXJlbmNlX2NvbnN0X3R5cGUgdiApCi17Ci0gIHJldHVybiBvcHQuZ2V0X3ZhbHVlX29yKHYpIDsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZQotTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBvcHRpb25hbDxUPjo6cmVmZXJlbmNlX3R5cGUKLWdldF9vcHRpb25hbF92YWx1ZV9vciAoIG9wdGlvbmFsPFQ+JiBvcHQsIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgb3B0aW9uYWw8VD46OnJlZmVyZW5jZV90eXBlIHYgKQotewotICByZXR1cm4gb3B0LmdldF92YWx1ZV9vcih2KSA7Ci19Ci0KLS8vIFJldHVybnMgYSBwb2ludGVyIHRvIHRoZSB2YWx1ZSBpZiB0aGlzIGlzIGluaXRpYWxpemVkLCBvdGhlcndpc2UsIHJldHVybnMgTlVMTC4KLS8vIE5vLXRocm93Ci10ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lCi1ORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIG9wdGlvbmFsPFQ+Ojpwb2ludGVyX2NvbnN0X3R5cGUKLWdldF9wb2ludGVyICggb3B0aW9uYWw8VD4gY29uc3QmIG9wdCApCi17Ci0gIHJldHVybiBvcHQuZ2V0X3B0cigpIDsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZQotTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBvcHRpb25hbDxUPjo6cG9pbnRlcl90eXBlCi1nZXRfcG9pbnRlciAoIG9wdGlvbmFsPFQ+JiBvcHQgKQotewotICByZXR1cm4gb3B0LmdldF9wdHIoKSA7Ci19Ci0KLS8vIG9wdGlvbmFsJ3MgcmVsYXRpb25hbCBvcGVyYXRvcnMgKCA9PSwgIT0sIDwsID4sIDw9LCA+PSApIGhhdmUgZGVlcC1zZW1hbnRpY3MgKGNvbXBhcmUgdmFsdWVzKS4KLS8vIFdBUk5JTkc6IFRoaXMgaXMgVU5MSUtFIHBvaW50ZXJzLiBVc2UgZXF1YWxfcG9pbnRlZXMoKS9sZXNzX3BvaW50ZXNzKCkgaW4gZ2VuZXJpYyBjb2RlIGluc3RlYWQuCi0KLQotLy8KLS8vIG9wdGlvbmFsPFQ+IHZzIG9wdGlvbmFsPFQ+IGNhc2VzCi0vLwotCi10ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lCi1ib29sIG9wZXJhdG9yID09ICggb3B0aW9uYWw8VD4gY29uc3QmIHgsIG9wdGlvbmFsPFQ+IGNvbnN0JiB5ICkKLXsgcmV0dXJuIGVxdWFsX3BvaW50ZWVzKHgseSk7IH0KLQotdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZQotYm9vbCBvcGVyYXRvciA8ICggb3B0aW9uYWw8VD4gY29uc3QmIHgsIG9wdGlvbmFsPFQ+IGNvbnN0JiB5ICkKLXsgcmV0dXJuIGxlc3NfcG9pbnRlZXMoeCx5KTsgfQotCi10ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lCi1ib29sIG9wZXJhdG9yICE9ICggb3B0aW9uYWw8VD4gY29uc3QmIHgsIG9wdGlvbmFsPFQ+IGNvbnN0JiB5ICkKLXsgcmV0dXJuICEoIHggPT0geSApIDsgfQotCi10ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lCi1ib29sIG9wZXJhdG9yID4gKCBvcHRpb25hbDxUPiBjb25zdCYgeCwgb3B0aW9uYWw8VD4gY29uc3QmIHkgKQoteyByZXR1cm4geSA8IHggOyB9Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1pbmxpbmUKLWJvb2wgb3BlcmF0b3IgPD0gKCBvcHRpb25hbDxUPiBjb25zdCYgeCwgb3B0aW9uYWw8VD4gY29uc3QmIHkgKQoteyByZXR1cm4gISggeSA8IHggKSA7IH0KLQotdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZQotYm9vbCBvcGVyYXRvciA+PSAoIG9wdGlvbmFsPFQ+IGNvbnN0JiB4LCBvcHRpb25hbDxUPiBjb25zdCYgeSApCi17IHJldHVybiAhKCB4IDwgeSApIDsgfQotCi0KLS8vCi0vLyBvcHRpb25hbDxUPiB2cyBUIGNhc2VzCi0vLwotdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZQotYm9vbCBvcGVyYXRvciA9PSAoIG9wdGlvbmFsPFQ+IGNvbnN0JiB4LCBUIGNvbnN0JiB5ICkKLXsgcmV0dXJuIGVxdWFsX3BvaW50ZWVzKHgsIG9wdGlvbmFsPFQ+KHkpKTsgfQotCi10ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lCi1ib29sIG9wZXJhdG9yIDwgKCBvcHRpb25hbDxUPiBjb25zdCYgeCwgVCBjb25zdCYgeSApCi17IHJldHVybiBsZXNzX3BvaW50ZWVzKHgsIG9wdGlvbmFsPFQ+KHkpKTsgfQotCi10ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lCi1ib29sIG9wZXJhdG9yICE9ICggb3B0aW9uYWw8VD4gY29uc3QmIHgsIFQgY29uc3QmIHkgKQoteyByZXR1cm4gISggeCA9PSB5ICkgOyB9Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1pbmxpbmUKLWJvb2wgb3BlcmF0b3IgPiAoIG9wdGlvbmFsPFQ+IGNvbnN0JiB4LCBUIGNvbnN0JiB5ICkKLXsgcmV0dXJuIHkgPCB4IDsgfQotCi10ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lCi1ib29sIG9wZXJhdG9yIDw9ICggb3B0aW9uYWw8VD4gY29uc3QmIHgsIFQgY29uc3QmIHkgKQoteyByZXR1cm4gISggeSA8IHggKSA7IH0KLQotdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZQotYm9vbCBvcGVyYXRvciA+PSAoIG9wdGlvbmFsPFQ+IGNvbnN0JiB4LCBUIGNvbnN0JiB5ICkKLXsgcmV0dXJuICEoIHggPCB5ICkgOyB9Ci0KLS8vCi0vLyBUIHZzIG9wdGlvbmFsPFQ+IGNhc2VzCi0vLwotCi10ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lCi1ib29sIG9wZXJhdG9yID09ICggVCBjb25zdCYgeCwgb3B0aW9uYWw8VD4gY29uc3QmIHkgKQoteyByZXR1cm4gZXF1YWxfcG9pbnRlZXMoIG9wdGlvbmFsPFQ+KHgpLCB5ICk7IH0KLQotdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZQotYm9vbCBvcGVyYXRvciA8ICggVCBjb25zdCYgeCwgb3B0aW9uYWw8VD4gY29uc3QmIHkgKQoteyByZXR1cm4gbGVzc19wb2ludGVlcyggb3B0aW9uYWw8VD4oeCksIHkgKTsgfQotCi10ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lCi1ib29sIG9wZXJhdG9yICE9ICggVCBjb25zdCYgeCwgb3B0aW9uYWw8VD4gY29uc3QmIHkgKQoteyByZXR1cm4gISggeCA9PSB5ICkgOyB9Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1pbmxpbmUKLWJvb2wgb3BlcmF0b3IgPiAoIFQgY29uc3QmIHgsIG9wdGlvbmFsPFQ+IGNvbnN0JiB5ICkKLXsgcmV0dXJuIHkgPCB4IDsgfQotCi10ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lCi1ib29sIG9wZXJhdG9yIDw9ICggVCBjb25zdCYgeCwgb3B0aW9uYWw8VD4gY29uc3QmIHkgKQoteyByZXR1cm4gISggeSA8IHggKSA7IH0KLQotdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZQotYm9vbCBvcGVyYXRvciA+PSAoIFQgY29uc3QmIHgsIG9wdGlvbmFsPFQ+IGNvbnN0JiB5ICkKLXsgcmV0dXJuICEoIHggPCB5ICkgOyB9Ci0KLQotLy8KLS8vIG9wdGlvbmFsPFQ+IHZzIG5vbmUgY2FzZXMKLS8vCi0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1pbmxpbmUKLWJvb2wgb3BlcmF0b3IgPT0gKCBvcHRpb25hbDxUPiBjb25zdCYgeCwgbm9uZV90ICkKLXsgcmV0dXJuIGVxdWFsX3BvaW50ZWVzKHgsIG9wdGlvbmFsPFQ+KCkgKTsgfQotCi10ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lCi1ib29sIG9wZXJhdG9yIDwgKCBvcHRpb25hbDxUPiBjb25zdCYgeCwgbm9uZV90ICkKLXsgcmV0dXJuIGxlc3NfcG9pbnRlZXMoeCxvcHRpb25hbDxUPigpICk7IH0KLQotdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZQotYm9vbCBvcGVyYXRvciAhPSAoIG9wdGlvbmFsPFQ+IGNvbnN0JiB4LCBub25lX3QgeSApCi17IHJldHVybiAhKCB4ID09IHkgKSA7IH0KLQotdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZQotYm9vbCBvcGVyYXRvciA+ICggb3B0aW9uYWw8VD4gY29uc3QmIHgsIG5vbmVfdCB5ICkKLXsgcmV0dXJuIHkgPCB4IDsgfQotCi10ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lCi1ib29sIG9wZXJhdG9yIDw9ICggb3B0aW9uYWw8VD4gY29uc3QmIHgsIG5vbmVfdCB5ICkKLXsgcmV0dXJuICEoIHkgPCB4ICkgOyB9Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1pbmxpbmUKLWJvb2wgb3BlcmF0b3IgPj0gKCBvcHRpb25hbDxUPiBjb25zdCYgeCwgbm9uZV90IHkgKQoteyByZXR1cm4gISggeCA8IHkgKSA7IH0KLQotLy8KLS8vIG5vbmUgdnMgb3B0aW9uYWw8VD4gY2FzZXMKLS8vCi0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1pbmxpbmUKLWJvb2wgb3BlcmF0b3IgPT0gKCBub25lX3QgLCBvcHRpb25hbDxUPiBjb25zdCYgeSApCi17IHJldHVybiBlcXVhbF9wb2ludGVlcyhvcHRpb25hbDxUPigpICx5KTsgfQotCi10ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lCi1ib29sIG9wZXJhdG9yIDwgKCBub25lX3QgLCBvcHRpb25hbDxUPiBjb25zdCYgeSApCi17IHJldHVybiBsZXNzX3BvaW50ZWVzKG9wdGlvbmFsPFQ+KCkgLHkpOyB9Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1pbmxpbmUKLWJvb2wgb3BlcmF0b3IgIT0gKCBub25lX3QgeCwgb3B0aW9uYWw8VD4gY29uc3QmIHkgKQoteyByZXR1cm4gISggeCA9PSB5ICkgOyB9Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1pbmxpbmUKLWJvb2wgb3BlcmF0b3IgPiAoIG5vbmVfdCB4LCBvcHRpb25hbDxUPiBjb25zdCYgeSApCi17IHJldHVybiB5IDwgeCA7IH0KLQotdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZQotYm9vbCBvcGVyYXRvciA8PSAoIG5vbmVfdCB4LCBvcHRpb25hbDxUPiBjb25zdCYgeSApCi17IHJldHVybiAhKCB5IDwgeCApIDsgfQotCi10ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lCi1ib29sIG9wZXJhdG9yID49ICggbm9uZV90IHgsIG9wdGlvbmFsPFQ+IGNvbnN0JiB5ICkKLXsgcmV0dXJuICEoIHggPCB5ICkgOyB9Ci0KLW5hbWVzcGFjZSBvcHRpb25hbF9kZXRhaWwgewotCi10ZW1wbGF0ZTxib29sIHVzZV9kZWZhdWx0X2NvbnN0cnVjdG9yPiBzdHJ1Y3Qgc3dhcF9zZWxlY3RvcjsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHN3YXBfc2VsZWN0b3I8dHJ1ZT4KLXsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPgotICAgIHN0YXRpYyB2b2lkIG9wdGlvbmFsX3N3YXAgKCBvcHRpb25hbDxUPiYgeCwgb3B0aW9uYWw8VD4mIHkgKQotICAgIHsKLSAgICAgICAgY29uc3QgYm9vbCBoYXNYID0gISF4OwotICAgICAgICBjb25zdCBib29sIGhhc1kgPSAhIXk7Ci0KLSAgICAgICAgaWYgKCAhaGFzWCAmJiAhaGFzWSApCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYoICFoYXNYICkKLSAgICAgICAgICAgIHggPSBuZG5ib29zdDo6aW5fcGxhY2UoKTsKLSAgICAgICAgZWxzZSBpZiAoICFoYXNZICkKLSAgICAgICAgICAgIHkgPSBuZG5ib29zdDo6aW5fcGxhY2UoKTsKLQotICAgICAgICAvLyBCb29zdC5VdGlsaXR5LlN3YXAgd2lsbCB0YWtlIGNhcmUgb2YgQURMIGFuZCB3b3JrYXJvdW5kcyBmb3IgYnJva2VuIGNvbXBpbGVycwotICAgICAgICBuZG5ib29zdDo6c3dhcCh4LmdldCgpLHkuZ2V0KCkpOwotCi0gICAgICAgIGlmKCAhaGFzWCApCi0gICAgICAgICAgICB5ID0gbmRuYm9vc3Q6Om5vbmUgOwotICAgICAgICBlbHNlIGlmKCAhaGFzWSApCi0gICAgICAgICAgICB4ID0gbmRuYm9vc3Q6Om5vbmUgOwotICAgIH0KLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzd2FwX3NlbGVjdG9yPGZhbHNlPgotewotICAgIHRlbXBsYXRlPGNsYXNzIFQ+Ci0gICAgc3RhdGljIHZvaWQgb3B0aW9uYWxfc3dhcCAoIG9wdGlvbmFsPFQ+JiB4LCBvcHRpb25hbDxUPiYgeSApCi0gICAgewotICAgICAgICBjb25zdCBib29sIGhhc1ggPSAhIXg7Ci0gICAgICAgIGNvbnN0IGJvb2wgaGFzWSA9ICEheTsKLQotICAgICAgICBpZiAoICFoYXNYICYmIGhhc1kgKQotICAgICAgICB7Ci0gICAgICAgICAgICB4ID0geS5nZXQoKTsKLSAgICAgICAgICAgIHkgPSBuZG5ib29zdDo6bm9uZSA7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoIGhhc1ggJiYgIWhhc1kgKQotICAgICAgICB7Ci0gICAgICAgICAgICB5ID0geC5nZXQoKTsKLSAgICAgICAgICAgIHggPSBuZG5ib29zdDo6bm9uZSA7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoIGhhc1ggJiYgaGFzWSApCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vIEJvb3N0LlV0aWxpdHkuU3dhcCB3aWxsIHRha2UgY2FyZSBvZiBBREwgYW5kIHdvcmthcm91bmRzIGZvciBicm9rZW4gY29tcGlsZXJzCi0gICAgICAgICAgICBuZG5ib29zdDo6c3dhcCh4LmdldCgpLHkuZ2V0KCkpOwotICAgICAgICB9Ci0gICAgfQotfTsKLQotfSAvLyBuYW1lc3BhY2Ugb3B0aW9uYWxfZGV0YWlsCi0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1zdHJ1Y3Qgb3B0aW9uYWxfc3dhcF9zaG91bGRfdXNlX2RlZmF1bHRfY29uc3RydWN0b3IgOiBoYXNfbm90aHJvd19kZWZhdWx0X2NvbnN0cnVjdG9yPFQ+IHt9IDsKLQotdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHZvaWQgc3dhcCAoIG9wdGlvbmFsPFQ+JiB4LCBvcHRpb25hbDxUPiYgeSApCi17Ci0gICAgb3B0aW9uYWxfZGV0YWlsOjpzd2FwX3NlbGVjdG9yPG9wdGlvbmFsX3N3YXBfc2hvdWxkX3VzZV9kZWZhdWx0X2NvbnN0cnVjdG9yPFQ+Ojp2YWx1ZT46Om9wdGlvbmFsX3N3YXAoeCwgeSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9vcHRpb25hbC9vcHRpb25hbF9md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9vcHRpb25hbC9vcHRpb25hbF9md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNTQ5N2EyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvb3B0aW9uYWwvb3B0aW9uYWxfZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAwMywgMjAwOCBGZXJuYW5kbyBMdWlzIENhY2Npb2xhIENhcmJhbGxhbC4KLS8vCi0vLyBVc2UsIG1vZGlmaWNhdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZQotLy8gTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9vcHRpb25hbCBmb3IgZG9jdW1lbnRhdGlvbi4KLS8vCi0vLyBZb3UgYXJlIHdlbGNvbWUgdG8gY29udGFjdCB0aGUgYXV0aG9yIGF0OgotLy8gIGZlcm5hbmRvX2NhY2Npb2xhQGhvdG1haWwuY29tCi0vLwotLy8gUmV2aXNpb25zOgotLy8gMTAgTWF5IDIwMDggKGFkZGVkIHN3YXAgcmVsYXRlZCBmb3J3YXJkIGRlY2xhcmF0aW9uKSBOaWVscyBEZWtrZXIKLS8vIAotI2lmbmRlZiBORE5CT09TVF9PUFRJT05BTF9PUFRJT05BTF9GV0RfRkxDXzE5Tk9WMjAwMl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfT1BUSU9OQUxfT1BUSU9OQUxfRldEX0ZMQ18xOU5PVjIwMDJfSFBQCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IGNsYXNzIG9wdGlvbmFsIDsKLQotdGVtcGxhdGU8Y2xhc3MgVD4gdm9pZCBzd2FwICggb3B0aW9uYWw8VD4mICwgb3B0aW9uYWw8VD4mICkgOwotCi10ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3Qgb3B0aW9uYWxfc3dhcF9zaG91bGRfdXNlX2RlZmF1bHRfY29uc3RydWN0b3IgOwotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wZW5kaW5nL2ludGVnZXJfbG9nMi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3BlbmRpbmcvaW50ZWdlcl9sb2cyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDg1MDRkYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3BlbmRpbmcvaW50ZWdlcl9sb2cyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExMiArMCwwIEBACi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gaW50ZWdlcl9sb2cyLmhwcAotLy8KLS8vICAgR2l2ZXMgdGhlIGludGVnZXIgcGFydCBvZiB0aGUgbG9nYXJpdGhtLCBpbiBiYXNlIDIsIG9mIGEKLS8vIGdpdmVuIG51bWJlci4gQmVoYXZpb3IgaXMgdW5kZWZpbmVkIGlmIHRoZSBhcmd1bWVudCBpcyA8PSAwLgotLy8KLS8vICAgICAgICAgQ29weXJpZ2h0IChjKSAyMDAzLTIwMDQsIDIwMDggR2VubmFybyBQcm90YQotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAgIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICAgICAgICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0jaWZuZGVmIE5ETkJPT1NUX0lOVEVHRVJfTE9HMl9IUFBfR1BfMjAwMzAzMDEKLSNkZWZpbmUgTkROQk9PU1RfSU5URUdFUl9MT0cyX0hQUF9HUF8yMDAzMDMwMQotCi0jaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0jaWZkZWYgX19CT1JMQU5EQ19fCi0jaW5jbHVkZSA8Y2xpbWl0cz4KLSNlbmRpZgotI2luY2x1ZGUgIm5kbmJvb3N0L2xpbWl0cy5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvY29uZmlnLmhwcCIKLQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotIG5hbWVzcGFjZSBkZXRhaWwgewotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICBpbnQgaW50ZWdlcl9sb2cyX2ltcGwoVCB4LCBpbnQgbikgewotCi0gICAgICBpbnQgcmVzdWx0ID0gMDsKLQotICAgICAgd2hpbGUgKHggIT0gMSkgewotCi0gICAgICAgICAgY29uc3QgVCB0ID0gc3RhdGljX2Nhc3Q8VD4oeCA+PiBuKTsKLSAgICAgICAgICBpZiAodCkgewotICAgICAgICAgICAgICByZXN1bHQgKz0gbjsKLSAgICAgICAgICAgICAgeCA9IHQ7Ci0gICAgICAgICAgfQotICAgICAgICAgIG4gLz0gMjsKLQotICAgICAgfQotCi0gICAgICByZXR1cm4gcmVzdWx0OwotICB9Ci0KLQotCi0gIC8vIGhlbHBlciB0byBmaW5kIHRoZSBtYXhpbXVtIHBvd2VyIG9mIHR3bwotICAvLyBsZXNzIHRoYW4gcCAobW9yZSBpbnZvbHZlZCB0aGFuIG5lY2Vzc2FyeSwKLSAgLy8gdG8gYXZvaWQgUFRTKQotICAvLwotICB0ZW1wbGF0ZSA8aW50IHAsIGludCBuPgotICBzdHJ1Y3QgbWF4X3BvdzJfbGVzcyB7Ci0KLSAgICAgIGVudW0geyBjID0gMipuIDwgcCB9OwotCi0gICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSA9Ci0gICAgICAgICAgYyA/IChtYXhfcG93Ml9sZXNzPCBjKnAsIDIqYypuPjo6dmFsdWUpIDogbik7Ci0KLSAgfTsKLQotICB0ZW1wbGF0ZSA8PgotICBzdHJ1Y3QgbWF4X3BvdzJfbGVzczwwLCAwPiB7Ci0KLSAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0gMCk7Ci0gIH07Ci0KLSAgLy8gdGhpcyB0ZW1wbGF0ZSBpcyBoZXJlIGp1c3QgZm9yIEJvcmxhbmQgOigKLSAgLy8gd2UgY291bGQgc2ltcGx5IHJlbHkgb24gbnVtZXJpY19saW1pdHMgYnV0IHNvbWV0aW1lcwotICAvLyBCb3JsYW5kIHRyaWVzIHRvIHVzZSBudW1lcmljX2xpbWl0czxjb25zdCBUPiwgYmVjYXVzZQotICAvLyBvZiBpdHMgdXN1YWwgY29uc3QtcmVsYXRlZCBwcm9ibGVtcyBpbiBhcmd1bWVudCBkZWR1Y3Rpb24KLSAgLy8gLSBncHMKLSAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gIHN0cnVjdCB3aWR0aCB7Ci0KLSNpZmRlZiBfX0JPUkxBTkRDX18KLSAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0gc2l6ZW9mKFQpICogQ0hBUl9CSVQpOwotI2Vsc2UKLSAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0gKHN0ZDo6bnVtZXJpY19saW1pdHM8VD46OmRpZ2l0cykpOwotI2VuZGlmCi0KLSAgfTsKLQotIH0gLy8gZGV0YWlsCi0KLQotIC8vIC0tLS0tLS0tLQotIC8vIGludGVnZXJfbG9nMgotIC8vIC0tLS0tLS0tLS0tLS0tLQotIC8vCi0gdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gaW50IGludGVnZXJfbG9nMihUIHgpIHsKLQotICAgICBhc3NlcnQoeCA+IDApOwotCi0gICAgIGNvbnN0IGludCBuID0gZGV0YWlsOjptYXhfcG93Ml9sZXNzPAotICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjp3aWR0aDxUPiA6OiB2YWx1ZSwgNAotICAgICAgICAgICAgICAgICAgID4gOjogdmFsdWU7Ci0KLSAgICAgcmV0dXJuIGRldGFpbDo6aW50ZWdlcl9sb2cyX2ltcGwoeCwgbik7Ci0KLSB9Ci0KLQotCi19Ci0KLQotCi0jZW5kaWYgLy8gaW5jbHVkZSBndWFyZApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wb2ludGVlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcG9pbnRlZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4YzkyN2QuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wb2ludGVlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDc0ICswLDAgQEAKLSNpZm5kZWYgUE9JTlRFRV9ORE5CT09TVF9EV0EyMDA0MTVfSFBQCi0jIGRlZmluZSBQT0lOVEVFX05ETkJPT1NUX0RXQTIwMDQxNV9IUFAKLQotLy8KLS8vIENvcHlyaWdodCBEYXZpZCBBYnJhaGFtcyAyMDA0LiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGlzCi0vLyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIHR5cGVuYW1lIHBvaW50ZWU8UD46OnR5cGUgcHJvdmlkZXMgdGhlIHBvaW50ZWUgdHlwZSBvZiBQLgotLy8KLS8vIEZvciBleGFtcGxlLCBpdCBpcyBUIGZvciBUKiBhbmQgWCBmb3Igc2hhcmVkX3B0cjxYPi4KLS8vCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL2l0ZXJhdG9yL2RvYy9wb2ludGVlLmh0bWwKLS8vCi0KLSMgaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL2lzX2luY3JlbWVudGFibGUuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9pdGVyYXRvci9pdGVyYXRvcl90cmFpdHMuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfY29uc3QuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfY3YuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWYuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9tcGwvZXZhbF9pZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IAotCi1uYW1lc3BhY2UgZGV0YWlsCi17Ci0gIHRlbXBsYXRlIDxjbGFzcyBQPgotICBzdHJ1Y3Qgc21hcnRfcHRyX3BvaW50ZWUKLSAgewotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBQOjplbGVtZW50X3R5cGUgdHlwZTsKLSAgfTsKLQotICB0ZW1wbGF0ZSA8Y2xhc3MgSXRlcmF0b3I+Ci0gIHN0cnVjdCBpdGVyYXRvcl9wb2ludGVlCi0gIHsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPEl0ZXJhdG9yPjo6dmFsdWVfdHlwZSB2YWx1ZV90eXBlOwotICAgICAgCi0gICAgICBzdHJ1Y3QgaW1wbAotICAgICAgewotICAgICAgICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgICAgICAgIHN0YXRpYyBjaGFyIHRlc3QoVCBjb25zdCYpOwotICAgICAgICAgIAotICAgICAgICAgIHN0YXRpYyBjaGFyICgmIHRlc3QodmFsdWVfdHlwZSYpIClbMl07Ci0gICAgICAgICAgCi0gICAgICAgICAgc3RhdGljIEl0ZXJhdG9yJiB4OwotICAgICAgfTsKLSAgICAgIAotICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2NvbnN0YW50ID0gc2l6ZW9mKGltcGw6OnRlc3QoKmltcGw6OngpKSA9PSAxKTsKLSAgICAgIAotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmlmX2M8Ci0jICBpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTUxKSkKLSAgICAgICAgICA6Om5kbmJvb3N0OjpkZXRhaWw6Oml0ZXJhdG9yX3BvaW50ZWU8SXRlcmF0b3I+Ojppc19jb25zdGFudAotIyAgZWxzZQotICAgICAgICAgIGlzX2NvbnN0YW50Ci0jICBlbmRpZiAKLSAgICAgICAgLCB0eXBlbmFtZSBhZGRfY29uc3Q8dmFsdWVfdHlwZT46OnR5cGUKLSAgICAgICAgLCB2YWx1ZV90eXBlCi0gICAgICA+Ojp0eXBlIHR5cGU7Ci0gIH07Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBQPgotc3RydWN0IHBvaW50ZWUKLSAgOiBtcGw6OmV2YWxfaWY8Ci0gICAgICAgIGRldGFpbDo6aXNfaW5jcmVtZW50YWJsZTxQPgotICAgICAgLCBkZXRhaWw6Oml0ZXJhdG9yX3BvaW50ZWU8UD4KLSAgICAgICwgZGV0YWlsOjpzbWFydF9wdHJfcG9pbnRlZTxQPgotICAgID4KLXsKLX07Ci0gIAotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIFBPSU5URUVfTkROQk9PU1RfRFdBMjAwNDE1X0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wb2ludGVyX3RvX290aGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcG9pbnRlcl90b19vdGhlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVjNmQ2MTAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wb2ludGVyX3RvX290aGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfUE9JTlRFUl9UT19PVEhFUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfUE9JTlRFUl9UT19PVEhFUl9IUFBfSU5DTFVERUQKLQotLy8KLS8vICBwb2ludGVyX3RvX290aGVyLmhwcAotLy8KLS8vICAoQykgQ29weXJpZ2h0IElvbiBHYXp0YW5hZ2EgMjAwNS4KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDUgUGV0ZXIgRGltb3YuCi0vLwotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3NtYXJ0X3B0ci9wb2ludGVyX3RvX290aGVyLmh0bWwKLS8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi0vLyBEZWZpbmVzIHRoZSBzYW1lIHBvaW50ZXIgdHlwZSAocmF3IG9yIHNtYXJ0KSB0byBhbm90aGVyIHBvaW50ZWUgdHlwZQotCi10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBVPgotc3RydWN0IHBvaW50ZXJfdG9fb3RoZXI7Ci0KLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFUsIAotICAgICAgICAgdGVtcGxhdGU8Y2xhc3M+IGNsYXNzIFNwPgotc3RydWN0IHBvaW50ZXJfdG9fb3RoZXI8IFNwPFQ+LCBVID4KLXsKLSAgIHR5cGVkZWYgU3A8VT4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFQyLCBjbGFzcyBVLCAKLSAgICAgICAgIHRlbXBsYXRlPGNsYXNzLCBjbGFzcz4gY2xhc3MgU3A+Ci1zdHJ1Y3QgcG9pbnRlcl90b19vdGhlcjwgU3A8VCwgVDI+LCBVID4KLXsKLSAgIHR5cGVkZWYgU3A8VSwgVDI+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBUMiwgY2xhc3MgVDMsIGNsYXNzIFUsIAotICAgICAgICAgdGVtcGxhdGU8Y2xhc3MsIGNsYXNzLCBjbGFzcz4gY2xhc3MgU3A+Ci1zdHJ1Y3QgcG9pbnRlcl90b19vdGhlcjwgU3A8VCwgVDIsIFQzPiwgVSA+Ci17Ci0gICB0eXBlZGVmIFNwPFUsIFQyLCBUMz4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFU+Ci1zdHJ1Y3QgcG9pbnRlcl90b19vdGhlcjwgVCosIFUgPgotewotICAgdHlwZWRlZiBVKiB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfUE9JTlRFUl9UT19PVEhFUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvYWRkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvYWRkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDc0YzBmYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL2FkZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi0jIC8qIENvcHlyaWdodCAoQykgMjAwMQotIyAgKiBIb3VzZW1hcnF1ZSBPeQotIyAgKiBodHRwOi8vd3d3LmhvdXNlbWFycXVlLmNvbQotIyAgKgotIyAgKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKi8KLSMKLSMgLyogUmV2aXNlZCBieSBQYXVsIE1lbnNvbmlkZXMgKDIwMDIpICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9BUklUSE1FVElDX0FERF9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9BUklUSE1FVElDX0FERF9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvZGVjLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvaW5jLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC93aGlsZS5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9lbGVtLmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfQUREICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQUREKHgsIHkpIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMiwgMCwgTkROQk9PU1RfUFBfV0hJTEUoTkROQk9PU1RfUFBfQUREX1AsIE5ETkJPT1NUX1BQX0FERF9PLCAoeCwgeSkpKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9BREQoeCwgeSkgTkROQk9PU1RfUFBfQUREX0koeCwgeSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0FERF9JKHgsIHkpIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMiwgMCwgTkROQk9PU1RfUFBfV0hJTEUoTkROQk9PU1RfUFBfQUREX1AsIE5ETkJPT1NUX1BQX0FERF9PLCAoeCwgeSkpKQotIyBlbmRpZgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfQUREX1AoZCwgeHkpIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMiwgMSwgeHkpCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19NV0NDKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0FERF9PKGQsIHh5KSBORE5CT09TVF9QUF9BRERfT19JIHh5Ci0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0FERF9PKGQsIHh5KSBORE5CT09TVF9QUF9BRERfT19JKE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMiwgMCwgeHkpLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDIsIDEsIHh5KSkKLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0FERF9PX0koeCwgeSkgKE5ETkJPT1NUX1BQX0lOQyh4KSwgTkROQk9PU1RfUFBfREVDKHkpKQotIwotIyAvKiBORE5CT09TVF9QUF9BRERfRCAqLwotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRURHKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0FERF9EKGQsIHgsIHkpIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMiwgMCwgTkROQk9PU1RfUFBfV0hJTEVfICMjIGQoTkROQk9PU1RfUFBfQUREX1AsIE5ETkJPT1NUX1BQX0FERF9PLCAoeCwgeSkpKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9BRERfRChkLCB4LCB5KSBORE5CT09TVF9QUF9BRERfRF9JKGQsIHgsIHkpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9BRERfRF9JKGQsIHgsIHkpIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMiwgMCwgTkROQk9PU1RfUFBfV0hJTEVfICMjIGQoTkROQk9PU1RfUFBfQUREX1AsIE5ETkJPT1NUX1BQX0FERF9PLCAoeCwgeSkpKQotIyBlbmRpZgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9kZWMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9kZWMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZTIwYzJkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvZGVjLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI4OCArMCwwIEBACi0jIC8qIENvcHlyaWdodCAoQykgMjAwMQotIyAgKiBIb3VzZW1hcnF1ZSBPeQotIyAgKiBodHRwOi8vd3d3LmhvdXNlbWFycXVlLmNvbQotIyAgKgotIyAgKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKi8KLSMKLSMgLyogUmV2aXNlZCBieSBQYXVsIE1lbnNvbmlkZXMgKDIwMDIpICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9BUklUSE1FVElDX0RFQ19IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9BUklUSE1FVElDX0RFQ19IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9ERUMgKi8KLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX01XQ0MoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfREVDKHgpIE5ETkJPT1NUX1BQX0RFQ19JKHgpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQyh4KSBORE5CT09TVF9QUF9ERUNfT08oKHgpKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfREVDX09PKHBhcikgTkROQk9PU1RfUFBfREVDX0kgIyMgcGFyCi0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfSSh4KSBORE5CT09TVF9QUF9ERUNfICMjIHgKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18wIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18zIDIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ180IDMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ181IDQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ182IDUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ183IDYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ184IDcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ185IDgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xMCA5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTEgMTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xMiAxMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzEzIDEyCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTQgMTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xNSAxNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE2IDE1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTcgMTYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xOCAxNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE5IDE4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjAgMTkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yMSAyMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzIyIDIxCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjMgMjIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yNCAyMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzI1IDI0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjYgMjUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yNyAyNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzI4IDI3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjkgMjgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18zMCAyOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzMxIDMwCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMzIgMzEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18zMyAzMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzM0IDMzCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMzUgMzQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18zNiAzNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzM3IDM2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMzggMzcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18zOSAzOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzQwIDM5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfNDEgNDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ180MiA0MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzQzIDQyCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfNDQgNDMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ180NSA0NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzQ2IDQ1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfNDcgNDYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ180OCA0NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzQ5IDQ4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfNTAgNDkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ181MSA1MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzUyIDUxCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfNTMgNTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ181NCA1MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzU1IDU0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfNTYgNTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ181NyA1NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzU4IDU3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfNTkgNTgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ182MCA1OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzYxIDYwCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfNjIgNjEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ182MyA2MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzY0IDYzCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfNjUgNjQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ182NiA2NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzY3IDY2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfNjggNjcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ182OSA2OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzcwIDY5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfNzEgNzAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ183MiA3MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzczIDcyCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfNzQgNzMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ183NSA3NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzc2IDc1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfNzcgNzYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ183OCA3NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzc5IDc4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfODAgNzkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ184MSA4MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzgyIDgxCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfODMgODIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ184NCA4MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzg1IDg0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfODYgODUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ184NyA4NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzg4IDg3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfODkgODgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ185MCA4OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzkxIDkwCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfOTIgOTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ185MyA5MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzk0IDkzCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfOTUgOTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ185NiA5NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzk3IDk2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfOTggOTcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ185OSA5OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzEwMCA5OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzEwMSAxMDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xMDIgMTAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTAzIDEwMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzEwNCAxMDMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xMDUgMTA0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTA2IDEwNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzEwNyAxMDYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xMDggMTA3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTA5IDEwOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzExMCAxMDkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xMTEgMTEwCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTEyIDExMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzExMyAxMTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xMTQgMTEzCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTE1IDExNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzExNiAxMTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xMTcgMTE2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTE4IDExNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzExOSAxMTgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xMjAgMTE5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTIxIDEyMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzEyMiAxMjEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xMjMgMTIyCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTI0IDEyMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzEyNSAxMjQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xMjYgMTI1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTI3IDEyNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzEyOCAxMjcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xMjkgMTI4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTMwIDEyOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzEzMSAxMzAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xMzIgMTMxCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTMzIDEzMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzEzNCAxMzMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xMzUgMTM0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTM2IDEzNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzEzNyAxMzYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xMzggMTM3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTM5IDEzOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE0MCAxMzkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xNDEgMTQwCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTQyIDE0MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE0MyAxNDIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xNDQgMTQzCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTQ1IDE0NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE0NiAxNDUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xNDcgMTQ2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTQ4IDE0NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE0OSAxNDgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xNTAgMTQ5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTUxIDE1MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE1MiAxNTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xNTMgMTUyCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTU0IDE1MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE1NSAxNTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xNTYgMTU1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTU3IDE1NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE1OCAxNTcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xNTkgMTU4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTYwIDE1OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE2MSAxNjAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xNjIgMTYxCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTYzIDE2MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE2NCAxNjMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xNjUgMTY0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTY2IDE2NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE2NyAxNjYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xNjggMTY3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTY5IDE2OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE3MCAxNjkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xNzEgMTcwCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTcyIDE3MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE3MyAxNzIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xNzQgMTczCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTc1IDE3NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE3NiAxNzUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xNzcgMTc2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTc4IDE3NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE3OSAxNzgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xODAgMTc5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTgxIDE4MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE4MiAxODEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xODMgMTgyCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTg0IDE4MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE4NSAxODQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xODYgMTg1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTg3IDE4NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE4OCAxODcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xODkgMTg4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTkwIDE4OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE5MSAxOTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xOTIgMTkxCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTkzIDE5MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE5NCAxOTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xOTUgMTk0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTk2IDE5NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzE5NyAxOTYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18xOTggMTk3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMTk5IDE5OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzIwMCAxOTkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yMDEgMjAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjAyIDIwMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzIwMyAyMDIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yMDQgMjAzCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjA1IDIwNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzIwNiAyMDUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yMDcgMjA2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjA4IDIwNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzIwOSAyMDgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yMTAgMjA5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjExIDIxMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzIxMiAyMTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yMTMgMjEyCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjE0IDIxMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzIxNSAyMTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yMTYgMjE1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjE3IDIxNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzIxOCAyMTcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yMTkgMjE4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjIwIDIxOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzIyMSAyMjAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yMjIgMjIxCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjIzIDIyMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzIyNCAyMjMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yMjUgMjI0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjI2IDIyNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzIyNyAyMjYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yMjggMjI3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjI5IDIyOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzIzMCAyMjkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yMzEgMjMwCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjMyIDIzMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzIzMyAyMzIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yMzQgMjMzCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjM1IDIzNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzIzNiAyMzUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yMzcgMjM2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjM4IDIzNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzIzOSAyMzgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yNDAgMjM5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjQxIDI0MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzI0MiAyNDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yNDMgMjQyCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjQ0IDI0MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzI0NSAyNDQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yNDYgMjQ1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjQ3IDI0NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzI0OCAyNDcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yNDkgMjQ4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjUwIDI0OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzI1MSAyNTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yNTIgMjUxCi0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjUzIDI1MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVDXzI1NCAyNTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0RFQ18yNTUgMjU0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9ERUNfMjU2IDI1NQotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9kZXRhaWwvZGl2X2Jhc2UuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9kZXRhaWwvZGl2X2Jhc2UuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MjRlNDEyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvZGV0YWlsL2Rpdl9iYXNlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLSMgLyogQ29weXJpZ2h0IChDKSAyMDAxCi0jICAqIEhvdXNlbWFycXVlIE95Ci0jICAqIGh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tCi0jICAqCi0jICAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqLwotIwotIyAvKiBSZXZpc2VkIGJ5IFBhdWwgTWVuc29uaWRlcyAoMjAwMikgKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0FSSVRITUVUSUNfREVUQUlMX0RJVl9CQVNFX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0FSSVRITUVUSUNfREVUQUlMX0RJVl9CQVNFX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9pbmMuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9zdWIuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29tcGFyaXNvbi9sZXNzX2VxdWFsLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC93aGlsZS5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9lbGVtLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL3JlbS5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX0RJVl9CQVNFICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRElWX0JBU0UoeCwgeSkgTkROQk9PU1RfUFBfV0hJTEUoTkROQk9PU1RfUFBfRElWX0JBU0VfUCwgTkROQk9PU1RfUFBfRElWX0JBU0VfTywgKDAsIHgsIHkpKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9ESVZfQkFTRSh4LCB5KSBORE5CT09TVF9QUF9ESVZfQkFTRV9JKHgsIHkpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9ESVZfQkFTRV9JKHgsIHkpIE5ETkJPT1NUX1BQX1dISUxFKE5ETkJPT1NUX1BQX0RJVl9CQVNFX1AsIE5ETkJPT1NUX1BQX0RJVl9CQVNFX08sICgwLCB4LCB5KSkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfU1RSSUNUKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0RJVl9CQVNFX1AoZCwgcnh5KSBORE5CT09TVF9QUF9ESVZfQkFTRV9QX0lNKGQsIE5ETkJPT1NUX1BQX1RVUExFX1JFTV8zIHJ4eSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0RJVl9CQVNFX1BfSU0oZCwgaW0pIE5ETkJPT1NUX1BQX0RJVl9CQVNFX1BfSShkLCBpbSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRElWX0JBU0VfUChkLCByeHkpIE5ETkJPT1NUX1BQX0RJVl9CQVNFX1BfSShkLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDMsIDAsIHJ4eSksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMywgMSwgcnh5KSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgzLCAyLCByeHkpKQotIyBlbmRpZgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfRElWX0JBU0VfUF9JKGQsIHIsIHgsIHkpIE5ETkJPT1NUX1BQX0xFU1NfRVFVQUxfRChkLCB5LCB4KQotIwotIyBpZiBORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19TVFJJQ1QoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRElWX0JBU0VfTyhkLCByeHkpIE5ETkJPT1NUX1BQX0RJVl9CQVNFX09fSU0oZCwgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzMgcnh5KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRElWX0JBU0VfT19JTShkLCBpbSkgTkROQk9PU1RfUFBfRElWX0JBU0VfT19JKGQsIGltKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9ESVZfQkFTRV9PKGQsIHJ4eSkgTkROQk9PU1RfUFBfRElWX0JBU0VfT19JKGQsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMywgMCwgcnh5KSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgzLCAxLCByeHkpLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDMsIDIsIHJ4eSkpCi0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9ESVZfQkFTRV9PX0koZCwgciwgeCwgeSkgKE5ETkJPT1NUX1BQX0lOQyhyKSwgTkROQk9PU1RfUFBfU1VCX0QoZCwgeCwgeSksIHkpCi0jCi0jIC8qIE5ETkJPT1NUX1BQX0RJVl9CQVNFX0QgKi8KLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9ESVZfQkFTRV9EKGQsIHgsIHkpIE5ETkJPT1NUX1BQX1dISUxFXyAjIyBkKE5ETkJPT1NUX1BQX0RJVl9CQVNFX1AsIE5ETkJPT1NUX1BQX0RJVl9CQVNFX08sICgwLCB4LCB5KSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRElWX0JBU0VfRChkLCB4LCB5KSBORE5CT09TVF9QUF9ESVZfQkFTRV9EX0koZCwgeCwgeSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0RJVl9CQVNFX0RfSShkLCB4LCB5KSBORE5CT09TVF9QUF9XSElMRV8gIyMgZChORE5CT09TVF9QUF9ESVZfQkFTRV9QLCBORE5CT09TVF9QUF9ESVZfQkFTRV9PLCAoMCwgeCwgeSkpCi0jIGVuZGlmCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL2luYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL2luYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg4NzgzOTUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9pbmMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjg4ICswLDAgQEAKLSMgLyogQ29weXJpZ2h0IChDKSAyMDAxCi0jICAqIEhvdXNlbWFycXVlIE95Ci0jICAqIGh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tCi0jICAqCi0jICAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqLwotIwotIyAvKiBSZXZpc2VkIGJ5IFBhdWwgTWVuc29uaWRlcyAoMjAwMikgKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0FSSVRITUVUSUNfSU5DX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0FSSVRITUVUSUNfSU5DX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX0lOQyAqLwotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfTVdDQygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JTkMoeCkgTkROQk9PU1RfUFBfSU5DX0koeCkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSU5DKHgpIE5ETkJPT1NUX1BQX0lOQ19PTygoeCkpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JTkNfT08ocGFyKSBORE5CT09TVF9QUF9JTkNfSSAjIyBwYXIKLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ19JKHgpIE5ETkJPT1NUX1BQX0lOQ18gIyMgeAotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzAgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzEgMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzIgMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzMgNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzQgNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzUgNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzYgNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzcgOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzggOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzkgMTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xMCAxMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzExIDEyCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTIgMTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xMyAxNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE0IDE1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTUgMTYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xNiAxNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE3IDE4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTggMTkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xOSAyMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzIwIDIxCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjEgMjIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yMiAyMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzIzIDI0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjQgMjUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yNSAyNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzI2IDI3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjcgMjgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yOCAyOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzI5IDMwCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMzAgMzEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18zMSAzMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzMyIDMzCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMzMgMzQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18zNCAzNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzM1IDM2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMzYgMzcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18zNyAzOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzM4IDM5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMzkgNDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ180MCA0MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzQxIDQyCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfNDIgNDMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ180MyA0NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzQ0IDQ1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfNDUgNDYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ180NiA0NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzQ3IDQ4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfNDggNDkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ180OSA1MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzUwIDUxCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfNTEgNTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ181MiA1MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzUzIDU0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfNTQgNTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ181NSA1NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzU2IDU3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfNTcgNTgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ181OCA1OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzU5IDYwCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfNjAgNjEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ182MSA2MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzYyIDYzCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfNjMgNjQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ182NCA2NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzY1IDY2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfNjYgNjcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ182NyA2OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzY4IDY5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfNjkgNzAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ183MCA3MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzcxIDcyCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfNzIgNzMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ183MyA3NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzc0IDc1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfNzUgNzYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ183NiA3NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzc3IDc4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfNzggNzkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ183OSA4MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzgwIDgxCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfODEgODIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ184MiA4MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzgzIDg0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfODQgODUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ184NSA4NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzg2IDg3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfODcgODgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ184OCA4OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzg5IDkwCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfOTAgOTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ185MSA5MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzkyIDkzCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfOTMgOTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ185NCA5NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzk1IDk2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfOTYgOTcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ185NyA5OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzk4IDk5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfOTkgMTAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTAwIDEwMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzEwMSAxMDIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xMDIgMTAzCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTAzIDEwNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzEwNCAxMDUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xMDUgMTA2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTA2IDEwNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzEwNyAxMDgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xMDggMTA5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTA5IDExMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzExMCAxMTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xMTEgMTEyCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTEyIDExMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzExMyAxMTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xMTQgMTE1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTE1IDExNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzExNiAxMTcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xMTcgMTE4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTE4IDExOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzExOSAxMjAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xMjAgMTIxCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTIxIDEyMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzEyMiAxMjMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xMjMgMTI0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTI0IDEyNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzEyNSAxMjYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xMjYgMTI3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTI3IDEyOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzEyOCAxMjkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xMjkgMTMwCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTMwIDEzMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzEzMSAxMzIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xMzIgMTMzCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTMzIDEzNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzEzNCAxMzUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xMzUgMTM2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTM2IDEzNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzEzNyAxMzgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xMzggMTM5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTM5IDE0MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE0MCAxNDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xNDEgMTQyCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTQyIDE0MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE0MyAxNDQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xNDQgMTQ1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTQ1IDE0NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE0NiAxNDcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xNDcgMTQ4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTQ4IDE0OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE0OSAxNTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xNTAgMTUxCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTUxIDE1MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE1MiAxNTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xNTMgMTU0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTU0IDE1NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE1NSAxNTYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xNTYgMTU3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTU3IDE1OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE1OCAxNTkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xNTkgMTYwCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTYwIDE2MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE2MSAxNjIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xNjIgMTYzCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTYzIDE2NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE2NCAxNjUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xNjUgMTY2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTY2IDE2NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE2NyAxNjgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xNjggMTY5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTY5IDE3MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE3MCAxNzEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xNzEgMTcyCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTcyIDE3MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE3MyAxNzQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xNzQgMTc1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTc1IDE3NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE3NiAxNzcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xNzcgMTc4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTc4IDE3OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE3OSAxODAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xODAgMTgxCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTgxIDE4MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE4MiAxODMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xODMgMTg0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTg0IDE4NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE4NSAxODYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xODYgMTg3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTg3IDE4OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE4OCAxODkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xODkgMTkwCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTkwIDE5MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE5MSAxOTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xOTIgMTkzCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTkzIDE5NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE5NCAxOTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xOTUgMTk2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTk2IDE5NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzE5NyAxOTgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18xOTggMTk5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMTk5IDIwMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzIwMCAyMDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yMDEgMjAyCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjAyIDIwMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzIwMyAyMDQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yMDQgMjA1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjA1IDIwNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzIwNiAyMDcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yMDcgMjA4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjA4IDIwOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzIwOSAyMTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yMTAgMjExCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjExIDIxMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzIxMiAyMTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yMTMgMjE0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjE0IDIxNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzIxNSAyMTYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yMTYgMjE3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjE3IDIxOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzIxOCAyMTkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yMTkgMjIwCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjIwIDIyMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzIyMSAyMjIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yMjIgMjIzCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjIzIDIyNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzIyNCAyMjUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yMjUgMjI2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjI2IDIyNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzIyNyAyMjgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yMjggMjI5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjI5IDIzMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzIzMCAyMzEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yMzEgMjMyCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjMyIDIzMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzIzMyAyMzQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yMzQgMjM1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjM1IDIzNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzIzNiAyMzcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yMzcgMjM4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjM4IDIzOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzIzOSAyNDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yNDAgMjQxCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjQxIDI0MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzI0MiAyNDMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yNDMgMjQ0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjQ0IDI0NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzI0NSAyNDYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yNDYgMjQ3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjQ3IDI0OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzI0OCAyNDkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yNDkgMjUwCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjUwIDI1MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzI1MSAyNTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yNTIgMjUzCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjUzIDI1NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5DXzI1NCAyNTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ18yNTUgMjU2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTkNfMjU2IDI1NgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9tb2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9tb2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZjU3NTRkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvbW9kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLSMgLyogQ29weXJpZ2h0IChDKSAyMDAxCi0jICAqIEhvdXNlbWFycXVlIE95Ci0jICAqIGh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tCi0jICAqCi0jICAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqLwotIwotIyAvKiBSZXZpc2VkIGJ5IFBhdWwgTWVuc29uaWRlcyAoMjAwMikgKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0FSSVRITUVUSUNfTU9EX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0FSSVRITUVUSUNfTU9EX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9kZXRhaWwvZGl2X2Jhc2UuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9lbGVtLmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfTU9EICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTU9EKHgsIHkpIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMywgMSwgTkROQk9PU1RfUFBfRElWX0JBU0UoeCwgeSkpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX01PRCh4LCB5KSBORE5CT09TVF9QUF9NT0RfSSh4LCB5KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTU9EX0koeCwgeSkgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgzLCAxLCBORE5CT09TVF9QUF9ESVZfQkFTRSh4LCB5KSkKLSMgZW5kaWYKLSMKLSMgLyogTkROQk9PU1RfUFBfTU9EX0QgKi8KLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9NT0RfRChkLCB4LCB5KSBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDMsIDEsIE5ETkJPT1NUX1BQX0RJVl9CQVNFX0QoZCwgeCwgeSkpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX01PRF9EKGQsIHgsIHkpIE5ETkJPT1NUX1BQX01PRF9EX0koZCwgeCwgeSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX01PRF9EX0koZCwgeCwgeSkgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgzLCAxLCBORE5CT09TVF9QUF9ESVZfQkFTRV9EKGQsIHgsIHkpKQotIyBlbmRpZgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9zdWIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9zdWIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NDMzMWYyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvc3ViLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLSMgLyogQ29weXJpZ2h0IChDKSAyMDAxCi0jICAqIEhvdXNlbWFycXVlIE95Ci0jICAqIGh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tCi0jICAqCi0jICAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqLwotIwotIyAvKiBSZXZpc2VkIGJ5IFBhdWwgTWVuc29uaWRlcyAoMjAwMikgKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0FSSVRITUVUSUNfU1VCX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0FSSVRITUVUSUNfU1VCX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9kZWMuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL3doaWxlLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL2VsZW0uaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9TVUIgKi8KLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TVUIoeCwgeSkgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgyLCAwLCBORE5CT09TVF9QUF9XSElMRShORE5CT09TVF9QUF9TVUJfUCwgTkROQk9PU1RfUFBfU1VCX08sICh4LCB5KSkpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NVQih4LCB5KSBORE5CT09TVF9QUF9TVUJfSSh4LCB5KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU1VCX0koeCwgeSkgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgyLCAwLCBORE5CT09TVF9QUF9XSElMRShORE5CT09TVF9QUF9TVUJfUCwgTkROQk9PU1RfUFBfU1VCX08sICh4LCB5KSkpCi0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9TVUJfUChkLCB4eSkgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgyLCAxLCB4eSkKLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX01XQ0MoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU1VCX08oZCwgeHkpIE5ETkJPT1NUX1BQX1NVQl9PX0kgeHkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU1VCX08oZCwgeHkpIE5ETkJPT1NUX1BQX1NVQl9PX0koTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgyLCAwLCB4eSksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMiwgMSwgeHkpKQotIyBlbmRpZgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU1VCX09fSSh4LCB5KSAoTkROQk9PU1RfUFBfREVDKHgpLCBORE5CT09TVF9QUF9ERUMoeSkpCi0jCi0jIC8qIE5ETkJPT1NUX1BQX1NVQl9EICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU1VCX0QoZCwgeCwgeSkgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgyLCAwLCBORE5CT09TVF9QUF9XSElMRV8gIyMgZChORE5CT09TVF9QUF9TVUJfUCwgTkROQk9PU1RfUFBfU1VCX08sICh4LCB5KSkpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NVQl9EKGQsIHgsIHkpIE5ETkJPT1NUX1BQX1NVQl9EX0koZCwgeCwgeSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NVQl9EX0koZCwgeCwgeSkgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgyLCAwLCBORE5CT09TVF9QUF9XSElMRV8gIyMgZChORE5CT09TVF9QUF9TVUJfUCwgTkROQk9PU1RfUFBfU1VCX08sICh4LCB5KSkpCi0jIGVuZGlmCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcnJheS9kYXRhLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FycmF5L2RhdGEuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YzhlZTc0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FycmF5L2RhdGEuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9BUlJBWV9EQVRBX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0FSUkFZX0RBVEFfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL2VsZW0uaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9BUlJBWV9EQVRBICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQVJSQVlfREFUQShhcnJheSkgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgyLCAxLCBhcnJheSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQVJSQVlfREFUQShhcnJheSkgTkROQk9PU1RfUFBfQVJSQVlfREFUQV9JKGFycmF5KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQVJSQVlfREFUQV9JKGFycmF5KSBORE5CT09TVF9QUF9BUlJBWV9EQVRBX0lJIGFycmF5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9BUlJBWV9EQVRBX0lJKHNpemUsIGRhdGEpIGRhdGEKLSMgZW5kaWYKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FycmF5L2VsZW0uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJyYXkvZWxlbS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE2YmJhNmMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJyYXkvZWxlbS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0FSUkFZX0VMRU1fSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfQVJSQVlfRUxFTV9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FycmF5L2RhdGEuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJyYXkvc2l6ZS5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL2VsZW0uaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9BUlJBWV9FTEVNICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQVJSQVlfRUxFTShpLCBhcnJheSkgTkROQk9PU1RfUFBfVFVQTEVfRUxFTShORE5CT09TVF9QUF9BUlJBWV9TSVpFKGFycmF5KSwgaSwgTkROQk9PU1RfUFBfQVJSQVlfREFUQShhcnJheSkpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0FSUkFZX0VMRU0oaSwgYXJyYXkpIE5ETkJPT1NUX1BQX0FSUkFZX0VMRU1fSShpLCBhcnJheSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0FSUkFZX0VMRU1fSShpLCBhcnJheSkgTkROQk9PU1RfUFBfVFVQTEVfRUxFTShORE5CT09TVF9QUF9BUlJBWV9TSVpFKGFycmF5KSwgaSwgTkROQk9PU1RfUFBfQVJSQVlfREFUQShhcnJheSkpCi0jIGVuZGlmCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcnJheS9zaXplLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FycmF5L3NpemUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZWU5MWJkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FycmF5L3NpemUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9BUlJBWV9TSVpFX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0FSUkFZX1NJWkVfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL2VsZW0uaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9BUlJBWV9TSVpFICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQVJSQVlfU0laRShhcnJheSkgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgyLCAwLCBhcnJheSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQVJSQVlfU0laRShhcnJheSkgTkROQk9PU1RfUFBfQVJSQVlfU0laRV9JKGFycmF5KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQVJSQVlfU0laRV9JKGFycmF5KSBORE5CT09TVF9QUF9BUlJBWV9TSVpFX0lJIGFycmF5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9BUlJBWV9TSVpFX0lJKHNpemUsIGRhdGEpIHNpemUKLSMgZW5kaWYKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiM2VkOWY2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi0jIC8qIENvcHlyaWdodCAoQykgMjAwMQotIyAgKiBIb3VzZW1hcnF1ZSBPeQotIyAgKiBodHRwOi8vd3d3LmhvdXNlbWFycXVlLmNvbQotIyAgKgotIyAgKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKi8KLSMKLSMgLyogUmV2aXNlZCBieSBQYXVsIE1lbnNvbmlkZXMgKDIwMDIpICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9DQVRfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfQ0FUX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX0NBVCAqLwotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfTVdDQygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DQVQoYSwgYikgTkROQk9PU1RfUFBfQ0FUX0koYSwgYikKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ0FUKGEsIGIpIE5ETkJPT1NUX1BQX0NBVF9PTygoYSwgYikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DQVRfT08ocGFyKSBORE5CT09TVF9QUF9DQVRfSSAjIyBwYXIKLSMgZW5kaWYKLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX01TVkMoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ0FUX0koYSwgYikgYSAjIyBiCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NBVF9JKGEsIGIpIE5ETkJPT1NUX1BQX0NBVF9JSSh+LCBhICMjIGIpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DQVRfSUkocCwgcmVzKSByZXMKLSMgZW5kaWYKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbW1hX2lmLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbW1hX2lmLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2FiZmJmMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb21tYV9pZi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0NPTU1BX0lGX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0NPTU1BX0lGX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcHVuY3R1YXRpb24vY29tbWFfaWYuaHBwPgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvY29tcGFyaXNvbi9sZXNzX2VxdWFsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbXBhcmlzb24vbGVzc19lcXVhbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjMjA5YzAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvY29tcGFyaXNvbi9sZXNzX2VxdWFsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLSMgLyogQ29weXJpZ2h0IChDKSAyMDAxCi0jICAqIEhvdXNlbWFycXVlIE95Ci0jICAqIGh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tCi0jICAqCi0jICAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqLwotIwotIyAvKiBSZXZpc2VkIGJ5IFBhdWwgTWVuc29uaWRlcyAoMjAwMikgKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0NPTVBBUklTT05fTEVTU19FUVVBTF9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9DT01QQVJJU09OX0xFU1NfRVFVQUxfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL3N1Yi5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xvZ2ljYWwvbm90LmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfTEVTU19FUVVBTCAqLwotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRURHKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xFU1NfRVFVQUwoeCwgeSkgTkROQk9PU1RfUFBfTk9UKE5ETkJPT1NUX1BQX1NVQih4LCB5KSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTEVTU19FUVVBTCh4LCB5KSBORE5CT09TVF9QUF9MRVNTX0VRVUFMX0koeCwgeSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xFU1NfRVFVQUxfSSh4LCB5KSBORE5CT09TVF9QUF9OT1QoTkROQk9PU1RfUFBfU1VCKHgsIHkpKQotIyBlbmRpZgotIwotIyAvKiBORE5CT09TVF9QUF9MRVNTX0VRVUFMX0QgKi8KLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MRVNTX0VRVUFMX0QoZCwgeCwgeSkgTkROQk9PU1RfUFBfTk9UKE5ETkJPT1NUX1BQX1NVQl9EKGQsIHgsIHkpKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MRVNTX0VRVUFMX0QoZCwgeCwgeSkgTkROQk9PU1RfUFBfTEVTU19FUVVBTF9EX0koZCwgeCwgeSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xFU1NfRVFVQUxfRF9JKGQsIHgsIHkpIE5ETkJPT1NUX1BQX05PVChORE5CT09TVF9QUF9TVUJfRChkLCB4LCB5KSkKLSMgZW5kaWYKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZhNTliNGUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDUgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi0yMDExLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBFZHdhcmQgRGllbmVyIDIwMTEuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlICAgICAgKgotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0NPTkZJR19DT05GSUdfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfQ09ORklHX0NPTkZJR19IUFAKLSMKLSMgLyogTkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTICovCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9DT05GSUdfU1RSSUNUKCkgMHgwMDAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9DT05GSUdfSURFQUwoKSAweDAwMDIKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0NPTkZJR19NU1ZDKCkgMHgwMDA0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9DT05GSUdfTVdDQygpIDB4MDAwOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfQ09ORklHX0JDQygpIDB4MDAxMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfQ09ORklHX0VERygpIDB4MDAyMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfQ09ORklHX0RNQygpIDB4MDA0MAotIwotIyBpZm5kZWYgTkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTCi0jICAgIGlmIGRlZmluZWQoX19HQ0NYTUxfXykKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAoTkROQk9PU1RfUFBfQ09ORklHX1NUUklDVCgpKQotIyAgICBlbGlmIGRlZmluZWQoX19XQVZFX18pCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgKE5ETkJPT1NUX1BQX0NPTkZJR19TVFJJQ1QoKSkKLSMgICAgZWxpZiBkZWZpbmVkKF9fTVdFUktTX18pICYmIF9fTVdFUktTX18gPj0gMHgzMjAwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgKE5ETkJPT1NUX1BQX0NPTkZJR19TVFJJQ1QoKSkKLSMgICAgZWxpZiBkZWZpbmVkKF9fRURHX18pIHx8IGRlZmluZWQoX19FREdfVkVSU0lPTl9fKQotIyAgICAgICAgaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgX19FREdfVkVSU0lPTl9fID49IDMwOAotIyAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAoTkROQk9PU1RfUFBfQ09ORklHX01TVkMoKSkKLSMgICAgICAgIGVsc2UKLSMgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgKE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKSB8IE5ETkJPT1NUX1BQX0NPTkZJR19TVFJJQ1QoKSkKLSMgICAgICAgIGVuZGlmCi0jICAgIGVsaWYgZGVmaW5lZChfX01XRVJLU19fKQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpIChORE5CT09TVF9QUF9DT05GSUdfTVdDQygpKQotIyAgICBlbGlmIGRlZmluZWQoX19ETUNfXykKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAoTkROQk9PU1RfUFBfQ09ORklHX0RNQygpKQotIyAgICBlbGlmIGRlZmluZWQoX19CT1JMQU5EQ19fKSAmJiBfX0JPUkxBTkRDX18gPj0gMHg1ODEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAoTkROQk9PU1RfUFBfQ09ORklHX1NUUklDVCgpKQotIyAgICBlbGlmIGRlZmluZWQoX19CT1JMQU5EQ19fKSB8fCBkZWZpbmVkKF9fSUJNQ19fKSB8fCBkZWZpbmVkKF9fSUJNQ1BQX18pIHx8IGRlZmluZWQoX19TVU5QUk9fQ0MpCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgKE5ETkJPT1NUX1BQX0NPTkZJR19CQ0MoKSkKLSMgICAgZWxpZiBkZWZpbmVkKF9NU0NfVkVSKQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpIChORE5CT09TVF9QUF9DT05GSUdfTVNWQygpKQotIyAgICBlbHNlCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgKE5ETkJPT1NUX1BQX0NPTkZJR19TVFJJQ1QoKSkKLSMgICAgZW5kaWYKLSMgZW5kaWYKLSMKLSMgLyogTkROQk9PU1RfUFBfQ09ORklHX0VYVEVOREVEX0xJTkVfSU5GTyAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFBfQ09ORklHX0VYVEVOREVEX0xJTkVfSU5GTwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09ORklHX0VYVEVOREVEX0xJTkVfSU5GTyAwCi0jIGVuZGlmCi0jCi0jIC8qIE5ETkJPT1NUX1BQX0NPTkZJR19FUlJPUlMgKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BQX0NPTkZJR19FUlJPUlMKLSMgICAgaWZkZWYgTkRFQlVHCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09ORklHX0VSUk9SUyAwCi0jICAgIGVsc2UKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9DT05GSUdfRVJST1JTIDEKLSMgICAgZW5kaWYKLSMgZW5kaWYKLSMKLSMgLyogTkROQk9PU1RfUFBfVkFSSUFESUNTICovCi0jCi0jIGlmICFkZWZpbmVkIE5ETkJPT1NUX1BQX1ZBUklBRElDUwotIyAgICAvKiB2YXJpYWRpYyBzdXBwb3J0IGV4cGxpY2l0bHkgZGlzYWJsZWQgZm9yIGFsbCB1bnRlc3RlZCBjb21waWxlcnMgKi8KLSMgICAgaWYgZGVmaW5lZCBfX0dDQ1hNTF9fIHx8IGRlZmluZWQgX19DVURBQ0NfXyB8fCBkZWZpbmVkIF9fUEFUSFNDQUxFX18gfHwgZGVmaW5lZCBfX2NsYW5nX18gfHwgZGVmaW5lZCBfX0RNQ19fIHx8IGRlZmluZWQgX19DT0RFR0VBUkNfXyB8fCBkZWZpbmVkIF9fQk9STEFORENfXyB8fCBkZWZpbmVkIF9fTVdFUktTX18gfHwgZGVmaW5lZCBfX1NVTlBST19DQyB8fCBkZWZpbmVkIF9fSFBfYUNDICYmICFkZWZpbmVkIF9fRURHX18gfHwgZGVmaW5lZCBfX01SQ19fIHx8IGRlZmluZWQgX19TQ19fIHx8IGRlZmluZWQgX19JQk1DUFBfXyB8fCBkZWZpbmVkIF9fUEdJCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNTIDAKLSMgICAgLyogVkMrKyAoQy9DKyspICovCi0jICAgIGVsaWYgZGVmaW5lZCBfTVNDX1ZFUiAmJiBfTVNDX1ZFUiA+PSAxNDAwICYmICFkZWZpbmVkIF9fRURHX18KLSMgICAgICAgIGlmIF9NU0NfVkVSID49IDE0MDAKLSMgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNTIDEKLSMgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNTX01TVkMgMQotIyAgICAgICAgZWxzZQotIyAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ1MgMAotIyAgICAgICAgZW5kaWYKLSMgICAgLyogV2F2ZSAoQy9DKyspLCBHQ0MgKEMrKykgKi8KLSMgICAgZWxpZiBkZWZpbmVkIF9fV0FWRV9fICYmIF9fV0FWRV9IQVNfVkFSSUFESUNTX18gfHwgZGVmaW5lZCBfX0dOVUNfXyAmJiBfX0dYWF9FWFBFUklNRU5UQUxfQ1hYMFhfXwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDUyAxCi0jICAgIC8qIEVERy1iYXNlZCAoQy9DKyspLCBHQ0MgKEMpLCBhbmQgdW5rbm93biAoQy9DKyspICovCi0jICAgIGVsaWYgIWRlZmluZWQgX19jcGx1c3BsdXMgJiYgX19TVERDX1ZFUlNJT05fXyA+PSAxOTk5MDFMIHx8IF9fY3BsdXNwbHVzID49IDIwMTEwM0wKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ1MgMQotIyAgICBlbHNlCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNTIDAKLSMgICAgZW5kaWYKLSMgZWxpZiAhTkROQk9PU1RfUFBfVkFSSUFESUNTICsgMSA8IDIKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfVkFSSUFESUNTCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ1MgMQotIyAgICBpZiBkZWZpbmVkIF9NU0NfVkVSICYmIF9NU0NfVkVSID49IDE0MDAgJiYgIShkZWZpbmVkIF9fRURHX18gfHwgZGVmaW5lZCBfX0dDQ1hNTF9fIHx8IGRlZmluZWQgX19DVURBQ0NfXyB8fCBkZWZpbmVkIF9fUEFUSFNDQUxFX18gfHwgZGVmaW5lZCBfX2NsYW5nX18gfHwgZGVmaW5lZCBfX0RNQ19fIHx8IGRlZmluZWQgX19DT0RFR0VBUkNfXyB8fCBkZWZpbmVkIF9fQk9STEFORENfXyB8fCBkZWZpbmVkIF9fTVdFUktTX18gfHwgZGVmaW5lZCBfX1NVTlBST19DQyB8fCBkZWZpbmVkIF9fSFBfYUNDIHx8IGRlZmluZWQgX19NUkNfXyB8fCBkZWZpbmVkIF9fU0NfXyB8fCBkZWZpbmVkIF9fSUJNQ1BQX18gfHwgZGVmaW5lZCBfX1BHSSkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ1NfTVNWQyAxCi0jICAgIGVuZGlmCi0jIGVsc2UKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfVkFSSUFESUNTCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ1MgMAotIyBlbmRpZgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9kZWR1Y2VfZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2RlZHVjZV9kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmM3NGNjMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2RlZHVjZV9kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfQ09OVFJPTF9ERURVQ0VfRF9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9DT05UUk9MX0RFRFVDRV9EX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC93aGlsZS5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9kZXRhaWwvYXV0b19yZWMuaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9ERURVQ0VfRCAqLwotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfREVEVUNFX0QoKSBORE5CT09TVF9QUF9BVVRPX1JFQyhORE5CT09TVF9QUF9XSElMRV9QLCAyNTYpCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2RldGFpbC9kbWMvd2hpbGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9kZXRhaWwvZG1jL3doaWxlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTc2NmQ5Yi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2RldGFpbC9kbWMvd2hpbGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTM2ICswLDAgQEAKLSMgLyogQ29weXJpZ2h0IChDKSAyMDAxCi0jICAqIEhvdXNlbWFycXVlIE95Ci0jICAqIGh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tCi0jICAqCi0jICAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqLwotIwotIyAvKiBSZXZpc2VkIGJ5IFBhdWwgTWVuc29uaWRlcyAoMjAwMikgKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0NPTlRST0xfREVUQUlMX1dISUxFX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0NPTlRST0xfREVUQUlMX1dISUxFX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9paWYuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvbG9naWNhbC9ib29sLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL2VhdC5ocHA+Ci0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzFfQyhORE5CT09TVF9QUF9CT09MKHAjIygyLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzJfQyhORE5CT09TVF9QUF9CT09MKHAjIygzLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzNfQyhORE5CT09TVF9QUF9CT09MKHAjIyg0LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzRfQyhORE5CT09TVF9QUF9CT09MKHAjIyg1LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzVfQyhORE5CT09TVF9QUF9CT09MKHAjIyg2LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzZfQyhORE5CT09TVF9QUF9CT09MKHAjIyg3LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzdfQyhORE5CT09TVF9QUF9CT09MKHAjIyg4LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzhfQyhORE5CT09TVF9QUF9CT09MKHAjIyg5LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzlfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTBfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTFfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTJfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTNfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTRfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTVfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTZfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTdfQyhORE5CT09TVF9QUF9CT09MKHAjIygxOCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMThfQyhORE5CT09TVF9QUF9CT09MKHAjIygxOSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTlfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjBfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjFfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjJfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjNfQyhORE5CT09TVF9QUF9CT09MKHAjIygyNCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjRfQyhORE5CT09TVF9QUF9CT09MKHAjIygyNSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjVfQyhORE5CT09TVF9QUF9CT09MKHAjIygyNiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjZfQyhORE5CT09TVF9QUF9CT09MKHAjIygyNywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjdfQyhORE5CT09TVF9QUF9CT09MKHAjIygyOCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjhfQyhORE5CT09TVF9QUF9CT09MKHAjIygyOSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjlfQyhORE5CT09TVF9QUF9CT09MKHAjIygzMCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMzBfQyhORE5CT09TVF9QUF9CT09MKHAjIygzMSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMzFfQyhORE5CT09TVF9QUF9CT09MKHAjIygzMiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMzJfQyhORE5CT09TVF9QUF9CT09MKHAjIygzMywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMzNfQyhORE5CT09TVF9QUF9CT09MKHAjIygzNCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMzRfQyhORE5CT09TVF9QUF9CT09MKHAjIygzNSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMzVfQyhORE5CT09TVF9QUF9CT09MKHAjIygzNiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMzZfQyhORE5CT09TVF9QUF9CT09MKHAjIygzNywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMzdfQyhORE5CT09TVF9QUF9CT09MKHAjIygzOCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMzhfQyhORE5CT09TVF9QUF9CT09MKHAjIygzOSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMzlfQyhORE5CT09TVF9QUF9CT09MKHAjIyg0MCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNDBfQyhORE5CT09TVF9QUF9CT09MKHAjIyg0MSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNDFfQyhORE5CT09TVF9QUF9CT09MKHAjIyg0MiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNDJfQyhORE5CT09TVF9QUF9CT09MKHAjIyg0MywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNDNfQyhORE5CT09TVF9QUF9CT09MKHAjIyg0NCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNDRfQyhORE5CT09TVF9QUF9CT09MKHAjIyg0NSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNDVfQyhORE5CT09TVF9QUF9CT09MKHAjIyg0NiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNDZfQyhORE5CT09TVF9QUF9CT09MKHAjIyg0NywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNDdfQyhORE5CT09TVF9QUF9CT09MKHAjIyg0OCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNDhfQyhORE5CT09TVF9QUF9CT09MKHAjIyg0OSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNDlfQyhORE5CT09TVF9QUF9CT09MKHAjIyg1MCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNTBfQyhORE5CT09TVF9QUF9CT09MKHAjIyg1MSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNTFfQyhORE5CT09TVF9QUF9CT09MKHAjIyg1MiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNTJfQyhORE5CT09TVF9QUF9CT09MKHAjIyg1MywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNTNfQyhORE5CT09TVF9QUF9CT09MKHAjIyg1NCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNTRfQyhORE5CT09TVF9QUF9CT09MKHAjIyg1NSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNTVfQyhORE5CT09TVF9QUF9CT09MKHAjIyg1NiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNTZfQyhORE5CT09TVF9QUF9CT09MKHAjIyg1NywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNTdfQyhORE5CT09TVF9QUF9CT09MKHAjIyg1OCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNThfQyhORE5CT09TVF9QUF9CT09MKHAjIyg1OSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNTlfQyhORE5CT09TVF9QUF9CT09MKHAjIyg2MCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNjBfQyhORE5CT09TVF9QUF9CT09MKHAjIyg2MSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNjFfQyhORE5CT09TVF9QUF9CT09MKHAjIyg2MiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNjJfQyhORE5CT09TVF9QUF9CT09MKHAjIyg2MywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNjNfQyhORE5CT09TVF9QUF9CT09MKHAjIyg2NCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNjRfQyhORE5CT09TVF9QUF9CT09MKHAjIyg2NSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNjVfQyhORE5CT09TVF9QUF9CT09MKHAjIyg2NiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNjZfQyhORE5CT09TVF9QUF9CT09MKHAjIyg2NywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNjdfQyhORE5CT09TVF9QUF9CT09MKHAjIyg2OCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNjhfQyhORE5CT09TVF9QUF9CT09MKHAjIyg2OSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNjlfQyhORE5CT09TVF9QUF9CT09MKHAjIyg3MCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNzBfQyhORE5CT09TVF9QUF9CT09MKHAjIyg3MSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNzFfQyhORE5CT09TVF9QUF9CT09MKHAjIyg3MiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNzJfQyhORE5CT09TVF9QUF9CT09MKHAjIyg3MywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNzNfQyhORE5CT09TVF9QUF9CT09MKHAjIyg3NCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNzRfQyhORE5CT09TVF9QUF9CT09MKHAjIyg3NSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNzVfQyhORE5CT09TVF9QUF9CT09MKHAjIyg3NiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNzZfQyhORE5CT09TVF9QUF9CT09MKHAjIyg3NywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNzdfQyhORE5CT09TVF9QUF9CT09MKHAjIyg3OCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNzhfQyhORE5CT09TVF9QUF9CT09MKHAjIyg3OSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNzlfQyhORE5CT09TVF9QUF9CT09MKHAjIyg4MCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfODBfQyhORE5CT09TVF9QUF9CT09MKHAjIyg4MSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfODFfQyhORE5CT09TVF9QUF9CT09MKHAjIyg4MiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfODJfQyhORE5CT09TVF9QUF9CT09MKHAjIyg4MywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfODNfQyhORE5CT09TVF9QUF9CT09MKHAjIyg4NCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfODRfQyhORE5CT09TVF9QUF9CT09MKHAjIyg4NSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfODVfQyhORE5CT09TVF9QUF9CT09MKHAjIyg4NiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfODZfQyhORE5CT09TVF9QUF9CT09MKHAjIyg4NywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfODdfQyhORE5CT09TVF9QUF9CT09MKHAjIyg4OCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfODhfQyhORE5CT09TVF9QUF9CT09MKHAjIyg4OSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfODlfQyhORE5CT09TVF9QUF9CT09MKHAjIyg5MCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfOTBfQyhORE5CT09TVF9QUF9CT09MKHAjIyg5MSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfOTFfQyhORE5CT09TVF9QUF9CT09MKHAjIyg5MiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfOTJfQyhORE5CT09TVF9QUF9CT09MKHAjIyg5MywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfOTNfQyhORE5CT09TVF9QUF9CT09MKHAjIyg5NCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfOTRfQyhORE5CT09TVF9QUF9CT09MKHAjIyg5NSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfOTVfQyhORE5CT09TVF9QUF9CT09MKHAjIyg5NiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfOTZfQyhORE5CT09TVF9QUF9CT09MKHAjIyg5NywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfOTdfQyhORE5CT09TVF9QUF9CT09MKHAjIyg5OCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfOThfQyhORE5CT09TVF9QUF9CT09MKHAjIyg5OSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfOTlfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMDAsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwMChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMDBfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMDEsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwMShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMDFfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMDIsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwMihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMDJfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMDMsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwMyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMDNfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMDQsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwNChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMDRfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMDUsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwNShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMDVfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMDYsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwNihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMDZfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMDcsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwNyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMDdfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMDgsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwOChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMDhfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMDksIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwOShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMDlfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMTAsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExMChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMTBfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMTEsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExMShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMTFfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMTIsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExMihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMTJfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMTMsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExMyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMTNfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMTQsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExNChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMTRfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMTUsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExNShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMTVfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMTYsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExNihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMTZfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMTcsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExNyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMTdfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMTgsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExOChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMThfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMTksIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExOShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMTlfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMjAsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyMChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMjBfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMjEsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyMShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMjFfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMjIsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyMihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMjJfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMjMsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyMyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMjNfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMjQsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyNChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMjRfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMjUsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyNShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMjVfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMjYsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyNihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMjZfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMjcsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyNyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMjdfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMjgsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyOChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMjhfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMjksIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyOShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMjlfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMzAsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzMChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMzBfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMzEsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzMShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMzFfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMzIsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzMihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMzJfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMzMsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzMyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMzNfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMzQsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzNChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMzRfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMzUsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzNShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMzVfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMzYsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzNihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMzZfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMzcsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzNyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMzdfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMzgsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzOChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMzhfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMzksIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzOShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMzlfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNDAsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0MChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNDBfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNDEsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0MShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNDFfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNDIsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0MihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNDJfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNDMsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0MyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNDNfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNDQsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0NChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNDRfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNDUsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0NShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNDVfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNDYsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0NihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNDZfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNDcsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0NyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNDdfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNDgsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0OChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNDhfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNDksIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0OShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNDlfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNTAsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1MChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNTBfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNTEsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1MShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNTFfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNTIsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1MihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNTJfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNTMsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1MyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNTNfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNTQsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1NChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNTRfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNTUsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1NShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNTVfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNTYsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1NihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNTZfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNTcsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1NyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNTdfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNTgsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1OChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNThfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNTksIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1OShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNTlfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNjAsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2MChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNjBfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNjEsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2MShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNjFfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNjIsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2MihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNjJfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNjMsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2MyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNjNfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNjQsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2NChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNjRfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNjUsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2NShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNjVfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNjYsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2NihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNjZfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNjcsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2NyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNjdfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNjgsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2OChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNjhfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNjksIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2OShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNjlfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNzAsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3MChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNzBfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNzEsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3MShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNzFfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNzIsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3MihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNzJfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNzMsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3MyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNzNfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNzQsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3NChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNzRfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNzUsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3NShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNzVfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNzYsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3NihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNzZfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNzcsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3NyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNzdfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNzgsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3OChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNzhfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNzksIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3OShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNzlfQyhORE5CT09TVF9QUF9CT09MKHAjIygxODAsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4MChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xODBfQyhORE5CT09TVF9QUF9CT09MKHAjIygxODEsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4MShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xODFfQyhORE5CT09TVF9QUF9CT09MKHAjIygxODIsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4MihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xODJfQyhORE5CT09TVF9QUF9CT09MKHAjIygxODMsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4MyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xODNfQyhORE5CT09TVF9QUF9CT09MKHAjIygxODQsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4NChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xODRfQyhORE5CT09TVF9QUF9CT09MKHAjIygxODUsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4NShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xODVfQyhORE5CT09TVF9QUF9CT09MKHAjIygxODYsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4NihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xODZfQyhORE5CT09TVF9QUF9CT09MKHAjIygxODcsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4NyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xODdfQyhORE5CT09TVF9QUF9CT09MKHAjIygxODgsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4OChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xODhfQyhORE5CT09TVF9QUF9CT09MKHAjIygxODksIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4OShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xODlfQyhORE5CT09TVF9QUF9CT09MKHAjIygxOTAsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5MChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xOTBfQyhORE5CT09TVF9QUF9CT09MKHAjIygxOTEsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5MShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xOTFfQyhORE5CT09TVF9QUF9CT09MKHAjIygxOTIsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5MihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xOTJfQyhORE5CT09TVF9QUF9CT09MKHAjIygxOTMsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5MyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xOTNfQyhORE5CT09TVF9QUF9CT09MKHAjIygxOTQsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5NChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xOTRfQyhORE5CT09TVF9QUF9CT09MKHAjIygxOTUsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5NShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xOTVfQyhORE5CT09TVF9QUF9CT09MKHAjIygxOTYsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5NihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xOTZfQyhORE5CT09TVF9QUF9CT09MKHAjIygxOTcsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5NyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xOTdfQyhORE5CT09TVF9QUF9CT09MKHAjIygxOTgsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5OChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xOThfQyhORE5CT09TVF9QUF9CT09MKHAjIygxOTksIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5OShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xOTlfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMDAsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwMChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMDBfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMDEsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwMShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMDFfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMDIsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwMihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMDJfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMDMsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwMyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMDNfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMDQsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwNChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMDRfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMDUsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwNShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMDVfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMDYsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwNihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMDZfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMDcsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwNyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMDdfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMDgsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwOChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMDhfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMDksIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwOShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMDlfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMTAsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxMChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMTBfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMTEsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxMShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMTFfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMTIsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxMihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMTJfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMTMsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxMyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMTNfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMTQsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxNChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMTRfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMTUsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxNShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMTVfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMTYsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxNihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMTZfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMTcsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxNyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMTdfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMTgsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxOChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMThfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMTksIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxOShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMTlfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMjAsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyMChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMjBfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMjEsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyMShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMjFfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMjIsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyMihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMjJfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMjMsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyMyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMjNfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMjQsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyNChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMjRfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMjUsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyNShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMjVfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMjYsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyNihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMjZfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMjcsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyNyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMjdfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMjgsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyOChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMjhfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMjksIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyOShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMjlfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMzAsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzMChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMzBfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMzEsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzMShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMzFfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMzIsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzMihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMzJfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMzMsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzMyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMzNfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMzQsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzNChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMzRfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMzUsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzNShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMzVfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMzYsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzNihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMzZfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMzcsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzNyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMzdfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMzgsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzOChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMzhfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMzksIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzOShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMzlfQyhORE5CT09TVF9QUF9CT09MKHAjIygyNDAsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0MChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNDBfQyhORE5CT09TVF9QUF9CT09MKHAjIygyNDEsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0MShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNDFfQyhORE5CT09TVF9QUF9CT09MKHAjIygyNDIsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0MihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNDJfQyhORE5CT09TVF9QUF9CT09MKHAjIygyNDMsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0MyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNDNfQyhORE5CT09TVF9QUF9CT09MKHAjIygyNDQsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0NChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNDRfQyhORE5CT09TVF9QUF9CT09MKHAjIygyNDUsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0NShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNDVfQyhORE5CT09TVF9QUF9CT09MKHAjIygyNDYsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0NihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNDZfQyhORE5CT09TVF9QUF9CT09MKHAjIygyNDcsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0NyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNDdfQyhORE5CT09TVF9QUF9CT09MKHAjIygyNDgsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0OChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNDhfQyhORE5CT09TVF9QUF9CT09MKHAjIygyNDksIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0OShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNDlfQyhORE5CT09TVF9QUF9CT09MKHAjIygyNTAsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI1MChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNTBfQyhORE5CT09TVF9QUF9CT09MKHAjIygyNTEsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI1MShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNTFfQyhORE5CT09TVF9QUF9CT09MKHAjIygyNTIsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI1MihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNTJfQyhORE5CT09TVF9QUF9CT09MKHAjIygyNTMsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI1MyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNTNfQyhORE5CT09TVF9QUF9CT09MKHAjIygyNTQsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI1NChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNTRfQyhORE5CT09TVF9QUF9CT09MKHAjIygyNTUsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI1NShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNTVfQyhORE5CT09TVF9QUF9CT09MKHAjIygyNTYsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI1NihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNTZfQyhORE5CT09TVF9QUF9CT09MKHAjIygyNTcsIHMpKSwgcCwgbywgcykKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzFfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzMsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfM19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV80LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzRfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoNSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzYsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV83LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzdfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfOCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoOCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTBfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTEsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDExLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEyLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxMiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTNfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTQsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE1LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxNSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTZfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTcsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE4LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxOCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xOSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTlfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjAsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDIwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIxLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyMSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjJfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjMsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDIzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzI0LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyNCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yNSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjVfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjYsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDI2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI2X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzI3LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyNywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yN19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yOCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjhfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDI5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI5X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzMwLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgzMCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zMF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8zMSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMzEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzFfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMzIsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDMyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzMyX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzMzLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgzMywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zM19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8zNCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMzQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzRfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMzUsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDM1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzM1X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzM2LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgzNiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zNl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8zNywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMzcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzdfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMzgsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDM4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzM4X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzM5LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgzOSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zOV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV80MCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoNDAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDBfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNDEsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDQxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQxX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzQyLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg0MiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80Ml9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV80MywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoNDMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDNfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNDQsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDQ0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQ0X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzQ1LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg0NSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80NV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV80NiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoNDYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDZfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNDcsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDQ3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQ3X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzQ4LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg0OCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80OF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV80OSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoNDksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDlfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNTAsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDUwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzUwX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzUxLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg1MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81MV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV81MiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoNTIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTJfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNTMsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDUzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzUzX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzU0LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg1NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81NF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV81NSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoNTUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTVfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNTYsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDU2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzU2X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzU3LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg1NywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81N19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV81OCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoNTgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNThfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNTksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDU5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzU5X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzYwLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg2MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82MF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV82MSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoNjEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjFfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNjIsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDYyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzYyX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzYzLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg2MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82M19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV82NCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoNjQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjRfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNjUsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDY1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzY1X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzY2LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg2NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82Nl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV82NywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoNjcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjdfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNjgsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDY4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzY4X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzY5LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg2OSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82OV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV83MCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoNzAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzBfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNzEsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDcxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzcxX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzcyLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg3MiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83Ml9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV83MywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoNzMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzNfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNzQsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDc0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzc0X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzc1LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg3NSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83NV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV83NiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoNzYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzZfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNzcsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDc3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzc3X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzc4LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg3OCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83OF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV83OSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoNzksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzlfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfODAsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDgwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzgwX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzgxLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg4MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84MV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV84MiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoODIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODJfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfODMsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDgzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzgzX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzg0LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg4NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84NF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV84NSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoODUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODVfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfODYsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDg2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzg2X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzg3LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg4NywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84N19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV84OCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoODgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODhfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfODksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDg5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzg5X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzkwLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg5MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85MF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV85MSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoOTEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTFfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfOTIsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDkyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzkyX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzkzLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg5MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85M19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV85NCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoOTQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTRfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfOTUsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDk1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzk1X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzk2LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg5NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85Nl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV85NywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoOTcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTdfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfOTgsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDk4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzk4X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzk5LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSg5OSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85OV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMDAsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDEwMCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDBfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTAxLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxMDEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTAxX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEwMiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTAyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwMl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMDMsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDEwMywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDNfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTA0LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxMDQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTA0X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEwNSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTA1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwNV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMDYsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDEwNiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDZfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTA3LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxMDcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTA3X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEwOCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTA4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwOF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMDksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDEwOSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDlfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTEwLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxMTAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTEwX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzExMSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTExLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExMV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMTIsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDExMiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTJfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTEzLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxMTMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTEzX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzExNCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTE0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExNF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMTUsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDExNSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTVfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTE2LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxMTYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTE2X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzExNywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTE3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExN19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMTgsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDExOCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMThfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTE5LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxMTksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTE5X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEyMCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTIwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyMF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMjEsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDEyMSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjFfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTIyLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxMjIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTIyX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEyMywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTIzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyM19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMjQsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDEyNCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjRfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTI1LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxMjUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTI1X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEyNiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTI2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyNl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMjcsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDEyNywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjdfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTI4LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxMjgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTI4X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEyOSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTI5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyOV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMzAsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDEzMCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzBfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTMxLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxMzEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTMxX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEzMiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTMyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzMl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMzMsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDEzMywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzNfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTM0LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxMzQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTM0X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEzNSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTM1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzNV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMzYsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDEzNiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzZfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTM3LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxMzcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTM3X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEzOCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTM4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzOF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMzksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDEzOSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzlfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTQwLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxNDAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQwX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE0MSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTQxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0MV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNDIsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE0MiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDJfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTQzLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxNDMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQzX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE0NCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTQ0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0NF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNDUsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE0NSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDVfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTQ2LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxNDYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQ2X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE0NywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTQ3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0N19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNDgsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE0OCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDhfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTQ5LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxNDksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQ5X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE1MCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTUwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1MF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNTEsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE1MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTFfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTUyLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxNTIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTUyX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE1MywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTUzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1M19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNTQsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE1NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTRfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTU1LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxNTUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTU1X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE1NiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTU2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1Nl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNTcsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE1NywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTdfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTU4LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxNTgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTU4X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE1OSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTU5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1OV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNjAsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE2MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjBfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTYxLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxNjEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTYxX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE2MiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTYyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2Ml9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNjMsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE2MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjNfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTY0LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxNjQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTY0X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE2NSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTY1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2NV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNjYsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE2NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjZfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTY3LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxNjcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTY3X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE2OCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTY4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2OF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNjksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE2OSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjlfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTcwLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxNzAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTcwX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE3MSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTcxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3MV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNzIsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE3MiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzJfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTczLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxNzMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTczX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE3NCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTc0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3NF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNzUsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE3NSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzVfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTc2LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxNzYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTc2X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE3NywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTc3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3N19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNzgsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE3OCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzhfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTc5LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxNzksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTc5X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE4MCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTgwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4MF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xODEsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE4MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODFfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTgyLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxODIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTgyX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE4MywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTgzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4M19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xODQsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE4NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODRfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTg1LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxODUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTg1X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE4NiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTg2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4Nl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xODcsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE4NywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODdfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTg4LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxODgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTg4X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE4OSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTg5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4OV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xOTAsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE5MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTBfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTkxLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxOTEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTkxX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE5MiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTkyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5Ml9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xOTMsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE5MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTNfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTk0LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxOTQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTk0X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE5NSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTk1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5NV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xOTYsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE5NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTZfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTk3LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgxOTcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTk3X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE5OCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMTk4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5OF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xOTksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDE5OSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTlfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjAwLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyMDAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjAwX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIwMSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjAxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwMV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMDIsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDIwMiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDJfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjAzLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyMDMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjAzX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIwNCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjA0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwNF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMDUsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDIwNSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDVfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjA2LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyMDYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjA2X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIwNywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjA3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwN19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMDgsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDIwOCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDhfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjA5LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyMDksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjA5X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIxMCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjEwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxMF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMTEsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDIxMSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTFfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjEyLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyMTIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjEyX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIxMywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjEzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxM19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMTQsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDIxNCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTRfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjE1LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyMTUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjE1X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIxNiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjE2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxNl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMTcsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDIxNywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTdfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjE4LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyMTgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjE4X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIxOSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjE5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxOV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMjAsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDIyMCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjBfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjIxLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyMjEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjIxX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIyMiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjIyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyMl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMjMsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDIyMywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjNfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjI0LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyMjQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjI0X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIyNSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjI1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyNV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMjYsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDIyNiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjZfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjI3LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyMjcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjI3X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIyOCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjI4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyOF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMjksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDIyOSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjlfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjMwLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyMzAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjMwX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIzMSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjMxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzMV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMzIsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDIzMiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzJfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjMzLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyMzMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjMzX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIzNCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjM0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzNF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMzUsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDIzNSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzVfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjM2LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyMzYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjM2X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIzNywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjM3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzN19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMzgsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDIzOCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzhfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjM5LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyMzksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjM5X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzI0MCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjQwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0MF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yNDEsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDI0MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDFfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjQyLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyNDIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQyX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzI0MywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjQzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0M19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yNDQsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDI0NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDRfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjQ1LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyNDUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQ1X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzI0NiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjQ2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0Nl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yNDcsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDI0NywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDdfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjQ4LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyNDgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQ4X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzI0OSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjQ5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0OV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yNTAsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDI1MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNTBfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjUxLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyNTEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjUxX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzI1MiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjUyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI1Ml9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yNTMsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDI1MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNTNfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjU0LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyNTQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjU0X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzI1NSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzIpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMSkoMjU1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI1NV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yNTYsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18yKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yXzEpKDI1NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNTZfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjU3LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMikocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMl8xKSgyNTcsIHMpKQotIwotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9kZXRhaWwvZWRnL3doaWxlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvZGV0YWlsL2VkZy93aGlsZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVlMTMwM2YuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9kZXRhaWwvZWRnL3doaWxlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUzNCArMCwwIEBACi0jIC8qIENvcHlyaWdodCAoQykgMjAwMQotIyAgKiBIb3VzZW1hcnF1ZSBPeQotIyAgKiBodHRwOi8vd3d3LmhvdXNlbWFycXVlLmNvbQotIyAgKgotIyAgKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKi8KLSMKLSMgLyogUmV2aXNlZCBieSBQYXVsIE1lbnNvbmlkZXMgKDIwMDIpICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9DT05UUk9MX0RFVEFJTF9FREdfV0hJTEVfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfQ09OVFJPTF9ERVRBSUxfRURHX1dISUxFX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9pZi5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9lYXQuaHBwPgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMl9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzNfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV80X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzZfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV83X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfOF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzlfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTBfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTFfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTJfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTNfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTRfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTVfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTZfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTdfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMThfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTlfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjBfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjFfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjJfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjNfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjRfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjVfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjZfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjdfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjhfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjlfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMzBfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMzFfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMzJfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMzNfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMzRfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMzVfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMzZfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMzdfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMzhfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMzlfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNDBfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNDFfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNDJfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNDNfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNDRfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNDVfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNDZfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNDdfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNDhfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNDlfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNTBfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNTFfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNTJfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNTNfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNTRfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNTVfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNTZfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNTdfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNThfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNTlfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNjBfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNjFfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNjJfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNjNfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNjRfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNjVfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNjZfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNjdfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNjhfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNjlfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNzBfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNzFfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNzJfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNzNfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNzRfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNzVfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNzZfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNzdfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNzhfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNzlfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfODBfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfODFfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfODJfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfODNfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfODRfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfODVfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfODZfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfODdfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfODhfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfODlfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfOTBfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfOTFfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfOTJfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfOTNfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfOTRfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfOTVfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfOTZfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfOTdfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfOThfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfOTlfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTAwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEwMF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTAxX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwMihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMDJfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTAzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEwM19JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTA0X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwNShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMDVfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTA2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEwNl9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTA3X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwOChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMDhfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTA5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEwOV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTEwX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExMShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMTFfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTEyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzExMl9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTEzX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExNChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMTRfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTE1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzExNV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTE2X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExNyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMTdfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTE4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzExOF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTE5X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyMChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMjBfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTIxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEyMV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTIyX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyMyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMjNfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTI0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEyNF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTI1X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyNihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMjZfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTI3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEyN19JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTI4X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyOShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMjlfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTMwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEzMF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTMxX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzMihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMzJfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTMzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEzM19JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTM0X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzNShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMzVfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTM2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEzNl9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTM3X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzOChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMzhfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTM5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEzOV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTQwX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0MShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNDFfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE0Ml9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTQzX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0NChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNDRfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQ1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE0NV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTQ2X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0NyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNDdfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQ4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE0OF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTQ5X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1MChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNTBfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTUxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE1MV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTUyX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1MyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNTNfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTU0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE1NF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTU1X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1NihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNTZfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTU3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE1N19JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTU4X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1OShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNTlfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTYwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE2MF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTYxX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2MihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNjJfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTYzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE2M19JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTY0X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2NShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNjVfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTY2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE2Nl9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTY3X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2OChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNjhfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTY5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE2OV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTcwX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3MShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNzFfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTcyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE3Ml9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTczX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3NChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNzRfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTc1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE3NV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTc2X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3NyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNzdfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTc4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE3OF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTc5X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4MChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xODBfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTgxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE4MV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTgyX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4MyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xODNfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTg0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE4NF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTg1X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4NihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xODZfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTg3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE4N19JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTg4X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4OShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xODlfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTkwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE5MF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTkxX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5MihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xOTJfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTkzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE5M19JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTk0X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5NShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xOTVfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTk2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE5Nl9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTk3X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5OChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xOThfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTk5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE5OV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjAwX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwMShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMDFfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjAyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIwMl9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjAzX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwNChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMDRfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjA1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIwNV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjA2X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwNyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMDdfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjA4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIwOF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjA5X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxMChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMTBfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjExKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIxMV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjEyX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxMyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMTNfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjE0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIxNF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjE1X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxNihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMTZfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjE3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIxN19JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjE4X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxOShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMTlfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjIwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIyMF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjIxX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyMihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMjJfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjIzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIyM19JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjI0X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyNShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMjVfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjI2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIyNl9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjI3X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyOChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMjhfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjI5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIyOV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjMwX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzMShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMzFfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjMyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIzMl9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjMzX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzNChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMzRfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjM1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIzNV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjM2X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzNyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMzdfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjM4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIzOF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjM5X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0MChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNDBfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI0MV9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjQyX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0MyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNDNfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQ0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI0NF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjQ1X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0NihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNDZfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQ3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI0N19JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjQ4X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0OShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNDlfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjUwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI1MF9JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNTEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjUxX0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI1MihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNTJfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjUzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI1M19JKHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNTQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjU0X0kocCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI1NShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNTVfSShwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjU2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI1Nl9JKHAsIG8sIHMpCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzJfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDMsIHMpLCBORE5CT09TVF9QUF9XSElMRV8zLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfM19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg1LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzVfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDYsIHMpLCBORE5CT09TVF9QUF9XSElMRV82LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNl9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg4LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzhfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDksIHMpLCBORE5CT09TVF9QUF9XSElMRV85LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTAsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTEsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTIsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMl9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTMsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xM19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTQsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTUsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTYsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNl9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTcsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xN19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTgsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxOCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTksIHMpLCBORE5CT09TVF9QUF9XSElMRV8xOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxOSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjAsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjEsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjIsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMl9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjMsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yM19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjQsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyNCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjUsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyNSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjYsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyNiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNl9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjcsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyNywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yN19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjgsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyOCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yOF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjksIHMpLCBORE5CT09TVF9QUF9XSElMRV8yOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyOSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yOV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMzAsIHMpLCBORE5CT09TVF9QUF9XSElMRV8zMCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygzMCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zMF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMzEsIHMpLCBORE5CT09TVF9QUF9XSElMRV8zMSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygzMSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zMV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMzIsIHMpLCBORE5CT09TVF9QUF9XSElMRV8zMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygzMiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zMl9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMzMsIHMpLCBORE5CT09TVF9QUF9XSElMRV8zMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygzMywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zM19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMzQsIHMpLCBORE5CT09TVF9QUF9XSElMRV8zNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygzNCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zNF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMzUsIHMpLCBORE5CT09TVF9QUF9XSElMRV8zNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygzNSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zNV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMzYsIHMpLCBORE5CT09TVF9QUF9XSElMRV8zNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygzNiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zNl9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMzcsIHMpLCBORE5CT09TVF9QUF9XSElMRV8zNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygzNywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zN19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMzgsIHMpLCBORE5CT09TVF9QUF9XSElMRV8zOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygzOCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zOF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMzksIHMpLCBORE5CT09TVF9QUF9XSElMRV8zOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygzOSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zOV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNDAsIHMpLCBORE5CT09TVF9QUF9XSElMRV80MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg0MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80MF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNDEsIHMpLCBORE5CT09TVF9QUF9XSElMRV80MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg0MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80MV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNDIsIHMpLCBORE5CT09TVF9QUF9XSElMRV80MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg0MiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80Ml9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNDMsIHMpLCBORE5CT09TVF9QUF9XSElMRV80MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg0MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80M19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNDQsIHMpLCBORE5CT09TVF9QUF9XSElMRV80NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg0NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80NF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNDUsIHMpLCBORE5CT09TVF9QUF9XSElMRV80NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg0NSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80NV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNDYsIHMpLCBORE5CT09TVF9QUF9XSElMRV80NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg0NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80Nl9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNDcsIHMpLCBORE5CT09TVF9QUF9XSElMRV80NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg0NywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80N19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNDgsIHMpLCBORE5CT09TVF9QUF9XSElMRV80OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg0OCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80OF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNDksIHMpLCBORE5CT09TVF9QUF9XSElMRV80OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg0OSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80OV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNTAsIHMpLCBORE5CT09TVF9QUF9XSElMRV81MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg1MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81MF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNTEsIHMpLCBORE5CT09TVF9QUF9XSElMRV81MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg1MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81MV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNTIsIHMpLCBORE5CT09TVF9QUF9XSElMRV81MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg1MiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81Ml9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNTMsIHMpLCBORE5CT09TVF9QUF9XSElMRV81MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg1MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81M19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNTQsIHMpLCBORE5CT09TVF9QUF9XSElMRV81NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg1NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81NF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNTUsIHMpLCBORE5CT09TVF9QUF9XSElMRV81NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg1NSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81NV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNTYsIHMpLCBORE5CT09TVF9QUF9XSElMRV81NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg1NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81Nl9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNTcsIHMpLCBORE5CT09TVF9QUF9XSElMRV81NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg1NywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81N19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNTgsIHMpLCBORE5CT09TVF9QUF9XSElMRV81OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg1OCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81OF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNTksIHMpLCBORE5CT09TVF9QUF9XSElMRV81OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg1OSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81OV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNjAsIHMpLCBORE5CT09TVF9QUF9XSElMRV82MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg2MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82MF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNjEsIHMpLCBORE5CT09TVF9QUF9XSElMRV82MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg2MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82MV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNjIsIHMpLCBORE5CT09TVF9QUF9XSElMRV82MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg2MiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82Ml9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNjMsIHMpLCBORE5CT09TVF9QUF9XSElMRV82MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg2MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82M19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNjQsIHMpLCBORE5CT09TVF9QUF9XSElMRV82NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg2NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82NF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNjUsIHMpLCBORE5CT09TVF9QUF9XSElMRV82NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg2NSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82NV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNjYsIHMpLCBORE5CT09TVF9QUF9XSElMRV82NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg2NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82Nl9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNjcsIHMpLCBORE5CT09TVF9QUF9XSElMRV82NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg2NywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82N19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNjgsIHMpLCBORE5CT09TVF9QUF9XSElMRV82OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg2OCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82OF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNjksIHMpLCBORE5CT09TVF9QUF9XSElMRV82OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg2OSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82OV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNzAsIHMpLCBORE5CT09TVF9QUF9XSElMRV83MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg3MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83MF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNzEsIHMpLCBORE5CT09TVF9QUF9XSElMRV83MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg3MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83MV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNzIsIHMpLCBORE5CT09TVF9QUF9XSElMRV83MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg3MiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83Ml9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNzMsIHMpLCBORE5CT09TVF9QUF9XSElMRV83MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg3MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83M19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNzQsIHMpLCBORE5CT09TVF9QUF9XSElMRV83NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg3NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83NF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNzUsIHMpLCBORE5CT09TVF9QUF9XSElMRV83NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg3NSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83NV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNzYsIHMpLCBORE5CT09TVF9QUF9XSElMRV83NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg3NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83Nl9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNzcsIHMpLCBORE5CT09TVF9QUF9XSElMRV83NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg3NywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83N19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNzgsIHMpLCBORE5CT09TVF9QUF9XSElMRV83OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg3OCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83OF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNzksIHMpLCBORE5CT09TVF9QUF9XSElMRV83OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg3OSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83OV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoODAsIHMpLCBORE5CT09TVF9QUF9XSElMRV84MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg4MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84MF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoODEsIHMpLCBORE5CT09TVF9QUF9XSElMRV84MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg4MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84MV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoODIsIHMpLCBORE5CT09TVF9QUF9XSElMRV84MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg4MiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84Ml9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoODMsIHMpLCBORE5CT09TVF9QUF9XSElMRV84MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg4MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84M19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoODQsIHMpLCBORE5CT09TVF9QUF9XSElMRV84NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg4NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84NF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoODUsIHMpLCBORE5CT09TVF9QUF9XSElMRV84NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg4NSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84NV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoODYsIHMpLCBORE5CT09TVF9QUF9XSElMRV84NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg4NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84Nl9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoODcsIHMpLCBORE5CT09TVF9QUF9XSElMRV84NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg4NywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84N19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoODgsIHMpLCBORE5CT09TVF9QUF9XSElMRV84OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg4OCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84OF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoODksIHMpLCBORE5CT09TVF9QUF9XSElMRV84OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg4OSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84OV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoOTAsIHMpLCBORE5CT09TVF9QUF9XSElMRV85MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg5MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85MF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoOTEsIHMpLCBORE5CT09TVF9QUF9XSElMRV85MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg5MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85MV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoOTIsIHMpLCBORE5CT09TVF9QUF9XSElMRV85MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg5MiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85Ml9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoOTMsIHMpLCBORE5CT09TVF9QUF9XSElMRV85MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg5MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85M19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoOTQsIHMpLCBORE5CT09TVF9QUF9XSElMRV85NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg5NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85NF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoOTUsIHMpLCBORE5CT09TVF9QUF9XSElMRV85NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg5NSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85NV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoOTYsIHMpLCBORE5CT09TVF9QUF9XSElMRV85NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg5NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85Nl9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoOTcsIHMpLCBORE5CT09TVF9QUF9XSElMRV85NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg5NywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85N19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoOTgsIHMpLCBORE5CT09TVF9QUF9XSElMRV85OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg5OCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85OF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoOTksIHMpLCBORE5CT09TVF9QUF9XSElMRV85OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg5OSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85OV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTAwLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTAwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEwMCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDBfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEwMSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEwMSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMDEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTAxX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMDIsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMDIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTAyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwMl9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTAzLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTAzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEwMywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDNfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEwNCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEwNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMDQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTA0X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMDUsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMDUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTA1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwNV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTA2LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTA2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEwNiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDZfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEwNywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEwNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMDcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTA3X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMDgsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMDgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTA4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwOF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTA5LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTA5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEwOSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDlfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDExMCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzExMCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMTAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTEwX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMTEsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMTEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTExLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExMV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTEyLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTEyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDExMiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTJfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDExMywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzExMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMTMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTEzX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMTQsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMTQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTE0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExNF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTE1LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTE1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDExNSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTVfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDExNiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzExNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMTYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTE2X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMTcsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMTcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTE3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExN19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTE4LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTE4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDExOCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMThfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDExOSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzExOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMTksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTE5X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMjAsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMjAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTIwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyMF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTIxLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTIxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEyMSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjFfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEyMiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEyMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMjIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTIyX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMjMsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMjMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTIzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyM19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTI0LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTI0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEyNCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjRfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEyNSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEyNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMjUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTI1X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMjYsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMjYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTI2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyNl9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTI3LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTI3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEyNywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjdfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEyOCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEyOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMjgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTI4X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMjksIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMjksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTI5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyOV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTMwLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTMwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEzMCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzBfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEzMSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEzMSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMzEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTMxX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMzIsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMzIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTMyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzMl9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTMzLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTMzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEzMywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzNfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEzNCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEzNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMzQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTM0X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMzUsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMzUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTM1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzNV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTM2LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTM2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEzNiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzZfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEzNywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEzNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMzcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTM3X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMzgsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMzgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTM4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzOF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTM5LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTM5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEzOSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzlfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE0MCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE0MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNDAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQwX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNDEsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNDEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTQxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0MV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTQyLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTQyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE0MiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDJfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE0MywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE0MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNDMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQzX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNDQsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNDQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTQ0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0NF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTQ1LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTQ1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE0NSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDVfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE0NiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE0NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNDYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQ2X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNDcsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNDcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTQ3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0N19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTQ4LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTQ4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE0OCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDhfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE0OSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE0OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNDksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQ5X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNTAsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNTAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTUwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1MF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTUxLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTUxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE1MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTFfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE1MiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE1MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNTIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTUyX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNTMsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNTMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTUzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1M19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTU0LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTU0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE1NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTRfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE1NSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE1NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNTUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTU1X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNTYsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNTYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTU2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1Nl9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTU3LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTU3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE1NywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTdfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE1OCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE1OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNTgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTU4X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNTksIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNTksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTU5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1OV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTYwLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTYwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE2MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjBfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE2MSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE2MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNjEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTYxX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNjIsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNjIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTYyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2Ml9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTYzLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTYzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE2MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjNfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE2NCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE2NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNjQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTY0X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNjUsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNjUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTY1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2NV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTY2LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTY2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE2NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjZfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE2NywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE2NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNjcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTY3X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNjgsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNjgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTY4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2OF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTY5LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTY5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE2OSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjlfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE3MCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE3MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNzAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTcwX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNzEsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNzEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTcxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3MV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTcyLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTcyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE3MiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzJfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE3MywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE3MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNzMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTczX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNzQsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNzQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTc0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3NF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTc1LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTc1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE3NSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzVfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE3NiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE3NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNzYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTc2X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNzcsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNzcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTc3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3N19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTc4LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTc4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE3OCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzhfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE3OSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE3OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNzksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTc5X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxODAsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xODAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTgwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4MF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTgxLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTgxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE4MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODFfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE4MiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE4MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxODIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTgyX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxODMsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xODMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTgzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4M19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTg0LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTg0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE4NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODRfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE4NSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE4NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxODUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTg1X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxODYsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xODYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTg2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4Nl9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTg3LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTg3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE4NywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODdfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE4OCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE4OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxODgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTg4X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxODksIHMpLCBORE5CT09TVF9QUF9XSElMRV8xODksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTg5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4OV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTkwLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTkwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE5MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTBfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE5MSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE5MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxOTEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTkxX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxOTIsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xOTIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTkyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5Ml9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTkzLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTkzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE5MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTNfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE5NCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE5NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxOTQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTk0X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxOTUsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xOTUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTk1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5NV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTk2LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTk2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE5NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTZfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE5NywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE5NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxOTcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTk3X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxOTgsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xOTgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTk4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5OF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTk5LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTk5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE5OSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTlfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIwMCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIwMCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMDAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjAwX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMDEsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMDEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjAxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwMV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjAyLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjAyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIwMiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDJfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIwMywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIwMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMDMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjAzX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMDQsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMDQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjA0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwNF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjA1LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjA1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIwNSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDVfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIwNiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIwNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMDYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjA2X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMDcsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMDcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjA3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwN19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjA4LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjA4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIwOCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDhfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIwOSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIwOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMDksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjA5X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMTAsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMTAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjEwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxMF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjExLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjExLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIxMSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTFfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIxMiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIxMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMTIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjEyX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMTMsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMTMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjEzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxM19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjE0LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjE0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIxNCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTRfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIxNSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIxNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMTUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjE1X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMTYsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMTYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjE2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxNl9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjE3LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjE3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIxNywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTdfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIxOCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIxOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMTgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjE4X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMTksIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMTksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjE5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxOV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjIwLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjIwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIyMCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjBfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIyMSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIyMSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMjEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjIxX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMjIsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMjIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjIyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyMl9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjIzLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjIzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIyMywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjNfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIyNCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIyNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMjQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjI0X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMjUsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMjUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjI1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyNV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjI2LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjI2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIyNiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjZfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIyNywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIyNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMjcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjI3X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMjgsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMjgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjI4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyOF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjI5LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjI5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIyOSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjlfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIzMCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIzMCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMzAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjMwX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMzEsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMzEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjMxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzMV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjMyLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjMyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIzMiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzJfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIzMywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIzMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMzMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjMzX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMzQsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMzQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjM0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzNF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjM1LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjM1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIzNSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzVfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIzNiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIzNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMzYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjM2X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMzcsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMzcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjM3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzN19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjM4LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjM4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIzOCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzhfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIzOSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIzOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMzksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjM5X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyNDAsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yNDAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjQwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0MF9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjQxLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjQxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDI0MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDFfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDI0MiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzI0MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyNDIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQyX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyNDMsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yNDMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjQzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0M19JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjQ0LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjQ0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDI0NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDRfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDI0NSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzI0NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyNDUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQ1X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyNDYsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yNDYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjQ2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0Nl9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjQ3LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjQ3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDI0NywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDdfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDI0OCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzI0OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyNDgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQ4X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyNDksIHMpLCBORE5CT09TVF9QUF9XSElMRV8yNDksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjQ5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0OV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjUwLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjUwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDI1MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNTBfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDI1MSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzI1MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyNTEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjUxX0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyNTIsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yNTIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjUyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI1Ml9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjUzLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjUzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDI1MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNTNfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDI1NCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzI1NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyNTQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjU0X0kocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyNTUsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yNTUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjU1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI1NV9JKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjU2LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjU2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDI1NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNTZfSShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDI1NywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzI1NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyNTcsIHMpKQotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9kZXRhaWwvbXN2Yy93aGlsZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2RldGFpbC9tc3ZjL3doaWxlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmFjOTg2MS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2RldGFpbC9tc3ZjL3doaWxlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI3NyArMCwwIEBACi0jIC8qIENvcHlyaWdodCAoQykgMjAwMQotIyAgKiBIb3VzZW1hcnF1ZSBPeQotIyAgKiBodHRwOi8vd3d3LmhvdXNlbWFycXVlLmNvbQotIyAgKgotIyAgKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKi8KLSMKLSMgLyogUmV2aXNlZCBieSBQYXVsIE1lbnNvbmlkZXMgKDIwMDIpICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9DT05UUk9MX0RFVEFJTF9NU1ZDX1dISUxFX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0NPTlRST0xfREVUQUlMX01TVkNfV0hJTEVfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2lmLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL2VhdC5ocHA+Ci0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoOCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oOCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoOSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oOSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTAsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDExLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTEocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTMsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMyhwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE0LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTYsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNihwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE3LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTcocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxOCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTksIHMpLCBORE5CT09TVF9QUF9XSElMRV8xOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxOSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIwLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjAocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjIsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMihwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIzLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjMocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyNCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzI0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDI0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjUsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyNSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDI2LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjYocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyNywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzI3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDI3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjgsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyOCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yOChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDI5LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjkocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgzMCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzMwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDMwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzMwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMzEsIHMpLCBORE5CT09TVF9QUF9XSElMRV8zMSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygzMSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zMShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDMyLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMzIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMzIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzIocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgzMywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzMzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDMzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzMzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMzQsIHMpLCBORE5CT09TVF9QUF9XSElMRV8zNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygzNCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zNChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDM1LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMzUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMzUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzUocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgzNiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzM2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDM2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzM2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMzcsIHMpLCBORE5CT09TVF9QUF9XSElMRV8zNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygzNywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zNyhwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDM4LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMzgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMzgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzgocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgzOSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzM5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDM5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzM5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNDAsIHMpLCBORE5CT09TVF9QUF9XSElMRV80MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg0MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80MChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDQxLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNDEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNDEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDEocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg0MiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzQyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDQyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNDMsIHMpLCBORE5CT09TVF9QUF9XSElMRV80MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg0MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80MyhwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDQ0LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNDQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNDQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDQocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg0NSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzQ1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDQ1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQ1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNDYsIHMpLCBORE5CT09TVF9QUF9XSElMRV80NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg0NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80NihwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDQ3LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNDcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNDcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDcocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg0OCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzQ4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDQ4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQ4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNDksIHMpLCBORE5CT09TVF9QUF9XSElMRV80OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg0OSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80OShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDUwLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNTAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNTAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTAocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg1MSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzUxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDUxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzUxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNTIsIHMpLCBORE5CT09TVF9QUF9XSElMRV81MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg1MiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81MihwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDUzLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNTMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNTMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTMocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg1NCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzU0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDU0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzU0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNTUsIHMpLCBORE5CT09TVF9QUF9XSElMRV81NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg1NSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81NShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDU2LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNTYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNTYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTYocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg1NywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzU3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDU3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzU3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNTgsIHMpLCBORE5CT09TVF9QUF9XSElMRV81OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg1OCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81OChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDU5LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNTksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNTksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTkocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg2MCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzYwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDYwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzYwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNjEsIHMpLCBORE5CT09TVF9QUF9XSElMRV82MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg2MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82MShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDYyLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNjIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNjIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjIocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg2MywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzYzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDYzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzYzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNjQsIHMpLCBORE5CT09TVF9QUF9XSElMRV82NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg2NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82NChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDY1LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNjUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNjUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjUocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg2NiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzY2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDY2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzY2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNjcsIHMpLCBORE5CT09TVF9QUF9XSElMRV82NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg2NywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82NyhwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDY4LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNjgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNjgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjgocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg2OSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzY5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDY5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzY5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNzAsIHMpLCBORE5CT09TVF9QUF9XSElMRV83MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg3MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83MChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDcxLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNzEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNzEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzEocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg3MiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzcyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDcyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzcyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNzMsIHMpLCBORE5CT09TVF9QUF9XSElMRV83MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg3MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83MyhwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDc0LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNzQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNzQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzQocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg3NSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzc1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDc1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzc1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNzYsIHMpLCBORE5CT09TVF9QUF9XSElMRV83NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg3NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83NihwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDc3LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfNzcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oNzcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzcocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg3OCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzc4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDc4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzc4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoNzksIHMpLCBORE5CT09TVF9QUF9XSElMRV83OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg3OSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83OShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDgwLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfODAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oODAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODAocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg4MSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzgxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDgxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzgxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoODIsIHMpLCBORE5CT09TVF9QUF9XSElMRV84MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg4MiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84MihwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDgzLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfODMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oODMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODMocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg4NCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzg0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDg0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzg0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoODUsIHMpLCBORE5CT09TVF9QUF9XSElMRV84NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg4NSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84NShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDg2LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfODYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oODYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODYocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg4NywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzg3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDg3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzg3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoODgsIHMpLCBORE5CT09TVF9QUF9XSElMRV84OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg4OCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84OChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDg5LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfODksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oODksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODkocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg5MCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzkwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDkwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzkwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoOTEsIHMpLCBORE5CT09TVF9QUF9XSElMRV85MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg5MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85MShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDkyLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfOTIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oOTIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTIocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg5MywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzkzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDkzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzkzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoOTQsIHMpLCBORE5CT09TVF9QUF9XSElMRV85NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg5NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85NChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDk1LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfOTUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oOTUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTUocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg5NiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzk2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDk2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzk2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoOTcsIHMpLCBORE5CT09TVF9QUF9XSElMRV85NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbyg5NywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85NyhwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDk4LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfOTgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oOTgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTgocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCg5OSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzk5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDk5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzk5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTAwLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTAwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEwMCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDAocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMDEsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMDEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTAxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwMShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEwMiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEwMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMDIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTAyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTAzLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTAzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEwMywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDMocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMDQsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMDQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTA0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwNChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEwNSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEwNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMDUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTA1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTA2LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTA2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEwNiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDYocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMDcsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMDcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTA3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwNyhwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEwOCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEwOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMDgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTA4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTA5LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTA5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEwOSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDkocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMTAsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMTAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTEwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExMChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDExMSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzExMSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMTEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTExKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTEyLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTEyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDExMiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTIocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMTMsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMTMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTEzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExMyhwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDExNCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzExNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMTQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTE0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTE1LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTE1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDExNSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTUocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMTYsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMTYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTE2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExNihwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDExNywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzExNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMTcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTE3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTE4LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTE4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDExOCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTgocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMTksIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMTksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTE5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExOShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEyMCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEyMCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMjAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTIwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTIxLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTIxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEyMSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjEocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMjIsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMjIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTIyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyMihwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEyMywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEyMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMjMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTIzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTI0LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTI0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEyNCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjQocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMjUsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMjUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTI1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyNShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEyNiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEyNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMjYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTI2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTI3LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTI3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEyNywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjcocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMjgsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMjgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTI4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyOChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEyOSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEyOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMjksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTI5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTMwLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTMwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEzMCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzAocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMzEsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMzEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTMxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzMShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEzMiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEzMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMzIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTMyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTMzLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTMzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEzMywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzMocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMzQsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMzQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTM0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzNChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEzNSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEzNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMzUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTM1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTM2LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTM2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEzNiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzYocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxMzcsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xMzcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTM3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzNyhwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDEzOCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzEzOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxMzgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTM4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTM5LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTM5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDEzOSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzkocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNDAsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNDAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTQwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0MChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE0MSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE0MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNDEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTQyLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTQyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE0MiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDIocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNDMsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNDMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTQzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0MyhwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE0NCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE0NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNDQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQ0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTQ1LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTQ1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE0NSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDUocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNDYsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNDYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTQ2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0NihwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE0NywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE0NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNDcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQ3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTQ4LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTQ4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE0OCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDgocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNDksIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNDksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTQ5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0OShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE1MCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE1MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNTAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTUwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTUxLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTUxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE1MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTEocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNTIsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNTIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTUyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1MihwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE1MywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE1MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNTMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTUzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTU0LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTU0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE1NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTQocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNTUsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNTUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTU1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1NShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE1NiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE1NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNTYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTU2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTU3LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTU3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE1NywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTcocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNTgsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNTgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTU4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1OChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE1OSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE1OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNTksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTU5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTYwLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTYwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE2MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjAocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNjEsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNjEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTYxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2MShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE2MiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE2MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNjIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTYyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTYzLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTYzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE2MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjMocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNjQsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNjQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTY0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2NChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE2NSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE2NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNjUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTY1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTY2LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTY2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE2NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjYocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNjcsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNjcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTY3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2NyhwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE2OCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE2OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNjgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTY4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTY5LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTY5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE2OSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjkocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNzAsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNzAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTcwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3MChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE3MSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE3MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNzEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTcxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTcyLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTcyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE3MiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzIocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNzMsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNzMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTczLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3MyhwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE3NCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE3NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNzQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTc0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTc1LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTc1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE3NSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzUocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNzYsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNzYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTc2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3NihwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE3NywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE3NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxNzcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTc3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTc4LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTc4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE3OCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzgocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxNzksIHMpLCBORE5CT09TVF9QUF9XSElMRV8xNzksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTc5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3OShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE4MCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE4MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxODAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTgwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTgxLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTgxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE4MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODEocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxODIsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xODIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTgyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4MihwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE4MywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE4MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxODMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTgzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTg0LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTg0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE4NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODQocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxODUsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xODUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTg1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4NShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE4NiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE4NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxODYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTg2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTg3LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTg3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE4NywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODcocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxODgsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xODgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTg4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4OChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE4OSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE4OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxODksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTg5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTkwLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTkwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE5MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTAocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxOTEsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xOTEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTkxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5MShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE5MiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE5MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxOTIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTkyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTkzLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTkzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE5MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTMocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxOTQsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xOTQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTk0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5NChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE5NSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE5NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxOTUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTk1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTk2LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTk2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE5NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTYocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgxOTcsIHMpLCBORE5CT09TVF9QUF9XSElMRV8xOTcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMTk3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5NyhwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDE5OCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzE5OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygxOTgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTk4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTk5LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMTk5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDE5OSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTkocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMDAsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMDAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjAwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwMChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIwMSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIwMSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMDEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjAxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjAyLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjAyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIwMiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDIocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMDMsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMDMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjAzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwMyhwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIwNCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIwNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMDQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjA0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjA1LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjA1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIwNSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDUocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMDYsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMDYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjA2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwNihwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIwNywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIwNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMDcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjA3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjA4LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjA4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIwOCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDgocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMDksIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMDksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjA5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwOShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIxMCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIxMCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMTAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjEwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjExLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjExLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIxMSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTEocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMTIsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMTIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjEyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxMihwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIxMywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIxMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMTMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjEzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjE0LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjE0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIxNCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTQocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMTUsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMTUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjE1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxNShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIxNiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIxNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMTYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjE2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjE3LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjE3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIxNywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTcocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMTgsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMTgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjE4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxOChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIxOSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIxOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMTksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjE5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjIwLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjIwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIyMCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjAocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMjEsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMjEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjIxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyMShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIyMiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIyMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMjIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjIyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjIzLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjIzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIyMywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjMocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMjQsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMjQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjI0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyNChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIyNSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIyNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMjUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjI1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjI2LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjI2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIyNiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjYocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMjcsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMjcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjI3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyNyhwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIyOCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIyOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMjgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjI4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjI5LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjI5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIyOSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjkocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMzAsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMzAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjMwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzMChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIzMSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIzMSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMzEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjMxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjMyLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjMyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIzMiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzIocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMzMsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMzMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjMzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzMyhwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIzNCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIzNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMzQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjM0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjM1LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjM1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIzNSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzUocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMzYsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMzYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjM2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzNihwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDIzNywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzIzNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyMzcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjM3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjM4LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjM4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDIzOCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzgocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyMzksIHMpLCBORE5CT09TVF9QUF9XSElMRV8yMzksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjM5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzOShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDI0MCwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzI0MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyNDAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjQxLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjQxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDI0MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDEocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyNDIsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yNDIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjQyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0MihwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDI0MywgcyksIE5ETkJPT1NUX1BQX1dISUxFXzI0MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyNDMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjQ0LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjQ0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDI0NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDQocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyNDUsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yNDUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjQ1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0NShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDI0NiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzI0NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyNDYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQ2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjQ3LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjQ3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDI0NywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDcocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyNDgsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yNDgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjQ4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0OChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDI0OSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzI0OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyNDksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQ5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjUwLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjUwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDI1MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNTAocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyNTEsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yNTEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjUxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI1MShwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDI1MiwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzI1MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyNTIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjUyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjUzLCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjUzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDI1MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNTMocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyNTQsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yNTQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjU0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI1NChwLCBvLCBzKSBORE5CT09TVF9QUF9JRihwKDI1NSwgcyksIE5ETkJPT1NUX1BQX1dISUxFXzI1NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgbygyNTUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjU1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjU2LCBzKSwgTkROQk9PU1RfUFBfV0hJTEVfMjU2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBvKDI1NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNTYocCwgbywgcykgTkROQk9PU1RfUFBfSUYocCgyNTcsIHMpLCBORE5CT09TVF9QUF9XSElMRV8yNTcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIG8oMjU3LCBzKSkKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvZGV0YWlsL3doaWxlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvZGV0YWlsL3doaWxlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTFlOWVlMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2RldGFpbC93aGlsZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MzYgKzAsMCBAQAotIyAvKiBDb3B5cmlnaHQgKEMpIDIwMDEKLSMgICogSG91c2VtYXJxdWUgT3kKLSMgICogaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20KLSMgICoKLSMgICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICovCi0jCi0jIC8qIFJldmlzZWQgYnkgUGF1bCBNZW5zb25pZGVzICgyMDAyKSAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfQ09OVFJPTF9ERVRBSUxfV0hJTEVfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfQ09OVFJPTF9ERVRBSUxfV0hJTEVfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2lpZi5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9sb2dpY2FsL2Jvb2wuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvZWF0LmhwcD4KLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMV9DKE5ETkJPT1NUX1BQX0JPT0wocCgyLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzJfQyhORE5CT09TVF9QUF9CT09MKHAoMywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8zX0MoTkROQk9PU1RfUFBfQk9PTChwKDQsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNF9DKE5ETkJPT1NUX1BQX0JPT0wocCg1LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzVfQyhORE5CT09TVF9QUF9CT09MKHAoNiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV82X0MoTkROQk9PU1RfUFBfQk9PTChwKDcsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfN19DKE5ETkJPT1NUX1BQX0JPT0wocCg4LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzhfQyhORE5CT09TVF9QUF9CT09MKHAoOSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV85X0MoTkROQk9PU1RfUFBfQk9PTChwKDEwLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMF9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTFfQyhORE5CT09TVF9QUF9CT09MKHAoMTIsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEyX0MoTkROQk9PU1RfUFBfQk9PTChwKDEzLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xM19DKE5ETkJPT1NUX1BQX0JPT0wocCgxNCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTRfQyhORE5CT09TVF9QUF9CT09MKHAoMTUsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE1X0MoTkROQk9PU1RfUFBfQk9PTChwKDE2LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNl9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTdfQyhORE5CT09TVF9QUF9CT09MKHAoMTgsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE4X0MoTkROQk9PU1RfUFBfQk9PTChwKDE5LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xOV9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjBfQyhORE5CT09TVF9QUF9CT09MKHAoMjEsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIxX0MoTkROQk9PU1RfUFBfQk9PTChwKDIyLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMl9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjNfQyhORE5CT09TVF9QUF9CT09MKHAoMjQsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI0X0MoTkROQk9PU1RfUFBfQk9PTChwKDI1LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNV9DKE5ETkJPT1NUX1BQX0JPT0wocCgyNiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjZfQyhORE5CT09TVF9QUF9CT09MKHAoMjcsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI3X0MoTkROQk9PU1RfUFBfQk9PTChwKDI4LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yOChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yOF9DKE5ETkJPT1NUX1BQX0JPT0wocCgyOSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjlfQyhORE5CT09TVF9QUF9CT09MKHAoMzAsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzMwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzMwX0MoTkROQk9PU1RfUFBfQk9PTChwKDMxLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zMShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8zMV9DKE5ETkJPT1NUX1BQX0JPT0wocCgzMiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMzJfQyhORE5CT09TVF9QUF9CT09MKHAoMzMsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzMzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzMzX0MoTkROQk9PU1RfUFBfQk9PTChwKDM0LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zNChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8zNF9DKE5ETkJPT1NUX1BQX0JPT0wocCgzNSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMzVfQyhORE5CT09TVF9QUF9CT09MKHAoMzYsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzM2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzM2X0MoTkROQk9PU1RfUFBfQk9PTChwKDM3LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zNyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8zN19DKE5ETkJPT1NUX1BQX0JPT0wocCgzOCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMzhfQyhORE5CT09TVF9QUF9CT09MKHAoMzksIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzM5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzM5X0MoTkROQk9PU1RfUFBfQk9PTChwKDQwLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80MChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV80MF9DKE5ETkJPT1NUX1BQX0JPT0wocCg0MSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNDFfQyhORE5CT09TVF9QUF9CT09MKHAoNDIsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzQyX0MoTkROQk9PU1RfUFBfQk9PTChwKDQzLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80MyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV80M19DKE5ETkJPT1NUX1BQX0JPT0wocCg0NCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNDRfQyhORE5CT09TVF9QUF9CT09MKHAoNDUsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQ1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzQ1X0MoTkROQk9PU1RfUFBfQk9PTChwKDQ2LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80NihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV80Nl9DKE5ETkJPT1NUX1BQX0JPT0wocCg0NywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNDdfQyhORE5CT09TVF9QUF9CT09MKHAoNDgsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQ4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzQ4X0MoTkROQk9PU1RfUFBfQk9PTChwKDQ5LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80OShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV80OV9DKE5ETkJPT1NUX1BQX0JPT0wocCg1MCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNTBfQyhORE5CT09TVF9QUF9CT09MKHAoNTEsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzUxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzUxX0MoTkROQk9PU1RfUFBfQk9PTChwKDUyLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81MihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV81Ml9DKE5ETkJPT1NUX1BQX0JPT0wocCg1MywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNTNfQyhORE5CT09TVF9QUF9CT09MKHAoNTQsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzU0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzU0X0MoTkROQk9PU1RfUFBfQk9PTChwKDU1LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81NShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV81NV9DKE5ETkJPT1NUX1BQX0JPT0wocCg1NiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNTZfQyhORE5CT09TVF9QUF9CT09MKHAoNTcsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzU3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzU3X0MoTkROQk9PU1RfUFBfQk9PTChwKDU4LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81OChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV81OF9DKE5ETkJPT1NUX1BQX0JPT0wocCg1OSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNTlfQyhORE5CT09TVF9QUF9CT09MKHAoNjAsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzYwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzYwX0MoTkROQk9PU1RfUFBfQk9PTChwKDYxLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82MShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV82MV9DKE5ETkJPT1NUX1BQX0JPT0wocCg2MiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNjJfQyhORE5CT09TVF9QUF9CT09MKHAoNjMsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzYzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzYzX0MoTkROQk9PU1RfUFBfQk9PTChwKDY0LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82NChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV82NF9DKE5ETkJPT1NUX1BQX0JPT0wocCg2NSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNjVfQyhORE5CT09TVF9QUF9CT09MKHAoNjYsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzY2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzY2X0MoTkROQk9PU1RfUFBfQk9PTChwKDY3LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82NyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV82N19DKE5ETkJPT1NUX1BQX0JPT0wocCg2OCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNjhfQyhORE5CT09TVF9QUF9CT09MKHAoNjksIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzY5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzY5X0MoTkROQk9PU1RfUFBfQk9PTChwKDcwLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83MChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV83MF9DKE5ETkJPT1NUX1BQX0JPT0wocCg3MSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNzFfQyhORE5CT09TVF9QUF9CT09MKHAoNzIsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzcyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzcyX0MoTkROQk9PU1RfUFBfQk9PTChwKDczLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83MyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV83M19DKE5ETkJPT1NUX1BQX0JPT0wocCg3NCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNzRfQyhORE5CT09TVF9QUF9CT09MKHAoNzUsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzc1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzc1X0MoTkROQk9PU1RfUFBfQk9PTChwKDc2LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83NihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV83Nl9DKE5ETkJPT1NUX1BQX0JPT0wocCg3NywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfNzdfQyhORE5CT09TVF9QUF9CT09MKHAoNzgsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzc4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzc4X0MoTkROQk9PU1RfUFBfQk9PTChwKDc5LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83OShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV83OV9DKE5ETkJPT1NUX1BQX0JPT0wocCg4MCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfODBfQyhORE5CT09TVF9QUF9CT09MKHAoODEsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzgxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzgxX0MoTkROQk9PU1RfUFBfQk9PTChwKDgyLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84MihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV84Ml9DKE5ETkJPT1NUX1BQX0JPT0wocCg4MywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfODNfQyhORE5CT09TVF9QUF9CT09MKHAoODQsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzg0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzg0X0MoTkROQk9PU1RfUFBfQk9PTChwKDg1LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84NShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV84NV9DKE5ETkJPT1NUX1BQX0JPT0wocCg4NiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfODZfQyhORE5CT09TVF9QUF9CT09MKHAoODcsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzg3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzg3X0MoTkROQk9PU1RfUFBfQk9PTChwKDg4LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84OChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV84OF9DKE5ETkJPT1NUX1BQX0JPT0wocCg4OSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfODlfQyhORE5CT09TVF9QUF9CT09MKHAoOTAsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzkwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzkwX0MoTkROQk9PU1RfUFBfQk9PTChwKDkxLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85MShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV85MV9DKE5ETkJPT1NUX1BQX0JPT0wocCg5MiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfOTJfQyhORE5CT09TVF9QUF9CT09MKHAoOTMsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzkzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzkzX0MoTkROQk9PU1RfUFBfQk9PTChwKDk0LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85NChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV85NF9DKE5ETkJPT1NUX1BQX0JPT0wocCg5NSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfOTVfQyhORE5CT09TVF9QUF9CT09MKHAoOTYsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzk2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzk2X0MoTkROQk9PU1RfUFBfQk9PTChwKDk3LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85NyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV85N19DKE5ETkJPT1NUX1BQX0JPT0wocCg5OCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfOThfQyhORE5CT09TVF9QUF9CT09MKHAoOTksIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzk5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzk5X0MoTkROQk9PU1RfUFBfQk9PTChwKDEwMCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTAwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEwMF9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMDEsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwMShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMDFfQyhORE5CT09TVF9QUF9CT09MKHAoMTAyLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTAyX0MoTkROQk9PU1RfUFBfQk9PTChwKDEwMywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTAzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEwM19DKE5ETkJPT1NUX1BQX0JPT0wocCgxMDQsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwNChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMDRfQyhORE5CT09TVF9QUF9CT09MKHAoMTA1LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTA1X0MoTkROQk9PU1RfUFBfQk9PTChwKDEwNiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTA2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEwNl9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMDcsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwNyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMDdfQyhORE5CT09TVF9QUF9CT09MKHAoMTA4LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTA4X0MoTkROQk9PU1RfUFBfQk9PTChwKDEwOSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTA5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEwOV9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMTAsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExMChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMTBfQyhORE5CT09TVF9QUF9CT09MKHAoMTExLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTExX0MoTkROQk9PU1RfUFBfQk9PTChwKDExMiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTEyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzExMl9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMTMsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExMyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMTNfQyhORE5CT09TVF9QUF9CT09MKHAoMTE0LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTE0X0MoTkROQk9PU1RfUFBfQk9PTChwKDExNSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTE1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzExNV9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMTYsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExNihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMTZfQyhORE5CT09TVF9QUF9CT09MKHAoMTE3LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTE3X0MoTkROQk9PU1RfUFBfQk9PTChwKDExOCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTE4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzExOF9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMTksIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExOShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMTlfQyhORE5CT09TVF9QUF9CT09MKHAoMTIwLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTIwX0MoTkROQk9PU1RfUFBfQk9PTChwKDEyMSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTIxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEyMV9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMjIsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyMihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMjJfQyhORE5CT09TVF9QUF9CT09MKHAoMTIzLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTIzX0MoTkROQk9PU1RfUFBfQk9PTChwKDEyNCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTI0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEyNF9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMjUsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyNShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMjVfQyhORE5CT09TVF9QUF9CT09MKHAoMTI2LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTI2X0MoTkROQk9PU1RfUFBfQk9PTChwKDEyNywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTI3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEyN19DKE5ETkJPT1NUX1BQX0JPT0wocCgxMjgsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyOChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMjhfQyhORE5CT09TVF9QUF9CT09MKHAoMTI5LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTI5X0MoTkROQk9PU1RfUFBfQk9PTChwKDEzMCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTMwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEzMF9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMzEsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzMShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMzFfQyhORE5CT09TVF9QUF9CT09MKHAoMTMyLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTMyX0MoTkROQk9PU1RfUFBfQk9PTChwKDEzMywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTMzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEzM19DKE5ETkJPT1NUX1BQX0JPT0wocCgxMzQsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzNChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMzRfQyhORE5CT09TVF9QUF9CT09MKHAoMTM1LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTM1X0MoTkROQk9PU1RfUFBfQk9PTChwKDEzNiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTM2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEzNl9DKE5ETkJPT1NUX1BQX0JPT0wocCgxMzcsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzNyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xMzdfQyhORE5CT09TVF9QUF9CT09MKHAoMTM4LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTM4X0MoTkROQk9PU1RfUFBfQk9PTChwKDEzOSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTM5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzEzOV9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNDAsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0MChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNDBfQyhORE5CT09TVF9QUF9CT09MKHAoMTQxLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTQxX0MoTkROQk9PU1RfUFBfQk9PTChwKDE0MiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE0Ml9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNDMsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0MyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNDNfQyhORE5CT09TVF9QUF9CT09MKHAoMTQ0LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTQ0X0MoTkROQk9PU1RfUFBfQk9PTChwKDE0NSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQ1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE0NV9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNDYsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0NihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNDZfQyhORE5CT09TVF9QUF9CT09MKHAoMTQ3LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTQ3X0MoTkROQk9PU1RfUFBfQk9PTChwKDE0OCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQ4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE0OF9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNDksIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0OShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNDlfQyhORE5CT09TVF9QUF9CT09MKHAoMTUwLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTUwX0MoTkROQk9PU1RfUFBfQk9PTChwKDE1MSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTUxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE1MV9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNTIsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1MihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNTJfQyhORE5CT09TVF9QUF9CT09MKHAoMTUzLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTUzX0MoTkROQk9PU1RfUFBfQk9PTChwKDE1NCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTU0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE1NF9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNTUsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1NShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNTVfQyhORE5CT09TVF9QUF9CT09MKHAoMTU2LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTU2X0MoTkROQk9PU1RfUFBfQk9PTChwKDE1NywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTU3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE1N19DKE5ETkJPT1NUX1BQX0JPT0wocCgxNTgsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1OChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNThfQyhORE5CT09TVF9QUF9CT09MKHAoMTU5LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTU5X0MoTkROQk9PU1RfUFBfQk9PTChwKDE2MCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTYwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE2MF9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNjEsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2MShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNjFfQyhORE5CT09TVF9QUF9CT09MKHAoMTYyLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTYyX0MoTkROQk9PU1RfUFBfQk9PTChwKDE2MywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTYzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE2M19DKE5ETkJPT1NUX1BQX0JPT0wocCgxNjQsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2NChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNjRfQyhORE5CT09TVF9QUF9CT09MKHAoMTY1LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTY1X0MoTkROQk9PU1RfUFBfQk9PTChwKDE2NiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTY2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE2Nl9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNjcsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2NyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNjdfQyhORE5CT09TVF9QUF9CT09MKHAoMTY4LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTY4X0MoTkROQk9PU1RfUFBfQk9PTChwKDE2OSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTY5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE2OV9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNzAsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3MChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNzBfQyhORE5CT09TVF9QUF9CT09MKHAoMTcxLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTcxX0MoTkROQk9PU1RfUFBfQk9PTChwKDE3MiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTcyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE3Ml9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNzMsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3MyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNzNfQyhORE5CT09TVF9QUF9CT09MKHAoMTc0LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTc0X0MoTkROQk9PU1RfUFBfQk9PTChwKDE3NSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTc1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE3NV9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNzYsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3NihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNzZfQyhORE5CT09TVF9QUF9CT09MKHAoMTc3LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTc3X0MoTkROQk9PU1RfUFBfQk9PTChwKDE3OCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTc4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE3OF9DKE5ETkJPT1NUX1BQX0JPT0wocCgxNzksIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3OShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xNzlfQyhORE5CT09TVF9QUF9CT09MKHAoMTgwLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTgwX0MoTkROQk9PU1RfUFBfQk9PTChwKDE4MSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTgxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE4MV9DKE5ETkJPT1NUX1BQX0JPT0wocCgxODIsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4MihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xODJfQyhORE5CT09TVF9QUF9CT09MKHAoMTgzLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTgzX0MoTkROQk9PU1RfUFBfQk9PTChwKDE4NCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTg0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE4NF9DKE5ETkJPT1NUX1BQX0JPT0wocCgxODUsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4NShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xODVfQyhORE5CT09TVF9QUF9CT09MKHAoMTg2LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTg2X0MoTkROQk9PU1RfUFBfQk9PTChwKDE4NywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTg3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE4N19DKE5ETkJPT1NUX1BQX0JPT0wocCgxODgsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4OChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xODhfQyhORE5CT09TVF9QUF9CT09MKHAoMTg5LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTg5X0MoTkROQk9PU1RfUFBfQk9PTChwKDE5MCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTkwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE5MF9DKE5ETkJPT1NUX1BQX0JPT0wocCgxOTEsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5MShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xOTFfQyhORE5CT09TVF9QUF9CT09MKHAoMTkyLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTkyX0MoTkROQk9PU1RfUFBfQk9PTChwKDE5MywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTkzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE5M19DKE5ETkJPT1NUX1BQX0JPT0wocCgxOTQsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5NChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xOTRfQyhORE5CT09TVF9QUF9CT09MKHAoMTk1LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTk1X0MoTkROQk9PU1RfUFBfQk9PTChwKDE5NiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTk2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE5Nl9DKE5ETkJPT1NUX1BQX0JPT0wocCgxOTcsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5NyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8xOTdfQyhORE5CT09TVF9QUF9CT09MKHAoMTk4LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMTk4X0MoTkROQk9PU1RfUFBfQk9PTChwKDE5OSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTk5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzE5OV9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMDAsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwMChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMDBfQyhORE5CT09TVF9QUF9CT09MKHAoMjAxLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjAxX0MoTkROQk9PU1RfUFBfQk9PTChwKDIwMiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjAyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIwMl9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMDMsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwMyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMDNfQyhORE5CT09TVF9QUF9CT09MKHAoMjA0LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjA0X0MoTkROQk9PU1RfUFBfQk9PTChwKDIwNSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjA1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIwNV9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMDYsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwNihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMDZfQyhORE5CT09TVF9QUF9CT09MKHAoMjA3LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjA3X0MoTkROQk9PU1RfUFBfQk9PTChwKDIwOCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjA4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIwOF9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMDksIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwOShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMDlfQyhORE5CT09TVF9QUF9CT09MKHAoMjEwLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjEwX0MoTkROQk9PU1RfUFBfQk9PTChwKDIxMSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjExKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIxMV9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMTIsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxMihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMTJfQyhORE5CT09TVF9QUF9CT09MKHAoMjEzLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjEzX0MoTkROQk9PU1RfUFBfQk9PTChwKDIxNCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjE0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIxNF9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMTUsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxNShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMTVfQyhORE5CT09TVF9QUF9CT09MKHAoMjE2LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjE2X0MoTkROQk9PU1RfUFBfQk9PTChwKDIxNywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjE3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIxN19DKE5ETkJPT1NUX1BQX0JPT0wocCgyMTgsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxOChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMThfQyhORE5CT09TVF9QUF9CT09MKHAoMjE5LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjE5X0MoTkROQk9PU1RfUFBfQk9PTChwKDIyMCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjIwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIyMF9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMjEsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyMShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMjFfQyhORE5CT09TVF9QUF9CT09MKHAoMjIyLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjIyX0MoTkROQk9PU1RfUFBfQk9PTChwKDIyMywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjIzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIyM19DKE5ETkJPT1NUX1BQX0JPT0wocCgyMjQsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyNChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMjRfQyhORE5CT09TVF9QUF9CT09MKHAoMjI1LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjI1X0MoTkROQk9PU1RfUFBfQk9PTChwKDIyNiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjI2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIyNl9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMjcsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyNyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMjdfQyhORE5CT09TVF9QUF9CT09MKHAoMjI4LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjgocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjI4X0MoTkROQk9PU1RfUFBfQk9PTChwKDIyOSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjI5KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIyOV9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMzAsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzMChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMzBfQyhORE5CT09TVF9QUF9CT09MKHAoMjMxLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzEocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjMxX0MoTkROQk9PU1RfUFBfQk9PTChwKDIzMiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjMyKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIzMl9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMzMsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzMyhwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMzNfQyhORE5CT09TVF9QUF9CT09MKHAoMjM0LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzQocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjM0X0MoTkROQk9PU1RfUFBfQk9PTChwKDIzNSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjM1KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIzNV9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMzYsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzNihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMzZfQyhORE5CT09TVF9QUF9CT09MKHAoMjM3LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzcocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjM3X0MoTkROQk9PU1RfUFBfQk9PTChwKDIzOCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjM4KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzIzOF9DKE5ETkJPT1NUX1BQX0JPT0wocCgyMzksIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzOShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yMzlfQyhORE5CT09TVF9QUF9CT09MKHAoMjQwLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDAocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjQwX0MoTkROQk9PU1RfUFBfQk9PTChwKDI0MSwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQxKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI0MV9DKE5ETkJPT1NUX1BQX0JPT0wocCgyNDIsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0MihwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNDJfQyhORE5CT09TVF9QUF9CT09MKHAoMjQzLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDMocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjQzX0MoTkROQk9PU1RfUFBfQk9PTChwKDI0NCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQ0KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI0NF9DKE5ETkJPT1NUX1BQX0JPT0wocCgyNDUsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0NShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNDVfQyhORE5CT09TVF9QUF9CT09MKHAoMjQ2LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDYocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjQ2X0MoTkROQk9PU1RfUFBfQk9PTChwKDI0NywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQ3KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI0N19DKE5ETkJPT1NUX1BQX0JPT0wocCgyNDgsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0OChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNDhfQyhORE5CT09TVF9QUF9CT09MKHAoMjQ5LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDkocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjQ5X0MoTkROQk9PU1RfUFBfQk9PTChwKDI1MCwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjUwKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI1MF9DKE5ETkJPT1NUX1BQX0JPT0wocCgyNTEsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI1MShwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNTFfQyhORE5CT09TVF9QUF9CT09MKHAoMjUyLCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNTIocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjUyX0MoTkROQk9PU1RfUFBfQk9PTChwKDI1MywgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjUzKHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI1M19DKE5ETkJPT1NUX1BQX0JPT0wocCgyNTQsIHMpKSwgcCwgbywgcykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI1NChwLCBvLCBzKSBORE5CT09TVF9QUF9XSElMRV8yNTRfQyhORE5CT09TVF9QUF9CT09MKHAoMjU1LCBzKSksIHAsIG8sIHMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNTUocCwgbywgcykgTkROQk9PU1RfUFBfV0hJTEVfMjU1X0MoTkROQk9PU1RfUFBfQk9PTChwKDI1NiwgcykpLCBwLCBvLCBzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjU2KHAsIG8sIHMpIE5ETkJPT1NUX1BQX1dISUxFXzI1Nl9DKE5ETkJPT1NUX1BQX0JPT0wocCgyNTcsIHMpKSwgcCwgbywgcykKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzFfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfM19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV80LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzRfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV83LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzdfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTBfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDExLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTNfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTZfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxOCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTlfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjJfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzI0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjVfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI2X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzI3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yN19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjhfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI5X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzMwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgzMCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zMF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8zMSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMzEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzFfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMzIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDMyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzMyX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzMzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgzMywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zM19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8zNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMzQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzRfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMzUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDM1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzM1X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzM2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgzNiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zNl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8zNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMzcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMzdfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMzgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDM4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzM4X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzM5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgzOSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8zOV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV80MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNDAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDBfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNDEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDQxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQxX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzQyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg0MiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80Ml9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV80MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNDMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDNfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNDQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDQ0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQ0X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzQ1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg0NSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80NV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV80NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNDYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDZfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNDcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDQ3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzQ3X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzQ4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg0OCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV80OF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV80OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNDksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNDlfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNTAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDUwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzUwX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzUxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg1MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81MV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV81MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNTIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTJfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNTMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDUzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzUzX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzU0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg1NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81NF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV81NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNTUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNTVfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNTYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDU2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzU2X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzU3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg1NywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV81N19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV81OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNTgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNThfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNTksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDU5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzU5X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzYwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg2MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82MF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV82MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNjEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjFfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNjIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDYyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzYyX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzYzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg2MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82M19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV82NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNjQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjRfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNjUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDY1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzY1X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzY2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg2NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82Nl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV82NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNjcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNjdfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNjgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDY4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzY4X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzY5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg2OSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV82OV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV83MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNzAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzBfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNzEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDcxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzcxX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzcyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg3MiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83Ml9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV83MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNzMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzNfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNzQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDc0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzc0X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzc1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg3NSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83NV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV83NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNzYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzZfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfNzcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDc3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzc3X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzc4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg3OCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV83OF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV83OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNzksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfNzlfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfODAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDgwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzgwX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzgxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg4MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84MV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV84MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoODIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODJfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfODMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDgzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzgzX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzg0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg4NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84NF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV84NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoODUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODVfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfODYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDg2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzg2X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzg3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg4NywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV84N19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV84OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoODgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfODhfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfODksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDg5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzg5X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzkwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg5MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85MF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV85MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOTEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTFfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfOTIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDkyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzkyX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzkzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg5MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85M19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV85NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOTQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTRfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfOTUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDk1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzk1X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzk2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg5NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85Nl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV85NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOTcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfOTdfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfOTgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDk4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzk4X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzk5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg5OSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV85OV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMDAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwMCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDBfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTAxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMDEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTAxX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEwMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTAyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwMl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMDMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwMywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDNfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTA0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMDQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTA0X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEwNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTA1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwNV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMDYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwNiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDZfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTA3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMDcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTA3X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEwOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTA4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEwOF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMDksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwOSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMDlfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTEwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMTAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTEwX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzExMSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTExLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExMV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMTIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDExMiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTJfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTEzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMTMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTEzX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzExNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTE0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExNF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMTUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDExNSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMTVfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTE2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMTYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTE2X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzExNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTE3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzExN19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMTgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDExOCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMThfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTE5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMTksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTE5X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEyMCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTIwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyMF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMjEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEyMSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjFfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTIyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMjIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTIyX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEyMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTIzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyM19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMjQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEyNCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjRfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTI1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMjUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTI1X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEyNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTI2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyNl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMjcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEyNywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMjdfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTI4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMjgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTI4X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEyOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTI5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEyOV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMzAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzMCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzBfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTMxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMzEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTMxX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEzMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTMyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzMl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMzMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzMywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzNfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTM0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMzQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTM0X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEzNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTM1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzNV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMzYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzNiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzZfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTM3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMzcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTM3X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzEzOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTM4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzEzOF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xMzksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzOSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xMzlfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTQwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNDAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQwX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE0MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTQxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0MV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNDIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE0MiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDJfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTQzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNDMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQzX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE0NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTQ0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0NF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNDUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE0NSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDVfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTQ2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNDYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQ2X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE0NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTQ3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE0N19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNDgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE0OCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNDhfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTQ5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNDksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTQ5X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE1MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTUwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1MF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNTEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE1MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTFfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTUyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNTIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTUyX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE1MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTUzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1M19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNTQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE1NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTRfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTU1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNTUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTU1X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE1NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTU2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1Nl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNTcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE1NywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNTdfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTU4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNTgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTU4X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE1OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTU5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE1OV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNjAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjBfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTYxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNjEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTYxX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE2MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTYyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2Ml9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNjMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjNfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTY0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNjQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTY0X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE2NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTY1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2NV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNjYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjZfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTY3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNjcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTY3X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE2OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTY4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE2OF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNjksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2OSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNjlfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTcwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNzAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTcwX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE3MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTcxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3MV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNzIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE3MiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzJfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTczLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNzMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTczX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE3NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTc0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3NF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNzUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE3NSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzVfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTc2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNzYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTc2X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE3NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTc3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE3N19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xNzgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE3OCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xNzhfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTc5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNzksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTc5X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE4MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTgwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4MF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xODEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE4MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODFfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTgyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxODIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTgyX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE4MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTgzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4M19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xODQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE4NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODRfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTg1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxODUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTg1X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE4NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTg2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4Nl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xODcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE4NywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xODdfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTg4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxODgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTg4X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE4OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTg5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE4OV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xOTAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTBfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTkxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxOTEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTkxX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE5MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTkyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5Ml9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xOTMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTNfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTk0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxOTQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTk0X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE5NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTk1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5NV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xOTYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTZfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMTk3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxOTcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMTk3X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzE5OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTk4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzE5OF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8xOTksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5OSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8xOTlfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjAwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMDAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjAwX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIwMSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjAxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwMV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMDIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIwMiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDJfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjAzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMDMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjAzX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIwNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjA0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwNF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMDUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIwNSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDVfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjA2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMDYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjA2X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIwNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjA3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIwN19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMDgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIwOCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMDhfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjA5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMDksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjA5X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIxMCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjEwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxMF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMTEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIxMSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTFfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjEyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMTIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjEyX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIxMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjEzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxM19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMTQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIxNCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTRfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjE1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMTUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjE1X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIxNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjE2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxNl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMTcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIxNywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMTdfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjE4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMTgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjE4X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIxOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjE5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIxOV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMjAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyMCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjBfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjIxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMjEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjIxX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIyMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjIyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyMl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMjMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyMywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjNfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjI0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMjQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjI0X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIyNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjI1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyNV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMjYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyNiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjZfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjI3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMjcsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjI3X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIyOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjI4LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIyOF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMjksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyOSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMjlfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjMwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMzAsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjMwX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIzMSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjMxLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzMV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMzIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIzMiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzJfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjMzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMzMsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjMzX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIzNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjM0LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzNF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMzUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIzNSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzVfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjM2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMzYsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjM2X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzIzNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjM3LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzIzN19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yMzgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIzOCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yMzhfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjM5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMzksIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjM5X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzI0MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjQwLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0MF9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yNDEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI0MSwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDFfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjQyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNDIsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQyX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzI0MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjQzLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0M19DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yNDQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI0NCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDRfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjQ1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNDUsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQ1X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzI0NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjQ2LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0Nl9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yNDcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI0NywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNDdfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjQ4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNDgsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjQ4X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzI0OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjQ5LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI0OV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yNTAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI1MCwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNTBfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjUxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNTEsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjUxX0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzI1MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjUyLCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI1Ml9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yNTMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI1MywgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNTNfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjU0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNTQsIHMpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfMjU0X0MoYywgcCwgbywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX1dISUxFXzI1NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykocCwgbywgTkROQk9PU1RfUFBfSUlGKGMsIG8sIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjU1LCBzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFXzI1NV9DKGMsIHAsIG8sIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9XSElMRV8yNTYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKHAsIG8sIE5ETkJPT1NUX1BQX0lJRihjLCBvLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI1NiwgcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNTZfQyhjLCBwLCBvLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfV0hJTEVfMjU3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShwLCBvLCBORE5CT09TVF9QUF9JSUYoYywgbywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNTcsIHMpKQotIwotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9leHByX2lmLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvZXhwcl9pZi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1MWEzMjYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9leHByX2lmLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLSMgLyogQ29weXJpZ2h0IChDKSAyMDAxCi0jICAqIEhvdXNlbWFycXVlIE95Ci0jICAqIGh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tCi0jICAqCi0jICAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqLwotIwotIyAvKiBSZXZpc2VkIGJ5IFBhdWwgTWVuc29uaWRlcyAoMjAwMikgKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0NPTlRST0xfRVhQUl9JRl9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9DT05UUk9MX0VYUFJfSUZfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvZXhwcl9paWYuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvbG9naWNhbC9ib29sLmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfRVhQUl9JRiAqLwotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRURHKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VYUFJfSUYoY29uZCwgZXhwcikgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfQk9PTChjb25kKSwgZXhwcikKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRVhQUl9JRihjb25kLCBleHByKSBORE5CT09TVF9QUF9FWFBSX0lGX0koY29uZCwgZXhwcikKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VYUFJfSUZfSShjb25kLCBleHByKSBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9CT09MKGNvbmQpLCBleHByKQotIyBlbmRpZgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9leHByX2lpZi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2V4cHJfaWlmLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGZhNGFlYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2V4cHJfaWlmLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfQ09OVFJPTF9FWFBSX0lJRl9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9DT05UUk9MX0VYUFJfSUlGX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX0VYUFJfSUlGICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19NV0NDKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VYUFJfSUlGKGJpdCwgZXhwcikgTkROQk9PU1RfUFBfRVhQUl9JSUZfSShiaXQsIGV4cHIpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VYUFJfSUlGKGJpdCwgZXhwcikgTkROQk9PU1RfUFBfRVhQUl9JSUZfT08oKGJpdCwgZXhwcikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FWFBSX0lJRl9PTyhwYXIpIE5ETkJPT1NUX1BQX0VYUFJfSUlGX0kgIyMgcGFyCi0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9FWFBSX0lJRl9JKGJpdCwgZXhwcikgTkROQk9PU1RfUFBfRVhQUl9JSUZfICMjIGJpdChleHByKQotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfRVhQUl9JSUZfMChleHByKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRVhQUl9JSUZfMShleHByKSBleHByCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2lmLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvaWYuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYjJmMWM3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvaWYuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotIyAvKiBDb3B5cmlnaHQgKEMpIDIwMDEKLSMgICogSG91c2VtYXJxdWUgT3kKLSMgICogaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20KLSMgICoKLSMgICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICovCi0jCi0jIC8qIFJldmlzZWQgYnkgUGF1bCBNZW5zb25pZGVzICgyMDAyKSAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfQ09OVFJPTF9JRl9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9DT05UUk9MX0lGX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2lpZi5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9sb2dpY2FsL2Jvb2wuaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9JRiAqLwotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRURHKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lGKGNvbmQsIHQsIGYpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9CT09MKGNvbmQpLCB0LCBmKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JRihjb25kLCB0LCBmKSBORE5CT09TVF9QUF9JRl9JKGNvbmQsIHQsIGYpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JRl9JKGNvbmQsIHQsIGYpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9CT09MKGNvbmQpLCB0LCBmKQotIyBlbmRpZgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9paWYuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9paWYuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1Y2M2ZjIyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvaWlmLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfQ09OVFJPTF9JSUZfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfQ09OVFJPTF9JSUZfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX01XQ0MoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSUlGKGJpdCwgdCwgZikgTkROQk9PU1RfUFBfSUlGX0koYml0LCB0LCBmKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JSUYoYml0LCB0LCBmKSBORE5CT09TVF9QUF9JSUZfT08oKGJpdCwgdCwgZikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JSUZfT08ocGFyKSBORE5CT09TVF9QUF9JSUZfSSAjIyBwYXIKLSMgZW5kaWYKLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX01TVkMoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSUlGX0koYml0LCB0LCBmKSBORE5CT09TVF9QUF9JSUZfICMjIGJpdCh0LCBmKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JSUZfSShiaXQsIHQsIGYpIE5ETkJPT1NUX1BQX0lJRl9JSShORE5CT09TVF9QUF9JSUZfICMjIGJpdCh0LCBmKSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lJRl9JSShpZCkgaWQKLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lJRl8wKHQsIGYpIGYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lJRl8xKHQsIGYpIHQKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvd2hpbGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC93aGlsZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE1M2MzOTguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC93aGlsZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMTIgKzAsMCBAQAotIyAvKiBDb3B5cmlnaHQgKEMpIDIwMDEKLSMgICogSG91c2VtYXJxdWUgT3kKLSMgICogaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20KLSMgICoKLSMgICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICovCi0jCi0jIC8qIFJldmlzZWQgYnkgUGF1bCBNZW5zb25pZGVzICgyMDAyKSAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfQ09OVFJPTF9XSElMRV9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9DT05UUk9MX1dISUxFX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZGVidWcvZXJyb3IuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZGV0YWlsL2F1dG9fcmVjLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvZm9sZF9sZWZ0LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvZm9sZF9yaWdodC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9sb2dpY2FsL2JpdGFuZC5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX1dISUxFICovCi0jCi0jIGlmIDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFKHByZWQsIG9wLCBzdGF0ZSkKLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9XSElMRV8sIE5ETkJPT1NUX1BQX0FVVE9fUkVDKE5ETkJPT1NUX1BQX1dISUxFX1AsIDI1NikpCi0jCi0jIGlmIE5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9QKG4pIE5ETkJPT1NUX1BQX0JJVEFORChORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfLCBORE5CT09TVF9QUF9XSElMRV8gIyMgbihORE5CT09TVF9QUF9XSElMRV9GLCBORE5CT09TVF9QUF9OSUwsIE5ETkJPT1NUX1BQX05JTCkpLCBORE5CT09TVF9QUF9CSVRBTkQoTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLXywgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfICMjIG4oTkROQk9PU1RfUFBfTklMLCBORE5CT09TVF9QUF9OSUwsIE5ETkJPT1NUX1BQX05JTCkpLCBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLXywgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXyAjIyBuKE5ETkJPT1NUX1BQX05JTCwgTkROQk9PU1RfUFBfTklMLCBORE5CT09TVF9QUF9OSUwpKSkpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX1AobikgTkROQk9PU1RfUFBfQklUQU5EKE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9XSElMRV9DSEVDS18sIE5ETkJPT1NUX1BQX1dISUxFXyAjIyBuKE5ETkJPT1NUX1BQX1dISUxFX0YsIE5ETkJPT1NUX1BQX05JTCwgTkROQk9PU1RfUFBfTklMKSksIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS18sIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXyAjIyBuKE5ETkJPT1NUX1BQX05JTCwgTkROQk9PU1RfUFBfTklMLCBORE5CT09TVF9QUF9OSUwpKSkKLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0YoZCwgXykgMAotIwotIyBpZiBORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9kZXRhaWwvZWRnL3doaWxlLmhwcD4KLSMgZWxpZiBORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19NU1ZDKCkKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvZGV0YWlsL21zdmMvd2hpbGUuaHBwPgotIyBlbGlmIE5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0RNQygpCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2RldGFpbC9kbWMvd2hpbGUuaHBwPgotIyBlbHNlCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2RldGFpbC93aGlsZS5ocHA+Ci0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV8yNTcocCwgbywgcykgTkROQk9PU1RfUFBfRVJST1IoMHgwMDAxKQotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfTklMIDEKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzEocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMihwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8zKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzQocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfNShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV82KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzcocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfOChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV85KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzEwKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzExKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzEyKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzEzKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE0KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE1KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE2KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE3KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE4KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE5KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzIwKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzIxKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzIyKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzIzKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzI0KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzI1KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzI2KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzI3KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzI4KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzI5KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzMwKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzMxKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzMyKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzMzKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzM0KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzM1KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzM2KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzM3KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzM4KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzM5KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzQwKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzQxKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzQyKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzQzKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzQ0KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzQ1KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzQ2KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzQ3KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzQ4KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzQ5KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzUwKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzUxKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzUyKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzUzKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzU0KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzU1KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzU2KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzU3KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzU4KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzU5KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzYwKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzYxKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzYyKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzYzKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzY0KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzY1KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzY2KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzY3KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzY4KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzY5KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzcwKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzcxKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzcyKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzczKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzc0KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzc1KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzc2KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzc3KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzc4KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzc5KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzgwKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzgxKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzgyKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzgzKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzg0KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzg1KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzg2KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzg3KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzg4KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzg5KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzkwKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzkxKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzkyKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzkzKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzk0KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzk1KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzk2KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzk3KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzk4KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzk5KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzEwMChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xMDEocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTAyKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzEwMyhwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xMDQocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTA1KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzEwNihwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xMDcocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTA4KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzEwOShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xMTAocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTExKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzExMihwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xMTMocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTE0KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzExNShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xMTYocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTE3KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzExOChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xMTkocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTIwKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzEyMShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xMjIocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTIzKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzEyNChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xMjUocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTI2KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzEyNyhwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xMjgocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTI5KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzEzMChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xMzEocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTMyKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzEzMyhwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xMzQocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTM1KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzEzNihwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xMzcocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTM4KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzEzOShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xNDAocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTQxKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE0MihwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xNDMocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTQ0KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE0NShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xNDYocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTQ3KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE0OChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xNDkocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTUwKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE1MShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xNTIocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTUzKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE1NChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xNTUocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTU2KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE1NyhwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xNTgocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTU5KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE2MChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xNjEocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTYyKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE2MyhwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xNjQocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTY1KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE2NihwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xNjcocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTY4KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE2OShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xNzAocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTcxKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE3MihwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xNzMocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTc0KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE3NShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xNzYocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTc3KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE3OChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xNzkocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTgwKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE4MShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xODIocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTgzKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE4NChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xODUocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTg2KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE4NyhwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xODgocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTg5KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE5MChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xOTEocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTkyKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE5MyhwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xOTQocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTk1KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE5NihwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8xOTcocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMTk4KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzE5OShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yMDAocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjAxKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzIwMihwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yMDMocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjA0KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzIwNShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yMDYocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjA3KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzIwOChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yMDkocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjEwKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzIxMShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yMTIocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjEzKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzIxNChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yMTUocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjE2KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzIxNyhwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yMTgocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjE5KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzIyMChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yMjEocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjIyKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzIyMyhwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yMjQocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjI1KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzIyNihwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yMjcocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjI4KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzIyOShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yMzAocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjMxKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzIzMihwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yMzMocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjM0KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzIzNShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yMzYocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjM3KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzIzOChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yMzkocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjQwKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzI0MShwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yNDIocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjQzKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzI0NChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yNDUocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjQ2KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzI0NyhwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yNDgocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjQ5KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzI1MChwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yNTEocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjUyKHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzI1MyhwLCBvLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9XSElMRV9DSEVDS19ORE5CT09TVF9QUF9XSElMRV8yNTQocCwgbywgcykgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfV0hJTEVfQ0hFQ0tfTkROQk9PU1RfUFBfV0hJTEVfMjU1KHAsIG8sIHMpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1dISUxFX0NIRUNLX05ETkJPT1NUX1BQX1dISUxFXzI1NihwLCBvLCBzKSAwCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9kZWJ1Zy9lcnJvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9kZWJ1Zy9lcnJvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY5ZjEzNTguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvZGVidWcvZXJyb3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9ERUJVR19FUlJPUl9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9ERUJVR19FUlJPUl9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfRVJST1IgKi8KLSMKLSMgaWYgTkROQk9PU1RfUFBfQ09ORklHX0VSUk9SUwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRVJST1IoY29kZSkgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX0VSUk9SXywgY29kZSkKLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0VSUk9SXzB4MDAwMCBORE5CT09TVF9QUF9FUlJPUigweDAwMDAsIE5ETkJPT1NUX1BQX0lOREVYX09VVF9PRl9CT1VORFMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9FUlJPUl8weDAwMDEgTkROQk9PU1RfUFBfRVJST1IoMHgwMDAxLCBORE5CT09TVF9QUF9XSElMRV9PVkVSRkxPVykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0VSUk9SXzB4MDAwMiBORE5CT09TVF9QUF9FUlJPUigweDAwMDIsIE5ETkJPT1NUX1BQX0ZPUl9PVkVSRkxPVykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0VSUk9SXzB4MDAwMyBORE5CT09TVF9QUF9FUlJPUigweDAwMDMsIE5ETkJPT1NUX1BQX1JFUEVBVF9PVkVSRkxPVykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0VSUk9SXzB4MDAwNCBORE5CT09TVF9QUF9FUlJPUigweDAwMDQsIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9PVkVSRkxPVykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0VSUk9SXzB4MDAwNSBORE5CT09TVF9QUF9FUlJPUigweDAwMDUsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX09WRVJGTE9XKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRVJST1JfMHgwMDA2IE5ETkJPT1NUX1BQX0VSUk9SKDB4MDAwNiwgTkROQk9PU1RfUFBfQVJJVEhNRVRJQ19PVkVSRkxPVykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0VSUk9SXzB4MDAwNyBORE5CT09TVF9QUF9FUlJPUigweDAwMDcsIE5ETkJPT1NUX1BQX0RJVklTSU9OX0JZX1pFUk8pCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9kZWMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvZGVjLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTQ4ZTczOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9kZWMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9ERUNfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfREVDX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9kZWMuaHBwPgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvZGV0YWlsL2F1dG9fcmVjLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2RldGFpbC9hdXRvX3JlYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBiZjRhY2UuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvZGV0YWlsL2F1dG9fcmVjLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI5MyArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jCi0jIGlmIE5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0RNQygpCi0jICAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZGV0YWlsL2RtYy9hdXRvX3JlYy5ocHA+Ci0jIGVsc2UKLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9ERVRBSUxfQVVUT19SRUNfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfREVUQUlMX0FVVE9fUkVDX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9paWYuaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9BVVRPX1JFQyAqLwotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfQVVUT19SRUMocHJlZCwgbikgTkROQk9PU1RfUFBfTk9ERV9FTlRSWV8gIyMgbihwcmVkKQotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV9FTlRSWV8yNTYocCkgTkROQk9PU1RfUFBfTk9ERV8xMjgocCkocCkocCkocCkocCkocCkocCkocCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfRU5UUllfMTI4KHApIE5ETkJPT1NUX1BQX05PREVfNjQocCkocCkocCkocCkocCkocCkocCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfRU5UUllfNjQocCkgTkROQk9PU1RfUFBfTk9ERV8zMihwKShwKShwKShwKShwKShwKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV9FTlRSWV8zMihwKSBORE5CT09TVF9QUF9OT0RFXzE2KHApKHApKHApKHApKHApCi0jIGRlZmluZSBORE5CT09TVF9QUF9OT0RFX0VOVFJZXzE2KHApIE5ETkJPT1NUX1BQX05PREVfOChwKShwKShwKShwKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV9FTlRSWV84KHApIE5ETkJPT1NUX1BQX05PREVfNChwKShwKShwKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV9FTlRSWV80KHApIE5ETkJPT1NUX1BQX05PREVfMihwKShwKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV9FTlRSWV8yKHApIE5ETkJPT1NUX1BQX05PREVfMShwKQotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMjgocCkgTkROQk9PU1RfUFBfSUlGKHAoMTI4KSwgTkROQk9PU1RfUFBfTk9ERV82NCwgTkROQk9PU1RfUFBfTk9ERV8xOTIpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzY0KHApIE5ETkJPT1NUX1BQX0lJRihwKDY0KSwgTkROQk9PU1RfUFBfTk9ERV8zMiwgTkROQk9PU1RfUFBfTk9ERV85NikKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzMyKHApIE5ETkJPT1NUX1BQX0lJRihwKDMyKSwgTkROQk9PU1RfUFBfTk9ERV8xNiwgTkROQk9PU1RfUFBfTk9ERV80OCkKLSMgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNihwKSBORE5CT09TVF9QUF9JSUYocCgxNiksIE5ETkJPT1NUX1BQX05PREVfOCwgTkROQk9PU1RfUFBfTk9ERV8yNCkKLSMgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfOChwKSBORE5CT09TVF9QUF9JSUYocCg4KSwgTkROQk9PU1RfUFBfTk9ERV80LCBORE5CT09TVF9QUF9OT0RFXzEyKQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNChwKSBORE5CT09TVF9QUF9JSUYocCg0KSwgTkROQk9PU1RfUFBfTk9ERV8yLCBORE5CT09TVF9QUF9OT0RFXzYpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMihwKSBORE5CT09TVF9QUF9JSUYocCgyKSwgTkROQk9PU1RfUFBfTk9ERV8xLCBORE5CT09TVF9QUF9OT0RFXzMpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEocCkgTkROQk9PU1RfUFBfSUlGKHAoMSksIDEsIDIpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzMocCkgTkROQk9PU1RfUFBfSUlGKHAoMyksIDMsIDQpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNihwKSBORE5CT09TVF9QUF9JSUYocCg2KSwgTkROQk9PU1RfUFBfTk9ERV81LCBORE5CT09TVF9QUF9OT0RFXzcpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzUocCkgTkROQk9PU1RfUFBfSUlGKHAoNSksIDUsIDYpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzcocCkgTkROQk9PU1RfUFBfSUlGKHAoNyksIDcsIDgpCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMihwKSBORE5CT09TVF9QUF9JSUYocCgxMiksIE5ETkJPT1NUX1BQX05PREVfMTAsIE5ETkJPT1NUX1BQX05PREVfMTQpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTAocCkgTkROQk9PU1RfUFBfSUlGKHAoMTApLCBORE5CT09TVF9QUF9OT0RFXzksIE5ETkJPT1NUX1BQX05PREVfMTEpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzkocCkgTkROQk9PU1RfUFBfSUlGKHAoOSksIDksIDEwKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMShwKSBORE5CT09TVF9QUF9JSUYocCgxMSksIDExLCAxMikKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNChwKSBORE5CT09TVF9QUF9JSUYocCgxNCksIE5ETkJPT1NUX1BQX05PREVfMTMsIE5ETkJPT1NUX1BQX05PREVfMTUpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEzKHApIE5ETkJPT1NUX1BQX0lJRihwKDEzKSwgMTMsIDE0KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNShwKSBORE5CT09TVF9QUF9JSUYocCgxNSksIDE1LCAxNikKLSMgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjQocCkgTkROQk9PU1RfUFBfSUlGKHAoMjQpLCBORE5CT09TVF9QUF9OT0RFXzIwLCBORE5CT09TVF9QUF9OT0RFXzI4KQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjAocCkgTkROQk9PU1RfUFBfSUlGKHAoMjApLCBORE5CT09TVF9QUF9OT0RFXzE4LCBORE5CT09TVF9QUF9OT0RFXzIyKQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE4KHApIE5ETkJPT1NUX1BQX0lJRihwKDE4KSwgTkROQk9PU1RfUFBfTk9ERV8xNywgTkROQk9PU1RfUFBfTk9ERV8xOSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTcocCkgTkROQk9PU1RfUFBfSUlGKHAoMTcpLCAxNywgMTgpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE5KHApIE5ETkJPT1NUX1BQX0lJRihwKDE5KSwgMTksIDIwKQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIyKHApIE5ETkJPT1NUX1BQX0lJRihwKDIyKSwgTkROQk9PU1RfUFBfTk9ERV8yMSwgTkROQk9PU1RfUFBfTk9ERV8yMykKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjEocCkgTkROQk9PU1RfUFBfSUlGKHAoMjEpLCAyMSwgMjIpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIzKHApIE5ETkJPT1NUX1BQX0lJRihwKDIzKSwgMjMsIDI0KQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjgocCkgTkROQk9PU1RfUFBfSUlGKHAoMjgpLCBORE5CT09TVF9QUF9OT0RFXzI2LCBORE5CT09TVF9QUF9OT0RFXzMwKQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzI2KHApIE5ETkJPT1NUX1BQX0lJRihwKDI2KSwgTkROQk9PU1RfUFBfTk9ERV8yNSwgTkROQk9PU1RfUFBfTk9ERV8yNykKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjUocCkgTkROQk9PU1RfUFBfSUlGKHAoMjUpLCAyNSwgMjYpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzI3KHApIE5ETkJPT1NUX1BQX0lJRihwKDI3KSwgMjcsIDI4KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzMwKHApIE5ETkJPT1NUX1BQX0lJRihwKDMwKSwgTkROQk9PU1RfUFBfTk9ERV8yOSwgTkROQk9PU1RfUFBfTk9ERV8zMSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjkocCkgTkROQk9PU1RfUFBfSUlGKHAoMjkpLCAyOSwgMzApCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzMxKHApIE5ETkJPT1NUX1BQX0lJRihwKDMxKSwgMzEsIDMyKQotIyAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzQ4KHApIE5ETkJPT1NUX1BQX0lJRihwKDQ4KSwgTkROQk9PU1RfUFBfTk9ERV80MCwgTkROQk9PU1RfUFBfTk9ERV81NikKLSMgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNDAocCkgTkROQk9PU1RfUFBfSUlGKHAoNDApLCBORE5CT09TVF9QUF9OT0RFXzM2LCBORE5CT09TVF9QUF9OT0RFXzQ0KQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMzYocCkgTkROQk9PU1RfUFBfSUlGKHAoMzYpLCBORE5CT09TVF9QUF9OT0RFXzM0LCBORE5CT09TVF9QUF9OT0RFXzM4KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzM0KHApIE5ETkJPT1NUX1BQX0lJRihwKDM0KSwgTkROQk9PU1RfUFBfTk9ERV8zMywgTkROQk9PU1RfUFBfTk9ERV8zNSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMzMocCkgTkROQk9PU1RfUFBfSUlGKHAoMzMpLCAzMywgMzQpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzM1KHApIE5ETkJPT1NUX1BQX0lJRihwKDM1KSwgMzUsIDM2KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzM4KHApIE5ETkJPT1NUX1BQX0lJRihwKDM4KSwgTkROQk9PU1RfUFBfTk9ERV8zNywgTkROQk9PU1RfUFBfTk9ERV8zOSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMzcocCkgTkROQk9PU1RfUFBfSUlGKHAoMzcpLCAzNywgMzgpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzM5KHApIE5ETkJPT1NUX1BQX0lJRihwKDM5KSwgMzksIDQwKQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNDQocCkgTkROQk9PU1RfUFBfSUlGKHAoNDQpLCBORE5CT09TVF9QUF9OT0RFXzQyLCBORE5CT09TVF9QUF9OT0RFXzQ2KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzQyKHApIE5ETkJPT1NUX1BQX0lJRihwKDQyKSwgTkROQk9PU1RfUFBfTk9ERV80MSwgTkROQk9PU1RfUFBfTk9ERV80MykKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNDEocCkgTkROQk9PU1RfUFBfSUlGKHAoNDEpLCA0MSwgNDIpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzQzKHApIE5ETkJPT1NUX1BQX0lJRihwKDQzKSwgNDMsIDQ0KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzQ2KHApIE5ETkJPT1NUX1BQX0lJRihwKDQ2KSwgTkROQk9PU1RfUFBfTk9ERV80NSwgTkROQk9PU1RfUFBfTk9ERV80NykKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNDUocCkgTkROQk9PU1RfUFBfSUlGKHAoNDUpLCA0NSwgNDYpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzQ3KHApIE5ETkJPT1NUX1BQX0lJRihwKDQ3KSwgNDcsIDQ4KQotIyAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV81NihwKSBORE5CT09TVF9QUF9JSUYocCg1NiksIE5ETkJPT1NUX1BQX05PREVfNTIsIE5ETkJPT1NUX1BQX05PREVfNjApCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV81MihwKSBORE5CT09TVF9QUF9JSUYocCg1MiksIE5ETkJPT1NUX1BQX05PREVfNTAsIE5ETkJPT1NUX1BQX05PREVfNTQpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNTAocCkgTkROQk9PU1RfUFBfSUlGKHAoNTApLCBORE5CT09TVF9QUF9OT0RFXzQ5LCBORE5CT09TVF9QUF9OT0RFXzUxKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV80OShwKSBORE5CT09TVF9QUF9JSUYocCg0OSksIDQ5LCA1MCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNTEocCkgTkROQk9PU1RfUFBfSUlGKHAoNTEpLCA1MSwgNTIpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNTQocCkgTkROQk9PU1RfUFBfSUlGKHAoNTQpLCBORE5CT09TVF9QUF9OT0RFXzUzLCBORE5CT09TVF9QUF9OT0RFXzU1KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV81MyhwKSBORE5CT09TVF9QUF9JSUYocCg1MyksIDUzLCA1NCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNTUocCkgTkROQk9PU1RfUFBfSUlGKHAoNTUpLCA1NSwgNTYpCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV82MChwKSBORE5CT09TVF9QUF9JSUYocCg2MCksIE5ETkJPT1NUX1BQX05PREVfNTgsIE5ETkJPT1NUX1BQX05PREVfNjIpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNTgocCkgTkROQk9PU1RfUFBfSUlGKHAoNTgpLCBORE5CT09TVF9QUF9OT0RFXzU3LCBORE5CT09TVF9QUF9OT0RFXzU5KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV81NyhwKSBORE5CT09TVF9QUF9JSUYocCg1NyksIDU3LCA1OCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNTkocCkgTkROQk9PU1RfUFBfSUlGKHAoNTkpLCA1OSwgNjApCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNjIocCkgTkROQk9PU1RfUFBfSUlGKHAoNjIpLCBORE5CT09TVF9QUF9OT0RFXzYxLCBORE5CT09TVF9QUF9OT0RFXzYzKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV82MShwKSBORE5CT09TVF9QUF9JSUYocCg2MSksIDYxLCA2MikKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNjMocCkgTkROQk9PU1RfUFBfSUlGKHAoNjMpLCA2MywgNjQpCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV85NihwKSBORE5CT09TVF9QUF9JSUYocCg5NiksIE5ETkJPT1NUX1BQX05PREVfODAsIE5ETkJPT1NUX1BQX05PREVfMTEyKQotIyAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzgwKHApIE5ETkJPT1NUX1BQX0lJRihwKDgwKSwgTkROQk9PU1RfUFBfTk9ERV83MiwgTkROQk9PU1RfUFBfTk9ERV84OCkKLSMgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNzIocCkgTkROQk9PU1RfUFBfSUlGKHAoNzIpLCBORE5CT09TVF9QUF9OT0RFXzY4LCBORE5CT09TVF9QUF9OT0RFXzc2KQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNjgocCkgTkROQk9PU1RfUFBfSUlGKHAoNjgpLCBORE5CT09TVF9QUF9OT0RFXzY2LCBORE5CT09TVF9QUF9OT0RFXzcwKQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzY2KHApIE5ETkJPT1NUX1BQX0lJRihwKDY2KSwgTkROQk9PU1RfUFBfTk9ERV82NSwgTkROQk9PU1RfUFBfTk9ERV82NykKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNjUocCkgTkROQk9PU1RfUFBfSUlGKHAoNjUpLCA2NSwgNjYpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzY3KHApIE5ETkJPT1NUX1BQX0lJRihwKDY3KSwgNjcsIDY4KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzcwKHApIE5ETkJPT1NUX1BQX0lJRihwKDcwKSwgTkROQk9PU1RfUFBfTk9ERV82OSwgTkROQk9PU1RfUFBfTk9ERV83MSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNjkocCkgTkROQk9PU1RfUFBfSUlGKHAoNjkpLCA2OSwgNzApCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzcxKHApIE5ETkJPT1NUX1BQX0lJRihwKDcxKSwgNzEsIDcyKQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNzYocCkgTkROQk9PU1RfUFBfSUlGKHAoNzYpLCBORE5CT09TVF9QUF9OT0RFXzc0LCBORE5CT09TVF9QUF9OT0RFXzc4KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzc0KHApIE5ETkJPT1NUX1BQX0lJRihwKDc0KSwgTkROQk9PU1RfUFBfTk9ERV83MywgTkROQk9PU1RfUFBfTk9ERV83NSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNzMocCkgTkROQk9PU1RfUFBfSUlGKHAoNzMpLCA3MywgNzQpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzc1KHApIE5ETkJPT1NUX1BQX0lJRihwKDc1KSwgNzUsIDc2KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzc4KHApIE5ETkJPT1NUX1BQX0lJRihwKDc4KSwgTkROQk9PU1RfUFBfTk9ERV83NywgTkROQk9PU1RfUFBfTk9ERV83OSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNzcocCkgTkROQk9PU1RfUFBfSUlGKHAoNzcpLCA3NywgNzgpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzc5KHApIE5ETkJPT1NUX1BQX0lJRihwKDc5KSwgNzksIDgwKQotIyAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV84OChwKSBORE5CT09TVF9QUF9JSUYocCg4OCksIE5ETkJPT1NUX1BQX05PREVfODQsIE5ETkJPT1NUX1BQX05PREVfOTIpCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV84NChwKSBORE5CT09TVF9QUF9JSUYocCg4NCksIE5ETkJPT1NUX1BQX05PREVfODIsIE5ETkJPT1NUX1BQX05PREVfODYpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfODIocCkgTkROQk9PU1RfUFBfSUlGKHAoODIpLCBORE5CT09TVF9QUF9OT0RFXzgxLCBORE5CT09TVF9QUF9OT0RFXzgzKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV84MShwKSBORE5CT09TVF9QUF9JSUYocCg4MSksIDgxLCA4MikKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfODMocCkgTkROQk9PU1RfUFBfSUlGKHAoODMpLCA4MywgODQpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfODYocCkgTkROQk9PU1RfUFBfSUlGKHAoODYpLCBORE5CT09TVF9QUF9OT0RFXzg1LCBORE5CT09TVF9QUF9OT0RFXzg3KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV84NShwKSBORE5CT09TVF9QUF9JSUYocCg4NSksIDg1LCA4NikKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfODcocCkgTkROQk9PU1RfUFBfSUlGKHAoODcpLCA4NywgODgpCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV85MihwKSBORE5CT09TVF9QUF9JSUYocCg5MiksIE5ETkJPT1NUX1BQX05PREVfOTAsIE5ETkJPT1NUX1BQX05PREVfOTQpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfOTAocCkgTkROQk9PU1RfUFBfSUlGKHAoOTApLCBORE5CT09TVF9QUF9OT0RFXzg5LCBORE5CT09TVF9QUF9OT0RFXzkxKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV84OShwKSBORE5CT09TVF9QUF9JSUYocCg4OSksIDg5LCA5MCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfOTEocCkgTkROQk9PU1RfUFBfSUlGKHAoOTEpLCA5MSwgOTIpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfOTQocCkgTkROQk9PU1RfUFBfSUlGKHAoOTQpLCBORE5CT09TVF9QUF9OT0RFXzkzLCBORE5CT09TVF9QUF9OT0RFXzk1KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV85MyhwKSBORE5CT09TVF9QUF9JSUYocCg5MyksIDkzLCA5NCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfOTUocCkgTkROQk9PU1RfUFBfSUlGKHAoOTUpLCA5NSwgOTYpCi0jICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTEyKHApIE5ETkJPT1NUX1BQX0lJRihwKDExMiksIE5ETkJPT1NUX1BQX05PREVfMTA0LCBORE5CT09TVF9QUF9OT0RFXzEyMCkKLSMgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTA0KHApIE5ETkJPT1NUX1BQX0lJRihwKDEwNCksIE5ETkJPT1NUX1BQX05PREVfMTAwLCBORE5CT09TVF9QUF9OT0RFXzEwOCkKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEwMChwKSBORE5CT09TVF9QUF9JSUYocCgxMDApLCBORE5CT09TVF9QUF9OT0RFXzk4LCBORE5CT09TVF9QUF9OT0RFXzEwMikKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV85OChwKSBORE5CT09TVF9QUF9JSUYocCg5OCksIE5ETkJPT1NUX1BQX05PREVfOTcsIE5ETkJPT1NUX1BQX05PREVfOTkpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzk3KHApIE5ETkJPT1NUX1BQX0lJRihwKDk3KSwgOTcsIDk4KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV85OShwKSBORE5CT09TVF9QUF9JSUYocCg5OSksIDk5LCAxMDApCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTAyKHApIE5ETkJPT1NUX1BQX0lJRihwKDEwMiksIE5ETkJPT1NUX1BQX05PREVfMTAxLCBORE5CT09TVF9QUF9OT0RFXzEwMykKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTAxKHApIE5ETkJPT1NUX1BQX0lJRihwKDEwMSksIDEwMSwgMTAyKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMDMocCkgTkROQk9PU1RfUFBfSUlGKHAoMTAzKSwgMTAzLCAxMDQpCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMDgocCkgTkROQk9PU1RfUFBfSUlGKHAoMTA4KSwgTkROQk9PU1RfUFBfTk9ERV8xMDYsIE5ETkJPT1NUX1BQX05PREVfMTEwKQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEwNihwKSBORE5CT09TVF9QUF9JSUYocCgxMDYpLCBORE5CT09TVF9QUF9OT0RFXzEwNSwgTkROQk9PU1RfUFBfTk9ERV8xMDcpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEwNShwKSBORE5CT09TVF9QUF9JSUYocCgxMDUpLCAxMDUsIDEwNikKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTA3KHApIE5ETkJPT1NUX1BQX0lJRihwKDEwNyksIDEwNywgMTA4KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzExMChwKSBORE5CT09TVF9QUF9JSUYocCgxMTApLCBORE5CT09TVF9QUF9OT0RFXzEwOSwgTkROQk9PU1RfUFBfTk9ERV8xMTEpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEwOShwKSBORE5CT09TVF9QUF9JSUYocCgxMDkpLCAxMDksIDExMCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTExKHApIE5ETkJPT1NUX1BQX0lJRihwKDExMSksIDExMSwgMTEyKQotIyAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMjAocCkgTkROQk9PU1RfUFBfSUlGKHAoMTIwKSwgTkROQk9PU1RfUFBfTk9ERV8xMTYsIE5ETkJPT1NUX1BQX05PREVfMTI0KQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTE2KHApIE5ETkJPT1NUX1BQX0lJRihwKDExNiksIE5ETkJPT1NUX1BQX05PREVfMTE0LCBORE5CT09TVF9QUF9OT0RFXzExOCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMTQocCkgTkROQk9PU1RfUFBfSUlGKHAoMTE0KSwgTkROQk9PU1RfUFBfTk9ERV8xMTMsIE5ETkJPT1NUX1BQX05PREVfMTE1KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMTMocCkgTkROQk9PU1RfUFBfSUlGKHAoMTEzKSwgMTEzLCAxMTQpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzExNShwKSBORE5CT09TVF9QUF9JSUYocCgxMTUpLCAxMTUsIDExNikKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMTgocCkgTkROQk9PU1RfUFBfSUlGKHAoMTE4KSwgTkROQk9PU1RfUFBfTk9ERV8xMTcsIE5ETkJPT1NUX1BQX05PREVfMTE5KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMTcocCkgTkROQk9PU1RfUFBfSUlGKHAoMTE3KSwgMTE3LCAxMTgpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzExOShwKSBORE5CT09TVF9QUF9JSUYocCgxMTkpLCAxMTksIDEyMCkKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEyNChwKSBORE5CT09TVF9QUF9JSUYocCgxMjQpLCBORE5CT09TVF9QUF9OT0RFXzEyMiwgTkROQk9PU1RfUFBfTk9ERV8xMjYpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTIyKHApIE5ETkJPT1NUX1BQX0lJRihwKDEyMiksIE5ETkJPT1NUX1BQX05PREVfMTIxLCBORE5CT09TVF9QUF9OT0RFXzEyMykKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTIxKHApIE5ETkJPT1NUX1BQX0lJRihwKDEyMSksIDEyMSwgMTIyKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMjMocCkgTkROQk9PU1RfUFBfSUlGKHAoMTIzKSwgMTIzLCAxMjQpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTI2KHApIE5ETkJPT1NUX1BQX0lJRihwKDEyNiksIE5ETkJPT1NUX1BQX05PREVfMTI1LCBORE5CT09TVF9QUF9OT0RFXzEyNykKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTI1KHApIE5ETkJPT1NUX1BQX0lJRihwKDEyNSksIDEyNSwgMTI2KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMjcocCkgTkROQk9PU1RfUFBfSUlGKHAoMTI3KSwgMTI3LCAxMjgpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE5MihwKSBORE5CT09TVF9QUF9JSUYocCgxOTIpLCBORE5CT09TVF9QUF9OT0RFXzE2MCwgTkROQk9PU1RfUFBfTk9ERV8yMjQpCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNjAocCkgTkROQk9PU1RfUFBfSUlGKHAoMTYwKSwgTkROQk9PU1RfUFBfTk9ERV8xNDQsIE5ETkJPT1NUX1BQX05PREVfMTc2KQotIyAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE0NChwKSBORE5CT09TVF9QUF9JSUYocCgxNDQpLCBORE5CT09TVF9QUF9OT0RFXzEzNiwgTkROQk9PU1RfUFBfTk9ERV8xNTIpCi0jICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEzNihwKSBORE5CT09TVF9QUF9JSUYocCgxMzYpLCBORE5CT09TVF9QUF9OT0RFXzEzMiwgTkROQk9PU1RfUFBfTk9ERV8xNDApCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMzIocCkgTkROQk9PU1RfUFBfSUlGKHAoMTMyKSwgTkROQk9PU1RfUFBfTk9ERV8xMzAsIE5ETkJPT1NUX1BQX05PREVfMTM0KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEzMChwKSBORE5CT09TVF9QUF9JSUYocCgxMzApLCBORE5CT09TVF9QUF9OT0RFXzEyOSwgTkROQk9PU1RfUFBfTk9ERV8xMzEpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEyOShwKSBORE5CT09TVF9QUF9JSUYocCgxMjkpLCAxMjksIDEzMCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTMxKHApIE5ETkJPT1NUX1BQX0lJRihwKDEzMSksIDEzMSwgMTMyKQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEzNChwKSBORE5CT09TVF9QUF9JSUYocCgxMzQpLCBORE5CT09TVF9QUF9OT0RFXzEzMywgTkROQk9PU1RfUFBfTk9ERV8xMzUpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEzMyhwKSBORE5CT09TVF9QUF9JSUYocCgxMzMpLCAxMzMsIDEzNCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTM1KHApIE5ETkJPT1NUX1BQX0lJRihwKDEzNSksIDEzNSwgMTM2KQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTQwKHApIE5ETkJPT1NUX1BQX0lJRihwKDE0MCksIE5ETkJPT1NUX1BQX05PREVfMTM4LCBORE5CT09TVF9QUF9OT0RFXzE0MikKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMzgocCkgTkROQk9PU1RfUFBfSUlGKHAoMTM4KSwgTkROQk9PU1RfUFBfTk9ERV8xMzcsIE5ETkJPT1NUX1BQX05PREVfMTM5KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMzcocCkgTkROQk9PU1RfUFBfSUlGKHAoMTM3KSwgMTM3LCAxMzgpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEzOShwKSBORE5CT09TVF9QUF9JSUYocCgxMzkpLCAxMzksIDE0MCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNDIocCkgTkROQk9PU1RfUFBfSUlGKHAoMTQyKSwgTkROQk9PU1RfUFBfTk9ERV8xNDEsIE5ETkJPT1NUX1BQX05PREVfMTQzKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNDEocCkgTkROQk9PU1RfUFBfSUlGKHAoMTQxKSwgMTQxLCAxNDIpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE0MyhwKSBORE5CT09TVF9QUF9JSUYocCgxNDMpLCAxNDMsIDE0NCkKLSMgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTUyKHApIE5ETkJPT1NUX1BQX0lJRihwKDE1MiksIE5ETkJPT1NUX1BQX05PREVfMTQ4LCBORE5CT09TVF9QUF9OT0RFXzE1NikKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE0OChwKSBORE5CT09TVF9QUF9JSUYocCgxNDgpLCBORE5CT09TVF9QUF9OT0RFXzE0NiwgTkROQk9PU1RfUFBfTk9ERV8xNTApCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTQ2KHApIE5ETkJPT1NUX1BQX0lJRihwKDE0NiksIE5ETkJPT1NUX1BQX05PREVfMTQ1LCBORE5CT09TVF9QUF9OT0RFXzE0NykKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTQ1KHApIE5ETkJPT1NUX1BQX0lJRihwKDE0NSksIDE0NSwgMTQ2KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNDcocCkgTkROQk9PU1RfUFBfSUlGKHAoMTQ3KSwgMTQ3LCAxNDgpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTUwKHApIE5ETkJPT1NUX1BQX0lJRihwKDE1MCksIE5ETkJPT1NUX1BQX05PREVfMTQ5LCBORE5CT09TVF9QUF9OT0RFXzE1MSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTQ5KHApIE5ETkJPT1NUX1BQX0lJRihwKDE0OSksIDE0OSwgMTUwKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNTEocCkgTkROQk9PU1RfUFBfSUlGKHAoMTUxKSwgMTUxLCAxNTIpCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNTYocCkgTkROQk9PU1RfUFBfSUlGKHAoMTU2KSwgTkROQk9PU1RfUFBfTk9ERV8xNTQsIE5ETkJPT1NUX1BQX05PREVfMTU4KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE1NChwKSBORE5CT09TVF9QUF9JSUYocCgxNTQpLCBORE5CT09TVF9QUF9OT0RFXzE1MywgTkROQk9PU1RfUFBfTk9ERV8xNTUpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE1MyhwKSBORE5CT09TVF9QUF9JSUYocCgxNTMpLCAxNTMsIDE1NCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTU1KHApIE5ETkJPT1NUX1BQX0lJRihwKDE1NSksIDE1NSwgMTU2KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE1OChwKSBORE5CT09TVF9QUF9JSUYocCgxNTgpLCBORE5CT09TVF9QUF9OT0RFXzE1NywgTkROQk9PU1RfUFBfTk9ERV8xNTkpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE1NyhwKSBORE5CT09TVF9QUF9JSUYocCgxNTcpLCAxNTcsIDE1OCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTU5KHApIE5ETkJPT1NUX1BQX0lJRihwKDE1OSksIDE1OSwgMTYwKQotIyAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE3NihwKSBORE5CT09TVF9QUF9JSUYocCgxNzYpLCBORE5CT09TVF9QUF9OT0RFXzE2OCwgTkROQk9PU1RfUFBfTk9ERV8xODQpCi0jICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE2OChwKSBORE5CT09TVF9QUF9JSUYocCgxNjgpLCBORE5CT09TVF9QUF9OT0RFXzE2NCwgTkROQk9PU1RfUFBfTk9ERV8xNzIpCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNjQocCkgTkROQk9PU1RfUFBfSUlGKHAoMTY0KSwgTkROQk9PU1RfUFBfTk9ERV8xNjIsIE5ETkJPT1NUX1BQX05PREVfMTY2KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE2MihwKSBORE5CT09TVF9QUF9JSUYocCgxNjIpLCBORE5CT09TVF9QUF9OT0RFXzE2MSwgTkROQk9PU1RfUFBfTk9ERV8xNjMpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE2MShwKSBORE5CT09TVF9QUF9JSUYocCgxNjEpLCAxNjEsIDE2MikKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTYzKHApIE5ETkJPT1NUX1BQX0lJRihwKDE2MyksIDE2MywgMTY0KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE2NihwKSBORE5CT09TVF9QUF9JSUYocCgxNjYpLCBORE5CT09TVF9QUF9OT0RFXzE2NSwgTkROQk9PU1RfUFBfTk9ERV8xNjcpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE2NShwKSBORE5CT09TVF9QUF9JSUYocCgxNjUpLCAxNjUsIDE2NikKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTY3KHApIE5ETkJPT1NUX1BQX0lJRihwKDE2NyksIDE2NywgMTY4KQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTcyKHApIE5ETkJPT1NUX1BQX0lJRihwKDE3MiksIE5ETkJPT1NUX1BQX05PREVfMTcwLCBORE5CT09TVF9QUF9OT0RFXzE3NCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNzAocCkgTkROQk9PU1RfUFBfSUlGKHAoMTcwKSwgTkROQk9PU1RfUFBfTk9ERV8xNjksIE5ETkJPT1NUX1BQX05PREVfMTcxKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNjkocCkgTkROQk9PU1RfUFBfSUlGKHAoMTY5KSwgMTY5LCAxNzApCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE3MShwKSBORE5CT09TVF9QUF9JSUYocCgxNzEpLCAxNzEsIDE3MikKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNzQocCkgTkROQk9PU1RfUFBfSUlGKHAoMTc0KSwgTkROQk9PU1RfUFBfTk9ERV8xNzMsIE5ETkJPT1NUX1BQX05PREVfMTc1KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNzMocCkgTkROQk9PU1RfUFBfSUlGKHAoMTczKSwgMTczLCAxNzQpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE3NShwKSBORE5CT09TVF9QUF9JSUYocCgxNzUpLCAxNzUsIDE3NikKLSMgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTg0KHApIE5ETkJPT1NUX1BQX0lJRihwKDE4NCksIE5ETkJPT1NUX1BQX05PREVfMTgwLCBORE5CT09TVF9QUF9OT0RFXzE4OCkKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE4MChwKSBORE5CT09TVF9QUF9JSUYocCgxODApLCBORE5CT09TVF9QUF9OT0RFXzE3OCwgTkROQk9PU1RfUFBfTk9ERV8xODIpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTc4KHApIE5ETkJPT1NUX1BQX0lJRihwKDE3OCksIE5ETkJPT1NUX1BQX05PREVfMTc3LCBORE5CT09TVF9QUF9OT0RFXzE3OSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTc3KHApIE5ETkJPT1NUX1BQX0lJRihwKDE3NyksIDE3NywgMTc4KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNzkocCkgTkROQk9PU1RfUFBfSUlGKHAoMTc5KSwgMTc5LCAxODApCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTgyKHApIE5ETkJPT1NUX1BQX0lJRihwKDE4MiksIE5ETkJPT1NUX1BQX05PREVfMTgxLCBORE5CT09TVF9QUF9OT0RFXzE4MykKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTgxKHApIE5ETkJPT1NUX1BQX0lJRihwKDE4MSksIDE4MSwgMTgyKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xODMocCkgTkROQk9PU1RfUFBfSUlGKHAoMTgzKSwgMTgzLCAxODQpCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xODgocCkgTkROQk9PU1RfUFBfSUlGKHAoMTg4KSwgTkROQk9PU1RfUFBfTk9ERV8xODYsIE5ETkJPT1NUX1BQX05PREVfMTkwKQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE4NihwKSBORE5CT09TVF9QUF9JSUYocCgxODYpLCBORE5CT09TVF9QUF9OT0RFXzE4NSwgTkROQk9PU1RfUFBfTk9ERV8xODcpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE4NShwKSBORE5CT09TVF9QUF9JSUYocCgxODUpLCAxODUsIDE4NikKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTg3KHApIE5ETkJPT1NUX1BQX0lJRihwKDE4NyksIDE4NywgMTg4KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE5MChwKSBORE5CT09TVF9QUF9JSUYocCgxOTApLCBORE5CT09TVF9QUF9OT0RFXzE4OSwgTkROQk9PU1RfUFBfTk9ERV8xOTEpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE4OShwKSBORE5CT09TVF9QUF9JSUYocCgxODkpLCAxODksIDE5MCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTkxKHApIE5ETkJPT1NUX1BQX0lJRihwKDE5MSksIDE5MSwgMTkyKQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjI0KHApIE5ETkJPT1NUX1BQX0lJRihwKDIyNCksIE5ETkJPT1NUX1BQX05PREVfMjA4LCBORE5CT09TVF9QUF9OT0RFXzI0MCkKLSMgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMDgocCkgTkROQk9PU1RfUFBfSUlGKHAoMjA4KSwgTkROQk9PU1RfUFBfTk9ERV8yMDAsIE5ETkJPT1NUX1BQX05PREVfMjE2KQotIyAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMDAocCkgTkROQk9PU1RfUFBfSUlGKHAoMjAwKSwgTkROQk9PU1RfUFBfTk9ERV8xOTYsIE5ETkJPT1NUX1BQX05PREVfMjA0KQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTk2KHApIE5ETkJPT1NUX1BQX0lJRihwKDE5NiksIE5ETkJPT1NUX1BQX05PREVfMTk0LCBORE5CT09TVF9QUF9OT0RFXzE5OCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xOTQocCkgTkROQk9PU1RfUFBfSUlGKHAoMTk0KSwgTkROQk9PU1RfUFBfTk9ERV8xOTMsIE5ETkJPT1NUX1BQX05PREVfMTk1KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xOTMocCkgTkROQk9PU1RfUFBfSUlGKHAoMTkzKSwgMTkzLCAxOTQpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE5NShwKSBORE5CT09TVF9QUF9JSUYocCgxOTUpLCAxOTUsIDE5NikKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xOTgocCkgTkROQk9PU1RfUFBfSUlGKHAoMTk4KSwgTkROQk9PU1RfUFBfTk9ERV8xOTcsIE5ETkJPT1NUX1BQX05PREVfMTk5KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xOTcocCkgTkROQk9PU1RfUFBfSUlGKHAoMTk3KSwgMTk3LCAxOTgpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE5OShwKSBORE5CT09TVF9QUF9JSUYocCgxOTkpLCAxOTksIDIwMCkKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIwNChwKSBORE5CT09TVF9QUF9JSUYocCgyMDQpLCBORE5CT09TVF9QUF9OT0RFXzIwMiwgTkROQk9PU1RfUFBfTk9ERV8yMDYpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjAyKHApIE5ETkJPT1NUX1BQX0lJRihwKDIwMiksIE5ETkJPT1NUX1BQX05PREVfMjAxLCBORE5CT09TVF9QUF9OT0RFXzIwMykKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjAxKHApIE5ETkJPT1NUX1BQX0lJRihwKDIwMSksIDIwMSwgMjAyKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMDMocCkgTkROQk9PU1RfUFBfSUlGKHAoMjAzKSwgMjAzLCAyMDQpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjA2KHApIE5ETkJPT1NUX1BQX0lJRihwKDIwNiksIE5ETkJPT1NUX1BQX05PREVfMjA1LCBORE5CT09TVF9QUF9OT0RFXzIwNykKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjA1KHApIE5ETkJPT1NUX1BQX0lJRihwKDIwNSksIDIwNSwgMjA2KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMDcocCkgTkROQk9PU1RfUFBfSUlGKHAoMjA3KSwgMjA3LCAyMDgpCi0jICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIxNihwKSBORE5CT09TVF9QUF9JSUYocCgyMTYpLCBORE5CT09TVF9QUF9OT0RFXzIxMiwgTkROQk9PU1RfUFBfTk9ERV8yMjApCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMTIocCkgTkROQk9PU1RfUFBfSUlGKHAoMjEyKSwgTkROQk9PU1RfUFBfTk9ERV8yMTAsIE5ETkJPT1NUX1BQX05PREVfMjE0KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIxMChwKSBORE5CT09TVF9QUF9JSUYocCgyMTApLCBORE5CT09TVF9QUF9OT0RFXzIwOSwgTkROQk9PU1RfUFBfTk9ERV8yMTEpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIwOShwKSBORE5CT09TVF9QUF9JSUYocCgyMDkpLCAyMDksIDIxMCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjExKHApIE5ETkJPT1NUX1BQX0lJRihwKDIxMSksIDIxMSwgMjEyKQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIxNChwKSBORE5CT09TVF9QUF9JSUYocCgyMTQpLCBORE5CT09TVF9QUF9OT0RFXzIxMywgTkROQk9PU1RfUFBfTk9ERV8yMTUpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIxMyhwKSBORE5CT09TVF9QUF9JSUYocCgyMTMpLCAyMTMsIDIxNCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjE1KHApIE5ETkJPT1NUX1BQX0lJRihwKDIxNSksIDIxNSwgMjE2KQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjIwKHApIE5ETkJPT1NUX1BQX0lJRihwKDIyMCksIE5ETkJPT1NUX1BQX05PREVfMjE4LCBORE5CT09TVF9QUF9OT0RFXzIyMikKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMTgocCkgTkROQk9PU1RfUFBfSUlGKHAoMjE4KSwgTkROQk9PU1RfUFBfTk9ERV8yMTcsIE5ETkJPT1NUX1BQX05PREVfMjE5KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMTcocCkgTkROQk9PU1RfUFBfSUlGKHAoMjE3KSwgMjE3LCAyMTgpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIxOShwKSBORE5CT09TVF9QUF9JSUYocCgyMTkpLCAyMTksIDIyMCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMjIocCkgTkROQk9PU1RfUFBfSUlGKHAoMjIyKSwgTkROQk9PU1RfUFBfTk9ERV8yMjEsIE5ETkJPT1NUX1BQX05PREVfMjIzKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMjEocCkgTkROQk9PU1RfUFBfSUlGKHAoMjIxKSwgMjIxLCAyMjIpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIyMyhwKSBORE5CT09TVF9QUF9JSUYocCgyMjMpLCAyMjMsIDIyNCkKLSMgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yNDAocCkgTkROQk9PU1RfUFBfSUlGKHAoMjQwKSwgTkROQk9PU1RfUFBfTk9ERV8yMzIsIE5ETkJPT1NUX1BQX05PREVfMjQ4KQotIyAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMzIocCkgTkROQk9PU1RfUFBfSUlGKHAoMjMyKSwgTkROQk9PU1RfUFBfTk9ERV8yMjgsIE5ETkJPT1NUX1BQX05PREVfMjM2KQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjI4KHApIE5ETkJPT1NUX1BQX0lJRihwKDIyOCksIE5ETkJPT1NUX1BQX05PREVfMjI2LCBORE5CT09TVF9QUF9OT0RFXzIzMCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMjYocCkgTkROQk9PU1RfUFBfSUlGKHAoMjI2KSwgTkROQk9PU1RfUFBfTk9ERV8yMjUsIE5ETkJPT1NUX1BQX05PREVfMjI3KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMjUocCkgTkROQk9PU1RfUFBfSUlGKHAoMjI1KSwgMjI1LCAyMjYpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIyNyhwKSBORE5CT09TVF9QUF9JSUYocCgyMjcpLCAyMjcsIDIyOCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMzAocCkgTkROQk9PU1RfUFBfSUlGKHAoMjMwKSwgTkROQk9PU1RfUFBfTk9ERV8yMjksIE5ETkJPT1NUX1BQX05PREVfMjMxKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMjkocCkgTkROQk9PU1RfUFBfSUlGKHAoMjI5KSwgMjI5LCAyMzApCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIzMShwKSBORE5CT09TVF9QUF9JSUYocCgyMzEpLCAyMzEsIDIzMikKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIzNihwKSBORE5CT09TVF9QUF9JSUYocCgyMzYpLCBORE5CT09TVF9QUF9OT0RFXzIzNCwgTkROQk9PU1RfUFBfTk9ERV8yMzgpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjM0KHApIE5ETkJPT1NUX1BQX0lJRihwKDIzNCksIE5ETkJPT1NUX1BQX05PREVfMjMzLCBORE5CT09TVF9QUF9OT0RFXzIzNSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjMzKHApIE5ETkJPT1NUX1BQX0lJRihwKDIzMyksIDIzMywgMjM0KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMzUocCkgTkROQk9PU1RfUFBfSUlGKHAoMjM1KSwgMjM1LCAyMzYpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjM4KHApIE5ETkJPT1NUX1BQX0lJRihwKDIzOCksIE5ETkJPT1NUX1BQX05PREVfMjM3LCBORE5CT09TVF9QUF9OT0RFXzIzOSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjM3KHApIE5ETkJPT1NUX1BQX0lJRihwKDIzNyksIDIzNywgMjM4KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMzkocCkgTkROQk9PU1RfUFBfSUlGKHAoMjM5KSwgMjM5LCAyNDApCi0jICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzI0OChwKSBORE5CT09TVF9QUF9JSUYocCgyNDgpLCBORE5CT09TVF9QUF9OT0RFXzI0NCwgTkROQk9PU1RfUFBfTk9ERV8yNTIpCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yNDQocCkgTkROQk9PU1RfUFBfSUlGKHAoMjQ0KSwgTkROQk9PU1RfUFBfTk9ERV8yNDIsIE5ETkJPT1NUX1BQX05PREVfMjQ2KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzI0MihwKSBORE5CT09TVF9QUF9JSUYocCgyNDIpLCBORE5CT09TVF9QUF9OT0RFXzI0MSwgTkROQk9PU1RfUFBfTk9ERV8yNDMpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzI0MShwKSBORE5CT09TVF9QUF9JSUYocCgyNDEpLCAyNDEsIDI0MikKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjQzKHApIE5ETkJPT1NUX1BQX0lJRihwKDI0MyksIDI0MywgMjQ0KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzI0NihwKSBORE5CT09TVF9QUF9JSUYocCgyNDYpLCBORE5CT09TVF9QUF9OT0RFXzI0NSwgTkROQk9PU1RfUFBfTk9ERV8yNDcpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzI0NShwKSBORE5CT09TVF9QUF9JSUYocCgyNDUpLCAyNDUsIDI0NikKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjQ3KHApIE5ETkJPT1NUX1BQX0lJRihwKDI0NyksIDI0NywgMjQ4KQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjUyKHApIE5ETkJPT1NUX1BQX0lJRihwKDI1MiksIE5ETkJPT1NUX1BQX05PREVfMjUwLCBORE5CT09TVF9QUF9OT0RFXzI1NCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yNTAocCkgTkROQk9PU1RfUFBfSUlGKHAoMjUwKSwgTkROQk9PU1RfUFBfTk9ERV8yNDksIE5ETkJPT1NUX1BQX05PREVfMjUxKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yNDkocCkgTkROQk9PU1RfUFBfSUlGKHAoMjQ5KSwgMjQ5LCAyNTApCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzI1MShwKSBORE5CT09TVF9QUF9JSUYocCgyNTEpLCAyNTEsIDI1MikKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yNTQocCkgTkROQk9PU1RfUFBfSUlGKHAoMjU0KSwgTkROQk9PU1RfUFBfTk9ERV8yNTMsIE5ETkJPT1NUX1BQX05PREVfMjU1KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yNTMocCkgTkROQk9PU1RfUFBfSUlGKHAoMjUzKSwgMjUzLCAyNTQpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzI1NShwKSBORE5CT09TVF9QUF9JSUYocCgyNTUpLCAyNTUsIDI1NikKLSMKLSMgZW5kaWYKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2RldGFpbC9jaGVjay5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9kZXRhaWwvY2hlY2suaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YTA4ZTNlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2RldGFpbC9jaGVjay5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0RFVEFJTF9DSEVDS19IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9ERVRBSUxfQ0hFQ0tfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX0NIRUNLICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19NV0NDKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NIRUNLKHgsIHR5cGUpIE5ETkJPT1NUX1BQX0NIRUNLX0QoeCwgdHlwZSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ0hFQ0soeCwgdHlwZSkgTkROQk9PU1RfUFBfQ0hFQ0tfT08oKHgsIHR5cGUpKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ0hFQ0tfT08ocGFyKSBORE5CT09TVF9QUF9DSEVDS19EICMjIHBhcgotIyBlbmRpZgotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfTVNWQygpICYmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19ETUMoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ0hFQ0tfRCh4LCB0eXBlKSBORE5CT09TVF9QUF9DSEVDS18xKE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9DSEVDS19SRVNVTFRfLCB0eXBlIHgpKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ0hFQ0tfMShjaGspIE5ETkJPT1NUX1BQX0NIRUNLXzIoY2hrKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ0hFQ0tfMihyZXMsIF8pIHJlcwotIyBlbGlmIE5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX01TVkMoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ0hFQ0tfRCh4LCB0eXBlKSBORE5CT09TVF9QUF9DSEVDS18xKHR5cGUgeCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NIRUNLXzEoY2hrKSBORE5CT09TVF9QUF9DSEVDS18yKGNoaykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NIRUNLXzIoY2hrKSBORE5CT09TVF9QUF9DSEVDS18zKChORE5CT09TVF9QUF9DSEVDS19SRVNVTFRfICMjIGNoaykpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DSEVDS18zKGltKSBORE5CT09TVF9QUF9DSEVDS181KE5ETkJPT1NUX1BQX0NIRUNLXzQgaW0pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DSEVDS180KHJlcywgXykgcmVzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DSEVDS181KHJlcykgcmVzCi0jIGVsc2UgLyogRE1DICovCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DSEVDS19EKHgsIHR5cGUpIE5ETkJPT1NUX1BQX0NIRUNLX09PKCh0eXBlIHgpKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ0hFQ0tfT08ocGFyKSBORE5CT09TVF9QUF9DSEVDS18wICMjIHBhcgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ0hFQ0tfMChjaGspIE5ETkJPT1NUX1BQX0NIRUNLXzEoTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX0NIRUNLX1JFU1VMVF8sIGNoaykpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DSEVDS18xKGNoaykgTkROQk9PU1RfUFBfQ0hFQ0tfMihjaGspCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DSEVDS18yKHJlcywgXykgcmVzCi0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9DSEVDS19SRVNVTFRfMSAxLCBORE5CT09TVF9QUF9OSUwKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2RldGFpbC9kbWMvYXV0b19yZWMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvZGV0YWlsL2RtYy9hdXRvX3JlYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmMmU2YjUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvZGV0YWlsL2RtYy9hdXRvX3JlYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyODYgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9ERVRBSUxfQVVUT19SRUNfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfREVUQUlMX0FVVE9fUkVDX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9paWYuaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9BVVRPX1JFQyAqLwotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfQVVUT19SRUMocHJlZCwgbikgTkROQk9PU1RfUFBfTk9ERV9FTlRSWV8gIyMgbihwcmVkKQotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV9FTlRSWV8yNTYocCkgTkROQk9PU1RfUFBfTk9ERV8xMjgocCkocCkocCkocCkocCkocCkocCkocCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfRU5UUllfMTI4KHApIE5ETkJPT1NUX1BQX05PREVfNjQocCkocCkocCkocCkocCkocCkocCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfRU5UUllfNjQocCkgTkROQk9PU1RfUFBfTk9ERV8zMihwKShwKShwKShwKShwKShwKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV9FTlRSWV8zMihwKSBORE5CT09TVF9QUF9OT0RFXzE2KHApKHApKHApKHApKHApCi0jIGRlZmluZSBORE5CT09TVF9QUF9OT0RFX0VOVFJZXzE2KHApIE5ETkJPT1NUX1BQX05PREVfOChwKShwKShwKShwKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV9FTlRSWV84KHApIE5ETkJPT1NUX1BQX05PREVfNChwKShwKShwKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV9FTlRSWV80KHApIE5ETkJPT1NUX1BQX05PREVfMihwKShwKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV9FTlRSWV8yKHApIE5ETkJPT1NUX1BQX05PREVfMShwKQotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMjgocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxMjgpLCBORE5CT09TVF9QUF9OT0RFXzY0LCBORE5CT09TVF9QUF9OT0RFXzE5MikKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNjQocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg2NCksIE5ETkJPT1NUX1BQX05PREVfMzIsIE5ETkJPT1NUX1BQX05PREVfOTYpCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8zMihwKSBORE5CT09TVF9QUF9JSUYocCMjKDMyKSwgTkROQk9PU1RfUFBfTk9ERV8xNiwgTkROQk9PU1RfUFBfTk9ERV80OCkKLSMgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNihwKSBORE5CT09TVF9QUF9JSUYocCMjKDE2KSwgTkROQk9PU1RfUFBfTk9ERV84LCBORE5CT09TVF9QUF9OT0RFXzI0KQotIyAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV84KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoOCksIE5ETkJPT1NUX1BQX05PREVfNCwgTkROQk9PU1RfUFBfTk9ERV8xMikKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzQocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg0KSwgTkROQk9PU1RfUFBfTk9ERV8yLCBORE5CT09TVF9QUF9OT0RFXzYpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMihwKSBORE5CT09TVF9QUF9JSUYocCMjKDIpLCBORE5CT09TVF9QUF9OT0RFXzEsIE5ETkJPT1NUX1BQX05PREVfMykKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMShwKSBORE5CT09TVF9QUF9JSUYocCMjKDEpLCAxLCAyKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8zKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMyksIDMsIDQpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNihwKSBORE5CT09TVF9QUF9JSUYocCMjKDYpLCBORE5CT09TVF9QUF9OT0RFXzUsIE5ETkJPT1NUX1BQX05PREVfNykKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNShwKSBORE5CT09TVF9QUF9JSUYocCMjKDUpLCA1LCA2KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV83KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoNyksIDcsIDgpCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMihwKSBORE5CT09TVF9QUF9JSUYocCMjKDEyKSwgTkROQk9PU1RfUFBfTk9ERV8xMCwgTkROQk9PU1RfUFBfTk9ERV8xNCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMChwKSBORE5CT09TVF9QUF9JSUYocCMjKDEwKSwgTkROQk9PU1RfUFBfTk9ERV85LCBORE5CT09TVF9QUF9OT0RFXzExKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV85KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoOSksIDksIDEwKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMShwKSBORE5CT09TVF9QUF9JSUYocCMjKDExKSwgMTEsIDEyKQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE0KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTQpLCBORE5CT09TVF9QUF9OT0RFXzEzLCBORE5CT09TVF9QUF9OT0RFXzE1KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMyhwKSBORE5CT09TVF9QUF9JSUYocCMjKDEzKSwgMTMsIDE0KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNShwKSBORE5CT09TVF9QUF9JSUYocCMjKDE1KSwgMTUsIDE2KQotIyAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yNChwKSBORE5CT09TVF9QUF9JSUYocCMjKDI0KSwgTkROQk9PU1RfUFBfTk9ERV8yMCwgTkROQk9PU1RfUFBfTk9ERV8yOCkKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIwKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjApLCBORE5CT09TVF9QUF9OT0RFXzE4LCBORE5CT09TVF9QUF9OT0RFXzIyKQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE4KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTgpLCBORE5CT09TVF9QUF9OT0RFXzE3LCBORE5CT09TVF9QUF9OT0RFXzE5KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNyhwKSBORE5CT09TVF9QUF9JSUYocCMjKDE3KSwgMTcsIDE4KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xOShwKSBORE5CT09TVF9QUF9JSUYocCMjKDE5KSwgMTksIDIwKQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIyKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjIpLCBORE5CT09TVF9QUF9OT0RFXzIxLCBORE5CT09TVF9QUF9OT0RFXzIzKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMShwKSBORE5CT09TVF9QUF9JSUYocCMjKDIxKSwgMjEsIDIyKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMyhwKSBORE5CT09TVF9QUF9JSUYocCMjKDIzKSwgMjMsIDI0KQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjgocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyOCksIE5ETkJPT1NUX1BQX05PREVfMjYsIE5ETkJPT1NUX1BQX05PREVfMzApCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjYocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyNiksIE5ETkJPT1NUX1BQX05PREVfMjUsIE5ETkJPT1NUX1BQX05PREVfMjcpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzI1KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjUpLCAyNSwgMjYpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzI3KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjcpLCAyNywgMjgpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMzAocCkgTkROQk9PU1RfUFBfSUlGKHAjIygzMCksIE5ETkJPT1NUX1BQX05PREVfMjksIE5ETkJPT1NUX1BQX05PREVfMzEpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzI5KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjkpLCAyOSwgMzApCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzMxKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMzEpLCAzMSwgMzIpCi0jICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNDgocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg0OCksIE5ETkJPT1NUX1BQX05PREVfNDAsIE5ETkJPT1NUX1BQX05PREVfNTYpCi0jICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzQwKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoNDApLCBORE5CT09TVF9QUF9OT0RFXzM2LCBORE5CT09TVF9QUF9OT0RFXzQ0KQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMzYocCkgTkROQk9PU1RfUFBfSUlGKHAjIygzNiksIE5ETkJPT1NUX1BQX05PREVfMzQsIE5ETkJPT1NUX1BQX05PREVfMzgpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMzQocCkgTkROQk9PU1RfUFBfSUlGKHAjIygzNCksIE5ETkJPT1NUX1BQX05PREVfMzMsIE5ETkJPT1NUX1BQX05PREVfMzUpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzMzKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMzMpLCAzMywgMzQpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzM1KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMzUpLCAzNSwgMzYpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMzgocCkgTkROQk9PU1RfUFBfSUlGKHAjIygzOCksIE5ETkJPT1NUX1BQX05PREVfMzcsIE5ETkJPT1NUX1BQX05PREVfMzkpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzM3KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMzcpLCAzNywgMzgpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzM5KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMzkpLCAzOSwgNDApCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV80NChwKSBORE5CT09TVF9QUF9JSUYocCMjKDQ0KSwgTkROQk9PU1RfUFBfTk9ERV80MiwgTkROQk9PU1RfUFBfTk9ERV80NikKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV80MihwKSBORE5CT09TVF9QUF9JSUYocCMjKDQyKSwgTkROQk9PU1RfUFBfTk9ERV80MSwgTkROQk9PU1RfUFBfTk9ERV80MykKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNDEocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg0MSksIDQxLCA0MikKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNDMocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg0MyksIDQzLCA0NCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV80NihwKSBORE5CT09TVF9QUF9JSUYocCMjKDQ2KSwgTkROQk9PU1RfUFBfTk9ERV80NSwgTkROQk9PU1RfUFBfTk9ERV80NykKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNDUocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg0NSksIDQ1LCA0NikKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNDcocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg0NyksIDQ3LCA0OCkKLSMgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNTYocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg1NiksIE5ETkJPT1NUX1BQX05PREVfNTIsIE5ETkJPT1NUX1BQX05PREVfNjApCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV81MihwKSBORE5CT09TVF9QUF9JSUYocCMjKDUyKSwgTkROQk9PU1RfUFBfTk9ERV81MCwgTkROQk9PU1RfUFBfTk9ERV81NCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV81MChwKSBORE5CT09TVF9QUF9JSUYocCMjKDUwKSwgTkROQk9PU1RfUFBfTk9ERV80OSwgTkROQk9PU1RfUFBfTk9ERV81MSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNDkocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg0OSksIDQ5LCA1MCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNTEocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg1MSksIDUxLCA1MikKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV81NChwKSBORE5CT09TVF9QUF9JSUYocCMjKDU0KSwgTkROQk9PU1RfUFBfTk9ERV81MywgTkROQk9PU1RfUFBfTk9ERV81NSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNTMocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg1MyksIDUzLCA1NCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNTUocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg1NSksIDU1LCA1NikKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzYwKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoNjApLCBORE5CT09TVF9QUF9OT0RFXzU4LCBORE5CT09TVF9QUF9OT0RFXzYyKQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzU4KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoNTgpLCBORE5CT09TVF9QUF9OT0RFXzU3LCBORE5CT09TVF9QUF9OT0RFXzU5KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV81NyhwKSBORE5CT09TVF9QUF9JSUYocCMjKDU3KSwgNTcsIDU4KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV81OShwKSBORE5CT09TVF9QUF9JSUYocCMjKDU5KSwgNTksIDYwKQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzYyKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoNjIpLCBORE5CT09TVF9QUF9OT0RFXzYxLCBORE5CT09TVF9QUF9OT0RFXzYzKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV82MShwKSBORE5CT09TVF9QUF9JSUYocCMjKDYxKSwgNjEsIDYyKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV82MyhwKSBORE5CT09TVF9QUF9JSUYocCMjKDYzKSwgNjMsIDY0KQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfOTYocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg5NiksIE5ETkJPT1NUX1BQX05PREVfODAsIE5ETkJPT1NUX1BQX05PREVfMTEyKQotIyAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzgwKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoODApLCBORE5CT09TVF9QUF9OT0RFXzcyLCBORE5CT09TVF9QUF9OT0RFXzg4KQotIyAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV83MihwKSBORE5CT09TVF9QUF9JSUYocCMjKDcyKSwgTkROQk9PU1RfUFBfTk9ERV82OCwgTkROQk9PU1RfUFBfTk9ERV83NikKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzY4KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoNjgpLCBORE5CT09TVF9QUF9OT0RFXzY2LCBORE5CT09TVF9QUF9OT0RFXzcwKQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzY2KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoNjYpLCBORE5CT09TVF9QUF9OT0RFXzY1LCBORE5CT09TVF9QUF9OT0RFXzY3KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV82NShwKSBORE5CT09TVF9QUF9JSUYocCMjKDY1KSwgNjUsIDY2KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV82NyhwKSBORE5CT09TVF9QUF9JSUYocCMjKDY3KSwgNjcsIDY4KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzcwKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoNzApLCBORE5CT09TVF9QUF9OT0RFXzY5LCBORE5CT09TVF9QUF9OT0RFXzcxKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV82OShwKSBORE5CT09TVF9QUF9JSUYocCMjKDY5KSwgNjksIDcwKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV83MShwKSBORE5CT09TVF9QUF9JSUYocCMjKDcxKSwgNzEsIDcyKQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNzYocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg3NiksIE5ETkJPT1NUX1BQX05PREVfNzQsIE5ETkJPT1NUX1BQX05PREVfNzgpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNzQocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg3NCksIE5ETkJPT1NUX1BQX05PREVfNzMsIE5ETkJPT1NUX1BQX05PREVfNzUpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzczKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoNzMpLCA3MywgNzQpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzc1KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoNzUpLCA3NSwgNzYpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfNzgocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg3OCksIE5ETkJPT1NUX1BQX05PREVfNzcsIE5ETkJPT1NUX1BQX05PREVfNzkpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzc3KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoNzcpLCA3NywgNzgpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzc5KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoNzkpLCA3OSwgODApCi0jICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzg4KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoODgpLCBORE5CT09TVF9QUF9OT0RFXzg0LCBORE5CT09TVF9QUF9OT0RFXzkyKQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfODQocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg4NCksIE5ETkJPT1NUX1BQX05PREVfODIsIE5ETkJPT1NUX1BQX05PREVfODYpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfODIocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg4MiksIE5ETkJPT1NUX1BQX05PREVfODEsIE5ETkJPT1NUX1BQX05PREVfODMpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzgxKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoODEpLCA4MSwgODIpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzgzKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoODMpLCA4MywgODQpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfODYocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg4NiksIE5ETkJPT1NUX1BQX05PREVfODUsIE5ETkJPT1NUX1BQX05PREVfODcpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzg1KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoODUpLCA4NSwgODYpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzg3KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoODcpLCA4NywgODgpCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV85MihwKSBORE5CT09TVF9QUF9JSUYocCMjKDkyKSwgTkROQk9PU1RfUFBfTk9ERV85MCwgTkROQk9PU1RfUFBfTk9ERV85NCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV85MChwKSBORE5CT09TVF9QUF9JSUYocCMjKDkwKSwgTkROQk9PU1RfUFBfTk9ERV84OSwgTkROQk9PU1RfUFBfTk9ERV85MSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfODkocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg4OSksIDg5LCA5MCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfOTEocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg5MSksIDkxLCA5MikKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV85NChwKSBORE5CT09TVF9QUF9JSUYocCMjKDk0KSwgTkROQk9PU1RfUFBfTk9ERV85MywgTkROQk9PU1RfUFBfTk9ERV85NSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfOTMocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg5MyksIDkzLCA5NCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfOTUocCkgTkROQk9PU1RfUFBfSUlGKHAjIyg5NSksIDk1LCA5NikKLSMgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMTIocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxMTIpLCBORE5CT09TVF9QUF9OT0RFXzEwNCwgTkROQk9PU1RfUFBfTk9ERV8xMjApCi0jICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEwNChwKSBORE5CT09TVF9QUF9JSUYocCMjKDEwNCksIE5ETkJPT1NUX1BQX05PREVfMTAwLCBORE5CT09TVF9QUF9OT0RFXzEwOCkKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEwMChwKSBORE5CT09TVF9QUF9JSUYocCMjKDEwMCksIE5ETkJPT1NUX1BQX05PREVfOTgsIE5ETkJPT1NUX1BQX05PREVfMTAyKQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzk4KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoOTgpLCBORE5CT09TVF9QUF9OT0RFXzk3LCBORE5CT09TVF9QUF9OT0RFXzk5KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV85NyhwKSBORE5CT09TVF9QUF9JSUYocCMjKDk3KSwgOTcsIDk4KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV85OShwKSBORE5CT09TVF9QUF9JSUYocCMjKDk5KSwgOTksIDEwMCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMDIocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxMDIpLCBORE5CT09TVF9QUF9OT0RFXzEwMSwgTkROQk9PU1RfUFBfTk9ERV8xMDMpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEwMShwKSBORE5CT09TVF9QUF9JSUYocCMjKDEwMSksIDEwMSwgMTAyKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMDMocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxMDMpLCAxMDMsIDEwNCkKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEwOChwKSBORE5CT09TVF9QUF9JSUYocCMjKDEwOCksIE5ETkJPT1NUX1BQX05PREVfMTA2LCBORE5CT09TVF9QUF9OT0RFXzExMCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMDYocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxMDYpLCBORE5CT09TVF9QUF9OT0RFXzEwNSwgTkROQk9PU1RfUFBfTk9ERV8xMDcpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEwNShwKSBORE5CT09TVF9QUF9JSUYocCMjKDEwNSksIDEwNSwgMTA2KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMDcocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxMDcpLCAxMDcsIDEwOCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMTAocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxMTApLCBORE5CT09TVF9QUF9OT0RFXzEwOSwgTkROQk9PU1RfUFBfTk9ERV8xMTEpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEwOShwKSBORE5CT09TVF9QUF9JSUYocCMjKDEwOSksIDEwOSwgMTEwKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMTEocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxMTEpLCAxMTEsIDExMikKLSMgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTIwKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTIwKSwgTkROQk9PU1RfUFBfTk9ERV8xMTYsIE5ETkJPT1NUX1BQX05PREVfMTI0KQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTE2KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTE2KSwgTkROQk9PU1RfUFBfTk9ERV8xMTQsIE5ETkJPT1NUX1BQX05PREVfMTE4KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzExNChwKSBORE5CT09TVF9QUF9JSUYocCMjKDExNCksIE5ETkJPT1NUX1BQX05PREVfMTEzLCBORE5CT09TVF9QUF9OT0RFXzExNSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTEzKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTEzKSwgMTEzLCAxMTQpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzExNShwKSBORE5CT09TVF9QUF9JSUYocCMjKDExNSksIDExNSwgMTE2KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzExOChwKSBORE5CT09TVF9QUF9JSUYocCMjKDExOCksIE5ETkJPT1NUX1BQX05PREVfMTE3LCBORE5CT09TVF9QUF9OT0RFXzExOSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTE3KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTE3KSwgMTE3LCAxMTgpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzExOShwKSBORE5CT09TVF9QUF9JSUYocCMjKDExOSksIDExOSwgMTIwKQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTI0KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTI0KSwgTkROQk9PU1RfUFBfTk9ERV8xMjIsIE5ETkJPT1NUX1BQX05PREVfMTI2KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEyMihwKSBORE5CT09TVF9QUF9JSUYocCMjKDEyMiksIE5ETkJPT1NUX1BQX05PREVfMTIxLCBORE5CT09TVF9QUF9OT0RFXzEyMykKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTIxKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTIxKSwgMTIxLCAxMjIpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEyMyhwKSBORE5CT09TVF9QUF9JSUYocCMjKDEyMyksIDEyMywgMTI0KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEyNihwKSBORE5CT09TVF9QUF9JSUYocCMjKDEyNiksIE5ETkJPT1NUX1BQX05PREVfMTI1LCBORE5CT09TVF9QUF9OT0RFXzEyNykKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTI1KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTI1KSwgMTI1LCAxMjYpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzEyNyhwKSBORE5CT09TVF9QUF9JSUYocCMjKDEyNyksIDEyNywgMTI4KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xOTIocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxOTIpLCBORE5CT09TVF9QUF9OT0RFXzE2MCwgTkROQk9PU1RfUFBfTk9ERV8yMjQpCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNjAocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxNjApLCBORE5CT09TVF9QUF9OT0RFXzE0NCwgTkROQk9PU1RfUFBfTk9ERV8xNzYpCi0jICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTQ0KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTQ0KSwgTkROQk9PU1RfUFBfTk9ERV8xMzYsIE5ETkJPT1NUX1BQX05PREVfMTUyKQotIyAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMzYocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxMzYpLCBORE5CT09TVF9QUF9OT0RFXzEzMiwgTkROQk9PU1RfUFBfTk9ERV8xNDApCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMzIocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxMzIpLCBORE5CT09TVF9QUF9OT0RFXzEzMCwgTkROQk9PU1RfUFBfTk9ERV8xMzQpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTMwKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTMwKSwgTkROQk9PU1RfUFBfTk9ERV8xMjksIE5ETkJPT1NUX1BQX05PREVfMTMxKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMjkocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxMjkpLCAxMjksIDEzMCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTMxKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTMxKSwgMTMxLCAxMzIpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTM0KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTM0KSwgTkROQk9PU1RfUFBfTk9ERV8xMzMsIE5ETkJPT1NUX1BQX05PREVfMTM1KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMzMocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxMzMpLCAxMzMsIDEzNCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTM1KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTM1KSwgMTM1LCAxMzYpCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNDAocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxNDApLCBORE5CT09TVF9QUF9OT0RFXzEzOCwgTkROQk9PU1RfUFBfTk9ERV8xNDIpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTM4KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTM4KSwgTkROQk9PU1RfUFBfTk9ERV8xMzcsIE5ETkJPT1NUX1BQX05PREVfMTM5KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xMzcocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxMzcpLCAxMzcsIDEzOCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTM5KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTM5KSwgMTM5LCAxNDApCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTQyKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTQyKSwgTkROQk9PU1RfUFBfTk9ERV8xNDEsIE5ETkJPT1NUX1BQX05PREVfMTQzKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNDEocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxNDEpLCAxNDEsIDE0MikKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTQzKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTQzKSwgMTQzLCAxNDQpCi0jICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE1MihwKSBORE5CT09TVF9QUF9JSUYocCMjKDE1MiksIE5ETkJPT1NUX1BQX05PREVfMTQ4LCBORE5CT09TVF9QUF9OT0RFXzE1NikKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE0OChwKSBORE5CT09TVF9QUF9JSUYocCMjKDE0OCksIE5ETkJPT1NUX1BQX05PREVfMTQ2LCBORE5CT09TVF9QUF9OT0RFXzE1MCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNDYocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxNDYpLCBORE5CT09TVF9QUF9OT0RFXzE0NSwgTkROQk9PU1RfUFBfTk9ERV8xNDcpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE0NShwKSBORE5CT09TVF9QUF9JSUYocCMjKDE0NSksIDE0NSwgMTQ2KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNDcocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxNDcpLCAxNDcsIDE0OCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNTAocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxNTApLCBORE5CT09TVF9QUF9OT0RFXzE0OSwgTkROQk9PU1RfUFBfTk9ERV8xNTEpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE0OShwKSBORE5CT09TVF9QUF9JSUYocCMjKDE0OSksIDE0OSwgMTUwKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNTEocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxNTEpLCAxNTEsIDE1MikKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE1NihwKSBORE5CT09TVF9QUF9JSUYocCMjKDE1NiksIE5ETkJPT1NUX1BQX05PREVfMTU0LCBORE5CT09TVF9QUF9OT0RFXzE1OCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNTQocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxNTQpLCBORE5CT09TVF9QUF9OT0RFXzE1MywgTkROQk9PU1RfUFBfTk9ERV8xNTUpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE1MyhwKSBORE5CT09TVF9QUF9JSUYocCMjKDE1MyksIDE1MywgMTU0KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNTUocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxNTUpLCAxNTUsIDE1NikKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNTgocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxNTgpLCBORE5CT09TVF9QUF9OT0RFXzE1NywgTkROQk9PU1RfUFBfTk9ERV8xNTkpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE1NyhwKSBORE5CT09TVF9QUF9JSUYocCMjKDE1NyksIDE1NywgMTU4KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNTkocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxNTkpLCAxNTksIDE2MCkKLSMgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNzYocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxNzYpLCBORE5CT09TVF9QUF9OT0RFXzE2OCwgTkROQk9PU1RfUFBfTk9ERV8xODQpCi0jICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE2OChwKSBORE5CT09TVF9QUF9JSUYocCMjKDE2OCksIE5ETkJPT1NUX1BQX05PREVfMTY0LCBORE5CT09TVF9QUF9OT0RFXzE3MikKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE2NChwKSBORE5CT09TVF9QUF9JSUYocCMjKDE2NCksIE5ETkJPT1NUX1BQX05PREVfMTYyLCBORE5CT09TVF9QUF9OT0RFXzE2NikKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNjIocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxNjIpLCBORE5CT09TVF9QUF9OT0RFXzE2MSwgTkROQk9PU1RfUFBfTk9ERV8xNjMpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE2MShwKSBORE5CT09TVF9QUF9JSUYocCMjKDE2MSksIDE2MSwgMTYyKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNjMocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxNjMpLCAxNjMsIDE2NCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNjYocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxNjYpLCBORE5CT09TVF9QUF9OT0RFXzE2NSwgTkROQk9PU1RfUFBfTk9ERV8xNjcpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE2NShwKSBORE5CT09TVF9QUF9JSUYocCMjKDE2NSksIDE2NSwgMTY2KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNjcocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxNjcpLCAxNjcsIDE2OCkKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE3MihwKSBORE5CT09TVF9QUF9JSUYocCMjKDE3MiksIE5ETkJPT1NUX1BQX05PREVfMTcwLCBORE5CT09TVF9QUF9OT0RFXzE3NCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNzAocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxNzApLCBORE5CT09TVF9QUF9OT0RFXzE2OSwgTkROQk9PU1RfUFBfTk9ERV8xNzEpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE2OShwKSBORE5CT09TVF9QUF9JSUYocCMjKDE2OSksIDE2OSwgMTcwKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNzEocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxNzEpLCAxNzEsIDE3MikKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNzQocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxNzQpLCBORE5CT09TVF9QUF9OT0RFXzE3MywgTkROQk9PU1RfUFBfTk9ERV8xNzUpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE3MyhwKSBORE5CT09TVF9QUF9JSUYocCMjKDE3MyksIDE3MywgMTc0KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8xNzUocCkgTkROQk9PU1RfUFBfSUlGKHAjIygxNzUpLCAxNzUsIDE3NikKLSMgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTg0KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTg0KSwgTkROQk9PU1RfUFBfTk9ERV8xODAsIE5ETkJPT1NUX1BQX05PREVfMTg4KQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTgwKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTgwKSwgTkROQk9PU1RfUFBfTk9ERV8xNzgsIE5ETkJPT1NUX1BQX05PREVfMTgyKQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE3OChwKSBORE5CT09TVF9QUF9JSUYocCMjKDE3OCksIE5ETkJPT1NUX1BQX05PREVfMTc3LCBORE5CT09TVF9QUF9OT0RFXzE3OSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTc3KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTc3KSwgMTc3LCAxNzgpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE3OShwKSBORE5CT09TVF9QUF9JSUYocCMjKDE3OSksIDE3OSwgMTgwKQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE4MihwKSBORE5CT09TVF9QUF9JSUYocCMjKDE4MiksIE5ETkJPT1NUX1BQX05PREVfMTgxLCBORE5CT09TVF9QUF9OT0RFXzE4MykKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTgxKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTgxKSwgMTgxLCAxODIpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE4MyhwKSBORE5CT09TVF9QUF9JSUYocCMjKDE4MyksIDE4MywgMTg0KQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTg4KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTg4KSwgTkROQk9PU1RfUFBfTk9ERV8xODYsIE5ETkJPT1NUX1BQX05PREVfMTkwKQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE4NihwKSBORE5CT09TVF9QUF9JSUYocCMjKDE4NiksIE5ETkJPT1NUX1BQX05PREVfMTg1LCBORE5CT09TVF9QUF9OT0RFXzE4NykKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTg1KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTg1KSwgMTg1LCAxODYpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE4NyhwKSBORE5CT09TVF9QUF9JSUYocCMjKDE4NyksIDE4NywgMTg4KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE5MChwKSBORE5CT09TVF9QUF9JSUYocCMjKDE5MCksIE5ETkJPT1NUX1BQX05PREVfMTg5LCBORE5CT09TVF9QUF9OT0RFXzE5MSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTg5KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTg5KSwgMTg5LCAxOTApCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE5MShwKSBORE5CT09TVF9QUF9JSUYocCMjKDE5MSksIDE5MSwgMTkyKQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjI0KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjI0KSwgTkROQk9PU1RfUFBfTk9ERV8yMDgsIE5ETkJPT1NUX1BQX05PREVfMjQwKQotIyAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIwOChwKSBORE5CT09TVF9QUF9JSUYocCMjKDIwOCksIE5ETkJPT1NUX1BQX05PREVfMjAwLCBORE5CT09TVF9QUF9OT0RFXzIxNikKLSMgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjAwKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjAwKSwgTkROQk9PU1RfUFBfTk9ERV8xOTYsIE5ETkJPT1NUX1BQX05PREVfMjA0KQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTk2KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTk2KSwgTkROQk9PU1RfUFBfTk9ERV8xOTQsIE5ETkJPT1NUX1BQX05PREVfMTk4KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE5NChwKSBORE5CT09TVF9QUF9JSUYocCMjKDE5NCksIE5ETkJPT1NUX1BQX05PREVfMTkzLCBORE5CT09TVF9QUF9OT0RFXzE5NSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTkzKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTkzKSwgMTkzLCAxOTQpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE5NShwKSBORE5CT09TVF9QUF9JSUYocCMjKDE5NSksIDE5NSwgMTk2KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE5OChwKSBORE5CT09TVF9QUF9JSUYocCMjKDE5OCksIE5ETkJPT1NUX1BQX05PREVfMTk3LCBORE5CT09TVF9QUF9OT0RFXzE5OSkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMTk3KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMTk3KSwgMTk3LCAxOTgpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzE5OShwKSBORE5CT09TVF9QUF9JSUYocCMjKDE5OSksIDE5OSwgMjAwKQotIyAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjA0KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjA0KSwgTkROQk9PU1RfUFBfTk9ERV8yMDIsIE5ETkJPT1NUX1BQX05PREVfMjA2KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIwMihwKSBORE5CT09TVF9QUF9JSUYocCMjKDIwMiksIE5ETkJPT1NUX1BQX05PREVfMjAxLCBORE5CT09TVF9QUF9OT0RFXzIwMykKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjAxKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjAxKSwgMjAxLCAyMDIpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIwMyhwKSBORE5CT09TVF9QUF9JSUYocCMjKDIwMyksIDIwMywgMjA0KQotIyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIwNihwKSBORE5CT09TVF9QUF9JSUYocCMjKDIwNiksIE5ETkJPT1NUX1BQX05PREVfMjA1LCBORE5CT09TVF9QUF9OT0RFXzIwNykKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjA1KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjA1KSwgMjA1LCAyMDYpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzIwNyhwKSBORE5CT09TVF9QUF9JSUYocCMjKDIwNyksIDIwNywgMjA4KQotIyAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMTYocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyMTYpLCBORE5CT09TVF9QUF9OT0RFXzIxMiwgTkROQk9PU1RfUFBfTk9ERV8yMjApCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMTIocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyMTIpLCBORE5CT09TVF9QUF9OT0RFXzIxMCwgTkROQk9PU1RfUFBfTk9ERV8yMTQpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjEwKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjEwKSwgTkROQk9PU1RfUFBfTk9ERV8yMDksIE5ETkJPT1NUX1BQX05PREVfMjExKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMDkocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyMDkpLCAyMDksIDIxMCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjExKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjExKSwgMjExLCAyMTIpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjE0KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjE0KSwgTkROQk9PU1RfUFBfTk9ERV8yMTMsIE5ETkJPT1NUX1BQX05PREVfMjE1KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMTMocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyMTMpLCAyMTMsIDIxNCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjE1KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjE1KSwgMjE1LCAyMTYpCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMjAocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyMjApLCBORE5CT09TVF9QUF9OT0RFXzIxOCwgTkROQk9PU1RfUFBfTk9ERV8yMjIpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjE4KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjE4KSwgTkROQk9PU1RfUFBfTk9ERV8yMTcsIE5ETkJPT1NUX1BQX05PREVfMjE5KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMTcocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyMTcpLCAyMTcsIDIxOCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjE5KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjE5KSwgMjE5LCAyMjApCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjIyKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjIyKSwgTkROQk9PU1RfUFBfTk9ERV8yMjEsIE5ETkJPT1NUX1BQX05PREVfMjIzKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMjEocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyMjEpLCAyMjEsIDIyMikKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjIzKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjIzKSwgMjIzLCAyMjQpCi0jICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjQwKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjQwKSwgTkROQk9PU1RfUFBfTk9ERV8yMzIsIE5ETkJPT1NUX1BQX05PREVfMjQ4KQotIyAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMzIocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyMzIpLCBORE5CT09TVF9QUF9OT0RFXzIyOCwgTkROQk9PU1RfUFBfTk9ERV8yMzYpCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMjgocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyMjgpLCBORE5CT09TVF9QUF9OT0RFXzIyNiwgTkROQk9PU1RfUFBfTk9ERV8yMzApCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjI2KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjI2KSwgTkROQk9PU1RfUFBfTk9ERV8yMjUsIE5ETkJPT1NUX1BQX05PREVfMjI3KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMjUocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyMjUpLCAyMjUsIDIyNikKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjI3KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjI3KSwgMjI3LCAyMjgpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjMwKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjMwKSwgTkROQk9PU1RfUFBfTk9ERV8yMjksIE5ETkJPT1NUX1BQX05PREVfMjMxKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMjkocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyMjkpLCAyMjksIDIzMCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjMxKHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjMxKSwgMjMxLCAyMzIpCi0jICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMzYocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyMzYpLCBORE5CT09TVF9QUF9OT0RFXzIzNCwgTkROQk9PU1RfUFBfTk9ERV8yMzgpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjM0KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjM0KSwgTkROQk9PU1RfUFBfTk9ERV8yMzMsIE5ETkJPT1NUX1BQX05PREVfMjM1KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMzMocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyMzMpLCAyMzMsIDIzNCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjM1KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjM1KSwgMjM1LCAyMzYpCi0jICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjM4KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjM4KSwgTkROQk9PU1RfUFBfTk9ERV8yMzcsIE5ETkJPT1NUX1BQX05PREVfMjM5KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yMzcocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyMzcpLCAyMzcsIDIzOCkKLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PREVfMjM5KHApIE5ETkJPT1NUX1BQX0lJRihwIyMoMjM5KSwgMjM5LCAyNDApCi0jICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzI0OChwKSBORE5CT09TVF9QUF9JSUYocCMjKDI0OCksIE5ETkJPT1NUX1BQX05PREVfMjQ0LCBORE5CT09TVF9QUF9OT0RFXzI1MikKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzI0NChwKSBORE5CT09TVF9QUF9JSUYocCMjKDI0NCksIE5ETkJPT1NUX1BQX05PREVfMjQyLCBORE5CT09TVF9QUF9OT0RFXzI0NikKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yNDIocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyNDIpLCBORE5CT09TVF9QUF9OT0RFXzI0MSwgTkROQk9PU1RfUFBfTk9ERV8yNDMpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzI0MShwKSBORE5CT09TVF9QUF9JSUYocCMjKDI0MSksIDI0MSwgMjQyKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yNDMocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyNDMpLCAyNDMsIDI0NCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yNDYocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyNDYpLCBORE5CT09TVF9QUF9OT0RFXzI0NSwgTkROQk9PU1RfUFBfTk9ERV8yNDcpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzI0NShwKSBORE5CT09TVF9QUF9JSUYocCMjKDI0NSksIDI0NSwgMjQ2KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yNDcocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyNDcpLCAyNDcsIDI0OCkKLSMgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzI1MihwKSBORE5CT09TVF9QUF9JSUYocCMjKDI1MiksIE5ETkJPT1NUX1BQX05PREVfMjUwLCBORE5CT09TVF9QUF9OT0RFXzI1NCkKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yNTAocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyNTApLCBORE5CT09TVF9QUF9OT0RFXzI0OSwgTkROQk9PU1RfUFBfTk9ERV8yNTEpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzI0OShwKSBORE5CT09TVF9QUF9JSUYocCMjKDI0OSksIDI0OSwgMjUwKQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yNTEocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyNTEpLCAyNTEsIDI1MikKLSMgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yNTQocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyNTQpLCBORE5CT09TVF9QUF9OT0RFXzI1MywgTkROQk9PU1RfUFBfTk9ERV8yNTUpCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9OT0RFXzI1MyhwKSBORE5CT09TVF9QUF9JSUYocCMjKDI1MyksIDI1MywgMjU0KQotIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9ERV8yNTUocCkgTkROQk9PU1RfUFBfSUlGKHAjIygyNTUpLCAyNTUsIDI1NikKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2RldGFpbC9pc19iaW5hcnkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvZGV0YWlsL2lzX2JpbmFyeS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMwODc3N2YuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvZGV0YWlsL2lzX2JpbmFyeS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0RFVEFJTF9JU19CSU5BUllfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfREVUQUlMX0lTX0JJTkFSWV9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZGV0YWlsL2NoZWNrLmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfSVNfQklOQVJZICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVNfQklOQVJZKHgpIE5ETkJPT1NUX1BQX0NIRUNLKHgsIE5ETkJPT1NUX1BQX0lTX0JJTkFSWV9DSEVDSykKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVNfQklOQVJZKHgpIE5ETkJPT1NUX1BQX0lTX0JJTkFSWV9JKHgpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JU19CSU5BUllfSSh4KSBORE5CT09TVF9QUF9DSEVDSyh4LCBORE5CT09TVF9QUF9JU19CSU5BUllfQ0hFQ0spCi0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9JU19CSU5BUllfQ0hFQ0soYSwgYikgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQ0hFQ0tfUkVTVUxUX05ETkJPT1NUX1BQX0lTX0JJTkFSWV9DSEVDSyAwLCBORE5CT09TVF9QUF9OSUwKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2RldGFpbC9pc191bmFyeS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9kZXRhaWwvaXNfdW5hcnkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMWFhZjU5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2RldGFpbC9pc191bmFyeS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0RFVEFJTF9JU19VTkFSWV9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9ERVRBSUxfSVNfVU5BUllfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2RldGFpbC9jaGVjay5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX0lTX1VOQVJZICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVNfVU5BUlkoeCkgTkROQk9PU1RfUFBfQ0hFQ0soeCwgTkROQk9PU1RfUFBfSVNfVU5BUllfQ0hFQ0spCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lTX1VOQVJZKHgpIE5ETkJPT1NUX1BQX0lTX1VOQVJZX0koeCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lTX1VOQVJZX0koeCkgTkROQk9PU1RfUFBfQ0hFQ0soeCwgTkROQk9PU1RfUFBfSVNfVU5BUllfQ0hFQ0spCi0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9JU19VTkFSWV9DSEVDSyhhKSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9DSEVDS19SRVNVTFRfTkROQk9PU1RfUFBfSVNfVU5BUllfQ0hFQ0sgMCwgTkROQk9PU1RfUFBfTklMCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9lbXB0eS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9lbXB0eS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJkYjlhZGEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvZW1wdHkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9FTVBUWV9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9FTVBUWV9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2ZhY2lsaXRpZXMvZW1wdHkuaHBwPgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvZW51bS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9lbnVtLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGRkYjhhMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9lbnVtLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfRU5VTV9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9FTlVNX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtLmhwcD4KLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2VudW1fcGFyYW1zLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2VudW1fcGFyYW1zLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjExZjZkZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9lbnVtX3BhcmFtcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0VOVU1fUEFSQU1TX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0VOVU1fUEFSQU1TX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX3BhcmFtcy5ocHA+Ci0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9lbnVtX3BhcmFtc193aXRoX2FfZGVmYXVsdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9lbnVtX3BhcmFtc193aXRoX2FfZGVmYXVsdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVkODBmYmMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvZW51bV9wYXJhbXNfd2l0aF9hX2RlZmF1bHQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9FTlVNX1BBUkFNU19XSVRIX0FfREVGQVVMVF9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9FTlVNX1BBUkFNU19XSVRIX0FfREVGQVVMVF9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bV9wYXJhbXNfd2l0aF9hX2RlZmF1bHQuaHBwPgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvZW51bV9zaGlmdGVkX3BhcmFtcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9lbnVtX3NoaWZ0ZWRfcGFyYW1zLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDk3YTIyYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9lbnVtX3NoaWZ0ZWRfcGFyYW1zLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfRU5VTV9TSElGVEVEX1BBUkFNU19IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9FTlVNX1NISUZURURfUEFSQU1TX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX3NoaWZ0ZWRfcGFyYW1zLmhwcD4KLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2V4cHJfaWYuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvZXhwcl9pZi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBiZDMwMjcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvZXhwcl9pZi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0VYUFJfSUZfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfRVhQUl9JRl9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvZXhwcl9pZi5ocHA+Ci0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9mYWNpbGl0aWVzL2VtcHR5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2ZhY2lsaXRpZXMvZW1wdHkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlM2ZkM2VhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2ZhY2lsaXRpZXMvZW1wdHkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotIyAvKiBDb3B5cmlnaHQgKEMpIDIwMDEKLSMgICogSG91c2VtYXJxdWUgT3kKLSMgICogaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20KLSMgICoKLSMgICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICovCi0jCi0jIC8qIFJldmlzZWQgYnkgUGF1bCBNZW5zb25pZGVzICgyMDAyKSAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfRkFDSUxJVElFU19FTVBUWV9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9GQUNJTElUSUVTX0VNUFRZX0hQUAotIwotIyAvKiBORE5CT09TVF9QUF9FTVBUWSAqLwotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfRU1QVFkoKQotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvZmFjaWxpdGllcy9pZGVudGl0eS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9mYWNpbGl0aWVzL2lkZW50aXR5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmUxNGFmNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9mYWNpbGl0aWVzL2lkZW50aXR5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLSMgLyogQ29weXJpZ2h0IChDKSAyMDAxCi0jICAqIEhvdXNlbWFycXVlIE95Ci0jICAqIGh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tCi0jICAqCi0jICAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqLwotIwotIyAvKiBSZXZpc2VkIGJ5IFBhdWwgTWVuc29uaWRlcyAoMjAwMikgKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0ZBQ0lMSVRJRVNfSURFTlRJVFlfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfRkFDSUxJVElFU19JREVOVElUWV9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2ZhY2lsaXRpZXMvZW1wdHkuaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9JREVOVElUWSAqLwotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSURFTlRJVFkoaXRlbSkgaXRlbSBORE5CT09TVF9QUF9FTVBUWQotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvZmFjaWxpdGllcy9pbnRlcmNlcHQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvZmFjaWxpdGllcy9pbnRlcmNlcHQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YTIyNTY2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2ZhY2lsaXRpZXMvaW50ZXJjZXB0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI3NyArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0ZBQ0lMSVRJRVNfSU5URVJDRVBUX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0ZBQ0lMSVRJRVNfSU5URVJDRVBUX0hQUAotIwotIyAvKiBORE5CT09TVF9QUF9JTlRFUkNFUFQgKi8KLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVCBORE5CT09TVF9QUF9JTlRFUkNFUFRfCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8yCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF81Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF84Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzEwCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzEzCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMTcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8xOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMjAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8yMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIyCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMjMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8yNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzI1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMjYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8yNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzI4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMjkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8zMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzMxCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMzIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8zMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzM0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMzUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8zNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzM3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfMzgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF8zOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzQwCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfNDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF80MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzQzCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfNDQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF80NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzQ2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfNDcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF80OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzQ5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfNTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF81MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzUyCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfNTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF81NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzU1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfNTYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF81NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzU4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfNTkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF82MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzYxCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfNjIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF82MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzY0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfNjUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF82NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzY3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfNjgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF82OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzcwCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfNzEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF83MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzczCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfNzQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF83NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzc2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfNzcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF83OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzc5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfODAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF84MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzgyCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfODMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF84NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzg1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfODYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF84NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzg4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfODkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF85MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzkxCi0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfOTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF85MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzk0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfOTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF85NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzk3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JTlRFUkNFUFRfOTgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVF85OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzEwMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzEwMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzEwMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzEwMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzEwNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzEwNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzEwNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzEwNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzEwOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzEwOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzExMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzExMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzExMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzExMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzExNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzExNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzExNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzExNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzExOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzExOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzEyMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzEyMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzEyMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzEyMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzEyNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzEyNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzEyNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzEyNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzEyOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzEyOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzEzMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzEzMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzEzMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzEzMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzEzNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzEzNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzEzNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzEzNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzEzOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzEzOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE0MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE0MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE0MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE0MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE0NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE0NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE0NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE0NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE0OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE0OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE1MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE1MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE1MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE1MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE1NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE1NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE1NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE1NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE1OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE1OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE2MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE2MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE2MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE2MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE2NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE2NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE2NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE2NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE2OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE2OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE3MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE3MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE3MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE3MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE3NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE3NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE3NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE3NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE3OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE3OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE4MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE4MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE4MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE4MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE4NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE4NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE4NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE4NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE4OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE4OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE5MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE5MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE5MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE5MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE5NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE5NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE5NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE5NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE5OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzE5OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIwMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIwMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIwMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIwMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIwNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIwNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIwNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIwNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIwOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIwOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIxMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIxMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIxMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIxMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIxNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIxNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIxNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIxNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIxOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIxOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIyMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIyMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIyMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIyMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIyNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIyNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIyNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIyNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIyOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIyOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIzMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIzMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIzMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIzMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIzNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIzNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIzNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIzNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIzOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzIzOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzI0MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzI0MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzI0MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzI0MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzI0NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzI0NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzI0NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzI0NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzI0OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzI0OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzI1MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzI1MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzI1MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzI1MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzI1NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzI1NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSU5URVJDRVBUXzI1NgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvZmFjaWxpdGllcy9vdmVybG9hZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9mYWNpbGl0aWVzL292ZXJsb2FkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzY5ZWVkZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9mYWNpbGl0aWVzL292ZXJsb2FkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMTEuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgRWR3YXJkIERpZW5lciAyMDExLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSAgICAgICoKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0ICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9GQUNJTElUSUVTX09WRVJMT0FEX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0ZBQ0lMSVRJRVNfT1ZFUkxPQURfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvdmFyaWFkaWMvc2l6ZS5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX09WRVJMT0FEICovCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1ZBUklBRElDUwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfT1ZFUkxPQUQocHJlZml4LCAuLi4pIE5ETkJPT1NUX1BQX0NBVChwcmVmaXgsIE5ETkJPT1NUX1BQX1ZBUklBRElDX1NJWkUoX19WQV9BUkdTX18pKQotIyBlbmRpZgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaWRlbnRpdHkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaWRlbnRpdHkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMDZiZDU4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2lkZW50aXR5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfSURFTlRJVFlfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfSURFTlRJVFlfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9mYWNpbGl0aWVzL2lkZW50aXR5LmhwcD4KLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2lmLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2lmLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGE0NGVkMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pZi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0lGX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0lGX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9pZi5ocHA+Ci0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pbmMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaW5jLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzQ1YjY2OC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pbmMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9JTkNfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfSU5DX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9pbmMuaHBwPgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0ZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTBiMmYzNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfSVRFUkFURV9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9JVEVSQVRFX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2l0ZXJhdGUuaHBwPgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ib3VuZHMvbG93ZXIxLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvYm91bmRzL2xvd2VyMS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRkNzE2NmUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ib3VuZHMvbG93ZXIxLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zbG90L2RldGFpbC9zaGFyZWQuaHBwPgotIwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMQotIwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMV9ESUdJVF8xCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xX0RJR0lUXzIKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzFfRElHSVRfMwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMV9ESUdJVF80Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xX0RJR0lUXzUKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzFfRElHSVRfNgotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMV9ESUdJVF83Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xX0RJR0lUXzgKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzFfRElHSVRfOQotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMV9ESUdJVF8xMAotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMV9ESUdJVF8zIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMV9ESUdJVF8zIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMV9ESUdJVF8zIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMV9ESUdJVF8zIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMV9ESUdJVF8zIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMV9ESUdJVF8zIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMV9ESUdJVF8zIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMV9ESUdJVF8zIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMV9ESUdJVF8zIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMV9ESUdJVF8zIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzFfRElHSVRfMiAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzFfRElHSVRfMiAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzFfRElHSVRfMiAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzFfRElHSVRfMiAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzFfRElHSVRfMiA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzFfRElHSVRfMiA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzFfRElHSVRfMiA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzFfRElHSVRfMiA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzFfRElHSVRfMiA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzFfRElHSVRfMiA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xX0RJR0lUXzEgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xX0RJR0lUXzEgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xX0RJR0lUXzEgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xX0RJR0lUXzEgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xX0RJR0lUXzEgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xX0RJR0lUXzEgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xX0RJR0lUXzEgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xX0RJR0lUXzEgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xX0RJR0lUXzEgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xX0RJR0lUXzEgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMV9ESUdJVF8zCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSBORE5CT09TVF9QUF9TTE9UX0NDXzMoTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzFfRElHSVRfMywgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzFfRElHSVRfMiwgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzFfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMV9ESUdJVF8yCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSBORE5CT09TVF9QUF9TTE9UX0NDXzIoTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzFfRElHSVRfMiwgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzFfRElHSVRfMSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzFfRElHSVRfMQotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ib3VuZHMvbG93ZXIyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvYm91bmRzL2xvd2VyMi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3OWIyZGQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ib3VuZHMvbG93ZXIyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zbG90L2RldGFpbC9zaGFyZWQuaHBwPgotIwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMgotIwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMl9ESUdJVF8xCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yX0RJR0lUXzIKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzJfRElHSVRfMwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMl9ESUdJVF80Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yX0RJR0lUXzUKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzJfRElHSVRfNgotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMl9ESUdJVF83Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yX0RJR0lUXzgKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzJfRElHSVRfOQotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMl9ESUdJVF8xMAotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMl9ESUdJVF8zIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMl9ESUdJVF8zIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMl9ESUdJVF8zIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMl9ESUdJVF8zIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMl9ESUdJVF8zIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMl9ESUdJVF8zIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMl9ESUdJVF8zIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMl9ESUdJVF8zIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMl9ESUdJVF8zIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMl9ESUdJVF8zIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzJfRElHSVRfMiAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzJfRElHSVRfMiAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzJfRElHSVRfMiAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzJfRElHSVRfMiAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzJfRElHSVRfMiA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzJfRElHSVRfMiA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzJfRElHSVRfMiA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzJfRElHSVRfMiA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzJfRElHSVRfMiA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzJfRElHSVRfMiA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yX0RJR0lUXzEgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yX0RJR0lUXzEgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yX0RJR0lUXzEgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yX0RJR0lUXzEgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yX0RJR0lUXzEgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yX0RJR0lUXzEgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yX0RJR0lUXzEgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yX0RJR0lUXzEgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yX0RJR0lUXzEgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yX0RJR0lUXzEgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMl9ESUdJVF8zCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiBORE5CT09TVF9QUF9TTE9UX0NDXzMoTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzJfRElHSVRfMywgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzJfRElHSVRfMiwgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzJfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMl9ESUdJVF8yCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiBORE5CT09TVF9QUF9TTE9UX0NDXzIoTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzJfRElHSVRfMiwgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzJfRElHSVRfMSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzJfRElHSVRfMQotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ib3VuZHMvbG93ZXIzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvYm91bmRzL2xvd2VyMy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI0ZTM0NTMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ib3VuZHMvbG93ZXIzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zbG90L2RldGFpbC9zaGFyZWQuaHBwPgotIwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMwotIwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfM19ESUdJVF8xCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zX0RJR0lUXzIKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzNfRElHSVRfMwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfM19ESUdJVF80Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zX0RJR0lUXzUKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzNfRElHSVRfNgotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfM19ESUdJVF83Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zX0RJR0lUXzgKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzNfRElHSVRfOQotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfM19ESUdJVF8xMAotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfM19ESUdJVF8zIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfM19ESUdJVF8zIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfM19ESUdJVF8zIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfM19ESUdJVF8zIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfM19ESUdJVF8zIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfM19ESUdJVF8zIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfM19ESUdJVF8zIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfM19ESUdJVF8zIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfM19ESUdJVF8zIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfM19ESUdJVF8zIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzNfRElHSVRfMiAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzNfRElHSVRfMiAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzNfRElHSVRfMiAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzNfRElHSVRfMiAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzNfRElHSVRfMiA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzNfRElHSVRfMiA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzNfRElHSVRfMiA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzNfRElHSVRfMiA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzNfRElHSVRfMiA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzNfRElHSVRfMiA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zX0RJR0lUXzEgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zX0RJR0lUXzEgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zX0RJR0lUXzEgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zX0RJR0lUXzEgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zX0RJR0lUXzEgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zX0RJR0lUXzEgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zX0RJR0lUXzEgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zX0RJR0lUXzEgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zX0RJR0lUXzEgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zX0RJR0lUXzEgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfM19ESUdJVF8zCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyBORE5CT09TVF9QUF9TTE9UX0NDXzMoTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzNfRElHSVRfMywgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzNfRElHSVRfMiwgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzNfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfM19ESUdJVF8yCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyBORE5CT09TVF9QUF9TTE9UX0NDXzIoTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzNfRElHSVRfMiwgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzNfRElHSVRfMSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzNfRElHSVRfMQotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ib3VuZHMvbG93ZXI0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvYm91bmRzL2xvd2VyNC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRlY2Q3OTkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ib3VuZHMvbG93ZXI0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zbG90L2RldGFpbC9zaGFyZWQuaHBwPgotIwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNAotIwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNF9ESUdJVF8xCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80X0RJR0lUXzIKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzRfRElHSVRfMwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNF9ESUdJVF80Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80X0RJR0lUXzUKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzRfRElHSVRfNgotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNF9ESUdJVF83Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80X0RJR0lUXzgKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzRfRElHSVRfOQotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNF9ESUdJVF8xMAotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNF9ESUdJVF8zIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNF9ESUdJVF8zIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNF9ESUdJVF8zIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNF9ESUdJVF8zIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNF9ESUdJVF8zIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNF9ESUdJVF8zIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNF9ESUdJVF8zIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNF9ESUdJVF8zIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNF9ESUdJVF8zIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNF9ESUdJVF8zIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzRfRElHSVRfMiAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzRfRElHSVRfMiAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzRfRElHSVRfMiAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzRfRElHSVRfMiAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzRfRElHSVRfMiA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzRfRElHSVRfMiA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzRfRElHSVRfMiA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzRfRElHSVRfMiA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzRfRElHSVRfMiA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzRfRElHSVRfMiA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80X0RJR0lUXzEgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80X0RJR0lUXzEgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80X0RJR0lUXzEgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80X0RJR0lUXzEgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80X0RJR0lUXzEgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80X0RJR0lUXzEgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80X0RJR0lUXzEgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80X0RJR0lUXzEgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80X0RJR0lUXzEgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80X0RJR0lUXzEgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNF9ESUdJVF8zCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCBORE5CT09TVF9QUF9TTE9UX0NDXzMoTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzRfRElHSVRfMywgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzRfRElHSVRfMiwgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzRfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNF9ESUdJVF8yCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCBORE5CT09TVF9QUF9TTE9UX0NDXzIoTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzRfRElHSVRfMiwgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzRfRElHSVRfMSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzRfRElHSVRfMQotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ib3VuZHMvbG93ZXI1LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvYm91bmRzL2xvd2VyNS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEyMGM1MzkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ib3VuZHMvbG93ZXI1LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zbG90L2RldGFpbC9zaGFyZWQuaHBwPgotIwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNQotIwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNV9ESUdJVF8xCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81X0RJR0lUXzIKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzVfRElHSVRfMwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNV9ESUdJVF80Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81X0RJR0lUXzUKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzVfRElHSVRfNgotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNV9ESUdJVF83Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81X0RJR0lUXzgKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzVfRElHSVRfOQotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNV9ESUdJVF8xMAotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNV9ESUdJVF8zIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNV9ESUdJVF8zIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNV9ESUdJVF8zIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNV9ESUdJVF8zIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNV9ESUdJVF8zIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNV9ESUdJVF8zIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNV9ESUdJVF8zIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNV9ESUdJVF8zIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNV9ESUdJVF8zIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNV9ESUdJVF8zIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzVfRElHSVRfMiAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzVfRElHSVRfMiAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzVfRElHSVRfMiAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzVfRElHSVRfMiAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzVfRElHSVRfMiA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzVfRElHSVRfMiA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzVfRElHSVRfMiA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzVfRElHSVRfMiA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzVfRElHSVRfMiA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzVfRElHSVRfMiA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81X0RJR0lUXzEgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81X0RJR0lUXzEgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81X0RJR0lUXzEgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81X0RJR0lUXzEgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81X0RJR0lUXzEgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81X0RJR0lUXzEgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81X0RJR0lUXzEgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81X0RJR0lUXzEgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81X0RJR0lUXzEgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81X0RJR0lUXzEgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNV9ESUdJVF8zCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSBORE5CT09TVF9QUF9TTE9UX0NDXzMoTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzVfRElHSVRfMywgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzVfRElHSVRfMiwgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzVfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNV9ESUdJVF8yCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSBORE5CT09TVF9QUF9TTE9UX0NDXzIoTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzVfRElHSVRfMiwgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzVfRElHSVRfMSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzVfRElHSVRfMQotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ib3VuZHMvdXBwZXIxLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvYm91bmRzL3VwcGVyMS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE4NTQ3ZmQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ib3VuZHMvdXBwZXIxLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zbG90L2RldGFpbC9zaGFyZWQuaHBwPgotIwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEKLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xX0RJR0lUXzEKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xX0RJR0lUXzIKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xX0RJR0lUXzMKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xX0RJR0lUXzQKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xX0RJR0lUXzUKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xX0RJR0lUXzYKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xX0RJR0lUXzcKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xX0RJR0lUXzgKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xX0RJR0lUXzkKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xX0RJR0lUXzEwCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMV9ESUdJVF8zIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzFfRElHSVRfMyAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xX0RJR0lUXzMgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMV9ESUdJVF8zIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzFfRElHSVRfMyA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xX0RJR0lUXzMgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMV9ESUdJVF8zIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzFfRElHSVRfMyA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xX0RJR0lUXzMgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMV9ESUdJVF8zIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xX0RJR0lUXzIgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMV9ESUdJVF8yIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzFfRElHSVRfMiAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xX0RJR0lUXzIgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMV9ESUdJVF8yIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzFfRElHSVRfMiA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xX0RJR0lUXzIgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMV9ESUdJVF8yIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzFfRElHSVRfMiA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xX0RJR0lUXzIgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzFfRElHSVRfMSAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xX0RJR0lUXzEgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMV9ESUdJVF8xIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzFfRElHSVRfMSAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xX0RJR0lUXzEgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMV9ESUdJVF8xIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzFfRElHSVRfMSA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xX0RJR0lUXzEgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMV9ESUdJVF8xIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzFfRElHSVRfMSA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMV9ESUdJVF8zCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgTkROQk9PU1RfUFBfU0xPVF9DQ18zKE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMV9ESUdJVF8zLCBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzFfRElHSVRfMiwgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xX0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xX0RJR0lUXzIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSBORE5CT09TVF9QUF9TTE9UX0NDXzIoTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xX0RJR0lUXzIsIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMV9ESUdJVF8xKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xX0RJR0lUXzEKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvYm91bmRzL3VwcGVyMi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2JvdW5kcy91cHBlcjIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZDgyYWFmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvYm91bmRzL3VwcGVyMi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2xvdC9kZXRhaWwvc2hhcmVkLmhwcD4KLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yCi0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMl9ESUdJVF8xCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMl9ESUdJVF8yCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMl9ESUdJVF8zCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMl9ESUdJVF80Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMl9ESUdJVF81Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMl9ESUdJVF82Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMl9ESUdJVF83Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMl9ESUdJVF84Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMl9ESUdJVF85Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMl9ESUdJVF8xMAotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzJfRElHSVRfMyAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yX0RJR0lUXzMgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMl9ESUdJVF8zIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzJfRElHSVRfMyAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yX0RJR0lUXzMgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMl9ESUdJVF8zIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzJfRElHSVRfMyA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yX0RJR0lUXzMgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMl9ESUdJVF8zIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzJfRElHSVRfMyA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMl9ESUdJVF8yIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzJfRElHSVRfMiAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yX0RJR0lUXzIgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMl9ESUdJVF8yIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzJfRElHSVRfMiA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yX0RJR0lUXzIgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMl9ESUdJVF8yIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzJfRElHSVRfMiA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yX0RJR0lUXzIgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMl9ESUdJVF8yIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yX0RJR0lUXzEgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMl9ESUdJVF8xIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzJfRElHSVRfMSAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yX0RJR0lUXzEgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMl9ESUdJVF8xIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzJfRElHSVRfMSA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yX0RJR0lUXzEgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMl9ESUdJVF8xIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzJfRElHSVRfMSA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yX0RJR0lUXzEgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzJfRElHSVRfMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIE5ETkJPT1NUX1BQX1NMT1RfQ0NfMyhORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzJfRElHSVRfMywgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yX0RJR0lUXzIsIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMl9ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMl9ESUdJVF8yCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgTkROQk9PU1RfUFBfU0xPVF9DQ18yKE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMl9ESUdJVF8yLCBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzJfRElHSVRfMSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMl9ESUdJVF8xCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2JvdW5kcy91cHBlcjMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ib3VuZHMvdXBwZXIzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjI4NTcxNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2JvdW5kcy91cHBlcjMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTkgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3Nsb3QvZGV0YWlsL3NoYXJlZC5ocHA+Ci0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMwotIwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzNfRElHSVRfMQotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzNfRElHSVRfMgotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzNfRElHSVRfMwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzNfRElHSVRfNAotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzNfRElHSVRfNQotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzNfRElHSVRfNgotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzNfRElHSVRfNwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzNfRElHSVRfOAotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzNfRElHSVRfOQotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzNfRElHSVRfMTAKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zX0RJR0lUXzMgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfM19ESUdJVF8zIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzNfRElHSVRfMyAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zX0RJR0lUXzMgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfM19ESUdJVF8zIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzNfRElHSVRfMyA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zX0RJR0lUXzMgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfM19ESUdJVF8zIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzNfRElHSVRfMyA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zX0RJR0lUXzMgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzNfRElHSVRfMiAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zX0RJR0lUXzIgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfM19ESUdJVF8yIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzNfRElHSVRfMiAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zX0RJR0lUXzIgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfM19ESUdJVF8yIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzNfRElHSVRfMiA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zX0RJR0lUXzIgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfM19ESUdJVF8yIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzNfRElHSVRfMiA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfM19ESUdJVF8xIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzNfRElHSVRfMSAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zX0RJR0lUXzEgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfM19ESUdJVF8xIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzNfRElHSVRfMSA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zX0RJR0lUXzEgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfM19ESUdJVF8xIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzNfRElHSVRfMSA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zX0RJR0lUXzEgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfM19ESUdJVF8xIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zX0RJR0lUXzMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyBORE5CT09TVF9QUF9TTE9UX0NDXzMoTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zX0RJR0lUXzMsIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfM19ESUdJVF8yLCBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzNfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzNfRElHSVRfMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zIE5ETkJPT1NUX1BQX1NMT1RfQ0NfMihORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzNfRElHSVRfMiwgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zX0RJR0lUXzEpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzNfRElHSVRfMQotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ib3VuZHMvdXBwZXI0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvYm91bmRzL3VwcGVyNC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI4NjEwYzAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ib3VuZHMvdXBwZXI0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zbG90L2RldGFpbC9zaGFyZWQuaHBwPgotIwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQKLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80X0RJR0lUXzEKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80X0RJR0lUXzIKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80X0RJR0lUXzMKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80X0RJR0lUXzQKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80X0RJR0lUXzUKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80X0RJR0lUXzYKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80X0RJR0lUXzcKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80X0RJR0lUXzgKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80X0RJR0lUXzkKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80X0RJR0lUXzEwCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNF9ESUdJVF8zIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzRfRElHSVRfMyAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80X0RJR0lUXzMgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNF9ESUdJVF8zIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzRfRElHSVRfMyA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80X0RJR0lUXzMgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNF9ESUdJVF8zIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzRfRElHSVRfMyA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80X0RJR0lUXzMgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNF9ESUdJVF8zIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80X0RJR0lUXzIgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNF9ESUdJVF8yIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzRfRElHSVRfMiAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80X0RJR0lUXzIgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNF9ESUdJVF8yIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzRfRElHSVRfMiA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80X0RJR0lUXzIgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNF9ESUdJVF8yIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzRfRElHSVRfMiA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80X0RJR0lUXzIgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzRfRElHSVRfMSAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80X0RJR0lUXzEgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNF9ESUdJVF8xIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzRfRElHSVRfMSAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80X0RJR0lUXzEgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNF9ESUdJVF8xIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzRfRElHSVRfMSA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80X0RJR0lUXzEgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNF9ESUdJVF8xIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzRfRElHSVRfMSA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNF9ESUdJVF8zCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgTkROQk9PU1RfUFBfU0xPVF9DQ18zKE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNF9ESUdJVF8zLCBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzRfRElHSVRfMiwgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80X0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80X0RJR0lUXzIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCBORE5CT09TVF9QUF9TTE9UX0NDXzIoTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80X0RJR0lUXzIsIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNF9ESUdJVF8xKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80X0RJR0lUXzEKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvYm91bmRzL3VwcGVyNS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2JvdW5kcy91cHBlcjUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNzg3YzdmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvYm91bmRzL3VwcGVyNS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2xvdC9kZXRhaWwvc2hhcmVkLmhwcD4KLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81Ci0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNV9ESUdJVF8xCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNV9ESUdJVF8yCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNV9ESUdJVF8zCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNV9ESUdJVF80Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNV9ESUdJVF81Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNV9ESUdJVF82Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNV9ESUdJVF83Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNV9ESUdJVF84Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNV9ESUdJVF85Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNV9ESUdJVF8xMAotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzVfRElHSVRfMyAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81X0RJR0lUXzMgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNV9ESUdJVF8zIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzVfRElHSVRfMyAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81X0RJR0lUXzMgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNV9ESUdJVF8zIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzVfRElHSVRfMyA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81X0RJR0lUXzMgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNV9ESUdJVF8zIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzVfRElHSVRfMyA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNV9ESUdJVF8yIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzVfRElHSVRfMiAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81X0RJR0lUXzIgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNV9ESUdJVF8yIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzVfRElHSVRfMiA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81X0RJR0lUXzIgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNV9ESUdJVF8yIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzVfRElHSVRfMiA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81X0RJR0lUXzIgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNV9ESUdJVF8yIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81X0RJR0lUXzEgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNV9ESUdJVF8xIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzVfRElHSVRfMSAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81X0RJR0lUXzEgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNV9ESUdJVF8xIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzVfRElHSVRfMSA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81X0RJR0lUXzEgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNV9ESUdJVF8xIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzVfRElHSVRfMSA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81X0RJR0lUXzEgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzVfRElHSVRfMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IE5ETkJPT1NUX1BQX1NMT1RfQ0NfMyhORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzVfRElHSVRfMywgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81X0RJR0lUXzIsIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNV9ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNV9ESUdJVF8yCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgTkROQk9PU1RfUFBfU0xPVF9DQ18yKE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNV9ESUdJVF8yLCBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzVfRElHSVRfMSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81IE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNV9ESUdJVF8xCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2ZpbmlzaC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2ZpbmlzaC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDczODE3MmMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9maW5pc2guaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTkgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3Nsb3QvZGV0YWlsL3NoYXJlZC5ocHA+Ci0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0xPQ0FMX0ZFCi0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0xPQ0FMX0ZFX0RJR0lUXzEKLSMgdW5kZWYgTkROQk9PU1RfUFBfTE9DQUxfRkVfRElHSVRfMgotIyB1bmRlZiBORE5CT09TVF9QUF9MT0NBTF9GRV9ESUdJVF8zCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0xPQ0FMX0ZFX0RJR0lUXzQKLSMgdW5kZWYgTkROQk9PU1RfUFBfTE9DQUxfRkVfRElHSVRfNQotIyB1bmRlZiBORE5CT09TVF9QUF9MT0NBTF9GRV9ESUdJVF82Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0xPQ0FMX0ZFX0RJR0lUXzcKLSMgdW5kZWYgTkROQk9PU1RfUFBfTE9DQUxfRkVfRElHSVRfOAotIyB1bmRlZiBORE5CT09TVF9QUF9MT0NBTF9GRV9ESUdJVF85Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0xPQ0FMX0ZFX0RJR0lUXzEwCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX0ZFX0RJR0lUXzMgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX0ZFX0RJR0lUXzMgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX0ZFX0RJR0lUXzMgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX0ZFX0RJR0lUXzMgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX0ZFX0RJR0lUXzMgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX0ZFX0RJR0lUXzMgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX0ZFX0RJR0lUXzMgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX0ZFX0RJR0lUXzMgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX0ZFX0RJR0lUXzMgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX0ZFX0RJR0lUXzMgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9GRV9ESUdJVF8yIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9GRV9ESUdJVF8yIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9GRV9ESUdJVF8yIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9GRV9ESUdJVF8yIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9GRV9ESUdJVF8yIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9GRV9ESUdJVF8yIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9GRV9ESUdJVF8yIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9GRV9ESUdJVF8yIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9GRV9ESUdJVF8yIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9GRV9ESUdJVF8yIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfRkVfRElHSVRfMSAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfRkVfRElHSVRfMSAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfRkVfRElHSVRfMSAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfRkVfRElHSVRfMSAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfRkVfRElHSVRfMSA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfRkVfRElHSVRfMSA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfRkVfRElHSVRfMSA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfRkVfRElHSVRfMSA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfRkVfRElHSVRfMSA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfRkVfRElHSVRfMSA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0ZFX0RJR0lUXzMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX0ZFKCkgTkROQk9PU1RfUFBfU0xPVF9DQ18zKE5ETkJPT1NUX1BQX0xPQ0FMX0ZFX0RJR0lUXzMsIE5ETkJPT1NUX1BQX0xPQ0FMX0ZFX0RJR0lUXzIsIE5ETkJPT1NUX1BQX0xPQ0FMX0ZFX0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfTE9DQUxfRkVfRElHSVRfMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfRkUoKSBORE5CT09TVF9QUF9TTE9UX0NDXzIoTkROQk9PU1RfUFBfTE9DQUxfRkVfRElHSVRfMiwgTkROQk9PU1RfUFBfTE9DQUxfRkVfRElHSVRfMSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfRkUoKSBORE5CT09TVF9QUF9MT0NBTF9GRV9ESUdJVF8xCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2l0ZXIvZm9yd2FyZDEuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9pdGVyL2ZvcndhcmQxLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGQyOTQ2MC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2l0ZXIvZm9yd2FyZDEuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTM0MiArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZiBkZWZpbmVkKE5ETkJPT1NUX1BQX0lURVJBVElPTl9MSU1JVFMpCi0jICAgIGlmICFkZWZpbmVkKE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEpCi0jICAgICAgICBlcnJvciBORE5CT09TVF9QUF9FUlJPUjogIGRlcHRoICMxIGZpbGVuYW1lIGlzIG5vdCBkZWZpbmVkCi0jICAgIGVuZGlmCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQUxVRSBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDIsIDAsIE5ETkJPT1NUX1BQX0lURVJBVElPTl9MSU1JVFMpCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2JvdW5kcy9sb3dlcjEuaHBwPgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFMVUUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgyLCAxLCBORE5CT09TVF9QUF9JVEVSQVRJT05fTElNSVRTKQotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ib3VuZHMvdXBwZXIxLmhwcD4KLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GTEFHU18xKCkgMAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fTElNSVRTCi0jIGVsaWYgZGVmaW5lZChORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQUxVRSBORE5CT09TVF9QUF9BUlJBWV9FTEVNKDAsIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMSkKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvYm91bmRzL2xvd2VyMS5ocHA+Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQUxVRSBORE5CT09TVF9QUF9BUlJBWV9FTEVNKDEsIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMSkKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvYm91bmRzL3VwcGVyMS5ocHA+Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xIE5ETkJPT1NUX1BQX0FSUkFZX0VMRU0oMiwgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18xKQotIyAgICBpZiBORE5CT09TVF9QUF9BUlJBWV9TSVpFKE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMSkgPj0gNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GTEFHU18xKCkgTkROQk9PU1RfUFBfQVJSQVlfRUxFTSgzLCBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEpCi0jICAgIGVsc2UKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRkxBR1NfMSgpIDAKLSMgICAgZW5kaWYKLSMgZWxzZQotIyAgICBlcnJvciBORE5CT09TVF9QUF9FUlJPUjogIGRlcHRoICMxIGl0ZXJhdGlvbiBib3VuZGFyaWVzIG9yIGZpbGVuYW1lIG5vdCBkZWZpbmVkCi0jIGVuZGlmCi0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0RFUFRIKCkgMQotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HIDEKLSMKLSMgaWYgKE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xKSA+IChORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEpCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2l0ZXIvcmV2ZXJzZTEuaHBwPgotIyBlbHNlCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xID49IDkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDEwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxMAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDExICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxMQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDExCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDEyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxMgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDEzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxMwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxNQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxNgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxNwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxOAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAxOQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAyMAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAyMQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAyMgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAyMwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDI0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAyNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDI0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDI1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAyNQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDI1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDI2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAyNgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDI2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDI3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAyNwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDI3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDI4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAyOAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDI4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDI5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAyOQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDI5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDMwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAzMAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDMwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDMxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAzMQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDMxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDMyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAzMgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDMyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDMzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAzMwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDMzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDM0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAzNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDM0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDM1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAzNQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDM1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDM2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAzNgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDM2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDM3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAzNwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDM3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDM4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAzOAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDM4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDM5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSAzOQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDM5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDQwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA0MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDQwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDQxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA0MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDQxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDQyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA0MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDQyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDQzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA0MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDQzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDQ0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA0NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDQ0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDQ1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA0NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDQ1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDQ2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA0NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDQ2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDQ3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA0NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDQ3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDQ4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA0OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDQ4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDQ5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA0OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDQ5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDUwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA1MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDUwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDUxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA1MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDUxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDUyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA1MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDUyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDUzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA1MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDUzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDU0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA1NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDU0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDU1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA1NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDU1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDU2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA1NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDU2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDU3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA1NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDU3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDU4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA1OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDU4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDU5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA1OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDU5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDYwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA2MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDYwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDYxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA2MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDYxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDYyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA2MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDYyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDYzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA2MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDYzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDY0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA2NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDY0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDY1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA2NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDY1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDY2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA2NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDY2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDY3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA2NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDY3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDY4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA2OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDY4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDY5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA2OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDY5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDcwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA3MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDcwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDcxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA3MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDcxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDcyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA3MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDcyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDczICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA3MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDczCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDc0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA3NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDc0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDc1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA3NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDc1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDc2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA3NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDc2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDc3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA3NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDc3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDc4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA3OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDc4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDc5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA3OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDc5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDgwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA4MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDgwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDgxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA4MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDgxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDgyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA4MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDgyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDgzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA4MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDgzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDg0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA4NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDg0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDg1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA4NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDg1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDg2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA4NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDg2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDg3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA4NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDg3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDg4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA4OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDg4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDg5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA4OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDg5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDkwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA5MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDkwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDkxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA5MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDkxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDkyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA5MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDkyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDkzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA5MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDkzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDk0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA5NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDk0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDk1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA5NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDk1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDk2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA5NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDk2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDk3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA5NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDk3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDk4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA5OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDk4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDk5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMSA+PSA5OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDk5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDEwMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTAwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTAwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDEwMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTAxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTAxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDEwMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTAyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTAyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDEwMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTAzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTAzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDEwNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTA0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTA0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDEwNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTA1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTA1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDEwNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTA2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTA2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDEwNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTA3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTA3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDEwOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTA4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTA4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDEwOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTA5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTA5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDExMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTEwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTEwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDExMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTExCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTExCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDExMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTEyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTEyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDExMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTEzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTEzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDExNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTE0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTE0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDExNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTE1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTE1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDExNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTE2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTE2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDExNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTE3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTE3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDExOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTE4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTE4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDExOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTE5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTE5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDEyMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTIwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTIwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDEyMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTIxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTIxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDEyMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTIyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTIyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDEyMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTIzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTIzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDEyNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTI0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTI0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDEyNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTI1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTI1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDEyNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTI2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTI2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDEyNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTI3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTI3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDEyOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTI4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTI4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDEyOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTI5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTI5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDEzMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTMwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTMwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDEzMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTMxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTMxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDEzMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTMyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTMyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDEzMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTMzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTMzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDEzNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTM0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTM0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDEzNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTM1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTM1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDEzNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTM2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTM2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDEzNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTM3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTM3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDEzOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTM4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTM4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDEzOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTM5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTM5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE0MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTQwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTQwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE0MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTQxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTQxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE0MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTQyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTQyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE0MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTQzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTQzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE0NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTQ0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTQ0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE0NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTQ1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTQ1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE0NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTQ2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTQ2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE0NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTQ3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTQ3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE0OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTQ4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTQ4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE0OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTQ5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTQ5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE1MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTUwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTUwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE1MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTUxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTUxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE1MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTUyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTUyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE1MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTUzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTUzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE1NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTU0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTU0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE1NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTU1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTU1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE1NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTU2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTU2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE1NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTU3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTU3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE1OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTU4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTU4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE1OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTU5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTU5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE2MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTYwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTYwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE2MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTYxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTYxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE2MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTYyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTYyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE2MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTYzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTYzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE2NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTY0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTY0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE2NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTY1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTY1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE2NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTY2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTY2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE2NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTY3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTY3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE2OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTY4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTY4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE2OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTY5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTY5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE3MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTcwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTcwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE3MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTcxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTcxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE3MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTcyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTcyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE3MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTczCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTczCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE3NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTc0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTc0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE3NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTc1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTc1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE3NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTc2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTc2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE3NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTc3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTc3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE3OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTc4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTc4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE3OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTc5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTc5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE4MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTgwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTgwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE4MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTgxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTgxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE4MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTgyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTgyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE4MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTgzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTgzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE4NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTg0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTg0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE4NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTg1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTg1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE4NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTg2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTg2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE4NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTg3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTg3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE4OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTg4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTg4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE4OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTg5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTg5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE5MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTkwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTkwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE5MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTkxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTkxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE5MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTkyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTkyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE5MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTkzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTkzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE5NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTk0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTk0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE5NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTk1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTk1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE5NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTk2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTk2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE5NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTk3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTk3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE5OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTk4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTk4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDE5OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMTk5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMTk5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIwMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjAwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjAwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIwMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjAxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjAxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIwMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjAyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjAyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIwMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjAzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjAzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIwNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjA0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjA0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIwNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjA1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjA1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIwNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjA2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjA2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIwNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjA3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjA3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIwOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjA4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjA4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIwOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjA5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjA5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIxMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjEwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjEwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIxMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjExCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjExCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIxMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjEyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjEyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIxMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjEzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjEzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIxNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjE0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjE0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIxNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjE1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjE1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIxNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjE2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjE2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIxNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjE3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjE3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIxOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjE4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjE4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIxOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjE5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjE5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIyMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjIwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjIwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIyMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjIxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjIxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIyMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjIyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjIyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIyMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjIzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjIzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIyNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjI0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjI0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIyNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjI1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjI1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIyNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjI2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjI2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIyNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjI3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjI3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIyOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjI4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjI4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIyOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjI5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjI5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIzMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjMwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjMwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIzMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjMxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjMxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIzMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjMyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjMyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIzMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjMzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjMzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIzNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjM0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjM0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIzNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjM1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjM1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIzNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjM2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjM2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIzNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjM3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjM3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIzOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjM4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjM4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDIzOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjM5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjM5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDI0MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjQwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjQwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDI0MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjQxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjQxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDI0MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjQyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjQyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDI0MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjQzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjQzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDI0NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjQ0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjQ0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDI0NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjQ1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjQ1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDI0NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjQ2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjQ2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDI0NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjQ3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjQ3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDI0OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjQ4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjQ4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDI0OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjQ5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjQ5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDI1MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjUwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjUwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDI1MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjUxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjUxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDI1MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjUyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjUyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDI1MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjUzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjUzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDI1NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjU0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjU0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDI1NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjU1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjU1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xIDw9IDI1NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzEgPj0gMjU2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMjU2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xCi0jICAgIGVuZGlmCi0jIGVuZGlmCi0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lTX0lURVJBVElORwotIwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fREVQVEgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSCgpIDAKLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZMQUdTXzEKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18xCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2l0ZXIvZm9yd2FyZDIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9pdGVyL2ZvcndhcmQyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDlhMmQ5Yy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2l0ZXIvZm9yd2FyZDIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTMzOCArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZiBkZWZpbmVkKE5ETkJPT1NUX1BQX0lURVJBVElPTl9MSU1JVFMpCi0jICAgIGlmICFkZWZpbmVkKE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzIpCi0jICAgICAgICBlcnJvciBORE5CT09TVF9QUF9FUlJPUjogIGRlcHRoICMyIGZpbGVuYW1lIGlzIG5vdCBkZWZpbmVkCi0jICAgIGVuZGlmCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQUxVRSBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDIsIDAsIE5ETkJPT1NUX1BQX0lURVJBVElPTl9MSU1JVFMpCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2JvdW5kcy9sb3dlcjIuaHBwPgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFMVUUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgyLCAxLCBORE5CT09TVF9QUF9JVEVSQVRJT05fTElNSVRTKQotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ib3VuZHMvdXBwZXIyLmhwcD4KLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GTEFHU18yKCkgMAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fTElNSVRTCi0jIGVsaWYgZGVmaW5lZChORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzIpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQUxVRSBORE5CT09TVF9QUF9BUlJBWV9FTEVNKDAsIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMikKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvYm91bmRzL2xvd2VyMi5ocHA+Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQUxVRSBORE5CT09TVF9QUF9BUlJBWV9FTEVNKDEsIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMikKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvYm91bmRzL3VwcGVyMi5ocHA+Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yIE5ETkJPT1NUX1BQX0FSUkFZX0VMRU0oMiwgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18yKQotIyAgICBpZiBORE5CT09TVF9QUF9BUlJBWV9TSVpFKE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMikgPj0gNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GTEFHU18yKCkgTkROQk9PU1RfUFBfQVJSQVlfRUxFTSgzLCBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzIpCi0jICAgIGVsc2UKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRkxBR1NfMigpIDAKLSMgICAgZW5kaWYKLSMgZWxzZQotIyAgICBlcnJvciBORE5CT09TVF9QUF9FUlJPUjogIGRlcHRoICMyIGl0ZXJhdGlvbiBib3VuZGFyaWVzIG9yIGZpbGVuYW1lIG5vdCBkZWZpbmVkCi0jIGVuZGlmCi0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0RFUFRIKCkgMgotIwotIyBpZiAoTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIpID4gKE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMikKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvaXRlci9yZXZlcnNlMi5ocHA+Ci0jIGVsc2UKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gMwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gNQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gNgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gNwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gOAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzIgPj0gOQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDEwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDExCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDEyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDEzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDE0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDE1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDE2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDE3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDE4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDE5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDIwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDIxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDIyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDIzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDI0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDI1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDI2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDI3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDI4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDI5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMzAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDMwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMzAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMzEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDMxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMzEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMzIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDMyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMzIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMzMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDMzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMzMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMzQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDM0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMzQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMzUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDM1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMzUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMzYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDM2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMzYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMzcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDM3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMzcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMzggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDM4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMzgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMzkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDM5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMzkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDQwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNDAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDQxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNDEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDQyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNDIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDQzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNDMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDQ0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNDQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDQ1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNDUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDQ2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNDYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDQ3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNDcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDQ4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNDgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDQ5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNDkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDUwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNTAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDUxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNTEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDUyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNTIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDUzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNTMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDU0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNTQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDU1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNTUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDU2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNTYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDU3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNTcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDU4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNTgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDU5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNTkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNjAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDYwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNjAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNjEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDYxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNjEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNjIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDYyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNjIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNjMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDYzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNjMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNjQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDY0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNjQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNjUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDY1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNjUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNjYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDY2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNjYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNjcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDY3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNjcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNjggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDY4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNjgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNjkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDY5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNjkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNzAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDcwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNzAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNzEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDcxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNzEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNzIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDcyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNzIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNzMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDczCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNzMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNzQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDc0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNzQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNzUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDc1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNzUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNzYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDc2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNzYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNzcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDc3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNzcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNzggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDc4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNzgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gNzkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDc5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNzkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gODAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDgwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgODAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gODEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDgxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgODEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gODIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDgyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgODIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gODMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDgzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgODMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gODQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDg0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgODQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gODUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDg1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgODUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gODYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDg2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgODYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gODcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDg3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgODcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gODggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDg4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgODgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gODkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDg5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgODkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gOTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDkwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgOTAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gOTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDkxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgOTEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gOTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDkyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgOTIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gOTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDkzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgOTMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gOTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDk0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgOTQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gOTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDk1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgOTUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gOTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDk2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgOTYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gOTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDk3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgOTcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gOTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDk4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgOTgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gOTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8yID49IDk5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgOTkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTAwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMDAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMDAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTAxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMDEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMDEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTAyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMDIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMDIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTAzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMDMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMDMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTA0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMDQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMDQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTA1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMDUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMDUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTA2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMDYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMDYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTA3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMDcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMDcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTA4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMDgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMDgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTA5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMDkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMDkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTEwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMTAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMTAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTExICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMTEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMTEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTEyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMTIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMTIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTEzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMTMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMTMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTE0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMTQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMTQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTE1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMTUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMTUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTE2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMTYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMTYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTE3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMTcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMTcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTE4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMTgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMTgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTE5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMTkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMTkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTIwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMjAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMjAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTIxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMjEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMjEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTIyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMjIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMjIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTIzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMjMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMjMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTI0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMjQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMjQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTI1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMjUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMjUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTI2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMjYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMjYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTI3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMjcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMjcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTI4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMjgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMjgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTI5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMjkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMjkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTMwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMzAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMzAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTMxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMzEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMzEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTMyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMzIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMzIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTMzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMzMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMzMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTM0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMzQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMzQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTM1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMzUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMzUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTM2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMzYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMzYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTM3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMzcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMzcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTM4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMzgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMzgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTM5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxMzkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMzkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTQwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNDAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNDAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTQxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNDEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNDEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTQyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNDIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNDIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTQzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNDMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNDMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTQ0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNDQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNDQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTQ1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNDUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNDUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTQ2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNDYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNDYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTQ3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNDcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNDcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTQ4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNDgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNDgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTQ5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNDkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNDkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTUwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNTAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNTAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTUxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNTEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNTEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTUyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNTIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNTIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTUzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNTMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNTMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTU0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNTQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNTQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTU1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNTUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNTUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTU2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNTYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNTYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTU3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNTcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNTcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTU4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNTgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNTgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTU5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNTkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNTkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTYwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNjAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNjAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTYxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNjEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNjEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTYyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNjIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNjIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTYzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNjMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNjMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTY0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNjQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNjQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTY1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNjUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNjUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTY2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNjYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNjYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTY3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNjcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNjcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTY4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNjgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNjgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTY5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNjkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNjkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTcwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNzAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNzAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTcxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNzEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNzEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTcyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNzIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNzIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTczICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNzMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNzMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTc0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNzQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNzQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTc1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNzUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNzUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTc2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNzYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNzYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTc3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNzcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNzcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTc4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNzgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNzgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTc5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxNzkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNzkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTgwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxODAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxODAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTgxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxODEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxODEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTgyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxODIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxODIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTgzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxODMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxODMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTg0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxODQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxODQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTg1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxODUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxODUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTg2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxODYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxODYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTg3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxODcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxODcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTg4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxODgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxODgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTg5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxODkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxODkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTkwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxOTAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxOTAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTkxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxOTEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxOTEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTkyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxOTIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxOTIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTkzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxOTMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxOTMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTk0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxOTQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxOTQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTk1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxOTUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxOTUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTk2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxOTYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxOTYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTk3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxOTcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxOTcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTk4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxOTgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxOTgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMTk5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAxOTkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxOTkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjAwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMDAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMDAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjAxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMDEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMDEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjAyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMDIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMDIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjAzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMDMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMDMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjA0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMDQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMDQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjA1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMDUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMDUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjA2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMDYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMDYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjA3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMDcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMDcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjA4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMDgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMDgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjA5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMDkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMDkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjEwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMTAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMTAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjExICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMTEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMTEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjEyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMTIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMTIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjEzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMTMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMTMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjE0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMTQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMTQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjE1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMTUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMTUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjE2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMTYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMTYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjE3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMTcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMTcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjE4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMTgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMTgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjE5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMTkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMTkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjIwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMjAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMjAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjIxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMjEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMjEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjIyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMjIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMjIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjIzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMjMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMjMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjI0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMjQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMjQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjI1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMjUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMjUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjI2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMjYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMjYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjI3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMjcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMjcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjI4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMjgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMjgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjI5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMjkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMjkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjMwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMzAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMzAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjMxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMzEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMzEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjMyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMzIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMzIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjMzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMzMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMzMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjM0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMzQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMzQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjM1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMzUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMzUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjM2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMzYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMzYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjM3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMzcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMzcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjM4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMzgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMzgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjM5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyMzkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMzkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjQwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyNDAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyNDAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjQxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyNDEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyNDEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjQyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyNDIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyNDIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjQzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyNDMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyNDMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjQ0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyNDQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyNDQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjQ1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyNDUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyNDUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjQ2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyNDYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyNDYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjQ3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyNDcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyNDcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjQ4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyNDgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyNDgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjQ5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyNDkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyNDkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjUwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyNTAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyNTAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjUxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyNTEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyNTEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjUyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyNTIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyNTIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjUzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyNTMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyNTMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjU0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyNTQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyNTQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjU1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyNTUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyNTUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPD0gMjU2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA+PSAyNTYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyNTYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMgotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIKLSMgICAgZW5kaWYKLSMgZW5kaWYKLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0RFUFRICi0jIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fREVQVEgoKSAxCi0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMgotIyB1bmRlZiBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GTEFHU18yCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9pdGVyL2ZvcndhcmQzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvaXRlci9mb3J3YXJkMy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVkNzllMTguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9pdGVyL2ZvcndhcmQzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzMzggKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWYgZGVmaW5lZChORE5CT09TVF9QUF9JVEVSQVRJT05fTElNSVRTKQotIyAgICBpZiAhZGVmaW5lZChORE5CT09TVF9QUF9GSUxFTkFNRV8zKQotIyAgICAgICAgZXJyb3IgTkROQk9PU1RfUFBfRVJST1I6ICBkZXB0aCAjMyBmaWxlbmFtZSBpcyBub3QgZGVmaW5lZAotIyAgICBlbmRpZgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFMVUUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgyLCAwLCBORE5CT09TVF9QUF9JVEVSQVRJT05fTElNSVRTKQotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ib3VuZHMvbG93ZXIzLmhwcD4KLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBTFVFIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMiwgMSwgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0xJTUlUUykKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvYm91bmRzL3VwcGVyMy5ocHA+Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRkxBR1NfMygpIDAKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0xJTUlUUwotIyBlbGlmIGRlZmluZWQoTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18zKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFMVUUgTkROQk9PU1RfUFBfQVJSQVlfRUxFTSgwLCBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzMpCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2JvdW5kcy9sb3dlcjMuaHBwPgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFMVUUgTkROQk9PU1RfUFBfQVJSQVlfRUxFTSgxLCBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzMpCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2JvdW5kcy91cHBlcjMuaHBwPgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRklMRU5BTUVfMyBORE5CT09TVF9QUF9BUlJBWV9FTEVNKDIsIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMykKLSMgICAgaWYgTkROQk9PU1RfUFBfQVJSQVlfU0laRShORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzMpID49IDQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRkxBR1NfMygpIE5ETkJPT1NUX1BQX0FSUkFZX0VMRU0oMywgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU18zKQotIyAgICBlbHNlCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZMQUdTXzMoKSAwCi0jICAgIGVuZGlmCi0jIGVsc2UKLSMgICAgZXJyb3IgTkROQk9PU1RfUFBfRVJST1I6ICBkZXB0aCAjMyBpdGVyYXRpb24gYm91bmRhcmllcyBvciBmaWxlbmFtZSBub3QgZGVmaW5lZAotIyBlbmRpZgotIwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fREVQVEgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSCgpIDMKLSMKLSMgaWYgKE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zKSA+IChORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMpCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2l0ZXIvcmV2ZXJzZTMuaHBwPgotIyBlbHNlCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8zID49IDkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDEwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxMAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDEwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDExICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxMQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDExCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDEyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxMgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDEyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDEzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxMwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDEzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxNQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxNgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxNwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxOAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAxOQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAyMAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAyMQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAyMgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAyMwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDI0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAyNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDI0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDI1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAyNQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDI1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDI2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAyNgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDI2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDI3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAyNwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDI3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDI4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAyOAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDI4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDI5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAyOQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDI5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDMwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAzMAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDMwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDMxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAzMQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDMxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDMyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAzMgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDMyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDMzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAzMwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDMzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDM0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAzNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDM0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDM1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAzNQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDM1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDM2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAzNgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDM2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDM3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAzNwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDM3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDM4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAzOAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDM4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDM5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSAzOQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDM5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDQwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA0MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDQwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDQxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA0MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDQxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDQyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA0MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDQyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDQzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA0MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDQzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDQ0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA0NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDQ0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDQ1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA0NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDQ1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDQ2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA0NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDQ2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDQ3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA0NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDQ3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDQ4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA0OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDQ4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDQ5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA0OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDQ5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDUwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA1MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDUwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDUxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA1MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDUxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDUyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA1MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDUyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDUzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA1MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDUzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDU0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA1NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDU0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDU1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA1NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDU1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDU2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA1NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDU2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDU3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA1NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDU3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDU4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA1OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDU4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDU5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA1OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDU5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDYwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA2MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDYwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDYxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA2MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDYxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDYyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA2MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDYyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDYzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA2MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDYzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDY0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA2NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDY0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDY1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA2NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDY1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDY2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA2NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDY2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDY3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA2NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDY3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDY4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA2OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDY4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDY5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA2OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDY5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDcwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA3MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDcwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDcxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA3MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDcxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDcyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA3MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDcyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDczICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA3MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDczCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDc0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA3NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDc0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDc1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA3NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDc1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDc2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA3NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDc2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDc3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA3NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDc3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDc4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA3OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDc4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDc5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA3OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDc5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDgwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA4MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDgwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDgxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA4MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDgxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDgyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA4MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDgyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDgzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA4MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDgzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDg0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA4NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDg0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDg1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA4NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDg1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDg2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA4NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDg2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDg3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA4NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDg3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDg4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA4OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDg4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDg5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA4OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDg5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDkwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA5MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDkwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDkxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA5MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDkxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDkyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA5MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDkyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDkzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA5MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDkzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDk0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA5NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDk0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDk1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA5NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDk1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDk2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA5NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDk2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDk3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA5NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDk3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDk4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA5OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDk4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDk5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMyA+PSA5OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDk5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDEwMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTAwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTAwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDEwMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTAxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTAxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDEwMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTAyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTAyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDEwMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTAzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTAzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDEwNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTA0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTA0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDEwNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTA1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTA1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDEwNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTA2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTA2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDEwNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTA3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTA3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDEwOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTA4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTA4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDEwOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTA5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTA5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDExMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTEwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTEwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDExMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTExCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTExCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDExMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTEyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTEyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDExMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTEzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTEzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDExNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTE0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTE0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDExNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTE1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTE1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDExNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTE2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTE2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDExNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTE3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTE3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDExOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTE4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTE4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDExOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTE5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTE5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDEyMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTIwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTIwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDEyMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTIxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTIxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDEyMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTIyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTIyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDEyMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTIzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTIzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDEyNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTI0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTI0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDEyNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTI1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTI1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDEyNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTI2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTI2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDEyNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTI3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTI3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDEyOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTI4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTI4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDEyOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTI5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTI5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDEzMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTMwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTMwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDEzMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTMxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTMxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDEzMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTMyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTMyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDEzMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTMzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTMzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDEzNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTM0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTM0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDEzNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTM1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTM1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDEzNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTM2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTM2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDEzNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTM3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTM3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDEzOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTM4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTM4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDEzOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTM5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTM5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE0MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTQwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTQwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE0MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTQxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTQxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE0MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTQyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTQyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE0MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTQzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTQzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE0NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTQ0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTQ0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE0NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTQ1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTQ1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE0NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTQ2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTQ2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE0NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTQ3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTQ3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE0OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTQ4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTQ4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE0OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTQ5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTQ5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE1MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTUwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTUwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE1MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTUxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTUxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE1MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTUyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTUyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE1MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTUzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTUzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE1NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTU0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTU0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE1NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTU1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTU1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE1NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTU2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTU2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE1NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTU3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTU3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE1OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTU4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTU4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE1OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTU5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTU5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE2MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTYwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTYwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE2MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTYxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTYxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE2MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTYyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTYyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE2MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTYzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTYzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE2NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTY0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTY0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE2NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTY1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTY1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE2NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTY2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTY2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE2NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTY3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTY3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE2OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTY4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTY4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE2OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTY5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTY5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE3MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTcwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTcwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE3MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTcxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTcxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE3MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTcyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTcyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE3MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTczCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTczCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE3NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTc0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTc0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE3NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTc1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTc1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE3NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTc2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTc2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE3NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTc3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTc3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE3OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTc4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTc4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE3OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTc5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTc5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE4MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTgwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTgwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE4MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTgxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTgxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE4MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTgyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTgyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE4MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTgzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTgzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE4NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTg0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTg0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE4NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTg1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTg1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE4NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTg2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTg2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE4NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTg3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTg3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE4OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTg4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTg4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE4OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTg5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTg5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE5MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTkwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTkwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE5MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTkxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTkxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE5MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTkyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTkyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE5MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTkzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTkzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE5NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTk0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTk0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE5NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTk1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTk1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE5NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTk2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTk2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE5NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTk3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTk3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE5OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTk4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTk4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDE5OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMTk5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTk5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIwMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjAwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjAwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIwMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjAxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjAxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIwMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjAyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjAyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIwMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjAzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjAzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIwNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjA0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjA0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIwNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjA1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjA1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIwNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjA2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjA2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIwNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjA3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjA3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIwOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjA4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjA4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIwOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjA5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjA5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIxMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjEwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjEwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIxMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjExCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjExCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIxMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjEyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjEyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIxMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjEzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjEzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIxNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjE0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjE0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIxNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjE1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjE1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIxNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjE2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjE2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIxNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjE3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjE3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIxOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjE4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjE4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIxOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjE5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjE5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIyMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjIwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjIwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIyMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjIxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjIxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIyMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjIyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjIyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIyMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjIzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjIzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIyNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjI0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjI0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIyNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjI1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjI1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIyNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjI2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjI2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIyNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjI3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjI3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIyOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjI4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjI4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIyOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjI5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjI5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIzMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjMwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjMwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIzMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjMxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjMxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIzMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjMyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjMyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIzMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjMzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjMzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIzNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjM0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjM0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIzNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjM1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjM1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIzNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjM2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjM2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIzNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjM3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjM3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIzOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjM4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjM4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDIzOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjM5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjM5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDI0MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjQwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjQwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDI0MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjQxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjQxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDI0MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjQyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjQyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDI0MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjQzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjQzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDI0NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjQ0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjQ0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDI0NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjQ1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjQ1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDI0NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjQ2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjQ2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDI0NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjQ3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjQ3Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDI0OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjQ4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjQ4Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDI0OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjQ5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjQ5Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDI1MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjUwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjUwCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDI1MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjUxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjUxCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDI1MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjUyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjUyCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDI1MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjUzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjUzCi0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDI1NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjU0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjU0Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDI1NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjU1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjU1Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zIDw9IDI1NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPj0gMjU2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjU2Ci0jICAgICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzMKLSMgICAgICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zCi0jICAgIGVuZGlmCi0jIGVuZGlmCi0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0RFUFRIKCkgMgotIwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMKLSMgdW5kZWYgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRkxBR1NfMwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzMKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvaXRlci9mb3J3YXJkNC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2l0ZXIvZm9yd2FyZDQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YmMyMTUyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvaXRlci9mb3J3YXJkNC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzM4ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmIGRlZmluZWQoTkROQk9PU1RfUFBfSVRFUkFUSU9OX0xJTUlUUykKLSMgICAgaWYgIWRlZmluZWQoTkROQk9PU1RfUFBfRklMRU5BTUVfNCkKLSMgICAgICAgIGVycm9yIE5ETkJPT1NUX1BQX0VSUk9SOiAgZGVwdGggIzQgZmlsZW5hbWUgaXMgbm90IGRlZmluZWQKLSMgICAgZW5kaWYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBTFVFIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMiwgMCwgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0xJTUlUUykKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvYm91bmRzL2xvd2VyNC5ocHA+Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQUxVRSBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDIsIDEsIE5ETkJPT1NUX1BQX0lURVJBVElPTl9MSU1JVFMpCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2JvdW5kcy91cHBlcjQuaHBwPgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZMQUdTXzQoKSAwCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9MSU1JVFMKLSMgZWxpZiBkZWZpbmVkKE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfNCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBTFVFIE5ETkJPT1NUX1BQX0FSUkFZX0VMRU0oMCwgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU180KQotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ib3VuZHMvbG93ZXI0LmhwcD4KLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBTFVFIE5ETkJPT1NUX1BQX0FSUkFZX0VMRU0oMSwgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU180KQotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ib3VuZHMvdXBwZXI0LmhwcD4KLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQgTkROQk9PU1RfUFBfQVJSQVlfRUxFTSgyLCBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzQpCi0jICAgIGlmIE5ETkJPT1NUX1BQX0FSUkFZX1NJWkUoTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU180KSA+PSA0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZMQUdTXzQoKSBORE5CT09TVF9QUF9BUlJBWV9FTEVNKDMsIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfNCkKLSMgICAgZWxzZQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GTEFHU180KCkgMAotIyAgICBlbmRpZgotIyBlbHNlCi0jICAgIGVycm9yIE5ETkJPT1NUX1BQX0VSUk9SOiAgZGVwdGggIzQgaXRlcmF0aW9uIGJvdW5kYXJpZXMgb3IgZmlsZW5hbWUgbm90IGRlZmluZWQKLSMgZW5kaWYKLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0RFUFRICi0jIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fREVQVEgoKSA0Ci0jCi0jIGlmIChORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCkgPiAoTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80KQotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9pdGVyL3JldmVyc2U0LmhwcD4KLSMgZWxzZQotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSAzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSA0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSA1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSA2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSA3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSA4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgOAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNCA+PSA5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgOQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxOAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMTkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxOQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMjAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMjEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMjIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMjMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMjQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyNAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMjUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyNQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMjYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyNgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMjcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyNwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMjgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyOAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMjkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyOQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAzMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMzAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAzMAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAzMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMzEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAzMQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAzMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMzIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAzMgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAzMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMzMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAzMwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAzNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMzQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAzNAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAzNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMzUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAzNQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAzNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMzYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAzNgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAzNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMzcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAzNwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAzOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMzgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAzOAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAzOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gMzkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAzOQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA0MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNDAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA0MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA0MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNDEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA0MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA0MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNDIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA0MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA0MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNDMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA0MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA0NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNDQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA0NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA0NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNDUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA0NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA0NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNDYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA0NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA0NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNDcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA0NwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA0OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNDgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA0OAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA0OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNDkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA0OQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA1MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNTAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA1MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA1MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNTEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA1MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA1MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNTIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA1MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA1MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNTMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA1MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA1NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNTQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA1NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA1NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNTUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA1NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA1NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNTYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA1NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA1NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNTcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA1NwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA1OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNTgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA1OAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA1OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNTkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA1OQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA2MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNjAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA2MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA2MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNjEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA2MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA2MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNjIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA2MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA2MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNjMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA2MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA2NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNjQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA2NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA2NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNjUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA2NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA2NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNjYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA2NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA2NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNjcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA2NwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA2OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNjgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA2OAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA2OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNjkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA2OQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA3MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNzAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA3MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA3MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNzEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA3MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA3MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNzIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA3MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA3MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNzMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA3MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA3NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNzQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA3NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA3NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNzUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA3NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA3NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNzYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA3NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA3NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNzcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA3NwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA3OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNzgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA3OAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA3OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gNzkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA3OQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA4MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gODAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA4MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA4MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gODEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA4MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA4MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gODIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA4MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA4MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gODMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA4MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA4NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gODQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA4NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA4NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gODUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA4NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA4NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gODYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA4NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA4NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gODcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA4NwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA4OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gODgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA4OAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA4OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gODkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA4OQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA5MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gOTAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA5MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA5MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gOTEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA5MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA5MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gOTIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA5MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA5MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gOTMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA5MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA5NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gOTQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA5NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA5NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gOTUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA5NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA5NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gOTYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA5NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA5NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gOTcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA5NwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA5OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gOTgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA5OAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSA5OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzQgPj0gOTkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA5OQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDEwMAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEwMAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDEwMQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEwMQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDEwMgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEwMgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDEwMwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEwMwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDEwNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEwNAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDEwNQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEwNQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDEwNgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEwNgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDEwNwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEwNwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDEwOAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEwOAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDEwOQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEwOQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDExMAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDExMAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDExMQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDExMQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDExMgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDExMgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDExMwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDExMwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDExNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDExNAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDExNQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDExNQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDExNgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDExNgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDExNwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDExNwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDExOAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDExOAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDExOQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDExOQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMjAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDEyMAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEyMAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMjEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDEyMQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEyMQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMjIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDEyMgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEyMgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMjMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDEyMwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEyMwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMjQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDEyNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEyNAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMjUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDEyNQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEyNQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMjYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDEyNgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEyNgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMjcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDEyNwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEyNwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMjggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDEyOAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEyOAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMjkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDEyOQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEyOQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMzAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDEzMAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEzMAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMzEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDEzMQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEzMQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMzIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDEzMgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEzMgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMzMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDEzMwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEzMwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMzQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDEzNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEzNAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMzUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDEzNQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEzNQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMzYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDEzNgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEzNgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMzcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDEzNwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEzNwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMzggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDEzOAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEzOAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxMzkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDEzOQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEzOQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE0MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE0MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE0MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE0MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE0MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE0MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE0MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE0MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE0NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE0NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE0NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE0NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE0NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE0NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE0NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE0NwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE0OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE0OAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE0OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE0OQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE1MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE1MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE1MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE1MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE1MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE1MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE1MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE1MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE1NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE1NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE1NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE1NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE1NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE1NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE1NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE1NwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE1OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE1OAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE1OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE1OQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNjAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE2MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE2MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNjEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE2MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE2MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNjIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE2MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE2MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNjMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE2MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE2MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNjQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE2NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE2NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNjUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE2NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE2NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNjYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE2NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE2NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNjcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE2NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE2NwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNjggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE2OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE2OAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNjkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE2OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE2OQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNzAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE3MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE3MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNzEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE3MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE3MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNzIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE3MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE3MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNzMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE3MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE3MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNzQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE3NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE3NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNzUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE3NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE3NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNzYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE3NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE3NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNzcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE3NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE3NwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNzggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE3OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE3OAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxNzkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE3OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE3OQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxODAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE4MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE4MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxODEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE4MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE4MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxODIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE4MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE4MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxODMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE4MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE4MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxODQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE4NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE4NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxODUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE4NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE4NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxODYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE4NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE4NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxODcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE4NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE4NwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxODggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE4OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE4OAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxODkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE4OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE4OQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxOTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE5MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE5MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxOTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE5MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE5MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxOTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE5MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE5MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxOTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE5MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE5MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxOTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE5NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE5NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxOTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE5NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE5NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxOTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE5NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE5NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxOTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE5NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE5NwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxOTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE5OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE5OAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAxOTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDE5OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE5OQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIwMAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIwMAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIwMQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIwMQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIwMgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIwMgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIwMwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIwMwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIwNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIwNAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIwNQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIwNQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIwNgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIwNgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIwNwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIwNwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIwOAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIwOAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIwOQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIwOQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIxMAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIxMAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIxMQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIxMQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIxMgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIxMgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIxMwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIxMwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIxNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIxNAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIxNQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIxNQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIxNgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIxNgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIxNwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIxNwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIxOAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIxOAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIxOQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIxOQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMjAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIyMAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIyMAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMjEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIyMQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIyMQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMjIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIyMgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIyMgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMjMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIyMwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIyMwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMjQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIyNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIyNAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMjUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIyNQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIyNQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMjYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIyNgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIyNgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMjcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIyNwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIyNwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMjggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIyOAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIyOAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMjkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIyOQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIyOQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMzAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIzMAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIzMAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMzEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIzMQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIzMQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMzIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIzMgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIzMgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMzMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIzMwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIzMwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMzQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIzNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIzNAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMzUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIzNQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIzNQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMzYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIzNgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIzNgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMzcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIzNwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIzNwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMzggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIzOAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIzOAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyMzkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDIzOQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIzOQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyNDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDI0MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI0MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyNDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDI0MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI0MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyNDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDI0MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI0MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyNDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDI0MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI0MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyNDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDI0NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI0NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyNDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDI0NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI0NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyNDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDI0NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI0NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyNDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDI0NwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI0NwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyNDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDI0OAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI0OAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyNDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDI0OQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI0OQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyNTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDI1MAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI1MAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyNTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDI1MQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI1MQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyNTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDI1MgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI1MgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyNTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDI1MwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI1MwotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyNTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDI1NAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI1NAotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyNTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDI1NQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI1NQotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA8PSAyNTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80ID49IDI1NgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI1NgotIyAgICAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV80Ci0jICAgICAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fNAotIyAgICBlbmRpZgotIyBlbmRpZgotIwotIyB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fREVQVEgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSCgpIDMKLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZMQUdTXzQKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU180CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2l0ZXIvZm9yd2FyZDUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9pdGVyL2ZvcndhcmQ1LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTlmZWJiMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2l0ZXIvZm9yd2FyZDUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTMzOCArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZiBkZWZpbmVkKE5ETkJPT1NUX1BQX0lURVJBVElPTl9MSU1JVFMpCi0jICAgIGlmICFkZWZpbmVkKE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzUpCi0jICAgICAgICBlcnJvciBORE5CT09TVF9QUF9FUlJPUjogIGRlcHRoICM1IGZpbGVuYW1lIGlzIG5vdCBkZWZpbmVkCi0jICAgIGVuZGlmCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQUxVRSBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDIsIDAsIE5ETkJPT1NUX1BQX0lURVJBVElPTl9MSU1JVFMpCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2JvdW5kcy9sb3dlcjUuaHBwPgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFMVUUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgyLCAxLCBORE5CT09TVF9QUF9JVEVSQVRJT05fTElNSVRTKQotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ib3VuZHMvdXBwZXI1LmhwcD4KLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GTEFHU181KCkgMAotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fTElNSVRTCi0jIGVsaWYgZGVmaW5lZChORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzUpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQUxVRSBORE5CT09TVF9QUF9BUlJBWV9FTEVNKDAsIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfNSkKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvYm91bmRzL2xvd2VyNS5ocHA+Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQUxVRSBORE5CT09TVF9QUF9BUlJBWV9FTEVNKDEsIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfNSkKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvYm91bmRzL3VwcGVyNS5ocHA+Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9GSUxFTkFNRV81IE5ETkJPT1NUX1BQX0FSUkFZX0VMRU0oMiwgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1BBUkFNU181KQotIyAgICBpZiBORE5CT09TVF9QUF9BUlJBWV9TSVpFKE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfNSkgPj0gNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GTEFHU181KCkgTkROQk9PU1RfUFBfQVJSQVlfRUxFTSgzLCBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzUpCi0jICAgIGVsc2UKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fRkxBR1NfNSgpIDAKLSMgICAgZW5kaWYKLSMgZWxzZQotIyAgICBlcnJvciBORE5CT09TVF9QUF9FUlJPUjogIGRlcHRoICM1IGl0ZXJhdGlvbiBib3VuZGFyaWVzIG9yIGZpbGVuYW1lIG5vdCBkZWZpbmVkCi0jIGVuZGlmCi0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSAotIyBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0RFUFRIKCkgNQotIwotIyBpZiAoTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUpID4gKE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSkKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvaXRlci9yZXZlcnNlNS5ocHA+Ci0jIGVsc2UKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gMwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gNAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gNQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gNgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gNwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gOAotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzUgPj0gOQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDEwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDExCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDEyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDEzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDE0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDE1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDE2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDE3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDE4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDE5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDIwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDIxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDIyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDIzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDI0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDI1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDI2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDI3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDI4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDI5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMzAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDMwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMzAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMzEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDMxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMzEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMzIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDMyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMzIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMzMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDMzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMzMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMzQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDM0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMzQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMzUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDM1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMzUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMzYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDM2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMzYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMzcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDM3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMzcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMzggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDM4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMzgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMzkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDM5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMzkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDQwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNDAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDQxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNDEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDQyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNDIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDQzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNDMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDQ0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNDQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDQ1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNDUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDQ2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNDYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDQ3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNDcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDQ4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNDgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDQ5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNDkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDUwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNTAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDUxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNTEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDUyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNTIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDUzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNTMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDU0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNTQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDU1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNTUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDU2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNTYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDU3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNTcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDU4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNTgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDU5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNTkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNjAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDYwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNjAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNjEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDYxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNjEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNjIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDYyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNjIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNjMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDYzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNjMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNjQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDY0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNjQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNjUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDY1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNjUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNjYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDY2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNjYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNjcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDY3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNjcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNjggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDY4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNjgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNjkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDY5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNjkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNzAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDcwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNzAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNzEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDcxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNzEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNzIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDcyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNzIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNzMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDczCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNzMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNzQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDc0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNzQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNzUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDc1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNzUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNzYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDc2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNzYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNzcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDc3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNzcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNzggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDc4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNzgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gNzkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDc5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNzkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gODAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDgwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgODAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gODEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDgxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgODEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gODIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDgyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgODIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gODMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDgzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgODMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gODQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDg0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgODQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gODUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDg1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgODUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gODYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDg2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgODYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gODcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDg3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgODcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gODggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDg4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgODgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gODkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDg5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgODkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gOTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDkwCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgOTAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gOTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDkxCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgOTEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gOTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDkyCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgOTIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gOTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDkzCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgOTMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gOTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDk0Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgOTQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gOTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDk1Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgOTUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gOTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDk2Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgOTYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gOTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDk3Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgOTcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gOTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDk4Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgOTgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gOTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF81ID49IDk5Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgOTkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTAwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMDAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMDAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTAxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMDEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMDEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTAyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMDIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMDIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTAzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMDMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMDMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTA0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMDQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMDQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTA1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMDUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMDUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTA2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMDYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMDYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTA3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMDcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMDcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTA4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMDgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMDgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTA5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMDkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMDkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTEwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMTAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMTAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTExICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMTEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMTEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTEyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMTIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMTIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTEzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMTMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMTMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTE0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMTQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMTQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTE1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMTUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMTUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTE2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMTYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMTYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTE3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMTcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMTcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTE4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMTgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMTgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTE5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMTkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMTkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTIwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMjAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMjAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTIxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMjEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMjEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTIyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMjIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMjIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTIzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMjMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMjMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTI0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMjQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMjQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTI1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMjUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMjUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTI2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMjYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMjYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTI3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMjcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMjcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTI4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMjgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMjgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTI5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMjkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMjkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTMwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMzAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMzAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTMxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMzEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMzEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTMyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMzIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMzIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTMzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMzMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMzMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTM0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMzQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMzQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTM1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMzUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMzUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTM2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMzYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMzYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTM3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMzcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMzcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTM4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMzgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMzgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTM5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxMzkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMzkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTQwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNDAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNDAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTQxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNDEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNDEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTQyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNDIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNDIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTQzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNDMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNDMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTQ0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNDQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNDQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTQ1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNDUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNDUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTQ2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNDYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNDYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTQ3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNDcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNDcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTQ4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNDgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNDgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTQ5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNDkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNDkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTUwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNTAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNTAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTUxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNTEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNTEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTUyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNTIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNTIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTUzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNTMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNTMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTU0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNTQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNTQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTU1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNTUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNTUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTU2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNTYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNTYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTU3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNTcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNTcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTU4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNTgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNTgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTU5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNTkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNTkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTYwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNjAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNjAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTYxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNjEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNjEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTYyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNjIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNjIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTYzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNjMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNjMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTY0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNjQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNjQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTY1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNjUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNjUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTY2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNjYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNjYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTY3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNjcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNjcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTY4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNjgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNjgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTY5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNjkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNjkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTcwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNzAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNzAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTcxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNzEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNzEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTcyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNzIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNzIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTczICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNzMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNzMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTc0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNzQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNzQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTc1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNzUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNzUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTc2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNzYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNzYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTc3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNzcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNzcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTc4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNzgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNzgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTc5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxNzkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNzkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTgwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxODAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxODAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTgxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxODEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxODEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTgyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxODIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxODIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTgzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxODMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxODMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTg0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxODQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxODQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTg1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxODUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxODUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTg2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxODYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxODYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTg3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxODcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxODcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTg4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxODgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxODgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTg5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxODkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxODkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTkwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxOTAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxOTAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTkxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxOTEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxOTEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTkyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxOTIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxOTIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTkzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxOTMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxOTMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTk0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxOTQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxOTQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTk1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxOTUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxOTUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTk2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxOTYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxOTYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTk3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxOTcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxOTcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTk4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxOTgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxOTgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMTk5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAxOTkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxOTkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjAwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMDAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMDAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjAxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMDEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMDEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjAyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMDIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMDIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjAzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMDMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMDMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjA0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMDQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMDQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjA1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMDUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMDUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjA2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMDYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMDYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjA3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMDcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMDcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjA4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMDgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMDgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjA5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMDkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMDkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjEwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMTAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMTAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjExICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMTEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMTEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjEyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMTIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMTIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjEzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMTMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMTMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjE0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMTQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMTQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjE1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMTUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMTUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjE2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMTYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMTYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjE3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMTcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMTcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjE4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMTgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMTgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjE5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMTkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMTkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjIwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMjAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMjAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjIxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMjEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMjEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjIyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMjIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMjIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjIzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMjMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMjMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjI0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMjQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMjQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjI1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMjUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMjUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjI2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMjYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMjYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjI3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMjcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMjcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjI4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMjgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMjgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjI5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMjkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMjkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjMwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMzAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMzAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjMxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMzEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMzEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjMyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMzIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMzIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjMzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMzMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMzMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjM0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMzQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMzQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjM1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMzUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMzUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjM2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMzYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMzYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjM3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMzcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMzcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjM4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMzgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMzgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjM5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyMzkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMzkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjQwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyNDAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyNDAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjQxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyNDEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyNDEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjQyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyNDIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyNDIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjQzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyNDMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyNDMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjQ0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyNDQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyNDQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjQ1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyNDUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyNDUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjQ2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyNDYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyNDYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjQ3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyNDcKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyNDcKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjQ4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyNDgKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyNDgKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjQ5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyNDkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyNDkKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjUwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyNTAKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyNTAKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjUxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyNTEKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyNTEKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjUyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyNTIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyNTIKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjUzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyNTMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyNTMKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjU0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyNTQKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyNTQKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjU1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyNTUKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyNTUKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPD0gMjU2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA+PSAyNTYKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyNTYKLSMgICAgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfNQotIyAgICAgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUKLSMgICAgZW5kaWYKLSMgZW5kaWYKLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0RFUFRICi0jIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fREVQVEgoKSA0Ci0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNQotIyB1bmRlZiBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GTEFHU181Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfNQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9pdGVyL3JldmVyc2UxLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvaXRlci9yZXZlcnNlMS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJiMDFhZjEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9pdGVyL3JldmVyc2UxLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyOTYgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDI1NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyNTYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDI1NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDI1NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyNTUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDI1NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDI1NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyNTQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDI1NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDI1MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyNTMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDI1MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDI1MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyNTIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDI1MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDI1MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyNTEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDI1MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDI1MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyNTAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDI1MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDI0OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyNDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDI0OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDI0OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyNDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDI0OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDI0NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyNDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDI0NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDI0NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyNDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDI0NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDI0NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyNDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDI0NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDI0NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyNDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDI0NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDI0MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyNDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDI0MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDI0MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyNDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDI0MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDI0MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyNDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDI0MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDI0MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyNDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDI0MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIzOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMzkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIzOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIzOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMzgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIzOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIzNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMzcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIzNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIzNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMzYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIzNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIzNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMzUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIzNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIzNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMzQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIzNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIzMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMzMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIzMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIzMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMzIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIzMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIzMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMzEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIzMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIzMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMzAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIzMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIyOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMjkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIyOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIyOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMjgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIyOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIyNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMjcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIyNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIyNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMjYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIyNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIyNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMjUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIyNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIyNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMjQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIyNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIyMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMjMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIyMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIyMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMjIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIyMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIyMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMjEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIyMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIyMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMjAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIyMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIxOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMTkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIxOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIxOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMTgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIxOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIxNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMTcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIxNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIxNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMTYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIxNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIxNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMTUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIxNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIxNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMTQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIxNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIxMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMTMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIxMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIxMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMTIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIxMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIxMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMTEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIxMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIxMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMTAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIxMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIwOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIwOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIwOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIwOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIwNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIwNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIwNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIwNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIwNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIwNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIwNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIwNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIwMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIwMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIwMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIwMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIwMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIwMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIwMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAyMDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDIwMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE5OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxOTkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE5OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE5OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxOTgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE5OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE5NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxOTcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE5NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE5NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxOTYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE5NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE5NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxOTUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE5NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE5NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxOTQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE5NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE5MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxOTMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE5MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE5MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxOTIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE5MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE5MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxOTEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE5MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE5MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxOTAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE5MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE4OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxODkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE4OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE4OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxODgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE4OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE4NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxODcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE4NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE4NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxODYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE4NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE4NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxODUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE4NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE4NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxODQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE4NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE4MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxODMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE4MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE4MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxODIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE4MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE4MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxODEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE4MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE4MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxODAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE4MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE3OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNzkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE3OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE3OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNzgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE3OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE3NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNzcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE3NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE3NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNzYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE3NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE3NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNzUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE3NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE3NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNzQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE3NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE3MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNzMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE3MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE3MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNzIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE3MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE3MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNzEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE3MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE3MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNzAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE3MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE2OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNjkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE2OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE2OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNjgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE2OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE2NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNjcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE2NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE2NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNjYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE2NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE2NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNjUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE2NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE2NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNjQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE2NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE2MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNjMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE2MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE2MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNjIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE2MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE2MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNjEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE2MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE2MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNjAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE2MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE1OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNTkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE1OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE1OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNTgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE1OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE1NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNTcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE1NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE1NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNTYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE1NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE1NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNTUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE1NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE1NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNTQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE1NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE1MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNTMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE1MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE1MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNTIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE1MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE1MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNTEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE1MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE1MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNTAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE1MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE0OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE0OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE0OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE0OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE0NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE0NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE0NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE0NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE0NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE0NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE0NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE0NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE0MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE0MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE0MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE0MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE0MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE0MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE0MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxNDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDE0MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDEzOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMzkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEzOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDEzOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMzgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEzOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDEzNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMzcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEzNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDEzNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMzYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEzNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDEzNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMzUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEzNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDEzNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMzQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEzNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDEzMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMzMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEzMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDEzMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMzIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEzMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDEzMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMzEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEzMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDEzMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMzAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEzMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDEyOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMjkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEyOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDEyOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMjgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEyOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDEyNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMjcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEyNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDEyNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMjYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEyNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDEyNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMjUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEyNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDEyNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMjQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEyNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDEyMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMjMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEyMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDEyMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMjIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEyMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDEyMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMjEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEyMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDEyMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMjAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEyMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDExOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMTkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDExOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDExOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMTgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDExOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDExNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMTcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDExNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDExNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMTYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDExNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDExNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMTUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDExNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDExNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMTQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDExNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDExMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMTMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDExMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDExMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMTIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDExMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDExMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMTEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDExMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDExMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMTAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDExMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDEwOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEwOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDEwOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEwOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDEwNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEwNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDEwNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEwNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDEwNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEwNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDEwNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEwNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDEwMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEwMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDEwMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEwMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDEwMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEwMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDEwMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMSA+PSAxMDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8xIDEwMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDk5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDk5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA5OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDk4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDk4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA5OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDk3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDk3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA5NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDk2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDk2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA5NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDk1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDk1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA5NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDk0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDk0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA5NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDkzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDkzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA5MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDkyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDkyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA5MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDkxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDkxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA5MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDkwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDkwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA5MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDg5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDg5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA4OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDg4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDg4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA4OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDg3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDg3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA4NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDg2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDg2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA4NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDg1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDg1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA4NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDg0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDg0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA4NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDgzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDgzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA4MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDgyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDgyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA4MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDgxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDgxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA4MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDgwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDgwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA4MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDc5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDc5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA3OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDc4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDc4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA3OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDc3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDc3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA3NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDc2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDc2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA3NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDc1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDc1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA3NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDc0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDc0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA3NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDczICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDczCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA3MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDcyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDcyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA3MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDcxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDcxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA3MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDcwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDcwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA3MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDY5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDY5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA2OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDY4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDY4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA2OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDY3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDY3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA2NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDY2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDY2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA2NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDY1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDY1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA2NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDY0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDY0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA2NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDYzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDYzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA2MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDYyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDYyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA2MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDYxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDYxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA2MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDYwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDYwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA2MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDU5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDU5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA1OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDU4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDU4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA1OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDU3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDU3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA1NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDU2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDU2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA1NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDU1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDU1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA1NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDU0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDU0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA1NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDUzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDUzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA1MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDUyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDUyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA1MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDUxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDUxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA1MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDUwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDUwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA1MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDQ5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDQ5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA0OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDQ4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDQ4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA0OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDQ3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDQ3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA0NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDQ2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDQ2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA0NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDQ1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDQ1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA0NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDQ0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDQ0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA0NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDQzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDQzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA0MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDQyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDQyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA0MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDQxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDQxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA0MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDQwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDQwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSA0MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDM5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDM5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAzOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDM4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDM4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAzOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDM3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDM3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAzNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDM2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDM2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAzNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDM1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDM1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAzNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDM0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDM0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAzNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDMzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDMzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAzMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDMyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDMyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAzMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDMxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDMxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAzMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDMwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDMwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAzMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDI5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDI5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDI4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDI4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDI3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDI3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDI2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDI2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDI1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDI1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDI0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDI0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDIzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDIyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDIxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDIwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAyMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDE5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDE4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDE3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDE2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDE1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDE0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDE0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDEzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDEzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDEyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDEyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDExICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDExCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDEwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8xID49IDEwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMSAxMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8xIDw9IDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzEgPj0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEgMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzEKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzEKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvaXRlci9yZXZlcnNlMi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2l0ZXIvcmV2ZXJzZTIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NmNjNmI5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvaXRlci9yZXZlcnNlMi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjk2ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyNTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjU2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyNTYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyNTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjU1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyNTUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyNTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjU0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyNTQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyNTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjUzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyNTMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyNTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjUyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyNTIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyNTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjUxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyNTEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyNTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjUwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyNTAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyNDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjQ5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyNDkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyNDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjQ4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyNDgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyNDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjQ3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyNDcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyNDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjQ2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyNDYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyNDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjQ1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyNDUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyNDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjQ0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyNDQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyNDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjQzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyNDMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyNDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjQyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyNDIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyNDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjQxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyNDEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyNDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjQwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyNDAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMzkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjM5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMzkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMzggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjM4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMzgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMzcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjM3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMzcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMzYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjM2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMzYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMzUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjM1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMzUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMzQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjM0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMzQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMzMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjMzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMzMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMzIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjMyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMzIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMzEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjMxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMzEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMzAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjMwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMzAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMjkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjI5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMjkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMjggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjI4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMjgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMjcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjI3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMjcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMjYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjI2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMjYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMjUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjI1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMjUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMjQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjI0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMjQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMjMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjIzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMjMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMjIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjIyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMjIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMjEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjIxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMjEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMjAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjIwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMjAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjE5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMTkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjE4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMTgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjE3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMTcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjE2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMTYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjE1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMTUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjE0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMTQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjEzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMTMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjEyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMTIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjExCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMTEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjEwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMTAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMDkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMDgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMDcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMDYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMDUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMDQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMDMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMDIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMDEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMjAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAyMDAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxOTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTk5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxOTkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxOTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTk4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxOTgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxOTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTk3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxOTcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxOTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTk2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxOTYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxOTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTk1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxOTUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxOTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTk0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxOTQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxOTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTkzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxOTMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxOTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTkyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxOTIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxOTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTkxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxOTEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxOTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTkwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxOTAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxODkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTg5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxODkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxODggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTg4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxODgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxODcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTg3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxODcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxODYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTg2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxODYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxODUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTg1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxODUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxODQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTg0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxODQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxODMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTgzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxODMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxODIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTgyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxODIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxODEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTgxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxODEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxODAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTgwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxODAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNzkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTc5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNzkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNzggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTc4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNzgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNzcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTc3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNzcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNzYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTc2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNzYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNzUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTc1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNzUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNzQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTc0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNzQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNzMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTczCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNzMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNzIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTcyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNzIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNzEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTcxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNzEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNzAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTcwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNzAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNjkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTY5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNjkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNjggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTY4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNjgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNjcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTY3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNjcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNjYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTY2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNjYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNjUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTY1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNjUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNjQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTY0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNjQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNjMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTYzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNjMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNjIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTYyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNjIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNjEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTYxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNjEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNjAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTYwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNjAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTU5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNTkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTU4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNTgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTU3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNTcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTU2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNTYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTU1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNTUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTU0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNTQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTUzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNTMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTUyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNTIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTUxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNTEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTUwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNTAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTQ5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNDkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTQ4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNDgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTQ3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNDcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTQ2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNDYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTQ1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNDUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTQ0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNDQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTQzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNDMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTQyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNDIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTQxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNDEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTQwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxNDAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMzkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTM5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMzkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMzggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTM4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMzgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMzcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTM3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMzcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMzYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTM2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMzYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMzUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTM1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMzUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMzQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTM0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMzQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMzMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTMzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMzMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMzIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTMyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMzIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMzEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTMxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMzEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMzAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTMwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMzAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMjkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTI5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMjkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMjggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTI4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMjgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMjcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTI3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMjcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMjYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTI2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMjYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMjUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTI1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMjUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMjQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTI0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMjQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMjMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTIzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMjMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMjIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTIyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMjIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMjEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTIxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMjEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMjAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTIwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMjAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTE5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMTkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTE4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMTgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTE3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMTcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTE2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMTYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTE1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMTUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTE0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMTQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTEzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMTMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTEyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMTIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTExCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMTEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTEwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMTAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMDkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMDgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMDcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMDYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMDUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMDQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMDMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMDIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMDEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzIgPj0gMTAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMiAxMDAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA5OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA5OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgOTkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA5OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA5OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgOTgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA5NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA5NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgOTcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA5NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA5NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgOTYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA5NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA5NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgOTUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA5NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA5NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgOTQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA5MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA5MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgOTMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA5MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA5MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgOTIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA5MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA5MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgOTEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA5MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA5MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgOTAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA4OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA4OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgODkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA4OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA4OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgODgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA4NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA4NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgODcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA4NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA4NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgODYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA4NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA4NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgODUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA4NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA4NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgODQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA4MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA4MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgODMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA4MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA4MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgODIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA4MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA4MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgODEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA4MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA4MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgODAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA3OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA3OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNzkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA3OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA3OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNzgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA3NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA3NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNzcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA3NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA3NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNzYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA3NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA3NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNzUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA3NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA3NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNzQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA3MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA3MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNzMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA3MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA3MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNzIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA3MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA3MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNzEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA3MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA3MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNzAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA2OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA2OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNjkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA2OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA2OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNjgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA2NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA2NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNjcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA2NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA2NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNjYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA2NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA2NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNjUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA2NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA2NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNjQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA2MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA2MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNjMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA2MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA2MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNjIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA2MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA2MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNjEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA2MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA2MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNjAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA1OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA1OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNTkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA1OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA1OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNTgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA1NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA1NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNTcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA1NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA1NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNTYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA1NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA1NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNTUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA1NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA1NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNTQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA1MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA1MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNTMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA1MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA1MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNTIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA1MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA1MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNTEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA1MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA1MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNTAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA0OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA0OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNDkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA0OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA0OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNDgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA0NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA0NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNDcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA0NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA0NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNDYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA0NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA0NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNDUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA0NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA0NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNDQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA0MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA0MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNDMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA0MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA0MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNDIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA0MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA0MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNDEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA0MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSA0MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgNDAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAzOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAzOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMzkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAzOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAzOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMzgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAzNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAzNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMzcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAzNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAzNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMzYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAzNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAzNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMzUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAzNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAzNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMzQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAzMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAzMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMzMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAzMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAzMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMzIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAzMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAzMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMzEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAzMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAzMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMzAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAyOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAyOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAyNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAyNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAyNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAyNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAyMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAyMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAyMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAyMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMjAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMiA+PSAxMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzIgMTAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSA0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfMiA8PSAwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8yID49IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yIDAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV8yCi0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl8yCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2l0ZXIvcmV2ZXJzZTMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9pdGVyL3JldmVyc2UzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDM4MTBhNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2l0ZXIvcmV2ZXJzZTMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTI5NiArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjU2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDI1NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjU2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjU1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDI1NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjU1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjU0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDI1NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjU0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjUzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDI1MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjUzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjUyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDI1MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjUyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjUxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDI1MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjUxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjUwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDI1MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjUwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjQ5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDI0OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjQ5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjQ4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDI0OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjQ4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjQ3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDI0NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjQ3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjQ2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDI0NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjQ2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjQ1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDI0NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjQ1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjQ0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDI0NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjQ0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjQzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDI0MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjQzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjQyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDI0MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjQyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjQxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDI0MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjQxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjQwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDI0MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjQwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjM5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIzOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjM5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjM4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIzOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjM4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjM3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIzNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjM3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjM2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIzNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjM2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjM1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIzNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjM1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjM0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIzNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjM0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjMzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIzMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjMzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjMyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIzMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjMyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjMxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIzMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjMxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjMwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIzMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjMwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjI5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIyOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjI5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjI4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIyOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjI4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjI3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIyNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjI3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjI2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIyNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjI2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjI1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIyNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjI1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjI0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIyNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjI0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjIzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIyMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjIzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjIyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIyMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjIyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjIxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIyMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjIxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjIwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIyMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjIwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjE5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIxOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjE5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjE4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIxOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjE4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjE3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIxNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjE3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjE2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIxNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjE2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjE1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIxNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjE1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjE0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIxNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjE0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjEzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIxMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjEzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjEyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIxMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjEyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjExICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIxMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjExCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjEwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIxMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjEwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjA5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIwOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjA5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjA4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIwOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjA4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjA3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIwNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjA3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjA2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIwNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjA2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjA1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIwNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjA1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjA0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIwNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjA0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjAzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIwMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjAzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjAyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIwMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjAyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjAxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIwMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjAxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjAwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDIwMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMjAwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTk5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE5OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTk5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTk4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE5OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTk4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTk3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE5NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTk3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTk2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE5NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTk2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTk1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE5NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTk1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTk0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE5NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTk0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTkzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE5MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTkzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTkyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE5MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTkyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTkxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE5MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTkxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTkwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE5MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTkwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTg5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE4OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTg5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTg4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE4OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTg4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTg3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE4NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTg3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTg2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE4NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTg2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTg1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE4NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTg1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTg0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE4NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTg0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTgzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE4MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTgzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTgyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE4MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTgyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTgxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE4MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTgxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTgwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE4MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTgwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTc5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE3OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTc5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTc4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE3OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTc4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTc3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE3NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTc3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTc2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE3NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTc2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTc1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE3NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTc1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTc0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE3NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTc0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTczICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE3MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTczCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTcyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE3MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTcyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTcxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE3MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTcxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTcwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE3MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTcwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTY5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE2OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTY5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTY4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE2OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTY4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTY3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE2NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTY3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTY2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE2NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTY2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTY1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE2NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTY1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTY0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE2NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTY0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTYzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE2MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTYzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTYyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE2MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTYyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTYxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE2MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTYxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTYwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE2MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTYwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTU5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE1OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTU5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTU4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE1OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTU4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTU3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE1NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTU3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTU2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE1NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTU2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTU1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE1NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTU1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTU0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE1NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTU0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTUzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE1MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTUzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTUyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE1MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTUyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTUxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE1MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTUxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTUwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE1MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTUwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTQ5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE0OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTQ5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTQ4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE0OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTQ4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTQ3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE0NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTQ3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTQ2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE0NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTQ2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTQ1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE0NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTQ1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTQ0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE0NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTQ0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTQzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE0MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTQzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTQyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE0MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTQyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTQxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE0MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTQxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTQwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDE0MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTQwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTM5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDEzOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTM5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTM4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDEzOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTM4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTM3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDEzNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTM3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTM2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDEzNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTM2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTM1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDEzNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTM1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTM0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDEzNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTM0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTMzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDEzMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTMzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTMyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDEzMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTMyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTMxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDEzMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTMxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTMwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDEzMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTMwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTI5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDEyOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTI5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTI4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDEyOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTI4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTI3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDEyNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTI3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTI2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDEyNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTI2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTI1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDEyNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTI1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTI0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDEyNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTI0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTIzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDEyMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTIzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTIyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDEyMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTIyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTIxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDEyMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTIxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTIwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDEyMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTIwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTE5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDExOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTE5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTE4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDExOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTE4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTE3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDExNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTE3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTE2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDExNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTE2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTE1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDExNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTE1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTE0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDExNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTE0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTEzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDExMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTEzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTEyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDExMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTEyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTExICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDExMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTExCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTEwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDExMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTEwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTA5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDEwOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTA5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTA4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDEwOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTA4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTA3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDEwNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTA3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTA2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDEwNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTA2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTA1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDEwNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTA1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTA0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDEwNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTA0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTAzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDEwMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTAzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTAyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDEwMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTAyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTAxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDEwMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTAxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTAwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8zID49IDEwMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzMgMTAwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gOTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gOTkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDk5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gOTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gOTgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDk4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gOTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gOTcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDk3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gOTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gOTYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDk2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gOTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gOTUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDk1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gOTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gOTQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDk0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gOTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gOTMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDkzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gOTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gOTIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDkyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gOTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gOTEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDkxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gOTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gOTAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDkwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gODkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gODkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDg5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gODggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gODgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDg4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gODcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gODcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDg3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gODYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gODYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDg2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gODUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gODUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDg1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gODQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gODQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDg0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gODMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gODMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDgzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gODIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gODIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDgyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gODEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gODEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDgxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gODAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gODAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDgwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNzkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNzkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDc5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNzggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNzgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDc4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNzcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNzcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDc3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNzYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNzYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDc2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNzUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNzUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDc1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNzQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNzQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDc0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNzMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNzMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDczCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNzIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNzIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDcyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNzEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNzEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDcxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNzAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNzAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDcwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNjkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNjkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDY5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNjggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNjgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDY4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNjcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNjcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDY3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNjYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNjYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDY2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNjUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNjUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDY1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNjQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNjQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDY0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNjMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNjMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDYzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNjIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNjIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDYyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNjEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNjEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDYxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNjAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNjAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDYwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNTkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDU5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNTgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDU4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNTcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDU3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNTYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDU2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNTUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDU1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNTQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDU0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNTMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDUzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNTIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDUyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNTEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDUxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNTAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDUwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDQ5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDQ4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDQ3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDQ2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDQ1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDQ0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDQzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDQyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDQxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gNDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDQwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMzkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMzkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDM5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMzggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMzgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDM4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMzcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMzcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDM3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMzYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMzYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDM2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMzUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMzUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDM1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMzQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMzQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDM0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMzMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMzMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDMzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMzIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMzIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDMyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMzEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMzEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDMxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMzAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMzAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDMwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMjkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDI5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMjgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDI4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMjcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDI3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMjYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDI2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMjUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDI1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMjQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDI0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMjMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMjIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMjEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMjAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMjAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDIwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDE0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDEzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDEyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDExCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzMgPj0gMTAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl8zIDEwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA5Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA4Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA3Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA2Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA1Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyA0Ci0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAzCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAyCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAxCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXzMgPD0gMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfMyA+PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fMyAwCi0jICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfRklMRU5BTUVfMwotIyAgICB1bmRlZiBORE5CT09TVF9QUF9JVEVSQVRJT05fMwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9pdGVyL3JldmVyc2U0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvaXRlci9yZXZlcnNlNC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5ZTc3MzYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9pdGVyL3JldmVyc2U0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyOTYgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDI1NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyNTYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI1NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDI1NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyNTUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI1NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDI1NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyNTQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI1NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDI1MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyNTMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI1MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDI1MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyNTIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI1MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDI1MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyNTEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI1MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDI1MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyNTAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI1MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDI0OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyNDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI0OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDI0OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyNDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI0OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDI0NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyNDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI0NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDI0NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyNDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI0NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDI0NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyNDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI0NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDI0NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyNDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI0NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDI0MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyNDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI0MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDI0MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyNDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI0MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDI0MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyNDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI0MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDI0MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyNDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDI0MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIzOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMzkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIzOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIzOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMzgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIzOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIzNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMzcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIzNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIzNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMzYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIzNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIzNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMzUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIzNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIzNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMzQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIzNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIzMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMzMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIzMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIzMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMzIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIzMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIzMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMzEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIzMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIzMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMzAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIzMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIyOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMjkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIyOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIyOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMjgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIyOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIyNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMjcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIyNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIyNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMjYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIyNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIyNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMjUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIyNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIyNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMjQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIyNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIyMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMjMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIyMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIyMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMjIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIyMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIyMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMjEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIyMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIyMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMjAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIyMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIxOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMTkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIxOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIxOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMTgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIxOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIxNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMTcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIxNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIxNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMTYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIxNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIxNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMTUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIxNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIxNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMTQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIxNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIxMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMTMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIxMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIxMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMTIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIxMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIxMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMTEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIxMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIxMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMTAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIxMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIwOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIwOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIwOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIwOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIwNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIwNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIwNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIwNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIwNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIwNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIwNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIwNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIwMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIwMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIwMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIwMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIwMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIwMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIwMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAyMDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDIwMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE5OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxOTkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE5OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE5OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxOTgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE5OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE5NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxOTcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE5NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE5NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxOTYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE5NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE5NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxOTUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE5NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE5NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxOTQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE5NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE5MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxOTMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE5MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE5MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxOTIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE5MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE5MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxOTEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE5MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE5MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxOTAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE5MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE4OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxODkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE4OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE4OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxODgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE4OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE4NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxODcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE4NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE4NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxODYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE4NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE4NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxODUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE4NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE4NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxODQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE4NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE4MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxODMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE4MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE4MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxODIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE4MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE4MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxODEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE4MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE4MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxODAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE4MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE3OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNzkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE3OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE3OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNzgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE3OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE3NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNzcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE3NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE3NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNzYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE3NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE3NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNzUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE3NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE3NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNzQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE3NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE3MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNzMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE3MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE3MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNzIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE3MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE3MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNzEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE3MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE3MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNzAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE3MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE2OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNjkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE2OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE2OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNjgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE2OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE2NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNjcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE2NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE2NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNjYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE2NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE2NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNjUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE2NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE2NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNjQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE2NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE2MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNjMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE2MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE2MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNjIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE2MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE2MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNjEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE2MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE2MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNjAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE2MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE1OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNTkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE1OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE1OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNTgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE1OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE1NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNTcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE1NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE1NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNTYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE1NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE1NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNTUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE1NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE1NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNTQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE1NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE1MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNTMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE1MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE1MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNTIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE1MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE1MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNTEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE1MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE1MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNTAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE1MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE0OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE0OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE0OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE0OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE0NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE0NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE0NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE0NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE0NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE0NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE0NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE0NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE0MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE0MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE0MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE0MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE0MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE0MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE0MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxNDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDE0MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDEzOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMzkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEzOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDEzOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMzgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEzOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDEzNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMzcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEzNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDEzNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMzYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEzNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDEzNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMzUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEzNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDEzNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMzQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEzNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDEzMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMzMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEzMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDEzMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMzIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEzMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDEzMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMzEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEzMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDEzMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMzAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEzMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDEyOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMjkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEyOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDEyOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMjgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEyOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDEyNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMjcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEyNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDEyNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMjYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEyNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDEyNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMjUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEyNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDEyNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMjQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEyNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDEyMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMjMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEyMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDEyMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMjIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEyMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDEyMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMjEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEyMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDEyMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMjAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEyMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDExOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMTkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDExOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDExOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMTgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDExOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDExNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMTcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDExNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDExNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMTYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDExNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDExNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMTUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDExNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDExNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMTQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDExNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDExMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMTMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDExMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDExMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMTIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDExMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDExMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMTEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDExMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDExMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMTAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDExMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDEwOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEwOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDEwOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEwOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDEwNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEwNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDEwNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEwNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDEwNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEwNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDEwNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEwNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDEwMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEwMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDEwMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEwMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDEwMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEwMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDEwMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNCA+PSAxMDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl80IDEwMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDk5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDk5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA5OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDk4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDk4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA5OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDk3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDk3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA5NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDk2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDk2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA5NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDk1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDk1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA5NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDk0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDk0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA5NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDkzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDkzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA5MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDkyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDkyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA5MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDkxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDkxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA5MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDkwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDkwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA5MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDg5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDg5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA4OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDg4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDg4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA4OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDg3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDg3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA4NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDg2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDg2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA4NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDg1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDg1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA4NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDg0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDg0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA4NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDgzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDgzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA4MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDgyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDgyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA4MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDgxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDgxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA4MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDgwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDgwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA4MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDc5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDc5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA3OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDc4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDc4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA3OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDc3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDc3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA3NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDc2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDc2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA3NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDc1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDc1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA3NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDc0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDc0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA3NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDczICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDczCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA3MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDcyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDcyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA3MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDcxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDcxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA3MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDcwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDcwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA3MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDY5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDY5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA2OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDY4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDY4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA2OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDY3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDY3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA2NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDY2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDY2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA2NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDY1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDY1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA2NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDY0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDY0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA2NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDYzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDYzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA2MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDYyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDYyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA2MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDYxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDYxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA2MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDYwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDYwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA2MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDU5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDU5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA1OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDU4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDU4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA1OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDU3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDU3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA1NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDU2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDU2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA1NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDU1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDU1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA1NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDU0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDU0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA1NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDUzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDUzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA1MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDUyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDUyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA1MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDUxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDUxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA1MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDUwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDUwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA1MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDQ5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDQ5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA0OQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDQ4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDQ4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA0OAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDQ3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDQ3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA0NwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDQ2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDQ2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA0NgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDQ1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDQ1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA0NQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDQ0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDQ0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA0NAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDQzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDQzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA0MwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDQyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDQyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA0MgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDQxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDQxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA0MQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDQwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDQwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCA0MAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDM5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDM5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAzOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDM4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDM4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAzOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDM3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDM3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAzNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDM2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDM2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAzNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDM1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDM1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAzNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDM0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDM0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAzNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDMzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDMzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAzMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDMyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDMyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAzMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDMxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDMxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAzMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDMwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDMwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAzMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDI5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDI5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDI4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDI4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDI3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDI3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDI2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDI2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDI1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDI1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDI0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDI0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDIzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDIyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDIxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDIwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAyMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDE5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDE4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDE3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDE2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDE1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDE0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDE0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDEzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDEzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDEyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDEyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDExICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDExCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDEwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF80ID49IDEwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNCAxMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgOQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgOAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgNAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMwotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMgotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMQotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF80IDw9IDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzQgPj0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQgMAotIyAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0ZJTEVOQU1FXzQKLSMgICAgdW5kZWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzQKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvaXRlci9yZXZlcnNlNS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2l0ZXIvcmV2ZXJzZTUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1M2JlYmQ3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvaXRlci9yZXZlcnNlNS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjk2ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyNTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjU2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyNTYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyNTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjU1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyNTUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyNTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjU0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyNTQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyNTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjUzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyNTMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyNTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjUyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyNTIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyNTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjUxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyNTEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyNTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjUwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyNTAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyNDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjQ5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyNDkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyNDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjQ4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyNDgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyNDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjQ3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyNDcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyNDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjQ2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyNDYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyNDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjQ1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyNDUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyNDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjQ0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyNDQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyNDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjQzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyNDMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyNDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjQyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyNDIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyNDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjQxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyNDEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyNDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjQwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyNDAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMzkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjM5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMzkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMzggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjM4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMzgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMzcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjM3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMzcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMzYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjM2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMzYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMzUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjM1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMzUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMzQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjM0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMzQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMzMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjMzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMzMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMzIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjMyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMzIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMzEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjMxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMzEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMzAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjMwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMzAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMjkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjI5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMjkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMjggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjI4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMjgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMjcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjI3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMjcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMjYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjI2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMjYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMjUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjI1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMjUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMjQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjI0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMjQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMjMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjIzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMjMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMjIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjIyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMjIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMjEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjIxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMjEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMjAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjIwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMjAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjE5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMTkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjE4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMTgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjE3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMTcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjE2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMTYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjE1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMTUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjE0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMTQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjEzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMTMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjEyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMTIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjExCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMTEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjEwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMTAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMDkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMDgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMDcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMDYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMDUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMDQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMDMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMDIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMDEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMjAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAyMDAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxOTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTk5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxOTkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxOTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTk4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxOTgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxOTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTk3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxOTcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxOTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTk2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxOTYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxOTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTk1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxOTUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxOTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTk0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxOTQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxOTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTkzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxOTMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxOTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTkyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxOTIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxOTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTkxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxOTEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxOTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTkwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxOTAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxODkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTg5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxODkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxODggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTg4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxODgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxODcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTg3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxODcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxODYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTg2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxODYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxODUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTg1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxODUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxODQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTg0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxODQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxODMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTgzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxODMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxODIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTgyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxODIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxODEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTgxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxODEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxODAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTgwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxODAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNzkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTc5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNzkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNzggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTc4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNzgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNzcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTc3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNzcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNzYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTc2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNzYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNzUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTc1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNzUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNzQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTc0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNzQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNzMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTczCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNzMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNzIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTcyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNzIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNzEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTcxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNzEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNzAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTcwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNzAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNjkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTY5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNjkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNjggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTY4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNjgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNjcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTY3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNjcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNjYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTY2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNjYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNjUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTY1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNjUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNjQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTY0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNjQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNjMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTYzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNjMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNjIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTYyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNjIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNjEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTYxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNjEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNjAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTYwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNjAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTU5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNTkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTU4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNTgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTU3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNTcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTU2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNTYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTU1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNTUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTU0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNTQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTUzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNTMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTUyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNTIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTUxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNTEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTUwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNTAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTQ5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNDkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTQ4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNDgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTQ3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNDcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTQ2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNDYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTQ1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNDUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTQ0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNDQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTQzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNDMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTQyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNDIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTQxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNDEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTQwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxNDAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMzkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTM5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMzkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMzggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTM4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMzgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMzcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTM3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMzcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMzYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTM2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMzYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMzUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTM1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMzUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMzQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTM0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMzQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMzMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTMzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMzMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMzIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTMyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMzIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMzEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTMxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMzEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMzAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTMwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMzAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMjkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTI5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMjkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMjggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTI4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMjgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMjcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTI3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMjcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMjYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTI2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMjYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMjUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTI1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMjUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMjQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTI0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMjQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMjMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTIzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMjMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMjIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTIyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMjIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMjEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTIxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMjEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMjAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTIwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMjAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMTkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTE5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMTkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMTggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTE4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMTgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMTcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTE3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMTcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMTYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTE2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMTYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMTUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTE1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMTUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMTQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTE0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMTQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMTMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTEzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMTMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMTIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTEyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMTIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMTEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTExCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMTEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMTAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTEwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMTAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMDkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMDkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMDggJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMDgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMDcgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMDcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMDYgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMDYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMDUgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMDUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMDQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMDQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMDMgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMDMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMDIgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMDIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMDEgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMDEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMDAgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUXzUgPj0gMTAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fNSAxMDAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA5OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA5OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgOTkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA5OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA5OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgOTgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA5NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA5NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgOTcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA5NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA5NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgOTYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA5NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA5NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgOTUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA5NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA5NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgOTQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA5MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA5MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgOTMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA5MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA5MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgOTIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA5MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA5MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgOTEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA5MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA5MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgOTAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA4OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA4OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgODkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA4OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA4OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgODgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA4NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA4NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgODcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA4NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA4NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgODYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA4NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA4NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgODUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA4NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA4NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgODQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA4MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA4MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgODMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA4MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA4MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgODIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA4MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA4MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgODEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA4MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA4MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgODAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA3OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA3OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNzkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA3OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA3OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNzgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA3NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA3NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNzcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA3NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA3NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNzYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA3NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA3NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNzUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA3NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA3NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNzQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA3MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA3MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNzMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA3MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA3MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNzIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA3MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA3MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNzEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA3MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA3MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNzAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA2OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA2OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNjkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA2OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA2OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNjgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA2NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA2NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNjcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA2NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA2NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNjYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA2NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA2NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNjUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA2NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA2NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNjQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA2MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA2MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNjMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA2MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA2MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNjIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA2MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA2MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNjEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA2MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA2MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNjAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA1OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA1OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNTkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA1OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA1OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNTgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA1NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA1NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNTcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA1NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA1NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNTYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA1NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA1NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNTUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA1NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA1NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNTQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA1MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA1MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNTMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA1MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA1MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNTIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA1MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA1MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNTEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA1MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA1MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNTAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA0OSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA0OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNDkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA0OCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA0OAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNDgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA0NyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA0NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNDcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA0NiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA0NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNDYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA0NSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA0NQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNDUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA0NCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA0NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNDQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA0MyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA0MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNDMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA0MiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA0MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNDIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA0MSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA0MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNDEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA0MCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSA0MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgNDAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAzOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAzOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMzkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAzOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAzOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMzgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAzNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAzNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMzcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAzNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAzNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMzYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAzNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAzNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMzUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAzNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAzNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMzQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAzMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAzMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMzMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAzMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAzMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMzIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAzMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAzMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMzEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAzMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAzMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMzAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAyOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAyOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAyNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAyNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAyNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAyNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAyMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAyMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAyMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAyMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMjAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxOSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxOCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxNCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMyAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMiAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMSAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxMCAmJiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlRfNSA+PSAxMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OXzUgMTAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA5ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDkKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA4ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDgKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA3ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDcKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA2ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDYKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA1ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDUKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSA0ICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDQKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAzICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDMKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAyICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDIKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAxICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDEKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfNSA8PSAwICYmIE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF81ID49IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl81IDAKLSMgICAgaW5jbHVkZSBORE5CT09TVF9QUF9GSUxFTkFNRV81Ci0jICAgIHVuZGVmIE5ETkJPT1NUX1BQX0lURVJBVElPTl81Ci0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2xvY2FsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvbG9jYWwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZWMxNGEyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvbG9jYWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODEyICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmICFkZWZpbmVkKE5ETkJPT1NUX1BQX0xPQ0FMX0xJTUlUUykKLSMgICAgZXJyb3IgTkROQk9PU1RfUFBfRVJST1I6ICBsb2NhbCBpdGVyYXRpb24gYm91bmRhcmllcyBhcmUgbm90IGRlZmluZWQKLSMgZWxpZiAhZGVmaW5lZChORE5CT09TVF9QUF9MT0NBTF9NQUNSTykKLSMgICAgZXJyb3IgTkROQk9PU1RfUFBfRVJST1I6ICBsb2NhbCBpdGVyYXRpb24gdGFyZ2V0IG1hY3JvIGlzIG5vdCBkZWZpbmVkCi0jIGVsc2UKLSMgICAgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfUyBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDIsIDAsIE5ETkJPT1NUX1BQX0xPQ0FMX0xJTUlUUykKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9GIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMiwgMSwgTkROQk9PU1RfUFBfTE9DQUxfTElNSVRTKQotIyAgICBlbHNlCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFMVUUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgyLCAwLCBORE5CT09TVF9QUF9MT0NBTF9MSU1JVFMpCi0jICAgICAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9zdGFydC5ocHA+Ci0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFMVUUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgyLCAxLCBORE5CT09TVF9QUF9MT0NBTF9MSU1JVFMpCi0jICAgICAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9maW5pc2guaHBwPgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX1MgTkROQk9PU1RfUFBfTE9DQUxfU0UoKQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX0YgTkROQk9PU1RfUFBfTE9DQUxfRkUoKQotIyAgICBlbmRpZgotIyBlbmRpZgotIwotIyBpZiAoTkROQk9PU1RfUFBfTE9DQUxfUykgPiAoTkROQk9PU1RfUFBfTE9DQUxfRikKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvcmxvY2FsLmhwcD4KLSMgZWxzZQotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDApCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDApCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDMpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDMpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoNCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg1KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg1KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDYpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDYpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoNykKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNykKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg4KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg4KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDkpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDkpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTApCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEwKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDExKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxMikKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTIpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTMpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEzKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDE0KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxNSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTUpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTYpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE2KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDE3KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNykKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygxOCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTgpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTkpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE5KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDIwKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyMSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjEpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjIpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIyKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDIzKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMykKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyNCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjQpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjUpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDI1KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDI2KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyNikKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyNykKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjcpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjgpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDI4KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDI5KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyOSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygzMCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMzApCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMzEpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDMxKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDMyKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygzMikKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygzMykKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMzMpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMzQpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDM0KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDM1KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygzNSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygzNikKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMzYpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMzcpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDM3KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDM4KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygzOCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygzOSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMzkpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoNDApCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDQwKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDQxKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg0MSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg0MikKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNDIpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoNDMpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDQzKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDQ0KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg0NCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg0NSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNDUpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoNDYpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDQ2KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDQ3KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg0NykKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg0OCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNDgpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoNDkpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDQ5KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDUwKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg1MCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg1MSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNTEpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoNTIpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDUyKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDUzKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg1MykKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg1NCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNTQpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoNTUpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDU1KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDU2KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg1NikKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg1NykKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNTcpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoNTgpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDU4KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDU5KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg1OSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg2MCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNjApCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoNjEpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDYxKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDYyKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg2MikKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg2MykKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNjMpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoNjQpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDY0KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDY1KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg2NSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg2NikKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNjYpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoNjcpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDY3KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDY4KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg2OCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg2OSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNjkpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoNzApCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDcwKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDcxKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg3MSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg3MikKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNzIpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoNzMpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDczKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDc0KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg3NCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg3NSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNzUpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoNzYpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDc2KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDc3KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg3NykKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg3OCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNzgpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoNzkpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDc5KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDgwKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg4MCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg4MSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oODEpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoODIpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDgyKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDgzKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg4MykKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg4NCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oODQpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoODUpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDg1KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDg2KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg4NikKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg4NykKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oODcpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoODgpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDg4KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDg5KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg4OSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg5MCkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oOTApCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoOTEpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDkxKQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDkyKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg5MikKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg5MykKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oOTMpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoOTQpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDk0KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDk1KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg5NSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg5NikKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oOTYpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoOTcpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDk3KQotIyAgICBlbmRpZgotIyAgICBpZiBORE5CT09TVF9QUF9MT0NBTF9DKDk4KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg5OCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQyg5OSkKLSAgICAgICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oOTkpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTAwKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMDApCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTAxKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMDEpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTAyKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMDIpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTAzKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMDMpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTA0KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMDQpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTA1KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMDUpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTA2KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMDYpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTA3KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMDcpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTA4KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMDgpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTA5KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMDkpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTEwKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMTApCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTExKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMTEpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTEyKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMTIpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTEzKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMTMpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTE0KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMTQpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTE1KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMTUpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTE2KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMTYpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTE3KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMTcpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTE4KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMTgpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTE5KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMTkpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTIwKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMjApCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTIxKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMjEpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTIyKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMjIpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTIzKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMjMpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTI0KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMjQpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTI1KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMjUpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTI2KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMjYpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTI3KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMjcpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTI4KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMjgpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTI5KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMjkpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTMwKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMzApCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTMxKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMzEpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTMyKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMzIpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTMzKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMzMpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTM0KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMzQpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTM1KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMzUpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTM2KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMzYpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTM3KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMzcpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTM4KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMzgpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTM5KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMzkpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTQwKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNDApCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTQxKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNDEpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTQyKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNDIpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTQzKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNDMpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTQ0KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNDQpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTQ1KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNDUpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTQ2KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNDYpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTQ3KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNDcpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTQ4KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNDgpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTQ5KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNDkpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTUwKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNTApCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTUxKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNTEpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTUyKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNTIpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTUzKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNTMpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTU0KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNTQpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTU1KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNTUpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTU2KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNTYpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTU3KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNTcpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTU4KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNTgpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTU5KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNTkpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTYwKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNjApCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTYxKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNjEpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTYyKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNjIpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTYzKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNjMpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTY0KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNjQpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTY1KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNjUpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTY2KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNjYpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTY3KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNjcpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTY4KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNjgpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTY5KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNjkpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTcwKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNzApCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTcxKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNzEpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTcyKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNzIpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTczKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNzMpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTc0KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNzQpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTc1KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNzUpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTc2KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNzYpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTc3KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNzcpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTc4KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNzgpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTc5KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNzkpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTgwKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxODApCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTgxKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxODEpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTgyKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxODIpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTgzKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxODMpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTg0KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxODQpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTg1KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxODUpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTg2KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxODYpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTg3KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxODcpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTg4KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxODgpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTg5KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxODkpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTkwKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxOTApCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTkxKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxOTEpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTkyKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxOTIpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTkzKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxOTMpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTk0KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxOTQpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTk1KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxOTUpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTk2KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxOTYpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTk3KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxOTcpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTk4KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxOTgpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMTk5KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxOTkpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjAwKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMDApCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjAxKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMDEpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjAyKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMDIpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjAzKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMDMpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjA0KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMDQpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjA1KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMDUpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjA2KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMDYpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjA3KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMDcpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjA4KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMDgpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjA5KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMDkpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjEwKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMTApCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjExKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMTEpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjEyKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMTIpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjEzKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMTMpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjE0KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMTQpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjE1KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMTUpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjE2KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMTYpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjE3KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMTcpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjE4KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMTgpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjE5KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMTkpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjIwKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMjApCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjIxKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMjEpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjIyKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMjIpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjIzKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMjMpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjI0KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMjQpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjI1KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMjUpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjI2KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMjYpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjI3KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMjcpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjI4KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMjgpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjI5KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMjkpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjMwKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMzApCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjMxKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMzEpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjMyKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMzIpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjMzKQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMzMpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjM0KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMzQpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjM1KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMzUpCi0jICAgIGVuZGlmCi0jICAgIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX0MoMjM2KQotICAgICAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMzYpCi0jICAgIGVuZGlmCi0KLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyMzcpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIzNykKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyMzgpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIzOCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyMzkpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIzOSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyNDApCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDI0MCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyNDEpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDI0MSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyNDIpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDI0MikKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyNDMpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDI0MykKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyNDQpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDI0NCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyNDUpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDI0NSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyNDYpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDI0NikKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyNDcpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDI0NykKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyNDgpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDI0OCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyNDkpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDI0OSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyNTApCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDI1MCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyNTEpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDI1MSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyNTIpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDI1MikKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyNTMpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDI1MykKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyNTQpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDI1NCkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyNTUpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDI1NSkKLSMgICAgZW5kaWYKLSMgICAgaWYgTkROQk9PU1RfUFBfTE9DQUxfQygyNTYpCi0gICAgICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDI1NikKLSMgICAgZW5kaWYKLSMgZW5kaWYKLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfTE9DQUxfTElNSVRTCi0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0xPQ0FMX1MKLSMgdW5kZWYgTkROQk9PU1RfUFBfTE9DQUxfRgotIwotIyB1bmRlZiBORE5CT09TVF9QUF9MT0NBTF9NQUNSTwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ybG9jYWwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9ybG9jYWwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZDYwMWE3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvcmxvY2FsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDc4MiArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDI1NikKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyNTYpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjU1KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDI1NSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyNTQpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjU0KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDI1MykKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyNTMpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjUyKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDI1MikKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyNTEpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjUxKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDI1MCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyNTApCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjQ5KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDI0OSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyNDgpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjQ4KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDI0NykKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyNDcpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjQ2KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDI0NikKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyNDUpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjQ1KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDI0NCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyNDQpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjQzKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDI0MykKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyNDIpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjQyKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDI0MSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyNDEpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjQwKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDI0MCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyMzkpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjM5KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDIzOCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMzgpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjM3KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIzNykKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyMzYpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjM2KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDIzNSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMzUpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjM0KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIzNCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyMzMpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjMzKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDIzMikKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMzIpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjMxKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIzMSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyMzApCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjMwKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDIyOSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMjkpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjI4KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIyOCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyMjcpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjI3KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDIyNikKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMjYpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjI1KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIyNSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyMjQpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjI0KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDIyMykKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMjMpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjIyKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIyMikKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyMjEpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjIxKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDIyMCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMjApCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjE5KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIxOSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyMTgpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjE4KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDIxNykKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMTcpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjE2KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIxNikKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyMTUpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjE1KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDIxNCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMTQpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjEzKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIxMykKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyMTIpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjEyKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDIxMSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMTEpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjEwKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIxMCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyMDkpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjA5KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDIwOCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMDgpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjA3KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIwNykKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyMDYpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjA2KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDIwNSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMDUpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjA0KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIwNCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyMDMpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjAzKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDIwMikKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygyMDIpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjAxKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDIwMSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigyMDApCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjAwKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE5OSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxOTkpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTk4KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE5OCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxOTcpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTk3KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE5NikKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxOTYpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTk1KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE5NSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxOTQpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTk0KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE5MykKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxOTMpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTkyKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE5MikKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxOTEpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTkxKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE5MCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxOTApCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTg5KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE4OSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxODgpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTg4KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE4NykKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxODcpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTg2KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE4NikKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxODUpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTg1KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE4NCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxODQpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTgzKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE4MykKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxODIpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTgyKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE4MSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxODEpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTgwKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE4MCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxNzkpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTc5KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE3OCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNzgpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTc3KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE3NykKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxNzYpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTc2KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE3NSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNzUpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTc0KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE3NCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxNzMpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTczKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE3MikKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNzIpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTcxKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE3MSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxNzApCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTcwKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE2OSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNjkpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTY4KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE2OCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxNjcpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTY3KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE2NikKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNjYpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTY1KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE2NSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxNjQpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTY0KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE2MykKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNjMpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTYyKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE2MikKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxNjEpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTYxKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE2MCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNjApCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTU5KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE1OSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxNTgpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTU4KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE1NykKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNTcpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTU2KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE1NikKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxNTUpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTU1KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE1NCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNTQpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTUzKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE1MykKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxNTIpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTUyKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE1MSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNTEpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTUwKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE1MCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxNDkpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTQ5KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE0OCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNDgpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTQ3KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE0NykKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxNDYpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTQ2KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE0NSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNDUpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTQ0KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE0NCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxNDMpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTQzKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDE0MikKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxNDIpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTQxKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDE0MSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxNDApCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTQwKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDEzOSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMzkpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTM4KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEzOCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxMzcpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTM3KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDEzNikKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMzYpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTM1KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEzNSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxMzQpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTM0KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDEzMykKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMzMpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTMyKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEzMikKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxMzEpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTMxKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDEzMCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMzApCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTI5KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEyOSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxMjgpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTI4KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDEyNykKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMjcpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTI2KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEyNikKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxMjUpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTI1KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDEyNCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMjQpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTIzKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEyMykKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxMjIpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTIyKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDEyMSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMjEpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTIwKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEyMCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxMTkpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTE5KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDExOCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMTgpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTE3KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDExNykKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxMTYpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTE2KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDExNSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMTUpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTE0KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDExNCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxMTMpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTEzKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDExMikKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMTIpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTExKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDExMSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxMTApCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTEwKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDEwOSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMDkpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTA4KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEwOCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxMDcpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTA3KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDEwNikKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMDYpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTA1KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEwNSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxMDQpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTA0KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDEwMykKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMDMpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTAyKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEwMikKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxMDEpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTAxKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDEwMCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygxMDApCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoOTkpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oOTkpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoOTgpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oOTgpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoOTcpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oOTcpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoOTYpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oOTYpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoOTUpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oOTUpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoOTQpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oOTQpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoOTMpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oOTMpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoOTIpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oOTIpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoOTEpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oOTEpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoOTApCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oOTApCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoODkpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oODkpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoODgpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oODgpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoODcpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oODcpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoODYpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oODYpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoODUpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oODUpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoODQpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oODQpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoODMpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oODMpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoODIpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oODIpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoODEpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oODEpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoODApCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oODApCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNzkpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNzkpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNzgpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNzgpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNzcpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNzcpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNzYpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNzYpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNzUpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNzUpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNzQpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNzQpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNzMpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNzMpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNzIpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNzIpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNzEpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNzEpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNzApCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNzApCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNjkpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNjkpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNjgpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNjgpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNjcpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNjcpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNjYpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNjYpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNjUpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNjUpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNjQpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNjQpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNjMpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNjMpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNjIpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNjIpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNjEpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNjEpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNjApCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNjApCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNTkpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNTkpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNTgpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNTgpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNTcpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNTcpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNTYpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNTYpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNTUpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNTUpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNTQpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNTQpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNTMpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNTMpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNTIpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNTIpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNTEpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNTEpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNTApCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNTApCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNDkpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNDkpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNDgpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNDgpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNDcpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNDcpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNDYpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNDYpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNDUpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNDUpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNDQpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNDQpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNDMpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNDMpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNDIpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNDIpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNDEpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNDEpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNDApCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNDApCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMzkpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMzkpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMzgpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMzgpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMzcpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMzcpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMzYpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMzYpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMzUpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMzUpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMzQpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMzQpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMzMpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMzMpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMzIpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMzIpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMzEpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMzEpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMzApCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMzApCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjkpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjkpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjgpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjgpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjcpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjcpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjYpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjYpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjUpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjUpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjQpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjQpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjMpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjMpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjIpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjIpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjEpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjEpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMjApCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMjApCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTkpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTkpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTgpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTgpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTcpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTcpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTYpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTYpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTUpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTUpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTQpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTQpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTMpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTMpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTIpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTIpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTEpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTEpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMTApCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMTApCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoOSkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg5KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDgpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oOCkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUig3KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDcpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoNikKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTyg2KQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDUpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oNSkKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUig0KQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDQpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMykKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygzKQotIyBlbmRpZgotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9SKDIpCi0gICAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8oMikKLSMgZW5kaWYKLSMgaWYgTkROQk9PU1RfUFBfTE9DQUxfUigxKQotICAgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPKDEpCi0jIGVuZGlmCi0jIGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1IoMCkKLSAgICBORE5CT09TVF9QUF9MT0NBTF9NQUNSTygwKQotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9zZWxmLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvc2VsZi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU4NDBjOTkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9zZWxmLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmICFkZWZpbmVkKE5ETkJPT1NUX1BQX0lORElSRUNUX1NFTEYpCi0jICAgIGVycm9yIE5ETkJPT1NUX1BQX0VSUk9SOiAgbm8gaW5kaXJlY3QgZmlsZSB0byBpbmNsdWRlCi0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9JU19TRUxGSVNIIDEKLSMKLSMgaW5jbHVkZSBORE5CT09TVF9QUF9JTkRJUkVDVF9TRUxGCi0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0lTX1NFTEZJU0gKLSMgdW5kZWYgTkROQk9PU1RfUFBfSU5ESVJFQ1RfU0VMRgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9zdGFydC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL3N0YXJ0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWZhZjAzMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL3N0YXJ0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk5ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zbG90L2RldGFpbC9zaGFyZWQuaHBwPgotIwotIyB1bmRlZiBORE5CT09TVF9QUF9MT0NBTF9TRQotIwotIyB1bmRlZiBORE5CT09TVF9QUF9MT0NBTF9TRV9ESUdJVF8xCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0xPQ0FMX1NFX0RJR0lUXzIKLSMgdW5kZWYgTkROQk9PU1RfUFBfTE9DQUxfU0VfRElHSVRfMwotIyB1bmRlZiBORE5CT09TVF9QUF9MT0NBTF9TRV9ESUdJVF80Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0xPQ0FMX1NFX0RJR0lUXzUKLSMgdW5kZWYgTkROQk9PU1RfUFBfTE9DQUxfU0VfRElHSVRfNgotIyB1bmRlZiBORE5CT09TVF9QUF9MT0NBTF9TRV9ESUdJVF83Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0xPQ0FMX1NFX0RJR0lUXzgKLSMgdW5kZWYgTkROQk9PU1RfUFBfTE9DQUxfU0VfRElHSVRfOQotIyB1bmRlZiBORE5CT09TVF9QUF9MT0NBTF9TRV9ESUdJVF8xMAotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9TRV9ESUdJVF8zIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9TRV9ESUdJVF8zIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9TRV9ESUdJVF8zIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9TRV9ESUdJVF8zIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9TRV9ESUdJVF8zIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9TRV9ESUdJVF8zIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9TRV9ESUdJVF8zIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9TRV9ESUdJVF8zIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9TRV9ESUdJVF8zIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9TRV9ESUdJVF8zIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfU0VfRElHSVRfMiAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfU0VfRElHSVRfMiAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfU0VfRElHSVRfMiAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfU0VfRElHSVRfMiAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfU0VfRElHSVRfMiA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfU0VfRElHSVRfMiA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfU0VfRElHSVRfMiA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfU0VfRElHSVRfMiA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfU0VfRElHSVRfMiA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTE9DQUxfU0VfRElHSVRfMiA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX1NFX0RJR0lUXzEgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX1NFX0RJR0lUXzEgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX1NFX0RJR0lUXzEgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX1NFX0RJR0lUXzEgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX1NFX0RJR0lUXzEgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX1NFX0RJR0lUXzEgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX1NFX0RJR0lUXzEgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX1NFX0RJR0lUXzEgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX1NFX0RJR0lUXzEgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX1NFX0RJR0lUXzEgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9MT0NBTF9TRV9ESUdJVF8zCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9TRSgpIE5ETkJPT1NUX1BQX1NMT1RfQ0NfMyhORE5CT09TVF9QUF9MT0NBTF9TRV9ESUdJVF8zLCBORE5CT09TVF9QUF9MT0NBTF9TRV9ESUdJVF8yLCBORE5CT09TVF9QUF9MT0NBTF9TRV9ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX0xPQ0FMX1NFX0RJR0lUXzIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX1NFKCkgTkROQk9PU1RfUFBfU0xPVF9DQ18yKE5ETkJPT1NUX1BQX0xPQ0FMX1NFX0RJR0lUXzIsIE5ETkJPT1NUX1BQX0xPQ0FMX1NFX0RJR0lUXzEpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX1NFKCkgTkROQk9PU1RfUFBfTE9DQUxfU0VfRElHSVRfMQotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2l0ZXJhdGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2l0ZXJhdGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNmUxOTQxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9pdGVyYXRlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDgyICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfSVRFUkFUSU9OX0lURVJBVEVfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfSVRFUkFUSU9OX0lURVJBVEVfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL2RlYy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL2luYy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcnJheS9lbGVtLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FycmF5L3NpemUuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3Nsb3Qvc2xvdC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9lbGVtLmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfSVRFUkFUSU9OX0RFUFRIICovCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fREVQVEgoKSAwCi0jCi0jIC8qIE5ETkJPT1NUX1BQX0lURVJBVElPTiAqLwotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OKCkgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX0lURVJBVElPTl8sIE5ETkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSCgpKQotIwotIyAvKiBORE5CT09TVF9QUF9JVEVSQVRJT05fU1RBUlQgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSCAqLwotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX1NUQVJUKCkgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8sIE5ETkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSCgpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSCgpIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9JVEVSQVRJT05fRklOSVNIXywgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0RFUFRIKCkpCi0jCi0jIC8qIE5ETkJPT1NUX1BQX0lURVJBVElPTl9GTEFHUyAqLwotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZMQUdTKCkgKE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9JVEVSQVRJT05fRkxBR1NfLCBORE5CT09TVF9QUF9JVEVSQVRJT05fREVQVEgoKSkoKSkKLSMKLSMgLyogTkROQk9PU1RfUFBfRlJBTUVfSVRFUkFUSU9OICovCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9GUkFNRV9JVEVSQVRJT04oaSkgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX0lURVJBVElPTl8sIGkpCi0jCi0jIC8qIE5ETkJPT1NUX1BQX0ZSQU1FX1NUQVJUICYmIE5ETkJPT1NUX1BQX0ZSQU1FX0ZJTklTSCAqLwotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfRlJBTUVfU1RBUlQoaSkgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8sIGkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9GUkFNRV9GSU5JU0goaSkgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX0lURVJBVElPTl9GSU5JU0hfLCBpKQotIwotIyAvKiBORE5CT09TVF9QUF9GUkFNRV9GTEFHUyAqLwotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfRlJBTUVfRkxBR1MoaSkgKE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9JVEVSQVRJT05fRkxBR1NfLCBpKSgpKQotIwotIyAvKiBORE5CT09TVF9QUF9SRUxBVElWRV9JVEVSQVRJT04gKi8KLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFTEFUSVZFX0lURVJBVElPTihpKSBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfUkVMQVRJVkVfLCBpKShORE5CT09TVF9QUF9JVEVSQVRJT05fKQotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVMQVRJVkVfMChtKSBORE5CT09TVF9QUF9DQVQobSwgTkROQk9PU1RfUFBfSVRFUkFUSU9OX0RFUFRIKCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRUxBVElWRV8xKG0pIE5ETkJPT1NUX1BQX0NBVChtLCBORE5CT09TVF9QUF9ERUMoTkROQk9PU1RfUFBfSVRFUkFUSU9OX0RFUFRIKCkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVMQVRJVkVfMihtKSBORE5CT09TVF9QUF9DQVQobSwgTkROQk9PU1RfUFBfREVDKE5ETkJPT1NUX1BQX0RFQyhORE5CT09TVF9QUF9JVEVSQVRJT05fREVQVEgoKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVMQVRJVkVfMyhtKSBORE5CT09TVF9QUF9DQVQobSwgTkROQk9PU1RfUFBfREVDKE5ETkJPT1NUX1BQX0RFQyhORE5CT09TVF9QUF9ERUMoTkROQk9PU1RfUFBfSVRFUkFUSU9OX0RFUFRIKCkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRUxBVElWRV80KG0pIE5ETkJPT1NUX1BQX0NBVChtLCBORE5CT09TVF9QUF9ERUMoTkROQk9PU1RfUFBfREVDKE5ETkJPT1NUX1BQX0RFQyhORE5CT09TVF9QUF9ERUMoTkROQk9PU1RfUFBfSVRFUkFUSU9OX0RFUFRIKCkpKSkpKQotIwotIyAvKiBORE5CT09TVF9QUF9SRUxBVElWRV9TVEFSVCAmJiBORE5CT09TVF9QUF9SRUxBVElWRV9GSU5JU0ggKi8KLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFTEFUSVZFX1NUQVJUKGkpIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9SRUxBVElWRV8sIGkpKE5ETkJPT1NUX1BQX0lURVJBVElPTl9TVEFSVF8pCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRUxBVElWRV9GSU5JU0goaSkgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX1JFTEFUSVZFXywgaSkoTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZJTklTSF8pCi0jCi0jIC8qIE5ETkJPT1NUX1BQX1JFTEFUSVZFX0ZMQUdTICovCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRUxBVElWRV9GTEFHUyhpKSAoTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX1JFTEFUSVZFXywgaSkoTkROQk9PU1RfUFBfSVRFUkFUSU9OX0ZMQUdTXykoKSkKLSMKLSMgLyogTkROQk9PU1RfUFBfSVRFUkFURSAqLwotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFURSgpIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9JVEVSQVRFXywgTkROQk9PU1RfUFBfSU5DKE5ETkJPT1NUX1BQX0lURVJBVElPTl9ERVBUSCgpKSkKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVEVfMSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvaXRlci9mb3J3YXJkMS5ocHA+Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRFXzIgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2l0ZXIvZm9yd2FyZDIuaHBwPgotIyBkZWZpbmUgTkROQk9PU1RfUFBfSVRFUkFURV8zIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9pdGVyL2ZvcndhcmQzLmhwcD4KLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVEVfNCA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9kZXRhaWwvaXRlci9mb3J3YXJkNC5ocHA+Ci0jIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRFXzUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2l0ZXIvZm9yd2FyZDUuaHBwPgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2xvY2FsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9sb2NhbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhhYWM4YWYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2xvY2FsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfSVRFUkFUSU9OX0xPQ0FMX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0lURVJBVElPTl9MT0NBTF9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2xvdC9zbG90LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL2VsZW0uaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9MT0NBTF9JVEVSQVRFICovCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9MT0NBTF9JVEVSQVRFKCkgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vZGV0YWlsL2xvY2FsLmhwcD4KLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX0MobikgKE5ETkJPT1NUX1BQX0xPQ0FMX1MpIDw9IG4gJiYgKE5ETkJPT1NUX1BQX0xPQ0FMX0YpID49IG4KLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xPQ0FMX1IobikgKE5ETkJPT1NUX1BQX0xPQ0FMX0YpIDw9IG4gJiYgKE5ETkJPT1NUX1BQX0xPQ0FMX1MpID49IG4KLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9zZWxmLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9zZWxmLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTUxMmY4ZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vc2VsZi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0lURVJBVElPTl9TRUxGX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0lURVJBVElPTl9TRUxGX0hQUAotIwotIyAvKiBORE5CT09TVF9QUF9JTkNMVURFX1NFTEYgKi8KLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0lOQ0xVREVfU0VMRigpIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2RldGFpbC9zZWxmLmhwcD4KLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvYWR0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvYWR0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDcyNTQxYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9saXN0L2FkdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MyArMCwwIEBACi0jIC8qIENvcHlyaWdodCAoQykgMjAwMQotIyAgKiBIb3VzZW1hcnF1ZSBPeQotIyAgKiBodHRwOi8vd3d3LmhvdXNlbWFycXVlLmNvbQotIyAgKgotIyAgKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKgotIyAgKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0jICAqLwotIwotIyAvKiBSZXZpc2VkIGJ5IFBhdWwgTWVuc29uaWRlcyAoMjAwMikgKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9MSVNUX0FEVF9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9MSVNUX0FEVF9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZGV0YWlsL2lzX2JpbmFyeS5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9sb2dpY2FsL2NvbXBsLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL2VhdC5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX0xJU1RfQ09OUyAqLwotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9DT05TKGhlYWQsIHRhaWwpIChoZWFkLCB0YWlsKQotIwotIyAvKiBORE5CT09TVF9QUF9MSVNUX05JTCAqLwotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9OSUwgTkROQk9PU1RfUFBfTklMCi0jCi0jIC8qIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QgKi8KLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobGlzdCkgTkROQk9PU1RfUFBfTElTVF9GSVJTVF9EKGxpc3QpCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19NV0NDKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRklSU1RfRChsaXN0KSBORE5CT09TVF9QUF9MSVNUX0ZJUlNUX0kgbGlzdAotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZJUlNUX0QobGlzdCkgTkROQk9PU1RfUFBfTElTVF9GSVJTVF9JICMjIGxpc3QKLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRklSU1RfSShoZWFkLCB0YWlsKSBoZWFkCi0jCi0jIC8qIE5ETkJPT1NUX1BQX0xJU1RfUkVTVCAqLwotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9SRVNUKGxpc3QpIE5ETkJPT1NUX1BQX0xJU1RfUkVTVF9EKGxpc3QpCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19NV0NDKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfUkVTVF9EKGxpc3QpIE5ETkJPT1NUX1BQX0xJU1RfUkVTVF9JIGxpc3QKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9SRVNUX0QobGlzdCkgTkROQk9PU1RfUFBfTElTVF9SRVNUX0kgIyMgbGlzdAotIyBlbmRpZgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9SRVNUX0koaGVhZCwgdGFpbCkgdGFpbAotIwotIyAvKiBORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMgKi8KLSMKLSMgaWYgTkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfQkNDKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsaXN0KSBORE5CT09TVF9QUF9MSVNUX0lTX0NPTlNfRChsaXN0KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9JU19DT05TX0QobGlzdCkgTkROQk9PU1RfUFBfTElTVF9JU19DT05TXyAjIyBsaXN0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0lTX0NPTlNfKGhlYWQsIHRhaWwpIDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OU19ORE5CT09TVF9QUF9OSUwgMAotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobGlzdCkgTkROQk9PU1RfUFBfSVNfQklOQVJZKGxpc3QpCi0jIGVuZGlmCi0jCi0jIC8qIE5ETkJPT1NUX1BQX0xJU1RfSVNfTklMICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19CQ0MoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9JU19OSUwobGlzdCkgTkROQk9PU1RfUFBfQ09NUEwoTkROQk9PU1RfUFBfSVNfQklOQVJZKGxpc3QpKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0lTX05JTChsaXN0KSBORE5CT09TVF9QUF9DT01QTChORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobGlzdCkpCi0jIGVuZGlmCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9saXN0L2FwcGVuZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9saXN0L2FwcGVuZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE0ZjAxOGEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9hcHBlbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotIyAvKiBDb3B5cmlnaHQgKEMpIDIwMDEKLSMgICogSG91c2VtYXJxdWUgT3kKLSMgICogaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20KLSMgICoKLSMgICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICovCi0jCi0jIC8qIFJldmlzZWQgYnkgUGF1bCBNZW5zb25pZGVzICgyMDAyKSAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfTElTVF9BUFBFTkRfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfTElTVF9BUFBFTkRfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvZm9sZF9yaWdodC5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX0xJU1RfQVBQRU5EICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9BUFBFTkQoYSwgYikgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUKE5ETkJPT1NUX1BQX0xJU1RfQVBQRU5EX08sIGIsIGEpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfQVBQRU5EKGEsIGIpIE5ETkJPT1NUX1BQX0xJU1RfQVBQRU5EX0koYSwgYikKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfQVBQRU5EX0koYSwgYikgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUKE5ETkJPT1NUX1BQX0xJU1RfQVBQRU5EX08sIGIsIGEpCi0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0FQUEVORF9PKGQsIHMsIHgpICh4LCBzKQotIwotIyAvKiBORE5CT09TVF9QUF9MSVNUX0FQUEVORF9EICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9BUFBFTkRfRChkLCBhLCBiKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfICMjIGQoTkROQk9PU1RfUFBfTElTVF9BUFBFTkRfTywgYiwgYSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9BUFBFTkRfRChkLCBhLCBiKSBORE5CT09TVF9QUF9MSVNUX0FQUEVORF9EX0koZCwgYSwgYikKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfQVBQRU5EX0RfSShkLCBhLCBiKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfICMjIGQoTkROQk9PU1RfUFBfTElTVF9BUFBFTkRfTywgYiwgYSkKLSMgZW5kaWYKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvZGV0YWlsL2RtYy9mb2xkX2xlZnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9kZXRhaWwvZG1jL2ZvbGRfbGVmdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM0MDg4YjIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9kZXRhaWwvZG1jL2ZvbGRfbGVmdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNzkgKzAsMCBAQAotIyAvKiBDb3B5cmlnaHQgKEMpIDIwMDEKLSMgICogSG91c2VtYXJxdWUgT3kKLSMgICogaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20KLSMgICoKLSMgICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICovCi0jCi0jIC8qIFJldmlzZWQgYnkgUGF1bCBNZW5zb25pZGVzICgyMDAyKSAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfTElTVF9ERVRBSUxfRk9MRF9MRUZUX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0xJU1RfREVUQUlMX0ZPTERfTEVGVF9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvZXhwcl9paWYuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9paWYuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9hZHQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvZWxlbS5ocHA+Ci0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzUsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoNSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzUobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzgsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoOCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzgobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxMCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDExLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTEobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTIsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxMywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTUsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxNiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTcobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTgsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxOSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDIwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjAobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjEsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyMiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDIzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjMobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyNSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI2LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDI2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjYobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjcsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yOCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyOCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI5LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDI5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjkobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzAsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMzAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zMChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zMSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgzMSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzMxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzMyLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDMyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzIobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzMsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMzMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zMyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zNCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgzNCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM1LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDM1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzUobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzYsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMzYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zNihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zNywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgzNywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM4LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDM4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzgobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMzksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zOShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80MCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg0MCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQxLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDQxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDEobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDIsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoNDIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80MihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80MywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg0MywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ0LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDQ0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDQobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDUsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoNDUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80NShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80NiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg0NiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ3LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDQ3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDcobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDgsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoNDgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80OChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80OSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg0OSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzUwLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDUwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTAobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTEsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoNTEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81MShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81MiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg1MiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzUyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzUzLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDUzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTMobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTQsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoNTQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81NChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81NSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg1NSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU2LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDU2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTYobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTcsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoNTcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81NyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81OCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg1OCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU5LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDU5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTkobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjAsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoNjAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82MChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82MSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg2MSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzYxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzYyLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDYyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjIobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjMsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoNjMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82MyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82NCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg2NCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY1LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDY1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjUobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjYsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoNjYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82NihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82NywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg2NywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY4LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDY4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjgobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoNjksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82OShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83MCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg3MCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzcwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzcxLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDcxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzEobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzIsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoNzIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83MihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83MywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg3MywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzczKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc0LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDc0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzQobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzUsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoNzUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83NShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83NiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg3NiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc3LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDc3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzcobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzgsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoNzgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83OChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83OSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg3OSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzgwLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDgwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODAobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODEsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoODEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84MShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84MiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg4MiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzgyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzgzLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDgzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODMobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODQsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoODQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84NChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84NSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg4NSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg2LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDg2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODYobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODcsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoODcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84NyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84OCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg4OCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg5LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDg5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODkobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTAsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoOTAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85MChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85MSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg5MSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzkxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzkyLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDkyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTIobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTMsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoOTMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85MyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85NCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg5NCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk1LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDk1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTUobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTYsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoOTYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85NihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85NywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSg5NywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk4LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDk4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTgobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoOTksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85OShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDAsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTAwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTAwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwMSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxMDEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDEobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTAyLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDEwMiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwMihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDMsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTAzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTAzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwNCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxMDQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDQobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA1LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDEwNSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwNShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDYsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTA2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwNywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxMDcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDcobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA4LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDEwOCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwOChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTA5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExMCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxMTAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTAobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTExLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDExMSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExMShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTIsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTEyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTEyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExMywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxMTMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTMobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE0LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDExNCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExNChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTUsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTE1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExNiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxMTYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTYobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE3LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDExNywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExNyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTgsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTE4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExOSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxMTksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTkobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTIwLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDEyMCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyMChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjEsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTIxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTIxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyMiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxMjIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjIobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTIzLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDEyMywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyMyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjQsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTI0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyNSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxMjUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjUobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI2LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDEyNiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyNihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjcsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTI3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyOCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxMjgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjgobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI5LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDEyOSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyOShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzAsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTMwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTMwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzMSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxMzEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzEobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTMyLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDEzMiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzMihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzMsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTMzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTMzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzNCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxMzQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzQobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM1LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDEzNSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzNShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzYsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTM2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzNywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxMzcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzcobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM4LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDEzOCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzOChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTM5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0MCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxNDAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDAobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQxLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE0MSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0MShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDIsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTQyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0MywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxNDMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDMobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ0LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE0NCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0NChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDUsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTQ1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0NiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxNDYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDYobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ3LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE0NywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0NyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDgsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTQ4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0OSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxNDksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDkobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTUwLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE1MCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1MChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTEsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTUxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTUxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1MiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxNTIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTIobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTUzLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE1MywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1MyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTQsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTU0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1NSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxNTUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTUobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU2LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE1NiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1NihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTcsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTU3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1OCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxNTgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTgobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU5LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE1OSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1OShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjAsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTYwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTYwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2MSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxNjEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjEobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTYyLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE2MiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2MihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjMsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTYzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTYzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2NCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxNjQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjQobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY1LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE2NSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2NShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjYsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTY2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2NywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxNjcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjcobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY4LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE2OCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2OChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTY5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3MCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxNzAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzAobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTcxLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE3MSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3MShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzIsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTcyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTcyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3MywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxNzMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzMobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc0LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE3NCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3NChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzUsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTc1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3NiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxNzYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzYobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc3LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE3NywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3NyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzgsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTc4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3OSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxNzksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzkobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTgwLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE4MCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4MChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODEsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTgxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTgxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4MiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxODIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODIobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTgzLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE4MywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4MyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODQsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTg0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4NSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxODUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODUobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg2LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE4NiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4NihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODcsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTg3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4OCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxODgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODgobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg5LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE4OSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4OShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTAsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTkwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTkwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5MSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxOTEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTEobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTkyLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE5MiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5MihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTMsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTkzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTkzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5NCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxOTQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTQobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk1LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE5NSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5NShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTYsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTk2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5NywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgxOTcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTcobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk4LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDE5OCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5OChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMTk5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwMCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyMDAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDAobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjAxLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDIwMSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwMShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDIsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjAyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjAyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwMywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyMDMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDMobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA0LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDIwNCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwNChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDUsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjA1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwNiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyMDYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDYobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA3LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDIwNywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwNyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDgsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjA4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwOSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyMDksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDkobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjEwLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDIxMCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxMChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTEsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjExLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjExKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxMiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyMTIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTIobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjEzLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDIxMywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxMyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTQsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjE0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxNSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyMTUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTUobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE2LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDIxNiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxNihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTcsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjE3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxOCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyMTgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTgobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE5LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDIxOSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxOShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjAsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjIwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjIwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyMSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyMjEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjEobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjIyLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDIyMiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyMihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjMsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjIzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjIzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyNCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyMjQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjQobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI1LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDIyNSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyNShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjYsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjI2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyNywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyMjcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjcobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI4LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDIyOCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyOChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjI5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzMCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyMzAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzAobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjMxLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDIzMSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzMShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzIsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjMyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjMyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzMywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyMzMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzMobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM0LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDIzNCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzNChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzUsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjM1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzNiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyMzYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzYobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM3LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDIzNywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzNyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzgsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjM4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzOSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyMzksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzkobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQwLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDI0MCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0MChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDEsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjQxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0MiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyNDIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDIobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQzLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDI0MywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0MyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDQsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjQ0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0NSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyNDUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDUobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ2LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDI0NiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0NihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDcsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjQ3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0OCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyNDgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDgobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ5LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDI0OSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0OShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTAsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjUwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjUwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1MSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyNTEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTEobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjUyLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDI1MiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1MihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTMsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjUzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjUzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1NCwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyNTQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTQobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjU1LCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkobywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKDI1NSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1NShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTYsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKShvLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMSkoMjU2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjU2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1NywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zXzEpKG8sIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fM18xKSgyNTcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9saXN0L2RldGFpbC9lZGcvZm9sZF9sZWZ0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvZGV0YWlsL2VkZy9mb2xkX2xlZnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMzU2MTg2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvZGV0YWlsL2VkZy9mb2xkX2xlZnQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTM2ICswLDAgQEAKLSMgLyogQ29weXJpZ2h0IChDKSAyMDAxCi0jICAqIEhvdXNlbWFycXVlIE95Ci0jICAqIGh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tCi0jICAqCi0jICAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqLwotIwotIyAvKiBSZXZpc2VkIGJ5IFBhdWwgTWVuc29uaWRlcyAoMjAwMikgKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0xJU1RfREVUQUlMX0VER19GT0xEX0xFRlRfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfTElTVF9ERVRBSUxfRURHX0ZPTERfTEVGVF9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvZXhwcl9paWYuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9paWYuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9hZHQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvZWF0LmhwcD4KLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzJfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzVfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfN19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzhfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI2X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI3X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI4X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI5X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzMwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzMwX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzMxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzMxX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzMyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzMyX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzMzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzMzX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM0X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM1X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM2X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM3X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM4X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM5X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQwX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQxX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQyX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQzX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ0X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ1X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ2X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ3X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ4X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ5X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzUwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzUwX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzUxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzUxX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzUyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzUyX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzUzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzUzX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU0X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU1X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU2X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU3X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU4X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU5X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzYwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzYwX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzYxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzYxX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzYyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzYyX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzYzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzYzX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY0X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY1X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY2X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY3X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY4X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY5X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzcwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzcwX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzcxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzcxX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzcyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzcyX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzczKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzczX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc0X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc1X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc2X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc3X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc4X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc5X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzgwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzgwX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzgxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzgxX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzgyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzgyX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzgzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzgzX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg0X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg1X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg2X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg3X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg4X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg5X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzkwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzkwX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzkxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzkxX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzkyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzkyX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzkzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzkzX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk0X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk1X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk2X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk3X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk4X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk5X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwMChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDBfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTAxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwMV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTAyX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwMyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDNfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwNF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA1X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwNihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDZfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwN19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA4X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwOShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDlfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTEwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExMF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTExX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExMihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTJfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTEzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExM19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE0X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExNShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTVfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExNl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE3X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExOChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMThfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExOV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTIwX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyMShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjFfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTIyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyMl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTIzX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyNChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjRfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyNV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI2X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyNyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjdfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyOF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI5X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzMChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzBfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTMxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzMV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTMyX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzMyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzNfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzNF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM1X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzNihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzZfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzN19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM4X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzOShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzlfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0MF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQxX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0MihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDJfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0M19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ0X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0NShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDVfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0Nl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ3X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0OChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDhfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0OV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTUwX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1MShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTFfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTUyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1Ml9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTUzX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1NChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTRfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1NV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU2X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1NyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTdfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1OF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU5X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2MChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjBfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTYxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2MV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTYyX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2MyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjNfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2NF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY1X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2NihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjZfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2N19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY4X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2OShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjlfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTcwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3MF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTcxX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3MihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzJfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTczKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3M19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc0X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3NShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzVfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3Nl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc3X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3OChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzhfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3OV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTgwX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4MShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODFfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTgyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4Ml9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTgzX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4NChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODRfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4NV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg2X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4NyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODdfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4OF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg5X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5MChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTBfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTkxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5MV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTkyX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5MyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTNfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5NF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk1X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5NihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTZfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5N19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk4X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5OShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTlfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjAwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwMF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjAxX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwMihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDJfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjAzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwM19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA0X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwNShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDVfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwNl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA3X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwOChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDhfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwOV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjEwX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxMShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTFfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjEyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxMl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjEzX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxNChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTRfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxNV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE2X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxNyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTdfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxOF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE5X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyMChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjBfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjIxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyMV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjIyX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyMyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjNfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyNF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI1X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyNihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjZfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyN19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI4X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyOShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjlfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjMwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzMF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjMxX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzMihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzJfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjMzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzM19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM0X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzNShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzVfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzNl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM3X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzOChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzhfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzOV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQwX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0MShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDFfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0Ml9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQzX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0NChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDRfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0NV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ2X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0NyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDdfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0OF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ5X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1MChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTBfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjUxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1MV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjUyX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1MyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTNfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjU0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1NF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjU1X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1NihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTZfRChvLCBzLCBsKQotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzJfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzVfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfN19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoOCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzhfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDExLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTFfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xM19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTRfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTdfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxOCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjBfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjNfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyNCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDI2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjZfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyNywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI3X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yOF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDI5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjlfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zMCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgzMCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzMwX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMzEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zMV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzMyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDMyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzJfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgzMywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzMzX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMzQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zNF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDM1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzVfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgzNiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM2X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMzcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zN19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDM4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzhfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgzOSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM5X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNDAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80MF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDQxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDFfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg0MiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQyX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNDMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80M19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDQ0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDRfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg0NSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ1X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNDYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80Nl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDQ3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDdfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg0OCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ4X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNDksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80OV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzUwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDUwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTBfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg1MSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzUxX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNTIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81Ml9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzUzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDUzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTNfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg1NCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU0X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNTUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81NV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDU2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTZfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg1NywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU3X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNTgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81OF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDU5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTlfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg2MCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzYwX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNjEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82MV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzYyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDYyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjJfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg2MywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzYzX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNjQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82NF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDY1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjVfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg2NiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY2X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNjcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82N19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDY4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjhfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg2OSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY5X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNzAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83MF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzcxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDcxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzFfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg3MiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzcyX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNzMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83M19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDc0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzRfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg3NSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc1X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNzYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83Nl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDc3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzdfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg3OCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc4X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNzksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83OV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzgwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDgwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODBfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg4MSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzgxX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoODIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84Ml9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzgzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDgzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODNfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg4NCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg0X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoODUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84NV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDg2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODZfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg4NywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg3X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoODgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84OF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDg5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODlfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg5MCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzkwX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoOTEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85MV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzkyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDkyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTJfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg5MywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzkzX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoOTQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85NF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDk1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTVfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg5NiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk2X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoOTcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85N19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDk4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOThfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg5OSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk5X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTAwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEwMCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwMF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwMSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMDEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDFfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTAyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTAyX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTAzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEwMywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwM19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMDQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDRfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTA1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA1X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEwNiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwNl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMDcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDdfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTA4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA4X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEwOSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwOV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExMCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMTAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTBfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTExLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTExX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTEyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDExMiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExMl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMTMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTNfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTE0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE0X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDExNSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExNV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMTYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTZfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTE3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE3X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDExOCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExOF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMTksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTlfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTIwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTIwX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTIxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEyMSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyMV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMjIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjJfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTIzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTIzX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEyNCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyNF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMjUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjVfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTI2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI2X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEyNywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyN19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMjgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjhfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTI5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI5X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTMwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEzMCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzMF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzMSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMzEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzFfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTMyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTMyX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTMzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEzMywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzM19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMzQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzRfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTM1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM1X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEzNiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzNl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMzcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzdfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTM4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM4X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEzOSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzOV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNDAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDBfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTQxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQxX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE0MiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0Ml9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNDMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDNfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTQ0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ0X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE0NSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0NV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNDYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDZfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTQ3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ3X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE0OCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0OF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNDksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDlfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTUwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTUwX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTUxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE1MSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1MV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNTIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTJfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTUzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTUzX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE1NCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1NF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNTUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTVfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTU2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU2X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE1NywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1N19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNTgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNThfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTU5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU5X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTYwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE2MCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2MF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNjEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjFfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTYyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTYyX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTYzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE2MywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2M19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNjQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjRfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTY1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY1X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE2NiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2Nl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNjcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjdfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTY4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY4X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE2OSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2OV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNzAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzBfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTcxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTcxX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTcyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE3MiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3Ml9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNzMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzNfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTc0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc0X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE3NSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3NV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNzYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzZfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTc3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc3X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE3OCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3OF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNzksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzlfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTgwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTgwX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTgxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE4MSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4MV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxODIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODJfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTgzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTgzX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE4NCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4NF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxODUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODVfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTg2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg2X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE4NywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4N19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxODgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODhfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTg5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg5X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTkwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE5MCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5MF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxOTEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTFfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTkyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTkyX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTkzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE5MywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5M19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxOTQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTRfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTk1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk1X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE5NiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5Nl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxOTcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTdfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTk4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk4X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE5OSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5OV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwMCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMDAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDBfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjAxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjAxX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjAyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIwMiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwMl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMDMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDNfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjA0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA0X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIwNSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwNV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMDYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDZfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjA3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA3X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIwOCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwOF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMDksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDlfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjEwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjEwX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjExLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIxMSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxMV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMTIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTJfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjEzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjEzX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIxNCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxNF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMTUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTVfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjE2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE2X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIxNywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxN19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMTgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMThfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjE5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE5X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjIwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIyMCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyMF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyMSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMjEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjFfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjIyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjIyX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjIzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIyMywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyM19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMjQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjRfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjI1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI1X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIyNiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyNl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMjcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjdfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjI4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI4X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIyOSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyOV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzMCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMzAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzBfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjMxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjMxX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjMyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIzMiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzMl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMzMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzNfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjM0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM0X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIzNSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzNV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMzYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzZfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjM3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM3X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIzOCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzOF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMzksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzlfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjQwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQwX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDI0MSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0MV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyNDIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDJfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjQzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQzX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDI0NCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0NF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyNDUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDVfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjQ2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ2X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDI0NywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0N19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyNDgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDhfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjQ5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ5X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjUwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDI1MCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1MF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyNTEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTFfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjUyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjUyX0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjUzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDI1MywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1M19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyNTQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTRfRChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjU1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjU1X0QobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjU2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDI1NiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1Nl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyNTcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9saXN0L2RldGFpbC9lZGcvZm9sZF9yaWdodC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9saXN0L2RldGFpbC9lZGcvZm9sZF9yaWdodC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk2Nzc2YWYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9kZXRhaWwvZWRnL2ZvbGRfcmlnaHQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzk0ICswLDAgQEAKLSMgLyogQ29weXJpZ2h0IChDKSAyMDAxCi0jICAqIEhvdXNlbWFycXVlIE95Ci0jICAqIGh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tCi0jICAqCi0jICAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqLwotIwotIyAvKiBSZXZpc2VkIGJ5IFBhdWwgTWVuc29uaWRlcyAoMjAwMikgKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0xJU1RfREVUQUlMX0VER19GT0xEX1JJR0hUX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0xJU1RfREVUQUlMX0VER19GT0xEX1JJR0hUX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9paWYuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9hZHQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvZWF0LmhwcD4KLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTBfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTNfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTZfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xN19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTlfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjJfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yM19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjVfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI3X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yOChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjhfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yOV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzMwX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zMShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzFfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzMyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zMl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzMzX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zNChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzRfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzM1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zNV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzM2X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zNyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzdfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzM4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zOF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzM5X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80MChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDBfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzQxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80MV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzQyX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80MyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDNfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzQ0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80NF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzQ1X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80NihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDZfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzQ3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80N19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzQ4X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80OShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDlfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzUwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81MF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzUxX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81MihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTJfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzUzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81M19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzU0X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81NShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTVfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzU2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81Nl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzU3X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81OChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNThfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzU5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81OV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzYwX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82MShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjFfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzYyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82Ml9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzYzX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82NChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjRfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzY1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82NV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzY2X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82NyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjdfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzY4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82OF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzY5X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83MChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzBfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzcxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83MV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzcyX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83MyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzNfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzc0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83NF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzc1X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83NihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzZfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzc3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83N19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzc4X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83OShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzlfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzgwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84MF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzgxX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84MihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODJfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzgzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84M19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzg0X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84NShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODVfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzg2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84Nl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzg3X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84OChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODhfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzg5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84OV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzkwX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85MShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTFfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzkyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85Ml9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzkzX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85NChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTRfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzk1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85NV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzk2X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85NyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTdfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzk4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85OF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzk5X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMDAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwMF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTAxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMDFfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwMihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTAyX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMDMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwM19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTA0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMDRfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwNShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTA1X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMDYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwNl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTA3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMDdfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwOChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTA4X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMDkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwOV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTEwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMTBfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExMShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTExX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMTIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExMl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTEzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMTNfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExNChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTE0X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMTUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExNV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTE2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMTZfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExNyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTE3X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMTgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExOF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTE5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMTlfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyMChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTIwX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMjEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyMV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTIyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMjJfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyMyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTIzX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMjQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyNF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTI1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMjVfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyNihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTI2X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMjcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyN19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTI4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMjhfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyOShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTI5X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMzAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzMF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTMxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMzFfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzMihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTMyX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMzMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzM19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTM0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMzRfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzNShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTM1X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMzYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzNl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTM3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMzdfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzOChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTM4X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMzkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzOV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTQwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNDBfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0MShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTQxX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNDIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0Ml9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTQzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNDNfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0NChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTQ0X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNDUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0NV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTQ2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNDZfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0NyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTQ3X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNDgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0OF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTQ5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNDlfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1MChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTUwX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNTEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1MV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTUyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNTJfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1MyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTUzX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNTQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1NF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTU1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNTVfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1NihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTU2X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNTcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1N19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTU4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNThfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1OShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTU5X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNjAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2MF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTYxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNjFfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2MihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTYyX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNjMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2M19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTY0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNjRfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2NShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTY1X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNjYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2Nl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTY3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNjdfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2OChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTY4X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNjkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2OV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTcwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNzBfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3MShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTcxX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNzIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3Ml9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTczKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNzNfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3NChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTc0X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNzUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3NV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTc2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNzZfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3NyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTc3X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNzgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3OF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTc5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNzlfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4MChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTgwX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xODEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4MV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTgyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xODJfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4MyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTgzX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xODQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4NF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTg1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xODVfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4NihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTg2X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xODcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4N19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTg4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xODhfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4OShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTg5X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOTAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5MF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTkxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOTFfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5MihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTkyX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOTMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5M19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTk0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOTRfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5NShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTk1X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOTYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5Nl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTk3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOTdfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5OChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTk4X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOTkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5OV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjAwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMDBfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwMShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjAxX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMDIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwMl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjAzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMDNfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwNChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjA0X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMDUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwNV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjA2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMDZfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwNyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjA3X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMDgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwOF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjA5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMDlfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxMChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjEwX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMTEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxMV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjEyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMTJfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxMyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjEzX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMTQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxNF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjE1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMTVfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxNihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjE2X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMTcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxN19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjE4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMThfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxOShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjE5X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMjAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyMF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjIxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMjFfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyMihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjIyX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMjMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyM19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjI0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMjRfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyNShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjI1X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMjYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyNl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjI3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMjdfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyOChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjI4X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMjkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyOV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjMwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMzBfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzMShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjMxX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMzIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzMl9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjMzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMzNfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzNChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjM0X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMzUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzNV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjM2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMzZfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzNyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjM3X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMzgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzOF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjM5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMzlfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0MChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjQwX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNDEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0MV9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjQyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNDJfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0MyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjQzX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNDQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0NF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjQ1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNDVfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0NihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjQ2X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNDcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0N19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjQ4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNDhfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0OShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjQ5X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNTAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1MF9EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjUxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNTFfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1MihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjUyX0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNTMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1M19EKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjU0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNTRfRChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1NShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjU1X0QobywgcywgbCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNTYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1Nl9EKG8sIHMsIGwpCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDMsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zLCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfM19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDQsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDUsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDYsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDcsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfN19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDgsIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDksIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85LCBORE5CT09TVF9QUF9OSUwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDEwLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTAsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDExLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTEsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDEyLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTIsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDEzLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTMsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xM19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE0LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTQsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE1LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTUsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE2LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTYsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE3LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTcsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xN19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE4LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTgsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE5LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTksIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIwLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjAsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIxLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjEsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIyLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjIsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIzLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjMsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yM19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDI0LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjQsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDI1LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjUsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDI2LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjYsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDI3LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjcsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yN19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDI4LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjgsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yOF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDI5LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjksIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yOV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDMwLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzAsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zMF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDMxLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzEsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zMV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDMyLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzIsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zMl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDMzLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzMsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zM19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDM0LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzQsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zNF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDM1LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzUsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zNV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDM2LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzYsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zNl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDM3LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzcsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zN19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDM4LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzgsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zOF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDM5LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzksIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zOV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDQwLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDAsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80MF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDQxLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDEsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80MV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDQyLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDIsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80Ml9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDQzLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDMsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80M19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDQ0LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDQsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80NF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDQ1LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDUsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80NV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDQ2LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDYsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80Nl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDQ3LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDcsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80N19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDQ4LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDgsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80OF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDQ5LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDksIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80OV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDUwLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTAsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81MF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDUxLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTEsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81MV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDUyLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTIsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81Ml9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDUzLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTMsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81M19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDU0LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTQsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81NF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDU1LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTUsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81NV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDU2LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTYsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81Nl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDU3LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTcsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81N19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDU4LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTgsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81OF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDU5LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTksIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81OV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDYwLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjAsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82MF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDYxLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjEsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82MV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDYyLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjIsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82Ml9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDYzLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjMsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82M19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDY0LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjQsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82NF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDY1LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjUsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82NV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDY2LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjYsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82Nl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDY3LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjcsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82N19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDY4LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjgsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82OF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDY5LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjksIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82OV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDcwLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzAsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83MF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDcxLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzEsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83MV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDcyLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzIsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83Ml9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDczLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzMsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83M19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDc0LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzQsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83NF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDc1LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzUsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83NV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDc2LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzYsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83Nl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDc3LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzcsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83N19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDc4LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzgsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83OF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDc5LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzksIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83OV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDgwLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODAsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84MF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDgxLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODEsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84MV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDgyLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODIsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84Ml9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDgzLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODMsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84M19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDg0LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODQsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84NF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDg1LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODUsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84NV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDg2LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODYsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84Nl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDg3LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODcsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84N19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDg4LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODgsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84OF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDg5LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODksIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84OV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDkwLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTAsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85MF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDkxLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTEsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85MV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDkyLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTIsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85Ml9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDkzLCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTMsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85M19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDk0LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTQsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85NF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDk1LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTUsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85NV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDk2LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTYsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85Nl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDk3LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTcsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85N19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDk4LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTgsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85OF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDk5LCBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTksIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85OV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDEwMCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwMCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwMF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDEwMSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwMSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwMV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDEwMiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwMiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwMl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDEwMywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwMywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwM19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDEwNCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwNCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwNF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDEwNSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwNSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwNV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDEwNiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwNiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwNl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDEwNywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwNywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwN19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDEwOCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwOCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwOF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDEwOSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwOSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwOV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDExMCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExMCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExMF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDExMSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExMSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExMV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDExMiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExMiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExMl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDExMywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExMywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExM19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDExNCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExNCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExNF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDExNSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExNSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExNV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDExNiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExNiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExNl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDExNywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExNywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExN19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDExOCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExOCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExOF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDExOSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExOSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExOV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDEyMCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyMCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyMF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDEyMSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyMSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyMV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDEyMiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyMiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyMl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDEyMywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyMywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyM19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDEyNCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyNCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyNF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDEyNSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyNSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyNV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDEyNiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyNiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyNl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDEyNywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyNywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyN19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDEyOCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyOCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyOF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDEyOSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyOSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyOV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDEzMCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzMCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzMF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDEzMSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzMSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzMV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDEzMiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzMiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzMl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDEzMywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzMywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzM19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDEzNCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzNCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzNF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDEzNSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzNSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzNV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDEzNiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzNiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzNl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDEzNywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzNywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzN19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDEzOCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzOCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzOF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDEzOSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzOSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzOV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE0MCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0MCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0MF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE0MSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0MSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0MV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE0MiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0MiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0Ml9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE0MywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0MywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0M19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE0NCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0NCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0NF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE0NSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0NSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0NV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE0NiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0NiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0Nl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE0NywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0NywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0N19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE0OCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0OCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0OF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE0OSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0OSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0OV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE1MCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1MCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1MF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE1MSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1MSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1MV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE1MiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1MiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1Ml9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE1MywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1MywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1M19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE1NCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1NCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1NF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE1NSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1NSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1NV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE1NiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1NiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1Nl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE1NywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1NywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1N19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE1OCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1OCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1OF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE1OSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1OSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1OV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE2MCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2MCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2MF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE2MSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2MSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2MV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE2MiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2MiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2Ml9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE2MywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2MywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2M19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE2NCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2NCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2NF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE2NSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2NSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2NV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE2NiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2NiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2Nl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE2NywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2NywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2N19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE2OCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2OCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2OF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE2OSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2OSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2OV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE3MCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3MCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3MF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE3MSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3MSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3MV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE3MiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3MiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3Ml9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE3MywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3MywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3M19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE3NCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3NCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3NF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE3NSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3NSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3NV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE3NiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3NiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3Nl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE3NywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3NywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3N19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE3OCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3OCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3OF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE3OSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3OSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3OV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE4MCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4MCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4MF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE4MSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4MSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4MV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE4MiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4MiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4Ml9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE4MywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4MywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4M19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE4NCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4NCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4NF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE4NSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4NSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4NV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE4NiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4NiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4Nl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE4NywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4NywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4N19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE4OCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4OCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4OF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE4OSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4OSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4OV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE5MCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5MCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5MF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE5MSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5MSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5MV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE5MiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5MiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5Ml9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE5MywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5MywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5M19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE5NCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5NCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5NF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE5NSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5NSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5NV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE5NiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5NiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5Nl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE5NywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5NywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5N19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE5OCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5OCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5OF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDE5OSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5OSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5OV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIwMCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwMCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwMF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIwMSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwMSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwMV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIwMiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwMiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwMl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIwMywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwMywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwM19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIwNCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwNCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwNF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIwNSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwNSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwNV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIwNiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwNiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwNl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIwNywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwNywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwN19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIwOCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwOCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwOF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIwOSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwOSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwOV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIxMCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxMCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxMF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIxMSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxMSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxMV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIxMiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxMiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxMl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIxMywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxMywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxM19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIxNCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxNCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxNF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIxNSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxNSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxNV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIxNiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxNiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxNl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIxNywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxNywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxN19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIxOCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxOCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxOF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIxOSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxOSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxOV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIyMCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyMCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyMF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIyMSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyMSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyMV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIyMiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyMiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyMl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIyMywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyMywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyM19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIyNCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyNCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyNF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIyNSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyNSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyNV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIyNiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyNiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyNl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIyNywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyNywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyN19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIyOCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyOCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyOF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIyOSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyOSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyOV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIzMCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzMCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzMF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIzMSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzMSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzMV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIzMiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzMiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzMl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIzMywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzMywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzM19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIzNCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzNCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzNF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIzNSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzNSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzNV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIzNiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzNiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzNl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIzNywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzNywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzN19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIzOCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzOCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzOF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIzOSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzOSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzOV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDI0MCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0MCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0MF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDI0MSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0MSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0MV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDI0MiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0MiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0Ml9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDI0MywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0MywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0M19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDI0NCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0NCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0NF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDI0NSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0NSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0NV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDI0NiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0NiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0Nl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDI0NywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0NywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0N19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDI0OCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0OCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0OF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDI0OSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0OSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0OV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDI1MCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1MCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1MF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDI1MSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1MSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1MV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDI1MiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1MiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1Ml9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDI1MywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1MywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1M19EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDI1NCwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1NCwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1NF9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDI1NSwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1NSwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1NV9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDI1NiwgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1NiwgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1Nl9EKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8sIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDI1NywgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1NywgTkROQk9PU1RfUFBfTklMIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX05JTCAxCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzQobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzcobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTEobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTQobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTcobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjAobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjMobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjYobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI4KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjkobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zMChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzMxKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzIobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zMyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzM0KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzUobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zNihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzM3KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzgobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zOShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzQwKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDEobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80MihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzQzKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDQobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80NShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzQ2KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDcobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80OChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzQ5KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTAobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81MShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzUyKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTMobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81NChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzU1KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTYobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81NyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzU4KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTkobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82MChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzYxKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjIobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82MyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzY0KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjUobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82NihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzY3KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjgobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82OShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzcwKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzEobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83MihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzczKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzQobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83NShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzc2KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzcobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83OChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzc5KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODAobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84MShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzgyKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODMobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84NChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzg1KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODYobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84NyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzg4KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODkobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85MChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzkxKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTIobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85MyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzk0KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTUobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85NihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzk3KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTgobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85OShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwMChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwMShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwMihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwMyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwNChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwNShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwNihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwNyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwOChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwOShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExMChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExMShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExMihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExMyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExNChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExNShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExNihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExNyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExOChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExOShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyMChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyMShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyMihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyMyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyNChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyNShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyNihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyNyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyOChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyOShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzMChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzMShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzMihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzMyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzNChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzNShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzNihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzNyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzOChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzOShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0MChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0MShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0MihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0MyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0NChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0NShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0NihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0NyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0OChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0OShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1MChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1MShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1MihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1MyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1NChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1NShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1NihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1NyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1OChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1OShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2MChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2MShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2MihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2MyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2NChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2NShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2NihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2NyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2OChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2OShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3MChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3MShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3MihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3MyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3NChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3NShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3NihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3NyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3OChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3OShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4MChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4MShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4MihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4MyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4NChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4NShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4NihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4NyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4OChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4OShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5MChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5MShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5MihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5MyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5NChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5NShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5NihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5NyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5OChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5OShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwMChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwMShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwMihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwMyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwNChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwNShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwNihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwNyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwOChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwOShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxMChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxMShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxMihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxMyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxNChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxNShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxNihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxNyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxOChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxOShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyMChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyMShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyMihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyMyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyNChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyNShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyNihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyNyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyOChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyOShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzMChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzMShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzMihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzMyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzNChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzNShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzNihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzNyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzOChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzOShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0MChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0MShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0MihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0MyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0NChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0NShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0NihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0NyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0OChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0OShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1MChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1MShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1MihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1MyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1NChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1NShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1NihvLCBzLCBsKSAwCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9saXN0L2RldGFpbC9mb2xkX2xlZnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9kZXRhaWwvZm9sZF9sZWZ0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTI5ODBmZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9saXN0L2RldGFpbC9mb2xkX2xlZnQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjc5ICswLDAgQEAKLSMgLyogQ29weXJpZ2h0IChDKSAyMDAxCi0jICAqIEhvdXNlbWFycXVlIE95Ci0jICAqIGh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tCi0jICAqCi0jICAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqLwotIwotIyAvKiBSZXZpc2VkIGJ5IFBhdWwgTWVuc29uaWRlcyAoMjAwMikgKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0xJU1RfREVUQUlMX0ZPTERfTEVGVF9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9MSVNUX0RFVEFJTF9GT0xEX0xFRlRfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2V4cHJfaWlmLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvaWlmLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvYWR0LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL2VhdC5ocHA+Ci0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzUobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoOCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzgobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDExLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTEobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTcobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxOSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjAobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjMobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyNSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDI2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjYobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyOCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDI5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjkobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMzAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zMChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zMSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgzMSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzMxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzMyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDMyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzIobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMzMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zMyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgzNCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDM1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzUobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMzYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zNihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgzNywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDM4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzgobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMzksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zOShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg0MCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDQxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDEobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNDIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80MihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg0MywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDQ0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDQobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNDUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80NShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg0NiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDQ3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDcobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNDgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80OChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg0OSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzUwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDUwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTAobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNTEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81MShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg1MiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzUyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzUzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDUzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTMobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNTQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81NChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg1NSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDU2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTYobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNTcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81NyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg1OCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDU5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTkobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNjAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82MChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg2MSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzYxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzYyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDYyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjIobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNjMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82MyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg2NCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDY1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjUobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNjYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82NihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg2NywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDY4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjgobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNjksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82OShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg3MCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzcwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzcxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDcxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzEobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNzIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83MihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg3MywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzczKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDc0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzQobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNzUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83NShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg3NiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDc3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzcobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoNzgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83OChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg3OSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzgwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDgwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODAobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoODEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84MShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg4MiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzgyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzgzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDgzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODMobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoODQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84NChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg4NSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDg2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODYobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoODcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84NyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg4OCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDg5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODkobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoOTAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85MChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg5MSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzkxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzkyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDkyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTIobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoOTMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85MyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg5NCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDk1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTUobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoOTYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85NihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSg5NywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDk4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTgobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoOTksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85OShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTAwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTAwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwMSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMDEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDEobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTAyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEwMiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwMihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTAzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTAzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMDQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDQobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEwNSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwNShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTA2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMDcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDcobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEwOCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwOChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTA5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExMCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMTAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTAobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTExLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDExMSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExMShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTEyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTEyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMTMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTMobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDExNCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExNChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTE1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMTYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTYobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDExNywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExNyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTE4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMTksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTkobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTIwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEyMCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyMChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTIxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTIxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMjIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjIobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTIzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEyMywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyMyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTI0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMjUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjUobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEyNiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyNihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTI3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMjgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjgobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEyOSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyOShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTMwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTMwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzMSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMzEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzEobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTMyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEzMiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzMihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTMzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTMzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMzQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzQobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEzNSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzNShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTM2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxMzcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzcobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDEzOCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzOChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTM5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNDAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDAobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE0MSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0MShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTQyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNDMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDMobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE0NCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0NChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTQ1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNDYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDYobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE0NywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0NyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTQ4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNDksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDkobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTUwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE1MCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1MChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTUxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTUxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNTIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTIobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTUzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE1MywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1MyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTU0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNTUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTUobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE1NiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1NihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTU3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNTgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTgobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE1OSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1OShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTYwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTYwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNjEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjEobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTYyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE2MiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2MihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTYzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTYzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNjQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjQobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE2NSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2NShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTY2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNjcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjcobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE2OCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2OChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTY5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3MCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNzAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzAobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTcxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE3MSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3MShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTcyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTcyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3MywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNzMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzMobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE3NCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3NChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTc1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3NiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNzYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzYobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE3NywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3NyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTc4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3OSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxNzksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzkobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTgwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE4MCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4MChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTgxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTgxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxODIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODIobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTgzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE4MywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4MyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTg0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxODUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODUobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE4NiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4NihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTg3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxODgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODgobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE4OSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4OShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTkwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTkwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxOTEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTEobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTkyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE5MiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5MihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTkzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTkzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxOTQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTQobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE5NSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5NShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTk2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgxOTcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTcobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDE5OCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5OChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMTk5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwMCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMDAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDAobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjAxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIwMSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwMShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjAyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjAyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMDMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDMobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIwNCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwNChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjA1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMDYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDYobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIwNywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwNyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjA4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMDksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDkobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjEwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIxMCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxMChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjExLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjExKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxMiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMTIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTIobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjEzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIxMywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxMyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjE0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxNSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMTUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTUobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIxNiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxNihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjE3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxOCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMTgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTgobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIxOSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxOShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjIwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjIwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyMSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMjEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjEobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjIyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIyMiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyMihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjIzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjIzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyNCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMjQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjQobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIyNSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyNShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjI2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyNywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMjcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjcobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI4LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIyOCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyOChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjksIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjI5LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzMCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMzAsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzAobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjMxLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIzMSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzMShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzIsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjMyLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjMyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzMywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMzMsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzMobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM0LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIzNCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzNChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzUsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjM1LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzNiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMzYsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzYobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM3LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDIzNywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzNyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzgsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjM4LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzOSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyMzksIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzkobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQwLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDI0MCwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0MChvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDEsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjQxLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0MiwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyNDIsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDIobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQzLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDI0MywgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0MyhvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDQsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjQ0LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0NSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyNDUsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDUobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ2LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDI0NiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0NihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDcsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjQ3LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0OCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyNDgsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDgobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ5LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDI0OSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0OShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTAsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjUwLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjUwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1MSwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyNTEsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTEobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjUyLCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDI1MiwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1MihvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTMsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjUzLCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjUzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1NCwgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyNTQsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTQobywgcywgbCkgTkROQk9PU1RfUFBfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjU1LCBzIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zKShvLCBORE5CT09TVF9QUF9FWFBSX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIG8pKDI1NSwgcywgTkROQk9PU1RfUFBfTElTVF9GSVJTVChsKSksIE5ETkJPT1NUX1BQX0xJU1RfUkVTVChsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1NShvLCBzLCBsKSBORE5CT09TVF9QUF9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTYsIHMgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKG8sIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX0xJU1RfSVNfQ09OUyhsKSwgbykoMjU2LCBzLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKSwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjU2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0lJRihORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCksIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1NywgcyBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykobywgTkROQk9PU1RfUFBfRVhQUl9JSUYoTkROQk9PU1RfUFBfTElTVF9JU19DT05TKGwpLCBvKSgyNTcsIHMsIE5ETkJPT1NUX1BQX0xJU1RfRklSU1QobCkpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QobCkpCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9saXN0L2RldGFpbC9mb2xkX3JpZ2h0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvZGV0YWlsL2ZvbGRfcmlnaHQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYTFmMDQ1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvZGV0YWlsL2ZvbGRfcmlnaHQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjc3ICswLDAgQEAKLSMgLyogQ29weXJpZ2h0IChDKSAyMDAxCi0jICAqIEhvdXNlbWFycXVlIE95Ci0jICAqIGh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tCi0jICAqCi0jICAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqLwotIwotIyAvKiBSZXZpc2VkIGJ5IFBhdWwgTWVuc29uaWRlcyAoMjAwMikgKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0xJU1RfREVUQUlMX0ZPTERfUklHSFRfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfTElTVF9ERVRBSUxfRk9MRF9SSUdIVF9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvZm9sZF9sZWZ0LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvcmV2ZXJzZS5ocHA+Ci0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDEsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMihvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzMobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMywgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDQsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg1LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzYobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoNiwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDcsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg4LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzkobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoOSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTAobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTAsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDExLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMihvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxMiwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTMobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTMsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE0LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxNSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTYobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTYsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE3LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxOCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTkobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTksIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDIwLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyMSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjIobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjIsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDIzLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyNCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjUobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjUsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI2KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDI2LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNyhvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyNywgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjgobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjgsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI5KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDI5LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zMChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zMChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgzMCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzEobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMzEsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzMyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzMyKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDMyLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zMyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zMyhvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgzMywgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzQobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMzQsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzM1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM1KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDM1LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zNihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zNihvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgzNiwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMzcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzcobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMzcsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzM4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzM4KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDM4LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8zOShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8zOShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgzOSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDAobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoNDAsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzQxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQxKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDQxLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80MihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80MihvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg0MiwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDMobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoNDMsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzQ0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ0KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDQ0LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80NShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80NShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg0NSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDYobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoNDYsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzQ3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzQ3KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDQ3LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF80OChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF80OChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg0OCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNDkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDkobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoNDksIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzUwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzUwKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDUwLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81MShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81MShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg1MSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTIobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoNTIsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzUzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzUzKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDUzLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81NChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81NChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg1NCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTUobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoNTUsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzU2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU2KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDU2LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF81NyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81NyhvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg1NywgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNTgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTgobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoNTgsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzU5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzU5KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDU5LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82MChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82MChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg2MCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjEobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoNjEsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzYyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzYyKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDYyLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82MyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82MyhvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg2MywgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjQobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoNjQsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzY1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY1KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDY1LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82NihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82NihvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg2NiwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNjcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjcobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoNjcsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzY4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzY4KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDY4LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF82OShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF82OShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg2OSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzAobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoNzAsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzcxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzcxKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDcxLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83MihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83MihvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg3MiwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzMobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoNzMsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzc0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc0KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDc0LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83NShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83NShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg3NSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzYobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoNzYsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzc3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzc3KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDc3LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF83OChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF83OChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg3OCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfNzkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzkobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoNzksIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzgwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzgwKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDgwLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84MShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84MShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg4MSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODIobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoODIsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzgzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzgzKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDgzLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84NChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84NChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg4NCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODUobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoODUsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzg2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg2KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDg2LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF84NyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84NyhvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg4NywgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfODgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODgobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoODgsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzg5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzg5KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDg5LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85MChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85MChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg5MCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTEobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoOTEsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzkyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzkyKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDkyLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85MyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85MyhvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg5MywgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTQobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoOTQsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzk1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk1KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDk1LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85NihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85NihvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg5NiwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfOTcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTcobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoOTcsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzk4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzk4KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDk4LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF85OShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF85OShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCg5OSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTAwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwMChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxMDAsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwMShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDEobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTAxLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMDIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTAyKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDEwMiwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTAzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwMyhvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxMDMsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwNChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDQobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTA0LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMDUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA1KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDEwNSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTA2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwNihvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxMDYsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEwNyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDcobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTA3LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMDgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA4KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDEwOCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTA5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwOShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxMDksIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExMChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTAobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTEwLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMTEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTExKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDExMSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTEyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExMihvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxMTIsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExMyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTMobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTEzLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMTQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE0KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDExNCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTE1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExNShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxMTUsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExNihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTYobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTE2LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMTcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE3KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDExNywgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTE4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExOChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxMTgsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzExOShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTkobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTE5LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMjAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTIwKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDEyMCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTIxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyMShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxMjEsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyMihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjIobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTIyLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMjMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTIzKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDEyMywgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTI0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyNChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxMjQsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyNShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjUobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTI1LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMjYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI2KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDEyNiwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTI3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyNyhvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxMjcsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEyOChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjgobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTI4LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMjkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI5KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDEyOSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTMwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzMChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxMzAsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzMShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzEobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTMxLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMzIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTMyKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDEzMiwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTMzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzMyhvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxMzMsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzNChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzQobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTM0LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMzUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM1KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDEzNSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTM2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzNihvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxMzYsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzEzNyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzcobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTM3LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xMzgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM4KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDEzOCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTM5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzOShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxMzksIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0MChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDAobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTQwLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNDEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQxKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE0MSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTQyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0MihvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxNDIsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0MyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDMobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTQzLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNDQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ0KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE0NCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTQ1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0NShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxNDUsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0NihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDYobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTQ2LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNDcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ3KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE0NywgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTQ4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0OChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxNDgsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE0OShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDkobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTQ5LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNTAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTUwKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE1MCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTUxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1MShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxNTEsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1MihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTIobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTUyLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNTMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTUzKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE1MywgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTU0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1NChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxNTQsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1NShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTUobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTU1LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNTYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU2KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE1NiwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTU3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1NyhvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxNTcsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE1OChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTgobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTU4LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNTkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU5KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE1OSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTYwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2MChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxNjAsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2MShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjEobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTYxLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNjIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTYyKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE2MiwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTYzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2MyhvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxNjMsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2NChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjQobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTY0LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNjUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY1KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE2NSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTY2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2NihvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxNjYsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE2NyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjcobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTY3LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNjgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY4KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE2OCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTY5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2OShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxNjksIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3MChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzAobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTcwLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNzEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTcxKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE3MSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTcyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3MihvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxNzIsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3MyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzMobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTczLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNzQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc0KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE3NCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTc1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3NShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxNzUsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3NihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzYobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTc2LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xNzcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc3KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE3NywgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTc4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3OChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxNzgsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE3OShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzkobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTc5LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xODAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTgwKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE4MCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTgxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4MShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxODEsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4MihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODIobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTgyLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xODMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTgzKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE4MywgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTg0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4NChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxODQsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4NShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODUobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTg1LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xODYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg2KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE4NiwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTg3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4NyhvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxODcsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE4OChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODgobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTg4LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xODkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg5KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE4OSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTkwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5MChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxOTAsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5MShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTEobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTkxLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOTIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTkyKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE5MiwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTkzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5MyhvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxOTMsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5NChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTQobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTk0LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOTUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk1KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE5NSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTk2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5NihvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxOTYsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzE5NyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTcobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMTk3LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8xOTgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk4KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDE5OCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMTk5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5OShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgxOTksIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwMChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDAobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjAwLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMDEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjAxKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDIwMSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjAyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwMihvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyMDIsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwMyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDMobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjAzLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMDQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA0KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDIwNCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjA1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwNShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyMDUsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwNihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDYobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjA2LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMDcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA3KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDIwNywgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjA4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwOChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyMDgsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIwOShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDkobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjA5LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMTAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjEwKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDIxMCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjExKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxMShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyMTEsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxMihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTIobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjEyLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMTMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjEzKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDIxMywgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjE0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxNChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyMTQsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxNShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTUobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjE1LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMTYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE2KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDIxNiwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjE3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxNyhvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyMTcsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIxOChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTgobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjE4LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMTkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE5KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDIxOSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjIwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyMChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyMjAsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyMShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjEobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjIxLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMjIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjIyKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDIyMiwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjIzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyMyhvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyMjMsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyNChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjQobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjI0LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMjUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI1KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDIyNSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjI2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyNihvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyMjYsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIyNyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjcobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjI3LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMjgobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI4KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDIyOCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjI5KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyOShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyMjksIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzMChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzAobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjMwLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMzEobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjMxKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDIzMSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjMyKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzMihvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyMzIsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzMyhvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzMobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjMzLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMzQobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM0KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDIzNCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjM1KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzNShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyMzUsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzNihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzYobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjM2LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yMzcobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM3KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDIzNywgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjM4KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzOChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyMzgsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzIzOShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzkobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjM5LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNDAobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQwKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDI0MCwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjQxKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0MShvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyNDEsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0MihvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDIobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjQyLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNDMobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQzKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDI0MywgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjQ0KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0NChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyNDQsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0NShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDUobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjQ1LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNDYobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ2KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDI0NiwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjQ3KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0NyhvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyNDcsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI0OChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDgobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjQ4LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNDkobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ5KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDI0OSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjUwKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1MChvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyNTAsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1MShvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTEobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjUxLCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNTIobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjUyKG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDI1MiwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjUzKG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1MyhvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyNTMsIGwpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzI1NChvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTQobywgcywgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QoMjU0LCBsKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNTUobywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjU1KG8sIHMsIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9EKDI1NSwgbCkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMjU2KG8sIHMsIGwpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1NihvLCBzLCBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRCgyNTYsIGwpKQotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9mb2xkX2xlZnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9mb2xkX2xlZnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYTZkM2I2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvZm9sZF9sZWZ0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMwMyArMCwwIEBACi0jIC8qIENvcHlyaWdodCAoQykgMjAwMQotIyAgKiBIb3VzZW1hcnF1ZSBPeQotIyAgKiBodHRwOi8vd3d3LmhvdXNlbWFycXVlLmNvbQotIyAgKgotIyAgKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKi8KLSMKLSMgLyogUmV2aXNlZCBieSBQYXVsIE1lbnNvbmlkZXMgKDIwMDIpICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9MSVNUX0ZPTERfTEVGVF9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9MSVNUX0ZPTERfTEVGVF9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL3doaWxlLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2RlYnVnL2Vycm9yLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2RldGFpbC9hdXRvX3JlYy5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUICovCi0jCi0jIGlmIDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUKG9wLCBzdGF0ZSwgbGlzdCkKLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8sIE5ETkJPT1NUX1BQX0FVVE9fUkVDKE5ETkJPT1NUX1BQX1dISUxFX1AsIDI1NikpCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTcobywgcywgbCkgTkROQk9PU1RfUFBfRVJST1IoMHgwMDA0KQotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfRChkLCBvLCBzLCBsKSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8gIyMgZChvLCBzLCBsKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMk5EIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yTkRfRCBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9ECi0jCi0jIGlmIE5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9saXN0L2RldGFpbC9lZGcvZm9sZF9sZWZ0LmhwcD4KLSMgZWxpZiBORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19ETUMoKQotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9kZXRhaWwvZG1jL2ZvbGRfbGVmdC5ocHA+Ci0jIGVsc2UKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvZGV0YWlsL2ZvbGRfbGVmdC5ocHA+Ci0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9OSUwgMQotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzMobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF81KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzYobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF84KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzkobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTAobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTEobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTIobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTMobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTUobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTYobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTcobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTgobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTkobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjAobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjEobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjIobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjMobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjUobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjYobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjcobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjgobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjkobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzAobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzEobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzIobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzMobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzQobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzUobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzYobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzcobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzgobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMzkobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDAobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDEobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDIobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDMobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDQobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDUobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDYobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDcobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDgobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNDkobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTAobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTEobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTIobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTMobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTQobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTUobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTYobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTcobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTgobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNTkobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjAobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjEobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjIobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjMobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjQobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjUobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjYobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjcobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjgobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNjkobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzAobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzEobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzIobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzMobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzQobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzUobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzYobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzcobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzgobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfNzkobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODAobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODEobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODIobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODMobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODQobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODUobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODYobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODcobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODgobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfODkobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTAobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTEobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTIobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTMobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTQobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTUobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTYobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTcobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTgobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfOTkobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTAwKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwMShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDIobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTAzKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwNChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDUobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA2KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEwNyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMDgobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTA5KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExMChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTEobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTEyKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExMyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTQobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE1KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExNihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMTcobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTE4KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzExOShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjAobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTIxKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyMihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjMobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI0KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyNShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjYobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTI3KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEyOChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMjkobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTMwKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzMShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzIobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTMzKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzNChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzUobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM2KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzEzNyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xMzgobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTM5KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0MChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDEobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQyKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0MyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDQobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ1KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0NihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNDcobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTQ4KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE0OShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTAobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTUxKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1MihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTMobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU0KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1NShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTYobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTU3KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE1OChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNTkobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTYwKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2MShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjIobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTYzKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2NChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjUobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY2KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE2NyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNjgobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTY5KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3MChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzEobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTcyKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3MyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzQobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc1KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3NihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xNzcobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTc4KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE3OShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODAobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTgxKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4MihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODMobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg0KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4NShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODYobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTg3KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE4OChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xODkobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTkwKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5MShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTIobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTkzKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5NChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTUobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk2KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzE5NyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8xOTgobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMTk5KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwMChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDEobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjAyKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwMyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDQobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA1KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwNihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMDcobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjA4KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIwOShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTAobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjExKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxMihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTMobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE0KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxNShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTYobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjE3KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIxOChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMTkobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjIwKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyMShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjIobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjIzKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyNChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjUobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI2KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIyNyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMjgobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjI5KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzMChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzEobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjMyKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzMyhvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzQobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM1KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzNihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yMzcobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjM4KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzIzOShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDAobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQxKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0MihvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDMobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ0KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0NShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDYobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjQ3KG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI0OChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNDkobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjUwKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1MShvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTIobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjUzKG8sIHMsIGwpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXzI1NChvLCBzLCBsKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8yNTUobywgcywgbCkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfTElTVF9GT0xEX0xFRlRfMjU2KG8sIHMsIGwpIDAKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvZm9sZF9yaWdodC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9saXN0L2ZvbGRfcmlnaHQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZDg1NTk3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvZm9sZF9yaWdodC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0jIC8qIENvcHlyaWdodCAoQykgMjAwMQotIyAgKiBIb3VzZW1hcnF1ZSBPeQotIyAgKiBodHRwOi8vd3d3LmhvdXNlbWFycXVlLmNvbQotIyAgKgotIyAgKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKi8KLSMKLSMgLyogUmV2aXNlZCBieSBQYXVsIE1lbnNvbmlkZXMgKDIwMDIpICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9MSVNUX0ZPTERfUklHSFRfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfTElTVF9GT0xEX1JJR0hUX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvd2hpbGUuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZGVidWcvZXJyb3IuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZGV0YWlsL2F1dG9fcmVjLmhwcD4KLSMKLSMgaWYgMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUKG9wLCBzdGF0ZSwgbGlzdCkKLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVCBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXywgTkROQk9PU1RfUFBfQVVUT19SRUMoTkROQk9PU1RfUFBfV0hJTEVfUCwgMjU2KSkKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8yNTcobywgcywgbCkgTkROQk9PU1RfUFBfRVJST1IoMHgwMDA0KQotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUX0QoZCwgbywgcywgbCkgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXyAjIyBkKG8sIHMsIGwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFRfMk5EIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVAotIyBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXzJORF9EIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF9ECi0jCi0jIGlmIE5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9saXN0L2RldGFpbC9lZGcvZm9sZF9yaWdodC5ocHA+Ci0jIGVsc2UKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvZGV0YWlsL2ZvbGRfcmlnaHQuaHBwPgotIyBlbmRpZgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9mb3JfZWFjaF9pLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvZm9yX2VhY2hfaS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwZWE0M2UuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9mb3JfZWFjaF9pLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAKLSMgLyogQ29weXJpZ2h0IChDKSAyMDAxCi0jICAqIEhvdXNlbWFycXVlIE95Ci0jICAqIGh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tCi0jICAqCi0jICAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqLwotIwotIyAvKiBSZXZpc2VkIGJ5IFBhdWwgTWVuc29uaWRlcyAoMjAwMikgKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0xJU1RfTElTVF9GT1JfRUFDSF9JX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0xJU1RfTElTVF9GT1JfRUFDSF9JX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9pbmMuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9saXN0L2FkdC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2Zvci5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9lbGVtLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL3JlbS5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX0xJU1RfRk9SX0VBQ0hfSSAqLwotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRURHKCkgJiYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX01TVkMoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT1JfRUFDSF9JKG1hY3JvLCBkYXRhLCBsaXN0KSBORE5CT09TVF9QUF9GT1IoKG1hY3JvLCBkYXRhLCBsaXN0LCAwKSwgTkROQk9PU1RfUFBfTElTVF9GT1JfRUFDSF9JX1AsIE5ETkJPT1NUX1BQX0xJU1RfRk9SX0VBQ0hfSV9PLCBORE5CT09TVF9QUF9MSVNUX0ZPUl9FQUNIX0lfTSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT1JfRUFDSF9JKG1hY3JvLCBkYXRhLCBsaXN0KSBORE5CT09TVF9QUF9MSVNUX0ZPUl9FQUNIX0lfSShtYWNybywgZGF0YSwgbGlzdCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9SX0VBQ0hfSV9JKG1hY3JvLCBkYXRhLCBsaXN0KSBORE5CT09TVF9QUF9GT1IoKG1hY3JvLCBkYXRhLCBsaXN0LCAwKSwgTkROQk9PU1RfUFBfTElTVF9GT1JfRUFDSF9JX1AsIE5ETkJPT1NUX1BQX0xJU1RfRk9SX0VBQ0hfSV9PLCBORE5CT09TVF9QUF9MSVNUX0ZPUl9FQUNIX0lfTSkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfU1RSSUNUKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9SX0VBQ0hfSV9QKHIsIHgpIE5ETkJPT1NUX1BQX0xJU1RfRk9SX0VBQ0hfSV9QX0QgeAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT1JfRUFDSF9JX1BfRChtLCBkLCBsLCBpKSBORE5CT09TVF9QUF9MSVNUX0lTX0NPTlMobCkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT1JfRUFDSF9JX1AociwgeCkgTkROQk9PU1RfUFBfTElTVF9JU19DT05TKE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oNCwgMiwgeCkpCi0jIGVuZGlmCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19NV0NDKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9SX0VBQ0hfSV9PKHIsIHgpIE5ETkJPT1NUX1BQX0xJU1RfRk9SX0VBQ0hfSV9PX0QgeAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT1JfRUFDSF9JX09fRChtLCBkLCBsLCBpKSAobSwgZCwgTkROQk9PU1RfUFBfTElTVF9SRVNUKGwpLCBORE5CT09TVF9QUF9JTkMoaSkpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9SX0VBQ0hfSV9PKHIsIHgpIChORE5CT09TVF9QUF9UVVBMRV9FTEVNKDQsIDAsIHgpLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDQsIDEsIHgpLCBORE5CT09TVF9QUF9MSVNUX1JFU1QoTkROQk9PU1RfUFBfVFVQTEVfRUxFTSg0LCAyLCB4KSksIE5ETkJPT1NUX1BQX0lOQyhORE5CT09TVF9QUF9UVVBMRV9FTEVNKDQsIDMsIHgpKSkKLSMgZW5kaWYKLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPUl9FQUNIX0lfTShyLCB4KSBORE5CT09TVF9QUF9MSVNUX0ZPUl9FQUNIX0lfTV9EKHIsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oNCwgMCwgeCksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oNCwgMSwgeCksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oNCwgMiwgeCksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oNCwgMywgeCkpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9SX0VBQ0hfSV9NKHIsIHgpIE5ETkJPT1NUX1BQX0xJU1RfRk9SX0VBQ0hfSV9NX0kociwgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzQgeCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9SX0VBQ0hfSV9NX0kociwgeF9lKSBORE5CT09TVF9QUF9MSVNUX0ZPUl9FQUNIX0lfTV9EKHIsIHhfZSkKLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9SX0VBQ0hfSV9NX0QociwgbSwgZCwgbCwgaSkgbShyLCBkLCBpLCBORE5CT09TVF9QUF9MSVNUX0ZJUlNUKGwpKQotIwotIyAvKiBORE5CT09TVF9QUF9MSVNUX0ZPUl9FQUNIX0lfUiAqLwotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRURHKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfRk9SX0VBQ0hfSV9SKHIsIG1hY3JvLCBkYXRhLCBsaXN0KSBORE5CT09TVF9QUF9GT1JfICMjIHIoKG1hY3JvLCBkYXRhLCBsaXN0LCAwKSwgTkROQk9PU1RfUFBfTElTVF9GT1JfRUFDSF9JX1AsIE5ETkJPT1NUX1BQX0xJU1RfRk9SX0VBQ0hfSV9PLCBORE5CT09TVF9QUF9MSVNUX0ZPUl9FQUNIX0lfTSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9GT1JfRUFDSF9JX1IociwgbWFjcm8sIGRhdGEsIGxpc3QpIE5ETkJPT1NUX1BQX0xJU1RfRk9SX0VBQ0hfSV9SX0kociwgbWFjcm8sIGRhdGEsIGxpc3QpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX0ZPUl9FQUNIX0lfUl9JKHIsIG1hY3JvLCBkYXRhLCBsaXN0KSBORE5CT09TVF9QUF9GT1JfICMjIHIoKG1hY3JvLCBkYXRhLCBsaXN0LCAwKSwgTkROQk9PU1RfUFBfTElTVF9GT1JfRUFDSF9JX1AsIE5ETkJPT1NUX1BQX0xJU1RfRk9SX0VBQ0hfSV9PLCBORE5CT09TVF9QUF9MSVNUX0ZPUl9FQUNIX0lfTSkKLSMgZW5kaWYKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvcmV2ZXJzZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9saXN0L3JldmVyc2UuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZjFlYWI1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvcmV2ZXJzZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0jIC8qIENvcHlyaWdodCAoQykgMjAwMQotIyAgKiBIb3VzZW1hcnF1ZSBPeQotIyAgKiBodHRwOi8vd3d3LmhvdXNlbWFycXVlLmNvbQotIyAgKgotIyAgKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKi8KLSMKLSMgLyogUmV2aXNlZCBieSBQYXVsIE1lbnNvbmlkZXMgKDIwMDIpICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9MSVNUX1JFVkVSU0VfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfTElTVF9SRVZFUlNFX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9saXN0L2ZvbGRfbGVmdC5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRSAqLwotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRURHKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRShsaXN0KSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVChORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfTywgTkROQk9PU1RfUFBfTklMLCBsaXN0KQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0UobGlzdCkgTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0kobGlzdCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9JKGxpc3QpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUKE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9PLCBORE5CT09TVF9QUF9OSUwsIGxpc3QpCi0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfTyhkLCBzLCB4KSAoeCwgcykKLSMKLSMgLyogTkROQk9PU1RfUFBfTElTVF9SRVZFUlNFX0QgKi8KLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRChkLCBsaXN0KSBORE5CT09TVF9QUF9MSVNUX0ZPTERfTEVGVF8gIyMgZChORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfTywgTkROQk9PU1RfUFBfTklMLCBsaXN0KQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRChkLCBsaXN0KSBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRF9JKGQsIGxpc3QpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX1JFVkVSU0VfRF9JKGQsIGxpc3QpIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9MRUZUXyAjIyBkKE5ETkJPT1NUX1BQX0xJU1RfUkVWRVJTRV9PLCBORE5CT09TVF9QUF9OSUwsIGxpc3QpCi0jIGVuZGlmCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9saXN0L3RyYW5zZm9ybS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9saXN0L3RyYW5zZm9ybS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUyZDU2NGUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC90cmFuc2Zvcm0uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotIyAvKiBDb3B5cmlnaHQgKEMpIDIwMDEKLSMgICogSG91c2VtYXJxdWUgT3kKLSMgICogaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20KLSMgICoKLSMgICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICovCi0jCi0jIC8qIFJldmlzZWQgYnkgUGF1bCBNZW5zb25pZGVzICgyMDAyKSAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfTElTVF9UUkFOU0ZPUk1fSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfTElTVF9UUkFOU0ZPUk1fSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvZm9sZF9yaWdodC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9lbGVtLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL3JlbS5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX0xJU1RfVFJBTlNGT1JNICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9UUkFOU0ZPUk0ob3AsIGRhdGEsIGxpc3QpIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMywgMiwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUKE5ETkJPT1NUX1BQX0xJU1RfVFJBTlNGT1JNX08sIChvcCwgZGF0YSwgTkROQk9PU1RfUFBfTklMKSwgbGlzdCkpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfVFJBTlNGT1JNKG9wLCBkYXRhLCBsaXN0KSBORE5CT09TVF9QUF9MSVNUX1RSQU5TRk9STV9JKG9wLCBkYXRhLCBsaXN0KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9UUkFOU0ZPUk1fSShvcCwgZGF0YSwgbGlzdCkgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgzLCAyLCBORE5CT09TVF9QUF9MSVNUX0ZPTERfUklHSFQoTkROQk9PU1RfUFBfTElTVF9UUkFOU0ZPUk1fTywgKG9wLCBkYXRhLCBORE5CT09TVF9QUF9OSUwpLCBsaXN0KSkKLSMgZW5kaWYKLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX1RSQU5TRk9STV9PKGQsIG9kciwgZWxlbSkgTkROQk9PU1RfUFBfTElTVF9UUkFOU0ZPUk1fT19EKGQsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMywgMCwgb2RyKSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgzLCAxLCBvZHIpLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDMsIDIsIG9kciksIGVsZW0pCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0xJU1RfVFJBTlNGT1JNX08oZCwgb2RyLCBlbGVtKSBORE5CT09TVF9QUF9MSVNUX1RSQU5TRk9STV9PX0koZCwgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzMgb2RyLCBlbGVtKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTElTVF9UUkFOU0ZPUk1fT19JKGQsIGltLCBlbGVtKSBORE5CT09TVF9QUF9MSVNUX1RSQU5TRk9STV9PX0QoZCwgaW0sIGVsZW0pCi0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX1RSQU5TRk9STV9PX0QoZCwgb3AsIGRhdGEsIHJlcywgZWxlbSkgKG9wLCBkYXRhLCAob3AoZCwgZGF0YSwgZWxlbSksIHJlcykpCi0jCi0jIC8qIE5ETkJPT1NUX1BQX0xJU1RfVFJBTlNGT1JNX0QgKi8KLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX1RSQU5TRk9STV9EKGQsIG9wLCBkYXRhLCBsaXN0KSBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDMsIDIsIE5ETkJPT1NUX1BQX0xJU1RfRk9MRF9SSUdIVF8gIyMgZChORE5CT09TVF9QUF9MSVNUX1RSQU5TRk9STV9PLCAob3AsIGRhdGEsIE5ETkJPT1NUX1BQX05JTCksIGxpc3QpKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX1RSQU5TRk9STV9EKGQsIG9wLCBkYXRhLCBsaXN0KSBORE5CT09TVF9QUF9MSVNUX1RSQU5TRk9STV9EX0koZCwgb3AsIGRhdGEsIGxpc3QpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9MSVNUX1RSQU5TRk9STV9EX0koZCwgb3AsIGRhdGEsIGxpc3QpIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMywgMiwgTkROQk9PU1RfUFBfTElTVF9GT0xEX1JJR0hUXyAjIyBkKE5ETkJPT1NUX1BQX0xJU1RfVFJBTlNGT1JNX08sIChvcCwgZGF0YSwgTkROQk9PU1RfUFBfTklMKSwgbGlzdCkpCi0jIGVuZGlmCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9sb2dpY2FsL2FuZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9sb2dpY2FsL2FuZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ1MzI5Y2QuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvbG9naWNhbC9hbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotIyAvKiBDb3B5cmlnaHQgKEMpIDIwMDEKLSMgICogSG91c2VtYXJxdWUgT3kKLSMgICogaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20KLSMgICoKLSMgICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICovCi0jCi0jIC8qIFJldmlzZWQgYnkgUGF1bCBNZW5zb25pZGVzICgyMDAyKSAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfTE9HSUNBTF9BTkRfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfTE9HSUNBTF9BTkRfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xvZ2ljYWwvYm9vbC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9sb2dpY2FsL2JpdGFuZC5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX0FORCAqLwotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRURHKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0FORChwLCBxKSBORE5CT09TVF9QUF9CSVRBTkQoTkROQk9PU1RfUFBfQk9PTChwKSwgTkROQk9PU1RfUFBfQk9PTChxKSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQU5EKHAsIHEpIE5ETkJPT1NUX1BQX0FORF9JKHAsIHEpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9BTkRfSShwLCBxKSBORE5CT09TVF9QUF9CSVRBTkQoTkROQk9PU1RfUFBfQk9PTChwKSwgTkROQk9PU1RfUFBfQk9PTChxKSkKLSMgZW5kaWYKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xvZ2ljYWwvYml0YW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xvZ2ljYWwvYml0YW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTg3OWYxMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9sb2dpY2FsL2JpdGFuZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0xPR0lDQUxfQklUQU5EX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0xPR0lDQUxfQklUQU5EX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX0JJVEFORCAqLwotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfTVdDQygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9CSVRBTkQoeCwgeSkgTkROQk9PU1RfUFBfQklUQU5EX0koeCwgeSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQklUQU5EKHgsIHkpIE5ETkJPT1NUX1BQX0JJVEFORF9PTygoeCwgeSkpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9CSVRBTkRfT08ocGFyKSBORE5CT09TVF9QUF9CSVRBTkRfSSAjIyBwYXIKLSMgZW5kaWYKLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX01TVkMoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQklUQU5EX0koeCwgeSkgTkROQk9PU1RfUFBfQklUQU5EXyAjIyB4ICMjIHkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQklUQU5EX0koeCwgeSkgTkROQk9PU1RfUFBfQklUQU5EX0lEKE5ETkJPT1NUX1BQX0JJVEFORF8gIyMgeCAjIyB5KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQklUQU5EX0lEKHJlcykgcmVzCi0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9CSVRBTkRfMDAgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfQklUQU5EXzAxIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JJVEFORF8xMCAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9CSVRBTkRfMTEgMQotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvbG9naWNhbC9iaXRvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9sb2dpY2FsL2JpdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjg0YWQ1OS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9sb2dpY2FsL2JpdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfTE9HSUNBTF9CSVRPUl9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9MT0dJQ0FMX0JJVE9SX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX0JJVE9SICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19NV0NDKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0JJVE9SKHgsIHkpIE5ETkJPT1NUX1BQX0JJVE9SX0koeCwgeSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQklUT1IoeCwgeSkgTkROQk9PU1RfUFBfQklUT1JfT08oKHgsIHkpKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQklUT1JfT08ocGFyKSBORE5CT09TVF9QUF9CSVRPUl9JICMjIHBhcgotIyBlbmRpZgotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfTVNWQygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9CSVRPUl9JKHgsIHkpIE5ETkJPT1NUX1BQX0JJVE9SXyAjIyB4ICMjIHkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQklUT1JfSSh4LCB5KSBORE5CT09TVF9QUF9CSVRPUl9JRChORE5CT09TVF9QUF9CSVRPUl8gIyMgeCAjIyB5KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQklUT1JfSUQoaWQpIGlkCi0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9CSVRPUl8wMCAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9CSVRPUl8wMSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CSVRPUl8xMCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CSVRPUl8xMSAxCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9sb2dpY2FsL2Jvb2wuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvbG9naWNhbC9ib29sLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmQ0NWRkNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9sb2dpY2FsL2Jvb2wuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjg4ICswLDAgQEAKLSMgLyogQ29weXJpZ2h0IChDKSAyMDAxCi0jICAqIEhvdXNlbWFycXVlIE95Ci0jICAqIGh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tCi0jICAqCi0jICAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqLwotIwotIyAvKiBSZXZpc2VkIGJ5IFBhdWwgTWVuc29uaWRlcyAoMjAwMikgKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0xPR0lDQUxfQk9PTF9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9MT0dJQ0FMX0JPT0xfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfQk9PTCAqLwotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfTVdDQygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9CT09MKHgpIE5ETkJPT1NUX1BQX0JPT0xfSSh4KQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9CT09MKHgpIE5ETkJPT1NUX1BQX0JPT0xfT08oKHgpKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF9PTyhwYXIpIE5ETkJPT1NUX1BQX0JPT0xfSSAjIyBwYXIKLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfSSh4KSBORE5CT09TVF9QUF9CT09MXyAjIyB4Ci0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzAgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMiAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzMgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF80IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfNSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzYgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF83IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfOCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzkgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzExIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTIgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMyAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzE0IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTUgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNiAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzE3IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMTggMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xOSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzIwIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMjEgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMiAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzIzIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMjQgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yNSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzI2IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMjcgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yOCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzI5IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMzAgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8zMSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzMyIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMzMgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8zNCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzM1IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMzYgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8zNyAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzM4IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfMzkgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF80MCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzQxIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfNDIgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF80MyAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzQ0IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfNDUgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF80NiAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzQ3IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfNDggMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF80OSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzUwIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfNTEgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF81MiAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzUzIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfNTQgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF81NSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzU2IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfNTcgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF81OCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzU5IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfNjAgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF82MSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzYyIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfNjMgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF82NCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzY1IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfNjYgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF82NyAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzY4IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfNjkgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF83MCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzcxIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfNzIgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF83MyAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzc0IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfNzUgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF83NiAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzc3IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfNzggMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF83OSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzgwIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfODEgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF84MiAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzgzIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfODQgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF84NSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzg2IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfODcgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF84OCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzg5IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfOTAgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF85MSAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzkyIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfOTMgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF85NCAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzk1IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfOTYgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF85NyAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9CT09MXzk4IDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0JPT0xfOTkgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMDAgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMDEgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMDIgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMDMgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMDQgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMDUgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMDYgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMDcgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMDggMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMDkgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMTAgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMTEgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMTIgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMTMgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMTQgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMTUgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMTYgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMTcgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMTggMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMTkgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMjAgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMjEgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMjIgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMjMgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMjQgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMjUgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMjYgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMjcgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMjggMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMjkgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMzAgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMzEgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMzIgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMzMgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMzQgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMzUgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMzYgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMzcgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMzggMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xMzkgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNDAgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNDEgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNDIgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNDMgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNDQgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNDUgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNDYgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNDcgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNDggMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNDkgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNTAgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNTEgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNTIgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNTMgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNTQgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNTUgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNTYgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNTcgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNTggMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNTkgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNjAgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNjEgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNjIgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNjMgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNjQgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNjUgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNjYgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNjcgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNjggMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNjkgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNzAgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNzEgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNzIgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNzMgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNzQgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNzUgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNzYgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNzcgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNzggMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xNzkgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xODAgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xODEgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xODIgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xODMgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xODQgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xODUgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xODYgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xODcgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xODggMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xODkgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xOTAgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xOTEgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xOTIgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xOTMgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xOTQgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xOTUgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xOTYgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xOTcgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xOTggMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8xOTkgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMDAgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMDEgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMDIgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMDMgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMDQgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMDUgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMDYgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMDcgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMDggMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMDkgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMTAgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMTEgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMTIgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMTMgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMTQgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMTUgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMTYgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMTcgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMTggMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMTkgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMjAgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMjEgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMjIgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMjMgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMjQgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMjUgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMjYgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMjcgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMjggMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMjkgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMzAgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMzEgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMzIgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMzMgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMzQgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMzUgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMzYgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMzcgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMzggMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yMzkgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yNDAgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yNDEgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yNDIgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yNDMgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yNDQgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yNDUgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yNDYgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yNDcgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yNDggMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yNDkgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yNTAgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yNTEgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yNTIgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yNTMgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yNTQgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yNTUgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQk9PTF8yNTYgMQotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvbG9naWNhbC9jb21wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9sb2dpY2FsL2NvbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTZiNGM2Yy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9sb2dpY2FsL2NvbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfTE9HSUNBTF9DT01QTF9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9MT0dJQ0FMX0NPTVBMX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX0NPTVBMICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19NV0NDKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPTVBMKHgpIE5ETkJPT1NUX1BQX0NPTVBMX0koeCkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09NUEwoeCkgTkROQk9PU1RfUFBfQ09NUExfT08oKHgpKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09NUExfT08ocGFyKSBORE5CT09TVF9QUF9DT01QTF9JICMjIHBhcgotIyBlbmRpZgotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfTVNWQygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT01QTF9JKHgpIE5ETkJPT1NUX1BQX0NPTVBMXyAjIyB4Ci0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPTVBMX0koeCkgTkROQk9PU1RfUFBfQ09NUExfSUQoTkROQk9PU1RfUFBfQ09NUExfICMjIHgpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT01QTF9JRChpZCkgaWQKLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0NPTVBMXzAgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfQ09NUExfMSAwCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9sb2dpY2FsL25vdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9sb2dpY2FsL25vdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZjOTIxMGUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvbG9naWNhbC9ub3QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotIyAvKiBDb3B5cmlnaHQgKEMpIDIwMDEKLSMgICogSG91c2VtYXJxdWUgT3kKLSMgICogaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20KLSMgICoKLSMgICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICovCi0jCi0jIC8qIFJldmlzZWQgYnkgUGF1bCBNZW5zb25pZGVzICgyMDAyKSAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfTE9HSUNBTF9OT1RfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfTE9HSUNBTF9OT1RfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xvZ2ljYWwvYm9vbC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9sb2dpY2FsL2NvbXBsLmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfTk9UICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9UKHgpIE5ETkJPT1NUX1BQX0NPTVBMKE5ETkJPT1NUX1BQX0JPT0woeCkpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX05PVCh4KSBORE5CT09TVF9QUF9OT1RfSSh4KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfTk9UX0koeCkgTkROQk9PU1RfUFBfQ09NUEwoTkROQk9PU1RfUFBfQk9PTCh4KSkKLSMgZW5kaWYKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xvZ2ljYWwvb3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvbG9naWNhbC9vci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2MzllZjMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvbG9naWNhbC9vci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi0jIC8qIENvcHlyaWdodCAoQykgMjAwMQotIyAgKiBIb3VzZW1hcnF1ZSBPeQotIyAgKiBodHRwOi8vd3d3LmhvdXNlbWFycXVlLmNvbQotIyAgKgotIyAgKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKi8KLSMKLSMgLyogUmV2aXNlZCBieSBQYXVsIE1lbnNvbmlkZXMgKDIwMDIpICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9MT0dJQ0FMX09SX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX0xPR0lDQUxfT1JfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xvZ2ljYWwvYm9vbC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9sb2dpY2FsL2JpdG9yLmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfT1IgKi8KLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9PUihwLCBxKSBORE5CT09TVF9QUF9CSVRPUihORE5CT09TVF9QUF9CT09MKHApLCBORE5CT09TVF9QUF9CT09MKHEpKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9PUihwLCBxKSBORE5CT09TVF9QUF9PUl9JKHAsIHEpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9PUl9JKHAsIHEpIE5ETkJPT1NUX1BQX0JJVE9SKE5ETkJPT1NUX1BQX0JPT0wocCksIE5ETkJPT1NUX1BQX0JPT0wocSkpCi0jIGVuZGlmCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9wdW5jdHVhdGlvbi9jb21tYS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9wdW5jdHVhdGlvbi9jb21tYS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVjMWEzMzQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvcHVuY3R1YXRpb24vY29tbWEuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotIyAvKiBDb3B5cmlnaHQgKEMpIDIwMDEKLSMgICogSG91c2VtYXJxdWUgT3kKLSMgICogaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20KLSMgICoKLSMgICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICovCi0jCi0jIC8qIFJldmlzZWQgYnkgUGF1bCBNZW5zb25pZGVzICgyMDAyKSAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfUFVOQ1RVQVRJT05fQ09NTUFfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfUFVOQ1RVQVRJT05fQ09NTUFfSFBQCi0jCi0jIC8qIE5ETkJPT1NUX1BQX0NPTU1BICovCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9DT01NQSgpICwKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3B1bmN0dWF0aW9uL2NvbW1hX2lmLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3B1bmN0dWF0aW9uL2NvbW1hX2lmLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjg1YjBiYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9wdW5jdHVhdGlvbi9jb21tYV9pZi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi0jIC8qIENvcHlyaWdodCAoQykgMjAwMQotIyAgKiBIb3VzZW1hcnF1ZSBPeQotIyAgKiBodHRwOi8vd3d3LmhvdXNlbWFycXVlLmNvbQotIyAgKgotIyAgKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKi8KLSMKLSMgLyogUmV2aXNlZCBieSBQYXVsIE1lbnNvbmlkZXMgKDIwMDIpICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9QVU5DVFVBVElPTl9DT01NQV9JRl9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9QVU5DVFVBVElPTl9DT01NQV9JRl9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9pZi5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9mYWNpbGl0aWVzL2VtcHR5LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3B1bmN0dWF0aW9uL2NvbW1hLmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfQ09NTUFfSUYgKi8KLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT01NQV9JRihjb25kKSBORE5CT09TVF9QUF9JRihjb25kLCBORE5CT09TVF9QUF9DT01NQSwgTkROQk9PU1RfUFBfRU1QVFkpKCkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09NTUFfSUYoY29uZCkgTkROQk9PU1RfUFBfQ09NTUFfSUZfSShjb25kKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09NTUFfSUZfSShjb25kKSBORE5CT09TVF9QUF9JRihjb25kLCBORE5CT09TVF9QUF9DT01NQSwgTkROQk9PU1RfUFBfRU1QVFkpKCkKLSMgZW5kaWYKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3B1bmN0dWF0aW9uL3BhcmVuLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3B1bmN0dWF0aW9uL3BhcmVuLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzAzM2ZlYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9wdW5jdHVhdGlvbi9wYXJlbi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1BVTkNUVUFUSU9OX1BBUkVOX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1BVTkNUVUFUSU9OX1BBUkVOX0hQUAotIwotIyAvKiBORE5CT09TVF9QUF9MUEFSRU4gKi8KLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0xQQVJFTigpICgKLSMKLSMgLyogTkROQk9PU1RfUFBfUlBBUkVOICovCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9SUEFSRU4oKSApCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBlYXQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZWF0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDQzOGNiYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBlYXQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9SRVBFQVRfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfUkVQRUFUX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9yZXBlYXQuaHBwPgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZWF0XzJuZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBlYXRfMm5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzUwM2I5Yy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBlYXRfMm5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfUkVQRUFUXzJORF9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9SRVBFQVRfMk5EX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9yZXBlYXQuaHBwPgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZWF0X2Zyb21fdG8uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZWF0X2Zyb21fdG8uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OWM4YTU2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGVhdF9mcm9tX3RvLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfUkVQRUFUX0ZST01fVE9fSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfUkVQRUFUX0ZST01fVE9fSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL3JlcGVhdF9mcm9tX3RvLmhwcD4KLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZGV0YWlsL2RtYy9mb3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9kZXRhaWwvZG1jL2Zvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4MzA2NzUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9kZXRhaWwvZG1jL2Zvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MzYgKzAsMCBAQAotIyAvKiBDb3B5cmlnaHQgKEMpIDIwMDEKLSMgICogSG91c2VtYXJxdWUgT3kKLSMgICogaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20KLSMgICoKLSMgICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICovCi0jCi0jIC8qIFJldmlzZWQgYnkgUGF1bCBNZW5zb25pZGVzICgyMDAyKSAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfUkVQRVRJVElPTl9ERVRBSUxfRk9SX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1JFUEVUSVRJT05fREVUQUlMX0ZPUl9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvZXhwcl9paWYuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9paWYuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvbG9naWNhbC9ib29sLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL2VhdC5ocHA+Ci0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzNfQyhORE5CT09TVF9QUF9CT09MKHAjIyg0LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDUsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl81X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzZfQyhORE5CT09TVF9QUF9CT09MKHAjIyg3LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfN19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDgsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl84X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoOSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzlfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDExLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzExX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTIsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTJfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xM19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE0LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE0X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTUsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTVfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE3LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE3X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTgsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMThfQyhORE5CT09TVF9QUF9CT09MKHAjIygxOSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xOV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIwLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIwX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjEsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjFfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIzLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIzX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjQsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjRfQyhORE5CT09TVF9QUF9CT09MKHAjIygyNSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yNV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDI2LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI2X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjcsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjdfQyhORE5CT09TVF9QUF9CT09MKHAjIygyOCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yOF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDI5LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI5X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMzAsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zMChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMzBfQyhORE5CT09TVF9QUF9CT09MKHAjIygzMSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzMxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8zMV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDMyLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzMyX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMzMsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zMyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMzNfQyhORE5CT09TVF9QUF9CT09MKHAjIygzNCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzM0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8zNF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDM1LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzM1X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMzYsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zNihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMzZfQyhORE5CT09TVF9QUF9CT09MKHAjIygzNywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzM3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8zN19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDM4LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzM4X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMzksIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zOShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMzlfQyhORE5CT09TVF9QUF9CT09MKHAjIyg0MCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl80MF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDQxLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzQxX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNDIsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNDJfQyhORE5CT09TVF9QUF9CT09MKHAjIyg0MywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl80M19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDQ0LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzQ0X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNDUsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNDVfQyhORE5CT09TVF9QUF9CT09MKHAjIyg0NiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQ2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl80Nl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDQ3LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzQ3X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNDgsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80OChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNDhfQyhORE5CT09TVF9QUF9CT09MKHAjIyg0OSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQ5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl80OV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDUwLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzUwX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNTEsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81MShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNTFfQyhORE5CT09TVF9QUF9CT09MKHAjIyg1MiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzUyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl81Ml9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDUzLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzUzX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNTQsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81NChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNTRfQyhORE5CT09TVF9QUF9CT09MKHAjIyg1NSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzU1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl81NV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDU2LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzU2X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNTcsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81NyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNTdfQyhORE5CT09TVF9QUF9CT09MKHAjIyg1OCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzU4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl81OF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDU5LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzU5X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNjAsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82MChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNjBfQyhORE5CT09TVF9QUF9CT09MKHAjIyg2MSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzYxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl82MV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDYyLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzYyX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNjMsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82MyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNjNfQyhORE5CT09TVF9QUF9CT09MKHAjIyg2NCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzY0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl82NF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDY1LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzY1X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNjYsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82NihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNjZfQyhORE5CT09TVF9QUF9CT09MKHAjIyg2NywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzY3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl82N19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDY4LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzY4X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNjksIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82OShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNjlfQyhORE5CT09TVF9QUF9CT09MKHAjIyg3MCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzcwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl83MF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDcxLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzcxX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNzIsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNzJfQyhORE5CT09TVF9QUF9CT09MKHAjIyg3MywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzczKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl83M19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDc0LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzc0X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNzUsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNzVfQyhORE5CT09TVF9QUF9CT09MKHAjIyg3NiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzc2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl83Nl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDc3LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzc3X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoNzgsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83OChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNzhfQyhORE5CT09TVF9QUF9CT09MKHAjIyg3OSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzc5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl83OV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDgwLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzgwX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoODEsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84MShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfODFfQyhORE5CT09TVF9QUF9CT09MKHAjIyg4MiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzgyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl84Ml9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDgzLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzgzX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoODQsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84NChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfODRfQyhORE5CT09TVF9QUF9CT09MKHAjIyg4NSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzg1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl84NV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDg2LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzg2X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoODcsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84NyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfODdfQyhORE5CT09TVF9QUF9CT09MKHAjIyg4OCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzg4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl84OF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDg5LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzg5X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoOTAsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85MChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfOTBfQyhORE5CT09TVF9QUF9CT09MKHAjIyg5MSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzkxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl85MV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDkyLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzkyX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoOTMsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85MyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfOTNfQyhORE5CT09TVF9QUF9CT09MKHAjIyg5NCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzk0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl85NF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDk1LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzk1X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoOTYsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85NihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfOTZfQyhORE5CT09TVF9QUF9CT09MKHAjIyg5NywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzk3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl85N19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDk4LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzk4X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoOTksIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85OShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfOTlfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMDAsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEwMF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDEwMSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwMShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTAxX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTAyLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTAyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMDJfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMDMsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEwM19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDEwNCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwNChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTA0X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTA1LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTA1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMDVfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMDYsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEwNl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDEwNywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwNyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTA3X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTA4LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTA4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMDhfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMDksIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEwOV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDExMCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExMChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTEwX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTExLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTExKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMTFfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMTIsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzExMl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDExMywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExMyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTEzX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTE0LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTE0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMTRfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMTUsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzExNV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDExNiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExNihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTE2X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTE3LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTE3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMTdfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMTgsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzExOF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDExOSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExOShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTE5X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTIwLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTIwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMjBfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMjEsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEyMV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDEyMiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyMihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTIyX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTIzLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTIzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMjNfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMjQsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEyNF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDEyNSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyNShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTI1X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTI2LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTI2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMjZfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMjcsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEyN19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDEyOCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyOChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTI4X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTI5LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTI5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMjlfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMzAsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEzMF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDEzMSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzMShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTMxX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTMyLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTMyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMzJfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMzMsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEzM19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDEzNCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzNChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTM0X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTM1LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTM1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMzVfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMzYsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEzNl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDEzNywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzNyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTM3X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTM4LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTM4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMzhfQyhORE5CT09TVF9QUF9CT09MKHAjIygxMzksIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEzOV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE0MCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0MChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTQwX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTQxLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNDFfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNDIsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE0Ml9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE0MywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0MyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTQzX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTQ0LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQ0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNDRfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNDUsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE0NV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE0NiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0NihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTQ2X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTQ3LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQ3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNDdfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNDgsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE0OF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE0OSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0OShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTQ5X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTUwLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTUwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNTBfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNTEsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE1MV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE1MiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTUyX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTUzLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTUzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNTNfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNTQsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE1NF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE1NSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTU1X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTU2LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTU2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNTZfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNTcsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE1N19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE1OCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1OChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTU4X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTU5LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTU5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNTlfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNjAsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE2MF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE2MSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2MShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTYxX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTYyLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTYyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNjJfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNjMsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE2M19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE2NCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2NChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTY0X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTY1LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTY1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNjVfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNjYsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE2Nl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE2NywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2NyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTY3X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTY4LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTY4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNjhfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNjksIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE2OV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE3MCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3MChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTcwX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTcxLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTcxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNzFfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNzIsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE3Ml9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE3MywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3MyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTczX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTc0LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTc0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNzRfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNzUsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE3NV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE3NiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3NihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTc2X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTc3LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTc3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNzdfQyhORE5CT09TVF9QUF9CT09MKHAjIygxNzgsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE3OF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE3OSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3OShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTc5X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTgwLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTgwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xODBfQyhORE5CT09TVF9QUF9CT09MKHAjIygxODEsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE4MV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE4MiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTgyX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTgzLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTgzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xODNfQyhORE5CT09TVF9QUF9CT09MKHAjIygxODQsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE4NF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE4NSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTg1X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTg2LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTg2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xODZfQyhORE5CT09TVF9QUF9CT09MKHAjIygxODcsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE4N19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE4OCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4OChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTg4X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTg5LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTg5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xODlfQyhORE5CT09TVF9QUF9CT09MKHAjIygxOTAsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE5MF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE5MSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5MShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTkxX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTkyLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTkyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xOTJfQyhORE5CT09TVF9QUF9CT09MKHAjIygxOTMsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE5M19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE5NCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5NChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTk0X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTk1LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTk1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xOTVfQyhORE5CT09TVF9QUF9CT09MKHAjIygxOTYsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE5Nl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDE5NywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5NyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTk3X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMTk4LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTk4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xOThfQyhORE5CT09TVF9QUF9CT09MKHAjIygxOTksIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE5OV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIwMCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwMChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjAwX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjAxLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjAxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMDFfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMDIsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIwMl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIwMywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwMyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjAzX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjA0LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjA0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMDRfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMDUsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIwNV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIwNiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwNihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjA2X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjA3LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjA3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMDdfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMDgsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIwOF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIwOSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwOShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjA5X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjEwLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjEwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMTBfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMTEsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIxMV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIxMiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxMihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjEyX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjEzLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjEzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMTNfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMTQsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIxNF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIxNSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxNShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjE1X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjE2LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjE2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMTZfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMTcsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIxN19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIxOCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxOChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjE4X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjE5LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjE5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMTlfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMjAsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIyMF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIyMSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyMShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjIxX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjIyLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjIyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMjJfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMjMsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIyM19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIyNCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyNChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjI0X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjI1LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjI1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMjVfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMjYsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIyNl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIyNywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyNyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjI3X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjI4LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjI4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMjhfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMjksIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIyOV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIzMCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzMChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjMwX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjMxLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjMxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMzFfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMzIsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIzMl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIzMywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzMyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjMzX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjM0LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjM0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMzRfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMzUsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIzNV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIzNiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzNihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjM2X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjM3LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjM3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMzdfQyhORE5CT09TVF9QUF9CT09MKHAjIygyMzgsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIzOF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDIzOSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzOShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjM5X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjQwLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yNDBfQyhORE5CT09TVF9QUF9CT09MKHAjIygyNDEsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI0MV9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDI0MiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjQyX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjQzLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yNDNfQyhORE5CT09TVF9QUF9CT09MKHAjIygyNDQsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI0NF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDI0NSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjQ1X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjQ2LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQ2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yNDZfQyhORE5CT09TVF9QUF9CT09MKHAjIygyNDcsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI0N19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDI0OCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0OChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjQ4X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjQ5LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQ5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yNDlfQyhORE5CT09TVF9QUF9CT09MKHAjIygyNTAsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNTAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI1MF9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDI1MSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1MShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjUxX0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjUyLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjUyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yNTJfQyhORE5CT09TVF9QUF9CT09MKHAjIygyNTMsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNTMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI1M19DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDI1NCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1NChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjU0X0MoTkROQk9PU1RfUFBfQk9PTChwIyMoMjU1LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjU1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yNTVfQyhORE5CT09TVF9QUF9CT09MKHAjIygyNTYsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNTYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI1Nl9DKE5ETkJPT1NUX1BQX0JPT0wocCMjKDI1NywgcykpLCBzLCBwLCBvLCBtKQotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzFfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzJfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDMsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzNfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDQsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzRfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDUsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzVfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDYsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzZfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDcsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzdfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDgsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfOCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzhfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDksIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfOSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzlfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDExLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTIsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTJfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTUsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTVfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xN19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTgsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxOCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMThfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjEsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjFfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yM19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjQsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyNCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjRfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI1LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzI1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yNiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDI2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjcsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyNywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjdfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI4LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzI4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI4X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyOSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yOSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDI5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yOV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMzAsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMzAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgzMCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzBfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDMxLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzMxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMzEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzMxX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgzMiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8zMiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDMyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zMl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMzMsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMzMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgzMywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzNfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDM0LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzM0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMzQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzM0X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgzNSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8zNSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDM1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zNV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMzYsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMzYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgzNiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzZfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDM3LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzM3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMzcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzM3X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgzOCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8zOCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDM4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zOF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMzksIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMzksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgzOSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzlfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDQwLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzQwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNDAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQwX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg0MSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl80MSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDQxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80MV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNDIsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNDIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg0MiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDJfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDQzLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzQzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNDMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQzX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg0NCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl80NCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDQ0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80NF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNDUsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNDUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg0NSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDVfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDQ2LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzQ2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNDYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQ2X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg0NywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl80NywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDQ3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80N19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNDgsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNDgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg0OCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDhfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDQ5LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzQ5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNDksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQ5X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg1MCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl81MCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDUwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81MF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNTEsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNTEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg1MSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTFfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDUyLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzUyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNTIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzUyX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg1MywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl81MywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDUzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81M19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNTQsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNTQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg1NCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTRfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDU1LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzU1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNTUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzU1X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg1NiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl81NiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDU2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81Nl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNTcsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNTcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg1NywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTdfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDU4LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzU4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNTgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzU4X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg1OSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl81OSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDU5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81OV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNjAsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNjAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg2MCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjBfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDYxLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzYxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNjEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzYxX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg2MiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl82MiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDYyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82Ml9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNjMsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNjMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg2MywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjNfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDY0LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzY0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNjQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzY0X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg2NSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl82NSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDY1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82NV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNjYsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNjYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg2NiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjZfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDY3LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzY3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNjcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzY3X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg2OCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl82OCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDY4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82OF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNjksIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNjksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg2OSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjlfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDcwLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzcwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNzAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzcwX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg3MSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl83MSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDcxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83MV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNzIsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNzIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg3MiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzJfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDczLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzczLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNzMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzczX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg3NCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl83NCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDc0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83NF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNzUsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNzUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg3NSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzVfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDc2LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzc2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNzYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzc2X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg3NywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl83NywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDc3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83N19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNzgsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNzgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg3OCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzhfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDc5LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzc5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNzksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzc5X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg4MCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl84MCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDgwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84MF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoODEsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfODEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg4MSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODFfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDgyLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzgyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoODIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzgyX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg4MywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl84MywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDgzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84M19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoODQsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfODQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg4NCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODRfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDg1LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzg1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoODUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzg1X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg4NiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl84NiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDg2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84Nl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoODcsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfODcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg4NywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODdfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDg4LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzg4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoODgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzg4X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg4OSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl84OSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDg5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84OV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOTAsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfOTAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg5MCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTBfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDkxLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzkxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoOTEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzkxX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg5MiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl85MiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDkyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85Ml9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOTMsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfOTMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg5MywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTNfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDk0LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzk0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoOTQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzk0X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg5NSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl85NSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDk1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85NV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOTYsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfOTYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg5NiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTZfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDk3LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzk3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoOTcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzk3X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg5OCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl85OCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDk4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85OF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOTksIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfOTksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg5OSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTlfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwMCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMDAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMDAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwMF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTAxLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEwMSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEwMSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTAxX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMDIsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTAyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTAyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDJfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwMywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMDMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMDMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwM19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTA0LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEwNCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEwNCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTA0X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMDUsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTA1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTA1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDVfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwNiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMDYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMDYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwNl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTA3LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEwNywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEwNywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTA3X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMDgsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTA4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTA4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDhfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwOSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMDksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMDksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwOV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTEwLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzExMCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDExMCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTEwX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMTEsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTExLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTExLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTFfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDExMiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMTIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMTIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExMl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTEzLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzExMywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDExMywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTEzX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMTQsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTE0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTE0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTRfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDExNSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMTUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMTUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExNV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTE2LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzExNiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDExNiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTE2X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMTcsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTE3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTE3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTdfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDExOCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMTgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMTgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExOF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTE5LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzExOSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDExOSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTE5X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMjAsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTIwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTIwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjBfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEyMSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMjEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMjEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyMV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTIyLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEyMiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEyMiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTIyX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMjMsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTIzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTIzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjNfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEyNCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMjQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMjQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyNF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTI1LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEyNSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEyNSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTI1X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMjYsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTI2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTI2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjZfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEyNywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMjcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMjcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyN19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTI4LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEyOCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEyOCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTI4X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMjksIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTI5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTI5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjlfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzMCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMzAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMzAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzMF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTMxLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEzMSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEzMSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTMxX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMzIsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTMyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTMyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzJfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzMywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMzMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMzMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzM19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTM0LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEzNCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEzNCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTM0X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMzUsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTM1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTM1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzVfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzNiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMzYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMzYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzNl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTM3LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEzNywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEzNywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTM3X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMzgsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTM4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTM4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzhfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzOSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMzksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMzksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzOV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTQwLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE0MCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE0MCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQwX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNDEsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTQxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTQxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDFfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE0MiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNDIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNDIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0Ml9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTQzLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE0MywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE0MywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQzX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNDQsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTQ0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTQ0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDRfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE0NSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNDUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNDUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0NV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTQ2LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE0NiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE0NiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQ2X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNDcsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTQ3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTQ3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDdfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE0OCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNDgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNDgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0OF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTQ5LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE0OSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE0OSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQ5X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNTAsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTUwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTUwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTBfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE1MSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNTEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNTEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1MV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTUyLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE1MiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE1MiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTUyX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNTMsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTUzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTUzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTNfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE1NCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNTQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNTQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1NF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTU1LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE1NSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE1NSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTU1X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNTYsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTU2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTU2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTZfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE1NywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNTcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNTcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1N19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTU4LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE1OCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE1OCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTU4X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNTksIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTU5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTU5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTlfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2MCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNjAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNjAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2MF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTYxLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE2MSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE2MSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTYxX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNjIsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTYyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTYyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjJfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2MywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNjMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNjMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2M19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTY0LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE2NCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE2NCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTY0X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNjUsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTY1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTY1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjVfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2NiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNjYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNjYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2Nl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTY3LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE2NywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE2NywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTY3X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNjgsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTY4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTY4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjhfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2OSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNjksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNjksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2OV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTcwLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE3MCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE3MCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTcwX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNzEsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTcxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTcxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzFfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE3MiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNzIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNzIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3Ml9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTczLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE3MywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE3MywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTczX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNzQsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTc0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTc0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzRfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE3NSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNzUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNzUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3NV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTc2LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE3NiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE3NiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTc2X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNzcsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTc3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTc3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzdfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE3OCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNzgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNzgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3OF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTc5LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE3OSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE3OSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTc5X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxODAsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTgwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTgwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODBfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE4MSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xODEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxODEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4MV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTgyLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE4MiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE4MiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTgyX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxODMsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTgzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTgzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODNfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE4NCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xODQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxODQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4NF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTg1LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE4NSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE4NSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTg1X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxODYsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTg2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTg2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODZfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE4NywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xODcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxODcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4N19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTg4LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE4OCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE4OCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTg4X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxODksIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTg5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTg5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODlfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5MCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xOTAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxOTAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5MF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTkxLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE5MSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE5MSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTkxX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxOTIsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTkyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTkyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTJfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5MywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xOTMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxOTMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5M19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTk0LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE5NCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE5NCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTk0X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxOTUsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTk1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTk1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTVfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5NiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xOTYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxOTYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5Nl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTk3LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE5NywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE5NywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTk3X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxOTgsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTk4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTk4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOThfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5OSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xOTksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxOTksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5OV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjAwLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIwMCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIwMCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjAwX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMDEsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjAxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjAxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDFfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIwMiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMDIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMDIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwMl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjAzLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIwMywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIwMywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjAzX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMDQsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjA0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjA0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDRfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIwNSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMDUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMDUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwNV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjA2LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIwNiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIwNiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjA2X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMDcsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjA3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjA3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDdfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIwOCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMDgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMDgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwOF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjA5LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIwOSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIwOSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjA5X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMTAsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjEwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjEwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTBfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIxMSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMTEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMTEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxMV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjEyLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIxMiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIxMiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjEyX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMTMsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjEzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjEzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTNfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIxNCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMTQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMTQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxNF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjE1LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIxNSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIxNSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjE1X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMTYsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjE2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjE2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTZfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIxNywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMTcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMTcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxN19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjE4LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIxOCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIxOCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjE4X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMTksIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjE5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjE5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTlfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyMCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMjAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMjAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyMF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjIxLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIyMSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIyMSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjIxX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMjIsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjIyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjIyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjJfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyMywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMjMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMjMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyM19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjI0LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIyNCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIyNCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjI0X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMjUsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjI1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjI1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjVfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyNiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMjYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMjYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyNl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjI3LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIyNywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIyNywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjI3X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMjgsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjI4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjI4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjhfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyOSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMjksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMjksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyOV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjMwLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIzMCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIzMCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjMwX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMzEsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjMxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjMxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzFfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIzMiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMzIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMzIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzMl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjMzLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIzMywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIzMywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjMzX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMzQsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjM0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjM0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzRfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIzNSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMzUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMzUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzNV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjM2LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIzNiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIzNiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjM2X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMzcsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjM3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjM3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzdfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIzOCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMzgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMzgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzOF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjM5LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIzOSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIzOSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjM5X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNDAsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjQwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjQwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDBfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI0MSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yNDEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyNDEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0MV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjQyLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzI0MiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDI0MiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQyX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNDMsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjQzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjQzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDNfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI0NCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yNDQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyNDQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0NF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjQ1LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzI0NSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDI0NSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQ1X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNDYsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjQ2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjQ2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDZfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI0NywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yNDcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyNDcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0N19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjQ4LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzI0OCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDI0OCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQ4X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNDksIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjQ5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjQ5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDlfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI1MCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yNTAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyNTAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1MF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjUxLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzI1MSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDI1MSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjUxX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNTIsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjUyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjUyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNTJfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI1MywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yNTMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyNTMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1M19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjU0LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzI1NCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDI1NCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjU0X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNTUsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjU1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjU1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNTVfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI1NiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yNTYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyNTYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1Nl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjU3LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzI1NywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDI1NywgcyksIHAsIG8sIG0pCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2RldGFpbC9lZGcvZm9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZGV0YWlsL2VkZy9mb3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MTc1MDMyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZGV0YWlsL2VkZy9mb3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTM0ICswLDAgQEAKLSMgLyogQ29weXJpZ2h0IChDKSAyMDAxCi0jICAqIEhvdXNlbWFycXVlIE95Ci0jICAqIGh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tCi0jICAqCi0jICAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqLwotIwotIyAvKiBSZXZpc2VkIGJ5IFBhdWwgTWVuc29uaWRlcyAoMjAwMikgKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1JFUEVUSVRJT05fREVUQUlMX0VER19GT1JfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfUkVQRVRJVElPTl9ERVRBSUxfRURHX0ZPUl9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvaWYuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvZWF0LmhwcD4KLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8zX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl80X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl81X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl82X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl83X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl84X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl85X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTBfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEyX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTNfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE1X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTZfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xN19JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE4X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTlfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIxX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjJfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yM19JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI0X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjVfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yNl9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI3X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yOChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjhfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yOV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzMwX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zMShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMzFfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzMyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8zMl9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzMzX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zNChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMzRfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzM1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8zNV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzM2X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zNyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMzdfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzM4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8zOF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzM5X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80MChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNDBfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl80MV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzQyX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80MyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNDNfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQ0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl80NF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzQ1X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80NihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNDZfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQ3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl80N19JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzQ4X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80OShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNDlfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzUwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl81MF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzUxX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNTJfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzUzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl81M19JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzU0X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNTVfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzU2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl81Nl9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzU3X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81OChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNThfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzU5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl81OV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzYwX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82MShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNjFfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzYyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl82Ml9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzYzX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82NChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNjRfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzY1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl82NV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzY2X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82NyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNjdfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzY4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl82OF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzY5X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83MChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNzBfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzcxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl83MV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzcyX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83MyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNzNfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzc0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl83NF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzc1X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83NihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNzZfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzc3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl83N19JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzc4X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83OShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfNzlfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzgwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl84MF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzgxX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfODJfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzgzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl84M19JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzg0X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfODVfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzg2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl84Nl9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzg3X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84OChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfODhfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzg5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl84OV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzkwX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85MShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfOTFfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzkyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl85Ml9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzkzX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85NChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfOTRfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzk1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl85NV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzk2X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85NyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfOTdfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzk4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl85OF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzk5X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEwMF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTAxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMDFfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwMihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTAyX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEwM19JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTA0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMDRfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwNShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTA1X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEwNl9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTA3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMDdfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwOChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTA4X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEwOV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTEwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMTBfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExMShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTExX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzExMl9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTEzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMTNfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExNChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTE0X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzExNV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTE2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMTZfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExNyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTE3X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzExOF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTE5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMTlfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyMChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTIwX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEyMV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTIyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMjJfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyMyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTIzX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEyNF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTI1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMjVfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyNihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTI2X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEyN19JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTI4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMjhfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyOShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTI5X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEzMF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTMxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMzFfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzMihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTMyX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEzM19JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTM0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMzRfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzNShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTM1X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEzNl9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTM3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xMzdfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzOChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTM4X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEzOV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNDBfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0MShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTQxX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE0Ml9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNDNfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0NChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTQ0X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE0NV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQ2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNDZfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0NyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTQ3X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE0OF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQ5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNDlfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1MChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTUwX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE1MV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTUyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNTJfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1MyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTUzX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE1NF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTU1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNTVfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1NihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTU2X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE1N19JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTU4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNThfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1OShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTU5X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE2MF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTYxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNjFfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTYyX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE2M19JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTY0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNjRfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTY1X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE2Nl9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTY3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNjdfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2OChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTY4X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE2OV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTcwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNzBfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3MShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTcxX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE3Ml9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTczKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNzNfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3NChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTc0X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE3NV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTc2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNzZfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3NyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTc3X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE3OF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTc5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xNzlfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4MChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTgwX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE4MV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTgyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xODJfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4MyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTgzX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE4NF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTg1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xODVfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4NihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTg2X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE4N19JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTg4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xODhfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4OShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTg5X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE5MF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTkxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xOTFfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTkyX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE5M19JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTk0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xOTRfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTk1X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE5Nl9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTk3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xOTdfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5OChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTk4X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE5OV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjAwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMDBfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwMShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjAxX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIwMl9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjAzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMDNfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwNChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjA0X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIwNV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjA2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMDZfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwNyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjA3X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIwOF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjA5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMDlfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxMChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjEwX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIxMV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjEyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMTJfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxMyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjEzX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIxNF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjE1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMTVfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxNihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjE2X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIxN19JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjE4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMThfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxOShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjE5X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIyMF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjIxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMjFfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyMihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjIyX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIyM19JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjI0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMjRfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyNShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjI1X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIyNl9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjI3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMjdfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyOChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjI4X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIyOV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjMwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMzBfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzMShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjMxX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIzMl9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjMzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMzNfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzNChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjM0X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIzNV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjM2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMzZfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzNyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjM3X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIzOF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjM5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yMzlfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0MChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjQwX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI0MV9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yNDJfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0MyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjQzX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI0NF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQ1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yNDVfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0NihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjQ2X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI0N19JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQ4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yNDhfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0OShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjQ5X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNTAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI1MF9JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjUxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yNTFfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjUyX0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNTMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI1M19JKHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjU0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yNTRfSShzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjU1X0kocywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNTYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI1Nl9JKHMsIHAsIG8sIG0pCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyLCBzKSBORE5CT09TVF9QUF9JRihwKDIsIHMpLCBORE5CT09TVF9QUF9GT1JfMiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMl9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgzLCBzKSBORE5CT09TVF9QUF9JRihwKDMsIHMpLCBORE5CT09TVF9QUF9GT1JfMywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfM19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg0LCBzKSBORE5CT09TVF9QUF9JRihwKDQsIHMpLCBORE5CT09TVF9QUF9GT1JfNCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg1LCBzKSBORE5CT09TVF9QUF9JRihwKDUsIHMpLCBORE5CT09TVF9QUF9GT1JfNSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg2LCBzKSBORE5CT09TVF9QUF9JRihwKDYsIHMpLCBORE5CT09TVF9QUF9GT1JfNiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNl9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg3LCBzKSBORE5CT09TVF9QUF9JRihwKDcsIHMpLCBORE5CT09TVF9QUF9GT1JfNywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfN19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoOCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg4LCBzKSBORE5CT09TVF9QUF9JRihwKDgsIHMpLCBORE5CT09TVF9QUF9GT1JfOCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oOCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoOSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg5LCBzKSBORE5CT09TVF9QUF9JRihwKDksIHMpLCBORE5CT09TVF9QUF9GT1JfOSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oOSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTAsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTAsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTAsIHMpLCBORE5CT09TVF9QUF9GT1JfMTAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTEsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTEsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTEsIHMpLCBORE5CT09TVF9QUF9GT1JfMTEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDExLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTIsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTIsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTIsIHMpLCBORE5CT09TVF9QUF9GT1JfMTIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMl9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTMsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTMsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTMsIHMpLCBORE5CT09TVF9QUF9GT1JfMTMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xM19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTQsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTQsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTQsIHMpLCBORE5CT09TVF9QUF9GT1JfMTQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTUsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTUsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTUsIHMpLCBORE5CT09TVF9QUF9GT1JfMTUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTYsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTYsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTYsIHMpLCBORE5CT09TVF9QUF9GT1JfMTYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNl9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTcsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTcsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTcsIHMpLCBORE5CT09TVF9QUF9GT1JfMTcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xN19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTgsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTgsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTgsIHMpLCBORE5CT09TVF9QUF9GT1JfMTgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTksIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTksIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTksIHMpLCBORE5CT09TVF9QUF9GT1JfMTksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjAsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjAsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjAsIHMpLCBORE5CT09TVF9QUF9GT1JfMjAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjEsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjEsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjEsIHMpLCBORE5CT09TVF9QUF9GT1JfMjEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjIsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjIsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjIsIHMpLCBORE5CT09TVF9QUF9GT1JfMjIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMl9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjMsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjMsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjMsIHMpLCBORE5CT09TVF9QUF9GT1JfMjMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yM19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjQsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjQsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjQsIHMpLCBORE5CT09TVF9QUF9GT1JfMjQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDI0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjUsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjUsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjUsIHMpLCBORE5CT09TVF9QUF9GT1JfMjUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDI1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjYsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjYsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjYsIHMpLCBORE5CT09TVF9QUF9GT1JfMjYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDI2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNl9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjcsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjcsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjcsIHMpLCBORE5CT09TVF9QUF9GT1JfMjcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDI3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yN19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjgsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjgsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjgsIHMpLCBORE5CT09TVF9QUF9GT1JfMjgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDI4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yOF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjksIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjksIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjksIHMpLCBORE5CT09TVF9QUF9GT1JfMjksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDI5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yOV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMzAsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMzAsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMzAsIHMpLCBORE5CT09TVF9QUF9GT1JfMzAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDMwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zMF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMzEsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMzEsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMzEsIHMpLCBORE5CT09TVF9QUF9GT1JfMzEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDMxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zMV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMzIsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMzIsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMzIsIHMpLCBORE5CT09TVF9QUF9GT1JfMzIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDMyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zMl9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMzMsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMzMsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMzMsIHMpLCBORE5CT09TVF9QUF9GT1JfMzMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDMzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zM19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMzQsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMzQsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMzQsIHMpLCBORE5CT09TVF9QUF9GT1JfMzQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDM0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zNF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMzUsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMzUsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMzUsIHMpLCBORE5CT09TVF9QUF9GT1JfMzUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDM1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zNV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMzYsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMzYsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMzYsIHMpLCBORE5CT09TVF9QUF9GT1JfMzYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDM2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zNl9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMzcsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMzcsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMzcsIHMpLCBORE5CT09TVF9QUF9GT1JfMzcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDM3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zN19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMzgsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMzgsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMzgsIHMpLCBORE5CT09TVF9QUF9GT1JfMzgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDM4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zOF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMzksIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMzksIHMpIE5ETkJPT1NUX1BQX0lGKHAoMzksIHMpLCBORE5CT09TVF9QUF9GT1JfMzksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDM5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zOV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNDAsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNDAsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNDAsIHMpLCBORE5CT09TVF9QUF9GT1JfNDAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDQwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80MF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNDEsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNDEsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNDEsIHMpLCBORE5CT09TVF9QUF9GT1JfNDEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDQxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80MV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNDIsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNDIsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNDIsIHMpLCBORE5CT09TVF9QUF9GT1JfNDIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDQyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80Ml9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNDMsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNDMsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNDMsIHMpLCBORE5CT09TVF9QUF9GT1JfNDMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDQzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80M19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNDQsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNDQsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNDQsIHMpLCBORE5CT09TVF9QUF9GT1JfNDQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDQ0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80NF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNDUsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNDUsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNDUsIHMpLCBORE5CT09TVF9QUF9GT1JfNDUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDQ1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80NV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNDYsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNDYsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNDYsIHMpLCBORE5CT09TVF9QUF9GT1JfNDYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDQ2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80Nl9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNDcsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNDcsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNDcsIHMpLCBORE5CT09TVF9QUF9GT1JfNDcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDQ3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80N19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNDgsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNDgsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNDgsIHMpLCBORE5CT09TVF9QUF9GT1JfNDgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDQ4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80OF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNDksIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNDksIHMpIE5ETkJPT1NUX1BQX0lGKHAoNDksIHMpLCBORE5CT09TVF9QUF9GT1JfNDksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDQ5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80OV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNTAsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNTAsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNTAsIHMpLCBORE5CT09TVF9QUF9GT1JfNTAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDUwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81MF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNTEsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNTEsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNTEsIHMpLCBORE5CT09TVF9QUF9GT1JfNTEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDUxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81MV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNTIsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNTIsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNTIsIHMpLCBORE5CT09TVF9QUF9GT1JfNTIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDUyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81Ml9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNTMsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNTMsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNTMsIHMpLCBORE5CT09TVF9QUF9GT1JfNTMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDUzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81M19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNTQsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNTQsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNTQsIHMpLCBORE5CT09TVF9QUF9GT1JfNTQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDU0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81NF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNTUsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNTUsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNTUsIHMpLCBORE5CT09TVF9QUF9GT1JfNTUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDU1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81NV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNTYsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNTYsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNTYsIHMpLCBORE5CT09TVF9QUF9GT1JfNTYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDU2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81Nl9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNTcsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNTcsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNTcsIHMpLCBORE5CT09TVF9QUF9GT1JfNTcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDU3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81N19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNTgsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNTgsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNTgsIHMpLCBORE5CT09TVF9QUF9GT1JfNTgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDU4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81OF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNTksIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNTksIHMpIE5ETkJPT1NUX1BQX0lGKHAoNTksIHMpLCBORE5CT09TVF9QUF9GT1JfNTksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDU5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81OV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNjAsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNjAsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNjAsIHMpLCBORE5CT09TVF9QUF9GT1JfNjAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDYwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82MF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNjEsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNjEsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNjEsIHMpLCBORE5CT09TVF9QUF9GT1JfNjEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDYxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82MV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNjIsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNjIsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNjIsIHMpLCBORE5CT09TVF9QUF9GT1JfNjIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDYyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82Ml9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNjMsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNjMsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNjMsIHMpLCBORE5CT09TVF9QUF9GT1JfNjMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDYzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82M19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNjQsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNjQsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNjQsIHMpLCBORE5CT09TVF9QUF9GT1JfNjQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDY0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82NF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNjUsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNjUsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNjUsIHMpLCBORE5CT09TVF9QUF9GT1JfNjUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDY1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82NV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNjYsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNjYsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNjYsIHMpLCBORE5CT09TVF9QUF9GT1JfNjYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDY2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82Nl9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNjcsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNjcsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNjcsIHMpLCBORE5CT09TVF9QUF9GT1JfNjcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDY3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82N19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNjgsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNjgsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNjgsIHMpLCBORE5CT09TVF9QUF9GT1JfNjgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDY4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82OF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNjksIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNjksIHMpIE5ETkJPT1NUX1BQX0lGKHAoNjksIHMpLCBORE5CT09TVF9QUF9GT1JfNjksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDY5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82OV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNzAsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNzAsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNzAsIHMpLCBORE5CT09TVF9QUF9GT1JfNzAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDcwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83MF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNzEsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNzEsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNzEsIHMpLCBORE5CT09TVF9QUF9GT1JfNzEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDcxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83MV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNzIsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNzIsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNzIsIHMpLCBORE5CT09TVF9QUF9GT1JfNzIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDcyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83Ml9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNzMsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNzMsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNzMsIHMpLCBORE5CT09TVF9QUF9GT1JfNzMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDczLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83M19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNzQsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNzQsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNzQsIHMpLCBORE5CT09TVF9QUF9GT1JfNzQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDc0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83NF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNzUsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNzUsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNzUsIHMpLCBORE5CT09TVF9QUF9GT1JfNzUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDc1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83NV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNzYsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNzYsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNzYsIHMpLCBORE5CT09TVF9QUF9GT1JfNzYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDc2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83Nl9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNzcsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNzcsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNzcsIHMpLCBORE5CT09TVF9QUF9GT1JfNzcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDc3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83N19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNzgsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNzgsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNzgsIHMpLCBORE5CT09TVF9QUF9GT1JfNzgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDc4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83OF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNzksIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNzksIHMpIE5ETkJPT1NUX1BQX0lGKHAoNzksIHMpLCBORE5CT09TVF9QUF9GT1JfNzksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDc5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83OV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoODAsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoODAsIHMpIE5ETkJPT1NUX1BQX0lGKHAoODAsIHMpLCBORE5CT09TVF9QUF9GT1JfODAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDgwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84MF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoODEsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoODEsIHMpIE5ETkJPT1NUX1BQX0lGKHAoODEsIHMpLCBORE5CT09TVF9QUF9GT1JfODEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDgxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84MV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoODIsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoODIsIHMpIE5ETkJPT1NUX1BQX0lGKHAoODIsIHMpLCBORE5CT09TVF9QUF9GT1JfODIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDgyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84Ml9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoODMsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoODMsIHMpIE5ETkJPT1NUX1BQX0lGKHAoODMsIHMpLCBORE5CT09TVF9QUF9GT1JfODMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDgzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84M19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoODQsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoODQsIHMpIE5ETkJPT1NUX1BQX0lGKHAoODQsIHMpLCBORE5CT09TVF9QUF9GT1JfODQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDg0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84NF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoODUsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoODUsIHMpIE5ETkJPT1NUX1BQX0lGKHAoODUsIHMpLCBORE5CT09TVF9QUF9GT1JfODUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDg1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84NV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoODYsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoODYsIHMpIE5ETkJPT1NUX1BQX0lGKHAoODYsIHMpLCBORE5CT09TVF9QUF9GT1JfODYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDg2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84Nl9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoODcsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoODcsIHMpIE5ETkJPT1NUX1BQX0lGKHAoODcsIHMpLCBORE5CT09TVF9QUF9GT1JfODcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDg3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84N19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoODgsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoODgsIHMpIE5ETkJPT1NUX1BQX0lGKHAoODgsIHMpLCBORE5CT09TVF9QUF9GT1JfODgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDg4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84OF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoODksIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoODksIHMpIE5ETkJPT1NUX1BQX0lGKHAoODksIHMpLCBORE5CT09TVF9QUF9GT1JfODksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDg5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84OV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoOTAsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOTAsIHMpIE5ETkJPT1NUX1BQX0lGKHAoOTAsIHMpLCBORE5CT09TVF9QUF9GT1JfOTAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDkwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85MF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoOTEsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOTEsIHMpIE5ETkJPT1NUX1BQX0lGKHAoOTEsIHMpLCBORE5CT09TVF9QUF9GT1JfOTEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDkxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85MV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoOTIsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOTIsIHMpIE5ETkJPT1NUX1BQX0lGKHAoOTIsIHMpLCBORE5CT09TVF9QUF9GT1JfOTIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDkyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85Ml9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoOTMsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOTMsIHMpIE5ETkJPT1NUX1BQX0lGKHAoOTMsIHMpLCBORE5CT09TVF9QUF9GT1JfOTMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDkzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85M19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoOTQsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOTQsIHMpIE5ETkJPT1NUX1BQX0lGKHAoOTQsIHMpLCBORE5CT09TVF9QUF9GT1JfOTQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDk0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85NF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoOTUsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOTUsIHMpIE5ETkJPT1NUX1BQX0lGKHAoOTUsIHMpLCBORE5CT09TVF9QUF9GT1JfOTUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDk1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85NV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoOTYsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOTYsIHMpIE5ETkJPT1NUX1BQX0lGKHAoOTYsIHMpLCBORE5CT09TVF9QUF9GT1JfOTYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDk2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85Nl9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoOTcsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOTcsIHMpIE5ETkJPT1NUX1BQX0lGKHAoOTcsIHMpLCBORE5CT09TVF9QUF9GT1JfOTcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDk3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85N19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoOTgsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOTgsIHMpIE5ETkJPT1NUX1BQX0lGKHAoOTgsIHMpLCBORE5CT09TVF9QUF9GT1JfOTgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDk4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85OF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoOTksIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOTksIHMpIE5ETkJPT1NUX1BQX0lGKHAoOTksIHMpLCBORE5CT09TVF9QUF9GT1JfOTksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDk5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85OV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTAwLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwMCwgcykgTkROQk9PU1RfUFBfSUYocCgxMDAsIHMpLCBORE5CT09TVF9QUF9GT1JfMTAwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMDAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwMF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTAxLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwMSwgcykgTkROQk9PU1RfUFBfSUYocCgxMDEsIHMpLCBORE5CT09TVF9QUF9GT1JfMTAxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMDEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwMV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTAyLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwMiwgcykgTkROQk9PU1RfUFBfSUYocCgxMDIsIHMpLCBORE5CT09TVF9QUF9GT1JfMTAyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMDIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwMl9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTAzLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwMywgcykgTkROQk9PU1RfUFBfSUYocCgxMDMsIHMpLCBORE5CT09TVF9QUF9GT1JfMTAzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMDMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwM19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTA0LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwNCwgcykgTkROQk9PU1RfUFBfSUYocCgxMDQsIHMpLCBORE5CT09TVF9QUF9GT1JfMTA0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMDQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwNF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTA1LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwNSwgcykgTkROQk9PU1RfUFBfSUYocCgxMDUsIHMpLCBORE5CT09TVF9QUF9GT1JfMTA1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMDUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwNV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTA2LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwNiwgcykgTkROQk9PU1RfUFBfSUYocCgxMDYsIHMpLCBORE5CT09TVF9QUF9GT1JfMTA2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMDYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwNl9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTA3LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwNywgcykgTkROQk9PU1RfUFBfSUYocCgxMDcsIHMpLCBORE5CT09TVF9QUF9GT1JfMTA3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMDcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwN19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTA4LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwOCwgcykgTkROQk9PU1RfUFBfSUYocCgxMDgsIHMpLCBORE5CT09TVF9QUF9GT1JfMTA4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMDgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwOF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTA5LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwOSwgcykgTkROQk9PU1RfUFBfSUYocCgxMDksIHMpLCBORE5CT09TVF9QUF9GT1JfMTA5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMDksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwOV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTEwLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDExMCwgcykgTkROQk9PU1RfUFBfSUYocCgxMTAsIHMpLCBORE5CT09TVF9QUF9GT1JfMTEwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMTAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExMF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTExLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDExMSwgcykgTkROQk9PU1RfUFBfSUYocCgxMTEsIHMpLCBORE5CT09TVF9QUF9GT1JfMTExLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMTEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExMV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTEyLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDExMiwgcykgTkROQk9PU1RfUFBfSUYocCgxMTIsIHMpLCBORE5CT09TVF9QUF9GT1JfMTEyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMTIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExMl9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTEzLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDExMywgcykgTkROQk9PU1RfUFBfSUYocCgxMTMsIHMpLCBORE5CT09TVF9QUF9GT1JfMTEzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMTMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExM19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTE0LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDExNCwgcykgTkROQk9PU1RfUFBfSUYocCgxMTQsIHMpLCBORE5CT09TVF9QUF9GT1JfMTE0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMTQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExNF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTE1LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDExNSwgcykgTkROQk9PU1RfUFBfSUYocCgxMTUsIHMpLCBORE5CT09TVF9QUF9GT1JfMTE1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMTUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExNV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTE2LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDExNiwgcykgTkROQk9PU1RfUFBfSUYocCgxMTYsIHMpLCBORE5CT09TVF9QUF9GT1JfMTE2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMTYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExNl9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTE3LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDExNywgcykgTkROQk9PU1RfUFBfSUYocCgxMTcsIHMpLCBORE5CT09TVF9QUF9GT1JfMTE3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMTcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExN19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTE4LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDExOCwgcykgTkROQk9PU1RfUFBfSUYocCgxMTgsIHMpLCBORE5CT09TVF9QUF9GT1JfMTE4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMTgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExOF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTE5LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDExOSwgcykgTkROQk9PU1RfUFBfSUYocCgxMTksIHMpLCBORE5CT09TVF9QUF9GT1JfMTE5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMTksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExOV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTIwLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEyMCwgcykgTkROQk9PU1RfUFBfSUYocCgxMjAsIHMpLCBORE5CT09TVF9QUF9GT1JfMTIwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMjAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyMF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTIxLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEyMSwgcykgTkROQk9PU1RfUFBfSUYocCgxMjEsIHMpLCBORE5CT09TVF9QUF9GT1JfMTIxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMjEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyMV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTIyLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEyMiwgcykgTkROQk9PU1RfUFBfSUYocCgxMjIsIHMpLCBORE5CT09TVF9QUF9GT1JfMTIyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMjIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyMl9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTIzLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEyMywgcykgTkROQk9PU1RfUFBfSUYocCgxMjMsIHMpLCBORE5CT09TVF9QUF9GT1JfMTIzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMjMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyM19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTI0LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEyNCwgcykgTkROQk9PU1RfUFBfSUYocCgxMjQsIHMpLCBORE5CT09TVF9QUF9GT1JfMTI0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMjQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyNF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTI1LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEyNSwgcykgTkROQk9PU1RfUFBfSUYocCgxMjUsIHMpLCBORE5CT09TVF9QUF9GT1JfMTI1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMjUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyNV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTI2LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEyNiwgcykgTkROQk9PU1RfUFBfSUYocCgxMjYsIHMpLCBORE5CT09TVF9QUF9GT1JfMTI2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMjYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyNl9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTI3LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEyNywgcykgTkROQk9PU1RfUFBfSUYocCgxMjcsIHMpLCBORE5CT09TVF9QUF9GT1JfMTI3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMjcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyN19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTI4LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEyOCwgcykgTkROQk9PU1RfUFBfSUYocCgxMjgsIHMpLCBORE5CT09TVF9QUF9GT1JfMTI4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMjgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyOF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTI5LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEyOSwgcykgTkROQk9PU1RfUFBfSUYocCgxMjksIHMpLCBORE5CT09TVF9QUF9GT1JfMTI5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMjksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyOV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTMwLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzMCwgcykgTkROQk9PU1RfUFBfSUYocCgxMzAsIHMpLCBORE5CT09TVF9QUF9GT1JfMTMwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMzAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzMF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTMxLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzMSwgcykgTkROQk9PU1RfUFBfSUYocCgxMzEsIHMpLCBORE5CT09TVF9QUF9GT1JfMTMxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMzEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzMV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTMyLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzMiwgcykgTkROQk9PU1RfUFBfSUYocCgxMzIsIHMpLCBORE5CT09TVF9QUF9GT1JfMTMyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMzIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzMl9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTMzLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzMywgcykgTkROQk9PU1RfUFBfSUYocCgxMzMsIHMpLCBORE5CT09TVF9QUF9GT1JfMTMzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMzMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzM19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTM0LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzNCwgcykgTkROQk9PU1RfUFBfSUYocCgxMzQsIHMpLCBORE5CT09TVF9QUF9GT1JfMTM0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMzQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzNF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTM1LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzNSwgcykgTkROQk9PU1RfUFBfSUYocCgxMzUsIHMpLCBORE5CT09TVF9QUF9GT1JfMTM1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMzUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzNV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTM2LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzNiwgcykgTkROQk9PU1RfUFBfSUYocCgxMzYsIHMpLCBORE5CT09TVF9QUF9GT1JfMTM2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMzYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzNl9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTM3LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzNywgcykgTkROQk9PU1RfUFBfSUYocCgxMzcsIHMpLCBORE5CT09TVF9QUF9GT1JfMTM3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMzcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzN19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTM4LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzOCwgcykgTkROQk9PU1RfUFBfSUYocCgxMzgsIHMpLCBORE5CT09TVF9QUF9GT1JfMTM4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMzgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzOF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTM5LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzOSwgcykgTkROQk9PU1RfUFBfSUYocCgxMzksIHMpLCBORE5CT09TVF9QUF9GT1JfMTM5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMzksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzOV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTQwLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE0MCwgcykgTkROQk9PU1RfUFBfSUYocCgxNDAsIHMpLCBORE5CT09TVF9QUF9GT1JfMTQwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNDAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0MF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTQxLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE0MSwgcykgTkROQk9PU1RfUFBfSUYocCgxNDEsIHMpLCBORE5CT09TVF9QUF9GT1JfMTQxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNDEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0MV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTQyLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE0MiwgcykgTkROQk9PU1RfUFBfSUYocCgxNDIsIHMpLCBORE5CT09TVF9QUF9GT1JfMTQyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNDIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0Ml9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTQzLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE0MywgcykgTkROQk9PU1RfUFBfSUYocCgxNDMsIHMpLCBORE5CT09TVF9QUF9GT1JfMTQzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNDMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0M19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTQ0LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE0NCwgcykgTkROQk9PU1RfUFBfSUYocCgxNDQsIHMpLCBORE5CT09TVF9QUF9GT1JfMTQ0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNDQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0NF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTQ1LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE0NSwgcykgTkROQk9PU1RfUFBfSUYocCgxNDUsIHMpLCBORE5CT09TVF9QUF9GT1JfMTQ1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNDUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0NV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTQ2LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE0NiwgcykgTkROQk9PU1RfUFBfSUYocCgxNDYsIHMpLCBORE5CT09TVF9QUF9GT1JfMTQ2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNDYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0Nl9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTQ3LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE0NywgcykgTkROQk9PU1RfUFBfSUYocCgxNDcsIHMpLCBORE5CT09TVF9QUF9GT1JfMTQ3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNDcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0N19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTQ4LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE0OCwgcykgTkROQk9PU1RfUFBfSUYocCgxNDgsIHMpLCBORE5CT09TVF9QUF9GT1JfMTQ4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNDgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0OF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTQ5LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE0OSwgcykgTkROQk9PU1RfUFBfSUYocCgxNDksIHMpLCBORE5CT09TVF9QUF9GT1JfMTQ5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNDksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0OV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTUwLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE1MCwgcykgTkROQk9PU1RfUFBfSUYocCgxNTAsIHMpLCBORE5CT09TVF9QUF9GT1JfMTUwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNTAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1MF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTUxLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE1MSwgcykgTkROQk9PU1RfUFBfSUYocCgxNTEsIHMpLCBORE5CT09TVF9QUF9GT1JfMTUxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNTEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1MV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTUyLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE1MiwgcykgTkROQk9PU1RfUFBfSUYocCgxNTIsIHMpLCBORE5CT09TVF9QUF9GT1JfMTUyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNTIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1Ml9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTUzLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE1MywgcykgTkROQk9PU1RfUFBfSUYocCgxNTMsIHMpLCBORE5CT09TVF9QUF9GT1JfMTUzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNTMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1M19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTU0LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE1NCwgcykgTkROQk9PU1RfUFBfSUYocCgxNTQsIHMpLCBORE5CT09TVF9QUF9GT1JfMTU0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNTQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1NF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTU1LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE1NSwgcykgTkROQk9PU1RfUFBfSUYocCgxNTUsIHMpLCBORE5CT09TVF9QUF9GT1JfMTU1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNTUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1NV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTU2LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE1NiwgcykgTkROQk9PU1RfUFBfSUYocCgxNTYsIHMpLCBORE5CT09TVF9QUF9GT1JfMTU2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNTYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1Nl9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTU3LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE1NywgcykgTkROQk9PU1RfUFBfSUYocCgxNTcsIHMpLCBORE5CT09TVF9QUF9GT1JfMTU3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNTcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1N19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTU4LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE1OCwgcykgTkROQk9PU1RfUFBfSUYocCgxNTgsIHMpLCBORE5CT09TVF9QUF9GT1JfMTU4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNTgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1OF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTU5LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE1OSwgcykgTkROQk9PU1RfUFBfSUYocCgxNTksIHMpLCBORE5CT09TVF9QUF9GT1JfMTU5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNTksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1OV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTYwLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2MCwgcykgTkROQk9PU1RfUFBfSUYocCgxNjAsIHMpLCBORE5CT09TVF9QUF9GT1JfMTYwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNjAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2MF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTYxLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2MSwgcykgTkROQk9PU1RfUFBfSUYocCgxNjEsIHMpLCBORE5CT09TVF9QUF9GT1JfMTYxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNjEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2MV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTYyLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2MiwgcykgTkROQk9PU1RfUFBfSUYocCgxNjIsIHMpLCBORE5CT09TVF9QUF9GT1JfMTYyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNjIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2Ml9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTYzLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2MywgcykgTkROQk9PU1RfUFBfSUYocCgxNjMsIHMpLCBORE5CT09TVF9QUF9GT1JfMTYzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNjMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2M19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTY0LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2NCwgcykgTkROQk9PU1RfUFBfSUYocCgxNjQsIHMpLCBORE5CT09TVF9QUF9GT1JfMTY0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNjQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2NF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTY1LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2NSwgcykgTkROQk9PU1RfUFBfSUYocCgxNjUsIHMpLCBORE5CT09TVF9QUF9GT1JfMTY1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNjUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2NV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTY2LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2NiwgcykgTkROQk9PU1RfUFBfSUYocCgxNjYsIHMpLCBORE5CT09TVF9QUF9GT1JfMTY2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNjYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2Nl9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTY3LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2NywgcykgTkROQk9PU1RfUFBfSUYocCgxNjcsIHMpLCBORE5CT09TVF9QUF9GT1JfMTY3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNjcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2N19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTY4LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2OCwgcykgTkROQk9PU1RfUFBfSUYocCgxNjgsIHMpLCBORE5CT09TVF9QUF9GT1JfMTY4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNjgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2OF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTY5LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2OSwgcykgTkROQk9PU1RfUFBfSUYocCgxNjksIHMpLCBORE5CT09TVF9QUF9GT1JfMTY5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNjksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2OV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTcwLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE3MCwgcykgTkROQk9PU1RfUFBfSUYocCgxNzAsIHMpLCBORE5CT09TVF9QUF9GT1JfMTcwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNzAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3MF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTcxLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE3MSwgcykgTkROQk9PU1RfUFBfSUYocCgxNzEsIHMpLCBORE5CT09TVF9QUF9GT1JfMTcxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNzEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3MV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTcyLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE3MiwgcykgTkROQk9PU1RfUFBfSUYocCgxNzIsIHMpLCBORE5CT09TVF9QUF9GT1JfMTcyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNzIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3Ml9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTczLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE3MywgcykgTkROQk9PU1RfUFBfSUYocCgxNzMsIHMpLCBORE5CT09TVF9QUF9GT1JfMTczLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNzMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3M19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTc0LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE3NCwgcykgTkROQk9PU1RfUFBfSUYocCgxNzQsIHMpLCBORE5CT09TVF9QUF9GT1JfMTc0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNzQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3NF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTc1LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE3NSwgcykgTkROQk9PU1RfUFBfSUYocCgxNzUsIHMpLCBORE5CT09TVF9QUF9GT1JfMTc1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNzUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3NV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTc2LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE3NiwgcykgTkROQk9PU1RfUFBfSUYocCgxNzYsIHMpLCBORE5CT09TVF9QUF9GT1JfMTc2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNzYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3Nl9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTc3LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE3NywgcykgTkROQk9PU1RfUFBfSUYocCgxNzcsIHMpLCBORE5CT09TVF9QUF9GT1JfMTc3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNzcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3N19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTc4LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE3OCwgcykgTkROQk9PU1RfUFBfSUYocCgxNzgsIHMpLCBORE5CT09TVF9QUF9GT1JfMTc4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNzgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3OF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTc5LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE3OSwgcykgTkROQk9PU1RfUFBfSUYocCgxNzksIHMpLCBORE5CT09TVF9QUF9GT1JfMTc5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNzksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3OV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTgwLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE4MCwgcykgTkROQk9PU1RfUFBfSUYocCgxODAsIHMpLCBORE5CT09TVF9QUF9GT1JfMTgwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxODAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4MF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTgxLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE4MSwgcykgTkROQk9PU1RfUFBfSUYocCgxODEsIHMpLCBORE5CT09TVF9QUF9GT1JfMTgxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxODEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4MV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTgyLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE4MiwgcykgTkROQk9PU1RfUFBfSUYocCgxODIsIHMpLCBORE5CT09TVF9QUF9GT1JfMTgyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxODIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4Ml9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTgzLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE4MywgcykgTkROQk9PU1RfUFBfSUYocCgxODMsIHMpLCBORE5CT09TVF9QUF9GT1JfMTgzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxODMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4M19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTg0LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE4NCwgcykgTkROQk9PU1RfUFBfSUYocCgxODQsIHMpLCBORE5CT09TVF9QUF9GT1JfMTg0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxODQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4NF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTg1LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE4NSwgcykgTkROQk9PU1RfUFBfSUYocCgxODUsIHMpLCBORE5CT09TVF9QUF9GT1JfMTg1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxODUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4NV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTg2LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE4NiwgcykgTkROQk9PU1RfUFBfSUYocCgxODYsIHMpLCBORE5CT09TVF9QUF9GT1JfMTg2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxODYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4Nl9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTg3LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE4NywgcykgTkROQk9PU1RfUFBfSUYocCgxODcsIHMpLCBORE5CT09TVF9QUF9GT1JfMTg3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxODcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4N19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTg4LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE4OCwgcykgTkROQk9PU1RfUFBfSUYocCgxODgsIHMpLCBORE5CT09TVF9QUF9GT1JfMTg4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxODgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4OF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTg5LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE4OSwgcykgTkROQk9PU1RfUFBfSUYocCgxODksIHMpLCBORE5CT09TVF9QUF9GT1JfMTg5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxODksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4OV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTkwLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5MCwgcykgTkROQk9PU1RfUFBfSUYocCgxOTAsIHMpLCBORE5CT09TVF9QUF9GT1JfMTkwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxOTAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5MF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTkxLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5MSwgcykgTkROQk9PU1RfUFBfSUYocCgxOTEsIHMpLCBORE5CT09TVF9QUF9GT1JfMTkxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxOTEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5MV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTkyLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5MiwgcykgTkROQk9PU1RfUFBfSUYocCgxOTIsIHMpLCBORE5CT09TVF9QUF9GT1JfMTkyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxOTIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5Ml9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTkzLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5MywgcykgTkROQk9PU1RfUFBfSUYocCgxOTMsIHMpLCBORE5CT09TVF9QUF9GT1JfMTkzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxOTMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5M19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTk0LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5NCwgcykgTkROQk9PU1RfUFBfSUYocCgxOTQsIHMpLCBORE5CT09TVF9QUF9GT1JfMTk0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxOTQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5NF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTk1LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5NSwgcykgTkROQk9PU1RfUFBfSUYocCgxOTUsIHMpLCBORE5CT09TVF9QUF9GT1JfMTk1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxOTUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5NV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTk2LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5NiwgcykgTkROQk9PU1RfUFBfSUYocCgxOTYsIHMpLCBORE5CT09TVF9QUF9GT1JfMTk2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxOTYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5Nl9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTk3LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5NywgcykgTkROQk9PU1RfUFBfSUYocCgxOTcsIHMpLCBORE5CT09TVF9QUF9GT1JfMTk3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxOTcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5N19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTk4LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5OCwgcykgTkROQk9PU1RfUFBfSUYocCgxOTgsIHMpLCBORE5CT09TVF9QUF9GT1JfMTk4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxOTgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5OF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTk5LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5OSwgcykgTkROQk9PU1RfUFBfSUYocCgxOTksIHMpLCBORE5CT09TVF9QUF9GT1JfMTk5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxOTksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5OV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjAwLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIwMCwgcykgTkROQk9PU1RfUFBfSUYocCgyMDAsIHMpLCBORE5CT09TVF9QUF9GT1JfMjAwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMDAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwMF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjAxLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIwMSwgcykgTkROQk9PU1RfUFBfSUYocCgyMDEsIHMpLCBORE5CT09TVF9QUF9GT1JfMjAxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMDEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwMV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjAyLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIwMiwgcykgTkROQk9PU1RfUFBfSUYocCgyMDIsIHMpLCBORE5CT09TVF9QUF9GT1JfMjAyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMDIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwMl9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjAzLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIwMywgcykgTkROQk9PU1RfUFBfSUYocCgyMDMsIHMpLCBORE5CT09TVF9QUF9GT1JfMjAzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMDMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwM19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjA0LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIwNCwgcykgTkROQk9PU1RfUFBfSUYocCgyMDQsIHMpLCBORE5CT09TVF9QUF9GT1JfMjA0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMDQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwNF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjA1LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIwNSwgcykgTkROQk9PU1RfUFBfSUYocCgyMDUsIHMpLCBORE5CT09TVF9QUF9GT1JfMjA1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMDUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwNV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjA2LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIwNiwgcykgTkROQk9PU1RfUFBfSUYocCgyMDYsIHMpLCBORE5CT09TVF9QUF9GT1JfMjA2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMDYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwNl9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjA3LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIwNywgcykgTkROQk9PU1RfUFBfSUYocCgyMDcsIHMpLCBORE5CT09TVF9QUF9GT1JfMjA3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMDcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwN19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjA4LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIwOCwgcykgTkROQk9PU1RfUFBfSUYocCgyMDgsIHMpLCBORE5CT09TVF9QUF9GT1JfMjA4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMDgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwOF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjA5LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIwOSwgcykgTkROQk9PU1RfUFBfSUYocCgyMDksIHMpLCBORE5CT09TVF9QUF9GT1JfMjA5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMDksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwOV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjEwLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIxMCwgcykgTkROQk9PU1RfUFBfSUYocCgyMTAsIHMpLCBORE5CT09TVF9QUF9GT1JfMjEwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMTAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxMF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjExLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIxMSwgcykgTkROQk9PU1RfUFBfSUYocCgyMTEsIHMpLCBORE5CT09TVF9QUF9GT1JfMjExLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMTEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxMV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjEyLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIxMiwgcykgTkROQk9PU1RfUFBfSUYocCgyMTIsIHMpLCBORE5CT09TVF9QUF9GT1JfMjEyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMTIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxMl9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjEzLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIxMywgcykgTkROQk9PU1RfUFBfSUYocCgyMTMsIHMpLCBORE5CT09TVF9QUF9GT1JfMjEzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMTMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxM19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjE0LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIxNCwgcykgTkROQk9PU1RfUFBfSUYocCgyMTQsIHMpLCBORE5CT09TVF9QUF9GT1JfMjE0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMTQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxNF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjE1LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIxNSwgcykgTkROQk9PU1RfUFBfSUYocCgyMTUsIHMpLCBORE5CT09TVF9QUF9GT1JfMjE1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMTUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxNV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjE2LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIxNiwgcykgTkROQk9PU1RfUFBfSUYocCgyMTYsIHMpLCBORE5CT09TVF9QUF9GT1JfMjE2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMTYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxNl9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjE3LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIxNywgcykgTkROQk9PU1RfUFBfSUYocCgyMTcsIHMpLCBORE5CT09TVF9QUF9GT1JfMjE3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMTcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxN19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjE4LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIxOCwgcykgTkROQk9PU1RfUFBfSUYocCgyMTgsIHMpLCBORE5CT09TVF9QUF9GT1JfMjE4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMTgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxOF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjE5LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIxOSwgcykgTkROQk9PU1RfUFBfSUYocCgyMTksIHMpLCBORE5CT09TVF9QUF9GT1JfMjE5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMTksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxOV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjIwLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyMCwgcykgTkROQk9PU1RfUFBfSUYocCgyMjAsIHMpLCBORE5CT09TVF9QUF9GT1JfMjIwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMjAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyMF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjIxLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyMSwgcykgTkROQk9PU1RfUFBfSUYocCgyMjEsIHMpLCBORE5CT09TVF9QUF9GT1JfMjIxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMjEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyMV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjIyLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyMiwgcykgTkROQk9PU1RfUFBfSUYocCgyMjIsIHMpLCBORE5CT09TVF9QUF9GT1JfMjIyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMjIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyMl9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjIzLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyMywgcykgTkROQk9PU1RfUFBfSUYocCgyMjMsIHMpLCBORE5CT09TVF9QUF9GT1JfMjIzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMjMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyM19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjI0LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyNCwgcykgTkROQk9PU1RfUFBfSUYocCgyMjQsIHMpLCBORE5CT09TVF9QUF9GT1JfMjI0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMjQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyNF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjI1LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyNSwgcykgTkROQk9PU1RfUFBfSUYocCgyMjUsIHMpLCBORE5CT09TVF9QUF9GT1JfMjI1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMjUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyNV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjI2LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyNiwgcykgTkROQk9PU1RfUFBfSUYocCgyMjYsIHMpLCBORE5CT09TVF9QUF9GT1JfMjI2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMjYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyNl9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjI3LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyNywgcykgTkROQk9PU1RfUFBfSUYocCgyMjcsIHMpLCBORE5CT09TVF9QUF9GT1JfMjI3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMjcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyN19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjI4LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyOCwgcykgTkROQk9PU1RfUFBfSUYocCgyMjgsIHMpLCBORE5CT09TVF9QUF9GT1JfMjI4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMjgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyOF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjI5LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyOSwgcykgTkROQk9PU1RfUFBfSUYocCgyMjksIHMpLCBORE5CT09TVF9QUF9GT1JfMjI5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMjksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyOV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjMwLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIzMCwgcykgTkROQk9PU1RfUFBfSUYocCgyMzAsIHMpLCBORE5CT09TVF9QUF9GT1JfMjMwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMzAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzMF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjMxLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIzMSwgcykgTkROQk9PU1RfUFBfSUYocCgyMzEsIHMpLCBORE5CT09TVF9QUF9GT1JfMjMxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMzEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzMV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjMyLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIzMiwgcykgTkROQk9PU1RfUFBfSUYocCgyMzIsIHMpLCBORE5CT09TVF9QUF9GT1JfMjMyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMzIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzMl9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjMzLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIzMywgcykgTkROQk9PU1RfUFBfSUYocCgyMzMsIHMpLCBORE5CT09TVF9QUF9GT1JfMjMzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMzMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzM19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjM0LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIzNCwgcykgTkROQk9PU1RfUFBfSUYocCgyMzQsIHMpLCBORE5CT09TVF9QUF9GT1JfMjM0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMzQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzNF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjM1LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIzNSwgcykgTkROQk9PU1RfUFBfSUYocCgyMzUsIHMpLCBORE5CT09TVF9QUF9GT1JfMjM1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMzUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzNV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjM2LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIzNiwgcykgTkROQk9PU1RfUFBfSUYocCgyMzYsIHMpLCBORE5CT09TVF9QUF9GT1JfMjM2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMzYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzNl9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjM3LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIzNywgcykgTkROQk9PU1RfUFBfSUYocCgyMzcsIHMpLCBORE5CT09TVF9QUF9GT1JfMjM3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMzcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzN19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjM4LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIzOCwgcykgTkROQk9PU1RfUFBfSUYocCgyMzgsIHMpLCBORE5CT09TVF9QUF9GT1JfMjM4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMzgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzOF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjM5LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIzOSwgcykgTkROQk9PU1RfUFBfSUYocCgyMzksIHMpLCBORE5CT09TVF9QUF9GT1JfMjM5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMzksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzOV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjQwLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI0MCwgcykgTkROQk9PU1RfUFBfSUYocCgyNDAsIHMpLCBORE5CT09TVF9QUF9GT1JfMjQwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyNDAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0MF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjQxLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI0MSwgcykgTkROQk9PU1RfUFBfSUYocCgyNDEsIHMpLCBORE5CT09TVF9QUF9GT1JfMjQxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyNDEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0MV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjQyLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI0MiwgcykgTkROQk9PU1RfUFBfSUYocCgyNDIsIHMpLCBORE5CT09TVF9QUF9GT1JfMjQyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyNDIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0Ml9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjQzLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI0MywgcykgTkROQk9PU1RfUFBfSUYocCgyNDMsIHMpLCBORE5CT09TVF9QUF9GT1JfMjQzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyNDMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0M19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjQ0LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI0NCwgcykgTkROQk9PU1RfUFBfSUYocCgyNDQsIHMpLCBORE5CT09TVF9QUF9GT1JfMjQ0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyNDQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0NF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjQ1LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI0NSwgcykgTkROQk9PU1RfUFBfSUYocCgyNDUsIHMpLCBORE5CT09TVF9QUF9GT1JfMjQ1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyNDUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0NV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjQ2LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI0NiwgcykgTkROQk9PU1RfUFBfSUYocCgyNDYsIHMpLCBORE5CT09TVF9QUF9GT1JfMjQ2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyNDYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0Nl9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjQ3LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI0NywgcykgTkROQk9PU1RfUFBfSUYocCgyNDcsIHMpLCBORE5CT09TVF9QUF9GT1JfMjQ3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyNDcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0N19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjQ4LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI0OCwgcykgTkROQk9PU1RfUFBfSUYocCgyNDgsIHMpLCBORE5CT09TVF9QUF9GT1JfMjQ4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyNDgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0OF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjQ5LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI0OSwgcykgTkROQk9PU1RfUFBfSUYocCgyNDksIHMpLCBORE5CT09TVF9QUF9GT1JfMjQ5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyNDksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0OV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjUwLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI1MCwgcykgTkROQk9PU1RfUFBfSUYocCgyNTAsIHMpLCBORE5CT09TVF9QUF9GT1JfMjUwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyNTAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1MF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjUxLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI1MSwgcykgTkROQk9PU1RfUFBfSUYocCgyNTEsIHMpLCBORE5CT09TVF9QUF9GT1JfMjUxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyNTEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1MV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjUyLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI1MiwgcykgTkROQk9PU1RfUFBfSUYocCgyNTIsIHMpLCBORE5CT09TVF9QUF9GT1JfMjUyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyNTIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1Ml9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjUzLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI1MywgcykgTkROQk9PU1RfUFBfSUYocCgyNTMsIHMpLCBORE5CT09TVF9QUF9GT1JfMjUzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyNTMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1M19JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjU0LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI1NCwgcykgTkROQk9PU1RfUFBfSUYocCgyNTQsIHMpLCBORE5CT09TVF9QUF9GT1JfMjU0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyNTQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1NF9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjU1LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI1NSwgcykgTkROQk9PU1RfUFBfSUYocCgyNTUsIHMpLCBORE5CT09TVF9QUF9GT1JfMjU1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyNTUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1NV9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjU2LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI1NiwgcykgTkROQk9PU1RfUFBfSUYocCgyNTYsIHMpLCBORE5CT09TVF9QUF9GT1JfMjU2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyNTYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1Nl9JKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjU3LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI1NywgcykgTkROQk9PU1RfUFBfSUYocCgyNTcsIHMpLCBORE5CT09TVF9QUF9GT1JfMjU3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyNTcsIHMpLCBwLCBvLCBtKQotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9kZXRhaWwvZm9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZGV0YWlsL2Zvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVlZjM3NTkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9kZXRhaWwvZm9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUzNiArMCwwIEBACi0jIC8qIENvcHlyaWdodCAoQykgMjAwMQotIyAgKiBIb3VzZW1hcnF1ZSBPeQotIyAgKiBodHRwOi8vd3d3LmhvdXNlbWFycXVlLmNvbQotIyAgKgotIyAgKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKi8KLSMKLSMgLyogUmV2aXNlZCBieSBQYXVsIE1lbnNvbmlkZXMgKDIwMDIpICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9SRVBFVElUSU9OX0RFVEFJTF9GT1JfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfUkVQRVRJVElPTl9ERVRBSUxfRk9SX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9leHByX2lpZi5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2lpZi5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9sb2dpY2FsL2Jvb2wuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvZWF0LmhwcD4KLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8xX0MoTkROQk9PU1RfUFBfQk9PTChwKDIsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8yX0MoTkROQk9PU1RfUFBfQk9PTChwKDMsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl8zX0MoTkROQk9PU1RfUFBfQk9PTChwKDQsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl80X0MoTkROQk9PU1RfUFBfQk9PTChwKDUsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl81X0MoTkROQk9PU1RfUFBfQk9PTChwKDYsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl82X0MoTkROQk9PU1RfUFBfQk9PTChwKDcsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl83X0MoTkROQk9PU1RfUFBfQk9PTChwKDgsIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl84X0MoTkROQk9PU1RfUFBfQk9PTChwKDksIHMpKSwgcywgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0ZPUl85X0MoTkROQk9PU1RfUFBfQk9PTChwKDEwLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEwX0MoTkROQk9PU1RfUFBfQk9PTChwKDExLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzExX0MoTkROQk9PU1RfUFBfQk9PTChwKDEyLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEyX0MoTkROQk9PU1RfUFBfQk9PTChwKDEzLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzEzX0MoTkROQk9PU1RfUFBfQk9PTChwKDE0LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE0X0MoTkROQk9PU1RfUFBfQk9PTChwKDE1LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE1X0MoTkROQk9PU1RfUFBfQk9PTChwKDE2LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE2X0MoTkROQk9PU1RfUFBfQk9PTChwKDE3LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE3X0MoTkROQk9PU1RfUFBfQk9PTChwKDE4LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE4X0MoTkROQk9PU1RfUFBfQk9PTChwKDE5LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzE5X0MoTkROQk9PU1RfUFBfQk9PTChwKDIwLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIwX0MoTkROQk9PU1RfUFBfQk9PTChwKDIxLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIxX0MoTkROQk9PU1RfUFBfQk9PTChwKDIyLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIyX0MoTkROQk9PU1RfUFBfQk9PTChwKDIzLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzIzX0MoTkROQk9PU1RfUFBfQk9PTChwKDI0LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI0X0MoTkROQk9PU1RfUFBfQk9PTChwKDI1LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI1X0MoTkROQk9PU1RfUFBfQk9PTChwKDI2LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI2X0MoTkROQk9PU1RfUFBfQk9PTChwKDI3LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI3X0MoTkROQk9PU1RfUFBfQk9PTChwKDI4LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI4X0MoTkROQk9PU1RfUFBfQk9PTChwKDI5LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzI5X0MoTkROQk9PU1RfUFBfQk9PTChwKDMwLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzMwX0MoTkROQk9PU1RfUFBfQk9PTChwKDMxLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzMxX0MoTkROQk9PU1RfUFBfQk9PTChwKDMyLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzMyX0MoTkROQk9PU1RfUFBfQk9PTChwKDMzLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzMzX0MoTkROQk9PU1RfUFBfQk9PTChwKDM0LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzM0X0MoTkROQk9PU1RfUFBfQk9PTChwKDM1LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzM1X0MoTkROQk9PU1RfUFBfQk9PTChwKDM2LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzM2X0MoTkROQk9PU1RfUFBfQk9PTChwKDM3LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzM3X0MoTkROQk9PU1RfUFBfQk9PTChwKDM4LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzM4X0MoTkROQk9PU1RfUFBfQk9PTChwKDM5LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzM5X0MoTkROQk9PU1RfUFBfQk9PTChwKDQwLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzQwX0MoTkROQk9PU1RfUFBfQk9PTChwKDQxLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzQxX0MoTkROQk9PU1RfUFBfQk9PTChwKDQyLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzQyX0MoTkROQk9PU1RfUFBfQk9PTChwKDQzLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzQzX0MoTkROQk9PU1RfUFBfQk9PTChwKDQ0LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzQ0X0MoTkROQk9PU1RfUFBfQk9PTChwKDQ1LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzQ1X0MoTkROQk9PU1RfUFBfQk9PTChwKDQ2LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzQ2X0MoTkROQk9PU1RfUFBfQk9PTChwKDQ3LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzQ3X0MoTkROQk9PU1RfUFBfQk9PTChwKDQ4LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzQ4X0MoTkROQk9PU1RfUFBfQk9PTChwKDQ5LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzQ5X0MoTkROQk9PU1RfUFBfQk9PTChwKDUwLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzUwX0MoTkROQk9PU1RfUFBfQk9PTChwKDUxLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzUxX0MoTkROQk9PU1RfUFBfQk9PTChwKDUyLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzUyX0MoTkROQk9PU1RfUFBfQk9PTChwKDUzLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzUzX0MoTkROQk9PU1RfUFBfQk9PTChwKDU0LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzU0X0MoTkROQk9PU1RfUFBfQk9PTChwKDU1LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzU1X0MoTkROQk9PU1RfUFBfQk9PTChwKDU2LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzU2X0MoTkROQk9PU1RfUFBfQk9PTChwKDU3LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzU3X0MoTkROQk9PU1RfUFBfQk9PTChwKDU4LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzU4X0MoTkROQk9PU1RfUFBfQk9PTChwKDU5LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzU5X0MoTkROQk9PU1RfUFBfQk9PTChwKDYwLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzYwX0MoTkROQk9PU1RfUFBfQk9PTChwKDYxLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzYxX0MoTkROQk9PU1RfUFBfQk9PTChwKDYyLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzYyX0MoTkROQk9PU1RfUFBfQk9PTChwKDYzLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzYzX0MoTkROQk9PU1RfUFBfQk9PTChwKDY0LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzY0X0MoTkROQk9PU1RfUFBfQk9PTChwKDY1LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzY1X0MoTkROQk9PU1RfUFBfQk9PTChwKDY2LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzY2X0MoTkROQk9PU1RfUFBfQk9PTChwKDY3LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzY3X0MoTkROQk9PU1RfUFBfQk9PTChwKDY4LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzY4X0MoTkROQk9PU1RfUFBfQk9PTChwKDY5LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzY5X0MoTkROQk9PU1RfUFBfQk9PTChwKDcwLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzcwX0MoTkROQk9PU1RfUFBfQk9PTChwKDcxLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzcxX0MoTkROQk9PU1RfUFBfQk9PTChwKDcyLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzcyX0MoTkROQk9PU1RfUFBfQk9PTChwKDczLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzczX0MoTkROQk9PU1RfUFBfQk9PTChwKDc0LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzc0X0MoTkROQk9PU1RfUFBfQk9PTChwKDc1LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzc1X0MoTkROQk9PU1RfUFBfQk9PTChwKDc2LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzc2X0MoTkROQk9PU1RfUFBfQk9PTChwKDc3LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzc3X0MoTkROQk9PU1RfUFBfQk9PTChwKDc4LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzc4X0MoTkROQk9PU1RfUFBfQk9PTChwKDc5LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzc5X0MoTkROQk9PU1RfUFBfQk9PTChwKDgwLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzgwX0MoTkROQk9PU1RfUFBfQk9PTChwKDgxLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzgxX0MoTkROQk9PU1RfUFBfQk9PTChwKDgyLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzgyX0MoTkROQk9PU1RfUFBfQk9PTChwKDgzLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzgzX0MoTkROQk9PU1RfUFBfQk9PTChwKDg0LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzg0X0MoTkROQk9PU1RfUFBfQk9PTChwKDg1LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzg1X0MoTkROQk9PU1RfUFBfQk9PTChwKDg2LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzg2X0MoTkROQk9PU1RfUFBfQk9PTChwKDg3LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzg3X0MoTkROQk9PU1RfUFBfQk9PTChwKDg4LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzg4X0MoTkROQk9PU1RfUFBfQk9PTChwKDg5LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzg5X0MoTkROQk9PU1RfUFBfQk9PTChwKDkwLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzkwX0MoTkROQk9PU1RfUFBfQk9PTChwKDkxLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzkxX0MoTkROQk9PU1RfUFBfQk9PTChwKDkyLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzkyX0MoTkROQk9PU1RfUFBfQk9PTChwKDkzLCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzkzX0MoTkROQk9PU1RfUFBfQk9PTChwKDk0LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzk0X0MoTkROQk9PU1RfUFBfQk9PTChwKDk1LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzk1X0MoTkROQk9PU1RfUFBfQk9PTChwKDk2LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzk2X0MoTkROQk9PU1RfUFBfQk9PTChwKDk3LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzk3X0MoTkROQk9PU1RfUFBfQk9PTChwKDk4LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzk4X0MoTkROQk9PU1RfUFBfQk9PTChwKDk5LCBzKSksIHMsIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRk9SXzk5X0MoTkROQk9PU1RfUFBfQk9PTChwKDEwMCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwMChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTAwX0MoTkROQk9PU1RfUFBfQk9PTChwKDEwMSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwMShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTAxX0MoTkROQk9PU1RfUFBfQk9PTChwKDEwMiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwMihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTAyX0MoTkROQk9PU1RfUFBfQk9PTChwKDEwMywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwMyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTAzX0MoTkROQk9PU1RfUFBfQk9PTChwKDEwNCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwNChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTA0X0MoTkROQk9PU1RfUFBfQk9PTChwKDEwNSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwNShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTA1X0MoTkROQk9PU1RfUFBfQk9PTChwKDEwNiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwNihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTA2X0MoTkROQk9PU1RfUFBfQk9PTChwKDEwNywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwNyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTA3X0MoTkROQk9PU1RfUFBfQk9PTChwKDEwOCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwOChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTA4X0MoTkROQk9PU1RfUFBfQk9PTChwKDEwOSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwOShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTA5X0MoTkROQk9PU1RfUFBfQk9PTChwKDExMCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExMChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTEwX0MoTkROQk9PU1RfUFBfQk9PTChwKDExMSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExMShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTExX0MoTkROQk9PU1RfUFBfQk9PTChwKDExMiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExMihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTEyX0MoTkROQk9PU1RfUFBfQk9PTChwKDExMywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExMyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTEzX0MoTkROQk9PU1RfUFBfQk9PTChwKDExNCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExNChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTE0X0MoTkROQk9PU1RfUFBfQk9PTChwKDExNSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExNShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTE1X0MoTkROQk9PU1RfUFBfQk9PTChwKDExNiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExNihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTE2X0MoTkROQk9PU1RfUFBfQk9PTChwKDExNywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExNyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTE3X0MoTkROQk9PU1RfUFBfQk9PTChwKDExOCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExOChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTE4X0MoTkROQk9PU1RfUFBfQk9PTChwKDExOSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExOShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTE5X0MoTkROQk9PU1RfUFBfQk9PTChwKDEyMCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyMChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTIwX0MoTkROQk9PU1RfUFBfQk9PTChwKDEyMSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyMShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTIxX0MoTkROQk9PU1RfUFBfQk9PTChwKDEyMiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyMihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTIyX0MoTkROQk9PU1RfUFBfQk9PTChwKDEyMywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyMyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTIzX0MoTkROQk9PU1RfUFBfQk9PTChwKDEyNCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyNChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTI0X0MoTkROQk9PU1RfUFBfQk9PTChwKDEyNSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyNShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTI1X0MoTkROQk9PU1RfUFBfQk9PTChwKDEyNiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyNihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTI2X0MoTkROQk9PU1RfUFBfQk9PTChwKDEyNywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyNyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTI3X0MoTkROQk9PU1RfUFBfQk9PTChwKDEyOCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyOChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTI4X0MoTkROQk9PU1RfUFBfQk9PTChwKDEyOSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyOShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTI5X0MoTkROQk9PU1RfUFBfQk9PTChwKDEzMCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzMChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTMwX0MoTkROQk9PU1RfUFBfQk9PTChwKDEzMSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzMShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTMxX0MoTkROQk9PU1RfUFBfQk9PTChwKDEzMiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzMihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTMyX0MoTkROQk9PU1RfUFBfQk9PTChwKDEzMywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzMyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTMzX0MoTkROQk9PU1RfUFBfQk9PTChwKDEzNCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzNChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTM0X0MoTkROQk9PU1RfUFBfQk9PTChwKDEzNSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzNShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTM1X0MoTkROQk9PU1RfUFBfQk9PTChwKDEzNiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzNihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTM2X0MoTkROQk9PU1RfUFBfQk9PTChwKDEzNywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzNyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTM3X0MoTkROQk9PU1RfUFBfQk9PTChwKDEzOCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzOChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTM4X0MoTkROQk9PU1RfUFBfQk9PTChwKDEzOSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzOShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTM5X0MoTkROQk9PU1RfUFBfQk9PTChwKDE0MCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0MChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTQwX0MoTkROQk9PU1RfUFBfQk9PTChwKDE0MSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0MShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTQxX0MoTkROQk9PU1RfUFBfQk9PTChwKDE0MiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTQyX0MoTkROQk9PU1RfUFBfQk9PTChwKDE0MywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0MyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTQzX0MoTkROQk9PU1RfUFBfQk9PTChwKDE0NCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0NChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTQ0X0MoTkROQk9PU1RfUFBfQk9PTChwKDE0NSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTQ1X0MoTkROQk9PU1RfUFBfQk9PTChwKDE0NiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0NihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTQ2X0MoTkROQk9PU1RfUFBfQk9PTChwKDE0NywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0NyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTQ3X0MoTkROQk9PU1RfUFBfQk9PTChwKDE0OCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0OChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTQ4X0MoTkROQk9PU1RfUFBfQk9PTChwKDE0OSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0OShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTQ5X0MoTkROQk9PU1RfUFBfQk9PTChwKDE1MCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1MChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTUwX0MoTkROQk9PU1RfUFBfQk9PTChwKDE1MSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1MShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTUxX0MoTkROQk9PU1RfUFBfQk9PTChwKDE1MiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTUyX0MoTkROQk9PU1RfUFBfQk9PTChwKDE1MywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1MyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTUzX0MoTkROQk9PU1RfUFBfQk9PTChwKDE1NCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1NChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTU0X0MoTkROQk9PU1RfUFBfQk9PTChwKDE1NSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTU1X0MoTkROQk9PU1RfUFBfQk9PTChwKDE1NiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1NihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTU2X0MoTkROQk9PU1RfUFBfQk9PTChwKDE1NywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1NyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTU3X0MoTkROQk9PU1RfUFBfQk9PTChwKDE1OCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1OChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTU4X0MoTkROQk9PU1RfUFBfQk9PTChwKDE1OSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1OShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTU5X0MoTkROQk9PU1RfUFBfQk9PTChwKDE2MCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2MChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTYwX0MoTkROQk9PU1RfUFBfQk9PTChwKDE2MSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2MShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTYxX0MoTkROQk9PU1RfUFBfQk9PTChwKDE2MiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTYyX0MoTkROQk9PU1RfUFBfQk9PTChwKDE2MywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2MyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTYzX0MoTkROQk9PU1RfUFBfQk9PTChwKDE2NCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2NChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTY0X0MoTkROQk9PU1RfUFBfQk9PTChwKDE2NSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTY1X0MoTkROQk9PU1RfUFBfQk9PTChwKDE2NiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2NihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTY2X0MoTkROQk9PU1RfUFBfQk9PTChwKDE2NywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2NyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTY3X0MoTkROQk9PU1RfUFBfQk9PTChwKDE2OCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2OChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTY4X0MoTkROQk9PU1RfUFBfQk9PTChwKDE2OSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2OShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTY5X0MoTkROQk9PU1RfUFBfQk9PTChwKDE3MCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3MChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTcwX0MoTkROQk9PU1RfUFBfQk9PTChwKDE3MSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3MShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTcxX0MoTkROQk9PU1RfUFBfQk9PTChwKDE3MiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTcyX0MoTkROQk9PU1RfUFBfQk9PTChwKDE3MywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3MyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTczX0MoTkROQk9PU1RfUFBfQk9PTChwKDE3NCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3NChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTc0X0MoTkROQk9PU1RfUFBfQk9PTChwKDE3NSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTc1X0MoTkROQk9PU1RfUFBfQk9PTChwKDE3NiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3NihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTc2X0MoTkROQk9PU1RfUFBfQk9PTChwKDE3NywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3NyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTc3X0MoTkROQk9PU1RfUFBfQk9PTChwKDE3OCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3OChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTc4X0MoTkROQk9PU1RfUFBfQk9PTChwKDE3OSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3OShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTc5X0MoTkROQk9PU1RfUFBfQk9PTChwKDE4MCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4MChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTgwX0MoTkROQk9PU1RfUFBfQk9PTChwKDE4MSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4MShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTgxX0MoTkROQk9PU1RfUFBfQk9PTChwKDE4MiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTgyX0MoTkROQk9PU1RfUFBfQk9PTChwKDE4MywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4MyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTgzX0MoTkROQk9PU1RfUFBfQk9PTChwKDE4NCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4NChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTg0X0MoTkROQk9PU1RfUFBfQk9PTChwKDE4NSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTg1X0MoTkROQk9PU1RfUFBfQk9PTChwKDE4NiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4NihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTg2X0MoTkROQk9PU1RfUFBfQk9PTChwKDE4NywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4NyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTg3X0MoTkROQk9PU1RfUFBfQk9PTChwKDE4OCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4OChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTg4X0MoTkROQk9PU1RfUFBfQk9PTChwKDE4OSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4OShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTg5X0MoTkROQk9PU1RfUFBfQk9PTChwKDE5MCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5MChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTkwX0MoTkROQk9PU1RfUFBfQk9PTChwKDE5MSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5MShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTkxX0MoTkROQk9PU1RfUFBfQk9PTChwKDE5MiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTkyX0MoTkROQk9PU1RfUFBfQk9PTChwKDE5MywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5MyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTkzX0MoTkROQk9PU1RfUFBfQk9PTChwKDE5NCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5NChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTk0X0MoTkROQk9PU1RfUFBfQk9PTChwKDE5NSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTk1X0MoTkROQk9PU1RfUFBfQk9PTChwKDE5NiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5NihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTk2X0MoTkROQk9PU1RfUFBfQk9PTChwKDE5NywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5NyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTk3X0MoTkROQk9PU1RfUFBfQk9PTChwKDE5OCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5OChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTk4X0MoTkROQk9PU1RfUFBfQk9PTChwKDE5OSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5OShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMTk5X0MoTkROQk9PU1RfUFBfQk9PTChwKDIwMCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwMChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjAwX0MoTkROQk9PU1RfUFBfQk9PTChwKDIwMSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwMShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjAxX0MoTkROQk9PU1RfUFBfQk9PTChwKDIwMiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwMihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjAyX0MoTkROQk9PU1RfUFBfQk9PTChwKDIwMywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwMyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjAzX0MoTkROQk9PU1RfUFBfQk9PTChwKDIwNCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwNChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjA0X0MoTkROQk9PU1RfUFBfQk9PTChwKDIwNSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwNShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjA1X0MoTkROQk9PU1RfUFBfQk9PTChwKDIwNiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwNihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjA2X0MoTkROQk9PU1RfUFBfQk9PTChwKDIwNywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwNyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjA3X0MoTkROQk9PU1RfUFBfQk9PTChwKDIwOCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwOChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjA4X0MoTkROQk9PU1RfUFBfQk9PTChwKDIwOSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwOShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjA5X0MoTkROQk9PU1RfUFBfQk9PTChwKDIxMCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxMChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjEwX0MoTkROQk9PU1RfUFBfQk9PTChwKDIxMSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxMShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjExX0MoTkROQk9PU1RfUFBfQk9PTChwKDIxMiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxMihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjEyX0MoTkROQk9PU1RfUFBfQk9PTChwKDIxMywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxMyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjEzX0MoTkROQk9PU1RfUFBfQk9PTChwKDIxNCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxNChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjE0X0MoTkROQk9PU1RfUFBfQk9PTChwKDIxNSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxNShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjE1X0MoTkROQk9PU1RfUFBfQk9PTChwKDIxNiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxNihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjE2X0MoTkROQk9PU1RfUFBfQk9PTChwKDIxNywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxNyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjE3X0MoTkROQk9PU1RfUFBfQk9PTChwKDIxOCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxOChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjE4X0MoTkROQk9PU1RfUFBfQk9PTChwKDIxOSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxOShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjE5X0MoTkROQk9PU1RfUFBfQk9PTChwKDIyMCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyMChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjIwX0MoTkROQk9PU1RfUFBfQk9PTChwKDIyMSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyMShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjIxX0MoTkROQk9PU1RfUFBfQk9PTChwKDIyMiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyMihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjIyX0MoTkROQk9PU1RfUFBfQk9PTChwKDIyMywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyMyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjIzX0MoTkROQk9PU1RfUFBfQk9PTChwKDIyNCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyNChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjI0X0MoTkROQk9PU1RfUFBfQk9PTChwKDIyNSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyNShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjI1X0MoTkROQk9PU1RfUFBfQk9PTChwKDIyNiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyNihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjI2X0MoTkROQk9PU1RfUFBfQk9PTChwKDIyNywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyNyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjI3X0MoTkROQk9PU1RfUFBfQk9PTChwKDIyOCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyOChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjI4X0MoTkROQk9PU1RfUFBfQk9PTChwKDIyOSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyOShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjI5X0MoTkROQk9PU1RfUFBfQk9PTChwKDIzMCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzMChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjMwX0MoTkROQk9PU1RfUFBfQk9PTChwKDIzMSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzMShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjMxX0MoTkROQk9PU1RfUFBfQk9PTChwKDIzMiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzMihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjMyX0MoTkROQk9PU1RfUFBfQk9PTChwKDIzMywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzMyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjMzX0MoTkROQk9PU1RfUFBfQk9PTChwKDIzNCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzNChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjM0X0MoTkROQk9PU1RfUFBfQk9PTChwKDIzNSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzNShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjM1X0MoTkROQk9PU1RfUFBfQk9PTChwKDIzNiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzNihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjM2X0MoTkROQk9PU1RfUFBfQk9PTChwKDIzNywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzNyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjM3X0MoTkROQk9PU1RfUFBfQk9PTChwKDIzOCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzOChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjM4X0MoTkROQk9PU1RfUFBfQk9PTChwKDIzOSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzOShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjM5X0MoTkROQk9PU1RfUFBfQk9PTChwKDI0MCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0MChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjQwX0MoTkROQk9PU1RfUFBfQk9PTChwKDI0MSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0MShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjQxX0MoTkROQk9PU1RfUFBfQk9PTChwKDI0MiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjQyX0MoTkROQk9PU1RfUFBfQk9PTChwKDI0MywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0MyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjQzX0MoTkROQk9PU1RfUFBfQk9PTChwKDI0NCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0NChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjQ0X0MoTkROQk9PU1RfUFBfQk9PTChwKDI0NSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjQ1X0MoTkROQk9PU1RfUFBfQk9PTChwKDI0NiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0NihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjQ2X0MoTkROQk9PU1RfUFBfQk9PTChwKDI0NywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0NyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjQ3X0MoTkROQk9PU1RfUFBfQk9PTChwKDI0OCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0OChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjQ4X0MoTkROQk9PU1RfUFBfQk9PTChwKDI0OSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0OShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjQ5X0MoTkROQk9PU1RfUFBfQk9PTChwKDI1MCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1MChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjUwX0MoTkROQk9PU1RfUFBfQk9PTChwKDI1MSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1MShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjUxX0MoTkROQk9PU1RfUFBfQk9PTChwKDI1MiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjUyX0MoTkROQk9PU1RfUFBfQk9PTChwKDI1MywgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1MyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjUzX0MoTkROQk9PU1RfUFBfQk9PTChwKDI1NCwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1NChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjU0X0MoTkROQk9PU1RfUFBfQk9PTChwKDI1NSwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjU1X0MoTkROQk9PU1RfUFBfQk9PTChwKDI1NiwgcykpLCBzLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1NihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9GT1JfMjU2X0MoTkROQk9PU1RfUFBfQk9PTChwKDI1NywgcykpLCBzLCBwLCBvLCBtKQotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzFfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzJfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDMsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzNfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDQsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzRfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDUsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzVfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDYsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzZfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDcsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzdfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDgsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfOCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzhfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDksIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfOSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzlfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDExLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTIsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTJfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTUsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTVfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xN19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTgsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxOCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMThfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjEsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjFfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yM19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjQsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyNCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjRfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI1LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzI1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yNiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDI2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjcsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyNywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjdfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI4LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzI4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI4X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyOSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yOSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDI5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yOV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMzAsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMzAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgzMCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzBfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDMxLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzMxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMzEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzMxX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgzMiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8zMiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDMyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zMl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMzMsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMzMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgzMywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzNfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDM0LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzM0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMzQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzM0X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgzNSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8zNSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDM1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zNV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMzYsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMzYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgzNiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzZfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDM3LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzM3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMzcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzM3X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgzOCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8zOCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDM4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zOF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMzksIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMzksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgzOSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzlfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDQwLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzQwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNDAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQwX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg0MSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl80MSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDQxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80MV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNDIsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNDIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg0MiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDJfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDQzLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzQzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNDMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQzX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg0NCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl80NCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDQ0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80NF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNDUsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNDUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg0NSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDVfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDQ2LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzQ2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNDYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQ2X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg0NywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl80NywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDQ3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80N19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNDgsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNDgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg0OCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDhfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDQ5LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzQ5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNDksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQ5X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg1MCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl81MCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDUwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81MF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNTEsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNTEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg1MSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTFfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDUyLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzUyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNTIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzUyX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg1MywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl81MywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDUzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81M19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNTQsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNTQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg1NCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTRfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDU1LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzU1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNTUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzU1X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg1NiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl81NiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDU2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81Nl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNTcsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNTcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg1NywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTdfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDU4LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzU4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNTgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzU4X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg1OSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl81OSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDU5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81OV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNjAsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNjAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg2MCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjBfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDYxLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzYxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNjEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzYxX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg2MiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl82MiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDYyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82Ml9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNjMsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNjMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg2MywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjNfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDY0LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzY0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNjQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzY0X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg2NSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl82NSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDY1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82NV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNjYsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNjYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg2NiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjZfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDY3LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzY3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNjcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzY3X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg2OCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl82OCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDY4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82OF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNjksIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNjksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg2OSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjlfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDcwLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzcwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNzAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzcwX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg3MSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl83MSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDcxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83MV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNzIsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNzIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg3MiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzJfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDczLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzczLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNzMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzczX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg3NCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl83NCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDc0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83NF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNzUsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNzUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg3NSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzVfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDc2LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzc2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNzYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzc2X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg3NywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl83NywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDc3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83N19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNzgsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfNzgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg3OCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzhfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDc5LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzc5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoNzksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzc5X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg4MCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl84MCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDgwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84MF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoODEsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfODEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg4MSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODFfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDgyLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzgyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoODIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzgyX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg4MywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl84MywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDgzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84M19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoODQsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfODQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg4NCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODRfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDg1LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzg1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoODUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzg1X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg4NiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl84NiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDg2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84Nl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoODcsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfODcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg4NywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODdfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDg4LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzg4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoODgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzg4X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg4OSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl84OSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDg5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84OV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOTAsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfOTAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg5MCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTBfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDkxLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzkxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoOTEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzkxX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg5MiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl85MiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDkyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85Ml9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOTMsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfOTMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg5MywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTNfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDk0LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzk0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoOTQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzk0X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg5NSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl85NSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDk1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85NV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOTYsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfOTYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg5NiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTZfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDk3LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzk3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoOTcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzk3X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg5OCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl85OCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDk4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85OF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOTksIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfOTksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSg5OSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTlfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwMCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMDAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMDAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwMF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTAxLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEwMSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEwMSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTAxX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMDIsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTAyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTAyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDJfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwMywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMDMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMDMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwM19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTA0LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEwNCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEwNCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTA0X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMDUsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTA1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTA1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDVfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwNiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMDYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMDYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwNl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTA3LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEwNywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEwNywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTA3X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMDgsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTA4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTA4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDhfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwOSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMDksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMDksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwOV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTEwLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzExMCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDExMCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTEwX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMTEsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTExLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTExLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTFfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDExMiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMTIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMTIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExMl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTEzLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzExMywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDExMywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTEzX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMTQsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTE0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTE0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTRfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDExNSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMTUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMTUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExNV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTE2LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzExNiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDExNiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTE2X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMTcsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTE3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTE3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTdfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDExOCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMTgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMTgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExOF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTE5LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzExOSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDExOSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTE5X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMjAsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTIwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTIwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjBfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEyMSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMjEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMjEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyMV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTIyLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEyMiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEyMiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTIyX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMjMsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTIzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTIzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjNfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEyNCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMjQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMjQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyNF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTI1LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEyNSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEyNSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTI1X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMjYsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTI2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTI2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjZfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEyNywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMjcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMjcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyN19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTI4LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEyOCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEyOCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTI4X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMjksIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTI5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTI5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjlfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzMCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMzAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMzAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzMF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTMxLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEzMSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEzMSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTMxX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMzIsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTMyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTMyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzJfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzMywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMzMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMzMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzM19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTM0LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEzNCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEzNCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTM0X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMzUsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTM1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTM1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzVfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzNiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMzYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMzYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzNl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTM3LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzEzNywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDEzNywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTM3X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMzgsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTM4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTM4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzhfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzOSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xMzksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxMzksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzOV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTQwLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE0MCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE0MCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQwX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNDEsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTQxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTQxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDFfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE0MiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNDIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNDIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0Ml9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTQzLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE0MywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE0MywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQzX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNDQsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTQ0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTQ0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDRfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE0NSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNDUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNDUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0NV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTQ2LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE0NiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE0NiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQ2X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNDcsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTQ3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTQ3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDdfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE0OCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNDgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNDgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0OF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTQ5LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE0OSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE0OSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQ5X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNTAsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTUwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTUwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTBfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE1MSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNTEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNTEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1MV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTUyLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE1MiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE1MiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTUyX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNTMsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTUzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTUzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTNfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE1NCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNTQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNTQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1NF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTU1LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE1NSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE1NSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTU1X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNTYsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTU2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTU2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTZfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE1NywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNTcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNTcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1N19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTU4LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE1OCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE1OCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTU4X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNTksIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTU5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTU5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTlfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2MCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNjAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNjAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2MF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTYxLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE2MSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE2MSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTYxX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNjIsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTYyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTYyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjJfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2MywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNjMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNjMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2M19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTY0LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE2NCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE2NCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTY0X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNjUsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTY1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTY1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjVfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2NiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNjYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNjYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2Nl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTY3LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE2NywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE2NywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTY3X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNjgsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTY4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTY4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjhfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2OSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNjksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNjksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2OV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTcwLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE3MCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE3MCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTcwX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNzEsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTcxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTcxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzFfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE3MiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNzIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNzIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3Ml9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTczLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE3MywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE3MywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTczX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNzQsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTc0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTc0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzRfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE3NSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNzUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNzUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3NV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTc2LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE3NiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE3NiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTc2X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNzcsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTc3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTc3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzdfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE3OCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xNzgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxNzgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3OF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTc5LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE3OSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE3OSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTc5X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxODAsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTgwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTgwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODBfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE4MSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xODEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxODEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4MV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTgyLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE4MiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE4MiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTgyX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxODMsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTgzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTgzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODNfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE4NCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xODQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxODQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4NF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTg1LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE4NSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE4NSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTg1X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxODYsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTg2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTg2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODZfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE4NywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xODcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxODcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4N19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTg4LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE4OCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE4OCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTg4X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxODksIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTg5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTg5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODlfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5MCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xOTAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxOTAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5MF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTkxLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE5MSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE5MSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTkxX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxOTIsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTkyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTkyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTJfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5MywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xOTMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxOTMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5M19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTk0LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE5NCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE5NCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTk0X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxOTUsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTk1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTk1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTVfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5NiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xOTYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxOTYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5Nl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTk3LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzE5NywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDE5NywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTk3X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxOTgsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMTk4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMTk4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOThfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5OSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8xOTksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgxOTksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5OV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjAwLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIwMCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIwMCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjAwX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMDEsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjAxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjAxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDFfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIwMiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMDIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMDIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwMl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjAzLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIwMywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIwMywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjAzX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMDQsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjA0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjA0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDRfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIwNSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMDUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMDUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwNV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjA2LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIwNiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIwNiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjA2X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMDcsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjA3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjA3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDdfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIwOCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMDgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMDgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwOF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjA5LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIwOSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIwOSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjA5X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMTAsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjEwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjEwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTBfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIxMSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMTEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMTEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxMV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjEyLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIxMiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIxMiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjEyX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMTMsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjEzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjEzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTNfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIxNCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMTQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMTQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxNF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjE1LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIxNSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIxNSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjE1X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMTYsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjE2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjE2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTZfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIxNywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMTcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMTcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxN19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjE4LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIxOCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIxOCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjE4X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMTksIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjE5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjE5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTlfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyMCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMjAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMjAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyMF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjIxLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIyMSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIyMSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjIxX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMjIsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjIyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjIyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjJfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyMywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMjMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMjMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyM19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjI0LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIyNCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIyNCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjI0X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMjUsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjI1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjI1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjVfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyNiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMjYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMjYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyNl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjI3LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIyNywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIyNywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjI3X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMjgsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjI4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjI4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjhfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyOSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMjksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMjksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyOV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjMwLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIzMCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIzMCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjMwX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMzEsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjMxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjMxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzFfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIzMiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMzIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMzIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzMl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjMzLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIzMywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIzMywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjMzX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMzQsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjM0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjM0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzRfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIzNSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMzUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMzUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzNV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjM2LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIzNiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIzNiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjM2X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMzcsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjM3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjM3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzdfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIzOCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yMzgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyMzgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzOF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjM5LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzIzOSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDIzOSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjM5X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNDAsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjQwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjQwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDBfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI0MSwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yNDEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyNDEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0MV9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjQyLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzI0MiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDI0MiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQyX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNDMsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjQzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjQzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDNfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI0NCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yNDQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyNDQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0NF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjQ1LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzI0NSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDI0NSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQ1X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNDYsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjQ2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjQ2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDZfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI0NywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yNDcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyNDcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0N19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjQ4LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzI0OCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDI0OCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQ4X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNDksIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjQ5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjQ5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDlfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI1MCwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yNTAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyNTAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1MF9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjUxLCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzI1MSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDI1MSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjUxX0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNTIsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjUyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjUyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNTJfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI1MywgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yNTMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyNTMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1M19DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjU0LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzI1NCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDI1NCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjU0X0MoYywgcywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUlGKGMsIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNTUsIHMpIE5ETkJPT1NUX1BQX0lJRihjLCBORE5CT09TVF9QUF9GT1JfMjU1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkoTkROQk9PU1RfUFBfRVhQUl9JSUYoYywgbykoMjU1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNTVfQyhjLCBzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JSUYoYywgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI1NiwgcykgTkROQk9PU1RfUFBfSUlGKGMsIE5ETkJPT1NUX1BQX0ZPUl8yNTYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShORE5CT09TVF9QUF9FWFBSX0lJRihjLCBvKSgyNTYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1Nl9DKGMsIHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lJRihjLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjU3LCBzKSBORE5CT09TVF9QUF9JSUYoYywgTkROQk9PU1RfUFBfRk9SXzI1NywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKE5ETkJPT1NUX1BQX0VYUFJfSUlGKGMsIG8pKDI1NywgcyksIHAsIG8sIG0pCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2RldGFpbC9tc3ZjL2Zvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2RldGFpbC9tc3ZjL2Zvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNkZWZiNjkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9kZXRhaWwvbXN2Yy9mb3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjc3ICswLDAgQEAKLSMgLyogQ29weXJpZ2h0IChDKSAyMDAxCi0jICAqIEhvdXNlbWFycXVlIE95Ci0jICAqIGh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tCi0jICAqCi0jICAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqLwotIwotIyAvKiBSZXZpc2VkIGJ5IFBhdWwgTWVuc29uaWRlcyAoMjAwMikgKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1JFUEVUSVRJT05fREVUQUlMX01TVkNfRk9SX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1JFUEVUSVRJT05fREVUQUlMX01TVkNfRk9SX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9pZi5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9lYXQuaHBwPgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgzLCBzKSBORE5CT09TVF9QUF9JRihwKDMsIHMpLCBORE5CT09TVF9QUF9GT1JfMywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDQsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNCwgcykgTkROQk9PU1RfUFBfSUYocCg0LCBzKSwgTkROQk9PU1RfUFBfRk9SXzQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg1LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDUsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNSwgcyksIE5ETkJPT1NUX1BQX0ZPUl81LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg2LCBzKSBORE5CT09TVF9QUF9JRihwKDYsIHMpLCBORE5CT09TVF9QUF9GT1JfNiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDcsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNywgcykgTkROQk9PU1RfUFBfSUYocCg3LCBzKSwgTkROQk9PU1RfUFBfRk9SXzcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg4LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDgsIHMpIE5ETkJPT1NUX1BQX0lGKHAoOCwgcyksIE5ETkJPT1NUX1BQX0ZPUl84LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoOSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg5LCBzKSBORE5CT09TVF9QUF9JRihwKDksIHMpLCBORE5CT09TVF9QUF9GT1JfOSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oOSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEwLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwLCBzKSBORE5CT09TVF9QUF9JRihwKDEwLCBzKSwgTkROQk9PU1RfUFBfRk9SXzEwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMSwgcykgTkROQk9PU1RfUFBfSUYocCgxMSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTIsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTIsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTIsIHMpLCBORE5CT09TVF9QUF9GT1JfMTIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEzLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzLCBzKSBORE5CT09TVF9QUF9JRihwKDEzLCBzKSwgTkROQk9PU1RfUFBfRk9SXzEzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNCwgcykgTkROQk9PU1RfUFBfSUYocCgxNCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTUsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTUsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTUsIHMpLCBORE5CT09TVF9QUF9GT1JfMTUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE2LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2LCBzKSBORE5CT09TVF9QUF9JRihwKDE2LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNywgcykgTkROQk9PU1RfUFBfSUYocCgxNywgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTgsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTgsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTgsIHMpLCBORE5CT09TVF9QUF9GT1JfMTgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE5LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5LCBzKSBORE5CT09TVF9QUF9JRihwKDE5LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxOSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMCwgcykgTkROQk9PU1RfUFBfSUYocCgyMCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjEsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjEsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjEsIHMpLCBORE5CT09TVF9QUF9GT1JfMjEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIyLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyLCBzKSBORE5CT09TVF9QUF9JRihwKDIyLCBzKSwgTkROQk9PU1RfUFBfRk9SXzIyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMywgcykgTkROQk9PU1RfUFBfSUYocCgyMywgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjQsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjQsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjQsIHMpLCBORE5CT09TVF9QUF9GT1JfMjQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDI0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDI1LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI1LCBzKSBORE5CT09TVF9QUF9JRihwKDI1LCBzKSwgTkROQk9PU1RfUFBfRk9SXzI1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyNSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyNiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNiwgcykgTkROQk9PU1RfUFBfSUYocCgyNiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yNiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjcsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjcsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjcsIHMpLCBORE5CT09TVF9QUF9GT1JfMjcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDI3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDI4LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI4LCBzKSBORE5CT09TVF9QUF9JRihwKDI4LCBzKSwgTkROQk9PU1RfUFBfRk9SXzI4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyOCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyOSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyOSwgcykgTkROQk9PU1RfUFBfSUYocCgyOSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yOSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMzAsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMzAsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMzAsIHMpLCBORE5CT09TVF9QUF9GT1JfMzAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDMwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zMChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDMxLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDMxLCBzKSBORE5CT09TVF9QUF9JRihwKDMxLCBzKSwgTkROQk9PU1RfUFBfRk9SXzMxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygzMSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgzMiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgzMiwgcykgTkROQk9PU1RfUFBfSUYocCgzMiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8zMiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMzIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzMyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMzMsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMzMsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMzMsIHMpLCBORE5CT09TVF9QUF9GT1JfMzMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDMzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zMyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDM0LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDM0LCBzKSBORE5CT09TVF9QUF9JRihwKDM0LCBzKSwgTkROQk9PU1RfUFBfRk9SXzM0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygzNCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgzNSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgzNSwgcykgTkROQk9PU1RfUFBfSUYocCgzNSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8zNSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMzUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzM1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMzYsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMzYsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMzYsIHMpLCBORE5CT09TVF9QUF9GT1JfMzYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDM2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zNihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDM3LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDM3LCBzKSBORE5CT09TVF9QUF9JRihwKDM3LCBzKSwgTkROQk9PU1RfUFBfRk9SXzM3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygzNywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMzcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgzOCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgzOCwgcykgTkROQk9PU1RfUFBfSUYocCgzOCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8zOCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMzgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzM4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMzksIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMzksIHMpIE5ETkJPT1NUX1BQX0lGKHAoMzksIHMpLCBORE5CT09TVF9QUF9GT1JfMzksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDM5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8zOShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDQwLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDQwLCBzKSBORE5CT09TVF9QUF9JRihwKDQwLCBzKSwgTkROQk9PU1RfUFBfRk9SXzQwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg0MCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg0MSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg0MSwgcykgTkROQk9PU1RfUFBfSUYocCg0MSwgcyksIE5ETkJPT1NUX1BQX0ZPUl80MSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNDEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNDIsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNDIsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNDIsIHMpLCBORE5CT09TVF9QUF9GT1JfNDIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDQyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDQzLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDQzLCBzKSBORE5CT09TVF9QUF9JRihwKDQzLCBzKSwgTkROQk9PU1RfUFBfRk9SXzQzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg0MywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg0NCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg0NCwgcykgTkROQk9PU1RfUFBfSUYocCg0NCwgcyksIE5ETkJPT1NUX1BQX0ZPUl80NCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNDQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQ0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNDUsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNDUsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNDUsIHMpLCBORE5CT09TVF9QUF9GT1JfNDUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDQ1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDQ2LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDQ2LCBzKSBORE5CT09TVF9QUF9JRihwKDQ2LCBzKSwgTkROQk9PU1RfUFBfRk9SXzQ2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg0NiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg0NywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg0NywgcykgTkROQk9PU1RfUFBfSUYocCg0NywgcyksIE5ETkJPT1NUX1BQX0ZPUl80NywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNDcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzQ3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNDgsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNDgsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNDgsIHMpLCBORE5CT09TVF9QUF9GT1JfNDgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDQ4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl80OChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDQ5LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDQ5LCBzKSBORE5CT09TVF9QUF9JRihwKDQ5LCBzKSwgTkROQk9PU1RfUFBfRk9SXzQ5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg0OSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNDkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg1MCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg1MCwgcykgTkROQk9PU1RfUFBfSUYocCg1MCwgcyksIE5ETkJPT1NUX1BQX0ZPUl81MCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNTAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzUwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNTEsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNTEsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNTEsIHMpLCBORE5CT09TVF9QUF9GT1JfNTEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDUxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81MShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDUyLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDUyLCBzKSBORE5CT09TVF9QUF9JRihwKDUyLCBzKSwgTkROQk9PU1RfUFBfRk9SXzUyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg1MiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg1MywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg1MywgcykgTkROQk9PU1RfUFBfSUYocCg1MywgcyksIE5ETkJPT1NUX1BQX0ZPUl81MywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNTMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzUzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNTQsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNTQsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNTQsIHMpLCBORE5CT09TVF9QUF9GT1JfNTQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDU0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81NChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDU1LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDU1LCBzKSBORE5CT09TVF9QUF9JRihwKDU1LCBzKSwgTkROQk9PU1RfUFBfRk9SXzU1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg1NSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg1NiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg1NiwgcykgTkROQk9PU1RfUFBfSUYocCg1NiwgcyksIE5ETkJPT1NUX1BQX0ZPUl81NiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNTYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzU2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNTcsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNTcsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNTcsIHMpLCBORE5CT09TVF9QUF9GT1JfNTcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDU3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl81NyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDU4LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDU4LCBzKSBORE5CT09TVF9QUF9JRihwKDU4LCBzKSwgTkROQk9PU1RfUFBfRk9SXzU4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg1OCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNTgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg1OSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg1OSwgcykgTkROQk9PU1RfUFBfSUYocCg1OSwgcyksIE5ETkJPT1NUX1BQX0ZPUl81OSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNTksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzU5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNjAsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNjAsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNjAsIHMpLCBORE5CT09TVF9QUF9GT1JfNjAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDYwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82MChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDYxLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDYxLCBzKSBORE5CT09TVF9QUF9JRihwKDYxLCBzKSwgTkROQk9PU1RfUFBfRk9SXzYxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg2MSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg2MiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg2MiwgcykgTkROQk9PU1RfUFBfSUYocCg2MiwgcyksIE5ETkJPT1NUX1BQX0ZPUl82MiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNjIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzYyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNjMsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNjMsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNjMsIHMpLCBORE5CT09TVF9QUF9GT1JfNjMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDYzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82MyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDY0LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDY0LCBzKSBORE5CT09TVF9QUF9JRihwKDY0LCBzKSwgTkROQk9PU1RfUFBfRk9SXzY0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg2NCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg2NSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg2NSwgcykgTkROQk9PU1RfUFBfSUYocCg2NSwgcyksIE5ETkJPT1NUX1BQX0ZPUl82NSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNjUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzY1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNjYsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNjYsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNjYsIHMpLCBORE5CT09TVF9QUF9GT1JfNjYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDY2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82NihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDY3LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDY3LCBzKSBORE5CT09TVF9QUF9JRihwKDY3LCBzKSwgTkROQk9PU1RfUFBfRk9SXzY3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg2NywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNjcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg2OCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg2OCwgcykgTkROQk9PU1RfUFBfSUYocCg2OCwgcyksIE5ETkJPT1NUX1BQX0ZPUl82OCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNjgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzY4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNjksIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNjksIHMpIE5ETkJPT1NUX1BQX0lGKHAoNjksIHMpLCBORE5CT09TVF9QUF9GT1JfNjksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDY5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl82OShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDcwLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDcwLCBzKSBORE5CT09TVF9QUF9JRihwKDcwLCBzKSwgTkROQk9PU1RfUFBfRk9SXzcwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg3MCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg3MSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg3MSwgcykgTkROQk9PU1RfUFBfSUYocCg3MSwgcyksIE5ETkJPT1NUX1BQX0ZPUl83MSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNzEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzcxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNzIsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNzIsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNzIsIHMpLCBORE5CT09TVF9QUF9GT1JfNzIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDcyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDczLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDczLCBzKSBORE5CT09TVF9QUF9JRihwKDczLCBzKSwgTkROQk9PU1RfUFBfRk9SXzczLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg3MywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg3NCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg3NCwgcykgTkROQk9PU1RfUFBfSUYocCg3NCwgcyksIE5ETkJPT1NUX1BQX0ZPUl83NCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNzQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzc0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNzUsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNzUsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNzUsIHMpLCBORE5CT09TVF9QUF9GT1JfNzUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDc1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDc2LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDc2LCBzKSBORE5CT09TVF9QUF9JRihwKDc2LCBzKSwgTkROQk9PU1RfUFBfRk9SXzc2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg3NiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg3NywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg3NywgcykgTkROQk9PU1RfUFBfSUYocCg3NywgcyksIE5ETkJPT1NUX1BQX0ZPUl83NywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oNzcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzc3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoNzgsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoNzgsIHMpIE5ETkJPT1NUX1BQX0lGKHAoNzgsIHMpLCBORE5CT09TVF9QUF9GT1JfNzgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDc4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl83OChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDc5LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDc5LCBzKSBORE5CT09TVF9QUF9JRihwKDc5LCBzKSwgTkROQk9PU1RfUFBfRk9SXzc5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg3OSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfNzkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg4MCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg4MCwgcykgTkROQk9PU1RfUFBfSUYocCg4MCwgcyksIE5ETkJPT1NUX1BQX0ZPUl84MCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oODAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzgwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoODEsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoODEsIHMpIE5ETkJPT1NUX1BQX0lGKHAoODEsIHMpLCBORE5CT09TVF9QUF9GT1JfODEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDgxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84MShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDgyLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDgyLCBzKSBORE5CT09TVF9QUF9JRihwKDgyLCBzKSwgTkROQk9PU1RfUFBfRk9SXzgyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg4MiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg4MywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg4MywgcykgTkROQk9PU1RfUFBfSUYocCg4MywgcyksIE5ETkJPT1NUX1BQX0ZPUl84MywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oODMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzgzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoODQsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoODQsIHMpIE5ETkJPT1NUX1BQX0lGKHAoODQsIHMpLCBORE5CT09TVF9QUF9GT1JfODQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDg0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84NChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDg1LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDg1LCBzKSBORE5CT09TVF9QUF9JRihwKDg1LCBzKSwgTkROQk9PU1RfUFBfRk9SXzg1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg4NSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg4NiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg4NiwgcykgTkROQk9PU1RfUFBfSUYocCg4NiwgcyksIE5ETkJPT1NUX1BQX0ZPUl84NiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oODYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzg2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoODcsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoODcsIHMpIE5ETkJPT1NUX1BQX0lGKHAoODcsIHMpLCBORE5CT09TVF9QUF9GT1JfODcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDg3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl84NyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDg4LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDg4LCBzKSBORE5CT09TVF9QUF9JRihwKDg4LCBzKSwgTkROQk9PU1RfUFBfRk9SXzg4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg4OCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfODgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg4OSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg4OSwgcykgTkROQk9PU1RfUFBfSUYocCg4OSwgcyksIE5ETkJPT1NUX1BQX0ZPUl84OSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oODksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzg5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoOTAsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOTAsIHMpIE5ETkJPT1NUX1BQX0lGKHAoOTAsIHMpLCBORE5CT09TVF9QUF9GT1JfOTAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDkwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85MChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDkxLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDkxLCBzKSBORE5CT09TVF9QUF9JRihwKDkxLCBzKSwgTkROQk9PU1RfUFBfRk9SXzkxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg5MSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg5MiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg5MiwgcykgTkROQk9PU1RfUFBfSUYocCg5MiwgcyksIE5ETkJPT1NUX1BQX0ZPUl85MiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oOTIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzkyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoOTMsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOTMsIHMpIE5ETkJPT1NUX1BQX0lGKHAoOTMsIHMpLCBORE5CT09TVF9QUF9GT1JfOTMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDkzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85MyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDk0LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDk0LCBzKSBORE5CT09TVF9QUF9JRihwKDk0LCBzKSwgTkROQk9PU1RfUFBfRk9SXzk0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg5NCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg5NSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg5NSwgcykgTkROQk9PU1RfUFBfSUYocCg5NSwgcyksIE5ETkJPT1NUX1BQX0ZPUl85NSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oOTUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzk1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoOTYsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOTYsIHMpIE5ETkJPT1NUX1BQX0lGKHAoOTYsIHMpLCBORE5CT09TVF9QUF9GT1JfOTYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDk2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85NihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDk3LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDk3LCBzKSBORE5CT09TVF9QUF9JRihwKDk3LCBzKSwgTkROQk9PU1RfUFBfRk9SXzk3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobyg5NywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfOTcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCg5OCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSg5OCwgcykgTkROQk9PU1RfUFBfSUYocCg5OCwgcyksIE5ETkJPT1NUX1BQX0ZPUl85OCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oOTgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzk4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoOTksIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoOTksIHMpIE5ETkJPT1NUX1BQX0lGKHAoOTksIHMpLCBORE5CT09TVF9QUF9GT1JfOTksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDk5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl85OShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEwMCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMDAsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTAwLCBzKSwgTkROQk9PU1RfUFBfRk9SXzEwMCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTAwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMDEsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTAxLCBzKSBORE5CT09TVF9QUF9JRihwKDEwMSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMDEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEwMSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTAxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTAyLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwMiwgcykgTkROQk9PU1RfUFBfSUYocCgxMDIsIHMpLCBORE5CT09TVF9QUF9GT1JfMTAyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMDIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwMihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEwMywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMDMsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTAzLCBzKSwgTkROQk9PU1RfUFBfRk9SXzEwMywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTAzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMDQsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTA0LCBzKSBORE5CT09TVF9QUF9JRihwKDEwNCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMDQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEwNCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTA0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTA1LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwNSwgcykgTkROQk9PU1RfUFBfSUYocCgxMDUsIHMpLCBORE5CT09TVF9QUF9GT1JfMTA1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMDUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwNShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEwNiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMDYsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTA2LCBzKSwgTkROQk9PU1RfUFBfRk9SXzEwNiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTA2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMDcsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTA3LCBzKSBORE5CT09TVF9QUF9JRihwKDEwNywgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMDcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEwNywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTA3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTA4LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEwOCwgcykgTkROQk9PU1RfUFBfSUYocCgxMDgsIHMpLCBORE5CT09TVF9QUF9GT1JfMTA4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMDgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEwOChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEwOSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMDksIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTA5LCBzKSwgTkROQk9PU1RfUFBfRk9SXzEwOSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTA5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMDkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMTAsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTEwLCBzKSBORE5CT09TVF9QUF9JRihwKDExMCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMTAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDExMCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTEwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTExLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDExMSwgcykgTkROQk9PU1RfUFBfSUYocCgxMTEsIHMpLCBORE5CT09TVF9QUF9GT1JfMTExLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMTEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExMShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDExMiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMTIsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTEyLCBzKSwgTkROQk9PU1RfUFBfRk9SXzExMiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTEyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMTMsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTEzLCBzKSBORE5CT09TVF9QUF9JRihwKDExMywgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMTMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDExMywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTEzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTE0LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDExNCwgcykgTkROQk9PU1RfUFBfSUYocCgxMTQsIHMpLCBORE5CT09TVF9QUF9GT1JfMTE0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMTQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExNChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDExNSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMTUsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTE1LCBzKSwgTkROQk9PU1RfUFBfRk9SXzExNSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTE1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMTYsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTE2LCBzKSBORE5CT09TVF9QUF9JRihwKDExNiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMTYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDExNiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTE2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTE3LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDExNywgcykgTkROQk9PU1RfUFBfSUYocCgxMTcsIHMpLCBORE5CT09TVF9QUF9GT1JfMTE3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMTcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzExNyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDExOCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMTgsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTE4LCBzKSwgTkROQk9PU1RfUFBfRk9SXzExOCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTE4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMTgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMTksIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTE5LCBzKSBORE5CT09TVF9QUF9JRihwKDExOSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMTksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDExOSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTE5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTIwLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEyMCwgcykgTkROQk9PU1RfUFBfSUYocCgxMjAsIHMpLCBORE5CT09TVF9QUF9GT1JfMTIwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMjAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyMChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEyMSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMjEsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTIxLCBzKSwgTkROQk9PU1RfUFBfRk9SXzEyMSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTIxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMjIsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTIyLCBzKSBORE5CT09TVF9QUF9JRihwKDEyMiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMjIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEyMiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTIyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTIzLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEyMywgcykgTkROQk9PU1RfUFBfSUYocCgxMjMsIHMpLCBORE5CT09TVF9QUF9GT1JfMTIzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMjMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyMyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEyNCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMjQsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTI0LCBzKSwgTkROQk9PU1RfUFBfRk9SXzEyNCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTI0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMjUsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTI1LCBzKSBORE5CT09TVF9QUF9JRihwKDEyNSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMjUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEyNSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTI1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTI2LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEyNiwgcykgTkROQk9PU1RfUFBfSUYocCgxMjYsIHMpLCBORE5CT09TVF9QUF9GT1JfMTI2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMjYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyNihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEyNywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMjcsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTI3LCBzKSwgTkROQk9PU1RfUFBfRk9SXzEyNywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTI3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMjcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMjgsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTI4LCBzKSBORE5CT09TVF9QUF9JRihwKDEyOCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMjgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEyOCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTI4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTI5LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEyOSwgcykgTkROQk9PU1RfUFBfSUYocCgxMjksIHMpLCBORE5CT09TVF9QUF9GT1JfMTI5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMjksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEyOShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEzMCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMzAsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTMwLCBzKSwgTkROQk9PU1RfUFBfRk9SXzEzMCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTMwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMzEsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTMxLCBzKSBORE5CT09TVF9QUF9JRihwKDEzMSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMzEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEzMSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTMxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTMyLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzMiwgcykgTkROQk9PU1RfUFBfSUYocCgxMzIsIHMpLCBORE5CT09TVF9QUF9GT1JfMTMyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMzIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzMihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEzMywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMzMsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTMzLCBzKSwgTkROQk9PU1RfUFBfRk9SXzEzMywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTMzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMzQsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTM0LCBzKSBORE5CT09TVF9QUF9JRihwKDEzNCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMzQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEzNCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTM0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTM1LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzNSwgcykgTkROQk9PU1RfUFBfSUYocCgxMzUsIHMpLCBORE5CT09TVF9QUF9GT1JfMTM1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMzUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzNShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEzNiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMzYsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTM2LCBzKSwgTkROQk9PU1RfUFBfRk9SXzEzNiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTM2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxMzcsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTM3LCBzKSBORE5CT09TVF9QUF9JRihwKDEzNywgcyksIE5ETkJPT1NUX1BQX0ZPUl8xMzcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDEzNywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTM3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTM4LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDEzOCwgcykgTkROQk9PU1RfUFBfSUYocCgxMzgsIHMpLCBORE5CT09TVF9QUF9GT1JfMTM4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxMzgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzEzOChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDEzOSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxMzksIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTM5LCBzKSwgTkROQk9PU1RfUFBfRk9SXzEzOSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTM5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xMzkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNDAsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTQwLCBzKSBORE5CT09TVF9QUF9JRihwKDE0MCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNDAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE0MCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTQxLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE0MSwgcykgTkROQk9PU1RfUFBfSUYocCgxNDEsIHMpLCBORE5CT09TVF9QUF9GT1JfMTQxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNDEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0MShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE0MiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNDIsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTQyLCBzKSwgTkROQk9PU1RfUFBfRk9SXzE0MiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTQyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNDMsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTQzLCBzKSBORE5CT09TVF9QUF9JRihwKDE0MywgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNDMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE0MywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTQ0LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE0NCwgcykgTkROQk9PU1RfUFBfSUYocCgxNDQsIHMpLCBORE5CT09TVF9QUF9GT1JfMTQ0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNDQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0NChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE0NSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNDUsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTQ1LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE0NSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTQ1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNDYsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTQ2LCBzKSBORE5CT09TVF9QUF9JRihwKDE0NiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNDYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE0NiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQ2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTQ3LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE0NywgcykgTkROQk9PU1RfUFBfSUYocCgxNDcsIHMpLCBORE5CT09TVF9QUF9GT1JfMTQ3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNDcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE0NyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE0OCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNDgsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTQ4LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE0OCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTQ4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNDgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNDksIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTQ5LCBzKSBORE5CT09TVF9QUF9JRihwKDE0OSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNDksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE0OSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTQ5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTUwLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE1MCwgcykgTkROQk9PU1RfUFBfSUYocCgxNTAsIHMpLCBORE5CT09TVF9QUF9GT1JfMTUwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNTAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1MChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE1MSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNTEsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTUxLCBzKSwgTkROQk9PU1RfUFBfRk9SXzE1MSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTUxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNTIsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTUyLCBzKSBORE5CT09TVF9QUF9JRihwKDE1MiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNTIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE1MiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTUyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTUzLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE1MywgcykgTkROQk9PU1RfUFBfSUYocCgxNTMsIHMpLCBORE5CT09TVF9QUF9GT1JfMTUzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNTMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1MyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE1NCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNTQsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTU0LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE1NCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTU0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNTUsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTU1LCBzKSBORE5CT09TVF9QUF9JRihwKDE1NSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNTUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE1NSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTU1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTU2LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE1NiwgcykgTkROQk9PU1RfUFBfSUYocCgxNTYsIHMpLCBORE5CT09TVF9QUF9GT1JfMTU2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNTYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1NihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE1NywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNTcsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTU3LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE1NywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTU3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNTcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNTgsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTU4LCBzKSBORE5CT09TVF9QUF9JRihwKDE1OCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNTgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE1OCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTU4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTU5LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE1OSwgcykgTkROQk9PU1RfUFBfSUYocCgxNTksIHMpLCBORE5CT09TVF9QUF9GT1JfMTU5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNTksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE1OShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE2MCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNjAsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTYwLCBzKSwgTkROQk9PU1RfUFBfRk9SXzE2MCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTYwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNjEsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTYxLCBzKSBORE5CT09TVF9QUF9JRihwKDE2MSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNjEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE2MSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTYxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTYyLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2MiwgcykgTkROQk9PU1RfUFBfSUYocCgxNjIsIHMpLCBORE5CT09TVF9QUF9GT1JfMTYyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNjIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE2MywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNjMsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTYzLCBzKSwgTkROQk9PU1RfUFBfRk9SXzE2MywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTYzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNjQsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTY0LCBzKSBORE5CT09TVF9QUF9JRihwKDE2NCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNjQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE2NCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTY0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTY1LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2NSwgcykgTkROQk9PU1RfUFBfSUYocCgxNjUsIHMpLCBORE5CT09TVF9QUF9GT1JfMTY1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNjUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE2NiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNjYsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTY2LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE2NiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTY2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNjcsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTY3LCBzKSBORE5CT09TVF9QUF9JRihwKDE2NywgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNjcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE2NywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTY3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTY4LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE2OCwgcykgTkROQk9PU1RfUFBfSUYocCgxNjgsIHMpLCBORE5CT09TVF9QUF9GT1JfMTY4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNjgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE2OChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE2OSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNjksIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTY5LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE2OSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTY5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNjkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNzAsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTcwLCBzKSBORE5CT09TVF9QUF9JRihwKDE3MCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNzAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE3MCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTcwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTcxLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE3MSwgcykgTkROQk9PU1RfUFBfSUYocCgxNzEsIHMpLCBORE5CT09TVF9QUF9GT1JfMTcxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNzEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3MShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE3MiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNzIsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTcyLCBzKSwgTkROQk9PU1RfUFBfRk9SXzE3MiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTcyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNzMsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTczLCBzKSBORE5CT09TVF9QUF9JRihwKDE3MywgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNzMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE3MywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTczKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTc0LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE3NCwgcykgTkROQk9PU1RfUFBfSUYocCgxNzQsIHMpLCBORE5CT09TVF9QUF9GT1JfMTc0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNzQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3NChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE3NSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNzUsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTc1LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE3NSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTc1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNzYsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTc2LCBzKSBORE5CT09TVF9QUF9JRihwKDE3NiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNzYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE3NiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTc2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTc3LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE3NywgcykgTkROQk9PU1RfUFBfSUYocCgxNzcsIHMpLCBORE5CT09TVF9QUF9GT1JfMTc3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxNzcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE3NyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE3OCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxNzgsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTc4LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE3OCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTc4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xNzgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxNzksIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTc5LCBzKSBORE5CT09TVF9QUF9JRihwKDE3OSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xNzksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE3OSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTc5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTgwLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE4MCwgcykgTkROQk9PU1RfUFBfSUYocCgxODAsIHMpLCBORE5CT09TVF9QUF9GT1JfMTgwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxODAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4MChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE4MSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxODEsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTgxLCBzKSwgTkROQk9PU1RfUFBfRk9SXzE4MSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTgxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxODIsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTgyLCBzKSBORE5CT09TVF9QUF9JRihwKDE4MiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xODIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE4MiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTgyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTgzLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE4MywgcykgTkROQk9PU1RfUFBfSUYocCgxODMsIHMpLCBORE5CT09TVF9QUF9GT1JfMTgzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxODMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4MyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE4NCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxODQsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTg0LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE4NCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTg0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxODUsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTg1LCBzKSBORE5CT09TVF9QUF9JRihwKDE4NSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xODUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE4NSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTg1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTg2LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE4NiwgcykgTkROQk9PU1RfUFBfSUYocCgxODYsIHMpLCBORE5CT09TVF9QUF9GT1JfMTg2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxODYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4NihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE4NywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxODcsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTg3LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE4NywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTg3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xODcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxODgsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTg4LCBzKSBORE5CT09TVF9QUF9JRihwKDE4OCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xODgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE4OCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTg4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTg5LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE4OSwgcykgTkROQk9PU1RfUFBfSUYocCgxODksIHMpLCBORE5CT09TVF9QUF9GT1JfMTg5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxODksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE4OShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE5MCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxOTAsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTkwLCBzKSwgTkROQk9PU1RfUFBfRk9SXzE5MCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTkwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxOTEsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTkxLCBzKSBORE5CT09TVF9QUF9JRihwKDE5MSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xOTEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE5MSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTkxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTkyLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5MiwgcykgTkROQk9PU1RfUFBfSUYocCgxOTIsIHMpLCBORE5CT09TVF9QUF9GT1JfMTkyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxOTIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE5MywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxOTMsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTkzLCBzKSwgTkROQk9PU1RfUFBfRk9SXzE5MywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTkzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxOTQsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTk0LCBzKSBORE5CT09TVF9QUF9JRihwKDE5NCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8xOTQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE5NCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTk0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTk1LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5NSwgcykgTkROQk9PU1RfUFBfSUYocCgxOTUsIHMpLCBORE5CT09TVF9QUF9GT1JfMTk1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxOTUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE5NiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxOTYsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTk2LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE5NiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTk2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgxOTcsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMTk3LCBzKSBORE5CT09TVF9QUF9JRihwKDE5NywgcyksIE5ETkJPT1NUX1BQX0ZPUl8xOTcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDE5NywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMTk3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMTk4LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDE5OCwgcykgTkROQk9PU1RfUFBfSUYocCgxOTgsIHMpLCBORE5CT09TVF9QUF9GT1JfMTk4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygxOTgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzE5OChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDE5OSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgxOTksIHMpIE5ETkJPT1NUX1BQX0lGKHAoMTk5LCBzKSwgTkROQk9PU1RfUFBfRk9SXzE5OSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMTk5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8xOTkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMDAsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjAwLCBzKSBORE5CT09TVF9QUF9JRihwKDIwMCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMDAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIwMCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjAwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjAxLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIwMSwgcykgTkROQk9PU1RfUFBfSUYocCgyMDEsIHMpLCBORE5CT09TVF9QUF9GT1JfMjAxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMDEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwMShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIwMiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMDIsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjAyLCBzKSwgTkROQk9PU1RfUFBfRk9SXzIwMiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjAyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMDMsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjAzLCBzKSBORE5CT09TVF9QUF9JRihwKDIwMywgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMDMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIwMywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjAzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjA0LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIwNCwgcykgTkROQk9PU1RfUFBfSUYocCgyMDQsIHMpLCBORE5CT09TVF9QUF9GT1JfMjA0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMDQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwNChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIwNSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMDUsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjA1LCBzKSwgTkROQk9PU1RfUFBfRk9SXzIwNSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjA1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMDYsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjA2LCBzKSBORE5CT09TVF9QUF9JRihwKDIwNiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMDYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIwNiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjA2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjA3LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIwNywgcykgTkROQk9PU1RfUFBfSUYocCgyMDcsIHMpLCBORE5CT09TVF9QUF9GT1JfMjA3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMDcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIwNyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIwOCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMDgsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjA4LCBzKSwgTkROQk9PU1RfUFBfRk9SXzIwOCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjA4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMDgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMDksIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjA5LCBzKSBORE5CT09TVF9QUF9JRihwKDIwOSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMDksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIwOSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjA5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjEwLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIxMCwgcykgTkROQk9PU1RfUFBfSUYocCgyMTAsIHMpLCBORE5CT09TVF9QUF9GT1JfMjEwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMTAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxMChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIxMSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMTEsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjExLCBzKSwgTkROQk9PU1RfUFBfRk9SXzIxMSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjExLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMTIsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjEyLCBzKSBORE5CT09TVF9QUF9JRihwKDIxMiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMTIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIxMiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjEyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjEzLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIxMywgcykgTkROQk9PU1RfUFBfSUYocCgyMTMsIHMpLCBORE5CT09TVF9QUF9GT1JfMjEzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMTMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxMyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIxNCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMTQsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjE0LCBzKSwgTkROQk9PU1RfUFBfRk9SXzIxNCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjE0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMTUsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjE1LCBzKSBORE5CT09TVF9QUF9JRihwKDIxNSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMTUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIxNSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjE1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjE2LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIxNiwgcykgTkROQk9PU1RfUFBfSUYocCgyMTYsIHMpLCBORE5CT09TVF9QUF9GT1JfMjE2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMTYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxNihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIxNywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMTcsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjE3LCBzKSwgTkROQk9PU1RfUFBfRk9SXzIxNywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjE3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMTcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMTgsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjE4LCBzKSBORE5CT09TVF9QUF9JRihwKDIxOCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMTgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIxOCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjE4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjE5LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIxOSwgcykgTkROQk9PU1RfUFBfSUYocCgyMTksIHMpLCBORE5CT09TVF9QUF9GT1JfMjE5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMTksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIxOShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIyMCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMjAsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjIwLCBzKSwgTkROQk9PU1RfUFBfRk9SXzIyMCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjIwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMjEsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjIxLCBzKSBORE5CT09TVF9QUF9JRihwKDIyMSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMjEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIyMSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjIxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjIyLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyMiwgcykgTkROQk9PU1RfUFBfSUYocCgyMjIsIHMpLCBORE5CT09TVF9QUF9GT1JfMjIyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMjIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyMihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIyMywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMjMsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjIzLCBzKSwgTkROQk9PU1RfUFBfRk9SXzIyMywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjIzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMjQsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjI0LCBzKSBORE5CT09TVF9QUF9JRihwKDIyNCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMjQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIyNCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjI0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjI1LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyNSwgcykgTkROQk9PU1RfUFBfSUYocCgyMjUsIHMpLCBORE5CT09TVF9QUF9GT1JfMjI1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMjUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyNShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIyNiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMjYsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjI2LCBzKSwgTkROQk9PU1RfUFBfRk9SXzIyNiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjI2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMjcsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjI3LCBzKSBORE5CT09TVF9QUF9JRihwKDIyNywgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMjcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIyNywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjI3KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjI4LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIyOCwgcykgTkROQk9PU1RfUFBfSUYocCgyMjgsIHMpLCBORE5CT09TVF9QUF9GT1JfMjI4LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMjgsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIyOChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIyOSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMjksIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjI5LCBzKSwgTkROQk9PU1RfUFBfRk9SXzIyOSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjI5LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMjkocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMzAsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjMwLCBzKSBORE5CT09TVF9QUF9JRihwKDIzMCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMzAsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIzMCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjMwKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjMxLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIzMSwgcykgTkROQk9PU1RfUFBfSUYocCgyMzEsIHMpLCBORE5CT09TVF9QUF9GT1JfMjMxLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMzEsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzMShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIzMiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMzIsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjMyLCBzKSwgTkROQk9PU1RfUFBfRk9SXzIzMiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjMyLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzIocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMzMsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjMzLCBzKSBORE5CT09TVF9QUF9JRihwKDIzMywgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMzMsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIzMywgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjMzKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjM0LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIzNCwgcykgTkROQk9PU1RfUFBfSUYocCgyMzQsIHMpLCBORE5CT09TVF9QUF9GT1JfMjM0LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMzQsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzNChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIzNSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMzUsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjM1LCBzKSwgTkROQk9PU1RfUFBfRk9SXzIzNSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjM1LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzUocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMzYsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjM2LCBzKSBORE5CT09TVF9QUF9JRihwKDIzNiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMzYsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIzNiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjM2KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjM3LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDIzNywgcykgTkROQk9PU1RfUFBfSUYocCgyMzcsIHMpLCBORE5CT09TVF9QUF9GT1JfMjM3LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyMzcsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzIzNyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDIzOCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyMzgsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjM4LCBzKSwgTkROQk9PU1RfUFBfRk9SXzIzOCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjM4LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yMzgocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyMzksIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjM5LCBzKSBORE5CT09TVF9QUF9JRihwKDIzOSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yMzksIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDIzOSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjM5KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjQwLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI0MCwgcykgTkROQk9PU1RfUFBfSUYocCgyNDAsIHMpLCBORE5CT09TVF9QUF9GT1JfMjQwLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyNDAsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0MChzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDI0MSwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNDEsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjQxLCBzKSwgTkROQk9PU1RfUFBfRk9SXzI0MSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjQxLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDEocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyNDIsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjQyLCBzKSBORE5CT09TVF9QUF9JRihwKDI0MiwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yNDIsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDI0MiwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQyKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjQzLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI0MywgcykgTkROQk9PU1RfUFBfSUYocCgyNDMsIHMpLCBORE5CT09TVF9QUF9GT1JfMjQzLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyNDMsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0MyhzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDI0NCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNDQsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjQ0LCBzKSwgTkROQk9PU1RfUFBfRk9SXzI0NCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjQ0LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDQocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyNDUsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjQ1LCBzKSBORE5CT09TVF9QUF9JRihwKDI0NSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yNDUsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDI0NSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQ1KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjQ2LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI0NiwgcykgTkROQk9PU1RfUFBfSUYocCgyNDYsIHMpLCBORE5CT09TVF9QUF9GT1JfMjQ2LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyNDYsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0NihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDI0NywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNDcsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjQ3LCBzKSwgTkROQk9PU1RfUFBfRk9SXzI0NywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjQ3LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNDcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyNDgsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjQ4LCBzKSBORE5CT09TVF9QUF9JRihwKDI0OCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yNDgsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDI0OCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjQ4KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjQ5LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI0OSwgcykgTkROQk9PU1RfUFBfSUYocCgyNDksIHMpLCBORE5CT09TVF9QUF9GT1JfMjQ5LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyNDksIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI0OShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDI1MCwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNTAsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjUwLCBzKSwgTkROQk9PU1RfUFBfRk9SXzI1MCwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjUwLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNTAocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyNTEsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjUxLCBzKSBORE5CT09TVF9QUF9JRihwKDI1MSwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yNTEsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDI1MSwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjUxKHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjUyLCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI1MiwgcykgTkROQk9PU1RfUFBfSUYocCgyNTIsIHMpLCBORE5CT09TVF9QUF9GT1JfMjUyLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyNTIsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1MihzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDI1MywgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNTMsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjUzLCBzKSwgTkROQk9PU1RfUFBfRk9SXzI1MywgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjUzLCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNTMocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyNTQsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjU0LCBzKSBORE5CT09TVF9QUF9JRihwKDI1NCwgcyksIE5ETkJPT1NUX1BQX0ZPUl8yNTQsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDI1NCwgcyksIHAsIG8sIG0pCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfMjU0KHMsIHAsIG8sIG0pIE5ETkJPT1NUX1BQX0lGKHAoMjU1LCBzKSwgbSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIpKDI1NSwgcykgTkROQk9PU1RfUFBfSUYocCgyNTUsIHMpLCBORE5CT09TVF9QUF9GT1JfMjU1LCBORE5CT09TVF9QUF9UVVBMRV9FQVRfNCkobygyNTUsIHMpLCBwLCBvLCBtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SXzI1NShzLCBwLCBvLCBtKSBORE5CT09TVF9QUF9JRihwKDI1NiwgcyksIG0sIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yKSgyNTYsIHMpIE5ETkJPT1NUX1BQX0lGKHAoMjU2LCBzKSwgTkROQk9PU1RfUFBfRk9SXzI1NiwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQpKG8oMjU2LCBzKSwgcCwgbywgbSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNTYocywgcCwgbywgbSkgTkROQk9PU1RfUFBfSUYocCgyNTcsIHMpLCBtLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMikoMjU3LCBzKSBORE5CT09TVF9QUF9JRihwKDI1NywgcyksIE5ETkJPT1NUX1BQX0ZPUl8yNTcsIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KShvKDI1NywgcyksIHAsIG8sIG0pCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW0uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzM1Y2IxYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW0uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBAQAotIyAvKiBDb3B5cmlnaHQgKEMpIDIwMDEKLSMgICogSG91c2VtYXJxdWUgT3kKLSMgICogaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20KLSMgICoKLSMgICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICovCi0jCi0jIC8qIFJldmlzZWQgYnkgUGF1bCBNZW5zb25pZGVzICgyMDAyKSAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfUkVQRVRJVElPTl9FTlVNX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1JFUEVUSVRJT05fRU5VTV9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2RlYnVnL2Vycm9yLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2RldGFpbC9hdXRvX3JlYy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9wdW5jdHVhdGlvbi9jb21tYV9pZi5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL3JlcGVhdC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9lbGVtLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL3JlbS5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX0VOVU0gKi8KLSMKLSMgaWYgMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTShjb3VudCwgbWFjcm8sIGRhdGEpCi0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9FTlVNIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9FTlVNXywgTkROQk9PU1RfUFBfQVVUT19SRUMoTkROQk9PU1RfUFBfUkVQRUFUX1AsIDQpKQotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRURHKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fMShjLCBtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMShjLCBORE5CT09TVF9QUF9FTlVNX01fMSwgKG0sIGQpKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV8yKGMsIG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yKGMsIE5ETkJPT1NUX1BQX0VOVU1fTV8yLCAobSwgZCkpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNXzMoYywgbSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzMoYywgTkROQk9PU1RfUFBfRU5VTV9NXzMsIChtLCBkKSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV8xKGMsIG0sIGQpIE5ETkJPT1NUX1BQX0VOVU1fMV9JKGMsIG0sIGQpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNXzIoYywgbSwgZCkgTkROQk9PU1RfUFBfRU5VTV8yX0koYywgbSwgZCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fMyhjLCBtLCBkKSBORE5CT09TVF9QUF9FTlVNXzNfSShjLCBtLCBkKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV8xX0koYywgbSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzEoYywgTkROQk9PU1RfUFBfRU5VTV9NXzEsIChtLCBkKSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fMl9JKGMsIG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yKGMsIE5ETkJPT1NUX1BQX0VOVU1fTV8yLCAobSwgZCkpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNXzNfSShjLCBtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMyhjLCBORE5CT09TVF9QUF9FTlVNX01fMywgKG0sIGQpKQotIyBlbmRpZgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV80KGMsIG0sIGQpIE5ETkJPT1NUX1BQX0VSUk9SKDB4MDAwMykKLSMKLSMgaWYgTkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfU1RSSUNUKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fTV8xKHosIG4sIG1kKSBORE5CT09TVF9QUF9FTlVNX01fMV9JTSh6LCBuLCBORE5CT09TVF9QUF9UVVBMRV9SRU1fMiBtZCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fTV8yKHosIG4sIG1kKSBORE5CT09TVF9QUF9FTlVNX01fMl9JTSh6LCBuLCBORE5CT09TVF9QUF9UVVBMRV9SRU1fMiBtZCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fTV8zKHosIG4sIG1kKSBORE5CT09TVF9QUF9FTlVNX01fM19JTSh6LCBuLCBORE5CT09TVF9QUF9UVVBMRV9SRU1fMiBtZCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fTV8xX0lNKHosIG4sIGltKSBORE5CT09TVF9QUF9FTlVNX01fMV9JKHosIG4sIGltKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9NXzJfSU0oeiwgbiwgaW0pIE5ETkJPT1NUX1BQX0VOVU1fTV8yX0koeiwgbiwgaW0pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX01fM19JTSh6LCBuLCBpbSkgTkROQk9PU1RfUFBfRU5VTV9NXzNfSSh6LCBuLCBpbSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9NXzEoeiwgbiwgbWQpIE5ETkJPT1NUX1BQX0VOVU1fTV8xX0koeiwgbiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgyLCAwLCBtZCksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMiwgMSwgbWQpKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9NXzIoeiwgbiwgbWQpIE5ETkJPT1NUX1BQX0VOVU1fTV8yX0koeiwgbiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgyLCAwLCBtZCksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMiwgMSwgbWQpKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9NXzMoeiwgbiwgbWQpIE5ETkJPT1NUX1BQX0VOVU1fTV8zX0koeiwgbiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgyLCAwLCBtZCksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMiwgMSwgbWQpKQotIyBlbmRpZgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9NXzFfSSh6LCBuLCBtLCBkKSBORE5CT09TVF9QUF9DT01NQV9JRihuKSBtKHosIG4sIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX01fMl9JKHosIG4sIG0sIGQpIE5ETkJPT1NUX1BQX0NPTU1BX0lGKG4pIG0oeiwgbiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fTV8zX0koeiwgbiwgbSwgZCkgTkROQk9PU1RfUFBfQ09NTUFfSUYobikgbSh6LCBuLCBkKQotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX2JpbmFyeV9wYXJhbXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX2JpbmFyeV9wYXJhbXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMDg0MjZmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bV9iaW5hcnlfcGFyYW1zLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfUkVQRVRJVElPTl9FTlVNX0JJTkFSWV9QQVJBTVNfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfUkVQRVRJVElPTl9FTlVNX0JJTkFSWV9QQVJBTVNfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9wdW5jdHVhdGlvbi9jb21tYV9pZi5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL3JlcGVhdC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9lbGVtLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL3JlbS5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX0VOVU1fQklOQVJZX1BBUkFNUyAqLwotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRURHKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fQklOQVJZX1BBUkFNUyhjb3VudCwgcDEsIHAyKSBORE5CT09TVF9QUF9SRVBFQVQoY291bnQsIE5ETkJPT1NUX1BQX0VOVU1fQklOQVJZX1BBUkFNU19NLCAocDEsIHAyKSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9CSU5BUllfUEFSQU1TKGNvdW50LCBwMSwgcDIpIE5ETkJPT1NUX1BQX0VOVU1fQklOQVJZX1BBUkFNU19JKGNvdW50LCBwMSwgcDIpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX0JJTkFSWV9QQVJBTVNfSShjb3VudCwgcDEsIHAyKSBORE5CT09TVF9QUF9SRVBFQVQoY291bnQsIE5ETkJPT1NUX1BQX0VOVU1fQklOQVJZX1BBUkFNU19NLCAocDEsIHAyKSkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfU1RSSUNUKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fQklOQVJZX1BBUkFNU19NKHosIG4sIHBwKSBORE5CT09TVF9QUF9FTlVNX0JJTkFSWV9QQVJBTVNfTV9JTSh6LCBuLCBORE5CT09TVF9QUF9UVVBMRV9SRU1fMiBwcCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fQklOQVJZX1BBUkFNU19NX0lNKHosIG4sIGltKSBORE5CT09TVF9QUF9FTlVNX0JJTkFSWV9QQVJBTVNfTV9JKHosIG4sIGltKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX0JJTkFSWV9QQVJBTVNfTSh6LCBuLCBwcCkgTkROQk9PU1RfUFBfRU5VTV9CSU5BUllfUEFSQU1TX01fSSh6LCBuLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDIsIDAsIHBwKSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgyLCAxLCBwcCkpCi0jIGVuZGlmCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19NU1ZDKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fQklOQVJZX1BBUkFNU19NX0koeiwgbiwgcDEsIHAyKSBORE5CT09TVF9QUF9FTlVNX0JJTkFSWV9QQVJBTVNfTV9JSSh6LCBuLCBwMSwgcDIpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX0JJTkFSWV9QQVJBTVNfTV9JSSh6LCBuLCBwMSwgcDIpIE5ETkJPT1NUX1BQX0NPTU1BX0lGKG4pIHAxICMjIG4gcDIgIyMgbgotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX0JJTkFSWV9QQVJBTVNfTV9JKHosIG4sIHAxLCBwMikgTkROQk9PU1RfUFBfQ09NTUFfSUYobikgTkROQk9PU1RfUFBfQ0FUKHAxLCBuKSBORE5CT09TVF9QUF9DQVQocDIsIG4pCi0jIGVuZGlmCi0jCi0jIC8qIE5ETkJPT1NUX1BQX0VOVU1fQklOQVJZX1BBUkFNU19aICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9CSU5BUllfUEFSQU1TX1ooeiwgY291bnQsIHAxLCBwMikgTkROQk9PU1RfUFBfUkVQRUFUXyAjIyB6KGNvdW50LCBORE5CT09TVF9QUF9FTlVNX0JJTkFSWV9QQVJBTVNfTSwgKHAxLCBwMikpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fQklOQVJZX1BBUkFNU19aKHosIGNvdW50LCBwMSwgcDIpIE5ETkJPT1NUX1BQX0VOVU1fQklOQVJZX1BBUkFNU19aX0koeiwgY291bnQsIHAxLCBwMikKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fQklOQVJZX1BBUkFNU19aX0koeiwgY291bnQsIHAxLCBwMikgTkROQk9PU1RfUFBfUkVQRUFUXyAjIyB6KGNvdW50LCBORE5CT09TVF9QUF9FTlVNX0JJTkFSWV9QQVJBTVNfTSwgKHAxLCBwMikpCi0jIGVuZGlmCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW1fcGFyYW1zLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bV9wYXJhbXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZGQ3Njc3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bV9wYXJhbXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotIyAvKiBDb3B5cmlnaHQgKEMpIDIwMDEKLSMgICogSG91c2VtYXJxdWUgT3kKLSMgICogaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20KLSMgICoKLSMgICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICovCi0jCi0jIC8qIFJldmlzZWQgYnkgUGF1bCBNZW5zb25pZGVzICgyMDAyKSAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfUkVQRVRJVElPTl9FTlVNX1BBUkFNU19IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9SRVBFVElUSU9OX0VOVU1fUEFSQU1TX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9wdW5jdHVhdGlvbi9jb21tYV9pZi5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL3JlcGVhdC5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoY291bnQsIHBhcmFtKSBORE5CT09TVF9QUF9SRVBFQVQoY291bnQsIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TX00sIHBhcmFtKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhjb3VudCwgcGFyYW0pIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TX0koY291bnQsIHBhcmFtKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVNfSShjb3VudCwgcGFyYW0pIE5ETkJPT1NUX1BQX1JFUEVBVChjb3VudCwgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVNfTSwgcGFyYW0pCi0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX1BBUkFNU19NKHosIG4sIHBhcmFtKSBORE5CT09TVF9QUF9DT01NQV9JRihuKSBwYXJhbSAjIyBuCi0jCi0jIC8qIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TX1ogKi8KLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX1BBUkFNU19aKHosIGNvdW50LCBwYXJhbSkgTkROQk9PU1RfUFBfUkVQRUFUXyAjIyB6KGNvdW50LCBORE5CT09TVF9QUF9FTlVNX1BBUkFNU19NLCBwYXJhbSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVNfWih6LCBjb3VudCwgcGFyYW0pIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TX1pfSSh6LCBjb3VudCwgcGFyYW0pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX1BBUkFNU19aX0koeiwgY291bnQsIHBhcmFtKSBORE5CT09TVF9QUF9SRVBFQVRfICMjIHooY291bnQsIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TX00sIHBhcmFtKQotIyBlbmRpZgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX3BhcmFtc193aXRoX2FfZGVmYXVsdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW1fcGFyYW1zX3dpdGhfYV9kZWZhdWx0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWZmZDM3Ny4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW1fcGFyYW1zX3dpdGhfYV9kZWZhdWx0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLSMgLyogQ29weXJpZ2h0IChDKSAyMDAxCi0jICAqIEhvdXNlbWFycXVlIE95Ci0jICAqIGh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tCi0jICAqCi0jICAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqLwotIwotIyAvKiBSZXZpc2VkIGJ5IFBhdWwgTWVuc29uaWRlcyAoMjAwMikgKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1JFUEVUSVRJT05fRU5VTV9QQVJBTVNfV0lUSF9BX0RFRkFVTFRfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfUkVQRVRJVElPTl9FTlVNX1BBUkFNU19XSVRIX0FfREVGQVVMVF9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZmFjaWxpdGllcy9pbnRlcmNlcHQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX2JpbmFyeV9wYXJhbXMuaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9FTlVNX1BBUkFNU19XSVRIX0FfREVGQVVMVCAqLwotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVNfV0lUSF9BX0RFRkFVTFQoY291bnQsIHBhcmFtLCBkZWYpIE5ETkJPT1NUX1BQX0VOVU1fQklOQVJZX1BBUkFNUyhjb3VudCwgcGFyYW0sID0gZGVmIE5ETkJPT1NUX1BQX0lOVEVSQ0VQVCkKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bV9zaGlmdGVkX3BhcmFtcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW1fc2hpZnRlZF9wYXJhbXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiODFhZjAyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bV9zaGlmdGVkX3BhcmFtcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi0jIC8qIENvcHlyaWdodCAoQykgMjAwMQotIyAgKiBIb3VzZW1hcnF1ZSBPeQotIyAgKiBodHRwOi8vd3d3LmhvdXNlbWFycXVlLmNvbQotIyAgKgotIyAgKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKi8KLSMKLSMgLyogUmV2aXNlZCBieSBQYXVsIE1lbnNvbmlkZXMgKDIwMDIpICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9SRVBFVElUSU9OX0VOVU1fU0hJRlRFRF9QQVJBTVNfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfUkVQRVRJVElPTl9FTlVNX1NISUZURURfUEFSQU1TX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9kZWMuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9pbmMuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcHVuY3R1YXRpb24vY29tbWFfaWYuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9yZXBlYXQuaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9FTlVNX1NISUZURURfUEFSQU1TICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9TSElGVEVEX1BBUkFNUyhjb3VudCwgcGFyYW0pIE5ETkJPT1NUX1BQX1JFUEVBVChORE5CT09TVF9QUF9ERUMoY291bnQpLCBORE5CT09TVF9QUF9FTlVNX1NISUZURURfUEFSQU1TX00sIHBhcmFtKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX1NISUZURURfUEFSQU1TKGNvdW50LCBwYXJhbSkgTkROQk9PU1RfUFBfRU5VTV9TSElGVEVEX1BBUkFNU19JKGNvdW50LCBwYXJhbSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fU0hJRlRFRF9QQVJBTVNfSShjb3VudCwgcGFyYW0pIE5ETkJPT1NUX1BQX1JFUEVBVChORE5CT09TVF9QUF9ERUMoY291bnQpLCBORE5CT09TVF9QUF9FTlVNX1NISUZURURfUEFSQU1TX00sIHBhcmFtKQotIyBlbmRpZgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9TSElGVEVEX1BBUkFNU19NKHosIG4sIHBhcmFtKSBORE5CT09TVF9QUF9DT01NQV9JRihuKSBORE5CT09TVF9QUF9DQVQocGFyYW0sIE5ETkJPT1NUX1BQX0lOQyhuKSkKLSMKLSMgLyogTkROQk9PU1RfUFBfRU5VTV9TSElGVEVEX1BBUkFNU19aICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9TSElGVEVEX1BBUkFNU19aKHosIGNvdW50LCBwYXJhbSkgTkROQk9PU1RfUFBfUkVQRUFUXyAjIyB6KE5ETkJPT1NUX1BQX0RFQyhjb3VudCksIE5ETkJPT1NUX1BQX0VOVU1fU0hJRlRFRF9QQVJBTVNfTSwgcGFyYW0pCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fU0hJRlRFRF9QQVJBTVNfWih6LCBjb3VudCwgcGFyYW0pIE5ETkJPT1NUX1BQX0VOVU1fU0hJRlRFRF9QQVJBTVNfWl9JKHosIGNvdW50LCBwYXJhbSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fU0hJRlRFRF9QQVJBTVNfWl9JKHosIGNvdW50LCBwYXJhbSkgTkROQk9PU1RfUFBfUkVQRUFUXyAjIyB6KE5ETkJPT1NUX1BQX0RFQyhjb3VudCksIE5ETkJPT1NUX1BQX0VOVU1fU0hJRlRFRF9QQVJBTVNfTSwgcGFyYW0pCi0jIGVuZGlmCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW1fdHJhaWxpbmcuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX3RyYWlsaW5nLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmI2YzUyMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW1fdHJhaWxpbmcuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9SRVBFVElUSU9OX0VOVU1fVFJBSUxJTkdfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfUkVQRVRJVElPTl9FTlVNX1RSQUlMSU5HX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZGVidWcvZXJyb3IuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZGV0YWlsL2F1dG9fcmVjLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vcmVwZWF0LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL2VsZW0uaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvcmVtLmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfRU5VTV9UUkFJTElORyAqLwotIwotIyBpZiAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HKGNvdW50LCBtYWNybywgZGF0YSkKLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkcgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfLCBORE5CT09TVF9QUF9BVVRPX1JFQyhORE5CT09TVF9QUF9SRVBFQVRfUCwgNCkpCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR18xKGMsIG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xKGMsIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfTV8xLCAobSwgZCkpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HXzIoYywgbSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzIoYywgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19NXzIsIChtLCBkKSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfMyhjLCBtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMyhjLCBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX01fMywgKG0sIGQpKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HXzEoYywgbSwgZCkgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR18xX0koYywgbSwgZCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfMihjLCBtLCBkKSBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HXzJfSShjLCBtLCBkKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR18zKGMsIG0sIGQpIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfM19JKGMsIG0sIGQpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HXzFfSShjLCBtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMShjLCBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX01fMSwgKG0sIGQpKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR18yX0koYywgbSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzIoYywgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19NXzIsIChtLCBkKSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfM19JKGMsIG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zKGMsIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfTV8zLCAobSwgZCkpCi0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HXzQoYywgbSwgZCkgTkROQk9PU1RfUFBfRVJST1IoMHgwMDAzKQotIwotIyBpZiBORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19TVFJJQ1QoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19NXzEoeiwgbiwgbWQpIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfTV8xX0lNKHosIG4sIE5ETkJPT1NUX1BQX1RVUExFX1JFTV8yIG1kKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19NXzIoeiwgbiwgbWQpIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfTV8yX0lNKHosIG4sIE5ETkJPT1NUX1BQX1RVUExFX1JFTV8yIG1kKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19NXzMoeiwgbiwgbWQpIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfTV8zX0lNKHosIG4sIE5ETkJPT1NUX1BQX1RVUExFX1JFTV8yIG1kKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19NXzFfSU0oeiwgbiwgaW0pIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfTV8xX0koeiwgbiwgaW0pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX01fMl9JTSh6LCBuLCBpbSkgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19NXzJfSSh6LCBuLCBpbSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfTV8zX0lNKHosIG4sIGltKSBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX01fM19JKHosIG4sIGltKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX01fMSh6LCBuLCBtZCkgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19NXzFfSSh6LCBuLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDIsIDAsIG1kKSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgyLCAxLCBtZCkpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX01fMih6LCBuLCBtZCkgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19NXzJfSSh6LCBuLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDIsIDAsIG1kKSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgyLCAxLCBtZCkpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX01fMyh6LCBuLCBtZCkgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19NXzNfSSh6LCBuLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDIsIDAsIG1kKSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgyLCAxLCBtZCkpCi0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX01fMV9JKHosIG4sIG0sIGQpICwgbSh6LCBuLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19NXzJfSSh6LCBuLCBtLCBkKSAsIG0oeiwgbiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfTV8zX0koeiwgbiwgbSwgZCkgLCBtKHosIG4sIGQpCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW1fdHJhaWxpbmdfcGFyYW1zLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bV90cmFpbGluZ19wYXJhbXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYTljZDdhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bV90cmFpbGluZ19wYXJhbXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9SRVBFVElUSU9OX0VOVU1fVFJBSUxJTkdfUEFSQU1TX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1JFUEVUSVRJT05fRU5VTV9UUkFJTElOR19QQVJBTVNfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vcmVwZWF0LmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19QQVJBTVMgKi8KLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX1BBUkFNUyhjb3VudCwgcGFyYW0pIE5ETkJPT1NUX1BQX1JFUEVBVChjb3VudCwgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19QQVJBTVNfTSwgcGFyYW0pCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfUEFSQU1TKGNvdW50LCBwYXJhbSkgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19QQVJBTVNfSShjb3VudCwgcGFyYW0pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX1BBUkFNU19JKGNvdW50LCBwYXJhbSkgTkROQk9PU1RfUFBfUkVQRUFUKGNvdW50LCBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX1BBUkFNU19NLCBwYXJhbSkKLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfUEFSQU1TX00oeiwgbiwgcGFyYW0pICwgcGFyYW0gIyMgbgotIwotIyAvKiBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX1BBUkFNU19aICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19QQVJBTVNfWih6LCBjb3VudCwgcGFyYW0pIE5ETkJPT1NUX1BQX1JFUEVBVF8gIyMgeihjb3VudCwgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19QQVJBTVNfTSwgcGFyYW0pCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfUEFSQU1TX1ooeiwgY291bnQsIHBhcmFtKSBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX1BBUkFNU19aX0koeiwgY291bnQsIHBhcmFtKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19QQVJBTVNfWl9JKHosIGNvdW50LCBwYXJhbSkgTkROQk9PU1RfUFBfUkVQRUFUXyAjIyB6KGNvdW50LCBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX1BBUkFNU19NLCBwYXJhbSkKLSMgZW5kaWYKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZm9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZm9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODdhZGYzZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2Zvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMDYgKzAsMCBAQAotIyAvKiBDb3B5cmlnaHQgKEMpIDIwMDEKLSMgICogSG91c2VtYXJxdWUgT3kKLSMgICogaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20KLSMgICoKLSMgICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICovCi0jCi0jIC8qIFJldmlzZWQgYnkgUGF1bCBNZW5zb25pZGVzICgyMDAyKSAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfUkVQRVRJVElPTl9GT1JfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfUkVQRVRJVElPTl9GT1JfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZGVidWcvZXJyb3IuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZGV0YWlsL2F1dG9fcmVjLmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfRk9SICovCi0jCi0jIGlmIDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUihzdGF0ZSwgcHJlZCwgb3AsIG1hY3JvKQotIyBlbmRpZgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9GT1JfLCBORE5CT09TVF9QUF9BVVRPX1JFQyhORE5CT09TVF9QUF9GT1JfUCwgMjU2KSkKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9QKG4pIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9GT1JfQ0hFQ0tfLCBORE5CT09TVF9QUF9GT1JfICMjIG4oMSwgTkROQk9PU1RfUFBfRk9SX1NSX1AsIE5ETkJPT1NUX1BQX0ZPUl9TUl9PLCBORE5CT09TVF9QUF9GT1JfU1JfTSkpCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfU1JfUChyLCBzKSBzCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfU1JfTyhyLCBzKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfU1JfTShyLCBzKSBORE5CT09TVF9QUF9OSUwKLSMKLSMgaWYgTkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRURHKCkKLSMgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZGV0YWlsL2VkZy9mb3IuaHBwPgotIyBlbGlmIE5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX01TVkMoKQotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9kZXRhaWwvbXN2Yy9mb3IuaHBwPgotIyBlbGlmIE5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0RNQygpCi0jICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2RldGFpbC9kbWMvZm9yLmhwcD4KLSMgZWxzZQotIyAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9kZXRhaWwvZm9yLmhwcD4KLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl8yNTcocywgcCwgbywgbSkgTkROQk9PU1RfUFBfRVJST1IoMHgwMDAyKQotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX05JTCAxCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzEocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8yKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzQocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl81KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfNihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzcocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl84KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfOShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzEwKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTEocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xMihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzEzKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTQocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xNShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE2KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMTcocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8xOChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE5KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMjAocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8yMShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIyKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMjMocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8yNChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzI1KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMjYocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8yNyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzI4KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMjkocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8zMChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzMxKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMzIocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8zMyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzM0KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMzUocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8zNihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzM3KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfMzgocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl8zOShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzQwKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfNDEocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl80MihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzQzKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfNDQocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl80NShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzQ2KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfNDcocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl80OChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzQ5KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfNTAocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl81MShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzUyKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfNTMocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl81NChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzU1KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfNTYocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl81NyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzU4KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfNTkocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl82MChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzYxKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfNjIocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl82MyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzY0KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfNjUocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl82NihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzY3KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfNjgocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl82OShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzcwKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfNzEocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl83MihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzczKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfNzQocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl83NShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzc2KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfNzcocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl83OChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzc5KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfODAocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl84MShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzgyKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfODMocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl84NChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzg1KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfODYocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl84NyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzg4KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfODkocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl85MChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzkxKHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfOTIocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl85MyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzk0KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfOTUocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl85NihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzk3KHMsIHAsIG8sIG0pIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0ZPUl9DSEVDS19ORE5CT09TVF9QUF9GT1JfOTgocywgcCwgbywgbSkgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfRk9SX0NIRUNLX05ETkJPT1NUX1BQX0ZPUl85OShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzEwMChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzEwMShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzEwMihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzEwMyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzEwNChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzEwNShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzEwNihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzEwNyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzEwOChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzEwOShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzExMChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzExMShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzExMihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzExMyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzExNChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzExNShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzExNihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzExNyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzExOChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzExOShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzEyMChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzEyMShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzEyMihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzEyMyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzEyNChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzEyNShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzEyNihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzEyNyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzEyOChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzEyOShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzEzMChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzEzMShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzEzMihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzEzMyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzEzNChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzEzNShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzEzNihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzEzNyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzEzOChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzEzOShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE0MChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE0MShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE0MihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE0MyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE0NChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE0NShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE0NihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE0NyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE0OChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE0OShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE1MChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE1MShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE1MihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE1MyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE1NChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE1NShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE1NihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE1NyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE1OChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE1OShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE2MChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE2MShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE2MihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE2MyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE2NChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE2NShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE2NihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE2NyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE2OChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE2OShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE3MChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE3MShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE3MihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE3MyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE3NChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE3NShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE3NihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE3NyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE3OChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE3OShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE4MChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE4MShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE4MihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE4MyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE4NChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE4NShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE4NihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE4NyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE4OChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE4OShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE5MChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE5MShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE5MihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE5MyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE5NChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE5NShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE5NihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE5NyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE5OChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzE5OShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIwMChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIwMShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIwMihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIwMyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIwNChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIwNShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIwNihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIwNyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIwOChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIwOShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIxMChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIxMShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIxMihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIxMyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIxNChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIxNShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIxNihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIxNyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIxOChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIxOShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIyMChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIyMShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIyMihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIyMyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIyNChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIyNShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIyNihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIyNyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIyOChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIyOShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIzMChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIzMShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIzMihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIzMyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIzNChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIzNShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIzNihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIzNyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIzOChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzIzOShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzI0MChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzI0MShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzI0MihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzI0MyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzI0NChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzI0NShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzI0NihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzI0NyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzI0OChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzI0OShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzI1MChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzI1MShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzI1MihzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzI1MyhzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzI1NChzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzI1NShzLCBwLCBvLCBtKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9GT1JfQ0hFQ0tfTkROQk9PU1RfUFBfRk9SXzI1NihzLCBwLCBvLCBtKSAwCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL3JlcGVhdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL3JlcGVhdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU1YzRhZGMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9yZXBlYXQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODI1ICswLDAgQEAKLSMgLyogQ29weXJpZ2h0IChDKSAyMDAxCi0jICAqIEhvdXNlbWFycXVlIE95Ci0jICAqIGh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tCi0jICAqCi0jICAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqLwotIwotIyAvKiBSZXZpc2VkIGJ5IFBhdWwgTWVuc29uaWRlcyAoMjAwMikgKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1JFUEVUSVRJT05fUkVQRUFUX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1JFUEVUSVRJT05fUkVQRUFUX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZGVidWcvZXJyb3IuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZGV0YWlsL2F1dG9fcmVjLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL2VhdC5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX1JFUEVBVCAqLwotIwotIyBpZiAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVQoY291bnQsIG1hY3JvLCBkYXRhKQotIyBlbmRpZgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9SRVBFQVRfLCBORE5CT09TVF9QUF9BVVRPX1JFQyhORE5CT09TVF9QUF9SRVBFQVRfUCwgNCkpCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfUChuKSBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfUkVQRUFUX0NIRUNLXywgTkROQk9PU1RfUFBfUkVQRUFUXyAjIyBuKDEsIE5ETkJPT1NUX1BQX05JTCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMywgTkROQk9PU1RfUFBfTklMKSkKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF9DSEVDS19ORE5CT09TVF9QUF9OSUwgMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUX0NIRUNLX05ETkJPT1NUX1BQX1JFUEVBVF8xKGMsIG0sIGQpIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF9DSEVDS19ORE5CT09TVF9QUF9SRVBFQVRfMihjLCBtLCBkKSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfQ0hFQ0tfTkROQk9PU1RfUFBfUkVQRUFUXzMoYywgbSwgZCkgMAotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzEoYywgbSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfSShjLCBtLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzIoYywgbSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfSShjLCBtLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzMoYywgbSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfSShjLCBtLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzQoYywgbSwgZCkgTkROQk9PU1RfUFBfRVJST1IoMHgwMDAzKQotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfSShjLCBtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8gIyMgYyhtLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfSShjLCBtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8gIyMgYyhtLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfSShjLCBtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18gIyMgYyhtLCBkKQotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFTVCBORE5CT09TVF9QUF9SRVBFQVRfMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJORCBORE5CT09TVF9QUF9SRVBFQVRfMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNSRCBORE5CT09TVF9QUF9SRVBFQVRfMwotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMChtLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMShtLCBkKSBtKDIsIDAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEobSwgZCkgbSgyLCAxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yKG0sIGQpIG0oMiwgMiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMyhtLCBkKSBtKDIsIDMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV81KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzQobSwgZCkgbSgyLCA0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfNihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV81KG0sIGQpIG0oMiwgNSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfNihtLCBkKSBtKDIsIDYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV84KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzcobSwgZCkgbSgyLCA3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfOShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV84KG0sIGQpIG0oMiwgOCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzkobSwgZCkgbSgyLCA5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTAobSwgZCkgbSgyLCAxMCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzExKG0sIGQpIG0oMiwgMTEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMihtLCBkKSBtKDIsIDEyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTMobSwgZCkgbSgyLCAxMywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE0KG0sIGQpIG0oMiwgMTQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNShtLCBkKSBtKDIsIDE1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTYobSwgZCkgbSgyLCAxNiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE3KG0sIGQpIG0oMiwgMTcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xOShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xOChtLCBkKSBtKDIsIDE4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTkobSwgZCkgbSgyLCAxOSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIwKG0sIGQpIG0oMiwgMjAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMShtLCBkKSBtKDIsIDIxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjIobSwgZCkgbSgyLCAyMiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzI0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIzKG0sIGQpIG0oMiwgMjMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yNShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yNChtLCBkKSBtKDIsIDI0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjUobSwgZCkgbSgyLCAyNSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzI3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzI2KG0sIGQpIG0oMiwgMjYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yOChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yNyhtLCBkKSBtKDIsIDI3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjgobSwgZCkgbSgyLCAyOCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzMwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzI5KG0sIGQpIG0oMiwgMjksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8zMShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8zMChtLCBkKSBtKDIsIDMwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMzIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMzEobSwgZCkgbSgyLCAzMSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzMzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzMyKG0sIGQpIG0oMiwgMzIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8zNChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8zMyhtLCBkKSBtKDIsIDMzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMzUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMzQobSwgZCkgbSgyLCAzNCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzM2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzM1KG0sIGQpIG0oMiwgMzUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8zNyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8zNihtLCBkKSBtKDIsIDM2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMzgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMzcobSwgZCkgbSgyLCAzNywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzM5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzM4KG0sIGQpIG0oMiwgMzgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV80MChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8zOShtLCBkKSBtKDIsIDM5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfNDEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfNDAobSwgZCkgbSgyLCA0MCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzQyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzQxKG0sIGQpIG0oMiwgNDEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV80MyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV80MihtLCBkKSBtKDIsIDQyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfNDQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfNDMobSwgZCkgbSgyLCA0MywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzQ1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzQ0KG0sIGQpIG0oMiwgNDQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV80NihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV80NShtLCBkKSBtKDIsIDQ1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfNDcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfNDYobSwgZCkgbSgyLCA0NiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzQ4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzQ3KG0sIGQpIG0oMiwgNDcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV80OShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV80OChtLCBkKSBtKDIsIDQ4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfNTAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfNDkobSwgZCkgbSgyLCA0OSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzUxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzUwKG0sIGQpIG0oMiwgNTAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV81MihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV81MShtLCBkKSBtKDIsIDUxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfNTMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfNTIobSwgZCkgbSgyLCA1MiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzU0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzUzKG0sIGQpIG0oMiwgNTMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV81NShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV81NChtLCBkKSBtKDIsIDU0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfNTYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfNTUobSwgZCkgbSgyLCA1NSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzU3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzU2KG0sIGQpIG0oMiwgNTYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV81OChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV81NyhtLCBkKSBtKDIsIDU3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfNTkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfNTgobSwgZCkgbSgyLCA1OCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzYwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzU5KG0sIGQpIG0oMiwgNTksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV82MShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV82MChtLCBkKSBtKDIsIDYwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfNjIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfNjEobSwgZCkgbSgyLCA2MSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzYzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzYyKG0sIGQpIG0oMiwgNjIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV82NChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV82MyhtLCBkKSBtKDIsIDYzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfNjUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfNjQobSwgZCkgbSgyLCA2NCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzY2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzY1KG0sIGQpIG0oMiwgNjUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV82NyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV82NihtLCBkKSBtKDIsIDY2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfNjgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfNjcobSwgZCkgbSgyLCA2NywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzY5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzY4KG0sIGQpIG0oMiwgNjgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV83MChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV82OShtLCBkKSBtKDIsIDY5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfNzEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfNzAobSwgZCkgbSgyLCA3MCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzcyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzcxKG0sIGQpIG0oMiwgNzEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV83MyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV83MihtLCBkKSBtKDIsIDcyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfNzQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfNzMobSwgZCkgbSgyLCA3MywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzc1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzc0KG0sIGQpIG0oMiwgNzQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV83NihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV83NShtLCBkKSBtKDIsIDc1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfNzcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfNzYobSwgZCkgbSgyLCA3NiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzc4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzc3KG0sIGQpIG0oMiwgNzcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV83OShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV83OChtLCBkKSBtKDIsIDc4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfODAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfNzkobSwgZCkgbSgyLCA3OSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzgxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzgwKG0sIGQpIG0oMiwgODAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV84MihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV84MShtLCBkKSBtKDIsIDgxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfODMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfODIobSwgZCkgbSgyLCA4MiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzg0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzgzKG0sIGQpIG0oMiwgODMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV84NShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV84NChtLCBkKSBtKDIsIDg0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfODYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfODUobSwgZCkgbSgyLCA4NSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzg3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzg2KG0sIGQpIG0oMiwgODYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV84OChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV84NyhtLCBkKSBtKDIsIDg3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfODkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfODgobSwgZCkgbSgyLCA4OCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzkwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzg5KG0sIGQpIG0oMiwgODksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV85MShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV85MChtLCBkKSBtKDIsIDkwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfOTIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfOTEobSwgZCkgbSgyLCA5MSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzkzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzkyKG0sIGQpIG0oMiwgOTIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV85NChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV85MyhtLCBkKSBtKDIsIDkzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfOTUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfOTQobSwgZCkgbSgyLCA5NCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzk2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzk1KG0sIGQpIG0oMiwgOTUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV85NyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV85NihtLCBkKSBtKDIsIDk2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfOTgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfOTcobSwgZCkgbSgyLCA5NywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzk5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzk4KG0sIGQpIG0oMiwgOTgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMDAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfOTkobSwgZCkgbSgyLCA5OSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEwMShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMDAobSwgZCkgbSgyLCAxMDAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMDIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTAxKG0sIGQpIG0oMiwgMTAxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTAzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEwMihtLCBkKSBtKDIsIDEwMiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEwNChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMDMobSwgZCkgbSgyLCAxMDMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMDUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTA0KG0sIGQpIG0oMiwgMTA0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTA2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEwNShtLCBkKSBtKDIsIDEwNSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEwNyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMDYobSwgZCkgbSgyLCAxMDYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMDgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTA3KG0sIGQpIG0oMiwgMTA3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTA5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEwOChtLCBkKSBtKDIsIDEwOCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzExMChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMDkobSwgZCkgbSgyLCAxMDksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMTEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTEwKG0sIGQpIG0oMiwgMTEwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTEyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzExMShtLCBkKSBtKDIsIDExMSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzExMyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMTIobSwgZCkgbSgyLCAxMTIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMTQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTEzKG0sIGQpIG0oMiwgMTEzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTE1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzExNChtLCBkKSBtKDIsIDExNCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzExNihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMTUobSwgZCkgbSgyLCAxMTUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMTcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTE2KG0sIGQpIG0oMiwgMTE2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTE4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzExNyhtLCBkKSBtKDIsIDExNywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzExOShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMTgobSwgZCkgbSgyLCAxMTgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMjAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTE5KG0sIGQpIG0oMiwgMTE5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTIxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEyMChtLCBkKSBtKDIsIDEyMCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEyMihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMjEobSwgZCkgbSgyLCAxMjEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMjMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTIyKG0sIGQpIG0oMiwgMTIyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTI0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEyMyhtLCBkKSBtKDIsIDEyMywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEyNShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMjQobSwgZCkgbSgyLCAxMjQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMjYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTI1KG0sIGQpIG0oMiwgMTI1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTI3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEyNihtLCBkKSBtKDIsIDEyNiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEyOChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMjcobSwgZCkgbSgyLCAxMjcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMjkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTI4KG0sIGQpIG0oMiwgMTI4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTMwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEyOShtLCBkKSBtKDIsIDEyOSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEzMShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMzAobSwgZCkgbSgyLCAxMzAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMzIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTMxKG0sIGQpIG0oMiwgMTMxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTMzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEzMihtLCBkKSBtKDIsIDEzMiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEzNChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMzMobSwgZCkgbSgyLCAxMzMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMzUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTM0KG0sIGQpIG0oMiwgMTM0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTM2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEzNShtLCBkKSBtKDIsIDEzNSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEzNyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMzYobSwgZCkgbSgyLCAxMzYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMzgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTM3KG0sIGQpIG0oMiwgMTM3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTM5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzEzOChtLCBkKSBtKDIsIDEzOCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE0MChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xMzkobSwgZCkgbSgyLCAxMzksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNDEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTQwKG0sIGQpIG0oMiwgMTQwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTQyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE0MShtLCBkKSBtKDIsIDE0MSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE0MyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNDIobSwgZCkgbSgyLCAxNDIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNDQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTQzKG0sIGQpIG0oMiwgMTQzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTQ1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE0NChtLCBkKSBtKDIsIDE0NCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE0NihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNDUobSwgZCkgbSgyLCAxNDUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNDcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTQ2KG0sIGQpIG0oMiwgMTQ2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTQ4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE0NyhtLCBkKSBtKDIsIDE0NywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE0OShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNDgobSwgZCkgbSgyLCAxNDgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNTAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTQ5KG0sIGQpIG0oMiwgMTQ5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTUxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE1MChtLCBkKSBtKDIsIDE1MCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE1MihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNTEobSwgZCkgbSgyLCAxNTEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNTMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTUyKG0sIGQpIG0oMiwgMTUyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTU0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE1MyhtLCBkKSBtKDIsIDE1MywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE1NShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNTQobSwgZCkgbSgyLCAxNTQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNTYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTU1KG0sIGQpIG0oMiwgMTU1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTU3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE1NihtLCBkKSBtKDIsIDE1NiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE1OChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNTcobSwgZCkgbSgyLCAxNTcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNTkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTU4KG0sIGQpIG0oMiwgMTU4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTYwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE1OShtLCBkKSBtKDIsIDE1OSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE2MShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNjAobSwgZCkgbSgyLCAxNjAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNjIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTYxKG0sIGQpIG0oMiwgMTYxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTYzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE2MihtLCBkKSBtKDIsIDE2MiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE2NChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNjMobSwgZCkgbSgyLCAxNjMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNjUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTY0KG0sIGQpIG0oMiwgMTY0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTY2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE2NShtLCBkKSBtKDIsIDE2NSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE2NyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNjYobSwgZCkgbSgyLCAxNjYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNjgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTY3KG0sIGQpIG0oMiwgMTY3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTY5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE2OChtLCBkKSBtKDIsIDE2OCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE3MChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNjkobSwgZCkgbSgyLCAxNjksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNzEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTcwKG0sIGQpIG0oMiwgMTcwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTcyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE3MShtLCBkKSBtKDIsIDE3MSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE3MyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNzIobSwgZCkgbSgyLCAxNzIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNzQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTczKG0sIGQpIG0oMiwgMTczLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTc1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE3NChtLCBkKSBtKDIsIDE3NCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE3NihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNzUobSwgZCkgbSgyLCAxNzUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNzcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTc2KG0sIGQpIG0oMiwgMTc2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTc4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE3NyhtLCBkKSBtKDIsIDE3NywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE3OShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xNzgobSwgZCkgbSgyLCAxNzgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xODAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTc5KG0sIGQpIG0oMiwgMTc5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTgxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE4MChtLCBkKSBtKDIsIDE4MCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE4MihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xODEobSwgZCkgbSgyLCAxODEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xODMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTgyKG0sIGQpIG0oMiwgMTgyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTg0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE4MyhtLCBkKSBtKDIsIDE4MywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE4NShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xODQobSwgZCkgbSgyLCAxODQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xODYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTg1KG0sIGQpIG0oMiwgMTg1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTg3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE4NihtLCBkKSBtKDIsIDE4NiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE4OChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xODcobSwgZCkgbSgyLCAxODcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xODkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTg4KG0sIGQpIG0oMiwgMTg4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTkwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE4OShtLCBkKSBtKDIsIDE4OSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE5MShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xOTAobSwgZCkgbSgyLCAxOTAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xOTIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTkxKG0sIGQpIG0oMiwgMTkxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTkzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE5MihtLCBkKSBtKDIsIDE5MiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE5NChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xOTMobSwgZCkgbSgyLCAxOTMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xOTUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTk0KG0sIGQpIG0oMiwgMTk0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTk2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE5NShtLCBkKSBtKDIsIDE5NSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE5NyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xOTYobSwgZCkgbSgyLCAxOTYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8xOTgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTk3KG0sIGQpIG0oMiwgMTk3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMTk5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzE5OChtLCBkKSBtKDIsIDE5OCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIwMChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8xOTkobSwgZCkgbSgyLCAxOTksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMDEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjAwKG0sIGQpIG0oMiwgMjAwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjAyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIwMShtLCBkKSBtKDIsIDIwMSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIwMyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMDIobSwgZCkgbSgyLCAyMDIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMDQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjAzKG0sIGQpIG0oMiwgMjAzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjA1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIwNChtLCBkKSBtKDIsIDIwNCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIwNihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMDUobSwgZCkgbSgyLCAyMDUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMDcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjA2KG0sIGQpIG0oMiwgMjA2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjA4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIwNyhtLCBkKSBtKDIsIDIwNywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIwOShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMDgobSwgZCkgbSgyLCAyMDgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMTAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjA5KG0sIGQpIG0oMiwgMjA5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjExKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIxMChtLCBkKSBtKDIsIDIxMCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIxMihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMTEobSwgZCkgbSgyLCAyMTEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMTMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjEyKG0sIGQpIG0oMiwgMjEyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjE0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIxMyhtLCBkKSBtKDIsIDIxMywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIxNShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMTQobSwgZCkgbSgyLCAyMTQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMTYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjE1KG0sIGQpIG0oMiwgMjE1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjE3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIxNihtLCBkKSBtKDIsIDIxNiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIxOChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMTcobSwgZCkgbSgyLCAyMTcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMTkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjE4KG0sIGQpIG0oMiwgMjE4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjIwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIxOShtLCBkKSBtKDIsIDIxOSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIyMShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMjAobSwgZCkgbSgyLCAyMjAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMjIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjIxKG0sIGQpIG0oMiwgMjIxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjIzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIyMihtLCBkKSBtKDIsIDIyMiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIyNChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMjMobSwgZCkgbSgyLCAyMjMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMjUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjI0KG0sIGQpIG0oMiwgMjI0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjI2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIyNShtLCBkKSBtKDIsIDIyNSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIyNyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMjYobSwgZCkgbSgyLCAyMjYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMjgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjI3KG0sIGQpIG0oMiwgMjI3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjI5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIyOChtLCBkKSBtKDIsIDIyOCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIzMChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMjkobSwgZCkgbSgyLCAyMjksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMzEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjMwKG0sIGQpIG0oMiwgMjMwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjMyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIzMShtLCBkKSBtKDIsIDIzMSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIzMyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMzIobSwgZCkgbSgyLCAyMzIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMzQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjMzKG0sIGQpIG0oMiwgMjMzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjM1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIzNChtLCBkKSBtKDIsIDIzNCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIzNihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMzUobSwgZCkgbSgyLCAyMzUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMzcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjM2KG0sIGQpIG0oMiwgMjM2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjM4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIzNyhtLCBkKSBtKDIsIDIzNywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzIzOShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yMzgobSwgZCkgbSgyLCAyMzgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yNDAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjM5KG0sIGQpIG0oMiwgMjM5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjQxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzI0MChtLCBkKSBtKDIsIDI0MCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzI0MihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yNDEobSwgZCkgbSgyLCAyNDEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yNDMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjQyKG0sIGQpIG0oMiwgMjQyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjQ0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzI0MyhtLCBkKSBtKDIsIDI0MywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzI0NShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yNDQobSwgZCkgbSgyLCAyNDQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yNDYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjQ1KG0sIGQpIG0oMiwgMjQ1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjQ3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzI0NihtLCBkKSBtKDIsIDI0NiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzI0OChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yNDcobSwgZCkgbSgyLCAyNDcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yNDkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjQ4KG0sIGQpIG0oMiwgMjQ4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjUwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzI0OShtLCBkKSBtKDIsIDI0OSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzI1MShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yNTAobSwgZCkgbSgyLCAyNTAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yNTIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjUxKG0sIGQpIG0oMiwgMjUxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjUzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzI1MihtLCBkKSBtKDIsIDI1MiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzI1NChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMV8yNTMobSwgZCkgbSgyLCAyNTMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMV8yNTUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjU0KG0sIGQpIG0oMiwgMjU0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzFfMjU2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xXzI1NShtLCBkKSBtKDIsIDI1NSwgZCkKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzAobSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEobSwgZCkgbSgzLCAwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xKG0sIGQpIG0oMywgMSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMihtLCBkKSBtKDMsIDIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl80KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzMobSwgZCkgbSgzLCAzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfNShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl80KG0sIGQpIG0oMywgNCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfNShtLCBkKSBtKDMsIDUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl83KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzYobSwgZCkgbSgzLCA2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfOChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl83KG0sIGQpIG0oMywgNywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfOChtLCBkKSBtKDMsIDgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl85KG0sIGQpIG0oMywgOSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzExKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEwKG0sIGQpIG0oMywgMTAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMShtLCBkKSBtKDMsIDExLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTIobSwgZCkgbSgzLCAxMiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEzKG0sIGQpIG0oMywgMTMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNChtLCBkKSBtKDMsIDE0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTUobSwgZCkgbSgzLCAxNSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE2KG0sIGQpIG0oMywgMTYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xOChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNyhtLCBkKSBtKDMsIDE3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTgobSwgZCkgbSgzLCAxOCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE5KG0sIGQpIG0oMywgMTksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMChtLCBkKSBtKDMsIDIwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjEobSwgZCkgbSgzLCAyMSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIyKG0sIGQpIG0oMywgMjIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yNChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMyhtLCBkKSBtKDMsIDIzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjQobSwgZCkgbSgzLCAyNCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzI2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzI1KG0sIGQpIG0oMywgMjUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yNyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yNihtLCBkKSBtKDMsIDI2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjcobSwgZCkgbSgzLCAyNywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzI5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzI4KG0sIGQpIG0oMywgMjgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8zMChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yOShtLCBkKSBtKDMsIDI5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMzEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMzAobSwgZCkgbSgzLCAzMCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzMyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzMxKG0sIGQpIG0oMywgMzEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8zMyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8zMihtLCBkKSBtKDMsIDMyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMzQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMzMobSwgZCkgbSgzLCAzMywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzM1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzM0KG0sIGQpIG0oMywgMzQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8zNihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8zNShtLCBkKSBtKDMsIDM1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMzcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMzYobSwgZCkgbSgzLCAzNiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzM4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzM3KG0sIGQpIG0oMywgMzcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8zOShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8zOChtLCBkKSBtKDMsIDM4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfNDAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMzkobSwgZCkgbSgzLCAzOSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzQxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzQwKG0sIGQpIG0oMywgNDAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl80MihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl80MShtLCBkKSBtKDMsIDQxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfNDMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfNDIobSwgZCkgbSgzLCA0MiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzQ0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzQzKG0sIGQpIG0oMywgNDMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl80NShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl80NChtLCBkKSBtKDMsIDQ0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfNDYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfNDUobSwgZCkgbSgzLCA0NSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzQ3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzQ2KG0sIGQpIG0oMywgNDYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl80OChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl80NyhtLCBkKSBtKDMsIDQ3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfNDkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfNDgobSwgZCkgbSgzLCA0OCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzUwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzQ5KG0sIGQpIG0oMywgNDksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl81MShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl81MChtLCBkKSBtKDMsIDUwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfNTIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfNTEobSwgZCkgbSgzLCA1MSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzUzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzUyKG0sIGQpIG0oMywgNTIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl81NChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl81MyhtLCBkKSBtKDMsIDUzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfNTUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfNTQobSwgZCkgbSgzLCA1NCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzU2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzU1KG0sIGQpIG0oMywgNTUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl81NyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl81NihtLCBkKSBtKDMsIDU2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfNTgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfNTcobSwgZCkgbSgzLCA1NywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzU5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzU4KG0sIGQpIG0oMywgNTgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl82MChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl81OShtLCBkKSBtKDMsIDU5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfNjEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfNjAobSwgZCkgbSgzLCA2MCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzYyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzYxKG0sIGQpIG0oMywgNjEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl82MyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl82MihtLCBkKSBtKDMsIDYyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfNjQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfNjMobSwgZCkgbSgzLCA2MywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzY1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzY0KG0sIGQpIG0oMywgNjQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl82NihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl82NShtLCBkKSBtKDMsIDY1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfNjcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfNjYobSwgZCkgbSgzLCA2NiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzY4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzY3KG0sIGQpIG0oMywgNjcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl82OShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl82OChtLCBkKSBtKDMsIDY4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfNzAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfNjkobSwgZCkgbSgzLCA2OSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzcxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzcwKG0sIGQpIG0oMywgNzAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl83MihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl83MShtLCBkKSBtKDMsIDcxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfNzMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfNzIobSwgZCkgbSgzLCA3MiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzc0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzczKG0sIGQpIG0oMywgNzMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl83NShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl83NChtLCBkKSBtKDMsIDc0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfNzYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfNzUobSwgZCkgbSgzLCA3NSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzc3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzc2KG0sIGQpIG0oMywgNzYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl83OChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl83NyhtLCBkKSBtKDMsIDc3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfNzkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfNzgobSwgZCkgbSgzLCA3OCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzgwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzc5KG0sIGQpIG0oMywgNzksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl84MShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl84MChtLCBkKSBtKDMsIDgwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfODIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfODEobSwgZCkgbSgzLCA4MSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzgzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzgyKG0sIGQpIG0oMywgODIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl84NChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl84MyhtLCBkKSBtKDMsIDgzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfODUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfODQobSwgZCkgbSgzLCA4NCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzg2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzg1KG0sIGQpIG0oMywgODUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl84NyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl84NihtLCBkKSBtKDMsIDg2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfODgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfODcobSwgZCkgbSgzLCA4NywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzg5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzg4KG0sIGQpIG0oMywgODgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl85MChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl84OShtLCBkKSBtKDMsIDg5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfOTEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfOTAobSwgZCkgbSgzLCA5MCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzkyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzkxKG0sIGQpIG0oMywgOTEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl85MyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl85MihtLCBkKSBtKDMsIDkyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfOTQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfOTMobSwgZCkgbSgzLCA5MywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzk1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzk0KG0sIGQpIG0oMywgOTQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl85NihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl85NShtLCBkKSBtKDMsIDk1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfOTcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfOTYobSwgZCkgbSgzLCA5NiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzk4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzk3KG0sIGQpIG0oMywgOTcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl85OShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl85OChtLCBkKSBtKDMsIDk4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTAwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzk5KG0sIGQpIG0oMywgOTksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMDEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTAwKG0sIGQpIG0oMywgMTAwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTAyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEwMShtLCBkKSBtKDMsIDEwMSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEwMyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMDIobSwgZCkgbSgzLCAxMDIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMDQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTAzKG0sIGQpIG0oMywgMTAzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTA1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEwNChtLCBkKSBtKDMsIDEwNCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEwNihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMDUobSwgZCkgbSgzLCAxMDUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMDcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTA2KG0sIGQpIG0oMywgMTA2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTA4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEwNyhtLCBkKSBtKDMsIDEwNywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEwOShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMDgobSwgZCkgbSgzLCAxMDgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMTAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTA5KG0sIGQpIG0oMywgMTA5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTExKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzExMChtLCBkKSBtKDMsIDExMCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzExMihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMTEobSwgZCkgbSgzLCAxMTEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMTMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTEyKG0sIGQpIG0oMywgMTEyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTE0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzExMyhtLCBkKSBtKDMsIDExMywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzExNShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMTQobSwgZCkgbSgzLCAxMTQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMTYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTE1KG0sIGQpIG0oMywgMTE1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTE3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzExNihtLCBkKSBtKDMsIDExNiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzExOChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMTcobSwgZCkgbSgzLCAxMTcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMTkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTE4KG0sIGQpIG0oMywgMTE4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTIwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzExOShtLCBkKSBtKDMsIDExOSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEyMShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMjAobSwgZCkgbSgzLCAxMjAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMjIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTIxKG0sIGQpIG0oMywgMTIxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTIzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEyMihtLCBkKSBtKDMsIDEyMiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEyNChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMjMobSwgZCkgbSgzLCAxMjMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMjUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTI0KG0sIGQpIG0oMywgMTI0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTI2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEyNShtLCBkKSBtKDMsIDEyNSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEyNyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMjYobSwgZCkgbSgzLCAxMjYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMjgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTI3KG0sIGQpIG0oMywgMTI3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTI5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEyOChtLCBkKSBtKDMsIDEyOCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEzMChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMjkobSwgZCkgbSgzLCAxMjksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMzEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTMwKG0sIGQpIG0oMywgMTMwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTMyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEzMShtLCBkKSBtKDMsIDEzMSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEzMyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMzIobSwgZCkgbSgzLCAxMzIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMzQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTMzKG0sIGQpIG0oMywgMTMzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTM1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEzNChtLCBkKSBtKDMsIDEzNCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEzNihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMzUobSwgZCkgbSgzLCAxMzUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMzcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTM2KG0sIGQpIG0oMywgMTM2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTM4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEzNyhtLCBkKSBtKDMsIDEzNywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzEzOShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xMzgobSwgZCkgbSgzLCAxMzgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNDAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTM5KG0sIGQpIG0oMywgMTM5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTQxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE0MChtLCBkKSBtKDMsIDE0MCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE0MihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNDEobSwgZCkgbSgzLCAxNDEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNDMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTQyKG0sIGQpIG0oMywgMTQyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTQ0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE0MyhtLCBkKSBtKDMsIDE0MywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE0NShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNDQobSwgZCkgbSgzLCAxNDQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNDYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTQ1KG0sIGQpIG0oMywgMTQ1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTQ3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE0NihtLCBkKSBtKDMsIDE0NiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE0OChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNDcobSwgZCkgbSgzLCAxNDcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNDkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTQ4KG0sIGQpIG0oMywgMTQ4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTUwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE0OShtLCBkKSBtKDMsIDE0OSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE1MShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNTAobSwgZCkgbSgzLCAxNTAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNTIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTUxKG0sIGQpIG0oMywgMTUxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTUzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE1MihtLCBkKSBtKDMsIDE1MiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE1NChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNTMobSwgZCkgbSgzLCAxNTMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNTUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTU0KG0sIGQpIG0oMywgMTU0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTU2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE1NShtLCBkKSBtKDMsIDE1NSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE1NyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNTYobSwgZCkgbSgzLCAxNTYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNTgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTU3KG0sIGQpIG0oMywgMTU3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTU5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE1OChtLCBkKSBtKDMsIDE1OCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE2MChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNTkobSwgZCkgbSgzLCAxNTksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNjEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTYwKG0sIGQpIG0oMywgMTYwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTYyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE2MShtLCBkKSBtKDMsIDE2MSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE2MyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNjIobSwgZCkgbSgzLCAxNjIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNjQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTYzKG0sIGQpIG0oMywgMTYzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTY1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE2NChtLCBkKSBtKDMsIDE2NCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE2NihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNjUobSwgZCkgbSgzLCAxNjUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNjcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTY2KG0sIGQpIG0oMywgMTY2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTY4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE2NyhtLCBkKSBtKDMsIDE2NywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE2OShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNjgobSwgZCkgbSgzLCAxNjgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNzAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTY5KG0sIGQpIG0oMywgMTY5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTcxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE3MChtLCBkKSBtKDMsIDE3MCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE3MihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNzEobSwgZCkgbSgzLCAxNzEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNzMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTcyKG0sIGQpIG0oMywgMTcyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTc0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE3MyhtLCBkKSBtKDMsIDE3MywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE3NShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNzQobSwgZCkgbSgzLCAxNzQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNzYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTc1KG0sIGQpIG0oMywgMTc1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTc3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE3NihtLCBkKSBtKDMsIDE3NiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE3OChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNzcobSwgZCkgbSgzLCAxNzcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xNzkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTc4KG0sIGQpIG0oMywgMTc4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTgwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE3OShtLCBkKSBtKDMsIDE3OSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE4MShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xODAobSwgZCkgbSgzLCAxODAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xODIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTgxKG0sIGQpIG0oMywgMTgxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTgzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE4MihtLCBkKSBtKDMsIDE4MiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE4NChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xODMobSwgZCkgbSgzLCAxODMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xODUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTg0KG0sIGQpIG0oMywgMTg0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTg2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE4NShtLCBkKSBtKDMsIDE4NSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE4NyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xODYobSwgZCkgbSgzLCAxODYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xODgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTg3KG0sIGQpIG0oMywgMTg3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTg5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE4OChtLCBkKSBtKDMsIDE4OCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE5MChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xODkobSwgZCkgbSgzLCAxODksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xOTEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTkwKG0sIGQpIG0oMywgMTkwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTkyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE5MShtLCBkKSBtKDMsIDE5MSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE5MyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xOTIobSwgZCkgbSgzLCAxOTIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xOTQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTkzKG0sIGQpIG0oMywgMTkzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTk1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE5NChtLCBkKSBtKDMsIDE5NCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE5NihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xOTUobSwgZCkgbSgzLCAxOTUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8xOTcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTk2KG0sIGQpIG0oMywgMTk2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTk4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE5NyhtLCBkKSBtKDMsIDE5NywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzE5OShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8xOTgobSwgZCkgbSgzLCAxOTgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMDAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMTk5KG0sIGQpIG0oMywgMTk5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjAxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIwMChtLCBkKSBtKDMsIDIwMCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIwMihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMDEobSwgZCkgbSgzLCAyMDEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMDMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjAyKG0sIGQpIG0oMywgMjAyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjA0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIwMyhtLCBkKSBtKDMsIDIwMywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIwNShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMDQobSwgZCkgbSgzLCAyMDQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMDYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjA1KG0sIGQpIG0oMywgMjA1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjA3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIwNihtLCBkKSBtKDMsIDIwNiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIwOChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMDcobSwgZCkgbSgzLCAyMDcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMDkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjA4KG0sIGQpIG0oMywgMjA4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjEwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIwOShtLCBkKSBtKDMsIDIwOSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIxMShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMTAobSwgZCkgbSgzLCAyMTAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMTIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjExKG0sIGQpIG0oMywgMjExLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjEzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIxMihtLCBkKSBtKDMsIDIxMiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIxNChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMTMobSwgZCkgbSgzLCAyMTMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMTUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjE0KG0sIGQpIG0oMywgMjE0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjE2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIxNShtLCBkKSBtKDMsIDIxNSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIxNyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMTYobSwgZCkgbSgzLCAyMTYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMTgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjE3KG0sIGQpIG0oMywgMjE3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjE5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIxOChtLCBkKSBtKDMsIDIxOCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIyMChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMTkobSwgZCkgbSgzLCAyMTksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMjEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjIwKG0sIGQpIG0oMywgMjIwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjIyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIyMShtLCBkKSBtKDMsIDIyMSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIyMyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMjIobSwgZCkgbSgzLCAyMjIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMjQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjIzKG0sIGQpIG0oMywgMjIzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjI1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIyNChtLCBkKSBtKDMsIDIyNCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIyNihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMjUobSwgZCkgbSgzLCAyMjUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMjcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjI2KG0sIGQpIG0oMywgMjI2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjI4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIyNyhtLCBkKSBtKDMsIDIyNywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIyOShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMjgobSwgZCkgbSgzLCAyMjgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMzAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjI5KG0sIGQpIG0oMywgMjI5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjMxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIzMChtLCBkKSBtKDMsIDIzMCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIzMihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMzEobSwgZCkgbSgzLCAyMzEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMzMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjMyKG0sIGQpIG0oMywgMjMyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjM0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIzMyhtLCBkKSBtKDMsIDIzMywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIzNShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMzQobSwgZCkgbSgzLCAyMzQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMzYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjM1KG0sIGQpIG0oMywgMjM1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjM3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIzNihtLCBkKSBtKDMsIDIzNiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIzOChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMzcobSwgZCkgbSgzLCAyMzcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yMzkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjM4KG0sIGQpIG0oMywgMjM4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjQwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzIzOShtLCBkKSBtKDMsIDIzOSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzI0MShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yNDAobSwgZCkgbSgzLCAyNDAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yNDIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjQxKG0sIGQpIG0oMywgMjQxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjQzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzI0MihtLCBkKSBtKDMsIDI0MiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzI0NChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yNDMobSwgZCkgbSgzLCAyNDMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yNDUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjQ0KG0sIGQpIG0oMywgMjQ0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjQ2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzI0NShtLCBkKSBtKDMsIDI0NSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzI0NyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yNDYobSwgZCkgbSgzLCAyNDYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yNDgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjQ3KG0sIGQpIG0oMywgMjQ3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjQ5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzI0OChtLCBkKSBtKDMsIDI0OCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzI1MChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yNDkobSwgZCkgbSgzLCAyNDksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yNTEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjUwKG0sIGQpIG0oMywgMjUwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjUyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzI1MShtLCBkKSBtKDMsIDI1MSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzI1MyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yNTIobSwgZCkgbSgzLCAyNTIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfMl8yNTQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjUzKG0sIGQpIG0oMywgMjUzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzJfMjU1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzI1NChtLCBkKSBtKDMsIDI1NCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8yXzI1NihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfMl8yNTUobSwgZCkgbSgzLCAyNTUsIGQpCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18wKG0sIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xKG0sIGQpIG0oNCwgMCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMShtLCBkKSBtKDQsIDEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18zKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIobSwgZCkgbSg0LCAyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfNChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18zKG0sIGQpIG0oNCwgMywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfNChtLCBkKSBtKDQsIDQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM182KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzUobSwgZCkgbSg0LCA1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfNyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM182KG0sIGQpIG0oNCwgNiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfNyhtLCBkKSBtKDQsIDcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM185KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzgobSwgZCkgbSg0LCA4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfOShtLCBkKSBtKDQsIDksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xMShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xMChtLCBkKSBtKDQsIDEwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTEobSwgZCkgbSg0LCAxMSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEyKG0sIGQpIG0oNCwgMTIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xNChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xMyhtLCBkKSBtKDQsIDEzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTQobSwgZCkgbSg0LCAxNCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE1KG0sIGQpIG0oNCwgMTUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xNyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xNihtLCBkKSBtKDQsIDE2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTcobSwgZCkgbSg0LCAxNywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE4KG0sIGQpIG0oNCwgMTgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yMChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xOShtLCBkKSBtKDQsIDE5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjAobSwgZCkgbSg0LCAyMCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIxKG0sIGQpIG0oNCwgMjEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yMyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yMihtLCBkKSBtKDQsIDIyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjMobSwgZCkgbSg0LCAyMywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzI1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzI0KG0sIGQpIG0oNCwgMjQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yNihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yNShtLCBkKSBtKDQsIDI1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjYobSwgZCkgbSg0LCAyNiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzI4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzI3KG0sIGQpIG0oNCwgMjcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yOShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yOChtLCBkKSBtKDQsIDI4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMzAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjkobSwgZCkgbSg0LCAyOSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzMxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzMwKG0sIGQpIG0oNCwgMzAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18zMihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18zMShtLCBkKSBtKDQsIDMxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMzMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMzIobSwgZCkgbSg0LCAzMiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzM0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzMzKG0sIGQpIG0oNCwgMzMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18zNShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18zNChtLCBkKSBtKDQsIDM0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMzYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMzUobSwgZCkgbSg0LCAzNSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzM3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzM2KG0sIGQpIG0oNCwgMzYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18zOChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18zNyhtLCBkKSBtKDQsIDM3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMzkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMzgobSwgZCkgbSg0LCAzOCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzQwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzM5KG0sIGQpIG0oNCwgMzksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM180MShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM180MChtLCBkKSBtKDQsIDQwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfNDIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfNDEobSwgZCkgbSg0LCA0MSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzQzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzQyKG0sIGQpIG0oNCwgNDIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM180NChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM180MyhtLCBkKSBtKDQsIDQzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfNDUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfNDQobSwgZCkgbSg0LCA0NCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzQ2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzQ1KG0sIGQpIG0oNCwgNDUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM180NyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM180NihtLCBkKSBtKDQsIDQ2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfNDgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfNDcobSwgZCkgbSg0LCA0NywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzQ5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzQ4KG0sIGQpIG0oNCwgNDgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM181MChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM180OShtLCBkKSBtKDQsIDQ5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfNTEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfNTAobSwgZCkgbSg0LCA1MCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzUyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzUxKG0sIGQpIG0oNCwgNTEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM181MyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM181MihtLCBkKSBtKDQsIDUyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfNTQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfNTMobSwgZCkgbSg0LCA1MywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzU1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzU0KG0sIGQpIG0oNCwgNTQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM181NihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM181NShtLCBkKSBtKDQsIDU1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfNTcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfNTYobSwgZCkgbSg0LCA1NiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzU4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzU3KG0sIGQpIG0oNCwgNTcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM181OShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM181OChtLCBkKSBtKDQsIDU4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfNjAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfNTkobSwgZCkgbSg0LCA1OSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzYxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzYwKG0sIGQpIG0oNCwgNjAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM182MihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM182MShtLCBkKSBtKDQsIDYxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfNjMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfNjIobSwgZCkgbSg0LCA2MiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzY0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzYzKG0sIGQpIG0oNCwgNjMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM182NShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM182NChtLCBkKSBtKDQsIDY0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfNjYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfNjUobSwgZCkgbSg0LCA2NSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzY3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzY2KG0sIGQpIG0oNCwgNjYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM182OChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM182NyhtLCBkKSBtKDQsIDY3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfNjkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfNjgobSwgZCkgbSg0LCA2OCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzcwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzY5KG0sIGQpIG0oNCwgNjksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM183MShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM183MChtLCBkKSBtKDQsIDcwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfNzIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfNzEobSwgZCkgbSg0LCA3MSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzczKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzcyKG0sIGQpIG0oNCwgNzIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM183NChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM183MyhtLCBkKSBtKDQsIDczLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfNzUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfNzQobSwgZCkgbSg0LCA3NCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzc2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzc1KG0sIGQpIG0oNCwgNzUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM183NyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM183NihtLCBkKSBtKDQsIDc2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfNzgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfNzcobSwgZCkgbSg0LCA3NywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzc5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzc4KG0sIGQpIG0oNCwgNzgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM184MChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM183OShtLCBkKSBtKDQsIDc5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfODEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfODAobSwgZCkgbSg0LCA4MCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzgyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzgxKG0sIGQpIG0oNCwgODEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM184MyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM184MihtLCBkKSBtKDQsIDgyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfODQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfODMobSwgZCkgbSg0LCA4MywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzg1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzg0KG0sIGQpIG0oNCwgODQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM184NihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM184NShtLCBkKSBtKDQsIDg1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfODcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfODYobSwgZCkgbSg0LCA4NiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzg4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzg3KG0sIGQpIG0oNCwgODcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM184OShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM184OChtLCBkKSBtKDQsIDg4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfOTAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfODkobSwgZCkgbSg0LCA4OSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzkxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzkwKG0sIGQpIG0oNCwgOTAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM185MihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM185MShtLCBkKSBtKDQsIDkxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfOTMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfOTIobSwgZCkgbSg0LCA5MiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzk0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzkzKG0sIGQpIG0oNCwgOTMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM185NShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM185NChtLCBkKSBtKDQsIDk0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfOTYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfOTUobSwgZCkgbSg0LCA5NSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzk3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzk2KG0sIGQpIG0oNCwgOTYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM185OChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM185NyhtLCBkKSBtKDQsIDk3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfOTkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfOTgobSwgZCkgbSg0LCA5OCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEwMChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM185OShtLCBkKSBtKDQsIDk5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTAxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEwMChtLCBkKSBtKDQsIDEwMCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEwMihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xMDEobSwgZCkgbSg0LCAxMDEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xMDMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTAyKG0sIGQpIG0oNCwgMTAyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTA0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEwMyhtLCBkKSBtKDQsIDEwMywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEwNShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xMDQobSwgZCkgbSg0LCAxMDQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xMDYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTA1KG0sIGQpIG0oNCwgMTA1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTA3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEwNihtLCBkKSBtKDQsIDEwNiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEwOChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xMDcobSwgZCkgbSg0LCAxMDcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xMDkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTA4KG0sIGQpIG0oNCwgMTA4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTEwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEwOShtLCBkKSBtKDQsIDEwOSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzExMShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xMTAobSwgZCkgbSg0LCAxMTAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xMTIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTExKG0sIGQpIG0oNCwgMTExLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTEzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzExMihtLCBkKSBtKDQsIDExMiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzExNChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xMTMobSwgZCkgbSg0LCAxMTMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xMTUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTE0KG0sIGQpIG0oNCwgMTE0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTE2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzExNShtLCBkKSBtKDQsIDExNSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzExNyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xMTYobSwgZCkgbSg0LCAxMTYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xMTgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTE3KG0sIGQpIG0oNCwgMTE3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTE5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzExOChtLCBkKSBtKDQsIDExOCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEyMChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xMTkobSwgZCkgbSg0LCAxMTksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xMjEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTIwKG0sIGQpIG0oNCwgMTIwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTIyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEyMShtLCBkKSBtKDQsIDEyMSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEyMyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xMjIobSwgZCkgbSg0LCAxMjIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xMjQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTIzKG0sIGQpIG0oNCwgMTIzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTI1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEyNChtLCBkKSBtKDQsIDEyNCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEyNihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xMjUobSwgZCkgbSg0LCAxMjUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xMjcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTI2KG0sIGQpIG0oNCwgMTI2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTI4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEyNyhtLCBkKSBtKDQsIDEyNywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEyOShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xMjgobSwgZCkgbSg0LCAxMjgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xMzAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTI5KG0sIGQpIG0oNCwgMTI5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTMxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEzMChtLCBkKSBtKDQsIDEzMCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEzMihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xMzEobSwgZCkgbSg0LCAxMzEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xMzMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTMyKG0sIGQpIG0oNCwgMTMyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTM0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEzMyhtLCBkKSBtKDQsIDEzMywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEzNShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xMzQobSwgZCkgbSg0LCAxMzQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xMzYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTM1KG0sIGQpIG0oNCwgMTM1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTM3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEzNihtLCBkKSBtKDQsIDEzNiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEzOChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xMzcobSwgZCkgbSg0LCAxMzcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xMzkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTM4KG0sIGQpIG0oNCwgMTM4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTQwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzEzOShtLCBkKSBtKDQsIDEzOSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE0MShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xNDAobSwgZCkgbSg0LCAxNDAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xNDIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTQxKG0sIGQpIG0oNCwgMTQxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTQzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE0MihtLCBkKSBtKDQsIDE0MiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE0NChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xNDMobSwgZCkgbSg0LCAxNDMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xNDUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTQ0KG0sIGQpIG0oNCwgMTQ0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTQ2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE0NShtLCBkKSBtKDQsIDE0NSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE0NyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xNDYobSwgZCkgbSg0LCAxNDYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xNDgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTQ3KG0sIGQpIG0oNCwgMTQ3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTQ5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE0OChtLCBkKSBtKDQsIDE0OCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE1MChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xNDkobSwgZCkgbSg0LCAxNDksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xNTEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTUwKG0sIGQpIG0oNCwgMTUwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTUyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE1MShtLCBkKSBtKDQsIDE1MSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE1MyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xNTIobSwgZCkgbSg0LCAxNTIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xNTQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTUzKG0sIGQpIG0oNCwgMTUzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTU1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE1NChtLCBkKSBtKDQsIDE1NCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE1NihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xNTUobSwgZCkgbSg0LCAxNTUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xNTcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTU2KG0sIGQpIG0oNCwgMTU2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTU4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE1NyhtLCBkKSBtKDQsIDE1NywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE1OShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xNTgobSwgZCkgbSg0LCAxNTgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xNjAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTU5KG0sIGQpIG0oNCwgMTU5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTYxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE2MChtLCBkKSBtKDQsIDE2MCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE2MihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xNjEobSwgZCkgbSg0LCAxNjEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xNjMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTYyKG0sIGQpIG0oNCwgMTYyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTY0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE2MyhtLCBkKSBtKDQsIDE2MywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE2NShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xNjQobSwgZCkgbSg0LCAxNjQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xNjYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTY1KG0sIGQpIG0oNCwgMTY1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTY3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE2NihtLCBkKSBtKDQsIDE2NiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE2OChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xNjcobSwgZCkgbSg0LCAxNjcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xNjkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTY4KG0sIGQpIG0oNCwgMTY4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTcwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE2OShtLCBkKSBtKDQsIDE2OSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE3MShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xNzAobSwgZCkgbSg0LCAxNzAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xNzIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTcxKG0sIGQpIG0oNCwgMTcxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTczKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE3MihtLCBkKSBtKDQsIDE3MiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE3NChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xNzMobSwgZCkgbSg0LCAxNzMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xNzUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTc0KG0sIGQpIG0oNCwgMTc0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTc2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE3NShtLCBkKSBtKDQsIDE3NSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE3NyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xNzYobSwgZCkgbSg0LCAxNzYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xNzgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTc3KG0sIGQpIG0oNCwgMTc3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTc5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE3OChtLCBkKSBtKDQsIDE3OCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE4MChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xNzkobSwgZCkgbSg0LCAxNzksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xODEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTgwKG0sIGQpIG0oNCwgMTgwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTgyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE4MShtLCBkKSBtKDQsIDE4MSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE4MyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xODIobSwgZCkgbSg0LCAxODIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xODQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTgzKG0sIGQpIG0oNCwgMTgzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTg1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE4NChtLCBkKSBtKDQsIDE4NCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE4NihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xODUobSwgZCkgbSg0LCAxODUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xODcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTg2KG0sIGQpIG0oNCwgMTg2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTg4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE4NyhtLCBkKSBtKDQsIDE4NywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE4OShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xODgobSwgZCkgbSg0LCAxODgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xOTAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTg5KG0sIGQpIG0oNCwgMTg5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTkxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE5MChtLCBkKSBtKDQsIDE5MCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE5MihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xOTEobSwgZCkgbSg0LCAxOTEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xOTMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTkyKG0sIGQpIG0oNCwgMTkyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTk0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE5MyhtLCBkKSBtKDQsIDE5MywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE5NShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xOTQobSwgZCkgbSg0LCAxOTQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xOTYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTk1KG0sIGQpIG0oNCwgMTk1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTk3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE5NihtLCBkKSBtKDQsIDE5NiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE5OChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18xOTcobSwgZCkgbSg0LCAxOTcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18xOTkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMTk4KG0sIGQpIG0oNCwgMTk4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjAwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzE5OShtLCBkKSBtKDQsIDE5OSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIwMShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yMDAobSwgZCkgbSg0LCAyMDAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yMDIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjAxKG0sIGQpIG0oNCwgMjAxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjAzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIwMihtLCBkKSBtKDQsIDIwMiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIwNChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yMDMobSwgZCkgbSg0LCAyMDMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yMDUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjA0KG0sIGQpIG0oNCwgMjA0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjA2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIwNShtLCBkKSBtKDQsIDIwNSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIwNyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yMDYobSwgZCkgbSg0LCAyMDYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yMDgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjA3KG0sIGQpIG0oNCwgMjA3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjA5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIwOChtLCBkKSBtKDQsIDIwOCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIxMChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yMDkobSwgZCkgbSg0LCAyMDksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yMTEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjEwKG0sIGQpIG0oNCwgMjEwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjEyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIxMShtLCBkKSBtKDQsIDIxMSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIxMyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yMTIobSwgZCkgbSg0LCAyMTIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yMTQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjEzKG0sIGQpIG0oNCwgMjEzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjE1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIxNChtLCBkKSBtKDQsIDIxNCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIxNihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yMTUobSwgZCkgbSg0LCAyMTUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yMTcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjE2KG0sIGQpIG0oNCwgMjE2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjE4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIxNyhtLCBkKSBtKDQsIDIxNywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIxOShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yMTgobSwgZCkgbSg0LCAyMTgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yMjAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjE5KG0sIGQpIG0oNCwgMjE5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjIxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIyMChtLCBkKSBtKDQsIDIyMCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIyMihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yMjEobSwgZCkgbSg0LCAyMjEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yMjMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjIyKG0sIGQpIG0oNCwgMjIyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjI0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIyMyhtLCBkKSBtKDQsIDIyMywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIyNShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yMjQobSwgZCkgbSg0LCAyMjQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yMjYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjI1KG0sIGQpIG0oNCwgMjI1LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjI3KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIyNihtLCBkKSBtKDQsIDIyNiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIyOChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yMjcobSwgZCkgbSg0LCAyMjcsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yMjkobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjI4KG0sIGQpIG0oNCwgMjI4LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjMwKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIyOShtLCBkKSBtKDQsIDIyOSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIzMShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yMzAobSwgZCkgbSg0LCAyMzAsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yMzIobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjMxKG0sIGQpIG0oNCwgMjMxLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjMzKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIzMihtLCBkKSBtKDQsIDIzMiwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIzNChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yMzMobSwgZCkgbSg0LCAyMzMsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yMzUobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjM0KG0sIGQpIG0oNCwgMjM0LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjM2KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIzNShtLCBkKSBtKDQsIDIzNSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIzNyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yMzYobSwgZCkgbSg0LCAyMzYsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yMzgobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjM3KG0sIGQpIG0oNCwgMjM3LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjM5KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzIzOChtLCBkKSBtKDQsIDIzOCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzI0MChtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yMzkobSwgZCkgbSg0LCAyMzksIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yNDEobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjQwKG0sIGQpIG0oNCwgMjQwLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjQyKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzI0MShtLCBkKSBtKDQsIDI0MSwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzI0MyhtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yNDIobSwgZCkgbSg0LCAyNDIsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yNDQobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjQzKG0sIGQpIG0oNCwgMjQzLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjQ1KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzI0NChtLCBkKSBtKDQsIDI0NCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzI0NihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yNDUobSwgZCkgbSg0LCAyNDUsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yNDcobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjQ2KG0sIGQpIG0oNCwgMjQ2LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjQ4KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzI0NyhtLCBkKSBtKDQsIDI0NywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzI0OShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yNDgobSwgZCkgbSg0LCAyNDgsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yNTAobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjQ5KG0sIGQpIG0oNCwgMjQ5LCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjUxKG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzI1MChtLCBkKSBtKDQsIDI1MCwgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzI1MihtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yNTEobSwgZCkgbSg0LCAyNTEsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yNTMobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjUyKG0sIGQpIG0oNCwgMjUyLCBkKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjU0KG0sIGQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzI1MyhtLCBkKSBtKDQsIDI1MywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF8zXzI1NShtLCBkKSBORE5CT09TVF9QUF9SRVBFQVRfM18yNTQobSwgZCkgbSg0LCAyNTQsIGQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfM18yNTYobSwgZCkgTkROQk9PU1RfUFBfUkVQRUFUXzNfMjU1KG0sIGQpIG0oNCwgMjU1LCBkKQotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9yZXBlYXRfZnJvbV90by5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL3JlcGVhdF9mcm9tX3RvLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTk0YzViMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL3JlcGVhdF9mcm9tX3RvLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDg3ICswLDAgQEAKLSMgLyogQ29weXJpZ2h0IChDKSAyMDAxCi0jICAqIEhvdXNlbWFycXVlIE95Ci0jICAqIGh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tCi0jICAqCi0jICAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqLwotIwotIyAvKiBSZXZpc2VkIGJ5IFBhdWwgTWVuc29uaWRlcyAoMjAwMikgKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1JFUEVUSVRJT05fUkVQRUFUX0ZST01fVE9fSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfUkVQRVRJVElPTl9SRVBFQVRfRlJPTV9UT19IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvYWRkLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvc3ViLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvd2hpbGUuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZGVidWcvZXJyb3IuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZGV0YWlsL2F1dG9fcmVjLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vcmVwZWF0LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL2VsZW0uaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvcmVtLmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE8gKi8KLSMKLSMgaWYgMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE8oZmlyc3QsIGxhc3QsIG1hY3JvLCBkYXRhKQotIyBlbmRpZgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE8gTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPXywgTkROQk9PU1RfUFBfQVVUT19SRUMoTkROQk9PU1RfUFBfUkVQRUFUX1AsIDQpKQotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fMShmLCBsLCBtLCBkdCkgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fRF8xKE5ETkJPT1NUX1BQX0FVVE9fUkVDKE5ETkJPT1NUX1BQX1dISUxFX1AsIDI1NiksIGYsIGwsIG0sIGR0KQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fMihmLCBsLCBtLCBkdCkgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fRF8yKE5ETkJPT1NUX1BQX0FVVE9fUkVDKE5ETkJPT1NUX1BQX1dISUxFX1AsIDI1NiksIGYsIGwsIG0sIGR0KQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fMyhmLCBsLCBtLCBkdCkgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fRF8zKE5ETkJPT1NUX1BQX0FVVE9fUkVDKE5ETkJPT1NUX1BQX1dISUxFX1AsIDI1NiksIGYsIGwsIG0sIGR0KQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fNChmLCBsLCBtLCBkdCkgTkROQk9PU1RfUFBfRVJST1IoMHgwMDAzKQotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fMVNUIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPXzEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPXzJORCBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT18yCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT18zUkQgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fMwotIwotIyAvKiBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT19EICovCi0jCi0jIGlmIDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPX0QoZCwgZmlyc3QsIGxhc3QsIG1hY3JvLCBkYXRhKQotIyBlbmRpZgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fRCBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fRF8sIE5ETkJPT1NUX1BQX0FVVE9fUkVDKE5ETkJPT1NUX1BQX1JFUEVBVF9QLCA0KSkKLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT19EXzEoZCwgZiwgbCwgbSwgZHQpIE5ETkJPT1NUX1BQX1JFUEVBVF8xKE5ETkJPT1NUX1BQX1NVQl9EKGQsIGwsIGYpLCBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT19NXzEsIChkLCBmLCBtLCBkdCkpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT19EXzIoZCwgZiwgbCwgbSwgZHQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yKE5ETkJPT1NUX1BQX1NVQl9EKGQsIGwsIGYpLCBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT19NXzIsIChkLCBmLCBtLCBkdCkpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT19EXzMoZCwgZiwgbCwgbSwgZHQpIE5ETkJPT1NUX1BQX1JFUEVBVF8zKE5ETkJPT1NUX1BQX1NVQl9EKGQsIGwsIGYpLCBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT19NXzMsIChkLCBmLCBtLCBkdCkpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPX0RfMShkLCBmLCBsLCBtLCBkdCkgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fRF8xX0koZCwgZiwgbCwgbSwgZHQpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT19EXzIoZCwgZiwgbCwgbSwgZHQpIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPX0RfMl9JKGQsIGYsIGwsIG0sIGR0KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fRF8zKGQsIGYsIGwsIG0sIGR0KSBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT19EXzNfSShkLCBmLCBsLCBtLCBkdCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPX0RfMV9JKGQsIGYsIGwsIG0sIGR0KSBORE5CT09TVF9QUF9SRVBFQVRfMShORE5CT09TVF9QUF9TVUJfRChkLCBsLCBmKSwgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fTV8xLCAoZCwgZiwgbSwgZHQpKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fRF8yX0koZCwgZiwgbCwgbSwgZHQpIE5ETkJPT1NUX1BQX1JFUEVBVF8yKE5ETkJPT1NUX1BQX1NVQl9EKGQsIGwsIGYpLCBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT19NXzIsIChkLCBmLCBtLCBkdCkpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT19EXzNfSShkLCBmLCBsLCBtLCBkdCkgTkROQk9PU1RfUFBfUkVQRUFUXzMoTkROQk9PU1RfUFBfU1VCX0QoZCwgbCwgZiksIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPX01fMywgKGQsIGYsIG0sIGR0KSkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfU1RSSUNUKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPX01fMSh6LCBuLCBkZm1kKSBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT19NXzFfSU0oeiwgbiwgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzQgZGZtZCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPX01fMih6LCBuLCBkZm1kKSBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT19NXzJfSU0oeiwgbiwgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzQgZGZtZCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPX01fMyh6LCBuLCBkZm1kKSBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT19NXzNfSU0oeiwgbiwgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzQgZGZtZCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPX01fMV9JTSh6LCBuLCBpbSkgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fTV8xX0koeiwgbiwgaW0pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT19NXzJfSU0oeiwgbiwgaW0pIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPX01fMl9JKHosIG4sIGltKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fTV8zX0lNKHosIG4sIGltKSBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT19NXzNfSSh6LCBuLCBpbSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fTV8xKHosIG4sIGRmbWQpIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPX01fMV9JKHosIG4sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oNCwgMCwgZGZtZCksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oNCwgMSwgZGZtZCksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oNCwgMiwgZGZtZCksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oNCwgMywgZGZtZCkpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT19NXzIoeiwgbiwgZGZtZCkgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fTV8yX0koeiwgbiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSg0LCAwLCBkZm1kKSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSg0LCAxLCBkZm1kKSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSg0LCAyLCBkZm1kKSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSg0LCAzLCBkZm1kKSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPX01fMyh6LCBuLCBkZm1kKSBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT19NXzNfSSh6LCBuLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDQsIDAsIGRmbWQpLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDQsIDEsIGRmbWQpLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDQsIDIsIGRmbWQpLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDQsIDMsIGRmbWQpKQotIyBlbmRpZgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fTV8xX0koeiwgbiwgZCwgZiwgbSwgZHQpIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPX01fMV9JSSh6LCBORE5CT09TVF9QUF9BRERfRChkLCBuLCBmKSwgbSwgZHQpCi0jIGRlZmluZSBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT19NXzJfSSh6LCBuLCBkLCBmLCBtLCBkdCkgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fTV8yX0lJKHosIE5ETkJPT1NUX1BQX0FERF9EKGQsIG4sIGYpLCBtLCBkdCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPX01fM19JKHosIG4sIGQsIGYsIG0sIGR0KSBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UT19NXzNfSUkoeiwgTkROQk9PU1RfUFBfQUREX0QoZCwgbiwgZiksIG0sIGR0KQotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fTV8xX0lJKHosIG4sIG0sIGR0KSBtKHosIG4sIGR0KQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fTV8yX0lJKHosIG4sIG0sIGR0KSBtKHosIG4sIGR0KQotIyBkZWZpbmUgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE9fTV8zX0lJKHosIG4sIG0sIGR0KSBtKHosIG4sIGR0KQotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL2NhdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvY2F0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWU2ODliMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvY2F0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfU0VRX0NBVF9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9TRVFfQ0FUX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9kZWMuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2lmLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9mb2xkX2xlZnQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL3NlcS5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvc2l6ZS5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9lYXQuaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9TRVFfQ0FUICovCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfQ0FUKHNlcSkgXAotICAgIE5ETkJPT1NUX1BQX0lGKCBcCi0gICAgICAgIE5ETkJPT1NUX1BQX0RFQyhORE5CT09TVF9QUF9TRVFfU0laRShzZXEpKSwgXAotICAgICAgICBORE5CT09TVF9QUF9TRVFfQ0FUX0ksIFwKLSAgICAgICAgTkROQk9PU1RfUFBfU0VRX0hFQUQgXAotICAgICkoc2VxKSBcCi0gICAgLyoqLwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0NBVF9JKHNlcSkgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVChORE5CT09TVF9QUF9TRVFfQ0FUX08sIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNlcSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNlcSkpCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfQ0FUX08ocywgc3QsIGVsZW0pIE5ETkJPT1NUX1BQX1NFUV9DQVRfT19JKHN0LCBlbGVtKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0NBVF9PX0koYSwgYikgYSAjIyBiCi0jCi0jIC8qIE5ETkJPT1NUX1BQX1NFUV9DQVRfUyAqLwotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0NBVF9TKHMsIHNlcSkgXAotICAgIE5ETkJPT1NUX1BQX0lGKCBcCi0gICAgICAgIE5ETkJPT1NUX1BQX0RFQyhORE5CT09TVF9QUF9TRVFfU0laRShzZXEpKSwgXAotICAgICAgICBORE5CT09TVF9QUF9TRVFfQ0FUX1NfSV9BLCBcCi0gICAgICAgIE5ETkJPT1NUX1BQX1NFUV9DQVRfU19JX0IgXAotICAgICkocywgc2VxKSBcCi0gICAgLyoqLwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0NBVF9TX0lfQShzLCBzZXEpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfICMjIHMoTkROQk9PU1RfUFBfU0VRX0NBVF9PLCBORE5CT09TVF9QUF9TRVFfSEVBRChzZXEpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzZXEpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0NBVF9TX0lfQihzLCBzZXEpIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNlcSkKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9kZXRhaWwvc3BsaXQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL2RldGFpbC9zcGxpdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhlODMzYWQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL2RldGFpbC9zcGxpdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyODQgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9TRVFfREVUQUlMX1NQTElUX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1NFUV9ERVRBSUxfU1BMSVRfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfU0VRX1NQTElUICovCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVQobiwgc2VxKSBORE5CT09TVF9QUF9TRVFfU1BMSVRfRChuLCBzZXEpCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19NV0NDKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF9EKG4sIHNlcSkgKE5ETkJPT1NUX1BQX1NFUV9TUExJVF8gIyMgbiBzZXEpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF9EKG4sIHNlcSkgKE5ETkJPT1NUX1BQX1NFUV9TUExJVF8gIyMgbiAjIyBzZXEpCi0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMSh4KSAoeCksCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMih4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8zKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzQoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8zCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF82KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzcoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF82Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfOCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF85KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzEwKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzExKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMih4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzExCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTMoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE0KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTYoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE3KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xOCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzE3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTkoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIwKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjIoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIzKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yNCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzIzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjUoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzI2KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yNyh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzI2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjgoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzI5KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMjgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8zMCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzI5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMzEoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8zMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzMyKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMzEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8zMyh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzMyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMzQoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8zMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzM1KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMzQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8zNih4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzM1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMzcoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8zNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzM4KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMzcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8zOSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzM4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNDAoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8zOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzQxKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF80Mih4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzQxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNDMoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF80MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzQ0KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNDMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF80NSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzQ0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNDYoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF80NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzQ3KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNDYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF80OCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzQ3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNDkoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF80OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzUwKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNDkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF81MSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzUwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNTIoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF81MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzUzKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF81NCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzUzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNTUoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF81NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzU2KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF81Nyh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzU2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNTgoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF81NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzU5KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNTgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF82MCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzU5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNjEoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF82MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzYyKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNjEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF82Myh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzYyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNjQoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF82MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzY1KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNjQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF82Nih4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzY1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNjcoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF82NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzY4KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNjcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF82OSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzY4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNzAoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF82OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzcxKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNzAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF83Mih4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzcxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNzMoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF83MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzc0KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNzMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF83NSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzc0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNzYoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF83NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzc3KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNzYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF83OCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzc3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNzkoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF83OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzgwKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfNzkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF84MSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzgwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfODIoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF84MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzgzKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfODIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF84NCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzgzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfODUoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF84NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzg2KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfODUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF84Nyh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzg2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfODgoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF84NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzg5KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfODgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF85MCh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzg5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfOTEoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF85MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzkyKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfOTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF85Myh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzkyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfOTQoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF85MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzk1KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfOTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF85Nih4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzk1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfOTcoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF85NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NQTElUXzk4KHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfOTcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF85OSh4KSAoeCkgTkROQk9PU1RfUFBfU0VRX1NQTElUXzk4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU1BMSVRfMTAwKHgpICh4KSBORE5CT09TVF9QUF9TRVFfU1BMSVRfOTkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMDEoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMDIoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMDMoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMDIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMDQoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMDMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMDUoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMDQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMDYoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMDUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMDcoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMDYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMDgoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMDcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMDkoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMDgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMTAoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMDkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMTEoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMTIoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMTMoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMTQoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMTUoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMTYoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMTcoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMTYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMTgoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMTcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMTkoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMTgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMjAoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMTkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMjEoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMjAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMjIoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMjEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMjMoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMjIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMjQoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMjMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMjUoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMjQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMjYoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMjUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMjcoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMjYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMjgoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMjcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMjkoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMjgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMzAoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMjkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMzEoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMzAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMzIoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMzEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMzMoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMzIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMzQoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMzMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMzUoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMzQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMzYoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMzUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMzcoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMzYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMzgoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMzcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMzkoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMzgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNDAoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xMzkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNDEoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNDIoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNDMoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNDIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNDQoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNDMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNDUoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNDQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNDYoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNDUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNDcoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNDYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNDgoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNDcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNDkoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNDgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNTAoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNDkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNTEoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNTIoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNTMoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNTQoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNTUoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNTYoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNTcoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNTYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNTgoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNTcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNTkoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNTgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNjAoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNTkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNjEoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNjAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNjIoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNjEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNjMoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNjIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNjQoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNjMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNjUoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNjQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNjYoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNjUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNjcoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNjYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNjgoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNjcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNjkoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNjgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNzAoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNjkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNzEoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNzAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNzIoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNzEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNzMoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNzIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNzQoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNzMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNzUoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNzQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNzYoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNzUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNzcoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNzYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNzgoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNzcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNzkoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNzgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xODAoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xNzkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xODEoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xODAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xODIoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xODEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xODMoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xODIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xODQoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xODMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xODUoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xODQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xODYoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xODUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xODcoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xODYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xODgoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xODcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xODkoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xODgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xOTAoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xODkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xOTEoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xOTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xOTIoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xOTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xOTMoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xOTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xOTQoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xOTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xOTUoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xOTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xOTYoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xOTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xOTcoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xOTYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xOTgoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xOTcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xOTkoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xOTgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMDAoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8xOTkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMDEoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMDIoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMDMoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMDIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMDQoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMDMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMDUoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMDQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMDYoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMDUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMDcoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMDYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMDgoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMDcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMDkoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMDgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMTAoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMDkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMTEoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMTIoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMTMoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMTQoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMTUoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMTYoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMTcoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMTYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMTgoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMTcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMTkoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMTgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMjAoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMTkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMjEoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMjAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMjIoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMjEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMjMoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMjIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMjQoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMjMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMjUoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMjQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMjYoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMjUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMjcoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMjYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMjgoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMjcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMjkoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMjgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMzAoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMjkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMzEoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMzAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMzIoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMzEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMzMoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMzIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMzQoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMzMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMzUoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMzQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMzYoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMzUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMzcoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMzYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMzgoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMzcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMzkoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMzgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yNDAoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yMzkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yNDEoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yNDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yNDIoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yNDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yNDMoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yNDIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yNDQoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yNDMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yNDUoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yNDQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yNDYoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yNDUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yNDcoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yNDYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yNDgoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yNDcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yNDkoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yNDgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yNTAoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yNDkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yNTEoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yNTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yNTIoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yNTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yNTMoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yNTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yNTQoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yNTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yNTUoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yNTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yNTYoeCkgKHgpIE5ETkJPT1NUX1BQX1NFUV9TUExJVF8yNTUKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9lbGVtLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9lbGVtLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGJlMTZjYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvZWxlbS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMDQgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9TRVFfRUxFTV9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9TRVFfRUxFTV9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2ZhY2lsaXRpZXMvZW1wdHkuaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9TRVFfRUxFTSAqLwotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfTVdDQygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTShpLCBzZXEpIE5ETkJPT1NUX1BQX1NFUV9FTEVNX0koaSwgc2VxKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTShpLCBzZXEpIE5ETkJPT1NUX1BQX1NFUV9FTEVNX0koKGksIHNlcSkpCi0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX01TVkMoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fSShpLCBzZXEpIE5ETkJPT1NUX1BQX1NFUV9FTEVNX0lJKChORE5CT09TVF9QUF9TRVFfRUxFTV8gIyMgaSBzZXEpKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fSUkocmVzKSBORE5CT09TVF9QUF9TRVFfRUxFTV9JVihORE5CT09TVF9QUF9TRVFfRUxFTV9JSUkgcmVzKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fSUlJKHgsIF8pIHggTkROQk9PU1RfUFBfRU1QVFkoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fSVYoeCkgeAotIyBlbGlmIE5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX01XQ0MoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fSShwYXIpIE5ETkJPT1NUX1BQX1NFUV9FTEVNX0lJICMjIHBhcgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fSUkoaSwgc2VxKSBORE5CT09TVF9QUF9TRVFfRUxFTV9JSUkoTkROQk9PU1RfUFBfU0VRX0VMRU1fICMjIGkgIyMgc2VxKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fSUlJKGltKSBORE5CT09TVF9QUF9TRVFfRUxFTV9JVihpbSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNX0lWKHgsIF8pIHgKLSMgZWxzZQotIyAgICBpZiBkZWZpbmVkKF9fSUJNQ19fKSB8fCBkZWZpbmVkKF9fSUJNQ1BQX18pCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fSShpLCBzZXEpIE5ETkJPT1NUX1BQX1NFUV9FTEVNX0lJKE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9TRVFfRUxFTV8gIyMgaSwgc2VxKSkKLSMgICAgZWxzZQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNX0koaSwgc2VxKSBORE5CT09TVF9QUF9TRVFfRUxFTV9JSShORE5CT09TVF9QUF9TRVFfRUxFTV8gIyMgaSBzZXEpCi0jICAgIGVuZGlmCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV9JSShpbSkgTkROQk9PU1RfUFBfU0VRX0VMRU1fSUlJKGltKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fSUlJKHgsIF8pIHgKLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzAoeCkgeCwgTkROQk9PU1RfUFBfTklMCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMyhfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8yCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV80KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzUoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fNihfKSBORE5CT09TVF9QUF9TRVFfRUxFTV81Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV83KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzgoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fOShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV84Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV85Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTIoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEzKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTUoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE2KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNyhfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTgoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE5KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8xOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjEoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIyKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMyhfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8yMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjQoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzI1KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzI0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8yNihfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8yNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjcoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzI4KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzI3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8yOShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8yOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMzAoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzMxKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzMwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8zMihfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8zMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMzMoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMzIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzM0KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzMzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8zNShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8zNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMzYoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMzUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzM3KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzM2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV8zOChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV8zNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMzkoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fMzgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzQwKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzM5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV80MShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV80MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fNDIoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fNDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzQzKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzQyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV80NChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV80MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fNDUoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fNDQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzQ2KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzQ1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV80NyhfKSBORE5CT09TVF9QUF9TRVFfRUxFTV80NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fNDgoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fNDcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzQ5KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzQ4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV81MChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV80OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fNTEoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fNTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzUyKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzUxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV81MyhfKSBORE5CT09TVF9QUF9TRVFfRUxFTV81MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fNTQoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fNTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzU1KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzU0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV81NihfKSBORE5CT09TVF9QUF9TRVFfRUxFTV81NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fNTcoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fNTYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzU4KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzU3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV81OShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV81OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fNjAoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fNTkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzYxKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzYwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV82MihfKSBORE5CT09TVF9QUF9TRVFfRUxFTV82MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fNjMoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fNjIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzY0KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzYzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV82NShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV82NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fNjYoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fNjUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzY3KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzY2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV82OChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV82NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fNjkoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fNjgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzcwKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzY5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV83MShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV83MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fNzIoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fNzEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzczKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzcyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV83NChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV83MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fNzUoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fNzQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzc2KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzc1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV83NyhfKSBORE5CT09TVF9QUF9TRVFfRUxFTV83NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fNzgoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fNzcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzc5KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzc4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV84MChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV83OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fODEoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fODAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzgyKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzgxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV84MyhfKSBORE5CT09TVF9QUF9TRVFfRUxFTV84MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fODQoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fODMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzg1KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzg0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV84NihfKSBORE5CT09TVF9QUF9TRVFfRUxFTV84NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fODcoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fODYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzg4KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzg3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV84OShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV84OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fOTAoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fODkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzkxKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzkwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV85MihfKSBORE5CT09TVF9QUF9TRVFfRUxFTV85MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fOTMoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fOTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzk0KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzkzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV85NShfKSBORE5CT09TVF9QUF9TRVFfRUxFTV85NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fOTYoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fOTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzk3KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzk2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRUxFTV85OChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV85NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fOTkoXykgTkROQk9PU1RfUFBfU0VRX0VMRU1fOTgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEwMChfKSBORE5CT09TVF9QUF9TRVFfRUxFTV85OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTAxKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEwMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTAyKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEwMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTAzKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEwMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTA0KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEwMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTA1KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEwNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTA2KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEwNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTA3KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEwNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTA4KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEwNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTA5KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEwOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTEwKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEwOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTExKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzExMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTEyKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzExMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTEzKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzExMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTE0KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzExMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTE1KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzExNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTE2KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzExNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTE3KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzExNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTE4KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzExNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTE5KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzExOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTIwKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzExOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTIxKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEyMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTIyKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEyMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTIzKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEyMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTI0KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEyMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTI1KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEyNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTI2KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEyNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTI3KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEyNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTI4KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEyNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTI5KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEyOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTMwKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEyOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTMxKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEzMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTMyKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEzMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTMzKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEzMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTM0KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEzMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTM1KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEzNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTM2KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEzNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTM3KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEzNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTM4KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEzNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTM5KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEzOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTQwKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzEzOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTQxKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE0MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTQyKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE0MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTQzKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE0MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTQ0KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE0MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTQ1KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE0NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTQ2KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE0NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTQ3KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE0NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTQ4KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE0NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTQ5KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE0OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTUwKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE0OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTUxKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE1MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTUyKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE1MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTUzKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE1MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTU0KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE1MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTU1KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE1NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTU2KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE1NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTU3KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE1NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTU4KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE1NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTU5KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE1OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTYwKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE1OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTYxKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE2MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTYyKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE2MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTYzKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE2MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTY0KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE2MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTY1KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE2NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTY2KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE2NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTY3KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE2NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTY4KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE2NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTY5KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE2OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTcwKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE2OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTcxKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE3MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTcyKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE3MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTczKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE3MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTc0KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE3MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTc1KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE3NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTc2KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE3NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTc3KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE3NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTc4KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE3NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTc5KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE3OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTgwKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE3OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTgxKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE4MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTgyKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE4MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTgzKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE4MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTg0KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE4MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTg1KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE4NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTg2KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE4NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTg3KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE4NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTg4KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE4NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTg5KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE4OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTkwKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE4OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTkxKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE5MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTkyKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE5MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTkzKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE5MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTk0KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE5MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTk1KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE5NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTk2KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE5NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTk3KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE5NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTk4KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE5NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMTk5KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE5OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjAwKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzE5OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjAxKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIwMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjAyKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIwMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjAzKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIwMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjA0KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIwMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjA1KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIwNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjA2KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIwNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjA3KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIwNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjA4KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIwNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjA5KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIwOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjEwKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIwOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjExKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIxMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjEyKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIxMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjEzKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIxMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjE0KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIxMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjE1KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIxNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjE2KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIxNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjE3KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIxNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjE4KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIxNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjE5KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIxOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjIwKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIxOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjIxKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIyMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjIyKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIyMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjIzKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIyMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjI0KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIyMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjI1KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIyNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjI2KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIyNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjI3KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIyNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjI4KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIyNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjI5KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIyOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjMwKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIyOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjMxKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIzMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjMyKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIzMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjMzKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIzMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjM0KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIzMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjM1KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIzNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjM2KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIzNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjM3KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIzNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjM4KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIzNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjM5KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIzOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjQwKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzIzOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjQxKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzI0MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjQyKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzI0MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjQzKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzI0MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjQ0KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzI0MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjQ1KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzI0NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjQ2KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzI0NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjQ3KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzI0NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjQ4KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzI0NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjQ5KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzI0OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjUwKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzI0OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjUxKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzI1MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjUyKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzI1MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjUzKF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzI1MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjU0KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzI1MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VMRU1fMjU1KF8pIE5ETkJPT1NUX1BQX1NFUV9FTEVNXzI1NAotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL2VudW0uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL2VudW0uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NTI2YWY4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9lbnVtLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI4OCArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1NFUV9FTlVNX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1NFUV9FTlVNX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL3NpemUuaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9TRVFfRU5VTSAqLwotIwotIyBpZiBORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU0oc2VxKSBORE5CT09TVF9QUF9TRVFfRU5VTV9JKHNlcSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNX0koc2VxKSBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfU0VRX0VOVU1fLCBORE5CT09TVF9QUF9TRVFfU0laRShzZXEpKSBzZXEKLSMgZWxpZiBORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19NV0NDKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNKHNlcSkgTkROQk9PU1RfUFBfU0VRX0VOVU1fSShORE5CT09TVF9QUF9TRVFfU0laRShzZXEpLCBzZXEpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV9JKHNpemUsIHNlcSkgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX1NFUV9FTlVNXywgc2l6ZSkgc2VxCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNKHNlcSkgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX1NFUV9FTlVNXywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc2VxKSkgc2VxCi0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xKHgpIHgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMyh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8yCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV80KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzUoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fNih4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV81Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV83KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzgoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fOSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV84Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xMCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV85Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xMSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTIoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEzKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xNCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTUoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE2KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8xNyh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTgoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE5KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8yMCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8xOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjEoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIyKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8yMyh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8yMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjQoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzI1KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzI0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8yNih4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8yNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjcoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzI4KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzI3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8yOSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8yOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMzAoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzMxKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzMwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8zMih4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8zMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMzMoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMzIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzM0KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzMzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8zNSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8zNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMzYoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMzUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzM3KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzM2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV8zOCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV8zNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMzkoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fMzgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzQwKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzM5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV80MSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV80MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fNDIoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fNDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzQzKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzQyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV80NCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV80MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fNDUoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fNDQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzQ2KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzQ1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV80Nyh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV80NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fNDgoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fNDcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzQ5KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzQ4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV81MCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV80OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fNTEoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fNTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzUyKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzUxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV81Myh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV81MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fNTQoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fNTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzU1KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzU0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV81Nih4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV81NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fNTcoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fNTYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzU4KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzU3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV81OSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV81OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fNjAoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fNTkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzYxKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzYwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV82Mih4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV82MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fNjMoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fNjIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzY0KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzYzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV82NSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV82NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fNjYoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fNjUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzY3KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzY2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV82OCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV82NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fNjkoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fNjgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzcwKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzY5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV83MSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV83MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fNzIoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fNzEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzczKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzcyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV83NCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV83MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fNzUoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fNzQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzc2KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzc1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV83Nyh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV83NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fNzgoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fNzcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzc5KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzc4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV84MCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV83OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fODEoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fODAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzgyKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzgxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV84Myh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV84MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fODQoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fODMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzg1KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzg0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV84Nih4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV84NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fODcoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fODYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzg4KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzg3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV84OSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV84OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fOTAoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fODkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzkxKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzkwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV85Mih4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV85MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fOTMoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fOTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzk0KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzkzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV85NSh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV85NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fOTYoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fOTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzk3KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzk2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRU5VTV85OCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV85NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fOTkoeCkgeCwgTkROQk9PU1RfUFBfU0VRX0VOVU1fOTgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEwMCh4KSB4LCBORE5CT09TVF9QUF9TRVFfRU5VTV85OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTAxKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEwMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTAyKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEwMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTAzKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEwMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTA0KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEwMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTA1KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEwNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTA2KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEwNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTA3KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEwNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTA4KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEwNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTA5KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEwOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTEwKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEwOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTExKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzExMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTEyKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzExMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTEzKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzExMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTE0KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzExMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTE1KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzExNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTE2KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzExNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTE3KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzExNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTE4KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzExNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTE5KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzExOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTIwKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzExOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTIxKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEyMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTIyKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEyMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTIzKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEyMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTI0KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEyMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTI1KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEyNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTI2KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEyNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTI3KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEyNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTI4KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEyNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTI5KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEyOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTMwKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEyOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTMxKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEzMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTMyKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEzMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTMzKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEzMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTM0KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEzMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTM1KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEzNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTM2KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEzNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTM3KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEzNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTM4KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEzNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTM5KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEzOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTQwKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzEzOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTQxKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE0MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTQyKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE0MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTQzKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE0MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTQ0KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE0MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTQ1KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE0NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTQ2KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE0NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTQ3KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE0NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTQ4KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE0NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTQ5KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE0OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTUwKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE0OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTUxKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE1MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTUyKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE1MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTUzKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE1MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTU0KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE1MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTU1KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE1NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTU2KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE1NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTU3KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE1NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTU4KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE1NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTU5KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE1OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTYwKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE1OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTYxKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE2MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTYyKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE2MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTYzKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE2MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTY0KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE2MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTY1KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE2NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTY2KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE2NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTY3KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE2NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTY4KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE2NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTY5KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE2OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTcwKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE2OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTcxKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE3MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTcyKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE3MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTczKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE3MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTc0KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE3MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTc1KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE3NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTc2KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE3NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTc3KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE3NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTc4KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE3NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTc5KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE3OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTgwKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE3OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTgxKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE4MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTgyKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE4MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTgzKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE4MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTg0KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE4MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTg1KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE4NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTg2KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE4NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTg3KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE4NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTg4KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE4NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTg5KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE4OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTkwKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE4OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTkxKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE5MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTkyKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE5MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTkzKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE5MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTk0KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE5MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTk1KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE5NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTk2KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE5NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTk3KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE5NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTk4KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE5NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMTk5KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE5OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjAwKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzE5OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjAxKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIwMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjAyKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIwMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjAzKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIwMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjA0KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIwMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjA1KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIwNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjA2KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIwNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjA3KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIwNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjA4KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIwNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjA5KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIwOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjEwKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIwOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjExKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIxMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjEyKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIxMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjEzKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIxMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjE0KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIxMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjE1KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIxNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjE2KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIxNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjE3KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIxNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjE4KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIxNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjE5KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIxOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjIwKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIxOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjIxKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIyMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjIyKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIyMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjIzKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIyMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjI0KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIyMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjI1KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIyNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjI2KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIyNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjI3KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIyNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjI4KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIyNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjI5KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIyOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjMwKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIyOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjMxKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIzMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjMyKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIzMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjMzKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIzMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjM0KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIzMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjM1KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIzNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjM2KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIzNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjM3KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIzNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjM4KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIzNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjM5KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIzOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjQwKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzIzOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjQxKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzI0MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjQyKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzI0MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjQzKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzI0MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjQ0KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzI0MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjQ1KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzI0NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjQ2KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzI0NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjQ3KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzI0NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjQ4KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzI0NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjQ5KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzI0OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjUwKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzI0OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjUxKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzI1MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjUyKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzI1MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjUzKHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzI1MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjU0KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzI1MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjU1KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzI1NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0VOVU1fMjU2KHgpIHgsIE5ETkJPT1NUX1BQX1NFUV9FTlVNXzI1NQotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL2ZpcnN0X24uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL2ZpcnN0X24uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZGI0ZGU3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9maXJzdF9uLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfU0VRX0ZJUlNUX05fSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfU0VRX0ZJUlNUX05fSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvaWYuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL2RldGFpbC9zcGxpdC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9lYXQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvZWxlbS5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX1NFUV9GSVJTVF9OICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZJUlNUX04obiwgc2VxKSBORE5CT09TVF9QUF9JRihuLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNLCBORE5CT09TVF9QUF9UVVBMRV9FQVRfMykoMiwgMCwgTkROQk9PU1RfUFBfU0VRX1NQTElUKG4sIHNlcSAobmlsKSkpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GSVJTVF9OKG4sIHNlcSkgTkROQk9PU1RfUFBfU0VRX0ZJUlNUX05fSShuLCBzZXEpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRklSU1RfTl9JKG4sIHNlcSkgTkROQk9PU1RfUFBfSUYobiwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSwgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMpKDIsIDAsIE5ETkJPT1NUX1BQX1NFUV9TUExJVChuLCBzZXEgKG5pbCkpKQotIyBlbmRpZgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL2ZvbGRfbGVmdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvZm9sZF9sZWZ0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjIzMjkzNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvZm9sZF9sZWZ0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwNzAgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9TRVFfRk9MRF9MRUZUX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1NFUV9GT0xEX0xFRlRfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL2RlYy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9pZi5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9kZWJ1Zy9lcnJvci5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9kZXRhaWwvYXV0b19yZWMuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL3NlcS5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvc2l6ZS5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlQgKi8KLSMKLSMgaWYgMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVChvcCwgc3RhdGUsIHNlcSkgLi4uCi0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXywgTkROQk9PU1RfUFBfQVVUT19SRUMoTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9QLCAyNTYpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9QKG4pIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLXywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXyAjIyBuKE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfTywgTkROQk9PU1RfUFBfTklMLCAobmlsKSwgMSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX08ocywgc3QsIF8pIHN0Ci0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzI1NyhvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9FUlJPUigweDAwMDUpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjU3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9FUlJPUigweDAwMDUpCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX05JTCAxCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV81KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV84KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTEob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMyhvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNihvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTcob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjAob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMihvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjMob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjYob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI3KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yOChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjkob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzMwKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zMShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzIob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzMzKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zNChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzUob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzM2KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zNyhvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzgob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzM5KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80MChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDEob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQyKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80MyhvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDQob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQ1KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80NihvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDcob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQ4KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80OShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTAob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzUxKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV81MihvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTMob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzU0KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV81NShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTYob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzU3KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV81OChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTkob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzYwKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82MShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjIob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzYzKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82NChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjUob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzY2KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82NyhvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjgob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzY5KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83MChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzEob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzcyKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83MyhvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzQob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzc1KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83NihvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzcob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzc4KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83OShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODAob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzgxKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV84MihvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODMob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzg0KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV84NShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODYob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzg3KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV84OChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODkob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzkwKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85MShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTIob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzkzKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85NChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTUob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzk2KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85NyhvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTgob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzk5KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMDAob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwMShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTAyKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMDMob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwNChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTA1KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMDYob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwNyhvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTA4KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMDkob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExMChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTExKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMTIob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExMyhvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTE0KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMTUob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExNihvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTE3KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMTgob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExOShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTIwKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMjEob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyMihvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTIzKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMjQob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyNShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTI2KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMjcob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyOChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTI5KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMzAob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzMShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTMyKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMzMob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzNChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTM1KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMzYob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzNyhvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTM4KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMzkob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0MChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQxKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNDIob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0MyhvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQ0KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNDUob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0NihvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQ3KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNDgob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0OShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTUwKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNTEob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1MihvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTUzKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNTQob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1NShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTU2KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNTcob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1OChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTU5KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNjAob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2MShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTYyKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNjMob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2NChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTY1KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNjYob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2NyhvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTY4KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNjkob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3MChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTcxKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNzIob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3MyhvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTc0KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNzUob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3NihvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTc3KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNzgob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3OShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTgwKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xODEob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4MihvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTgzKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xODQob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4NShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTg2KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xODcob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4OChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTg5KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOTAob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5MShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTkyKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOTMob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5NChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTk1KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOTYob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5NyhvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTk4KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOTkob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwMChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjAxKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMDIob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwMyhvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjA0KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMDUob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwNihvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjA3KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMDgob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwOShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjEwKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMTEob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxMihvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjEzKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMTQob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxNShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjE2KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMTcob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxOChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjE5KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMjAob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyMShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjIyKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMjMob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyNChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjI1KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMjYob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyNyhvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjI4KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMjkob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzMChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjMxKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMzIob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzMyhvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjM0KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMzUob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzNihvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjM3KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMzgob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzOShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQwKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNDEob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0MihvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQzKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNDQob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0NShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQ2KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNDcob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0OChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQ5KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNTAob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI1MShvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjUyKG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNTMob3AsIHN0LCBzcywgc3opIDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfQ0hFQ0tfTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI1NChvcCwgc3QsIHNzLCBzeikgMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9DSEVDS19ORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjU1KG9wLCBzdCwgc3MsIHN6KSAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0NIRUNLX05ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNTYob3AsIHN0LCBzcywgc3opIDAKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRihvcCwgc3QsIHNzLCBzeikgc3QKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzIob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8zKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzUob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzUob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF82KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNyhvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNyhvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzgob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzgob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF85KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTAob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTEob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTIob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTMob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTQob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTUob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTYob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTcob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTgob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTkob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjAob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjEob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjIob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjMob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjQob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjUob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI1KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjYob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI2KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjcob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI3KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjgob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI4KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjkob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI5KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMzAob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzMwKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMzEob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzMxKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMzIob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzMyKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMzMob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzMzKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMzQob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzM0KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMzUob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzM1KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMzYob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzM2KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMzcob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzM3KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMzgob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzM4KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMzkob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzM5KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNDAob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQwKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNDEob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQxKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNDIob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQyKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNDMob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQzKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNDQob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQ0KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNDUob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQ1KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNDYob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQ2KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNDcob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQ3KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNDgob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQ4KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNDkob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQ5KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNTAob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzUwKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNTEob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzUxKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNTIob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzUyKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNTMob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzUzKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNTQob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzU0KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNTUob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzU1KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNTYob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzU2KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNTcob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzU3KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNTgob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzU4KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNTkob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzU5KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNjAob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzYwKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNjEob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzYxKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNjIob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzYyKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNjMob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzYzKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNjQob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzY0KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNjUob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzY1KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNjYob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzY2KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNjcob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzY3KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNjgob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzY4KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNjkob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzY5KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNzAob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzcwKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNzEob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzcxKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNzIob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzcyKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNzMob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzczKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNzQob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzc0KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNzUob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzc1KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNzYob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzc2KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNzcob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzc3KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNzgob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzc4KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfNzkob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzc5KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfODAob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzgwKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfODEob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzgxKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfODIob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzgyKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfODMob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzgzKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfODQob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzg0KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfODUob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzg1KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfODYob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzg2KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfODcob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzg3KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfODgob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzg4KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfODkob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzg5KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfOTAob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzkwKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfOTEob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzkxKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfOTIob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzkyKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfOTMob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzkzKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfOTQob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzk0KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfOTUob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzk1KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfOTYob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzk2KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfOTcob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzk3KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfOTgob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzk4KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfOTkob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzk5KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTAwKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMDAob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xMDEob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwMShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzEwMihvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTAyKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTAzKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMDMob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xMDQob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwNChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzEwNShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTA1KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTA2KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMDYob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xMDcob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwNyhvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzEwOChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTA4KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTA5KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMDkob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xMTAob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExMChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzExMShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTExKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTEyKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMTIob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xMTMob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExMyhvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzExNChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTE0KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTE1KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMTUob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xMTYob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExNihvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzExNyhvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTE3KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTE4KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMTgob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xMTkob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExOShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzEyMChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTIwKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTIxKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMjEob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xMjIob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyMihvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzEyMyhvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTIzKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTI0KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMjQob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xMjUob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyNShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzEyNihvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTI2KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTI3KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMjcob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xMjgob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyOChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzEyOShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTI5KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTMwKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMzAob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xMzEob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzMShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzEzMihvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTMyKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTMzKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMzMob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xMzQob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzNChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzEzNShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTM1KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTM2KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMzYob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xMzcob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzNyhvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzEzOChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTM4KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTM5KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMzkob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xNDAob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0MChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE0MShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQxKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTQyKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNDIob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xNDMob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0MyhvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE0NChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQ0KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTQ1KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNDUob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xNDYob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0NihvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE0NyhvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQ3KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTQ4KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNDgob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xNDkob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0OShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE1MChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTUwKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTUxKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNTEob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xNTIob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1MihvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE1MyhvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTUzKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTU0KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNTQob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xNTUob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1NShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE1NihvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTU2KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTU3KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNTcob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xNTgob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1OChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE1OShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTU5KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTYwKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNjAob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xNjEob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2MShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE2MihvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTYyKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTYzKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNjMob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xNjQob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2NChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE2NShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTY1KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTY2KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNjYob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xNjcob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2NyhvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE2OChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTY4KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTY5KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNjkob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xNzAob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3MChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE3MShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTcxKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTcyKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNzIob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xNzMob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3MyhvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE3NChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTc0KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTc1KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNzUob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xNzYob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3NihvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE3NyhvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTc3KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTc4KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNzgob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xNzkob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3OShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE4MChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTgwKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTgxKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xODEob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xODIob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4MihvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE4MyhvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTgzKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTg0KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xODQob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xODUob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4NShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE4NihvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTg2KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTg3KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xODcob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xODgob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4OChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE4OShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTg5KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTkwKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOTAob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xOTEob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5MShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE5MihvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTkyKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTkzKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOTMob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xOTQob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5NChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE5NShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTk1KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTk2KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOTYob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8xOTcob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5NyhvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzE5OChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTk4KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMTk5KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOTkob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yMDAob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwMChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzIwMShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjAxKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjAyKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMDIob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yMDMob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwMyhvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzIwNChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjA0KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjA1KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMDUob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yMDYob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwNihvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzIwNyhvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjA3KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjA4KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMDgob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yMDkob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwOShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzIxMChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjEwKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjExKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMTEob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yMTIob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxMihvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzIxMyhvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjEzKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjE0KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMTQob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yMTUob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxNShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzIxNihvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjE2KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjE3KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMTcob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yMTgob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxOChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzIxOShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjE5KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjIwKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMjAob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yMjEob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyMShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzIyMihvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjIyKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjIzKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMjMob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yMjQob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyNChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzIyNShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjI1KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjI2KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMjYob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yMjcob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyNyhvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzIyOChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjI4KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjI5KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMjkob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yMzAob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzMChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzIzMShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjMxKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjMyKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMzIob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yMzMob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzMyhvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzIzNChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjM0KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjM1KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMzUob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yMzYob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzNihvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzIzNyhvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjM3KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjM4KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMzgob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yMzkob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzOShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzI0MChvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQwKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjQxKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNDEob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yNDIob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0MihvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzI0MyhvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQzKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjQ0KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNDQob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yNDUob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0NShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzI0NihvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQ2KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjQ3KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNDcob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yNDgob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0OChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzI0OShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQ5KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjUwKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNTAob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yNTEob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI1MShvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzI1MihvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjUyKG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjUzKG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNTMob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF8yNTQob3AsIHN0LCBzcykgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI1NChvcCwgc3QsIHNzLCBORE5CT09TVF9QUF9TRVFfU0laRShzcykpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXzI1NShvcCwgc3QsIHNzKSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjU1KG9wLCBzdCwgc3MsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNzKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfMjU2KG9wLCBzdCwgc3MpIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNTYob3AsIHN0LCBzcywgTkROQk9PU1RfUFBfU0VRX1NJWkUoc3MpKQotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRE1DKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMiwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoMywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoNCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoNSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV81KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoNiwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoNywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoOCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV84KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AoOSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTAsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDEwLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTEsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDExLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTIsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDEyLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTMsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDEzLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDE0LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTUsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDE1LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTYsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDE2LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTcsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDE3LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTgsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDE4LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDE5LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjAsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDIwLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjEsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDIxLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjIsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDIyLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjMsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDIzLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDI0LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjUsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDI1LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjYsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDI2LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjcsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDI3LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjgsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDI4LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDI5LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzAsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDMwLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzMwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzEsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDMxLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzMxKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzIsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDMyLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzMyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzMsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDMzLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzMzKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzQsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDM0LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzM0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzUsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDM1LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzM1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzYsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDM2LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzM2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzcsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDM3LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzM3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzgsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDM4LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzM4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDM5LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzM5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDAsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDQwLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDEsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDQxLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQxKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDIsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDQyLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDMsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDQzLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQzKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDQsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDQ0LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQ0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDUsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDQ1LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQ1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDYsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDQ2LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQ2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDcsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDQ3LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQ3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDgsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDQ4LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQ4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDQ5LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQ5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTAsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDUwLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzUwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTEsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDUxLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzUxKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTIsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDUyLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzUyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTMsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDUzLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzUzKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTQsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDU0LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzU0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTUsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDU1LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzU1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTYsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDU2LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzU2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTcsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDU3LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzU3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTgsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDU4LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzU4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDU5LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzU5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjAsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDYwLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzYwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjEsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDYxLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzYxKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjIsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDYyLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzYyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjMsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDYzLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzYzKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjQsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDY0LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzY0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjUsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDY1LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzY1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjYsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDY2LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzY2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjcsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDY3LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzY3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjgsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDY4LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzY4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDY5LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzY5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzAsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDcwLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzcwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzEsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDcxLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzcxKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzIsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDcyLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzcyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzMsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDczLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzczKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzQsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDc0LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzc0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzUsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDc1LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzc1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzYsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDc2LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzc2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzcsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDc3LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzc3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzgsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDc4LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzc4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDc5LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzc5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODAsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDgwLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzgwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODEsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDgxLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzgxKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODIsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDgyLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzgyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODMsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDgzLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzgzKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODQsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDg0LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzg0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODUsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDg1LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzg1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODYsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDg2LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzg2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODcsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDg3LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzg3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODgsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDg4LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzg4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDg5LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzg5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTAsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDkwLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzkwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTEsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDkxLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzkxKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTIsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDkyLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzkyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTMsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDkzLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzkzKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTQsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDk0LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzk0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTUsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDk1LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzk1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTYsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDk2LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzk2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTcsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDk3LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzk3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTgsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDk4LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzk4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wKDk5LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzk5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTAwLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMDAsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTAwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTAxLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMDEsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTAxKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTAyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMDIsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTAyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTAzLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMDMsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTAzKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTA0LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMDQsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTA0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTA1LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMDUsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTA1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTA2LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMDYsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTA2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTA3LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMDcsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTA3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTA4LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMDgsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTA4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTA5LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMDksIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTA5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTEwLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMTAsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTEwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTExLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMTEsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTExKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTEyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMTIsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTEyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTEzLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMTMsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTEzKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTE0LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMTQsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTE0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTE1LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMTUsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTE1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTE2LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMTYsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTE2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTE3LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMTcsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTE3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTE4LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMTgsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTE4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTE5LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMTksIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTE5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTIwLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMjAsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTIwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTIxLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMjEsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTIxKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTIyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMjIsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTIyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTIzLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMjMsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTIzKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTI0LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMjQsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTI0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTI1LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMjUsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTI1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTI2LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMjYsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTI2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTI3LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMjcsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTI3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTI4LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMjgsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTI4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTI5LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMjksIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTI5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTMwLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMzAsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTMwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTMxLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMzEsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTMxKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTMyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMzIsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTMyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTMzLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMzMsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTMzKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTM0LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMzQsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTM0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTM1LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMzUsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTM1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTM2LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMzYsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTM2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTM3LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMzcsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTM3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTM4LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMzgsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTM4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTM5LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxMzksIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTM5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQwLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNDAsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQxLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNDEsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQxKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNDIsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQzLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNDMsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQzKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQ0LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNDQsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQ0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQ1LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNDUsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQ1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQ2LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNDYsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQ2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQ3LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNDcsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQ3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQ4LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNDgsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQ4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQ5LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNDksIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQ5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTUwLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNTAsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTUwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTUxLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNTEsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTUxKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTUyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNTIsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTUyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTUzLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNTMsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTUzKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTU0LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNTQsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTU0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTU1LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNTUsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTU1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTU2LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNTYsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTU2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTU3LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNTcsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTU3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTU4LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNTgsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTU4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTU5LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNTksIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTU5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTYwLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNjAsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTYwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTYxLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNjEsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTYxKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTYyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNjIsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTYyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTYzLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNjMsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTYzKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTY0LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNjQsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTY0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTY1LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNjUsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTY1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTY2LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNjYsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTY2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTY3LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNjcsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTY3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTY4LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNjgsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTY4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTY5LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNjksIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTY5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTcwLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNzAsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTcwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTcxLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNzEsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTcxKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTcyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNzIsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTcyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTczLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNzMsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTczKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTc0LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNzQsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTc0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTc1LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNzUsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTc1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTc2LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNzYsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTc2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTc3LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNzcsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTc3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTc4LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNzgsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTc4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTc5LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxNzksIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTc5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTgwLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxODAsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTgwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTgxLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxODEsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTgxKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTgyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxODIsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTgyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTgzLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxODMsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTgzKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTg0LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxODQsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTg0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTg1LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxODUsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTg1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTg2LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxODYsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTg2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTg3LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxODcsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTg3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTg4LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxODgsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTg4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTg5LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxODksIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTg5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTkwLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxOTAsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTkwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTkxLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxOTEsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTkxKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTkyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxOTIsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTkyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTkzLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxOTMsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTkzKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTk0LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxOTQsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTk0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTk1LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxOTUsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTk1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTk2LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxOTYsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTk2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTk3LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxOTcsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTk3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTk4LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxOTgsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTk4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTk5LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgxOTksIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTk5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjAwLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMDAsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjAwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjAxLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMDEsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjAxKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjAyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMDIsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjAyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjAzLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMDMsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjAzKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjA0LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMDQsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjA0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjA1LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMDUsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjA1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjA2LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMDYsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjA2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjA3LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMDcsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjA3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjA4LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMDgsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjA4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjA5LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMDksIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjA5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjEwLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMTAsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjEwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjExLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMTEsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjExKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjEyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMTIsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjEyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjEzLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMTMsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjEzKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjE0LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMTQsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjE0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjE1LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMTUsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjE1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjE2LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMTYsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjE2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjE3LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMTcsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjE3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjE4LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMTgsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjE4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjE5LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMTksIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjE5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjIwLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMjAsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjIwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjIxLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMjEsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjIxKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjIyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMjIsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjIyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjIzLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMjMsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjIzKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjI0LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMjQsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjI0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjI1LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMjUsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjI1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjI2LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMjYsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjI2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjI3LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMjcsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjI3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjI4LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMjgsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjI4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjI5LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMjksIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjI5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjMwLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMzAsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjMwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjMxLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMzEsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjMxKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjMyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMzIsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjMyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjMzLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMzMsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjMzKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjM0LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMzQsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjM0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjM1LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMzUsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjM1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjM2LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMzYsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjM2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjM3LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMzcsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjM3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjM4LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMzgsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjM4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjM5LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyMzksIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjM5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQwLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyNDAsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQxLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyNDEsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQxKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyNDIsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQzLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyNDMsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQzKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQ0LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyNDQsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQ0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQ1LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyNDUsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQ1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQ2LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyNDYsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQ2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQ3LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyNDcsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQ3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQ4LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyNDgsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQ4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQ5LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyNDksIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQ5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjUwLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyNTAsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjUwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjUxLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyNTEsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjUxKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjUyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyNTIsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjUyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjUzLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyNTMsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjUzKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjU0LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyNTQsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjU0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjU1LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyNTUsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjU1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjU2LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyNTYsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjU2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjU3LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCgyNTcsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDMsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoNCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg1LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzUob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDYsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzcsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoNywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg4LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzgob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDksIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDEwLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTEsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTEsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTEob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxMiwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDEzLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTQsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxNSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE2LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTcsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTcsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTcob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxOCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE5LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjAsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjAsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjAob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyMSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDIyLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjMsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjMsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjMob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyNCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI1LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDI1LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjYsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjYsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjYob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyNywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI4LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDI4LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjksIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjkob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zMCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygzMCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zMChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzMxLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDMxLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzMxKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzIsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMzIsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzIob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zMywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygzMywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zMyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzM0LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDM0LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzM0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzUsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMzUsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzUob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zNiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygzNiwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zNihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzM3LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDM3LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzM3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzgsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMzgsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMzgob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zOSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygzOSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8zOShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQwLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDQwLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDEsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoNDEsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDEob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80MiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg0Miwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80MihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQzLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDQzLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQzKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDQsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoNDQsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDQob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80NSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg0NSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80NShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQ2LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDQ2LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQ2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDcsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoNDcsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNDcob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80OCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg0OCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV80OChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQ5LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDQ5LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzQ5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTAsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoNTAsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTAob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV81MSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg1MSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV81MShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzUyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDUyLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzUyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTMsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoNTMsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTMob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV81NCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg1NCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV81NChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzU1LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDU1LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzU1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTYsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoNTYsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTYob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV81NywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg1Nywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV81NyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzU4LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDU4LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzU4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoNTksIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNTkob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82MCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg2MCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82MChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzYxLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDYxLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzYxKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjIsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoNjIsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjIob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82MywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg2Mywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82MyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzY0LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDY0LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzY0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjUsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoNjUsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjUob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82NiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg2Niwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82NihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzY3LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDY3LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzY3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjgsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoNjgsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNjgob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82OSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg2OSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV82OShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzcwLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDcwLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzcwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzEsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoNzEsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzEob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83MiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg3Miwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83MihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzczLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDczLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzczKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzQsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoNzQsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzQob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83NSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg3NSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83NShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzc2LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDc2LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzc2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzcsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoNzcsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfNzcob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83OCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg3OCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV83OChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzc5LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDc5LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzc5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODAsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoODAsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODAob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV84MSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg4MSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV84MShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzgyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDgyLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzgyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODMsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoODMsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODMob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV84NCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg4NCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV84NChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzg1LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDg1LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzg1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODYsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoODYsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODYob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV84NywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg4Nywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV84NyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzg4LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDg4LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzg4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoODksIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfODkob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85MCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg5MCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85MChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzkxLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDkxLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzkxKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTIsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoOTIsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTIob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85MywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg5Mywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85MyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzk0LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDk0LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzk0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTUsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoOTUsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTUob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85NiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg5Niwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85NihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzk3LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDk3LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzk3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTgsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoOTgsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfOTgob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85OSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIyg5OSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV85OShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwMCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxMDAsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTAwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTAxLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDEwMSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMDEob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMDIsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTAyLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwMihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwMywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxMDMsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTAzKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTA0LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDEwNCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMDQob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMDUsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTA1LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwNShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwNiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxMDYsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTA2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTA3LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDEwNywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMDcob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMDgsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTA4LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwOChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEwOSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxMDksIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTA5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTEwLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDExMCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMTAob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMTEsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTExLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExMShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExMiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxMTIsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTEyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTEzLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDExMywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMTMob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMTQsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTE0LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExNChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExNSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxMTUsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTE1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTE2LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDExNiwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMTYob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMTcsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTE3LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExNyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzExOCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxMTgsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTE4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTE5LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDExOSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMTkob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMjAsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTIwLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyMChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyMSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxMjEsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTIxKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTIyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDEyMiwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMjIob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMjMsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTIzLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyMyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyNCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxMjQsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTI0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTI1LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDEyNSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMjUob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMjYsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTI2LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyNihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyNywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxMjcsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTI3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTI4LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDEyOCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMjgob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMjksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTI5LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEyOShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzMCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxMzAsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTMwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTMxLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDEzMSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMzEob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMzIsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTMyLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzMihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzMywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxMzMsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTMzKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTM0LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDEzNCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMzQob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMzUsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTM1LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzNShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzNiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxMzYsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTM2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTM3LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDEzNywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMzcob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xMzgsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTM4LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzOChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzEzOSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxMzksIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTM5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQwLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE0MCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNDAob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNDEsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTQxLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0MShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0MiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxNDIsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQzLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE0Mywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNDMob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNDQsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTQ0LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0NChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0NSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxNDUsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQ1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQ2LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE0Niwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNDYob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNDcsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTQ3LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0NyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE0OCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxNDgsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQ4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTQ5LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE0OSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNDkob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNTAsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTUwLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1MChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1MSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxNTEsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTUxKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTUyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE1Miwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNTIob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNTMsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTUzLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1MyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1NCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxNTQsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTU0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTU1LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE1NSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNTUob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNTYsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTU2LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1NihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1NywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxNTcsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTU3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTU4LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE1OCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNTgob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNTksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTU5LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE1OShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2MCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxNjAsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTYwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTYxLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE2MSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNjEob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNjIsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTYyLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2MihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2MywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxNjMsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTYzKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTY0LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE2NCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNjQob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNjUsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTY1LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2NShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2NiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxNjYsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTY2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTY3LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE2Nywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNjcob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNjgsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTY4LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2OChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE2OSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxNjksIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTY5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTcwLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE3MCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNzAob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNzEsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTcxLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3MShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3MiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxNzIsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTcyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTczLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE3Mywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNzMob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNzQsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTc0LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3NChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3NSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxNzUsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTc1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTc2LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE3Niwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNzYob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNzcsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTc3LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3NyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE3OCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxNzgsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTc4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTc5LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE3OSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xNzkob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xODAsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTgwLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4MChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4MSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxODEsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTgxKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTgyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE4Miwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xODIob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xODMsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTgzLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4MyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4NCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxODQsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTg0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTg1LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE4NSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xODUob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xODYsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTg2LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4NihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4NywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxODcsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTg3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTg4LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE4OCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xODgob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xODksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTg5LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE4OShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5MCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxOTAsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTkwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTkxLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE5MSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOTEob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOTIsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTkyLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5MihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5MywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxOTMsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTkzKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTk0LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE5NCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOTQob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOTUsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTk1LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5NShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5NiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxOTYsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTk2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTk3LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDE5Nywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOTcob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8xOTgsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMTk4LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5OChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzE5OSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygxOTksIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMTk5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjAwLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDIwMCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMDAob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMDEsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjAxLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwMShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwMiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyMDIsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjAyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjAzLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDIwMywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMDMob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMDQsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjA0LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwNChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwNSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyMDUsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjA1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjA2LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDIwNiwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMDYob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMDcsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjA3LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwNyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIwOCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyMDgsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjA4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjA5LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDIwOSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMDkob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMTAsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjEwLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxMChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxMSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyMTEsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjExKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjEyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDIxMiwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMTIob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMTMsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjEzLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxMyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxNCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyMTQsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjE0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjE1LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDIxNSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMTUob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMTYsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjE2LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxNihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxNywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyMTcsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjE3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjE4LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDIxOCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMTgob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMTksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjE5LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIxOShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyMCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyMjAsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjIwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjIxLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDIyMSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMjEob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMjIsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjIyLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyMihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyMywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyMjMsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjIzKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjI0LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDIyNCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMjQob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMjUsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjI1LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyNShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyNiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyMjYsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjI2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjI3LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDIyNywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMjcob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMjgsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjI4LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyOChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIyOSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyMjksIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjI5KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjMwLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDIzMCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMzAob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMzEsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjMxLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzMShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzMiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyMzIsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjMyKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjMzLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDIzMywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMzMob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMzQsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjM0LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzNChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzNSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyMzUsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjM1KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjM2LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDIzNiwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMzYob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMzcsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjM3LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzNyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzIzOCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyMzgsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjM4KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjM5LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDIzOSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yMzkob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNDAsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjQwLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0MChvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0MSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyNDEsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQxKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDI0Miwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNDIob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNDMsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjQzLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0MyhvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0NCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyNDQsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQ0KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQ1LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDI0NSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNDUob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNDYsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjQ2LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0NihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0NywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyNDcsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQ3KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjQ4LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDI0OCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNDgob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNDksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjQ5LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI0OShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI1MCwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyNTAsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjUwKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjUxLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDI1MSwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNTEob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNTIsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjUyLCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI1MihvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI1MywgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyNTMsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjUzKG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjU0LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDI1NCwgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNTQob3AsIHN0LCBzcywgc3opIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1BQX0RFQyhzeiksIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfSV8yNTUsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfRikob3AsIG9wIyMoMjU1LCBzdCwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc3MpKSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc3MpLCBORE5CT09TVF9QUF9ERUMoc3opKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI1NShvcCwgc3QsIHNzLCBzeikgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfUFBfREVDKHN6KSwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9JXzI1NiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVF9GKShvcCwgb3AjIygyNTYsIHN0LCBORE5CT09TVF9QUF9TRVFfSEVBRChzcykpLCBORE5CT09TVF9QUF9TRVFfVEFJTChzcyksIE5ETkJPT1NUX1BQX0RFQyhzeikpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjU2KG9wLCBzdCwgc3MsIHN6KSBORE5CT09TVF9QUF9JRihORE5CT09TVF9QUF9ERUMoc3opLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0lfMjU3LCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUX0YpKG9wLCBvcCMjKDI1Nywgc3QsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNzKSksIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNzKSwgTkROQk9PU1RfUFBfREVDKHN6KSkKLSMgZW5kaWYKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9mb3JfZWFjaC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvZm9yX2VhY2guaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNGRmMDY3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9mb3JfZWFjaC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1NFUV9GT1JfRUFDSF9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9TRVFfRk9SX0VBQ0hfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL2RlYy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZm9yLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9zZXEuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL3NpemUuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvZWxlbS5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9yZW0uaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0ggKi8KLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0gobWFjcm8sIGRhdGEsIHNlcSkgTkROQk9PU1RfUFBfRk9SKChtYWNybywgZGF0YSwgc2VxIChuaWwpKSwgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX1AsIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9PLCBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfTSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIKG1hY3JvLCBkYXRhLCBzZXEpIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9EKG1hY3JvLCBkYXRhLCBzZXEpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfRChtYWNybywgZGF0YSwgc2VxKSBORE5CT09TVF9QUF9GT1IoKG1hY3JvLCBkYXRhLCBzZXEgKG5pbCkpLCBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfUCwgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX08sIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9NKQotIyBlbmRpZgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX1AociwgeCkgTkROQk9PU1RfUFBfREVDKE5ETkJPT1NUX1BQX1NFUV9TSVpFKE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMywgMiwgeCkpKQotIwotIyBpZiBORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19TVFJJQ1QoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX08ociwgeCkgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX09fSSB4Ci0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9PKHIsIHgpIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9PX0koTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgzLCAwLCB4KSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgzLCAxLCB4KSwgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgzLCAyLCB4KSkKLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9PX0kobWFjcm8sIGRhdGEsIHNlcSkgKG1hY3JvLCBkYXRhLCBORE5CT09TVF9QUF9TRVFfVEFJTChzZXEpKQotIwotIyBpZiBORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19TVFJJQ1QoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX00ociwgeCkgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX01fSU0ociwgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzMgeCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9NX0lNKHIsIGltKSBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfTV9JKHIsIGltKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfTShyLCB4KSBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfTV9JKHIsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMywgMCwgeCksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMywgMSwgeCksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMywgMiwgeCkpCi0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfTV9JKHIsIG1hY3JvLCBkYXRhLCBzZXEpIG1hY3JvKHIsIGRhdGEsIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNlcSkpCi0jCi0jIC8qIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9SICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX1IociwgbWFjcm8sIGRhdGEsIHNlcSkgTkROQk9PU1RfUFBfRk9SXyAjIyByKChtYWNybywgZGF0YSwgc2VxIChuaWwpKSwgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX1AsIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9PLCBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfTSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX1IociwgbWFjcm8sIGRhdGEsIHNlcSkgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX1JfSShyLCBtYWNybywgZGF0YSwgc2VxKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX1JfSShyLCBtYWNybywgZGF0YSwgc2VxKSBORE5CT09TVF9QUF9GT1JfICMjIHIoKG1hY3JvLCBkYXRhLCBzZXEgKG5pbCkpLCBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfUCwgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX08sIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9NKQotIyBlbmRpZgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL2Zvcl9lYWNoX2kuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL2Zvcl9lYWNoX2kuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYzFiODEyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9mb3JfZWFjaF9pLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfU0VRX0ZPUl9FQUNIX0lfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfU0VRX0ZPUl9FQUNIX0lfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL2RlYy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL2luYy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZm9yLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9zZXEuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL3NpemUuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvZWxlbS5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9yZW0uaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfSSAqLwotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRURHKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9JKG1hY3JvLCBkYXRhLCBzZXEpIE5ETkJPT1NUX1BQX0ZPUigobWFjcm8sIGRhdGEsIHNlcSAobmlsKSwgMCksIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9JX1AsIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9JX08sIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9JX00pCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9JKG1hY3JvLCBkYXRhLCBzZXEpIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9JX0kobWFjcm8sIGRhdGEsIHNlcSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9JX0kobWFjcm8sIGRhdGEsIHNlcSkgTkROQk9PU1RfUFBfRk9SKChtYWNybywgZGF0YSwgc2VxIChuaWwpLCAwKSwgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX0lfUCwgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX0lfTywgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX0lfTSkKLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9JX1AociwgeCkgTkROQk9PU1RfUFBfREVDKE5ETkJPT1NUX1BQX1NFUV9TSVpFKE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oNCwgMiwgeCkpKQotIwotIyBpZiBORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19TVFJJQ1QoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX0lfTyhyLCB4KSBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfSV9PX0kgeAotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfSV9PKHIsIHgpIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9JX09fSShORE5CT09TVF9QUF9UVVBMRV9FTEVNKDQsIDAsIHgpLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDQsIDEsIHgpLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDQsIDIsIHgpLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDQsIDMsIHgpKQotIyBlbmRpZgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX0lfT19JKG1hY3JvLCBkYXRhLCBzZXEsIGkpIChtYWNybywgZGF0YSwgTkROQk9PU1RfUFBfU0VRX1RBSUwoc2VxKSwgTkROQk9PU1RfUFBfSU5DKGkpKQotIwotIyBpZiBORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19TVFJJQ1QoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX0lfTShyLCB4KSBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfSV9NX0lNKHIsIE5ETkJPT1NUX1BQX1RVUExFX1JFTV80IHgpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfSV9NX0lNKHIsIGltKSBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfSV9NX0kociwgaW0pCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9JX00ociwgeCkgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX0lfTV9JKHIsIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oNCwgMCwgeCksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oNCwgMSwgeCksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oNCwgMiwgeCksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oNCwgMywgeCkpCi0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfSV9NX0kociwgbWFjcm8sIGRhdGEsIHNlcSwgaSkgbWFjcm8ociwgZGF0YSwgaSwgTkROQk9PU1RfUFBfU0VRX0hFQUQoc2VxKSkKLSMKLSMgLyogTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX0lfUiAqLwotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRURHKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9JX1IociwgbWFjcm8sIGRhdGEsIHNlcSkgTkROQk9PU1RfUFBfRk9SXyAjIyByKChtYWNybywgZGF0YSwgc2VxIChuaWwpLCAwKSwgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX0lfUCwgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX0lfTywgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX0lfTSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX0lfUihyLCBtYWNybywgZGF0YSwgc2VxKSBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfSV9SX0kociwgbWFjcm8sIGRhdGEsIHNlcSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSF9JX1JfSShyLCBtYWNybywgZGF0YSwgc2VxKSBORE5CT09TVF9QUF9GT1JfICMjIHIoKG1hY3JvLCBkYXRhLCBzZXEgKG5pbCksIDApLCBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfSV9QLCBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfSV9PLCBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0hfSV9NKQotIyBlbmRpZgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL3Jlc3Rfbi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvcmVzdF9uLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTM1MGVkMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvcmVzdF9uLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfU0VRX1JFU1RfTl9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9TRVFfUkVTVF9OX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9pbmMuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9mYWNpbGl0aWVzL2VtcHR5LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9kZXRhaWwvc3BsaXQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvZWxlbS5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX1NFUV9SRVNUX04gKi8KLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfUkVTVF9OKG4sIHNlcSkgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgyLCAxLCBORE5CT09TVF9QUF9TRVFfU1BMSVQoTkROQk9PU1RfUFBfSU5DKG4pLCAobmlsKSBzZXEgTkROQk9PU1RfUFBfRU1QVFkpKSgpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9SRVNUX04obiwgc2VxKSBORE5CT09TVF9QUF9TRVFfUkVTVF9OX0kobiwgc2VxKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1JFU1RfTl9JKG4sIHNlcSkgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgyLCAxLCBORE5CT09TVF9QUF9TRVFfU1BMSVQoTkROQk9PU1RfUFBfSU5DKG4pLCAobmlsKSBzZXEgTkROQk9PU1RfUFBfRU1QVFkpKSgpCi0jIGVuZGlmCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvc2VxLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9zZXEuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYzA2ZmU5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9zZXEuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9TRVFfU0VRX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1NFUV9TRVFfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9lbGVtLmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfU0VRX0hFQUQgKi8KLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9IRUFEKHNlcSkgTkROQk9PU1RfUFBfU0VRX0VMRU0oMCwgc2VxKQotIwotIyAvKiBORE5CT09TVF9QUF9TRVFfVEFJTCAqLwotIwotIyBpZiBORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19NV0NDKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNlcSkgTkROQk9PU1RfUFBfU0VRX1RBSUxfMSgoc2VxKSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9UQUlMXzEocGFyKSBORE5CT09TVF9QUF9TRVFfVEFJTF8yICMjIHBhcgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1RBSUxfMihzZXEpIE5ETkJPT1NUX1BQX1NFUV9UQUlMX0kgIyMgc2VxCi0jIGVsaWYgTkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfTVNWQygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfVEFJTChzZXEpIE5ETkJPT1NUX1BQX1NFUV9UQUlMX0lEKE5ETkJPT1NUX1BQX1NFUV9UQUlMX0kgc2VxKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1RBSUxfSUQoaWQpIGlkCi0jIGVsaWYgTkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRURHKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9UQUlMKHNlcSkgTkROQk9PU1RfUFBfU0VRX1RBSUxfRChzZXEpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfVEFJTF9EKHNlcSkgTkROQk9PU1RfUFBfU0VRX1RBSUxfSSBzZXEKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1RBSUwoc2VxKSBORE5CT09TVF9QUF9TRVFfVEFJTF9JIHNlcQotIyBlbmRpZgotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1RBSUxfSSh4KQotIwotIyAvKiBORE5CT09TVF9QUF9TRVFfTklMICovCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfTklMKHgpICh4KQotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL3NpemUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL3NpemUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ODM0YzBkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9zaXplLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU0NyArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1NFUV9TSVpFX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1NFUV9TSVpFX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIwotIyBpZiBORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19NV0NDKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNlcSkgTkROQk9PU1RfUFBfU0VRX1NJWkVfSSgoc2VxKSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX0kocGFyKSBORE5CT09TVF9QUF9TRVFfU0laRV9JSSAjIyBwYXIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX0lJKHNlcSkgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX1NFUV9TSVpFXywgTkROQk9PU1RfUFBfU0VRX1NJWkVfMCAjIyBzZXEpCi0jIGVsaWYgTkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRURHKCkgfHwgTkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfTVNWQygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRShzZXEpIE5ETkJPT1NUX1BQX1NFUV9TSVpFX0koc2VxKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfSShzZXEpIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9TRVFfU0laRV8sIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzAgc2VxKQotIyBlbGlmIGRlZmluZWQoX19JQk1DX18pIHx8IGRlZmluZWQoX19JQk1DUFBfXykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNlcSkgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX1NFUV9TSVpFXywgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX1NFUV9TSVpFXzAsIHNlcSkpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNlcSkgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX1NFUV9TSVpFXywgTkROQk9PU1RfUFBfU0VRX1NJWkVfMCBzZXEpCi0jIGVuZGlmCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8wKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMihfKSBORE5CT09TVF9QUF9TRVFfU0laRV8zCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8zKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzQoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfNShfKSBORE5CT09TVF9QUF9TRVFfU0laRV82Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV82KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzcoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfOChfKSBORE5CT09TVF9QUF9TRVFfU0laRV85Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV85KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xMChfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTEoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEyKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xMyhfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTQoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE1KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xNihfKSBORE5CT09TVF9QUF9TRVFfU0laRV8xNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTcoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE4KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8xOShfKSBORE5CT09TVF9QUF9TRVFfU0laRV8yMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjAoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIxKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8yMihfKSBORE5CT09TVF9QUF9TRVFfU0laRV8yMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjMoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzI0KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzI1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8yNShfKSBORE5CT09TVF9QUF9TRVFfU0laRV8yNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjYoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzI3KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzI4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8yOChfKSBORE5CT09TVF9QUF9TRVFfU0laRV8yOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjkoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMzAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzMwKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzMxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8zMShfKSBORE5CT09TVF9QUF9TRVFfU0laRV8zMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMzIoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMzMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzMzKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzM0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8zNChfKSBORE5CT09TVF9QUF9TRVFfU0laRV8zNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMzUoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMzYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzM2KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzM3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV8zNyhfKSBORE5CT09TVF9QUF9TRVFfU0laRV8zOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMzgoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfMzkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzM5KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzQwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV80MChfKSBORE5CT09TVF9QUF9TRVFfU0laRV80MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfNDEoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfNDIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzQyKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzQzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV80MyhfKSBORE5CT09TVF9QUF9TRVFfU0laRV80NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfNDQoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfNDUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzQ1KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzQ2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV80NihfKSBORE5CT09TVF9QUF9TRVFfU0laRV80NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfNDcoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfNDgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzQ4KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzQ5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV80OShfKSBORE5CT09TVF9QUF9TRVFfU0laRV81MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfNTAoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfNTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzUxKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzUyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV81MihfKSBORE5CT09TVF9QUF9TRVFfU0laRV81MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfNTMoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfNTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzU0KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzU1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV81NShfKSBORE5CT09TVF9QUF9TRVFfU0laRV81NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfNTYoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfNTcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzU3KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzU4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV81OChfKSBORE5CT09TVF9QUF9TRVFfU0laRV81OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfNTkoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfNjAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzYwKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzYxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV82MShfKSBORE5CT09TVF9QUF9TRVFfU0laRV82MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfNjIoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfNjMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzYzKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzY0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV82NChfKSBORE5CT09TVF9QUF9TRVFfU0laRV82NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfNjUoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfNjYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzY2KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzY3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV82NyhfKSBORE5CT09TVF9QUF9TRVFfU0laRV82OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfNjgoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfNjkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzY5KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzcwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV83MChfKSBORE5CT09TVF9QUF9TRVFfU0laRV83MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfNzEoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfNzIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzcyKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzczCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV83MyhfKSBORE5CT09TVF9QUF9TRVFfU0laRV83NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfNzQoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfNzUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzc1KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzc2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV83NihfKSBORE5CT09TVF9QUF9TRVFfU0laRV83NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfNzcoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfNzgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzc4KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzc5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV83OShfKSBORE5CT09TVF9QUF9TRVFfU0laRV84MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfODAoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfODEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzgxKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzgyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV84MihfKSBORE5CT09TVF9QUF9TRVFfU0laRV84MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfODMoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfODQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzg0KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzg1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV84NShfKSBORE5CT09TVF9QUF9TRVFfU0laRV84NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfODYoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfODcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzg3KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzg4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV84OChfKSBORE5CT09TVF9QUF9TRVFfU0laRV84OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfODkoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfOTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzkwKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzkxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV85MShfKSBORE5CT09TVF9QUF9TRVFfU0laRV85MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfOTIoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfOTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzkzKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzk0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV85NChfKSBORE5CT09TVF9QUF9TRVFfU0laRV85NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfOTUoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfOTYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzk2KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzk3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV85NyhfKSBORE5CT09TVF9QUF9TRVFfU0laRV85OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfOTgoXykgTkROQk9PU1RfUFBfU0VRX1NJWkVfOTkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzk5KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEwMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTAwKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEwMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTAxKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEwMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTAyKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEwMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTAzKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEwNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTA0KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEwNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTA1KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEwNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTA2KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEwNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTA3KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEwOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTA4KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEwOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTA5KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzExMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTEwKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzExMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTExKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzExMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTEyKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzExMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTEzKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzExNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTE0KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzExNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTE1KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzExNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTE2KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzExNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTE3KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzExOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTE4KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzExOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTE5KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEyMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTIwKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEyMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTIxKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEyMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTIyKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEyMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTIzKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEyNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTI0KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEyNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTI1KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEyNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTI2KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEyNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTI3KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEyOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTI4KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEyOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTI5KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEzMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTMwKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEzMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTMxKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEzMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTMyKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEzMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTMzKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEzNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTM0KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEzNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTM1KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEzNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTM2KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEzNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTM3KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEzOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTM4KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzEzOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTM5KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE0MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTQwKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE0MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTQxKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE0MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTQyKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE0MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTQzKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE0NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTQ0KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE0NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTQ1KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE0NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTQ2KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE0NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTQ3KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE0OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTQ4KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE0OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTQ5KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE1MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTUwKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE1MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTUxKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE1MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTUyKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE1MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTUzKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE1NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTU0KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE1NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTU1KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE1NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTU2KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE1NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTU3KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE1OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTU4KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE1OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTU5KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE2MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTYwKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE2MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTYxKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE2MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTYyKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE2MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTYzKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE2NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTY0KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE2NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTY1KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE2NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTY2KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE2NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTY3KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE2OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTY4KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE2OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTY5KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE3MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTcwKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE3MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTcxKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE3MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTcyKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE3MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTczKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE3NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTc0KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE3NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTc1KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE3NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTc2KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE3NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTc3KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE3OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTc4KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE3OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTc5KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE4MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTgwKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE4MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTgxKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE4MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTgyKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE4MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTgzKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE4NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTg0KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE4NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTg1KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE4NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTg2KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE4NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTg3KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE4OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTg4KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE4OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTg5KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE5MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTkwKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE5MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTkxKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE5MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTkyKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE5MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTkzKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE5NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTk0KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE5NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTk1KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE5NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTk2KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE5NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTk3KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE5OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTk4KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzE5OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMTk5KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIwMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjAwKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIwMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjAxKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIwMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjAyKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIwMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjAzKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIwNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjA0KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIwNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjA1KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIwNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjA2KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIwNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjA3KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIwOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjA4KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIwOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjA5KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIxMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjEwKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIxMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjExKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIxMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjEyKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIxMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjEzKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIxNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjE0KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIxNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjE1KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIxNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjE2KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIxNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjE3KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIxOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjE4KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIxOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjE5KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIyMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjIwKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIyMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjIxKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIyMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjIyKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIyMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjIzKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIyNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjI0KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIyNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjI1KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIyNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjI2KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIyNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjI3KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIyOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjI4KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIyOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjI5KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIzMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjMwKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIzMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjMxKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIzMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjMyKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIzMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjMzKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIzNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjM0KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIzNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjM1KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIzNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjM2KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIzNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjM3KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIzOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjM4KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzIzOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjM5KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzI0MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjQwKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzI0MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjQxKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzI0MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjQyKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzI0MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjQzKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzI0NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjQ0KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzI0NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjQ1KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzI0NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjQ2KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzI0NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjQ3KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzI0OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjQ4KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzI0OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjQ5KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzI1MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjUwKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzI1MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjUxKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzI1MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjUyKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzI1MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjUzKF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzI1NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjU0KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzI1NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjU1KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzI1NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfMjU2KF8pIE5ETkJPT1NUX1BQX1NFUV9TSVpFXzI1NwotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMCAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xIDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzIgMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMyAzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV80IDQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzUgNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfNiA2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV83IDcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzggOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfOSA5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMCAxMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTEgMTEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzEyIDEyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMyAxMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTQgMTQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzE1IDE1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNiAxNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMTcgMTcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzE4IDE4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xOSAxOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMjAgMjAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzIxIDIxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMiAyMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMjMgMjMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzI0IDI0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yNSAyNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMjYgMjYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzI3IDI3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yOCAyOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMjkgMjkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzMwIDMwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8zMSAzMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMzIgMzIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzMzIDMzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8zNCAzNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMzUgMzUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzM2IDM2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8zNyAzNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfMzggMzgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzM5IDM5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV80MCA0MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfNDEgNDEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzQyIDQyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV80MyA0MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfNDQgNDQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzQ1IDQ1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV80NiA0NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfNDcgNDcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzQ4IDQ4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV80OSA0OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfNTAgNTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzUxIDUxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV81MiA1MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfNTMgNTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzU0IDU0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV81NSA1NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfNTYgNTYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzU3IDU3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV81OCA1OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfNTkgNTkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzYwIDYwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV82MSA2MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfNjIgNjIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzYzIDYzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV82NCA2NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfNjUgNjUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzY2IDY2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV82NyA2NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfNjggNjgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzY5IDY5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV83MCA3MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfNzEgNzEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzcyIDcyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV83MyA3MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfNzQgNzQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzc1IDc1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV83NiA3NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfNzcgNzcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzc4IDc4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV83OSA3OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfODAgODAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzgxIDgxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV84MiA4MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfODMgODMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzg0IDg0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV84NSA4NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfODYgODYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzg3IDg3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV84OCA4OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfODkgODkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzkwIDkwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV85MSA5MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfOTIgOTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzkzIDkzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV85NCA5NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfOTUgOTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzk2IDk2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV85NyA5NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NJWkVfTkROQk9PU1RfUFBfU0VRX1NJWkVfOTggOTgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TSVpFX05ETkJPT1NUX1BQX1NFUV9TSVpFXzk5IDk5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMDAgMTAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMDEgMTAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMDIgMTAyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMDMgMTAzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMDQgMTA0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMDUgMTA1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMDYgMTA2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMDcgMTA3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMDggMTA4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMDkgMTA5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMTAgMTEwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMTEgMTExCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMTIgMTEyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMTMgMTEzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMTQgMTE0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMTUgMTE1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMTYgMTE2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMTcgMTE3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMTggMTE4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMTkgMTE5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMjAgMTIwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMjEgMTIxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMjIgMTIyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMjMgMTIzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMjQgMTI0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMjUgMTI1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMjYgMTI2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMjcgMTI3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMjggMTI4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMjkgMTI5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMzAgMTMwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMzEgMTMxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMzIgMTMyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMzMgMTMzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMzQgMTM0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMzUgMTM1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMzYgMTM2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMzcgMTM3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMzggMTM4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xMzkgMTM5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNDAgMTQwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNDEgMTQxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNDIgMTQyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNDMgMTQzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNDQgMTQ0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNDUgMTQ1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNDYgMTQ2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNDcgMTQ3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNDggMTQ4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNDkgMTQ5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNTAgMTUwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNTEgMTUxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNTIgMTUyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNTMgMTUzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNTQgMTU0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNTUgMTU1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNTYgMTU2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNTcgMTU3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNTggMTU4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNTkgMTU5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNjAgMTYwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNjEgMTYxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNjIgMTYyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNjMgMTYzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNjQgMTY0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNjUgMTY1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNjYgMTY2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNjcgMTY3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNjggMTY4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNjkgMTY5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNzAgMTcwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNzEgMTcxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNzIgMTcyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNzMgMTczCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNzQgMTc0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNzUgMTc1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNzYgMTc2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNzcgMTc3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNzggMTc4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xNzkgMTc5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xODAgMTgwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xODEgMTgxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xODIgMTgyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xODMgMTgzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xODQgMTg0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xODUgMTg1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xODYgMTg2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xODcgMTg3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xODggMTg4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xODkgMTg5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xOTAgMTkwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xOTEgMTkxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xOTIgMTkyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xOTMgMTkzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xOTQgMTk0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xOTUgMTk1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xOTYgMTk2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xOTcgMTk3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xOTggMTk4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8xOTkgMTk5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMDAgMjAwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMDEgMjAxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMDIgMjAyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMDMgMjAzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMDQgMjA0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMDUgMjA1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMDYgMjA2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMDcgMjA3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMDggMjA4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMDkgMjA5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMTAgMjEwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMTEgMjExCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMTIgMjEyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMTMgMjEzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMTQgMjE0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMTUgMjE1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMTYgMjE2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMTcgMjE3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMTggMjE4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMTkgMjE5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMjAgMjIwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMjEgMjIxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMjIgMjIyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMjMgMjIzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMjQgMjI0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMjUgMjI1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMjYgMjI2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMjcgMjI3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMjggMjI4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMjkgMjI5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMzAgMjMwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMzEgMjMxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMzIgMjMyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMzMgMjMzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMzQgMjM0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMzUgMjM1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMzYgMjM2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMzcgMjM3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMzggMjM4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yMzkgMjM5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yNDAgMjQwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yNDEgMjQxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yNDIgMjQyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yNDMgMjQzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yNDQgMjQ0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yNDUgMjQ1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yNDYgMjQ2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yNDcgMjQ3Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yNDggMjQ4Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yNDkgMjQ5Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yNTAgMjUwCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yNTEgMjUxCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yNTIgMjUyCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yNTMgMjUzCi0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yNTQgMjU0Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yNTUgMjU1Ci0jIGRlZmluZSBORE5CT09TVF9QUF9TRVFfU0laRV9ORE5CT09TVF9QUF9TRVFfU0laRV8yNTYgMjU2Ci0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvc3Vic2VxLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9zdWJzZXEuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMTRlZTY2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9zdWJzZXEuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9TRVFfU1VCU0VRX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1NFUV9TVUJTRVFfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9maXJzdF9uLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9yZXN0X24uaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9TRVFfU1VCU0VRICovCi0jCi0jIGlmIH5ORE5CT09TVF9QUF9DT05GSUdfRkxBR1MoKSAmIE5ETkJPT1NUX1BQX0NPTkZJR19FREcoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1NVQlNFUShzZXEsIGksIGxlbikgTkROQk9PU1RfUFBfU0VRX0ZJUlNUX04obGVuLCBORE5CT09TVF9QUF9TRVFfUkVTVF9OKGksIHNlcSkpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TVUJTRVEoc2VxLCBpLCBsZW4pIE5ETkJPT1NUX1BQX1NFUV9TVUJTRVFfSShzZXEsIGksIGxlbikKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9TVUJTRVFfSShzZXEsIGksIGxlbikgTkROQk9PU1RfUFBfU0VRX0ZJUlNUX04obGVuLCBORE5CT09TVF9QUF9TRVFfUkVTVF9OKGksIHNlcSkpCi0jIGVuZGlmCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvdHJhbnNmb3JtLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS90cmFuc2Zvcm0uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMDRlYjUyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS90cmFuc2Zvcm0uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9TRVFfVFJBTlNGT1JNX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1NFUV9UUkFOU0ZPUk1fSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9mb2xkX2xlZnQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL3NlcS5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9lbGVtLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL3JlbS5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX1NFUV9UUkFOU0ZPUk0gKi8KLSMKLSMgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfVFJBTlNGT1JNKG9wLCBkYXRhLCBzZXEpIE5ETkJPT1NUX1BQX1NFUV9UQUlMKE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMywgMiwgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVChORE5CT09TVF9QUF9TRVFfVFJBTlNGT1JNX08sIChvcCwgZGF0YSwgKG5pbCkpLCBzZXEpKSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1RSQU5TRk9STShvcCwgZGF0YSwgc2VxKSBORE5CT09TVF9QUF9TRVFfVFJBTlNGT1JNX0kob3AsIGRhdGEsIHNlcSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9UUkFOU0ZPUk1fSShvcCwgZGF0YSwgc2VxKSBORE5CT09TVF9QUF9TRVFfVEFJTChORE5CT09TVF9QUF9UVVBMRV9FTEVNKDMsIDIsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlQoTkROQk9PU1RfUFBfU0VRX1RSQU5TRk9STV9PLCAob3AsIGRhdGEsIChuaWwpKSwgc2VxKSkpCi0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX1NUUklDVCgpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TRVFfVFJBTlNGT1JNX08ocywgc3RhdGUsIGVsZW0pIE5ETkJPT1NUX1BQX1NFUV9UUkFOU0ZPUk1fT19JTShzLCBORE5CT09TVF9QUF9UVVBMRV9SRU1fMyBzdGF0ZSwgZWxlbSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9UUkFOU0ZPUk1fT19JTShzLCBpbSwgZWxlbSkgTkROQk9PU1RfUFBfU0VRX1RSQU5TRk9STV9PX0kocywgaW0sIGVsZW0pCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9UUkFOU0ZPUk1fTyhzLCBzdGF0ZSwgZWxlbSkgTkROQk9PU1RfUFBfU0VRX1RSQU5TRk9STV9PX0kocywgTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgzLCAwLCBzdGF0ZSksIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oMywgMSwgc3RhdGUpLCBORE5CT09TVF9QUF9UVVBMRV9FTEVNKDMsIDIsIHN0YXRlKSwgZWxlbSkKLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9UUkFOU0ZPUk1fT19JKHMsIG9wLCBkYXRhLCByZXMsIGVsZW0pIChvcCwgZGF0YSwgcmVzIChvcChzLCBkYXRhLCBlbGVtKSkpCi0jCi0jIC8qIE5ETkJPT1NUX1BQX1NFUV9UUkFOU0ZPUk1fUyAqLwotIwotIyBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfRURHKCkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9UUkFOU0ZPUk1fUyhzLCBvcCwgZGF0YSwgc2VxKSBORE5CT09TVF9QUF9TRVFfVEFJTChORE5CT09TVF9QUF9UVVBMRV9FTEVNKDMsIDIsIE5ETkJPT1NUX1BQX1NFUV9GT0xEX0xFRlRfICMjIHMoTkROQk9PU1RfUFBfU0VRX1RSQU5TRk9STV9PLCAob3AsIGRhdGEsIChuaWwpKSwgc2VxKSkpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NFUV9UUkFOU0ZPUk1fUyhzLCBvcCwgZGF0YSwgc2VxKSBORE5CT09TVF9QUF9TRVFfVFJBTlNGT1JNX1NfSShzLCBvcCwgZGF0YSwgc2VxKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0VRX1RSQU5TRk9STV9TX0kocywgb3AsIGRhdGEsIHNlcSkgTkROQk9PU1RfUFBfU0VRX1RBSUwoTkROQk9PU1RfUFBfVFVQTEVfRUxFTSgzLCAyLCBORE5CT09TVF9QUF9TRVFfRk9MRF9MRUZUXyAjIyBzKE5ETkJPT1NUX1BQX1NFUV9UUkFOU0ZPUk1fTywgKG9wLCBkYXRhLCAobmlsKSksIHNlcSkpKQotIyBlbmRpZgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2xvdC9kZXRhaWwvY291bnRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zbG90L2RldGFpbC9jb3VudGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDI4ZTQ3OC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zbG90L2RldGFpbC9jb3VudGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI2OSArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDA1LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgICAgICAqCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9WQUxVRSBORE5CT09TVF9QUF9DT1VOVEVSICsgMQotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2xvdC9kZXRhaWwvc2hhcmVkLmhwcD4KLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfQ09VTlRFUgotIwotIyB1bmRlZiBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzEKLSMgdW5kZWYgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8yCi0jIHVuZGVmIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMwotIyB1bmRlZiBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzQKLSMgdW5kZWYgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF81Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNgotIyB1bmRlZiBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzcKLSMgdW5kZWYgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF84Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfOQotIyB1bmRlZiBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzEwCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzEwIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8xMCAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMTAgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzEwIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8xMCA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMTAgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzEwIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8xMCA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMTAgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzEwIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF85IDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzkgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfOSAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF85IDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzkgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfOSA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF85IDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzkgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfOSA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF85IDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF84IDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzggMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfOCAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF84IDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzggNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfOCA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF84IDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzggNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfOCA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF84IDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF83IDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzcgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNyAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF83IDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzcgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNyA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF83IDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzcgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNyA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF83IDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF82IDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzYgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNiAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF82IDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzYgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNiA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF82IDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzYgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNiA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF82IDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF81IDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzUgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNSAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF81IDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzUgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNSA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF81IDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzUgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNSA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF81IDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF80IDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzQgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNCAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF80IDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzQgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNCA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF80IDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzQgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNCA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF80IDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8zIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzMgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMyAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8zIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzMgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMyA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8zIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzMgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMyA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8zIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8yIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzIgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMiAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8yIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzIgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMiA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8yIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzIgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMiA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8yIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8xIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzEgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMSAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8xIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzEgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMSA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8xIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzEgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMSA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8xIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8xMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUiBORE5CT09TVF9QUF9TTE9UX0NDXzEwKE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMTAsIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfOSwgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF84LCBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzcsIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNiwgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF81LCBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzQsIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMywgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8yLCBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF85Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSIE5ETkJPT1NUX1BQX1NMT1RfQ0NfOShORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzksIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfOCwgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF83LCBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzYsIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNSwgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF80LCBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzMsIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMiwgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUiBORE5CT09TVF9QUF9TTE9UX0NDXzgoTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF84LCBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzcsIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNiwgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF81LCBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzQsIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMywgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8yLCBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF83Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSIE5ETkJPT1NUX1BQX1NMT1RfQ0NfNyhORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzcsIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNiwgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF81LCBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzQsIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMywgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8yLCBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF82Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSIE5ETkJPT1NUX1BQX1NMT1RfQ0NfNihORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzYsIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNSwgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF80LCBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzMsIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMiwgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUiBORE5CT09TVF9QUF9TTE9UX0NDXzUoTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF81LCBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzQsIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMywgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8yLCBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF80Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSIE5ETkJPT1NUX1BQX1NMT1RfQ0NfNChORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzQsIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMywgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8yLCBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8zCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSIE5ETkJPT1NUX1BQX1NMT1RfQ0NfMyhORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzMsIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMiwgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX0NPVU5URVJfRElHSVRfMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfQ09VTlRFUiBORE5CT09TVF9QUF9TTE9UX0NDXzIoTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8yLCBORE5CT09TVF9QUF9DT1VOVEVSX0RJR0lUXzEpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVIgTkROQk9PU1RfUFBfQ09VTlRFUl9ESUdJVF8xCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zbG90L2RldGFpbC9kZWYuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2xvdC9kZXRhaWwvZGVmLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDU4NDk3MS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zbG90L2RldGFpbC9kZWYuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9TTE9UX0RFVEFJTF9ERUZfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfU0xPVF9ERVRBSUxfREVGX0hQUAotIwotIyAvKiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF94ICovCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX09GRlNFVF8xMCh4KSAoeCkgJSAxMDAwMDAwMDAwVUwKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzkoeCkgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfMTAoeCkgJSAxMDAwMDAwMDBVTAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfOCh4KSBORE5CT09TVF9QUF9TTE9UX09GRlNFVF85KHgpICUgMTAwMDAwMDBVTAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfNyh4KSBORE5CT09TVF9QUF9TTE9UX09GRlNFVF84KHgpICUgMTAwMDAwMFVMCi0jIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX09GRlNFVF82KHgpIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzcoeCkgJSAxMDAwMDBVTAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfNSh4KSBORE5CT09TVF9QUF9TTE9UX09GRlNFVF82KHgpICUgMTAwMDBVTAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfNCh4KSBORE5CT09TVF9QUF9TTE9UX09GRlNFVF81KHgpICUgMTAwMFVMCi0jIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX09GRlNFVF8zKHgpIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzQoeCkgJSAxMDBVTAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfMih4KSBORE5CT09TVF9QUF9TTE9UX09GRlNFVF8zKHgpICUgMTBVTAotIwotIyAvKiBORE5CT09TVF9QUF9TTE9UX0NDX3ggKi8KLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfQ0NfMihhLCBiKSBORE5CT09TVF9QUF9TTE9UX0NDXzJfRChhLCBiKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9DQ18zKGEsIGIsIGMpIE5ETkJPT1NUX1BQX1NMT1RfQ0NfM19EKGEsIGIsIGMpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX0NDXzQoYSwgYiwgYywgZCkgTkROQk9PU1RfUFBfU0xPVF9DQ180X0QoYSwgYiwgYywgZCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfQ0NfNShhLCBiLCBjLCBkLCBlKSBORE5CT09TVF9QUF9TTE9UX0NDXzVfRChhLCBiLCBjLCBkLCBlKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9DQ182KGEsIGIsIGMsIGQsIGUsIGYpIE5ETkJPT1NUX1BQX1NMT1RfQ0NfNl9EKGEsIGIsIGMsIGQsIGUsIGYpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX0NDXzcoYSwgYiwgYywgZCwgZSwgZiwgZykgTkROQk9PU1RfUFBfU0xPVF9DQ183X0QoYSwgYiwgYywgZCwgZSwgZiwgZykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfQ0NfOChhLCBiLCBjLCBkLCBlLCBmLCBnLCBoKSBORE5CT09TVF9QUF9TTE9UX0NDXzhfRChhLCBiLCBjLCBkLCBlLCBmLCBnLCBoKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9DQ185KGEsIGIsIGMsIGQsIGUsIGYsIGcsIGgsIGkpIE5ETkJPT1NUX1BQX1NMT1RfQ0NfOV9EKGEsIGIsIGMsIGQsIGUsIGYsIGcsIGgsIGkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX0NDXzEwKGEsIGIsIGMsIGQsIGUsIGYsIGcsIGgsIGksIGopIE5ETkJPT1NUX1BQX1NMT1RfQ0NfMTBfRChhLCBiLCBjLCBkLCBlLCBmLCBnLCBoLCBpLCBqKQotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9DQ18yX0QoYSwgYikgYSAjIyBiCi0jIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX0NDXzNfRChhLCBiLCBjKSBhICMjIGIgIyMgYwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9DQ180X0QoYSwgYiwgYywgZCkgYSAjIyBiICMjIGMgIyMgZAotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9DQ181X0QoYSwgYiwgYywgZCwgZSkgYSAjIyBiICMjIGMgIyMgZCAjIyBlCi0jIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX0NDXzZfRChhLCBiLCBjLCBkLCBlLCBmKSBhICMjIGIgIyMgYyAjIyBkICMjIGUgIyMgZgotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9DQ183X0QoYSwgYiwgYywgZCwgZSwgZiwgZykgYSAjIyBiICMjIGMgIyMgZCAjIyBlICMjIGYgIyMgZwotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9DQ184X0QoYSwgYiwgYywgZCwgZSwgZiwgZywgaCkgYSAjIyBiICMjIGMgIyMgZCAjIyBlICMjIGYgIyMgZyAjIyBoCi0jIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX0NDXzlfRChhLCBiLCBjLCBkLCBlLCBmLCBnLCBoLCBpKSBhICMjIGIgIyMgYyAjIyBkICMjIGUgIyMgZiAjIyBnICMjIGggIyMgaQotIyBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9DQ18xMF9EKGEsIGIsIGMsIGQsIGUsIGYsIGcsIGgsIGksIGopIGEgIyMgYiAjIyBjICMjIGQgIyMgZSAjIyBmICMjIGcgIyMgaCAjIyBpICMjIGoKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3Nsb3QvZGV0YWlsL3NoYXJlZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zbG90L2RldGFpbC9zaGFyZWQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzhkM2IwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3Nsb3QvZGV0YWlsL3NoYXJlZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNDcgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BQX1ZBTFVFCi0jICAgIGVycm9yIE5ETkJPT1NUX1BQX0VSUk9SOiAgTkROQk9PU1RfUFBfVkFMVUUgaXMgbm90IGRlZmluZWQKLSMgZW5kaWYKLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzgKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwCi0jCi0jIGlmIChORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwMDAwMDAwVUwgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwIDAKLSMgZWxpZiAoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDAwMDAwMFVMID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCAxCi0jIGVsaWYgKE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDAwMDAwMDBVTCA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgMgotIyBlbGlmIChORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwMDAwMDAwVUwgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwIDMKLSMgZWxpZiAoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDAwMDAwMFVMID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA0Ci0jIGVsaWYgKE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDAwMDAwMDBVTCA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgNQotIyBlbGlmIChORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwMDAwMDAwVUwgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwIDYKLSMgZWxpZiAoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDAwMDAwMFVMID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA3Ci0jIGVsaWYgKE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDAwMDAwMDBVTCA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgOAotIyBlbGlmIChORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwMDAwMDAwVUwgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfMTAoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDAwMDAwVUwgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzEwKE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDAwMDAwMFVMID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85IDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF8xMChORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwMDAwMDBVTCA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfMTAoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDAwMDAwVUwgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzEwKE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDAwMDAwMFVMID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85IDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF8xMChORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwMDAwMDBVTCA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfMTAoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDAwMDAwVUwgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzEwKE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDAwMDAwMFVMID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85IDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF8xMChORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwMDAwMDBVTCA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfMTAoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDAwMDAwVUwgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF85KE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDAwMDAwVUwgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzkoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDAwMDBVTCA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfOShORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwMDAwMFVMID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84IDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF85KE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDAwMDAwVUwgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzkoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDAwMDBVTCA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfOShORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwMDAwMFVMID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84IDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF85KE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDAwMDAwVUwgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzkoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDAwMDBVTCA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfOShORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwMDAwMFVMID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84IDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF85KE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDAwMDAwVUwgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF84KE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDAwMDBVTCA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfOChORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwMDAwVUwgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzgoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDAwMFVMID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83IDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF84KE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDAwMDBVTCA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfOChORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwMDAwVUwgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzgoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDAwMFVMID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83IDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF84KE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDAwMDBVTCA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfOChORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwMDAwVUwgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzgoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDAwMFVMID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83IDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF84KE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDAwMDBVTCA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzcoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDAwVUwgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzcoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDAwVUwgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzcoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDAwVUwgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzcoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDAwVUwgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzcoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDAwVUwgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzcoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDAwVUwgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzcoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDAwVUwgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzcoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDAwVUwgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzcoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDAwVUwgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzcoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDAwVUwgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF82KE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDAwVUwgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzYoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDBVTCA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfNihORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwMFVMID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81IDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF82KE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDAwVUwgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzYoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDBVTCA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfNihORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwMFVMID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81IDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF82KE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDAwVUwgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzYoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMDBVTCA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfNihORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwMFVMID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81IDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF82KE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDAwVUwgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF81KE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDBVTCA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfNShORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwVUwgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzUoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMFVMID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80IDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF81KE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDBVTCA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfNShORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwVUwgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzUoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMFVMID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80IDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF81KE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDBVTCA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfNShORE5CT09TVF9QUF9WQUxVRSkgLyAxMDAwVUwgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzUoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwMFVMID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80IDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF81KE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwMDBVTCA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzQoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwVUwgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzQoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwVUwgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzQoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwVUwgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzQoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwVUwgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzQoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwVUwgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzQoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwVUwgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzQoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwVUwgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzQoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwVUwgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzQoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwVUwgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzQoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTAwVUwgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF8zKE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwVUwgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzMoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTBVTCA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfMyhORE5CT09TVF9QUF9WQUxVRSkgLyAxMFVMID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF8zKE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwVUwgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzMoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTBVTCA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfMyhORE5CT09TVF9QUF9WQUxVRSkgLyAxMFVMID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF8zKE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwVUwgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzMoTkROQk9PU1RfUFBfVkFMVUUpIC8gMTBVTCA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfMyhORE5CT09TVF9QUF9WQUxVRSkgLyAxMFVMID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF8zKE5ETkJPT1NUX1BQX1ZBTFVFKSAvIDEwVUwgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF8yKE5ETkJPT1NUX1BQX1ZBTFVFKSA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfMihORE5CT09TVF9QUF9WQUxVRSkgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzIoTkROQk9PU1RfUFBfVkFMVUUpID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF8yKE5ETkJPT1NUX1BQX1ZBTFVFKSA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfMihORE5CT09TVF9QUF9WQUxVRSkgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzIoTkROQk9PU1RfUFBfVkFMVUUpID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF8yKE5ETkJPT1NUX1BQX1ZBTFVFKSA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9PRkZTRVRfMihORE5CT09TVF9QUF9WQUxVRSkgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfT0ZGU0VUXzIoTkROQk9PU1RfUFBfVkFMVUUpID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX09GRlNFVF8yKE5ETkJPT1NUX1BQX1ZBTFVFKSA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA5Ci0jIGVuZGlmCi0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX1ZBTFVFCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zbG90L2RldGFpbC9zbG90MS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zbG90L2RldGFpbC9zbG90MS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlNzI3MjYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2xvdC9kZXRhaWwvc2xvdDEuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjY3ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zbG90L2RldGFpbC9zaGFyZWQuaHBwPgotIwotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UXzEKLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzEKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzIKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzMKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzQKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzUKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzYKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzcKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzgKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzkKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzEwCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMTAgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMTAgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMTAgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMTAgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMTAgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMTAgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMTAgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMTAgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMTAgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMTAgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfOSAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzkgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF85IDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfOSAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzkgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF85IDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfOSA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzkgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF85IDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfOSA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF84IDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfOCAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzggMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF84IDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfOCA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzggNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF84IDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfOCA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzggOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF84IDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzcgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF83IDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNyAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzcgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF83IDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNyA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzcgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF83IDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNyA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzcgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNiAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzYgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF82IDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNiAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzYgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF82IDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNiA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzYgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF82IDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNiA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF81IDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNSAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzUgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF81IDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNSA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzUgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF81IDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNSA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzUgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF81IDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzQgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF80IDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNCAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzQgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF80IDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNCA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzQgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF80IDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNCA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzQgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMyAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzMgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8zIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMyAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzMgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8zIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMyA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzMgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8zIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMyA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8yIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMiAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzIgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8yIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMiA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzIgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8yIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMiA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzIgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8yIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzEgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8xIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMSAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzEgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8xIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMSA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzEgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8xIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMSA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzEgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMTAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMSgpIE5ETkJPT1NUX1BQX1NMT1RfQ0NfMTAoTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzEwLCBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfOSwgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzgsIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF83LCBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNiwgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzUsIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF80LCBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMywgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzIsIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF85Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzEoKSBORE5CT09TVF9QUF9TTE9UX0NDXzkoTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzksIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF84LCBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNywgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzYsIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF81LCBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNCwgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzMsIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8yLCBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xKCkgTkROQk9PU1RfUFBfU0xPVF9DQ184KE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF84LCBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNywgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzYsIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF81LCBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNCwgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzMsIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8yLCBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xKCkgTkROQk9PU1RfUFBfU0xPVF9DQ183KE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF83LCBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNiwgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzUsIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF80LCBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMywgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzIsIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF82Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzEoKSBORE5CT09TVF9QUF9TTE9UX0NDXzYoTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzYsIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF81LCBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNCwgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzMsIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8yLCBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xKCkgTkROQk9PU1RfUFBfU0xPVF9DQ181KE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF81LCBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNCwgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzMsIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8yLCBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xKCkgTkROQk9PU1RfUFBfU0xPVF9DQ180KE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF80LCBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMywgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzIsIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8zCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzEoKSBORE5CT09TVF9QUF9TTE9UX0NDXzMoTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzMsIE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8yLCBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xKCkgTkROQk9PU1RfUFBfU0xPVF9DQ18yKE5ETkJPT1NUX1BQX1NMT1RfMV9ESUdJVF8yLCBORE5CT09TVF9QUF9TTE9UXzFfRElHSVRfMSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8xKCkgTkROQk9PU1RfUFBfU0xPVF8xX0RJR0lUXzEKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3Nsb3QvZGV0YWlsL3Nsb3QyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3Nsb3QvZGV0YWlsL3Nsb3QyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODQ5OTk3ZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zbG90L2RldGFpbC9zbG90Mi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNjcgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3Nsb3QvZGV0YWlsL3NoYXJlZC5ocHA+Ci0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX1NMT1RfMgotIwotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMQotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMgotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMwotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNAotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNQotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNgotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNwotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfOAotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfOQotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMTAKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8xMCAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8xMCAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8xMCAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8xMCAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8xMCA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8xMCA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8xMCA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8xMCA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8xMCA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8xMCA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF85IDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfOSAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzkgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF85IDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfOSA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzkgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF85IDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfOSA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzkgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF85IDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzggMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF84IDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfOCAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzggMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF84IDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfOCA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzggNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF84IDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfOCA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzggOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNyAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzcgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF83IDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNyAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzcgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF83IDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNyA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzcgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF83IDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNyA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF82IDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNiAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzYgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF82IDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNiA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzYgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF82IDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNiA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzYgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF82IDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzUgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF81IDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNSAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzUgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF81IDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNSA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzUgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF81IDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNSA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzUgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNCAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzQgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF80IDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNCAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzQgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF80IDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNCA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzQgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF80IDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNCA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8zIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMyAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzMgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8zIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMyA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzMgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8zIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMyA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzMgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8zIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzIgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8yIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMiAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzIgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8yIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMiA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzIgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8yIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMiA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzIgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMSAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzEgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8xIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMSAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzEgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8xIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMSA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzEgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8xIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMSA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8xMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8yKCkgTkROQk9PU1RfUFBfU0xPVF9DQ18xMChORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMTAsIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF85LCBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfOCwgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzcsIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF82LCBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNSwgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzQsIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8zLCBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMiwgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMigpIE5ETkJPT1NUX1BQX1NMT1RfQ0NfOShORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfOSwgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzgsIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF83LCBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNiwgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzUsIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF80LCBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMywgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzIsIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF84Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzIoKSBORE5CT09TVF9QUF9TTE9UX0NDXzgoTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzgsIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF83LCBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNiwgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzUsIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF80LCBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMywgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzIsIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF83Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzIoKSBORE5CT09TVF9QUF9TTE9UX0NDXzcoTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzcsIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF82LCBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNSwgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzQsIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8zLCBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMiwgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMigpIE5ETkJPT1NUX1BQX1NMT1RfQ0NfNihORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfNiwgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzUsIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF80LCBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMywgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzIsIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF81Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzIoKSBORE5CT09TVF9QUF9TTE9UX0NDXzUoTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzUsIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF80LCBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMywgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzIsIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF80Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzIoKSBORE5CT09TVF9QUF9TTE9UX0NDXzQoTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzQsIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8zLCBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMiwgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMigpIE5ETkJPT1NUX1BQX1NMT1RfQ0NfMyhORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMywgTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzIsIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8yCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzIoKSBORE5CT09TVF9QUF9TTE9UX0NDXzIoTkROQk9PU1RfUFBfU0xPVF8yX0RJR0lUXzIsIE5ETkJPT1NUX1BQX1NMT1RfMl9ESUdJVF8xKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzIoKSBORE5CT09TVF9QUF9TTE9UXzJfRElHSVRfMQotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2xvdC9kZXRhaWwvc2xvdDMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2xvdC9kZXRhaWwvc2xvdDMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMDM1MDNmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3Nsb3QvZGV0YWlsL3Nsb3QzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI2NyArMCwwIEBACi0jIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqICAgICAoQykgQ29weXJpZ2h0IFBhdWwgTWVuc29uaWRlcyAyMDAyLgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqICAgICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2xvdC9kZXRhaWwvc2hhcmVkLmhwcD4KLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF8zCi0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8xCi0jIHVuZGVmIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8yCi0jIHVuZGVmIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8zCi0jIHVuZGVmIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF80Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF81Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF82Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF83Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF84Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF85Ci0jIHVuZGVmIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8xMAotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzEwIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzEwIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzEwIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzEwIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzEwIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzEwIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzEwIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzEwIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzEwIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMTAgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzEwIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzkgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF85IDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfOSAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzkgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF85IDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfOSA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzkgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF85IDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfOSA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzkgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfOCAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzggMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF84IDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfOCAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzggNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF84IDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfOCA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzggNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF84IDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfOCA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF83IDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNyAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzcgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF83IDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNyA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzcgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF83IDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNyA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzcgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF83IDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzYgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF82IDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNiAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzYgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF82IDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNiA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzYgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF82IDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNiA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzYgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNSAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzUgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF81IDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNSAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzUgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF81IDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNSA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzUgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF81IDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNSA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF80IDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNCAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzQgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF80IDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNCA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzQgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF80IDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNCA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzQgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF80IDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzMgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8zIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMyAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzMgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8zIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMyA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzMgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8zIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMyA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzMgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMiAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzIgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8yIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMiAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzIgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8yIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMiA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzIgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8yIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMiA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8xIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMSAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzEgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8xIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMSA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzEgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8xIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMSA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzEgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8xIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzEwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzMoKSBORE5CT09TVF9QUF9TTE9UX0NDXzEwKE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8xMCwgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzksIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF84LCBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNywgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzYsIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF81LCBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNCwgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzMsIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8yLCBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zKCkgTkROQk9PU1RfUFBfU0xPVF9DQ185KE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF85LCBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfOCwgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzcsIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF82LCBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNSwgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzQsIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8zLCBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMiwgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMygpIE5ETkJPT1NUX1BQX1NMT1RfQ0NfOChORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfOCwgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzcsIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF82LCBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNSwgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzQsIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8zLCBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMiwgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMygpIE5ETkJPT1NUX1BQX1NMT1RfQ0NfNyhORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNywgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzYsIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF81LCBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNCwgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzMsIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8yLCBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zKCkgTkROQk9PU1RfUFBfU0xPVF9DQ182KE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF82LCBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNSwgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzQsIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8zLCBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMiwgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMygpIE5ETkJPT1NUX1BQX1NMT1RfQ0NfNShORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNSwgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzQsIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8zLCBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMiwgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMygpIE5ETkJPT1NUX1BQX1NMT1RfQ0NfNChORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfNCwgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzMsIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8yLCBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF8zKCkgTkROQk9PU1RfUFBfU0xPVF9DQ18zKE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8zLCBORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMiwgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMygpIE5ETkJPT1NUX1BQX1NMT1RfQ0NfMihORE5CT09TVF9QUF9TTE9UXzNfRElHSVRfMiwgTkROQk9PU1RfUFBfU0xPVF8zX0RJR0lUXzEpCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfMygpIE5ETkJPT1NUX1BQX1NMT1RfM19ESUdJVF8xCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zbG90L2RldGFpbC9zbG90NC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zbG90L2RldGFpbC9zbG90NC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc4MDE3YTIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2xvdC9kZXRhaWwvc2xvdDQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjY3ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zbG90L2RldGFpbC9zaGFyZWQuaHBwPgotIwotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UXzQKLSMKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzEKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzIKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzMKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzQKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzUKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzYKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzcKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzgKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzkKLSMgdW5kZWYgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzEwCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMTAgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMTAgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMTAgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMTAgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMTAgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMTAgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMTAgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMTAgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMTAgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xMCA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMTAgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfOSAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzkgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF85IDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfOSAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzkgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF85IDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfOSA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzkgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF85IDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfOSA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF84IDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfOCAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzggMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF84IDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfOCA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzggNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF84IDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfOCA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzggOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF84IDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzcgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF83IDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNyAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzcgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF83IDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNyA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzcgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF83IDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNyA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzcgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNiAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzYgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF82IDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNiAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzYgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF82IDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNiA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzYgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF82IDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNiA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF81IDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNSAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzUgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF81IDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNSA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzUgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF81IDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNSA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzUgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF81IDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzQgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF80IDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNCAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzQgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF80IDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNCA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzQgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF80IDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNCA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzQgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMyAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzMgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8zIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMyAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzMgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8zIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMyA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzMgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8zIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMyA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8yIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMiAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzIgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8yIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMiA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzIgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8yIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMiA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzIgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8yIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzEgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8xIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMSAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzEgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8xIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMSA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzEgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8xIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMSA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzEgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMTAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNCgpIE5ETkJPT1NUX1BQX1NMT1RfQ0NfMTAoTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzEwLCBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfOSwgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzgsIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF83LCBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNiwgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzUsIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF80LCBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMywgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzIsIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF85Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzQoKSBORE5CT09TVF9QUF9TTE9UX0NDXzkoTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzksIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF84LCBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNywgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzYsIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF81LCBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNCwgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzMsIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8yLCBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80KCkgTkROQk9PU1RfUFBfU0xPVF9DQ184KE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF84LCBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNywgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzYsIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF81LCBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNCwgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzMsIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8yLCBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80KCkgTkROQk9PU1RfUFBfU0xPVF9DQ183KE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF83LCBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNiwgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzUsIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF80LCBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMywgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzIsIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF82Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzQoKSBORE5CT09TVF9QUF9TTE9UX0NDXzYoTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzYsIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF81LCBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNCwgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzMsIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8yLCBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80KCkgTkROQk9PU1RfUFBfU0xPVF9DQ181KE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF81LCBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNCwgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzMsIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8yLCBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80KCkgTkROQk9PU1RfUFBfU0xPVF9DQ180KE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF80LCBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMywgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzIsIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8zCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzQoKSBORE5CT09TVF9QUF9TTE9UX0NDXzMoTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzMsIE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8yLCBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMSkKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80KCkgTkROQk9PU1RfUFBfU0xPVF9DQ18yKE5ETkJPT1NUX1BQX1NMT1RfNF9ESUdJVF8yLCBORE5CT09TVF9QUF9TTE9UXzRfRElHSVRfMSkKLSMgZWxzZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF80KCkgTkROQk9PU1RfUFBfU0xPVF80X0RJR0lUXzEKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3Nsb3QvZGV0YWlsL3Nsb3Q1LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3Nsb3QvZGV0YWlsL3Nsb3Q1LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTA5ODQ1OS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci9zbG90L2RldGFpbC9zbG90NS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNjcgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAwMi4KLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3Nsb3QvZGV0YWlsL3NoYXJlZC5ocHA+Ci0jCi0jIHVuZGVmIE5ETkJPT1NUX1BQX1NMT1RfNQotIwotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMQotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMgotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMwotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNAotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNQotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNgotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNwotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfOAotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfOQotIyB1bmRlZiBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMTAKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8xMCAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8xMCAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8xMCAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8xMCAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8xMCA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8xMCA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8xMCA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8xMCA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8xMCA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEwID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8xMCA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF85IDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfOSAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzkgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF85IDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfOSA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzkgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF85IDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOSA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfOSA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzkgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzkgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF85ID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF85IDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzggMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF84IDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfOCAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzggMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF84IDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfOCA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzggNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF84ID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF84IDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfOCA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfOCA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzggPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzggOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNyAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzcgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF83IDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNyAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzcgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF83IDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNyA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzcgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzcgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF83ID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF83IDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNyA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNyA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF82IDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNiAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzYgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF82IDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNiA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzYgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF82IDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNiA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNiA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzYgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzYgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF82ID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF82IDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzUgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF81IDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNSAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzUgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF81IDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNSA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzUgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF81ID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF81IDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNSA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNSA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzUgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzUgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNCAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzQgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF80IDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNCAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzQgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF80IDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNCA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzQgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzQgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF80ID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF80IDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfNCA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNCA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8zIDAKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSAxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMyAxCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzMgMgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8zIDMKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMyA0Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzMgNQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8zIDYKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMyA9PSA3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMyA3Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzMgPT0gOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzMgOAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8zID09IDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8zIDkKLSMgZW5kaWYKLSMKLSMgaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzIgMAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8yIDEKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSAyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMiAyCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzIgMwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8yIDQKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMiA1Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzIgNgotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8yID09IDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8yIDcKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMiA9PSA4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMiA4Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzIgPT0gOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzIgOQotIyBlbmRpZgotIwotIyBpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMSAwCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzEgMQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8xIDIKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSAzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMSAzCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzEgNAotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8xIDUKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMSA2Ci0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF9URU1QXzEgPT0gNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzEgNwotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfVEVNUF8xID09IDgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8xIDgKLSMgZWxpZiBORE5CT09TVF9QUF9TTE9UX1RFTVBfMSA9PSA5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMSA5Ci0jIGVuZGlmCi0jCi0jIGlmIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8xMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU0xPVF81KCkgTkROQk9PU1RfUFBfU0xPVF9DQ18xMChORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMTAsIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF85LCBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfOCwgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzcsIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF82LCBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNSwgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzQsIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8zLCBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMiwgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNSgpIE5ETkJPT1NUX1BQX1NMT1RfQ0NfOShORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfOSwgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzgsIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF83LCBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNiwgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzUsIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF80LCBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMywgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzIsIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF84Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzUoKSBORE5CT09TVF9QUF9TTE9UX0NDXzgoTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzgsIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF83LCBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNiwgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzUsIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF80LCBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMywgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzIsIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF83Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzUoKSBORE5CT09TVF9QUF9TTE9UX0NDXzcoTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzcsIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF82LCBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNSwgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzQsIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8zLCBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMiwgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNSgpIE5ETkJPT1NUX1BQX1NMT1RfQ0NfNihORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfNiwgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzUsIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF80LCBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMywgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzIsIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF81Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzUoKSBORE5CT09TVF9QUF9TTE9UX0NDXzUoTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzUsIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF80LCBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMywgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzIsIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF80Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzUoKSBORE5CT09TVF9QUF9TTE9UX0NDXzQoTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzQsIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8zLCBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMiwgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzEpCi0jIGVsaWYgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NMT1RfNSgpIE5ETkJPT1NUX1BQX1NMT1RfQ0NfMyhORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMywgTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzIsIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8xKQotIyBlbGlmIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8yCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzUoKSBORE5CT09TVF9QUF9TTE9UX0NDXzIoTkROQk9PU1RfUFBfU0xPVF81X0RJR0lUXzIsIE5ETkJPT1NUX1BQX1NMT1RfNV9ESUdJVF8xKQotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TTE9UXzUoKSBORE5CT09TVF9QUF9TTE9UXzVfRElHSVRfMQotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2xvdC9zbG90LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3Nsb3Qvc2xvdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2NjIyYmMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2xvdC9zbG90LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDIuCi0jICAqICAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0jICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfU0xPVF9TTE9UX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1NMT1RfU0xPVF9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zbG90L2RldGFpbC9kZWYuaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9BU1NJR05fU0xPVCAqLwotIwotIyBkZWZpbmUgTkROQk9PU1RfUFBfQVNTSUdOX1NMT1QoaSkgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX0FTU0lHTl9TTE9UXywgaSkKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0FTU0lHTl9TTE9UXzEgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zbG90L2RldGFpbC9zbG90MS5ocHA+Ci0jIGRlZmluZSBORE5CT09TVF9QUF9BU1NJR05fU0xPVF8yIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2xvdC9kZXRhaWwvc2xvdDIuaHBwPgotIyBkZWZpbmUgTkROQk9PU1RfUFBfQVNTSUdOX1NMT1RfMyA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3Nsb3QvZGV0YWlsL3Nsb3QzLmhwcD4KLSMgZGVmaW5lIE5ETkJPT1NUX1BQX0FTU0lHTl9TTE9UXzQgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zbG90L2RldGFpbC9zbG90NC5ocHA+Ci0jIGRlZmluZSBORE5CT09TVF9QUF9BU1NJR05fU0xPVF81IDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2xvdC9kZXRhaWwvc2xvdDUuaHBwPgotIwotIyAvKiBORE5CT09TVF9QUF9TTE9UICovCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9TTE9UKGkpIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9TTE9UXywgaSkoKQotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc3RyaW5naXplLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3N0cmluZ2l6ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI5YjRhNmEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3Ivc3RyaW5naXplLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLSMgLyogQ29weXJpZ2h0IChDKSAyMDAxCi0jICAqIEhvdXNlbWFycXVlIE95Ci0jICAqIGh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tCi0jICAqCi0jICAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqLwotIwotIyAvKiBSZXZpc2VkIGJ5IFBhdWwgTWVuc29uaWRlcyAoMjAwMikgKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1NUUklOR0laRV9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9TVFJJTkdJWkVfSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfU1RSSU5HSVpFICovCi0jCi0jIGlmIE5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX01TVkMoKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfU1RSSU5HSVpFKHRleHQpIE5ETkJPT1NUX1BQX1NUUklOR0laRV9BKCh0ZXh0KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NUUklOR0laRV9BKGFyZykgTkROQk9PU1RfUFBfU1RSSU5HSVpFX0kgYXJnCi0jIGVsaWYgTkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfTVdDQygpCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TVFJJTkdJWkUodGV4dCkgTkROQk9PU1RfUFBfU1RSSU5HSVpFX09PKCh0ZXh0KSkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1NUUklOR0laRV9PTyhwYXIpIE5ETkJPT1NUX1BQX1NUUklOR0laRV9JICMjIHBhcgotIyBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9TVFJJTkdJWkUodGV4dCkgTkROQk9PU1RfUFBfU1RSSU5HSVpFX0kodGV4dCkKLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1NUUklOR0laRV9JKHRleHQpICN0ZXh0Ci0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9lYXQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvZWF0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTEwNDY0OS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9lYXQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTA2ICswLDAgQEAKLSMgLyogQ29weXJpZ2h0IChDKSAyMDAxCi0jICAqIEhvdXNlbWFycXVlIE95Ci0jICAqIGh0dHA6Ly93d3cuaG91c2VtYXJxdWUuY29tCi0jICAqCi0jICAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotIyAgKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotIyAgKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0jICAqLwotIwotIyAvKiBSZXZpc2VkIGJ5IFBhdWwgTWVuc29uaWRlcyAoMjAwMi0yMDExKSAqLwotIyAvKiBSZXZpc2VkIGJ5IEVkd2FyZCBEaWVuZXIgKDIwMTEpICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9UVVBMRV9FQVRfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfVFVQTEVfRUFUX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX0VBVCAqLwotIwotIyBpZiBORE5CT09TVF9QUF9WQVJJQURJQ1MKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VBVCguLi4pCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX0VBVCh4KQotIyBlbmRpZgotIwotIyAvKiBORE5CT09TVF9QUF9UVVBMRV9FQVQgKi8KLSMKLSMgaWYgTkROQk9PU1RfUFBfVkFSSUFESUNTCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FQVQoc2l6ZSkgTkROQk9PU1RfUFBfRUFUCi0jIGVsc2UKLSMgICAgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX01XQ0MoKQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVChzaXplKSBORE5CT09TVF9QUF9UVVBMRV9FQVRfSShzaXplKQotIyAgICBlbHNlCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUKHNpemUpIE5ETkJPT1NUX1BQX1RVUExFX0VBVF9PTygoc2l6ZSkpCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUX09PKHBhcikgTkROQk9PU1RfUFBfVFVQTEVfRUFUX0kgIyMgcGFyCi0jICAgIGVuZGlmCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FQVRfSShzaXplKSBORE5CT09TVF9QUF9UVVBMRV9FQVRfICMjIHNpemUKLSMgZW5kaWYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8xKGUwKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIoZTAsIGUxKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMoZTAsIGUxLCBlMikKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80KGUwLCBlMSwgZTIsIGUzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzUoZTAsIGUxLCBlMiwgZTMsIGU0KQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzYoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF83KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2KQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzgoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3KQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzkoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8xMChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8xMShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzEyKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8xMyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMikKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8xNChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzE1KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8xNihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8xNyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2KQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzE4KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8xOShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yMChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5KQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzIxKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yMihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yMyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzI0KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yNShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yNihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1KQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzI3KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNikKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yOChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8yOShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4KQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMwKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zMShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zMihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzMzKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMikKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zNChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zNShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0KQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzM2KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zNyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNikKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF8zOChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3KQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzM5KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80MChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80MShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQyKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80MyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MikKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80NChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQ1KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80NihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80NyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2KQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzQ4KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF80OShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF81MChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5KQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzUxKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF81MihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF81MyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzU0KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF81NShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF81NihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1KQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzU3KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NikKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF81OChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NykKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF81OShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4KQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzYwKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF82MShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF82MihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUFUXzYzKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MikKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VBVF82NChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykKLSMKLSMgZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3R1cGxlL2VsZW0uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvZWxlbS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkwNTU1ZjcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvZWxlbS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxOTEgKzAsMCBAQAotIyAvKiBDb3B5cmlnaHQgKEMpIDIwMDEKLSMgICogSG91c2VtYXJxdWUgT3kKLSMgICogaHR0cDovL3d3dy5ob3VzZW1hcnF1ZS5jb20KLSMgICoKLSMgICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0jICAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0jICAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSMgICovCi0jCi0jIC8qIFJldmlzZWQgYnkgUGF1bCBNZW5zb25pZGVzICgyMDAyLTIwMTEpICovCi0jIC8qIFJldmlzZWQgYnkgRWR3YXJkIERpZW5lciAoMjAxMSkgKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1RVUExFX0VMRU1fSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfVFVQTEVfRUxFTV9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2ZhY2lsaXRpZXMvb3ZlcmxvYWQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvcmVtLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3ZhcmlhZGljL2VsZW0uaHBwPgotIwotIyBpZiBORE5CT09TVF9QUF9WQVJJQURJQ1MKLSMgICAgaWYgTkROQk9PU1RfUFBfVkFSSUFESUNTX01TVkMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNKC4uLikgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9JKE5ETkJPT1NUX1BQX09WRVJMT0FEKE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fT18sIF9fVkFfQVJHU19fKSwgKF9fVkFfQVJHU19fKSkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0kobSwgYXJncykgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9JSShtLCBhcmdzKQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fSUkobSwgYXJncykgTkROQk9PU1RfUFBfQ0FUKG0gIyMgYXJncywpCi0jICAgIGVsc2UKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNKC4uLikgTkROQk9PU1RfUFBfT1ZFUkxPQUQoTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9PXywgX19WQV9BUkdTX18pKF9fVkFfQVJHU19fKQotIyAgICBlbmRpZgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9PXzIobiwgdHVwbGUpIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU0obiwgTkROQk9PU1RfUFBfUkVNIHR1cGxlKQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9PXzMoc2l6ZSwgbiwgdHVwbGUpIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fT18yKG4sIHR1cGxlKQotIyBlbHNlCi0jICAgIGlmIE5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX01TVkMoKQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oc2l6ZSwgbiwgdHVwbGUpIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fSShORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8sIG4pLCBORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fRV8sIHNpemUpLCB0dXBsZSkpCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9JKG0sIGFyZ3MpIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fSUkobSwgYXJncykKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0lJKG0sIGFyZ3MpIE5ETkJPT1NUX1BQX0NBVChtICMjIGFyZ3MsKQotIyAgICBlbGlmIE5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX01XQ0MoKQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oc2l6ZSwgbiwgdHVwbGUpIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fSV9PTygoc2l6ZSwgbiwgdHVwbGUpKQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fSV9PTyhwYXIpIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fSSAjIyBwYXIKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0koc2l6ZSwgbiwgdHVwbGUpIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fSUkoKG4sIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fRV8gIyMgc2l6ZSAjIyB0dXBsZSkpCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9JSShwYXIpIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fSUlJX09PKHBhcikKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0lJSV9PTyhwYXIpIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fSUlJICMjIHBhcgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fSUlJKG4sIGV0dXBsZSkgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8gIyMgbiAjIyBldHVwbGUKLSMgICAgZWxzZQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU0oc2l6ZSwgbiwgdHVwbGUpIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fSShORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8sIG4pIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfLCBzaXplKSB0dXBsZSkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0koeCkgeAotIyAgICBlbmRpZgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzEoZTApIChlMCwgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fRV8yKGUwLCBlMSkgKGUwLCBlMSwgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fRV8zKGUwLCBlMSwgZTIpIChlMCwgZTEsIGUyLCA/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/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzQoZTAsIGUxLCBlMiwgZTMpIChlMCwgZTEsIGUyLCBlMywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fRV81KGUwLCBlMSwgZTIsIGUzLCBlNCkgKGUwLCBlMSwgZTIsIGUzLCBlNCwgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fRV82KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUpIChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCA/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/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzcoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYpIChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fRV84KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNykgKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fRV85KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgpIChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCA/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/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzEwKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5KSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfMTEoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCkgKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfMTIoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExKSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCA/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/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzEzKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyKSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfMTQoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMykgKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfMTUoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0KSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCA/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/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzE2KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1KSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfMTcoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNikgKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfMTgoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3KSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCA/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/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzE5KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4KSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfMjAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSkgKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfMjEoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwKSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCA/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/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzIyKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxKSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfMjMoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMikgKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfMjQoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzKSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCA/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/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzI1KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0KSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfMjYoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSkgKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfMjcoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2KSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCA/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/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzI4KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3KSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfMjkoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCkgKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfMzAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5KSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCA/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/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzMxKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwKSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfMzIoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSkgKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfMzMoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyKSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCA/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/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzM0KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzKSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfMzUoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCkgKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfMzYoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1KSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCA/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/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzM3KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2KSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfMzgoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNykgKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfMzkoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4KSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzQwKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5KSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfNDEoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCkgKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfNDIoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxKSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzQzKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyKSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfNDQoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MykgKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfNDUoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0KSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzQ2KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1KSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfNDcoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NikgKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfNDgoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3KSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzQ5KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4KSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfNTAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSkgKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfNTEoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwKSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzUyKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxKSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfNTMoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MikgKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfNTQoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzKSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzU1KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0KSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsID8sID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfNTYoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSkgKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsID8sID8sID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfNTcoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2KSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCA/LCA/LCA/LCA/LCA/LCA/LCA/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzU4KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3KSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsID8sID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfNTkoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCkgKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsID8sID8sID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfNjAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5KSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCA/LCA/LCA/LCA/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzYxKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwKSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsID8sID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfNjIoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSkgKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsID8sID8pCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNX0VfNjMoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyKSAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCA/KQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV9FXzY0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGUwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzEoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGUxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzIoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGUyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzMoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGUzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzQoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGU0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzUoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGU1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzYoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGU2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzcoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGU3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzgoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGU4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzkoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGU5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzEwKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlMTAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMTEoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGUxMQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8xMihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTEyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzEzKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlMTMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMTQoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGUxNAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8xNShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTE1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzE2KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlMTYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMTcoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGUxNwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8xOChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTE4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzE5KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlMTkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMjAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGUyMAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yMShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTIxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzIyKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlMjIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMjMoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGUyMwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yNChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTI0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzI1KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlMjUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMjYoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGUyNgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8yNyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTI3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzI4KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlMjgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMjkoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGUyOQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zMChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTMwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzMxKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlMzEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMzIoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGUzMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zMyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTMzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzM0KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlMzQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMzUoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGUzNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zNihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTM2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzM3KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlMzcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fMzgoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGUzOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV8zOShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTM5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzQwKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlNDAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fNDEoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGU0MQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV80MihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTQyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzQzKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlNDMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fNDQoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGU0NAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV80NShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTQ1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzQ2KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlNDYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fNDcoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGU0NwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV80OChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTQ4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzQ5KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlNDkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fNTAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGU1MAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV81MShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTUxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzUyKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlNTIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fNTMoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGU1MwotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV81NChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTU0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzU1KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlNTUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fNTYoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGU1NgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV81NyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTU3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzU4KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlNTgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fNTkoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGU1OQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV82MChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTYwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzYxKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlNjEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX0VMRU1fNjIoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIGU2MgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfRUxFTV82MyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MykgZTYzCi0jIGVuZGlmCi0jCi0jIC8qIGRpcmVjdGx5IHVzZWQgZWxzZXdoZXJlIGluIEJvb3N0Li4uICovCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzFfMChhKSBhCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMChhLCBiKSBhCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzJfMShhLCBiKSBiCi0jCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMChhLCBiLCBjKSBhCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMShhLCBiLCBjKSBiCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9FTEVNXzNfMihhLCBiLCBjKSBjCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9yZW0uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvcmVtLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDg2ZTA1ZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS9yZW0uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTM0ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMDItMjAxMS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgRWR3YXJkIERpZW5lciAyMDExLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSAgICAgICoKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0ICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9UVVBMRV9SRU1fSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfVFVQTEVfUkVNX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZmFjaWxpdGllcy9vdmVybG9hZC5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX1JFTSAqLwotIwotIyBpZiBORE5CT09TVF9QUF9WQVJJQURJQ1MKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1JFTSguLi4pIF9fVkFfQVJHU19fCi0jIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1JFTSh4KSB4Ci0jIGVuZGlmCi0jCi0jIC8qIE5ETkJPT1NUX1BQX1RVUExFX1JFTSAqLwotIwotIyBpZiBORE5CT09TVF9QUF9WQVJJQURJQ1MKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTShzaXplKSBORE5CT09TVF9QUF9SRU0KLSMgZWxzZQotIyAgICBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfTVdDQygpCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNKHNpemUpIE5ETkJPT1NUX1BQX1RVUExFX1JFTV9JKHNpemUpCi0jICAgIGVsc2UKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU0oc2l6ZSkgTkROQk9PU1RfUFBfVFVQTEVfUkVNX09PKChzaXplKSkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fT08ocGFyKSBORE5CT09TVF9QUF9UVVBMRV9SRU1fSSAjIyBwYXIKLSMgICAgZW5kaWYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV9JKHNpemUpIE5ETkJPT1NUX1BQX1RVUExFX1JFTV8gIyMgc2l6ZQotIyBlbmRpZgotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzEoZTApIGUwCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fMihlMCwgZTEpIGUwLCBlMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzMoZTAsIGUxLCBlMikgZTAsIGUxLCBlMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzQoZTAsIGUxLCBlMiwgZTMpIGUwLCBlMSwgZTIsIGUzCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fNShlMCwgZTEsIGUyLCBlMywgZTQpIGUwLCBlMSwgZTIsIGUzLCBlNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzYoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSkgZTAsIGUxLCBlMiwgZTMsIGU0LCBlNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzcoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2Ci0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fOChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzkoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCkgZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzEwKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5KSBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzExKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTApIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV8xMihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzEzKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyKSBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzE0KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV8xNShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzE2KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1KSBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzE3KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV8xOChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzE5KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4KSBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzIwKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTkpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV8yMShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjApIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzIyKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxKSBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzIzKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV8yNChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzI1KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0KSBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNAotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzI2KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV8yNyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzI4KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3KSBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNwotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzI5KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV8zMChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjkpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzMxKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwKSBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMAotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzMyKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV8zMyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMgotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzM0KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzKSBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMwotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzM1KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV8zNihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzM3KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2KSBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNgotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzM4KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV8zOShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOAotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzQwKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5KSBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzQxKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDApIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV80MihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzQzKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyKSBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzQ0KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV80NShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzQ2KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1KSBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzQ3KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV80OChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzQ5KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4KSBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OAotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzUwKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDkpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV81MShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTApIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzUyKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxKSBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzUzKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV81NChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MwotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzU1KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0KSBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NAotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzU2KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV81NyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NgotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzU4KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3KSBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NwotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzU5KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV82MChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTkpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzYxKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwKSBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MAotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzYyKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV82MyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIpIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MgotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNXzY0KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgZTYzKSBlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxLCBlNjIsIGU2MwotIwotIyAvKiBORE5CT09TVF9QUF9UVVBMRV9SRU1fQ1RPUiAqLwotIwotIyBpZiBORE5CT09TVF9QUF9WQVJJQURJQ1MKLSMgICAgaWYgTkROQk9PU1RfUFBfVkFSSUFESUNTX01TVkMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fQ1RPUiguLi4pIE5ETkJPT1NUX1BQX1RVUExFX1JFTV9DVE9SX0koTkROQk9PU1RfUFBfT1ZFUkxPQUQoTkROQk9PU1RfUFBfVFVQTEVfUkVNX0NUT1JfT18sIF9fVkFfQVJHU19fKSwgKF9fVkFfQVJHU19fKSkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fQ1RPUl9JKG0sIGFyZ3MpIE5ETkJPT1NUX1BQX1RVUExFX1JFTV9DVE9SX0lJKG0sIGFyZ3MpCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNX0NUT1JfSUkobSwgYXJncykgTkROQk9PU1RfUFBfQ0FUKG0gIyMgYXJncywpCi0jICAgIGVsc2UKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fQ1RPUiguLi4pIE5ETkJPT1NUX1BQX09WRVJMT0FEKE5ETkJPT1NUX1BQX1RVUExFX1JFTV9DVE9SX09fLCBfX1ZBX0FSR1NfXykoX19WQV9BUkdTX18pCi0jICAgIGVuZGlmCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fQ1RPUl9PXzEodHVwbGUpIE5ETkJPT1NUX1BQX1JFTSB0dXBsZQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNX0NUT1JfT18yKHNpemUsIHR1cGxlKSBORE5CT09TVF9QUF9UVVBMRV9SRU1fQ1RPUl9PXzEodHVwbGUpCi0jIGVsc2UKLSMgICAgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX0VERygpCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfUkVNX0NUT1Ioc2l6ZSwgdHVwbGUpIE5ETkJPT1NUX1BQX1RVUExFX1JFTV9DVE9SX0koTkROQk9PU1RfUFBfVFVQTEVfUkVNKHNpemUpLCB0dXBsZSkKLSMgICAgZWxzZQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV9DVE9SKHNpemUsIHR1cGxlKSBORE5CT09TVF9QUF9UVVBMRV9SRU1fQ1RPUl9EKHNpemUsIHR1cGxlKQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV9DVE9SX0Qoc2l6ZSwgdHVwbGUpIE5ETkJPT1NUX1BQX1RVUExFX1JFTV9DVE9SX0koTkROQk9PU1RfUFBfVFVQTEVfUkVNKHNpemUpLCB0dXBsZSkKLSMgICAgZW5kaWYKLSMgICAgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX01XQ0MoKQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV9DVE9SX0koZXh0LCB0dXBsZSkgZXh0IHR1cGxlCi0jICAgIGVsc2UKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fQ1RPUl9JKGV4dCwgdHVwbGUpIE5ETkJPT1NUX1BQX1RVUExFX1JFTV9DVE9SX09PKChleHQsIHR1cGxlKSkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9SRU1fQ1RPUl9PTyhwYXIpIE5ETkJPT1NUX1BQX1RVUExFX1JFTV9DVE9SX0lJICMjIHBhcgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1JFTV9DVE9SX0lJKGV4dCwgdHVwbGUpIGV4dCAjIyB0dXBsZQotIyAgICBlbmRpZgotIyBlbmRpZgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvdG9fbGlzdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS90b19saXN0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzMyMmRjNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci90dXBsZS90b19saXN0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExNiArMCwwIEBACi0jIC8qIENvcHlyaWdodCAoQykgMjAwMQotIyAgKiBIb3VzZW1hcnF1ZSBPeQotIyAgKiBodHRwOi8vd3d3LmhvdXNlbWFycXVlLmNvbQotIyAgKgotIyAgKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSMgICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSMgICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotIyAgKi8KLSMKLSMgLyogUmV2aXNlZCBieSBQYXVsIE1lbnNvbmlkZXMgKDIwMDItMjAxMSkgKi8KLSMgLyogUmV2aXNlZCBieSBFZHdhcmQgRGllbmVyICgyMDExKSAqLwotIwotIyAvKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uICovCi0jCi0jIGlmbmRlZiBORE5CT09TVF9QUkVQUk9DRVNTT1JfVFVQTEVfVE9fTElTVF9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9UVVBMRV9UT19MSVNUX0hQUAotIwotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbmZpZy9jb25maWcuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZmFjaWxpdGllcy9vdmVybG9hZC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci92YXJpYWRpYy9zaXplLmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVCAqLwotIwotIyBpZiBORE5CT09TVF9QUF9WQVJJQURJQ1MKLSMgICAgaWYgTkROQk9PU1RfUFBfVkFSSUFESUNTX01TVkMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUKC4uLikgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF9JKE5ETkJPT1NUX1BQX09WRVJMT0FEKE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfT18sIF9fVkFfQVJHU19fKSwgKF9fVkFfQVJHU19fKSkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUX0kobSwgYXJncykgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF9JSShtLCBhcmdzKQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfSUkobSwgYXJncykgTkROQk9PU1RfUFBfQ0FUKG0gIyMgYXJncywpCi0jICAgIGVsc2UKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUKC4uLikgTkROQk9PU1RfUFBfT1ZFUkxPQUQoTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF9PXywgX19WQV9BUkdTX18pKF9fVkFfQVJHU19fKQotIyAgICBlbmRpZgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF9PXzEodHVwbGUpIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXywgTkROQk9PU1RfUFBfVkFSSUFESUNfU0laRSB0dXBsZSkgdHVwbGUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfT18yKHNpemUsIHR1cGxlKSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUX09fMSh0dXBsZSkKLSMgZWxzZQotIyAgICBpZiB+TkROQk9PU1RfUFBfQ09ORklHX0ZMQUdTKCkgJiBORE5CT09TVF9QUF9DT05GSUdfTVdDQygpCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVChzaXplLCB0dXBsZSkgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF9JKHNpemUsIHR1cGxlKQotIyAgICAgICAgaWYgfk5ETkJPT1NUX1BQX0NPTkZJR19GTEFHUygpICYgTkROQk9PU1RfUFBfQ09ORklHX01TVkMoKQotIyAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUX0kocywgdCkgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF8gIyMgcyB0Ci0jICAgICAgICBlbHNlCi0jICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfSShzLCB0KSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUX0lJKE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfICMjIHMgdCkKLSMgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF9JSShyZXMpIHJlcwotIyAgICAgICAgZW5kaWYKLSMgICAgZWxzZQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1Qoc2l6ZSwgdHVwbGUpIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfT08oKHNpemUsIHR1cGxlKSkKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUX09PKHBhcikgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF9JICMjIHBhcgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfSShzLCB0KSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXyAjIyBzICMjIHQKLSMgICAgZW5kaWYKLSMgZW5kaWYKLSMKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfMShlMCkgKGUwLCBORE5CT09TVF9QUF9OSUwpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzIoZTAsIGUxKSAoZTAsIChlMSwgTkROQk9PU1RfUFBfTklMKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfMyhlMCwgZTEsIGUyKSAoZTAsIChlMSwgKGUyLCBORE5CT09TVF9QUF9OSUwpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfNChlMCwgZTEsIGUyLCBlMykgKGUwLCAoZTEsIChlMiwgKGUzLCBORE5CT09TVF9QUF9OSUwpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzUoZTAsIGUxLCBlMiwgZTMsIGU0KSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgTkROQk9PU1RfUFBfTklMKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfNihlMCwgZTEsIGUyLCBlMywgZTQsIGU1KSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCBORE5CT09TVF9QUF9OSUwpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfNyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNikgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIChlNSwgKGU2LCBORE5CT09TVF9QUF9OSUwpKSkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzgoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3KSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCAoZTYsIChlNywgTkROQk9PU1RfUFBfTklMKSkpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfOShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4KSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCAoZTYsIChlNywgKGU4LCBORE5CT09TVF9QUF9OSUwpKSkpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfMTAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTkpIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCAoZTUsIChlNiwgKGU3LCAoZTgsIChlOSwgTkROQk9PU1RfUFBfTklMKSkpKSkpKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF8xMShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwKSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCAoZTYsIChlNywgKGU4LCAoZTksIChlMTAsIE5ETkJPT1NUX1BQX05JTCkpKSkpKSkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzEyKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSkgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIChlNSwgKGU2LCAoZTcsIChlOCwgKGU5LCAoZTEwLCAoZTExLCBORE5CT09TVF9QUF9OSUwpKSkpKSkpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfMTMoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIpIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCAoZTUsIChlNiwgKGU3LCAoZTgsIChlOSwgKGUxMCwgKGUxMSwgKGUxMiwgTkROQk9PU1RfUFBfTklMKSkpKSkpKSkpKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF8xNChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzKSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCAoZTYsIChlNywgKGU4LCAoZTksIChlMTAsIChlMTEsIChlMTIsIChlMTMsIE5ETkJPT1NUX1BQX05JTCkpKSkpKSkpKSkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzE1KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCkgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIChlNSwgKGU2LCAoZTcsIChlOCwgKGU5LCAoZTEwLCAoZTExLCAoZTEyLCAoZTEzLCAoZTE0LCBORE5CT09TVF9QUF9OSUwpKSkpKSkpKSkpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfMTYoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUpIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCAoZTUsIChlNiwgKGU3LCAoZTgsIChlOSwgKGUxMCwgKGUxMSwgKGUxMiwgKGUxMywgKGUxNCwgKGUxNSwgTkROQk9PU1RfUFBfTklMKSkpKSkpKSkpKSkpKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF8xNyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2KSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCAoZTYsIChlNywgKGU4LCAoZTksIChlMTAsIChlMTEsIChlMTIsIChlMTMsIChlMTQsIChlMTUsIChlMTYsIE5ETkJPT1NUX1BQX05JTCkpKSkpKSkpKSkpKSkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzE4KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNykgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIChlNSwgKGU2LCAoZTcsIChlOCwgKGU5LCAoZTEwLCAoZTExLCAoZTEyLCAoZTEzLCAoZTE0LCAoZTE1LCAoZTE2LCAoZTE3LCBORE5CT09TVF9QUF9OSUwpKSkpKSkpKSkpKSkpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfMTkoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgpIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCAoZTUsIChlNiwgKGU3LCAoZTgsIChlOSwgKGUxMCwgKGUxMSwgKGUxMiwgKGUxMywgKGUxNCwgKGUxNSwgKGUxNiwgKGUxNywgKGUxOCwgTkROQk9PU1RfUFBfTklMKSkpKSkpKSkpKSkpKSkpKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF8yMChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5KSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCAoZTYsIChlNywgKGU4LCAoZTksIChlMTAsIChlMTEsIChlMTIsIChlMTMsIChlMTQsIChlMTUsIChlMTYsIChlMTcsIChlMTgsIChlMTksIE5ETkJPT1NUX1BQX05JTCkpKSkpKSkpKSkpKSkpKSkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzIxKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCkgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIChlNSwgKGU2LCAoZTcsIChlOCwgKGU5LCAoZTEwLCAoZTExLCAoZTEyLCAoZTEzLCAoZTE0LCAoZTE1LCAoZTE2LCAoZTE3LCAoZTE4LCAoZTE5LCAoZTIwLCBORE5CT09TVF9QUF9OSUwpKSkpKSkpKSkpKSkpKSkpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfMjIoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEpIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCAoZTUsIChlNiwgKGU3LCAoZTgsIChlOSwgKGUxMCwgKGUxMSwgKGUxMiwgKGUxMywgKGUxNCwgKGUxNSwgKGUxNiwgKGUxNywgKGUxOCwgKGUxOSwgKGUyMCwgKGUyMSwgTkROQk9PU1RfUFBfTklMKSkpKSkpKSkpKSkpKSkpKSkpKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF8yMyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyKSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCAoZTYsIChlNywgKGU4LCAoZTksIChlMTAsIChlMTEsIChlMTIsIChlMTMsIChlMTQsIChlMTUsIChlMTYsIChlMTcsIChlMTgsIChlMTksIChlMjAsIChlMjEsIChlMjIsIE5ETkJPT1NUX1BQX05JTCkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzI0KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMykgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIChlNSwgKGU2LCAoZTcsIChlOCwgKGU5LCAoZTEwLCAoZTExLCAoZTEyLCAoZTEzLCAoZTE0LCAoZTE1LCAoZTE2LCAoZTE3LCAoZTE4LCAoZTE5LCAoZTIwLCAoZTIxLCAoZTIyLCAoZTIzLCBORE5CT09TVF9QUF9OSUwpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfMjUoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQpIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCAoZTUsIChlNiwgKGU3LCAoZTgsIChlOSwgKGUxMCwgKGUxMSwgKGUxMiwgKGUxMywgKGUxNCwgKGUxNSwgKGUxNiwgKGUxNywgKGUxOCwgKGUxOSwgKGUyMCwgKGUyMSwgKGUyMiwgKGUyMywgKGUyNCwgTkROQk9PU1RfUFBfTklMKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF8yNihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1KSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCAoZTYsIChlNywgKGU4LCAoZTksIChlMTAsIChlMTEsIChlMTIsIChlMTMsIChlMTQsIChlMTUsIChlMTYsIChlMTcsIChlMTgsIChlMTksIChlMjAsIChlMjEsIChlMjIsIChlMjMsIChlMjQsIChlMjUsIE5ETkJPT1NUX1BQX05JTCkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzI3KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNikgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIChlNSwgKGU2LCAoZTcsIChlOCwgKGU5LCAoZTEwLCAoZTExLCAoZTEyLCAoZTEzLCAoZTE0LCAoZTE1LCAoZTE2LCAoZTE3LCAoZTE4LCAoZTE5LCAoZTIwLCAoZTIxLCAoZTIyLCAoZTIzLCAoZTI0LCAoZTI1LCAoZTI2LCBORE5CT09TVF9QUF9OSUwpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfMjgoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcpIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCAoZTUsIChlNiwgKGU3LCAoZTgsIChlOSwgKGUxMCwgKGUxMSwgKGUxMiwgKGUxMywgKGUxNCwgKGUxNSwgKGUxNiwgKGUxNywgKGUxOCwgKGUxOSwgKGUyMCwgKGUyMSwgKGUyMiwgKGUyMywgKGUyNCwgKGUyNSwgKGUyNiwgKGUyNywgTkROQk9PU1RfUFBfTklMKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF8yOShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4KSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCAoZTYsIChlNywgKGU4LCAoZTksIChlMTAsIChlMTEsIChlMTIsIChlMTMsIChlMTQsIChlMTUsIChlMTYsIChlMTcsIChlMTgsIChlMTksIChlMjAsIChlMjEsIChlMjIsIChlMjMsIChlMjQsIChlMjUsIChlMjYsIChlMjcsIChlMjgsIE5ETkJPT1NUX1BQX05JTCkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzMwKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSkgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIChlNSwgKGU2LCAoZTcsIChlOCwgKGU5LCAoZTEwLCAoZTExLCAoZTEyLCAoZTEzLCAoZTE0LCAoZTE1LCAoZTE2LCAoZTE3LCAoZTE4LCAoZTE5LCAoZTIwLCAoZTIxLCAoZTIyLCAoZTIzLCAoZTI0LCAoZTI1LCAoZTI2LCAoZTI3LCAoZTI4LCAoZTI5LCBORE5CT09TVF9QUF9OSUwpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfMzEoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzApIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCAoZTUsIChlNiwgKGU3LCAoZTgsIChlOSwgKGUxMCwgKGUxMSwgKGUxMiwgKGUxMywgKGUxNCwgKGUxNSwgKGUxNiwgKGUxNywgKGUxOCwgKGUxOSwgKGUyMCwgKGUyMSwgKGUyMiwgKGUyMywgKGUyNCwgKGUyNSwgKGUyNiwgKGUyNywgKGUyOCwgKGUyOSwgKGUzMCwgTkROQk9PU1RfUFBfTklMKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF8zMihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxKSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCAoZTYsIChlNywgKGU4LCAoZTksIChlMTAsIChlMTEsIChlMTIsIChlMTMsIChlMTQsIChlMTUsIChlMTYsIChlMTcsIChlMTgsIChlMTksIChlMjAsIChlMjEsIChlMjIsIChlMjMsIChlMjQsIChlMjUsIChlMjYsIChlMjcsIChlMjgsIChlMjksIChlMzAsIChlMzEsIE5ETkJPT1NUX1BQX05JTCkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzMzKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMikgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIChlNSwgKGU2LCAoZTcsIChlOCwgKGU5LCAoZTEwLCAoZTExLCAoZTEyLCAoZTEzLCAoZTE0LCAoZTE1LCAoZTE2LCAoZTE3LCAoZTE4LCAoZTE5LCAoZTIwLCAoZTIxLCAoZTIyLCAoZTIzLCAoZTI0LCAoZTI1LCAoZTI2LCAoZTI3LCAoZTI4LCAoZTI5LCAoZTMwLCAoZTMxLCAoZTMyLCBORE5CT09TVF9QUF9OSUwpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfMzQoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMpIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCAoZTUsIChlNiwgKGU3LCAoZTgsIChlOSwgKGUxMCwgKGUxMSwgKGUxMiwgKGUxMywgKGUxNCwgKGUxNSwgKGUxNiwgKGUxNywgKGUxOCwgKGUxOSwgKGUyMCwgKGUyMSwgKGUyMiwgKGUyMywgKGUyNCwgKGUyNSwgKGUyNiwgKGUyNywgKGUyOCwgKGUyOSwgKGUzMCwgKGUzMSwgKGUzMiwgKGUzMywgTkROQk9PU1RfUFBfTklMKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF8zNShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0KSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCAoZTYsIChlNywgKGU4LCAoZTksIChlMTAsIChlMTEsIChlMTIsIChlMTMsIChlMTQsIChlMTUsIChlMTYsIChlMTcsIChlMTgsIChlMTksIChlMjAsIChlMjEsIChlMjIsIChlMjMsIChlMjQsIChlMjUsIChlMjYsIChlMjcsIChlMjgsIChlMjksIChlMzAsIChlMzEsIChlMzIsIChlMzMsIChlMzQsIE5ETkJPT1NUX1BQX05JTCkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzM2KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSkgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIChlNSwgKGU2LCAoZTcsIChlOCwgKGU5LCAoZTEwLCAoZTExLCAoZTEyLCAoZTEzLCAoZTE0LCAoZTE1LCAoZTE2LCAoZTE3LCAoZTE4LCAoZTE5LCAoZTIwLCAoZTIxLCAoZTIyLCAoZTIzLCAoZTI0LCAoZTI1LCAoZTI2LCAoZTI3LCAoZTI4LCAoZTI5LCAoZTMwLCAoZTMxLCAoZTMyLCAoZTMzLCAoZTM0LCAoZTM1LCBORE5CT09TVF9QUF9OSUwpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfMzcoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYpIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCAoZTUsIChlNiwgKGU3LCAoZTgsIChlOSwgKGUxMCwgKGUxMSwgKGUxMiwgKGUxMywgKGUxNCwgKGUxNSwgKGUxNiwgKGUxNywgKGUxOCwgKGUxOSwgKGUyMCwgKGUyMSwgKGUyMiwgKGUyMywgKGUyNCwgKGUyNSwgKGUyNiwgKGUyNywgKGUyOCwgKGUyOSwgKGUzMCwgKGUzMSwgKGUzMiwgKGUzMywgKGUzNCwgKGUzNSwgKGUzNiwgTkROQk9PU1RfUFBfTklMKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF8zOChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3KSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCAoZTYsIChlNywgKGU4LCAoZTksIChlMTAsIChlMTEsIChlMTIsIChlMTMsIChlMTQsIChlMTUsIChlMTYsIChlMTcsIChlMTgsIChlMTksIChlMjAsIChlMjEsIChlMjIsIChlMjMsIChlMjQsIChlMjUsIChlMjYsIChlMjcsIChlMjgsIChlMjksIChlMzAsIChlMzEsIChlMzIsIChlMzMsIChlMzQsIChlMzUsIChlMzYsIChlMzcsIE5ETkJPT1NUX1BQX05JTCkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzM5KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCkgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIChlNSwgKGU2LCAoZTcsIChlOCwgKGU5LCAoZTEwLCAoZTExLCAoZTEyLCAoZTEzLCAoZTE0LCAoZTE1LCAoZTE2LCAoZTE3LCAoZTE4LCAoZTE5LCAoZTIwLCAoZTIxLCAoZTIyLCAoZTIzLCAoZTI0LCAoZTI1LCAoZTI2LCAoZTI3LCAoZTI4LCAoZTI5LCAoZTMwLCAoZTMxLCAoZTMyLCAoZTMzLCAoZTM0LCAoZTM1LCAoZTM2LCAoZTM3LCAoZTM4LCBORE5CT09TVF9QUF9OSUwpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfNDAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzkpIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCAoZTUsIChlNiwgKGU3LCAoZTgsIChlOSwgKGUxMCwgKGUxMSwgKGUxMiwgKGUxMywgKGUxNCwgKGUxNSwgKGUxNiwgKGUxNywgKGUxOCwgKGUxOSwgKGUyMCwgKGUyMSwgKGUyMiwgKGUyMywgKGUyNCwgKGUyNSwgKGUyNiwgKGUyNywgKGUyOCwgKGUyOSwgKGUzMCwgKGUzMSwgKGUzMiwgKGUzMywgKGUzNCwgKGUzNSwgKGUzNiwgKGUzNywgKGUzOCwgKGUzOSwgTkROQk9PU1RfUFBfTklMKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF80MShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwKSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCAoZTYsIChlNywgKGU4LCAoZTksIChlMTAsIChlMTEsIChlMTIsIChlMTMsIChlMTQsIChlMTUsIChlMTYsIChlMTcsIChlMTgsIChlMTksIChlMjAsIChlMjEsIChlMjIsIChlMjMsIChlMjQsIChlMjUsIChlMjYsIChlMjcsIChlMjgsIChlMjksIChlMzAsIChlMzEsIChlMzIsIChlMzMsIChlMzQsIChlMzUsIChlMzYsIChlMzcsIChlMzgsIChlMzksIChlNDAsIE5ETkJPT1NUX1BQX05JTCkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzQyKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSkgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIChlNSwgKGU2LCAoZTcsIChlOCwgKGU5LCAoZTEwLCAoZTExLCAoZTEyLCAoZTEzLCAoZTE0LCAoZTE1LCAoZTE2LCAoZTE3LCAoZTE4LCAoZTE5LCAoZTIwLCAoZTIxLCAoZTIyLCAoZTIzLCAoZTI0LCAoZTI1LCAoZTI2LCAoZTI3LCAoZTI4LCAoZTI5LCAoZTMwLCAoZTMxLCAoZTMyLCAoZTMzLCAoZTM0LCAoZTM1LCAoZTM2LCAoZTM3LCAoZTM4LCAoZTM5LCAoZTQwLCAoZTQxLCBORE5CT09TVF9QUF9OSUwpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfNDMoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIpIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCAoZTUsIChlNiwgKGU3LCAoZTgsIChlOSwgKGUxMCwgKGUxMSwgKGUxMiwgKGUxMywgKGUxNCwgKGUxNSwgKGUxNiwgKGUxNywgKGUxOCwgKGUxOSwgKGUyMCwgKGUyMSwgKGUyMiwgKGUyMywgKGUyNCwgKGUyNSwgKGUyNiwgKGUyNywgKGUyOCwgKGUyOSwgKGUzMCwgKGUzMSwgKGUzMiwgKGUzMywgKGUzNCwgKGUzNSwgKGUzNiwgKGUzNywgKGUzOCwgKGUzOSwgKGU0MCwgKGU0MSwgKGU0MiwgTkROQk9PU1RfUFBfTklMKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF80NChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzKSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCAoZTYsIChlNywgKGU4LCAoZTksIChlMTAsIChlMTEsIChlMTIsIChlMTMsIChlMTQsIChlMTUsIChlMTYsIChlMTcsIChlMTgsIChlMTksIChlMjAsIChlMjEsIChlMjIsIChlMjMsIChlMjQsIChlMjUsIChlMjYsIChlMjcsIChlMjgsIChlMjksIChlMzAsIChlMzEsIChlMzIsIChlMzMsIChlMzQsIChlMzUsIChlMzYsIChlMzcsIChlMzgsIChlMzksIChlNDAsIChlNDEsIChlNDIsIChlNDMsIE5ETkJPT1NUX1BQX05JTCkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzQ1KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCkgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIChlNSwgKGU2LCAoZTcsIChlOCwgKGU5LCAoZTEwLCAoZTExLCAoZTEyLCAoZTEzLCAoZTE0LCAoZTE1LCAoZTE2LCAoZTE3LCAoZTE4LCAoZTE5LCAoZTIwLCAoZTIxLCAoZTIyLCAoZTIzLCAoZTI0LCAoZTI1LCAoZTI2LCAoZTI3LCAoZTI4LCAoZTI5LCAoZTMwLCAoZTMxLCAoZTMyLCAoZTMzLCAoZTM0LCAoZTM1LCAoZTM2LCAoZTM3LCAoZTM4LCAoZTM5LCAoZTQwLCAoZTQxLCAoZTQyLCAoZTQzLCAoZTQ0LCBORE5CT09TVF9QUF9OSUwpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfNDYoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUpIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCAoZTUsIChlNiwgKGU3LCAoZTgsIChlOSwgKGUxMCwgKGUxMSwgKGUxMiwgKGUxMywgKGUxNCwgKGUxNSwgKGUxNiwgKGUxNywgKGUxOCwgKGUxOSwgKGUyMCwgKGUyMSwgKGUyMiwgKGUyMywgKGUyNCwgKGUyNSwgKGUyNiwgKGUyNywgKGUyOCwgKGUyOSwgKGUzMCwgKGUzMSwgKGUzMiwgKGUzMywgKGUzNCwgKGUzNSwgKGUzNiwgKGUzNywgKGUzOCwgKGUzOSwgKGU0MCwgKGU0MSwgKGU0MiwgKGU0MywgKGU0NCwgKGU0NSwgTkROQk9PU1RfUFBfTklMKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF80NyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2KSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCAoZTYsIChlNywgKGU4LCAoZTksIChlMTAsIChlMTEsIChlMTIsIChlMTMsIChlMTQsIChlMTUsIChlMTYsIChlMTcsIChlMTgsIChlMTksIChlMjAsIChlMjEsIChlMjIsIChlMjMsIChlMjQsIChlMjUsIChlMjYsIChlMjcsIChlMjgsIChlMjksIChlMzAsIChlMzEsIChlMzIsIChlMzMsIChlMzQsIChlMzUsIChlMzYsIChlMzcsIChlMzgsIChlMzksIChlNDAsIChlNDEsIChlNDIsIChlNDMsIChlNDQsIChlNDUsIChlNDYsIE5ETkJPT1NUX1BQX05JTCkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzQ4KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NykgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIChlNSwgKGU2LCAoZTcsIChlOCwgKGU5LCAoZTEwLCAoZTExLCAoZTEyLCAoZTEzLCAoZTE0LCAoZTE1LCAoZTE2LCAoZTE3LCAoZTE4LCAoZTE5LCAoZTIwLCAoZTIxLCAoZTIyLCAoZTIzLCAoZTI0LCAoZTI1LCAoZTI2LCAoZTI3LCAoZTI4LCAoZTI5LCAoZTMwLCAoZTMxLCAoZTMyLCAoZTMzLCAoZTM0LCAoZTM1LCAoZTM2LCAoZTM3LCAoZTM4LCAoZTM5LCAoZTQwLCAoZTQxLCAoZTQyLCAoZTQzLCAoZTQ0LCAoZTQ1LCAoZTQ2LCAoZTQ3LCBORE5CT09TVF9QUF9OSUwpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfNDkoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgpIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCAoZTUsIChlNiwgKGU3LCAoZTgsIChlOSwgKGUxMCwgKGUxMSwgKGUxMiwgKGUxMywgKGUxNCwgKGUxNSwgKGUxNiwgKGUxNywgKGUxOCwgKGUxOSwgKGUyMCwgKGUyMSwgKGUyMiwgKGUyMywgKGUyNCwgKGUyNSwgKGUyNiwgKGUyNywgKGUyOCwgKGUyOSwgKGUzMCwgKGUzMSwgKGUzMiwgKGUzMywgKGUzNCwgKGUzNSwgKGUzNiwgKGUzNywgKGUzOCwgKGUzOSwgKGU0MCwgKGU0MSwgKGU0MiwgKGU0MywgKGU0NCwgKGU0NSwgKGU0NiwgKGU0NywgKGU0OCwgTkROQk9PU1RfUFBfTklMKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF81MChlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5KSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCAoZTYsIChlNywgKGU4LCAoZTksIChlMTAsIChlMTEsIChlMTIsIChlMTMsIChlMTQsIChlMTUsIChlMTYsIChlMTcsIChlMTgsIChlMTksIChlMjAsIChlMjEsIChlMjIsIChlMjMsIChlMjQsIChlMjUsIChlMjYsIChlMjcsIChlMjgsIChlMjksIChlMzAsIChlMzEsIChlMzIsIChlMzMsIChlMzQsIChlMzUsIChlMzYsIChlMzcsIChlMzgsIChlMzksIChlNDAsIChlNDEsIChlNDIsIChlNDMsIChlNDQsIChlNDUsIChlNDYsIChlNDcsIChlNDgsIChlNDksIE5ETkJPT1NUX1BQX05JTCkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzUxKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCkgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIChlNSwgKGU2LCAoZTcsIChlOCwgKGU5LCAoZTEwLCAoZTExLCAoZTEyLCAoZTEzLCAoZTE0LCAoZTE1LCAoZTE2LCAoZTE3LCAoZTE4LCAoZTE5LCAoZTIwLCAoZTIxLCAoZTIyLCAoZTIzLCAoZTI0LCAoZTI1LCAoZTI2LCAoZTI3LCAoZTI4LCAoZTI5LCAoZTMwLCAoZTMxLCAoZTMyLCAoZTMzLCAoZTM0LCAoZTM1LCAoZTM2LCAoZTM3LCAoZTM4LCAoZTM5LCAoZTQwLCAoZTQxLCAoZTQyLCAoZTQzLCAoZTQ0LCAoZTQ1LCAoZTQ2LCAoZTQ3LCAoZTQ4LCAoZTQ5LCAoZTUwLCBORE5CT09TVF9QUF9OSUwpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfNTIoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEpIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCAoZTUsIChlNiwgKGU3LCAoZTgsIChlOSwgKGUxMCwgKGUxMSwgKGUxMiwgKGUxMywgKGUxNCwgKGUxNSwgKGUxNiwgKGUxNywgKGUxOCwgKGUxOSwgKGUyMCwgKGUyMSwgKGUyMiwgKGUyMywgKGUyNCwgKGUyNSwgKGUyNiwgKGUyNywgKGUyOCwgKGUyOSwgKGUzMCwgKGUzMSwgKGUzMiwgKGUzMywgKGUzNCwgKGUzNSwgKGUzNiwgKGUzNywgKGUzOCwgKGUzOSwgKGU0MCwgKGU0MSwgKGU0MiwgKGU0MywgKGU0NCwgKGU0NSwgKGU0NiwgKGU0NywgKGU0OCwgKGU0OSwgKGU1MCwgKGU1MSwgTkROQk9PU1RfUFBfTklMKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF81MyhlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyKSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCAoZTYsIChlNywgKGU4LCAoZTksIChlMTAsIChlMTEsIChlMTIsIChlMTMsIChlMTQsIChlMTUsIChlMTYsIChlMTcsIChlMTgsIChlMTksIChlMjAsIChlMjEsIChlMjIsIChlMjMsIChlMjQsIChlMjUsIChlMjYsIChlMjcsIChlMjgsIChlMjksIChlMzAsIChlMzEsIChlMzIsIChlMzMsIChlMzQsIChlMzUsIChlMzYsIChlMzcsIChlMzgsIChlMzksIChlNDAsIChlNDEsIChlNDIsIChlNDMsIChlNDQsIChlNDUsIChlNDYsIChlNDcsIChlNDgsIChlNDksIChlNTAsIChlNTEsIChlNTIsIE5ETkJPT1NUX1BQX05JTCkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzU0KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MykgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIChlNSwgKGU2LCAoZTcsIChlOCwgKGU5LCAoZTEwLCAoZTExLCAoZTEyLCAoZTEzLCAoZTE0LCAoZTE1LCAoZTE2LCAoZTE3LCAoZTE4LCAoZTE5LCAoZTIwLCAoZTIxLCAoZTIyLCAoZTIzLCAoZTI0LCAoZTI1LCAoZTI2LCAoZTI3LCAoZTI4LCAoZTI5LCAoZTMwLCAoZTMxLCAoZTMyLCAoZTMzLCAoZTM0LCAoZTM1LCAoZTM2LCAoZTM3LCAoZTM4LCAoZTM5LCAoZTQwLCAoZTQxLCAoZTQyLCAoZTQzLCAoZTQ0LCAoZTQ1LCAoZTQ2LCAoZTQ3LCAoZTQ4LCAoZTQ5LCAoZTUwLCAoZTUxLCAoZTUyLCAoZTUzLCBORE5CT09TVF9QUF9OSUwpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfNTUoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQpIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCAoZTUsIChlNiwgKGU3LCAoZTgsIChlOSwgKGUxMCwgKGUxMSwgKGUxMiwgKGUxMywgKGUxNCwgKGUxNSwgKGUxNiwgKGUxNywgKGUxOCwgKGUxOSwgKGUyMCwgKGUyMSwgKGUyMiwgKGUyMywgKGUyNCwgKGUyNSwgKGUyNiwgKGUyNywgKGUyOCwgKGUyOSwgKGUzMCwgKGUzMSwgKGUzMiwgKGUzMywgKGUzNCwgKGUzNSwgKGUzNiwgKGUzNywgKGUzOCwgKGUzOSwgKGU0MCwgKGU0MSwgKGU0MiwgKGU0MywgKGU0NCwgKGU0NSwgKGU0NiwgKGU0NywgKGU0OCwgKGU0OSwgKGU1MCwgKGU1MSwgKGU1MiwgKGU1MywgKGU1NCwgTkROQk9PU1RfUFBfTklMKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF81NihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1KSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCAoZTYsIChlNywgKGU4LCAoZTksIChlMTAsIChlMTEsIChlMTIsIChlMTMsIChlMTQsIChlMTUsIChlMTYsIChlMTcsIChlMTgsIChlMTksIChlMjAsIChlMjEsIChlMjIsIChlMjMsIChlMjQsIChlMjUsIChlMjYsIChlMjcsIChlMjgsIChlMjksIChlMzAsIChlMzEsIChlMzIsIChlMzMsIChlMzQsIChlMzUsIChlMzYsIChlMzcsIChlMzgsIChlMzksIChlNDAsIChlNDEsIChlNDIsIChlNDMsIChlNDQsIChlNDUsIChlNDYsIChlNDcsIChlNDgsIChlNDksIChlNTAsIChlNTEsIChlNTIsIChlNTMsIChlNTQsIChlNTUsIE5ETkJPT1NUX1BQX05JTCkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzU3KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NikgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIChlNSwgKGU2LCAoZTcsIChlOCwgKGU5LCAoZTEwLCAoZTExLCAoZTEyLCAoZTEzLCAoZTE0LCAoZTE1LCAoZTE2LCAoZTE3LCAoZTE4LCAoZTE5LCAoZTIwLCAoZTIxLCAoZTIyLCAoZTIzLCAoZTI0LCAoZTI1LCAoZTI2LCAoZTI3LCAoZTI4LCAoZTI5LCAoZTMwLCAoZTMxLCAoZTMyLCAoZTMzLCAoZTM0LCAoZTM1LCAoZTM2LCAoZTM3LCAoZTM4LCAoZTM5LCAoZTQwLCAoZTQxLCAoZTQyLCAoZTQzLCAoZTQ0LCAoZTQ1LCAoZTQ2LCAoZTQ3LCAoZTQ4LCAoZTQ5LCAoZTUwLCAoZTUxLCAoZTUyLCAoZTUzLCAoZTU0LCAoZTU1LCAoZTU2LCBORE5CT09TVF9QUF9OSUwpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfNTgoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcpIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCAoZTUsIChlNiwgKGU3LCAoZTgsIChlOSwgKGUxMCwgKGUxMSwgKGUxMiwgKGUxMywgKGUxNCwgKGUxNSwgKGUxNiwgKGUxNywgKGUxOCwgKGUxOSwgKGUyMCwgKGUyMSwgKGUyMiwgKGUyMywgKGUyNCwgKGUyNSwgKGUyNiwgKGUyNywgKGUyOCwgKGUyOSwgKGUzMCwgKGUzMSwgKGUzMiwgKGUzMywgKGUzNCwgKGUzNSwgKGUzNiwgKGUzNywgKGUzOCwgKGUzOSwgKGU0MCwgKGU0MSwgKGU0MiwgKGU0MywgKGU0NCwgKGU0NSwgKGU0NiwgKGU0NywgKGU0OCwgKGU0OSwgKGU1MCwgKGU1MSwgKGU1MiwgKGU1MywgKGU1NCwgKGU1NSwgKGU1NiwgKGU1NywgTkROQk9PU1RfUFBfTklMKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF81OShlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4KSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCAoZTYsIChlNywgKGU4LCAoZTksIChlMTAsIChlMTEsIChlMTIsIChlMTMsIChlMTQsIChlMTUsIChlMTYsIChlMTcsIChlMTgsIChlMTksIChlMjAsIChlMjEsIChlMjIsIChlMjMsIChlMjQsIChlMjUsIChlMjYsIChlMjcsIChlMjgsIChlMjksIChlMzAsIChlMzEsIChlMzIsIChlMzMsIChlMzQsIChlMzUsIChlMzYsIChlMzcsIChlMzgsIChlMzksIChlNDAsIChlNDEsIChlNDIsIChlNDMsIChlNDQsIChlNDUsIChlNDYsIChlNDcsIChlNDgsIChlNDksIChlNTAsIChlNTEsIChlNTIsIChlNTMsIChlNTQsIChlNTUsIChlNTYsIChlNTcsIChlNTgsIE5ETkJPT1NUX1BQX05JTCkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzYwKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSkgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIChlNSwgKGU2LCAoZTcsIChlOCwgKGU5LCAoZTEwLCAoZTExLCAoZTEyLCAoZTEzLCAoZTE0LCAoZTE1LCAoZTE2LCAoZTE3LCAoZTE4LCAoZTE5LCAoZTIwLCAoZTIxLCAoZTIyLCAoZTIzLCAoZTI0LCAoZTI1LCAoZTI2LCAoZTI3LCAoZTI4LCAoZTI5LCAoZTMwLCAoZTMxLCAoZTMyLCAoZTMzLCAoZTM0LCAoZTM1LCAoZTM2LCAoZTM3LCAoZTM4LCAoZTM5LCAoZTQwLCAoZTQxLCAoZTQyLCAoZTQzLCAoZTQ0LCAoZTQ1LCAoZTQ2LCAoZTQ3LCAoZTQ4LCAoZTQ5LCAoZTUwLCAoZTUxLCAoZTUyLCAoZTUzLCAoZTU0LCAoZTU1LCAoZTU2LCAoZTU3LCAoZTU4LCAoZTU5LCBORE5CT09TVF9QUF9OSUwpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfNjEoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjApIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCAoZTUsIChlNiwgKGU3LCAoZTgsIChlOSwgKGUxMCwgKGUxMSwgKGUxMiwgKGUxMywgKGUxNCwgKGUxNSwgKGUxNiwgKGUxNywgKGUxOCwgKGUxOSwgKGUyMCwgKGUyMSwgKGUyMiwgKGUyMywgKGUyNCwgKGUyNSwgKGUyNiwgKGUyNywgKGUyOCwgKGUyOSwgKGUzMCwgKGUzMSwgKGUzMiwgKGUzMywgKGUzNCwgKGUzNSwgKGUzNiwgKGUzNywgKGUzOCwgKGUzOSwgKGU0MCwgKGU0MSwgKGU0MiwgKGU0MywgKGU0NCwgKGU0NSwgKGU0NiwgKGU0NywgKGU0OCwgKGU0OSwgKGU1MCwgKGU1MSwgKGU1MiwgKGU1MywgKGU1NCwgKGU1NSwgKGU1NiwgKGU1NywgKGU1OCwgKGU1OSwgKGU2MCwgTkROQk9PU1RfUFBfTklMKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKQotIyBkZWZpbmUgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVF82MihlMCwgZTEsIGUyLCBlMywgZTQsIGU1LCBlNiwgZTcsIGU4LCBlOSwgZTEwLCBlMTEsIGUxMiwgZTEzLCBlMTQsIGUxNSwgZTE2LCBlMTcsIGUxOCwgZTE5LCBlMjAsIGUyMSwgZTIyLCBlMjMsIGUyNCwgZTI1LCBlMjYsIGUyNywgZTI4LCBlMjksIGUzMCwgZTMxLCBlMzIsIGUzMywgZTM0LCBlMzUsIGUzNiwgZTM3LCBlMzgsIGUzOSwgZTQwLCBlNDEsIGU0MiwgZTQzLCBlNDQsIGU0NSwgZTQ2LCBlNDcsIGU0OCwgZTQ5LCBlNTAsIGU1MSwgZTUyLCBlNTMsIGU1NCwgZTU1LCBlNTYsIGU1NywgZTU4LCBlNTksIGU2MCwgZTYxKSAoZTAsIChlMSwgKGUyLCAoZTMsIChlNCwgKGU1LCAoZTYsIChlNywgKGU4LCAoZTksIChlMTAsIChlMTEsIChlMTIsIChlMTMsIChlMTQsIChlMTUsIChlMTYsIChlMTcsIChlMTgsIChlMTksIChlMjAsIChlMjEsIChlMjIsIChlMjMsIChlMjQsIChlMjUsIChlMjYsIChlMjcsIChlMjgsIChlMjksIChlMzAsIChlMzEsIChlMzIsIChlMzMsIChlMzQsIChlMzUsIChlMzYsIChlMzcsIChlMzgsIChlMzksIChlNDAsIChlNDEsIChlNDIsIChlNDMsIChlNDQsIChlNDUsIChlNDYsIChlNDcsIChlNDgsIChlNDksIChlNTAsIChlNTEsIChlNTIsIChlNTMsIChlNTQsIChlNTUsIChlNTYsIChlNTcsIChlNTgsIChlNTksIChlNjAsIChlNjEsIE5ETkJPT1NUX1BQX05JTCkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9UVVBMRV9UT19MSVNUXzYzKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MikgKGUwLCAoZTEsIChlMiwgKGUzLCAoZTQsIChlNSwgKGU2LCAoZTcsIChlOCwgKGU5LCAoZTEwLCAoZTExLCAoZTEyLCAoZTEzLCAoZTE0LCAoZTE1LCAoZTE2LCAoZTE3LCAoZTE4LCAoZTE5LCAoZTIwLCAoZTIxLCAoZTIyLCAoZTIzLCAoZTI0LCAoZTI1LCAoZTI2LCAoZTI3LCAoZTI4LCAoZTI5LCAoZTMwLCAoZTMxLCAoZTMyLCAoZTMzLCAoZTM0LCAoZTM1LCAoZTM2LCAoZTM3LCAoZTM4LCAoZTM5LCAoZTQwLCAoZTQxLCAoZTQyLCAoZTQzLCAoZTQ0LCAoZTQ1LCAoZTQ2LCAoZTQ3LCAoZTQ4LCAoZTQ5LCAoZTUwLCAoZTUxLCAoZTUyLCAoZTUzLCAoZTU0LCAoZTU1LCAoZTU2LCAoZTU3LCAoZTU4LCAoZTU5LCAoZTYwLCAoZTYxLCAoZTYyLCBORE5CT09TVF9QUF9OSUwpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1BQX1RVUExFX1RPX0xJU1RfNjQoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMpIChlMCwgKGUxLCAoZTIsIChlMywgKGU0LCAoZTUsIChlNiwgKGU3LCAoZTgsIChlOSwgKGUxMCwgKGUxMSwgKGUxMiwgKGUxMywgKGUxNCwgKGUxNSwgKGUxNiwgKGUxNywgKGUxOCwgKGUxOSwgKGUyMCwgKGUyMSwgKGUyMiwgKGUyMywgKGUyNCwgKGUyNSwgKGUyNiwgKGUyNywgKGUyOCwgKGUyOSwgKGUzMCwgKGUzMSwgKGUzMiwgKGUzMywgKGUzNCwgKGUzNSwgKGUzNiwgKGUzNywgKGUzOCwgKGUzOSwgKGU0MCwgKGU0MSwgKGU0MiwgKGU0MywgKGU0NCwgKGU0NSwgKGU0NiwgKGU0NywgKGU0OCwgKGU0OSwgKGU1MCwgKGU1MSwgKGU1MiwgKGU1MywgKGU1NCwgKGU1NSwgKGU1NiwgKGU1NywgKGU1OCwgKGU1OSwgKGU2MCwgKGU2MSwgKGU2MiwgKGU2MywgTkROQk9PU1RfUFBfTklMKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKSkpKQotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcmVwcm9jZXNzb3IvdmFyaWFkaWMvZWxlbS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci92YXJpYWRpYy9lbGVtLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2M3MmVjYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci92YXJpYWRpYy9lbGVtLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLSMgLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgRWR3YXJkIERpZW5lciAyMDExLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIChDKSBDb3B5cmlnaHQgUGF1bCBNZW5zb25pZGVzIDIwMTEuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSAgICAgICoKLSMgICogICAgIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0ICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSMgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovCi0jCi0jIC8qIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4gKi8KLSMKLSMgaWZuZGVmIE5ETkJPT1NUX1BSRVBST0NFU1NPUl9WQVJJQURJQ19FTEVNX0hQUAotIyBkZWZpbmUgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1ZBUklBRElDX0VMRU1fSFBQCi0jCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29uZmlnL2NvbmZpZy5ocHA+Ci0jCi0jIC8qIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU0gKi8KLSMKLSMgaWYgTkROQk9PU1RfUFBfVkFSSUFESUNTCi0jICAgIGlmIE5ETkJPT1NUX1BQX1ZBUklBRElDU19NU1ZDCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTShuLCAuLi4pIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fSShuLF9fVkFfQVJHU19fKQotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fSShuLCAuLi4pIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9DQVQoTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTV8sIG4pKF9fVkFfQVJHU19fLCksKQotIyAgICBlbHNlCi0jICAgICAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTShuLCAuLi4pIE5ETkJPT1NUX1BQX0NBVChORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXywgbikoX19WQV9BUkdTX18sKQotIyAgICBlbmRpZgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTV8wKGUwLCAuLi4pIGUwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzEoZTAsIGUxLCAuLi4pIGUxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzIoZTAsIGUxLCBlMiwgLi4uKSBlMgotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTV8zKGUwLCBlMSwgZTIsIGUzLCAuLi4pIGUzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzQoZTAsIGUxLCBlMiwgZTMsIGU0LCAuLi4pIGU0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzUoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgLi4uKSBlNQotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTV82KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCAuLi4pIGU2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzcoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCAuLi4pIGU3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzgoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgLi4uKSBlOAotIyAgICBkZWZpbmUgTkROQk9PU1RfUFBfVkFSSUFESUNfRUxFTV85KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCAuLi4pIGU5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzEwKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIC4uLikgZTEwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzExKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgLi4uKSBlMTEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fMTIoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIC4uLikgZTEyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzEzKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIC4uLikgZTEzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzE0KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgLi4uKSBlMTQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fMTUoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIC4uLikgZTE1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzE2KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIC4uLikgZTE2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzE3KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgLi4uKSBlMTcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fMTgoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIC4uLikgZTE4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzE5KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIC4uLikgZTE5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzIwKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgLi4uKSBlMjAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fMjEoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIC4uLikgZTIxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzIyKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIC4uLikgZTIyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzIzKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgLi4uKSBlMjMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fMjQoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIC4uLikgZTI0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzI1KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIC4uLikgZTI1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzI2KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgLi4uKSBlMjYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fMjcoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIC4uLikgZTI3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzI4KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIC4uLikgZTI4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzI5KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgLi4uKSBlMjkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fMzAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIC4uLikgZTMwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzMxKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIC4uLikgZTMxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzMyKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgLi4uKSBlMzIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fMzMoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIC4uLikgZTMzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzM0KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIC4uLikgZTM0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzM1KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgLi4uKSBlMzUKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fMzYoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIC4uLikgZTM2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzM3KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIC4uLikgZTM3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzM4KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgLi4uKSBlMzgKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fMzkoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIC4uLikgZTM5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzQwKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIC4uLikgZTQwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzQxKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgLi4uKSBlNDEKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fNDIoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIC4uLikgZTQyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzQzKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIC4uLikgZTQzCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzQ0KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgLi4uKSBlNDQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fNDUoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIC4uLikgZTQ1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzQ2KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIC4uLikgZTQ2Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzQ3KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgLi4uKSBlNDcKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fNDgoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIC4uLikgZTQ4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzQ5KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIC4uLikgZTQ5Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzUwKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgLi4uKSBlNTAKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fNTEoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIC4uLikgZTUxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzUyKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIC4uLikgZTUyCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzUzKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgLi4uKSBlNTMKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fNTQoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIC4uLikgZTU0Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzU1KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIC4uLikgZTU1Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzU2KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgLi4uKSBlNTYKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fNTcoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIC4uLikgZTU3Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzU4KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIC4uLikgZTU4Ci0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzU5KGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgLi4uKSBlNTkKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fNjAoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIC4uLikgZTYwCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzYxKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIC4uLikgZTYxCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19FTEVNXzYyKGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBlNywgZTgsIGU5LCBlMTAsIGUxMSwgZTEyLCBlMTMsIGUxNCwgZTE1LCBlMTYsIGUxNywgZTE4LCBlMTksIGUyMCwgZTIxLCBlMjIsIGUyMywgZTI0LCBlMjUsIGUyNiwgZTI3LCBlMjgsIGUyOSwgZTMwLCBlMzEsIGUzMiwgZTMzLCBlMzQsIGUzNSwgZTM2LCBlMzcsIGUzOCwgZTM5LCBlNDAsIGU0MSwgZTQyLCBlNDMsIGU0NCwgZTQ1LCBlNDYsIGU0NywgZTQ4LCBlNDksIGU1MCwgZTUxLCBlNTIsIGU1MywgZTU0LCBlNTUsIGU1NiwgZTU3LCBlNTgsIGU1OSwgZTYwLCBlNjEsIGU2MiwgLi4uKSBlNjIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1BQX1ZBUklBRElDX0VMRU1fNjMoZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMsIC4uLikgZTYzCi0jIGVuZGlmCi0jCi0jIGVuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3ByZXByb2Nlc3Nvci92YXJpYWRpYy9zaXplLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3ZhcmlhZGljL3NpemUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MDM0YTFjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcHJlcHJvY2Vzc29yL3ZhcmlhZGljL3NpemUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotIyAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBFZHdhcmQgRGllbmVyIDIwMTEuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgKEMpIENvcHlyaWdodCBQYXVsIE1lbnNvbmlkZXMgMjAxMS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlICAgICAgKgotIyAgKiAgICAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotIyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi8KLSMKLSMgLyogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLiAqLwotIwotIyBpZm5kZWYgTkROQk9PU1RfUFJFUFJPQ0VTU09SX1ZBUklBRElDX1NJWkVfSFBQCi0jIGRlZmluZSBORE5CT09TVF9QUkVQUk9DRVNTT1JfVkFSSUFESUNfU0laRV9IUFAKLSMKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb25maWcvY29uZmlnLmhwcD4KLSMKLSMgLyogTkROQk9PU1RfUFBfVkFSSUFESUNfU0laRSAqLwotIwotIyBpZiBORE5CT09TVF9QUF9WQVJJQURJQ1MKLSMgICAgaWYgTkROQk9PU1RfUFBfVkFSSUFESUNTX01TVkMKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19TSVpFKC4uLikgTkROQk9PU1RfUFBfQ0FUKE5ETkJPT1NUX1BQX1ZBUklBRElDX1NJWkVfSShfX1ZBX0FSR1NfXywgNjQsIDYzLCA2MiwgNjEsIDYwLCA1OSwgNTgsIDU3LCA1NiwgNTUsIDU0LCA1MywgNTIsIDUxLCA1MCwgNDksIDQ4LCA0NywgNDYsIDQ1LCA0NCwgNDMsIDQyLCA0MSwgNDAsIDM5LCAzOCwgMzcsIDM2LCAzNSwgMzQsIDMzLCAzMiwgMzEsIDMwLCAyOSwgMjgsIDI3LCAyNiwgMjUsIDI0LCAyMywgMjIsIDIxLCAyMCwgMTksIDE4LCAxNywgMTYsIDE1LCAxNCwgMTMsIDEyLCAxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsKSwpCi0jICAgIGVsc2UKLSMgICAgICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19TSVpFKC4uLikgTkROQk9PU1RfUFBfVkFSSUFESUNfU0laRV9JKF9fVkFfQVJHU19fLCA2NCwgNjMsIDYyLCA2MSwgNjAsIDU5LCA1OCwgNTcsIDU2LCA1NSwgNTQsIDUzLCA1MiwgNTEsIDUwLCA0OSwgNDgsIDQ3LCA0NiwgNDUsIDQ0LCA0MywgNDIsIDQxLCA0MCwgMzksIDM4LCAzNywgMzYsIDM1LCAzNCwgMzMsIDMyLCAzMSwgMzAsIDI5LCAyOCwgMjcsIDI2LCAyNSwgMjQsIDIzLCAyMiwgMjEsIDIwLCAxOSwgMTgsIDE3LCAxNiwgMTUsIDE0LCAxMywgMTIsIDExLCAxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwpCi0jICAgIGVuZGlmCi0jICAgIGRlZmluZSBORE5CT09TVF9QUF9WQVJJQURJQ19TSVpFX0koZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIGU3LCBlOCwgZTksIGUxMCwgZTExLCBlMTIsIGUxMywgZTE0LCBlMTUsIGUxNiwgZTE3LCBlMTgsIGUxOSwgZTIwLCBlMjEsIGUyMiwgZTIzLCBlMjQsIGUyNSwgZTI2LCBlMjcsIGUyOCwgZTI5LCBlMzAsIGUzMSwgZTMyLCBlMzMsIGUzNCwgZTM1LCBlMzYsIGUzNywgZTM4LCBlMzksIGU0MCwgZTQxLCBlNDIsIGU0MywgZTQ0LCBlNDUsIGU0NiwgZTQ3LCBlNDgsIGU0OSwgZTUwLCBlNTEsIGU1MiwgZTUzLCBlNTQsIGU1NSwgZTU2LCBlNTcsIGU1OCwgZTU5LCBlNjAsIGU2MSwgZTYyLCBlNjMsIHNpemUsIC4uLikgc2l6ZQotIyBlbmRpZgotIwotIyBlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9wcm9ncmVzcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Byb2dyZXNzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2Y1ZTllZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Byb2dyZXNzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0MyArMCwwIEBACi0vLyAgYm9vc3QgcHJvZ3Jlc3MuaHBwIGhlYWRlciBmaWxlICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgQ29weXJpZ2h0IEJlbWFuIERhd2VzIDE5OTQtOTkuICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QKLS8vICBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZQotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3RpbWVyIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAgUmV2aXNpb24gSGlzdG9yeQotLy8gICAxIERlYyAwMSAgQWRkIGxlYWRpbmcgcHJvZ3Jlc3MgZGlzcGxheSBzdHJpbmdzIChzdWdnZXN0ZWQgYnkgVG9vbiBLbmFwZW4pCi0vLyAgMjAgTWF5IDAxICBJbnRyb2R1Y2Ugc2V2ZXJhbCBzdGF0aWNfY2FzdHM8PiB0byBlbGltaW5hdGUgd2FybmluZyBtZXNzYWdlcwotLy8gICAgICAgICAgICAgKEZpeGVkIGJ5IEJlbWFuLCByZXBvcnRlZCBieSBIZXJ2ZSBCcm9ubmltYW5uKQotLy8gIDEyIEphbiAwMSAgQ2hhbmdlIHRvIGlubGluZSBpbXBsZW1lbnRhdGlvbiB0byBhbGxvdyB1c2Ugd2l0aG91dCBsaWJyYXJ5Ci0vLyAgICAgICAgICAgICBidWlsZHMuIFNlZSBkb2NzIGZvciBtb3JlIHJhdGlvbmFsZS4gKEJlbWFuIERhd2VzKSAKLS8vICAyMiBKdWwgOTkgIE5hbWUgY2hhbmdlZCB0byAuaHBwCi0vLyAgMTYgSnVsIDk5ICBTZWNvbmQgYmV0YQotLy8gICA2IEp1bCA5OSAgSW5pdGlhbCBib29zdCB2ZXJzaW9uCi0KLSNpZm5kZWYgTkROQk9PU1RfUFJPR1JFU1NfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1BST0dSRVNTX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGltZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3V0aWxpdHkuaHBwPiAgLy8gZm9yIG5vbmNvcHlhYmxlCi0jaW5jbHVkZSA8bmRuYm9vc3QvY3N0ZGludC5ocHA+ICAvLyBmb3IgdWludG1heF90Ci0jaW5jbHVkZSA8aW9zdHJlYW0+ICAgICAgICAgICAvLyBmb3Igb3N0cmVhbSwgY291dCwgZXRjCi0jaW5jbHVkZSA8c3RyaW5nPiAgICAgICAgICAgICAvLyBmb3Igc3RyaW5nCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLS8vICBwcm9ncmVzc190aW1lciAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vICBBIHByb2dyZXNzX3RpbWVyIGJlaGF2ZXMgbGlrZSBhIHRpbWVyIGV4Y2VwdCB0aGF0IHRoZSBkZXN0cnVjdG9yIGRpc3BsYXlzCi0vLyAgYW4gZWxhcHNlZCB0aW1lIG1lc3NhZ2UgYXQgYW4gYXBwcm9wcmlhdGUgcGxhY2UgaW4gYW4gYXBwcm9wcmlhdGUgZm9ybS4KLQotY2xhc3MgcHJvZ3Jlc3NfdGltZXIgOiBwdWJsaWMgdGltZXIsIHByaXZhdGUgbm9uY29weWFibGUKLXsKLSAgCi0gcHVibGljOgotICBleHBsaWNpdCBwcm9ncmVzc190aW1lciggc3RkOjpvc3RyZWFtICYgb3MgPSBzdGQ6OmNvdXQgKQotICAgICAvLyBvcyBpcyBoaW50OyBpbXBsZW1lbnRhdGlvbiBtYXkgaWdub3JlLCBwYXJ0aWN1bGFybHkgaW4gZW1iZWRkZWQgc3lzdGVtcwotICAgICA6IG1fb3Mob3MpIHt9Ci0gIH5wcm9ncmVzc190aW1lcigpCi0gIHsKLSAgLy8gIEEpIFRocm93aW5nIGFuIGV4Y2VwdGlvbiBmcm9tIGEgZGVzdHJ1Y3RvciBpcyBhIEJhZCBUaGluZy4KLSAgLy8gIEIpIFRoZSBwcm9ncmVzc190aW1lciBkZXN0cnVjdG9yIGRvZXMgb3V0cHV0IHdoaWNoIG1heSB0aHJvdy4KLSAgLy8gIEMpIEEgcHJvZ3Jlc3NfdGltZXIgaXMgdXN1YWxseSBub3QgY3JpdGljYWwgdG8gdGhlIGFwcGxpY2F0aW9uLgotICAvLyAgVGhlcmVmb3JlLCB3cmFwIHRoZSBJL08gaW4gYSB0cnkgYmxvY2ssIGNhdGNoIGFuZCBpZ25vcmUgYWxsIGV4Y2VwdGlvbnMuCi0gICAgdHJ5Ci0gICAgewotICAgICAgLy8gdXNlIGlzdHJlYW0gaW5zdGVhZCBvZiBpb3NfYmFzZSB0byB3b3JrYXJvdW5kIEdOVSBwcm9ibGVtIChHcmVnIENoaWNhcmVzKQotICAgICAgc3RkOjppc3RyZWFtOjpmbXRmbGFncyBvbGRfZmxhZ3MgPSBtX29zLnNldGYoIHN0ZDo6aXN0cmVhbTo6Zml4ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmlzdHJlYW06OmZsb2F0ZmllbGQgKTsKLSAgICAgIHN0ZDo6c3RyZWFtc2l6ZSBvbGRfcHJlYyA9IG1fb3MucHJlY2lzaW9uKCAyICk7Ci0gICAgICBtX29zIDw8IGVsYXBzZWQoKSA8PCAiIHNcbiIgLy8gInMiIGlzIFN5c3RlbSBJbnRlcm5hdGlvbmFsIGQnVW5pdGVzIHN0ZAotICAgICAgICAgICAgICAgICAgICAgICAgPDwgc3RkOjplbmRsOwotICAgICAgbV9vcy5mbGFncyggb2xkX2ZsYWdzICk7Ci0gICAgICBtX29zLnByZWNpc2lvbiggb2xkX3ByZWMgKTsKLSAgICB9Ci0KLSAgICBjYXRjaCAoLi4uKSB7fSAvLyBlYXQgYW55IGV4Y2VwdGlvbnMKLSAgfSAvLyB+cHJvZ3Jlc3NfdGltZXIKLQotIHByaXZhdGU6Ci0gIHN0ZDo6b3N0cmVhbSAmIG1fb3M7Ci19OwotCi0KLS8vICBwcm9ncmVzc19kaXNwbGF5ICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vICBwcm9ncmVzc19kaXNwbGF5IGRpc3BsYXlzIGFuIGFwcHJvcHJpYXRlIGluZGljYXRpb24gb2YgCi0vLyAgcHJvZ3Jlc3MgYXQgYW4gYXBwcm9wcmlhdGUgcGxhY2UgaW4gYW4gYXBwcm9wcmlhdGUgZm9ybS4KLQotLy8gTk9URTogKEphbiAxMiwgMjAwMSkgVHJpZWQgdG8gY2hhbmdlIHVuc2lnbmVkIGxvbmcgdG8gbmRuYm9vc3Q6OnVpbnRtYXhfdCwgYnV0Ci0vLyBmb3VuZCBzb21lIGNvbXBpbGVycyBjb3VsZG4ndCBoYW5kbGUgdGhlIHJlcXVpcmVkIGNvbnZlcnNpb24gdG8gZG91YmxlLgotLy8gUmV2ZXJ0ZWQgdG8gdW5zaWduZWQgbG9uZyB1bnRpbCB0aGUgY29tcGlsZXJzIGNhdGNoIHVwLiAKLQotY2xhc3MgcHJvZ3Jlc3NfZGlzcGxheSA6IHByaXZhdGUgbm9uY29weWFibGUKLXsKLSBwdWJsaWM6Ci0gIGV4cGxpY2l0IHByb2dyZXNzX2Rpc3BsYXkoIHVuc2lnbmVkIGxvbmcgZXhwZWN0ZWRfY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6b3N0cmVhbSAmIG9zID0gc3RkOjpjb3V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmIHMxID0gIlxuIiwgLy9sZWFkaW5nIHN0cmluZ3MKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJiBzMiA9ICIiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyAmIHMzID0gIiIgKQotICAgLy8gb3MgaXMgaGludDsgaW1wbGVtZW50YXRpb24gbWF5IGlnbm9yZSwgcGFydGljdWxhcmx5IGluIGVtYmVkZGVkIHN5c3RlbXMKLSAgIDogbV9vcyhvcyksIG1fczEoczEpLCBtX3MyKHMyKSwgbV9zMyhzMykgeyByZXN0YXJ0KGV4cGVjdGVkX2NvdW50KTsgfQotCi0gIHZvaWQgICAgICAgICAgIHJlc3RhcnQoIHVuc2lnbmVkIGxvbmcgZXhwZWN0ZWRfY291bnQgKQotICAvLyAgRWZmZWN0czogZGlzcGxheSBhcHByb3ByaWF0ZSBzY2FsZQotICAvLyAgUG9zdGNvbmRpdGlvbnM6IGNvdW50KCk9PTAsIGV4cGVjdGVkX2NvdW50KCk9PWV4cGVjdGVkX2NvdW50Ci0gIHsKLSAgICBfY291bnQgPSBfbmV4dF90aWNfY291bnQgPSBfdGljID0gMDsKLSAgICBfZXhwZWN0ZWRfY291bnQgPSBleHBlY3RlZF9jb3VudDsKLQotICAgIG1fb3MgPDwgbV9zMSA8PCAiMCUgICAxMCAgIDIwICAgMzAgICA0MCAgIDUwICAgNjAgICA3MCAgIDgwICAgOTAgICAxMDAlXG4iCi0gICAgICAgICA8PCBtX3MyIDw8ICJ8LS0tLXwtLS0tfC0tLS18LS0tLXwtLS0tfC0tLS18LS0tLXwtLS0tfC0tLS18LS0tLXwiCi0gICAgICAgICA8PCBzdGQ6OmVuZGwgIC8vIGVuZGwgaW1wbGllcyBmbHVzaCwgd2hpY2ggZW5zdXJlcyBkaXNwbGF5Ci0gICAgICAgICA8PCBtX3MzOwotICAgIGlmICggIV9leHBlY3RlZF9jb3VudCApIF9leHBlY3RlZF9jb3VudCA9IDE7ICAvLyBwcmV2ZW50IGRpdmlkZSBieSB6ZXJvCi0gIH0gLy8gcmVzdGFydAotCi0gIHVuc2lnbmVkIGxvbmcgIG9wZXJhdG9yKz0oIHVuc2lnbmVkIGxvbmcgaW5jcmVtZW50ICkKLSAgLy8gIEVmZmVjdHM6IERpc3BsYXkgYXBwcm9wcmlhdGUgcHJvZ3Jlc3MgdGljIGlmIG5lZWRlZC4KLSAgLy8gIFBvc3Rjb25kaXRpb25zOiBjb3VudCgpPT0gb3JpZ2luYWwgY291bnQoKSArIGluY3JlbWVudAotICAvLyAgUmV0dXJuczogY291bnQoKS4KLSAgewotICAgIGlmICggKF9jb3VudCArPSBpbmNyZW1lbnQpID49IF9uZXh0X3RpY19jb3VudCApIHsgZGlzcGxheV90aWMoKTsgfQotICAgIHJldHVybiBfY291bnQ7Ci0gIH0KLQotICB1bnNpZ25lZCBsb25nICBvcGVyYXRvcisrKCkgICAgICAgICAgIHsgcmV0dXJuIG9wZXJhdG9yKz0oIDEgKTsgfQotICB1bnNpZ25lZCBsb25nICBjb3VudCgpIGNvbnN0ICAgICAgICAgIHsgcmV0dXJuIF9jb3VudDsgfQotICB1bnNpZ25lZCBsb25nICBleHBlY3RlZF9jb3VudCgpIGNvbnN0IHsgcmV0dXJuIF9leHBlY3RlZF9jb3VudDsgfQotCi0gIHByaXZhdGU6Ci0gIHN0ZDo6b3N0cmVhbSAmICAgICBtX29zOyAgLy8gbWF5IG5vdCBiZSBwcmVzZW50IGluIGFsbCBpbXBzCi0gIGNvbnN0IHN0ZDo6c3RyaW5nICBtX3MxOyAgLy8gc3RyaW5nIGlzIG1vcmUgZ2VuZXJhbCwgc2FmZXIgdGhhbiAKLSAgY29uc3Qgc3RkOjpzdHJpbmcgIG1fczI7ICAvLyAgY29uc3QgY2hhciAqLCBhbmQgZWZmaWNpZW5jeSBvciBzaXplIGFyZQotICBjb25zdCBzdGQ6OnN0cmluZyAgbV9zMzsgIC8vICBub3QgaXNzdWVzCi0KLSAgdW5zaWduZWQgbG9uZyBfY291bnQsIF9leHBlY3RlZF9jb3VudCwgX25leHRfdGljX2NvdW50OwotICB1bnNpZ25lZCBpbnQgIF90aWM7Ci0gIHZvaWQgZGlzcGxheV90aWMoKQotICB7Ci0gICAgLy8gdXNlIG9mIGZsb2F0aW5nIHBvaW50IGVuc3VyZXMgdGhhdCBib3RoIGxhcmdlIGFuZCBzbWFsbCBjb3VudHMKLSAgICAvLyB3b3JrIGNvcnJlY3RseS4gIHN0YXRpY19jYXN0PD4oKSBpcyBhbHNvIHVzZWQgc2V2ZXJhbCBwbGFjZXMKLSAgICAvLyB0byBzdXBwcmVzcyBzcHVyaW91cyBjb21waWxlciB3YXJuaW5ncy4gCi0gICAgdW5zaWduZWQgaW50IHRpY3NfbmVlZGVkID0KLSAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oCi0gICAgICAgIChzdGF0aWNfY2FzdDxkb3VibGU+KF9jb3VudCkvX2V4cGVjdGVkX2NvdW50KSo1MC4wICk7Ci0gICAgZG8geyBtX29zIDw8ICcqJyA8PCBzdGQ6OmZsdXNoOyB9IHdoaWxlICggKytfdGljIDwgdGljc19uZWVkZWQgKTsKLSAgICBfbmV4dF90aWNfY291bnQgPSAKLSAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KChfdGljLzUwLjApKl9leHBlY3RlZF9jb3VudCk7Ci0gICAgaWYgKCBfY291bnQgPT0gX2V4cGVjdGVkX2NvdW50ICkgewotICAgICAgaWYgKCBfdGljIDwgNTEgKSBtX29zIDw8ICcqJzsKLSAgICAgIG1fb3MgPDwgc3RkOjplbmRsOwotICAgICAgfQotICB9IC8vIGRpc3BsYXlfdGljCi19OwotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgIC8vIE5ETkJPT1NUX1BST0dSRVNTX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yYW5kb20vZGV0YWlsL2NvbmZpZy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JhbmRvbS9kZXRhaWwvY29uZmlnLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGQ3ZjdiYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JhbmRvbS9kZXRhaWwvY29uZmlnLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLS8qIGJvb3N0IHJhbmRvbS9kZXRhaWwvY29uZmlnLmhwcCBoZWFkZXIgZmlsZQotICoKLSAqIENvcHlyaWdodCBTdGV2ZW4gV2F0YW5hYmUgMjAwOQotICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0gKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLSAqCi0gKiAkSWQ6IGNvbmZpZy5ocHAgNTI0OTIgMjAwOS0wNC0xOSAxNDo1NTo1N1ogc3RldmVuX3dhdGFuYWJlICQKLSAqLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotI2lmIChkZWZpbmVkKE5ETkJPT1NUX05PX09QRVJBVE9SU19JTl9OQU1FU1BBQ0UpIHx8IGRlZmluZWQoTkROQk9PU1RfTk9fTUVNQkVSX1RFTVBMQVRFX0ZSSUVORFMpKSBcCi0gICAgJiYgIWRlZmluZWQoTkROQk9PU1RfTVNWQykKLSAgICAjZGVmaW5lIE5ETkJPT1NUX1JBTkRPTV9OT19TVFJFQU1fT1BFUkFUT1JTCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZG9tL2RldGFpbC9jb25zdF9tb2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yYW5kb20vZGV0YWlsL2NvbnN0X21vZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIwMjc3ZjIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yYW5kb20vZGV0YWlsL2NvbnN0X21vZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMTYgKzAsMCBAQAotLyogYm9vc3QgcmFuZG9tL2RldGFpbC9jb25zdF9tb2QuaHBwIGhlYWRlciBmaWxlCi0gKgotICogQ29weXJpZ2h0IEplbnMgTWF1cmVyIDIwMDAtMjAwMQotICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0gKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLSAqCi0gKiAkSWQ6IGNvbnN0X21vZC5ocHAgNzEwMTggMjAxMS0wNC0wNSAyMToyNzo1Mlogc3RldmVuX3dhdGFuYWJlICQKLSAqCi0gKiBSZXZpc2lvbiBoaXN0b3J5Ci0gKiAgMjAwMS0wMi0xOCAgbW92ZWQgdG8gaW5kaXZpZHVhbCBoZWFkZXIgZmlsZXMKLSAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JBTkRPTV9DT05TVF9NT0RfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkRPTV9DT05TVF9NT0RfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9hc3NlcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3N0YXRpY19hc3NlcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2ludGVnZXJfdHJhaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9tYWtlX3Vuc2lnbmVkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5kb20vZGV0YWlsL2xhcmdlX2FyaXRobWV0aWMuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZG9tL2RldGFpbC9kaXNhYmxlX3dhcm5pbmdzLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLW5hbWVzcGFjZSByYW5kb20gewotCi10ZW1wbGF0ZTxjbGFzcyBJbnRUeXBlLCBJbnRUeXBlIG0+Ci1jbGFzcyBjb25zdF9tb2QKLXsKLXB1YmxpYzoKLSAgc3RhdGljIEludFR5cGUgYXBwbHkoSW50VHlwZSB4KQotICB7Ci0gICAgaWYoKCh1bnNpZ25lZF9tKCkgLSAxKSAmIHVuc2lnbmVkX20oKSkgPT0gMCkKLSAgICAgIHJldHVybiAodW5zaWduZWRfdHlwZSh4KSkgJiAodW5zaWduZWRfbSgpIC0gMSk7Ci0gICAgZWxzZSB7Ci0gICAgICBJbnRUeXBlIHN1cHJlc3Nfd2FybmluZ3MgPSAobSA9PSAwKTsKLSAgICAgIE5ETkJPT1NUX0FTU0VSVChzdXByZXNzX3dhcm5pbmdzID09IDApOwotICAgICAgcmV0dXJuIHggJSAobSArIHN1cHJlc3Nfd2FybmluZ3MpOwotICAgIH0KLSAgfQotCi0gIHN0YXRpYyBJbnRUeXBlIGFkZChJbnRUeXBlIHgsIEludFR5cGUgYykKLSAgewotICAgIGlmKCgodW5zaWduZWRfbSgpIC0gMSkgJiB1bnNpZ25lZF9tKCkpID09IDApCi0gICAgICByZXR1cm4gKHVuc2lnbmVkX3R5cGUoeCkgKyB1bnNpZ25lZF90eXBlKGMpKSAmICh1bnNpZ25lZF9tKCkgLSAxKTsKLSAgICBlbHNlIGlmKGMgPT0gMCkKLSAgICAgIHJldHVybiB4OwotICAgIGVsc2UgaWYoeCA8IG0gLSBjKQotICAgICAgcmV0dXJuIHggKyBjOwotICAgIGVsc2UKLSAgICAgIHJldHVybiB4IC0gKG0gLSBjKTsKLSAgfQotCi0gIHN0YXRpYyBJbnRUeXBlIG11bHQoSW50VHlwZSBhLCBJbnRUeXBlIHgpCi0gIHsKLSAgICBpZigoKHVuc2lnbmVkX20oKSAtIDEpICYgdW5zaWduZWRfbSgpKSA9PSAwKQotICAgICAgcmV0dXJuIHVuc2lnbmVkX3R5cGUoYSkgKiB1bnNpZ25lZF90eXBlKHgpICYgKHVuc2lnbmVkX20oKSAtIDEpOwotICAgIGVsc2UgaWYoYSA9PSAwKQotICAgICAgcmV0dXJuIDA7Ci0gICAgZWxzZSBpZihhID09IDEpCi0gICAgICByZXR1cm4geDsKLSAgICBlbHNlIGlmKG0gPD0gdHJhaXRzOjpjb25zdF9tYXgvYSkgICAgICAvLyBpLmUuIGEqbSA8PSBtYXgKLSAgICAgIHJldHVybiBtdWx0X3NtYWxsKGEsIHgpOwotICAgIGVsc2UgaWYodHJhaXRzOjppc19zaWduZWQgJiYgKG0lYSA8IG0vYSkpCi0gICAgICByZXR1cm4gbXVsdF9zY2hyYWdlKGEsIHgpOwotICAgIGVsc2UKLSAgICAgIHJldHVybiBtdWx0X2dlbmVyYWwoYSwgeCk7Ci0gIH0KLQotICBzdGF0aWMgSW50VHlwZSBtdWx0X2FkZChJbnRUeXBlIGEsIEludFR5cGUgeCwgSW50VHlwZSBjKQotICB7Ci0gICAgaWYoKCh1bnNpZ25lZF9tKCkgLSAxKSAmIHVuc2lnbmVkX20oKSkgPT0gMCkKLSAgICAgIHJldHVybiAodW5zaWduZWRfdHlwZShhKSAqIHVuc2lnbmVkX3R5cGUoeCkgKyB1bnNpZ25lZF90eXBlKGMpKSAmICh1bnNpZ25lZF9tKCkgLSAxKTsKLSAgICBlbHNlIGlmKGEgPT0gMCkKLSAgICAgIHJldHVybiBjOwotICAgIGVsc2UgaWYobSA8PSAodHJhaXRzOjpjb25zdF9tYXgtYykvYSkgeyAgLy8gaS5lLiBhKm0rYyA8PSBtYXgKLSAgICAgIEludFR5cGUgc3VwcmVzc193YXJuaW5ncyA9IChtID09IDApOwotICAgICAgTkROQk9PU1RfQVNTRVJUKHN1cHJlc3Nfd2FybmluZ3MgPT0gMCk7Ci0gICAgICByZXR1cm4gKGEqeCtjKSAlIChtICsgc3VwcmVzc193YXJuaW5ncyk7Ci0gICAgfSBlbHNlCi0gICAgICByZXR1cm4gYWRkKG11bHQoYSwgeCksIGMpOwotICB9Ci0KLSAgc3RhdGljIEludFR5cGUgcG93KEludFR5cGUgYSwgbmRuYm9vc3Q6OnVpbnRtYXhfdCBleHBvbmVudCkKLSAgewotICAgICAgSW50VHlwZSByZXN1bHQgPSAxOwotICAgICAgd2hpbGUoZXhwb25lbnQgIT0gMCkgewotICAgICAgICAgIGlmKGV4cG9uZW50ICUgMiA9PSAxKSB7Ci0gICAgICAgICAgICAgIHJlc3VsdCA9IG11bHQocmVzdWx0LCBhKTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgYSA9IG11bHQoYSwgYSk7Ci0gICAgICAgICAgZXhwb25lbnQgLz0gMjsKLSAgICAgIH0KLSAgICAgIHJldHVybiByZXN1bHQ7Ci0gIH0KLQotICBzdGF0aWMgSW50VHlwZSBpbnZlcnQoSW50VHlwZSB4KQotICB7IHJldHVybiB4ID09IDAgPyAwIDogKG0gPT0gMD8gaW52ZXJ0X2V1Y2xpZGlhbjAoeCkgOiBpbnZlcnRfZXVjbGlkaWFuKHgpKTsgfQotCi1wcml2YXRlOgotICB0eXBlZGVmIGludGVnZXJfdHJhaXRzPEludFR5cGU+IHRyYWl0czsKLSAgdHlwZWRlZiB0eXBlbmFtZSBtYWtlX3Vuc2lnbmVkPEludFR5cGU+Ojp0eXBlIHVuc2lnbmVkX3R5cGU7Ci0KLSAgY29uc3RfbW9kKCk7ICAgICAgLy8gZG9uJ3QgaW5zdGFudGlhdGUKLQotICBzdGF0aWMgSW50VHlwZSBtdWx0X3NtYWxsKEludFR5cGUgYSwgSW50VHlwZSB4KQotICB7Ci0gICAgSW50VHlwZSBzdXByZXNzX3dhcm5pbmdzID0gKG0gPT0gMCk7Ci0gICAgTkROQk9PU1RfQVNTRVJUKHN1cHJlc3Nfd2FybmluZ3MgPT0gMCk7Ci0gICAgcmV0dXJuIGEqeCAlIChtICsgc3VwcmVzc193YXJuaW5ncyk7Ci0gIH0KLQotICBzdGF0aWMgSW50VHlwZSBtdWx0X3NjaHJhZ2UoSW50VHlwZSBhLCBJbnRUeXBlIHZhbHVlKQotICB7Ci0gICAgY29uc3QgSW50VHlwZSBxID0gbSAvIGE7Ci0gICAgY29uc3QgSW50VHlwZSByID0gbSAlIGE7Ci0KLSAgICBORE5CT09TVF9BU1NFUlQociA8IHEpOyAgICAgICAgLy8gY2hlY2sgdGhhdCBvdmVyZmxvdyBjYW5ub3QgaGFwcGVuCi0KLSAgICByZXR1cm4gc3ViKGEqKHZhbHVlJXEpLCByKih2YWx1ZS9xKSk7Ci0gIH0KLQotICBzdGF0aWMgSW50VHlwZSBtdWx0X2dlbmVyYWwoSW50VHlwZSBhLCBJbnRUeXBlIGIpCi0gIHsKLSAgICBJbnRUeXBlIHN1cHByZXNzX3dhcm5pbmdzID0gKG0gPT0gMCk7Ci0gICAgTkROQk9PU1RfQVNTRVJUKHN1cHByZXNzX3dhcm5pbmdzID09IDApOwotICAgIEludFR5cGUgbW9kdWx1cyA9IG0gKyBzdXBwcmVzc193YXJuaW5nczsKLSAgICBORE5CT09TVF9BU1NFUlQobW9kdWx1cyA9PSBtKTsKLSAgICBpZig6Om5kbmJvb3N0Ojp1aW50bWF4X3QobW9kdWx1cykgPD0KLSAgICAgICAgKDo6c3RkOjpudW1lcmljX2xpbWl0czwgOjpuZG5ib29zdDo6dWludG1heF90Pjo6bWF4KSgpIC8gbW9kdWx1cykKLSAgICB7Ci0gICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SW50VHlwZT4obmRuYm9vc3Q6OnVpbnRtYXhfdChhKSAqIGIgJSBtb2R1bHVzKTsKLSAgICB9IGVsc2UgewotICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEludFR5cGU+KGRldGFpbDo6bXVsbW9kKGEsIGIsIG1vZHVsdXMpKTsKLSAgICB9Ci0gIH0KLQotICBzdGF0aWMgSW50VHlwZSBzdWIoSW50VHlwZSBhLCBJbnRUeXBlIGIpCi0gIHsKLSAgICBpZihhIDwgYikKLSAgICAgIHJldHVybiBtIC0gKGIgLSBhKTsKLSAgICBlbHNlCi0gICAgICByZXR1cm4gYSAtIGI7Ci0gIH0KLQotICBzdGF0aWMgdW5zaWduZWRfdHlwZSB1bnNpZ25lZF9tKCkKLSAgewotICAgICAgaWYobSA9PSAwKSB7Ci0gICAgICAgICAgcmV0dXJuIHVuc2lnbmVkX3R5cGUoKHN0ZDo6bnVtZXJpY19saW1pdHM8SW50VHlwZT46Om1heCkoKSkgKyAxOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgICByZXR1cm4gdW5zaWduZWRfdHlwZShtKTsKLSAgICAgIH0KLSAgfQotCi0gIC8vIGludmVydCBjIGluIHRoZSBmaW5pdGUgZmllbGQgKG1vZCBtKSAobSBtdXN0IGJlIHByaW1lKQotICBzdGF0aWMgSW50VHlwZSBpbnZlcnRfZXVjbGlkaWFuKEludFR5cGUgYykKLSAgewotICAgIC8vIHdlIGFyZSBpbnRlcmVzdGVkIGluIHRoZSBnY2QgZmFjdG9yIGZvciBjLCBiZWNhdXNlIHRoaXMgaXMgb3VyIGludmVyc2UKLSAgICBORE5CT09TVF9BU1NFUlQoYyA+IDApOwotICAgIEludFR5cGUgbDEgPSAwOwotICAgIEludFR5cGUgbDIgPSAxOwotICAgIEludFR5cGUgbiA9IGM7Ci0gICAgSW50VHlwZSBwID0gbTsKLSAgICBmb3IoOzspIHsKLSAgICAgIEludFR5cGUgcSA9IHAgLyBuOwotICAgICAgbDEgKz0gcSAqIGwyOwotICAgICAgcCAtPSBxICogbjsKLSAgICAgIGlmKHAgPT0gMCkKLSAgICAgICAgcmV0dXJuIGwyOwotICAgICAgSW50VHlwZSBxMiA9IG4gLyBwOwotICAgICAgbDIgKz0gcTIgKiBsMTsKLSAgICAgIG4gLT0gcTIgKiBwOwotICAgICAgaWYobiA9PSAwKQotICAgICAgICByZXR1cm4gbSAtIGwxOwotICAgIH0KLSAgfQotCi0gIC8vIGludmVydCBjIGluIHRoZSBmaW5pdGUgZmllbGQgKG1vZCBtKSAoYyBtdXN0IGJlIHJlbGF0aXZlbHkgcHJpbWUgdG8gbSkKLSAgc3RhdGljIEludFR5cGUgaW52ZXJ0X2V1Y2xpZGlhbjAoSW50VHlwZSBjKQotICB7Ci0gICAgLy8gd2UgYXJlIGludGVyZXN0ZWQgaW4gdGhlIGdjZCBmYWN0b3IgZm9yIGMsIGJlY2F1c2UgdGhpcyBpcyBvdXIgaW52ZXJzZQotICAgIE5ETkJPT1NUX0FTU0VSVChjID4gMCk7Ci0gICAgaWYoYyA9PSAxKSByZXR1cm4gMTsKLSAgICBJbnRUeXBlIGwxID0gMDsKLSAgICBJbnRUeXBlIGwyID0gMTsKLSAgICBJbnRUeXBlIG4gPSBjOwotICAgIEludFR5cGUgcCA9IG07Ci0gICAgSW50VHlwZSBtYXggPSAoc3RkOjpudW1lcmljX2xpbWl0czxJbnRUeXBlPjo6bWF4KSgpOwotICAgIEludFR5cGUgcSA9IG1heCAvIG47Ci0gICAgTkROQk9PU1RfQVNTRVJUKG1heCAlIG4gIT0gbiAtIDEgJiYgImMgbXVzdCBiZSByZWxhdGl2ZWx5IHByaW1lIHRvIG0uIik7Ci0gICAgbDEgKz0gcSAqIGwyOwotICAgIHAgPSBtYXggLSBxICogbiArIDE7Ci0gICAgZm9yKDs7KSB7Ci0gICAgICBpZihwID09IDApCi0gICAgICAgIHJldHVybiBsMjsKLSAgICAgIEludFR5cGUgcTIgPSBuIC8gcDsKLSAgICAgIGwyICs9IHEyICogbDE7Ci0gICAgICBuIC09IHEyICogcDsKLSAgICAgIGlmKG4gPT0gMCkKLSAgICAgICAgcmV0dXJuIG0gLSBsMTsKLSAgICAgIHEgPSBwIC8gbjsKLSAgICAgIGwxICs9IHEgKiBsMjsKLSAgICAgIHAgLT0gcSAqIG47Ci0gICAgfQotICB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSByYW5kb20KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5kb20vZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9SQU5ET01fQ09OU1RfTU9EX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yYW5kb20vZGV0YWlsL2Rpc2FibGVfd2FybmluZ3MuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yYW5kb20vZGV0YWlsL2Rpc2FibGVfd2FybmluZ3MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZjcwN2QwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZG9tL2RldGFpbC9kaXNhYmxlX3dhcm5pbmdzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLS8qIGJvb3N0IHJhbmRvbS9kZXRhaWwvZGlzYWJsZV93YXJuaW5ncy5ocHAgaGVhZGVyIGZpbGUKLSAqCi0gKiBDb3B5cmlnaHQgU3RldmVuIFdhdGFuYWJlIDIwMDkKLSAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0gKgotICogJElkOiBkaXNhYmxlX3dhcm5pbmdzLmhwcCA2MDc1NSAyMDEwLTAzLTIyIDAwOjQ1OjA2WiBzdGV2ZW5fd2F0YW5hYmUgJAotICoKLSAqLwotCi0vLyBObyAjaW5jbHVkZSBndWFyZC4gIFRoaXMgaGVhZGVyIGlzIGludGVuZGVkIHRvIGJlIGluY2x1ZGVkIG11bHRpcGxlIHRpbWVzLgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDUxMikKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQxMjcpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0NzI0KQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JhbmRvbS9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmFuZG9tL2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ODUzNWUyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZG9tL2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotLyogYm9vc3QgcmFuZG9tL2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwIGhlYWRlciBmaWxlCi0gKgotICogQ29weXJpZ2h0IFN0ZXZlbiBXYXRhbmFiZSAyMDA5Ci0gKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0gKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotICoKLSAqICRJZDogZW5hYmxlX3dhcm5pbmdzLmhwcCA1ODY0OSAyMDEwLTAxLTAyIDIxOjIzOjE3WiBzdGV2ZW5fd2F0YW5hYmUgJAotICoKLSAqLwotCi0vLyBObyAjaW5jbHVkZSBndWFyZC4gIFRoaXMgaGVhZGVyIGlzIGludGVuZGVkIHRvIGJlIGluY2x1ZGVkIG11bHRpcGxlIHRpbWVzLgotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yYW5kb20vZGV0YWlsL2dlbmVyYXRvcl9iaXRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmFuZG9tL2RldGFpbC9nZW5lcmF0b3JfYml0cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk0ZDQ5ZDYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yYW5kb20vZGV0YWlsL2dlbmVyYXRvcl9iaXRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLS8qIGJvb3N0IHJhbmRvbS9kZXRhaWwvZ2VuZXJhdG9yX2JpdHMuaHBwIGhlYWRlciBmaWxlCi0gKgotICogQ29weXJpZ2h0IFN0ZXZlbiBXYXRhbmFiZSAyMDExCi0gKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0gKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotICoKLSAqICRJZDogZ2VuZXJhdG9yX2JpdHMuaHBwIDcyOTUxIDIwMTEtMDctMDcgMDQ6NTc6MzdaIHN0ZXZlbl93YXRhbmFiZSAkCi0gKgotICovCi0KLSNpZm5kZWYgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9HRU5FUkFUT1JfQklUU19IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9HRU5FUkFUT1JfQklUU19IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2xpbWl0cy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci1uYW1lc3BhY2UgcmFuZG9tIHsKLW5hbWVzcGFjZSBkZXRhaWwgewotCi0vLyBUaGlzIGlzIGEgdGVtcG9yYXJ5IG1lYXN1cmUgdGhhdCByZXRhaW5zIGJhY2t3YXJkcwotLy8gY29tcGF0aWJpbGl0eS4KLXRlbXBsYXRlPGNsYXNzIFVSTkc+Ci1zdHJ1Y3QgZ2VuZXJhdG9yX2JpdHMgewotICAgIHN0YXRpYyBzdGQ6OnNpemVfdCB2YWx1ZSgpIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8dHlwZW5hbWUgVVJORzo6cmVzdWx0X3R5cGU+OjpkaWdpdHM7Ci0gICAgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi19IC8vIG5hbWVzcGFjZSByYW5kb20KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9SQU5ET01fREVUQUlMX0dFTkVSQVRPUl9CSVRTX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yYW5kb20vZGV0YWlsL2ludGVnZXJfbG9nMi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JhbmRvbS9kZXRhaWwvaW50ZWdlcl9sb2cyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjc0MjlhZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JhbmRvbS9kZXRhaWwvaW50ZWdlcl9sb2cyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDg0ICswLDAgQEAKLS8qIGJvb3N0IHJhbmRvbS9kZXRhaWwvaW50ZWdlcl9sb2cyLmhwcCBoZWFkZXIgZmlsZQotICoKLSAqIENvcHlyaWdodCBTdGV2ZW4gV2F0YW5hYmUgMjAxMQotICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0gKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLSAqCi0gKiAkSWQ6IGludGVnZXJfbG9nMi5ocHAgODMzODEgMjAxMy0wMy0wOSAyMjo1NTowNVogZXJpY19uaWVibGVyICQKLSAqCi0gKi8KLQotI2lmbmRlZiBORE5CT09TVF9SQU5ET01fREVUQUlMX0lOVEVHRVJfTE9HMl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9JTlRFR0VSX0xPRzJfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2xpbWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcGVuZGluZy9pbnRlZ2VyX2xvZzIuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotbmFtZXNwYWNlIHJhbmRvbSB7Ci1uYW1lc3BhY2UgZGV0YWlsIHsKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0NPTlNURVhQUikKLSNkZWZpbmUgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9DT05TVEVYUFIgY29uc3RleHByCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfQ09OU1RFWFBSIF9fZm9yY2VpbmxpbmUKLSNlbGlmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID49IDQKLSNkZWZpbmUgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9DT05TVEVYUFIgaW5saW5lIF9fYXR0cmlidXRlX18oKGNvbnN0KSkgX19hdHRyaWJ1dGVfXygoYWx3YXlzX2lubGluZSkpCi0jZWxzZQotI2RlZmluZSBORE5CT09TVF9SQU5ET01fREVUQUlMX0NPTlNURVhQUiBpbmxpbmUKLSNlbmRpZgotCi10ZW1wbGF0ZTxpbnQgU2hpZnQ+Ci1zdHJ1Y3QgaW50ZWdlcl9sb2cyX2ltcGwKLXsKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0NPTlNURVhQUikKLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPgotICAgIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfQ09OU1RFWFBSIHN0YXRpYyBpbnQgYXBwbHkoVCB0LCBpbnQgYWNjdW0pCi0gICAgewotICAgICAgICBpbnQgdXBkYXRlID0gKCh0ID4+IFNoaWZ0KSAhPSAwKSAqIFNoaWZ0OwotICAgICAgICByZXR1cm4gaW50ZWdlcl9sb2cyX2ltcGw8U2hpZnQgLyAyPjo6YXBwbHkodCA+PiB1cGRhdGUsIGFjY3VtICsgdXBkYXRlKTsKLSAgICB9Ci0jZWxzZQotICAgIHRlbXBsYXRlPGNsYXNzIFQ+Ci0gICAgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9DT05TVEVYUFIgc3RhdGljIGludCBhcHBseTIoVCB0LCBpbnQgYWNjdW0sIGludCB1cGRhdGUpCi0gICAgewotICAgICAgICByZXR1cm4gaW50ZWdlcl9sb2cyX2ltcGw8U2hpZnQgLyAyPjo6YXBwbHkodCA+PiB1cGRhdGUsIGFjY3VtICsgdXBkYXRlKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPgotICAgIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfQ09OU1RFWFBSIHN0YXRpYyBpbnQgYXBwbHkoVCB0LCBpbnQgYWNjdW0pCi0gICAgewotICAgICAgICByZXR1cm4gYXBwbHkyKHQsIGFjY3VtLCAoKHQgPj4gU2hpZnQpICE9IDApICogU2hpZnQpOwotICAgIH0KLSNlbmRpZgotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGludGVnZXJfbG9nMl9pbXBsPDE+Ci17Ci0gICAgdGVtcGxhdGU8Y2xhc3MgVD4KLSAgICBORE5CT09TVF9SQU5ET01fREVUQUlMX0NPTlNURVhQUiBzdGF0aWMgaW50IGFwcGx5KFQgdCwgaW50IGFjY3VtKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGludCh0ID4+IDEpICsgYWNjdW07Ci0gICAgfQotfTsKLQotdGVtcGxhdGU8Y2xhc3MgVD4KLU5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfQ09OU1RFWFBSIGludCBpbnRlZ2VyX2xvZzIoVCB0KQotewotICAgIHJldHVybiBpbnRlZ2VyX2xvZzJfaW1wbDwKLSAgICAgICAgOjpuZG5ib29zdDo6ZGV0YWlsOjptYXhfcG93Ml9sZXNzPAotICAgICAgICAgICAgOjpzdGQ6Om51bWVyaWNfbGltaXRzPFQ+OjpkaWdpdHMsIDQKLSAgICAgICAgPjo6dmFsdWUKLSAgICA+OjphcHBseSh0LCAwKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi19IC8vIG5hbWVzcGFjZSByYW5kb20KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9SQU5ET01fREVUQUlMX0lOVEVHRVJfTE9HMl9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZG9tL2RldGFpbC9sYXJnZV9hcml0aG1ldGljLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmFuZG9tL2RldGFpbC9sYXJnZV9hcml0aG1ldGljLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzljNjQzNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JhbmRvbS9kZXRhaWwvbGFyZ2VfYXJpdGhtZXRpYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjIgKzAsMCBAQAotLyogYm9vc3QgcmFuZG9tL2RldGFpbC9sYXJnZV9hcml0aG1ldGljLmhwcCBoZWFkZXIgZmlsZQotICoKLSAqIENvcHlyaWdodCBTdGV2ZW4gV2F0YW5hYmUgMjAxMQotICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0gKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLSAqCi0gKiAkSWQ6IGxhcmdlX2FyaXRobWV0aWMuaHBwIDcxMDE4IDIwMTEtMDQtMDUgMjE6Mjc6NTJaIHN0ZXZlbl93YXRhbmFiZSAkCi0gKi8KLQotI2lmbmRlZiBORE5CT09TVF9SQU5ET01fREVUQUlMX0xBUkdFX0FSSVRITUVUSUNfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfTEFSR0VfQVJJVEhNRVRJQ19IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NzdGRpbnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2ludGVnZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2xpbWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZG9tL2RldGFpbC9pbnRlZ2VyX2xvZzIuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZG9tL2RldGFpbC9kaXNhYmxlX3dhcm5pbmdzLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLW5hbWVzcGFjZSByYW5kb20gewotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXN0cnVjdCBkaXZfdCB7Ci0gICAgbmRuYm9vc3Q6OnVpbnRtYXhfdCBxdW90aWVudDsKLSAgICBuZG5ib29zdDo6dWludG1heF90IHJlbWFpbmRlcjsKLX07Ci0KLWlubGluZSBkaXZfdCBtdWxkaXZtb2QobmRuYm9vc3Q6OnVpbnRtYXhfdCBhLCBuZG5ib29zdDo6dWludG1heF90IGIsIG5kbmJvb3N0Ojp1aW50bWF4X3QgbSkKLXsKLSAgICBzdGF0aWMgY29uc3QgaW50IGJpdHMgPQotICAgICAgICA6OnN0ZDo6bnVtZXJpY19saW1pdHM8IDo6bmRuYm9vc3Q6OnVpbnRtYXhfdD46OmRpZ2l0cyAvIDI7Ci0gICAgc3RhdGljIGNvbnN0IDo6bmRuYm9vc3Q6OnVpbnRtYXhfdCBtYXNrID0gKDo6bmRuYm9vc3Q6OnVpbnRtYXhfdCgxKSA8PCBiaXRzKSAtIDE7Ci0gICAgdHlwZWRlZiA6Om5kbmJvb3N0Ojp1aW50X3Q8Yml0cz46OmZhc3QgZGlnaXRfdDsKLQotICAgIGludCBzaGlmdCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8IDo6bmRuYm9vc3Q6OnVpbnRtYXhfdD46OmRpZ2l0cyAtIDEKLSAgICAgICAgLSBkZXRhaWw6OmludGVnZXJfbG9nMihtKTsKLQotICAgIGEgPDw9IHNoaWZ0OwotICAgIG0gPDw9IHNoaWZ0OwotCi0gICAgZGlnaXRfdCBwcm9kdWN0WzRdID0geyAwLCAwLCAwLCAwIH07Ci0gICAgZGlnaXRfdCBhX1syXSA9IHsgZGlnaXRfdChhICYgbWFzayksIGRpZ2l0X3QoKGEgPj4gYml0cykgJiBtYXNrKSB9OwotICAgIGRpZ2l0X3QgYl9bMl0gPSB7IGRpZ2l0X3QoYiAmIG1hc2spLCBkaWdpdF90KChiID4+IGJpdHMpICYgbWFzaykgfTsKLSAgICBkaWdpdF90IG1fWzJdID0geyBkaWdpdF90KG0gJiBtYXNrKSwgZGlnaXRfdCgobSA+PiBiaXRzKSAmIG1hc2spIH07Ci0KLSAgICAvLyBtdWx0aXBseSBhICogYgotICAgIGZvcihpbnQgaSA9IDA7IGkgPCAyOyArK2kpIHsKLSAgICAgICAgZGlnaXRfdCBjYXJyeSA9IDA7Ci0gICAgICAgIGZvcihpbnQgaiA9IDA7IGogPCAyOyArK2opIHsKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnVpbnQ2NF90IHRlbXAgPSA6Om5kbmJvb3N0Ojp1aW50bWF4X3QoYV9baV0pICogYl9bal0gKwotICAgICAgICAgICAgICAgIGNhcnJ5ICsgcHJvZHVjdFtpICsgal07Ci0gICAgICAgICAgICBwcm9kdWN0W2kgKyBqXSA9IGRpZ2l0X3QodGVtcCAmIG1hc2spOwotICAgICAgICAgICAgY2FycnkgPSBkaWdpdF90KHRlbXAgPj4gYml0cyk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYoY2FycnkgIT0gMCkgewotICAgICAgICAgICAgcHJvZHVjdFtpICsgMl0gKz0gY2Fycnk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBkaWdpdF90IHF1b3RpZW50WzJdOwotCi0gICAgaWYobSA9PSAwKSB7Ci0gICAgICAgIGRpdl90IHJlc3VsdCA9IHsKLSAgICAgICAgICAgICgoOjpuZG5ib29zdDo6dWludG1heF90KHByb2R1Y3RbM10pIDw8IGJpdHMpIHwgcHJvZHVjdFsyXSksCi0gICAgICAgICAgICAoKDo6bmRuYm9vc3Q6OnVpbnRtYXhfdChwcm9kdWN0WzFdKSA8PCBiaXRzKSB8IHByb2R1Y3RbMF0pID4+IHNoaWZ0LAotICAgICAgICB9OwotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLQotICAgIC8vIGRpdmlkZSBwcm9kdWN0IC8gbQotICAgIGZvcihpbnQgaSA9IDM7IGkgPj0gMjsgLS1pKSB7Ci0gICAgICAgIDo6bmRuYm9vc3Q6OnVpbnRtYXhfdCB0ZW1wID0KLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnVpbnRtYXhfdChwcm9kdWN0W2ldKSA8PCBiaXRzIHwgcHJvZHVjdFtpIC0gMV07Ci0KLSAgICAgICAgZGlnaXRfdCBxID0gZGlnaXRfdCgocHJvZHVjdFtpXSA9PSBtX1sxXSkgPyBtYXNrIDogdGVtcCAvIG1fWzFdKTsKLQotICAgICAgICA6Om5kbmJvb3N0Ojp1aW50bWF4X3QgcmVtID0KLSAgICAgICAgICAgICgodGVtcCAtIDo6bmRuYm9vc3Q6OnVpbnRtYXhfdChxKSAqIG1fWzFdKSA8PCBiaXRzKSArIHByb2R1Y3RbaSAtIDJdOwotCi0gICAgICAgIDo6bmRuYm9vc3Q6OnVpbnRtYXhfdCBkaWZmID0gbV9bMF0gKiA6Om5kbmJvb3N0Ojp1aW50bWF4X3QocSk7Ci0KLSAgICAgICAgaW50IGVycm9yID0gMDsKLSAgICAgICAgaWYoZGlmZiA+IHJlbSkgewotICAgICAgICAgICAgaWYoZGlmZiAtIHJlbSA+IG0pIHsKLSAgICAgICAgICAgICAgICBlcnJvciA9IDI7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGVycm9yID0gMTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBxIC09IGVycm9yOwotICAgICAgICByZW0gPSByZW0gKyBlcnJvciAqIG0gLSBkaWZmOwotCi0gICAgICAgIHF1b3RpZW50W2kgLSAyXSA9IHE7Ci0gICAgICAgIHByb2R1Y3RbaV0gPSAwOwotICAgICAgICBwcm9kdWN0W2ktMV0gPSAocmVtID4+IGJpdHMpICYgbWFzazsKLSAgICAgICAgcHJvZHVjdFtpLTJdID0gcmVtICYgbWFzazsKLSAgICB9Ci0KLSAgICBkaXZfdCByZXN1bHQgPSB7Ci0gICAgICAgICgoOjpuZG5ib29zdDo6dWludG1heF90KHF1b3RpZW50WzFdKSA8PCBiaXRzKSB8IHF1b3RpZW50WzBdKSwKLSAgICAgICAgKCg6Om5kbmJvb3N0Ojp1aW50bWF4X3QocHJvZHVjdFsxXSkgPDwgYml0cykgfCBwcm9kdWN0WzBdKSA+PiBzaGlmdCwKLSAgICB9OwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLWlubGluZSBuZG5ib29zdDo6dWludG1heF90IG11bGRpdihuZG5ib29zdDo6dWludG1heF90IGEsIG5kbmJvb3N0Ojp1aW50bWF4X3QgYiwgbmRuYm9vc3Q6OnVpbnRtYXhfdCBtKQoteyByZXR1cm4gZGV0YWlsOjptdWxkaXZtb2QoYSwgYiwgbSkucXVvdGllbnQ7IH0KLQotaW5saW5lIG5kbmJvb3N0Ojp1aW50bWF4X3QgbXVsbW9kKG5kbmJvb3N0Ojp1aW50bWF4X3QgYSwgbmRuYm9vc3Q6OnVpbnRtYXhfdCBiLCBuZG5ib29zdDo6dWludG1heF90IG0pCi17IHJldHVybiBkZXRhaWw6Om11bGRpdm1vZChhLCBiLCBtKS5yZW1haW5kZXI7IH0KLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi19IC8vIG5hbWVzcGFjZSByYW5kb20KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5kb20vZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9SQU5ET01fREVUQUlMX0xBUkdFX0FSSVRITUVUSUNfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JhbmRvbS9kZXRhaWwvb3BlcmF0b3JzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmFuZG9tL2RldGFpbC9vcGVyYXRvcnMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZGY0ODgxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZG9tL2RldGFpbC9vcGVyYXRvcnMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODQgKzAsMCBAQAotLyogYm9vc3QgcmFuZG9tL2RldGFpbC9vcGVyYXRvcnMuaHBwIGhlYWRlciBmaWxlCi0gKgotICogQ29weXJpZ2h0IFN0ZXZlbiBXYXRhbmFiZSAyMDEwLTIwMTEKLSAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0gKgotICogJElkOiBvcGVyYXRvcnMuaHBwIDcxMDE4IDIwMTEtMDQtMDUgMjE6Mjc6NTJaIHN0ZXZlbl93YXRhbmFiZSAkCi0gKi8KLQotI2lmbmRlZiBORE5CT09TVF9SQU5ET01fREVUQUlMX09QRVJBVE9SU19IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9PUEVSQVRPUlNfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5kb20vZGV0YWlsL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzEwKSAgIFwKLSAgICB8fCBORE5CT09TVF9XT1JLQVJPVU5EKF9fU1VOUFJPX0NDLCBORE5CT09TVF9URVNURURfQVQoMHg1MTAwKSkKLQotI2RlZmluZSBORE5CT09TVF9SQU5ET01fREVUQUlMX09TVFJFQU1fT1BFUkFUT1Iob3MsIFQsIHQpICAgICAgICAgICAgICAgICAgXAotICAgIHRlbXBsYXRlPGNsYXNzIENoYXJULCBjbGFzcyBUcmFpdHM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGZyaWVuZCBzdGQ6OmJhc2ljX29zdHJlYW08Q2hhclQsVHJhaXRzPiYgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIG9wZXJhdG9yPDwoc3RkOjpiYXNpY19vc3RyZWFtPENoYXJULFRyYWl0cz4mIG9zLCBjb25zdCBUJiB0KSB7ICAgICAgXAotICAgICAgICB0LnByaW50KG9zLCB0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICByZXR1cm4gb3M7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHRlbXBsYXRlPGNsYXNzIENoYXJULCBjbGFzcyBUcmFpdHM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHN0YXRpYyBzdGQ6OmJhc2ljX29zdHJlYW08Q2hhclQsVHJhaXRzPiYgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHByaW50KHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyVCxUcmFpdHM+JiBvcywgY29uc3QgVCYgdCkKLQotI2RlZmluZSBORE5CT09TVF9SQU5ET01fREVUQUlMX0lTVFJFQU1fT1BFUkFUT1IoaXMsIFQsIHQpICAgICAgICAgICAgICAgICAgXAotICAgIHRlbXBsYXRlPGNsYXNzIENoYXJULCBjbGFzcyBUcmFpdHM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGZyaWVuZCBzdGQ6OmJhc2ljX2lzdHJlYW08Q2hhclQsVHJhaXRzPiYgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIG9wZXJhdG9yPj4oc3RkOjpiYXNpY19pc3RyZWFtPENoYXJULFRyYWl0cz4mIGlzLCBUJiB0KSB7ICAgICAgICAgICAgXAotICAgICAgICB0LnJlYWQoaXMsIHQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICByZXR1cm4gaXM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHRlbXBsYXRlPGNsYXNzIENoYXJULCBjbGFzcyBUcmFpdHM+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHN0YXRpYyBzdGQ6OmJhc2ljX2lzdHJlYW08Q2hhclQsVHJhaXRzPiYgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHJlYWQoc3RkOjpiYXNpY19pc3RyZWFtPENoYXJULFRyYWl0cz4mIGlzLCBUJiB0KQotCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoX19CT1JMQU5EQ19fKQotCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfRVFVQUxJVFlfT1BFUkFUT1IoVCwgbGhzLCByaHMpICAgICAgICAgICAgICBcCi0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFQmIHJocykgY29uc3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgeyByZXR1cm4gVDo6aXNfZXF1YWwoKnRoaXMsIHJocyk7IH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgc3RhdGljIGJvb2wgaXNfZXF1YWwoY29uc3QgVCYgbGhzLCBjb25zdCBUJiByaHMpCi0KLSNkZWZpbmUgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9JTkVRVUFMSVRZX09QRVJBVE9SKFQpICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgVCYgcmhzKSBjb25zdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB7IHJldHVybiAhVDo6aXNfZXF1YWwoKnRoaXMsIHJocyk7IH0KLQotI2VuZGlmCi0KLSNpZm5kZWYgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9PU1RSRUFNX09QRVJBVE9SCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfT1NUUkVBTV9PUEVSQVRPUihvcywgVCwgdCkgICAgICAgICAgICAgICAgICBcCi0gICAgdGVtcGxhdGU8Y2xhc3MgQ2hhclQsIGNsYXNzIFRyYWl0cz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgZnJpZW5kIHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyVCxUcmFpdHM+JiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgb3BlcmF0b3I8PChzdGQ6OmJhc2ljX29zdHJlYW08Q2hhclQsVHJhaXRzPiYgb3MsIGNvbnN0IFQmIHQpCi0jZW5kaWYKLQotI2lmbmRlZiBORE5CT09TVF9SQU5ET01fREVUQUlMX0lTVFJFQU1fT1BFUkFUT1IKLSNkZWZpbmUgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9JU1RSRUFNX09QRVJBVE9SKGlzLCBULCB0KSAgICAgICAgICAgICAgICAgIFwKLSAgICB0ZW1wbGF0ZTxjbGFzcyBDaGFyVCwgY2xhc3MgVHJhaXRzPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBmcmllbmQgc3RkOjpiYXNpY19pc3RyZWFtPENoYXJULFRyYWl0cz4mICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBvcGVyYXRvcj4+KHN0ZDo6YmFzaWNfaXN0cmVhbTxDaGFyVCxUcmFpdHM+JiBpcywgVCYgdCkKLSNlbmRpZgotCi0jaWZuZGVmIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfRVFVQUxJVFlfT1BFUkFUT1IKLSNkZWZpbmUgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9FUVVBTElUWV9PUEVSQVRPUihULCBsaHMsIHJocykgICAgICAgICAgICAgIFwKLSAgICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFQmIGxocywgY29uc3QgVCYgcmhzKQotI2VuZGlmCi0KLSNpZm5kZWYgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9JTkVRVUFMSVRZX09QRVJBVE9SCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfSU5FUVVBTElUWV9PUEVSQVRPUihUKSAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IhPShjb25zdCBUJiBsaHMsIGNvbnN0IFQmIHJocykgICAgICAgICAgICAgICAgICBcCi0gICAgeyByZXR1cm4gIShsaHMgPT0gcmhzKTsgfQotI2VuZGlmCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yYW5kb20vZGV0YWlsL3B0cl9oZWxwZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yYW5kb20vZGV0YWlsL3B0cl9oZWxwZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMDdhODhhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZG9tL2RldGFpbC9wdHJfaGVscGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLS8qIGJvb3N0IHJhbmRvbS9kZXRhaWwvcHRyX2hlbHBlci5ocHAgaGVhZGVyIGZpbGUKLSAqCi0gKiBDb3B5cmlnaHQgSmVucyBNYXVyZXIgMjAwMgotICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0gKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLSAqCi0gKiAkSWQ6IHB0cl9oZWxwZXIuaHBwIDI0MDk2IDIwMDQtMDctMjcgMDM6NDM6MzRaIGRncmVnb3IgJAotICoKLSAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfUFRSX0hFTFBFUl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9QVFJfSEVMUEVSX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotbmFtZXNwYWNlIHJhbmRvbSB7Ci1uYW1lc3BhY2UgZGV0YWlsIHsKLQotLy8gdHlwZV90cmFpdHMgY291bGQgaGVscCBoZXJlLCBidXQgSSBkb24ndCB3YW50IHRvIGRlcGVuZCBvbiB0eXBlX3RyYWl0cy4KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1zdHJ1Y3QgcHRyX2hlbHBlcgotewotICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLSAgdHlwZWRlZiBUJiByZWZlcmVuY2VfdHlwZTsKLSAgdHlwZWRlZiBjb25zdCBUJiBydmFsdWVfdHlwZTsKLSAgc3RhdGljIHJlZmVyZW5jZV90eXBlIHJlZihUJiByKSB7IHJldHVybiByOyB9Ci0gIHN0YXRpYyBjb25zdCBUJiByZWYoY29uc3QgVCYgcikgeyByZXR1cm4gcjsgfQotfTsKLQotI2lmbmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi10ZW1wbGF0ZTxjbGFzcyBUPgotc3RydWN0IHB0cl9oZWxwZXI8VCY+Ci17Ci0gIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotICB0eXBlZGVmIFQmIHJlZmVyZW5jZV90eXBlOwotICB0eXBlZGVmIFQmIHJ2YWx1ZV90eXBlOwotICBzdGF0aWMgcmVmZXJlbmNlX3R5cGUgcmVmKFQmIHIpIHsgcmV0dXJuIHI7IH0KLSAgc3RhdGljIGNvbnN0IFQmIHJlZihjb25zdCBUJiByKSB7IHJldHVybiByOyB9Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBUPgotc3RydWN0IHB0cl9oZWxwZXI8VCo+Ci17Ci0gIHR5cGVkZWYgVCB2YWx1ZV90eXBlOwotICB0eXBlZGVmIFQmIHJlZmVyZW5jZV90eXBlOwotICB0eXBlZGVmIFQqIHJ2YWx1ZV90eXBlOwotICBzdGF0aWMgcmVmZXJlbmNlX3R5cGUgcmVmKFQgKiBwKSB7IHJldHVybiAqcDsgfQotICBzdGF0aWMgY29uc3QgVCYgcmVmKGNvbnN0IFQgKiBwKSB7IHJldHVybiAqcDsgfQotfTsKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLX0gLy8gbmFtZXNwYWNlIHJhbmRvbQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy8KLS8vIE5ETkJPT1NUX1JBTkRPTV9QVFJfSEVMUEVSX1NQRUMgLS0KLS8vCi0vLyAgSGVscGVyIG1hY3JvIGZvciBicm9rZW4gY29tcGlsZXJzIGRlZmluZXMgc3BlY2lhbGl6YXRpb25zIG9mCi0vLyAgcHRyX2hlbHBlci4KLS8vCi0jaWZkZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotIyBkZWZpbmUgTkROQk9PU1RfUkFORE9NX1BUUl9IRUxQRVJfU1BFQyhUKSAgICAgICAgICAgICAgICBcCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgcmFuZG9tIHsgbmFtZXNwYWNlIGRldGFpbCB7IFwKLXRlbXBsYXRlPD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotc3RydWN0IHB0cl9oZWxwZXI8VCY+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi17ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICB0eXBlZGVmIFQmIHJlZmVyZW5jZV90eXBlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIHR5cGVkZWYgVCYgcnZhbHVlX3R5cGU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgc3RhdGljIHJlZmVyZW5jZV90eXBlIHJlZihUJiByKSB7IHJldHVybiByOyB9ICAgICAgICAgXAotICBzdGF0aWMgY29uc3QgVCYgcmVmKGNvbnN0IFQmIHIpIHsgcmV0dXJuIHI7IH0gICAgICAgICBcCi19OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotdGVtcGxhdGU8PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1zdHJ1Y3QgcHRyX2hlbHBlcjxUKj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIHR5cGVkZWYgVCYgcmVmZXJlbmNlX3R5cGU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgdHlwZWRlZiBUKiBydmFsdWVfdHlwZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBzdGF0aWMgcmVmZXJlbmNlX3R5cGUgcmVmKFQgKiBwKSB7IHJldHVybiAqcDsgfSAgICAgICBcCi0gIHN0YXRpYyBjb25zdCBUJiByZWYoY29uc3QgVCAqIHApIHsgcmV0dXJuICpwOyB9ICAgICAgIFwKLX07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotfX19Ci0jZWxzZQotIyBkZWZpbmUgTkROQk9PU1RfUkFORE9NX1BUUl9IRUxQRVJfU1BFQyhUKQotI2VuZGlmIAotCi0jZW5kaWYgLy8gTkROQk9PU1RfUkFORE9NX0RFVEFJTF9QVFJfSEVMUEVSX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yYW5kb20vZGV0YWlsL3NlZWQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yYW5kb20vZGV0YWlsL3NlZWQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZjVhYzJiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZG9tL2RldGFpbC9zZWVkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExNCArMCwwIEBACi0vKiBib29zdCByYW5kb20vZGV0YWlsL3NlZWQuaHBwIGhlYWRlciBmaWxlCi0gKgotICogQ29weXJpZ2h0IFN0ZXZlbiBXYXRhbmFiZSAyMDA5Ci0gKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0gKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotICoKLSAqICRJZDogc2VlZC5ocHAgNzEwMTggMjAxMS0wNC0wNSAyMToyNzo1Mlogc3RldmVuX3dhdGFuYWJlICQKLSAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfU0VFRF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9TRUVEX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotLy8gU3VuIHNlZW1zIHRvIGhhdmUgdHJvdWJsZSB3aXRoIHRoZSB1c2Ugb2YgU0ZJTkFFIGZvciB0aGUKLS8vIHRlbXBsYXRlZCBjb25zdHJ1Y3Rvci4gIFNvIGRvZXMgQm9ybGFuZC4KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19TRklOQUUpICYmICFkZWZpbmVkKF9fU1VOUFJPX0NDKSAmJiAhZGVmaW5lZChfX0JPUkxBTkRDX18pCi0KLSNpbmNsdWRlIDxuZG5ib29zdC91dGlsaXR5L2VuYWJsZV9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYXJpdGhtZXRpYy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci1uYW1lc3BhY2UgcmFuZG9tIHsKLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZTxjbGFzcyBUPgotc3RydWN0IGRpc2FibGVfc2VlZCA6IG5kbmJvb3N0OjpkaXNhYmxlX2lmPG5kbmJvb3N0Ojppc19hcml0aG1ldGljPFQ+ID4ge307Ci0KLXRlbXBsYXRlPGNsYXNzIEVuZ2luZSwgY2xhc3MgVD4KLXN0cnVjdCBkaXNhYmxlX2NvbnN0cnVjdG9yIDogZGlzYWJsZV9zZWVkPFQ+IHt9OwotCi10ZW1wbGF0ZTxjbGFzcyBFbmdpbmU+Ci1zdHJ1Y3QgZGlzYWJsZV9jb25zdHJ1Y3RvcjxFbmdpbmUsIEVuZ2luZT4ge307Ci0KLSNkZWZpbmUgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9HRU5FUkFUT1JfQ09OU1RSVUNUT1IoU2VsZiwgR2VuZXJhdG9yLCBnZW4pIFwKLSAgICB0ZW1wbGF0ZTxjbGFzcyBHZW5lcmF0b3I+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBleHBsaWNpdCBTZWxmKEdlbmVyYXRvciYgZ2VuLCB0eXBlbmFtZSA6Om5kbmJvb3N0OjpyYW5kb206OmRldGFpbDo6ZGlzYWJsZV9jb25zdHJ1Y3RvcjxTZWxmLCBHZW5lcmF0b3I+Ojp0eXBlKiA9IDApCi0KLSNkZWZpbmUgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9HRU5FUkFUT1JfU0VFRChTZWxmLCBHZW5lcmF0b3IsIGdlbikgICAgXAotICAgIHRlbXBsYXRlPGNsYXNzIEdlbmVyYXRvcj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCBzZWVkKEdlbmVyYXRvciYgZ2VuLCB0eXBlbmFtZSA6Om5kbmJvb3N0OjpyYW5kb206OmRldGFpbDo6ZGlzYWJsZV9zZWVkPEdlbmVyYXRvcj46OnR5cGUqID0gMCkKLQotI2RlZmluZSBORE5CT09TVF9SQU5ET01fREVUQUlMX1NFRURfU0VRX0NPTlNUUlVDVE9SKFNlbGYsIFNlZWRTZXEsIHNlcSkgICAgXAotICAgIHRlbXBsYXRlPGNsYXNzIFNlZWRTZXE+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGV4cGxpY2l0IFNlbGYoU2VlZFNlcSYgc2VxLCB0eXBlbmFtZSA6Om5kbmJvb3N0OjpyYW5kb206OmRldGFpbDo6ZGlzYWJsZV9jb25zdHJ1Y3RvcjxTZWxmLCBTZWVkU2VxPjo6dHlwZSogPSAwKQotCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfU0VFRF9TRVFfU0VFRChTZWxmLCBTZWVkU2VxLCBzZXEpICAgXAotICAgIHRlbXBsYXRlPGNsYXNzIFNlZWRTZXE+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB2b2lkIHNlZWQoU2VlZFNlcSYgc2VxLCB0eXBlbmFtZSA6Om5kbmJvb3N0OjpyYW5kb206OmRldGFpbDo6ZGlzYWJsZV9zZWVkPFNlZWRTZXE+Ojp0eXBlKiA9IDApCi0KLSNkZWZpbmUgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9BUklUSE1FVElDX0NPTlNUUlVDVE9SKFNlbGYsIFQsIHgpICBcCi0gICAgZXhwbGljaXQgU2VsZihjb25zdCBUJiB4KQotCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfQVJJVEhNRVRJQ19TRUVEKFNlbGYsIFQsIHgpIFwKLSAgICB2b2lkIHNlZWQoY29uc3QgVCYgeCkKLX0KLX0KLX0KLQotI2Vsc2UKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2FyaXRobWV0aWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ib29sLmhwcD4KLQotI2RlZmluZSBORE5CT09TVF9SQU5ET01fREVUQUlMX0dFTkVSQVRPUl9DT05TVFJVQ1RPUihTZWxmLCBHZW5lcmF0b3IsIGdlbikgXAotICAgIFNlbGYoU2VsZiYgb3RoZXIpIHsgKnRoaXMgPSBvdGhlcjsgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIFNlbGYoY29uc3QgU2VsZiYgb3RoZXIpIHsgKnRoaXMgPSBvdGhlcjsgfSAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHRlbXBsYXRlPGNsYXNzIEdlbmVyYXRvcj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGV4cGxpY2l0IFNlbGYoR2VuZXJhdG9yJiBnZW4pIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBib29zdF9yYW5kb21fY29uc3RydWN0b3JfaW1wbChnZW4sIDo6bmRuYm9vc3Q6OmlzX2FyaXRobWV0aWM8R2VuZXJhdG9yPigpKTtcCi0gICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdGVtcGxhdGU8Y2xhc3MgR2VuZXJhdG9yPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCBib29zdF9yYW5kb21fY29uc3RydWN0b3JfaW1wbChHZW5lcmF0b3ImIGdlbiwgOjpuZG5ib29zdDo6bXBsOjpmYWxzZV8pCi0KLSNkZWZpbmUgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9HRU5FUkFUT1JfU0VFRChTZWxmLCBHZW5lcmF0b3IsIGdlbikgICAgXAotICAgIHRlbXBsYXRlPGNsYXNzIEdlbmVyYXRvcj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCBzZWVkKEdlbmVyYXRvciYgZ2VuKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgYm9vc3RfcmFuZG9tX3NlZWRfaW1wbChnZW4sIDo6bmRuYm9vc3Q6OmlzX2FyaXRobWV0aWM8R2VuZXJhdG9yPigpKTtcCi0gICAgfVwKLSAgICB0ZW1wbGF0ZTxjbGFzcyBHZW5lcmF0b3I+XAotICAgIHZvaWQgYm9vc3RfcmFuZG9tX3NlZWRfaW1wbChHZW5lcmF0b3ImIGdlbiwgOjpuZG5ib29zdDo6bXBsOjpmYWxzZV8pCi0KLSNkZWZpbmUgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9TRUVEX1NFUV9DT05TVFJVQ1RPUihTZWxmLCBTZWVkU2VxLCBzZXEpICAgIFwKLSAgICBTZWxmKFNlbGYmIG90aGVyKSB7ICp0aGlzID0gb3RoZXI7IH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBTZWxmKGNvbnN0IFNlbGYmIG90aGVyKSB7ICp0aGlzID0gb3RoZXI7IH0gICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB0ZW1wbGF0ZTxjbGFzcyBTZWVkU2VxPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBleHBsaWNpdCBTZWxmKFNlZWRTZXEmIHNlcSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgYm9vc3RfcmFuZG9tX2NvbnN0cnVjdG9yX2ltcGwoc2VxLCA6Om5kbmJvb3N0Ojppc19hcml0aG1ldGljPFNlZWRTZXE+KCkpO1wKLSAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB0ZW1wbGF0ZTxjbGFzcyBTZWVkU2VxPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB2b2lkIGJvb3N0X3JhbmRvbV9jb25zdHJ1Y3Rvcl9pbXBsKFNlZWRTZXEmIHNlcSwgOjpuZG5ib29zdDo6bXBsOjpmYWxzZV8pCi0KLSNkZWZpbmUgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9TRUVEX1NFUV9TRUVEKFNlbGYsIFNlZWRTZXEsIHNlcSkgICAgICAgICAgIFwKLSAgICB0ZW1wbGF0ZTxjbGFzcyBTZWVkU2VxPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB2b2lkIHNlZWQoU2VlZFNlcSYgc2VxKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgYm9vc3RfcmFuZG9tX3NlZWRfaW1wbChzZXEsIDo6bmRuYm9vc3Q6OmlzX2FyaXRobWV0aWM8U2VlZFNlcT4oKSk7IFwKLSAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB0ZW1wbGF0ZTxjbGFzcyBTZWVkU2VxPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB2b2lkIGJvb3N0X3JhbmRvbV9zZWVkX2ltcGwoU2VlZFNlcSYgc2VxLCA6Om5kbmJvb3N0OjptcGw6OmZhbHNlXykKLQotI2RlZmluZSBORE5CT09TVF9SQU5ET01fREVUQUlMX0FSSVRITUVUSUNfQ09OU1RSVUNUT1IoU2VsZiwgVCwgeCkgIFwKLSAgICBleHBsaWNpdCBTZWxmKGNvbnN0IFQmIHgpIHsgYm9vc3RfcmFuZG9tX2NvbnN0cnVjdG9yX2ltcGwoeCwgOjpuZG5ib29zdDo6bXBsOjp0cnVlXygpKTsgfVwKLSAgICB2b2lkIGJvb3N0X3JhbmRvbV9jb25zdHJ1Y3Rvcl9pbXBsKGNvbnN0IFQmIHgsIDo6bmRuYm9vc3Q6Om1wbDo6dHJ1ZV8pCi0KLSNkZWZpbmUgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9BUklUSE1FVElDX1NFRUQoU2VsZiwgVCwgeCkgXAotICAgIHZvaWQgc2VlZChjb25zdCBUJiB4KSB7IGJvb3N0X3JhbmRvbV9zZWVkX2ltcGwoeCwgOjpuZG5ib29zdDo6bXBsOjp0cnVlXygpKTsgfVwKLSAgICB2b2lkIGJvb3N0X3JhbmRvbV9zZWVkX2ltcGwoY29uc3QgVCYgeCwgOjpuZG5ib29zdDo6bXBsOjp0cnVlXykKLQotI2VuZGlmCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yYW5kb20vZGV0YWlsL3NlZWRfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JhbmRvbS9kZXRhaWwvc2VlZF9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzE4NGVkYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JhbmRvbS9kZXRhaWwvc2VlZF9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM5NyArMCwwIEBACi0vKiBib29zdCByYW5kb20vZGV0YWlsL3NlZWQuaHBwIGhlYWRlciBmaWxlCi0gKgotICogQ29weXJpZ2h0IFN0ZXZlbiBXYXRhbmFiZSAyMDA5Ci0gKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0gKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotICoKLSAqICRJZDogc2VlZF9pbXBsLmhwcCA3Mjk1MSAyMDExLTA3LTA3IDA0OjU3OjM3WiBzdGV2ZW5fd2F0YW5hYmUgJAotICovCi0KLSNpZm5kZWYgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9TRUVEX0lNUExfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfU0VFRF9JTVBMX0hQUAotCi0jaW5jbHVkZSA8c3RkZXhjZXB0PgotI2luY2x1ZGUgPG5kbmJvb3N0L2NzdGRpbnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy9ub190cjEvY21hdGguaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2ludGVnZXIvaW50ZWdlcl9tYXNrLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pbnRlZ2VyL3N0YXRpY19sb2cyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zaWduZWQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2ludGVncmFsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9tYWtlX3Vuc2lnbmVkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYm9vbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaW50LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5kb20vZGV0YWlsL2NvbnN0X21vZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZG9tL2RldGFpbC9pbnRlZ2VyX2xvZzIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmRvbS9kZXRhaWwvc2lnbmVkX3Vuc2lnbmVkX3Rvb2xzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5kb20vZGV0YWlsL2dlbmVyYXRvcl9iaXRzLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmRvbS9kZXRhaWwvZGlzYWJsZV93YXJuaW5ncy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci1uYW1lc3BhY2UgcmFuZG9tIHsKLW5hbWVzcGFjZSBkZXRhaWwgewotCi0vLyBmaW5kcyB0aGUgc2VlZCB0eXBlIG9mIGFuIGVuZ2luZSwgZ2l2ZW4gaXRzCi0vLyByZXN1bHRfdHlwZS4gIElmIHRoZSByZXN1bHRfdHlwZSBpcyBpbnRlZ3JhbAotLy8gdGhlIHNlZWQgdHlwZSBpcyB0aGUgc2FtZS4gIElmIHRoZSByZXN1bHRfdHlwZQotLy8gaXMgZmxvYXRpbmcgcG9pbnQsIHRoZSBzZWVkIHR5cGUgaXMgdWludDMyX3QKLXRlbXBsYXRlPGNsYXNzIFQ+Ci1zdHJ1Y3Qgc2VlZF90eXBlCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6bXBsOjppZl88bmRuYm9vc3Q6OmlzX2ludGVncmFsPFQ+LAotICAgICAgICBULAotICAgICAgICBuZG5ib29zdDo6dWludDMyX3QKLSAgICA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTxpbnQgTj4KLXN0cnVjdCBjb25zdF9wb3dfaW1wbAotewotICAgIHRlbXBsYXRlPGNsYXNzIFQ+Ci0gICAgc3RhdGljIFQgY2FsbChUIGFyZywgaW50IG4sIFQgcmVzdWx0KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGNvbnN0X3Bvd19pbXBsPE4gLyAyPjo6Y2FsbChhcmcgKiBhcmcsIG4gLyAyLAotICAgICAgICAgICAgbiUyID09IDA/IHJlc3VsdCA6IHJlc3VsdCAqIGFyZyk7Ci0gICAgfQotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGNvbnN0X3Bvd19pbXBsPDA+Ci17Ci0gICAgdGVtcGxhdGU8Y2xhc3MgVD4KLSAgICBzdGF0aWMgVCBjYWxsKFQsIGludCwgVCByZXN1bHQpCi0gICAgewotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLX07Ci0KLS8vIHJlcXVpcmVzIE4gaXMgYW4gdXBwZXIgYm91bmQgb24gbgotdGVtcGxhdGU8aW50IE4sIGNsYXNzIFQ+Ci1pbmxpbmUgVCBjb25zdF9wb3coVCBhcmcsIGludCBuKSB7IHJldHVybiBjb25zdF9wb3dfaW1wbDxOPjo6Y2FsbChhcmcsIG4sIFQoMSkpOyB9Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1pbmxpbmUgVCBwb3cyKGludCBuKQotewotICAgIHR5cGVkZWYgdW5zaWduZWQgaW50X3R5cGU7Ci0gICAgY29uc3QgaW50IG1heF9iaXRzID0gc3RkOjpudW1lcmljX2xpbWl0czxpbnRfdHlwZT46OmRpZ2l0czsKLSAgICBUIG11bHRpcGxpZXIgPSBUKGludF90eXBlKDEpIDw8IChtYXhfYml0cyAtIDEpKSAqIDI7Ci0gICAgcmV0dXJuIChpbnRfdHlwZSgxKSA8PCAobiAlIG1heF9iaXRzKSkgKgotICAgICAgICBjb25zdF9wb3c8c3RkOjpudW1lcmljX2xpbWl0czxUPjo6ZGlnaXRzIC8gbWF4X2JpdHM+KG11bHRpcGxpZXIsIG4gLyBtYXhfYml0cyk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIEVuZ2luZSwgY2xhc3MgSXRlcj4KLXZvaWQgZ2VuZXJhdGVfZnJvbV9yZWFsKEVuZ2luZSYgZW5nLCBJdGVyIGJlZ2luLCBJdGVyIGVuZCkKLXsKLSAgICB1c2luZyBzdGQ6OmZtb2Q7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBFbmdpbmU6OnJlc3VsdF90eXBlIFJlYWxUeXBlOwotICAgIGNvbnN0IGludCBCaXRzID0gZGV0YWlsOjpnZW5lcmF0b3JfYml0czxFbmdpbmU+Ojp2YWx1ZSgpOwotICAgIGludCByZW1haW5pbmdfYml0cyA9IDA7Ci0gICAgbmRuYm9vc3Q6OnVpbnRfbGVhc3QzMl90IHNhdmVkX2JpdHMgPSAwOwotICAgIFJlYWxUeXBlIG11bHRpcGxpZXIgPSBwb3cyPFJlYWxUeXBlPiggQml0cyk7Ci0gICAgUmVhbFR5cGUgbXVsdDMyID0gUmVhbFR5cGUoNDI5NDk2NzI5Ni4wKTsgLy8gMl4zMgotICAgIHdoaWxlKHRydWUpIHsKLSAgICAgICAgUmVhbFR5cGUgdmFsID0gZW5nKCkgKiBtdWx0aXBsaWVyOwotICAgICAgICBpbnQgYXZhaWxhYmxlX2JpdHMgPSBCaXRzOwotICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIGNvbXBpbGVyIGNhbiBvcHRpbWl6ZSB0aGlzIG91dAotICAgICAgICAvLyBpZiBpdCBpc24ndCBwb3NzaWJsZS4KLSAgICAgICAgaWYoQml0cyA8IDMyICYmIGF2YWlsYWJsZV9iaXRzIDwgMzIgLSByZW1haW5pbmdfYml0cykgewotICAgICAgICAgICAgc2F2ZWRfYml0cyB8PSBuZG5ib29zdDo6dWludF9sZWFzdDMyX3QodmFsKSA8PCByZW1haW5pbmdfYml0czsKLSAgICAgICAgICAgIHJlbWFpbmluZ19iaXRzICs9IEJpdHM7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBJZiBCaXRzIDwgMzIsIHRoZW4gcmVtYWluaW5nX2JpdHMgIT0gMCwgc2luY2UKLSAgICAgICAgICAgIC8vIGlmIHJlbWFpbmluZ19iaXRzID09IDAsIGF2YWlsYWJsZV9iaXRzIDwgMzIgLSAwLAotICAgICAgICAgICAgLy8gYW5kIHdlIHdvbid0IGdldCBoZXJlIHRvIGJlZ2luIHdpdGguCi0gICAgICAgICAgICBpZihCaXRzIDwgMzIgfHwgcmVtYWluaW5nX2JpdHMgIT0gMCkgewotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1aW50X2xlYXN0MzJfdCBkaXZpc29yID0KLSAgICAgICAgICAgICAgICAgICAgKG5kbmJvb3N0Ojp1aW50X2xlYXN0MzJfdCgxKSA8PCAoMzIgLSByZW1haW5pbmdfYml0cykpOwotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1aW50X2xlYXN0MzJfdCBleHRyYV9iaXRzID0gbmRuYm9vc3Q6OnVpbnRfbGVhc3QzMl90KGZtb2QodmFsLCBtdWx0MzIpKSAmIChkaXZpc29yIC0gMSk7Ci0gICAgICAgICAgICAgICAgdmFsID0gdmFsIC8gZGl2aXNvcjsKLSAgICAgICAgICAgICAgICAqYmVnaW4rKyA9IHNhdmVkX2JpdHMgfCAoZXh0cmFfYml0cyA8PCByZW1haW5pbmdfYml0cyk7Ci0gICAgICAgICAgICAgICAgaWYoYmVnaW4gPT0gZW5kKSByZXR1cm47Ci0gICAgICAgICAgICAgICAgYXZhaWxhYmxlX2JpdHMgLT0gMzIgLSByZW1haW5pbmdfYml0czsKLSAgICAgICAgICAgICAgICByZW1haW5pbmdfYml0cyA9IDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAvLyBJZiBCaXRzIDwgMzIgd2Ugc2hvdWxkIG5ldmVyIGVudGVyIHRoaXMgbG9vcAotICAgICAgICAgICAgaWYoQml0cyA+PSAzMikgewotICAgICAgICAgICAgICAgIGZvcig7IGF2YWlsYWJsZV9iaXRzID49IDMyOyBhdmFpbGFibGVfYml0cyAtPSAzMikgewotICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6dWludF9sZWFzdDMyX3Qgd29yZCA9IG5kbmJvb3N0Ojp1aW50X2xlYXN0MzJfdChmbW9kKHZhbCwgbXVsdDMyKSk7Ci0gICAgICAgICAgICAgICAgICAgIHZhbCAvPSBtdWx0MzI7Ci0gICAgICAgICAgICAgICAgICAgICpiZWdpbisrID0gd29yZDsKLSAgICAgICAgICAgICAgICAgICAgaWYoYmVnaW4gPT0gZW5kKSByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmVtYWluaW5nX2JpdHMgPSBhdmFpbGFibGVfYml0czsKLSAgICAgICAgICAgIHNhdmVkX2JpdHMgPSBzdGF0aWNfY2FzdDxuZG5ib29zdDo6dWludF9sZWFzdDMyX3Q+KHZhbCk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIEVuZ2luZSwgY2xhc3MgSXRlcj4KLXZvaWQgZ2VuZXJhdGVfZnJvbV9pbnQoRW5naW5lJiBlbmcsIEl0ZXIgYmVnaW4sIEl0ZXIgZW5kKQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgRW5naW5lOjpyZXN1bHRfdHlwZSBJbnRUeXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6Om1ha2VfdW5zaWduZWQ8SW50VHlwZT46OnR5cGUgdW5zaWduZWRfdHlwZTsKLSAgICBpbnQgcmVtYWluaW5nX2JpdHMgPSAwOwotICAgIG5kbmJvb3N0Ojp1aW50X2xlYXN0MzJfdCBzYXZlZF9iaXRzID0gMDsKLSAgICB1bnNpZ25lZF90eXBlIHJhbmdlID0gbmRuYm9vc3Q6OnJhbmRvbTo6ZGV0YWlsOjpzdWJ0cmFjdDxJbnRUeXBlPigpKChlbmcubWF4KSgpLCAoZW5nLm1pbikoKSk7Ci0KLSAgICBpbnQgYml0cyA9Ci0gICAgICAgIChyYW5nZSA9PSAoc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZF90eXBlPjo6bWF4KSgpKSA/Ci0gICAgICAgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkX3R5cGU+OjpkaWdpdHMgOgotICAgICAgICAgICAgZGV0YWlsOjppbnRlZ2VyX2xvZzIocmFuZ2UgKyAxKTsKLQotICAgIHsKLSAgICAgICAgaW50IGRpc2NhcmRlZF9iaXRzID0gZGV0YWlsOjppbnRlZ2VyX2xvZzIoYml0cyk7Ci0gICAgICAgIHVuc2lnbmVkX3R5cGUgZXhjZXNzID0gKHJhbmdlICsgMSkgPj4gKGJpdHMgLSBkaXNjYXJkZWRfYml0cyk7Ci0gICAgICAgIGlmKGV4Y2VzcyAhPSAwKSB7Ci0gICAgICAgICAgICBpbnQgZXh0cmFfYml0cyA9IGRldGFpbDo6aW50ZWdlcl9sb2cyKChleGNlc3MgLSAxKSBeIGV4Y2Vzcyk7Ci0gICAgICAgICAgICBiaXRzID0gYml0cyAtIGRpc2NhcmRlZF9iaXRzICsgZXh0cmFfYml0czsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHVuc2lnbmVkX3R5cGUgbWFzayA9IChzdGF0aWNfY2FzdDx1bnNpZ25lZF90eXBlPigyKSA8PCAoYml0cyAtIDEpKSAtIDE7Ci0gICAgdW5zaWduZWRfdHlwZSBsaW1pdCA9ICgocmFuZ2UgKyAxKSAmIH5tYXNrKSAtIDE7Ci0KLSAgICB3aGlsZSh0cnVlKSB7Ci0gICAgICAgIHVuc2lnbmVkX3R5cGUgdmFsOwotICAgICAgICBkbyB7Ci0gICAgICAgICAgICB2YWwgPSBuZG5ib29zdDo6cmFuZG9tOjpkZXRhaWw6OnN1YnRyYWN0PEludFR5cGU+KCkoZW5nKCksIChlbmcubWluKSgpKTsKLSAgICAgICAgfSB3aGlsZShsaW1pdCAhPSByYW5nZSAmJiB2YWwgPiBsaW1pdCk7Ci0gICAgICAgIHZhbCAmPSBtYXNrOwotICAgICAgICBpbnQgYXZhaWxhYmxlX2JpdHMgPSBiaXRzOwotICAgICAgICBpZihhdmFpbGFibGVfYml0cyA9PSAzMikgewotICAgICAgICAgICAgKmJlZ2luKysgPSBzdGF0aWNfY2FzdDxuZG5ib29zdDo6dWludF9sZWFzdDMyX3Q+KHZhbCkgJiAweEZGRkZGRkZGdTsKLSAgICAgICAgICAgIGlmKGJlZ2luID09IGVuZCkgcmV0dXJuOwotICAgICAgICB9IGVsc2UgaWYoYXZhaWxhYmxlX2JpdHMgJSAzMiA9PSAwKSB7Ci0gICAgICAgICAgICBmb3IoaW50IGkgPSAwOyBpIDwgYXZhaWxhYmxlX2JpdHMgLyAzMjsgKytpKSB7Ci0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVpbnRfbGVhc3QzMl90IHdvcmQgPSBuZG5ib29zdDo6dWludF9sZWFzdDMyX3QodmFsKSAmIDB4RkZGRkZGRkZ1OwotICAgICAgICAgICAgICAgIGludCBzdXByZXNzX3dhcm5pbmcgPSAoYml0cyA+PSAzMik7Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfQVNTRVJUKHN1cHJlc3Nfd2FybmluZyA9PSAxKTsKLSAgICAgICAgICAgICAgICB2YWwgPj49ICgzMiAqIHN1cHJlc3Nfd2FybmluZyk7Ci0gICAgICAgICAgICAgICAgKmJlZ2luKysgPSB3b3JkOwotICAgICAgICAgICAgICAgIGlmKGJlZ2luID09IGVuZCkgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYoYml0cyA8IDMyICYmIGF2YWlsYWJsZV9iaXRzIDwgMzIgLSByZW1haW5pbmdfYml0cykgewotICAgICAgICAgICAgc2F2ZWRfYml0cyB8PSBuZG5ib29zdDo6dWludF9sZWFzdDMyX3QodmFsKSA8PCByZW1haW5pbmdfYml0czsKLSAgICAgICAgICAgIHJlbWFpbmluZ19iaXRzICs9IGJpdHM7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZihiaXRzIDwgMzIgfHwgcmVtYWluaW5nX2JpdHMgIT0gMCkgewotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1aW50X2xlYXN0MzJfdCBleHRyYV9iaXRzID0gbmRuYm9vc3Q6OnVpbnRfbGVhc3QzMl90KHZhbCkgJiAoKG5kbmJvb3N0Ojp1aW50X2xlYXN0MzJfdCgxKSA8PCAoMzIgLSByZW1haW5pbmdfYml0cykpIC0gMSk7Ci0gICAgICAgICAgICAgICAgdmFsID4+PSAzMiAtIHJlbWFpbmluZ19iaXRzOwotICAgICAgICAgICAgICAgICpiZWdpbisrID0gc2F2ZWRfYml0cyB8IChleHRyYV9iaXRzIDw8IHJlbWFpbmluZ19iaXRzKTsKLSAgICAgICAgICAgICAgICBpZihiZWdpbiA9PSBlbmQpIHJldHVybjsKLSAgICAgICAgICAgICAgICBhdmFpbGFibGVfYml0cyAtPSAzMiAtIHJlbWFpbmluZ19iaXRzOwotICAgICAgICAgICAgICAgIHJlbWFpbmluZ19iaXRzID0gMDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmKGJpdHMgPj0gMzIpIHsKLSAgICAgICAgICAgICAgICBmb3IoOyBhdmFpbGFibGVfYml0cyA+PSAzMjsgYXZhaWxhYmxlX2JpdHMgLT0gMzIpIHsKLSAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVpbnRfbGVhc3QzMl90IHdvcmQgPSBuZG5ib29zdDo6dWludF9sZWFzdDMyX3QodmFsKSAmIDB4RkZGRkZGRkZ1OwotICAgICAgICAgICAgICAgICAgICBpbnQgc3VwcmVzc193YXJuaW5nID0gKGJpdHMgPj0gMzIpOwotICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9BU1NFUlQoc3VwcmVzc193YXJuaW5nID09IDEpOwotICAgICAgICAgICAgICAgICAgICB2YWwgPj49ICgzMiAqIHN1cHJlc3Nfd2FybmluZyk7Ci0gICAgICAgICAgICAgICAgICAgICpiZWdpbisrID0gd29yZDsKLSAgICAgICAgICAgICAgICAgICAgaWYoYmVnaW4gPT0gZW5kKSByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmVtYWluaW5nX2JpdHMgPSBhdmFpbGFibGVfYml0czsKLSAgICAgICAgICAgIHNhdmVkX2JpdHMgPSBzdGF0aWNfY2FzdDxuZG5ib29zdDo6dWludF9sZWFzdDMyX3Q+KHZhbCk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIEVuZ2luZSwgY2xhc3MgSXRlcj4KLXZvaWQgZ2VuZXJhdGVfaW1wbChFbmdpbmUmIGVuZywgSXRlciBmaXJzdCwgSXRlciBsYXN0LCBuZG5ib29zdDo6bXBsOjp0cnVlXykKLXsKLSAgICByZXR1cm4gZGV0YWlsOjpnZW5lcmF0ZV9mcm9tX2ludChlbmcsIGZpcnN0LCBsYXN0KTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgRW5naW5lLCBjbGFzcyBJdGVyPgotdm9pZCBnZW5lcmF0ZV9pbXBsKEVuZ2luZSYgZW5nLCBJdGVyIGZpcnN0LCBJdGVyIGxhc3QsIG5kbmJvb3N0OjptcGw6OmZhbHNlXykKLXsKLSAgICByZXR1cm4gZGV0YWlsOjpnZW5lcmF0ZV9mcm9tX3JlYWwoZW5nLCBmaXJzdCwgbGFzdCk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIEVuZ2luZSwgY2xhc3MgSXRlcj4KLXZvaWQgZ2VuZXJhdGUoRW5naW5lJiBlbmcsIEl0ZXIgZmlyc3QsIEl0ZXIgbGFzdCkKLXsKLSAgICByZXR1cm4gZGV0YWlsOjpnZW5lcmF0ZV9pbXBsKGVuZywgZmlyc3QsIGxhc3QsIG5kbmJvb3N0Ojppc19pbnRlZ3JhbDx0eXBlbmFtZSBFbmdpbmU6OnJlc3VsdF90eXBlPigpKTsKLX0KLQotCi0KLXRlbXBsYXRlPGNsYXNzIEludFR5cGUsIEludFR5cGUgbSwgY2xhc3MgU2VlZFNlcT4KLUludFR5cGUgc2VlZF9vbmVfaW50KFNlZWRTZXEmIHNlcSkKLXsKLSAgICBzdGF0aWMgY29uc3QgaW50IGxvZyA9IDo6bmRuYm9vc3Q6Om1wbDo6aWZfYzwobSA9PSAwKSwKLSAgICAgICAgOjpuZG5ib29zdDo6bXBsOjppbnRfPCg6OnN0ZDo6bnVtZXJpY19saW1pdHM8SW50VHlwZT46OmRpZ2l0cyk+LAotICAgICAgICA6Om5kbmJvb3N0OjpzdGF0aWNfbG9nMjxtPiA+Ojp0eXBlOjp2YWx1ZTsKLSAgICBzdGF0aWMgY29uc3QgaW50IGsgPQotICAgICAgICAobG9nICsgKCh+KHN0YXRpY19jYXN0PEludFR5cGU+KDIpIDw8IChsb2cgLSAxKSkgJiBtKT8gMzIgOiAzMSkpIC8gMzI7Ci0gICAgOjpuZG5ib29zdDo6dWludF9sZWFzdDMyX3QgYXJyYXlbbG9nIC8gMzIgKyA0XTsKLSAgICBzZXEuZ2VuZXJhdGUoJmFycmF5WzBdLCAmYXJyYXlbMF0gKyBrICsgMyk7Ci0gICAgSW50VHlwZSBzID0gMDsKLSAgICBmb3IoaW50IGogPSAwOyBqIDwgazsgKytqKSB7Ci0gICAgICAgIEludFR5cGUgZGlnaXQgPSBjb25zdF9tb2Q8SW50VHlwZSwgbT46OmFwcGx5KEludFR5cGUoYXJyYXlbaiszXSkpOwotICAgICAgICBJbnRUeXBlIG11bHQgPSBJbnRUeXBlKDEpIDw8IDMyKmo7Ci0gICAgICAgIHMgPSBjb25zdF9tb2Q8SW50VHlwZSwgbT46Om11bHRfYWRkKG11bHQsIGRpZ2l0LCBzKTsKLSAgICB9Ci0gICAgcmV0dXJuIHM7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIEludFR5cGUsIEludFR5cGUgbSwgY2xhc3MgSXRlcj4KLUludFR5cGUgZ2V0X29uZV9pbnQoSXRlciYgZmlyc3QsIEl0ZXIgbGFzdCkKLXsKLSAgICBzdGF0aWMgY29uc3QgaW50IGxvZyA9IDo6bmRuYm9vc3Q6Om1wbDo6aWZfYzwobSA9PSAwKSwKLSAgICAgICAgOjpuZG5ib29zdDo6bXBsOjppbnRfPCg6OnN0ZDo6bnVtZXJpY19saW1pdHM8SW50VHlwZT46OmRpZ2l0cyk+LAotICAgICAgICA6Om5kbmJvb3N0OjpzdGF0aWNfbG9nMjxtPiA+Ojp0eXBlOjp2YWx1ZTsKLSAgICBzdGF0aWMgY29uc3QgaW50IGsgPQotICAgICAgICAobG9nICsgKCh+KHN0YXRpY19jYXN0PEludFR5cGU+KDIpIDw8IChsb2cgLSAxKSkgJiBtKT8gMzIgOiAzMSkpIC8gMzI7Ci0gICAgSW50VHlwZSBzID0gMDsKLSAgICBmb3IoaW50IGogPSAwOyBqIDwgazsgKytqKSB7Ci0gICAgICAgIGlmKGZpcnN0ID09IGxhc3QpIHsKLSAgICAgICAgICAgIHRocm93IDo6c3RkOjppbnZhbGlkX2FyZ3VtZW50KCJOb3QgZW5vdWdoIGVsZW1lbnRzIGluIGNhbGwgdG8gc2VlZC4iKTsKLSAgICAgICAgfQotICAgICAgICBJbnRUeXBlIGRpZ2l0ID0gY29uc3RfbW9kPEludFR5cGUsIG0+OjphcHBseShJbnRUeXBlKCpmaXJzdCsrKSk7Ci0gICAgICAgIEludFR5cGUgbXVsdCA9IEludFR5cGUoMSkgPDwgMzIqajsKLSAgICAgICAgcyA9IGNvbnN0X21vZDxJbnRUeXBlLCBtPjo6bXVsdF9hZGQobXVsdCwgZGlnaXQsIHMpOwotICAgIH0KLSAgICByZXR1cm4gczsKLX0KLQotLy8gVE9ETzogd29yayBpbi1wbGFjZSB3aGVuZXZlciBwb3NzaWJsZQotdGVtcGxhdGU8aW50IHcsIHN0ZDo6c2l6ZV90IG4sIGNsYXNzIFNlZWRTZXEsIGNsYXNzIFVJbnRUeXBlPgotdm9pZCBzZWVkX2FycmF5X2ludF9pbXBsKFNlZWRTZXEmIHNlcSwgVUludFR5cGUgKCZ4KVtuXSkKLXsKLSAgICBuZG5ib29zdDo6dWludF9sZWFzdDMyX3Qgc3RvcmFnZVsoKHcrMzEpLzMyKSAqIG5dOwotICAgIHNlcS5nZW5lcmF0ZSgmc3RvcmFnZVswXSwgJnN0b3JhZ2VbMF0gKyAoKHcrMzEpLzMyKSAqIG4pOwotICAgIGZvcihzdGQ6OnNpemVfdCBqID0gMDsgaiA8IG47IGorKykgewotICAgICAgICBVSW50VHlwZSB2YWwgPSAwOwotICAgICAgICBmb3Ioc3RkOjpzaXplX3QgayA9IDA7IGsgPCAodyszMSkvMzI7ICsraykgewotICAgICAgICAgICAgdmFsICs9IHN0YXRpY19jYXN0PFVJbnRUeXBlPihzdG9yYWdlWyh3KzMxKS8zMipqICsga10pIDw8IDMyKms7Ci0gICAgICAgIH0KLSAgICAgICAgeFtqXSA9IHZhbCAmIDo6bmRuYm9vc3Q6Omxvd19iaXRzX21hc2tfdDx3Pjo6c2lnX2JpdHM7Ci0gICAgfQotfQotCi10ZW1wbGF0ZTxpbnQgdywgc3RkOjpzaXplX3QgbiwgY2xhc3MgU2VlZFNlcSwgY2xhc3MgSW50VHlwZT4KLWlubGluZSB2b2lkIHNlZWRfYXJyYXlfaW50X2ltcGwoU2VlZFNlcSYgc2VxLCBJbnRUeXBlICgmeClbbl0sIG5kbmJvb3N0OjptcGw6OnRydWVfKQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6Om1ha2VfdW5zaWduZWQ8SW50VHlwZT46OnR5cGUgdW5zaWduZWRfYXJyYXlbbl07Ci0gICAgc2VlZF9hcnJheV9pbnRfaW1wbDx3PihzZXEsIHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWRfYXJyYXkmPih4KSk7Ci19Ci0KLXRlbXBsYXRlPGludCB3LCBzdGQ6OnNpemVfdCBuLCBjbGFzcyBTZWVkU2VxLCBjbGFzcyBJbnRUeXBlPgotaW5saW5lIHZvaWQgc2VlZF9hcnJheV9pbnRfaW1wbChTZWVkU2VxJiBzZXEsIEludFR5cGUgKCZ4KVtuXSwgbmRuYm9vc3Q6Om1wbDo6ZmFsc2VfKQotewotICAgIHNlZWRfYXJyYXlfaW50X2ltcGw8dz4oc2VxLCB4KTsKLX0KLQotdGVtcGxhdGU8aW50IHcsIHN0ZDo6c2l6ZV90IG4sIGNsYXNzIFNlZWRTZXEsIGNsYXNzIEludFR5cGU+Ci1pbmxpbmUgdm9pZCBzZWVkX2FycmF5X2ludChTZWVkU2VxJiBzZXEsIEludFR5cGUgKCZ4KVtuXSkKLXsKLSAgICBzZWVkX2FycmF5X2ludF9pbXBsPHc+KHNlcSwgeCwgbmRuYm9vc3Q6OmlzX3NpZ25lZDxJbnRUeXBlPigpKTsKLX0KLQotdGVtcGxhdGU8aW50IHcsIHN0ZDo6c2l6ZV90IG4sIGNsYXNzIEl0ZXIsIGNsYXNzIFVJbnRUeXBlPgotdm9pZCBmaWxsX2FycmF5X2ludF9pbXBsKEl0ZXImIGZpcnN0LCBJdGVyIGxhc3QsIFVJbnRUeXBlICgmeClbbl0pCi17Ci0gICAgZm9yKHN0ZDo6c2l6ZV90IGogPSAwOyBqIDwgbjsgaisrKSB7Ci0gICAgICAgIFVJbnRUeXBlIHZhbCA9IDA7Ci0gICAgICAgIGZvcihzdGQ6OnNpemVfdCBrID0gMDsgayA8ICh3KzMxKS8zMjsgKytrKSB7Ci0gICAgICAgICAgICBpZihmaXJzdCA9PSBsYXN0KSB7Ci0gICAgICAgICAgICAgICAgdGhyb3cgc3RkOjppbnZhbGlkX2FyZ3VtZW50KCJOb3QgZW5vdWdoIGVsZW1lbnRzIGluIGNhbGwgdG8gc2VlZC4iKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHZhbCArPSBzdGF0aWNfY2FzdDxVSW50VHlwZT4oKmZpcnN0KyspIDw8IDMyKms7Ci0gICAgICAgIH0KLSAgICAgICAgeFtqXSA9IHZhbCAmIDo6bmRuYm9vc3Q6Omxvd19iaXRzX21hc2tfdDx3Pjo6c2lnX2JpdHM7Ci0gICAgfQotfQotCi10ZW1wbGF0ZTxpbnQgdywgc3RkOjpzaXplX3QgbiwgY2xhc3MgSXRlciwgY2xhc3MgSW50VHlwZT4KLWlubGluZSB2b2lkIGZpbGxfYXJyYXlfaW50X2ltcGwoSXRlciYgZmlyc3QsIEl0ZXIgbGFzdCwgSW50VHlwZSAoJngpW25dLCBuZG5ib29zdDo6bXBsOjp0cnVlXykKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjptYWtlX3Vuc2lnbmVkPEludFR5cGU+Ojp0eXBlIHVuc2lnbmVkX2FycmF5W25dOwotICAgIGZpbGxfYXJyYXlfaW50X2ltcGw8dz4oZmlyc3QsIGxhc3QsIHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWRfYXJyYXkmPih4KSk7Ci19Ci0KLXRlbXBsYXRlPGludCB3LCBzdGQ6OnNpemVfdCBuLCBjbGFzcyBJdGVyLCBjbGFzcyBJbnRUeXBlPgotaW5saW5lIHZvaWQgZmlsbF9hcnJheV9pbnRfaW1wbChJdGVyJiBmaXJzdCwgSXRlciBsYXN0LCBJbnRUeXBlICgmeClbbl0sIG5kbmJvb3N0OjptcGw6OmZhbHNlXykKLXsKLSAgICBmaWxsX2FycmF5X2ludF9pbXBsPHc+KGZpcnN0LCBsYXN0LCB4KTsKLX0KLQotdGVtcGxhdGU8aW50IHcsIHN0ZDo6c2l6ZV90IG4sIGNsYXNzIEl0ZXIsIGNsYXNzIEludFR5cGU+Ci1pbmxpbmUgdm9pZCBmaWxsX2FycmF5X2ludChJdGVyJiBmaXJzdCwgSXRlciBsYXN0LCBJbnRUeXBlICgmeClbbl0pCi17Ci0gICAgZmlsbF9hcnJheV9pbnRfaW1wbDx3PihmaXJzdCwgbGFzdCwgeCwgbmRuYm9vc3Q6OmlzX3NpZ25lZDxJbnRUeXBlPigpKTsKLX0KLQotdGVtcGxhdGU8aW50IHcsIHN0ZDo6c2l6ZV90IG4sIGNsYXNzIFJlYWxUeXBlPgotdm9pZCBzZWVkX2FycmF5X3JlYWxfaW1wbChjb25zdCBuZG5ib29zdDo6dWludF9sZWFzdDMyX3QqIHN0b3JhZ2UsIFJlYWxUeXBlICgmeClbbl0pCi17Ci0gICAgbmRuYm9vc3Q6OnVpbnRfbGVhc3QzMl90IG1hc2sgPSB+KCh+bmRuYm9vc3Q6OnVpbnRfbGVhc3QzMl90KDApKSA8PCAodyUzMikpOwotICAgIFJlYWxUeXBlIHR3bzMyID0gNDI5NDk2NzI5Ni4wOwotICAgIGNvbnN0IFJlYWxUeXBlIGRpdmlzb3IgPSBSZWFsVHlwZSgxKS9kZXRhaWw6OnBvdzI8UmVhbFR5cGU+KHcpOwotICAgIHVuc2lnbmVkIGludCBqOwotICAgIGZvcihqID0gMDsgaiA8IG47ICsraikgewotICAgICAgICBSZWFsVHlwZSB2YWwgPSBSZWFsVHlwZSgwKTsKLSAgICAgICAgUmVhbFR5cGUgbXVsdCA9IGRpdmlzb3I7Ci0gICAgICAgIGZvcihpbnQgayA9IDA7IGsgPCB3LzMyOyArK2spIHsKLSAgICAgICAgICAgIHZhbCArPSAqc3RvcmFnZSsrICogbXVsdDsKLSAgICAgICAgICAgIG11bHQgKj0gdHdvMzI7Ci0gICAgICAgIH0KLSAgICAgICAgaWYobWFzayAhPSAwKSB7Ci0gICAgICAgICAgICB2YWwgKz0gKCpzdG9yYWdlKysgJiBtYXNrKSAqIG11bHQ7Ci0gICAgICAgIH0KLSAgICAgICAgTkROQk9PU1RfQVNTRVJUKHZhbCA+PSAwKTsKLSAgICAgICAgTkROQk9PU1RfQVNTRVJUKHZhbCA8IDEpOwotICAgICAgICB4W2pdID0gdmFsOwotICAgIH0KLX0KLQotdGVtcGxhdGU8aW50IHcsIHN0ZDo6c2l6ZV90IG4sIGNsYXNzIFNlZWRTZXEsIGNsYXNzIFJlYWxUeXBlPgotdm9pZCBzZWVkX2FycmF5X3JlYWwoU2VlZFNlcSYgc2VxLCBSZWFsVHlwZSAoJngpW25dKQotewotICAgIHVzaW5nIHN0ZDo6cG93OwotICAgIG5kbmJvb3N0Ojp1aW50X2xlYXN0MzJfdCBzdG9yYWdlWygodyszMSkvMzIpICogbl07Ci0gICAgc2VxLmdlbmVyYXRlKCZzdG9yYWdlWzBdLCAmc3RvcmFnZVswXSArICgodyszMSkvMzIpICogbik7Ci0gICAgc2VlZF9hcnJheV9yZWFsX2ltcGw8dz4oc3RvcmFnZSwgeCk7Ci19Ci0KLXRlbXBsYXRlPGludCB3LCBzdGQ6OnNpemVfdCBuLCBjbGFzcyBJdGVyLCBjbGFzcyBSZWFsVHlwZT4KLXZvaWQgZmlsbF9hcnJheV9yZWFsKEl0ZXImIGZpcnN0LCBJdGVyIGxhc3QsIFJlYWxUeXBlICgmeClbbl0pCi17Ci0gICAgbmRuYm9vc3Q6OnVpbnRfbGVhc3QzMl90IG1hc2sgPSB+KCh+bmRuYm9vc3Q6OnVpbnRfbGVhc3QzMl90KDApKSA8PCAodyUzMikpOwotICAgIFJlYWxUeXBlIHR3bzMyID0gNDI5NDk2NzI5Ni4wOwotICAgIGNvbnN0IFJlYWxUeXBlIGRpdmlzb3IgPSBSZWFsVHlwZSgxKS9kZXRhaWw6OnBvdzI8UmVhbFR5cGU+KHcpOwotICAgIHVuc2lnbmVkIGludCBqOwotICAgIGZvcihqID0gMDsgaiA8IG47ICsraikgewotICAgICAgICBSZWFsVHlwZSB2YWwgPSBSZWFsVHlwZSgwKTsKLSAgICAgICAgUmVhbFR5cGUgbXVsdCA9IGRpdmlzb3I7Ci0gICAgICAgIGZvcihpbnQgayA9IDA7IGsgPCB3LzMyOyArK2ssICsrZmlyc3QpIHsKLSAgICAgICAgICAgIGlmKGZpcnN0ID09IGxhc3QpIHRocm93IHN0ZDo6aW52YWxpZF9hcmd1bWVudCgiTm90IGVub3VnaCBlbGVtZW50cyBpbiBjYWxsIHRvIHNlZWQuIik7Ci0gICAgICAgICAgICB2YWwgKz0gKmZpcnN0ICogbXVsdDsKLSAgICAgICAgICAgIG11bHQgKj0gdHdvMzI7Ci0gICAgICAgIH0KLSAgICAgICAgaWYobWFzayAhPSAwKSB7Ci0gICAgICAgICAgICBpZihmaXJzdCA9PSBsYXN0KSB0aHJvdyBzdGQ6OmludmFsaWRfYXJndW1lbnQoIk5vdCBlbm91Z2ggZWxlbWVudHMgaW4gY2FsbCB0byBzZWVkLiIpOwotICAgICAgICAgICAgdmFsICs9ICgqZmlyc3QgJiBtYXNrKSAqIG11bHQ7Ci0gICAgICAgICAgICArK2ZpcnN0OwotICAgICAgICB9Ci0gICAgICAgIE5ETkJPT1NUX0FTU0VSVCh2YWwgPj0gMCk7Ci0gICAgICAgIE5ETkJPT1NUX0FTU0VSVCh2YWwgPCAxKTsKLSAgICAgICAgeFtqXSA9IHZhbDsKLSAgICB9Ci19Ci0KLX0KLX0KLX0KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmRvbS9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JhbmRvbS9kZXRhaWwvc2lnbmVkX3Vuc2lnbmVkX3Rvb2xzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmFuZG9tL2RldGFpbC9zaWduZWRfdW5zaWduZWRfdG9vbHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZmNiMWI2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZG9tL2RldGFpbC9zaWduZWRfdW5zaWduZWRfdG9vbHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODkgKzAsMCBAQAotLyogYm9vc3QgcmFuZG9tL2RldGFpbC9zaWduZWRfdW5zaWduZWRfdG9vbHMuaHBwIGhlYWRlciBmaWxlCi0gKgotICogQ29weXJpZ2h0IEplbnMgTWF1cmVyIDIwMDYKLSAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0gKi8KLQotI2lmbmRlZiBORE5CT09TVF9SQU5ET01fREVUQUlMX1NJR05FRF9VTlNJR05FRF9UT09MUwotI2RlZmluZSBORE5CT09TVF9SQU5ET01fREVUQUlMX1NJR05FRF9VTlNJR05FRF9UT09MUwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbGltaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL21ha2VfdW5zaWduZWQuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotbmFtZXNwYWNlIHJhbmRvbSB7Ci1uYW1lc3BhY2UgZGV0YWlsIHsKLQotCi0vKgotICogQ29tcHV0ZSB4IC0geSwgd2Uga25vdyB0aGF0IHggPj0geSwgcmV0dXJuIGFuIHVuc2lnbmVkIHZhbHVlLgotICovCi0KLXRlbXBsYXRlPGNsYXNzIFQsIGJvb2wgc2duID0gc3RkOjpudW1lcmljX2xpbWl0czxUPjo6aXNfc2lnbmVkPgotc3RydWN0IHN1YnRyYWN0IHsgfTsKLQotdGVtcGxhdGU8Y2xhc3MgVD4KLXN0cnVjdCBzdWJ0cmFjdDxULCAvKiBzaWduZWQgKi8gZmFsc2U+Ci17Ci0gIHR5cGVkZWYgVCByZXN1bHRfdHlwZTsKLSAgcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShUIHgsIFQgeSkgeyByZXR1cm4geCAtIHk7IH0KLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1zdHJ1Y3Qgc3VidHJhY3Q8VCwgLyogc2lnbmVkICovIHRydWU+Ci17Ci0gIHR5cGVkZWYgdHlwZW5hbWUgbWFrZV91bnNpZ25lZDxUPjo6dHlwZSByZXN1bHRfdHlwZTsKLSAgcmVzdWx0X3R5cGUgb3BlcmF0b3IoKShUIHgsIFQgeSkKLSAgewotICAgIGlmICh5ID49IDApICAgLy8gYmVjYXVzZSB4ID49IHksIGl0IGZvbGxvd3MgdGhhdCB4ID49IDAsIHRvbwotICAgICAgcmV0dXJuIHJlc3VsdF90eXBlKHgpIC0gcmVzdWx0X3R5cGUoeSk7Ci0gICAgaWYgKHggPj0gMCkgICAvLyB5IDwgMAotICAgICAgLy8gYXZvaWQgdGhlIG5hc3R5IHR3bydzIGNvbXBsZW1lbnQgY2FzZSBmb3IgeSA9PSBtaW4oKQotICAgICAgcmV0dXJuIHJlc3VsdF90eXBlKHgpICsgcmVzdWx0X3R5cGUoLSh5KzEpKSArIDE7Ci0gICAgLy8gYm90aCB4IGFuZCB5IGFyZSBuZWdhdGl2ZTogbm8gc2lnbmVkIG92ZXJmbG93Ci0gICAgcmV0dXJuIHJlc3VsdF90eXBlKHggLSB5KTsKLSAgfQotfTsKLQotLyoKLSAqIENvbXB1dGUgeCArIHksIHggaXMgdW5zaWduZWQsIHJlc3VsdCBmaXRzIGluIHR5cGUgb2YgInkiLgotICovCi0KLXRlbXBsYXRlPGNsYXNzIFQxLCBjbGFzcyBUMiwgYm9vbCBzZ24gPSBzdGQ6Om51bWVyaWNfbGltaXRzPFQyPjo6aXNfc2lnbmVkPgotc3RydWN0IGFkZCB7IH07Ci0KLXRlbXBsYXRlPGNsYXNzIFQxLCBjbGFzcyBUMj4KLXN0cnVjdCBhZGQ8VDEsIFQyLCAvKiBzaWduZWQgKi8gZmFsc2U+Ci17Ci0gIHR5cGVkZWYgVDIgcmVzdWx0X3R5cGU7Ci0gIHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoVDEgeCwgVDIgeSkgeyByZXR1cm4gVDIoeCkgKyB5OyB9Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgVDI+Ci1zdHJ1Y3QgYWRkPFQxLCBUMiwgLyogc2lnbmVkICovIHRydWU+Ci17Ci0gIHR5cGVkZWYgVDIgcmVzdWx0X3R5cGU7Ci0gIHJlc3VsdF90eXBlIG9wZXJhdG9yKCkoVDEgeCwgVDIgeSkKLSAgewotICAgIGlmICh5ID49IDApCi0gICAgICByZXR1cm4gVDIoeCkgKyB5OwotICAgIC8vIHkgPCAwCi0gICAgaWYgKHggPiBUMSgtKHkrMSkpKSAgLy8gcmVzdWx0ID49IDAgYWZ0ZXIgc3VidHJhY3Rpb24KLSAgICAgIC8vIGF2b2lkIHRoZSBuYXN0eSB0d28ncyBjb21wbGVtZW50IGVkZ2UgY2FzZSBmb3IgeSA9PSBtaW4oKQotICAgICAgcmV0dXJuIFQyKHggLSBUMSgtKHkrMSkpIC0gMSk7Ci0gICAgLy8gYWJzKHgpIDwgYWJzKHkpLCB0aHVzIFQyIGFibGUgdG8gcmVwcmVzZW50IHgKLSAgICByZXR1cm4gVDIoeCkgKyB5OwotICB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLX0gLy8gbmFtZXNwYWNlIHJhbmRvbQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfU0lHTkVEX1VOU0lHTkVEX1RPT0xTCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZG9tL2xpbmVhcl9jb25ncnVlbnRpYWwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yYW5kb20vbGluZWFyX2NvbmdydWVudGlhbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI0YzY5ZDguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yYW5kb20vbGluZWFyX2NvbmdydWVudGlhbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NjYgKzAsMCBAQAotLyogYm9vc3QgcmFuZG9tL2xpbmVhcl9jb25ncnVlbnRpYWwuaHBwIGhlYWRlciBmaWxlCi0gKgotICogQ29weXJpZ2h0IEplbnMgTWF1cmVyIDIwMDAtMjAwMQotICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0gKiBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotICogaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLSAqCi0gKiAkSWQ6IGxpbmVhcl9jb25ncnVlbnRpYWwuaHBwIDcxMDE4IDIwMTEtMDQtMDUgMjE6Mjc6NTJaIHN0ZXZlbl93YXRhbmFiZSAkCi0gKgotICogUmV2aXNpb24gaGlzdG9yeQotICogIDIwMDEtMDItMTggIG1vdmVkIHRvIGluZGl2aWR1YWwgaGVhZGVyIGZpbGVzCi0gKi8KLQotI2lmbmRlZiBORE5CT09TVF9SQU5ET01fTElORUFSX0NPTkdSVUVOVElBTF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkFORE9NX0xJTkVBUl9DT05HUlVFTlRJQUxfSFBQCi0KLSNpbmNsdWRlIDxpb3N0cmVhbT4KLSNpbmNsdWRlIDxzdGRleGNlcHQ+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NzdGRpbnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2xpbWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc3RhdGljX2Fzc2VydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaW50ZWdlci9zdGF0aWNfbG9nMi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19hcml0aG1ldGljLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5kb20vZGV0YWlsL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZG9tL2RldGFpbC9jb25zdF9tb2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmRvbS9kZXRhaWwvc2VlZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZG9tL2RldGFpbC9zZWVkX2ltcGwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmRvbS9kZXRhaWwvZGlzYWJsZV93YXJuaW5ncy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci1uYW1lc3BhY2UgcmFuZG9tIHsKLQotLyoqCi0gKiBJbnN0YW50aWF0aW9ucyBvZiBjbGFzcyB0ZW1wbGF0ZSBsaW5lYXJfY29uZ3J1ZW50aWFsX2VuZ2luZSBtb2RlbCBhCi0gKiBccHNldWRvX3JhbmRvbV9udW1iZXJfZ2VuZXJhdG9yLiBMaW5lYXIgY29uZ3J1ZW50aWFsIHBzZXVkby1yYW5kb20KLSAqIG51bWJlciBnZW5lcmF0b3JzIGFyZSBkZXNjcmliZWQgaW46Ci0gKgotICogIEBibG9ja3F1b3RlCi0gKiAgIk1hdGhlbWF0aWNhbCBtZXRob2RzIGluIGxhcmdlLXNjYWxlIGNvbXB1dGluZyB1bml0cyIsIEQuIEguIExlaG1lciwKLSAqICBQcm9jLiAybmQgU3ltcG9zaXVtIG9uIExhcmdlLVNjYWxlIERpZ2l0YWwgQ2FsY3VsYXRpbmcgTWFjaGluZXMsCi0gKiAgSGFydmFyZCBVbml2ZXJzaXR5IFByZXNzLCAxOTUxLCBwcC4gMTQxLTE0NgotICogIEBlbmRibG9ja3F1b3RlCi0gKgotICogTGV0IHgobikgZGVub3RlIHRoZSBzZXF1ZW5jZSBvZiBudW1iZXJzIHJldHVybmVkIGJ5IHNvbWUgcHNldWRvLXJhbmRvbQotICogbnVtYmVyIGdlbmVyYXRvci4gVGhlbiBmb3IgdGhlIGxpbmVhciBjb25ncnVlbnRpYWwgZ2VuZXJhdG9yLAotICogeChuKzEpIDo9IChhICogeChuKSArIGMpIG1vZCBtLiBQYXJhbWV0ZXJzIGZvciB0aGUgZ2VuZXJhdG9yIGFyZQotICogeCgwKSwgYSwgYywgbS4gVGhlIHRlbXBsYXRlIHBhcmFtZXRlciBJbnRUeXBlIHNoYWxsIGRlbm90ZSBhbiBpbnRlZ3JhbAotICogdHlwZS4gSXQgbXVzdCBiZSBsYXJnZSBlbm91Z2ggdG8gaG9sZCB2YWx1ZXMgYSwgYywgYW5kIG0uIFRoZSB0ZW1wbGF0ZQotICogcGFyYW1ldGVycyBhIGFuZCBjIG11c3QgYmUgc21hbGxlciB0aGFuIG0uCi0gKgotICogTm90ZTogVGhlIHF1YWxpdHkgb2YgdGhlIGdlbmVyYXRvciBjcnVjaWFsbHkgZGVwZW5kcyBvbiB0aGUgY2hvaWNlIG9mCi0gKiB0aGUgcGFyYW1ldGVycy4gVXNlciBjb2RlIHNob3VsZCB1c2Ugb25lIG9mIHRoZSBzZW5zaWJseSBwYXJhbWV0ZXJpemVkCi0gKiBnZW5lcmF0b3JzIHN1Y2ggYXMgbWluc3RkX3JhbmQgaW5zdGVhZC4KLSAqLwotdGVtcGxhdGU8Y2xhc3MgSW50VHlwZSwgSW50VHlwZSBhLCBJbnRUeXBlIGMsIEludFR5cGUgbT4KLWNsYXNzIGxpbmVhcl9jb25ncnVlbnRpYWxfZW5naW5lCi17Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBJbnRUeXBlIHJlc3VsdF90eXBlOwotCi0gICAgLy8gUmVxdWlyZWQgZm9yIG9sZCBCb29zdC5SYW5kb20gY29uY2VwdAotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBoYXNfZml4ZWRfcmFuZ2UgPSBmYWxzZSk7Ci0KLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoSW50VHlwZSwgbXVsdGlwbGllciA9IGEpOwotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChJbnRUeXBlLCBpbmNyZW1lbnQgPSBjKTsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoSW50VHlwZSwgbW9kdWx1cyA9IG0pOwotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChJbnRUeXBlLCBkZWZhdWx0X3NlZWQgPSAxKTsKLSAgICAKLSAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKHN0ZDo6bnVtZXJpY19saW1pdHM8SW50VHlwZT46OmlzX2ludGVnZXIpOwotICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQobSA9PSAwIHx8IGEgPCBtKTsKLSAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKG0gPT0gMCB8fCBjIDwgbSk7Ci0gICAgCi0gICAgLyoqCi0gICAgICogQ29uc3RydWN0cyBhIEBjIGxpbmVhcl9jb25ncnVlbnRpYWxfZW5naW5lLCB1c2luZyB0aGUgZGVmYXVsdCBzZWVkCi0gICAgICovCi0gICAgbGluZWFyX2NvbmdydWVudGlhbF9lbmdpbmUoKSB7IHNlZWQoKTsgfQotCi0gICAgLyoqCi0gICAgICogQ29uc3RydWN0cyBhIEBjIGxpbmVhcl9jb25ncnVlbnRpYWxfZW5naW5lLCBzZWVkaW5nIGl0IHdpdGggQGMgeDAuCi0gICAgICovCi0gICAgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9BUklUSE1FVElDX0NPTlNUUlVDVE9SKGxpbmVhcl9jb25ncnVlbnRpYWxfZW5naW5lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRUeXBlLCB4MCkKLSAgICB7IHNlZWQoeDApOyB9Ci0gICAgCi0gICAgLyoqCi0gICAgICogQ29uc3RydWN0cyBhIEBjIGxpbmVhcl9jb25ncnVlbnRpYWxfZW5naW5lLCBzZWVkaW5nIGl0IHdpdGggdmFsdWVzCi0gICAgICogcHJvZHVjZWQgYnkgYSBjYWxsIHRvIEBjIHNlcS5nZW5lcmF0ZSgpLgotICAgICAqLwotICAgIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfU0VFRF9TRVFfQ09OU1RSVUNUT1IobGluZWFyX2NvbmdydWVudGlhbF9lbmdpbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWVkU2VxLCBzZXEpCi0gICAgeyBzZWVkKHNlcSk7IH0KLQotICAgIC8qKgotICAgICAqIENvbnN0cnVjdHMgYSBAYyBsaW5lYXJfY29uZ3J1ZW50aWFsX2VuZ2luZSAgYW5kIHNlZWRzIGl0Ci0gICAgICogd2l0aCB2YWx1ZXMgdGFrZW4gZnJvbSB0aGUgaXRyYXRvciByYW5nZSBbZmlyc3QsIGxhc3QpCi0gICAgICogYW5kIGFkanVzdHMgZmlyc3QgdG8gcG9pbnQgdG8gdGhlIGVsZW1lbnQgYWZ0ZXIgdGhlIGxhc3Qgb25lCi0gICAgICogdXNlZC4gIElmIHRoZXJlIGFyZSBub3QgZW5vdWdoIGVsZW1lbnRzLCB0aHJvd3MgQGMgc3RkOjppbnZhbGlkX2FyZ3VtZW50LgotICAgICAqCi0gICAgICogZmlyc3QgYW5kIGxhc3QgbXVzdCBiZSBpbnB1dCBpdGVyYXRvcnMuCi0gICAgICovCi0gICAgdGVtcGxhdGU8Y2xhc3MgSXQ+Ci0gICAgbGluZWFyX2NvbmdydWVudGlhbF9lbmdpbmUoSXQmIGZpcnN0LCBJdCBsYXN0KQotICAgIHsKLSAgICAgICAgc2VlZChmaXJzdCwgbGFzdCk7Ci0gICAgfQotCi0gICAgLy8gY29tcGlsZXItZ2VuZXJhdGVkIGNvcHkgY29uc3RydWN0b3IgYW5kIGFzc2lnbm1lbnQgb3BlcmF0b3IgYXJlIGZpbmUKLQotICAgIC8qKgotICAgICAqIENhbGxzIHNlZWQoZGVmYXVsdF9zZWVkKQotICAgICAqLwotICAgIHZvaWQgc2VlZCgpIHsgc2VlZChkZWZhdWx0X3NlZWQpOyB9Ci0KLSAgICAvKioKLSAgICAgKiBJZiBjIG1vZCBtIGlzIHplcm8gYW5kIHgwIG1vZCBtIGlzIHplcm8sIGNoYW5nZXMgdGhlIGN1cnJlbnQgdmFsdWUgb2YKLSAgICAgKiB0aGUgZ2VuZXJhdG9yIHRvIDEuIE90aGVyd2lzZSwgY2hhbmdlcyBpdCB0byB4MCBtb2QgbS4gSWYgYyBpcyB6ZXJvLAotICAgICAqIGRpc3RpbmN0IHNlZWRzIGluIHRoZSByYW5nZSBbMSxtKSB3aWxsIGxlYXZlIHRoZSBnZW5lcmF0b3IgaW4gZGlzdGluY3QKLSAgICAgKiBzdGF0ZXMuIElmIGMgaXMgbm90IHplcm8sIHRoZSByYW5nZSBpcyBbMCxtKS4KLSAgICAgKi8KLSAgICBORE5CT09TVF9SQU5ET01fREVUQUlMX0FSSVRITUVUSUNfU0VFRChsaW5lYXJfY29uZ3J1ZW50aWFsX2VuZ2luZSwgSW50VHlwZSwgeDApCi0gICAgewotICAgICAgICAvLyB3cmFwIF94IGlmIGl0IGRvZXNuJ3QgZml0IGluIHRoZSBkZXN0aW5hdGlvbgotICAgICAgICBpZihtb2R1bHVzID09IDApIHsKLSAgICAgICAgICAgIF94ID0geDA7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBfeCA9IHgwICUgbW9kdWx1czsKLSAgICAgICAgfQotICAgICAgICAvLyBoYW5kbGUgbmVnYXRpdmUgc2VlZHMKLSAgICAgICAgaWYoX3ggPD0gMCAmJiBfeCAhPSAwKSB7Ci0gICAgICAgICAgICBfeCArPSBtb2R1bHVzOwotICAgICAgICB9Ci0gICAgICAgIC8vIGFkanVzdCB0byB0aGUgY29ycmVjdCByYW5nZQotICAgICAgICBpZihpbmNyZW1lbnQgPT0gMCAmJiBfeCA9PSAwKSB7Ci0gICAgICAgICAgICBfeCA9IDE7Ci0gICAgICAgIH0KLSAgICAgICAgTkROQk9PU1RfQVNTRVJUKF94ID49IChtaW4pKCkpOwotICAgICAgICBORE5CT09TVF9BU1NFUlQoX3ggPD0gKG1heCkoKSk7Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogU2VlZHMgYSBAYyBsaW5lYXJfY29uZ3J1ZW50aWFsX2VuZ2luZSB1c2luZyB2YWx1ZXMgZnJvbSBhIFNlZWRTZXEuCi0gICAgICovCi0gICAgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9TRUVEX1NFUV9TRUVEKGxpbmVhcl9jb25ncnVlbnRpYWxfZW5naW5lLCBTZWVkU2VxLCBzZXEpCi0gICAgeyBzZWVkKGRldGFpbDo6c2VlZF9vbmVfaW50PEludFR5cGUsIG0+KHNlcSkpOyB9Ci0KLSAgICAvKioKLSAgICAgKiBzZWVkcyBhIEBjIGxpbmVhcl9jb25ncnVlbnRpYWxfZW5naW5lIHdpdGggdmFsdWVzIHRha2VuCi0gICAgICogZnJvbSB0aGUgaXRyYXRvciByYW5nZSBbZmlyc3QsIGxhc3QpIGFuZCBhZGp1c3RzIEBjIGZpcnN0IHRvCi0gICAgICogcG9pbnQgdG8gdGhlIGVsZW1lbnQgYWZ0ZXIgdGhlIGxhc3Qgb25lIHVzZWQuICBJZiB0aGVyZSBhcmUKLSAgICAgKiBub3QgZW5vdWdoIGVsZW1lbnRzLCB0aHJvd3MgQGMgc3RkOjppbnZhbGlkX2FyZ3VtZW50LgotICAgICAqCi0gICAgICogQGMgZmlyc3QgYW5kIEBjIGxhc3QgbXVzdCBiZSBpbnB1dCBpdGVyYXRvcnMuCi0gICAgICovCi0gICAgdGVtcGxhdGU8Y2xhc3MgSXQ+Ci0gICAgdm9pZCBzZWVkKEl0JiBmaXJzdCwgSXQgbGFzdCkKLSAgICB7IHNlZWQoZGV0YWlsOjpnZXRfb25lX2ludDxJbnRUeXBlLCBtPihmaXJzdCwgbGFzdCkpOyB9Ci0KLSAgICAvKioKLSAgICAgKiBSZXR1cm5zIHRoZSBzbWFsbGVzdCB2YWx1ZSB0aGF0IHRoZSBAYyBsaW5lYXJfY29uZ3J1ZW50aWFsX2VuZ2luZQotICAgICAqIGNhbiBwcm9kdWNlLgotICAgICAqLwotICAgIHN0YXRpYyByZXN1bHRfdHlwZSBtaW4gTkROQk9PU1RfUFJFVkVOVF9NQUNST19TVUJTVElUVVRJT04gKCkKLSAgICB7IHJldHVybiBjID09IDAgPyAxIDogMDsgfQotICAgIC8qKgotICAgICAqIFJldHVybnMgdGhlIGxhcmdlc3QgdmFsdWUgdGhhdCB0aGUgQGMgbGluZWFyX2NvbmdydWVudGlhbF9lbmdpbmUKLSAgICAgKiBjYW4gcHJvZHVjZS4KLSAgICAgKi8KLSAgICBzdGF0aWMgcmVzdWx0X3R5cGUgbWF4IE5ETkJPT1NUX1BSRVZFTlRfTUFDUk9fU1VCU1RJVFVUSU9OICgpCi0gICAgeyByZXR1cm4gbW9kdWx1cy0xOyB9Ci0KLSAgICAvKiogUmV0dXJucyB0aGUgbmV4dCB2YWx1ZSBvZiB0aGUgQGMgbGluZWFyX2NvbmdydWVudGlhbF9lbmdpbmUuICovCi0gICAgSW50VHlwZSBvcGVyYXRvcigpKCkKLSAgICB7Ci0gICAgICAgIF94ID0gY29uc3RfbW9kPEludFR5cGUsIG0+OjptdWx0X2FkZChhLCBfeCwgYyk7Ci0gICAgICAgIHJldHVybiBfeDsKLSAgICB9Ci0gIAotICAgIC8qKiBGaWxscyBhIHJhbmdlIHdpdGggcmFuZG9tIHZhbHVlcyAqLwotICAgIHRlbXBsYXRlPGNsYXNzIEl0ZXI+Ci0gICAgdm9pZCBnZW5lcmF0ZShJdGVyIGZpcnN0LCBJdGVyIGxhc3QpCi0gICAgeyBkZXRhaWw6OmdlbmVyYXRlX2Zyb21faW50KCp0aGlzLCBmaXJzdCwgbGFzdCk7IH0KLQotICAgIC8qKiBBZHZhbmNlcyB0aGUgc3RhdGUgb2YgdGhlIGdlbmVyYXRvciBieSBAYyB6LiAqLwotICAgIHZvaWQgZGlzY2FyZChuZG5ib29zdDo6dWludG1heF90IHopCi0gICAgewotICAgICAgICB0eXBlZGVmIGNvbnN0X21vZDxJbnRUeXBlLCBtPiBtb2RfdHlwZTsKLSAgICAgICAgSW50VHlwZSBiX2ludiA9IG1vZF90eXBlOjppbnZlcnQoYS0xKTsKLSAgICAgICAgSW50VHlwZSBiX2djZCA9IG1vZF90eXBlOjptdWx0KGEtMSwgYl9pbnYpOwotICAgICAgICBpZihiX2djZCA9PSAxKSB7Ci0gICAgICAgICAgICBJbnRUeXBlIGFfeiA9IG1vZF90eXBlOjpwb3coYSwgeik7Ci0gICAgICAgICAgICBfeCA9IG1vZF90eXBlOjptdWx0X2FkZChhX3osIF94LCAKLSAgICAgICAgICAgICAgICBtb2RfdHlwZTo6bXVsdChtb2RfdHlwZTo6bXVsdChjLCBiX2ludiksIGFfeiAtIDEpKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIGNvbXB1dGUgKGFeeiAtIDEpKmMgJSAoYl9nY2QgKiBtKSAvIChiIC8gYl9nY2QpICogaW52KGIgLyBiX2djZCkKLSAgICAgICAgICAgIC8vIHdlJ3JlIHN0b3JpbmcgdGhlIGludGVybWVkaWF0ZSByZXN1bHQgLyBiX2djZAotICAgICAgICAgICAgSW50VHlwZSBhX3ptMV9vdmVyX2djZCA9IDA7Ci0gICAgICAgICAgICBJbnRUeXBlIGFfa20xX292ZXJfZ2NkID0gKGEgLSAxKSAvIGJfZ2NkOwotICAgICAgICAgICAgbmRuYm9vc3Q6OnVpbnRtYXhfdCBleHBvbmVudCA9IHo7Ci0gICAgICAgICAgICB3aGlsZShleHBvbmVudCAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgaWYoZXhwb25lbnQgJSAyID09IDEpIHsKLSAgICAgICAgICAgICAgICAgICAgYV96bTFfb3Zlcl9nY2QgPQotICAgICAgICAgICAgICAgICAgICAgICAgbW9kX3R5cGU6Om11bHRfYWRkKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJfZ2NkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZF90eXBlOjptdWx0KGFfem0xX292ZXJfZ2NkLCBhX2ttMV9vdmVyX2djZCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kX3R5cGU6OmFkZChhX3ptMV9vdmVyX2djZCwgYV9rbTFfb3Zlcl9nY2QpKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYV9rbTFfb3Zlcl9nY2QgPSBtb2RfdHlwZTo6bXVsdF9hZGQoCi0gICAgICAgICAgICAgICAgICAgIGJfZ2NkLAotICAgICAgICAgICAgICAgICAgICBtb2RfdHlwZTo6bXVsdChhX2ttMV9vdmVyX2djZCwgYV9rbTFfb3Zlcl9nY2QpLAotICAgICAgICAgICAgICAgICAgICBtb2RfdHlwZTo6YWRkKGFfa20xX292ZXJfZ2NkLCBhX2ttMV9vdmVyX2djZCkpOwotICAgICAgICAgICAgICAgIGV4cG9uZW50IC89IDI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIEludFR5cGUgYV96ID0gbW9kX3R5cGU6Om11bHRfYWRkKGJfZ2NkLCBhX3ptMV9vdmVyX2djZCwgMSk7Ci0gICAgICAgICAgICBJbnRUeXBlIG51bSA9IG1vZF90eXBlOjptdWx0KGMsIGFfem0xX292ZXJfZ2NkKTsKLSAgICAgICAgICAgIGJfaW52ID0gbW9kX3R5cGU6OmludmVydCgoYS0xKS9iX2djZCk7Ci0gICAgICAgICAgICBfeCA9IG1vZF90eXBlOjptdWx0X2FkZChhX3osIF94LCBtb2RfdHlwZTo6bXVsdChiX2ludiwgbnVtKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGxpbmVhcl9jb25ncnVlbnRpYWxfZW5naW5lJiB4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGluZWFyX2NvbmdydWVudGlhbF9lbmdpbmUmIHkpCi0gICAgeyByZXR1cm4geC5feCA9PSB5Ll94OyB9Ci0gICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IhPShjb25zdCBsaW5lYXJfY29uZ3J1ZW50aWFsX2VuZ2luZSYgeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpbmVhcl9jb25ncnVlbnRpYWxfZW5naW5lJiB5KQotICAgIHsgcmV0dXJuICEoeCA9PSB5KTsgfQotICAgIAotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1JBTkRPTV9OT19TVFJFQU1fT1BFUkFUT1JTKQotICAgIC8qKiBXcml0ZXMgYSBAYyBsaW5lYXJfY29uZ3J1ZW50aWFsX2VuZ2luZSB0byBhIEBjIHN0ZDo6b3N0cmVhbS4gKi8KLSAgICB0ZW1wbGF0ZTxjbGFzcyBDaGFyVCwgY2xhc3MgVHJhaXRzPgotICAgIGZyaWVuZCBzdGQ6OmJhc2ljX29zdHJlYW08Q2hhclQsVHJhaXRzPiYKLSAgICBvcGVyYXRvcjw8KHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyVCxUcmFpdHM+JiBvcywKLSAgICAgICAgICAgICAgIGNvbnN0IGxpbmVhcl9jb25ncnVlbnRpYWxfZW5naW5lJiBsY2cpCi0gICAgewotICAgICAgICByZXR1cm4gb3MgPDwgbGNnLl94OwotICAgIH0KLQotICAgIC8qKiBSZWFkcyBhIEBjIGxpbmVhcl9jb25ncnVlbnRpYWxfZW5naW5lIGZyb20gYSBAYyBzdGQ6OmlzdHJlYW0uICovCi0gICAgdGVtcGxhdGU8Y2xhc3MgQ2hhclQsIGNsYXNzIFRyYWl0cz4KLSAgICBmcmllbmQgc3RkOjpiYXNpY19pc3RyZWFtPENoYXJULFRyYWl0cz4mCi0gICAgb3BlcmF0b3I+PihzdGQ6OmJhc2ljX2lzdHJlYW08Q2hhclQsVHJhaXRzPiYgaXMsCi0gICAgICAgICAgICAgICBsaW5lYXJfY29uZ3J1ZW50aWFsX2VuZ2luZSYgbGNnKQotICAgIHsKLSAgICAgICAgbGNnLnJlYWQoaXMpOwotICAgICAgICByZXR1cm4gaXM7Ci0gICAgfQotI2VuZGlmCi0KLXByaXZhdGU6Ci0KLSAgICAvLy8gXGNvbmQgc2hvd19wcml2YXRlCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBDaGFyVCwgY2xhc3MgVHJhaXRzPgotICAgIHZvaWQgcmVhZChzdGQ6OmJhc2ljX2lzdHJlYW08Q2hhclQsIFRyYWl0cz4mIGlzKSB7Ci0gICAgICAgIEludFR5cGUgeDsKLSAgICAgICAgaWYoaXMgPj4geCkgewotICAgICAgICAgICAgaWYoeCA+PSAobWluKSgpICYmIHggPD0gKG1heCkoKSkgewotICAgICAgICAgICAgICAgIF94ID0geDsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaXMuc2V0c3RhdGUoc3RkOjppb3NfYmFzZTo6ZmFpbGJpdCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLy8gXGVuZGNvbmQKLQotICAgIEludFR5cGUgX3g7Ci19OwotCi0jaWZuZGVmIE5ETkJPT1NUX05PX0lOQ0xBU1NfTUVNQkVSX0lOSVRJQUxJWkFUSU9OCi0vLyAgQSBkZWZpbml0aW9uIGlzIHJlcXVpcmVkIGV2ZW4gZm9yIGludGVncmFsIHN0YXRpYyBjb25zdGFudHMKLXRlbXBsYXRlPGNsYXNzIEludFR5cGUsIEludFR5cGUgYSwgSW50VHlwZSBjLCBJbnRUeXBlIG0+Ci1jb25zdCBib29sIGxpbmVhcl9jb25ncnVlbnRpYWxfZW5naW5lPEludFR5cGUsIGEsIGMsIG0+OjpoYXNfZml4ZWRfcmFuZ2U7Ci10ZW1wbGF0ZTxjbGFzcyBJbnRUeXBlLCBJbnRUeXBlIGEsIEludFR5cGUgYywgSW50VHlwZSBtPgotY29uc3QgSW50VHlwZSBsaW5lYXJfY29uZ3J1ZW50aWFsX2VuZ2luZTxJbnRUeXBlLGEsYyxtPjo6bXVsdGlwbGllcjsKLXRlbXBsYXRlPGNsYXNzIEludFR5cGUsIEludFR5cGUgYSwgSW50VHlwZSBjLCBJbnRUeXBlIG0+Ci1jb25zdCBJbnRUeXBlIGxpbmVhcl9jb25ncnVlbnRpYWxfZW5naW5lPEludFR5cGUsYSxjLG0+OjppbmNyZW1lbnQ7Ci10ZW1wbGF0ZTxjbGFzcyBJbnRUeXBlLCBJbnRUeXBlIGEsIEludFR5cGUgYywgSW50VHlwZSBtPgotY29uc3QgSW50VHlwZSBsaW5lYXJfY29uZ3J1ZW50aWFsX2VuZ2luZTxJbnRUeXBlLGEsYyxtPjo6bW9kdWx1czsKLXRlbXBsYXRlPGNsYXNzIEludFR5cGUsIEludFR5cGUgYSwgSW50VHlwZSBjLCBJbnRUeXBlIG0+Ci1jb25zdCBJbnRUeXBlIGxpbmVhcl9jb25ncnVlbnRpYWxfZW5naW5lPEludFR5cGUsYSxjLG0+OjpkZWZhdWx0X3NlZWQ7Ci0jZW5kaWYKLQotLy8vIFxjb25kIHNob3dfZGVwcmVjYXRlZAotCi0vLyBwcm92aWRlZCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkKLXRlbXBsYXRlPGNsYXNzIEludFR5cGUsIEludFR5cGUgYSwgSW50VHlwZSBjLCBJbnRUeXBlIG0sIEludFR5cGUgdmFsID0gMD4KLWNsYXNzIGxpbmVhcl9jb25ncnVlbnRpYWwgOiBwdWJsaWMgbGluZWFyX2NvbmdydWVudGlhbF9lbmdpbmU8SW50VHlwZSwgYSwgYywgbT4KLXsKLSAgICB0eXBlZGVmIGxpbmVhcl9jb25ncnVlbnRpYWxfZW5naW5lPEludFR5cGUsIGEsIGMsIG0+IGJhc2VfdHlwZTsKLXB1YmxpYzoKLSAgICBsaW5lYXJfY29uZ3J1ZW50aWFsKEludFR5cGUgeDAgPSAxKSA6IGJhc2VfdHlwZSh4MCkge30KLSAgICB0ZW1wbGF0ZTxjbGFzcyBJdD4KLSAgICBsaW5lYXJfY29uZ3J1ZW50aWFsKEl0JiBmaXJzdCwgSXQgbGFzdCkgOiBiYXNlX3R5cGUoZmlyc3QsIGxhc3QpIHt9Ci19OwotCi0vLy8gXGVuZGNvbmQKLQotLyoqCi0gKiBUaGUgc3BlY2lhbGl6YXRpb24gXG1pbnN0ZF9yYW5kMCB3YXMgb3JpZ2luYWxseSBzdWdnZXN0ZWQgaW4KLSAqCi0gKiAgQGJsb2NrcXVvdGUKLSAqICBBIHBzZXVkby1yYW5kb20gbnVtYmVyIGdlbmVyYXRvciBmb3IgdGhlIFN5c3RlbS8zNjAsIFAuQS4gTGV3aXMsCi0gKiAgQS5TLiBHb29kbWFuLCBKLk0uIE1pbGxlciwgSUJNIFN5c3RlbXMgSm91cm5hbCwgVm9sLiA4LCBOby4gMiwKLSAqICAxOTY5LCBwcC4gMTM2LTE0NgotICogIEBlbmRibG9ja3F1b3RlCi0gKgotICogSXQgaXMgZXhhbWluZWQgbW9yZSBjbG9zZWx5IHRvZ2V0aGVyIHdpdGggXG1pbnN0ZF9yYW5kIGluCi0gKgotICogIEBibG9ja3F1b3RlCi0gKiAgIlJhbmRvbSBOdW1iZXIgR2VuZXJhdG9yczogR29vZCBvbmVzIGFyZSBoYXJkIHRvIGZpbmQiLAotICogIFN0ZXBoZW4gSy4gUGFyayBhbmQgS2VpdGggVy4gTWlsbGVyLCBDb21tdW5pY2F0aW9ucyBvZgotICogIHRoZSBBQ00sIFZvbC4gMzEsIE5vLiAxMCwgT2N0b2JlciAxOTg4LCBwcC4gMTE5Mi0xMjAxIAotICogIEBlbmRibG9ja3F1b3RlCi0gKi8KLXR5cGVkZWYgbGluZWFyX2NvbmdydWVudGlhbF9lbmdpbmU8dWludDMyX3QsIDE2ODA3LCAwLCAyMTQ3NDgzNjQ3PiBtaW5zdGRfcmFuZDA7Ci0KLS8qKiBUaGUgc3BlY2lhbGl6YXRpb24gXG1pbnN0ZF9yYW5kIHdhcyBzdWdnZXN0ZWQgaW4KLSAqCi0gKiAgQGJsb2NrcXVvdGUKLSAqICAiUmFuZG9tIE51bWJlciBHZW5lcmF0b3JzOiBHb29kIG9uZXMgYXJlIGhhcmQgdG8gZmluZCIsCi0gKiAgU3RlcGhlbiBLLiBQYXJrIGFuZCBLZWl0aCBXLiBNaWxsZXIsIENvbW11bmljYXRpb25zIG9mCi0gKiAgdGhlIEFDTSwgVm9sLiAzMSwgTm8uIDEwLCBPY3RvYmVyIDE5ODgsIHBwLiAxMTkyLTEyMDEKLSAqICBAZW5kYmxvY2txdW90ZQotICovCi10eXBlZGVmIGxpbmVhcl9jb25ncnVlbnRpYWxfZW5naW5lPHVpbnQzMl90LCA0ODI3MSwgMCwgMjE0NzQ4MzY0Nz4gbWluc3RkX3JhbmQ7Ci0KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0lOVDY0X1QpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0lOVEVHUkFMX0lOVDY0X1QpCi0vKioKLSAqIENsYXNzIEBjIHJhbmQ0OCBtb2RlbHMgYSBccHNldWRvX3JhbmRvbV9udW1iZXJfZ2VuZXJhdG9yLiBJdCB1c2VzCi0gKiB0aGUgbGluZWFyIGNvbmdydWVudGlhbCBhbGdvcml0aG0gd2l0aCB0aGUgcGFyYW1ldGVycyBhID0gMHg1REVFQ0U2NkQsCi0gKiBjID0gMHhCLCBtID0gMioqNDguIEl0IGRlbGl2ZXJzIGlkZW50aWNhbCByZXN1bHRzIHRvIHRoZSBAYyBscmFuZDQ4KCkKLSAqIGZ1bmN0aW9uIGF2YWlsYWJsZSBvbiBzb21lIHN5c3RlbXMgKGFzc3VtaW5nIGxjb25nNDggaGFzIG5vdCBiZWVuIGNhbGxlZCkuCi0gKgotICogSXQgaXMgb25seSBhdmFpbGFibGUgb24gc3lzdGVtcyB3aGVyZSBAYyB1aW50NjRfdCBpcyBwcm92aWRlZCBhcyBhbgotICogaW50ZWdyYWwgdHlwZSwgc28gdGhhdCBmb3IgZXhhbXBsZSBzdGF0aWMgaW4tY2xhc3MgY29uc3RhbnRzIGFuZC9vcgotICogZW51bSBkZWZpbml0aW9ucyB3aXRoIGxhcmdlIEBjIHVpbnQ2NF90IG51bWJlcnMgd29yay4KLSAqLwotY2xhc3MgcmFuZDQ4IAotewotcHVibGljOgotICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVpbnQzMl90IHJlc3VsdF90eXBlOwotCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGhhc19maXhlZF9yYW5nZSA9IGZhbHNlKTsKLSAgICAvKioKLSAgICAgKiBSZXR1cm5zIHRoZSBzbWFsbGVzdCB2YWx1ZSB0aGF0IHRoZSBnZW5lcmF0b3IgY2FuIHByb2R1Y2UKLSAgICAgKi8KLSAgICBzdGF0aWMgdWludDMyX3QgbWluIE5ETkJPT1NUX1BSRVZFTlRfTUFDUk9fU1VCU1RJVFVUSU9OICgpIHsgcmV0dXJuIDA7IH0KLSAgICAvKioKLSAgICAgKiBSZXR1cm5zIHRoZSBsYXJnZXN0IHZhbHVlIHRoYXQgdGhlIGdlbmVyYXRvciBjYW4gcHJvZHVjZQotICAgICAqLwotICAgIHN0YXRpYyB1aW50MzJfdCBtYXggTkROQk9PU1RfUFJFVkVOVF9NQUNST19TVUJTVElUVVRJT04gKCkKLSAgICB7IHJldHVybiAweDdGRkZGRkZGOyB9Ci0gIAotICAgIC8qKiBTZWVkcyB0aGUgZ2VuZXJhdG9yIHdpdGggdGhlIGRlZmF1bHQgc2VlZC4gKi8KLSAgICByYW5kNDgoKSA6IGxjZihjbnYoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KDEpKSkge30KLSAgICAvKioKLSAgICAgKiBDb25zdHJ1Y3RzIGEgXHJhbmQ0OCBnZW5lcmF0b3Igd2l0aCB4KDApIDo9ICh4MCA8PCAxNikgfCAweDMzMGUuCi0gICAgICovCi0gICAgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9BUklUSE1FVElDX0NPTlNUUlVDVE9SKHJhbmQ0OCwgcmVzdWx0X3R5cGUsIHgwKQotICAgIHsgc2VlZCh4MCk7IH0KLSAgICAvKioKLSAgICAgKiBTZWVkcyB0aGUgZ2VuZXJhdG9yIHdpdGggdmFsdWVzIHByb2R1Y2VkIGJ5IEBjIHNlcS5nZW5lcmF0ZSgpLgotICAgICAqLwotICAgIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfU0VFRF9TRVFfQ09OU1RSVUNUT1IocmFuZDQ4LCBTZWVkU2VxLCBzZXEpCi0gICAgeyBzZWVkKHNlcSk7IH0KLSAgICAvKioKLSAgICAgKiBTZWVkcyB0aGUgZ2VuZXJhdG9yIHVzaW5nIHZhbHVlcyBmcm9tIGFuIGl0ZXJhdG9yIHJhbmdlLAotICAgICAqIGFuZCB1cGRhdGVzIGZpcnN0IHRvIHBvaW50IG9uZSBwYXN0IHRoZSBsYXN0IHZhbHVlIGNvbnN1bWVkLgotICAgICAqLwotICAgIHRlbXBsYXRlPGNsYXNzIEl0PiByYW5kNDgoSXQmIGZpcnN0LCBJdCBsYXN0KSA6IGxjZihmaXJzdCwgbGFzdCkgeyB9Ci0KLSAgICAvLyBjb21waWxlci1nZW5lcmF0ZWQgY29weSBjdG9yIGFuZCBhc3NpZ25tZW50IG9wZXJhdG9yIGFyZSBmaW5lCi0KLSAgICAvKiogU2VlZHMgdGhlIGdlbmVyYXRvciB3aXRoIHRoZSBkZWZhdWx0IHNlZWQuICovCi0gICAgdm9pZCBzZWVkKCkgeyBzZWVkKHN0YXRpY19jYXN0PHVpbnQzMl90PigxKSk7IH0KLSAgICAvKioKLSAgICAgKiBDaGFuZ2VzIHRoZSBjdXJyZW50IHZhbHVlIHgobikgb2YgdGhlIGdlbmVyYXRvciB0byAoeDAgPDwgMTYpIHwgMHgzMzBlLgotICAgICAqLwotICAgIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfQVJJVEhNRVRJQ19TRUVEKHJhbmQ0OCwgcmVzdWx0X3R5cGUsIHgwKQotICAgIHsgbGNmLnNlZWQoY252KHgwKSk7IH0KLSAgICAvKioKLSAgICAgKiBTZWVkcyB0aGUgZ2VuZXJhdG9yIHVzaW5nIHZhbHVlcyBmcm9tIGFuIGl0ZXJhdG9yIHJhbmdlLAotICAgICAqIGFuZCB1cGRhdGVzIGZpcnN0IHRvIHBvaW50IG9uZSBwYXN0IHRoZSBsYXN0IHZhbHVlIGNvbnN1bWVkLgotICAgICAqLwotICAgIHRlbXBsYXRlPGNsYXNzIEl0PiB2b2lkIHNlZWQoSXQmIGZpcnN0LCBJdCBsYXN0KSB7IGxjZi5zZWVkKGZpcnN0LGxhc3QpOyB9Ci0gICAgLyoqCi0gICAgICogU2VlZHMgdGhlIGdlbmVyYXRvciB3aXRoIHZhbHVlcyBwcm9kdWNlZCBieSBAYyBzZXEuZ2VuZXJhdGUoKS4KLSAgICAgKi8KLSAgICBORE5CT09TVF9SQU5ET01fREVUQUlMX1NFRURfU0VRX1NFRUQocmFuZDQ4LCBTZWVkU2VxLCBzZXEpCi0gICAgeyBsY2Yuc2VlZChzZXEpOyB9Ci0KLSAgICAvKiogIFJldHVybnMgdGhlIG5leHQgdmFsdWUgb2YgdGhlIGdlbmVyYXRvci4gKi8KLSAgICB1aW50MzJfdCBvcGVyYXRvcigpKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGxjZigpID4+IDE3KTsgfQotICAgIAotICAgIC8qKiBBZHZhbmNlcyB0aGUgc3RhdGUgb2YgdGhlIGdlbmVyYXRvciBieSBAYyB6LiAqLwotICAgIHZvaWQgZGlzY2FyZChuZG5ib29zdDo6dWludG1heF90IHopIHsgbGNmLmRpc2NhcmQoeik7IH0KLSAgCi0gICAgLyoqIEZpbGxzIGEgcmFuZ2Ugd2l0aCByYW5kb20gdmFsdWVzICovCi0gICAgdGVtcGxhdGU8Y2xhc3MgSXRlcj4KLSAgICB2b2lkIGdlbmVyYXRlKEl0ZXIgZmlyc3QsIEl0ZXIgbGFzdCkKLSAgICB7Ci0gICAgICAgIGZvcig7IGZpcnN0ICE9IGxhc3Q7ICsrZmlyc3QpIHsKLSAgICAgICAgICAgICpmaXJzdCA9ICgqdGhpcykoKTsKLSAgICAgICAgfQotICAgIH0KLQotI2lmbmRlZiBORE5CT09TVF9SQU5ET01fTk9fU1RSRUFNX09QRVJBVE9SUwotICAgIC8qKiAgV3JpdGVzIGEgQGMgcmFuZDQ4IHRvIGEgQGMgc3RkOjpvc3RyZWFtLiAqLwotICAgIHRlbXBsYXRlPGNsYXNzIENoYXJULGNsYXNzIFRyYWl0cz4KLSAgICBmcmllbmQgc3RkOjpiYXNpY19vc3RyZWFtPENoYXJULFRyYWl0cz4mCi0gICAgb3BlcmF0b3I8PChzdGQ6OmJhc2ljX29zdHJlYW08Q2hhclQsVHJhaXRzPiYgb3MsIGNvbnN0IHJhbmQ0OCYgcikKLSAgICB7IG9zIDw8IHIubGNmOyByZXR1cm4gb3M7IH0KLQotICAgIC8qKiBSZWFkcyBhIEBjIHJhbmQ0OCBmcm9tIGEgQGMgc3RkOjppc3RyZWFtLiAqLwotICAgIHRlbXBsYXRlPGNsYXNzIENoYXJULGNsYXNzIFRyYWl0cz4KLSAgICBmcmllbmQgc3RkOjpiYXNpY19pc3RyZWFtPENoYXJULFRyYWl0cz4mCi0gICAgb3BlcmF0b3I+PihzdGQ6OmJhc2ljX2lzdHJlYW08Q2hhclQsVHJhaXRzPiYgaXMsIHJhbmQ0OCYgcikKLSAgICB7IGlzID4+IHIubGNmOyByZXR1cm4gaXM7IH0KLSNlbmRpZgotCi0gICAgLyoqCi0gICAgICogUmV0dXJucyB0cnVlIGlmIHRoZSB0d28gZ2VuZXJhdG9ycyB3aWxsIHByb2R1Y2UgaWRlbnRpY2FsCi0gICAgICogc2VxdWVuY2VzIG9mIHZhbHVlcy4KLSAgICAgKi8KLSAgICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IHJhbmQ0OCYgeCwgY29uc3QgcmFuZDQ4JiB5KQotICAgIHsgcmV0dXJuIHgubGNmID09IHkubGNmOyB9Ci0gICAgLyoqCi0gICAgICogUmV0dXJucyB0cnVlIGlmIHRoZSB0d28gZ2VuZXJhdG9ycyB3aWxsIHByb2R1Y2UgZGlmZmVyZW50Ci0gICAgICogc2VxdWVuY2VzIG9mIHZhbHVlcy4KLSAgICAgKi8KLSAgICBmcmllbmQgYm9vbCBvcGVyYXRvciE9KGNvbnN0IHJhbmQ0OCYgeCwgY29uc3QgcmFuZDQ4JiB5KQotICAgIHsgcmV0dXJuICEoeCA9PSB5KTsgfQotcHJpdmF0ZToKLSAgICAvLy8gXGNvbmQgc2hvd19wcml2YXRlCi0gICAgdHlwZWRlZiByYW5kb206OmxpbmVhcl9jb25ncnVlbnRpYWxfZW5naW5lPHVpbnQ2NF90LAotICAgICAgICAvLyB4eHh4VUxMIGlzIG5vdCBwb3J0YWJsZQotICAgICAgICB1aW50NjRfdCgweERFRUNFNjZEVUwpIHwgKHVpbnQ2NF90KDB4NSkgPDwgMzIpLAotICAgICAgICAweEIsIHVpbnQ2NF90KDEpPDw0OD4gbGNmX3Q7Ci0gICAgbGNmX3QgbGNmOwotCi0gICAgc3RhdGljIG5kbmJvb3N0Ojp1aW50NjRfdCBjbnYobmRuYm9vc3Q6OnVpbnQzMl90IHgpCi0gICAgeyByZXR1cm4gKHN0YXRpY19jYXN0PHVpbnQ2NF90Pih4KSA8PCAxNikgfCAweDMzMGU7IH0KLSAgICAvLy8gXGVuZGNvbmQKLX07Ci0jZW5kaWYgLyogIU5ETkJPT1NUX05PX0lOVDY0X1QgJiYgIU5ETkJPT1NUX05PX0lOVEVHUkFMX0lOVDY0X1QgKi8KLQotfSAvLyBuYW1lc3BhY2UgcmFuZG9tCi0KLXVzaW5nIHJhbmRvbTo6bWluc3RkX3JhbmQwOwotdXNpbmcgcmFuZG9tOjptaW5zdGRfcmFuZDsKLXVzaW5nIHJhbmRvbTo6cmFuZDQ4OwotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZG9tL2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfUkFORE9NX0xJTkVBUl9DT05HUlVFTlRJQUxfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JhbmRvbS91bmlmb3JtXzAxLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmFuZG9tL3VuaWZvcm1fMDEuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYTE0MTEwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZG9tL3VuaWZvcm1fMDEuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjc3ICswLDAgQEAKLS8qIGJvb3N0IHJhbmRvbS91bmlmb3JtXzAxLmhwcCBoZWFkZXIgZmlsZQotICoKLSAqIENvcHlyaWdodCBKZW5zIE1hdXJlciAyMDAwLTIwMDEKLSAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotICogYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSAqIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKiBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0gKgotICogJElkOiB1bmlmb3JtXzAxLmhwcCA3MTAxOCAyMDExLTA0LTA1IDIxOjI3OjUyWiBzdGV2ZW5fd2F0YW5hYmUgJAotICoKLSAqIFJldmlzaW9uIGhpc3RvcnkKLSAqICAyMDAxLTAyLTE4ICBtb3ZlZCB0byBpbmRpdmlkdWFsIGhlYWRlciBmaWxlcwotICovCi0KLSNpZm5kZWYgTkROQk9PU1RfUkFORE9NX1VOSUZPUk1fMDFfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkRPTV9VTklGT1JNXzAxX0hQUAotCi0jaW5jbHVkZSA8aW9zdHJlYW0+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9saW1pdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3N0YXRpY19hc3NlcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmRvbS9kZXRhaWwvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5kb20vZGV0YWlsL3B0cl9oZWxwZXIuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZG9tL2RldGFpbC9kaXNhYmxlX3dhcm5pbmdzLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLW5hbWVzcGFjZSByYW5kb20gewotCi0jaWZkZWYgTkROQk9PU1RfUkFORE9NX0RPWFlHRU4KLQotLyoqCi0gKiBUaGUgZGlzdHJpYnV0aW9uIGZ1bmN0aW9uIHVuaWZvcm1fMDEgbW9kZWxzIGEgXHJhbmRvbV9kaXN0cmlidXRpb24uCi0gKiBPbiBlYWNoIGludm9jYXRpb24sIGl0IHJldHVybnMgYSByYW5kb20gZmxvYXRpbmctcG9pbnQgdmFsdWUKLSAqIHVuaWZvcm1seSBkaXN0cmlidXRlZCBpbiB0aGUgcmFuZ2UgWzAuLjEpLgotICoKLSAqIFRoZSB0ZW1wbGF0ZSBwYXJhbWV0ZXIgUmVhbFR5cGUgc2hhbGwgZGVub3RlIGEgZmxvYXQtbGlrZSB2YWx1ZSB0eXBlCi0gKiB3aXRoIHN1cHBvcnQgZm9yIGJpbmFyeSBvcGVyYXRvcnMgKywgLSwgYW5kIC8uCi0gKgotICogTm90ZTogVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gaXMgYnVnZ3ksIGJlY2F1c2UgaXQgbWF5IG5vdCBmaWxsCi0gKiBhbGwgb2YgdGhlIG1hbnRpc3NhIHdpdGggcmFuZG9tIGJpdHMuIEknbSB1bnN1cmUgaG93IHRvIGZpbGwgYQotICogKHRvLWJlLWludmVudGVkKSBAYyBuZG5ib29zdDo6YmlnZmxvYXQgY2xhc3Mgd2l0aCByYW5kb20gYml0cyBlZmZpY2llbnRseS4KLSAqIEl0J3MgcHJvYmFibHkgdGltZSBmb3IgYSB0cmFpdHMgY2xhc3MuCi0gKi8KLXRlbXBsYXRlPGNsYXNzIFJlYWxUeXBlID0gZG91YmxlPgotY2xhc3MgdW5pZm9ybV8wMQotewotcHVibGljOgotICB0eXBlZGVmIFJlYWxUeXBlIGlucHV0X3R5cGU7Ci0gIHR5cGVkZWYgUmVhbFR5cGUgcmVzdWx0X3R5cGU7Ci0gIHJlc3VsdF90eXBlIG1pbiBORE5CT09TVF9QUkVWRU5UX01BQ1JPX1NVQlNUSVRVVElPTiAoKSBjb25zdDsKLSAgcmVzdWx0X3R5cGUgbWF4IE5ETkJPT1NUX1BSRVZFTlRfTUFDUk9fU1VCU1RJVFVUSU9OICgpIGNvbnN0OwotICB2b2lkIHJlc2V0KCk7Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgRW5naW5lPgotICByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEVuZ2luZSYgZW5nKTsKLQotI2lmbmRlZiBORE5CT09TVF9SQU5ET01fTk9fU1RSRUFNX09QRVJBVE9SUwotICB0ZW1wbGF0ZTxjbGFzcyBDaGFyVCwgY2xhc3MgVHJhaXRzPgotICBmcmllbmQgc3RkOjpiYXNpY19vc3RyZWFtPENoYXJULFRyYWl0cz4mCi0gIG9wZXJhdG9yPDwoc3RkOjpiYXNpY19vc3RyZWFtPENoYXJULFRyYWl0cz4mIG9zLCBjb25zdCBuZXdfdW5pZm9ybV8wMSYpCi0gIHsKLSAgICByZXR1cm4gb3M7Ci0gIH0KLQotICB0ZW1wbGF0ZTxjbGFzcyBDaGFyVCwgY2xhc3MgVHJhaXRzPgotICBmcmllbmQgc3RkOjpiYXNpY19pc3RyZWFtPENoYXJULFRyYWl0cz4mCi0gIG9wZXJhdG9yPj4oc3RkOjpiYXNpY19pc3RyZWFtPENoYXJULFRyYWl0cz4mIGlzLCBuZXdfdW5pZm9ybV8wMSYpCi0gIHsKLSAgICByZXR1cm4gaXM7Ci0gIH0KLSNlbmRpZgotfTsKLQotI2Vsc2UKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlPGNsYXNzIFJlYWxUeXBlPgotY2xhc3MgbmV3X3VuaWZvcm1fMDEKLXsKLXB1YmxpYzoKLSAgdHlwZWRlZiBSZWFsVHlwZSBpbnB1dF90eXBlOwotICB0eXBlZGVmIFJlYWxUeXBlIHJlc3VsdF90eXBlOwotICAvLyBjb21waWxlci1nZW5lcmF0ZWQgY29weSBjdG9yIGFuZCBjb3B5IGFzc2lnbm1lbnQgYXJlIGZpbmUKLSAgcmVzdWx0X3R5cGUgbWluIE5ETkJPT1NUX1BSRVZFTlRfTUFDUk9fU1VCU1RJVFVUSU9OICgpIGNvbnN0IHsgcmV0dXJuIHJlc3VsdF90eXBlKDApOyB9Ci0gIHJlc3VsdF90eXBlIG1heCBORE5CT09TVF9QUkVWRU5UX01BQ1JPX1NVQlNUSVRVVElPTiAoKSBjb25zdCB7IHJldHVybiByZXN1bHRfdHlwZSgxKTsgfQotICB2b2lkIHJlc2V0KCkgeyB9Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgRW5naW5lPgotICByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEVuZ2luZSYgZW5nKSB7Ci0gICAgZm9yICg7OykgewotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBFbmdpbmU6OnJlc3VsdF90eXBlIGJhc2VfcmVzdWx0OwotICAgICAgcmVzdWx0X3R5cGUgZmFjdG9yID0gcmVzdWx0X3R5cGUoMSkgLwotICAgICAgICAgICAgICAocmVzdWx0X3R5cGUoKGVuZy5tYXgpKCktKGVuZy5taW4pKCkpICsKLSAgICAgICAgICAgICAgIHJlc3VsdF90eXBlKHN0ZDo6bnVtZXJpY19saW1pdHM8YmFzZV9yZXN1bHQ+Ojppc19pbnRlZ2VyID8gMSA6IDApKTsKLSAgICAgIHJlc3VsdF90eXBlIHJlc3VsdCA9IHJlc3VsdF90eXBlKGVuZygpIC0gKGVuZy5taW4pKCkpICogZmFjdG9yOwotICAgICAgaWYgKHJlc3VsdCA8IHJlc3VsdF90eXBlKDEpKQotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0KLSAgfQotCi0jaWZuZGVmIE5ETkJPT1NUX1JBTkRPTV9OT19TVFJFQU1fT1BFUkFUT1JTCi0gIHRlbXBsYXRlPGNsYXNzIENoYXJULCBjbGFzcyBUcmFpdHM+Ci0gIGZyaWVuZCBzdGQ6OmJhc2ljX29zdHJlYW08Q2hhclQsVHJhaXRzPiYKLSAgb3BlcmF0b3I8PChzdGQ6OmJhc2ljX29zdHJlYW08Q2hhclQsVHJhaXRzPiYgb3MsIGNvbnN0IG5ld191bmlmb3JtXzAxJikKLSAgewotICAgIHJldHVybiBvczsKLSAgfQotCi0gIHRlbXBsYXRlPGNsYXNzIENoYXJULCBjbGFzcyBUcmFpdHM+Ci0gIGZyaWVuZCBzdGQ6OmJhc2ljX2lzdHJlYW08Q2hhclQsVHJhaXRzPiYKLSAgb3BlcmF0b3I+PihzdGQ6OmJhc2ljX2lzdHJlYW08Q2hhclQsVHJhaXRzPiYgaXMsIG5ld191bmlmb3JtXzAxJikKLSAgewotICAgIHJldHVybiBpczsKLSAgfQotI2VuZGlmCi19OwotCi10ZW1wbGF0ZTxjbGFzcyBVbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yLCBjbGFzcyBSZWFsVHlwZT4KLWNsYXNzIGJhY2t3YXJkX2NvbXBhdGlibGVfdW5pZm9ybV8wMQotewotICB0eXBlZGVmIG5kbmJvb3N0OjpyYW5kb206OmRldGFpbDo6cHRyX2hlbHBlcjxVbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yPiB0cmFpdHM7Ci1wdWJsaWM6Ci0gIHR5cGVkZWYgVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciBiYXNlX3R5cGU7Ci0gIHR5cGVkZWYgUmVhbFR5cGUgcmVzdWx0X3R5cGU7Ci0KLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGhhc19maXhlZF9yYW5nZSA9IGZhbHNlKTsKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0xJTUlUU19DT01QSUxFX1RJTUVfQ09OU1RBTlRTKSAmJiAhKGRlZmluZWQoTkROQk9PU1RfTVNWQykgJiYgTkROQk9PU1RfTVNWQyA8PSAxMzAwKQotICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKCFzdGQ6Om51bWVyaWNfbGltaXRzPFJlYWxUeXBlPjo6aXNfaW50ZWdlcik7Ci0jZW5kaWYKLQotICBleHBsaWNpdCBiYWNrd2FyZF9jb21wYXRpYmxlX3VuaWZvcm1fMDEodHlwZW5hbWUgdHJhaXRzOjpydmFsdWVfdHlwZSBybmcpCi0gICAgOiBfcm5nKHJuZyksCi0gICAgICBfZmFjdG9yKHJlc3VsdF90eXBlKDEpIC8KLSAgICAgICAgICAgICAgKHJlc3VsdF90eXBlKChiYXNlKCkubWF4KSgpLShiYXNlKCkubWluKSgpKSArCi0gICAgICAgICAgICAgICByZXN1bHRfdHlwZShzdGQ6Om51bWVyaWNfbGltaXRzPGJhc2VfcmVzdWx0Pjo6aXNfaW50ZWdlciA/IDEgOiAwKSkpCi0gIHsKLSAgfQotICAvLyBjb21waWxlci1nZW5lcmF0ZWQgY29weSBjdG9yIGFuZCBjb3B5IGFzc2lnbm1lbnQgYXJlIGZpbmUKLQotICByZXN1bHRfdHlwZSBtaW4gTkROQk9PU1RfUFJFVkVOVF9NQUNST19TVUJTVElUVVRJT04gKCkgY29uc3QgeyByZXR1cm4gcmVzdWx0X3R5cGUoMCk7IH0KLSAgcmVzdWx0X3R5cGUgbWF4IE5ETkJPT1NUX1BSRVZFTlRfTUFDUk9fU1VCU1RJVFVUSU9OICgpIGNvbnN0IHsgcmV0dXJuIHJlc3VsdF90eXBlKDEpOyB9Ci0gIHR5cGVuYW1lIHRyYWl0czo6dmFsdWVfdHlwZSYgYmFzZSgpIHsgcmV0dXJuIHRyYWl0czo6cmVmKF9ybmcpOyB9Ci0gIGNvbnN0IHR5cGVuYW1lIHRyYWl0czo6dmFsdWVfdHlwZSYgYmFzZSgpIGNvbnN0IHsgcmV0dXJuIHRyYWl0czo6cmVmKF9ybmcpOyB9Ci0gIHZvaWQgcmVzZXQoKSB7IH0KLQotICByZXN1bHRfdHlwZSBvcGVyYXRvcigpKCkgewotICAgIGZvciAoOzspIHsKLSAgICAgIHJlc3VsdF90eXBlIHJlc3VsdCA9IHJlc3VsdF90eXBlKGJhc2UoKSgpIC0gKGJhc2UoKS5taW4pKCkpICogX2ZhY3RvcjsKLSAgICAgIGlmIChyZXN1bHQgPCByZXN1bHRfdHlwZSgxKSkKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0gIH0KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX09QRVJBVE9SU19JTl9OQU1FU1BBQ0UpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX01FTUJFUl9URU1QTEFURV9GUklFTkRTKQotICB0ZW1wbGF0ZTxjbGFzcyBDaGFyVCwgY2xhc3MgVHJhaXRzPgotICBmcmllbmQgc3RkOjpiYXNpY19vc3RyZWFtPENoYXJULFRyYWl0cz4mCi0gIG9wZXJhdG9yPDwoc3RkOjpiYXNpY19vc3RyZWFtPENoYXJULFRyYWl0cz4mIG9zLCBjb25zdCBiYWNrd2FyZF9jb21wYXRpYmxlX3VuaWZvcm1fMDEmIHUpCi0gIHsKLSAgICBvcyA8PCB1Ll9ybmc7Ci0gICAgcmV0dXJuIG9zOwotICB9Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgQ2hhclQsIGNsYXNzIFRyYWl0cz4KLSAgZnJpZW5kIHN0ZDo6YmFzaWNfaXN0cmVhbTxDaGFyVCxUcmFpdHM+JgotICBvcGVyYXRvcj4+KHN0ZDo6YmFzaWNfaXN0cmVhbTxDaGFyVCxUcmFpdHM+JiBpcywgYmFja3dhcmRfY29tcGF0aWJsZV91bmlmb3JtXzAxJiB1KQotICB7Ci0gICAgaXMgPj4gdS5fcm5nOwotICAgIHJldHVybiBpczsKLSAgfQotI2VuZGlmCi0KLXByaXZhdGU6Ci0gIHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzOjp2YWx1ZV90eXBlOjpyZXN1bHRfdHlwZSBiYXNlX3Jlc3VsdDsKLSAgVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciBfcm5nOwotICByZXN1bHRfdHlwZSBfZmFjdG9yOwotfTsKLQotI2lmbmRlZiBORE5CT09TVF9OT19JTkNMQVNTX01FTUJFUl9JTklUSUFMSVpBVElPTgotLy8gIEEgZGVmaW5pdGlvbiBpcyByZXF1aXJlZCBldmVuIGZvciBpbnRlZ3JhbCBzdGF0aWMgY29uc3RhbnRzCi10ZW1wbGF0ZTxjbGFzcyBVbmlmb3JtUmFuZG9tTnVtYmVyR2VuZXJhdG9yLCBjbGFzcyBSZWFsVHlwZT4KLWNvbnN0IGJvb2wgYmFja3dhcmRfY29tcGF0aWJsZV91bmlmb3JtXzAxPFVuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3IsIFJlYWxUeXBlPjo6aGFzX2ZpeGVkX3JhbmdlOwotI2VuZGlmCi0KLXRlbXBsYXRlPGNsYXNzIFVuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3I+Ci1zdHJ1Y3Qgc2VsZWN0X3VuaWZvcm1fMDEKLXsKLSAgdGVtcGxhdGU8Y2xhc3MgUmVhbFR5cGU+Ci0gIHN0cnVjdCBhcHBseQotICB7Ci0gICAgdHlwZWRlZiBiYWNrd2FyZF9jb21wYXRpYmxlX3VuaWZvcm1fMDE8VW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciwgUmVhbFR5cGU+IHR5cGU7Ci0gIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2VsZWN0X3VuaWZvcm1fMDE8ZmxvYXQ+Ci17Ci0gIHRlbXBsYXRlPGNsYXNzIFJlYWxUeXBlPgotICBzdHJ1Y3QgYXBwbHkKLSAgewotICAgIHR5cGVkZWYgbmV3X3VuaWZvcm1fMDE8ZmxvYXQ+IHR5cGU7Ci0gIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3Qgc2VsZWN0X3VuaWZvcm1fMDE8ZG91YmxlPgotewotICB0ZW1wbGF0ZTxjbGFzcyBSZWFsVHlwZT4KLSAgc3RydWN0IGFwcGx5Ci0gIHsKLSAgICB0eXBlZGVmIG5ld191bmlmb3JtXzAxPGRvdWJsZT4gdHlwZTsKLSAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBzZWxlY3RfdW5pZm9ybV8wMTxsb25nIGRvdWJsZT4KLXsKLSAgdGVtcGxhdGU8Y2xhc3MgUmVhbFR5cGU+Ci0gIHN0cnVjdCBhcHBseQotICB7Ci0gICAgdHlwZWRlZiBuZXdfdW5pZm9ybV8wMTxsb25nIGRvdWJsZT4gdHlwZTsKLSAgfTsKLX07Ci0KLX0KLQotLy8gQmVjYXVzZSBpdCBpcyBzbyBjb21tb25seSB1c2VkOiB1bmlmb3JtIGRpc3RyaWJ1dGlvbiBvbiB0aGUgcmVhbCBbMC4uMSkKLS8vIHJhbmdlLiAgVGhpcyBhbGxvd3MgZm9yIHNwZWNpYWxpemF0aW9ucyB0byBhdm9pZCBhIGNvc3RseSBpbnQgLT4gZmxvYXQKLS8vIGNvbnZlcnNpb24gcGx1cyBmbG9hdCBtdWx0aXBsaWNhdGlvbgotdGVtcGxhdGU8Y2xhc3MgVW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvciA9IGRvdWJsZSwgY2xhc3MgUmVhbFR5cGUgPSBkb3VibGU+Ci1jbGFzcyB1bmlmb3JtXzAxCi0gIDogcHVibGljIGRldGFpbDo6c2VsZWN0X3VuaWZvcm1fMDE8VW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvcj46Ok5ETkJPT1NUX05FU1RFRF9URU1QTEFURSBhcHBseTxSZWFsVHlwZT46OnR5cGUKLXsKLSAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OnNlbGVjdF91bmlmb3JtXzAxPFVuaWZvcm1SYW5kb21OdW1iZXJHZW5lcmF0b3I+OjpORE5CT09TVF9ORVNURURfVEVNUExBVEUgYXBwbHk8UmVhbFR5cGU+Ojp0eXBlIGltcGxfdHlwZTsKLSAgdHlwZWRlZiBuZG5ib29zdDo6cmFuZG9tOjpkZXRhaWw6OnB0cl9oZWxwZXI8VW5pZm9ybVJhbmRvbU51bWJlckdlbmVyYXRvcj4gdHJhaXRzOwotcHVibGljOgotCi0gIHVuaWZvcm1fMDEoKSB7fQotCi0gIGV4cGxpY2l0IHVuaWZvcm1fMDEodHlwZW5hbWUgdHJhaXRzOjpydmFsdWVfdHlwZSBybmcpCi0gICAgOiBpbXBsX3R5cGUocm5nKQotICB7Ci0gIH0KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX09QRVJBVE9SU19JTl9OQU1FU1BBQ0UpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX01FTUJFUl9URU1QTEFURV9GUklFTkRTKQotICB0ZW1wbGF0ZTxjbGFzcyBDaGFyVCwgY2xhc3MgVHJhaXRzPgotICBmcmllbmQgc3RkOjpiYXNpY19vc3RyZWFtPENoYXJULFRyYWl0cz4mCi0gIG9wZXJhdG9yPDwoc3RkOjpiYXNpY19vc3RyZWFtPENoYXJULFRyYWl0cz4mIG9zLCBjb25zdCB1bmlmb3JtXzAxJiB1KQotICB7Ci0gICAgb3MgPDwgc3RhdGljX2Nhc3Q8Y29uc3QgaW1wbF90eXBlJj4odSk7Ci0gICAgcmV0dXJuIG9zOwotICB9Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgQ2hhclQsIGNsYXNzIFRyYWl0cz4KLSAgZnJpZW5kIHN0ZDo6YmFzaWNfaXN0cmVhbTxDaGFyVCxUcmFpdHM+JgotICBvcGVyYXRvcj4+KHN0ZDo6YmFzaWNfaXN0cmVhbTxDaGFyVCxUcmFpdHM+JiBpcywgdW5pZm9ybV8wMSYgdSkKLSAgewotICAgIGlzID4+IHN0YXRpY19jYXN0PGltcGxfdHlwZSY+KHUpOwotICAgIHJldHVybiBpczsKLSAgfQotI2VuZGlmCi19OwotCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgcmFuZG9tCi0KLXVzaW5nIHJhbmRvbTo6dW5pZm9ybV8wMTsKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmRvbS9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1JBTkRPTV9VTklGT1JNXzAxX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yYW5kb20vdW5pZm9ybV9zbWFsbGludC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JhbmRvbS91bmlmb3JtX3NtYWxsaW50LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTkwZTEwMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JhbmRvbS91bmlmb3JtX3NtYWxsaW50LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI4OCArMCwwIEBACi0vKiBib29zdCByYW5kb20vdW5pZm9ybV9zbWFsbGludC5ocHAgaGVhZGVyIGZpbGUKLSAqCi0gKiBDb3B5cmlnaHQgSmVucyBNYXVyZXIgMjAwMC0yMDAxCi0gKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLSAqIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0gKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICogU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotICoKLSAqICRJZDogdW5pZm9ybV9zbWFsbGludC5ocHAgNzEwMTggMjAxMS0wNC0wNSAyMToyNzo1Mlogc3RldmVuX3dhdGFuYWJlICQKLSAqCi0gKiBSZXZpc2lvbiBoaXN0b3J5Ci0gKiAgMjAwMS0wNC0wOCAgYWRkZWQgbWluPG1heCBhc3NlcnRpb24gKE4uIEJlY2tlcikKLSAqICAyMDAxLTAyLTE4ICBtb3ZlZCB0byBpbmRpdmlkdWFsIGhlYWRlciBmaWxlcwotICovCi0KLSNpZm5kZWYgTkROQk9PU1RfUkFORE9NX1VOSUZPUk1fU01BTExJTlRfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkRPTV9VTklGT1JNX1NNQUxMSU5UX0hQUAotCi0jaW5jbHVkZSA8aXN0cmVhbT4KLSNpbmNsdWRlIDxpb3Nmd2Q+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2xpbWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfaW50ZWdyYWwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmRvbS9kZXRhaWwvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5kb20vZGV0YWlsL29wZXJhdG9ycy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZG9tL2RldGFpbC9zaWduZWRfdW5zaWduZWRfdG9vbHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmRvbS91bmlmb3JtXzAxLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci1uYW1lc3BhY2UgcmFuZG9tIHsKLQotLy8gdW5pZm9ybSBpbnRlZ2VyIGRpc3RyaWJ1dGlvbiBvbiBhIHNtYWxsIHJhbmdlIFttaW4sIG1heF0KLQotLyoqCi0gKiBUaGUgZGlzdHJpYnV0aW9uIGZ1bmN0aW9uIHVuaWZvcm1fc21hbGxpbnQgbW9kZWxzIGEgXHJhbmRvbV9kaXN0cmlidXRpb24uCi0gKiBPbiBlYWNoIGludm9jYXRpb24sIGl0IHJldHVybnMgYSByYW5kb20gaW50ZWdlciB2YWx1ZSB1bmlmb3JtbHkgZGlzdHJpYnV0ZWQKLSAqIGluIHRoZSBzZXQgb2YgaW50ZWdlciBudW1iZXJzIHttaW4sIG1pbisxLCBtaW4rMiwgLi4uLCBtYXh9LiBJdCBhc3N1bWVzCi0gKiB0aGF0IHRoZSBkZXNpcmVkIHJhbmdlIChtYXgtbWluKzEpIGlzIHNtYWxsIGNvbXBhcmVkIHRvIHRoZSByYW5nZSBvZiB0aGUKLSAqIHVuZGVybHlpbmcgc291cmNlIG9mIHJhbmRvbSBudW1iZXJzIGFuZCB0aHVzIG1ha2VzIG5vIGF0dGVtcHQgdG8gbGltaXQKLSAqIHF1YW50aXphdGlvbiBlcnJvcnMuCi0gKgotICogTGV0IFxmJHJfe1xtYXRodHR7b3V0fX0gPSAoXG1ib3h7bWF4fS1cbWJveHttaW59KzEpXGYkIHRoZSBkZXNpcmVkIHJhbmdlIG9mCi0gKiBpbnRlZ2VyIG51bWJlcnMsIGFuZAotICogbGV0IFxmJHJfe1xtYXRodHR7YmFzZX19XGYkIGJlIHRoZSByYW5nZSBvZiB0aGUgdW5kZXJseWluZyBzb3VyY2Ugb2YgcmFuZG9tCi0gKiBudW1iZXJzLiBUaGVuLCBmb3IgdGhlIHVuaWZvcm0gZGlzdHJpYnV0aW9uLCB0aGUgdGhlb3JldGljYWwgcHJvYmFiaWxpdHkKLSAqIGZvciBhbnkgbnVtYmVyIGkgaW4gdGhlIHJhbmdlIFxmJHJfe1xtYXRodHR7b3V0fX1cZiQgd2lsbCBiZQotICogXGYkXGRpc3BsYXlzdHlsZSBwX3tcbWF0aHR0e291dH19KGkpID0gXGZyYWN7MX17cl97XG1hdGh0dHtvdXR9fX1cZiQuCi0gKiBMaWtld2lzZSwgYXNzdW1lIGEgdW5pZm9ybSBkaXN0cmlidXRpb24gb24gXGYkcl97XG1hdGh0dHtiYXNlfX1cZiQgZm9yCi0gKiB0aGUgdW5kZXJseWluZyBzb3VyY2Ugb2YgcmFuZG9tIG51bWJlcnMsIGkuZS4KLSAqIFxmJFxkaXNwbGF5c3R5bGUgcF97XG1hdGh0dHtiYXNlfX0oaSkgPSBcZnJhY3sxfXtyX3tcbWF0aHR0e2Jhc2V9fX1cZiQuCi0gKiBMZXQgXGYkcF97XG1hdGh0dHtvdXRcX3N9fShpKVxmJCBkZW5vdGUgdGhlIHJhbmRvbQotICogZGlzdHJpYnV0aW9uIGdlbmVyYXRlZCBieSBAYyB1bmlmb3JtX3NtYWxsaW50LiBUaGVuIHRoZSBzdW0gb3ZlciBhbGwKLSAqIGkgaW4gXGYkcl97XG1hdGh0dHtvdXR9fVxmJCBvZgotICogXGYkXGRpc3BsYXlzdHlsZQotICogXGxlZnQoXGZyYWN7cF97XG1hdGh0dHtvdXRcX3N9fShpKX17cF97XG1hdGh0dHtvdXR9fShpKX0gLSAxXHJpZ2h0KV4yXGYkCi0gKiBzaGFsbCBub3QgZXhjZWVkCi0gKiBcZiRcZGlzcGxheXN0eWxlIFxmcmFje3Jfe1xtYXRodHR7b3V0fX19e3Jfe1xtYXRodHR7YmFzZX19XjJ9Ci0gKiAocl97XG1hdGh0dHtiYXNlfX0gXG1ib3h7IG1vZCB9IHJfe1xtYXRodHR7b3V0fX0pCi0gKiAocl97XG1hdGh0dHtvdXR9fSAtIHJfe1xtYXRodHR7YmFzZX19IFxtYm94eyBtb2QgfSByX3tcbWF0aHR0e291dH19KVxmJC4KLSAqCi0gKiBUaGUgdGVtcGxhdGUgcGFyYW1ldGVyIEludFR5cGUgc2hhbGwgZGVub3RlIGFuIGludGVnZXItbGlrZSB2YWx1ZSB0eXBlLgotICoKLSAqIEB4bWxub3RlCi0gKiBUaGUgcHJvcGVydHkgYWJvdmUgaXMgdGhlIHNxdWFyZSBzdW0gb2YgdGhlIHJlbGF0aXZlIGRpZmZlcmVuY2VzCi0gKiBpbiBwcm9iYWJpbGl0aWVzIGJldHdlZW4gdGhlIGRlc2lyZWQgdW5pZm9ybSBkaXN0cmlidXRpb24KLSAqIFxmJHBfe1xtYXRodHR7b3V0fX0oaSlcZiQgYW5kIHRoZSBnZW5lcmF0ZWQgZGlzdHJpYnV0aW9uCi0gKiBcZiRwX3tcbWF0aHR0e291dFxfc319KGkpXGYkLgotICogVGhlIHByb3BlcnR5IGNhbiBiZSBmdWxmaWxsZWQgd2l0aCB0aGUgY2FsY3VsYXRpb24KLSAqIFxmJChcbWJveHtiYXNlXF9ybmd9IFxtYm94eyBtb2QgfSByX3tcbWF0aHR0e291dH19KVxmJCwgYXMgZm9sbG93czoKLSAqIExldCBcZiRyID0gcl97XG1hdGh0dHtiYXNlfX0gXG1ib3h7IG1vZCB9IHJfe1xtYXRodHR7b3V0fX1cZiQuCi0gKiBUaGUgYmFzZSBkaXN0cmlidXRpb24gb24gXGYkcl97XG1hdGh0dHtiYXNlfX1cZiQgaXMgZm9sZGVkIG9udG8gdGhlCi0gKiByYW5nZSBcZiRyX3tcbWF0aHR0e291dH19XGYkLiBUaGUgbnVtYmVycyBpIDwgciBoYXZlIGFzc2lnbmVkCi0gKiBcZiRcZGlzcGxheXN0eWxlCi0gKiBcbGVmdFxsZmxvb3JcZnJhY3tyX3tcbWF0aHR0e2Jhc2V9fX17cl97XG1hdGh0dHtvdXR9fX1ccmlnaHRccmZsb29yKzFcZiQKLSAqIG51bWJlcnMgb2YgdGhlIGJhc2UgZGlzdHJpYnV0aW9uLCB0aGUgcmVzdCBoYXMgb25seSBcZiRcZGlzcGxheXN0eWxlCi0gKiBcbGVmdFxsZmxvb3JcZnJhY3tyX3tcbWF0aHR0e2Jhc2V9fX17cl97XG1hdGh0dHtvdXR9fX1ccmlnaHRccmZsb29yXGYkLgotICogVGhlcmVmb3JlLAotICogXGYkXGRpc3BsYXlzdHlsZSBwX3tcbWF0aHR0e291dFxfc319KGkpID0KLSAqIFxsZWZ0KFxsZWZ0XGxmbG9vclxmcmFje3Jfe1xtYXRodHR7YmFzZX19fQotICoge3Jfe1xtYXRodHR7b3V0fX19XHJpZ2h0XHJmbG9vcisxXHJpZ2h0KSAvCi0gKiByX3tcbWF0aHR0e2Jhc2V9fVxmJCBmb3IgaSA8IHIgYW5kIFxmJFxkaXNwbGF5c3R5bGUgcF97XG1hdGh0dHtvdXRcX3N9fShpKSA9Ci0gKiBcbGVmdFxsZmxvb3JcZnJhY3tyX3tcbWF0aHR0e2Jhc2V9fX0KLSAqIHtyX3tcbWF0aHR0e291dH19fVxyaWdodFxyZmxvb3Ivcl97XG1hdGh0dHtiYXNlfX1cZiQgb3RoZXJ3aXNlLgotICogU3Vic3RpdHV0aW5nIHRoaXMgaW4gdGhlCi0gKiBhYm92ZSBzdW0gZm9ybXVsYSBsZWFkcyB0byB0aGUgZGVzaXJlZCByZXN1bHQuCi0gKiBAZW5keG1sbm90ZQotICoKLSAqIE5vdGU6IFRoZSB1cHBlciBib3VuZCBmb3IKLSAqIFxmJChyX3tcbWF0aHR0e2Jhc2V9fSBcbWJveHsgbW9kIH0gcl97XG1hdGh0dHtvdXR9fSkKLSAqIChyX3tcbWF0aHR0e291dH19IC0gcl97XG1hdGh0dHtiYXNlfX0gXG1ib3h7IG1vZCB9IHJfe1xtYXRodHR7b3V0fX0pXGYkIGlzCi0gKiBcZiRcZGlzcGxheXN0eWxlIFxmcmFje3Jfe1xtYXRodHR7b3V0fX1eMn17NH1cZiQuICBSZWdhcmRpbmcgdGhlIHVwcGVyIGJvdW5kCi0gKiBmb3IgdGhlIHNxdWFyZSBzdW0gb2YgdGhlIHJlbGF0aXZlIHF1YW50aXphdGlvbiBlcnJvciBvZgotICogXGYkXGRpc3BsYXlzdHlsZSBcZnJhY3tyX1xtYXRodHR7b3V0fV4zfXs0cl97XG1hdGh0dHtiYXNlfX1eMn1cZiQsIGl0Ci0gKiBzZWVtcyB3aXNlIHRvIGVpdGhlciBjaG9vc2UgXGYkcl97XG1hdGh0dHtiYXNlfX1cZiQgc28gdGhhdAotICogXGYkcl97XG1hdGh0dHtiYXNlfX0gPiAxMHJfe1xtYXRodHR7b3V0fX1eMlxmJCBvciBlbnN1cmUgdGhhdAotICogXGYkcl97XG1hdGh0dHtiYXNlfX1cZiQgaXMKLSAqIGRpdmlzaWJsZSBieSBcZiRyX3tcbWF0aHR0e291dH19XGYkLgotICovCi10ZW1wbGF0ZTxjbGFzcyBJbnRUeXBlID0gaW50PgotY2xhc3MgdW5pZm9ybV9zbWFsbGludAotewotcHVibGljOgotICAgIHR5cGVkZWYgSW50VHlwZSBpbnB1dF90eXBlOwotICAgIHR5cGVkZWYgSW50VHlwZSByZXN1bHRfdHlwZTsKLQotICAgIGNsYXNzIHBhcmFtX3R5cGUKLSAgICB7Ci0gICAgcHVibGljOgotCi0gICAgICAgIHR5cGVkZWYgdW5pZm9ybV9zbWFsbGludCBkaXN0cmlidXRpb25fdHlwZTsKLQotICAgICAgICAvKiogY29uc3RydWN0cyB0aGUgcGFyYW1ldGVycyBvZiBhIEBjIHVuaWZvcm1fc21hbGxpbnQgZGlzdHJpYnV0aW9uLiAqLwotICAgICAgICBwYXJhbV90eXBlKEludFR5cGUgbWluX2FyZyA9IDAsIEludFR5cGUgbWF4X2FyZyA9IDkpCi0gICAgICAgICAgOiBfbWluKG1pbl9hcmcpLCBfbWF4KG1heF9hcmcpCi0gICAgICAgIHsKLSAgICAgICAgICAgIE5ETkJPT1NUX0FTU0VSVChfbWluIDw9IF9tYXgpOwotICAgICAgICB9Ci0KLSAgICAgICAgLyoqIFJldHVybnMgdGhlIG1pbmltdW0gdmFsdWUuICovCi0gICAgICAgIEludFR5cGUgYSgpIGNvbnN0IHsgcmV0dXJuIF9taW47IH0KLSAgICAgICAgLyoqIFJldHVybnMgdGhlIG1heGltdW0gdmFsdWUuICovCi0gICAgICAgIEludFR5cGUgYigpIGNvbnN0IHsgcmV0dXJuIF9tYXg7IH0KLSAgICAgICAgCi0KLSAgICAgICAgLyoqIFdyaXRlcyB0aGUgcGFyYW1ldGVycyB0byBhIEBjIHN0ZDo6b3N0cmVhbS4gKi8KLSAgICAgICAgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9PU1RSRUFNX09QRVJBVE9SKG9zLCBwYXJhbV90eXBlLCBwYXJtKQotICAgICAgICB7Ci0gICAgICAgICAgICBvcyA8PCBwYXJtLl9taW4gPDwgIiAiIDw8IHBhcm0uX21heDsKLSAgICAgICAgICAgIHJldHVybiBvczsKLSAgICAgICAgfQotICAgIAotICAgICAgICAvKiogUmVhZHMgdGhlIHBhcmFtZXRlcnMgZnJvbSBhIEBjIHN0ZDo6aXN0cmVhbS4gKi8KLSAgICAgICAgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9JU1RSRUFNX09QRVJBVE9SKGlzLCBwYXJhbV90eXBlLCBwYXJtKQotICAgICAgICB7Ci0gICAgICAgICAgICBpcyA+PiBwYXJtLl9taW4gPj4gc3RkOjp3cyA+PiBwYXJtLl9tYXg7Ci0gICAgICAgICAgICByZXR1cm4gaXM7Ci0gICAgICAgIH0KLQotICAgICAgICAvKiogUmV0dXJucyB0cnVlIGlmIHRoZSB0d28gc2V0cyBvZiBwYXJhbWV0ZXJzIGFyZSBlcXVhbC4gKi8KLSAgICAgICAgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9FUVVBTElUWV9PUEVSQVRPUihwYXJhbV90eXBlLCBsaHMsIHJocykKLSAgICAgICAgeyByZXR1cm4gbGhzLl9taW4gPT0gcmhzLl9taW4gJiYgbGhzLl9tYXggPT0gcmhzLl9tYXg7IH0KLQotICAgICAgICAvKiogUmV0dXJucyB0cnVlIGlmIHRoZSB0d28gc2V0cyBvZiBwYXJhbWV0ZXJzIGFyZSBkaWZmZXJlbnQuICovCi0gICAgICAgIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfSU5FUVVBTElUWV9PUEVSQVRPUihwYXJhbV90eXBlKQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgSW50VHlwZSBfbWluOwotICAgICAgICBJbnRUeXBlIF9tYXg7Ci0gICAgfTsKLQotICAgIC8qKgotICAgICAqIENvbnN0cnVjdHMgYSBAYyB1bmlmb3JtX3NtYWxsaW50LiBAYyBtaW4gYW5kIEBjIG1heCBhcmUgdGhlCi0gICAgICogbG93ZXIgYW5kIHVwcGVyIGJvdW5kcyBvZiB0aGUgb3V0cHV0IHJhbmdlLCByZXNwZWN0aXZlbHkuCi0gICAgICovCi0gICAgZXhwbGljaXQgdW5pZm9ybV9zbWFsbGludChJbnRUeXBlIG1pbl9hcmcgPSAwLCBJbnRUeXBlIG1heF9hcmcgPSA5KQotICAgICAgOiBfbWluKG1pbl9hcmcpLCBfbWF4KG1heF9hcmcpIHt9Ci0KLSAgICAvKioKLSAgICAgKiBDb25zdHJ1Y3RzIGEgQGMgdW5pZm9ybV9zbWFsbGludCBmcm9tIGl0cyBwYXJhbWV0ZXJzLgotICAgICAqLwotICAgIGV4cGxpY2l0IHVuaWZvcm1fc21hbGxpbnQoY29uc3QgcGFyYW1fdHlwZSYgcGFybSkKLSAgICAgIDogX21pbihwYXJtLmEoKSksIF9tYXgocGFybS5iKCkpIHt9Ci0KLSAgICAvKiogUmV0dXJucyB0aGUgbWluaW11bSB2YWx1ZSBvZiB0aGUgZGlzdHJpYnV0aW9uLiAqLwotICAgIHJlc3VsdF90eXBlIGEoKSBjb25zdCB7IHJldHVybiBfbWluOyB9Ci0gICAgLyoqIFJldHVybnMgdGhlIG1heGltdW0gdmFsdWUgb2YgdGhlIGRpc3RyaWJ1dGlvbi4gKi8KLSAgICByZXN1bHRfdHlwZSBiKCkgY29uc3QgeyByZXR1cm4gX21heDsgfQotICAgIC8qKiBSZXR1cm5zIHRoZSBtaW5pbXVtIHZhbHVlIG9mIHRoZSBkaXN0cmlidXRpb24uICovCi0gICAgcmVzdWx0X3R5cGUgbWluIE5ETkJPT1NUX1BSRVZFTlRfTUFDUk9fU1VCU1RJVFVUSU9OICgpIGNvbnN0IHsgcmV0dXJuIF9taW47IH0KLSAgICAvKiogUmV0dXJucyB0aGUgbWF4aW11bSB2YWx1ZSBvZiB0aGUgZGlzdHJpYnV0aW9uLiAqLwotICAgIHJlc3VsdF90eXBlIG1heCBORE5CT09TVF9QUkVWRU5UX01BQ1JPX1NVQlNUSVRVVElPTiAoKSBjb25zdCB7IHJldHVybiBfbWF4OyB9Ci0KLSAgICAvKiogUmV0dXJucyB0aGUgcGFyYW1ldGVycyBvZiB0aGUgZGlzdHJpYnV0aW9uLiAqLwotICAgIHBhcmFtX3R5cGUgcGFyYW0oKSBjb25zdCB7IHJldHVybiBwYXJhbV90eXBlKF9taW4sIF9tYXgpOyB9Ci0gICAgLyoqIFNldHMgdGhlIHBhcmFtZXRlcnMgb2YgdGhlIGRpc3RyaWJ1dGlvbi4gKi8KLSAgICB2b2lkIHBhcmFtKGNvbnN0IHBhcmFtX3R5cGUmIHBhcm0pCi0gICAgewotICAgICAgICBfbWluID0gcGFybS5hKCk7Ci0gICAgICAgIF9tYXggPSBwYXJtLmIoKTsKLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBFZmZlY3RzOiBTdWJzZXF1ZW50IHVzZXMgb2YgdGhlIGRpc3RyaWJ1dGlvbiBkbyBub3QgZGVwZW5kCi0gICAgICogb24gdmFsdWVzIHByb2R1Y2VkIGJ5IGFueSBlbmdpbmUgcHJpb3IgdG8gaW52b2tpbmcgcmVzZXQuCi0gICAgICovCi0gICAgdm9pZCByZXNldCgpIHsgfQotCi0gICAgLyoqIFJldHVybnMgYSB2YWx1ZSB1bmlmb3JtbHkgZGlzdHJpYnV0ZWQgaW4gdGhlIHJhbmdlIFttaW4oKSwgbWF4KCldLiAqLwotICAgIHRlbXBsYXRlPGNsYXNzIEVuZ2luZT4KLSAgICByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEVuZ2luZSYgZW5nKSBjb25zdAotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBFbmdpbmU6OnJlc3VsdF90eXBlIGJhc2VfcmVzdWx0OwotICAgICAgICByZXR1cm4gZ2VuZXJhdGUoZW5nLCBuZG5ib29zdDo6aXNfaW50ZWdyYWw8YmFzZV9yZXN1bHQ+KCkpOwotICAgIH0KLQotICAgIC8qKiBSZXR1cm5zIGEgdmFsdWUgdW5pZm9ybWx5IGRpc3RyaWJ1dGVkIGluIHRoZSByYW5nZSBbcGFyYW0uYSgpLCBwYXJhbS5iKCldLiAqLwotICAgIHRlbXBsYXRlPGNsYXNzIEVuZ2luZT4KLSAgICByZXN1bHRfdHlwZSBvcGVyYXRvcigpKEVuZ2luZSYgZW5nLCBjb25zdCBwYXJhbV90eXBlJiBwYXJtKSBjb25zdAotICAgIHsgcmV0dXJuIHVuaWZvcm1fc21hbGxpbnQocGFybSkoZW5nKTsgfQotCi0gICAgLyoqIFdyaXRlcyB0aGUgZGlzdHJpYnV0aW9uIHRvIGEgQGMgc3RkOjpvc3RyZWFtLiAqLwotICAgIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfT1NUUkVBTV9PUEVSQVRPUihvcywgdW5pZm9ybV9zbWFsbGludCwgdWQpCi0gICAgewotICAgICAgICBvcyA8PCB1ZC5fbWluIDw8ICIgIiA8PCB1ZC5fbWF4OwotICAgICAgICByZXR1cm4gb3M7Ci0gICAgfQotICAgIAotICAgIC8qKiBSZWFkcyB0aGUgZGlzdHJpYnV0aW9uIGZyb20gYSBAYyBzdGQ6OmlzdHJlYW0uICovCi0gICAgTkROQk9PU1RfUkFORE9NX0RFVEFJTF9JU1RSRUFNX09QRVJBVE9SKGlzLCB1bmlmb3JtX3NtYWxsaW50LCB1ZCkKLSAgICB7Ci0gICAgICAgIGlzID4+IHVkLl9taW4gPj4gc3RkOjp3cyA+PiB1ZC5fbWF4OwotICAgICAgICByZXR1cm4gaXM7Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogUmV0dXJucyB0cnVlIGlmIHRoZSB0d28gZGlzdHJpYnV0aW9ucyB3aWxsIHByb2R1Y2UgaWRlbnRpY2FsCi0gICAgICogc2VxdWVuY2VzIG9mIHZhbHVlcyBnaXZlbiBlcXVhbCBnZW5lcmF0b3JzLgotICAgICAqLwotICAgIE5ETkJPT1NUX1JBTkRPTV9ERVRBSUxfRVFVQUxJVFlfT1BFUkFUT1IodW5pZm9ybV9zbWFsbGludCwgbGhzLCByaHMpCi0gICAgeyByZXR1cm4gbGhzLl9taW4gPT0gcmhzLl9taW4gJiYgbGhzLl9tYXggPT0gcmhzLl9tYXg7IH0KLSAgICAKLSAgICAvKioKLSAgICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIHR3byBkaXN0cmlidXRpb25zIG1heSBwcm9kdWNlIGRpZmZlcmVudAotICAgICAqIHNlcXVlbmNlcyBvZiB2YWx1ZXMgZ2l2ZW4gZXF1YWwgZ2VuZXJhdG9ycy4KLSAgICAgKi8KLSAgICBORE5CT09TVF9SQU5ET01fREVUQUlMX0lORVFVQUxJVFlfT1BFUkFUT1IodW5pZm9ybV9zbWFsbGludCkKLQotcHJpdmF0ZToKLSAgICAKLSAgICAvLyBcY29uZCBzaG93X3ByaXZhdGUKLSAgICB0ZW1wbGF0ZTxjbGFzcyBFbmdpbmU+Ci0gICAgcmVzdWx0X3R5cGUgZ2VuZXJhdGUoRW5naW5lJiBlbmcsIG5kbmJvb3N0OjptcGw6OnRydWVfKSBjb25zdAotICAgIHsKLSAgICAgICAgLy8gZXF1aXZhbGVudCB0byAoZW5nKCkgLSBlbmcubWluKCkpICUgKF9tYXggLSBfbWluICsgMSkgKyBfbWluLAotICAgICAgICAvLyBidXQgZ3VhcmFudGVlcyBubyBvdmVyZmxvdy4KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBFbmdpbmU6OnJlc3VsdF90eXBlIGJhc2VfcmVzdWx0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjptYWtlX3Vuc2lnbmVkPGJhc2VfcmVzdWx0Pjo6dHlwZSBiYXNlX3Vuc2lnbmVkOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjptYWtlX3Vuc2lnbmVkPHJlc3VsdF90eXBlPjo6dHlwZSByYW5nZV90eXBlOwotICAgICAgICByYW5nZV90eXBlIHJhbmdlID0gcmFuZG9tOjpkZXRhaWw6OnN1YnRyYWN0PHJlc3VsdF90eXBlPigpKF9tYXgsIF9taW4pOwotICAgICAgICBiYXNlX3Vuc2lnbmVkIGJhc2VfcmFuZ2UgPQotICAgICAgICAgICAgcmFuZG9tOjpkZXRhaWw6OnN1YnRyYWN0PHJlc3VsdF90eXBlPigpKChlbmcubWF4KSgpLCAoZW5nLm1pbikoKSk7Ci0gICAgICAgIGJhc2VfdW5zaWduZWQgdmFsID0KLSAgICAgICAgICAgIHJhbmRvbTo6ZGV0YWlsOjpzdWJ0cmFjdDxiYXNlX3Jlc3VsdD4oKShlbmcoKSwgKGVuZy5taW4pKCkpOwotICAgICAgICBpZihyYW5nZSA+PSBiYXNlX3JhbmdlKSB7Ci0gICAgICAgICAgICByZXR1cm4gbmRuYm9vc3Q6OnJhbmRvbTo6ZGV0YWlsOjphZGQ8cmFuZ2VfdHlwZSwgcmVzdWx0X3R5cGU+KCkoCi0gICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8cmFuZ2VfdHlwZT4odmFsKSwgX21pbik7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBiYXNlX3Vuc2lnbmVkIG1vZHVsdXMgPSBzdGF0aWNfY2FzdDxiYXNlX3Vuc2lnbmVkPihyYW5nZSkgKyAxOwotICAgICAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjpyYW5kb206OmRldGFpbDo6YWRkPHJhbmdlX3R5cGUsIHJlc3VsdF90eXBlPigpKAotICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHJhbmdlX3R5cGU+KHZhbCAlIG1vZHVsdXMpLCBfbWluKTsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICB0ZW1wbGF0ZTxjbGFzcyBFbmdpbmU+Ci0gICAgcmVzdWx0X3R5cGUgZ2VuZXJhdGUoRW5naW5lJiBlbmcsIG5kbmJvb3N0OjptcGw6OmZhbHNlXykgY29uc3QKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgRW5naW5lOjpyZXN1bHRfdHlwZSBiYXNlX3Jlc3VsdDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6bWFrZV91bnNpZ25lZDxyZXN1bHRfdHlwZT46OnR5cGUgcmFuZ2VfdHlwZTsKLSAgICAgICAgcmFuZ2VfdHlwZSByYW5nZSA9IHJhbmRvbTo6ZGV0YWlsOjpzdWJ0cmFjdDxyZXN1bHRfdHlwZT4oKShfbWF4LCBfbWluKTsKLSAgICAgICAgYmFzZV9yZXN1bHQgdmFsID0gbmRuYm9vc3Q6OnVuaWZvcm1fMDE8YmFzZV9yZXN1bHQ+KCkoZW5nKTsKLSAgICAgICAgLy8gd2hhdCBpcyB0aGUgd29yc3QgdGhhdCBjYW4gcG9zc2libHkgaGFwcGVuIGhlcmU/Ci0gICAgICAgIC8vIGJhc2VfcmVzdWx0IG1heSBub3QgYmUgYWJsZSB0byByZXByZXNlbnQgYWxsIHRoZSB2YWx1ZXMgaW4gWzAsIHJhbmdlXQotICAgICAgICAvLyBleGFjdGx5LiAgSWYgdGhpcyBoYXBwZW5zLCBpdCB3aWxsIGNhdXNlIHJvdW5kIG9mZiBlcnJvciBhbmQgd2UKLSAgICAgICAgLy8gd29uJ3QgYmUgYWJsZSB0byBwcm9kdWNlIGFsbCB0aGUgdmFsdWVzIGluIHRoZSByYW5nZS4gIFdlIGRvbid0Ci0gICAgICAgIC8vIGNhcmUgYWJvdXQgdGhpcyBiZWNhdXNlIHRoZSB1c2VyIGhhcyBhbHJlYWR5IHRvbGQgdXMgbm90IHRvIGJ5Ci0gICAgICAgIC8vIHVzaW5nIHVuaWZvcm1fc21hbGxpbnQuICBIb3dldmVyLCB3ZSBkbyBuZWVkIHRvIGJlIGNhcmVmdWwKLSAgICAgICAgLy8gdG8gY2xhbXAgdGhlIHJlc3VsdCwgb3IgZmxvYXRpbmcgcG9pbnQgcm91bmRpbmcgY2FuIHByb2R1Y2UKLSAgICAgICAgLy8gYW4gb3V0IG9mIHJhbmdlIHJlc3VsdC4KLSAgICAgICAgcmFuZ2VfdHlwZSBvZmZzZXQgPSBzdGF0aWNfY2FzdDxyYW5nZV90eXBlPih2YWwgKiAoc3RhdGljX2Nhc3Q8YmFzZV9yZXN1bHQ+KHJhbmdlKSArIDEpKTsKLSAgICAgICAgaWYob2Zmc2V0ID4gcmFuZ2UpIHJldHVybiBfbWF4OwotICAgICAgICByZXR1cm4gbmRuYm9vc3Q6OnJhbmRvbTo6ZGV0YWlsOjphZGQ8cmFuZ2VfdHlwZSwgcmVzdWx0X3R5cGU+KCkob2Zmc2V0ICwgX21pbik7Ci0gICAgfQotICAgIC8vIFxlbmRjb25kCi0KLSAgICByZXN1bHRfdHlwZSBfbWluOwotICAgIHJlc3VsdF90eXBlIF9tYXg7Ci19OwotCi19IC8vIG5hbWVzcGFjZSByYW5kb20KLQotdXNpbmcgcmFuZG9tOjp1bmlmb3JtX3NtYWxsaW50OwotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfUkFORE9NX1VOSUZPUk1fU01BTExJTlRfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2FsZ29yaXRobS9lcXVhbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2FsZ29yaXRobS9lcXVhbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcwOTEwMzUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9hbGdvcml0aG0vZXF1YWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTk4ICswLDAgQEAKLS8vIEJvb3N0LlJhbmdlIGxpYnJhcnkKLS8vCi0vLyAgQ29weXJpZ2h0IE5laWwgR3JvdmVzIDIwMDkuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZQotLy8gIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9yYW5nZS8KLS8vCi0jaWZuZGVmIE5ETkJPT1NUX1JBTkdFX0FMR09SSVRITV9FUVVBTF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfUkFOR0VfQUxHT1JJVEhNX0VRVUFMX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9jb25jZXB0cy5ocHA+Ci0jaW5jbHVkZSA8aXRlcmF0b3I+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotICAgIG5hbWVzcGFjZSByYW5nZV9kZXRhaWwKLSAgICB7Ci0gICAgICAgIC8vIEFuIGltcGxlbWVudGF0aW9uIG9mIGVxdWFsaXR5IGNvbXBhcmlzb24gdGhhdCBpcyBvcHRpbWl6ZWQgZm9yIGl0ZXJhdG9yCi0gICAgICAgIC8vIHRyYXZlcnNhbCBjYXRlZ29yaWVzIGxlc3MgdGhhbiBSYW5kb21BY2Nlc3NUcmF2ZXJzYWwuCi0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBTaW5nbGVQYXNzVHJhdmVyc2FsUmVhZGFibGVJdGVyYXRvcjEsCi0gICAgICAgICAgICAgICAgICBjbGFzcyBTaW5nbGVQYXNzVHJhdmVyc2FsUmVhZGFibGVJdGVyYXRvcjIsCi0gICAgICAgICAgICAgICAgICBjbGFzcyBJdGVyYXRvckNhdGVnb3J5VGFnMSwKLSAgICAgICAgICAgICAgICAgIGNsYXNzIEl0ZXJhdG9yQ2F0ZWdvcnlUYWcyID4KLSAgICAgICAgaW5saW5lIGJvb2wgZXF1YWxfaW1wbCggU2luZ2xlUGFzc1RyYXZlcnNhbFJlYWRhYmxlSXRlcmF0b3IxIGZpcnN0MSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2luZ2xlUGFzc1RyYXZlcnNhbFJlYWRhYmxlSXRlcmF0b3IxIGxhc3QxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaW5nbGVQYXNzVHJhdmVyc2FsUmVhZGFibGVJdGVyYXRvcjIgZmlyc3QyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaW5nbGVQYXNzVHJhdmVyc2FsUmVhZGFibGVJdGVyYXRvcjIgbGFzdDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdG9yQ2F0ZWdvcnlUYWcxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRvckNhdGVnb3J5VGFnMiApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHdoaWxlICh0cnVlKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIC8vIElmIHdlIGhhdmUgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBsZWZ0IHJhbmdlIHRoZW4gdGhpcyBpcwotICAgICAgICAgICAgICAgIC8vIHRoZSBlbmQgb2YgdGhlIGxvb3AuIFRoZXkgYXJlIGVxdWFsIGlmIGFuZCBvbmx5IGlmIHdlIGhhdmUKLSAgICAgICAgICAgICAgICAvLyBzaW11bHRhbmVvdXNseSByZWFjaGVkIHRoZSBlbmQgb2YgdGhlIHJpZ2h0IHJhbmdlLgotICAgICAgICAgICAgICAgIGlmIChmaXJzdDEgPT0gbGFzdDEpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmaXJzdDIgPT0gbGFzdDI7Ci0KLSAgICAgICAgICAgICAgICAvLyBJZiB3ZSBoYXZlIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgcmlnaHQgcmFuZ2UgYXQgdGhpcyBsaW5lCi0gICAgICAgICAgICAgICAgLy8gaXQgaW5kaWNhdGVzIHRoYXQgdGhlIHJpZ2h0IHJhbmdlIGlzIHNob3J0ZXIgdGhhbiB0aGUgbGVmdAotICAgICAgICAgICAgICAgIC8vIGFuZCBoZW5jZSB0aGUgcmVzdWx0IGlzIGZhbHNlLgotICAgICAgICAgICAgICAgIGlmIChmaXJzdDIgPT0gbGFzdDIpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICAgICAgICAgIC8vIGNvbnRpbnVlIGxvb3BpbmcgaWYgYW5kIG9ubHkgaWYgdGhlIHZhbHVlcyBhcmUgZXF1YWwKLSAgICAgICAgICAgICAgICBpZiAoKmZpcnN0MSAhPSAqZmlyc3QyKQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgICAgICAgICsrZmlyc3QxOwotICAgICAgICAgICAgICAgICsrZmlyc3QyOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBSZWFjaGluZyB0aGlzIGxpbmUgaW4gdGhlIGFsZ29yaXRobSBpbmRpY2F0ZXMgdGhhdCBhIHZhbHVlCi0gICAgICAgICAgICAvLyBpbmVxdWFsaXR5IGhhcyBiZWVuIGRldGVjdGVkLgotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFNpbmdsZVBhc3NUcmF2ZXJzYWxSZWFkYWJsZUl0ZXJhdG9yMSwKLSAgICAgICAgICAgICAgICAgIGNsYXNzIFNpbmdsZVBhc3NUcmF2ZXJzYWxSZWFkYWJsZUl0ZXJhdG9yMiwKLSAgICAgICAgICAgICAgICAgIGNsYXNzIEl0ZXJhdG9yQ2F0ZWdvcnlUYWcxLAotICAgICAgICAgICAgICAgICAgY2xhc3MgSXRlcmF0b3JDYXRlZ29yeVRhZzIsCi0gICAgICAgICAgICAgICAgICBjbGFzcyBCaW5hcnlQcmVkaWNhdGUgPgotICAgICAgICBpbmxpbmUgYm9vbCBlcXVhbF9pbXBsKCBTaW5nbGVQYXNzVHJhdmVyc2FsUmVhZGFibGVJdGVyYXRvcjEgZmlyc3QxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaW5nbGVQYXNzVHJhdmVyc2FsUmVhZGFibGVJdGVyYXRvcjEgbGFzdDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpbmdsZVBhc3NUcmF2ZXJzYWxSZWFkYWJsZUl0ZXJhdG9yMiBmaXJzdDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpbmdsZVBhc3NUcmF2ZXJzYWxSZWFkYWJsZUl0ZXJhdG9yMiBsYXN0MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmluYXJ5UHJlZGljYXRlICAgICAgICAgICAgICAgICAgICAgIHByZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdG9yQ2F0ZWdvcnlUYWcxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRvckNhdGVnb3J5VGFnMiApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHdoaWxlICh0cnVlKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIC8vIElmIHdlIGhhdmUgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBsZWZ0IHJhbmdlIHRoZW4gdGhpcyBpcwotICAgICAgICAgICAgICAgIC8vIHRoZSBlbmQgb2YgdGhlIGxvb3AuIFRoZXkgYXJlIGVxdWFsIGlmIGFuZCBvbmx5IGlmIHdlIGhhdmUKLSAgICAgICAgICAgICAgICAvLyBzaW11bHRhbmVvdXNseSByZWFjaGVkIHRoZSBlbmQgb2YgdGhlIHJpZ2h0IHJhbmdlLgotICAgICAgICAgICAgICAgIGlmIChmaXJzdDEgPT0gbGFzdDEpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmaXJzdDIgPT0gbGFzdDI7Ci0KLSAgICAgICAgICAgICAgICAvLyBJZiB3ZSBoYXZlIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgcmlnaHQgcmFuZ2UgYXQgdGhpcyBsaW5lCi0gICAgICAgICAgICAgICAgLy8gaXQgaW5kaWNhdGVzIHRoYXQgdGhlIHJpZ2h0IHJhbmdlIGlzIHNob3J0ZXIgdGhhbiB0aGUgbGVmdAotICAgICAgICAgICAgICAgIC8vIGFuZCBoZW5jZSB0aGUgcmVzdWx0IGlzIGZhbHNlLgotICAgICAgICAgICAgICAgIGlmIChmaXJzdDIgPT0gbGFzdDIpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICAgICAgICAgIC8vIGNvbnRpbnVlIGxvb3BpbmcgaWYgYW5kIG9ubHkgaWYgdGhlIHZhbHVlcyBhcmUgZXF1YWwKLSAgICAgICAgICAgICAgICBpZiAoIXByZWQoKmZpcnN0MSwgKmZpcnN0MikpCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICAgICAgKytmaXJzdDE7Ci0gICAgICAgICAgICAgICAgKytmaXJzdDI7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIFJlYWNoaW5nIHRoaXMgbGluZSBpbiB0aGUgYWxnb3JpdGhtIGluZGljYXRlcyB0aGF0IGEgdmFsdWUKLSAgICAgICAgICAgIC8vIGluZXF1YWxpdHkgaGFzIGJlZW4gZGV0ZWN0ZWQuCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBBbiBpbXBsZW1lbnRhdGlvbiBvZiBlcXVhbGl0eSBjb21wYXJpc29uIHRoYXQgaXMgb3B0aW1pemVkIGZvcgotICAgICAgICAvLyByYW5kb20gYWNjZXNzIGl0ZXJhdG9ycy4KLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFJhbmRvbUFjY2Vzc1RyYXZlcnNhbFJlYWRhYmxlSXRlcmF0b3IxLAotICAgICAgICAgICAgICAgICAgY2xhc3MgUmFuZG9tQWNjZXNzVHJhdmVyc2FsUmVhZGFibGVJdGVyYXRvcjIgPgotICAgICAgICBpbmxpbmUgYm9vbCBlcXVhbF9pbXBsKCBSYW5kb21BY2Nlc3NUcmF2ZXJzYWxSZWFkYWJsZUl0ZXJhdG9yMSBmaXJzdDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJhbmRvbUFjY2Vzc1RyYXZlcnNhbFJlYWRhYmxlSXRlcmF0b3IxIGxhc3QxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSYW5kb21BY2Nlc3NUcmF2ZXJzYWxSZWFkYWJsZUl0ZXJhdG9yMiBmaXJzdDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJhbmRvbUFjY2Vzc1RyYXZlcnNhbFJlYWRhYmxlSXRlcmF0b3IyIGxhc3QyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICgobGFzdDEgLSBmaXJzdDEpID09IChsYXN0MiAtIGZpcnN0MikpCi0gICAgICAgICAgICAgICAgJiYgc3RkOjplcXVhbChmaXJzdDEsIGxhc3QxLCBmaXJzdDIpOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFJhbmRvbUFjY2Vzc1RyYXZlcnNhbFJlYWRhYmxlSXRlcmF0b3IxLAotICAgICAgICAgICAgICAgICAgY2xhc3MgUmFuZG9tQWNjZXNzVHJhdmVyc2FsUmVhZGFibGVJdGVyYXRvcjIsCi0gICAgICAgICAgICAgICAgICBjbGFzcyBCaW5hcnlQcmVkaWNhdGUgPgotICAgICAgICBpbmxpbmUgYm9vbCBlcXVhbF9pbXBsKCBSYW5kb21BY2Nlc3NUcmF2ZXJzYWxSZWFkYWJsZUl0ZXJhdG9yMSBmaXJzdDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJhbmRvbUFjY2Vzc1RyYXZlcnNhbFJlYWRhYmxlSXRlcmF0b3IxIGxhc3QxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSYW5kb21BY2Nlc3NUcmF2ZXJzYWxSZWFkYWJsZUl0ZXJhdG9yMiBmaXJzdDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJhbmRvbUFjY2Vzc1RyYXZlcnNhbFJlYWRhYmxlSXRlcmF0b3IyIGxhc3QyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCaW5hcnlQcmVkaWNhdGUgICAgICAgICAgICAgICAgICAgICAgICBwcmVkICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICgobGFzdDEgLSBmaXJzdDEpID09IChsYXN0MiAtIGZpcnN0MikpCi0gICAgICAgICAgICAgICAgJiYgc3RkOjplcXVhbChmaXJzdDEsIGxhc3QxLCBmaXJzdDIsIHByZWQpOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFNpbmdsZVBhc3NUcmF2ZXJzYWxSZWFkYWJsZUl0ZXJhdG9yMSwKLSAgICAgICAgICAgICAgICAgIGNsYXNzIFNpbmdsZVBhc3NUcmF2ZXJzYWxSZWFkYWJsZUl0ZXJhdG9yMiA+Ci0gICAgICAgIGlubGluZSBib29sIGVxdWFsKCBTaW5nbGVQYXNzVHJhdmVyc2FsUmVhZGFibGVJdGVyYXRvcjEgZmlyc3QxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgU2luZ2xlUGFzc1RyYXZlcnNhbFJlYWRhYmxlSXRlcmF0b3IxIGxhc3QxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgU2luZ2xlUGFzc1RyYXZlcnNhbFJlYWRhYmxlSXRlcmF0b3IyIGZpcnN0MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpbmdsZVBhc3NUcmF2ZXJzYWxSZWFkYWJsZUl0ZXJhdG9yMiBsYXN0MiApCi0gICAgICAgIHsKLSAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgc3RkOjppdGVyYXRvcl90cmFpdHM8IFNpbmdsZVBhc3NUcmF2ZXJzYWxSZWFkYWJsZUl0ZXJhdG9yMSA+OjppdGVyYXRvcl9jYXRlZ29yeSB0YWcxOwotICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBzdGQ6Oml0ZXJhdG9yX3RyYWl0czwgU2luZ2xlUGFzc1RyYXZlcnNhbFJlYWRhYmxlSXRlcmF0b3IyID46Oml0ZXJhdG9yX2NhdGVnb3J5IHRhZzI7Ci0KLSAgICAgICAgICAgIHJldHVybiBlcXVhbF9pbXBsKGZpcnN0MSwgbGFzdDEsIGZpcnN0MiwgbGFzdDIsIHRhZzEsIHRhZzIpOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFNpbmdsZVBhc3NUcmF2ZXJzYWxSZWFkYWJsZUl0ZXJhdG9yMSwKLSAgICAgICAgICAgICAgICAgIGNsYXNzIFNpbmdsZVBhc3NUcmF2ZXJzYWxSZWFkYWJsZUl0ZXJhdG9yMiwKLSAgICAgICAgICAgICAgICAgIGNsYXNzIEJpbmFyeVByZWRpY2F0ZSA+Ci0gICAgICAgIGlubGluZSBib29sIGVxdWFsKCBTaW5nbGVQYXNzVHJhdmVyc2FsUmVhZGFibGVJdGVyYXRvcjEgZmlyc3QxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgU2luZ2xlUGFzc1RyYXZlcnNhbFJlYWRhYmxlSXRlcmF0b3IxIGxhc3QxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgU2luZ2xlUGFzc1RyYXZlcnNhbFJlYWRhYmxlSXRlcmF0b3IyIGZpcnN0MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpbmdsZVBhc3NUcmF2ZXJzYWxSZWFkYWJsZUl0ZXJhdG9yMiBsYXN0MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIEJpbmFyeVByZWRpY2F0ZSAgICAgICAgICAgICAgICAgICAgICBwcmVkICkKLSAgICAgICAgewotICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBzdGQ6Oml0ZXJhdG9yX3RyYWl0czwgU2luZ2xlUGFzc1RyYXZlcnNhbFJlYWRhYmxlSXRlcmF0b3IxID46Oml0ZXJhdG9yX2NhdGVnb3J5IHRhZzE7Ci0gICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHN0ZDo6aXRlcmF0b3JfdHJhaXRzPCBTaW5nbGVQYXNzVHJhdmVyc2FsUmVhZGFibGVJdGVyYXRvcjIgPjo6aXRlcmF0b3JfY2F0ZWdvcnkgdGFnMjsKLQotICAgICAgICAgICAgcmV0dXJuIGVxdWFsX2ltcGwoZmlyc3QxLCBsYXN0MSwgZmlyc3QyLCBsYXN0MiwgcHJlZCwgdGFnMSwgdGFnMik7Ci0gICAgICAgIH0KLQotICAgIH0gLy8gbmFtZXNwYWNlIHJhbmdlX2RldGFpbAotCi0gICAgbmFtZXNwYWNlIHJhbmdlCi0gICAgewotCi0gICAgICAgIC8vLyBcYnJpZWYgdGVtcGxhdGUgZnVuY3Rpb24gZXF1YWwKLSAgICAgICAgLy8vCi0gICAgICAgIC8vLyByYW5nZS1iYXNlZCB2ZXJzaW9uIG9mIHRoZSBlcXVhbCBzdGQgYWxnb3JpdGhtCi0gICAgICAgIC8vLwotICAgICAgICAvLy8gXHByZSBTaW5nbGVQYXNzUmFuZ2UxIGlzIGEgbW9kZWwgb2YgdGhlIFNpbmdsZVBhc3NSYW5nZUNvbmNlcHQKLSAgICAgICAgLy8vIFxwcmUgU2luZ2xlUGFzc1JhbmdlMiBpcyBhIG1vZGVsIG9mIHRoZSBTaW5nbGVQYXNzUmFuZ2VDb25jZXB0Ci0gICAgICAgIC8vLyBccHJlIEJpbmFyeVByZWRpY2F0ZSBpcyBhIG1vZGVsIG9mIHRoZSBCaW5hcnlQcmVkaWNhdGVDb25jZXB0Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBTaW5nbGVQYXNzUmFuZ2UxLCBjbGFzcyBTaW5nbGVQYXNzUmFuZ2UyID4KLSAgICAgICAgaW5saW5lIGJvb2wgZXF1YWwoIGNvbnN0IFNpbmdsZVBhc3NSYW5nZTEmIHJuZzEsIGNvbnN0IFNpbmdsZVBhc3NSYW5nZTImIHJuZzIgKQotICAgICAgICB7Ci0gICAgICAgICAgICBORE5CT09TVF9SQU5HRV9DT05DRVBUX0FTU0VSVCgoIFNpbmdsZVBhc3NSYW5nZUNvbmNlcHQ8Y29uc3QgU2luZ2xlUGFzc1JhbmdlMT4gKSk7Ci0gICAgICAgICAgICBORE5CT09TVF9SQU5HRV9DT05DRVBUX0FTU0VSVCgoIFNpbmdsZVBhc3NSYW5nZUNvbmNlcHQ8Y29uc3QgU2luZ2xlUGFzc1JhbmdlMj4gKSk7Ci0KLSAgICAgICAgICAgIHJldHVybiA6Om5kbmJvb3N0OjpyYW5nZV9kZXRhaWw6OmVxdWFsKAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmJlZ2luKHJuZzEpLCA6Om5kbmJvb3N0OjplbmQocm5nMSksCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YmVnaW4ocm5nMiksIDo6bmRuYm9vc3Q6OmVuZChybmcyKSApOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8vIFxvdmVybG9hZAotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgU2luZ2xlUGFzc1JhbmdlMSwgY2xhc3MgU2luZ2xlUGFzc1JhbmdlMiwgY2xhc3MgQmluYXJ5UHJlZGljYXRlID4KLSAgICAgICAgaW5saW5lIGJvb2wgZXF1YWwoIGNvbnN0IFNpbmdsZVBhc3NSYW5nZTEmIHJuZzEsIGNvbnN0IFNpbmdsZVBhc3NSYW5nZTImIHJuZzIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBCaW5hcnlQcmVkaWNhdGUgcHJlZCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIE5ETkJPT1NUX1JBTkdFX0NPTkNFUFRfQVNTRVJUKCggU2luZ2xlUGFzc1JhbmdlQ29uY2VwdDxjb25zdCBTaW5nbGVQYXNzUmFuZ2UxPiApKTsKLSAgICAgICAgICAgIE5ETkJPT1NUX1JBTkdFX0NPTkNFUFRfQVNTRVJUKCggU2luZ2xlUGFzc1JhbmdlQ29uY2VwdDxjb25zdCBTaW5nbGVQYXNzUmFuZ2UyPiApKTsKLQotICAgICAgICAgICAgcmV0dXJuIDo6bmRuYm9vc3Q6OnJhbmdlX2RldGFpbDo6ZXF1YWwoCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6YmVnaW4ocm5nMSksIDo6bmRuYm9vc3Q6OmVuZChybmcxKSwKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjpiZWdpbihybmcyKSwgOjpuZG5ib29zdDo6ZW5kKHJuZzIpLAotICAgICAgICAgICAgICAgIHByZWQpOwotICAgICAgICB9Ci0KLSAgICB9IC8vIG5hbWVzcGFjZSByYW5nZQotICAgIHVzaW5nIDo6bmRuYm9vc3Q6OnJhbmdlOjplcXVhbDsKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBpbmNsdWRlIGd1YXJkCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2FzX2xpdGVyYWwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9hc19saXRlcmFsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTk3ZWQyZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2FzX2xpdGVyYWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTI3ICswLDAgQEAKLS8vIEJvb3N0LlJhbmdlIGxpYnJhcnkKLS8vCi0vLyAgQ29weXJpZ2h0IFRob3JzdGVuIE90dG9zZW4gMjAwNi4gVXNlLCBtb2RpZmljYXRpb24gYW5kCi0vLyAgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24KLS8vICAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3JhbmdlLwotLy8KLQotI2lmbmRlZiBORE5CT09TVF9SQU5HRV9BU19MSVRFUkFMX0hQUAotI2RlZmluZSBORE5CT09TVF9SQU5HRV9BU19MSVRFUkFMX0hQUAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEyMDApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RFTVBMQVRFX09SREVSSU5HCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvZGV0YWlsL2FzX2xpdGVyYWwuaHBwPgotI2Vsc2UKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2l0ZXJhdG9yX3JhbmdlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9kZXRhaWwvc3RyX3R5cGVzLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLQotI2luY2x1ZGUgPGNzdHJpbmc+Ci0jaWZuZGVmIE5ETkJPT1NUX05PX0NXQ0hBUgotI2luY2x1ZGUgPGN3Y2hhcj4KLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLSAgICBuYW1lc3BhY2UgcmFuZ2VfZGV0YWlsCi0gICAgewotICAgICAgICBpbmxpbmUgc3RkOjpzaXplX3QgbGVuZ3RoKCBjb25zdCBjaGFyKiBzICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHN0cmxlbiggcyApOwotICAgICAgICB9Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1dDSEFSCi0gICAgICAgIGlubGluZSBzdGQ6OnNpemVfdCBsZW5ndGgoIGNvbnN0IHdjaGFyX3QqIHMgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gd2NzbGVuKCBzICk7Ci0gICAgICAgIH0KLSNlbmRpZgotCi0gICAgICAgIC8vCi0gICAgICAgIC8vIFJlbWFyazogdGhlIGNvbXBpbGVyIGNhbm5vdCBjaG9vc2UgYmV0d2VlbiBUKiBhbmQgVFtzel0KLSAgICAgICAgLy8gb3ZlcmxvYWRzLCBzbyB3ZSBtdXN0IHB1dCB0aGUgVCogaW50ZXJuYWwgdG8gdGhlCi0gICAgICAgIC8vIHVuY29uc3RyYWluZWQgdmVyc2lvbi4KLSAgICAgICAgLy8KLQotICAgICAgICBpbmxpbmUgYm9vbCBpc19jaGFyX3B0ciggY2hhciogKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIGlubGluZSBib29sIGlzX2NoYXJfcHRyKCBjb25zdCBjaGFyKiApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1dDSEFSCi0gICAgICAgIGlubGluZSBib29sIGlzX2NoYXJfcHRyKCB3Y2hhcl90KiApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgaW5saW5lIGJvb2wgaXNfY2hhcl9wdHIoIGNvbnN0IHdjaGFyX3QqICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSNlbmRpZgotCi0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBUID4KLSAgICAgICAgaW5saW5lIGxvbmcgaXNfY2hhcl9wdHIoIGNvbnN0IFQmIC8qIHIgKi8gKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gMEw7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgVCA+Ci0gICAgICAgIGlubGluZSBpdGVyYXRvcl9yYW5nZTxUKj4KLSAgICAgICAgbWFrZV9yYW5nZSggVCogY29uc3QgciwgYm9vbCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcl9yYW5nZTxUKj4oIHIsIHIgKyBsZW5ndGgocikgKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBUID4KLSAgICAgICAgaW5saW5lIGl0ZXJhdG9yX3JhbmdlPE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfaXRlcmF0b3I8VD46OnR5cGU+Ci0gICAgICAgIG1ha2VfcmFuZ2UoIFQmIHIsIGxvbmcgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmRuYm9vc3Q6Om1ha2VfaXRlcmF0b3JfcmFuZ2UoIHIgKTsKLSAgICAgICAgfQotCi0gICAgfQotCi0gICAgdGVtcGxhdGU8IGNsYXNzIFJhbmdlID4KLSAgICBpbmxpbmUgaXRlcmF0b3JfcmFuZ2U8TkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9pdGVyYXRvcjxSYW5nZT46OnR5cGU+Ci0gICAgYXNfbGl0ZXJhbCggUmFuZ2UmIHIgKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHJhbmdlX2RldGFpbDo6bWFrZV9yYW5nZSggciwgcmFuZ2VfZGV0YWlsOjppc19jaGFyX3B0cihyKSApOwotICAgIH0KLQotICAgIHRlbXBsYXRlPCBjbGFzcyBSYW5nZSA+Ci0gICAgaW5saW5lIGl0ZXJhdG9yX3JhbmdlPE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfaXRlcmF0b3I8Y29uc3QgUmFuZ2U+Ojp0eXBlPgotICAgIGFzX2xpdGVyYWwoIGNvbnN0IFJhbmdlJiByICkKLSAgICB7Ci0gICAgICAgIHJldHVybiByYW5nZV9kZXRhaWw6Om1ha2VfcmFuZ2UoIHIsIHJhbmdlX2RldGFpbDo6aXNfY2hhcl9wdHIocikgKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTwgY2xhc3MgQ2hhciwgc3RkOjpzaXplX3Qgc3ogPgotICAgIGlubGluZSBpdGVyYXRvcl9yYW5nZTxDaGFyKj4gYXNfbGl0ZXJhbCggQ2hhciAoJmFycilbc3pdICkKLSAgICB7Ci0gICAgICAgIHJldHVybiByYW5nZV9kZXRhaWw6Om1ha2VfcmFuZ2UoIGFyciwgcmFuZ2VfZGV0YWlsOjppc19jaGFyX3B0cihhcnIpICk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8IGNsYXNzIENoYXIsIHN0ZDo6c2l6ZV90IHN6ID4KLSAgICBpbmxpbmUgaXRlcmF0b3JfcmFuZ2U8Y29uc3QgQ2hhcio+IGFzX2xpdGVyYWwoIGNvbnN0IENoYXIgKCZhcnIpW3N6XSApCi0gICAgewotICAgICAgICByZXR1cm4gcmFuZ2VfZGV0YWlsOjptYWtlX3JhbmdlKCBhcnIsIHJhbmdlX2RldGFpbDo6aXNfY2hhcl9wdHIoYXJyKSApOwotICAgIH0KLX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RFTVBMQVRFX09SREVSSU5HCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9iZWdpbi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2JlZ2luLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTAwMWYzNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2JlZ2luLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0MyArMCwwIEBACi0vLyBCb29zdC5SYW5nZSBsaWJyYXJ5Ci0vLwotLy8gIENvcHlyaWdodCBUaG9yc3RlbiBPdHRvc2VuIDIwMDMtMjAwNC4gVXNlLCBtb2RpZmljYXRpb24gYW5kCi0vLyAgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24KLS8vICAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3JhbmdlLwotLy8KLQotI2lmbmRlZiBORE5CT09TVF9SQU5HRV9CRUdJTl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkFOR0VfQkVHSU5fSFBQCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTIwMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvY29uZmlnLmhwcD4KLQotI2lmZGVmIE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RFTVBMQVRFX09SREVSSU5HCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvZGV0YWlsL2JlZ2luLmhwcD4KLSNlbHNlCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9pdGVyYXRvci5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1NjQpKSAmJiBcCi0gICAgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19HTlVDX18sIDwgMykgXAotICAgIC8qKi8KLW5hbWVzcGFjZSByYW5nZV9kZXRhaWwKLXsKLSNlbmRpZgotCi0gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgIC8vIHByaW1hcnkgdGVtcGxhdGUKLSAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgQyA+Ci0gICAgaW5saW5lIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfaXRlcmF0b3I8Qz46OnR5cGUKLSAgICByYW5nZV9iZWdpbiggQyYgYyApCi0gICAgewotICAgICAgICAvLwotICAgICAgICAvLyBJZiB5b3UgZ2V0IGEgY29tcGlsZS1lcnJvciBoZXJlLCBpdCBpcyBtb3N0IGxpa2VseSBiZWNhdXNlCi0gICAgICAgIC8vIHlvdSBoYXZlIG5vdCBpbXBsZW1lbnRlZCByYW5nZV9iZWdpbigpIHByb3Blcmx5IGluCi0gICAgICAgIC8vIHRoZSBuYW1lc3BhY2Ugb2YgQwotICAgICAgICAvLwotICAgICAgICByZXR1cm4gYy5iZWdpbigpOwotICAgIH0KLQotICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAvLyBwYWlyCi0gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4KLSAgICBpbmxpbmUgSXRlcmF0b3IgcmFuZ2VfYmVnaW4oIGNvbnN0IHN0ZDo6cGFpcjxJdGVyYXRvcixJdGVyYXRvcj4mIHAgKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHAuZmlyc3Q7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yID4KLSAgICBpbmxpbmUgSXRlcmF0b3IgcmFuZ2VfYmVnaW4oIHN0ZDo6cGFpcjxJdGVyYXRvcixJdGVyYXRvcj4mIHAgKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHAuZmlyc3Q7Ci0gICAgfQotCi0gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgIC8vIGFycmF5Ci0gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0gICAgLy8KLSAgICAvLyBNYXkgdGhpcyBiZSBkaXNjYXJkZWQ/IE9yIGlzIGl0IG5lZWRlZCBmb3IgYmFkIGNvbXBpbGVycz8KLSAgICAvLwotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBULCBzdGQ6OnNpemVfdCBzeiA+Ci0gICAgaW5saW5lIGNvbnN0IFQqIHJhbmdlX2JlZ2luKCBjb25zdCBUICgmYSlbc3pdICkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhOwotICAgIH0KLQotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBULCBzdGQ6OnNpemVfdCBzeiA+Ci0gICAgaW5saW5lIFQqIHJhbmdlX2JlZ2luKCBUICgmYSlbc3pdICkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhOwotICAgIH0KLQotCi0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1NjQpKSAmJiBcCi0gICAgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19HTlVDX18sIDwgMykgXAotICAgIC8qKi8KLX0gLy8gbmFtZXNwYWNlICdyYW5nZV9kZXRhaWwnCi0jZW5kaWYKLQotLy8gVXNlIGEgQURMIG5hbWVzcGFjZSBiYXJyaWVyIHRvIGF2b2lkIGFtYmlndWl0eSB3aXRoIG90aGVyIHVucXVhbGlmaWVkCi0vLyBjYWxscy4gVGhpcyBpcyBwYXJ0aWN1bGFybHkgaW1wb3J0YW50IHdpdGggQysrMHggZW5jb3VyYWdpbmcKLS8vIHVucXVhbGlmaWVkIGNhbGxzIHRvIGJlZ2luL2VuZC4KLW5hbWVzcGFjZSByYW5nZV9hZGxfYmFycmllcgotewotCi10ZW1wbGF0ZTwgY2xhc3MgVCA+Ci1pbmxpbmUgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9pdGVyYXRvcjxUPjo6dHlwZSBiZWdpbiggVCYgciApCi17Ci0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1NjQpKSAmJiBcCi0gICAgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19HTlVDX18sIDwgMykgXAotICAgIC8qKi8KLSAgICB1c2luZyBuYW1lc3BhY2UgcmFuZ2VfZGV0YWlsOwotI2VuZGlmCi0gICAgcmV0dXJuIHJhbmdlX2JlZ2luKCByICk7Ci19Ci0KLXRlbXBsYXRlPCBjbGFzcyBUID4KLWlubGluZSBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX2l0ZXJhdG9yPGNvbnN0IFQ+Ojp0eXBlIGJlZ2luKCBjb25zdCBUJiByICkKLXsKLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU2NCkpICYmIFwKLSAgICAhTkROQk9PU1RfV09SS0FST1VORChfX0dOVUNfXywgPCAzKSBcCi0gICAgLyoqLwotICAgIHVzaW5nIG5hbWVzcGFjZSByYW5nZV9kZXRhaWw7Ci0jZW5kaWYKLSAgICByZXR1cm4gcmFuZ2VfYmVnaW4oIHIgKTsKLX0KLQotICAgIH0gLy8gbmFtZXNwYWNlIHJhbmdlX2FkbF9iYXJyaWVyCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcKLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0gICAgbmFtZXNwYWNlIHJhbmdlX2FkbF9iYXJyaWVyCi0gICAgewotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgVCA+Ci0gICAgICAgIGlubGluZSBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX2l0ZXJhdG9yPGNvbnN0IFQ+Ojp0eXBlCi0gICAgICAgIGNvbnN0X2JlZ2luKCBjb25zdCBUJiByICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjpyYW5nZV9hZGxfYmFycmllcjo6YmVnaW4oIHIgKTsKLSAgICAgICAgfQotICAgIH0gLy8gbmFtZXNwYWNlIHJhbmdlX2FkbF9iYXJyaWVyCi0KLSAgICB1c2luZyBuYW1lc3BhY2UgcmFuZ2VfYWRsX2JhcnJpZXI7Ci19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9jb25jZXB0cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2NvbmNlcHRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzk5MGMxNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2NvbmNlcHRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM2NiArMCwwIEBACi0vLyBCb29zdC5SYW5nZSBsaWJyYXJ5IGNvbmNlcHQgY2hlY2tzCi0vLwotLy8gIENvcHlyaWdodCBOZWlsIEdyb3ZlcyAyMDA5LiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uCi0vLyAgYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gIENvcHlyaWdodCBEYW5pZWwgV2Fsa2VyIDIwMDYuIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24KLS8vICBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvcmFuZ2UvCi0vLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JBTkdFX0NPTkNFUFRTX0hQUAotI2RlZmluZSBORE5CT09TVF9SQU5HRV9DT05DRVBUU19IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmNlcHRfY2hlY2suaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2l0ZXJhdG9yL2l0ZXJhdG9yX2NvbmNlcHRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9iZWdpbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvZW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9pdGVyYXRvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvdmFsdWVfdHlwZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvZGV0YWlsL21pc2NfY29uY2VwdC5ocHA+Ci0KLS8qIQotICogXGZpbGUKLSAqIFxicmllZiBDb25jZXB0IGNoZWNrcyBmb3IgdGhlIEJvb3N0IFJhbmdlIGxpYnJhcnkuCi0gKgotICogVGhlIHN0cnVjdHVyZXMgaW4gdGhpcyBmaWxlIG1heSBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlCi0gKiBCb29zdCBDb25jZXB0IENoZWNrIGxpYnJhcnkgdG8gaW5zdXJlIHRoYXQgdGhlIHR5cGUgb2YgYSBmdW5jdGlvbgotICogcGFyYW1ldGVyIGlzIGNvbXBhdGlibGUgd2l0aCBhIHJhbmdlIGNvbmNlcHQuIElmIG5vdCwgYSBtZWFuaW5nZnVsCi0gKiBjb21waWxlIHRpbWUgZXJyb3IgaXMgZ2VuZXJhdGVkLiBDaGVja3MgYXJlIHByb3ZpZGVkIGZvciB0aGUgcmFuZ2UKLSAqIGNvbmNlcHRzIHJlbGF0ZWQgdG8gaXRlcmF0b3IgdHJhdmVyc2FsIGNhdGVnb3JpZXMuIEZvciBleGFtcGxlLCB0aGUKLSAqIGZvbGxvd2luZyBsaW5lIGNoZWNrcyB0aGF0IHRoZSB0eXBlIFQgbW9kZWxzIHRoZSBGb3J3YXJkUmFuZ2UKLSAqIGNvbmNlcHQuCi0gKgotICogXGNvZGUKLSAqIE5ETkJPT1NUX0NPTkNFUFRfQVNTRVJUKChGb3J3YXJkUmFuZ2VDb25jZXB0PFQ+KSk7Ci0gKiBcZW5kY29kZQotICoKLSAqIEEgZGlmZmVyZW50IGNvbmNlcHQgY2hlY2sgaXMgcmVxdWlyZWQgdG8gZW5zdXJlIHdyaXRlYWJsZSB2YWx1ZQotICogYWNjZXNzLiBGb3IgZXhhbXBsZSB0byBjaGVjayBmb3IgYSBGb3J3YXJkUmFuZ2UgdGhhdCBjYW4gYmUgd3JpdHRlbgotICogdG8sIHRoZSBmb2xsb3dpbmcgY29kZSBpcyByZXF1aXJlZC4KLSAqCi0gKiBcY29kZQotICogTkROQk9PU1RfQ09OQ0VQVF9BU1NFUlQoKFdyaXRlYWJsZUZvcndhcmRSYW5nZUNvbmNlcHQ8VD4pKTsKLSAqIFxlbmRjb2RlCi0gKgotICogXHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3JhbmdlL2RvYy9yYW5nZS5odG1sIGZvciBkZXRhaWxzCi0gKiBhYm91dCByYW5nZSBjb25jZXB0cy4KLSAqIFxzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9pdGVyYXRvci9kb2MvaXRlcmF0b3JfY29uY2VwdHMuaHRtbAotICogZm9yIGRldGFpbHMgYWJvdXQgaXRlcmF0b3IgY29uY2VwdHMuCi0gKiBcc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvY29uY2VwdF9jaGVjay9jb25jZXB0X2NoZWNrLmh0bSBmb3IKLSAqIGRldGFpbHMgYWJvdXQgY29uY2VwdCBjaGVja3MuCi0gKi8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotICAgIG5hbWVzcGFjZSByYW5nZV9kZXRhaWwgewotCi0jaWZuZGVmIE5ETkJPT1NUX1JBTkdFX0VOQUJMRV9DT05DRVBUX0FTU0VSVAotCi0vLyBMaXN0IGJyb2tlbiBjb21waWxlciB2ZXJzaW9ucyBoZXJlOgotICAgICNpZmRlZiBfX0dOVUNfXwotICAgICAgICAvLyBHTlVDIDQuMiBoYXMgc3RyYW5nZSBpc3N1ZXMgY29ycmVjdGx5IGRldGVjdGluZyBjb21wbGlhbmNlIHdpdGggdGhlIENvbmNlcHRzCi0gICAgICAgIC8vIGhlbmNlIHRoZSBsZWFzdCBkaXNydXB0aXZlIGFwcHJvYWNoIGlzIHRvIHR1cm4tb2ZmIHRoZSBjb25jZXB0IGNoZWNraW5nIGZvcgotICAgICAgICAvLyB0aGlzIHZlcnNpb24gb2YgdGhlIGNvbXBpbGVyLgotICAgICAgICAjaWYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA9PSAyCi0gICAgICAgICAgICAjZGVmaW5lIE5ETkJPT1NUX1JBTkdFX0VOQUJMRV9DT05DRVBUX0FTU0VSVCAwCi0gICAgICAgICNlbmRpZgotICAgICNlbmRpZgotCi0gICAgI2lmZGVmIF9fQk9STEFORENfXwotICAgICAgICAjZGVmaW5lIE5ETkJPT1NUX1JBTkdFX0VOQUJMRV9DT05DRVBUX0FTU0VSVCAwCi0gICAgI2VuZGlmCi0KLSAgICAjaWZkZWYgX19QQVRIQ0NfXwotICAgICAgICAjZGVmaW5lIE5ETkJPT1NUX1JBTkdFX0VOQUJMRV9DT05DRVBUX0FTU0VSVCAwCi0gICAgI2VuZGlmCi0KLS8vIERlZmF1bHQgdG8gdXNpbmcgdGhlIGNvbmNlcHQgYXNzZXJ0cyB1bmxlc3Mgd2UgaGF2ZSBkZWZpbmVkIGl0IG9mZgotLy8gZHVyaW5nIHRoZSBzZWFyY2ggZm9yIGJsYWNrIGxpc3RlZCBjb21waWxlcnMuCi0gICAgI2lmbmRlZiBORE5CT09TVF9SQU5HRV9FTkFCTEVfQ09OQ0VQVF9BU1NFUlQKLSAgICAgICAgI2RlZmluZSBORE5CT09TVF9SQU5HRV9FTkFCTEVfQ09OQ0VQVF9BU1NFUlQgMQotICAgICNlbmRpZgotCi0jZW5kaWYKLQotI2lmIE5ETkJPT1NUX1JBTkdFX0VOQUJMRV9DT05DRVBUX0FTU0VSVAotICAgICNkZWZpbmUgTkROQk9PU1RfUkFOR0VfQ09OQ0VQVF9BU1NFUlQoIHggKSBORE5CT09TVF9DT05DRVBUX0FTU0VSVCggeCApCi0jZWxzZQotICAgICNkZWZpbmUgTkROQk9PU1RfUkFOR0VfQ09OQ0VQVF9BU1NFUlQoIHggKQotI2VuZGlmCi0KLSAgICAgICAgLy8gUmF0aW9uYWxlIGZvciB0aGUgaW5jbHVzaW9uIG9mIHJlZGVmaW5lZCBpdGVyYXRvciBjb25jZXB0Ci0gICAgICAgIC8vIGNsYXNzZXM6Ci0gICAgICAgIC8vCi0gICAgICAgIC8vIFRoZSBSYW5nZSBhbGdvcml0aG1zIG9mdGVuIGRvIG5vdCByZXF1aXJlIHRoYXQgdGhlIGl0ZXJhdG9ycyBhcmUKLSAgICAgICAgLy8gQXNzaWduYWJsZSBvciBkZWZhdWx0IGNvbnN0cnVjdGFibGUsIGJ1dCB0aGUgY29ycmVjdCBzdGFuZGFyZAotICAgICAgICAvLyBjb25mb3JtYW50IGl0ZXJhdG9ycyBkbyByZXF1aXJlIHRoZSBpdGVyYXRvcnMgdG8gYmUgYSBtb2RlbCBvZiB0aGUKLSAgICAgICAgLy8gQXNzaWduYWJsZSBjb25jZXB0LgotICAgICAgICAvLyBJdGVyYXRvcnMgdGhhdCBjb250YWlucyBhIGZ1bmN0b3IgdGhhdCBpcyBub3QgYXNzaWduYWJsZSB0aGVyZWZvcmUKLSAgICAgICAgLy8gYXJlIG5vdCBjb3JyZWN0IG1vZGVscyBvZiB0aGUgc3RhbmRhcmQgaXRlcmF0b3IgY29uY2VwdHMsCi0gICAgICAgIC8vIGRlc3BpdGUgYmVpbmcgYWRlcXVhdGUgZm9yIG1vc3QgYWxnb3JpdGhtcy4gQW4gZXhhbXBsZSBvZiB0aGlzCi0gICAgICAgIC8vIHVzZSBjYXNlIGlzIHRoZSBjb21iaW5hdGlvbiBvZiB0aGUgbmRuYm9vc3Q6OmFkYXB0b3JzOjpmaWx0ZXJlZAotICAgICAgICAvLyBjbGFzcyB3aXRoIGEgbmRuYm9vc3Q6OmxhbWJkYTo6YmluZCBnZW5lcmF0ZWQgZnVuY3Rvci4KLSAgICAgICAgLy8gVWx0aW1hdGVseSBtb2RlbGluZyB0aGUgcmFuZ2UgY29uY2VwdHMgdXNpbmcgY29tcG9zaXRpb24KLSAgICAgICAgLy8gd2l0aCB0aGUgQm9vc3QuSXRlcmF0b3IgY29uY2VwdHMgd291bGQgcmVuZGVyIHRoZSBsaWJyYXJ5Ci0gICAgICAgIC8vIGluY29tcGF0aWJsZSB3aXRoIG1hbnkgY29tbW9uIEJvb3N0LkxhbWJkYSBleHByZXNzaW9ucy4KLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgSXRlcmF0b3I+Ci0gICAgICAgIHN0cnVjdCBJbmNyZW1lbnRhYmxlSXRlcmF0b3JDb25jZXB0IDogQ29weUNvbnN0cnVjdGlibGU8SXRlcmF0b3I+Ci0gICAgICAgIHsKLSNpZiBORE5CT09TVF9SQU5HRV9FTkFCTEVfQ09OQ0VQVF9BU1NFUlQKLSAgICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBpdGVyYXRvcl90cmF2ZXJzYWw8SXRlcmF0b3I+Ojp0eXBlIHRyYXZlcnNhbF9jYXRlZ29yeTsKLQotICAgICAgICAgICAgTkROQk9PU1RfUkFOR0VfQ09OQ0VQVF9BU1NFUlQoKAotICAgICAgICAgICAgICAgIENvbnZlcnRpYmxlPAotICAgICAgICAgICAgICAgICAgICB0cmF2ZXJzYWxfY2F0ZWdvcnksCi0gICAgICAgICAgICAgICAgICAgIGluY3JlbWVudGFibGVfdHJhdmVyc2FsX3RhZwotICAgICAgICAgICAgICAgID4pKTsKLQotICAgICAgICAgICAgTkROQk9PU1RfQ09OQ0VQVF9VU0FHRShJbmNyZW1lbnRhYmxlSXRlcmF0b3JDb25jZXB0KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICsraTsKLSAgICAgICAgICAgICAgICAodm9pZClpKys7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIHByaXZhdGU6Ci0gICAgICAgICAgICBJdGVyYXRvciBpOwotI2VuZGlmCi0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgSXRlcmF0b3I+Ci0gICAgICAgIHN0cnVjdCBTaW5nbGVQYXNzSXRlcmF0b3JDb25jZXB0Ci0gICAgICAgICAgICA6IEluY3JlbWVudGFibGVJdGVyYXRvckNvbmNlcHQ8SXRlcmF0b3I+Ci0gICAgICAgICAgICAsIEVxdWFsaXR5Q29tcGFyYWJsZTxJdGVyYXRvcj4KLSAgICAgICAgewotI2lmIE5ETkJPT1NUX1JBTkdFX0VOQUJMRV9DT05DRVBUX0FTU0VSVAotICAgICAgICAgICAgTkROQk9PU1RfUkFOR0VfQ09OQ0VQVF9BU1NFUlQoKAotICAgICAgICAgICAgICAgIENvbnZlcnRpYmxlPAotICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIFNpbmdsZVBhc3NJdGVyYXRvckNvbmNlcHQ6OnRyYXZlcnNhbF9jYXRlZ29yeSwKLSAgICAgICAgICAgICAgICAgICAgc2luZ2xlX3Bhc3NfdHJhdmVyc2FsX3RhZwotICAgICAgICAgICAgICAgID4pKTsKLQotICAgICAgICAgICAgTkROQk9PU1RfQ09OQ0VQVF9VU0FHRShTaW5nbGVQYXNzSXRlcmF0b3JDb25jZXB0KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIEl0ZXJhdG9yIGkyKCsraSk7Ci0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6Omlnbm9yZV91bnVzZWRfdmFyaWFibGVfd2FybmluZyhpMik7Ci0KLSAgICAgICAgICAgICAgICAvLyBkZWxpYmVyYXRlbHkgd2UgYXJlIGxvb3NlIHdpdGggdGhlIHBvc3RmaXggdmVyc2lvbiBmb3IgdGhlIHNpbmdsZSBwYXNzCi0gICAgICAgICAgICAgICAgLy8gaXRlcmF0b3IgZHVlIHRvIHRoZSBjb21tb25seSBwb29yIGFkaGVyZW5jZSB0byB0aGUgc3BlY2lmaWNhdGlvbiBtZWFucyB0aGF0Ci0gICAgICAgICAgICAgICAgLy8gbWFueSBhbGdvcml0aG1zIHdvdWxkIGJlIHVudXNhYmxlLCB3aGVyZWFzIGFjdHVhbGx5IHdpdGhvdXQgdGhlIGNoZWNrIHRoZXkKLSAgICAgICAgICAgICAgICAvLyB3b3JrCi0gICAgICAgICAgICAgICAgKHZvaWQpKGkrKyk7Ci0KLSAgICAgICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIG5kbmJvb3N0OjpkZXRhaWw6Oml0ZXJhdG9yX3RyYWl0czxJdGVyYXRvcj46OnJlZmVyZW5jZSByMSgqaSk7Ci0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6Omlnbm9yZV91bnVzZWRfdmFyaWFibGVfd2FybmluZyhyMSk7Ci0KLSAgICAgICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIG5kbmJvb3N0OjpkZXRhaWw6Oml0ZXJhdG9yX3RyYWl0czxJdGVyYXRvcj46OnJlZmVyZW5jZSByMigqKCsraSkpOwotICAgICAgICAgICAgICAgIG5kbmJvb3N0OjppZ25vcmVfdW51c2VkX3ZhcmlhYmxlX3dhcm5pbmcocjIpOwotICAgICAgICAgICAgfQotICAgICAgICBwcml2YXRlOgotICAgICAgICAgICAgSXRlcmF0b3IgaTsKLSNlbmRpZgotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlPGNsYXNzIEl0ZXJhdG9yPgotICAgICAgICBzdHJ1Y3QgRm9yd2FyZEl0ZXJhdG9yQ29uY2VwdAotICAgICAgICAgICAgOiBTaW5nbGVQYXNzSXRlcmF0b3JDb25jZXB0PEl0ZXJhdG9yPgotICAgICAgICAgICAgLCBEZWZhdWx0Q29uc3RydWN0aWJsZTxJdGVyYXRvcj4KLSAgICAgICAgewotI2lmIE5ETkJPT1NUX1JBTkdFX0VOQUJMRV9DT05DRVBUX0FTU0VSVAotICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIG5kbmJvb3N0OjpkZXRhaWw6Oml0ZXJhdG9yX3RyYWl0czxJdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZSBkaWZmZXJlbmNlX3R5cGU7Ci0KLSAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BU1NFUlQoKGlzX2ludGVncmFsPGRpZmZlcmVuY2VfdHlwZT4pKTsKLSAgICAgICAgICAgIE5ETkJPT1NUX01QTF9BU1NFUlRfUkVMQVRJT04oc3RkOjpudW1lcmljX2xpbWl0czxkaWZmZXJlbmNlX3R5cGU+Ojppc19zaWduZWQsID09LCB0cnVlKTsKLQotICAgICAgICAgICAgTkROQk9PU1RfUkFOR0VfQ09OQ0VQVF9BU1NFUlQoKAotICAgICAgICAgICAgICAgIENvbnZlcnRpYmxlPAotICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIEZvcndhcmRJdGVyYXRvckNvbmNlcHQ6OnRyYXZlcnNhbF9jYXRlZ29yeSwKLSAgICAgICAgICAgICAgICAgICAgZm9yd2FyZF90cmF2ZXJzYWxfdGFnCi0gICAgICAgICAgICAgICAgPikpOwotCi0gICAgICAgICAgICBORE5CT09TVF9DT05DRVBUX1VTQUdFKEZvcndhcmRJdGVyYXRvckNvbmNlcHQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgLy8gU2VlIHRoZSBhYm92ZSBub3RlIGluIHRoZSBTaW5nbGVQYXNzSXRlcmF0b3JDb25jZXB0IGFib3V0IHRoZSBoYW5kbGluZyBvZiB0aGUKLSAgICAgICAgICAgICAgICAvLyBwb3N0Zml4IGluY3JlbWVudC4gU2luY2Ugd2l0aCBmb3J3YXJkIGFuZCBiZXR0ZXIgaXRlcmF0b3JzIHRoZXJlIGlzIG5vIG5lZWQKLSAgICAgICAgICAgICAgICAvLyBmb3IgYSBwcm94eSwgd2UgY2FuIHNlbnNpYmx5IHJlcXVpcmUgdGhhdCB0aGUgZGVyZWZlcmVuY2UgcmVzdWx0Ci0gICAgICAgICAgICAgICAgLy8gaXMgY29udmVydGlibGUgdG8gcmVmZXJlbmNlLgotICAgICAgICAgICAgICAgIEl0ZXJhdG9yIGkyKGkrKyk7Ci0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6Omlnbm9yZV91bnVzZWRfdmFyaWFibGVfd2FybmluZyhpMik7Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBuZG5ib29zdDo6ZGV0YWlsOjppdGVyYXRvcl90cmFpdHM8SXRlcmF0b3I+OjpyZWZlcmVuY2UgcigqKGkrKykpOwotICAgICAgICAgICAgICAgIG5kbmJvb3N0OjppZ25vcmVfdW51c2VkX3ZhcmlhYmxlX3dhcm5pbmcocik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIHByaXZhdGU6Ci0gICAgICAgICAgICBJdGVyYXRvciBpOwotI2VuZGlmCi0gICAgICAgICB9OwotCi0gICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBJdGVyYXRvcj4KLSAgICAgICAgIHN0cnVjdCBCaWRpcmVjdGlvbmFsSXRlcmF0b3JDb25jZXB0Ci0gICAgICAgICAgICAgOiBGb3J3YXJkSXRlcmF0b3JDb25jZXB0PEl0ZXJhdG9yPgotICAgICAgICAgewotICNpZiBORE5CT09TVF9SQU5HRV9FTkFCTEVfQ09OQ0VQVF9BU1NFUlQKLSAgICAgICAgICAgICBORE5CT09TVF9SQU5HRV9DT05DRVBUX0FTU0VSVCgoCi0gICAgICAgICAgICAgICAgIENvbnZlcnRpYmxlPAotICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBCaWRpcmVjdGlvbmFsSXRlcmF0b3JDb25jZXB0Ojp0cmF2ZXJzYWxfY2F0ZWdvcnksCi0gICAgICAgICAgICAgICAgICAgICBiaWRpcmVjdGlvbmFsX3RyYXZlcnNhbF90YWcKLSAgICAgICAgICAgICAgICAgPikpOwotCi0gICAgICAgICAgICAgTkROQk9PU1RfQ09OQ0VQVF9VU0FHRShCaWRpcmVjdGlvbmFsSXRlcmF0b3JDb25jZXB0KQotICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLS1pOwotICAgICAgICAgICAgICAgICAodm9pZClpLS07Ci0gICAgICAgICAgICAgfQotICAgICAgICAgcHJpdmF0ZToKLSAgICAgICAgICAgICBJdGVyYXRvciBpOwotICNlbmRpZgotICAgICAgICAgfTsKLQotICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgSXRlcmF0b3I+Ci0gICAgICAgICBzdHJ1Y3QgUmFuZG9tQWNjZXNzSXRlcmF0b3JDb25jZXB0Ci0gICAgICAgICAgICAgOiBCaWRpcmVjdGlvbmFsSXRlcmF0b3JDb25jZXB0PEl0ZXJhdG9yPgotICAgICAgICAgewotICNpZiBORE5CT09TVF9SQU5HRV9FTkFCTEVfQ09OQ0VQVF9BU1NFUlQKLSAgICAgICAgICAgICBORE5CT09TVF9SQU5HRV9DT05DRVBUX0FTU0VSVCgoCi0gICAgICAgICAgICAgICAgIENvbnZlcnRpYmxlPAotICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBSYW5kb21BY2Nlc3NJdGVyYXRvckNvbmNlcHQ6OnRyYXZlcnNhbF9jYXRlZ29yeSwKLSAgICAgICAgICAgICAgICAgICAgIHJhbmRvbV9hY2Nlc3NfdHJhdmVyc2FsX3RhZwotICAgICAgICAgICAgICAgICA+KSk7Ci0KLSAgICAgICAgICAgICBORE5CT09TVF9DT05DRVBUX1VTQUdFKFJhbmRvbUFjY2Vzc0l0ZXJhdG9yQ29uY2VwdCkKLSAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIGkgKz0gbjsKLSAgICAgICAgICAgICAgICAgaSA9IGkgKyBuOwotICAgICAgICAgICAgICAgICBpID0gbiArIGk7Ci0gICAgICAgICAgICAgICAgIGkgLT0gbjsKLSAgICAgICAgICAgICAgICAgaSA9IGkgLSBuOwotICAgICAgICAgICAgICAgICBuID0gaSAtIGo7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgcHJpdmF0ZToKLSAgICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yQ29uY2VwdDo6ZGlmZmVyZW5jZV90eXBlIG47Ci0gICAgICAgICAgICAgSXRlcmF0b3IgaTsKLSAgICAgICAgICAgICBJdGVyYXRvciBqOwotICNlbmRpZgotICAgICAgICAgfTsKLQotICAgIH0gLy8gbmFtZXNwYWNlIHJhbmdlX2RldGFpbAotCi0gICAgLy8hIENoZWNrIGlmIGEgdHlwZSBUIG1vZGVscyB0aGUgU2luZ2xlUGFzc1JhbmdlIHJhbmdlIGNvbmNlcHQuCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4KLSAgICBzdHJ1Y3QgU2luZ2xlUGFzc1JhbmdlQ29uY2VwdAotICAgIHsKLSNpZiBORE5CT09TVF9SQU5HRV9FTkFCTEVfQ09OQ0VQVF9BU1NFUlQKLSAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9pdGVyYXRvcjxUIGNvbnN0Pjo6dHlwZSAgY29uc3RfaXRlcmF0b3I7Ci0gICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfaXRlcmF0b3I8VD46OnR5cGUgICAgICAgIGl0ZXJhdG9yOwotCi0gICAgICAgICBORE5CT09TVF9SQU5HRV9DT05DRVBUX0FTU0VSVCgocmFuZ2VfZGV0YWlsOjpTaW5nbGVQYXNzSXRlcmF0b3JDb25jZXB0PGl0ZXJhdG9yPikpOwotICAgICAgICAgTkROQk9PU1RfUkFOR0VfQ09OQ0VQVF9BU1NFUlQoKHJhbmdlX2RldGFpbDo6U2luZ2xlUGFzc0l0ZXJhdG9yQ29uY2VwdDxjb25zdF9pdGVyYXRvcj4pKTsKLQotICAgICAgICAgTkROQk9PU1RfQ09OQ0VQVF9VU0FHRShTaW5nbGVQYXNzUmFuZ2VDb25jZXB0KQotICAgICAgICAgewotICAgICAgICAgICAgLy8gVGhpcyBoYXMgYmVlbiBtb2RpZmllZCBmcm9tIGFzc2lnbmluZyB0byB0aGlzLT5pCi0gICAgICAgICAgICAvLyAod2hlcmUgaSB3YXMgYSBtZW1iZXIgdmFyaWFibGUpIHRvIGltcHJvdmUKLSAgICAgICAgICAgIC8vIGNvbXBhdGliaWxpdHkgd2l0aCBCb29zdC5MYW1iZGEKLSAgICAgICAgICAgIGl0ZXJhdG9yIGkxID0gbmRuYm9vc3Q6OmJlZ2luKCptX3JhbmdlKTsKLSAgICAgICAgICAgIGl0ZXJhdG9yIGkyID0gbmRuYm9vc3Q6OmVuZCgqbV9yYW5nZSk7Ci0KLSAgICAgICAgICAgIGlnbm9yZV91bnVzZWRfdmFyaWFibGVfd2FybmluZyhpMSk7Ci0gICAgICAgICAgICBpZ25vcmVfdW51c2VkX3ZhcmlhYmxlX3dhcm5pbmcoaTIpOwotCi0gICAgICAgICAgICBjb25zdF9jb25zdHJhaW50cygqbV9yYW5nZSk7Ci0gICAgICAgIH0KLQotICAgIHByaXZhdGU6Ci0gICAgICAgIHZvaWQgY29uc3RfY29uc3RyYWludHMoY29uc3QgVCYgY29uc3RfcmFuZ2UpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0X2l0ZXJhdG9yIGNpMSA9IG5kbmJvb3N0OjpiZWdpbihjb25zdF9yYW5nZSk7Ci0gICAgICAgICAgICBjb25zdF9pdGVyYXRvciBjaTIgPSBuZG5ib29zdDo6ZW5kKGNvbnN0X3JhbmdlKTsKLQotICAgICAgICAgICAgaWdub3JlX3VudXNlZF92YXJpYWJsZV93YXJuaW5nKGNpMSk7Ci0gICAgICAgICAgICBpZ25vcmVfdW51c2VkX3ZhcmlhYmxlX3dhcm5pbmcoY2kyKTsKLSAgICAgICAgfQotCi0gICAgICAgLy8gUmF0aW9uYWxlOgotICAgICAgIC8vIFRoZSB0eXBlIG9mIG1fcmFuZ2UgaXMgVCogcmF0aGVyIHRoYW4gVCBiZWNhdXNlIGl0IGFsbG93cwotICAgICAgIC8vIFQgdG8gYmUgYW4gYWJzdHJhY3QgY2xhc3MuIFRoZSBvdGhlciBvYnZpb3VzIGFsdGVybmF0aXZlIG9mCi0gICAgICAgLy8gVCYgcHJvZHVjZXMgYSB3YXJuaW5nIG9uIHNvbWUgY29tcGlsZXJzLgotICAgICAgIFQqIG1fcmFuZ2U7Ci0jZW5kaWYKLSAgICB9OwotCi0gICAgLy8hIENoZWNrIGlmIGEgdHlwZSBUIG1vZGVscyB0aGUgRm9yd2FyZFJhbmdlIHJhbmdlIGNvbmNlcHQuCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4KLSAgICBzdHJ1Y3QgRm9yd2FyZFJhbmdlQ29uY2VwdCA6IFNpbmdsZVBhc3NSYW5nZUNvbmNlcHQ8VD4KLSAgICB7Ci0jaWYgTkROQk9PU1RfUkFOR0VfRU5BQkxFX0NPTkNFUFRfQVNTRVJUCi0gICAgICAgIE5ETkJPT1NUX1JBTkdFX0NPTkNFUFRfQVNTRVJUKChyYW5nZV9kZXRhaWw6OkZvcndhcmRJdGVyYXRvckNvbmNlcHQ8TkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBGb3J3YXJkUmFuZ2VDb25jZXB0OjppdGVyYXRvcj4pKTsKLSAgICAgICAgTkROQk9PU1RfUkFOR0VfQ09OQ0VQVF9BU1NFUlQoKHJhbmdlX2RldGFpbDo6Rm9yd2FyZEl0ZXJhdG9yQ29uY2VwdDxORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIEZvcndhcmRSYW5nZUNvbmNlcHQ6OmNvbnN0X2l0ZXJhdG9yPikpOwotI2VuZGlmCi0gICAgfTsKLQotICAgIHRlbXBsYXRlPGNsYXNzIFJhbmdlPgotICAgIHN0cnVjdCBXcml0ZWFibGVSYW5nZUNvbmNlcHQKLSAgICB7Ci0jaWYgTkROQk9PU1RfUkFOR0VfRU5BQkxFX0NPTkNFUFRfQVNTRVJUCi0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9pdGVyYXRvcjxSYW5nZT46OnR5cGUgaXRlcmF0b3I7Ci0KLSAgICAgICAgTkROQk9PU1RfQ09OQ0VQVF9VU0FHRShXcml0ZWFibGVSYW5nZUNvbmNlcHQpCi0gICAgICAgIHsKLSAgICAgICAgICAgICppID0gdjsKLSAgICAgICAgfQotICAgIHByaXZhdGU6Ci0gICAgICAgIGl0ZXJhdG9yIGk7Ci0gICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfdmFsdWU8UmFuZ2U+Ojp0eXBlIHY7Ci0jZW5kaWYKLSAgICB9OwotCi0gICAgLy8hIENoZWNrIGlmIGEgdHlwZSBUIG1vZGVscyB0aGUgV3JpdGVhYmxlRm9yd2FyZFJhbmdlIHJhbmdlIGNvbmNlcHQuCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4KLSAgICBzdHJ1Y3QgV3JpdGVhYmxlRm9yd2FyZFJhbmdlQ29uY2VwdAotICAgICAgICA6IEZvcndhcmRSYW5nZUNvbmNlcHQ8VD4KLSAgICAgICAgLCBXcml0ZWFibGVSYW5nZUNvbmNlcHQ8VD4KLSAgICB7Ci0gICAgfTsKLQotICAgIC8vISBDaGVjayBpZiBhIHR5cGUgVCBtb2RlbHMgdGhlIEJpZGlyZWN0aW9uYWxSYW5nZSByYW5nZSBjb25jZXB0LgotICAgIHRlbXBsYXRlPGNsYXNzIFQ+Ci0gICAgc3RydWN0IEJpZGlyZWN0aW9uYWxSYW5nZUNvbmNlcHQgOiBGb3J3YXJkUmFuZ2VDb25jZXB0PFQ+Ci0gICAgewotI2lmIE5ETkJPT1NUX1JBTkdFX0VOQUJMRV9DT05DRVBUX0FTU0VSVAotICAgICAgICBORE5CT09TVF9SQU5HRV9DT05DRVBUX0FTU0VSVCgocmFuZ2VfZGV0YWlsOjpCaWRpcmVjdGlvbmFsSXRlcmF0b3JDb25jZXB0PE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgQmlkaXJlY3Rpb25hbFJhbmdlQ29uY2VwdDo6aXRlcmF0b3I+KSk7Ci0gICAgICAgIE5ETkJPT1NUX1JBTkdFX0NPTkNFUFRfQVNTRVJUKChyYW5nZV9kZXRhaWw6OkJpZGlyZWN0aW9uYWxJdGVyYXRvckNvbmNlcHQ8TkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBCaWRpcmVjdGlvbmFsUmFuZ2VDb25jZXB0Ojpjb25zdF9pdGVyYXRvcj4pKTsKLSNlbmRpZgotICAgIH07Ci0KLSAgICAvLyEgQ2hlY2sgaWYgYSB0eXBlIFQgbW9kZWxzIHRoZSBXcml0ZWFibGVCaWRpcmVjdGlvbmFsUmFuZ2UgcmFuZ2UgY29uY2VwdC4KLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPgotICAgIHN0cnVjdCBXcml0ZWFibGVCaWRpcmVjdGlvbmFsUmFuZ2VDb25jZXB0Ci0gICAgICAgIDogQmlkaXJlY3Rpb25hbFJhbmdlQ29uY2VwdDxUPgotICAgICAgICAsIFdyaXRlYWJsZVJhbmdlQ29uY2VwdDxUPgotICAgIHsKLSAgICB9OwotCi0gICAgLy8hIENoZWNrIGlmIGEgdHlwZSBUIG1vZGVscyB0aGUgUmFuZG9tQWNjZXNzUmFuZ2UgcmFuZ2UgY29uY2VwdC4KLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPgotICAgIHN0cnVjdCBSYW5kb21BY2Nlc3NSYW5nZUNvbmNlcHQgOiBCaWRpcmVjdGlvbmFsUmFuZ2VDb25jZXB0PFQ+Ci0gICAgewotI2lmIE5ETkJPT1NUX1JBTkdFX0VOQUJMRV9DT05DRVBUX0FTU0VSVAotICAgICAgICBORE5CT09TVF9SQU5HRV9DT05DRVBUX0FTU0VSVCgocmFuZ2VfZGV0YWlsOjpSYW5kb21BY2Nlc3NJdGVyYXRvckNvbmNlcHQ8TkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBSYW5kb21BY2Nlc3NSYW5nZUNvbmNlcHQ6Oml0ZXJhdG9yPikpOwotICAgICAgICBORE5CT09TVF9SQU5HRV9DT05DRVBUX0FTU0VSVCgocmFuZ2VfZGV0YWlsOjpSYW5kb21BY2Nlc3NJdGVyYXRvckNvbmNlcHQ8TkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBSYW5kb21BY2Nlc3NSYW5nZUNvbmNlcHQ6OmNvbnN0X2l0ZXJhdG9yPikpOwotI2VuZGlmCi0gICAgfTsKLQotICAgIC8vISBDaGVjayBpZiBhIHR5cGUgVCBtb2RlbHMgdGhlIFdyaXRlYWJsZVJhbmRvbUFjY2Vzc1JhbmdlIHJhbmdlIGNvbmNlcHQuCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4KLSAgICBzdHJ1Y3QgV3JpdGVhYmxlUmFuZG9tQWNjZXNzUmFuZ2VDb25jZXB0Ci0gICAgICAgIDogUmFuZG9tQWNjZXNzUmFuZ2VDb25jZXB0PFQ+Ci0gICAgICAgICwgV3JpdGVhYmxlUmFuZ2VDb25jZXB0PFQ+Ci0gICAgewotICAgIH07Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9SQU5HRV9DT05DRVBUU19IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvY29uZmlnLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvY29uZmlnLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjM3MmQ2YS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2NvbmZpZy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi0vLyBCb29zdC5SYW5nZSBsaWJyYXJ5Ci0vLwotLy8gIENvcHlyaWdodCBUaG9yc3RlbiBPdHRvc2VuIDIwMDMtMjAwNC4gVXNlLCBtb2RpZmljYXRpb24gYW5kCi0vLyAgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24KLS8vICAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3JhbmdlLwotLy8KLQotI2lmbmRlZiBORE5CT09TVF9SQU5HRV9DT05GSUdfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkdFX0NPTkZJR19IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMjAwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi0jaWZkZWYgTkROQk9PU1RfUkFOR0VfREVEVUNFRF9UWVBFTkFNRQotI2Vycm9yICJtYWNybyBhbHJlYWR5IGRlZmluZWQhIgotI2VuZGlmCi0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTY0KSkKLSMgZGVmaW5lIE5ETkJPT1NUX1JBTkdFX0RFRFVDRURfVFlQRU5BTUUgdHlwZW5hbWUKLSNlbHNlCi0jIGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPT0gMTMwMCkgJiYgIWRlZmluZWQoX01TQ19FWFRFTlNJT05TKQotIyAgZGVmaW5lIE5ETkJPT1NUX1JBTkdFX0RFRFVDRURfVFlQRU5BTUUgdHlwZW5hbWUKLSMgZWxzZQotIyAgZGVmaW5lIE5ETkJPT1NUX1JBTkdFX0RFRFVDRURfVFlQRU5BTUUgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRQotIyBlbmRpZgotI2VuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9SQU5HRV9OT19BUlJBWV9TVVBQT1JUCi0jZXJyb3IgIm1hY3JvIGFscmVhZHkgZGVmaW5lZCEiCi0jZW5kaWYKLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoIE5ETkJPT1NUX01TVkMsIDwgMTMwMCApIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoIF9fTVdFUktTX18sIDw9IDB4MzAwMyApCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkdFX05PX0FSUkFZX1NVUFBPUlQgMQotI2VuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9SQU5HRV9OT19BUlJBWV9TVVBQT1JUCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkdFX0FSUkFZX1JFRigpIChib29zdF9yYW5nZV9hcnJheSkKLSNkZWZpbmUgTkROQk9PU1RfUkFOR0VfTk9fU1RBVElDX0FTU0VSVAotI2Vsc2UKLSNkZWZpbmUgTkROQk9PU1RfUkFOR0VfQVJSQVlfUkVGKCkgKCZib29zdF9yYW5nZV9hcnJheSkKLSNlbmRpZgotCi0KLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvY29uc3RfaXRlcmF0b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9jb25zdF9pdGVyYXRvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYxZWQzZTguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9jb25zdF9pdGVyYXRvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2NyArMCwwIEBACi0vLyBCb29zdC5SYW5nZSBsaWJyYXJ5Ci0vLwotLy8gIENvcHlyaWdodCBUaG9yc3RlbiBPdHRvc2VuIDIwMDMtMjAwNC4gVXNlLCBtb2RpZmljYXRpb24gYW5kCi0vLyAgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24KLS8vICAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3JhbmdlLwotLy8KLQotI2lmbmRlZiBORE5CT09TVF9SQU5HRV9DT05TVF9JVEVSQVRPUl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkFOR0VfQ09OU1RfSVRFUkFUT1JfSFBQCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTIwMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvY29uZmlnLmhwcD4KLQotI2lmZGVmIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9kZXRhaWwvY29uc3RfaXRlcmF0b3IuaHBwPgotI2Vsc2UKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2RldGFpbC9leHRyYWN0X29wdGlvbmFsX3R5cGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9jb25zdC5ocHA+Ci0jaW5jbHVkZSA8Y3N0ZGRlZj4KLSNpbmNsdWRlIDx1dGlsaXR5PgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLSAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgIC8vIGRlZmF1bHQKLSAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgIAotICAgIG5hbWVzcGFjZSByYW5nZV9kZXRhaWwgewotICAgICAgICBORE5CT09TVF9SQU5HRV9FWFRSQUNUX09QVElPTkFMX1RZUEUoIGNvbnN0X2l0ZXJhdG9yICkKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgQyA+Ci0gICAgc3RydWN0IHJhbmdlX2NvbnN0X2l0ZXJhdG9yIDogcmFuZ2VfZGV0YWlsOjpleHRyYWN0X2NvbnN0X2l0ZXJhdG9yPEM+Ci0gICAge307Ci0gICAgCi0gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAvLyBwYWlyCi0gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+Ci0gICAgc3RydWN0IHJhbmdlX2NvbnN0X2l0ZXJhdG9yPCBzdGQ6OnBhaXI8SXRlcmF0b3IsSXRlcmF0b3I+ID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgdHlwZTsKLSAgICB9OwotICAgIAotICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgLy8gYXJyYXkKLSAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHN0ZDo6c2l6ZV90IHN6ID4KLSAgICBzdHJ1Y3QgcmFuZ2VfY29uc3RfaXRlcmF0b3I8IFRbc3pdID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgY29uc3QgVCogdHlwZTsKLSAgICB9OwotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZGV0YWlsL2FzX2xpdGVyYWwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9kZXRhaWwvYXNfbGl0ZXJhbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIyM2FlMTguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9kZXRhaWwvYXNfbGl0ZXJhbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi0vLyBCb29zdC5SYW5nZSBsaWJyYXJ5Ci0vLwotLy8gIENvcHlyaWdodCBUaG9yc3RlbiBPdHRvc2VuIDIwMDYuIFVzZSwgbW9kaWZpY2F0aW9uIGFuZAotLy8gIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uCi0vLyAgMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9yYW5nZS8KLS8vCi0KLSNpZm5kZWYgTkROQk9PU1RfUkFOR0VfREVUQUlMX0FTX0xJVEVSQUxfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkdFX0RFVEFJTF9BU19MSVRFUkFMX0hQUAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEyMDApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2RldGFpbC9kZXRhaWxfc3RyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9pdGVyYXRvcl9yYW5nZS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotICAgIHRlbXBsYXRlPCBjbGFzcyBSYW5nZSA+Ci0gICAgaW5saW5lIGl0ZXJhdG9yX3JhbmdlPE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfaXRlcmF0b3I8UmFuZ2U+Ojp0eXBlPiAKLSAgICBhc19saXRlcmFsKCBSYW5nZSYgciApCi0gICAgewotICAgICAgICByZXR1cm4gOjpuZG5ib29zdDo6bWFrZV9pdGVyYXRvcl9yYW5nZSggOjpuZG5ib29zdDo6cmFuZ2VfZGV0YWlsOjpzdHJfYmVnaW4ociksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjpyYW5nZV9kZXRhaWw6OnN0cl9lbmQocikgKTsKLSAgICB9Ci0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2RldGFpbC9iZWdpbi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2RldGFpbC9iZWdpbi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyYjVlNTkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9kZXRhaWwvYmVnaW4uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotLy8gQm9vc3QuUmFuZ2UgbGlicmFyeQotLy8KLS8vICBDb3B5cmlnaHQgVGhvcnN0ZW4gT3R0b3NlbiAyMDAzLTIwMDQuIFVzZSwgbW9kaWZpY2F0aW9uIGFuZAotLy8gIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uCi0vLyAgMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9yYW5nZS8KLS8vCi0KLSNpZm5kZWYgTkROQk9PU1RfUkFOR0VfREVUQUlMX0JFR0lOX0hQUAotI2RlZmluZSBORE5CT09TVF9SQU5HRV9ERVRBSUxfQkVHSU5fSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiAvLyBORE5CT09TVF9NU1ZDCi0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2l0ZXJhdG9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9kZXRhaWwvY29tbW9uLmhwcD4KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMxMCkKLSMgaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvdmFsdWVfdHlwZS5ocHA+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLSAgICBuYW1lc3BhY2UgcmFuZ2VfZGV0YWlsCi0gICAgewotICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci0gICAgICAgIHN0cnVjdCByYW5nZV9iZWdpbjsKLQotICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgICAgIC8vIGRlZmF1bHQKLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJhbmdlX2JlZ2luPHN0ZF9jb250YWluZXJfPgotICAgICAgICB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgQyA+Ci0gICAgICAgICAgICBzdGF0aWMgTkROQk9PU1RfUkFOR0VfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9pdGVyYXRvcjxDPjo6dHlwZSBmdW4oIEMmIGMgKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBjLmJlZ2luKCk7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotCi0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAgICAgLy8gcGFpcgotICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmFuZ2VfYmVnaW48c3RkX3BhaXJfPgotICAgICAgICB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUCA+Ci0gICAgICAgICAgICBzdGF0aWMgTkROQk9PU1RfUkFOR0VfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9pdGVyYXRvcjxQPjo6dHlwZSBmdW4oIGNvbnN0IFAmIHAgKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBwLmZpcnN0OwotICAgICAgICAgICAgfQotICAgICAgICB9OwotCi0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAgICAgLy8gYXJyYXkKLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJhbmdlX2JlZ2luPGFycmF5Xz4KLSAgICAgICAgewotICAgICAgICAjaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzEwKQotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHN0ZDo6c2l6ZV90IHN6ID4KLSAgICAgICAgICAgIHN0YXRpYyBUKiBmdW4oIFQgTkROQk9PU1RfUkFOR0VfQVJSQVlfUkVGKClbc3pdICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gYm9vc3RfcmFuZ2VfYXJyYXk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICNlbHNlCi0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICAgICAgc3RhdGljIE5ETkJPT1NUX1JBTkdFX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfdmFsdWU8VD46OnR5cGUqIGZ1bihUJiB0KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiB0OwotICAgICAgICAgICAgfQotICAgICAgICAjZW5kaWYKLSAgICAgICAgfTsKLQotICAgIH0gLy8gbmFtZXNwYWNlICdyYW5nZV9kZXRhaWwnCi0KLSAgICBuYW1lc3BhY2UgcmFuZ2VfYWRsX2JhcnJpZXIKLSAgICB7Ci0gICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBDID4KLSAgICAgICAgaW5saW5lIE5ETkJPT1NUX1JBTkdFX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfaXRlcmF0b3I8Qz46OnR5cGUKLSAgICAgICAgYmVnaW4oIEMmIGMgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gcmFuZ2VfZGV0YWlsOjpyYW5nZV9iZWdpbjwgTkROQk9PU1RfUkFOR0VfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9kZXRhaWw6OnJhbmdlPEM+Ojp0eXBlID46OmZ1biggYyApOwotICAgICAgICB9Ci0gICAgfQotfSAvLyBuYW1lc3BhY2UgJ2Jvb3N0JwotCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9kZXRhaWwvY29tbW9uLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZGV0YWlsL2NvbW1vbi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZlZmY5ZGIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9kZXRhaWwvY29tbW9uLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExNyArMCwwIEBACi0vLyBCb29zdC5SYW5nZSBsaWJyYXJ5Ci0vLwotLy8gIENvcHlyaWdodCBUaG9yc3RlbiBPdHRvc2VuIDIwMDMtMjAwNC4gVXNlLCBtb2RpZmljYXRpb24gYW5kCi0vLyAgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24KLS8vICAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3JhbmdlLwotLy8KLQotI2lmbmRlZiBORE5CT09TVF9SQU5HRV9ERVRBSUxfQ09NTU9OX0hQUAotI2RlZmluZSBORE5CT09TVF9SQU5HRV9ERVRBSUxfQ09NTU9OX0hQUAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEyMDApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvZGV0YWlsL3NmaW5hZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfdm9pZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9vci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaW50LmhwcD4KLSNpbmNsdWRlIDxjc3RkZGVmPgotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vIG1pc3NpbmcgcGFydGlhbCBzcGVjaWFsaXphdGlvbiAgd29ya2Fyb3VuZC4KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgCi17Ci0gICAgbmFtZXNwYWNlIHJhbmdlX2RldGFpbCAKLSAgICB7ICAgICAgICAKLSAgICAgICAgLy8gMSA9IHN0ZCBjb250YWluZXJzCi0gICAgICAgIC8vIDIgPSBzdGQ6OnBhaXIKLSAgICAgICAgLy8gMyA9IGNvbnN0IHN0ZDo6cGFpcgotICAgICAgICAvLyA0ID0gYXJyYXkKLSAgICAgICAgLy8gNSA9IGNvbnN0IGFycmF5Ci0gICAgICAgIC8vIDYgPSBjaGFyIGFycmF5Ci0gICAgICAgIC8vIDcgPSB3Y2hhcl90IGFycmF5Ci0gICAgICAgIC8vIDggPSBjaGFyKgotICAgICAgICAvLyA5ID0gY29uc3QgY2hhcioKLSAgICAgICAgLy8gMTAgPSB3aGFyX3QqCi0gICAgICAgIC8vIDExID0gY29uc3Qgd2NoYXJfdCoKLSAgICAgICAgLy8gMTIgPSBzdHJpbmcKLSAgICAgICAgCi0gICAgICAgIHR5cGVkZWYgbXBsOjppbnRfPDE+Ojp0eXBlICAgIHN0ZF9jb250YWluZXJfOwotICAgICAgICB0eXBlZGVmIG1wbDo6aW50XzwyPjo6dHlwZSAgICBzdGRfcGFpcl87Ci0gICAgICAgIHR5cGVkZWYgbXBsOjppbnRfPDM+Ojp0eXBlICAgIGNvbnN0X3N0ZF9wYWlyXzsKLSAgICAgICAgdHlwZWRlZiBtcGw6OmludF88ND46OnR5cGUgICAgYXJyYXlfOwotICAgICAgICB0eXBlZGVmIG1wbDo6aW50Xzw1Pjo6dHlwZSAgICBjb25zdF9hcnJheV87Ci0gICAgICAgIHR5cGVkZWYgbXBsOjppbnRfPDY+Ojp0eXBlICAgIGNoYXJfYXJyYXlfOwotICAgICAgICB0eXBlZGVmIG1wbDo6aW50Xzw3Pjo6dHlwZSAgICB3Y2hhcl90X2FycmF5XzsKLSAgICAgICAgdHlwZWRlZiBtcGw6OmludF88OD46OnR5cGUgICAgY2hhcl9wdHJfOwotICAgICAgICB0eXBlZGVmIG1wbDo6aW50Xzw5Pjo6dHlwZSAgICBjb25zdF9jaGFyX3B0cl87Ci0gICAgICAgIHR5cGVkZWYgbXBsOjppbnRfPDEwPjo6dHlwZSAgIHdjaGFyX3RfcHRyXzsKLSAgICAgICAgdHlwZWRlZiBtcGw6OmludF88MTE+Ojp0eXBlICAgY29uc3Rfd2NoYXJfdF9wdHJfOwotICAgICAgICB0eXBlZGVmIG1wbDo6aW50XzwxMj46OnR5cGUgICBzdHJpbmdfOwotICAgICAgICAKLSAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIEMgPgotICAgICAgICBzdHJ1Y3QgcmFuZ2VfaGVscGVyCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBDKiBjOwotICAgICAgICAgICAgc3RhdGljIEMgIHB0cjsKLQotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKCBib29sLCBpc19wYWlyXyAgICAgICAgICAgICAgICA9IHNpemVvZiggbmRuYm9vc3Q6OnJhbmdlX2RldGFpbDo6aXNfcGFpcl9pbXBsKCBjICkgKSA9PSBzaXplb2YoIHllc190eXBlICkgKTsKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCggYm9vbCwgaXNfY2hhcl9wdHJfICAgICAgICAgICAgPSBzaXplb2YoIG5kbmJvb3N0OjpyYW5nZV9kZXRhaWw6OmlzX2NoYXJfcHRyX2ltcGwoIHB0ciApICkgPT0gc2l6ZW9mKCB5ZXNfdHlwZSApICk7Ci0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoIGJvb2wsIGlzX2NvbnN0X2NoYXJfcHRyXyAgICAgID0gc2l6ZW9mKCBuZG5ib29zdDo6cmFuZ2VfZGV0YWlsOjppc19jb25zdF9jaGFyX3B0cl9pbXBsKCBwdHIgKSApID09IHNpemVvZiggeWVzX3R5cGUgKSApOwotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKCBib29sLCBpc193Y2hhcl90X3B0cl8gICAgICAgICA9IHNpemVvZiggbmRuYm9vc3Q6OnJhbmdlX2RldGFpbDo6aXNfd2NoYXJfdF9wdHJfaW1wbCggcHRyICkgKSA9PSBzaXplb2YoIHllc190eXBlICkgKTsKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCggYm9vbCwgaXNfY29uc3Rfd2NoYXJfdF9wdHJfICAgPSBzaXplb2YoIG5kbmJvb3N0OjpyYW5nZV9kZXRhaWw6OmlzX2NvbnN0X3djaGFyX3RfcHRyX2ltcGwoIHB0ciApICkgPT0gc2l6ZW9mKCB5ZXNfdHlwZSApICk7Ci0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoIGJvb2wsIGlzX2NoYXJfYXJyYXlfICAgICAgICAgID0gc2l6ZW9mKCBuZG5ib29zdDo6cmFuZ2VfZGV0YWlsOjppc19jaGFyX2FycmF5X2ltcGwoIHB0ciApICkgPT0gc2l6ZW9mKCB5ZXNfdHlwZSApICk7Ci0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoIGJvb2wsIGlzX3djaGFyX3RfYXJyYXlfICAgICAgID0gc2l6ZW9mKCBuZG5ib29zdDo6cmFuZ2VfZGV0YWlsOjppc193Y2hhcl90X2FycmF5X2ltcGwoIHB0ciApICkgPT0gc2l6ZW9mKCB5ZXNfdHlwZSApICk7Ci0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoIGJvb2wsIGlzX3N0cmluZ18gICAgICAgICAgICAgID0gKG5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPGlzX2NvbnN0X2NoYXJfcHRyXywgaXNfY29uc3Rfd2NoYXJfdF9wdHJfPjo6dmFsdWUgKSk7Ci0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoIGJvb2wsIGlzX2FycmF5XyAgICAgICAgICAgICAgID0gbmRuYm9vc3Q6OmlzX2FycmF5PEM+Ojp2YWx1ZSApOwotICAgICAgICAgICAgCi0gICAgICAgIH07Ci0gICAgICAgIAotICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgQyA+Ci0gICAgICAgIGNsYXNzIHJhbmdlCi0gICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfUkFOR0VfREVEVUNFRF9UWVBFTkFNRSAgIG5kbmJvb3N0OjptcGw6OmlmX2M8IDo6bmRuYm9vc3Q6OnJhbmdlX2RldGFpbDo6cmFuZ2VfaGVscGVyPEM+Ojppc19wYWlyXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0OjpyYW5nZV9kZXRhaWw6OnN0ZF9wYWlyXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgPjo6dHlwZSBwYWlyX3Q7Ci0gICAgICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1JBTkdFX0RFRFVDRURfVFlQRU5BTUUgICBuZG5ib29zdDo6bXBsOjppZl9jPCA6Om5kbmJvb3N0OjpyYW5nZV9kZXRhaWw6OnJhbmdlX2hlbHBlcjxDPjo6aXNfYXJyYXlfLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6cmFuZ2VfZGV0YWlsOjphcnJheV8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhaXJfdCA+Ojp0eXBlIGFycmF5X3Q7Ci0gICAgICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1JBTkdFX0RFRFVDRURfVFlQRU5BTUUgICBuZG5ib29zdDo6bXBsOjppZl9jPCA6Om5kbmJvb3N0OjpyYW5nZV9kZXRhaWw6OnJhbmdlX2hlbHBlcjxDPjo6aXNfc3RyaW5nXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnJhbmdlX2RldGFpbDo6c3RyaW5nXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXlfdCA+Ojp0eXBlIHN0cmluZ190OwotICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9SQU5HRV9ERURVQ0VEX1RZUEVOQU1FICAgbmRuYm9vc3Q6Om1wbDo6aWZfYzwgOjpuZG5ib29zdDo6cmFuZ2VfZGV0YWlsOjpyYW5nZV9oZWxwZXI8Qz46OmlzX2NvbnN0X2NoYXJfcHRyXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnJhbmdlX2RldGFpbDo6Y29uc3RfY2hhcl9wdHJfLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdfdCA+Ojp0eXBlIGNvbnN0X2NoYXJfcHRyX3Q7Ci0gICAgICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1JBTkdFX0RFRFVDRURfVFlQRU5BTUUgICBuZG5ib29zdDo6bXBsOjppZl9jPCA6Om5kbmJvb3N0OjpyYW5nZV9kZXRhaWw6OnJhbmdlX2hlbHBlcjxDPjo6aXNfY2hhcl9wdHJfLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6cmFuZ2VfZGV0YWlsOjpjaGFyX3B0cl8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0X2NoYXJfcHRyX3QgPjo6dHlwZSBjaGFyX3B0cl90OwotICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9SQU5HRV9ERURVQ0VEX1RZUEVOQU1FICAgbmRuYm9vc3Q6Om1wbDo6aWZfYzwgOjpuZG5ib29zdDo6cmFuZ2VfZGV0YWlsOjpyYW5nZV9oZWxwZXI8Qz46OmlzX2NvbnN0X3djaGFyX3RfcHRyXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnJhbmdlX2RldGFpbDo6Y29uc3Rfd2NoYXJfdF9wdHJfLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyX3B0cl90ID46OnR5cGUgY29uc3Rfd2NoYXJfcHRyX3Q7Ci0gICAgICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1JBTkdFX0RFRFVDRURfVFlQRU5BTUUgICBuZG5ib29zdDo6bXBsOjppZl9jPCA6Om5kbmJvb3N0OjpyYW5nZV9kZXRhaWw6OnJhbmdlX2hlbHBlcjxDPjo6aXNfd2NoYXJfdF9wdHJfLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6cmFuZ2VfZGV0YWlsOjp3Y2hhcl90X3B0cl8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0X3djaGFyX3B0cl90ID46OnR5cGUgd2NoYXJfcHRyX3Q7Ci0gICAgICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1JBTkdFX0RFRFVDRURfVFlQRU5BTUUgICBuZG5ib29zdDo6bXBsOjppZl9jPCA6Om5kbmJvb3N0OjpyYW5nZV9kZXRhaWw6OnJhbmdlX2hlbHBlcjxDPjo6aXNfd2NoYXJfdF9hcnJheV8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0OjpyYW5nZV9kZXRhaWw6OndjaGFyX3RfYXJyYXlfLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3Y2hhcl9wdHJfdCA+Ojp0eXBlIHdjaGFyX2FycmF5X3Q7Ci0gICAgICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1JBTkdFX0RFRFVDRURfVFlQRU5BTUUgICBuZG5ib29zdDo6bXBsOjppZl9jPCA6Om5kbmJvb3N0OjpyYW5nZV9kZXRhaWw6OnJhbmdlX2hlbHBlcjxDPjo6aXNfY2hhcl9hcnJheV8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0OjpyYW5nZV9kZXRhaWw6OmNoYXJfYXJyYXlfLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3Y2hhcl9hcnJheV90ID46OnR5cGUgY2hhcl9hcnJheV90OwotICAgICAgICBwdWJsaWM6Ci0gICAgICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1JBTkdFX0RFRFVDRURfVFlQRU5BTUUgICBuZG5ib29zdDo6bXBsOjppZl9jPCA6Om5kbmJvb3N0Ojppc192b2lkPGNoYXJfYXJyYXlfdD46OnZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6cmFuZ2VfZGV0YWlsOjpzdGRfY29udGFpbmVyXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcl9hcnJheV90ID46OnR5cGUgdHlwZTsgIAotICAgICAgICB9OyAvLyBjbGFzcyAncmFuZ2UnIAotICAgIH0KLX0KLSAgICAgICAgCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9kZXRhaWwvY29uc3RfaXRlcmF0b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9kZXRhaWwvY29uc3RfaXRlcmF0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYjc1MjkyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZGV0YWlsL2NvbnN0X2l0ZXJhdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLS8vIEJvb3N0LlJhbmdlIGxpYnJhcnkKLS8vCi0vLyAgQ29weXJpZ2h0IFRob3JzdGVuIE90dG9zZW4gMjAwMy0yMDA0LiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQKLS8vICBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbgotLy8gIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvcmFuZ2UvCi0vLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JBTkdFX0RFVEFJTF9DT05TVF9JVEVSQVRPUl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkFOR0VfREVUQUlMX0NPTlNUX0lURVJBVE9SX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvZGV0YWlsL2NvbW1vbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvZGV0YWlsL3JlbW92ZV9leHRlbnQuaHBwPgotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vIG1pc3NpbmcgcGFydGlhbCBzcGVjaWFsaXphdGlvbiAgd29ya2Fyb3VuZC4KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgCi17Ci0gICAgbmFtZXNwYWNlIHJhbmdlX2RldGFpbCAKLSAgICB7ICAgICAgCi0gICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLSAgICAgICAgc3RydWN0IHJhbmdlX2NvbnN0X2l0ZXJhdG9yXzsKLQotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCByYW5nZV9jb25zdF9pdGVyYXRvcl88c3RkX2NvbnRhaW5lcl8+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBDID4KLSAgICAgICAgICAgIHN0cnVjdCBwdHMKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1JBTkdFX0RFRFVDRURfVFlQRU5BTUUgQzo6Y29uc3RfaXRlcmF0b3IgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmFuZ2VfY29uc3RfaXRlcmF0b3JfPHN0ZF9wYWlyXz4KLSAgICAgICAgewotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFAgPgotICAgICAgICAgICAgc3RydWN0IHB0cwotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfUkFOR0VfREVEVUNFRF9UWVBFTkFNRSBQOjpmaXJzdF90eXBlIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotCi0KLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmFuZ2VfY29uc3RfaXRlcmF0b3JfPGFycmF5Xz4KLSAgICAgICAgeyAKLSAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLSAgICAgICAgICAgIHN0cnVjdCBwdHMKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIGNvbnN0IE5ETkJPT1NUX1JBTkdFX0RFRFVDRURfVFlQRU5BTUUgCi0gICAgICAgICAgICAgICAgICAgIHJlbW92ZV9leHRlbnQ8VD46OnR5cGUqIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotICAgIH0gCi0gICAgCi0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEMgPgotICAgIGNsYXNzIHJhbmdlX2NvbnN0X2l0ZXJhdG9yCi0gICAgewotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfZGV0YWlsOjpyYW5nZTxDPjo6dHlwZSBjX3R5cGU7Ci0gICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfZGV0YWlsOjpyYW5nZV9jb25zdF9pdGVyYXRvcl88Y190eXBlPjo6TkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFIHB0czxDPjo6dHlwZSB0eXBlOyAKLSAgICB9OwotCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9kZXRhaWwvZGV0YWlsX3N0ci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2RldGFpbC9kZXRhaWxfc3RyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2FkMDc1NC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2RldGFpbC9kZXRhaWxfc3RyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM3NiArMCwwIEBACi0vLyBCb29zdC5SYW5nZSBsaWJyYXJ5Ci0vLwotLy8gIENvcHlyaWdodCBUaG9yc3RlbiBPdHRvc2VuIDIwMDMtMjAwNC4gVXNlLCBtb2RpZmljYXRpb24gYW5kCi0vLyAgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24KLS8vICAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3JhbmdlLwotLy8KLQotI2lmbmRlZiBORE5CT09TVF9SQU5HRV9ERVRBSUxfREVUQUlMX1NUUl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkFOR0VfREVUQUlMX0RFVEFJTF9TVFJfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiAvLyBORE5CT09TVF9NU1ZDCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvaXRlcmF0b3IuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgCi17Ci0gICAgCi0gICAgbmFtZXNwYWNlIHJhbmdlX2RldGFpbAotICAgIHsKLSAgICAgICAgLy8KLSAgICAgICAgLy8gaXRlcmF0b3IKLSAgICAgICAgLy8KLSAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJhbmdlX2l0ZXJhdG9yXzxjaGFyX2FycmF5Xz4KLSAgICAgICAgeyAKLSAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLSAgICAgICAgICAgIHN0cnVjdCBwdHMKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9SQU5HRV9ERURVQ0VEX1RZUEVOQU1FIAotICAgICAgICAgICAgICAgICAgICByZW1vdmVfZXh0ZW50PFQ+Ojp0eXBlKiB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCByYW5nZV9pdGVyYXRvcl88Y2hhcl9wdHJfPgotICAgICAgICB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUyA+Ci0gICAgICAgICAgICBzdHJ1Y3QgcHRzCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBjaGFyKiB0eXBlOyAKLSAgICAgICAgICAgIH07ICAgICAgICAgCi0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmFuZ2VfaXRlcmF0b3JfPGNvbnN0X2NoYXJfcHRyXz4KLSAgICAgICAgewotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFMgPgotICAgICAgICAgICAgc3RydWN0IHB0cwotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgY29uc3QgY2hhciogdHlwZTsKLSAgICAgICAgICAgIH07ICAgICAgICAgCi0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmFuZ2VfaXRlcmF0b3JfPHdjaGFyX3RfcHRyXz4KLSAgICAgICAgewotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFMgPgotICAgICAgICAgICAgc3RydWN0IHB0cwotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgd2NoYXJfdCogdHlwZTsgCi0gICAgICAgICAgICB9OyAgICAgICAgIAotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJhbmdlX2l0ZXJhdG9yXzxjb25zdF93Y2hhcl90X3B0cl8+Ci0gICAgICAgIHsKLSAgICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUyA+Ci0gICAgICAgICAgICAgc3RydWN0IHB0cwotICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgdHlwZWRlZiBjb25zdCB3Y2hhcl90KiB0eXBlOyAKLSAgICAgICAgICAgICB9OyAgICAgICAgIAotICAgICAgICB9OwotCi0KLSAgICAgICAgLy8KLSAgICAgICAgLy8gY29uc3QgaXRlcmF0b3IKLSAgICAgICAgLy8KLQotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCByYW5nZV9jb25zdF9pdGVyYXRvcl88Y2hhcl9hcnJheV8+Ci0gICAgICAgIHsgCi0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci0gICAgICAgICAgICBzdHJ1Y3QgcHRzCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBjb25zdCBORE5CT09TVF9SQU5HRV9ERURVQ0VEX1RZUEVOQU1FIAotICAgICAgICAgICAgICAgICAgICByZW1vdmVfZXh0ZW50PFQ+Ojp0eXBlKiB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCByYW5nZV9jb25zdF9pdGVyYXRvcl88Y2hhcl9wdHJfPgotICAgICAgICB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUyA+Ci0gICAgICAgICAgICBzdHJ1Y3QgcHRzCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBjb25zdCBjaGFyKiB0eXBlOyAKLSAgICAgICAgICAgIH07ICAgICAgICAgCi0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmFuZ2VfY29uc3RfaXRlcmF0b3JfPGNvbnN0X2NoYXJfcHRyXz4KLSAgICAgICAgewotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFMgPgotICAgICAgICAgICAgc3RydWN0IHB0cwotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgY29uc3QgY2hhciogdHlwZTsgCi0gICAgICAgICAgICB9OyAgICAgICAgIAotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJhbmdlX2NvbnN0X2l0ZXJhdG9yXzx3Y2hhcl90X3B0cl8+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBTID4KLSAgICAgICAgICAgIHN0cnVjdCBwdHMKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIGNvbnN0IHdjaGFyX3QqIHR5cGU7IAotICAgICAgICAgICAgfTsgICAgICAgICAKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCByYW5nZV9jb25zdF9pdGVyYXRvcl88Y29uc3Rfd2NoYXJfdF9wdHJfPgotICAgICAgICB7Ci0gICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFMgPgotICAgICAgICAgICAgIHN0cnVjdCBwdHMKLSAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIHR5cGVkZWYgY29uc3Qgd2NoYXJfdCogdHlwZTsgCi0gICAgICAgICAgICAgfTsgICAgICAgICAKLSAgICAgICAgfTsKLSAgICB9Ci19Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9kZXRhaWwvYmVnaW4uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2RldGFpbC9lbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2RldGFpbC9zaXplX3R5cGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2RldGFpbC92YWx1ZV90eXBlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9kZXRhaWwvY29tbW9uLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IAotewotICAgIAotICAgIG5hbWVzcGFjZSByYW5nZV9kZXRhaWwKLSAgICB7Ci0gICAgICAgIC8vCi0gICAgICAgIC8vIHN0cl9iZWdpbigpCi0gICAgICAgIC8vCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJhbmdlX2JlZ2luPGNoYXJfcHRyXz4KLSAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNoYXIqIGZ1biggY2hhciogcyApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHM7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmFuZ2VfYmVnaW48Y29uc3RfY2hhcl9wdHJfPgotICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgY2hhciogZnVuKCBjb25zdCBjaGFyKiBzICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gczsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLSAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJhbmdlX2JlZ2luPHdjaGFyX3RfcHRyXz4KLSAgICAgICAgewotICAgICAgICAgICAgCi0gICAgICAgICAgICBzdGF0aWMgd2NoYXJfdCogZnVuKCB3Y2hhcl90KiBzICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gczsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCByYW5nZV9iZWdpbjxjb25zdF93Y2hhcl90X3B0cl8+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCB3Y2hhcl90KiBmdW4oIGNvbnN0IHdjaGFyX3QqIHMgKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBzOwotICAgICAgICAgICAgfQotICAgICAgICB9OwotICAgICAgICAKLSAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIEMgPgotICAgICAgICBpbmxpbmUgTkROQk9PU1RfUkFOR0VfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9pdGVyYXRvcjxDPjo6dHlwZSAKLSAgICAgICAgc3RyX2JlZ2luKCBDJiBjICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHJhbmdlX2RldGFpbDo6cmFuZ2VfYmVnaW48IE5ETkJPT1NUX1JBTkdFX0RFRFVDRURfVFlQRU5BTUUgCi0gICAgICAgICAgICAgICAgcmFuZ2VfZGV0YWlsOjpyYW5nZTxDPjo6dHlwZSA+OjpmdW4oIGMgKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vCi0gICAgICAgIC8vIHN0cl9lbmQoKQotICAgICAgICAvLwotCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJhbmdlX2VuZDxjaGFyX2FycmF5Xz4KLSAgICAgICAgewotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHN0ZDo6c2l6ZV90IHN6ID4KLSAgICAgICAgICAgIHN0YXRpYyBUKiBmdW4oIFQgTkROQk9PU1RfUkFOR0VfQVJSQVlfUkVGKClbc3pdICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gbmRuYm9vc3Q6OnJhbmdlX2RldGFpbDo6YXJyYXlfZW5kKCBib29zdF9yYW5nZV9hcnJheSApOwotICAgICAgICAgICAgfQotICAgICAgICB9OwotICAgICAgICAKLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmFuZ2VfZW5kPHdjaGFyX3RfYXJyYXlfPgotICAgICAgICB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgc3RkOjpzaXplX3Qgc3ogPgotICAgICAgICAgICAgc3RhdGljIFQqIGZ1biggVCBORE5CT09TVF9SQU5HRV9BUlJBWV9SRUYoKVtzel0gKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBuZG5ib29zdDo6cmFuZ2VfZGV0YWlsOjphcnJheV9lbmQoIGJvb3N0X3JhbmdlX2FycmF5ICk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0gICAgICAgIAotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCByYW5nZV9lbmQ8Y2hhcl9wdHJfPgotICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0aWMgY2hhciogZnVuKCBjaGFyKiBzICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gbmRuYm9vc3Q6OnJhbmdlX2RldGFpbDo6c3RyX2VuZCggcyApOwotICAgICAgICAgICAgfQotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJhbmdlX2VuZDxjb25zdF9jaGFyX3B0cl8+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyKiBmdW4oIGNvbnN0IGNoYXIqIHMgKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBuZG5ib29zdDo6cmFuZ2VfZGV0YWlsOjpzdHJfZW5kKCBzICk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmFuZ2VfZW5kPHdjaGFyX3RfcHRyXz4KLSAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIHdjaGFyX3QqIGZ1biggd2NoYXJfdCogcyApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjpyYW5nZV9kZXRhaWw6OnN0cl9lbmQoIHMgKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLQotCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJhbmdlX2VuZDxjb25zdF93Y2hhcl90X3B0cl8+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCB3Y2hhcl90KiBmdW4oIGNvbnN0IHdjaGFyX3QqIHMgKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBuZG5ib29zdDo6cmFuZ2VfZGV0YWlsOjpzdHJfZW5kKCBzICk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIEMgPgotICAgICAgICBpbmxpbmUgTkROQk9PU1RfUkFOR0VfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9pdGVyYXRvcjxDPjo6dHlwZSAKLSAgICAgICAgc3RyX2VuZCggQyYgYyApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiByYW5nZV9kZXRhaWw6OnJhbmdlX2VuZDwgTkROQk9PU1RfUkFOR0VfREVEVUNFRF9UWVBFTkFNRSAKLSAgICAgICAgICAgICAgICByYW5nZV9kZXRhaWw6OnJhbmdlPEM+Ojp0eXBlID46OmZ1biggYyApOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8KLSAgICAgICAgLy8gc2l6ZV90eXBlCi0gICAgICAgIC8vCi0KLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmFuZ2Vfc2l6ZV90eXBlXzxjaGFyX2FycmF5Xz4KLSAgICAgICAgeyAKLSAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBBID4KLSAgICAgICAgICAgIHN0cnVjdCBwdHMKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIHN0ZDo6c2l6ZV90IHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJhbmdlX3NpemVfdHlwZV88Y2hhcl9wdHJfPgotICAgICAgICB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUyA+Ci0gICAgICAgICAgICBzdHJ1Y3QgcHRzCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBzdGQ6OnNpemVfdCB0eXBlOwotICAgICAgICAgICAgfTsgICAgICAgICAKLSAgICAgICAgfTsKLSAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJhbmdlX3NpemVfdHlwZV88Y29uc3RfY2hhcl9wdHJfPgotICAgICAgICB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUyA+Ci0gICAgICAgICAgICBzdHJ1Y3QgcHRzCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBzdGQ6OnNpemVfdCB0eXBlOwotICAgICAgICAgICAgfTsgICAgICAgICAKLSAgICAgICAgfTsKLSAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJhbmdlX3NpemVfdHlwZV88d2NoYXJfdF9wdHJfPgotICAgICAgICB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUyA+Ci0gICAgICAgICAgICBzdHJ1Y3QgcHRzCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBzdGQ6OnNpemVfdCB0eXBlOwotICAgICAgICAgICAgfTsgICAgICAgICAKLSAgICAgICAgfTsKLSAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJhbmdlX3NpemVfdHlwZV88Y29uc3Rfd2NoYXJfdF9wdHJfPgotICAgICAgICB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUyA+Ci0gICAgICAgICAgICBzdHJ1Y3QgcHRzCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBzdGQ6OnNpemVfdCB0eXBlOwotICAgICAgICAgICAgfTsgICAgICAgICAKLSAgICAgICAgfTsgIAotCi0gICAgICAgIC8vCi0gICAgICAgIC8vIHZhbHVlX3R5cGUKLSAgICAgICAgLy8KLSAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJhbmdlX3ZhbHVlX3R5cGVfPGNoYXJfYXJyYXlfPgotICAgICAgICB7IAotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotICAgICAgICAgICAgc3RydWN0IHB0cwotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgY2hhciB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCByYW5nZV92YWx1ZV90eXBlXzxjaGFyX3B0cl8+Ci0gICAgICAgIHsKLSAgICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUyA+Ci0gICAgICAgICAgICAgc3RydWN0IHB0cwotICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgdHlwZWRlZiBjaGFyIHR5cGU7IAotICAgICAgICAgICAgIH07ICAgICAgICAgCi0gICAgICAgIH07Ci0gICAgICAgIAotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCByYW5nZV92YWx1ZV90eXBlXzxjb25zdF9jaGFyX3B0cl8+Ci0gICAgICAgIHsKLSAgICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUyA+Ci0gICAgICAgICAgICAgc3RydWN0IHB0cwotICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgdHlwZWRlZiBjb25zdCBjaGFyIHR5cGU7Ci0gICAgICAgICAgICAgfTsgICAgICAgICAKLSAgICAgICAgfTsKLSAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJhbmdlX3ZhbHVlX3R5cGVfPHdjaGFyX3RfcHRyXz4KLSAgICAgICAgewotICAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBTID4KLSAgICAgICAgICAgICBzdHJ1Y3QgcHRzCi0gICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICB0eXBlZGVmIHdjaGFyX3QgdHlwZTsKLSAgICAgICAgICAgICB9OyAgICAgICAgIAotICAgICAgICB9OwotICAgICAgICAKLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmFuZ2VfdmFsdWVfdHlwZV88Y29uc3Rfd2NoYXJfdF9wdHJfPgotICAgICAgICB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUyA+Ci0gICAgICAgICAgICBzdHJ1Y3QgcHRzCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBjb25zdCB3Y2hhcl90IHR5cGU7Ci0gICAgICAgICAgICB9OyAgICAgICAgIAotICAgICAgICB9OwotCi0gICAgfSAvLyBuYW1lc3BhY2UgJ3JhbmdlX2RldGFpbCcKLQotfSAvLyBuYW1lc3BhY2UgJ2Jvb3N0JwotCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9kZXRhaWwvZW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZGV0YWlsL2VuZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg3Zjg0OGMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9kZXRhaWwvZW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwMSArMCwwIEBACi0vLyBCb29zdC5SYW5nZSBsaWJyYXJ5Ci0vLwotLy8gIENvcHlyaWdodCBUaG9yc3RlbiBPdHRvc2VuIDIwMDMtMjAwNC4gVXNlLCBtb2RpZmljYXRpb24gYW5kCi0vLyAgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24KLS8vICAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3JhbmdlLwotLy8KLQotI2lmbmRlZiBORE5CT09TVF9SQU5HRV9ERVRBSUxfRU5EX0hQUAotI2RlZmluZSBORE5CT09TVF9SQU5HRV9ERVRBSUxfRU5EX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4gLy8gTkROQk9PU1RfTVNWQwotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKQotIyBpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9kZXRhaWwvdmM2L2VuZC5ocHA+Ci0jZWxzZQotIyBpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9kZXRhaWwvaW1wbGVtZW50YXRpb25faGVscC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2l0ZXJhdG9yLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvZGV0YWlsL2NvbW1vbi5ocHA+Ci0jIGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzEwKQotIyAgaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvZGV0YWlsL3JlbW92ZV9leHRlbnQuaHBwPgotIyBlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLSAgICBuYW1lc3BhY2UgcmFuZ2VfZGV0YWlsCi0gICAgewotICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci0gICAgICAgIHN0cnVjdCByYW5nZV9lbmQ7Ci0KLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgICAgICAvLyBkZWZhdWx0Ci0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCByYW5nZV9lbmQ8c3RkX2NvbnRhaW5lcl8+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBDID4KLSAgICAgICAgICAgIHN0YXRpYyBORE5CT09TVF9SQU5HRV9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX2l0ZXJhdG9yPEM+Ojp0eXBlCi0gICAgICAgICAgICBmdW4oIEMmIGMgKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBjLmVuZCgpOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLQotICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgICAgIC8vIHBhaXIKLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJhbmdlX2VuZDxzdGRfcGFpcl8+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQID4KLSAgICAgICAgICAgIHN0YXRpYyBORE5CT09TVF9SQU5HRV9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX2l0ZXJhdG9yPFA+Ojp0eXBlCi0gICAgICAgICAgICBmdW4oIGNvbnN0IFAmIHAgKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBwLnNlY29uZDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLQotICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgICAgIC8vIGFycmF5Ci0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCByYW5nZV9lbmQ8YXJyYXlfPgotICAgICAgICB7Ci0gICAgICAgICNpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMTApCi0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgc3RkOjpzaXplX3Qgc3ogPgotICAgICAgICAgICAgc3RhdGljIFQqIGZ1biggVCBORE5CT09TVF9SQU5HRV9BUlJBWV9SRUYoKVtzel0gKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBuZG5ib29zdDo6cmFuZ2VfZGV0YWlsOjphcnJheV9lbmQoIGJvb3N0X3JhbmdlX2FycmF5ICk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICNlbHNlCi0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICAgICAgc3RhdGljIE5ETkJPT1NUX1JBTkdFX0RFRFVDRURfVFlQRU5BTUUgcmVtb3ZlX2V4dGVudDxUPjo6dHlwZSogZnVuKFQmIHQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHQgKyByZW1vdmVfZXh0ZW50PFQ+OjpzaXplOwotICAgICAgICAgICAgfQotICAgICAgICAjZW5kaWYKLSAgICAgICAgfTsKLQotICAgIH0gLy8gbmFtZXNwYWNlICdyYW5nZV9kZXRhaWwnCi0KLSAgICBuYW1lc3BhY2UgcmFuZ2VfYWRsX2JhcnJpZXIKLSAgICB7Ci0gICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBDID4KLSAgICAgICAgaW5saW5lIE5ETkJPT1NUX1JBTkdFX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfaXRlcmF0b3I8Qz46OnR5cGUKLSAgICAgICAgZW5kKCBDJiBjICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHJhbmdlX2RldGFpbDo6cmFuZ2VfZW5kPCBORE5CT09TVF9SQU5HRV9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX2RldGFpbDo6cmFuZ2U8Qz46OnR5cGUgPjo6ZnVuKCBjICk7Ci0gICAgICAgIH0KLSAgICB9IC8vIG5hbWVzcGFjZSByYW5nZV9hZGxfYmFycmllcgotCi19IC8vIG5hbWVzcGFjZSAnYm9vc3QnCi0KLSMgZW5kaWYgLy8gVkM2Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZGV0YWlsL2V4dHJhY3Rfb3B0aW9uYWxfdHlwZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2RldGFpbC9leHRyYWN0X29wdGlvbmFsX3R5cGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NmE0N2I1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZGV0YWlsL2V4dHJhY3Rfb3B0aW9uYWxfdHlwZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi0vLyBCb29zdC5SYW5nZSBsaWJyYXJ5Ci0vLwotLy8gIENvcHlyaWdodCBBcm5vIFNjaG9lZGwgJiBOZWlsIEdyb3ZlcyAyMDA5LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLS8vICBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvcmFuZ2UvCi0vLwotI2lmbmRlZiBORE5CT09TVF9SQU5HRV9ERVRBSUxfRVhUUkFDVF9PUFRJT05BTF9UWVBFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9SQU5HRV9ERVRBSUxfRVhUUkFDVF9PUFRJT05BTF9UWVBFX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEyMDApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLSNpZmRlZiBORE5CT09TVF9OT19QQVJUSUFMX1NQRUNJQUxJWkFUSU9OX0lNUExJQ0lUX0RFRkFVTFRfQVJHUwotCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkdFX0VYVFJBQ1RfT1BUSU9OQUxfVFlQRSggYV90eXBlZGVmICkgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBDID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBzdHJ1Y3QgZXh0cmFjdF8gIyMgYV90eXBlZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgQzo6YV90eXBlZGVmIHR5cGU7ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9OwotCi0jZWxzZQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotICAgIG5hbWVzcGFjZSByYW5nZV9kZXRhaWwgewotICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBleGlzdHMgeyB0eXBlZGVmIHZvaWQgdHlwZTsgfTsKLSAgICB9Ci19Ci0KLS8vIERlZmluZXMgZXh0cmFjdF9zb21lX3R5cGVkZWY8VD4gd2hpY2ggZXhwb3NlcyBUOjpzb21lX3R5cGVkZWYgYXMKLS8vIGV4dHJhY3Rfc29tZV90eXBlZGVmPFQ+Ojp0eXBlIGlmIFQ6OnNvbWVfdHlwZWRlZiBleGlzdHMuIE90aGVyd2lzZQotLy8gZXh0cmFjdF9zb21lX3R5cGVkZWY8VD4gaXMgZW1wdHkuCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkdFX0VYVFJBQ1RfT1BUSU9OQUxfVFlQRSggYV90eXBlZGVmICkgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBDLCB0eXBlbmFtZSBFbmFibGU9dm9pZCA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBzdHJ1Y3QgZXh0cmFjdF8gIyMgYV90eXBlZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAge307ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBDID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBzdHJ1Y3QgZXh0cmFjdF8gIyMgYV90eXBlZGVmPCBDICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgLCBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIG5kbmJvb3N0OjpyYW5nZV9kZXRhaWw6OmV4aXN0czwgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBDOjphX3R5cGVkZWYgPjo6dHlwZSBcCi0gICAgPiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgQzo6YV90eXBlZGVmIHR5cGU7ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9OwotCi0jZW5kaWYKLQotI2VuZGlmIC8vIGluY2x1ZGUgZ3VhcmQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZGV0YWlsL2ltcGxlbWVudGF0aW9uX2hlbHAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9kZXRhaWwvaW1wbGVtZW50YXRpb25faGVscC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzMTBiNDQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9kZXRhaWwvaW1wbGVtZW50YXRpb25faGVscC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDMgKzAsMCBAQAotLy8gQm9vc3QuUmFuZ2UgbGlicmFyeQotLy8KLS8vICBDb3B5cmlnaHQgVGhvcnN0ZW4gT3R0b3NlbiAyMDAzLTIwMDQuIFVzZSwgbW9kaWZpY2F0aW9uIGFuZAotLy8gIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uCi0vLyAgMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9yYW5nZS8KLS8vCi0KLSNpZm5kZWYgTkROQk9PU1RfUkFOR0VfREVUQUlMX0lNUExFTUVOVEFUSU9OX0hFTFBfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkdFX0RFVEFJTF9JTVBMRU1FTlRBVElPTl9IRUxQX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9kZXRhaWwvY29tbW9uLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcD4KLSNpbmNsdWRlIDxjc3RkZGVmPgotI2luY2x1ZGUgPHN0cmluZy5oPgotCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NXQ0hBUgotI2luY2x1ZGUgPHdjaGFyLmg+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0gICAgbmFtZXNwYWNlIHJhbmdlX2RldGFpbAotICAgIHsKLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgICAgIGlubGluZSB2b2lkIGJvb3N0X3JhbmdlX3NpbGVuY2Vfd2FybmluZyggY29uc3QgVCYgKSB7IH0KLQotICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAgICAgLy8gZW5kKCkgaGVscAotICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotICAgICAgICBpbmxpbmUgY29uc3QgY2hhciogc3RyX2VuZCggY29uc3QgY2hhciogcywgY29uc3QgY2hhciogKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gcyArIHN0cmxlbiggcyApOwotICAgICAgICB9Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1dDSEFSCi0gICAgICAgIGlubGluZSBjb25zdCB3Y2hhcl90KiBzdHJfZW5kKCBjb25zdCB3Y2hhcl90KiBzLCBjb25zdCB3Y2hhcl90KiApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBzICsgd2NzbGVuKCBzICk7Ci0gICAgICAgIH0KLSNlbHNlCi0gICAgICAgIGlubGluZSBjb25zdCB3Y2hhcl90KiBzdHJfZW5kKCBjb25zdCB3Y2hhcl90KiBzLCBjb25zdCB3Y2hhcl90KiApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmKCBzID09IDAgfHwgc1swXSA9PSAwICkKLSAgICAgICAgICAgICAgICByZXR1cm4gczsKLSAgICAgICAgICAgIHdoaWxlKCAqKytzICE9IDAgKQotICAgICAgICAgICAgICAgIDsKLSAgICAgICAgICAgIHJldHVybiBzOwotICAgICAgICB9Ci0jZW5kaWYKLQotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgQ2hhciA+Ci0gICAgICAgIGlubGluZSBDaGFyKiBzdHJfZW5kKCBDaGFyKiBzICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8Q2hhcio+KCBzdHJfZW5kKCBzLCBzICkgKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBULCBzdGQ6OnNpemVfdCBzeiA+Ci0gICAgICAgIGlubGluZSBUKiBhcnJheV9lbmQoIFQgTkROQk9PU1RfUkFOR0VfQVJSQVlfUkVGKClbc3pdICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGJvb3N0X3JhbmdlX2FycmF5ICsgc3o7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgVCwgc3RkOjpzaXplX3Qgc3ogPgotICAgICAgICBpbmxpbmUgY29uc3QgVCogYXJyYXlfZW5kKCBjb25zdCBUIE5ETkJPT1NUX1JBTkdFX0FSUkFZX1JFRigpW3N6XSApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBib29zdF9yYW5nZV9hcnJheSArIHN6OwotICAgICAgICB9Ci0KLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgICAgIC8vIHNpemUoKSBoZWxwCi0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBDaGFyID4KLSAgICAgICAgaW5saW5lIHN0ZDo6c2l6ZV90IHN0cl9zaXplKCBjb25zdCBDaGFyKiBjb25zdCYgcyApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBzdHJfZW5kKCBzICkgLSBzOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFQsIHN0ZDo6c2l6ZV90IHN6ID4KLSAgICAgICAgaW5saW5lIHN0ZDo6c2l6ZV90IGFycmF5X3NpemUoIFQgTkROQk9PU1RfUkFOR0VfQVJSQVlfUkVGKClbc3pdICkKLSAgICAgICAgewotICAgICAgICAgICAgYm9vc3RfcmFuZ2Vfc2lsZW5jZV93YXJuaW5nKCBib29zdF9yYW5nZV9hcnJheSApOwotICAgICAgICAgICAgcmV0dXJuIHN6OwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFQsIHN0ZDo6c2l6ZV90IHN6ID4KLSAgICAgICAgaW5saW5lIHN0ZDo6c2l6ZV90IGFycmF5X3NpemUoIGNvbnN0IFQgTkROQk9PU1RfUkFOR0VfQVJSQVlfUkVGKClbc3pdICkKLSAgICAgICAgewotICAgICAgICAgICAgYm9vc3RfcmFuZ2Vfc2lsZW5jZV93YXJuaW5nKCBib29zdF9yYW5nZV9hcnJheSApOwotICAgICAgICAgICAgcmV0dXJuIHN6OwotICAgICAgICB9Ci0KLSAgICB9IC8vIG5hbWVzcGFjZSAncmFuZ2VfZGV0YWlsJwotCi19IC8vIG5hbWVzcGFjZSAnYm9vc3QnCi0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2RldGFpbC9pdGVyYXRvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2RldGFpbC9pdGVyYXRvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk0N2I4M2UuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9kZXRhaWwvaXRlcmF0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzggKzAsMCBAQAotLy8gQm9vc3QuUmFuZ2UgbGlicmFyeQotLy8KLS8vICBDb3B5cmlnaHQgVGhvcnN0ZW4gT3R0b3NlbiAyMDAzLTIwMDQuIFVzZSwgbW9kaWZpY2F0aW9uIGFuZAotLy8gIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uCi0vLyAgMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9yYW5nZS8KLS8vCi0KLSNpZm5kZWYgTkROQk9PU1RfUkFOR0VfREVUQUlMX0lURVJBVE9SX0hQUAotI2RlZmluZSBORE5CT09TVF9SQU5HRV9ERVRBSUxfSVRFUkFUT1JfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9kZXRhaWwvY29tbW9uLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9kZXRhaWwvcmVtb3ZlX2V4dGVudC5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9zdGF0aWNfYXNzZXJ0LmhwcD4KLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLyBtaXNzaW5nIHBhcnRpYWwgc3BlY2lhbGl6YXRpb24gIHdvcmthcm91bmQuCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IAotewotICAgIG5hbWVzcGFjZSByYW5nZV9kZXRhaWwgCi0gICAgeyAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLSAgICAgICAgc3RydWN0IHJhbmdlX2l0ZXJhdG9yXyB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgQyA+Ci0gICAgICAgICAgICBzdHJ1Y3QgcHRzCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBpbnQgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmFuZ2VfaXRlcmF0b3JfPHN0ZF9jb250YWluZXJfPgotICAgICAgICB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgQyA+Ci0gICAgICAgICAgICBzdHJ1Y3QgcHRzCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9SQU5HRV9ERURVQ0VEX1RZUEVOQU1FIEM6Oml0ZXJhdG9yIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJhbmdlX2l0ZXJhdG9yXzxzdGRfcGFpcl8+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQID4KLSAgICAgICAgICAgIHN0cnVjdCBwdHMKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1JBTkdFX0RFRFVDRURfVFlQRU5BTUUgUDo6Zmlyc3RfdHlwZSB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCByYW5nZV9pdGVyYXRvcl88YXJyYXlfPgotICAgICAgICB7IAotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotICAgICAgICAgICAgc3RydWN0IHB0cwotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfUkFOR0VfREVEVUNFRF9UWVBFTkFNRSAKLSAgICAgICAgICAgICAgICAgICAgcmVtb3ZlX2V4dGVudDxUPjo6dHlwZSogdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0gICAgICAgIAotICAgIH0gCi0KLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgQyA+Ci0gICAgY2xhc3MgcmFuZ2VfbXV0YWJsZV9pdGVyYXRvcgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9SQU5HRV9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX2RldGFpbDo6cmFuZ2U8Qz46OnR5cGUgY190eXBlOwotICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByYW5nZV9kZXRhaWw6OnJhbmdlX2l0ZXJhdG9yXzxjX3R5cGU+OjpORE5CT09TVF9ORVNURURfVEVNUExBVEUgcHRzPEM+Ojp0eXBlIHR5cGU7IAotICAgIH07Ci19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9kZXRhaWwvbWlzY19jb25jZXB0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZGV0YWlsL21pc2NfY29uY2VwdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1MGRlMzguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9kZXRhaWwvbWlzY19jb25jZXB0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLS8vIEJvb3N0LlJhbmdlIGxpYnJhcnkgY29uY2VwdCBjaGVja3MKLS8vCi0vLyAgQ29weXJpZ2h0IE5laWwgR3JvdmVzIDIwMDkuIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24KLS8vICBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0jaWZuZGVmIE5ETkJPT1NUX1JBTkdFX0RFVEFJTF9NSVNDX0NPTkNFUFRfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1JBTkdFX0RFVEFJTF9NSVNDX0NPTkNFUFRfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25jZXB0X2NoZWNrLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0gICAgbmFtZXNwYWNlIHJhbmdlX2RldGFpbAotICAgIHsKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotICAgICAgICBjbGFzcyBTYW1lVHlwZUNvbmNlcHQKLSAgICAgICAgewotICAgICAgICBwdWJsaWM6Ci0gICAgICAgICAgICBORE5CT09TVF9DT05DRVBUX1VTQUdFKFNhbWVUeXBlQ29uY2VwdCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBzYW1lX3R5cGUoYSxiKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgcHJpdmF0ZToKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgc2FtZV90eXBlKFQsVCkge30KLSAgICAgICAgICAgIFQxIGE7Ci0gICAgICAgICAgICBUMiBiOwotICAgICAgICB9OwotICAgIH0KLX0KLQotI2VuZGlmIC8vIGluY2x1ZGUgZ3VhcmQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZGV0YWlsL3JlbW92ZV9leHRlbnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9kZXRhaWwvcmVtb3ZlX2V4dGVudC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlZTBlMzQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9kZXRhaWwvcmVtb3ZlX2V4dGVudC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTcgKzAsMCBAQAotLy8gQm9vc3QuUmFuZ2UgbGlicmFyeQotLy8KLS8vICBDb3B5cmlnaHQgSm9uYXRoYW4gVHVya2FuaXMgMjAwNS4gVXNlLCBtb2RpZmljYXRpb24gYW5kCi0vLyAgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24KLS8vICAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3JhbmdlLwotLy8KLQotCi0jaWZuZGVmIE5ETkJPT1NUX1JBTkdFX0RFVEFJTF9SRU1PVkVfQk9VTkRTX0hQUAotI2RlZmluZSBORE5CT09TVF9SQU5HRV9ERVRBSUxfUkVNT1ZFX0JPVU5EU19IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+ICAvLyBNU1ZDLCBOT19JTlRSSU5TSUNfV0NIQVJfVCwgcHV0IHNpemVfdCBpbiBzdGQuCi0jaW5jbHVkZSA8Y3N0ZGRlZj4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvZXZhbF9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lkZW50aXR5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IAotewotICAgIG5hbWVzcGFjZSByYW5nZV9kZXRhaWwKLSAgICB7Ci0gICAgICAgIAotICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgQ2FzZTEgPSBtcGw6OnRydWVfLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgVHlwZTEgPSBtcGw6OnZvaWRfLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgQ2FzZTIgPSBtcGw6OnRydWVfLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgVHlwZTIgPSBtcGw6OnZvaWRfLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgQ2FzZTMgPSBtcGw6OnRydWVfLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgVHlwZTMgPSBtcGw6OnZvaWRfLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgQ2FzZTQgPSBtcGw6OnRydWVfLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgVHlwZTQgPSBtcGw6OnZvaWRfLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgQ2FzZTUgPSBtcGw6OnRydWVfLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgVHlwZTUgPSBtcGw6OnZvaWRfLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgQ2FzZTYgPSBtcGw6OnRydWVfLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgVHlwZTYgPSBtcGw6OnZvaWRfLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgQ2FzZTcgPSBtcGw6OnRydWVfLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgVHlwZTcgPSBtcGw6OnZvaWRfLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgQ2FzZTggPSBtcGw6OnRydWVfLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgVHlwZTggPSBtcGw6OnZvaWRfLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgQ2FzZTkgPSBtcGw6OnRydWVfLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgVHlwZTkgPSBtcGw6OnZvaWRfLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgQ2FzZTEwID0gbXBsOjp0cnVlXywKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIFR5cGUxMCA9IG1wbDo6dm9pZF8sCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBDYXNlMTEgPSBtcGw6OnRydWVfLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgVHlwZTExID0gbXBsOjp2b2lkXywKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIENhc2UxMiA9IG1wbDo6dHJ1ZV8sCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBUeXBlMTIgPSBtcGw6OnZvaWRfLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgQ2FzZTEzID0gbXBsOjp0cnVlXywKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIFR5cGUxMyA9IG1wbDo6dm9pZF8sCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBDYXNlMTQgPSBtcGw6OnRydWVfLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgVHlwZTE0ID0gbXBsOjp2b2lkXywKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIENhc2UxNSA9IG1wbDo6dHJ1ZV8sCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBUeXBlMTUgPSBtcGw6OnZvaWRfLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgQ2FzZTE2ID0gbXBsOjp0cnVlXywKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIFR5cGUxNiA9IG1wbDo6dm9pZF8sCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBDYXNlMTcgPSBtcGw6OnRydWVfLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgVHlwZTE3ID0gbXBsOjp2b2lkXywKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIENhc2UxOCA9IG1wbDo6dHJ1ZV8sCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBUeXBlMTggPSBtcGw6OnZvaWRfLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgQ2FzZTE5ID0gbXBsOjp0cnVlXywKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIFR5cGUxOSA9IG1wbDo6dm9pZF8sCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBDYXNlMjAgPSBtcGw6OnRydWVfLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgVHlwZTIwID0gbXBsOjp2b2lkXz4KLSAgICAgICAgc3RydWN0IHNlbGVjdCB7Ci0gICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lCi0gICAgICAgICAgICAgICAgICAgIG1wbDo6ZXZhbF9pZjwKLSAgICAgICAgICAgICAgICAgICAgICAgIENhc2UxLCBtcGw6OmlkZW50aXR5PFR5cGUxPiwgbXBsOjpldmFsX2lmPAotICAgICAgICAgICAgICAgICAgICAgICAgQ2FzZTIsIG1wbDo6aWRlbnRpdHk8VHlwZTI+LCBtcGw6OmV2YWxfaWY8Ci0gICAgICAgICAgICAgICAgICAgICAgICBDYXNlMywgbXBsOjppZGVudGl0eTxUeXBlMz4sIG1wbDo6ZXZhbF9pZjwKLSAgICAgICAgICAgICAgICAgICAgICAgIENhc2U0LCBtcGw6OmlkZW50aXR5PFR5cGU0PiwgbXBsOjpldmFsX2lmPAotICAgICAgICAgICAgICAgICAgICAgICAgQ2FzZTUsIG1wbDo6aWRlbnRpdHk8VHlwZTU+LCBtcGw6OmV2YWxfaWY8Ci0gICAgICAgICAgICAgICAgICAgICAgICBDYXNlNiwgbXBsOjppZGVudGl0eTxUeXBlNj4sIG1wbDo6ZXZhbF9pZjwKLSAgICAgICAgICAgICAgICAgICAgICAgIENhc2U3LCBtcGw6OmlkZW50aXR5PFR5cGU3PiwgbXBsOjpldmFsX2lmPAotICAgICAgICAgICAgICAgICAgICAgICAgQ2FzZTgsIG1wbDo6aWRlbnRpdHk8VHlwZTg+LCBtcGw6OmV2YWxfaWY8Ci0gICAgICAgICAgICAgICAgICAgICAgICBDYXNlOSwgbXBsOjppZGVudGl0eTxUeXBlOT4sIG1wbDo6aWZfPAotICAgICAgICAgICAgICAgICAgICAgICAgQ2FzZTEwLCBUeXBlMTAsIG1wbDo6dm9pZF8gPiA+ID4gPiA+ID4gPiA+ID4KLSAgICAgICAgICAgICAgICAgICAgPjo6dHlwZSByZXN1bHQxOwotICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZQotICAgICAgICAgICAgICAgICAgICBtcGw6OmV2YWxfaWY8Ci0gICAgICAgICAgICAgICAgICAgICAgICBDYXNlMTEsIG1wbDo6aWRlbnRpdHk8VHlwZTExPiwgbXBsOjpldmFsX2lmPAotICAgICAgICAgICAgICAgICAgICAgICAgQ2FzZTEyLCBtcGw6OmlkZW50aXR5PFR5cGUxMj4sIG1wbDo6ZXZhbF9pZjwKLSAgICAgICAgICAgICAgICAgICAgICAgIENhc2UxMywgbXBsOjppZGVudGl0eTxUeXBlMTM+LCBtcGw6OmV2YWxfaWY8Ci0gICAgICAgICAgICAgICAgICAgICAgICBDYXNlMTQsIG1wbDo6aWRlbnRpdHk8VHlwZTE0PiwgbXBsOjpldmFsX2lmPAotICAgICAgICAgICAgICAgICAgICAgICAgQ2FzZTE1LCBtcGw6OmlkZW50aXR5PFR5cGUxNT4sIG1wbDo6ZXZhbF9pZjwKLSAgICAgICAgICAgICAgICAgICAgICAgIENhc2UxNiwgbXBsOjppZGVudGl0eTxUeXBlMTY+LCBtcGw6OmV2YWxfaWY8Ci0gICAgICAgICAgICAgICAgICAgICAgICBDYXNlMTcsIG1wbDo6aWRlbnRpdHk8VHlwZTE3PiwgbXBsOjpldmFsX2lmPAotICAgICAgICAgICAgICAgICAgICAgICAgQ2FzZTE4LCBtcGw6OmlkZW50aXR5PFR5cGUxOD4sIG1wbDo6ZXZhbF9pZjwKLSAgICAgICAgICAgICAgICAgICAgICAgIENhc2UxOSwgbXBsOjppZGVudGl0eTxUeXBlMTk+LCBtcGw6OmlmXzwKLSAgICAgICAgICAgICAgICAgICAgICAgIENhc2UyMCwgVHlwZTIwLCBtcGw6OnZvaWRfID4gPiA+ID4gPiA+ID4gPiA+Ci0gICAgICAgICAgICAgICAgICAgID4gcmVzdWx0MjsKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgICAgCi0gICAgICAgICAgICAgICAgICAgIG1wbDo6ZXZhbF9pZjwKLSAgICAgICAgICAgICAgICAgICAgICAgIGlzX3NhbWU8cmVzdWx0MSwgbXBsOjp2b2lkXz4sCi0gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQyLAotICAgICAgICAgICAgICAgICAgICAgICAgbXBsOjppZGVudGl0eTxyZXN1bHQxPgotICAgICAgICAgICAgICAgICAgICA+Ojp0eXBlIHR5cGU7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgc3RydWN0IHJlbW92ZV9leHRlbnQgewotICAgICAgICAgICAgc3RhdGljIFQqIGFyOwotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHN0ZDo6c2l6ZV90LCBzaXplID0gc2l6ZW9mKCphcikgLyBzaXplb2YoKCphcilbMF0pKTsKLQotICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZQotICAgICAgICAgICAgICAgICAgICBzZWxlY3Q8Ci0gICAgICAgICAgICAgICAgICAgICAgICBpc19zYW1lPFQsIGJvb2xbc2l6ZV0+LCAgICAgICAgICAgICAgICAgIGJvb2wsCi0gICAgICAgICAgICAgICAgICAgICAgICBpc19zYW1lPFQsIGNoYXJbc2l6ZV0+LCAgICAgICAgICAgICAgICAgIGNoYXIsCi0gICAgICAgICAgICAgICAgICAgICAgICBpc19zYW1lPFQsIHNpZ25lZCBjaGFyW3NpemVdPiwgICAgICAgICAgIHNpZ25lZCBjaGFyLAotICAgICAgICAgICAgICAgICAgICAgICAgaXNfc2FtZTxULCB1bnNpZ25lZCBjaGFyW3NpemVdPiwgICAgICAgICB1bnNpZ25lZCBjaGFyLAotICAgICAgICAgICAgICAgICAgICAjaWZuZGVmIE5ETkJPT1NUX05PX0lOVFJJTlNJQ19XQ0hBUl9UCi0gICAgICAgICAgICAgICAgICAgICAgICBpc19zYW1lPFQsIHdjaGFyX3Rbc2l6ZV0+LCAgICAgICAgICAgICAgIHdjaGFyX3QsCi0gICAgICAgICAgICAgICAgICAgICNlbmRpZgotICAgICAgICAgICAgICAgICAgICAgICAgaXNfc2FtZTxULCBzaG9ydFtzaXplXT4sICAgICAgICAgICAgICAgICBzaG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGlzX3NhbWU8VCwgdW5zaWduZWQgc2hvcnRbc2l6ZV0+LCAgICAgICAgdW5zaWduZWQgc2hvcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICBpc19zYW1lPFQsIGludFtzaXplXT4sICAgICAgICAgICAgICAgICAgIGludCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGlzX3NhbWU8VCwgdW5zaWduZWQgaW50W3NpemVdPiwgICAgICAgICAgdW5zaWduZWQgaW50LAotICAgICAgICAgICAgICAgICAgICAgICAgaXNfc2FtZTxULCBsb25nW3NpemVdPiwgICAgICAgICAgICAgICAgICBsb25nLAotICAgICAgICAgICAgICAgICAgICAgICAgaXNfc2FtZTxULCB1bnNpZ25lZCBsb25nW3NpemVdPiwgICAgICAgICB1bnNpZ25lZCBsb25nLAotICAgICAgICAgICAgICAgICAgICAgICAgaXNfc2FtZTxULCBmbG9hdFtzaXplXT4sICAgICAgICAgICAgICAgICBmbG9hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGlzX3NhbWU8VCwgZG91YmxlW3NpemVdPiwgICAgICAgICAgICAgICAgZG91YmxlLAotICAgICAgICAgICAgICAgICAgICAgICAgaXNfc2FtZTxULCBsb25nIGRvdWJsZVtzaXplXT4sICAgICAgICAgICBsb25nIGRvdWJsZQotICAgICAgICAgICAgICAgICAgICA+Ojp0eXBlIHJlc3VsdDE7Ci0gICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lCi0gICAgICAgICAgICAgICAgICAgIHNlbGVjdDwKLSAgICAgICAgICAgICAgICAgICAgICAgIGlzX3NhbWU8VCwgY29uc3QgYm9vbFtzaXplXT4sICAgICAgICAgICAgY29uc3QgYm9vbCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGlzX3NhbWU8VCwgY29uc3QgY2hhcltzaXplXT4sICAgICAgICAgICAgY29uc3QgY2hhciwKLSAgICAgICAgICAgICAgICAgICAgICAgIGlzX3NhbWU8VCwgY29uc3Qgc2lnbmVkIGNoYXJbc2l6ZV0+LCAgICAgY29uc3Qgc2lnbmVkIGNoYXIsCi0gICAgICAgICAgICAgICAgICAgICAgICBpc19zYW1lPFQsIGNvbnN0IHVuc2lnbmVkIGNoYXJbc2l6ZV0+LCAgIGNvbnN0IHVuc2lnbmVkIGNoYXIsCi0gICAgICAgICAgICAgICAgICAgICNpZm5kZWYgTkROQk9PU1RfTk9fSU5UUklOU0lDX1dDSEFSX1QKLSAgICAgICAgICAgICAgICAgICAgICAgIGlzX3NhbWU8VCwgY29uc3Qgd2NoYXJfdFtzaXplXT4sICAgICAgICAgY29uc3Qgd2NoYXJfdCwKLSAgICAgICAgICAgICAgICAgICAgI2VuZGlmCi0gICAgICAgICAgICAgICAgICAgICAgICBpc19zYW1lPFQsIGNvbnN0IHNob3J0W3NpemVdPiwgICAgICAgICAgIGNvbnN0IHNob3J0LAotICAgICAgICAgICAgICAgICAgICAgICAgaXNfc2FtZTxULCBjb25zdCB1bnNpZ25lZCBzaG9ydFtzaXplXT4sICBjb25zdCB1bnNpZ25lZCBzaG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGlzX3NhbWU8VCwgY29uc3QgaW50W3NpemVdPiwgICAgICAgICAgICAgY29uc3QgaW50LAotICAgICAgICAgICAgICAgICAgICAgICAgaXNfc2FtZTxULCBjb25zdCB1bnNpZ25lZCBpbnRbc2l6ZV0+LCAgICBjb25zdCB1bnNpZ25lZCBpbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICBpc19zYW1lPFQsIGNvbnN0IGxvbmdbc2l6ZV0+LCAgICAgICAgICAgIGNvbnN0IGxvbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICBpc19zYW1lPFQsIGNvbnN0IHVuc2lnbmVkIGxvbmdbc2l6ZV0+LCAgIGNvbnN0IHVuc2lnbmVkIGxvbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICBpc19zYW1lPFQsIGNvbnN0IGZsb2F0W3NpemVdPiwgICAgICAgICAgIGNvbnN0IGZsb2F0LAotICAgICAgICAgICAgICAgICAgICAgICAgaXNfc2FtZTxULCBjb25zdCBkb3VibGVbc2l6ZV0+LCAgICAgICAgICBjb25zdCBkb3VibGUsCi0gICAgICAgICAgICAgICAgICAgICAgICBpc19zYW1lPFQsIGNvbnN0IGxvbmcgZG91YmxlW3NpemVdPiwgICAgIGNvbnN0IGxvbmcgZG91YmxlCi0gICAgICAgICAgICAgICAgICAgID4gcmVzdWx0MjsKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUKLSAgICAgICAgICAgICAgICAgICAgbXBsOjpldmFsX2lmPAotICAgICAgICAgICAgICAgICAgICAgICAgaXNfc2FtZTxyZXN1bHQxLCBtcGw6OnZvaWRfPiwKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdDIsCi0gICAgICAgICAgICAgICAgICAgICAgICBtcGw6OmlkZW50aXR5PHJlc3VsdDE+Ci0gICAgICAgICAgICAgICAgICAgID46OnR5cGUgdHlwZTsKLSAgICAgICAgfTsKLQotICAgIH0gLy8gbmFtZXNwYWNlICdyYW5nZV9kZXRhaWwnCi0KLX0gLy8gbmFtZXNwYWNlICdib29zdCcKLQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZGV0YWlsL3NhZmVfYm9vbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2RldGFpbC9zYWZlX2Jvb2wuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNWEwNzMxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZGV0YWlsL3NhZmVfYm9vbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MiArMCwwIEBACi0vLyAgVGhpcyBoZWFkZXIgaW50ZW50aW9uYWxseSBoYXMgbm8gaW5jbHVkZSBndWFyZHMuCi0vLwotLy8gIENvcHlyaWdodCAoYykgMjAxMCBOZWlsIEdyb3ZlcwotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICBTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQKLS8vCi0vLyBUaGlzIGNvZGUgdXRpbGlzZXMgdGhlIGV4cGVyaWVuY2UgZ2FpbmVkIGR1cmluZyB0aGUgZXZvbHV0aW9uIG9mCi0vLyA8bmRuYm9vc3Qvc21hcnRfcHRyL29wZXJhdG9yX2Jvb2wuaHBwPgotI2lmbmRlZiBORE5CT09TVF9SQU5HRV9TQUZFX0JPT0xfSU5DTFVERURfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkdFX1NBRkVfQk9PTF9JTkNMVURFRF9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvY29uZmlnLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0gICAgbmFtZXNwYWNlIHJhbmdlX2RldGFpbAotICAgIHsKLQotdGVtcGxhdGU8Y2xhc3MgRGF0YU1lbWJlclB0cj4KLWNsYXNzIHNhZmVfYm9vbAotewotcHVibGljOgotICAgIHR5cGVkZWYgc2FmZV9ib29sIHRoaXNfdHlwZTsKLQotI2lmIChkZWZpbmVkKF9fU1VOUFJPX0NDKSAmJiBORE5CT09TVF9XT1JLQVJPVU5EKF9fU1VOUFJPX0NDLCA8IDB4NTcwKSkgfHwgZGVmaW5lZChfX0NJTlRfKQotICAgIHR5cGVkZWYgYm9vbCB1bnNwZWNpZmllZF9ib29sX3R5cGU7Ci0gICAgc3RhdGljIHVuc3BlY2lmaWVkX2Jvb2xfdHlwZSB0b191bnNwZWNpZmllZF9ib29sKGNvbnN0IGJvb2wgeCwgRGF0YU1lbWJlclB0cikKLSAgICB7Ci0gICAgICAgIHJldHVybiB4OwotICAgIH0KLSNlbGlmIGRlZmluZWQoX01BTkFHRUQpCi0gICAgc3RhdGljIHZvaWQgdW5zcGVjaWZpZWRfYm9vbCh0aGlzX3R5cGUqKiopCi0gICAgewotICAgIH0KLSAgICB0eXBlZGVmIHZvaWQoKnVuc3BlY2lmaWVkX2Jvb2xfdHlwZSkodGhpc190eXBlKioqKTsKLSAgICBzdGF0aWMgdW5zcGVjaWZpZWRfYm9vbF90eXBlIHRvX3Vuc3BlY2lmaWVkX2Jvb2woY29uc3QgYm9vbCB4LCBEYXRhTWVtYmVyUHRyKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHggPyB1bnNwZWNpZmllZF9ib29sIDogMDsKLSAgICB9Ci0jZWxpZiBcCi0gICAgKCBkZWZpbmVkKF9fTVdFUktTX18pICYmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19NV0VSS1NfXywgPCAweDMyMDApICkgfHwgXAotICAgICggZGVmaW5lZChfX0dOVUNfXykgJiYgKF9fR05VQ19fICogMTAwICsgX19HTlVDX01JTk9SX18gPCAzMDQpICkgfHwgXAotICAgICggZGVmaW5lZChfX1NVTlBST19DQykgJiYgTkROQk9PU1RfV09SS0FST1VORChfX1NVTlBST19DQywgPD0gMHg1OTApICkKLQotICAgIHR5cGVkZWYgYm9vbCAodGhpc190eXBlOjoqdW5zcGVjaWZpZWRfYm9vbF90eXBlKSgpIGNvbnN0OwotCi0gICAgc3RhdGljIHVuc3BlY2lmaWVkX2Jvb2xfdHlwZSB0b191bnNwZWNpZmllZF9ib29sKGNvbnN0IGJvb2wgeCwgRGF0YU1lbWJlclB0cikKLSAgICB7Ci0gICAgICAgIHJldHVybiB4ID8gJnRoaXNfdHlwZTo6ZGV0YWlsX3NhZmVfYm9vbF9tZW1iZXJfZm4gOiAwOwotICAgIH0KLXByaXZhdGU6Ci0gICAgYm9vbCBkZXRhaWxfc2FmZV9ib29sX21lbWJlcl9mbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0jZWxzZQotICAgIHR5cGVkZWYgRGF0YU1lbWJlclB0ciB1bnNwZWNpZmllZF9ib29sX3R5cGU7Ci0gICAgc3RhdGljIHVuc3BlY2lmaWVkX2Jvb2xfdHlwZSB0b191bnNwZWNpZmllZF9ib29sKGNvbnN0IGJvb2wgeCwgRGF0YU1lbWJlclB0ciBwKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHggPyBwIDogMDsKLSAgICB9Ci0jZW5kaWYKLXByaXZhdGU6Ci0gICAgc2FmZV9ib29sKCk7Ci0gICAgc2FmZV9ib29sKGNvbnN0IHNhZmVfYm9vbCYpOwotICAgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IHNhZmVfYm9vbCYpOwotICAgIH5zYWZlX2Jvb2woKTsKLX07Ci0KLSAgICB9IC8vIG5hbWVzcGFjZSByYW5nZV9kZXRhaWwKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBpbmNsdWRlIGd1YXJkCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2RldGFpbC9zZmluYWUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9kZXRhaWwvc2ZpbmFlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWFkMWMyMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2RldGFpbC9zZmluYWUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzcgKzAsMCBAQAotLy8gQm9vc3QuUmFuZ2UgbGlicmFyeQotLy8KLS8vICBDb3B5cmlnaHQgVGhvcnN0ZW4gT3R0b3NlbiAyMDAzLTIwMDQuIFVzZSwgbW9kaWZpY2F0aW9uIGFuZAotLy8gIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uCi0vLyAgMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9yYW5nZS8KLS8vCi0KLSNpZm5kZWYgTkROQk9PU1RfUkFOR0VfREVUQUlMX1NGSU5BRV9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkFOR0VfREVUQUlMX1NGSU5BRV9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYXJyYXkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC95ZXNfbm9fdHlwZS5ocHA+Ci0jaW5jbHVkZSA8dXRpbGl0eT4KLQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgCi17Ci0gICAgbmFtZXNwYWNlIHJhbmdlX2RldGFpbAotICAgIHsgICAgICAgICAgCi0gICAgICAgIHVzaW5nIHR5cGVfdHJhaXRzOjp5ZXNfdHlwZTsKLSAgICAgICAgdXNpbmcgdHlwZV90cmFpdHM6Om5vX3R5cGU7Ci0KLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgICAgICAvLyBzdHJpbmcKLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgICAgICAKLSAgICAgICAgeWVzX3R5cGUgaXNfc3RyaW5nX2ltcGwoIGNvbnN0IGNoYXIqIGNvbnN0ICk7Ci0gICAgICAgIHllc190eXBlIGlzX3N0cmluZ19pbXBsKCBjb25zdCB3Y2hhcl90KiBjb25zdCApOwotICAgICAgICBub190eXBlICBpc19zdHJpbmdfaW1wbCggLi4uICk7Ci0gICAgICAgIAotICAgICAgICB0ZW1wbGF0ZTwgc3RkOjpzaXplX3Qgc3ogPgotICAgICAgICB5ZXNfdHlwZSBpc19jaGFyX2FycmF5X2ltcGwoIGNoYXIgTkROQk9PU1RfUkFOR0VfQVJSQVlfUkVGKClbc3pdICk7Ci0gICAgICAgIHRlbXBsYXRlPCBzdGQ6OnNpemVfdCBzeiA+Ci0gICAgICAgIHllc190eXBlIGlzX2NoYXJfYXJyYXlfaW1wbCggY29uc3QgY2hhciBORE5CT09TVF9SQU5HRV9BUlJBWV9SRUYoKVtzel0gKTsKLSAgICAgICAgbm9fdHlwZSAgaXNfY2hhcl9hcnJheV9pbXBsKCAuLi4gKTsKLSAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlPCBzdGQ6OnNpemVfdCBzeiA+Ci0gICAgICAgIHllc190eXBlIGlzX3djaGFyX3RfYXJyYXlfaW1wbCggd2NoYXJfdCBORE5CT09TVF9SQU5HRV9BUlJBWV9SRUYoKVtzel0gKTsKLSAgICAgICAgdGVtcGxhdGU8IHN0ZDo6c2l6ZV90IHN6ID4KLSAgICAgICAgeWVzX3R5cGUgaXNfd2NoYXJfdF9hcnJheV9pbXBsKCBjb25zdCB3Y2hhcl90IE5ETkJPT1NUX1JBTkdFX0FSUkFZX1JFRigpW3N6XSApOwotICAgICAgICBub190eXBlICBpc193Y2hhcl90X2FycmF5X2ltcGwoIC4uLiApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICB5ZXNfdHlwZSBpc19jaGFyX3B0cl9pbXBsKCBjaGFyKiBjb25zdCApOwotICAgICAgICBub190eXBlICBpc19jaGFyX3B0cl9pbXBsKCAuLi4gKTsKLSAgICAgICAgCi0gICAgICAgIHllc190eXBlIGlzX2NvbnN0X2NoYXJfcHRyX2ltcGwoIGNvbnN0IGNoYXIqIGNvbnN0ICk7Ci0gICAgICAgIG5vX3R5cGUgIGlzX2NvbnN0X2NoYXJfcHRyX2ltcGwoIC4uLiApOwotCi0gICAgICAgIHllc190eXBlIGlzX3djaGFyX3RfcHRyX2ltcGwoIHdjaGFyX3QqIGNvbnN0ICk7Ci0gICAgICAgIG5vX3R5cGUgIGlzX3djaGFyX3RfcHRyX2ltcGwoIC4uLiApOwotICAgICAgICAKLSAgICAgICAgeWVzX3R5cGUgaXNfY29uc3Rfd2NoYXJfdF9wdHJfaW1wbCggY29uc3Qgd2NoYXJfdCogY29uc3QgKTsKLSAgICAgICAgbm9fdHlwZSAgaXNfY29uc3Rfd2NoYXJfdF9wdHJfaW1wbCggLi4uICk7Ci0gICAgICAgIAotICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgICAgIC8vIHBhaXIKLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0gICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+Ci0gICAgICAgIHllc190eXBlIGlzX3BhaXJfaW1wbCggY29uc3Qgc3RkOjpwYWlyPEl0ZXJhdG9yLEl0ZXJhdG9yPiogKTsKLSAgICAgICAgbm9fdHlwZSAgaXNfcGFpcl9pbXBsKCAuLi4gKTsKLQotICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgICAgIC8vIHRhZ3MKLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0gICAgICAgIHN0cnVjdCBjaGFyX29yX3djaGFyX3RfYXJyYXlfdGFnIHt9OwotICAgICAgICAKLSAgICB9IC8vIG5hbWVzcGFjZSAncmFuZ2VfZGV0YWlsJwotICAgIAotfSAvLyBuYW1lc3BhY2UgJ2Jvb3N0JwotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZGV0YWlsL3NpemVfdHlwZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2RldGFpbC9zaXplX3R5cGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNDQ0ZDA2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZGV0YWlsL3NpemVfdHlwZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi0vLyBCb29zdC5SYW5nZSBsaWJyYXJ5Ci0vLwotLy8gIENvcHlyaWdodCBUaG9yc3RlbiBPdHRvc2VuIDIwMDMtMjAwNC4gVXNlLCBtb2RpZmljYXRpb24gYW5kCi0vLyAgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24KLS8vICAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3JhbmdlLwotLy8KLQotI2lmbmRlZiBORE5CT09TVF9SQU5HRV9ERVRBSUxfU0laRV9UWVBFX0hQUAotI2RlZmluZSBORE5CT09TVF9SQU5HRV9ERVRBSUxfU0laRV9UWVBFX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvZGV0YWlsL2NvbW1vbi5ocHA+Ci0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8gbWlzc2luZyBwYXJ0aWFsIHNwZWNpYWxpemF0aW9uICB3b3JrYXJvdW5kLgotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotICAgIG5hbWVzcGFjZSByYW5nZV9kZXRhaWwKLSAgICB7Ci0gICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLSAgICAgICAgc3RydWN0IHJhbmdlX3NpemVfdHlwZV8KLSAgICAgICAgewotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIEMgPgotICAgICAgICAgICAgc3RydWN0IHB0cwotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgc3RkOjpzaXplX3QgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmFuZ2Vfc2l6ZV90eXBlXzxzdGRfY29udGFpbmVyXz4KLSAgICAgICAgewotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIEMgPgotICAgICAgICAgICAgc3RydWN0IHB0cwotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfUkFOR0VfREVEVUNFRF9UWVBFTkFNRSBDOjpzaXplX3R5cGUgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEMgPgotICAgIGNsYXNzIHJhbmdlX3NpemUKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmFuZ2VfZGV0YWlsOjpyYW5nZTxDPjo6dHlwZSBjX3R5cGU7Ci0gICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJhbmdlX2RldGFpbDo6cmFuZ2Vfc2l6ZV90eXBlXzxjX3R5cGU+OjpORE5CT09TVF9ORVNURURfVEVNUExBVEUgcHRzPEM+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLX0KLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZGV0YWlsL3N0cl90eXBlcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2RldGFpbC9zdHJfdHlwZXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1N2VkMzExLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZGV0YWlsL3N0cl90eXBlcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi0vLyBCb29zdC5SYW5nZSBsaWJyYXJ5Ci0vLwotLy8gIENvcHlyaWdodCBUaG9yc3RlbiBPdHRvc2VuIDIwMDYuIFVzZSwgbW9kaWZpY2F0aW9uIGFuZAotLy8gIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uCi0vLyAgMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9yYW5nZS8KLS8vCi0KLSNpZm5kZWYgTkROQk9PU1RfUkFOR0VfREVUQUlMX1NUUl9UWVBFU19IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkFOR0VfREVUQUlMX1NUUl9UWVBFU19IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL3NpemVfdHlwZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvaXRlcmF0b3IuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLSAgICB0ZW1wbGF0ZTwgY2xhc3MgVCA+Ci0gICAgc3RydWN0IHJhbmdlX211dGFibGVfaXRlcmF0b3I8VCo+Ci0gICAgewotICAgICAgICB0eXBlZGVmIFQqIHR5cGU7Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlPCBjbGFzcyBUID4KLSAgICBzdHJ1Y3QgcmFuZ2VfY29uc3RfaXRlcmF0b3I8VCo+Ci0gICAgewotICAgICAgICB0eXBlZGVmIGNvbnN0IFQqIHR5cGU7Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlPCBjbGFzcyBUID4KLSAgICBzdHJ1Y3QgcmFuZ2Vfc2l6ZTxUKj4KLSAgICB7Ci0gICAgICAgdHlwZWRlZiBzdGQ6OnNpemVfdCB0eXBlOwotICAgIH07ICAgIAotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZGV0YWlsL3ZhbHVlX3R5cGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9kZXRhaWwvdmFsdWVfdHlwZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmZWJlNGYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9kZXRhaWwvdmFsdWVfdHlwZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MiArMCwwIEBACi0vLyBCb29zdC5SYW5nZSBsaWJyYXJ5Ci0vLwotLy8gIENvcHlyaWdodCBUaG9yc3RlbiBPdHRvc2VuIDIwMDMtMjAwNC4gVXNlLCBtb2RpZmljYXRpb24gYW5kCi0vLyAgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24KLS8vICAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3JhbmdlLwotLy8KLQotI2lmbmRlZiBORE5CT09TVF9SQU5HRV9ERVRBSUxfVkFMVUVfVFlQRV9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkFOR0VfREVUQUlMX1ZBTFVFX1RZUEVfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9kZXRhaWwvY29tbW9uLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9kZXRhaWwvcmVtb3ZlX2V4dGVudC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaXRlcmF0b3IvaXRlcmF0b3JfdHJhaXRzLmhwcD4KLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLyBtaXNzaW5nIHBhcnRpYWwgc3BlY2lhbGl6YXRpb24gIHdvcmthcm91bmQuCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IAotewotICAgIG5hbWVzcGFjZSByYW5nZV9kZXRhaWwgCi0gICAgeyAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLSAgICAgICAgc3RydWN0IHJhbmdlX3ZhbHVlX3R5cGVfOwotCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJhbmdlX3ZhbHVlX3R5cGVfPHN0ZF9jb250YWluZXJfPgotICAgICAgICB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgQyA+Ci0gICAgICAgICAgICBzdHJ1Y3QgcHRzCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9SQU5HRV9ERURVQ0VEX1RZUEVOQU1FIEM6OnZhbHVlX3R5cGUgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmFuZ2VfdmFsdWVfdHlwZV88c3RkX3BhaXJfPgotICAgICAgICB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUCA+Ci0gICAgICAgICAgICBzdHJ1Y3QgcHRzCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9SQU5HRV9ERURVQ0VEX1RZUEVOQU1FIG5kbmJvb3N0OjppdGVyYXRvcl92YWx1ZTwgTkROQk9PU1RfUkFOR0VfREVEVUNFRF9UWVBFTkFNRSBQOjpmaXJzdF90eXBlID46OnR5cGUgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmFuZ2VfdmFsdWVfdHlwZV88YXJyYXlfPgotICAgICAgICB7IAotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotICAgICAgICAgICAgc3RydWN0IHB0cwotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByZW1vdmVfZXh0ZW50PFQ+Ojp0eXBlIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotICAgICAgICAKLSAgICB9IAotICAgIAotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBDID4KLSAgICBjbGFzcyByYW5nZV92YWx1ZQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX2RldGFpbDo6cmFuZ2U8Qz46OnR5cGUgY190eXBlOwotICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX2RldGFpbDo6cmFuZ2VfdmFsdWVfdHlwZV88Y190eXBlPjo6TkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFIHB0czxDPjo6dHlwZSB0eXBlOyAKLSAgICB9OwotCi19Ci0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2RldGFpbC92YzYvZW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZGV0YWlsL3ZjNi9lbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZDlhMWIwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZGV0YWlsL3ZjNi9lbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTcwICswLDAgQEAKLS8vIEJvb3N0LlJhbmdlIGxpYnJhcnkKLS8vCi0vLyAgQ29weXJpZ2h0IFRob3JzdGVuIE90dG9zZW4gMjAwMy0yMDA0LiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQKLS8vICBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbgotLy8gIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvcmFuZ2UvCi0vLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JBTkdFX0RFVEFJTF9WQzZfRU5EX0hQUAotI2RlZmluZSBORE5CT09TVF9SQU5HRV9ERVRBSUxfVkM2X0VORF9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2RldGFpbC9pbXBsZW1lbnRhdGlvbl9oZWxwLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9kZXRhaWwvaW1wbGVtZW50YXRpb25faGVscC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvcmVzdWx0X2l0ZXJhdG9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9kZXRhaWwvY29tbW9uLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9kZXRhaWwvcmVtb3ZlX2V4dGVudC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCAKLXsKLSAgICBuYW1lc3BhY2UgcmFuZ2VfZGV0YWlsCi0gICAgewotICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci0gICAgICAgIHN0cnVjdCByYW5nZV9lbmQ7Ci0KLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgICAgICAvLyBkZWZhdWx0Ci0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJhbmdlX2VuZDxzdGRfY29udGFpbmVyXz4KLSAgICAgICAgewotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIEMgPgotICAgICAgICAgICAgc3RydWN0IGlubmVyIHsKLSAgICAgICAgICAgICAgICBzdGF0aWMgTkROQk9PU1RfUkFOR0VfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9yZXN1bHRfaXRlcmF0b3I8Qz46OnR5cGUgCi0gICAgICAgICAgICAgICAgZnVuKCBDJiBjICkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBjLmVuZCgpOwotICAgICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgICAgICAvLyBwYWlyCi0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJhbmdlX2VuZDxzdGRfcGFpcl8+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBQID4KLSAgICAgICAgICAgIHN0cnVjdCBpbm5lciB7Ci0gICAgICAgICAgICAgICAgc3RhdGljIE5ETkJPT1NUX1JBTkdFX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfcmVzdWx0X2l0ZXJhdG9yPFA+Ojp0eXBlIAotICAgICAgICAgICAgICAgIGZ1biggY29uc3QgUCYgcCApCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gcC5zZWNvbmQ7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLSAKLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgICAgICAvLyBhcnJheQotICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgICAgIAotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCByYW5nZV9lbmQ8YXJyYXlfPiAgCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLSAgICAgICAgICAgIHN0cnVjdCBpbm5lciB7Ci0gICAgICAgICAgICAgICAgc3RhdGljIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmVtb3ZlX2V4dGVudDxUPjo6dHlwZSoKLSAgICAgICAgICAgICAgICBmdW4oVCYgdCkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0ICsgcmVtb3ZlX2V4dGVudDxUPjo6c2l6ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotCi0gICAgICAgICAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJhbmdlX2VuZDxjaGFyX2FycmF5Xz4KLSAgICAgICAgewotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotICAgICAgICAgICAgc3RydWN0IGlubmVyIHsKLSAgICAgICAgICAgICAgICBzdGF0aWMgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByZW1vdmVfZXh0ZW50PFQ+Ojp0eXBlKgotICAgICAgICAgICAgICAgIGZ1bihUJiB0KQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQgKyByZW1vdmVfZXh0ZW50PFQ+OjpzaXplOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0gICAgICAgIAotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCByYW5nZV9lbmQ8d2NoYXJfdF9hcnJheV8+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLSAgICAgICAgICAgIHN0cnVjdCBpbm5lciB7Ci0gICAgICAgICAgICAgICAgc3RhdGljIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmVtb3ZlX2V4dGVudDxUPjo6dHlwZSoKLSAgICAgICAgICAgICAgICBmdW4oVCYgdCkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0ICsgcmVtb3ZlX2V4dGVudDxUPjo6c2l6ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotCi0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAgICAgLy8gc3RyaW5nCi0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJhbmdlX2VuZDxjaGFyX3B0cl8+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLSAgICAgICAgICAgIHN0cnVjdCBpbm5lciB7Ci0gICAgICAgICAgICAgICAgc3RhdGljIGNoYXIqIGZ1biggY2hhciogcyApCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmRuYm9vc3Q6OnJhbmdlX2RldGFpbDo6c3RyX2VuZCggcyApOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmFuZ2VfZW5kPGNvbnN0X2NoYXJfcHRyXz4KLSAgICAgICAgewotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotICAgICAgICAgICAgc3RydWN0IGlubmVyIHsKLSAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3QgY2hhciogZnVuKCBjb25zdCBjaGFyKiBzICkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZG5ib29zdDo6cmFuZ2VfZGV0YWlsOjpzdHJfZW5kKCBzICk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCByYW5nZV9lbmQ8d2NoYXJfdF9wdHJfPgotICAgICAgICB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci0gICAgICAgICAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICAgICAgICAgIHN0YXRpYyB3Y2hhcl90KiBmdW4oIHdjaGFyX3QqIHMgKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjpyYW5nZV9kZXRhaWw6OnN0cl9lbmQoIHMgKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotCi0KLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmFuZ2VfZW5kPGNvbnN0X3djaGFyX3RfcHRyXz4KLSAgICAgICAgewotICAgICAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQgPgotICAgICAgICAgICAgc3RydWN0IGlubmVyIHsKLSAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3Qgd2NoYXJfdCogZnVuKCBjb25zdCB3Y2hhcl90KiBzICkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZG5ib29zdDo6cmFuZ2VfZGV0YWlsOjpzdHJfZW5kKCBzICk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLSAgICAgICAgCi0gICAgfSAvLyBuYW1lc3BhY2UgJ3JhbmdlX2RldGFpbCcKLSAgICAKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgQyA+Ci0gICAgaW5saW5lIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfcmVzdWx0X2l0ZXJhdG9yPEM+Ojp0eXBlIAotICAgIGVuZCggQyYgYyApCi0gICAgewotICAgICAgICByZXR1cm4gcmFuZ2VfZGV0YWlsOjpyYW5nZV9lbmQ8cmFuZ2VfZGV0YWlsOjpyYW5nZTxDPjo6dHlwZT46OmlubmVyPEM+OjpmdW4oIGMgKTsKLSAgICB9Ci0gICAgCi19IC8vIG5hbWVzcGFjZSAnYm9vc3QnCi0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2RpZmZlcmVuY2VfdHlwZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2RpZmZlcmVuY2VfdHlwZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY0ZTFjMTYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9kaWZmZXJlbmNlX3R5cGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotLy8gQm9vc3QuUmFuZ2UgbGlicmFyeQotLy8KLS8vICBDb3B5cmlnaHQgVGhvcnN0ZW4gT3R0b3NlbiAyMDAzLTIwMDQuIFVzZSwgbW9kaWZpY2F0aW9uIGFuZAotLy8gIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uCi0vLyAgMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9yYW5nZS8KLS8vCi0KLSNpZm5kZWYgTkROQk9PU1RfUkFOR0VfRElGRkVSRU5DRV9UWVBFX0hQUAotI2RlZmluZSBORE5CT09TVF9SQU5HRV9ESUZGRVJFTkNFX1RZUEVfSFBQCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTIwMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9pdGVyYXRvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaXRlcmF0b3IvaXRlcmF0b3JfdHJhaXRzLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0gICAgdGVtcGxhdGU8IGNsYXNzIFQgPgotICAgIHN0cnVjdCByYW5nZV9kaWZmZXJlbmNlIDogaXRlcmF0b3JfZGlmZmVyZW5jZTwgdHlwZW5hbWUgcmFuZ2VfaXRlcmF0b3I8VD46OnR5cGUgPgotICAgIHsgfTsKLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2Rpc3RhbmNlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZGlzdGFuY2UuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNDNhYWRhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZGlzdGFuY2UuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotLy8gQm9vc3QuUmFuZ2UgbGlicmFyeQotLy8KLS8vICBDb3B5cmlnaHQgVGhvcnN0ZW4gT3R0b3NlbiAyMDAzLTIwMDYuIFVzZSwgbW9kaWZpY2F0aW9uIGFuZAotLy8gIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uCi0vLyAgMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9yYW5nZS8KLS8vCi0KLSNpZm5kZWYgTkROQk9PU1RfUkFOR0VfRElTVEFOQ0VfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkdFX0RJU1RBTkNFX0hQUAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEyMDApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2JlZ2luLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9lbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2RpZmZlcmVuY2VfdHlwZS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCAKLXsKLQotICAgIHRlbXBsYXRlPCBjbGFzcyBUID4KLSAgICBpbmxpbmUgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9kaWZmZXJlbmNlPFQ+Ojp0eXBlIAotICAgIGRpc3RhbmNlKCBjb25zdCBUJiByICkKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6OmRpc3RhbmNlKCBuZG5ib29zdDo6YmVnaW4oIHIgKSwgbmRuYm9vc3Q6OmVuZCggciApICk7Ci0gICAgfQotCi19IC8vIG5hbWVzcGFjZSAnYm9vc3QnCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9lbXB0eS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2VtcHR5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmMzZGZmMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2VtcHR5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLS8vIEJvb3N0LlJhbmdlIGxpYnJhcnkKLS8vCi0vLyAgQ29weXJpZ2h0IFRob3JzdGVuIE90dG9zZW4gMjAwMy0yMDA0LiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQKLS8vICBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbgotLy8gIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvcmFuZ2UvCi0vLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JBTkdFX0VNUFRZX0hQUAotI2RlZmluZSBORE5CT09TVF9SQU5HRV9FTVBUWV9IUFAKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMjAwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2JlZ2luLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9lbmQuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgCi17IAotCi0gICAgdGVtcGxhdGU8IGNsYXNzIFQgPgotICAgIGlubGluZSBib29sIGVtcHR5KCBjb25zdCBUJiByICkKLSAgICB7Ci0gICAgICAgIHJldHVybiBuZG5ib29zdDo6YmVnaW4oIHIgKSA9PSBuZG5ib29zdDo6ZW5kKCByICk7Ci0gICAgfQotCi19IC8vIG5hbWVzcGFjZSAnYm9vc3QnCi0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2VuZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2VuZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVjN2Q1NGQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9lbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTM2ICswLDAgQEAKLS8vIEJvb3N0LlJhbmdlIGxpYnJhcnkKLS8vCi0vLyAgQ29weXJpZ2h0IFRob3JzdGVuIE90dG9zZW4gMjAwMy0yMDA0LiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQKLS8vICBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbgotLy8gIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvcmFuZ2UvCi0vLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JBTkdFX0VORF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkFOR0VfRU5EX0hQUAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEyMDApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2NvbmZpZy5ocHA+Ci0KLSNpZmRlZiBORE5CT09TVF9OT19GVU5DVElPTl9URU1QTEFURV9PUkRFUklORwotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2RldGFpbC9lbmQuaHBwPgotI2Vsc2UKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2RldGFpbC9pbXBsZW1lbnRhdGlvbl9oZWxwLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9pdGVyYXRvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvY29uc3RfaXRlcmF0b3IuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTY0KSkgJiYgXAotICAgICFORE5CT09TVF9XT1JLQVJPVU5EKF9fR05VQ19fLCA8IDMpIFwKLSAgICAvKiovCi1uYW1lc3BhY2UgcmFuZ2VfZGV0YWlsCi17Ci0jZW5kaWYKLQotICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgICAgIC8vIHByaW1hcnkgdGVtcGxhdGUKLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgQyA+Ci0gICAgICAgIGlubGluZSBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX2l0ZXJhdG9yPEM+Ojp0eXBlCi0gICAgICAgIHJhbmdlX2VuZCggQyYgYyApCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAvLyBJZiB5b3UgZ2V0IGEgY29tcGlsZS1lcnJvciBoZXJlLCBpdCBpcyBtb3N0IGxpa2VseSBiZWNhdXNlCi0gICAgICAgICAgICAvLyB5b3UgaGF2ZSBub3QgaW1wbGVtZW50ZWQgcmFuZ2VfYmVnaW4oKSBwcm9wZXJseSBpbgotICAgICAgICAgICAgLy8gdGhlIG5hbWVzcGFjZSBvZiBDCi0gICAgICAgICAgICAvLwotICAgICAgICAgICAgcmV0dXJuIGMuZW5kKCk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgICAgIC8vIHBhaXIKLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi0gICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvciA+Ci0gICAgICAgIGlubGluZSBJdGVyYXRvciByYW5nZV9lbmQoIGNvbnN0IHN0ZDo6cGFpcjxJdGVyYXRvcixJdGVyYXRvcj4mIHAgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gcC5zZWNvbmQ7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPgotICAgICAgICBpbmxpbmUgSXRlcmF0b3IgcmFuZ2VfZW5kKCBzdGQ6OnBhaXI8SXRlcmF0b3IsSXRlcmF0b3I+JiBwICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHAuc2Vjb25kOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgICAgICAvLyBhcnJheQotICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLSAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHN0ZDo6c2l6ZV90IHN6ID4KLSAgICAgICAgaW5saW5lIGNvbnN0IFQqIHJhbmdlX2VuZCggY29uc3QgVCAoJmEpW3N6XSApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiByYW5nZV9kZXRhaWw6OmFycmF5X2VuZDxULHN6PiggYSApOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFQsIHN0ZDo6c2l6ZV90IHN6ID4KLSAgICAgICAgaW5saW5lIFQqIHJhbmdlX2VuZCggVCAoJmEpW3N6XSApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiByYW5nZV9kZXRhaWw6OmFycmF5X2VuZDxULHN6PiggYSApOwotICAgICAgICB9Ci0KLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU2NCkpICYmIFwKLSAgICAhTkROQk9PU1RfV09SS0FST1VORChfX0dOVUNfXywgPCAzKSBcCi0gICAgLyoqLwotfSAvLyBuYW1lc3BhY2UgJ3JhbmdlX2RldGFpbCcKLSNlbmRpZgotCi1uYW1lc3BhY2UgcmFuZ2VfYWRsX2JhcnJpZXIKLXsKLQotdGVtcGxhdGU8IGNsYXNzIFQgPgotaW5saW5lIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfaXRlcmF0b3I8VD46OnR5cGUgZW5kKCBUJiByICkKLXsKLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU2NCkpICYmIFwKLSAgICAhTkROQk9PU1RfV09SS0FST1VORChfX0dOVUNfXywgPCAzKSBcCi0gICAgLyoqLwotICAgIHVzaW5nIG5hbWVzcGFjZSByYW5nZV9kZXRhaWw7Ci0jZW5kaWYKLSAgICByZXR1cm4gcmFuZ2VfZW5kKCByICk7Ci19Ci0KLXRlbXBsYXRlPCBjbGFzcyBUID4KLWlubGluZSBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX2l0ZXJhdG9yPGNvbnN0IFQ+Ojp0eXBlIGVuZCggY29uc3QgVCYgciApCi17Ci0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1NjQpKSAmJiBcCi0gICAgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19HTlVDX18sIDwgMykgXAotICAgIC8qKi8KLSAgICB1c2luZyBuYW1lc3BhY2UgcmFuZ2VfZGV0YWlsOwotI2VuZGlmCi0gICAgcmV0dXJuIHJhbmdlX2VuZCggciApOwotfQotCi0gICAgfSAvLyBuYW1lc3BhY2UgcmFuZ2VfYWRsX2JhcnJpZXIKLX0gLy8gbmFtZXNwYWNlICdib29zdCcKLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RFTVBMQVRFX09SREVSSU5HCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotICAgIG5hbWVzcGFjZSByYW5nZV9hZGxfYmFycmllcgotICAgIHsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFQgPgotICAgICAgICBpbmxpbmUgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9pdGVyYXRvcjxjb25zdCBUPjo6dHlwZQotICAgICAgICBjb25zdF9lbmQoIGNvbnN0IFQmIHIgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmRuYm9vc3Q6OnJhbmdlX2FkbF9iYXJyaWVyOjplbmQoIHIgKTsKLSAgICAgICAgfQotICAgIH0gLy8gbmFtZXNwYWNlIHJhbmdlX2FkbF9iYXJyaWVyCi0gICAgdXNpbmcgbmFtZXNwYWNlIHJhbmdlX2FkbF9iYXJyaWVyOwotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZnVuY3Rpb25zLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvZnVuY3Rpb25zLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmFhMjEyNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2Z1bmN0aW9ucy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi0vLyBCb29zdC5SYW5nZSBsaWJyYXJ5Ci0vLwotLy8gIENvcHlyaWdodCBUaG9yc3RlbiBPdHRvc2VuIDIwMDMtMjAwNi4gVXNlLCBtb2RpZmljYXRpb24gYW5kCi0vLyAgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24KLS8vICAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3JhbmdlLwotLy8KLQotI2lmbmRlZiBORE5CT09TVF9SQU5HRV9GVU5DVElPTlNfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkdFX0ZVTkNUSU9OU19IUFAKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMjAwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9iZWdpbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvZW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9zaXplLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9kaXN0YW5jZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvZW1wdHkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL3JiZWdpbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvcmVuZC5ocHA+Ci0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2l0ZXJhdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvaXRlcmF0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMmExMTBjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvaXRlcmF0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzIgKzAsMCBAQAotLy8gQm9vc3QuUmFuZ2UgbGlicmFyeQotLy8KLS8vICBDb3B5cmlnaHQgVGhvcnN0ZW4gT3R0b3NlbiAyMDAzLTIwMDQuIFVzZSwgbW9kaWZpY2F0aW9uIGFuZAotLy8gIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uCi0vLyAgMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9yYW5nZS8KLS8vCi0KLSNpZm5kZWYgTkROQk9PU1RfUkFOR0VfSVRFUkFUT1JfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkdFX0lURVJBVE9SX0hQUAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvbXV0YWJsZV9pdGVyYXRvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvY29uc3RfaXRlcmF0b3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnN0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfY29uc3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ldmFsX2lmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsID09IDEzMTApCi0KLSAgICBuYW1lc3BhY2UgcmFuZ2VfZGV0YWlsX3ZjN18xCi0gICAgewotICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBDLCB0eXBlbmFtZSBTaWcgPSB2b2lkKEMpID4KLSAgICAgICBzdHJ1Y3QgcmFuZ2VfaXRlcmF0b3IKLSAgICAgICB7Ci0gICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfUkFOR0VfREVEVUNFRF9UWVBFTkFNRQotICAgICAgICAgICAgICAgbXBsOjpldmFsX2lmX2M8IGlzX2NvbnN0PEM+Ojp2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYW5nZV9jb25zdF9pdGVyYXRvcjwgdHlwZW5hbWUgcmVtb3ZlX2NvbnN0PEM+Ojp0eXBlID4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2VfbXV0YWJsZV9pdGVyYXRvcjxDPiA+Ojp0eXBlIHR5cGU7Ci0gICAgICAgfTsKLQotICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBDLCB0eXBlbmFtZSBUID4KLSAgICAgICBzdHJ1Y3QgcmFuZ2VfaXRlcmF0b3I8IEMsIHZvaWQoVFtdKSA+Ci0gICAgICAgewotICAgICAgICAgICB0eXBlZGVmIFQqIHR5cGU7Ci0gICAgICAgfTsKLSAgICB9Ci0KLSNlbmRpZgotCi0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEMgPgotICAgIHN0cnVjdCByYW5nZV9pdGVyYXRvcgotICAgIHsKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsID09IDEzMTApCi0KLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9SQU5HRV9ERURVQ0VEX1RZUEVOQU1FCi0gICAgICAgICAgICAgICByYW5nZV9kZXRhaWxfdmM3XzE6OnJhbmdlX2l0ZXJhdG9yPEM+Ojp0eXBlIHR5cGU7Ci0KLSNlbHNlCi0KLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9SQU5HRV9ERURVQ0VEX1RZUEVOQU1FCi0gICAgICAgICAgICBtcGw6OmV2YWxfaWZfYzwgaXNfY29uc3Q8Qz46OnZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlX2NvbnN0X2l0ZXJhdG9yPCB0eXBlbmFtZSByZW1vdmVfY29uc3Q8Qz46OnR5cGUgPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByYW5nZV9tdXRhYmxlX2l0ZXJhdG9yPEM+ID46OnR5cGUgdHlwZTsKLQotI2VuZGlmCi0gICAgfTsKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy8jZW5kaWYgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvaXRlcmF0b3JfcmFuZ2UuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9pdGVyYXRvcl9yYW5nZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDExMDhhYWEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9pdGVyYXRvcl9yYW5nZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi0vLyBCb29zdC5SYW5nZSBsaWJyYXJ5Ci0vLwotLy8gIENvcHlyaWdodCBOZWlsIEdyb3ZlcyAyMDA5LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLS8vICBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvcmFuZ2UvCi0vLwotI2lmbmRlZiBORE5CT09TVF9SQU5HRV9JVEVSQVRPUl9SQU5HRV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfUkFOR0VfSVRFUkFUT1JfUkFOR0VfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlICJuZG5ib29zdC9yYW5nZS9pdGVyYXRvcl9yYW5nZV9jb3JlLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC9yYW5nZS9pdGVyYXRvcl9yYW5nZV9pby5ocHAiCi0KLSNlbmRpZiAvLyBpbmNsdWRlIGd1YXJkCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2l0ZXJhdG9yX3JhbmdlX2NvcmUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9pdGVyYXRvcl9yYW5nZV9jb3JlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmU5N2UyYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2l0ZXJhdG9yX3JhbmdlX2NvcmUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjUzICswLDAgQEAKLS8vIEJvb3N0LlJhbmdlIGxpYnJhcnkKLS8vCi0vLyAgQ29weXJpZ2h0IE5laWwgR3JvdmVzICYgVGhvcnN0ZW4gT3R0b3NlbiAmIFBhdm9sIERyb2JhIDIwMDMtMjAwNC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCi0vLyAgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3JhbmdlLwotLy8KLSNpZm5kZWYgTkROQk9PU1RfUkFOR0VfSVRFUkFUT1JfUkFOR0VfQ09SRV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfUkFOR0VfSVRFUkFUT1JfUkFOR0VfQ09SRV9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+IC8vIERlZmluZSBfX1NUTF9DT05GSUdfSCwgaWYgYXBwcm9wcmlhdGUuCi0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCBORE5CT09TVF9URVNURURfQVQoMTUwMCkpCi0gICAgI3ByYWdtYSB3YXJuaW5nKCBwdXNoICkKLSAgICAjcHJhZ21hIHdhcm5pbmcoIGRpc2FibGUgOiA0OTk2ICkKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pdGVyYXRvci9pdGVyYXRvcl90cmFpdHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2l0ZXJhdG9yL2l0ZXJhdG9yX2ZhY2FkZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL29yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19hYnN0cmFjdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYXJyYXkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3BvaW50ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2Z1bmN0aW9ucy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvaXRlcmF0b3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2RpZmZlcmVuY2VfdHlwZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvYWxnb3JpdGhtL2VxdWFsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9kZXRhaWwvc2FmZV9ib29sLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC91dGlsaXR5L2VuYWJsZV9pZi5ocHA+Ci0jaW5jbHVkZSA8aXRlcmF0b3I+Ci0jaW5jbHVkZSA8YWxnb3JpdGhtPgotI2luY2x1ZGUgPGNzdGRkZWY+Ci0KLS8qISBcZmlsZQotICAgIERlZmluZXMgdGhlIFxjIGl0ZXJhdG9yX2NsYXNzIGFuZCByZWxhdGVkIGZ1bmN0aW9ucy4KLSAgICBcYyBpdGVyYXRvcl9yYW5nZSBpcyBhIHNpbXBsZSB3cmFwcGVyIG9mIGl0ZXJhdG9yIHBhaXIgaWRpb20uIEl0IHByb3ZpZGVzCi0gICAgYSByaWNoIHN1YnNldCBvZiBDb250YWluZXIgaW50ZXJmYWNlLgotKi8KLQotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLSAgICBuYW1lc3BhY2UgaXRlcmF0b3JfcmFuZ2VfZGV0YWlsCi0gICAgewotICAgICAgICAvLwotICAgICAgICAvLyBUaGUgZnVuY3Rpb25zIGFkbF9iZWdpbiBhbmQgYWRsX2VuZCBhcmUgaW1wbGVtZW50ZWQgaW4gYSBzZXBhcmF0ZQotICAgICAgICAvLyBjbGFzcyBmb3IgZ2NjLTIuOXgKLSAgICAgICAgLy8KLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgSXRlcmF0b3JUPgotICAgICAgICBzdHJ1Y3QgaXRlcmF0b3JfcmFuZ2VfaW1wbCB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgRm9yd2FyZFJhbmdlID4KLSAgICAgICAgICAgIHN0YXRpYyBJdGVyYXRvclQgYWRsX2JlZ2luKCBGb3J3YXJkUmFuZ2UmIHIgKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxJdGVyYXRvclQ+KCBuZG5ib29zdDo6YmVnaW4oIHIgKSApOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgRm9yd2FyZFJhbmdlID4KLSAgICAgICAgICAgIHN0YXRpYyBJdGVyYXRvclQgYWRsX2VuZCggRm9yd2FyZFJhbmdlJiByICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SXRlcmF0b3JUPiggbmRuYm9vc3Q6OmVuZCggciApICk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIExlZnQsIGNsYXNzIFJpZ2h0ID4KLSAgICAgICAgaW5saW5lIGJvb2wgbGVzc190aGFuKCBjb25zdCBMZWZ0JiBsLCBjb25zdCBSaWdodCYgciApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBzdGQ6OmxleGljb2dyYXBoaWNhbF9jb21wYXJlKCBuZG5ib29zdDo6YmVnaW4obCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmVuZChsKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6YmVnaW4ociksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmVuZChyKSApOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgTGVmdCwgY2xhc3MgUmlnaHQgPgotICAgICAgICBpbmxpbmUgYm9vbCBncmVhdGVyX3RoYW4oIGNvbnN0IExlZnQmIGwsIGNvbnN0IFJpZ2h0JiByICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGxlc3NfdGhhbihyLGwpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgTGVmdCwgY2xhc3MgUmlnaHQgPgotICAgICAgICBpbmxpbmUgYm9vbCBsZXNzX29yX2VxdWFsX3RoYW4oIGNvbnN0IExlZnQmIGwsIGNvbnN0IFJpZ2h0JiByICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICFpdGVyYXRvcl9yYW5nZV9kZXRhaWw6Omxlc3NfdGhhbihyLGwpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgTGVmdCwgY2xhc3MgUmlnaHQgPgotICAgICAgICBpbmxpbmUgYm9vbCBncmVhdGVyX29yX2VxdWFsX3RoYW4oIGNvbnN0IExlZnQmIGwsIGNvbnN0IFJpZ2h0JiByICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICFpdGVyYXRvcl9yYW5nZV9kZXRhaWw6Omxlc3NfdGhhbihsLHIpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gVGhpcyB2ZXJzaW9uIGlzIG1haW50YWluZWQgc2luY2UgaXQgaXMgdXNlZCBpbiBvdGhlciBib29zdCBsaWJyYXJpZXMKLSAgICAgICAgLy8gc3VjaCBhcyBCb29zdC5Bc3NpZ24KLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIExlZnQsIGNsYXNzIFJpZ2h0ID4KLSAgICAgICAgaW5saW5lIGJvb2wgZXF1YWwoY29uc3QgTGVmdCYgbCwgY29uc3QgUmlnaHQmIHIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZG5ib29zdDo6ZXF1YWwobCwgcik7Ci0gICAgICAgIH0KLQotICAgICAgICBzdHJ1Y3QgcmFuZ2VfdGFnIHsgfTsKLSAgICAgICAgc3RydWN0IGNvbnN0X3JhbmdlX3RhZyB7IH07Ci0gICAgfQotCi0vLyAgaXRlcmF0b3IgcmFuZ2UgdGVtcGxhdGUgY2xhc3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gICAgICAgIC8vISBpdGVyYXRvcl9yYW5nZSBjbGFzcwotICAgICAgICAvKiEKLSAgICAgICAgICAgIEFuIFxjIGl0ZXJhdG9yX3JhbmdlIGRlbGltaXRzIGEgcmFuZ2UgaW4gYSBzZXF1ZW5jZSBieSBiZWdpbm5pbmcgYW5kIGVuZGluZyBpdGVyYXRvcnMuCi0gICAgICAgICAgICBBbiBpdGVyYXRvcl9yYW5nZSBjYW4gYmUgcGFzc2VkIHRvIGFuIGFsZ29yaXRobSB3aGljaCByZXF1aXJlcyBhIHNlcXVlbmNlIGFzIGFuIGlucHV0LgotICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBcYyB0b3VwcGVyKCkgZnVuY3Rpb24gbWF5IGJlIHVzZWQgbW9zdCBmcmVxdWVudGx5IG9uIHN0cmluZ3MsCi0gICAgICAgICAgICBidXQgY2FuIGFsc28gYmUgdXNlZCBvbiBpdGVyYXRvcl9yYW5nZXM6Ci0KLSAgICAgICAgICAgIFxjb2RlCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnRvbG93ZXIoIGZpbmQoIHMsICJVUFBFUkNBU0UgU1RSSU5HIiApICk7Ci0gICAgICAgICAgICBcZW5kY29kZQotCi0gICAgICAgICAgICBNYW55IGFsZ29yaXRobXMgd29ya2luZyB3aXRoIHNlcXVlbmNlcyB0YWtlIGEgcGFpciBvZiBpdGVyYXRvcnMsCi0gICAgICAgICAgICBkZWxpbWl0aW5nIGEgd29ya2luZyByYW5nZSwgYXMgYW4gYXJndW1lbnRzLiBUaGUgXGMgaXRlcmF0b3JfcmFuZ2UgY2xhc3MgaXMgYW4KLSAgICAgICAgICAgIGVuY2Fwc3VsYXRpb24gb2YgYSByYW5nZSBpZGVudGlmaWVkIGJ5IGEgcGFpciBvZiBpdGVyYXRvcnMuCi0gICAgICAgICAgICBJdCBwcm92aWRlcyBhIGNvbGxlY3Rpb24gaW50ZXJmYWNlLAotICAgICAgICAgICAgc28gaXQgaXMgcG9zc2libGUgdG8gcGFzcyBhbiBpbnN0YW5jZSB0byBhbiBhbGdvcml0aG0gcmVxdWlyaW5nIGEgY29sbGVjdGlvbiBhcyBhbiBpbnB1dC4KLSAgICAgICAgKi8KLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgSXRlcmF0b3JUPgotICAgICAgICBjbGFzcyBpdGVyYXRvcl9yYW5nZQotICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIHJhbmdlX2RldGFpbDo6c2FmZV9ib29sPCBJdGVyYXRvclQgaXRlcmF0b3JfcmFuZ2U8SXRlcmF0b3JUPjo6KiA+IHNhZmVfYm9vbF90OwotICAgICAgICBwcm90ZWN0ZWQ6IC8vIFVzZWQgYnkgc3ViX3JhbmdlCi0gICAgICAgICAgICAvLyEgaW1wbGVtZW50YXRpb24gY2xhc3MKLSAgICAgICAgICAgIHR5cGVkZWYgaXRlcmF0b3JfcmFuZ2VfZGV0YWlsOjppdGVyYXRvcl9yYW5nZV9pbXBsPEl0ZXJhdG9yVD4gaW1wbDsKLSAgICAgICAgcHVibGljOgotICAgICAgICAgICAgLy8hIHRoaXMgdHlwZQotICAgICAgICAgICAgdHlwZWRlZiBpdGVyYXRvcl9yYW5nZTxJdGVyYXRvclQ+IHR5cGU7Ci0gICAgICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgc2FmZV9ib29sX3Q6OnVuc3BlY2lmaWVkX2Jvb2xfdHlwZSB1bnNwZWNpZmllZF9ib29sX3R5cGU7Ci0gICAgICAgICAgICAvL05ETkJPT1NUX0JST0tFTl9DT01QSUxFUl9UWVBFX1RSQUlUU19TUEVDSUFMSVpBVElPTih2YWx1ZV90eXBlKTsKLQotICAgICAgICAgICAgLy8hIEVuY2Fwc3VsYXRlZCB2YWx1ZSB0eXBlCi0gICAgICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUKLSAgICAgICAgICAgICAgICBpdGVyYXRvcl92YWx1ZTxJdGVyYXRvclQ+Ojp0eXBlIHZhbHVlX3R5cGU7Ci0KLSAgICAgICAgICAgIC8vISBEaWZmZXJlbmNlIHR5cGUKLSAgICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRQotICAgICAgICAgICAgICAgIGl0ZXJhdG9yX2RpZmZlcmVuY2U8SXRlcmF0b3JUPjo6dHlwZSBkaWZmZXJlbmNlX3R5cGU7Ci0KLSAgICAgICAgICAgIC8vISBTaXplIHR5cGUKLSAgICAgICAgICAgIHR5cGVkZWYgc3RkOjpzaXplX3Qgc2l6ZV90eXBlOyAvLyBub3RlOiBtdXN0IGJlIHVuc2lnbmVkCi0KLSAgICAgICAgICAgIC8vISBUaGlzIHR5cGUKLSAgICAgICAgICAgIHR5cGVkZWYgaXRlcmF0b3JfcmFuZ2U8SXRlcmF0b3JUPiB0aGlzX3R5cGU7Ci0KLSAgICAgICAgICAgIC8vISBSZWZlcmVuY2UgdHlwZQotICAgICAgICAgICAgLy8KLSAgICAgICAgICAgIC8vIE5lZWRlZCBiZWNhdXNlIHZhbHVlLXR5cGUgaXMgdGhlIHNhbWUgZm9yCi0gICAgICAgICAgICAvLyBjb25zdCBhbmQgbm9uLWNvbnN0IGl0ZXJhdG9ycwotICAgICAgICAgICAgLy8KLSAgICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRQotICAgICAgICAgICAgICAgIGl0ZXJhdG9yX3JlZmVyZW5jZTxJdGVyYXRvclQ+Ojp0eXBlIHJlZmVyZW5jZTsKLQotICAgICAgICAgICAgLy8hIGNvbnN0X2l0ZXJhdG9yIHR5cGUKLSAgICAgICAgICAgIC8qIQotICAgICAgICAgICAgICAgIFRoZXJlIGlzIG5vIGRpc3RpbmN0aW9uIGJldHdlZW4gY29uc3RfaXRlcmF0b3IgYW5kIGl0ZXJhdG9yLgotICAgICAgICAgICAgICAgIFRoZXNlIHR5cGVkZWZzIGFyZSBwcm92aWRlcyB0byBmdWxmaWxsIGNvbnRhaW5lciBpbnRlcmZhY2UKLSAgICAgICAgICAgICovCi0gICAgICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yVCBjb25zdF9pdGVyYXRvcjsKLSAgICAgICAgICAgIC8vISBpdGVyYXRvciB0eXBlCi0gICAgICAgICAgICB0eXBlZGVmIEl0ZXJhdG9yVCBpdGVyYXRvcjsKLQotICAgICAgICBwcml2YXRlOiAvLyBmb3IgcmV0dXJuIHZhbHVlIG9mIG9wZXJhdG9yKCkoKQotICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6Om1wbDo6aWZfPCBuZG5ib29zdDo6bXBsOjpvcl88IG5kbmJvb3N0Ojppc19hYnN0cmFjdDwgdmFsdWVfdHlwZSA+LCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmlzX2FycmF5PCB2YWx1ZV90eXBlID4gPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZSwgdmFsdWVfdHlwZSA+Ojp0eXBlIGFic3RyYWN0X3ZhbHVlX3R5cGU7Ci0KLSAgICAgICAgcHVibGljOgotICAgICAgICAgICAgaXRlcmF0b3JfcmFuZ2UoKSA6IG1fQmVnaW4oIGl0ZXJhdG9yKCkgKSwgbV9FbmQoIGl0ZXJhdG9yKCkgKQotICAgICAgICAgICAgeyB9Ci0KLSAgICAgICAgICAgIC8vISBDb25zdHJ1Y3RvciBmcm9tIGEgcGFpciBvZiBpdGVyYXRvcnMKLSAgICAgICAgICAgIHRlbXBsYXRlPCBjbGFzcyBJdGVyYXRvciA+Ci0gICAgICAgICAgICBpdGVyYXRvcl9yYW5nZSggSXRlcmF0b3IgQmVnaW4sIEl0ZXJhdG9yIEVuZCApIDoKLSAgICAgICAgICAgICAgICBtX0JlZ2luKEJlZ2luKSwgbV9FbmQoRW5kKQotICAgICAgICAgICAge30KLQotICAgICAgICAgICAgLy8hIENvbnN0cnVjdG9yIGZyb20gYSBSYW5nZQotICAgICAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFJhbmdlID4KLSAgICAgICAgICAgIGl0ZXJhdG9yX3JhbmdlKCBjb25zdCBSYW5nZSYgciApIDoKLSAgICAgICAgICAgICAgICBtX0JlZ2luKCBpbXBsOjphZGxfYmVnaW4oIHIgKSApLCBtX0VuZCggaW1wbDo6YWRsX2VuZCggciApICkKLSAgICAgICAgICAgIHt9Ci0KLSAgICAgICAgICAgIC8vISBDb25zdHJ1Y3RvciBmcm9tIGEgUmFuZ2UKLSAgICAgICAgICAgIHRlbXBsYXRlPCBjbGFzcyBSYW5nZSA+Ci0gICAgICAgICAgICBpdGVyYXRvcl9yYW5nZSggUmFuZ2UmIHIgKSA6Ci0gICAgICAgICAgICAgICAgbV9CZWdpbiggaW1wbDo6YWRsX2JlZ2luKCByICkgKSwgbV9FbmQoIGltcGw6OmFkbF9lbmQoIHIgKSApCi0gICAgICAgICAgICB7fQotCi0gICAgICAgICAgICAvLyEgQ29uc3RydWN0b3IgZnJvbSBhIFJhbmdlCi0gICAgICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUmFuZ2UgPgotICAgICAgICAgICAgaXRlcmF0b3JfcmFuZ2UoIGNvbnN0IFJhbmdlJiByLCBpdGVyYXRvcl9yYW5nZV9kZXRhaWw6OmNvbnN0X3JhbmdlX3RhZyApIDoKLSAgICAgICAgICAgICAgICBtX0JlZ2luKCBpbXBsOjphZGxfYmVnaW4oIHIgKSApLCBtX0VuZCggaW1wbDo6YWRsX2VuZCggciApICkKLSAgICAgICAgICAgIHt9Ci0KLSAgICAgICAgICAgIC8vISBDb25zdHJ1Y3RvciBmcm9tIGEgUmFuZ2UKLSAgICAgICAgICAgIHRlbXBsYXRlPCBjbGFzcyBSYW5nZSA+Ci0gICAgICAgICAgICBpdGVyYXRvcl9yYW5nZSggUmFuZ2UmIHIsIGl0ZXJhdG9yX3JhbmdlX2RldGFpbDo6cmFuZ2VfdGFnICkgOgotICAgICAgICAgICAgICAgIG1fQmVnaW4oIGltcGw6OmFkbF9iZWdpbiggciApICksIG1fRW5kKCBpbXBsOjphZGxfZW5kKCByICkgKQotICAgICAgICAgICAge30KLQotICAgICAgICAgICAgI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkKLSAgICAgICAgICAgIHRoaXNfdHlwZSYgb3BlcmF0b3I9KCBjb25zdCB0aGlzX3R5cGUmIHIgKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG1fQmVnaW4gID0gci5iZWdpbigpOwotICAgICAgICAgICAgICAgIG1fRW5kICAgID0gci5lbmQoKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAjZW5kaWYKLQotICAgICAgICAgICAgdGVtcGxhdGU8IGNsYXNzIEl0ZXJhdG9yID4KLSAgICAgICAgICAgIGl0ZXJhdG9yX3JhbmdlJiBvcGVyYXRvcj0oIGNvbnN0IGl0ZXJhdG9yX3JhbmdlPEl0ZXJhdG9yPiYgciApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgbV9CZWdpbiAgPSByLmJlZ2luKCk7Ci0gICAgICAgICAgICAgICAgbV9FbmQgICAgPSByLmVuZCgpOwotICAgICAgICAgICAgICAgIHJldHVybiAqdGhpczsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdGVtcGxhdGU8IGNsYXNzIEZvcndhcmRSYW5nZSA+Ci0gICAgICAgICAgICBpdGVyYXRvcl9yYW5nZSYgb3BlcmF0b3I9KCBGb3J3YXJkUmFuZ2UmIHIgKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG1fQmVnaW4gID0gaW1wbDo6YWRsX2JlZ2luKCByICk7Ci0gICAgICAgICAgICAgICAgbV9FbmQgICAgPSBpbXBsOjphZGxfZW5kKCByICk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICp0aGlzOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgRm9yd2FyZFJhbmdlID4KLSAgICAgICAgICAgIGl0ZXJhdG9yX3JhbmdlJiBvcGVyYXRvcj0oIGNvbnN0IEZvcndhcmRSYW5nZSYgciApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgbV9CZWdpbiAgPSBpbXBsOjphZGxfYmVnaW4oIHIgKTsKLSAgICAgICAgICAgICAgICBtX0VuZCAgICA9IGltcGw6OmFkbF9lbmQoIHIgKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIEl0ZXJhdG9yVCBiZWdpbigpIGNvbnN0Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG1fQmVnaW47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIEl0ZXJhdG9yVCBlbmQoKSBjb25zdAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBtX0VuZDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZGlmZmVyZW5jZV90eXBlIHNpemUoKSBjb25zdAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBtX0VuZCAtIG1fQmVnaW47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGJvb2wgZW1wdHkoKSBjb25zdAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBtX0JlZ2luID09IG1fRW5kOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBvcGVyYXRvciB1bnNwZWNpZmllZF9ib29sX3R5cGUoKSBjb25zdAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBzYWZlX2Jvb2xfdDo6dG9fdW5zcGVjaWZpZWRfYm9vbChtX0JlZ2luICE9IG1fRW5kLCAmaXRlcmF0b3JfcmFuZ2U6Om1fQmVnaW4pOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVtcHR5KCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGJvb2wgZXF1YWwoIGNvbnN0IGl0ZXJhdG9yX3JhbmdlJiByICkgY29uc3QKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gbV9CZWdpbiA9PSByLm1fQmVnaW4gJiYgbV9FbmQgPT0gci5tX0VuZDsKLSAgICAgICAgICAgIH0KLQotCi0jaWZkZWYgTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcKLQotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcj09KCBjb25zdCBpdGVyYXRvcl9yYW5nZSYgciApIGNvbnN0Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjplcXVhbCggKnRoaXMsIHIgKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgYm9vbCBvcGVyYXRvciE9KCBjb25zdCBpdGVyYXRvcl9yYW5nZSYgciApIGNvbnN0Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICFvcGVyYXRvcj09KHIpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgIGJvb2wgb3BlcmF0b3I8KCBjb25zdCBpdGVyYXRvcl9yYW5nZSYgciApIGNvbnN0Ci0gICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcl9yYW5nZV9kZXRhaWw6Omxlc3NfdGhhbiggKnRoaXMsIHIgKTsKLSAgICAgICAgICAgfQotICAgICAgICAgICAKLSAgICAgICAgICAgYm9vbCBvcGVyYXRvcj4oIGNvbnN0IGl0ZXJhdG9yX3JhbmdlJiByICkgY29uc3QKLSAgICAgICAgICAgewotICAgICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yX3JhbmdlX2RldGFpbDo6Z3JlYXRlcl90aGFuKCAqdGhpcywgciApOwotICAgICAgICAgICB9Ci0gICAgICAgICAgIAotICAgICAgICAgICBib29sIG9wZXJhdG9yPD0oIGNvbnN0IGl0ZXJhdG9yX3JhbmdlJiByICkgY29uc3QKLSAgICAgICAgICAgewotICAgICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yX3JhbmdlX2RldGFpbDo6bGVzc19vcl9lcXVhbF90aGFuKCAqdGhpcywgciApOwotICAgICAgICAgICB9Ci0gICAgICAgICAgIAotICAgICAgICAgICBib29sIG9wZXJhdG9yPj0oIGNvbnN0IGl0ZXJhdG9yX3JhbmdlJiByICkgY29uc3QKLSAgICAgICAgICAgewotICAgICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yX3JhbmdlX2RldGFpbDo6Z3JlYXRlcl9vcl9lcXVhbF90aGFuKCAqdGhpcywgciApOwotICAgICAgICAgICB9Ci0KLSNlbmRpZgotCi0gICAgICAgIHB1YmxpYzogLy8gY29udmVuaWVuY2UKLSAgICAgICAgICAgcmVmZXJlbmNlIGZyb250KCkgY29uc3QKLSAgICAgICAgICAgewotICAgICAgICAgICAgICAgTkROQk9PU1RfQVNTRVJUKCAhZW1wdHkoKSApOwotICAgICAgICAgICAgICAgcmV0dXJuICptX0JlZ2luOwotICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgcmVmZXJlbmNlIGJhY2soKSBjb25zdAotICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICBORE5CT09TVF9BU1NFUlQoICFlbXB0eSgpICk7Ci0gICAgICAgICAgICAgICBJdGVyYXRvclQgbGFzdCggbV9FbmQgKTsKLSAgICAgICAgICAgICAgIHJldHVybiAqLS1sYXN0OwotICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgLy8gcG9wX2Zyb250KCkgLSBhZGRlZCB0byBtb2RlbCB0aGUgU2luZ2xlUGFzc1JhbmdlUHJpbWl0aXZlQ29uY2VwdAotICAgICAgICAgICB2b2lkIHBvcF9mcm9udCgpCi0gICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIE5ETkJPT1NUX0FTU0VSVCggIWVtcHR5KCkgKTsKLSAgICAgICAgICAgICAgICsrbV9CZWdpbjsKLSAgICAgICAgICAgfQotCi0gICAgICAgICAgIC8vIHBvcF9iYWNrKCkgLSBhZGRlZCB0byBtb2RlbCB0aGUgQmlkaXJlY3Rpb25hbFJhbmdlUHJpbWl0aXZlQ29uY2VwdAotICAgICAgICAgICB2b2lkIHBvcF9iYWNrKCkKLSAgICAgICAgICAgewotICAgICAgICAgICAgICAgTkROQk9PU1RfQVNTRVJUKCAhZW1wdHkoKSApOwotICAgICAgICAgICAgICAgLS1tX0VuZDsKLSAgICAgICAgICAgfQotCi0gICAgICAgICAgIHJlZmVyZW5jZSBvcGVyYXRvcltdKCBkaWZmZXJlbmNlX3R5cGUgYXQgKSBjb25zdAotICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICBORE5CT09TVF9BU1NFUlQoIGF0ID49IDAgJiYgYXQgPCBzaXplKCkgKTsKLSAgICAgICAgICAgICAgIHJldHVybiBtX0JlZ2luW2F0XTsKLSAgICAgICAgICAgfQotCi0gICAgICAgICAgIC8vCi0gICAgICAgICAgIC8vIFdoZW4gc3RvcmluZyB0cmFuc2Zvcm0gaXRlcmF0b3JzLCBvcGVyYXRvcltdKCkKLSAgICAgICAgICAgLy8gZmFpbHMgYmVjYXVzZSBpdCByZXR1cm5zIGJ5IHJlZmVyZW5jZS4gVGhlcmVmb3JlCi0gICAgICAgICAgIC8vIG9wZXJhdG9yKCkoKSBpcyBwcm92aWRlZCBmb3IgdGhlc2UgY2FzZXMuCi0gICAgICAgICAgIC8vCi0gICAgICAgICAgIGFic3RyYWN0X3ZhbHVlX3R5cGUgb3BlcmF0b3IoKSggZGlmZmVyZW5jZV90eXBlIGF0ICkgY29uc3QKLSAgICAgICAgICAgewotICAgICAgICAgICAgICAgTkROQk9PU1RfQVNTRVJUKCBhdCA+PSAwICYmIGF0IDwgc2l6ZSgpICk7Ci0gICAgICAgICAgICAgICByZXR1cm4gbV9CZWdpblthdF07Ci0gICAgICAgICAgIH0KLQotICAgICAgICAgICBpdGVyYXRvcl9yYW5nZSYgYWR2YW5jZV9iZWdpbiggZGlmZmVyZW5jZV90eXBlIG4gKQotICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICBzdGQ6OmFkdmFuY2UoIG1fQmVnaW4sIG4gKTsKLSAgICAgICAgICAgICAgIHJldHVybiAqdGhpczsKLSAgICAgICAgICAgfQotCi0gICAgICAgICAgIGl0ZXJhdG9yX3JhbmdlJiBhZHZhbmNlX2VuZCggZGlmZmVyZW5jZV90eXBlIG4gKQotICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICBzdGQ6OmFkdmFuY2UoIG1fRW5kLCBuICk7Ci0gICAgICAgICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgICAgICAgIH0KLQotICAgICAgICBwcml2YXRlOgotICAgICAgICAgICAgLy8gYmVnaW4gYW5kIGVuZCBpdGVyYXRvcnMKLSAgICAgICAgICAgIEl0ZXJhdG9yVCBtX0JlZ2luOwotICAgICAgICAgICAgSXRlcmF0b3JUIG1fRW5kOwotCi0gICAgICAgIHByb3RlY3RlZDoKLSAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAvLyBBbGxvdyBzdWJjbGFzc2VzIGFuIGVhc3kgd2F5IHRvIGFjY2VzcyB0aGUKLSAgICAgICAgICAgIC8vIGJhc2UgdHlwZQotICAgICAgICAgICAgLy8KLSAgICAgICAgICAgIHR5cGVkZWYgaXRlcmF0b3JfcmFuZ2UgaXRlcmF0b3JfcmFuZ2VfOwotICAgICAgICB9OwotCi0vLyAgaXRlcmF0b3IgcmFuZ2UgZnJlZS1zdGFuZGluZyBvcGVyYXRvcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAgICAgLy8gY29tcGFyaXNvbiBvcGVyYXRvcnMKLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIEl0ZXJhdG9yVCwgY2xhc3MgRm9yd2FyZFJhbmdlID4KLSAgICAgICAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PSggY29uc3QgRm9yd2FyZFJhbmdlJiBsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVyYXRvcl9yYW5nZTxJdGVyYXRvclQ+JiByICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjplcXVhbCggbCwgciApOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIEl0ZXJhdG9yVCwgY2xhc3MgRm9yd2FyZFJhbmdlID4KLSAgICAgICAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPSggY29uc3QgRm9yd2FyZFJhbmdlJiBsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVyYXRvcl9yYW5nZTxJdGVyYXRvclQ+JiByICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICFuZG5ib29zdDo6ZXF1YWwoIGwsIHIgKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBJdGVyYXRvclQsIGNsYXNzIEZvcndhcmRSYW5nZSA+Ci0gICAgICAgIGlubGluZSBib29sIG9wZXJhdG9yPCggY29uc3QgRm9yd2FyZFJhbmdlJiBsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZXJhdG9yX3JhbmdlPEl0ZXJhdG9yVD4mIHIgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gaXRlcmF0b3JfcmFuZ2VfZGV0YWlsOjpsZXNzX3RoYW4oIGwsIHIgKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIEl0ZXJhdG9yVCwgY2xhc3MgRm9yd2FyZFJhbmdlID4KLSAgICAgICAgaW5saW5lIGJvb2wgb3BlcmF0b3I8PSggY29uc3QgRm9yd2FyZFJhbmdlJiBsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVyYXRvcl9yYW5nZTxJdGVyYXRvclQ+JiByICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yX3JhbmdlX2RldGFpbDo6bGVzc19vcl9lcXVhbF90aGFuKCBsLCByICk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBJdGVyYXRvclQsIGNsYXNzIEZvcndhcmRSYW5nZSA+Ci0gICAgICAgIGlubGluZSBib29sIG9wZXJhdG9yPiggY29uc3QgRm9yd2FyZFJhbmdlJiBsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZXJhdG9yX3JhbmdlPEl0ZXJhdG9yVD4mIHIgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gaXRlcmF0b3JfcmFuZ2VfZGV0YWlsOjpncmVhdGVyX3RoYW4oIGwsIHIgKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIEl0ZXJhdG9yVCwgY2xhc3MgRm9yd2FyZFJhbmdlID4KLSAgICAgICAgaW5saW5lIGJvb2wgb3BlcmF0b3I+PSggY29uc3QgRm9yd2FyZFJhbmdlJiBsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVyYXRvcl9yYW5nZTxJdGVyYXRvclQ+JiByICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yX3JhbmdlX2RldGFpbDo6Z3JlYXRlcl9vcl9lcXVhbF90aGFuKCBsLCByICk7Ci0gICAgICAgIH0KLQotI2lmZGVmIE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RFTVBMQVRFX09SREVSSU5HCi0jZWxzZQotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgSXRlcmF0b3IxVCwgY2xhc3MgSXRlcmF0b3IyVCA+Ci0gICAgICAgIGlubGluZSBib29sIG9wZXJhdG9yPT0oIGNvbnN0IGl0ZXJhdG9yX3JhbmdlPEl0ZXJhdG9yMVQ+JiBsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVyYXRvcl9yYW5nZTxJdGVyYXRvcjJUPiYgciApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZG5ib29zdDo6ZXF1YWwoIGwsIHIgKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBJdGVyYXRvclQsIGNsYXNzIEZvcndhcmRSYW5nZSA+Ci0gICAgICAgIGlubGluZSBib29sIG9wZXJhdG9yPT0oIGNvbnN0IGl0ZXJhdG9yX3JhbmdlPEl0ZXJhdG9yVD4mIGwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZvcndhcmRSYW5nZSYgciApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZG5ib29zdDo6ZXF1YWwoIGwsIHIgKTsKLSAgICAgICAgfQotCi0KLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIEl0ZXJhdG9yMVQsIGNsYXNzIEl0ZXJhdG9yMlQgPgotICAgICAgICBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KCBjb25zdCBpdGVyYXRvcl9yYW5nZTxJdGVyYXRvcjFUPiYgbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXRlcmF0b3JfcmFuZ2U8SXRlcmF0b3IyVD4mIHIgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gIW5kbmJvb3N0OjplcXVhbCggbCwgciApOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIEl0ZXJhdG9yVCwgY2xhc3MgRm9yd2FyZFJhbmdlID4KLSAgICAgICAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPSggY29uc3QgaXRlcmF0b3JfcmFuZ2U8SXRlcmF0b3JUPiYgbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRm9yd2FyZFJhbmdlJiByICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICFuZG5ib29zdDo6ZXF1YWwoIGwsIHIgKTsKLSAgICAgICAgfQotCi0KLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIEl0ZXJhdG9yMVQsIGNsYXNzIEl0ZXJhdG9yMlQgPgotICAgICAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcjwoIGNvbnN0IGl0ZXJhdG9yX3JhbmdlPEl0ZXJhdG9yMVQ+JiBsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZXJhdG9yX3JhbmdlPEl0ZXJhdG9yMlQ+JiByICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yX3JhbmdlX2RldGFpbDo6bGVzc190aGFuKCBsLCByICk7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgSXRlcmF0b3JULCBjbGFzcyBGb3J3YXJkUmFuZ2UgPgotICAgICAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcjwoIGNvbnN0IGl0ZXJhdG9yX3JhbmdlPEl0ZXJhdG9yVD4mIGwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRm9yd2FyZFJhbmdlJiByICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yX3JhbmdlX2RldGFpbDo6bGVzc190aGFuKCBsLCByICk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBJdGVyYXRvcjFULCBjbGFzcyBJdGVyYXRvcjJUID4KLSAgICAgICAgaW5saW5lIGJvb2wgb3BlcmF0b3I8PSggY29uc3QgaXRlcmF0b3JfcmFuZ2U8SXRlcmF0b3IxVD4mIGwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGl0ZXJhdG9yX3JhbmdlPEl0ZXJhdG9yMlQ+JiByICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yX3JhbmdlX2RldGFpbDo6bGVzc19vcl9lcXVhbF90aGFuKCBsLCByICk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBJdGVyYXRvclQsIGNsYXNzIEZvcndhcmRSYW5nZSA+Ci0gICAgICAgIGlubGluZSBib29sIG9wZXJhdG9yPD0oIGNvbnN0IGl0ZXJhdG9yX3JhbmdlPEl0ZXJhdG9yVD4mIGwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZvcndhcmRSYW5nZSYgciApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcl9yYW5nZV9kZXRhaWw6Omxlc3Nfb3JfZXF1YWxfdGhhbiggbCwgciApOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgSXRlcmF0b3IxVCwgY2xhc3MgSXRlcmF0b3IyVCA+Ci0gICAgICAgIGlubGluZSBib29sIG9wZXJhdG9yPiggY29uc3QgaXRlcmF0b3JfcmFuZ2U8SXRlcmF0b3IxVD4mIGwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXRlcmF0b3JfcmFuZ2U8SXRlcmF0b3IyVD4mIHIgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gaXRlcmF0b3JfcmFuZ2VfZGV0YWlsOjpncmVhdGVyX3RoYW4oIGwsIHIgKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIEl0ZXJhdG9yVCwgY2xhc3MgRm9yd2FyZFJhbmdlID4KLSAgICAgICAgaW5saW5lIGJvb2wgb3BlcmF0b3I+KCBjb25zdCBpdGVyYXRvcl9yYW5nZTxJdGVyYXRvclQ+JiBsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZvcndhcmRSYW5nZSYgciApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcl9yYW5nZV9kZXRhaWw6OmdyZWF0ZXJfdGhhbiggbCwgciApOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgSXRlcmF0b3IxVCwgY2xhc3MgSXRlcmF0b3IyVCA+Ci0gICAgICAgIGlubGluZSBib29sIG9wZXJhdG9yPj0oIGNvbnN0IGl0ZXJhdG9yX3JhbmdlPEl0ZXJhdG9yMVQ+JiBsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVyYXRvcl9yYW5nZTxJdGVyYXRvcjJUPiYgciApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcl9yYW5nZV9kZXRhaWw6OmdyZWF0ZXJfb3JfZXF1YWxfdGhhbiggbCwgciApOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgSXRlcmF0b3JULCBjbGFzcyBGb3J3YXJkUmFuZ2UgPgotICAgICAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcj49KCBjb25zdCBpdGVyYXRvcl9yYW5nZTxJdGVyYXRvclQ+JiBsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGb3J3YXJkUmFuZ2UmIHIgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gaXRlcmF0b3JfcmFuZ2VfZGV0YWlsOjpncmVhdGVyX29yX2VxdWFsX3RoYW4oIGwsIHIgKTsKLSAgICAgICAgfQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcKLQotLy8gIGl0ZXJhdG9yIHJhbmdlIHV0aWxpdGllcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSAgICAgICAgLy8hIGl0ZXJhdG9yX3JhbmdlIGNvbnN0cnVjdCBoZWxwZXIKLSAgICAgICAgLyohCi0gICAgICAgICAgICBDb25zdHJ1Y3QgYW4gXGMgaXRlcmF0b3JfcmFuZ2UgZnJvbSBhIHBhaXIgb2YgaXRlcmF0b3JzCi0KLSAgICAgICAgICAgIFxwYXJhbSBCZWdpbiBBIGJlZ2luIGl0ZXJhdG9yCi0gICAgICAgICAgICBccGFyYW0gRW5kIEFuIGVuZCBpdGVyYXRvcgotICAgICAgICAgICAgXHJldHVybiBpdGVyYXRvcl9yYW5nZSBvYmplY3QKLSAgICAgICAgKi8KLSAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIEl0ZXJhdG9yVCA+Ci0gICAgICAgIGlubGluZSBpdGVyYXRvcl9yYW5nZTwgSXRlcmF0b3JUID4KLSAgICAgICAgbWFrZV9pdGVyYXRvcl9yYW5nZSggSXRlcmF0b3JUIEJlZ2luLCBJdGVyYXRvclQgRW5kICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yX3JhbmdlPEl0ZXJhdG9yVD4oIEJlZ2luLCBFbmQgKTsKLSAgICAgICAgfQotCi0jaWZkZWYgTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcKLQotICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgUmFuZ2UgPgotICAgICAgICBpbmxpbmUgaXRlcmF0b3JfcmFuZ2U8IE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfaXRlcmF0b3I8UmFuZ2U+Ojp0eXBlID4KLSAgICAgICAgbWFrZV9pdGVyYXRvcl9yYW5nZSggUmFuZ2UmIHIgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gaXRlcmF0b3JfcmFuZ2U8IE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfaXRlcmF0b3I8UmFuZ2U+Ojp0eXBlID4KLSAgICAgICAgICAgICAgICAoIG5kbmJvb3N0OjpiZWdpbiggciApLCBuZG5ib29zdDo6ZW5kKCByICkgKTsKLSAgICAgICAgfQotCi0jZWxzZQotICAgICAgICAvLyEgaXRlcmF0b3JfcmFuZ2UgY29uc3RydWN0IGhlbHBlcgotICAgICAgICAvKiEKLSAgICAgICAgICAgIENvbnN0cnVjdCBhbiBcYyBpdGVyYXRvcl9yYW5nZSBmcm9tIGEgXGMgUmFuZ2UgY29udGFpbmluZyB0aGUgYmVnaW4KLSAgICAgICAgICAgIGFuZCBlbmQgaXRlcmF0b3JzLgotICAgICAgICAqLwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgRm9yd2FyZFJhbmdlID4KLSAgICAgICAgaW5saW5lIGl0ZXJhdG9yX3JhbmdlPCBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX2l0ZXJhdG9yPEZvcndhcmRSYW5nZT46OnR5cGUgPgotICAgICAgICBtYWtlX2l0ZXJhdG9yX3JhbmdlKCBGb3J3YXJkUmFuZ2UmIHIgKQotICAgICAgICB7Ci0gICAgICAgICAgIHJldHVybiBpdGVyYXRvcl9yYW5nZTwgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9pdGVyYXRvcjxGb3J3YXJkUmFuZ2U+Ojp0eXBlID4KLSAgICAgICAgICAgICAgICAoIHIsIGl0ZXJhdG9yX3JhbmdlX2RldGFpbDo6cmFuZ2VfdGFnKCkgKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBGb3J3YXJkUmFuZ2UgPgotICAgICAgICBpbmxpbmUgaXRlcmF0b3JfcmFuZ2U8IE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfaXRlcmF0b3I8Y29uc3QgRm9yd2FyZFJhbmdlPjo6dHlwZSA+Ci0gICAgICAgIG1ha2VfaXRlcmF0b3JfcmFuZ2UoIGNvbnN0IEZvcndhcmRSYW5nZSYgciApCi0gICAgICAgIHsKLSAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yX3JhbmdlPCBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX2l0ZXJhdG9yPGNvbnN0IEZvcndhcmRSYW5nZT46OnR5cGUgPgotICAgICAgICAgICAgICAgICggciwgaXRlcmF0b3JfcmFuZ2VfZGV0YWlsOjpjb25zdF9yYW5nZV90YWcoKSApOwotICAgICAgICB9Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19GVU5DVElPTl9URU1QTEFURV9PUkRFUklORwotCi0gICAgICAgIG5hbWVzcGFjZSBpdGVyYXRvcl9yYW5nZV9kZXRhaWwKLSAgICAgICAgewotICAgICAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFJhbmdlID4KLSAgICAgICAgICAgIGlubGluZSBpdGVyYXRvcl9yYW5nZTwgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9pdGVyYXRvcjxSYW5nZT46OnR5cGUgPgotICAgICAgICAgICAgbWFrZV9yYW5nZV9pbXBsKCBSYW5nZSYgciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9kaWZmZXJlbmNlPFJhbmdlPjo6dHlwZSBhZHZhbmNlX2JlZ2luLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX2RpZmZlcmVuY2U8UmFuZ2U+Ojp0eXBlIGFkdmFuY2VfZW5kICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAvLwotICAgICAgICAgICAgICAgIC8vIE5vdCB3b3J0aCB0aGUgZWZmb3J0Ci0gICAgICAgICAgICAgICAgLy8KLSAgICAgICAgICAgICAgICAvL2lmKCBhZHZhbmNlX2JlZ2luID09IDAgJiYgYWR2YW5jZV9lbmQgPT0gMCApCi0gICAgICAgICAgICAgICAgLy8gICAgcmV0dXJuIG1ha2VfaXRlcmF0b3JfcmFuZ2UoIHIgKTsKLSAgICAgICAgICAgICAgICAvLwotCi0gICAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9pdGVyYXRvcjxSYW5nZT46OnR5cGUKLSAgICAgICAgICAgICAgICAgICAgbmV3X2JlZ2luID0gbmRuYm9vc3Q6OmJlZ2luKCByICksCi0gICAgICAgICAgICAgICAgICAgIG5ld19lbmQgICA9IG5kbmJvb3N0OjplbmQoIHIgKTsKLSAgICAgICAgICAgICAgICBzdGQ6OmFkdmFuY2UoIG5ld19iZWdpbiwgYWR2YW5jZV9iZWdpbiApOwotICAgICAgICAgICAgICAgIHN0ZDo6YWR2YW5jZSggbmV3X2VuZCwgYWR2YW5jZV9lbmQgKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gbWFrZV9pdGVyYXRvcl9yYW5nZSggbmV3X2JlZ2luLCBuZXdfZW5kICk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotI2lmZGVmIE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RFTVBMQVRFX09SREVSSU5HCi0KLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFJhbmdlID4KLSAgICAgICAgaW5saW5lIGl0ZXJhdG9yX3JhbmdlPCBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX2l0ZXJhdG9yPFJhbmdlPjo6dHlwZSA+Ci0gICAgICAgIG1ha2VfaXRlcmF0b3JfcmFuZ2UoIFJhbmdlJiByLAotICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX2RpZmZlcmVuY2U8UmFuZ2U+Ojp0eXBlIGFkdmFuY2VfYmVnaW4sCi0gICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfZGlmZmVyZW5jZTxSYW5nZT46OnR5cGUgYWR2YW5jZV9lbmQgKQotICAgICAgICB7Ci0gICAgICAgICAgICAvL05ETkJPT1NUX0FTU0VSVCggYWR2YW5jZV9iZWdpbiAtIGFkdmFuY2VfZW5kIDw9IHNpemUocikgJiYgImNyZWF0aW5nIGludmFsaWQgcmFuZ2UiICk7Ci0gICAgICAgICAgICByZXR1cm4gaXRlcmF0b3JfcmFuZ2VfZGV0YWlsOjptYWtlX3JhbmdlX2ltcGwoIHIsIGFkdmFuY2VfYmVnaW4sIGFkdmFuY2VfZW5kICk7Ci0gICAgICAgIH0KLQotI2Vsc2UKLQotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUmFuZ2UgPgotICAgICAgICBpbmxpbmUgaXRlcmF0b3JfcmFuZ2U8IE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfaXRlcmF0b3I8UmFuZ2U+Ojp0eXBlID4KLSAgICAgICAgbWFrZV9pdGVyYXRvcl9yYW5nZSggUmFuZ2UmIHIsCi0gICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfZGlmZmVyZW5jZTxSYW5nZT46OnR5cGUgYWR2YW5jZV9iZWdpbiwKLSAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9kaWZmZXJlbmNlPFJhbmdlPjo6dHlwZSBhZHZhbmNlX2VuZCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vTkROQk9PU1RfQVNTRVJUKCBhZHZhbmNlX2JlZ2luIC0gYWR2YW5jZV9lbmQgPD0gc2l6ZShyKSAmJiAiY3JlYXRpbmcgaW52YWxpZCByYW5nZSIgKTsKLSAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcl9yYW5nZV9kZXRhaWw6Om1ha2VfcmFuZ2VfaW1wbCggciwgYWR2YW5jZV9iZWdpbiwgYWR2YW5jZV9lbmQgKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBSYW5nZSA+Ci0gICAgICAgIGlubGluZSBpdGVyYXRvcl9yYW5nZTwgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9pdGVyYXRvcjxjb25zdCBSYW5nZT46OnR5cGUgPgotICAgICAgICBtYWtlX2l0ZXJhdG9yX3JhbmdlKCBjb25zdCBSYW5nZSYgciwKLSAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9kaWZmZXJlbmNlPFJhbmdlPjo6dHlwZSBhZHZhbmNlX2JlZ2luLAotICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX2RpZmZlcmVuY2U8UmFuZ2U+Ojp0eXBlIGFkdmFuY2VfZW5kICkKLSAgICAgICAgewotICAgICAgICAgICAgLy9ORE5CT09TVF9BU1NFUlQoIGFkdmFuY2VfYmVnaW4gLSBhZHZhbmNlX2VuZCA8PSBzaXplKHIpICYmICJjcmVhdGluZyBpbnZhbGlkIHJhbmdlIiApOwotICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yX3JhbmdlX2RldGFpbDo6bWFrZV9yYW5nZV9pbXBsKCByLCBhZHZhbmNlX2JlZ2luLCBhZHZhbmNlX2VuZCApOwotICAgICAgICB9Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19GVU5DVElPTl9URU1QTEFURV9PUkRFUklORwotCi0gICAgICAgIC8vISBjb3B5IGEgcmFuZ2UgaW50byBhIHNlcXVlbmNlCi0gICAgICAgIC8qIQotICAgICAgICAgICAgQ29uc3RydWN0IGEgbmV3IHNlcXVlbmNlIG9mIHRoZSBzcGVjaWZpZWQgdHlwZSBmcm9tIHRoZSBlbGVtZW50cwotICAgICAgICAgICAgaW4gdGhlIGdpdmVuIHJhbmdlCi0KLSAgICAgICAgICAgIFxwYXJhbSBSYW5nZSBBbiBpbnB1dCByYW5nZQotICAgICAgICAgICAgXHJldHVybiBOZXcgc2VxdWVuY2UKLSAgICAgICAgKi8KLSAgICAgICAgdGVtcGxhdGU8IHR5cGVuYW1lIFNlcVQsIHR5cGVuYW1lIFJhbmdlID4KLSAgICAgICAgaW5saW5lIFNlcVQgY29weV9yYW5nZSggY29uc3QgUmFuZ2UmIHIgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gU2VxVCggbmRuYm9vc3Q6OmJlZ2luKCByICksIG5kbmJvb3N0OjplbmQoIHIgKSApOwotICAgICAgICB9Ci0KLX0gLy8gbmFtZXNwYWNlICdib29zdCcKLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgTkROQk9PU1RfVEVTVEVEX0FUKDE1MDApKQotICAgICNwcmFnbWEgd2FybmluZyggcG9wICkKLSNlbmRpZgotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9pdGVyYXRvcl9yYW5nZV9pby5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2l0ZXJhdG9yX3JhbmdlX2lvLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzc4NjYyMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL2l0ZXJhdG9yX3JhbmdlX2lvLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDkzICswLDAgQEAKLS8vIEJvb3N0LlJhbmdlIGxpYnJhcnkKLS8vCi0vLyAgQ29weXJpZ2h0IE5laWwgR3JvdmVzIDIwMDkuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZQotLy8gIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9yYW5nZS8KLS8vCi0jaWZuZGVmIE5ETkJPT1NUX1JBTkdFX0lURVJBVE9SX1JBTkdFX0lPX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9SQU5HRV9JVEVSQVRPUl9SQU5HRV9JT19IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCBORE5CT09TVF9URVNURURfQVQoMTUwMCkpCi0gICAgI3ByYWdtYSB3YXJuaW5nKCBwdXNoICkKLSAgICAjcHJhZ21hIHdhcm5pbmcoIGRpc2FibGUgOiA0OTk2ICkKLSNlbmRpZgotCi0vLyBGcm9tIG5kbmJvb3N0L2R5bmFtaWNfYml0c2V0LmhwcDsgdGhhbmtzIHRvIE1hdHRoaWFzIFRyb3llciBmb3IgQ3JheSBYMSBwYXRjaC4KLSNpZm5kZWYgTkROQk9PU1RfT0xEX0lPU1RSRUFNUyAKLSMgaWYgZGVmaW5lZChfX1NUTF9DT05GSUdfSCkgJiYgXAotICAgICFkZWZpbmVkIChfX1NUTF9VU0VfTkVXX0lPU1RSRUFNUykgJiYgIWRlZmluZWQoX19jcmF5eDEpIFwKLSAgICAvKiovCi0jICBkZWZpbmUgTkROQk9PU1RfT0xEX0lPU1RSRUFNUwotIyBlbmRpZgotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfT0xEX0lPU1RSRUFNUwotCi0jaWZuZGVmIF9TVExQX05PX0lPU1RSRUFNUwotIyBpZm5kZWYgTkROQk9PU1RfT0xEX0lPU1RSRUFNUwotIyAgaW5jbHVkZSA8b3N0cmVhbT4KLSMgZWxzZQotIyAgaW5jbHVkZSA8b3N0cmVhbS5oPgotIyBlbmRpZgotI2VuZGlmIC8vIF9TVExQX05PX0lPU1RSRUFNUwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvaXRlcmF0b3JfcmFuZ2VfY29yZS5ocHA+Ci0jaW5jbHVkZSA8aXRlcmF0b3I+Ci0jaW5jbHVkZSA8YWxnb3JpdGhtPgotI2luY2x1ZGUgPGNzdGRkZWY+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi0jaWZuZGVmIF9TVExQX05PX0lPU1RSRUFNUwotIyBpZm5kZWYgTkROQk9PU1RfT0xEX0lPU1RSRUFNUyAgIAotCi0gICAgICAgIC8vISBpdGVyYXRvcl9yYW5nZSBvdXRwdXQgb3BlcmF0b3IKLSAgICAgICAgLyohCi0gICAgICAgICAgICBPdXRwdXQgdGhlIHJhbmdlIHRvIGFuIG9zdHJlYW0uIEVsZW1lbnRzIGFyZSBvdXRwdXR0ZWQKLSAgICAgICAgICAgIGluIGEgc2VxdWVuY2Ugd2l0aG91dCBzZXBhcmF0b3JzLgotICAgICAgICAqLwotICAgICAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3JULCB0eXBlbmFtZSBFbGVtLCB0eXBlbmFtZSBUcmFpdHMgPgotICAgICAgICBpbmxpbmUgc3RkOjpiYXNpY19vc3RyZWFtPEVsZW0sVHJhaXRzPiYgb3BlcmF0b3I8PCggCi0gICAgICAgICAgICAgICAgICAgIHN0ZDo6YmFzaWNfb3N0cmVhbTxFbGVtLCBUcmFpdHM+JiBPcywKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgaXRlcmF0b3JfcmFuZ2U8SXRlcmF0b3JUPiYgciApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0ZDo6Y29weSggci5iZWdpbigpLCByLmVuZCgpLCAKLSAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpvc3RyZWFtX2l0ZXJhdG9yPCBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZXJhdG9yX3ZhbHVlPEl0ZXJhdG9yVD46OnR5cGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVsZW0sIFRyYWl0cz4oT3MpICk7Ci0gICAgICAgICAgICByZXR1cm4gT3M7Ci0gICAgICAgIH0KLQotIyBlbHNlCi0KLSAgICAgICAgLy8hIGl0ZXJhdG9yX3JhbmdlIG91dHB1dCBvcGVyYXRvcgotICAgICAgICAvKiEKLSAgICAgICAgICAgIE91dHB1dCB0aGUgcmFuZ2UgdG8gYW4gb3N0cmVhbS4gRWxlbWVudHMgYXJlIG91dHB1dHRlZAotICAgICAgICAgICAgaW4gYSBzZXF1ZW5jZSB3aXRob3V0IHNlcGFyYXRvcnMuCi0gICAgICAgICovCi0gICAgICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBJdGVyYXRvclQgPgotICAgICAgICBpbmxpbmUgc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KCAKLSAgICAgICAgICAgICAgICAgICAgc3RkOjpvc3RyZWFtJiBPcywKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgaXRlcmF0b3JfcmFuZ2U8SXRlcmF0b3JUPiYgciApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0ZDo6Y29weSggci5iZWdpbigpLCByLmVuZCgpLCBzdGQ6Om9zdHJlYW1faXRlcmF0b3I8Y2hhcj4oT3MpKTsKLSAgICAgICAgICAgIHJldHVybiBPczsKLSAgICAgICAgfQotCi0jIGVuZGlmCi0jZW5kaWYgLy8gX1NUTFBfTk9fSU9TVFJFQU1TCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSN1bmRlZiBORE5CT09TVF9PTERfSU9TVFJFQU1TCi0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIE5ETkJPT1NUX1RFU1RFRF9BVCgxNTAwKSkKLSAgICAjcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLSNlbmRpZiAvLyBpbmNsdWRlIGd1YXJkCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL211dGFibGVfaXRlcmF0b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9tdXRhYmxlX2l0ZXJhdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjUxODNiMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL211dGFibGVfaXRlcmF0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotLy8gQm9vc3QuUmFuZ2UgbGlicmFyeQotLy8KLS8vICBDb3B5cmlnaHQgVGhvcnN0ZW4gT3R0b3NlbiAyMDAzLTIwMDQuIFVzZSwgbW9kaWZpY2F0aW9uIGFuZAotLy8gIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uCi0vLyAgMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9yYW5nZS8KLS8vCi0KLSNpZm5kZWYgTkROQk9PU1RfUkFOR0VfTVVUQUJMRV9JVEVSQVRPUl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkFOR0VfTVVUQUJMRV9JVEVSQVRPUl9IUFAKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMjAwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9jb25maWcuaHBwPgotCi0jaWZkZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2RldGFpbC9pdGVyYXRvci5ocHA+Ci0jZWxzZQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvZGV0YWlsL2V4dHJhY3Rfb3B0aW9uYWxfdHlwZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaXRlcmF0b3IvaXRlcmF0b3JfdHJhaXRzLmhwcD4KLSNpbmNsdWRlIDxjc3RkZGVmPgotI2luY2x1ZGUgPHV0aWxpdHk+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgLy8gZGVmYXVsdAotICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgCi0gICAgbmFtZXNwYWNlIHJhbmdlX2RldGFpbCB7Ci0gICAgICAgIE5ETkJPT1NUX1JBTkdFX0VYVFJBQ1RfT1BUSU9OQUxfVFlQRSggaXRlcmF0b3IgKQotICAgIH0KLQotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBDID4KLSAgICBzdHJ1Y3QgcmFuZ2VfbXV0YWJsZV9pdGVyYXRvciA6IHJhbmdlX2RldGFpbDo6ZXh0cmFjdF9pdGVyYXRvcjxDPgotICAgIHt9OwotICAgIAotICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgLy8gcGFpcgotICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgSXRlcmF0b3IgPgotICAgIHN0cnVjdCByYW5nZV9tdXRhYmxlX2l0ZXJhdG9yPCBzdGQ6OnBhaXI8SXRlcmF0b3IsSXRlcmF0b3I+ID4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlcmF0b3IgdHlwZTsKLSAgICB9OwotCi0gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAvLyBhcnJheQotICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVCwgc3RkOjpzaXplX3Qgc3ogPgotICAgIHN0cnVjdCByYW5nZV9tdXRhYmxlX2l0ZXJhdG9yPCBUW3N6XSA+Ci0gICAgewotICAgICAgICB0eXBlZGVmIFQqIHR5cGU7Ci0gICAgfTsKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL3JiZWdpbi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL3JiZWdpbi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY4ODU4ZjEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yYW5nZS9yYmVnaW4uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjUgKzAsMCBAQAotLy8gQm9vc3QuUmFuZ2UgbGlicmFyeQotLy8KLS8vICBDb3B5cmlnaHQgVGhvcnN0ZW4gT3R0b3NlbiAyMDAzLTIwMDQuIFVzZSwgbW9kaWZpY2F0aW9uIGFuZAotLy8gIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uCi0vLyAgMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9yYW5nZS8KLS8vCi0KLSNpZm5kZWYgTkROQk9PU1RfUkFOR0VfUkJFR0lOX0hQUAotI2RlZmluZSBORE5CT09TVF9SQU5HRV9SQkVHSU5fSFBQCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTIwMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvZW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9yZXZlcnNlX2l0ZXJhdG9yLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLSNpZmRlZiBORE5CT09TVF9OT19GVU5DVElPTl9URU1QTEFURV9PUkRFUklORwotCi10ZW1wbGF0ZTwgY2xhc3MgQyA+Ci1pbmxpbmUgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9yZXZlcnNlX2l0ZXJhdG9yPEM+Ojp0eXBlCi1yYmVnaW4oIEMmIGMgKQotewotICAgIHJldHVybiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX3JldmVyc2VfaXRlcmF0b3I8Qz46OnR5cGUoIG5kbmJvb3N0OjplbmQoIGMgKSApOwotfQotCi0jZWxzZQotCi10ZW1wbGF0ZTwgY2xhc3MgQyA+Ci1pbmxpbmUgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9yZXZlcnNlX2l0ZXJhdG9yPEM+Ojp0eXBlCi1yYmVnaW4oIEMmIGMgKQotewotICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9yZXZlcnNlX2l0ZXJhdG9yPEM+Ojp0eXBlCi0gICAgICAgIGl0ZXJfdHlwZTsKLSAgICByZXR1cm4gaXRlcl90eXBlKCBuZG5ib29zdDo6ZW5kKCBjICkgKTsKLX0KLQotdGVtcGxhdGU8IGNsYXNzIEMgPgotaW5saW5lIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfcmV2ZXJzZV9pdGVyYXRvcjxjb25zdCBDPjo6dHlwZQotcmJlZ2luKCBjb25zdCBDJiBjICkKLXsKLSAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfcmV2ZXJzZV9pdGVyYXRvcjxjb25zdCBDPjo6dHlwZQotICAgICAgICBpdGVyX3R5cGU7Ci0gICAgcmV0dXJuIGl0ZXJfdHlwZSggbmRuYm9vc3Q6OmVuZCggYyApICk7Ci19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19GVU5DVElPTl9URU1QTEFURV9PUkRFUklORwotCi10ZW1wbGF0ZTwgY2xhc3MgVCA+Ci1pbmxpbmUgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9yZXZlcnNlX2l0ZXJhdG9yPGNvbnN0IFQ+Ojp0eXBlCi1jb25zdF9yYmVnaW4oIGNvbnN0IFQmIHIgKQotewotICAgIHJldHVybiBuZG5ib29zdDo6cmJlZ2luKCByICk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlICdib29zdCcKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvcmVuZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL3JlbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNjgwY2E2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvcmVuZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2NSArMCwwIEBACi0vLyBCb29zdC5SYW5nZSBsaWJyYXJ5Ci0vLwotLy8gIENvcHlyaWdodCBUaG9yc3RlbiBPdHRvc2VuIDIwMDMtMjAwNC4gVXNlLCBtb2RpZmljYXRpb24gYW5kCi0vLyAgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24KLS8vICAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3JhbmdlLwotLy8KLQotI2lmbmRlZiBORE5CT09TVF9SQU5HRV9SRU5EX0hQUAotI2RlZmluZSBORE5CT09TVF9SQU5HRV9SRU5EX0hQUAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEyMDApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2JlZ2luLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9yZXZlcnNlX2l0ZXJhdG9yLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLSNpZmRlZiBORE5CT09TVF9OT19GVU5DVElPTl9URU1QTEFURV9PUkRFUklORwotCi10ZW1wbGF0ZTwgY2xhc3MgQyA+Ci1pbmxpbmUgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9yZXZlcnNlX2l0ZXJhdG9yPEM+Ojp0eXBlCi1yZW5kKCBDJiBjICkKLXsKLSAgICByZXR1cm4gTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9yZXZlcnNlX2l0ZXJhdG9yPEM+Ojp0eXBlKCBuZG5ib29zdDo6YmVnaW4oIGMgKSApOwotfQotCi0jZWxzZQotCi10ZW1wbGF0ZTwgY2xhc3MgQyA+Ci1pbmxpbmUgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9yZXZlcnNlX2l0ZXJhdG9yPEM+Ojp0eXBlCi1yZW5kKCBDJiBjICkKLXsKLSAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfcmV2ZXJzZV9pdGVyYXRvcjxDPjo6dHlwZQotICAgICAgICAgICAgICAgaXRlcl90eXBlOwotICAgIHJldHVybiBpdGVyX3R5cGUoIG5kbmJvb3N0OjpiZWdpbiggYyApICk7Ci19Ci0KLXRlbXBsYXRlPCBjbGFzcyBDID4KLWlubGluZSBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX3JldmVyc2VfaXRlcmF0b3I8Y29uc3QgQz46OnR5cGUKLXJlbmQoIGNvbnN0IEMmIGMgKQotewotICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9yZXZlcnNlX2l0ZXJhdG9yPGNvbnN0IEM+Ojp0eXBlCi0gICAgICAgIGl0ZXJfdHlwZTsKLSAgICByZXR1cm4gaXRlcl90eXBlKCBuZG5ib29zdDo6YmVnaW4oIGMgKSApOwotfQotCi0jZW5kaWYKLQotdGVtcGxhdGU8IGNsYXNzIFQgPgotaW5saW5lIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfcmV2ZXJzZV9pdGVyYXRvcjxjb25zdCBUPjo6dHlwZQotY29uc3RfcmVuZCggY29uc3QgVCYgciApCi17Ci0gICAgcmV0dXJuIG5kbmJvb3N0OjpyZW5kKCByICk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlICdib29zdCcKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvcmVzdWx0X2l0ZXJhdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvcmVzdWx0X2l0ZXJhdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDA2ZTc3ZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL3Jlc3VsdF9pdGVyYXRvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi0vLyBCb29zdC5SYW5nZSBsaWJyYXJ5Ci0vLwotLy8gIENvcHlyaWdodCBUaG9yc3RlbiBPdHRvc2VuIDIwMDMtMjAwNC4gVXNlLCBtb2RpZmljYXRpb24gYW5kCi0vLyAgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24KLS8vICAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3JhbmdlLwotLy8KLQotI2lmbmRlZiBORE5CT09TVF9SQU5HRV9SRVNVTFRfSVRFUkFUT1JfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkdFX1JFU1VMVF9JVEVSQVRPUl9IUFAKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9pdGVyYXRvci5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotICAgIC8vCi0gICAgLy8gVGhpcyBpbnRlcmZhY2UgaXMgZGVwcmVjYXRlZCwgdXNlIHJhbmdlX2l0ZXJhdG9yPFQ+Ci0gICAgLy8KLSAgICAKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgQyA+Ci0gICAgc3RydWN0IHJhbmdlX3Jlc3VsdF9pdGVyYXRvciA6IHJhbmdlX2l0ZXJhdG9yPEM+Ci0gICAgeyB9OwotICAgIAotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvcmV2ZXJzZV9pdGVyYXRvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL3JldmVyc2VfaXRlcmF0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNTBmNzhiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvcmV2ZXJzZV9pdGVyYXRvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0vLyBCb29zdC5SYW5nZSBsaWJyYXJ5Ci0vLwotLy8gIENvcHlyaWdodCBUaG9yc3RlbiBPdHRvc2VuIDIwMDMtMjAwNC4gVXNlLCBtb2RpZmljYXRpb24gYW5kCi0vLyAgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24KLS8vICAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3JhbmdlLwotLy8KLQotI2lmbmRlZiBORE5CT09TVF9SQU5HRV9SRVZFUlNFX0lURVJBVE9SX0hQUAotI2RlZmluZSBORE5CT09TVF9SQU5HRV9SRVZFUlNFX0lURVJBVE9SX0hQUAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEyMDApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvaXRlcmF0b3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2l0ZXJhdG9yL3JldmVyc2VfaXRlcmF0b3IuaHBwPgotCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgLy8gZGVmYXVsdAotICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgCi0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIEMgPgotICAgIHN0cnVjdCByYW5nZV9yZXZlcnNlX2l0ZXJhdG9yCi0gICAgewotICAgICAgICB0eXBlZGVmIHJldmVyc2VfaXRlcmF0b3I8IAotICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9pdGVyYXRvcjxDPjo6dHlwZSA+IHR5cGU7Ci0gICAgfTsKLSAgICAKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2Uvc2l6ZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL3NpemUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOTUyNTUwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2Uvc2l6ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi0vLyBCb29zdC5SYW5nZSBsaWJyYXJ5Ci0vLwotLy8gIENvcHlyaWdodCBUaG9yc3RlbiBPdHRvc2VuIDIwMDMtMjAwNC4gVXNlLCBtb2RpZmljYXRpb24gYW5kCi0vLyAgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24KLS8vICAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3JhbmdlLwotLy8KLQotI2lmbmRlZiBORE5CT09TVF9SQU5HRV9TSVpFX0hQUAotI2RlZmluZSBORE5CT09TVF9SQU5HRV9TSVpFX0hQUAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEyMDApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvYmVnaW4uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2Uvc2l6ZV90eXBlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9hc3NlcnQuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLSAgICBuYW1lc3BhY2UgcmFuZ2VfZGV0YWlsCi0gICAgewotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBTaW5nbGVQYXNzUmFuZ2U+Ci0gICAgICAgIGlubGluZSBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJhbmdlX3NpemU8Y29uc3QgU2luZ2xlUGFzc1JhbmdlPjo6dHlwZQotICAgICAgICByYW5nZV9jYWxjdWxhdGVfc2l6ZShjb25zdCBTaW5nbGVQYXNzUmFuZ2UmIHJuZykKLSAgICAgICAgewotICAgICAgICAgICAgTkROQk9PU1RfQVNTRVJUKCAobmRuYm9vc3Q6OmVuZChybmcpIC0gbmRuYm9vc3Q6OmJlZ2luKHJuZykpID49IDAgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgInJlYWNoYWJpbGl0eSBpbnZhcmlhbnQgYnJva2VuISIgKTsKLSAgICAgICAgICAgIHJldHVybiBuZG5ib29zdDo6ZW5kKHJuZykgLSBuZG5ib29zdDo6YmVnaW4ocm5nKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFNpbmdsZVBhc3NSYW5nZT4KLSAgICBpbmxpbmUgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByYW5nZV9zaXplPGNvbnN0IFNpbmdsZVBhc3NSYW5nZT46OnR5cGUKLSAgICBzaXplKGNvbnN0IFNpbmdsZVBhc3NSYW5nZSYgcm5nKQotICAgIHsKLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU2NCkpICYmIFwKLSAgICAhTkROQk9PU1RfV09SS0FST1VORChfX0dOVUNfXywgPCAzKSBcCi0gICAgLyoqLwotICAgICAgICB1c2luZyBuYW1lc3BhY2UgcmFuZ2VfZGV0YWlsOwotI2VuZGlmCi0gICAgICAgIHJldHVybiByYW5nZV9jYWxjdWxhdGVfc2l6ZShybmcpOwotICAgIH0KLQotfSAvLyBuYW1lc3BhY2UgJ2Jvb3N0JwotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2Uvc2l6ZV90eXBlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2Uvc2l6ZV90eXBlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2U0ODYzOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL3NpemVfdHlwZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw4OSArMCwwIEBACi0vLyBCb29zdC5SYW5nZSBsaWJyYXJ5Ci0vLwotLy8gIENvcHlyaWdodCBUaG9yc3RlbiBPdHRvc2VuIDIwMDMtMjAwNC4gVXNlLCBtb2RpZmljYXRpb24gYW5kCi0vLyAgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24KLS8vICAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3JhbmdlLwotLy8KLQotI2lmbmRlZiBORE5CT09TVF9SQU5HRV9TSVpFX1RZUEVfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JBTkdFX1NJWkVfVFlQRV9IUFAKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2RpZmZlcmVuY2VfdHlwZS5ocHA+Ci0jaWZkZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2RldGFpbC9zaXplX3R5cGUuaHBwPgotI2Vsc2UKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3V0aWxpdHkvZW5hYmxlX2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9tYWtlX3Vuc2lnbmVkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfY29uc3QuaHBwPgotI2luY2x1ZGUgPGNzdGRkZWY+Ci0jaW5jbHVkZSA8dXRpbGl0eT4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0gICAgbmFtZXNwYWNlIGRldGFpbAotICAgIHsKLQotICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgICAgICAvLyBkZWZhdWx0Ci0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgY2xhc3MgaGFzX3NpemVfdHlwZQotICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIGNoYXIgbm9fdHlwZTsKLSAgICAgICAgICAgIHN0cnVjdCB5ZXNfdHlwZSB7IGNoYXIgZHVtbXlbMl07IH07Ci0KLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEM+Ci0gICAgICAgICAgICBzdGF0aWMgeWVzX3R5cGUgdGVzdChORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIEM6OnNpemVfdHlwZSB4KTsKLQotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQywgdHlwZW5hbWUgQXJnPgotICAgICAgICAgICAgc3RhdGljIG5vX3R5cGUgdGVzdChBcmcgeCk7Ci0KLSAgICAgICAgcHVibGljOgotICAgICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSBzaXplb2YodGVzdDxUPigwKSkgPT0gc2l6ZW9mKHllc190eXBlKTsKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDLCB0eXBlbmFtZSBFbmFibGVyPXZvaWQ+Ci0gICAgICAgIHN0cnVjdCByYW5nZV9zaXplCi0gICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBtYWtlX3Vuc2lnbmVkPAotICAgICAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmFuZ2VfZGlmZmVyZW5jZTxDPjo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZSB0eXBlOwotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEM+Ci0gICAgICAgIHN0cnVjdCByYW5nZV9zaXplPAotICAgICAgICAgICAgQywKLSAgICAgICAgICAgIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgZW5hYmxlX2lmPGhhc19zaXplX3R5cGU8Qz4sIHZvaWQ+Ojp0eXBlCi0gICAgICAgID4KLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIEM6OnNpemVfdHlwZSB0eXBlOwotICAgICAgICB9OwotCi0gICAgfQotCi0gICAgdGVtcGxhdGU8IGNsYXNzIFQgPgotICAgIHN0cnVjdCByYW5nZV9zaXplIDoKLSAgICAgICAgZGV0YWlsOjpyYW5nZV9zaXplPFQ+Ci0gICAgeyB9OwotCi0gICAgdGVtcGxhdGU8IGNsYXNzIFQgPgotICAgIHN0cnVjdCByYW5nZV9zaXplPGNvbnN0IFQgPgotICAgICAgICA6IGRldGFpbDo6cmFuZ2Vfc2l6ZTxUPgotICAgIHsgfTsKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvdmFsdWVfdHlwZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JhbmdlL3ZhbHVlX3R5cGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NTVlYTYwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmFuZ2UvdmFsdWVfdHlwZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0vLyBCb29zdC5SYW5nZSBsaWJyYXJ5Ci0vLwotLy8gIENvcHlyaWdodCBUaG9yc3RlbiBPdHRvc2VuIDIwMDMtMjAwNC4gVXNlLCBtb2RpZmljYXRpb24gYW5kCi0vLyAgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24KLS8vICAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3JhbmdlLwotLy8KLQotI2lmbmRlZiBORE5CT09TVF9SQU5HRV9WQUxVRV9UWVBFX0hQUAotI2RlZmluZSBORE5CT09TVF9SQU5HRV9WQUxVRV9UWVBFX0hQUAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEyMDApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3JhbmdlL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmFuZ2UvaXRlcmF0b3IuaHBwPgotCi0vLyNpZmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0vLyNpbmNsdWRlIDxuZG5ib29zdC9yYW5nZS9kZXRhaWwvdmFsdWVfdHlwZS5ocHA+Ci0vLyNlbHNlCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9pdGVyYXRvci9pdGVyYXRvcl90cmFpdHMuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLSAgICB0ZW1wbGF0ZTwgY2xhc3MgVCA+Ci0gICAgc3RydWN0IHJhbmdlX3ZhbHVlIDogaXRlcmF0b3JfdmFsdWU8IHR5cGVuYW1lIHJhbmdlX2l0ZXJhdG9yPFQ+Ojp0eXBlID4KLSAgICB7IH07Ci19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yZWYuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWYuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NTZlY2Q2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmVmLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE4OSArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1JFRl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfUkVGX0hQUF9JTkNMVURFRAotCi0vLyBNUyBjb21wYXRpYmxlIGNvbXBpbGVycyBzdXBwb3J0ICNwcmFnbWEgb25jZQotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdXRpbGl0eS9hZGRyZXNzb2YuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ib29sLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLS8vCi0vLyAgcmVmLmhwcCAtIHJlZi9jcmVmLCB1c2VmdWwgaGVscGVyIGZ1bmN0aW9ucwotLy8KLS8vICBDb3B5cmlnaHQgKEMpIDE5OTksIDIwMDAgSmFha2tvIEphcnZpIChqYWFra28uamFydmlAY3MudXR1LmZpKQotLy8gIENvcHlyaWdodCAoQykgMjAwMSwgMjAwMiBQZXRlciBEaW1vdgotLy8gIENvcHlyaWdodCAoQykgMjAwMiBEYXZpZCBBYnJhaGFtcwotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvYmluZC9yZWYuaHRtbCBmb3IgZG9jdW1lbnRhdGlvbi4KLS8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi10ZW1wbGF0ZTxjbGFzcyBUPiBjbGFzcyByZWZlcmVuY2Vfd3JhcHBlcgoteyAKLXB1YmxpYzoKLSAgICB0eXBlZGVmIFQgdHlwZTsKLQotI2lmIGRlZmluZWQoIE5ETkJPT1NUX01TVkMgKSAmJiBORE5CT09TVF9XT1JLQVJPVU5EKCBORE5CT09TVF9NU1ZDLCA8IDEzMDAgKQotCi0gICAgZXhwbGljaXQgcmVmZXJlbmNlX3dyYXBwZXIoVCYgdCk6IHRfKCZ0KSB7fQotCi0jZWxzZQotCi0gICAgZXhwbGljaXQgcmVmZXJlbmNlX3dyYXBwZXIoVCYgdCk6IHRfKG5kbmJvb3N0OjphZGRyZXNzb2YodCkpIHt9Ci0KLSNlbmRpZgotCi0gICAgb3BlcmF0b3IgVCYgKCkgY29uc3QgeyByZXR1cm4gKnRfOyB9Ci0KLSAgICBUJiBnZXQoKSBjb25zdCB7IHJldHVybiAqdF87IH0KLQotICAgIFQqIGdldF9wb2ludGVyKCkgY29uc3QgeyByZXR1cm4gdF87IH0KLQotcHJpdmF0ZToKLQotICAgIFQqIHRfOwotfTsKLQotIyBpZiBkZWZpbmVkKCBfX0JPUkxBTkRDX18gKSAmJiBORE5CT09TVF9XT1JLQVJPVU5EKCBfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU4MSkgKQotIyAgZGVmaW5lIE5ETkJPT1NUX1JFRl9DT05TVAotIyBlbHNlCi0jICBkZWZpbmUgTkROQk9PU1RfUkVGX0NPTlNUIGNvbnN0Ci0jIGVuZGlmCi0KLXRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSByZWZlcmVuY2Vfd3JhcHBlcjxUPiBORE5CT09TVF9SRUZfQ09OU1QgcmVmKFQgJiB0KQoteyAKLSAgICByZXR1cm4gcmVmZXJlbmNlX3dyYXBwZXI8VD4odCk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSByZWZlcmVuY2Vfd3JhcHBlcjxUIGNvbnN0PiBORE5CT09TVF9SRUZfQ09OU1QgY3JlZihUIGNvbnN0ICYgdCkKLXsKLSAgICByZXR1cm4gcmVmZXJlbmNlX3dyYXBwZXI8VCBjb25zdD4odCk7Ci19Ci0KLSMgdW5kZWYgTkROQk9PU1RfUkVGX0NPTlNUCi0KLSMgaWZuZGVmIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNsYXNzIGlzX3JlZmVyZW5jZV93cmFwcGVyCi0gICAgOiBwdWJsaWMgbXBsOjpmYWxzZV8KLXsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1jbGFzcyB1bndyYXBfcmVmZXJlbmNlCi17Ci0gcHVibGljOgotICAgIHR5cGVkZWYgVCB0eXBlOwotfTsKLQotIyAgZGVmaW5lIEFVWF9SRUZFUkVOQ0VfV1JBUFBFUl9NRVRBRlVOQ1RJT05TX0RFRihYKSBcCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBcCi1jbGFzcyBpc19yZWZlcmVuY2Vfd3JhcHBlcjwgWCA+IFwKLSAgICA6IHB1YmxpYyBtcGw6OnRydWVfIFwKLXsgXAotfTsgXAotXAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gXAotY2xhc3MgdW53cmFwX3JlZmVyZW5jZTwgWCA+IFwKLXsgXAotIHB1YmxpYzogXAotICAgIHR5cGVkZWYgVCB0eXBlOyBcCi19OyBcCi0vKiovCi0KLUFVWF9SRUZFUkVOQ0VfV1JBUFBFUl9NRVRBRlVOQ1RJT05TX0RFRihyZWZlcmVuY2Vfd3JhcHBlcjxUPikKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DVl9TUEVDSUFMSVpBVElPTlMpCi1BVVhfUkVGRVJFTkNFX1dSQVBQRVJfTUVUQUZVTkNUSU9OU19ERUYocmVmZXJlbmNlX3dyYXBwZXI8VD4gY29uc3QpCi1BVVhfUkVGRVJFTkNFX1dSQVBQRVJfTUVUQUZVTkNUSU9OU19ERUYocmVmZXJlbmNlX3dyYXBwZXI8VD4gdm9sYXRpbGUpCi1BVVhfUkVGRVJFTkNFX1dSQVBQRVJfTUVUQUZVTkNUSU9OU19ERUYocmVmZXJlbmNlX3dyYXBwZXI8VD4gY29uc3Qgdm9sYXRpbGUpCi0jZW5kaWYKLQotIyAgdW5kZWYgQVVYX1JFRkVSRU5DRV9XUkFQUEVSX01FVEFGVU5DVElPTlNfREVGCi0KLSMgZWxzZSAvLyBubyBwYXJ0aWFsIHNwZWNpYWxpemF0aW9uCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLW5hbWVzcGFjZSBkZXRhaWwKLXsKLSAgdHlwZWRlZiBjaGFyICgmeWVzX3JlZmVyZW5jZV93cmFwcGVyX3QpWzFdOwotICB0eXBlZGVmIGNoYXIgKCZub19yZWZlcmVuY2Vfd3JhcHBlcl90KVsyXTsKLSAgICAgIAotICBub19yZWZlcmVuY2Vfd3JhcHBlcl90IGlzX3JlZmVyZW5jZV93cmFwcGVyX3Rlc3QoLi4uKTsKLQotICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICB5ZXNfcmVmZXJlbmNlX3dyYXBwZXJfdCBpc19yZWZlcmVuY2Vfd3JhcHBlcl90ZXN0KHR5cGU8IHJlZmVyZW5jZV93cmFwcGVyPFQ+ID4pOwotCi0gIHRlbXBsYXRlPGJvb2wgd3JhcHBlZD4KLSAgc3RydWN0IHJlZmVyZW5jZV91bndyYXBwZXIKLSAgewotICAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICAgICBzdHJ1Y3QgYXBwbHkKLSAgICAgIHsKLSAgICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICAgIH07Ci0gIH07Ci0KLSAgdGVtcGxhdGU8PgotICBzdHJ1Y3QgcmVmZXJlbmNlX3Vud3JhcHBlcjx0cnVlPgotICB7Ci0gICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICAgIHN0cnVjdCBhcHBseQotICAgICAgewotICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgVDo6dHlwZSB0eXBlOwotICAgICAgfTsKLSAgfTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNsYXNzIGlzX3JlZmVyZW5jZV93cmFwcGVyCi17Ci0gcHVibGljOgotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCgKLSAgICAgICAgYm9vbCwgdmFsdWUgPSAoCi0gICAgICAgICAgICAgc2l6ZW9mKGRldGFpbDo6aXNfcmVmZXJlbmNlX3dyYXBwZXJfdGVzdCh0eXBlPFQ+KCkpKQotICAgICAgICAgICAgPT0gc2l6ZW9mKGRldGFpbDo6eWVzX3JlZmVyZW5jZV93cmFwcGVyX3QpKSk7Ci0gICAgCi0gICAgdHlwZWRlZiA6Om5kbmJvb3N0OjptcGw6OmJvb2xfPHZhbHVlPiB0eXBlOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyB1bndyYXBfcmVmZXJlbmNlCi0gICAgOiBwdWJsaWMgZGV0YWlsOjpyZWZlcmVuY2VfdW53cmFwcGVyPAotICAgICAgICBpc19yZWZlcmVuY2Vfd3JhcHBlcjxUPjo6dmFsdWUKLSAgICAgID46OnRlbXBsYXRlIGFwcGx5PFQ+Ci17fTsKLQotIyBlbmRpZiAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLXRlbXBsYXRlIDxjbGFzcyBUPiBpbmxpbmUgdHlwZW5hbWUgdW53cmFwX3JlZmVyZW5jZTxUPjo6dHlwZSYKLXVud3JhcF9yZWYoVCYgdCkKLXsKLSAgICByZXR1cm4gdDsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIFQqIGdldF9wb2ludGVyKCByZWZlcmVuY2Vfd3JhcHBlcjxUPiBjb25zdCAmIHIgKQotewotICAgIHJldHVybiByLmdldF9wb2ludGVyKCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX1JFRl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXguaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWdleC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDViMWM3YTUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAyCi0gKiBKb2huIE1hZGRvY2sKLSAqCi0gKiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLSAqIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotICogTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqLwotCi0gLyoKLSAgKiAgIExPQ0FUSU9OOiAgICBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9yZWdleCBmb3IgZG9jdW1lbnRhdGlvbi4KLSAgKiAgIEZJTEUgICAgICAgICByZWdleC5jcHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IERlY2xhcmVzIG5kbmJvb3N0OjpiYXNpY19yZWdleDw+IGFuZCBhc3NvY2lhdGVkCi0gICogICAgICAgICAgICAgICAgZnVuY3Rpb25zIGFuZCBjbGFzc2VzLiBUaGlzIGhlYWRlciBpcyB0aGUgbWFpbgotICAqICAgICAgICAgICAgICAgIGVudHJ5IHBvaW50IGZvciB0aGUgdGVtcGxhdGUgcmVnZXggY29kZS4KLSAgKi8KLQotCi0vKiBzdGFydCB3aXRoIEMgY29tcGF0aWJpbGl0eSBBUEkgKi8KLQotI2lmbmRlZiBORE5CT09TVF9SRV9SRUdFWF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkVfUkVHRVhfSFBQCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfQ09ORklHX0hQUAotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L2NvbmZpZy5ocHA+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4LmhwcD4KLQotI2VuZGlmICAvLyBpbmNsdWRlCi0KLQotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvY29uZmlnLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvY29uZmlnLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTgxNjhiNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L2NvbmZpZy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MzUgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMgotICogSm9obiBNYWRkb2NrCi0gKgotICogVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUKLSAqIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlCi0gKiBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICovCi0KLSAvKgotICAqICAgTE9DQVRJT046ICAgIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLSAgKiAgIEZJTEUgICAgICAgICBjb25maWcuaHBwCi0gICogICBWRVJTSU9OICAgICAgc2VlIDxuZG5ib29zdC92ZXJzaW9uLmhwcD4KLSAgKiAgIERFU0NSSVBUSU9OOiByZWdleCBleHRlbmRlZCBjb25maWcgc2V0dXAuCi0gICovCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfQ09ORklHX0hQUAotI2RlZmluZSBORE5CT09TVF9SRUdFWF9DT05GSUdfSFBQCi0vKgotICogQm9ybGFuZCBDKysgRml4L2Vycm9yIGNoZWNrCi0gKiB0aGlzIGhhcyB0byBnbyAqYmVmb3JlKiB3ZSBpbmNsdWRlIGFueSBzdGQgbGliIGhlYWRlcnM6Ci0gKi8KLSNpZiBkZWZpbmVkKF9fQk9STEFORENfXykKLSMgIGluY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L2NvbmZpZy9ib3JsYW5kLmhwcD4KLSNlbmRpZgotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqCi0gKiAgSW5jbHVkZSBhbGwgdGhlIGhlYWRlcnMgd2UgbmVlZCBoZXJlOgotICoKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0jaWZkZWYgX19jcGx1c3BsdXMKLQotIyAgaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1VTRVJfQ09ORklHCi0jICAgICBkZWZpbmUgTkROQk9PU1RfUkVHRVhfVVNFUl9DT05GSUcgPG5kbmJvb3N0L3JlZ2V4L3VzZXIuaHBwPgotIyAgZW5kaWYKLQotIyAgaW5jbHVkZSBORE5CT09TVF9SRUdFWF9VU0VSX0NPTkZJRwotCi0jICBpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi0jZWxzZQotICAgLyoKLSAgICAqIEMgYnVpbGQsCi0gICAgKiBkb24ndCBpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiBiZWNhdXNlIHRoYXQgbWF5Ci0gICAgKiBkbyBDKysgc3BlY2lmaWMgdGhpbmdzIGluIGZ1dHVyZS4uLgotICAgICovCi0jICBpbmNsdWRlIDxzdGRsaWIuaD4KLSMgIGluY2x1ZGUgPHN0ZGRlZi5oPgotIyAgaWZkZWYgX01TQ19WRVIKLSMgICAgIGRlZmluZSBORE5CT09TVF9NU1ZDIF9NU0NfVkVSCi0jICBlbmRpZgotI2VuZGlmCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICoKLSAqICBCb2lsZXJwbGF0ZSByZWdleCBjb25maWcgb3B0aW9uczoKLSAqCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotLyogT2Jzb2xldGUgbWFjcm8sIHVzZSBORE5CT09TVF9WRVJTSU9OIGluc3RlYWQ6ICovCi0jZGVmaW5lIE5ETkJPT1NUX1JFX1ZFUlNJT04gMzIwCi0KLS8qIGZpeDogKi8KLSNpZiBkZWZpbmVkKF9VTklDT0RFKSAmJiAhZGVmaW5lZChVTklDT0RFKQotI2RlZmluZSBVTklDT0RFCi0jZW5kaWYKLQotLyoKLSAqIEZpeCBmb3IgZ2NjIHByaW9yIHRvIDMuNDogc3RkOjpjdHlwZTx3Y2hhcl90PiBkb2Vzbid0IGFsbG93Ci0gKiBtYXNrcyB0byBiZSBjb21iaW5lZCwgZm9yIGV4YW1wbGU6Ci0gKiBzdGQ6OnVzZV9mYWNldDxzdGQ6OmN0eXBlPHdjaGFyX3Q+ID4uaXMoc3RkOjpjdHlwZV9iYXNlOjpsb3dlcnxzdGQ6OmN0eXBlX2Jhc2U6OnVwcGVyLCBMJ2EnKTsKLSAqIHJldHVybnMgKmZhbHNlKi4KLSAqLwotI2lmZGVmIF9fR0xJQkNQUF9fCi0jICBkZWZpbmUgTkROQk9PU1RfUkVHRVhfQlVHR1lfQ1RZUEVfRkFDRVQKLSNlbmRpZgotCi0vKgotICogSW50ZWwgQysrIGJlZm9yZSA4LjAgZW5kcyB1cCB3aXRoIHVucmVzb2x2ZWQgZXh0ZXJuYWxzIHVubGVzcyB3ZSB0dXJuIG9mZgotICogZXh0ZXJuIHRlbXBsYXRlIHN1cHBvcnQ6Ci0gKi8KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0lOVEVMKSAmJiBkZWZpbmVkKF9fY3BsdXNwbHVzKSAmJiAoTkROQk9PU1RfSU5URUwgPD0gODAwKQotIyAgZGVmaW5lIE5ETkJPT1NUX1JFR0VYX05PX0VYVEVSTkFMX1RFTVBMQVRFUwotI2VuZGlmCi0vKgotICogVmlzdWFsIEMrKyBkb2Vzbid0IHN1cHBvcnQgZXh0ZXJuYWwgdGVtcGxhdGVzIHdpdGggQysrIGV4dGVuc2lvbnMgdHVybmVkIG9mZjoKLSAqLwotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmICFkZWZpbmVkKF9NU0NfRVhURU5TSU9OUykKLSMgIGRlZmluZSBORE5CT09TVF9SRUdFWF9OT19FWFRFUk5BTF9URU1QTEFURVMKLSNlbmRpZgotLyoKLSAqIFNoYXJlZCByZWdleCBsaWIgd2lsbCBjcmFzaCB3aXRob3V0IHRoaXMsIGZyYW5rbHkgaXQgbG9va3MgYSBsb3QgbGlrZSBhIGdjYyBidWc6Ci0gKi8KLSNpZiBkZWZpbmVkKF9fTUlOR1czMl9fKQotIyAgZGVmaW5lIE5ETkJPT1NUX1JFR0VYX05PX0VYVEVSTkFMX1RFTVBMQVRFUwotI2VuZGlmCi0KLS8qCi0gKiBJZiB0aGVyZSBpc24ndCBnb29kIGVub3VnaCB3aWRlIGNoYXJhY3RlciBzdXBwb3J0IHRoZW4gdGhlcmUgd2lsbAotICogYmUgbm8gd2lkZSBjaGFyYWN0ZXIgcmVndWxhciBleHByZXNzaW9uczoKLSAqLwotI2lmIChkZWZpbmVkKE5ETkJPT1NUX05PX0NXQ0hBUikgfHwgZGVmaW5lZChORE5CT09TVF9OT19DV0NUWVBFKSB8fCBkZWZpbmVkKE5ETkJPT1NUX05PX1NURF9XU1RSSU5HKSkKLSMgIGlmICFkZWZpbmVkKE5ETkJPT1NUX05PX1dSRUdFWCkKLSMgICAgIGRlZmluZSBORE5CT09TVF9OT19XUkVHRVgKLSMgIGVuZGlmCi0jZWxzZQotIyAgaWYgZGVmaW5lZChfX3NnaSkgJiYgKGRlZmluZWQoX19TR0lfU1RMX1BPUlQpIHx8IGRlZmluZWQoX1NUTFBPUlRfVkVSU0lPTikpCi0gICAgICAvKiBTVExQb3J0IG9uIElSSVggaXMgbWlzY29uZmlndXJlZDogPGN3Y3R5cGU+IGRvZXMgbm90IGNvbXBpbGUKLSAgICAgICAqIGFzIGEgdGVtcG9yYXJ5IGZpeCBpbmNsdWRlIDx3Y3R5cGUuaD4gaW5zdGVhZCBhbmQgcHJldmVudCBpbmNsdXNpb24KLSAgICAgICAqIG9mIFNUTFBvcnQgdmVyc2lvbiBvZiA8Y3djdHlwZT4gKi8KLSMgICAgIGluY2x1ZGUgPHdjdHlwZS5oPgotIyAgICAgZGVmaW5lIF9fU1RMUE9SVF9DV0NUWVBFCi0jICAgICBkZWZpbmUgX1NUTFBfQ1dDVFlQRQotIyAgZW5kaWYKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi0jICBpbmNsdWRlIDxuZG5ib29zdC9yZWdleC9jb25maWcvY3djaGFyLmhwcD4KLSNlbmRpZgotCi0jZW5kaWYKLQotLyoKLSAqIElmIFdpbjMyIHN1cHBvcnQgaGFzIGJlZW4gZGlzYWJsZWQgZm9yIGJvb3N0IGluIGdlbmVyYWwsIHRoZW4KLSAqIGl0IGlzIGZvciByZWdleCBpbiBwYXJ0aWN1bGFyOgotICovCi0jaWYgZGVmaW5lZChORE5CT09TVF9ESVNBQkxFX1dJTjMyKSAmJiAhZGVmaW5lZChORE5CT09TVF9SRUdFWF9OT19XMzIpCi0jICBkZWZpbmUgTkROQk9PU1RfUkVHRVhfTk9fVzMyCi0jZW5kaWYKLQotLyogZGlzYWJsZSBvdXIgb3duIGZpbGUtaXRlcmF0b3JzIGFuZCBtYXBmaWxlcyBpZiB3ZSBjYW4ndAotICogc3VwcG9ydCB0aGVtOiAqLwotI2lmICFkZWZpbmVkKE5ETkJPT1NUX0hBU19ESVJFTlRfSCkgJiYgIShkZWZpbmVkKF9XSU4zMikgJiYgIWRlZmluZWQoTkROQk9PU1RfUkVHRVhfTk9fVzMyKSkKLSMgIGRlZmluZSBORE5CT09TVF9SRUdFWF9OT19GSUxFSVRFUgotI2VuZGlmCi0KLS8qIGJhY2t3YXJkcyBjb21wYXRpYml0aXR5OiAqLwotI2lmIGRlZmluZWQoTkROQk9PU1RfUkVfTk9fTElCKQotIyAgZGVmaW5lIE5ETkJPT1NUX1JFR0VYX05PX0xJQgotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19DWUdXSU5fXykpCi0vKiBnY2Mgb24gd2luMzIgaGFzIHByb2JsZW1zIGlmIHlvdSBpbmNsdWRlIDx3aW5kb3dzLmg+Ci0gICAoc3BvcmFkaWNhbGx5IGdlbmVyYXRlcyBiYWQgY29kZSkuICovCi0jICBkZWZpbmUgTkROQk9PU1RfUkVHRVhfTk9fVzMyCi0jZW5kaWYKLSNpZiBkZWZpbmVkKF9fQ09NT19fKSAmJiAhZGVmaW5lZChORE5CT09TVF9SRUdFWF9OT19XMzIpICYmICFkZWZpbmVkKF9NU0NfRVhURU5TSU9OUykKLSMgIGRlZmluZSBORE5CT09TVF9SRUdFWF9OT19XMzIKLSNlbmRpZgotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqCi0gKiAgV2lkZSBjaGFyYWN0ZXIgd29ya2Fyb3VuZHM6Ci0gKgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLS8qCi0gKiBkZWZpbmUgTkROQk9PU1RfUkVHRVhfSEFTX09USEVSX1dDSEFSX1Qgd2hlbiB3Y2hhcl90IGlzIGEgbmF0aXZlIHR5cGUsIGJ1dCB0aGUgdXNlcnMKLSAqIGNvZGUgbWF5IGJlIGJ1aWx0IHdpdGggd2NoYXJfdCBhcyB1bnNpZ25lZCBzaG9ydDogYmFzaWNhbGx5IHdoZW4gd2UncmUgYnVpbGRpbmcKLSAqIHdpdGggTVNWQyBhbmQgdGhlIC9aYzp3Y2hhcl90IG9wdGlvbiB3ZSBwbGFjZSBzb21lIGV4dHJhIHVuc2lnbmVkIHNob3J0IHZlcnNpb25zCi0gKiBvZiB0aGUgbm9uLWlubGluZSBmdW5jdGlvbnMgaW4gdGhlIGxpYnJhcnksIHNvIHRoYXQgdXNlcnMgY2FuIHN0aWxsIGxpbmsgdG8gdGhlIGxpYiwKLSAqIGlycmVzcGVjdGl2ZSBvZiB3aGV0aGVyIHRoZWlyIG93biBjb2RlIGlzIGJ1aWx0IHdpdGggL1pjOndjaGFyX3QuCi0gKiBOb3RlIHRoYXQgdGhpcyBkb2VzIE5PVCBXT1JLIHdpdGggVkMxMCB3aGVuIHRoZSBDKysgbG9jYWxlIGlzIGluIGVmZmVjdCBhcwotICogdGhlIGxvY2FsZSdzIDx1bnNpZ25lZCBzaG9ydD4gZmFjZXRzIHNpbXBseSBkbyBub3QgY29tcGlsZSBpbiB0aGF0IGNhc2UuCi0gKi8KLSNpZiBkZWZpbmVkKF9fY3BsdXNwbHVzKSAmJiAoZGVmaW5lZChORE5CT09TVF9NU1ZDKSB8fCBkZWZpbmVkKF9fSUNMKSkgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fSU5UUklOU0lDX1dDSEFSX1QpICYmIGRlZmluZWQoTkROQk9PU1RfV0lORE9XUykgJiYgIWRlZmluZWQoX19TR0lfU1RMX1BPUlQpICYmICFkZWZpbmVkKF9TVExQT1JUX1ZFUlNJT04pICYmICFkZWZpbmVkKE5ETkJPT1NUX1JXU1REX1ZFUikgJiYgKChfTVNDX1ZFUiA8IDE2MDApIHx8ICFkZWZpbmVkKE5ETkJPT1NUX1JFR0VYX1VTRV9DUFBfTE9DQUxFKSkKLSMgIGRlZmluZSBORE5CT09TVF9SRUdFWF9IQVNfT1RIRVJfV0NIQVJfVAotIyAgaWZkZWYgTkROQk9PU1RfTVNWQwotIyAgICAgcHJhZ21hIHdhcm5pbmcocHVzaCkKLSMgICAgIHByYWdtYSB3YXJuaW5nKGRpc2FibGUgOiA0MjUxIDQyMzEpCi0jICAgICBpZiBORE5CT09TVF9NU1ZDIDwgMTYwMAotIyAgICAgICAgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZSA6IDQ2NjApCi0jICAgICBlbmRpZgotIyAgZW5kaWYKLSMgIGlmIGRlZmluZWQoX0RMTCkgJiYgZGVmaW5lZChORE5CT09TVF9NU1ZDKSAmJiAoTkROQk9PU1RfTVNWQyA8IDE2MDApCi0jICAgICBpbmNsdWRlIDxzdHJpbmc+Ci0gICAgICBleHRlcm4gdGVtcGxhdGUgY2xhc3MgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHN0ZDo6YmFzaWNfc3RyaW5nPHVuc2lnbmVkIHNob3J0PjsKLSMgIGVuZGlmCi0jICBpZmRlZiBORE5CT09TVF9NU1ZDCi0jICAgICBwcmFnbWEgd2FybmluZyhwb3ApCi0jICBlbmRpZgotI2VuZGlmCi0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKgotICogIFNldCB1cCBkbGwgaW1wb3J0L2V4cG9ydCBvcHRpb25zOgotICoKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1NZTUJPTF9FWFBPUlQKLSMgIGRlZmluZSBORE5CT09TVF9TWU1CT0xfRVhQT1JUCi0jICBkZWZpbmUgTkROQk9PU1RfU1lNQk9MX0lNUE9SVAotI2VuZGlmCi0KLSNpZiAoZGVmaW5lZChORE5CT09TVF9SRUdFWF9EWU5fTElOSykgfHwgZGVmaW5lZChORE5CT09TVF9BTExfRFlOX0xJTkspKSAmJiAhZGVmaW5lZChORE5CT09TVF9SRUdFWF9TVEFUSUNfTElOSykKLSMgIGlmIGRlZmluZWQoTkROQk9PU1RfUkVHRVhfU09VUkNFKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX1JFR0VYX0RFQ0wgTkROQk9PU1RfU1lNQk9MX0VYUE9SVAotIyAgICAgZGVmaW5lIE5ETkJPT1NUX1JFR0VYX0JVSUxEX0RMTAotIyAgZWxzZQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX1JFR0VYX0RFQ0wgTkROQk9PU1RfU1lNQk9MX0lNUE9SVAotIyAgZW5kaWYKLSNlbHNlCi0jICBkZWZpbmUgTkROQk9PU1RfUkVHRVhfREVDTAotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9SRUdFWF9OT19MSUIpICYmICFkZWZpbmVkKE5ETkJPT1NUX1JFR0VYX1NPVVJDRSkgJiYgIWRlZmluZWQoTkROQk9PU1RfQUxMX05PX0xJQikgJiYgZGVmaW5lZChfX2NwbHVzcGx1cykKLSMgIGRlZmluZSBORE5CT09TVF9MSUJfTkFNRSBuZG5ib29zdF9yZWdleAotIyAgaWYgZGVmaW5lZChORE5CT09TVF9SRUdFWF9EWU5fTElOSykgfHwgZGVmaW5lZChORE5CT09TVF9BTExfRFlOX0xJTkspCi0jICAgICBkZWZpbmUgTkROQk9PU1RfRFlOX0xJTksKLSMgIGVuZGlmCi0jICBpZmRlZiBORE5CT09TVF9SRUdFWF9ESUFHCi0jICAgICBkZWZpbmUgTkROQk9PU1RfTElCX0RJQUdOT1NUSUMKLSMgIGVuZGlmCi0jICBpbmNsdWRlIDxuZG5ib29zdC9jb25maWcvYXV0b19saW5rLmhwcD4KLSNlbmRpZgotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqCi0gKiAgU2V0IHVwIGZ1bmN0aW9uIGNhbGwgdHlwZToKLSAqCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVNWQykgJiYgKE5ETkJPT1NUX01TVkMgPj0gMTIwMCkgJiYgZGVmaW5lZChfTVNDX0VYVEVOU0lPTlMpCi0jaWYgZGVmaW5lZChfREVCVUcpIHx8IGRlZmluZWQoX19NU1ZDX1JVTlRJTUVfQ0hFQ0tTKSB8fCBkZWZpbmVkKF9NQU5BR0VEKSB8fCBkZWZpbmVkKE5ETkJPT1NUX1JFR0VYX05PX0ZBU1RDQUxMKQotIyAgZGVmaW5lIE5ETkJPT1NUX1JFR0VYX0NBTEwgX19jZGVjbAotI2Vsc2UKLSMgIGRlZmluZSBORE5CT09TVF9SRUdFWF9DQUxMIF9fZmFzdGNhbGwKLSNlbmRpZgotIyAgZGVmaW5lIE5ETkJPT1NUX1JFR0VYX0NDQUxMIF9fY2RlY2wKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChfX0JPUkxBTkRDX18pICYmICFkZWZpbmVkKE5ETkJPT1NUX0RJU0FCTEVfV0lOMzIpCi0jICBkZWZpbmUgTkROQk9PU1RfUkVHRVhfQ0FMTCBfX2Zhc3RjYWxsCi0jICBkZWZpbmUgTkROQk9PU1RfUkVHRVhfQ0NBTEwgX19zdGRjYWxsCi0jZW5kaWYKLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9DQUxMCi0jICBkZWZpbmUgTkROQk9PU1RfUkVHRVhfQ0FMTAotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX0NDQUxMCi0jZGVmaW5lIE5ETkJPT1NUX1JFR0VYX0NDQUxMCi0jZW5kaWYKLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKgotICogIFNldCB1cCBsb2NhbGlzYXRpb24gbW9kZWw6Ci0gKgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLS8qIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5OiAqLwotI2lmZGVmIE5ETkJPT1NUX1JFX0xPQ0FMRV9DCi0jICBkZWZpbmUgTkROQk9PU1RfUkVHRVhfVVNFX0NfTE9DQUxFCi0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX1JFX0xPQ0FMRV9DUFAKLSMgIGRlZmluZSBORE5CT09TVF9SRUdFWF9VU0VfQ1BQX0xPQ0FMRQotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKF9fQ1lHV0lOX18pCi0jICBkZWZpbmUgTkROQk9PU1RfUkVHRVhfVVNFX0NfTE9DQUxFCi0jZW5kaWYKLQotLyogV2luMzIgZGVmYXVsdHMgdG8gbmF0aXZlIFdpbjMyIGxvY2FsZTogKi8KLSNpZiBkZWZpbmVkKF9XSU4zMikgJiYgIWRlZmluZWQoTkROQk9PU1RfUkVHRVhfVVNFX1dJTjMyX0xPQ0FMRSkgJiYgIWRlZmluZWQoTkROQk9PU1RfUkVHRVhfVVNFX0NfTE9DQUxFKSAmJiAhZGVmaW5lZChORE5CT09TVF9SRUdFWF9VU0VfQ1BQX0xPQ0FMRSkgJiYgIWRlZmluZWQoTkROQk9PU1RfUkVHRVhfTk9fVzMyKQotIyAgZGVmaW5lIE5ETkJPT1NUX1JFR0VYX1VTRV9XSU4zMl9MT0NBTEUKLSNlbmRpZgotLyogb3RoZXJ3aXNlIHVzZSBDKysgbG9jYWxlIGlmIHN1cHBvcnRlZDogKi8KLSNpZiAhZGVmaW5lZChORE5CT09TVF9SRUdFWF9VU0VfV0lOMzJfTE9DQUxFKSAmJiAhZGVmaW5lZChORE5CT09TVF9SRUdFWF9VU0VfQ19MT0NBTEUpICYmICFkZWZpbmVkKE5ETkJPT1NUX1JFR0VYX1VTRV9DUFBfTE9DQUxFKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19TVERfTE9DQUxFKQotIyAgZGVmaW5lIE5ETkJPT1NUX1JFR0VYX1VTRV9DUFBfTE9DQUxFCi0jZW5kaWYKLS8qIG90aGVyd2lzZSB1c2UgQysgbG9jYWxlOiAqLwotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1JFR0VYX1VTRV9XSU4zMl9MT0NBTEUpICYmICFkZWZpbmVkKE5ETkJPT1NUX1JFR0VYX1VTRV9DX0xPQ0FMRSkgJiYgIWRlZmluZWQoTkROQk9PU1RfUkVHRVhfVVNFX0NQUF9MT0NBTEUpCi0jICBkZWZpbmUgTkROQk9PU1RfUkVHRVhfVVNFX0NfTE9DQUxFCi0jZW5kaWYKLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9NQVhfU1RBVEVfQ09VTlQKLSMgIGRlZmluZSBORE5CT09TVF9SRUdFWF9NQVhfU1RBVEVfQ09VTlQgMTAwMDAwMDAwCi0jZW5kaWYKLQotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqCi0gKiAgRXJyb3IgSGFuZGxpbmcgZm9yIGV4Y2VwdGlvbiBmcmVlIGNvbXBpbGVyczoKLSAqCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotI2lmZGVmIE5ETkJPT1NUX05PX0VYQ0VQVElPTlMKLS8qCi0gKiBJZiB0aGVyZSBhcmUgbm8gZXhjZXB0aW9ucyB0aGVuIHdlIG11c3QgcmVwb3J0IGNyaXRpY2FsLWVycm9ycwotICogdGhlIG9ubHkgd2F5IHdlIGtub3cgaG93OyBieSB0ZXJtaW5hdGluZy4KLSAqLwotI2luY2x1ZGUgPHN0ZGV4Y2VwdD4KLSNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGhyb3dfZXhjZXB0aW9uLmhwcD4KLQotIyAgZGVmaW5lIE5ETkJPT1NUX1JFR0VYX05PRUhfQVNTRVJUKHgpXAotaWYoMCA9PSAoeCkpXAote1wKLSAgIHN0ZDo6c3RyaW5nIHMoIkVycm9yOiBjcml0aWNhbCByZWdleCsrIGZhaWx1cmUgaW46ICIpO1wKLSAgIHMuYXBwZW5kKCN4KTtcCi0gICBzdGQ6OnJ1bnRpbWVfZXJyb3IgZShzKTtcCi0gICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKGUpO1wKLX0KLSNlbHNlCi0vKgotICogV2l0aCBleGNlcHRpb25zIHRoZW4gZXJyb3IgaGFuZGxpbmcgaXMgdGFrZW4gY2FyZSBvZiBhbmQKLSAqIHRoZXJlIGlzIG5vIG5lZWQgZm9yIHRoZXNlIGNoZWNrczoKLSAqLwotIyAgZGVmaW5lIE5ETkJPT1NUX1JFR0VYX05PRUhfQVNTRVJUKHgpCi0jZW5kaWYKLQotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqCi0gKiAgU3RhY2sgcHJvdGVjdGlvbiB1bmRlciBNUyBXaW5kb3dzOgotICoKLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfUkVHRVhfTk9fVzMyKSAmJiAhZGVmaW5lZChORE5CT09TVF9SRUdFWF9WMykKLSMgIGlmKGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9XSU42NCkgfHwgZGVmaW5lZChfV0lOQ0UpKSBcCi0gICAgICAgICYmICFkZWZpbmVkKF9fR05VQ19fKSBcCi0gICAgICAgICYmICEoZGVmaW5lZChfX0JPUkxBTkRDX18pICYmIChfX0JPUkxBTkRDX18gPj0gMHg2MDApKSBcCi0gICAgICAgICYmICEoZGVmaW5lZChfX01XRVJLU19fKSAmJiAoX19NV0VSS1NfXyA8PSAweDMwMDMpKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX1JFR0VYX0hBU19NU19TVEFDS19HVUFSRAotIyAgZW5kaWYKLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfUkVHRVhfSEFTX01TX1NUQUNLX0dVQVJEKQotIyAgdW5kZWYgTkROQk9PU1RfUkVHRVhfSEFTX01TX1NUQUNLX0dVQVJECi0jZW5kaWYKLQotI2lmIGRlZmluZWQoX19jcGx1c3BsdXMpICYmIGRlZmluZWQoTkROQk9PU1RfUkVHRVhfSEFTX01TX1NUQUNLX0dVQVJEKQotCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci1uYW1lc3BhY2UgcmVfZGV0YWlsewotCi1ORE5CT09TVF9SRUdFWF9ERUNMIHZvaWQgTkROQk9PU1RfUkVHRVhfQ0FMTCByZXNldF9zdGFja19ndWFyZF9wYWdlKCk7Ci0KLX0KLX0KLQotI2VuZGlmCi0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKgotICogIEFsZ29yaXRobSBzZWxlY3Rpb24gYW5kIGNvbmZpZ3VyYXRpb246Ci0gKgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9SRUdFWF9SRUNVUlNJVkUpICYmICFkZWZpbmVkKE5ETkJPT1NUX1JFR0VYX05PTl9SRUNVUlNJVkUpCi0jICBpZiBkZWZpbmVkKE5ETkJPT1NUX1JFR0VYX0hBU19NU19TVEFDS19HVUFSRCkgJiYgIWRlZmluZWQoX1NUTFBfREVCVUcpICYmICFkZWZpbmVkKF9fU1RMX0RFQlVHKSAmJiAhKGRlZmluZWQoTkROQk9PU1RfTVNWQykgJiYgKE5ETkJPT1NUX01TVkMgPj0gMTQwMCkpCi0jICAgICBkZWZpbmUgTkROQk9PU1RfUkVHRVhfUkVDVVJTSVZFCi0jICBlbHNlCi0jICAgICBkZWZpbmUgTkROQk9PU1RfUkVHRVhfTk9OX1JFQ1VSU0lWRQotIyAgZW5kaWYKLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfUkVHRVhfTk9OX1JFQ1VSU0lWRQotIyAgaWZkZWYgTkROQk9PU1RfUkVHRVhfUkVDVVJTSVZFCi0jICAgICBlcnJvciAiQ2FuJ3Qgc2V0IGJvdGggTkROQk9PU1RfUkVHRVhfUkVDVVJTSVZFIGFuZCBORE5CT09TVF9SRUdFWF9OT05fUkVDVVJTSVZFIgotIyAgZW5kaWYKLSMgIGlmbmRlZiBORE5CT09TVF9SRUdFWF9CTE9DS1NJWkUKLSMgICAgIGRlZmluZSBORE5CT09TVF9SRUdFWF9CTE9DS1NJWkUgNDA5NgotIyAgZW5kaWYKLSMgIGlmIE5ETkJPT1NUX1JFR0VYX0JMT0NLU0laRSA8IDUxMgotIyAgICAgZXJyb3IgIk5ETkJPT1NUX1JFR0VYX0JMT0NLU0laRSBtdXN0IGJlIGF0IGxlYXN0IDUxMiIKLSMgIGVuZGlmCi0jICBpZm5kZWYgTkROQk9PU1RfUkVHRVhfTUFYX0JMT0NLUwotIyAgICAgZGVmaW5lIE5ETkJPT1NUX1JFR0VYX01BWF9CTE9DS1MgMTAyNAotIyAgZW5kaWYKLSMgIGlmZGVmIE5ETkJPT1NUX1JFR0VYX0hBU19NU19TVEFDS19HVUFSRAotIyAgICAgdW5kZWYgTkROQk9PU1RfUkVHRVhfSEFTX01TX1NUQUNLX0dVQVJECi0jICBlbmRpZgotIyAgaWZuZGVmIE5ETkJPT1NUX1JFR0VYX01BWF9DQUNIRV9CTE9DS1MKLSMgICAgIGRlZmluZSBORE5CT09TVF9SRUdFWF9NQVhfQ0FDSEVfQkxPQ0tTIDE2Ci0jICBlbmRpZgotI2VuZGlmCi0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKgotICogIGhlbHBlciBtZW1vcnkgYWxsb2NhdGlvbiBmdW5jdGlvbnM6Ci0gKgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLSNpZiBkZWZpbmVkKF9fY3BsdXNwbHVzKSAmJiBkZWZpbmVkKE5ETkJPT1NUX1JFR0VYX05PTl9SRUNVUlNJVkUpCi1uYW1lc3BhY2UgbmRuYm9vc3R7IG5hbWVzcGFjZSByZV9kZXRhaWx7Ci0KLU5ETkJPT1NUX1JFR0VYX0RFQ0wgdm9pZCogTkROQk9PU1RfUkVHRVhfQ0FMTCBnZXRfbWVtX2Jsb2NrKCk7Ci1ORE5CT09TVF9SRUdFWF9ERUNMIHZvaWQgTkROQk9PU1RfUkVHRVhfQ0FMTCBwdXRfbWVtX2Jsb2NrKHZvaWQqKTsKLQotfX0gLyogbmFtZXNwYWNlcyAqLwotI2VuZGlmCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICoKLSAqICBEaWFnbm9zdGljczoKLSAqCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotI2lmZGVmIE5ETkJPT1NUX1JFR0VYX0NPTkZJR19JTkZPCi1ORE5CT09TVF9SRUdFWF9ERUNMIHZvaWQgTkROQk9PU1RfUkVHRVhfQ0FMTCBwcmludF9yZWdleF9saWJyYXJ5X2luZm8oKTsKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9SRUdFWF9ESUFHKQotIyAgcHJhZ21hIG1lc3NhZ2UgKCJORE5CT09TVF9SRUdFWF9ERUNMIiBORE5CT09TVF9TVFJJTkdJWkUoPU5ETkJPT1NUX1JFR0VYX0RFQ0wpKQotIyAgcHJhZ21hIG1lc3NhZ2UgKCJORE5CT09TVF9SRUdFWF9DQUxMIiBORE5CT09TVF9TVFJJTkdJWkUoPU5ETkJPT1NUX1JFR0VYX0NBTEwpKQotIyAgcHJhZ21hIG1lc3NhZ2UgKCJORE5CT09TVF9SRUdFWF9DQ0FMTCIgTkROQk9PU1RfU1RSSU5HSVpFKD1ORE5CT09TVF9SRUdFWF9DQ0FMTCkpCi0jaWZkZWYgTkROQk9PU1RfUkVHRVhfVVNFX0NfTE9DQUxFCi0jICBwcmFnbWEgbWVzc2FnZSAoIlVzaW5nIEMgbG9jYWxlIGluIHJlZ2V4IHRyYWl0cyBjbGFzcyIpCi0jZWxpZiBORE5CT09TVF9SRUdFWF9VU0VfQ1BQX0xPQ0FMRQotIyAgcHJhZ21hIG1lc3NhZ2UgKCJVc2luZyBDKysgbG9jYWxlIGluIHJlZ2V4IHRyYWl0cyBjbGFzcyIpCi0jZWxzZQotIyAgcHJhZ21hIG1lc3NhZ2UgKCJVc2luZyBXaW4zMiBsb2NhbGUgaW4gcmVnZXggdHJhaXRzIGNsYXNzIikKLSNlbmRpZgotI2lmIGRlZmluZWQoTkROQk9PU1RfUkVHRVhfRFlOX0xJTkspIHx8IGRlZmluZWQoTkROQk9PU1RfQUxMX0RZTl9MSU5LKQotIyAgcHJhZ21hIG1lc3NhZ2UgKCJEeW5hbWljIGxpbmtpbmcgZW5hYmxlZCIpCi0jZW5kaWYKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1JFR0VYX05PX0xJQikgfHwgZGVmaW5lZChORE5CT09TVF9BTExfTk9fTElCKQotIyAgcHJhZ21hIG1lc3NhZ2UgKCJBdXRvLWxpbmtpbmcgZGlzYWJsZWQiKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfUkVHRVhfTk9fRVhURVJOQUxfVEVNUExBVEVTCi0jICBwcmFnbWEgbWVzc2FnZSAoIkV4dGVybiB0ZW1wbGF0ZXMgZGlzYWJsZWQiKQotI2VuZGlmCi0KLSNlbmRpZgotCi0jZW5kaWYKLQotCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC9jb25maWcvYm9ybGFuZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L2NvbmZpZy9ib3JsYW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmUyMDJlMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L2NvbmZpZy9ib3JsYW5kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDIKLSAqIEpvaG4gTWFkZG9jawotICoKLSAqIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotICogQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0gKiBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICovCi0gCi0gLyoKLSAgKiAgIExPQ0FUSU9OOiAgICBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0gICogICBGSUxFICAgICAgICAgbmRuYm9vc3QvcmVnZXgvY29uZmlnL2JvcmxhbmQuaHBwCi0gICogICBWRVJTSU9OICAgICAgc2VlIDxuZG5ib29zdC92ZXJzaW9uLmhwcD4KLSAgKiAgIERFU0NSSVBUSU9OOiByZWdleCBib3JsYW5kLXNwZWNpZmljIGNvbmZpZyBzZXR1cC4KLSAgKi8KLQotCi0jaWYgZGVmaW5lZChfX0JPUkxBTkRDX18pCi0jICBpZiAoX19CT1JMQU5EQ19fID09IDB4NTUwKSB8fCAoX19CT1JMQU5EQ19fID09IDB4NTUxKQotICAgICAgLy8gcHJvYmxlbXMgd2l0aCBzdGQ6OmJhc2ljX3N0cmluZyBhbmQgZGxsIFJUTDoKLSMgICAgIGlmIGRlZmluZWQoX1JUTERMTCkgJiYgZGVmaW5lZChfUldTVERfQ09NUElMRV9JTlNUQU5USUFURSkKLSMgICAgICAgIGlmZGVmIE5ETkJPT1NUX1JFR0VYX0JVSUxEX0RMTAotIyAgICAgICAgICAgZXJyb3IgX1JXU1REX0NPTVBJTEVfSU5TVEFOVElBVEUgbXVzdCBub3QgYmUgZGVmaW5lZCB3aGVuIGJ1aWxkaW5nIHJlZ2V4KysgYXMgYSBETEwKLSMgICAgICAgIGVsc2UKLSMgICAgICAgICAgIHByYWdtYSBtZXNzYWdlKCJEZWZpbmluZyBfUldTVERfQ09NUElMRV9JTlNUQU5USUFURSB3aGVuIGxpbmtpbmcgdG8gdGhlIERMTCB2ZXJzaW9uIG9mIHRoZSBSVEwgbWF5IHByb2R1Y2UgbWVtb3J5IGNvcnJ1cHRpb24gcHJvYmxlbXMgaW4gc3RkOjpiYXNpY19zdHJpbmcsIGFzIGEgcmVzdWx0IG9mIHNlcGFyYXRlIHZlcnNpb25zIG9mIGJhc2ljX3N0cmluZydzIHN0YXRpYyBkYXRhIGluIHRoZSBSVEwgYW5kIHlvdSdyZSBleGUvZGxsOiBiZSB3YXJuZWQhISIpCi0jICAgICAgICBlbmRpZgotIyAgICAgZW5kaWYKLSMgICAgIGlmbmRlZiBfUlRMRExMCi0gICAgICAgICAvLyB0aGlzIGlzIGhhcm1sZXNzIGZvciBhIHN0YWljIGxpbms6Ci0jICAgICAgICBkZWZpbmUgX1JXU1REX0NPTVBJTEVfSU5TVEFOVElBVEUKLSMgICAgIGVuZGlmCi0gICAgICAvLyBleHRlcm5hbCB0ZW1wbGF0ZXMgY2F1c2UgcHJvYmxlbXMgZm9yIHNvbWUgcmVhc29uOgotIyAgICAgZGVmaW5lIE5ETkJPT1NUX1JFR0VYX05PX0VYVEVSTkFMX1RFTVBMQVRFUwotIyAgZW5kaWYKLSMgIGlmIChfX0JPUkxBTkRDX18gPD0gMHg1NDApICYmICFkZWZpbmVkKE5ETkJPT1NUX1JFR0VYX05PX0xJQikgJiYgIWRlZmluZWQoX05PX1ZDTCkKLSAgICAgIC8vIEMrKyBCdWlsZGVyIDQgYW5kIGVhcmxpZXIsIHdlIGNhbid0IHRlbGwgd2hldGhlciB3ZSBzaG91bGQgYmUgdXNpbmcKLSAgICAgIC8vIHRoZSBWQ0wgcnVudGltZSBvciBub3QsIGRvIGEgc3RhdGljIGxpbmsgaW5zdGVhZDoKLSMgICAgIGRlZmluZSBORE5CT09TVF9SRUdFWF9TVEFUSUNfTElOSwotIyAgZW5kaWYKLSAgIC8vCi0gICAvLyBWQ0wgc3VwcG9ydDoKLSAgIC8vIGlmIHdlJ3JlIGJ1aWxkaW5nIGEgY29uc29sZSBhcHAgdGhlbiB0aGVyZSBjYW4ndCBiZSBhbnkgVkNMIChjYW4gdGhlcmU/KQotIyAgaWYgIWRlZmluZWQoX19DT05TT0xFX18pICYmICFkZWZpbmVkKF9OT19WQ0wpCi0jICAgICBkZWZpbmUgTkROQk9PU1RfUkVHRVhfVVNFX1ZDTAotIyAgZW5kaWYKLSAgIC8vCi0gICAvLyBpZiB0aGlzIGlzbid0IFdpbjMyIHRoZW4gZG9uJ3QgYXV0b21hdGljYWxseSBzZWxlY3QgbGluawotICAgLy8gbGlicmFyaWVzOgotICAgLy8KLSMgIGlmbmRlZiBfV2luZG93cwotIyAgICAgaWZuZGVmIE5ETkJPT1NUX1JFR0VYX05PX0xJQgotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1JFR0VYX05PX0xJQgotIyAgICAgZW5kaWYKLSMgICAgIGlmbmRlZiBORE5CT09TVF9SRUdFWF9TVEFUSUNfTElOSwotIyAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1JFR0VYX1NUQVRJQ19MSU5LCi0jICAgICBlbmRpZgotIyAgZW5kaWYKLQotI2lmIF9fQk9STEFORENfXyA8IDB4NjAwCi0vLwotLy8gc3RyaW5nIHdvcmthcm91bmRzOgotLy8KLSNpbmNsdWRlIDxjc3RyaW5nPgotI3VuZGVmIHN0cmNtcAotI3VuZGVmIHN0cmNweQotI2VuZGlmCi0KLSNlbmRpZgotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvY29uZmlnL2N3Y2hhci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L2NvbmZpZy9jd2NoYXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MTY1YzFmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvY29uZmlnL2N3Y2hhci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMDcgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMgotICogSm9obiBNYWRkb2NrCi0gKgotICogVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0gKiBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLSAqIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKi8KLSAKLSAvKgotICAqICAgTE9DQVRJT046ICAgIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLSAgKiAgIEZJTEUgICAgICAgICBuZG5ib29zdC9yZWdleC9jb25maWcvY3djaGFyLmhwcAotICAqICAgVkVSU0lPTiAgICAgIHNlZSA8bmRuYm9vc3QvdmVyc2lvbi5ocHA+Ci0gICogICBERVNDUklQVElPTjogcmVnZXggd2lkZSBjaGFyYWN0ZXIgc3RyaW5nIGZpeGVzLgotICAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX0NPTkZJR19DV0NIQVJfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JFR0VYX0NPTkZJR19DV0NIQVJfSFBQCi0KLSNpbmNsdWRlIDxjd2NoYXI+Ci0jaW5jbHVkZSA8Y3djdHlwZT4KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi0jaWYgZGVmaW5lZChfX1NURF9SV0NPTVBJTEVSX0hfXykgfHwgZGVmaW5lZChfUldTVERfVkVSKQotLy8gYXBwYXJlbnRseSB0aGlzIGlzIHJlcXVpcmVkIGZvciB0aGUgUlcgU1RMIG9uIExpbnV4OgotI3VuZGVmIGlzd2FsbnVtCi0jdW5kZWYgaXN3YWxwaGEKLSN1bmRlZiBpc3dibGFuawotI3VuZGVmIGlzd2NudHJsCi0jdW5kZWYgaXN3ZGlnaXQKLSN1bmRlZiBpc3dncmFwaAotI3VuZGVmIGlzd2xvd2VyCi0jdW5kZWYgaXN3cHJpbnQKLSN1bmRlZiBpc3dwcmludAotI3VuZGVmIGlzd3B1bmN0Ci0jdW5kZWYgaXN3c3BhY2UKLSN1bmRlZiBpc3d1cHBlcgotI3VuZGVmIGlzd3hkaWdpdAotI3VuZGVmIGlzd2N0eXBlCi0jdW5kZWYgdG93bG93ZXIKLSN1bmRlZiB0b3d1cHBlcgotI3VuZGVmIHRvd2N0cmFucwotI3VuZGVmIHdjdHJhbnMKLSN1bmRlZiB3Y3R5cGUKLSNlbmRpZgotCi1uYW1lc3BhY2Ugc3RkewotCi0jaWZuZGVmIE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFCi1leHRlcm4gIkMiewotI2VuZGlmCi0KLSNpZmRlZiBpc3dhbG51bQotaW5saW5lIGludCAoaXN3YWxudW0pKHdpbnRfdCBpKQoteyByZXR1cm4gaXN3YWxudW0oaSk7IH0KLSN1bmRlZiBpc3dhbG51bQotI2VsaWYgZGVmaW5lZChORE5CT09TVF9OT19TVERDX05BTUVTUEFDRSkKLXVzaW5nIDo6aXN3YWxudW07Ci0jZW5kaWYKLQotI2lmZGVmIGlzd2FscGhhCi1pbmxpbmUgaW50IChpc3dhbHBoYSkod2ludF90IGkpCi17IHJldHVybiBpc3dhbHBoYShpKTsgfQotI3VuZGVmIGlzd2FscGhhCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFKQotdXNpbmcgOjppc3dhbHBoYTsKLSNlbmRpZgotCi0jaWZkZWYgaXN3Y250cmwKLWlubGluZSBpbnQgKGlzd2NudHJsKSh3aW50X3QgaSkKLXsgcmV0dXJuIGlzd2NudHJsKGkpOyB9Ci0jdW5kZWYgaXN3Y250cmwKLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UpCi11c2luZyA6Omlzd2NudHJsOwotI2VuZGlmCi0KLSNpZmRlZiBpc3dkaWdpdAotaW5saW5lIGludCAoaXN3ZGlnaXQpKHdpbnRfdCBpKQoteyByZXR1cm4gaXN3ZGlnaXQoaSk7IH0KLSN1bmRlZiBpc3dkaWdpdAotI2VsaWYgZGVmaW5lZChORE5CT09TVF9OT19TVERDX05BTUVTUEFDRSkKLXVzaW5nIDo6aXN3ZGlnaXQ7Ci0jZW5kaWYKLQotI2lmZGVmIGlzd2dyYXBoCi1pbmxpbmUgaW50IChpc3dncmFwaCkod2ludF90IGkpCi17IHJldHVybiBpc3dncmFwaChpKTsgfQotI3VuZGVmIGlzd2dyYXBoCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFKQotdXNpbmcgOjppc3dncmFwaDsKLSNlbmRpZgotCi0jaWZkZWYgaXN3bG93ZXIKLWlubGluZSBpbnQgKGlzd2xvd2VyKSh3aW50X3QgaSkKLXsgcmV0dXJuIGlzd2xvd2VyKGkpOyB9Ci0jdW5kZWYgaXN3bG93ZXIKLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UpCi11c2luZyA6Omlzd2xvd2VyOwotI2VuZGlmCi0KLSNpZmRlZiBpc3dwcmludAotaW5saW5lIGludCAoaXN3cHJpbnQpKHdpbnRfdCBpKQoteyByZXR1cm4gaXN3cHJpbnQoaSk7IH0KLSN1bmRlZiBpc3dwcmludAotI2VsaWYgZGVmaW5lZChORE5CT09TVF9OT19TVERDX05BTUVTUEFDRSkKLXVzaW5nIDo6aXN3cHJpbnQ7Ci0jZW5kaWYKLQotI2lmZGVmIGlzd3B1bmN0Ci1pbmxpbmUgaW50IChpc3dwdW5jdCkod2ludF90IGkpCi17IHJldHVybiBpc3dwdW5jdChpKTsgfQotI3VuZGVmIGlzd3B1bmN0Ci0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFKQotdXNpbmcgOjppc3dwdW5jdDsKLSNlbmRpZgotCi0jaWZkZWYgaXN3c3BhY2UKLWlubGluZSBpbnQgKGlzd3NwYWNlKSh3aW50X3QgaSkKLXsgcmV0dXJuIGlzd3NwYWNlKGkpOyB9Ci0jdW5kZWYgaXN3c3BhY2UKLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UpCi11c2luZyA6Omlzd3NwYWNlOwotI2VuZGlmCi0KLSNpZmRlZiBpc3d1cHBlcgotaW5saW5lIGludCAoaXN3dXBwZXIpKHdpbnRfdCBpKQoteyByZXR1cm4gaXN3dXBwZXIoaSk7IH0KLSN1bmRlZiBpc3d1cHBlcgotI2VsaWYgZGVmaW5lZChORE5CT09TVF9OT19TVERDX05BTUVTUEFDRSkKLXVzaW5nIDo6aXN3dXBwZXI7Ci0jZW5kaWYKLQotI2lmZGVmIGlzd3hkaWdpdAotaW5saW5lIGludCAoaXN3eGRpZ2l0KSh3aW50X3QgaSkKLXsgcmV0dXJuIGlzd3hkaWdpdChpKTsgfQotI3VuZGVmIGlzd3hkaWdpdAotI2VsaWYgZGVmaW5lZChORE5CT09TVF9OT19TVERDX05BTUVTUEFDRSkKLXVzaW5nIDo6aXN3eGRpZ2l0OwotI2VuZGlmCi0KLSNpZmRlZiB0b3dsb3dlcgotaW5saW5lIHdpbnRfdCAodG93bG93ZXIpKHdpbnRfdCBpKQoteyByZXR1cm4gdG93bG93ZXIoaSk7IH0KLSN1bmRlZiB0b3dsb3dlcgotI2VsaWYgZGVmaW5lZChORE5CT09TVF9OT19TVERDX05BTUVTUEFDRSkKLXVzaW5nIDo6dG93bG93ZXI7Ci0jZW5kaWYKLQotI2lmZGVmIHRvd3VwcGVyCi1pbmxpbmUgd2ludF90ICh0b3d1cHBlcikod2ludF90IGkpCi17IHJldHVybiB0b3d1cHBlcihpKTsgfQotI3VuZGVmIHRvd3VwcGVyCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFKQotdXNpbmcgOjogdG93dXBwZXI7Ci0jZW5kaWYKLQotI2lmZGVmIHdjc2NtcAotaW5saW5lIGludCAod2NzY21wKShjb25zdCB3Y2hhcl90ICpwMSwgY29uc3Qgd2NoYXJfdCAqcDIpCi17IHJldHVybiB3Y3NjbXAocDEscDIpOyB9Ci0jdW5kZWYgd2NzY21wCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFKQotdXNpbmcgOjp3Y3NjbXA7Ci0jZW5kaWYKLQotI2lmZGVmIHdjc2NvbGwKLWlubGluZSBpbnQgKHdjc2NvbGwpKGNvbnN0IHdjaGFyX3QgKnAxLCBjb25zdCB3Y2hhcl90ICpwMikKLXsgcmV0dXJuIHdjc2NvbGwocDEscDIpOyB9Ci0jdW5kZWYgd2NzY29sbAotI2VsaWYgZGVmaW5lZChORE5CT09TVF9OT19TVERDX05BTUVTUEFDRSkgJiYgIWRlZmluZWQoVU5ERVJfQ0UpCi11c2luZyA6Ondjc2NvbGw7Ci0jZW5kaWYKLQotI2lmZGVmIHdjc2NweQotaW5saW5lIHdjaGFyX3QgKih3Y3NjcHkpKHdjaGFyX3QgKnAxLCBjb25zdCB3Y2hhcl90ICpwMikKLXsgcmV0dXJuIHdjc2NweShwMSxwMik7IH0KLSN1bmRlZiB3Y3NjcHkKLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UpCi11c2luZyA6Ondjc2NweTsKLSNlbmRpZgotCi0jaWZkZWYgd2NzbGVuCi1pbmxpbmUgc2l6ZV90ICh3Y3NsZW4pKGNvbnN0IHdjaGFyX3QgKnApCi17IHJldHVybiB3Y3NsZW4ocCk7IH0KLSN1bmRlZiB3Y3NsZW4KLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UpCi11c2luZyA6Ondjc2xlbjsKLSNlbmRpZgotCi0jaWZkZWYgd2NzeGZybQotc2l6ZV90IHdjc3hmcm0od2NoYXJfdCAqcDEsIGNvbnN0IHdjaGFyX3QgKnAyLCBzaXplX3QgcykKLXsgcmV0dXJuIHdjc3hmcm0ocDEscDIscyk7IH0KLSN1bmRlZiB3Y3N4ZnJtCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFKQotdXNpbmcgOjp3Y3N4ZnJtOwotI2VuZGlmCi0KLQotI2lmbmRlZiBORE5CT09TVF9OT19TVERDX05BTUVTUEFDRQotfSAvLyBleHRlcm4gIkMiCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2Ugc3RkCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L2ljdS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L2ljdS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYzMjg1MjAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC9pY3UuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTAzMSArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAoYykgMjAwNAotICogSm9obiBNYWRkb2NrCi0gKgotICogVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0gKiBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLSAqIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKi8KLQotIC8qCi0gICogICBMT0NBVElPTjogICAgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotICAqICAgRklMRSAgICAgICAgIGljdS5ocHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IFVuaWNvZGUgcmVndWxhciBleHByZXNzaW9ucyBvbiB0b3Agb2YgdGhlIElDVSBMaWJyYXJ5LgotICAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX0lDVV9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfSUNVX0hQUAotCi0jaW5jbHVkZSA8dW5pY29kZS91dHlwZXMuaD4KLSNpbmNsdWRlIDx1bmljb2RlL3VjaGFyLmg+Ci0jaW5jbHVkZSA8dW5pY29kZS9jb2xsLmg+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXguaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3BlbmRpbmcvdW5pY29kZV9pdGVyYXRvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2ludF9md2QuaHBwPgotI2luY2x1ZGUgPGJpdHNldD4KLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyAocHVzaCkKLSNwcmFnbWEgd2FybmluZyAoZGlzYWJsZTogNDI1MSkKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci0KLW5hbWVzcGFjZSByZV9kZXRhaWx7Ci0KLS8vIAotLy8gSW1wbGVtZW50YXRpb24gZGV0YWlsczoKLS8vCi1jbGFzcyBORE5CT09TVF9SRUdFWF9ERUNMIGljdV9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb24KLXsKLSAgIHR5cGVkZWYgVUNoYXIzMiAgICAgICAgICAgICAgICAgICAgICBjaGFyX3R5cGU7Ci0gICB0eXBlZGVmIHN0ZDo6c2l6ZV90ICAgICAgICAgICAgICAgICAgc2l6ZV90eXBlOwotICAgdHlwZWRlZiBzdGQ6OnZlY3RvcjxjaGFyX3R5cGU+ICAgICAgIHN0cmluZ190eXBlOwotICAgdHlwZWRlZiBVX05BTUVTUEFDRV9RVUFMSUZJRVIgTG9jYWxlIGxvY2FsZV90eXBlOwotICAgdHlwZWRlZiBuZG5ib29zdDo6dWludF9sZWFzdDMyX3QgICAgICAgIGNoYXJfY2xhc3NfdHlwZTsKLXB1YmxpYzoKLSAgIGljdV9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb24oY29uc3QgVV9OQU1FU1BBQ0VfUVVBTElGSUVSIExvY2FsZSYgbCkKLSAgICAgIDogbV9sb2NhbGUobCkKLSAgIHsKLSAgICAgIFVFcnJvckNvZGUgc3VjY2VzcyA9IFVfWkVST19FUlJPUjsKLSAgICAgIG1fY29sbGF0b3IucmVzZXQoVV9OQU1FU1BBQ0VfUVVBTElGSUVSIENvbGxhdG9yOjpjcmVhdGVJbnN0YW5jZShsLCBzdWNjZXNzKSk7Ci0gICAgICBpZihVX1NVQ0NFU1Moc3VjY2VzcykgPT0gMCkKLSAgICAgICAgIGluaXRfZXJyb3IoKTsKLSAgICAgIG1fY29sbGF0b3ItPnNldFN0cmVuZ3RoKFVfTkFNRVNQQUNFX1FVQUxJRklFUiBDb2xsYXRvcjo6SURFTlRJQ0FMKTsKLSAgICAgIHN1Y2Nlc3MgPSBVX1pFUk9fRVJST1I7Ci0gICAgICBtX3ByaW1hcnlfY29sbGF0b3IucmVzZXQoVV9OQU1FU1BBQ0VfUVVBTElGSUVSIENvbGxhdG9yOjpjcmVhdGVJbnN0YW5jZShsLCBzdWNjZXNzKSk7Ci0gICAgICBpZihVX1NVQ0NFU1Moc3VjY2VzcykgPT0gMCkKLSAgICAgICAgIGluaXRfZXJyb3IoKTsKLSAgICAgIG1fcHJpbWFyeV9jb2xsYXRvci0+c2V0U3RyZW5ndGgoVV9OQU1FU1BBQ0VfUVVBTElGSUVSIENvbGxhdG9yOjpQUklNQVJZKTsKLSAgIH0KLSAgIFVfTkFNRVNQQUNFX1FVQUxJRklFUiBMb2NhbGUgZ2V0bG9jKCljb25zdAotICAgewotICAgICAgcmV0dXJuIG1fbG9jYWxlOwotICAgfQotICAgc3RyaW5nX3R5cGUgZG9fdHJhbnNmb3JtKGNvbnN0IGNoYXJfdHlwZSogcDEsIGNvbnN0IGNoYXJfdHlwZSogcDIsIGNvbnN0IFVfTkFNRVNQQUNFX1FVQUxJRklFUiBDb2xsYXRvciogcGNvbGwpIGNvbnN0OwotICAgc3RyaW5nX3R5cGUgdHJhbnNmb3JtKGNvbnN0IGNoYXJfdHlwZSogcDEsIGNvbnN0IGNoYXJfdHlwZSogcDIpIGNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gZG9fdHJhbnNmb3JtKHAxLCBwMiwgbV9jb2xsYXRvci5nZXQoKSk7Ci0gICB9Ci0gICBzdHJpbmdfdHlwZSB0cmFuc2Zvcm1fcHJpbWFyeShjb25zdCBjaGFyX3R5cGUqIHAxLCBjb25zdCBjaGFyX3R5cGUqIHAyKSBjb25zdAotICAgewotICAgICAgcmV0dXJuIGRvX3RyYW5zZm9ybShwMSwgcDIsIG1fcHJpbWFyeV9jb2xsYXRvci5nZXQoKSk7Ci0gICB9Ci1wcml2YXRlOgotICAgdm9pZCBpbml0X2Vycm9yKCkKLSAgIHsKLSAgICAgIHN0ZDo6cnVudGltZV9lcnJvciBlKCJDb3VsZCBub3QgaW5pdGlhbGl6ZSBJQ1UgcmVzb3VyY2VzIik7Ci0gICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKGUpOwotICAgfQotICAgVV9OQU1FU1BBQ0VfUVVBTElGSUVSIExvY2FsZSBtX2xvY2FsZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIElDVSBsb2NhbGUgdGhhdCB3ZSdyZSB1c2luZwotICAgbmRuYm9vc3Q6OnNjb3BlZF9wdHI8IFVfTkFNRVNQQUNFX1FVQUxJRklFUiBDb2xsYXRvcj4gbV9jb2xsYXRvcjsgICAgICAgICAgLy8gVGhlIGZ1bGwgY29sbGF0aW9uIG9iamVjdAotICAgbmRuYm9vc3Q6OnNjb3BlZF9wdHI8IFVfTkFNRVNQQUNFX1FVQUxJRklFUiBDb2xsYXRvcj4gbV9wcmltYXJ5X2NvbGxhdG9yOyAgLy8gVGhlIHByaW1hcnkgY29sbGF0aW9uIG9iamVjdAotfTsKLQotaW5saW5lIG5kbmJvb3N0OjpzaGFyZWRfcHRyPGljdV9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb24+IGdldF9pY3VfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uKGNvbnN0IFVfTkFNRVNQQUNFX1FVQUxJRklFUiBMb2NhbGUmIGxvYykKLXsKLSAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjxpY3VfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPihuZXcgaWN1X3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbihsb2MpKTsKLX0KLQotfQotCi1jbGFzcyBORE5CT09TVF9SRUdFWF9ERUNMIGljdV9yZWdleF90cmFpdHMKLXsKLXB1YmxpYzoKLSAgIHR5cGVkZWYgVUNoYXIzMiAgICAgICAgICAgICAgICAgICAgICBjaGFyX3R5cGU7Ci0gICB0eXBlZGVmIHN0ZDo6c2l6ZV90ICAgICAgICAgICAgICAgICAgc2l6ZV90eXBlOwotICAgdHlwZWRlZiBzdGQ6OnZlY3RvcjxjaGFyX3R5cGU+ICAgICAgIHN0cmluZ190eXBlOwotICAgdHlwZWRlZiBVX05BTUVTUEFDRV9RVUFMSUZJRVIgTG9jYWxlIGxvY2FsZV90eXBlOwotI2lmZGVmIE5ETkJPT1NUX05PX0lOVDY0X1QKLSAgIHR5cGVkZWYgc3RkOjpiaXRzZXQ8NjQ+ICAgICAgICAgICAgICBjaGFyX2NsYXNzX3R5cGU7Ci0jZWxzZQotICAgdHlwZWRlZiBuZG5ib29zdDo6dWludDY0X3QgICAgICAgICAgICAgIGNoYXJfY2xhc3NfdHlwZTsKLSNlbmRpZgotCi0gICBzdHJ1Y3QgYm9vc3RfZXh0ZW5zaW9uc190YWd7fTsKLQotICAgaWN1X3JlZ2V4X3RyYWl0cygpCi0gICAgICA6IG1fcGltcGwocmVfZGV0YWlsOjpnZXRfaWN1X3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbihVX05BTUVTUEFDRV9RVUFMSUZJRVIgTG9jYWxlKCkpKQotICAgewotICAgfQotICAgc3RhdGljIHNpemVfdHlwZSBsZW5ndGgoY29uc3QgY2hhcl90eXBlKiBwKTsKLQotICAgOjpuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjpzeW50YXhfdHlwZSBzeW50YXhfdHlwZShjaGFyX3R5cGUgYyljb25zdAotICAgewotICAgICAgcmV0dXJuICgoYyA8IDB4N2YpICYmIChjID4gMCkpID8gcmVfZGV0YWlsOjpnZXRfZGVmYXVsdF9zeW50YXhfdHlwZShzdGF0aWNfY2FzdDxjaGFyPihjKSkgOiByZWdleF9jb25zdGFudHM6OnN5bnRheF9jaGFyOwotICAgfQotICAgOjpuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjplc2NhcGVfc3ludGF4X3R5cGUgZXNjYXBlX3N5bnRheF90eXBlKGNoYXJfdHlwZSBjKSBjb25zdAotICAgewotICAgICAgcmV0dXJuICgoYyA8IDB4N2YpICYmIChjID4gMCkpID8gcmVfZGV0YWlsOjpnZXRfZGVmYXVsdF9lc2NhcGVfc3ludGF4X3R5cGUoc3RhdGljX2Nhc3Q8Y2hhcj4oYykpIDogcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfY2hhcjsKLSAgIH0KLSAgIGNoYXJfdHlwZSB0cmFuc2xhdGUoY2hhcl90eXBlIGMpIGNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gYzsKLSAgIH0KLSAgIGNoYXJfdHlwZSB0cmFuc2xhdGVfbm9jYXNlKGNoYXJfdHlwZSBjKSBjb25zdAotICAgewotICAgICAgcmV0dXJuIDo6dV90b2xvd2VyKGMpOwotICAgfQotICAgY2hhcl90eXBlIHRyYW5zbGF0ZShjaGFyX3R5cGUgYywgYm9vbCBpY2FzZSkgY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBpY2FzZSA/IHRyYW5zbGF0ZV9ub2Nhc2UoYykgOiB0cmFuc2xhdGUoYyk7Ci0gICB9Ci0gICBjaGFyX3R5cGUgdG9sb3dlcihjaGFyX3R5cGUgYykgY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiA6OnVfdG9sb3dlcihjKTsKLSAgIH0KLSAgIGNoYXJfdHlwZSB0b3VwcGVyKGNoYXJfdHlwZSBjKSBjb25zdAotICAgewotICAgICAgcmV0dXJuIDo6dV90b3VwcGVyKGMpOwotICAgfQotICAgc3RyaW5nX3R5cGUgdHJhbnNmb3JtKGNvbnN0IGNoYXJfdHlwZSogcDEsIGNvbnN0IGNoYXJfdHlwZSogcDIpIGNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gbV9waW1wbC0+dHJhbnNmb3JtKHAxLCBwMik7Ci0gICB9Ci0gICBzdHJpbmdfdHlwZSB0cmFuc2Zvcm1fcHJpbWFyeShjb25zdCBjaGFyX3R5cGUqIHAxLCBjb25zdCBjaGFyX3R5cGUqIHAyKSBjb25zdAotICAgewotICAgICAgcmV0dXJuIG1fcGltcGwtPnRyYW5zZm9ybV9wcmltYXJ5KHAxLCBwMik7Ci0gICB9Ci0gICBjaGFyX2NsYXNzX3R5cGUgbG9va3VwX2NsYXNzbmFtZShjb25zdCBjaGFyX3R5cGUqIHAxLCBjb25zdCBjaGFyX3R5cGUqIHAyKSBjb25zdDsKLSAgIHN0cmluZ190eXBlIGxvb2t1cF9jb2xsYXRlbmFtZShjb25zdCBjaGFyX3R5cGUqIHAxLCBjb25zdCBjaGFyX3R5cGUqIHAyKSBjb25zdDsKLSAgIGJvb2wgaXNjdHlwZShjaGFyX3R5cGUgYywgY2hhcl9jbGFzc190eXBlIGYpIGNvbnN0OwotICAgaW50IHRvaShjb25zdCBjaGFyX3R5cGUqJiBwMSwgY29uc3QgY2hhcl90eXBlKiBwMiwgaW50IHJhZGl4KWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gcmVfZGV0YWlsOjpnbG9iYWxfdG9pKHAxLCBwMiwgcmFkaXgsICp0aGlzKTsKLSAgIH0KLSAgIGludCB2YWx1ZShjaGFyX3R5cGUgYywgaW50IHJhZGl4KWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gdV9kaWdpdChjLCBzdGF0aWNfY2FzdDwgOjppbnQ4X3Q+KHJhZGl4KSk7Ci0gICB9Ci0gICBsb2NhbGVfdHlwZSBpbWJ1ZShsb2NhbGVfdHlwZSBsKQotICAgewotICAgICAgbG9jYWxlX3R5cGUgcmVzdWx0KG1fcGltcGwtPmdldGxvYygpKTsKLSAgICAgIG1fcGltcGwgPSByZV9kZXRhaWw6OmdldF9pY3VfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uKGwpOwotICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgIH0KLSAgIGxvY2FsZV90eXBlIGdldGxvYygpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBsb2NhbGVfdHlwZSgpOwotICAgfQotICAgc3RkOjpzdHJpbmcgZXJyb3Jfc3RyaW5nKDo6bmRuYm9vc3Q6OnJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfdHlwZSBuKSBjb25zdAotICAgewotICAgICAgcmV0dXJuIHJlX2RldGFpbDo6Z2V0X2RlZmF1bHRfZXJyb3Jfc3RyaW5nKG4pOwotICAgfQotcHJpdmF0ZToKLSAgIGljdV9yZWdleF90cmFpdHMoY29uc3QgaWN1X3JlZ2V4X3RyYWl0cyYpOwotICAgaWN1X3JlZ2V4X3RyYWl0cyYgb3BlcmF0b3I9KGNvbnN0IGljdV9yZWdleF90cmFpdHMmKTsKLQotICAgLy8KLSAgIC8vIGRlZmluZSB0aGUgYml0bWFza3Mgb2Zmc2V0cyB3ZSBuZWVkIGZvciBhZGRpdGlvbmFsIGNoYXJhY3RlciBwcm9wZXJ0aWVzOgotICAgLy8KLSAgIGVudW17Ci0gICAgICBvZmZzZXRfYmxhbmsgPSBVX0NIQVJfQ0FURUdPUllfQ09VTlQsCi0gICAgICBvZmZzZXRfc3BhY2UgPSBVX0NIQVJfQ0FURUdPUllfQ09VTlQrMSwKLSAgICAgIG9mZnNldF94ZGlnaXQgPSBVX0NIQVJfQ0FURUdPUllfQ09VTlQrMiwKLSAgICAgIG9mZnNldF91bmRlcnNjb3JlID0gVV9DSEFSX0NBVEVHT1JZX0NPVU5UKzMsCi0gICAgICBvZmZzZXRfdW5pY29kZSA9IFVfQ0hBUl9DQVRFR09SWV9DT1VOVCs0LAotICAgICAgb2Zmc2V0X2FueSA9IFVfQ0hBUl9DQVRFR09SWV9DT1VOVCs1LAotICAgICAgb2Zmc2V0X2FzY2lpID0gVV9DSEFSX0NBVEVHT1JZX0NPVU5UKzYsCi0gICAgICBvZmZzZXRfaG9yaXpvbnRhbCA9IFVfQ0hBUl9DQVRFR09SWV9DT1VOVCs3LAotICAgICAgb2Zmc2V0X3ZlcnRpY2FsID0gVV9DSEFSX0NBVEVHT1JZX0NPVU5UKzgKLSAgIH07Ci0KLSAgIC8vCi0gICAvLyBhbmQgbm93IHRoZSBtYXNrczoKLSAgIC8vCi0gICBzdGF0aWMgY29uc3QgY2hhcl9jbGFzc190eXBlIG1hc2tfYmxhbms7Ci0gICBzdGF0aWMgY29uc3QgY2hhcl9jbGFzc190eXBlIG1hc2tfc3BhY2U7Ci0gICBzdGF0aWMgY29uc3QgY2hhcl9jbGFzc190eXBlIG1hc2tfeGRpZ2l0OwotICAgc3RhdGljIGNvbnN0IGNoYXJfY2xhc3NfdHlwZSBtYXNrX3VuZGVyc2NvcmU7Ci0gICBzdGF0aWMgY29uc3QgY2hhcl9jbGFzc190eXBlIG1hc2tfdW5pY29kZTsKLSAgIHN0YXRpYyBjb25zdCBjaGFyX2NsYXNzX3R5cGUgbWFza19hbnk7Ci0gICBzdGF0aWMgY29uc3QgY2hhcl9jbGFzc190eXBlIG1hc2tfYXNjaWk7Ci0gICBzdGF0aWMgY29uc3QgY2hhcl9jbGFzc190eXBlIG1hc2tfaG9yaXpvbnRhbDsKLSAgIHN0YXRpYyBjb25zdCBjaGFyX2NsYXNzX3R5cGUgbWFza192ZXJ0aWNhbDsKLQotICAgc3RhdGljIGNoYXJfY2xhc3NfdHlwZSBsb29rdXBfaWN1X21hc2soY29uc3QgOjpVQ2hhcjMyKiBwMSwgY29uc3QgOjpVQ2hhcjMyKiBwMik7Ci0KLSAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmljdV9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb24+IG1fcGltcGw7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vLwotLy8gdGVtcGxhdGUgaW5zdGFuY2VzOgotLy8KLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfQ0hBUl9UIFVDaGFyMzIKLSN1bmRlZiBORE5CT09TVF9SRUdFWF9UUkFJVFNfVAotI2RlZmluZSBORE5CT09TVF9SRUdFWF9UUkFJVFNfVCAsIGljdV9yZWdleF90cmFpdHMKLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfSUNVX0lOU1RBTkNFUwotI2lmZGVmIE5ETkJPT1NUX1JFR0VYX0lDVV9JTlNUQU5USUFURQotIyAgZGVmaW5lIE5ETkJPT1NUX1JFR0VYX0lOU1RBTlRJQVRFCi0jZW5kaWYKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC92NC9pbnN0YW5jZXMuaHBwPgotI3VuZGVmIE5ETkJPT1NUX1JFR0VYX0NIQVJfVAotI3VuZGVmIE5ETkJPT1NUX1JFR0VYX1RSQUlUU19UCi0jdW5kZWYgTkROQk9PU1RfUkVHRVhfSUNVX0lOU1RBTkNFUwotI2lmZGVmIE5ETkJPT1NUX1JFR0VYX0lOU1RBTlRJQVRFCi0jICB1bmRlZiBORE5CT09TVF9SRUdFWF9JTlNUQU5USUFURQotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdHsKLQotLy8gdHlwZXM6Ci10eXBlZGVmIGJhc2ljX3JlZ2V4PCA6OlVDaGFyMzIsIGljdV9yZWdleF90cmFpdHM+IHUzMnJlZ2V4OwotdHlwZWRlZiBtYXRjaF9yZXN1bHRzPGNvbnN0IDo6VUNoYXIzMio+IHUzMm1hdGNoOwotdHlwZWRlZiBtYXRjaF9yZXN1bHRzPGNvbnN0IDo6VUNoYXIqPiB1MTZtYXRjaDsKLQotLy8KLS8vIENvbnN0cnVjdGlvbiBvZiAzMi1iaXQgcmVnZXggdHlwZXMgZnJvbSBVVEYtOCBhbmQgVVRGLTE2IHByaW1pdGl2ZXM6Ci0vLwotbmFtZXNwYWNlIHJlX2RldGFpbHsKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX01FTUJFUl9URU1QTEFURVMpICYmICFkZWZpbmVkKF9fSUJNQ1BQX18pCi10ZW1wbGF0ZSA8Y2xhc3MgSW5wdXRJdGVyYXRvcj4KLWlubGluZSB1MzJyZWdleCBkb19tYWtlX3UzMnJlZ2V4KElucHV0SXRlcmF0b3IgaSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnB1dEl0ZXJhdG9yIGosIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wdGlvbl90eXBlIG9wdCwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZG5ib29zdDo6bXBsOjppbnRfPDE+KikKLXsKLSAgIHR5cGVkZWYgbmRuYm9vc3Q6OnU4X3RvX3UzMl9pdGVyYXRvcjxJbnB1dEl0ZXJhdG9yLCBVQ2hhcjMyPiBjb252X3R5cGU7Ci0gICByZXR1cm4gdTMycmVnZXgoY29udl90eXBlKGksIGksIGopLCBjb252X3R5cGUoaiwgaSwgaiksIG9wdCk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBJbnB1dEl0ZXJhdG9yPgotaW5saW5lIHUzMnJlZ2V4IGRvX21ha2VfdTMycmVnZXgoSW5wdXRJdGVyYXRvciBpLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElucHV0SXRlcmF0b3IgaiwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3B0aW9uX3R5cGUgb3B0LCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5kbmJvb3N0OjptcGw6OmludF88Mj4qKQotewotICAgdHlwZWRlZiBuZG5ib29zdDo6dTE2X3RvX3UzMl9pdGVyYXRvcjxJbnB1dEl0ZXJhdG9yLCBVQ2hhcjMyPiBjb252X3R5cGU7Ci0gICByZXR1cm4gdTMycmVnZXgoY29udl90eXBlKGksIGksIGopLCBjb252X3R5cGUoaiwgaSwgaiksIG9wdCk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBJbnB1dEl0ZXJhdG9yPgotaW5saW5lIHUzMnJlZ2V4IGRvX21ha2VfdTMycmVnZXgoSW5wdXRJdGVyYXRvciBpLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElucHV0SXRlcmF0b3IgaiwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3B0aW9uX3R5cGUgb3B0LCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5kbmJvb3N0OjptcGw6OmludF88ND4qKQotewotICAgcmV0dXJuIHUzMnJlZ2V4KGksIGosIG9wdCk7Ci19Ci0jZWxzZQotdGVtcGxhdGUgPGNsYXNzIElucHV0SXRlcmF0b3I+Ci1pbmxpbmUgdTMycmVnZXggZG9fbWFrZV91MzJyZWdleChJbnB1dEl0ZXJhdG9yIGksIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5wdXRJdGVyYXRvciBqLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0OjpyZWdleF9jb25zdGFudHM6OnN5bnRheF9vcHRpb25fdHlwZSBvcHQsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmRuYm9vc3Q6Om1wbDo6aW50XzwxPiopCi17Ci0gICB0eXBlZGVmIG5kbmJvb3N0Ojp1OF90b191MzJfaXRlcmF0b3I8SW5wdXRJdGVyYXRvciwgVUNoYXIzMj4gY29udl90eXBlOwotICAgdHlwZWRlZiBzdGQ6OnZlY3RvcjxVQ2hhcjMyPiB2ZWN0b3JfdHlwZTsKLSAgIHZlY3Rvcl90eXBlIHY7Ci0gICBjb252X3R5cGUgYShpLCBpLCBqKSwgYihqLCBpLCBqKTsKLSAgIHdoaWxlKGEgIT0gYikKLSAgIHsKLSAgICAgIHYucHVzaF9iYWNrKCphKTsKLSAgICAgICsrYTsKLSAgIH0KLSAgIGlmKHYuc2l6ZSgpKQotICAgICAgcmV0dXJuIHUzMnJlZ2V4KCYqdi5iZWdpbigpLCB2LnNpemUoKSwgb3B0KTsKLSAgIHJldHVybiB1MzJyZWdleChzdGF0aWNfY2FzdDxVQ2hhcjMyIGNvbnN0Kj4oMCksIHN0YXRpY19jYXN0PHUzMnJlZ2V4OjpzaXplX3R5cGU+KDApLCBvcHQpOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgSW5wdXRJdGVyYXRvcj4KLWlubGluZSB1MzJyZWdleCBkb19tYWtlX3UzMnJlZ2V4KElucHV0SXRlcmF0b3IgaSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnB1dEl0ZXJhdG9yIGosIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wdGlvbl90eXBlIG9wdCwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZG5ib29zdDo6bXBsOjppbnRfPDI+KikKLXsKLSAgIHR5cGVkZWYgbmRuYm9vc3Q6OnUxNl90b191MzJfaXRlcmF0b3I8SW5wdXRJdGVyYXRvciwgVUNoYXIzMj4gY29udl90eXBlOwotICAgdHlwZWRlZiBzdGQ6OnZlY3RvcjxVQ2hhcjMyPiB2ZWN0b3JfdHlwZTsKLSAgIHZlY3Rvcl90eXBlIHY7Ci0gICBjb252X3R5cGUgYShpLCBpLCBqKSwgYihqLCBpLCBqKTsKLSAgIHdoaWxlKGEgIT0gYikKLSAgIHsKLSAgICAgIHYucHVzaF9iYWNrKCphKTsKLSAgICAgICsrYTsKLSAgIH0KLSAgIGlmKHYuc2l6ZSgpKQotICAgICAgcmV0dXJuIHUzMnJlZ2V4KCYqdi5iZWdpbigpLCB2LnNpemUoKSwgb3B0KTsKLSAgIHJldHVybiB1MzJyZWdleChzdGF0aWNfY2FzdDxVQ2hhcjMyIGNvbnN0Kj4oMCksIHN0YXRpY19jYXN0PHUzMnJlZ2V4OjpzaXplX3R5cGU+KDApLCBvcHQpOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgSW5wdXRJdGVyYXRvcj4KLWlubGluZSB1MzJyZWdleCBkb19tYWtlX3UzMnJlZ2V4KElucHV0SXRlcmF0b3IgaSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnB1dEl0ZXJhdG9yIGosIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wdGlvbl90eXBlIG9wdCwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZG5ib29zdDo6bXBsOjppbnRfPDQ+KikKLXsKLSAgIHR5cGVkZWYgc3RkOjp2ZWN0b3I8VUNoYXIzMj4gdmVjdG9yX3R5cGU7Ci0gICB2ZWN0b3JfdHlwZSB2OwotICAgd2hpbGUoaSAhPSBqKQotICAgewotICAgICAgdi5wdXNoX2JhY2soKFVDaGFyMzIpKCppKSk7Ci0gICAgICArK2k7Ci0gICB9Ci0gICBpZih2LnNpemUoKSkKLSAgICAgIHJldHVybiB1MzJyZWdleCgmKnYuYmVnaW4oKSwgdi5zaXplKCksIG9wdCk7Ci0gICByZXR1cm4gdTMycmVnZXgoc3RhdGljX2Nhc3Q8VUNoYXIzMiBjb25zdCo+KDApLCBzdGF0aWNfY2FzdDx1MzJyZWdleDo6c2l6ZV90eXBlPigwKSwgb3B0KTsKLX0KLSNlbmRpZgotfQotCi0vLwotLy8gQ29uc3RydWN0aW9uIGZyb20gYW4gaXRlcmF0b3IgcGFpcjoKLS8vCi10ZW1wbGF0ZSA8Y2xhc3MgSW5wdXRJdGVyYXRvcj4KLWlubGluZSB1MzJyZWdleCBtYWtlX3UzMnJlZ2V4KElucHV0SXRlcmF0b3IgaSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnB1dEl0ZXJhdG9yIGosIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wdGlvbl90eXBlIG9wdCkKLXsKLSAgIHJldHVybiByZV9kZXRhaWw6OmRvX21ha2VfdTMycmVnZXgoaSwgaiwgb3B0LCBzdGF0aWNfY2FzdDxuZG5ib29zdDo6bXBsOjppbnRfPHNpemVvZigqaSk+IGNvbnN0Kj4oMCkpOwotfQotLy8KLS8vIGNvbnN0cnVjdGlvbiBmcm9tIFVURi04IG51bC10ZXJtaW5hdGVkIHN0cmluZ3M6Ci0vLwotaW5saW5lIHUzMnJlZ2V4IG1ha2VfdTMycmVnZXgoY29uc3QgY2hhciogcCwgbmRuYm9vc3Q6OnJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wdGlvbl90eXBlIG9wdCA9IG5kbmJvb3N0OjpyZWdleF9jb25zdGFudHM6OnBlcmwpCi17Ci0gICByZXR1cm4gcmVfZGV0YWlsOjpkb19tYWtlX3UzMnJlZ2V4KHAsIHAgKyBzdGQ6OnN0cmxlbihwKSwgb3B0LCBzdGF0aWNfY2FzdDxuZG5ib29zdDo6bXBsOjppbnRfPDE+IGNvbnN0Kj4oMCkpOwotfQotaW5saW5lIHUzMnJlZ2V4IG1ha2VfdTMycmVnZXgoY29uc3QgdW5zaWduZWQgY2hhciogcCwgbmRuYm9vc3Q6OnJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wdGlvbl90eXBlIG9wdCA9IG5kbmJvb3N0OjpyZWdleF9jb25zdGFudHM6OnBlcmwpCi17Ci0gICByZXR1cm4gcmVfZGV0YWlsOjpkb19tYWtlX3UzMnJlZ2V4KHAsIHAgKyBzdGQ6OnN0cmxlbihyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihwKSksIG9wdCwgc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6Om1wbDo6aW50XzwxPiBjb25zdCo+KDApKTsKLX0KLS8vCi0vLyBjb25zdHJ1Y3Rpb24gZnJvbSBVVEYtMTYgbnVsLXRlcm1pbmF0ZWQgc3RyaW5nczoKLS8vCi0jaWZuZGVmIE5ETkJPT1NUX05PX1dSRUdFWAotaW5saW5lIHUzMnJlZ2V4IG1ha2VfdTMycmVnZXgoY29uc3Qgd2NoYXJfdCogcCwgbmRuYm9vc3Q6OnJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wdGlvbl90eXBlIG9wdCA9IG5kbmJvb3N0OjpyZWdleF9jb25zdGFudHM6OnBlcmwpCi17Ci0gICByZXR1cm4gcmVfZGV0YWlsOjpkb19tYWtlX3UzMnJlZ2V4KHAsIHAgKyBzdGQ6Ondjc2xlbihwKSwgb3B0LCBzdGF0aWNfY2FzdDxuZG5ib29zdDo6bXBsOjppbnRfPHNpemVvZih3Y2hhcl90KT4gY29uc3QqPigwKSk7Ci19Ci0jZW5kaWYKLSNpZiAhZGVmaW5lZChVX1dDSEFSX0lTX1VURjE2KSAmJiAoVV9TSVpFT0ZfV0NIQVJfVCAhPSAyKQotaW5saW5lIHUzMnJlZ2V4IG1ha2VfdTMycmVnZXgoY29uc3QgVUNoYXIqIHAsIG5kbmJvb3N0OjpyZWdleF9jb25zdGFudHM6OnN5bnRheF9vcHRpb25fdHlwZSBvcHQgPSBuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjpwZXJsKQotewotICAgcmV0dXJuIHJlX2RldGFpbDo6ZG9fbWFrZV91MzJyZWdleChwLCBwICsgdV9zdHJsZW4ocCksIG9wdCwgc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6Om1wbDo6aW50XzwyPiBjb25zdCo+KDApKTsKLX0KLSNlbmRpZgotLy8KLS8vIGNvbnN0cnVjdGlvbiBmcm9tIGJhc2ljX3N0cmluZyBjbGFzcy10ZW1wbGF0ZToKLS8vCi10ZW1wbGF0ZTxjbGFzcyBDLCBjbGFzcyBULCBjbGFzcyBBPgotaW5saW5lIHUzMnJlZ2V4IG1ha2VfdTMycmVnZXgoY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8QywgVCwgQT4mIHMsIG5kbmJvb3N0OjpyZWdleF9jb25zdGFudHM6OnN5bnRheF9vcHRpb25fdHlwZSBvcHQgPSBuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjpwZXJsKQotewotICAgcmV0dXJuIHJlX2RldGFpbDo6ZG9fbWFrZV91MzJyZWdleChzLmJlZ2luKCksIHMuZW5kKCksIG9wdCwgc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6Om1wbDo6aW50XzxzaXplb2YoQyk+IGNvbnN0Kj4oMCkpOwotfQotLy8KLS8vIENvbnN0cnVjdGlvbiBmcm9tIElDVSBzdHJpbmcgdHlwZToKLS8vCi1pbmxpbmUgdTMycmVnZXggbWFrZV91MzJyZWdleChjb25zdCBVX05BTUVTUEFDRV9RVUFMSUZJRVIgVW5pY29kZVN0cmluZyYgcywgbmRuYm9vc3Q6OnJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wdGlvbl90eXBlIG9wdCA9IG5kbmJvb3N0OjpyZWdleF9jb25zdGFudHM6OnBlcmwpCi17Ci0gICByZXR1cm4gcmVfZGV0YWlsOjpkb19tYWtlX3UzMnJlZ2V4KHMuZ2V0QnVmZmVyKCksIHMuZ2V0QnVmZmVyKCkgKyBzLmxlbmd0aCgpLCBvcHQsIHN0YXRpY19jYXN0PG5kbmJvb3N0OjptcGw6OmludF88Mj4gY29uc3QqPigwKSk7Ci19Ci0KLS8vCi0vLyByZWdleF9tYXRjaCBvdmVybG9hZHMgdGhhdCB3aWRlbiB0aGUgY2hhcmFjdGVyIHR5cGUgYXMgYXBwcm9wcmlhdGU6Ci0vLwotbmFtZXNwYWNlIHJlX2RldGFpbHsKLXRlbXBsYXRlPGNsYXNzIE1SMSwgY2xhc3MgTVIyPgotdm9pZCBjb3B5X3Jlc3VsdHMoTVIxJiBvdXQsIE1SMiBjb25zdCYgaW4pCi17Ci0gICAvLyBjb3B5IHJlc3VsdHMgZnJvbSBhbiBhZGFwdGVkIE1SMiBtYXRjaF9yZXN1bHRzOgotICAgb3V0LnNldF9zaXplKGluLnNpemUoKSwgaW4ucHJlZml4KCkuZmlyc3QuYmFzZSgpLCBpbi5zdWZmaXgoKS5zZWNvbmQuYmFzZSgpKTsKLSAgIG91dC5zZXRfYmFzZShpbi5iYXNlKCkuYmFzZSgpKTsKLSAgIGZvcihpbnQgaSA9IDA7IGkgPCAoaW50KWluLnNpemUoKTsgKytpKQotICAgewotICAgICAgaWYoaW5baV0ubWF0Y2hlZCkKLSAgICAgIHsKLSAgICAgICAgIG91dC5zZXRfZmlyc3QoaW5baV0uZmlyc3QuYmFzZSgpLCBpKTsKLSAgICAgICAgIG91dC5zZXRfc2Vjb25kKGluW2ldLnNlY29uZC5iYXNlKCksIGkpOwotICAgICAgfQotICAgfQotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3I+Ci1pbmxpbmUgYm9vbCBkb19yZWdleF9tYXRjaChCaWRpSXRlcmF0b3IgZmlyc3QsIEJpZGlJdGVyYXRvciBsYXN0LCAKLSAgICAgICAgICAgICAgICAgbWF0Y2hfcmVzdWx0czxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvcj4mIG0sIAotICAgICAgICAgICAgICAgICBjb25zdCB1MzJyZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncywKLSAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6Om1wbDo6aW50Xzw0PiBjb25zdCopCi17Ci0gICByZXR1cm4gOjpuZG5ib29zdDo6cmVnZXhfbWF0Y2goZmlyc3QsIGxhc3QsIG0sIGUsIGZsYWdzKTsKLX0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvcj4KLWJvb2wgZG9fcmVnZXhfbWF0Y2goQmlkaUl0ZXJhdG9yIGZpcnN0LCBCaWRpSXRlcmF0b3IgbGFzdCwgCi0gICAgICAgICAgICAgICAgIG1hdGNoX3Jlc3VsdHM8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3I+JiBtLCAKLSAgICAgICAgICAgICAgICAgY29uc3QgdTMycmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MsCi0gICAgICAgICAgICAgICAgIG5kbmJvb3N0OjptcGw6OmludF88Mj4gY29uc3QqKQotewotICAgdHlwZWRlZiB1MTZfdG9fdTMyX2l0ZXJhdG9yPEJpZGlJdGVyYXRvciwgVUNoYXIzMj4gY29udl90eXBlOwotICAgdHlwZWRlZiBtYXRjaF9yZXN1bHRzPGNvbnZfdHlwZT4gICAgICAgICAgICAgICAgICAgbWF0Y2hfdHlwZTsKLSAgIC8vdHlwZWRlZiB0eXBlbmFtZSBtYXRjaF90eXBlOjphbGxvY2F0b3JfdHlwZSAgICAgICAgYWxsb2NfdHlwZTsKLSAgIG1hdGNoX3R5cGUgd2hhdDsKLSAgIGJvb2wgcmVzdWx0ID0gOjpuZG5ib29zdDo6cmVnZXhfbWF0Y2goY29udl90eXBlKGZpcnN0LCBmaXJzdCwgbGFzdCksIGNvbnZfdHlwZShsYXN0LCBmaXJzdCwgbGFzdCksIHdoYXQsIGUsIGZsYWdzKTsKLSAgIC8vIGNvcHkgcmVzdWx0cyBhY3Jvc3MgdG8gbToKLSAgIGlmKHJlc3VsdCkgY29weV9yZXN1bHRzKG0sIHdoYXQpOwotICAgcmV0dXJuIHJlc3VsdDsKLX0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvcj4KLWJvb2wgZG9fcmVnZXhfbWF0Y2goQmlkaUl0ZXJhdG9yIGZpcnN0LCBCaWRpSXRlcmF0b3IgbGFzdCwgCi0gICAgICAgICAgICAgICAgIG1hdGNoX3Jlc3VsdHM8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3I+JiBtLCAKLSAgICAgICAgICAgICAgICAgY29uc3QgdTMycmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MsCi0gICAgICAgICAgICAgICAgIG5kbmJvb3N0OjptcGw6OmludF88MT4gY29uc3QqKQotewotICAgdHlwZWRlZiB1OF90b191MzJfaXRlcmF0b3I8QmlkaUl0ZXJhdG9yLCBVQ2hhcjMyPiAgY29udl90eXBlOwotICAgdHlwZWRlZiBtYXRjaF9yZXN1bHRzPGNvbnZfdHlwZT4gICAgICAgICAgICAgICAgICAgbWF0Y2hfdHlwZTsKLSAgIC8vdHlwZWRlZiB0eXBlbmFtZSBtYXRjaF90eXBlOjphbGxvY2F0b3JfdHlwZSAgICAgICAgYWxsb2NfdHlwZTsKLSAgIG1hdGNoX3R5cGUgd2hhdDsKLSAgIGJvb2wgcmVzdWx0ID0gOjpuZG5ib29zdDo6cmVnZXhfbWF0Y2goY29udl90eXBlKGZpcnN0LCBmaXJzdCwgbGFzdCksIGNvbnZfdHlwZShsYXN0LCBmaXJzdCwgbGFzdCksIHdoYXQsIGUsIGZsYWdzKTsKLSAgIC8vIGNvcHkgcmVzdWx0cyBhY3Jvc3MgdG8gbToKLSAgIGlmKHJlc3VsdCkgY29weV9yZXN1bHRzKG0sIHdoYXQpOwotICAgcmV0dXJuIHJlc3VsdDsKLX0KLX0gLy8gbmFtZXNwYWNlIHJlX2RldGFpbAotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3I+Ci1pbmxpbmUgYm9vbCB1MzJyZWdleF9tYXRjaChCaWRpSXRlcmF0b3IgZmlyc3QsIEJpZGlJdGVyYXRvciBsYXN0LCAKLSAgICAgICAgICAgICAgICAgbWF0Y2hfcmVzdWx0czxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvcj4mIG0sIAotICAgICAgICAgICAgICAgICBjb25zdCB1MzJyZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVfZGV0YWlsOjpkb19yZWdleF9tYXRjaChmaXJzdCwgbGFzdCwgbSwgZSwgZmxhZ3MsIHN0YXRpY19jYXN0PG1wbDo6aW50XzxzaXplb2YoKmZpcnN0KT4gY29uc3QqPigwKSk7Ci19Ci1pbmxpbmUgYm9vbCB1MzJyZWdleF9tYXRjaChjb25zdCBVQ2hhciogcCwgCi0gICAgICAgICAgICAgICAgIG1hdGNoX3Jlc3VsdHM8Y29uc3QgVUNoYXIqPiYgbSwgCi0gICAgICAgICAgICAgICAgIGNvbnN0IHUzMnJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZV9kZXRhaWw6OmRvX3JlZ2V4X21hdGNoKHAsIHArdV9zdHJsZW4ocCksIG0sIGUsIGZsYWdzLCBzdGF0aWNfY2FzdDxtcGw6OmludF88Mj4gY29uc3QqPigwKSk7Ci19Ci0jaWYgIWRlZmluZWQoVV9XQ0hBUl9JU19VVEYxNikgJiYgKFVfU0laRU9GX1dDSEFSX1QgIT0gMikgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fV1JFR0VYKQotaW5saW5lIGJvb2wgdTMycmVnZXhfbWF0Y2goY29uc3Qgd2NoYXJfdCogcCwgCi0gICAgICAgICAgICAgICAgIG1hdGNoX3Jlc3VsdHM8Y29uc3Qgd2NoYXJfdCo+JiBtLCAKLSAgICAgICAgICAgICAgICAgY29uc3QgdTMycmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlX2RldGFpbDo6ZG9fcmVnZXhfbWF0Y2gocCwgcCtzdGQ6Ondjc2xlbihwKSwgbSwgZSwgZmxhZ3MsIHN0YXRpY19jYXN0PG1wbDo6aW50XzxzaXplb2Yod2NoYXJfdCk+IGNvbnN0Kj4oMCkpOwotfQotI2VuZGlmCi1pbmxpbmUgYm9vbCB1MzJyZWdleF9tYXRjaChjb25zdCBjaGFyKiBwLCAKLSAgICAgICAgICAgICAgICAgbWF0Y2hfcmVzdWx0czxjb25zdCBjaGFyKj4mIG0sIAotICAgICAgICAgICAgICAgICBjb25zdCB1MzJyZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVfZGV0YWlsOjpkb19yZWdleF9tYXRjaChwLCBwK3N0ZDo6c3RybGVuKHApLCBtLCBlLCBmbGFncywgc3RhdGljX2Nhc3Q8bXBsOjppbnRfPDE+IGNvbnN0Kj4oMCkpOwotfQotaW5saW5lIGJvb2wgdTMycmVnZXhfbWF0Y2goY29uc3QgdW5zaWduZWQgY2hhciogcCwgCi0gICAgICAgICAgICAgICAgIG1hdGNoX3Jlc3VsdHM8Y29uc3QgdW5zaWduZWQgY2hhcio+JiBtLCAKLSAgICAgICAgICAgICAgICAgY29uc3QgdTMycmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlX2RldGFpbDo6ZG9fcmVnZXhfbWF0Y2gocCwgcCtzdGQ6OnN0cmxlbigoY29uc3QgY2hhciopcCksIG0sIGUsIGZsYWdzLCBzdGF0aWNfY2FzdDxtcGw6OmludF88MT4gY29uc3QqPigwKSk7Ci19Ci1pbmxpbmUgYm9vbCB1MzJyZWdleF9tYXRjaChjb25zdCBzdGQ6OnN0cmluZyYgcywgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9yZXN1bHRzPHN0ZDo6c3RyaW5nOjpjb25zdF9pdGVyYXRvcj4mIG0sIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdTMycmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZV9kZXRhaWw6OmRvX3JlZ2V4X21hdGNoKHMuYmVnaW4oKSwgcy5lbmQoKSwgbSwgZSwgZmxhZ3MsIHN0YXRpY19jYXN0PG1wbDo6aW50XzwxPiBjb25zdCo+KDApKTsKLX0KLSNpZm5kZWYgTkROQk9PU1RfTk9fU1REX1dTVFJJTkcKLWlubGluZSBib29sIHUzMnJlZ2V4X21hdGNoKGNvbnN0IHN0ZDo6d3N0cmluZyYgcywgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9yZXN1bHRzPHN0ZDo6d3N0cmluZzo6Y29uc3RfaXRlcmF0b3I+JiBtLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHUzMnJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVfZGV0YWlsOjpkb19yZWdleF9tYXRjaChzLmJlZ2luKCksIHMuZW5kKCksIG0sIGUsIGZsYWdzLCBzdGF0aWNfY2FzdDxtcGw6OmludF88c2l6ZW9mKHdjaGFyX3QpPiBjb25zdCo+KDApKTsKLX0KLSNlbmRpZgotaW5saW5lIGJvb2wgdTMycmVnZXhfbWF0Y2goY29uc3QgVV9OQU1FU1BBQ0VfUVVBTElGSUVSIFVuaWNvZGVTdHJpbmcmIHMsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfcmVzdWx0czxjb25zdCBVQ2hhcio+JiBtLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHUzMnJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVfZGV0YWlsOjpkb19yZWdleF9tYXRjaChzLmdldEJ1ZmZlcigpLCBzLmdldEJ1ZmZlcigpICsgcy5sZW5ndGgoKSwgbSwgZSwgZmxhZ3MsIHN0YXRpY19jYXN0PG1wbDo6aW50XzxzaXplb2Yod2NoYXJfdCk+IGNvbnN0Kj4oMCkpOwotfQotLy8KLS8vIHJlZ2V4X21hdGNoIG92ZXJsb2FkcyB0aGF0IGRvIG5vdCByZXR1cm4gd2hhdCBtYXRjaGVkOgotLy8KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3I+Ci1pbmxpbmUgYm9vbCB1MzJyZWdleF9tYXRjaChCaWRpSXRlcmF0b3IgZmlyc3QsIEJpZGlJdGVyYXRvciBsYXN0LCAKLSAgICAgICAgICAgICAgICAgY29uc3QgdTMycmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgbWF0Y2hfcmVzdWx0czxCaWRpSXRlcmF0b3I+IG07Ci0gICByZXR1cm4gcmVfZGV0YWlsOjpkb19yZWdleF9tYXRjaChmaXJzdCwgbGFzdCwgbSwgZSwgZmxhZ3MsIHN0YXRpY19jYXN0PG1wbDo6aW50XzxzaXplb2YoKmZpcnN0KT4gY29uc3QqPigwKSk7Ci19Ci1pbmxpbmUgYm9vbCB1MzJyZWdleF9tYXRjaChjb25zdCBVQ2hhciogcCwgCi0gICAgICAgICAgICAgICAgIGNvbnN0IHUzMnJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIG1hdGNoX3Jlc3VsdHM8Y29uc3QgVUNoYXIqPiBtOwotICAgcmV0dXJuIHJlX2RldGFpbDo6ZG9fcmVnZXhfbWF0Y2gocCwgcCt1X3N0cmxlbihwKSwgbSwgZSwgZmxhZ3MsIHN0YXRpY19jYXN0PG1wbDo6aW50XzwyPiBjb25zdCo+KDApKTsKLX0KLSNpZiAhZGVmaW5lZChVX1dDSEFSX0lTX1VURjE2KSAmJiAoVV9TSVpFT0ZfV0NIQVJfVCAhPSAyKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19XUkVHRVgpCi1pbmxpbmUgYm9vbCB1MzJyZWdleF9tYXRjaChjb25zdCB3Y2hhcl90KiBwLCAKLSAgICAgICAgICAgICAgICAgY29uc3QgdTMycmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgbWF0Y2hfcmVzdWx0czxjb25zdCB3Y2hhcl90Kj4gbTsKLSAgIHJldHVybiByZV9kZXRhaWw6OmRvX3JlZ2V4X21hdGNoKHAsIHArc3RkOjp3Y3NsZW4ocCksIG0sIGUsIGZsYWdzLCBzdGF0aWNfY2FzdDxtcGw6OmludF88c2l6ZW9mKHdjaGFyX3QpPiBjb25zdCo+KDApKTsKLX0KLSNlbmRpZgotaW5saW5lIGJvb2wgdTMycmVnZXhfbWF0Y2goY29uc3QgY2hhciogcCwgCi0gICAgICAgICAgICAgICAgIGNvbnN0IHUzMnJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIG1hdGNoX3Jlc3VsdHM8Y29uc3QgY2hhcio+IG07Ci0gICByZXR1cm4gcmVfZGV0YWlsOjpkb19yZWdleF9tYXRjaChwLCBwK3N0ZDo6c3RybGVuKHApLCBtLCBlLCBmbGFncywgc3RhdGljX2Nhc3Q8bXBsOjppbnRfPDE+IGNvbnN0Kj4oMCkpOwotfQotaW5saW5lIGJvb2wgdTMycmVnZXhfbWF0Y2goY29uc3QgdW5zaWduZWQgY2hhciogcCwgCi0gICAgICAgICAgICAgICAgIGNvbnN0IHUzMnJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIG1hdGNoX3Jlc3VsdHM8Y29uc3QgdW5zaWduZWQgY2hhcio+IG07Ci0gICByZXR1cm4gcmVfZGV0YWlsOjpkb19yZWdleF9tYXRjaChwLCBwK3N0ZDo6c3RybGVuKChjb25zdCBjaGFyKilwKSwgbSwgZSwgZmxhZ3MsIHN0YXRpY19jYXN0PG1wbDo6aW50XzwxPiBjb25zdCo+KDApKTsKLX0KLWlubGluZSBib29sIHUzMnJlZ2V4X21hdGNoKGNvbnN0IHN0ZDo6c3RyaW5nJiBzLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHUzMnJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICBtYXRjaF9yZXN1bHRzPHN0ZDo6c3RyaW5nOjpjb25zdF9pdGVyYXRvcj4gbTsKLSAgIHJldHVybiByZV9kZXRhaWw6OmRvX3JlZ2V4X21hdGNoKHMuYmVnaW4oKSwgcy5lbmQoKSwgbSwgZSwgZmxhZ3MsIHN0YXRpY19jYXN0PG1wbDo6aW50XzwxPiBjb25zdCo+KDApKTsKLX0KLSNpZm5kZWYgTkROQk9PU1RfTk9fU1REX1dTVFJJTkcKLWlubGluZSBib29sIHUzMnJlZ2V4X21hdGNoKGNvbnN0IHN0ZDo6d3N0cmluZyYgcywgCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1MzJyZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgbWF0Y2hfcmVzdWx0czxzdGQ6OndzdHJpbmc6OmNvbnN0X2l0ZXJhdG9yPiBtOwotICAgcmV0dXJuIHJlX2RldGFpbDo6ZG9fcmVnZXhfbWF0Y2gocy5iZWdpbigpLCBzLmVuZCgpLCBtLCBlLCBmbGFncywgc3RhdGljX2Nhc3Q8bXBsOjppbnRfPHNpemVvZih3Y2hhcl90KT4gY29uc3QqPigwKSk7Ci19Ci0jZW5kaWYKLWlubGluZSBib29sIHUzMnJlZ2V4X21hdGNoKGNvbnN0IFVfTkFNRVNQQUNFX1FVQUxJRklFUiBVbmljb2RlU3RyaW5nJiBzLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHUzMnJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICBtYXRjaF9yZXN1bHRzPGNvbnN0IFVDaGFyKj4gbTsKLSAgIHJldHVybiByZV9kZXRhaWw6OmRvX3JlZ2V4X21hdGNoKHMuZ2V0QnVmZmVyKCksIHMuZ2V0QnVmZmVyKCkgKyBzLmxlbmd0aCgpLCBtLCBlLCBmbGFncywgc3RhdGljX2Nhc3Q8bXBsOjppbnRfPHNpemVvZih3Y2hhcl90KT4gY29uc3QqPigwKSk7Ci19Ci0KLS8vCi0vLyByZWdleF9zZWFyY2ggb3ZlcmxvYWRzIHRoYXQgd2lkZW4gdGhlIGNoYXJhY3RlciB0eXBlIGFzIGFwcHJvcHJpYXRlOgotLy8KLW5hbWVzcGFjZSByZV9kZXRhaWx7Ci10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3I+Ci1pbmxpbmUgYm9vbCBkb19yZWdleF9zZWFyY2goQmlkaUl0ZXJhdG9yIGZpcnN0LCBCaWRpSXRlcmF0b3IgbGFzdCwgCi0gICAgICAgICAgICAgICAgIG1hdGNoX3Jlc3VsdHM8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3I+JiBtLCAKLSAgICAgICAgICAgICAgICAgY29uc3QgdTMycmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MsCi0gICAgICAgICAgICAgICAgIEJpZGlJdGVyYXRvciBiYXNlLAotICAgICAgICAgICAgICAgICBuZG5ib29zdDo6bXBsOjppbnRfPDQ+IGNvbnN0KikKLXsKLSAgIHJldHVybiA6Om5kbmJvb3N0OjpyZWdleF9zZWFyY2goZmlyc3QsIGxhc3QsIG0sIGUsIGZsYWdzLCBiYXNlKTsKLX0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvcj4KLWJvb2wgZG9fcmVnZXhfc2VhcmNoKEJpZGlJdGVyYXRvciBmaXJzdCwgQmlkaUl0ZXJhdG9yIGxhc3QsIAotICAgICAgICAgICAgICAgICBtYXRjaF9yZXN1bHRzPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yPiYgbSwgCi0gICAgICAgICAgICAgICAgIGNvbnN0IHUzMnJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzLAotICAgICAgICAgICAgICAgICBCaWRpSXRlcmF0b3IgYmFzZSwKLSAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6Om1wbDo6aW50XzwyPiBjb25zdCopCi17Ci0gICB0eXBlZGVmIHUxNl90b191MzJfaXRlcmF0b3I8QmlkaUl0ZXJhdG9yLCBVQ2hhcjMyPiBjb252X3R5cGU7Ci0gICB0eXBlZGVmIG1hdGNoX3Jlc3VsdHM8Y29udl90eXBlPiAgICAgICAgICAgICAgICAgICBtYXRjaF90eXBlOwotICAgLy90eXBlZGVmIHR5cGVuYW1lIG1hdGNoX3R5cGU6OmFsbG9jYXRvcl90eXBlICAgICAgICBhbGxvY190eXBlOwotICAgbWF0Y2hfdHlwZSB3aGF0OwotICAgYm9vbCByZXN1bHQgPSA6Om5kbmJvb3N0OjpyZWdleF9zZWFyY2goY29udl90eXBlKGZpcnN0LCBmaXJzdCwgbGFzdCksIGNvbnZfdHlwZShsYXN0LCBmaXJzdCwgbGFzdCksIHdoYXQsIGUsIGZsYWdzLCBjb252X3R5cGUoYmFzZSkpOwotICAgLy8gY29weSByZXN1bHRzIGFjcm9zcyB0byBtOgotICAgaWYocmVzdWx0KSBjb3B5X3Jlc3VsdHMobSwgd2hhdCk7Ci0gICByZXR1cm4gcmVzdWx0OwotfQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yPgotYm9vbCBkb19yZWdleF9zZWFyY2goQmlkaUl0ZXJhdG9yIGZpcnN0LCBCaWRpSXRlcmF0b3IgbGFzdCwgCi0gICAgICAgICAgICAgICAgIG1hdGNoX3Jlc3VsdHM8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3I+JiBtLCAKLSAgICAgICAgICAgICAgICAgY29uc3QgdTMycmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MsCi0gICAgICAgICAgICAgICAgIEJpZGlJdGVyYXRvciBiYXNlLAotICAgICAgICAgICAgICAgICBuZG5ib29zdDo6bXBsOjppbnRfPDE+IGNvbnN0KikKLXsKLSAgIHR5cGVkZWYgdThfdG9fdTMyX2l0ZXJhdG9yPEJpZGlJdGVyYXRvciwgVUNoYXIzMj4gIGNvbnZfdHlwZTsKLSAgIHR5cGVkZWYgbWF0Y2hfcmVzdWx0czxjb252X3R5cGU+ICAgICAgICAgICAgICAgICAgIG1hdGNoX3R5cGU7Ci0gICAvL3R5cGVkZWYgdHlwZW5hbWUgbWF0Y2hfdHlwZTo6YWxsb2NhdG9yX3R5cGUgICAgICAgIGFsbG9jX3R5cGU7Ci0gICBtYXRjaF90eXBlIHdoYXQ7Ci0gICBib29sIHJlc3VsdCA9IDo6bmRuYm9vc3Q6OnJlZ2V4X3NlYXJjaChjb252X3R5cGUoZmlyc3QsIGZpcnN0LCBsYXN0KSwgY29udl90eXBlKGxhc3QsIGZpcnN0LCBsYXN0KSwgd2hhdCwgZSwgZmxhZ3MsIGNvbnZfdHlwZShiYXNlKSk7Ci0gICAvLyBjb3B5IHJlc3VsdHMgYWNyb3NzIHRvIG06Ci0gICBpZihyZXN1bHQpIGNvcHlfcmVzdWx0cyhtLCB3aGF0KTsKLSAgIHJldHVybiByZXN1bHQ7Ci19Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvcj4KLWlubGluZSBib29sIHUzMnJlZ2V4X3NlYXJjaChCaWRpSXRlcmF0b3IgZmlyc3QsIEJpZGlJdGVyYXRvciBsYXN0LCAKLSAgICAgICAgICAgICAgICAgbWF0Y2hfcmVzdWx0czxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvcj4mIG0sIAotICAgICAgICAgICAgICAgICBjb25zdCB1MzJyZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVfZGV0YWlsOjpkb19yZWdleF9zZWFyY2goZmlyc3QsIGxhc3QsIG0sIGUsIGZsYWdzLCBmaXJzdCwgc3RhdGljX2Nhc3Q8bXBsOjppbnRfPHNpemVvZigqZmlyc3QpPiBjb25zdCo+KDApKTsKLX0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvcj4KLWlubGluZSBib29sIHUzMnJlZ2V4X3NlYXJjaChCaWRpSXRlcmF0b3IgZmlyc3QsIEJpZGlJdGVyYXRvciBsYXN0LCAKLSAgICAgICAgICAgICAgICAgbWF0Y2hfcmVzdWx0czxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvcj4mIG0sIAotICAgICAgICAgICAgICAgICBjb25zdCB1MzJyZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncywKLSAgICAgICAgICAgICAgICAgQmlkaUl0ZXJhdG9yIGJhc2UpCi17Ci0gICByZXR1cm4gcmVfZGV0YWlsOjpkb19yZWdleF9zZWFyY2goZmlyc3QsIGxhc3QsIG0sIGUsIGZsYWdzLCBiYXNlLCBzdGF0aWNfY2FzdDxtcGw6OmludF88c2l6ZW9mKCpmaXJzdCk+IGNvbnN0Kj4oMCkpOwotfQotaW5saW5lIGJvb2wgdTMycmVnZXhfc2VhcmNoKGNvbnN0IFVDaGFyKiBwLCAKLSAgICAgICAgICAgICAgICAgbWF0Y2hfcmVzdWx0czxjb25zdCBVQ2hhcio+JiBtLCAKLSAgICAgICAgICAgICAgICAgY29uc3QgdTMycmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlX2RldGFpbDo6ZG9fcmVnZXhfc2VhcmNoKHAsIHArdV9zdHJsZW4ocCksIG0sIGUsIGZsYWdzLCBwLCBzdGF0aWNfY2FzdDxtcGw6OmludF88Mj4gY29uc3QqPigwKSk7Ci19Ci0jaWYgIWRlZmluZWQoVV9XQ0hBUl9JU19VVEYxNikgJiYgKFVfU0laRU9GX1dDSEFSX1QgIT0gMikgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fV1JFR0VYKQotaW5saW5lIGJvb2wgdTMycmVnZXhfc2VhcmNoKGNvbnN0IHdjaGFyX3QqIHAsIAotICAgICAgICAgICAgICAgICBtYXRjaF9yZXN1bHRzPGNvbnN0IHdjaGFyX3QqPiYgbSwgCi0gICAgICAgICAgICAgICAgIGNvbnN0IHUzMnJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZV9kZXRhaWw6OmRvX3JlZ2V4X3NlYXJjaChwLCBwK3N0ZDo6d2NzbGVuKHApLCBtLCBlLCBmbGFncywgcCwgc3RhdGljX2Nhc3Q8bXBsOjppbnRfPHNpemVvZih3Y2hhcl90KT4gY29uc3QqPigwKSk7Ci19Ci0jZW5kaWYKLWlubGluZSBib29sIHUzMnJlZ2V4X3NlYXJjaChjb25zdCBjaGFyKiBwLCAKLSAgICAgICAgICAgICAgICAgbWF0Y2hfcmVzdWx0czxjb25zdCBjaGFyKj4mIG0sIAotICAgICAgICAgICAgICAgICBjb25zdCB1MzJyZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVfZGV0YWlsOjpkb19yZWdleF9zZWFyY2gocCwgcCtzdGQ6OnN0cmxlbihwKSwgbSwgZSwgZmxhZ3MsIHAsIHN0YXRpY19jYXN0PG1wbDo6aW50XzwxPiBjb25zdCo+KDApKTsKLX0KLWlubGluZSBib29sIHUzMnJlZ2V4X3NlYXJjaChjb25zdCB1bnNpZ25lZCBjaGFyKiBwLCAKLSAgICAgICAgICAgICAgICAgbWF0Y2hfcmVzdWx0czxjb25zdCB1bnNpZ25lZCBjaGFyKj4mIG0sIAotICAgICAgICAgICAgICAgICBjb25zdCB1MzJyZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVfZGV0YWlsOjpkb19yZWdleF9zZWFyY2gocCwgcCtzdGQ6OnN0cmxlbigoY29uc3QgY2hhciopcCksIG0sIGUsIGZsYWdzLCBwLCBzdGF0aWNfY2FzdDxtcGw6OmludF88MT4gY29uc3QqPigwKSk7Ci19Ci1pbmxpbmUgYm9vbCB1MzJyZWdleF9zZWFyY2goY29uc3Qgc3RkOjpzdHJpbmcmIHMsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfcmVzdWx0czxzdGQ6OnN0cmluZzo6Y29uc3RfaXRlcmF0b3I+JiBtLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHUzMnJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVfZGV0YWlsOjpkb19yZWdleF9zZWFyY2gocy5iZWdpbigpLCBzLmVuZCgpLCBtLCBlLCBmbGFncywgcy5iZWdpbigpLCBzdGF0aWNfY2FzdDxtcGw6OmludF88MT4gY29uc3QqPigwKSk7Ci19Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1NURF9XU1RSSU5HCi1pbmxpbmUgYm9vbCB1MzJyZWdleF9zZWFyY2goY29uc3Qgc3RkOjp3c3RyaW5nJiBzLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX3Jlc3VsdHM8c3RkOjp3c3RyaW5nOjpjb25zdF9pdGVyYXRvcj4mIG0sIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdTMycmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZV9kZXRhaWw6OmRvX3JlZ2V4X3NlYXJjaChzLmJlZ2luKCksIHMuZW5kKCksIG0sIGUsIGZsYWdzLCBzLmJlZ2luKCksIHN0YXRpY19jYXN0PG1wbDo6aW50XzxzaXplb2Yod2NoYXJfdCk+IGNvbnN0Kj4oMCkpOwotfQotI2VuZGlmCi1pbmxpbmUgYm9vbCB1MzJyZWdleF9zZWFyY2goY29uc3QgVV9OQU1FU1BBQ0VfUVVBTElGSUVSIFVuaWNvZGVTdHJpbmcmIHMsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfcmVzdWx0czxjb25zdCBVQ2hhcio+JiBtLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHUzMnJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVfZGV0YWlsOjpkb19yZWdleF9zZWFyY2gocy5nZXRCdWZmZXIoKSwgcy5nZXRCdWZmZXIoKSArIHMubGVuZ3RoKCksIG0sIGUsIGZsYWdzLCBzLmdldEJ1ZmZlcigpLCBzdGF0aWNfY2FzdDxtcGw6OmludF88c2l6ZW9mKHdjaGFyX3QpPiBjb25zdCo+KDApKTsKLX0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3I+Ci1pbmxpbmUgYm9vbCB1MzJyZWdleF9zZWFyY2goQmlkaUl0ZXJhdG9yIGZpcnN0LCBCaWRpSXRlcmF0b3IgbGFzdCwgCi0gICAgICAgICAgICAgICAgIGNvbnN0IHUzMnJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIG1hdGNoX3Jlc3VsdHM8QmlkaUl0ZXJhdG9yPiBtOwotICAgcmV0dXJuIHJlX2RldGFpbDo6ZG9fcmVnZXhfc2VhcmNoKGZpcnN0LCBsYXN0LCBtLCBlLCBmbGFncywgZmlyc3QsIHN0YXRpY19jYXN0PG1wbDo6aW50XzxzaXplb2YoKmZpcnN0KT4gY29uc3QqPigwKSk7Ci19Ci1pbmxpbmUgYm9vbCB1MzJyZWdleF9zZWFyY2goY29uc3QgVUNoYXIqIHAsIAotICAgICAgICAgICAgICAgICBjb25zdCB1MzJyZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICBtYXRjaF9yZXN1bHRzPGNvbnN0IFVDaGFyKj4gbTsKLSAgIHJldHVybiByZV9kZXRhaWw6OmRvX3JlZ2V4X3NlYXJjaChwLCBwK3Vfc3RybGVuKHApLCBtLCBlLCBmbGFncywgcCwgc3RhdGljX2Nhc3Q8bXBsOjppbnRfPDI+IGNvbnN0Kj4oMCkpOwotfQotI2lmICFkZWZpbmVkKFVfV0NIQVJfSVNfVVRGMTYpICYmIChVX1NJWkVPRl9XQ0hBUl9UICE9IDIpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX1dSRUdFWCkKLWlubGluZSBib29sIHUzMnJlZ2V4X3NlYXJjaChjb25zdCB3Y2hhcl90KiBwLCAKLSAgICAgICAgICAgICAgICAgY29uc3QgdTMycmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgbWF0Y2hfcmVzdWx0czxjb25zdCB3Y2hhcl90Kj4gbTsKLSAgIHJldHVybiByZV9kZXRhaWw6OmRvX3JlZ2V4X3NlYXJjaChwLCBwK3N0ZDo6d2NzbGVuKHApLCBtLCBlLCBmbGFncywgcCwgc3RhdGljX2Nhc3Q8bXBsOjppbnRfPHNpemVvZih3Y2hhcl90KT4gY29uc3QqPigwKSk7Ci19Ci0jZW5kaWYKLWlubGluZSBib29sIHUzMnJlZ2V4X3NlYXJjaChjb25zdCBjaGFyKiBwLCAKLSAgICAgICAgICAgICAgICAgY29uc3QgdTMycmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgbWF0Y2hfcmVzdWx0czxjb25zdCBjaGFyKj4gbTsKLSAgIHJldHVybiByZV9kZXRhaWw6OmRvX3JlZ2V4X3NlYXJjaChwLCBwK3N0ZDo6c3RybGVuKHApLCBtLCBlLCBmbGFncywgcCwgc3RhdGljX2Nhc3Q8bXBsOjppbnRfPDE+IGNvbnN0Kj4oMCkpOwotfQotaW5saW5lIGJvb2wgdTMycmVnZXhfc2VhcmNoKGNvbnN0IHVuc2lnbmVkIGNoYXIqIHAsIAotICAgICAgICAgICAgICAgICBjb25zdCB1MzJyZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICBtYXRjaF9yZXN1bHRzPGNvbnN0IHVuc2lnbmVkIGNoYXIqPiBtOwotICAgcmV0dXJuIHJlX2RldGFpbDo6ZG9fcmVnZXhfc2VhcmNoKHAsIHArc3RkOjpzdHJsZW4oKGNvbnN0IGNoYXIqKXApLCBtLCBlLCBmbGFncywgcCwgc3RhdGljX2Nhc3Q8bXBsOjppbnRfPDE+IGNvbnN0Kj4oMCkpOwotfQotaW5saW5lIGJvb2wgdTMycmVnZXhfc2VhcmNoKGNvbnN0IHN0ZDo6c3RyaW5nJiBzLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHUzMnJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICBtYXRjaF9yZXN1bHRzPHN0ZDo6c3RyaW5nOjpjb25zdF9pdGVyYXRvcj4gbTsKLSAgIHJldHVybiByZV9kZXRhaWw6OmRvX3JlZ2V4X3NlYXJjaChzLmJlZ2luKCksIHMuZW5kKCksIG0sIGUsIGZsYWdzLCBzLmJlZ2luKCksIHN0YXRpY19jYXN0PG1wbDo6aW50XzwxPiBjb25zdCo+KDApKTsKLX0KLSNpZm5kZWYgTkROQk9PU1RfTk9fU1REX1dTVFJJTkcKLWlubGluZSBib29sIHUzMnJlZ2V4X3NlYXJjaChjb25zdCBzdGQ6OndzdHJpbmcmIHMsIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdTMycmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIG1hdGNoX3Jlc3VsdHM8c3RkOjp3c3RyaW5nOjpjb25zdF9pdGVyYXRvcj4gbTsKLSAgIHJldHVybiByZV9kZXRhaWw6OmRvX3JlZ2V4X3NlYXJjaChzLmJlZ2luKCksIHMuZW5kKCksIG0sIGUsIGZsYWdzLCBzLmJlZ2luKCksIHN0YXRpY19jYXN0PG1wbDo6aW50XzxzaXplb2Yod2NoYXJfdCk+IGNvbnN0Kj4oMCkpOwotfQotI2VuZGlmCi1pbmxpbmUgYm9vbCB1MzJyZWdleF9zZWFyY2goY29uc3QgVV9OQU1FU1BBQ0VfUVVBTElGSUVSIFVuaWNvZGVTdHJpbmcmIHMsIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdTMycmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIG1hdGNoX3Jlc3VsdHM8Y29uc3QgVUNoYXIqPiBtOwotICAgcmV0dXJuIHJlX2RldGFpbDo6ZG9fcmVnZXhfc2VhcmNoKHMuZ2V0QnVmZmVyKCksIHMuZ2V0QnVmZmVyKCkgKyBzLmxlbmd0aCgpLCBtLCBlLCBmbGFncywgcy5nZXRCdWZmZXIoKSwgc3RhdGljX2Nhc3Q8bXBsOjppbnRfPHNpemVvZih3Y2hhcl90KT4gY29uc3QqPigwKSk7Ci19Ci0KLS8vCi0vLyBvdmVybG9hZHMgZm9yIHJlZ2V4X3JlcGxhY2Ugd2l0aCB1dGYtOCBhbmQgdXRmLTE2IGRhdGEgdHlwZXM6Ci0vLwotbmFtZXNwYWNlIHJlX2RldGFpbHsKLXRlbXBsYXRlIDxjbGFzcyBJPgotaW5saW5lIHN0ZDo6cGFpcjwgbmRuYm9vc3Q6OnU4X3RvX3UzMl9pdGVyYXRvcjxJPiwgbmRuYm9vc3Q6OnU4X3RvX3UzMl9pdGVyYXRvcjxJPiA+Ci0gICBtYWtlX3V0ZjMyX3NlcShJIGksIEkgaiwgbXBsOjppbnRfPDE+IGNvbnN0KikKLXsKLSAgIHJldHVybiBzdGQ6OnBhaXI8IG5kbmJvb3N0Ojp1OF90b191MzJfaXRlcmF0b3I8ST4sIG5kbmJvb3N0Ojp1OF90b191MzJfaXRlcmF0b3I8ST4gPihuZG5ib29zdDo6dThfdG9fdTMyX2l0ZXJhdG9yPEk+KGksIGksIGopLCBuZG5ib29zdDo6dThfdG9fdTMyX2l0ZXJhdG9yPEk+KGosIGksIGopKTsKLX0KLXRlbXBsYXRlIDxjbGFzcyBJPgotaW5saW5lIHN0ZDo6cGFpcjwgbmRuYm9vc3Q6OnUxNl90b191MzJfaXRlcmF0b3I8ST4sIG5kbmJvb3N0Ojp1MTZfdG9fdTMyX2l0ZXJhdG9yPEk+ID4KLSAgIG1ha2VfdXRmMzJfc2VxKEkgaSwgSSBqLCBtcGw6OmludF88Mj4gY29uc3QqKQotewotICAgcmV0dXJuIHN0ZDo6cGFpcjwgbmRuYm9vc3Q6OnUxNl90b191MzJfaXRlcmF0b3I8ST4sIG5kbmJvb3N0Ojp1MTZfdG9fdTMyX2l0ZXJhdG9yPEk+ID4obmRuYm9vc3Q6OnUxNl90b191MzJfaXRlcmF0b3I8ST4oaSwgaSwgaiksIG5kbmJvb3N0Ojp1MTZfdG9fdTMyX2l0ZXJhdG9yPEk+KGosIGksIGopKTsKLX0KLXRlbXBsYXRlIDxjbGFzcyBJPgotaW5saW5lIHN0ZDo6cGFpcjwgSSwgSSA+Ci0gICBtYWtlX3V0ZjMyX3NlcShJIGksIEkgaiwgbXBsOjppbnRfPDQ+IGNvbnN0KikKLXsKLSAgIHJldHVybiBzdGQ6OnBhaXI8IEksIEkgPihpLCBqKTsKLX0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLWlubGluZSBzdGQ6OnBhaXI8IG5kbmJvb3N0Ojp1OF90b191MzJfaXRlcmF0b3I8Y29uc3QgY2hhclQqPiwgbmRuYm9vc3Q6OnU4X3RvX3UzMl9pdGVyYXRvcjxjb25zdCBjaGFyVCo+ID4KLSAgIG1ha2VfdXRmMzJfc2VxKGNvbnN0IGNoYXJUKiBwLCBtcGw6OmludF88MT4gY29uc3QqKQotewotICAgc3RkOjpzaXplX3QgbGVuID0gc3RkOjpzdHJsZW4oKGNvbnN0IGNoYXIqKXApOwotICAgcmV0dXJuIHN0ZDo6cGFpcjwgbmRuYm9vc3Q6OnU4X3RvX3UzMl9pdGVyYXRvcjxjb25zdCBjaGFyVCo+LCBuZG5ib29zdDo6dThfdG9fdTMyX2l0ZXJhdG9yPGNvbnN0IGNoYXJUKj4gPihuZG5ib29zdDo6dThfdG9fdTMyX2l0ZXJhdG9yPGNvbnN0IGNoYXJUKj4ocCwgcCwgcCtsZW4pLCBuZG5ib29zdDo6dThfdG9fdTMyX2l0ZXJhdG9yPGNvbnN0IGNoYXJUKj4ocCtsZW4sIHAsIHArbGVuKSk7Ci19Ci10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci1pbmxpbmUgc3RkOjpwYWlyPCBuZG5ib29zdDo6dTE2X3RvX3UzMl9pdGVyYXRvcjxjb25zdCBjaGFyVCo+LCBuZG5ib29zdDo6dTE2X3RvX3UzMl9pdGVyYXRvcjxjb25zdCBjaGFyVCo+ID4KLSAgIG1ha2VfdXRmMzJfc2VxKGNvbnN0IGNoYXJUKiBwLCBtcGw6OmludF88Mj4gY29uc3QqKQotewotICAgc3RkOjpzaXplX3QgbGVuID0gdV9zdHJsZW4oKGNvbnN0IFVDaGFyKilwKTsKLSAgIHJldHVybiBzdGQ6OnBhaXI8IG5kbmJvb3N0Ojp1MTZfdG9fdTMyX2l0ZXJhdG9yPGNvbnN0IGNoYXJUKj4sIG5kbmJvb3N0Ojp1MTZfdG9fdTMyX2l0ZXJhdG9yPGNvbnN0IGNoYXJUKj4gPihuZG5ib29zdDo6dTE2X3RvX3UzMl9pdGVyYXRvcjxjb25zdCBjaGFyVCo+KHAsIHAsIHAgKyBsZW4pLCBuZG5ib29zdDo6dTE2X3RvX3UzMl9pdGVyYXRvcjxjb25zdCBjaGFyVCo+KHArbGVuLCBwLCBwICsgbGVuKSk7Ci19Ci10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci1pbmxpbmUgc3RkOjpwYWlyPCBjb25zdCBjaGFyVCosIGNvbnN0IGNoYXJUKiA+Ci0gICBtYWtlX3V0ZjMyX3NlcShjb25zdCBjaGFyVCogcCwgbXBsOjppbnRfPDQ+IGNvbnN0KikKLXsKLSAgIHJldHVybiBzdGQ6OnBhaXI8IGNvbnN0IGNoYXJUKiwgY29uc3QgY2hhclQqID4ocCwgcCtpY3VfcmVnZXhfdHJhaXRzOjpsZW5ndGgoKFVDaGFyMzIgY29uc3QqKXApKTsKLX0KLXRlbXBsYXRlIDxjbGFzcyBPdXRwdXRJdGVyYXRvcj4KLWlubGluZSBPdXRwdXRJdGVyYXRvciBtYWtlX3V0ZjMyX291dChPdXRwdXRJdGVyYXRvciBvLCBtcGw6OmludF88ND4gY29uc3QqKQotewotICAgcmV0dXJuIG87Ci19Ci10ZW1wbGF0ZSA8Y2xhc3MgT3V0cHV0SXRlcmF0b3I+Ci1pbmxpbmUgdXRmMTZfb3V0cHV0X2l0ZXJhdG9yPE91dHB1dEl0ZXJhdG9yPiBtYWtlX3V0ZjMyX291dChPdXRwdXRJdGVyYXRvciBvLCBtcGw6OmludF88Mj4gY29uc3QqKQotewotICAgcmV0dXJuIG87Ci19Ci10ZW1wbGF0ZSA8Y2xhc3MgT3V0cHV0SXRlcmF0b3I+Ci1pbmxpbmUgdXRmOF9vdXRwdXRfaXRlcmF0b3I8T3V0cHV0SXRlcmF0b3I+IG1ha2VfdXRmMzJfb3V0KE91dHB1dEl0ZXJhdG9yIG8sIG1wbDo6aW50XzwxPiBjb25zdCopCi17Ci0gICByZXR1cm4gbzsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIE91dHB1dEl0ZXJhdG9yLCBjbGFzcyBJMSwgY2xhc3MgSTI+Ci1PdXRwdXRJdGVyYXRvciBkb19yZWdleF9yZXBsYWNlKE91dHB1dEl0ZXJhdG9yIG91dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6cGFpcjxJMSwgSTE+IGNvbnN0JiBpbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHUzMnJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6cGFpcjxJMiwgSTI+JiBmbXQsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCi17Ci0gICAvLyB1bmZvcnR1bmF0ZWx5IHdlIGhhdmUgdG8gY29weSB0aGUgZm9ybWF0IHN0cmluZyBpbiBvcmRlciB0byBwYXNzIGluIG9ud2FyZDoKLSAgIHN0ZDo6dmVjdG9yPFVDaGFyMzI+IGY7Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1RFTVBMQVRFRF9JVEVSQVRPUl9DT05TVFJVQ1RPUlMKLSAgIGYuYXNzaWduKGZtdC5maXJzdCwgZm10LnNlY29uZCk7Ci0jZWxzZQotICAgZi5jbGVhcigpOwotICAgSTIgcG9zID0gZm10LmZpcnN0OwotICAgd2hpbGUocG9zICE9IGZtdC5zZWNvbmQpCi0gICAgICBmLnB1c2hfYmFjaygqcG9zKyspOwotI2VuZGlmCi0gICAKLSAgIHJlZ2V4X2l0ZXJhdG9yPEkxLCBVQ2hhcjMyLCBpY3VfcmVnZXhfdHJhaXRzPiBpKGluLmZpcnN0LCBpbi5zZWNvbmQsIGUsIGZsYWdzKTsKLSAgIHJlZ2V4X2l0ZXJhdG9yPEkxLCBVQ2hhcjMyLCBpY3VfcmVnZXhfdHJhaXRzPiBqOwotICAgaWYoaSA9PSBqKQotICAgewotICAgICAgaWYoIShmbGFncyAmIHJlZ2V4X2NvbnN0YW50czo6Zm9ybWF0X25vX2NvcHkpKQotICAgICAgICAgb3V0ID0gcmVfZGV0YWlsOjpjb3B5KGluLmZpcnN0LCBpbi5zZWNvbmQsIG91dCk7Ci0gICB9Ci0gICBlbHNlCi0gICB7Ci0gICAgICBJMSBsYXN0X20gPSBpbi5maXJzdDsKLSAgICAgIHdoaWxlKGkgIT0gaikKLSAgICAgIHsKLSAgICAgICAgIGlmKCEoZmxhZ3MgJiByZWdleF9jb25zdGFudHM6OmZvcm1hdF9ub19jb3B5KSkKLSAgICAgICAgICAgIG91dCA9IHJlX2RldGFpbDo6Y29weShpLT5wcmVmaXgoKS5maXJzdCwgaS0+cHJlZml4KCkuc2Vjb25kLCBvdXQpOyAKLSAgICAgICAgIGlmKGYuc2l6ZSgpKQotICAgICAgICAgICAgb3V0ID0gOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpyZWdleF9mb3JtYXRfaW1wKG91dCwgKmksICYqZi5iZWdpbigpLCAmKmYuYmVnaW4oKSArIGYuc2l6ZSgpLCBmbGFncywgZS5nZXRfdHJhaXRzKCkpOwotICAgICAgICAgZWxzZQotICAgICAgICAgICAgb3V0ID0gOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpyZWdleF9mb3JtYXRfaW1wKG91dCwgKmksIHN0YXRpY19jYXN0PFVDaGFyMzIgY29uc3QqPigwKSwgc3RhdGljX2Nhc3Q8VUNoYXIzMiBjb25zdCo+KDApLCBmbGFncywgZS5nZXRfdHJhaXRzKCkpOwotICAgICAgICAgbGFzdF9tID0gKCppKVswXS5zZWNvbmQ7Ci0gICAgICAgICBpZihmbGFncyAmIHJlZ2V4X2NvbnN0YW50czo6Zm9ybWF0X2ZpcnN0X29ubHkpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICsraTsKLSAgICAgIH0KLSAgICAgIGlmKCEoZmxhZ3MgJiByZWdleF9jb25zdGFudHM6OmZvcm1hdF9ub19jb3B5KSkKLSAgICAgICAgIG91dCA9IHJlX2RldGFpbDo6Y29weShsYXN0X20sIGluLnNlY29uZCwgb3V0KTsKLSAgIH0KLSAgIHJldHVybiBvdXQ7Ci19Ci10ZW1wbGF0ZSA8Y2xhc3MgQmFzZUl0ZXJhdG9yPgotaW5saW5lIGNvbnN0IEJhc2VJdGVyYXRvciYgZXh0cmFjdF9vdXRwdXRfYmFzZShjb25zdCBCYXNlSXRlcmF0b3ImIGIpCi17Ci0gICByZXR1cm4gYjsKLX0KLXRlbXBsYXRlIDxjbGFzcyBCYXNlSXRlcmF0b3I+Ci1pbmxpbmUgQmFzZUl0ZXJhdG9yIGV4dHJhY3Rfb3V0cHV0X2Jhc2UoY29uc3QgdXRmOF9vdXRwdXRfaXRlcmF0b3I8QmFzZUl0ZXJhdG9yPiYgYikKLXsKLSAgIHJldHVybiBiLmJhc2UoKTsKLX0KLXRlbXBsYXRlIDxjbGFzcyBCYXNlSXRlcmF0b3I+Ci1pbmxpbmUgQmFzZUl0ZXJhdG9yIGV4dHJhY3Rfb3V0cHV0X2Jhc2UoY29uc3QgdXRmMTZfb3V0cHV0X2l0ZXJhdG9yPEJhc2VJdGVyYXRvcj4mIGIpCi17Ci0gICByZXR1cm4gYi5iYXNlKCk7Ci19Ci19ICAvLyByZV9kZXRhaWwKLQotdGVtcGxhdGUgPGNsYXNzIE91dHB1dEl0ZXJhdG9yLCBjbGFzcyBCaWRpcmVjdGlvbmFsSXRlcmF0b3IsIGNsYXNzIGNoYXJUPgotaW5saW5lIE91dHB1dEl0ZXJhdG9yIHUzMnJlZ2V4X3JlcGxhY2UoT3V0cHV0SXRlcmF0b3Igb3V0LAotICAgICAgICAgICAgICAgICAgICAgICAgIEJpZGlyZWN0aW9uYWxJdGVyYXRvciBmaXJzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBCaWRpcmVjdGlvbmFsSXRlcmF0b3IgbGFzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1MzJyZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhclQqIGZtdCwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZV9kZXRhaWw6OmV4dHJhY3Rfb3V0cHV0X2Jhc2UKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9IDEzMDApCi0gICA8T3V0cHV0SXRlcmF0b3I+Ci0jZW5kaWYKLSAgICAoCi0gICAgICByZV9kZXRhaWw6OmRvX3JlZ2V4X3JlcGxhY2UoCi0gICAgICAgICByZV9kZXRhaWw6Om1ha2VfdXRmMzJfb3V0KG91dCwgc3RhdGljX2Nhc3Q8bXBsOjppbnRfPHNpemVvZigqZmlyc3QpPiBjb25zdCo+KDApKSwKLSAgICAgICAgIHJlX2RldGFpbDo6bWFrZV91dGYzMl9zZXEoZmlyc3QsIGxhc3QsIHN0YXRpY19jYXN0PG1wbDo6aW50XzxzaXplb2YoKmZpcnN0KT4gY29uc3QqPigwKSksCi0gICAgICAgICBlLAotICAgICAgICAgcmVfZGV0YWlsOjptYWtlX3V0ZjMyX3NlcShmbXQsIHN0YXRpY19jYXN0PG1wbDo6aW50XzxzaXplb2YoKmZtdCk+IGNvbnN0Kj4oMCkpLAotICAgICAgICAgZmxhZ3MpCi0gICAgICApOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgT3V0cHV0SXRlcmF0b3IsIGNsYXNzIEl0ZXJhdG9yLCBjbGFzcyBjaGFyVD4KLWlubGluZSBPdXRwdXRJdGVyYXRvciB1MzJyZWdleF9yZXBsYWNlKE91dHB1dEl0ZXJhdG9yIG91dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRvciBmaXJzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRvciBsYXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHUzMnJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVD4mIGZtdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlX2RldGFpbDo6ZXh0cmFjdF9vdXRwdXRfYmFzZQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMCkKLSAgIDxPdXRwdXRJdGVyYXRvcj4KLSNlbmRpZgotICAgICgKLSAgICAgIHJlX2RldGFpbDo6ZG9fcmVnZXhfcmVwbGFjZSgKLSAgICAgICAgIHJlX2RldGFpbDo6bWFrZV91dGYzMl9vdXQob3V0LCBzdGF0aWNfY2FzdDxtcGw6OmludF88c2l6ZW9mKCpmaXJzdCk+IGNvbnN0Kj4oMCkpLAotICAgICAgICAgcmVfZGV0YWlsOjptYWtlX3V0ZjMyX3NlcShmaXJzdCwgbGFzdCwgc3RhdGljX2Nhc3Q8bXBsOjppbnRfPHNpemVvZigqZmlyc3QpPiBjb25zdCo+KDApKSwKLSAgICAgICAgIGUsCi0gICAgICAgICByZV9kZXRhaWw6Om1ha2VfdXRmMzJfc2VxKGZtdC5iZWdpbigpLCBmbXQuZW5kKCksIHN0YXRpY19jYXN0PG1wbDo6aW50XzxzaXplb2YoY2hhclQpPiBjb25zdCo+KDApKSwKLSAgICAgICAgIGZsYWdzKQotICAgICAgKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIE91dHB1dEl0ZXJhdG9yLCBjbGFzcyBJdGVyYXRvcj4KLWlubGluZSBPdXRwdXRJdGVyYXRvciB1MzJyZWdleF9yZXBsYWNlKE91dHB1dEl0ZXJhdG9yIG91dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRvciBmaXJzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRvciBsYXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHUzMnJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBVX05BTUVTUEFDRV9RVUFMSUZJRVIgVW5pY29kZVN0cmluZyYgZm10LAotICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVfZGV0YWlsOjpleHRyYWN0X291dHB1dF9iYXNlCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PSAxMzAwKQotICAgPE91dHB1dEl0ZXJhdG9yPgotI2VuZGlmCi0gICAoCi0gICAgICByZV9kZXRhaWw6OmRvX3JlZ2V4X3JlcGxhY2UoCi0gICAgICAgICByZV9kZXRhaWw6Om1ha2VfdXRmMzJfb3V0KG91dCwgc3RhdGljX2Nhc3Q8bXBsOjppbnRfPHNpemVvZigqZmlyc3QpPiBjb25zdCo+KDApKSwKLSAgICAgICAgIHJlX2RldGFpbDo6bWFrZV91dGYzMl9zZXEoZmlyc3QsIGxhc3QsIHN0YXRpY19jYXN0PG1wbDo6aW50XzxzaXplb2YoKmZpcnN0KT4gY29uc3QqPigwKSksCi0gICAgICAgICBlLAotICAgICAgICAgcmVfZGV0YWlsOjptYWtlX3V0ZjMyX3NlcShmbXQuZ2V0QnVmZmVyKCksIGZtdC5nZXRCdWZmZXIoKSArIGZtdC5sZW5ndGgoKSwgc3RhdGljX2Nhc3Q8bXBsOjppbnRfPDI+IGNvbnN0Kj4oMCkpLAotICAgICAgICAgZmxhZ3MpCi0gICAgICApOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci1zdGQ6OmJhc2ljX3N0cmluZzxjaGFyVD4gdTMycmVnZXhfcmVwbGFjZShjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVD4mIHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdTMycmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXJUKiBmbXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJUPiByZXN1bHQ7Ci0gICByZV9kZXRhaWw6OnN0cmluZ19vdXRfaXRlcmF0b3I8c3RkOjpiYXNpY19zdHJpbmc8Y2hhclQ+ID4gaShyZXN1bHQpOwotICAgdTMycmVnZXhfcmVwbGFjZShpLCBzLmJlZ2luKCksIHMuZW5kKCksIGUsIGZtdCwgZmxhZ3MpOwotICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQ+IHUzMnJlZ2V4X3JlcGxhY2UoY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQ+JiBzLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHUzMnJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVD4mIGZtdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQ+IHJlc3VsdDsKLSAgIHJlX2RldGFpbDo6c3RyaW5nX291dF9pdGVyYXRvcjxzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVD4gPiBpKHJlc3VsdCk7Ci0gICB1MzJyZWdleF9yZXBsYWNlKGksIHMuYmVnaW4oKSwgcy5lbmQoKSwgZSwgZm10LmNfc3RyKCksIGZsYWdzKTsKLSAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLW5hbWVzcGFjZSByZV9kZXRhaWx7Ci0KLWNsYXNzIHVuaWNvZGVfc3RyaW5nX291dF9pdGVyYXRvcgotewotICAgVV9OQU1FU1BBQ0VfUVVBTElGSUVSIFVuaWNvZGVTdHJpbmcqIG91dDsKLXB1YmxpYzoKLSAgIHVuaWNvZGVfc3RyaW5nX291dF9pdGVyYXRvcihVX05BTUVTUEFDRV9RVUFMSUZJRVIgVW5pY29kZVN0cmluZyYgcykgOiBvdXQoJnMpIHt9Ci0gICB1bmljb2RlX3N0cmluZ19vdXRfaXRlcmF0b3ImIG9wZXJhdG9yKysoKSB7IHJldHVybiAqdGhpczsgfQotICAgdW5pY29kZV9zdHJpbmdfb3V0X2l0ZXJhdG9yJiBvcGVyYXRvcisrKGludCkgeyByZXR1cm4gKnRoaXM7IH0KLSAgIHVuaWNvZGVfc3RyaW5nX291dF9pdGVyYXRvciYgb3BlcmF0b3IqKCkgeyByZXR1cm4gKnRoaXM7IH0KLSAgIHVuaWNvZGVfc3RyaW5nX291dF9pdGVyYXRvciYgb3BlcmF0b3I9KFVDaGFyIHYpIAotICAgeyAKLSAgICAgICpvdXQgKz0gdjsgCi0gICAgICByZXR1cm4gKnRoaXM7IAotICAgfQotICAgdHlwZWRlZiBzdGQ6OnB0cmRpZmZfdCBkaWZmZXJlbmNlX3R5cGU7Ci0gICB0eXBlZGVmIFVDaGFyIHZhbHVlX3R5cGU7Ci0gICB0eXBlZGVmIHZhbHVlX3R5cGUqIHBvaW50ZXI7Ci0gICB0eXBlZGVmIHZhbHVlX3R5cGUmIHJlZmVyZW5jZTsKLSAgIHR5cGVkZWYgc3RkOjpvdXRwdXRfaXRlcmF0b3JfdGFnIGl0ZXJhdG9yX2NhdGVnb3J5OwotfTsKLQotfQotCi1pbmxpbmUgVV9OQU1FU1BBQ0VfUVVBTElGSUVSIFVuaWNvZGVTdHJpbmcgdTMycmVnZXhfcmVwbGFjZShjb25zdCBVX05BTUVTUEFDRV9RVUFMSUZJRVIgVW5pY29kZVN0cmluZyYgcywKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1MzJyZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVUNoYXIqIGZtdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgVV9OQU1FU1BBQ0VfUVVBTElGSUVSIFVuaWNvZGVTdHJpbmcgcmVzdWx0OwotICAgcmVfZGV0YWlsOjp1bmljb2RlX3N0cmluZ19vdXRfaXRlcmF0b3IgaShyZXN1bHQpOwotICAgdTMycmVnZXhfcmVwbGFjZShpLCBzLmdldEJ1ZmZlcigpLCBzLmdldEJ1ZmZlcigpK3MubGVuZ3RoKCksIGUsIGZtdCwgZmxhZ3MpOwotICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotaW5saW5lIFVfTkFNRVNQQUNFX1FVQUxJRklFUiBVbmljb2RlU3RyaW5nIHUzMnJlZ2V4X3JlcGxhY2UoY29uc3QgVV9OQU1FU1BBQ0VfUVVBTElGSUVSIFVuaWNvZGVTdHJpbmcmIHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdTMycmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFVfTkFNRVNQQUNFX1FVQUxJRklFUiBVbmljb2RlU3RyaW5nJiBmbXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIFVfTkFNRVNQQUNFX1FVQUxJRklFUiBVbmljb2RlU3RyaW5nIHJlc3VsdDsKLSAgIHJlX2RldGFpbDo6dW5pY29kZV9zdHJpbmdfb3V0X2l0ZXJhdG9yIGkocmVzdWx0KTsKLSAgIHJlX2RldGFpbDo6ZG9fcmVnZXhfcmVwbGFjZSgKLSAgICAgICAgIHJlX2RldGFpbDo6bWFrZV91dGYzMl9vdXQoaSwgc3RhdGljX2Nhc3Q8bXBsOjppbnRfPDI+IGNvbnN0Kj4oMCkpLAotICAgICAgICAgcmVfZGV0YWlsOjptYWtlX3V0ZjMyX3NlcShzLmdldEJ1ZmZlcigpLCBzLmdldEJ1ZmZlcigpK3MubGVuZ3RoKCksIHN0YXRpY19jYXN0PG1wbDo6aW50XzwyPiBjb25zdCo+KDApKSwKLSAgICAgICAgIGUsCi0gICAgICAgICByZV9kZXRhaWw6Om1ha2VfdXRmMzJfc2VxKGZtdC5nZXRCdWZmZXIoKSwgZm10LmdldEJ1ZmZlcigpICsgZm10Lmxlbmd0aCgpLCBzdGF0aWNfY2FzdDxtcGw6OmludF88Mj4gY29uc3QqPigwKSksCi0gICAgICAgICBmbGFncyk7Ci0gICByZXR1cm4gcmVzdWx0OwotfQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdC4KLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyAocG9wKQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC92NC91MzJyZWdleF9pdGVyYXRvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvdjQvdTMycmVnZXhfdG9rZW5faXRlcmF0b3IuaHBwPgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvcGF0dGVybl9leGNlcHQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWdleC9wYXR0ZXJuX2V4Y2VwdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdlYzBkNDUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC9wYXR0ZXJuX2V4Y2VwdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDAgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMgotICogSm9obiBNYWRkb2NrCi0gKgotICogVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0gKiBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLSAqIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKi8KLSAKLSAvKgotICAqICAgTE9DQVRJT046ICAgIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLSAgKiAgIEZJTEUgICAgICAgICBwYXR0ZXJuX2V4Y2VwdC5ocHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IERlY2xhcmVzIHBhdHRlcm4tbWF0Y2hpbmcgZXhjZXB0aW9uIGNsYXNzZXMuCi0gICovCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVfUEFUX0VYQ0VQVF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkVfUEFUX0VYQ0VQVF9IUFAKLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9DT05GSUdfSFBQCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvY29uZmlnLmhwcD4KLSNlbmRpZgotCi0jaW5jbHVkZSA8c3RkZXhjZXB0PgotI2luY2x1ZGUgPGNzdGRkZWY+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvdjQvZXJyb3JfdHlwZS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdHsKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1BSRUZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZSA6IDQyNzUpCi0jZW5kaWYKLWNsYXNzIE5ETkJPT1NUX1JFR0VYX0RFQ0wgcmVnZXhfZXJyb3IgOiBwdWJsaWMgc3RkOjpydW50aW1lX2Vycm9yCi17Ci1wdWJsaWM6Ci0gICBleHBsaWNpdCByZWdleF9lcnJvcihjb25zdCBzdGQ6OnN0cmluZyYgcywgcmVnZXhfY29uc3RhbnRzOjplcnJvcl90eXBlIGVyciA9IHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfdW5rbm93biwgc3RkOjpwdHJkaWZmX3QgcG9zID0gMCk7Ci0gICBleHBsaWNpdCByZWdleF9lcnJvcihyZWdleF9jb25zdGFudHM6OmVycm9yX3R5cGUgZXJyKTsKLSAgIH5yZWdleF9lcnJvcigpIHRocm93KCk7Ci0gICByZWdleF9jb25zdGFudHM6OmVycm9yX3R5cGUgY29kZSgpY29uc3QKLSAgIHsgcmV0dXJuIG1fZXJyb3JfY29kZTsgfQotICAgc3RkOjpwdHJkaWZmX3QgcG9zaXRpb24oKWNvbnN0Ci0gICB7IHJldHVybiBtX3Bvc2l0aW9uOyB9Ci0gICB2b2lkIHJhaXNlKCljb25zdDsKLXByaXZhdGU6Ci0gICByZWdleF9jb25zdGFudHM6OmVycm9yX3R5cGUgbV9lcnJvcl9jb2RlOwotICAgc3RkOjpwdHJkaWZmX3QgbV9wb3NpdGlvbjsKLX07Ci0KLXR5cGVkZWYgcmVnZXhfZXJyb3IgYmFkX3BhdHRlcm47Ci10eXBlZGVmIHJlZ2V4X2Vycm9yIGJhZF9leHByZXNzaW9uOwotCi1uYW1lc3BhY2UgcmVfZGV0YWlsewotCi1ORE5CT09TVF9SRUdFWF9ERUNMIHZvaWQgTkROQk9PU1RfUkVHRVhfQ0FMTCByYWlzZV9ydW50aW1lX2Vycm9yKGNvbnN0IHN0ZDo6cnVudGltZV9lcnJvciYgZXgpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgdHJhaXRzPgotdm9pZCByYWlzZV9lcnJvcihjb25zdCB0cmFpdHMmIHQsIHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfdHlwZSBjb2RlKQotewotICAgKHZvaWQpdDsgIC8vIHdhcm5pbmcgc3VwcHJlc3Npb24KLSAgIHN0ZDo6cnVudGltZV9lcnJvciBlKHQuZXJyb3Jfc3RyaW5nKGNvZGUpKTsKLSAgIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6cmFpc2VfcnVudGltZV9lcnJvcihlKTsKLX0KLQotfQotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfU1VGRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZgotCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC9wZW5kaW5nL29iamVjdF9jYWNoZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3BlbmRpbmcvb2JqZWN0X2NhY2hlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDBhMDg4Yy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3BlbmRpbmcvb2JqZWN0X2NhY2hlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE2NSArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAoYykgMjAwNAotICogSm9obiBNYWRkb2NrCi0gKgotICogVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0gKiBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLSAqIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKi8KLQotIC8qCi0gICogICBMT0NBVElPTjogICAgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotICAqICAgRklMRSAgICAgICAgIG9iamVjdF9jYWNoZS5ocHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IEltcGxlbWVudHMgYSBnZW5lcmljIG9iamVjdCBjYWNoZS4KLSAgKi8KLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9PQkpFQ1RfQ0FDSEVfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JFR0VYX09CSkVDVF9DQUNIRV9IUFAKLQotI2luY2x1ZGUgPG1hcD4KLSNpbmNsdWRlIDxsaXN0PgotI2luY2x1ZGUgPHN0ZGV4Y2VwdD4KLSNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zaGFyZWRfcHRyLmhwcD4KLSNpZmRlZiBORE5CT09TVF9IQVNfVEhSRUFEUwotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3BlbmRpbmcvc3RhdGljX211dGV4LmhwcD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci0KLXRlbXBsYXRlIDxjbGFzcyBLZXksIGNsYXNzIE9iamVjdD4KLWNsYXNzIG9iamVjdF9jYWNoZQotewotcHVibGljOgotICAgdHlwZWRlZiBzdGQ6OnBhaXI8IDo6bmRuYm9vc3Q6OnNoYXJlZF9wdHI8T2JqZWN0IGNvbnN0PiwgS2V5IGNvbnN0Kj4gdmFsdWVfdHlwZTsKLSAgIHR5cGVkZWYgc3RkOjpsaXN0PHZhbHVlX3R5cGU+IGxpc3RfdHlwZTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgbGlzdF90eXBlOjppdGVyYXRvciBsaXN0X2l0ZXJhdG9yOwotICAgdHlwZWRlZiBzdGQ6Om1hcDxLZXksIGxpc3RfaXRlcmF0b3I+IG1hcF90eXBlOwotICAgdHlwZWRlZiB0eXBlbmFtZSBtYXBfdHlwZTo6aXRlcmF0b3IgbWFwX2l0ZXJhdG9yOwotICAgdHlwZWRlZiB0eXBlbmFtZSBsaXN0X3R5cGU6OnNpemVfdHlwZSBzaXplX3R5cGU7Ci0gICBzdGF0aWMgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8T2JqZWN0IGNvbnN0PiBnZXQoY29uc3QgS2V5JiBrLCBzaXplX3R5cGUgbF9tYXhfY2FjaGVfc2l6ZSk7Ci0KLXByaXZhdGU6Ci0gICBzdGF0aWMgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8T2JqZWN0IGNvbnN0PiBkb19nZXQoY29uc3QgS2V5JiBrLCBzaXplX3R5cGUgbF9tYXhfY2FjaGVfc2l6ZSk7Ci0KLSAgIHN0cnVjdCBkYXRhCi0gICB7Ci0gICAgICBsaXN0X3R5cGUgICBjb250OwotICAgICAgbWFwX3R5cGUgICAgaW5kZXg7Ci0gICB9OwotCi0gICAvLyBOZWVkZWQgYnkgY29tcGlsZXJzIG5vdCBpbXBsZW1lbnRpbmcgdGhlIHJlc29sdXRpb24gdG8gRFI0NS4gRm9yIHJlZmVyZW5jZSwKLSAgIC8vIHNlZSBodHRwOi8vd3d3Lm9wZW4tc3RkLm9yZy9KVEMxL1NDMjIvV0cyMS9kb2NzL2N3Z19kZWZlY3RzLmh0bWwjNDUuCi0gICBmcmllbmQgc3RydWN0IGRhdGE7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgS2V5LCBjbGFzcyBPYmplY3Q+Ci1uZG5ib29zdDo6c2hhcmVkX3B0cjxPYmplY3QgY29uc3Q+IG9iamVjdF9jYWNoZTxLZXksIE9iamVjdD46OmdldChjb25zdCBLZXkmIGssIHNpemVfdHlwZSBsX21heF9jYWNoZV9zaXplKQotewotI2lmZGVmIE5ETkJPT1NUX0hBU19USFJFQURTCi0gICBzdGF0aWMgbmRuYm9vc3Q6OnN0YXRpY19tdXRleCBtdXQgPSBORE5CT09TVF9TVEFUSUNfTVVURVhfSU5JVDsKLQotICAgbmRuYm9vc3Q6OnN0YXRpY19tdXRleDo6c2NvcGVkX2xvY2sgbChtdXQpOwotICAgaWYobCkKLSAgIHsKLSAgICAgIHJldHVybiBkb19nZXQoaywgbF9tYXhfY2FjaGVfc2l6ZSk7Ci0gICB9Ci0gICAvLwotICAgLy8gd2hhdCBkbyB3ZSBkbyBpZiB0aGUgbG9jayBmYWlscz8KLSAgIC8vIGZvciBub3cganVzdCB0aHJvdywgYnV0IHdlIHNob3VsZCBuZXZlciByZWFsbHkgZ2V0IGhlcmUuLi4KLSAgIC8vCi0gICA6Om5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oc3RkOjpydW50aW1lX2Vycm9yKCJFcnJvciBpbiB0aHJlYWQgc2FmZXR5IGNvZGU6IGNvdWxkIG5vdCBhY3F1aXJlIGEgbG9jayIpKTsKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1VOUkVBQ0hBQkxFX1JFVFVSTl9ERVRFQ1RJT04pIHx8IGRlZmluZWQoTkROQk9PU1RfTk9fRVhDRVBUSU9OUykKLSAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjxPYmplY3Q+KCk7Ci0jZW5kaWYKLSNlbHNlCi0gICByZXR1cm4gZG9fZ2V0KGssIGxfbWF4X2NhY2hlX3NpemUpOwotI2VuZGlmCi19Ci0KLXRlbXBsYXRlIDxjbGFzcyBLZXksIGNsYXNzIE9iamVjdD4KLW5kbmJvb3N0OjpzaGFyZWRfcHRyPE9iamVjdCBjb25zdD4gb2JqZWN0X2NhY2hlPEtleSwgT2JqZWN0Pjo6ZG9fZ2V0KGNvbnN0IEtleSYgaywgc2l6ZV90eXBlIGxfbWF4X2NhY2hlX3NpemUpCi17Ci0gICB0eXBlZGVmIHR5cGVuYW1lIG9iamVjdF9jYWNoZTxLZXksIE9iamVjdD46OmRhdGEgb2JqZWN0X2RhdGE7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIG1hcF90eXBlOjpzaXplX3R5cGUgbWFwX3NpemVfdHlwZTsKLSAgIHN0YXRpYyBvYmplY3RfZGF0YSBzX2RhdGE7Ci0KLSAgIC8vCi0gICAvLyBzZWUgaWYgdGhlIG9iamVjdCBpcyBhbHJlYWR5IGluIHRoZSBjYWNoZToKLSAgIC8vCi0gICBtYXBfaXRlcmF0b3IgbXBvcyA9IHNfZGF0YS5pbmRleC5maW5kKGspOwotICAgaWYobXBvcyAhPSBzX2RhdGEuaW5kZXguZW5kKCkpCi0gICB7Ci0gICAgICAvLwotICAgICAgLy8gRXVyZWthISAKLSAgICAgIC8vIFdlIGhhdmUgYSBjYWNoZWQgaXRlbSwgYnVtcCBpdCB1cCB0aGUgbGlzdCBhbmQgcmV0dXJuIGl0OgotICAgICAgLy8KLSAgICAgIGlmKC0tKHNfZGF0YS5jb250LmVuZCgpKSAhPSBtcG9zLT5zZWNvbmQpCi0gICAgICB7Ci0gICAgICAgICAvLyBzcGxpY2Ugb3V0IHRoZSBpdGVtIHdlIHdhbnQgdG8gbW92ZToKLSAgICAgICAgIGxpc3RfdHlwZSB0ZW1wOwotICAgICAgICAgdGVtcC5zcGxpY2UodGVtcC5lbmQoKSwgc19kYXRhLmNvbnQsIG1wb3MtPnNlY29uZCk7Ci0gICAgICAgICAvLyBhbmQgbm93IHBsYWNlIGl0IGF0IHRoZSBlbmQgb2YgdGhlIGxpc3Q6Ci0gICAgICAgICBzX2RhdGEuY29udC5zcGxpY2Uoc19kYXRhLmNvbnQuZW5kKCksIHRlbXAsIHRlbXAuYmVnaW4oKSk7Ci0gICAgICAgICBORE5CT09TVF9BU1NFUlQoKihzX2RhdGEuY29udC5iYWNrKCkuc2Vjb25kKSA9PSBrKTsKLSAgICAgICAgIC8vIHVwZGF0ZSBpbmRleCB3aXRoIG5ldyBwb3NpdGlvbjoKLSAgICAgICAgIG1wb3MtPnNlY29uZCA9IC0tKHNfZGF0YS5jb250LmVuZCgpKTsKLSAgICAgICAgIE5ETkJPT1NUX0FTU0VSVCgmKG1wb3MtPmZpcnN0KSA9PSBtcG9zLT5zZWNvbmQtPnNlY29uZCk7Ci0gICAgICAgICBORE5CT09TVF9BU1NFUlQoJihtcG9zLT5maXJzdCkgPT0gc19kYXRhLmNvbnQuYmFjaygpLnNlY29uZCk7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gc19kYXRhLmNvbnQuYmFjaygpLmZpcnN0OwotICAgfQotICAgLy8KLSAgIC8vIGlmIHdlIGdldCBoZXJlIHRoZW4gdGhlIGl0ZW0gaXMgbm90IGluIHRoZSBjYWNoZSwKLSAgIC8vIHNvIGNyZWF0ZSBpdDoKLSAgIC8vCi0gICBuZG5ib29zdDo6c2hhcmVkX3B0cjxPYmplY3QgY29uc3Q+IHJlc3VsdChuZXcgT2JqZWN0KGspKTsKLSAgIC8vCi0gICAvLyBBZGQgaXQgdG8gdGhlIGxpc3QsIGFuZCBpbmRleCBpdDoKLSAgIC8vCi0gICBzX2RhdGEuY29udC5wdXNoX2JhY2sodmFsdWVfdHlwZShyZXN1bHQsIHN0YXRpY19jYXN0PEtleSBjb25zdCo+KDApKSk7Ci0gICBzX2RhdGEuaW5kZXguaW5zZXJ0KHN0ZDo6bWFrZV9wYWlyKGssIC0tKHNfZGF0YS5jb250LmVuZCgpKSkpOwotICAgc19kYXRhLmNvbnQuYmFjaygpLnNlY29uZCA9ICYoc19kYXRhLmluZGV4LmZpbmQoayktPmZpcnN0KTsKLSAgIG1hcF9zaXplX3R5cGUgcyA9IHNfZGF0YS5pbmRleC5zaXplKCk7Ci0gICBORE5CT09TVF9BU1NFUlQoc19kYXRhLmluZGV4W2tdLT5maXJzdC5nZXQoKSA9PSByZXN1bHQuZ2V0KCkpOwotICAgTkROQk9PU1RfQVNTRVJUKCYoc19kYXRhLmluZGV4LmZpbmQoayktPmZpcnN0KSA9PSBzX2RhdGEuY29udC5iYWNrKCkuc2Vjb25kKTsKLSAgIE5ETkJPT1NUX0FTU0VSVChzX2RhdGEuaW5kZXguZmluZChrKS0+Zmlyc3QgPT0gayk7Ci0gICBpZihzID4gbF9tYXhfY2FjaGVfc2l6ZSkKLSAgIHsKLSAgICAgIC8vCi0gICAgICAvLyBXZSBoYXZlIHRvbyBtYW55IGl0ZW1zIGluIHRoZSBsaXN0LCBzbyB3ZSBuZWVkIHRvIHN0YXJ0Ci0gICAgICAvLyBwb3BwaW5nIHRoZW0gb2ZmIHRoZSBiYWNrIG9mIHRoZSBsaXN0LCBidXQgb25seSBpZiB0aGV5J3JlCi0gICAgICAvLyBiZWluZyBoZWxkIHVuaXF1ZWx5IGJ5IHVzOgotICAgICAgLy8KLSAgICAgIGxpc3RfaXRlcmF0b3IgcG9zID0gc19kYXRhLmNvbnQuYmVnaW4oKTsKLSAgICAgIGxpc3RfaXRlcmF0b3IgbGFzdCA9IHNfZGF0YS5jb250LmVuZCgpOwotICAgICAgd2hpbGUoKHBvcyAhPSBsYXN0KSAmJiAocyA+IGxfbWF4X2NhY2hlX3NpemUpKQotICAgICAgewotICAgICAgICAgaWYocG9zLT5maXJzdC51bmlxdWUoKSkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIGxpc3RfaXRlcmF0b3IgY29uZGVtbWVkKHBvcyk7Ci0gICAgICAgICAgICArK3BvczsKLSAgICAgICAgICAgIC8vIG5vdyByZW1vdmUgdGhlIGl0ZW1zIGZyb20gb3VyIGNvbnRhaW5lcnMsIAotICAgICAgICAgICAgLy8gdGhlbiBvcmRlciBoYXMgdG8gYmUgYXMgZm9sbG93czoKLSAgICAgICAgICAgIE5ETkJPT1NUX0FTU0VSVChzX2RhdGEuaW5kZXguZmluZCgqKGNvbmRlbW1lZC0+c2Vjb25kKSkgIT0gc19kYXRhLmluZGV4LmVuZCgpKTsKLSAgICAgICAgICAgIHNfZGF0YS5pbmRleC5lcmFzZSgqKGNvbmRlbW1lZC0+c2Vjb25kKSk7Ci0gICAgICAgICAgICBzX2RhdGEuY29udC5lcmFzZShjb25kZW1tZWQpOyAKLSAgICAgICAgICAgIC0tczsKLSAgICAgICAgIH0KLSAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICsrcG9zOwotICAgICAgfQotICAgICAgTkROQk9PU1RfQVNTRVJUKHNfZGF0YS5pbmRleFtrXS0+Zmlyc3QuZ2V0KCkgPT0gcmVzdWx0LmdldCgpKTsKLSAgICAgIE5ETkJPT1NUX0FTU0VSVCgmKHNfZGF0YS5pbmRleC5maW5kKGspLT5maXJzdCkgPT0gc19kYXRhLmNvbnQuYmFjaygpLnNlY29uZCk7Ci0gICAgICBORE5CT09TVF9BU1NFUlQoc19kYXRhLmluZGV4LmZpbmQoayktPmZpcnN0ID09IGspOwotICAgfQotICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvcGVuZGluZy9zdGF0aWNfbXV0ZXguaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWdleC9wZW5kaW5nL3N0YXRpY19tdXRleC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3ZDI2NTkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC9wZW5kaW5nL3N0YXRpY19tdXRleC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNzkgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQKLSAqIEpvaG4gTWFkZG9jawotICoKLSAqIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotICogQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0gKiBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICovCi0gCi0gLyoKLSAgKiAgIExPQ0FUSU9OOiAgICBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0gICogICBGSUxFICAgICAgICAgc3RhdGljX211dGV4LmhwcAotICAqICAgVkVSU0lPTiAgICAgIHNlZSA8bmRuYm9vc3QvdmVyc2lvbi5ocHA+Ci0gICogICBERVNDUklQVElPTjogRGVjbGFyZXMgc3RhdGljX211dGV4IGxvY2sgdHlwZSwgdGhlcmUgYXJlIHRocmVlIGRpZmZlcmVudAotICAqICAgICAgICAgICAgICAgIGltcGxlbWVudGF0aW9uczogUE9TSVggcHRocmVhZHMsIFdJTjMyIHRocmVhZHMsIGFuZCBwb3J0YWJsZSwKLSAgKiAgICAgICAgICAgICAgICB0aGVzZSBhcmUgZGVzY3JpYmVkIGluIG1vcmUgZGV0YWlsIGJlbG93LgotICAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1NUQVRJQ19NVVRFWF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfU1RBVElDX01VVEVYX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC9jb25maWcuaHBwPiAvLyBkbGwgaW1wb3J0L2V4cG9ydCBvcHRpb25zLgotCi0jaWZkZWYgTkROQk9PU1RfSEFTX1BUSFJFQURTCi0jaW5jbHVkZSA8cHRocmVhZC5oPgotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19QVEhSRUFEUykgJiYgZGVmaW5lZChQVEhSRUFEX01VVEVYX0lOSVRJQUxJWkVSKQotLy8KLS8vIHB0aHJlYWRzIHZlcnNpb246Ci0vLyBzaW1wbGUgd3JhcCBhcm91bmQgYSBwdGhyZWFkX211dGV4X3QgaW5pdGlhbGl6ZWQgd2l0aAotLy8gUFRIUkVBRF9NVVRFWF9JTklUSUFMSVpFUi4KLS8vCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci0KLWNsYXNzIHN0YXRpY19tdXRleDsKLQotI2RlZmluZSBORE5CT09TVF9TVEFUSUNfTVVURVhfSU5JVCB7IFBUSFJFQURfTVVURVhfSU5JVElBTElaRVIsIH0KLQotY2xhc3MgTkROQk9PU1RfUkVHRVhfREVDTCBzY29wZWRfc3RhdGljX211dGV4X2xvY2sKLXsKLXB1YmxpYzoKLSAgIHNjb3BlZF9zdGF0aWNfbXV0ZXhfbG9jayhzdGF0aWNfbXV0ZXgmIG11dCwgYm9vbCBsayA9IHRydWUpOwotICAgfnNjb3BlZF9zdGF0aWNfbXV0ZXhfbG9jaygpOwotICAgaW5saW5lIGJvb2wgbG9ja2VkKCljb25zdAotICAgewotICAgICAgcmV0dXJuIG1faGF2ZV9sb2NrOwotICAgfQotICAgaW5saW5lIG9wZXJhdG9yIHZvaWQgY29uc3QqKCljb25zdAotICAgewotICAgICAgcmV0dXJuIGxvY2tlZCgpID8gdGhpcyA6IDA7Ci0gICB9Ci0gICB2b2lkIGxvY2soKTsKLSAgIHZvaWQgdW5sb2NrKCk7Ci1wcml2YXRlOgotICAgc3RhdGljX211dGV4JiBtX211dGV4OwotICAgYm9vbCBtX2hhdmVfbG9jazsKLX07Ci0KLWNsYXNzIHN0YXRpY19tdXRleAotewotcHVibGljOgotICAgdHlwZWRlZiBzY29wZWRfc3RhdGljX211dGV4X2xvY2sgc2NvcGVkX2xvY2s7Ci0gICBwdGhyZWFkX211dGV4X3QgbV9tdXRleDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19XSU5USFJFQURTKQotLy8KLS8vIFdpbjMyIHZlcnNpb246Ci0vLyBVc2UgYSAzMi1iaXQgaW50IGFzIGEgbG9jaywgYWxvbmcgd2l0aCBhIHRlc3QtYW5kLXNldAotLy8gaW1wbGVtZW50YXRpb24gdXNpbmcgSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2UuCi0vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY3N0ZGludC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdHsKLQotY2xhc3MgTkROQk9PU1RfUkVHRVhfREVDTCBzY29wZWRfc3RhdGljX211dGV4X2xvY2s7Ci0KLWNsYXNzIHN0YXRpY19tdXRleAotewotcHVibGljOgotICAgdHlwZWRlZiBzY29wZWRfc3RhdGljX211dGV4X2xvY2sgc2NvcGVkX2xvY2s7Ci0gICBuZG5ib29zdDo6aW50MzJfdCBtX211dGV4OwotfTsKLQotI2RlZmluZSBORE5CT09TVF9TVEFUSUNfTVVURVhfSU5JVCB7IDAsIH0KLQotY2xhc3MgTkROQk9PU1RfUkVHRVhfREVDTCBzY29wZWRfc3RhdGljX211dGV4X2xvY2sKLXsKLXB1YmxpYzoKLSAgIHNjb3BlZF9zdGF0aWNfbXV0ZXhfbG9jayhzdGF0aWNfbXV0ZXgmIG11dCwgYm9vbCBsayA9IHRydWUpOwotICAgfnNjb3BlZF9zdGF0aWNfbXV0ZXhfbG9jaygpOwotICAgb3BlcmF0b3Igdm9pZCBjb25zdCooKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gbG9ja2VkKCkgPyB0aGlzIDogMDsKLSAgIH0KLSAgIGJvb2wgbG9ja2VkKCljb25zdAotICAgewotICAgICAgcmV0dXJuIG1faGF2ZV9sb2NrOwotICAgfQotICAgdm9pZCBsb2NrKCk7Ci0gICB2b2lkIHVubG9jaygpOwotcHJpdmF0ZToKLSAgIHN0YXRpY19tdXRleCYgbV9tdXRleDsKLSAgIGJvb2wgbV9oYXZlX2xvY2s7Ci0gICBzY29wZWRfc3RhdGljX211dGV4X2xvY2soY29uc3Qgc2NvcGVkX3N0YXRpY19tdXRleF9sb2NrJik7Ci0gICBzY29wZWRfc3RhdGljX211dGV4X2xvY2smIG9wZXJhdG9yPShjb25zdCBzY29wZWRfc3RhdGljX211dGV4X2xvY2smKTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlCi0KLSNlbHNlCi0vLwotLy8gUG9ydGFibGUgdmVyc2lvbiBvZiBhIHN0YXRpYyBtdXRleCBiYXNlZCBvbiBCb29zdC5UaHJlYWQgbGlicmFyeToKLS8vIFRoaXMgaGFzIHRvIHVzZSBhIHNpbmdsZSBtdXRleCBzaGFyZWQgYnkgYWxsIGluc3RhbmNlcyBvZiBzdGF0aWNfbXV0ZXgKLS8vIGJlY2F1c2UgbmRuYm9vc3Q6OmNhbGxfb25jZSBkb2Vzbid0IGFsb3cgdXMgdG8gcGFzcyBpbnN0YW5jZSBpbmZvcm1hdGlvbgotLy8gZG93biB0byB0aGUgaW5pdGlhbGlzYXRpb24gcHJvY2VlZHVyZS4gIEluIGZhY3QgdGhlIGluaXRpYWxpc2F0aW9uIHJvdXRpbmUKLS8vIG1heSBuZWVkIHRvIGJlIGNhbGxlZCBtb3JlIHRoYW4gb25jZSAtIGJ1dCBvbmx5IG9uY2UgcGVyIGluc3RhbmNlLgotLy8KLS8vIFNpbmNlIHRoaXMgcHJlcHJvY2Vzc29yIHBhdGggaXMgYWxtb3N0IG5ldmVyIHRha2VuLCB3ZSBoaWRlIHRoZXNlIGhlYWRlcgotLy8gZGVwZW5kZW5jaWVzIHNvIHRoYXQgYnVpbGQgdG9vbHMgZG9uJ3QgZmluZCB0aGVtLgotLy8KLSNkZWZpbmUgQjEgPG5kbmJvb3N0L3RocmVhZC9vbmNlLmhwcD4KLSNkZWZpbmUgQjIgPG5kbmJvb3N0L3RocmVhZC9yZWN1cnNpdmVfbXV0ZXguaHBwPgotI2luY2x1ZGUgQjEKLSNpbmNsdWRlIEIyCi0jdW5kZWYgQjEKLSN1bmRlZiBCMgotCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci0KLWNsYXNzIE5ETkJPT1NUX1JFR0VYX0RFQ0wgc2NvcGVkX3N0YXRpY19tdXRleF9sb2NrOwotZXh0ZXJuICJDIiBORE5CT09TVF9SRUdFWF9ERUNMIHZvaWQgbmRuYm9vc3RfcmVnZXhfZnJlZV9zdGF0aWNfbXV0ZXgoKTsKLQotY2xhc3MgTkROQk9PU1RfUkVHRVhfREVDTCBzdGF0aWNfbXV0ZXgKLXsKLXB1YmxpYzoKLSAgIHR5cGVkZWYgc2NvcGVkX3N0YXRpY19tdXRleF9sb2NrIHNjb3BlZF9sb2NrOwotICAgc3RhdGljIHZvaWQgaW5pdCgpOwotICAgc3RhdGljIG5kbmJvb3N0OjpyZWN1cnNpdmVfbXV0ZXgqIG1fcG11dGV4OwotICAgc3RhdGljIG5kbmJvb3N0OjpvbmNlX2ZsYWcgbV9vbmNlOwotfTsKLQotI2RlZmluZSBORE5CT09TVF9TVEFUSUNfTVVURVhfSU5JVCB7ICB9Ci0KLWNsYXNzIE5ETkJPT1NUX1JFR0VYX0RFQ0wgc2NvcGVkX3N0YXRpY19tdXRleF9sb2NrCi17Ci1wdWJsaWM6Ci0gICBzY29wZWRfc3RhdGljX211dGV4X2xvY2soc3RhdGljX211dGV4JiBtdXQsIGJvb2wgbGsgPSB0cnVlKTsKLSAgIH5zY29wZWRfc3RhdGljX211dGV4X2xvY2soKTsKLSAgIG9wZXJhdG9yIHZvaWQgY29uc3QqKCljb25zdDsKLSAgIGJvb2wgbG9ja2VkKCljb25zdDsKLSAgIHZvaWQgbG9jaygpOwotICAgdm9pZCB1bmxvY2soKTsKLXByaXZhdGU6Ci0gICBuZG5ib29zdDo6cmVjdXJzaXZlX211dGV4OjpzY29wZWRfbG9jayogbV9wbG9jazsKLSAgIGJvb2wgbV9oYXZlX2xvY2s7Ci19OwotCi1pbmxpbmUgc2NvcGVkX3N0YXRpY19tdXRleF9sb2NrOjpvcGVyYXRvciB2b2lkIGNvbnN0KigpY29uc3QKLXsKLSAgIHJldHVybiBsb2NrZWQoKSA/IHRoaXMgOiAwOwotfQotCi1pbmxpbmUgYm9vbCBzY29wZWRfc3RhdGljX211dGV4X2xvY2s6OmxvY2tlZCgpY29uc3QKLXsKLSAgIHJldHVybiBtX2hhdmVfbG9jazsKLX0KLQotfSAvLyBuYW1lc3BhY2UKLQotI2VuZGlmCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC9wZW5kaW5nL3VuaWNvZGVfaXRlcmF0b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWdleC9wZW5kaW5nL3VuaWNvZGVfaXRlcmF0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNjZkM2I5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvcGVuZGluZy91bmljb2RlX2l0ZXJhdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDc3NiArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAoYykgMjAwNAotICogSm9obiBNYWRkb2NrCi0gKgotICogVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0gKiBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLSAqIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKi8KLSAKLSAvKgotICAqICAgTE9DQVRJT046ICAgIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLSAgKiAgIEZJTEUgICAgICAgICB1bmljb2RlX2l0ZXJhdG9yLmhwcAotICAqICAgVkVSU0lPTiAgICAgIHNlZSA8bmRuYm9vc3QvdmVyc2lvbi5ocHA+Ci0gICogICBERVNDUklQVElPTjogSXRlcmF0b3IgYWRhcHRlcnMgZm9yIGNvbnZlcnRpbmcgYmV0d2VlbiBkaWZmZXJlbnQgVW5pY29kZSBlbmNvZGluZ3MuCi0gICovCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLUNvbnRlbnRzOgotfn5+fn5+fn5+Ci0KLTEpIFJlYWQgT25seSwgSW5wdXQgQWRhcHRlcnM6Ci1+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgotCi10ZW1wbGF0ZSA8Y2xhc3MgQmFzZUl0ZXJhdG9yLCBjbGFzcyBVOFR5cGUgPSA6Om5kbmJvb3N0Ojp1aW50OF90PgotY2xhc3MgdTMyX3RvX3U4X2l0ZXJhdG9yOwotCi1BZGFwdHMgc2VxdWVuY2Ugb2YgVVRGLTMyIGNvZGUgcG9pbnRzIHRvICJsb29rIGxpa2UiIGEgc2VxdWVuY2Ugb2YgVVRGLTguCi0KLXRlbXBsYXRlIDxjbGFzcyBCYXNlSXRlcmF0b3IsIGNsYXNzIFUzMlR5cGUgPSA6Om5kbmJvb3N0Ojp1aW50MzJfdD4KLWNsYXNzIHU4X3RvX3UzMl9pdGVyYXRvcjsKLQotQWRhcHRzIHNlcXVlbmNlIG9mIFVURi04IGNvZGUgcG9pbnRzIHRvICJsb29rIGxpa2UiIGEgc2VxdWVuY2Ugb2YgVVRGLTMyLgotCi10ZW1wbGF0ZSA8Y2xhc3MgQmFzZUl0ZXJhdG9yLCBjbGFzcyBVMTZUeXBlID0gOjpuZG5ib29zdDo6dWludDE2X3Q+Ci1jbGFzcyB1MzJfdG9fdTE2X2l0ZXJhdG9yOwotCi1BZGFwdHMgc2VxdWVuY2Ugb2YgVVRGLTMyIGNvZGUgcG9pbnRzIHRvICJsb29rIGxpa2UiIGEgc2VxdWVuY2Ugb2YgVVRGLTE2LgotCi10ZW1wbGF0ZSA8Y2xhc3MgQmFzZUl0ZXJhdG9yLCBjbGFzcyBVMzJUeXBlID0gOjpuZG5ib29zdDo6dWludDMyX3Q+Ci1jbGFzcyB1MTZfdG9fdTMyX2l0ZXJhdG9yOwotCi1BZGFwdHMgc2VxdWVuY2Ugb2YgVVRGLTE2IGNvZGUgcG9pbnRzIHRvICJsb29rIGxpa2UiIGEgc2VxdWVuY2Ugb2YgVVRGLTMyLgotCi0yKSBTaW5nbGUgcGFzcyBvdXRwdXQgaXRlcmF0b3IgYWRhcHRlcnM6Ci0KLXRlbXBsYXRlIDxjbGFzcyBCYXNlSXRlcmF0b3I+Ci1jbGFzcyB1dGY4X291dHB1dF9pdGVyYXRvcjsKLQotQWNjZXB0cyBVVEYtMzIgY29kZSBwb2ludHMgYW5kIGZvcndhcmRzIHRoZW0gb24gYXMgVVRGLTggY29kZSBwb2ludHMuCi0KLXRlbXBsYXRlIDxjbGFzcyBCYXNlSXRlcmF0b3I+Ci1jbGFzcyB1dGYxNl9vdXRwdXRfaXRlcmF0b3I7Ci0KLUFjY2VwdHMgVVRGLTMyIGNvZGUgcG9pbnRzIGFuZCBmb3J3YXJkcyB0aGVtIG9uIGFzIFVURi0xNiBjb2RlIHBvaW50cy4KLQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9VTklDT0RFX0lURVJBVE9SX0hQUAotI2RlZmluZSBORE5CT09TVF9SRUdFWF9VTklDT0RFX0lURVJBVE9SX0hQUAotI2luY2x1ZGUgPG5kbmJvb3N0L2NzdGRpbnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2Fzc2VydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaXRlcmF0b3IvaXRlcmF0b3JfZmFjYWRlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zdGF0aWNfYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90aHJvd19leGNlcHRpb24uaHBwPgotI2luY2x1ZGUgPHN0ZGV4Y2VwdD4KLSNpZm5kZWYgTkROQk9PU1RfTk9fU1REX0xPQ0FMRQotI2luY2x1ZGUgPHNzdHJlYW0+Ci0jaW5jbHVkZSA8aW9zPgotI2VuZGlmCi0jaW5jbHVkZSA8bGltaXRzLmg+IC8vIENIQVJfQklUCi0KLW5hbWVzcGFjZSBuZG5ib29zdHsKLQotbmFtZXNwYWNlIGRldGFpbHsKLQotc3RhdGljIGNvbnN0IDo6bmRuYm9vc3Q6OnVpbnQxNl90IGhpZ2hfc3Vycm9nYXRlX2Jhc2UgPSAweEQ3QzB1Owotc3RhdGljIGNvbnN0IDo6bmRuYm9vc3Q6OnVpbnQxNl90IGxvd19zdXJyb2dhdGVfYmFzZSA9IDB4REMwMHU7Ci1zdGF0aWMgY29uc3QgOjpuZG5ib29zdDo6dWludDMyX3QgdGVuX2JpdF9tYXNrID0gMHgzRkZ1OwotCi1pbmxpbmUgYm9vbCBpc19oaWdoX3N1cnJvZ2F0ZSg6Om5kbmJvb3N0Ojp1aW50MTZfdCB2KQotewotICAgcmV0dXJuICh2ICYgMHhGRkZGRkMwMHUpID09IDB4ZDgwMHU7Ci19Ci1pbmxpbmUgYm9vbCBpc19sb3dfc3Vycm9nYXRlKDo6bmRuYm9vc3Q6OnVpbnQxNl90IHYpCi17Ci0gICByZXR1cm4gKHYgJiAweEZGRkZGQzAwdSkgPT0gMHhkYzAwdTsKLX0KLXRlbXBsYXRlIDxjbGFzcyBUPgotaW5saW5lIGJvb2wgaXNfc3Vycm9nYXRlKFQgdikKLXsKLSAgIHJldHVybiAodiAmIDB4RkZGRkY4MDB1KSA9PSAweGQ4MDA7Ci19Ci0KLWlubGluZSB1bnNpZ25lZCB1dGY4X2J5dGVfY291bnQobmRuYm9vc3Q6OnVpbnQ4X3QgYykKLXsKLSAgIC8vIGlmIHRoZSBtb3N0IHNpZ25pZmljYW50IGJpdCB3aXRoIGEgemVybyBpbiBpdCBpcyBpbiBwb3NpdGlvbgotICAgLy8gOC1OIHRoZW4gdGhlcmUgYXJlIE4gYnl0ZXMgaW4gdGhpcyBVVEYtOCBzZXF1ZW5jZToKLSAgIG5kbmJvb3N0Ojp1aW50OF90IG1hc2sgPSAweDgwdTsKLSAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7Ci0gICB3aGlsZShjICYgbWFzaykKLSAgIHsKLSAgICAgICsrcmVzdWx0OwotICAgICAgbWFzayA+Pj0gMTsKLSAgIH0KLSAgIHJldHVybiAocmVzdWx0ID09IDApID8gMSA6ICgocmVzdWx0ID4gNCkgPyA0IDogcmVzdWx0KTsKLX0KLQotaW5saW5lIHVuc2lnbmVkIHV0ZjhfdHJhaWxpbmdfYnl0ZV9jb3VudChuZG5ib29zdDo6dWludDhfdCBjKQotewotICAgcmV0dXJuIHV0ZjhfYnl0ZV9jb3VudChjKSAtIDE7Ci19Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQxMDApCi0jZW5kaWYKLWlubGluZSB2b2lkIGludmFsaWRfdXRmMzJfY29kZV9wb2ludCg6Om5kbmJvb3N0Ojp1aW50MzJfdCB2YWwpCi17Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1NURF9MT0NBTEUKLSAgIHN0ZDo6c3RyaW5nc3RyZWFtIHNzOwotICAgc3MgPDwgIkludmFsaWQgVVRGLTMyIGNvZGUgcG9pbnQgVSsiIDw8IHN0ZDo6c2hvd2Jhc2UgPDwgc3RkOjpoZXggPDwgdmFsIDw8ICIgZW5jb3VudGVyZWQgd2hpbGUgdHJ5aW5nIHRvIGVuY29kZSBVVEYtMTYgc2VxdWVuY2UiOwotICAgc3RkOjpvdXRfb2ZfcmFuZ2UgZShzcy5zdHIoKSk7Ci0jZWxzZQotICAgc3RkOjpvdXRfb2ZfcmFuZ2UgZSgiSW52YWxpZCBVVEYtMzIgY29kZSBwb2ludCBlbmNvdW50ZXJlZCB3aGlsZSB0cnlpbmcgdG8gZW5jb2RlIFVURi0xNiBzZXF1ZW5jZSIpOwotI2VuZGlmCi0gICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKGUpOwotfQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotdGVtcGxhdGUgPGNsYXNzIEJhc2VJdGVyYXRvciwgY2xhc3MgVTE2VHlwZSA9IDo6bmRuYm9vc3Q6OnVpbnQxNl90PgotY2xhc3MgdTMyX3RvX3UxNl9pdGVyYXRvcgotICAgOiBwdWJsaWMgbmRuYm9vc3Q6Oml0ZXJhdG9yX2ZhY2FkZTx1MzJfdG9fdTE2X2l0ZXJhdG9yPEJhc2VJdGVyYXRvciwgVTE2VHlwZT4sIFUxNlR5cGUsIHN0ZDo6YmlkaXJlY3Rpb25hbF9pdGVyYXRvcl90YWcsIGNvbnN0IFUxNlR5cGU+Ci17Ci0gICB0eXBlZGVmIG5kbmJvb3N0OjppdGVyYXRvcl9mYWNhZGU8dTMyX3RvX3UxNl9pdGVyYXRvcjxCYXNlSXRlcmF0b3IsIFUxNlR5cGU+LCBVMTZUeXBlLCBzdGQ6OmJpZGlyZWN0aW9uYWxfaXRlcmF0b3JfdGFnLCBjb25zdCBVMTZUeXBlPiBiYXNlX3R5cGU7Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19TVERfSVRFUkFUT1JfVFJBSVRTKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotICAgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6Oml0ZXJhdG9yX3RyYWl0czxCYXNlSXRlcmF0b3I+Ojp2YWx1ZV90eXBlIGJhc2VfdmFsdWVfdHlwZTsKLQotICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVChzaXplb2YoYmFzZV92YWx1ZV90eXBlKSpDSEFSX0JJVCA9PSAzMik7Ci0gICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKHNpemVvZihVMTZUeXBlKSpDSEFSX0JJVCA9PSAxNik7Ci0jZW5kaWYKLQotcHVibGljOgotICAgdHlwZW5hbWUgYmFzZV90eXBlOjpyZWZlcmVuY2UKLSAgICAgIGRlcmVmZXJlbmNlKCljb25zdAotICAgewotICAgICAgaWYobV9jdXJyZW50ID09IDIpCi0gICAgICAgICBleHRyYWN0X2N1cnJlbnQoKTsKLSAgICAgIHJldHVybiBtX3ZhbHVlc1ttX2N1cnJlbnRdOwotICAgfQotICAgYm9vbCBlcXVhbChjb25zdCB1MzJfdG9fdTE2X2l0ZXJhdG9yJiB0aGF0KWNvbnN0Ci0gICB7Ci0gICAgICBpZihtX3Bvc2l0aW9uID09IHRoYXQubV9wb3NpdGlvbikKLSAgICAgIHsKLSAgICAgICAgIC8vIEJvdGggbV9jdXJyZW50cyBtdXN0IGJlIGVxdWFsLCBvciBib3RoIGV2ZW4KLSAgICAgICAgIC8vIHRoaXMgaXMgdGhlIHNhbWUgYXMgc2F5aW5nIHRoZWlyIHN1bSBtdXN0IGJlIGV2ZW46Ci0gICAgICAgICByZXR1cm4gKG1fY3VycmVudCArIHRoYXQubV9jdXJyZW50KSAmIDF1ID8gZmFsc2UgOiB0cnVlOwotICAgICAgfQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgfQotICAgdm9pZCBpbmNyZW1lbnQoKQotICAgewotICAgICAgLy8gaWYgd2UgaGF2ZSBhIHBlbmRpbmcgcmVhZCB0aGVuIHJlYWQgbm93LCBzbyB0aGF0IHdlIGtub3cgd2hldGhlcgotICAgICAgLy8gdG8gc2tpcCBhIHBvc2l0aW9uLCBvciBtb3ZlIHRvIGEgbG93LXN1cnJvZ2F0ZToKLSAgICAgIGlmKG1fY3VycmVudCA9PSAyKQotICAgICAgewotICAgICAgICAgLy8gcGVuZGluZyByZWFkOgotICAgICAgICAgZXh0cmFjdF9jdXJyZW50KCk7Ci0gICAgICB9Ci0gICAgICAvLyBtb3ZlIHRvIHRoZSBuZXh0IHN1cnJvZ2F0ZSBwb3NpdGlvbjoKLSAgICAgICsrbV9jdXJyZW50OwotICAgICAgLy8gaWYgd2UndmUgcmVhY2hlZCB0aGUgZW5kIHNraXAgYSBwb3NpdGlvbjoKLSAgICAgIGlmKG1fdmFsdWVzW21fY3VycmVudF0gPT0gMCkKLSAgICAgIHsKLSAgICAgICAgIG1fY3VycmVudCA9IDI7Ci0gICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICB9Ci0gICB9Ci0gICB2b2lkIGRlY3JlbWVudCgpCi0gICB7Ci0gICAgICBpZihtX2N1cnJlbnQgIT0gMSkKLSAgICAgIHsKLSAgICAgICAgIC8vIGRlY3JlbWVudGluZyBhbiBpdGVyYXRvciBhbHdheXMgbGVhZHMgdG8gYSB2YWxpZCBwb3NpdGlvbjoKLSAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgIGV4dHJhY3RfY3VycmVudCgpOwotICAgICAgICAgbV9jdXJyZW50ID0gbV92YWx1ZXNbMV0gPyAxIDogMDsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgIG1fY3VycmVudCA9IDA7Ci0gICAgICB9Ci0gICB9Ci0gICBCYXNlSXRlcmF0b3IgYmFzZSgpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBtX3Bvc2l0aW9uOwotICAgfQotICAgLy8gY29uc3RydWN0OgotICAgdTMyX3RvX3UxNl9pdGVyYXRvcigpIDogbV9wb3NpdGlvbigpLCBtX2N1cnJlbnQoMCkKLSAgIHsKLSAgICAgIG1fdmFsdWVzWzBdID0gMDsKLSAgICAgIG1fdmFsdWVzWzFdID0gMDsKLSAgICAgIG1fdmFsdWVzWzJdID0gMDsKLSAgIH0KLSAgIHUzMl90b191MTZfaXRlcmF0b3IoQmFzZUl0ZXJhdG9yIGIpIDogbV9wb3NpdGlvbihiKSwgbV9jdXJyZW50KDIpCi0gICB7Ci0gICAgICBtX3ZhbHVlc1swXSA9IDA7Ci0gICAgICBtX3ZhbHVlc1sxXSA9IDA7Ci0gICAgICBtX3ZhbHVlc1syXSA9IDA7Ci0gICB9Ci1wcml2YXRlOgotCi0gICB2b2lkIGV4dHJhY3RfY3VycmVudCgpY29uc3QKLSAgIHsKLSAgICAgIC8vIGJlZ2luIGJ5IGNoZWNraW5nIGZvciBhIGNvZGUgcG9pbnQgb3V0IG9mIHJhbmdlOgotICAgICAgOjpuZG5ib29zdDo6dWludDMyX3QgdiA9ICptX3Bvc2l0aW9uOwotICAgICAgaWYodiA+PSAweDEwMDAwdSkKLSAgICAgIHsKLSAgICAgICAgIGlmKHYgPiAweDEwRkZGRnUpCi0gICAgICAgICAgICBkZXRhaWw6OmludmFsaWRfdXRmMzJfY29kZV9wb2ludCgqbV9wb3NpdGlvbik7Ci0gICAgICAgICAvLyBzcGxpdCBpbnRvIHR3byBzdXJyb2dhdGVzOgotICAgICAgICAgbV92YWx1ZXNbMF0gPSBzdGF0aWNfY2FzdDxVMTZUeXBlPih2ID4+IDEwKSArIGRldGFpbDo6aGlnaF9zdXJyb2dhdGVfYmFzZTsKLSAgICAgICAgIG1fdmFsdWVzWzFdID0gc3RhdGljX2Nhc3Q8VTE2VHlwZT4odiAmIGRldGFpbDo6dGVuX2JpdF9tYXNrKSArIGRldGFpbDo6bG93X3N1cnJvZ2F0ZV9iYXNlOwotICAgICAgICAgbV9jdXJyZW50ID0gMDsKLSAgICAgICAgIE5ETkJPT1NUX0FTU0VSVChkZXRhaWw6OmlzX2hpZ2hfc3Vycm9nYXRlKG1fdmFsdWVzWzBdKSk7Ci0gICAgICAgICBORE5CT09TVF9BU1NFUlQoZGV0YWlsOjppc19sb3dfc3Vycm9nYXRlKG1fdmFsdWVzWzFdKSk7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgICAvLyAxNi1iaXQgY29kZSBwb2ludDoKLSAgICAgICAgIG1fdmFsdWVzWzBdID0gc3RhdGljX2Nhc3Q8VTE2VHlwZT4oKm1fcG9zaXRpb24pOwotICAgICAgICAgbV92YWx1ZXNbMV0gPSAwOwotICAgICAgICAgbV9jdXJyZW50ID0gMDsKLSAgICAgICAgIC8vIHZhbHVlIG11c3Qgbm90IGJlIGEgc3Vycm9nYXRlOgotICAgICAgICAgaWYoZGV0YWlsOjppc19zdXJyb2dhdGUobV92YWx1ZXNbMF0pKQotICAgICAgICAgICAgZGV0YWlsOjppbnZhbGlkX3V0ZjMyX2NvZGVfcG9pbnQoKm1fcG9zaXRpb24pOwotICAgICAgfQotICAgfQotICAgQmFzZUl0ZXJhdG9yIG1fcG9zaXRpb247Ci0gICBtdXRhYmxlIFUxNlR5cGUgbV92YWx1ZXNbM107Ci0gICBtdXRhYmxlIHVuc2lnbmVkIG1fY3VycmVudDsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBCYXNlSXRlcmF0b3IsIGNsYXNzIFUzMlR5cGUgPSA6Om5kbmJvb3N0Ojp1aW50MzJfdD4KLWNsYXNzIHUxNl90b191MzJfaXRlcmF0b3IKLSAgIDogcHVibGljIG5kbmJvb3N0OjppdGVyYXRvcl9mYWNhZGU8dTE2X3RvX3UzMl9pdGVyYXRvcjxCYXNlSXRlcmF0b3IsIFUzMlR5cGU+LCBVMzJUeXBlLCBzdGQ6OmJpZGlyZWN0aW9uYWxfaXRlcmF0b3JfdGFnLCBjb25zdCBVMzJUeXBlPgotewotICAgdHlwZWRlZiBuZG5ib29zdDo6aXRlcmF0b3JfZmFjYWRlPHUxNl90b191MzJfaXRlcmF0b3I8QmFzZUl0ZXJhdG9yLCBVMzJUeXBlPiwgVTMyVHlwZSwgc3RkOjpiaWRpcmVjdGlvbmFsX2l0ZXJhdG9yX3RhZywgY29uc3QgVTMyVHlwZT4gYmFzZV90eXBlOwotICAgLy8gc3BlY2lhbCB2YWx1ZXMgZm9yIHBlbmRpbmcgaXRlcmF0b3IgcmVhZHM6Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoVTMyVHlwZSwgcGVuZGluZ19yZWFkID0gMHhmZmZmZmZmZnUpOwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fU1REX0lURVJBVE9SX1RSQUlUUykgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLSAgIHR5cGVkZWYgdHlwZW5hbWUgc3RkOjppdGVyYXRvcl90cmFpdHM8QmFzZUl0ZXJhdG9yPjo6dmFsdWVfdHlwZSBiYXNlX3ZhbHVlX3R5cGU7Ci0KLSAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoc2l6ZW9mKGJhc2VfdmFsdWVfdHlwZSkqQ0hBUl9CSVQgPT0gMTYpOwotICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVChzaXplb2YoVTMyVHlwZSkqQ0hBUl9CSVQgPT0gMzIpOwotI2VuZGlmCi0KLXB1YmxpYzoKLSAgIHR5cGVuYW1lIGJhc2VfdHlwZTo6cmVmZXJlbmNlCi0gICAgICBkZXJlZmVyZW5jZSgpY29uc3QKLSAgIHsKLSAgICAgIGlmKG1fdmFsdWUgPT0gcGVuZGluZ19yZWFkKQotICAgICAgICAgZXh0cmFjdF9jdXJyZW50KCk7Ci0gICAgICByZXR1cm4gbV92YWx1ZTsKLSAgIH0KLSAgIGJvb2wgZXF1YWwoY29uc3QgdTE2X3RvX3UzMl9pdGVyYXRvciYgdGhhdCljb25zdAotICAgewotICAgICAgcmV0dXJuIG1fcG9zaXRpb24gPT0gdGhhdC5tX3Bvc2l0aW9uOwotICAgfQotICAgdm9pZCBpbmNyZW1lbnQoKQotICAgewotICAgICAgLy8gc2tpcCBoaWdoIHN1cnJvZ2F0ZSBmaXJzdCBpZiB0aGVyZSBpcyBvbmU6Ci0gICAgICBpZihkZXRhaWw6OmlzX2hpZ2hfc3Vycm9nYXRlKCptX3Bvc2l0aW9uKSkgKyttX3Bvc2l0aW9uOwotICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgbV92YWx1ZSA9IHBlbmRpbmdfcmVhZDsKLSAgIH0KLSAgIHZvaWQgZGVjcmVtZW50KCkKLSAgIHsKLSAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgIC8vIGlmIHdlIGhhdmUgYSBsb3cgc3Vycm9nYXRlIHRoZW4gZ28gYmFjayBvbmUgbW9yZToKLSAgICAgIGlmKGRldGFpbDo6aXNfbG93X3N1cnJvZ2F0ZSgqbV9wb3NpdGlvbikpIAotICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgbV92YWx1ZSA9IHBlbmRpbmdfcmVhZDsKLSAgIH0KLSAgIEJhc2VJdGVyYXRvciBiYXNlKCljb25zdAotICAgewotICAgICAgcmV0dXJuIG1fcG9zaXRpb247Ci0gICB9Ci0gICAvLyBjb25zdHJ1Y3Q6Ci0gICB1MTZfdG9fdTMyX2l0ZXJhdG9yKCkgOiBtX3Bvc2l0aW9uKCkKLSAgIHsKLSAgICAgIG1fdmFsdWUgPSBwZW5kaW5nX3JlYWQ7Ci0gICB9Ci0gICB1MTZfdG9fdTMyX2l0ZXJhdG9yKEJhc2VJdGVyYXRvciBiKSA6IG1fcG9zaXRpb24oYikKLSAgIHsKLSAgICAgIG1fdmFsdWUgPSBwZW5kaW5nX3JlYWQ7Ci0gICB9Ci0gICAvLwotICAgLy8gUmFuZ2UgY2hlY2tlZCB2ZXJzaW9uOgotICAgLy8KLSAgIHUxNl90b191MzJfaXRlcmF0b3IoQmFzZUl0ZXJhdG9yIGIsIEJhc2VJdGVyYXRvciBzdGFydCwgQmFzZUl0ZXJhdG9yIGVuZCkgOiBtX3Bvc2l0aW9uKGIpCi0gICB7Ci0gICAgICBtX3ZhbHVlID0gcGVuZGluZ19yZWFkOwotICAgICAgLy8KLSAgICAgIC8vIFRoZSByYW5nZSBtdXN0IG5vdCBzdGFydCB3aXRoIGEgbG93IHN1cnJvZ2F0ZSwgb3IgZW5kIGluIGEgaGlnaCBzdXJyb2dhdGUsCi0gICAgICAvLyBvdGhlcndpc2Ugd2UgcnVuIHRoZSByaXNrIG9mIHJ1bm5pbmcgb3V0c2lkZSB0aGUgdW5kZXJseWluZyBpbnB1dCByYW5nZS4KLSAgICAgIC8vIExpa2V3aXNlIGIgbXVzdCBub3QgYmUgbG9jYXRlZCBhdCBhIGxvdyBzdXJyb2dhdGUuCi0gICAgICAvLwotICAgICAgbmRuYm9vc3Q6OnVpbnQxNl90IHZhbDsKLSAgICAgIGlmKHN0YXJ0ICE9IGVuZCkKLSAgICAgIHsKLSAgICAgICAgIGlmKChiICE9IHN0YXJ0KSAmJiAoYiAhPSBlbmQpKQotICAgICAgICAgewotICAgICAgICAgICAgdmFsID0gKmI7Ci0gICAgICAgICAgICBpZihkZXRhaWw6OmlzX3N1cnJvZ2F0ZSh2YWwpICYmICgodmFsICYgMHhGQzAwdSkgPT0gMHhEQzAwdSkpCi0gICAgICAgICAgICAgICBpbnZhbGlkX2NvZGVfcG9pbnQodmFsKTsKLSAgICAgICAgIH0KLSAgICAgICAgIHZhbCA9ICpzdGFydDsKLSAgICAgICAgIGlmKGRldGFpbDo6aXNfc3Vycm9nYXRlKHZhbCkgJiYgKCh2YWwgJiAweEZDMDB1KSA9PSAweERDMDB1KSkKLSAgICAgICAgICAgIGludmFsaWRfY29kZV9wb2ludCh2YWwpOwotICAgICAgICAgdmFsID0gKi0tZW5kOwotICAgICAgICAgaWYoZGV0YWlsOjppc19oaWdoX3N1cnJvZ2F0ZSh2YWwpKQotICAgICAgICAgICAgaW52YWxpZF9jb2RlX3BvaW50KHZhbCk7Ci0gICAgICB9Ci0gICB9Ci1wcml2YXRlOgotICAgc3RhdGljIHZvaWQgaW52YWxpZF9jb2RlX3BvaW50KDo6bmRuYm9vc3Q6OnVpbnQxNl90IHZhbCkKLSAgIHsKLSNpZm5kZWYgTkROQk9PU1RfTk9fU1REX0xPQ0FMRQotICAgICAgc3RkOjpzdHJpbmdzdHJlYW0gc3M7Ci0gICAgICBzcyA8PCAiTWlzcGxhY2VkIFVURi0xNiBzdXJyb2dhdGUgVSsiIDw8IHN0ZDo6c2hvd2Jhc2UgPDwgc3RkOjpoZXggPDwgdmFsIDw8ICIgZW5jb3VudGVyZWQgd2hpbGUgdHJ5aW5nIHRvIGVuY29kZSBVVEYtMzIgc2VxdWVuY2UiOwotICAgICAgc3RkOjpvdXRfb2ZfcmFuZ2UgZShzcy5zdHIoKSk7Ci0jZWxzZQotICAgICAgc3RkOjpvdXRfb2ZfcmFuZ2UgZSgiTWlzcGxhY2VkIFVURi0xNiBzdXJyb2dhdGUgZW5jb3VudGVyZWQgd2hpbGUgdHJ5aW5nIHRvIGVuY29kZSBVVEYtMzIgc2VxdWVuY2UiKTsKLSNlbmRpZgotICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihlKTsKLSAgIH0KLSAgIHZvaWQgZXh0cmFjdF9jdXJyZW50KCljb25zdAotICAgewotICAgICAgbV92YWx1ZSA9IHN0YXRpY19jYXN0PFUzMlR5cGU+KHN0YXRpY19jYXN0PCA6Om5kbmJvb3N0Ojp1aW50MTZfdD4oKm1fcG9zaXRpb24pKTsKLSAgICAgIC8vIGlmIHRoZSBsYXN0IHZhbHVlIGlzIGEgaGlnaCBzdXJyb2dhdGUgdGhlbiBhZGp1c3QgbV9wb3NpdGlvbiBhbmQgbV92YWx1ZSBhcyBuZWVkZWQ6Ci0gICAgICBpZihkZXRhaWw6OmlzX2hpZ2hfc3Vycm9nYXRlKCptX3Bvc2l0aW9uKSkKLSAgICAgIHsKLSAgICAgICAgIC8vIHByZWNvbmRpdGlvbjsgbmV4dCB2YWx1ZSBtdXN0IGhhdmUgYmUgYSBsb3ctc3Vycm9nYXRlOgotICAgICAgICAgQmFzZUl0ZXJhdG9yIG5leHQobV9wb3NpdGlvbik7Ci0gICAgICAgICA6Om5kbmJvb3N0Ojp1aW50MTZfdCB0ID0gKisrbmV4dDsKLSAgICAgICAgIGlmKCh0ICYgMHhGQzAwdSkgIT0gMHhEQzAwdSkKLSAgICAgICAgICAgIGludmFsaWRfY29kZV9wb2ludCh0KTsKLSAgICAgICAgIG1fdmFsdWUgPSAobV92YWx1ZSAtIGRldGFpbDo6aGlnaF9zdXJyb2dhdGVfYmFzZSkgPDwgMTA7Ci0gICAgICAgICBtX3ZhbHVlIHw9IChzdGF0aWNfY2FzdDxVMzJUeXBlPihzdGF0aWNfY2FzdDwgOjpuZG5ib29zdDo6dWludDE2X3Q+KHQpKSAmIGRldGFpbDo6dGVuX2JpdF9tYXNrKTsKLSAgICAgIH0KLSAgICAgIC8vIHBvc3Rjb25kaXRpb247IHJlc3VsdCBtdXN0IG5vdCBiZSBhIHN1cnJvZ2F0ZToKLSAgICAgIGlmKGRldGFpbDo6aXNfc3Vycm9nYXRlKG1fdmFsdWUpKQotICAgICAgICAgaW52YWxpZF9jb2RlX3BvaW50KHN0YXRpY19jYXN0PCA6Om5kbmJvb3N0Ojp1aW50MTZfdD4obV92YWx1ZSkpOwotICAgfQotICAgQmFzZUl0ZXJhdG9yIG1fcG9zaXRpb247Ci0gICBtdXRhYmxlIFUzMlR5cGUgbV92YWx1ZTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBCYXNlSXRlcmF0b3IsIGNsYXNzIFU4VHlwZSA9IDo6bmRuYm9vc3Q6OnVpbnQ4X3Q+Ci1jbGFzcyB1MzJfdG9fdThfaXRlcmF0b3IKLSAgIDogcHVibGljIG5kbmJvb3N0OjppdGVyYXRvcl9mYWNhZGU8dTMyX3RvX3U4X2l0ZXJhdG9yPEJhc2VJdGVyYXRvciwgVThUeXBlPiwgVThUeXBlLCBzdGQ6OmJpZGlyZWN0aW9uYWxfaXRlcmF0b3JfdGFnLCBjb25zdCBVOFR5cGU+Ci17Ci0gICB0eXBlZGVmIG5kbmJvb3N0OjppdGVyYXRvcl9mYWNhZGU8dTMyX3RvX3U4X2l0ZXJhdG9yPEJhc2VJdGVyYXRvciwgVThUeXBlPiwgVThUeXBlLCBzdGQ6OmJpZGlyZWN0aW9uYWxfaXRlcmF0b3JfdGFnLCBjb25zdCBVOFR5cGU+IGJhc2VfdHlwZTsKLSAgIAotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1NURF9JVEVSQVRPUl9UUkFJVFMpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi0gICB0eXBlZGVmIHR5cGVuYW1lIHN0ZDo6aXRlcmF0b3JfdHJhaXRzPEJhc2VJdGVyYXRvcj46OnZhbHVlX3R5cGUgYmFzZV92YWx1ZV90eXBlOwotCi0gICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKHNpemVvZihiYXNlX3ZhbHVlX3R5cGUpKkNIQVJfQklUID09IDMyKTsKLSAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoc2l6ZW9mKFU4VHlwZSkqQ0hBUl9CSVQgPT0gOCk7Ci0jZW5kaWYKLQotcHVibGljOgotICAgdHlwZW5hbWUgYmFzZV90eXBlOjpyZWZlcmVuY2UKLSAgICAgIGRlcmVmZXJlbmNlKCljb25zdAotICAgewotICAgICAgaWYobV9jdXJyZW50ID09IDQpCi0gICAgICAgICBleHRyYWN0X2N1cnJlbnQoKTsKLSAgICAgIHJldHVybiBtX3ZhbHVlc1ttX2N1cnJlbnRdOwotICAgfQotICAgYm9vbCBlcXVhbChjb25zdCB1MzJfdG9fdThfaXRlcmF0b3ImIHRoYXQpY29uc3QKLSAgIHsKLSAgICAgIGlmKG1fcG9zaXRpb24gPT0gdGhhdC5tX3Bvc2l0aW9uKQotICAgICAgewotICAgICAgICAgLy8gZWl0aGVyIHRoZSBtX2N1cnJlbnQncyBtdXN0IGJlIGVxdWFsLCBvciBvbmUgbXVzdCBiZSAwIGFuZCAKLSAgICAgICAgIC8vIHRoZSBvdGhlciA0OiB3aGljaCBtZWFucyBuZWl0aGVyIG11c3QgaGF2ZSBiaXRzIDEgb3IgMiBzZXQ6Ci0gICAgICAgICByZXR1cm4gKG1fY3VycmVudCA9PSB0aGF0Lm1fY3VycmVudCkKLSAgICAgICAgICAgIHx8ICgoKG1fY3VycmVudCB8IHRoYXQubV9jdXJyZW50KSAmIDMpID09IDApOwotICAgICAgfQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgfQotICAgdm9pZCBpbmNyZW1lbnQoKQotICAgewotICAgICAgLy8gaWYgd2UgaGF2ZSBhIHBlbmRpbmcgcmVhZCB0aGVuIHJlYWQgbm93LCBzbyB0aGF0IHdlIGtub3cgd2hldGhlcgotICAgICAgLy8gdG8gc2tpcCBhIHBvc2l0aW9uLCBvciBtb3ZlIHRvIGEgbG93LXN1cnJvZ2F0ZToKLSAgICAgIGlmKG1fY3VycmVudCA9PSA0KQotICAgICAgewotICAgICAgICAgLy8gcGVuZGluZyByZWFkOgotICAgICAgICAgZXh0cmFjdF9jdXJyZW50KCk7Ci0gICAgICB9Ci0gICAgICAvLyBtb3ZlIHRvIHRoZSBuZXh0IHN1cnJvZ2F0ZSBwb3NpdGlvbjoKLSAgICAgICsrbV9jdXJyZW50OwotICAgICAgLy8gaWYgd2UndmUgcmVhY2hlZCB0aGUgZW5kIHNraXAgYSBwb3NpdGlvbjoKLSAgICAgIGlmKG1fdmFsdWVzW21fY3VycmVudF0gPT0gMCkKLSAgICAgIHsKLSAgICAgICAgIG1fY3VycmVudCA9IDQ7Ci0gICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICB9Ci0gICB9Ci0gICB2b2lkIGRlY3JlbWVudCgpCi0gICB7Ci0gICAgICBpZigobV9jdXJyZW50ICYgMykgPT0gMCkKLSAgICAgIHsKLSAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgIGV4dHJhY3RfY3VycmVudCgpOwotICAgICAgICAgbV9jdXJyZW50ID0gMzsKLSAgICAgICAgIHdoaWxlKG1fY3VycmVudCAmJiAobV92YWx1ZXNbbV9jdXJyZW50XSA9PSAwKSkKLSAgICAgICAgICAgIC0tbV9jdXJyZW50OwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgICAgLS1tX2N1cnJlbnQ7Ci0gICB9Ci0gICBCYXNlSXRlcmF0b3IgYmFzZSgpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBtX3Bvc2l0aW9uOwotICAgfQotICAgLy8gY29uc3RydWN0OgotICAgdTMyX3RvX3U4X2l0ZXJhdG9yKCkgOiBtX3Bvc2l0aW9uKCksIG1fY3VycmVudCgwKQotICAgewotICAgICAgbV92YWx1ZXNbMF0gPSAwOwotICAgICAgbV92YWx1ZXNbMV0gPSAwOwotICAgICAgbV92YWx1ZXNbMl0gPSAwOwotICAgICAgbV92YWx1ZXNbM10gPSAwOwotICAgICAgbV92YWx1ZXNbNF0gPSAwOwotICAgfQotICAgdTMyX3RvX3U4X2l0ZXJhdG9yKEJhc2VJdGVyYXRvciBiKSA6IG1fcG9zaXRpb24oYiksIG1fY3VycmVudCg0KQotICAgewotICAgICAgbV92YWx1ZXNbMF0gPSAwOwotICAgICAgbV92YWx1ZXNbMV0gPSAwOwotICAgICAgbV92YWx1ZXNbMl0gPSAwOwotICAgICAgbV92YWx1ZXNbM10gPSAwOwotICAgICAgbV92YWx1ZXNbNF0gPSAwOwotICAgfQotcHJpdmF0ZToKLQotICAgdm9pZCBleHRyYWN0X2N1cnJlbnQoKWNvbnN0Ci0gICB7Ci0gICAgICBuZG5ib29zdDo6dWludDMyX3QgYyA9ICptX3Bvc2l0aW9uOwotICAgICAgaWYoYyA+IDB4MTBGRkZGdSkKLSAgICAgICAgIGRldGFpbDo6aW52YWxpZF91dGYzMl9jb2RlX3BvaW50KGMpOwotICAgICAgaWYoYyA8IDB4ODB1KQotICAgICAgewotICAgICAgICAgbV92YWx1ZXNbMF0gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjKTsKLSAgICAgICAgIG1fdmFsdWVzWzFdID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oMHUpOwotICAgICAgICAgbV92YWx1ZXNbMl0gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigwdSk7Ci0gICAgICAgICBtX3ZhbHVlc1szXSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDB1KTsKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYoYyA8IDB4ODAwdSkKLSAgICAgIHsKLSAgICAgICAgIG1fdmFsdWVzWzBdID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oMHhDMHUgKyAoYyA+PiA2KSk7Ci0gICAgICAgICBtX3ZhbHVlc1sxXSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDB4ODB1ICsgKGMgJiAweDNGdSkpOwotICAgICAgICAgbV92YWx1ZXNbMl0gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigwdSk7Ci0gICAgICAgICBtX3ZhbHVlc1szXSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDB1KTsKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYoYyA8IDB4MTAwMDB1KQotICAgICAgewotICAgICAgICAgbV92YWx1ZXNbMF0gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigweEUwdSArIChjID4+IDEyKSk7Ci0gICAgICAgICBtX3ZhbHVlc1sxXSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDB4ODB1ICsgKChjID4+IDYpICYgMHgzRnUpKTsKLSAgICAgICAgIG1fdmFsdWVzWzJdID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oMHg4MHUgKyAoYyAmIDB4M0Z1KSk7Ci0gICAgICAgICBtX3ZhbHVlc1szXSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDB1KTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgIG1fdmFsdWVzWzBdID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oMHhGMHUgKyAoYyA+PiAxOCkpOwotICAgICAgICAgbV92YWx1ZXNbMV0gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigweDgwdSArICgoYyA+PiAxMikgJiAweDNGdSkpOwotICAgICAgICAgbV92YWx1ZXNbMl0gPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigweDgwdSArICgoYyA+PiA2KSAmIDB4M0Z1KSk7Ci0gICAgICAgICBtX3ZhbHVlc1szXSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDB4ODB1ICsgKGMgJiAweDNGdSkpOwotICAgICAgfQotICAgICAgbV9jdXJyZW50PSAwOwotICAgfQotICAgQmFzZUl0ZXJhdG9yIG1fcG9zaXRpb247Ci0gICBtdXRhYmxlIFU4VHlwZSBtX3ZhbHVlc1s1XTsKLSAgIG11dGFibGUgdW5zaWduZWQgbV9jdXJyZW50OwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIEJhc2VJdGVyYXRvciwgY2xhc3MgVTMyVHlwZSA9IDo6bmRuYm9vc3Q6OnVpbnQzMl90PgotY2xhc3MgdThfdG9fdTMyX2l0ZXJhdG9yCi0gICA6IHB1YmxpYyBuZG5ib29zdDo6aXRlcmF0b3JfZmFjYWRlPHU4X3RvX3UzMl9pdGVyYXRvcjxCYXNlSXRlcmF0b3IsIFUzMlR5cGU+LCBVMzJUeXBlLCBzdGQ6OmJpZGlyZWN0aW9uYWxfaXRlcmF0b3JfdGFnLCBjb25zdCBVMzJUeXBlPgotewotICAgdHlwZWRlZiBuZG5ib29zdDo6aXRlcmF0b3JfZmFjYWRlPHU4X3RvX3UzMl9pdGVyYXRvcjxCYXNlSXRlcmF0b3IsIFUzMlR5cGU+LCBVMzJUeXBlLCBzdGQ6OmJpZGlyZWN0aW9uYWxfaXRlcmF0b3JfdGFnLCBjb25zdCBVMzJUeXBlPiBiYXNlX3R5cGU7Ci0gICAvLyBzcGVjaWFsIHZhbHVlcyBmb3IgcGVuZGluZyBpdGVyYXRvciByZWFkczoKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChVMzJUeXBlLCBwZW5kaW5nX3JlYWQgPSAweGZmZmZmZmZmdSk7Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19TVERfSVRFUkFUT1JfVFJBSVRTKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotICAgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6Oml0ZXJhdG9yX3RyYWl0czxCYXNlSXRlcmF0b3I+Ojp2YWx1ZV90eXBlIGJhc2VfdmFsdWVfdHlwZTsKLQotICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVChzaXplb2YoYmFzZV92YWx1ZV90eXBlKSpDSEFSX0JJVCA9PSA4KTsKLSAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoc2l6ZW9mKFUzMlR5cGUpKkNIQVJfQklUID09IDMyKTsKLSNlbmRpZgotCi1wdWJsaWM6Ci0gICB0eXBlbmFtZSBiYXNlX3R5cGU6OnJlZmVyZW5jZQotICAgICAgZGVyZWZlcmVuY2UoKWNvbnN0Ci0gICB7Ci0gICAgICBpZihtX3ZhbHVlID09IHBlbmRpbmdfcmVhZCkKLSAgICAgICAgIGV4dHJhY3RfY3VycmVudCgpOwotICAgICAgcmV0dXJuIG1fdmFsdWU7Ci0gICB9Ci0gICBib29sIGVxdWFsKGNvbnN0IHU4X3RvX3UzMl9pdGVyYXRvciYgdGhhdCljb25zdAotICAgewotICAgICAgcmV0dXJuIG1fcG9zaXRpb24gPT0gdGhhdC5tX3Bvc2l0aW9uOwotICAgfQotICAgdm9pZCBpbmNyZW1lbnQoKQotICAgewotICAgICAgLy8gV2UgbXVzdCBub3Qgc3RhcnQgd2l0aCBhIGNvbnRpbnVhdGlvbiBjaGFyYWN0ZXI6Ci0gICAgICBpZigoc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OnVpbnQ4X3Q+KCptX3Bvc2l0aW9uKSAmIDB4QzApID09IDB4ODApCi0gICAgICAgICBpbnZhbGlkX3NlcXVlbmNlKCk7Ci0gICAgICAvLyBza2lwIGhpZ2ggc3Vycm9nYXRlIGZpcnN0IGlmIHRoZXJlIGlzIG9uZToKLSAgICAgIHVuc2lnbmVkIGMgPSBkZXRhaWw6OnV0ZjhfYnl0ZV9jb3VudCgqbV9wb3NpdGlvbik7Ci0gICAgICBpZihtX3ZhbHVlID09IHBlbmRpbmdfcmVhZCkKLSAgICAgIHsKLSAgICAgICAgIC8vIFNpbmNlIHdlIGhhdmVuJ3QgcmVhZCBpbiBhIHZhbHVlLCB3ZSBuZWVkIHRvIHZhbGlkYXRlIHRoZSBjb2RlIHBvaW50czoKLSAgICAgICAgIGZvcih1bnNpZ25lZCBpID0gMDsgaSA8IGM7ICsraSkKLSAgICAgICAgIHsKLSAgICAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIC8vIFdlIG11c3QgaGF2ZSBhIGNvbnRpbnVhdGlvbiBieXRlOgotICAgICAgICAgICAgaWYoKGkgIT0gYyAtIDEpICYmICgoc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OnVpbnQ4X3Q+KCptX3Bvc2l0aW9uKSAmIDB4QzApICE9IDB4ODApKQotICAgICAgICAgICAgICAgaW52YWxpZF9zZXF1ZW5jZSgpOwotICAgICAgICAgfQotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICAgc3RkOjphZHZhbmNlKG1fcG9zaXRpb24sIGMpOwotICAgICAgfQotICAgICAgbV92YWx1ZSA9IHBlbmRpbmdfcmVhZDsKLSAgIH0KLSAgIHZvaWQgZGVjcmVtZW50KCkKLSAgIHsKLSAgICAgIC8vIEtlZXAgYmFja3RyYWNraW5nIHVudGlsIHdlIGRvbid0IGhhdmUgYSB0cmFpbGluZyBjaGFyYWN0ZXI6Ci0gICAgICB1bnNpZ25lZCBjb3VudCA9IDA7Ci0gICAgICB3aGlsZSgoKi0tbV9wb3NpdGlvbiAmIDB4QzB1KSA9PSAweDgwdSkgKytjb3VudDsKLSAgICAgIC8vIG5vdyBjaGVjayB0aGF0IHRoZSBzZXF1ZW5jZSB3YXMgdmFsaWQ6Ci0gICAgICBpZihjb3VudCAhPSBkZXRhaWw6OnV0ZjhfdHJhaWxpbmdfYnl0ZV9jb3VudCgqbV9wb3NpdGlvbikpCi0gICAgICAgICBpbnZhbGlkX3NlcXVlbmNlKCk7Ci0gICAgICBtX3ZhbHVlID0gcGVuZGluZ19yZWFkOwotICAgfQotICAgQmFzZUl0ZXJhdG9yIGJhc2UoKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gbV9wb3NpdGlvbjsKLSAgIH0KLSAgIC8vIGNvbnN0cnVjdDoKLSAgIHU4X3RvX3UzMl9pdGVyYXRvcigpIDogbV9wb3NpdGlvbigpCi0gICB7Ci0gICAgICBtX3ZhbHVlID0gcGVuZGluZ19yZWFkOwotICAgfQotICAgdThfdG9fdTMyX2l0ZXJhdG9yKEJhc2VJdGVyYXRvciBiKSA6IG1fcG9zaXRpb24oYikKLSAgIHsKLSAgICAgIG1fdmFsdWUgPSBwZW5kaW5nX3JlYWQ7Ci0gICB9Ci0gICAvLwotICAgLy8gQ2hlY2tlZCBjb25zdHJ1Y3RvcjoKLSAgIC8vCi0gICB1OF90b191MzJfaXRlcmF0b3IoQmFzZUl0ZXJhdG9yIGIsIEJhc2VJdGVyYXRvciBzdGFydCwgQmFzZUl0ZXJhdG9yIGVuZCkgOiBtX3Bvc2l0aW9uKGIpCi0gICB7Ci0gICAgICBtX3ZhbHVlID0gcGVuZGluZ19yZWFkOwotICAgICAgLy8KLSAgICAgIC8vIFdlIG11c3Qgbm90IHN0YXJ0IHdpdGggYSBjb250aW51YXRpb24gY2hhcmFjdGVyLCBvciBlbmQgd2l0aCBhIAotICAgICAgLy8gdHJ1bmNhdGVkIFVURi04IHNlcXVlbmNlIG90aGVyd2lzZSB3ZSBydW4gdGhlIHJpc2sgb2YgZ29pbmcgcGFzdAotICAgICAgLy8gdGhlIHN0YXJ0L2VuZCBvZiB0aGUgdW5kZXJseWluZyBzZXF1ZW5jZToKLSAgICAgIC8vCi0gICAgICBpZihzdGFydCAhPSBlbmQpCi0gICAgICB7Ci0gICAgICAgICB1bnNpZ25lZCBjaGFyIHYgPSAqc3RhcnQ7Ci0gICAgICAgICBpZigodiAmIDB4QzB1KSA9PSAweDgwdSkKLSAgICAgICAgICAgIGludmFsaWRfc2VxdWVuY2UoKTsKLSAgICAgICAgIGlmKChiICE9IHN0YXJ0KSAmJiAoYiAhPSBlbmQpICYmICgoKmIgJiAweEMwdSkgPT0gMHg4MHUpKQotICAgICAgICAgICAgaW52YWxpZF9zZXF1ZW5jZSgpOwotICAgICAgICAgQmFzZUl0ZXJhdG9yIHBvcyA9IGVuZDsKLSAgICAgICAgIGRvCi0gICAgICAgICB7Ci0gICAgICAgICAgICB2ID0gKi0tcG9zOwotICAgICAgICAgfQotICAgICAgICAgd2hpbGUoKHN0YXJ0ICE9IHBvcykgJiYgKCh2ICYgMHhDMHUpID09IDB4ODB1KSk7Ci0gICAgICAgICBzdGQ6OnB0cmRpZmZfdCBleHRyYSA9IGRldGFpbDo6dXRmOF9ieXRlX2NvdW50KHYpOwotICAgICAgICAgaWYoc3RkOjpkaXN0YW5jZShwb3MsIGVuZCkgPCBleHRyYSkKLSAgICAgICAgICAgIGludmFsaWRfc2VxdWVuY2UoKTsKLSAgICAgIH0KLSAgIH0KLXByaXZhdGU6Ci0gICBzdGF0aWMgdm9pZCBpbnZhbGlkX3NlcXVlbmNlKCkKLSAgIHsKLSAgICAgIHN0ZDo6b3V0X29mX3JhbmdlIGUoIkludmFsaWQgVVRGLTggc2VxdWVuY2UgZW5jb3VudGVyZWQgd2hpbGUgdHJ5aW5nIHRvIGVuY29kZSBVVEYtMzIgY2hhcmFjdGVyIik7Ci0gICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKGUpOwotICAgfQotICAgdm9pZCBleHRyYWN0X2N1cnJlbnQoKWNvbnN0Ci0gICB7Ci0gICAgICBtX3ZhbHVlID0gc3RhdGljX2Nhc3Q8VTMyVHlwZT4oc3RhdGljX2Nhc3Q8IDo6bmRuYm9vc3Q6OnVpbnQ4X3Q+KCptX3Bvc2l0aW9uKSk7Ci0gICAgICAvLyB3ZSBtdXN0IG5vdCBoYXZlIGEgY29udGludWF0aW9uIGNoYXJhY3RlcjoKLSAgICAgIGlmKChtX3ZhbHVlICYgMHhDMHUpID09IDB4ODB1KQotICAgICAgICAgaW52YWxpZF9zZXF1ZW5jZSgpOwotICAgICAgLy8gc2VlIGhvdyBtYW55IGV4dHJhIGJ5dGVzIHdlIGhhdmU6Ci0gICAgICB1bnNpZ25lZCBleHRyYSA9IGRldGFpbDo6dXRmOF90cmFpbGluZ19ieXRlX2NvdW50KCptX3Bvc2l0aW9uKTsKLSAgICAgIC8vIGV4dHJhY3QgdGhlIGV4dHJhIGJpdHMsIDYgZnJvbSBlYWNoIGV4dHJhIGJ5dGU6Ci0gICAgICBCYXNlSXRlcmF0b3IgbmV4dChtX3Bvc2l0aW9uKTsKLSAgICAgIGZvcih1bnNpZ25lZCBjID0gMDsgYyA8IGV4dHJhOyArK2MpCi0gICAgICB7Ci0gICAgICAgICArK25leHQ7Ci0gICAgICAgICBtX3ZhbHVlIDw8PSA2OwotICAgICAgICAgLy8gV2UgbXVzdCBoYXZlIGEgY29udGludWF0aW9uIGJ5dGU6Ci0gICAgICAgICBpZigoc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OnVpbnQ4X3Q+KCpuZXh0KSAmIDB4QzApICE9IDB4ODApCi0gICAgICAgICAgICBpbnZhbGlkX3NlcXVlbmNlKCk7Ci0gICAgICAgICBtX3ZhbHVlICs9IHN0YXRpY19jYXN0PG5kbmJvb3N0Ojp1aW50OF90PigqbmV4dCkgJiAweDNGdTsKLSAgICAgIH0KLSAgICAgIC8vIHdlIG5vdyBuZWVkIHRvIHJlbW92ZSBhIGZldyBvZiB0aGUgbGVmdG1vc3QgYml0cywgYnV0IGhvdyBtYW55IGRlcGVuZHMKLSAgICAgIC8vIHVwb24gaG93IG1hbnkgZXh0cmEgYnl0ZXMgd2UndmUgZXh0cmFjdGVkOgotICAgICAgc3RhdGljIGNvbnN0IG5kbmJvb3N0Ojp1aW50MzJfdCBtYXNrc1s0XSA9IAotICAgICAgewotICAgICAgICAgMHg3RnUsCi0gICAgICAgICAweDdGRnUsCi0gICAgICAgICAweEZGRkZ1LAotICAgICAgICAgMHgxRkZGRkZ1LAotICAgICAgfTsKLSAgICAgIG1fdmFsdWUgJj0gbWFza3NbZXh0cmFdOwotICAgICAgLy8gY2hlY2sgdGhlIHJlc3VsdDoKLSAgICAgIGlmKG1fdmFsdWUgPiBzdGF0aWNfY2FzdDxVMzJUeXBlPigweDEwRkZGRnUpKQotICAgICAgICAgaW52YWxpZF9zZXF1ZW5jZSgpOwotICAgfQotICAgQmFzZUl0ZXJhdG9yIG1fcG9zaXRpb247Ci0gICBtdXRhYmxlIFUzMlR5cGUgbV92YWx1ZTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBCYXNlSXRlcmF0b3I+Ci1jbGFzcyB1dGYxNl9vdXRwdXRfaXRlcmF0b3IKLXsKLXB1YmxpYzoKLSAgIHR5cGVkZWYgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlmZmVyZW5jZV90eXBlOwotICAgdHlwZWRlZiB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZV90eXBlOwotICAgdHlwZWRlZiBuZG5ib29zdDo6dWludDMyX3QqICAgICAgICAgICAgICAgICAgICAgICBwb2ludGVyOwotICAgdHlwZWRlZiBuZG5ib29zdDo6dWludDMyX3QmICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2U7Ci0gICB0eXBlZGVmIHN0ZDo6b3V0cHV0X2l0ZXJhdG9yX3RhZyAgICAgICAgICAgICAgIGl0ZXJhdG9yX2NhdGVnb3J5OwotCi0gICB1dGYxNl9vdXRwdXRfaXRlcmF0b3IoY29uc3QgQmFzZUl0ZXJhdG9yJiBiKQotICAgICAgOiBtX3Bvc2l0aW9uKGIpe30KLSAgIHV0ZjE2X291dHB1dF9pdGVyYXRvcihjb25zdCB1dGYxNl9vdXRwdXRfaXRlcmF0b3ImIHRoYXQpCi0gICAgICA6IG1fcG9zaXRpb24odGhhdC5tX3Bvc2l0aW9uKXt9Ci0gICB1dGYxNl9vdXRwdXRfaXRlcmF0b3ImIG9wZXJhdG9yPShjb25zdCB1dGYxNl9vdXRwdXRfaXRlcmF0b3ImIHRoYXQpCi0gICB7Ci0gICAgICBtX3Bvc2l0aW9uID0gdGhhdC5tX3Bvc2l0aW9uOwotICAgICAgcmV0dXJuICp0aGlzOwotICAgfQotICAgY29uc3QgdXRmMTZfb3V0cHV0X2l0ZXJhdG9yJiBvcGVyYXRvciooKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gKnRoaXM7Ci0gICB9Ci0gICB2b2lkIG9wZXJhdG9yPShuZG5ib29zdDo6dWludDMyX3QgdmFsKWNvbnN0Ci0gICB7Ci0gICAgICBwdXNoKHZhbCk7Ci0gICB9Ci0gICB1dGYxNl9vdXRwdXRfaXRlcmF0b3ImIG9wZXJhdG9yKysoKQotICAgewotICAgICAgcmV0dXJuICp0aGlzOwotICAgfQotICAgdXRmMTZfb3V0cHV0X2l0ZXJhdG9yJiBvcGVyYXRvcisrKGludCkKLSAgIHsKLSAgICAgIHJldHVybiAqdGhpczsKLSAgIH0KLSAgIEJhc2VJdGVyYXRvciBiYXNlKCljb25zdAotICAgewotICAgICAgcmV0dXJuIG1fcG9zaXRpb247Ci0gICB9Ci1wcml2YXRlOgotICAgdm9pZCBwdXNoKG5kbmJvb3N0Ojp1aW50MzJfdCB2KWNvbnN0Ci0gICB7Ci0gICAgICBpZih2ID49IDB4MTAwMDB1KQotICAgICAgewotICAgICAgICAgLy8gYmVnaW4gYnkgY2hlY2tpbmcgZm9yIGEgY29kZSBwb2ludCBvdXQgb2YgcmFuZ2U6Ci0gICAgICAgICBpZih2ID4gMHgxMEZGRkZ1KQotICAgICAgICAgICAgZGV0YWlsOjppbnZhbGlkX3V0ZjMyX2NvZGVfcG9pbnQodik7Ci0gICAgICAgICAvLyBzcGxpdCBpbnRvIHR3byBzdXJyb2dhdGVzOgotICAgICAgICAgKm1fcG9zaXRpb24rKyA9IHN0YXRpY19jYXN0PG5kbmJvb3N0Ojp1aW50MTZfdD4odiA+PiAxMCkgKyBkZXRhaWw6OmhpZ2hfc3Vycm9nYXRlX2Jhc2U7Ci0gICAgICAgICAqbV9wb3NpdGlvbisrID0gc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OnVpbnQxNl90Pih2ICYgZGV0YWlsOjp0ZW5fYml0X21hc2spICsgZGV0YWlsOjpsb3dfc3Vycm9nYXRlX2Jhc2U7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgICAvLyAxNi1iaXQgY29kZSBwb2ludDoKLSAgICAgICAgIC8vIHZhbHVlIG11c3Qgbm90IGJlIGEgc3Vycm9nYXRlOgotICAgICAgICAgaWYoZGV0YWlsOjppc19zdXJyb2dhdGUodikpCi0gICAgICAgICAgICBkZXRhaWw6OmludmFsaWRfdXRmMzJfY29kZV9wb2ludCh2KTsKLSAgICAgICAgICptX3Bvc2l0aW9uKysgPSBzdGF0aWNfY2FzdDxuZG5ib29zdDo6dWludDE2X3Q+KHYpOwotICAgICAgfQotICAgfQotICAgbXV0YWJsZSBCYXNlSXRlcmF0b3IgbV9wb3NpdGlvbjsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBCYXNlSXRlcmF0b3I+Ci1jbGFzcyB1dGY4X291dHB1dF9pdGVyYXRvcgotewotcHVibGljOgotICAgdHlwZWRlZiB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWZmZXJlbmNlX3R5cGU7Ci0gICB0eXBlZGVmIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlX3R5cGU7Ci0gICB0eXBlZGVmIG5kbmJvb3N0Ojp1aW50MzJfdCogICAgICAgICAgICAgICAgICAgICAgIHBvaW50ZXI7Ci0gICB0eXBlZGVmIG5kbmJvb3N0Ojp1aW50MzJfdCYgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZTsKLSAgIHR5cGVkZWYgc3RkOjpvdXRwdXRfaXRlcmF0b3JfdGFnICAgICAgICAgICAgICAgaXRlcmF0b3JfY2F0ZWdvcnk7Ci0KLSAgIHV0Zjhfb3V0cHV0X2l0ZXJhdG9yKGNvbnN0IEJhc2VJdGVyYXRvciYgYikKLSAgICAgIDogbV9wb3NpdGlvbihiKXt9Ci0gICB1dGY4X291dHB1dF9pdGVyYXRvcihjb25zdCB1dGY4X291dHB1dF9pdGVyYXRvciYgdGhhdCkKLSAgICAgIDogbV9wb3NpdGlvbih0aGF0Lm1fcG9zaXRpb24pe30KLSAgIHV0Zjhfb3V0cHV0X2l0ZXJhdG9yJiBvcGVyYXRvcj0oY29uc3QgdXRmOF9vdXRwdXRfaXRlcmF0b3ImIHRoYXQpCi0gICB7Ci0gICAgICBtX3Bvc2l0aW9uID0gdGhhdC5tX3Bvc2l0aW9uOwotICAgICAgcmV0dXJuICp0aGlzOwotICAgfQotICAgY29uc3QgdXRmOF9vdXRwdXRfaXRlcmF0b3ImIG9wZXJhdG9yKigpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiAqdGhpczsKLSAgIH0KLSAgIHZvaWQgb3BlcmF0b3I9KG5kbmJvb3N0Ojp1aW50MzJfdCB2YWwpY29uc3QKLSAgIHsKLSAgICAgIHB1c2godmFsKTsKLSAgIH0KLSAgIHV0Zjhfb3V0cHV0X2l0ZXJhdG9yJiBvcGVyYXRvcisrKCkKLSAgIHsKLSAgICAgIHJldHVybiAqdGhpczsKLSAgIH0KLSAgIHV0Zjhfb3V0cHV0X2l0ZXJhdG9yJiBvcGVyYXRvcisrKGludCkKLSAgIHsKLSAgICAgIHJldHVybiAqdGhpczsKLSAgIH0KLSAgIEJhc2VJdGVyYXRvciBiYXNlKCljb25zdAotICAgewotICAgICAgcmV0dXJuIG1fcG9zaXRpb247Ci0gICB9Ci1wcml2YXRlOgotICAgdm9pZCBwdXNoKG5kbmJvb3N0Ojp1aW50MzJfdCBjKWNvbnN0Ci0gICB7Ci0gICAgICBpZihjID4gMHgxMEZGRkZ1KQotICAgICAgICAgZGV0YWlsOjppbnZhbGlkX3V0ZjMyX2NvZGVfcG9pbnQoYyk7Ci0gICAgICBpZihjIDwgMHg4MHUpCi0gICAgICB7Ci0gICAgICAgICAqbV9wb3NpdGlvbisrID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oYyk7Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmKGMgPCAweDgwMHUpCi0gICAgICB7Ci0gICAgICAgICAqbV9wb3NpdGlvbisrID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oMHhDMHUgKyAoYyA+PiA2KSk7Ci0gICAgICAgICAqbV9wb3NpdGlvbisrID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oMHg4MHUgKyAoYyAmIDB4M0Z1KSk7Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmKGMgPCAweDEwMDAwdSkKLSAgICAgIHsKLSAgICAgICAgICptX3Bvc2l0aW9uKysgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigweEUwdSArIChjID4+IDEyKSk7Ci0gICAgICAgICAqbV9wb3NpdGlvbisrID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oMHg4MHUgKyAoKGMgPj4gNikgJiAweDNGdSkpOwotICAgICAgICAgKm1fcG9zaXRpb24rKyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDB4ODB1ICsgKGMgJiAweDNGdSkpOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICAgKm1fcG9zaXRpb24rKyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDB4RjB1ICsgKGMgPj4gMTgpKTsKLSAgICAgICAgICptX3Bvc2l0aW9uKysgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigweDgwdSArICgoYyA+PiAxMikgJiAweDNGdSkpOwotICAgICAgICAgKm1fcG9zaXRpb24rKyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDB4ODB1ICsgKChjID4+IDYpICYgMHgzRnUpKTsKLSAgICAgICAgICptX3Bvc2l0aW9uKysgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigweDgwdSArIChjICYgMHgzRnUpKTsKLSAgICAgIH0KLSAgIH0KLSAgIG11dGFibGUgQmFzZUl0ZXJhdG9yIG1fcG9zaXRpb247Ci19OwotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfUkVHRVhfVU5JQ09ERV9JVEVSQVRPUl9IUFAKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC9yZWdleF90cmFpdHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWdleC9yZWdleF90cmFpdHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZmRiODc0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvcmVnZXhfdHJhaXRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDIKLSAqIEpvaG4gTWFkZG9jawotICoKLSAqIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotICogQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0gKiBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICovCi0gCi0gLyoKLSAgKiAgIExPQ0FUSU9OOiAgICBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0gICogICBGSUxFICAgICAgICAgcmVnZXhfdHJhaXRzLmhwcAotICAqICAgVkVSU0lPTiAgICAgIHNlZSA8bmRuYm9vc3QvdmVyc2lvbi5ocHA+Ci0gICogICBERVNDUklQVElPTjogRGVjbGFyZXMgcmVndWxhciBleHByZXNzaW9uIHRyYWl0cyBjbGFzc2VzLgotICAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1RSQUlUU19IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfVFJBSVRTX0hQUAotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX0NPTkZJR19IUFAKLSMgIGluY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L2NvbmZpZy5ocHA+Ci0jZW5kaWYKLQotIyAgaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1RSQUlUU19IUFBfSU5DTFVERUQKLSMgICAgIGluY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X3RyYWl0cy5ocHA+Ci0jICBlbmRpZgotCi0jZW5kaWYgLy8gaW5jbHVkZQotCi0KLQotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdXNlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3VzZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMTUxZmMxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdXNlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5MyArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAyCi0gKiBKb2huIE1hZGRvY2sKLSAqCi0gKiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLSAqIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotICogTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqLwotIAotIC8qCi0gICogICBMT0NBVElPTjogICAgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotICAqICAgRklMRSAgICAgICAgIHVzZXIuaHBwCi0gICogICBWRVJTSU9OICAgICAgc2VlIDxuZG5ib29zdC92ZXJzaW9uLmhwcD4KLSAgKiAgIERFU0NSSVBUSU9OOiBVc2VyIHNldHRhYmxlIG9wdGlvbnMuCi0gICovCi0KLS8vIGRlZmluZSBpZiB5b3Ugd2FudCB0aGUgcmVnZXggbGlicmFyeSB0byB1c2UgdGhlIEMgbG9jYWxlCi0vLyBldmVuIG9uIFdpbjMyOgotLy8gI2RlZmluZSBORE5CT09TVF9SRUdFWF9VU0VfQ19MT0NBTEUKLQotLy8gZGVmaW5lIHRoaXMgaXMgeW91IHdhbnQgdGhlIHJlZ2V4IGxpYnJhcnkgdG8gdXNlIHRoZSBDKysKLS8vIGxvY2FsZToKLS8vICNkZWZpbmUgTkROQk9PU1RfUkVHRVhfVVNFX0NQUF9MT0NBTEUKLQotLy8gZGVmaW5lIHRoaXMgaWYgdGhlIHJ1bnRpbWUgbGlicmFyeSBpcyBhIGRsbCwgYW5kIHlvdQotLy8gd2FudCBORE5CT09TVF9SRUdFWF9EWU5fTElOSyB0byBzZXQgdXAgZGxsIGV4cG9ydHMvaW1wb3J0cwotLy8gd2l0aCBfX2RlY2xzcGVjKGRsbGV4cG9ydCkvX19kZWNsc3BlYyhkbGxpbXBvcnQuKQotLy8gI2RlZmluZSBORE5CT09TVF9SRUdFWF9IQVNfRExMX1JVTlRJTUUKLQotLy8gZGVmaW5lIHRoaXMgaWYgeW91IHdhbnQgdG8gZHluYW1pY2FsbHkgbGluayB0byByZWdleCwKLS8vIGlmIHRoZSBydW50aW1lIGxpYnJhcnkgaXMgYWxzbyBhIGRsbCAoUHJvYmFibHkgV2luMzIgc3BlY2lmaWMsCi0vLyBhbmQgaGFzIG5vIGVmZmVjdCB1bmxlc3MgTkROQk9PU1RfUkVHRVhfSEFTX0RMTF9SVU5USU1FIGlzIHNldCk6Ci0vLyAjZGVmaW5lIE5ETkJPT1NUX1JFR0VYX0RZTl9MSU5LCi0KLS8vIGRlZmluZSB0aGlzIGlmIHlvdSBkb24ndCB3YW50IHRoZSBsaWIgdG8gYXV0b21hdGljYWxseQotLy8gc2VsZWN0IGl0cyBsaW5rIGxpYnJhcmllczoKLS8vICNkZWZpbmUgTkROQk9PU1RfUkVHRVhfTk9fTElCCi0KLS8vIGRlZmluZSB0aGlzIGlmIHRlbXBsYXRlcyB3aXRoIHN3aXRjaCBzdGF0ZW1lbnRzIGNhdXNlIHByb2JsZW1zOgotLy8gI2RlZmluZSBORE5CT09TVF9SRUdFWF9OT19URU1QTEFURV9TV0lUQ0hfTUVSR0UKLSAKLS8vIGRlZmluZSB0aGlzIHRvIGRpc2FibGUgV2luMzIgc3VwcG9ydCB3aGVuIGF2YWlsYWJsZToKLS8vICNkZWZpbmUgTkROQk9PU1RfUkVHRVhfTk9fVzMyCi0KLS8vIGRlZmluZSB0aGlzIGlmIGJvb2wgaXMgbm90IGEgcmVhbCB0eXBlOgotLy8gI2RlZmluZSBORE5CT09TVF9SRUdFWF9OT19CT09MCi0KLS8vIGRlZmluZSB0aGlzIGlmIG5vIHRlbXBsYXRlIGluc3RhbmNlcyBhcmUgdG8gYmUgcGxhY2VkIGluCi0vLyB0aGUgbGlicmFyeSByYXRoZXIgdGhhbiB1c2VycyBvYmplY3QgZmlsZXM6Ci0vLyAjZGVmaW5lIE5ETkJPT1NUX1JFR0VYX05PX0VYVEVSTkFMX1RFTVBMQVRFUwotCi0vLyBkZWZpbmUgdGhpcyBpZiB0aGUgZm9yd2FyZCBkZWNsYXJhdGlvbnMgaW4gcmVnZXhfZndkLmhwcAotLy8gY2F1c2UgbW9yZSBwcm9ibGVtcyB0aGFuIHRoZXkgYXJlIHdvcnRoOgotLy8gI2RlZmluZSBORE5CT09TVF9SRUdFWF9OT19GV0QKLQotLy8gZGVmaW5lIHRoaXMgaWYgeW91ciBjb21waWxlciBzdXBwb3J0cyBNUyBXaW5kb3dzIHN0cnVjdHVyZWQKLS8vIGV4Y2VwdGlvbiBoYW5kbGluZy4KLS8vICNkZWZpbmUgTkROQk9PU1RfUkVHRVhfSEFTX01TX1NUQUNLX0dVQVJECi0KLS8vIGRlZmluZSB0aGlzIGlmIHlvdSB3YW50IHRvIHVzZSB0aGUgcmVjdXJzaXZlIGFsZ29yaXRobQotLy8gZXZlbiBpZiBORE5CT09TVF9SRUdFWF9IQVNfTVNfU1RBQ0tfR1VBUkQgaXMgbm90IGRlZmluZWQuCi0vLyAjZGVmaW5lIE5ETkJPT1NUX1JFR0VYX1JFQ1VSU0lWRQotCi0vLyBkZWZpbmUgdGhpcyBpZiB5b3Ugd2FudCB0byB1c2UgdGhlIG5vbi1yZWN1cnNpdmUKLS8vIGFsZ29yaXRobSwgZXZlbiBpZiB0aGUgcmVjdXJzaXZlIHZlcnNpb24gd291bGQgYmUgdGhlIGRlZmF1bHQuCi0vLyAjZGVmaW5lIE5ETkJPT1NUX1JFR0VYX05PTl9SRUNVUlNJVkUKLQotLy8gZGVmaW5lIHRoaXMgaWYgeW91IHdhbnQgdG8gc2V0IHRoZSBzaXplIG9mIHRoZSBtZW1vcnkgYmxvY2tzCi0vLyB1c2VkIGJ5IHRoZSBub24tcmVjdXJzaXZlIGFsZ29yaXRobS4KLS8vICNkZWZpbmUgTkROQk9PU1RfUkVHRVhfQkxPQ0tTSVpFIDQwOTYKLQotLy8gZGVmaW5lIHRoaXMgaWYgeW91IHdhbnQgdG8gc2V0IHRoZSBtYXhpbXVtIG51bWJlciBvZiBtZW1vcnkgYmxvY2tzCi0vLyB1c2VkIGJ5IHRoZSBub24tcmVjdXJzaXZlIGFsZ29yaXRobS4KLS8vICNkZWZpbmUgTkROQk9PU1RfUkVHRVhfTUFYX0JMT0NLUyAxMDI0Ci0KLS8vIGRlZmluZSB0aGlzIGlmIHlvdSB3YW50IHRvIHNldCB0aGUgbWF4aW11bSBudW1iZXIgb2YgbWVtb3J5IGJsb2NrcwotLy8gY2FjaGVkIGJ5IHRoZSBub24tcmVjdXJzaXZlIGFsZ29yaXRobTogTm9ybWFsbHkgdGhpcyBpcyAxNiwgYnV0IGNhbiBiZSAKLS8vIGhpZ2hlciBpZiB5b3UgaGF2ZSBtdWx0aXBsZSB0aHJlYWRzIGFsbCB1c2luZyBib29zdC5yZWdleCwgb3IgbG93ZXIgCi0vLyBpZiB5b3UgZG9uJ3Qgd2FudCBib29zdC5yZWdleCB0byBjYWNoZSBtZW1vcnkuCi0vLyAjZGVmaW5lIE5ETkJPT1NUX1JFR0VYX01BWF9DQUNIRV9CTE9DS1MgMTYKLQotLy8gZGVmaW5lIHRoaXMgaWYgeW91IHdhbnQgdG8gYmUgYWJsZSB0byBhY2Nlc3MgZXh0ZW5kZWQgY2FwdHVyZQotLy8gaW5mb3JtYXRpb24gaW4geW91ciBzdWJfbWF0Y2gncyAoY2F1dGlvbiB0aGlzIHdpbGwgc2xvdyB0aGluZ3MKLS8vIGRvd24gcXVpdGUgYSBiaXQpLgotLy8gI2RlZmluZSBORE5CT09TVF9SRUdFWF9NQVRDSF9FWFRSQQotCi0vLyBkZWZpbmUgdGhpcyBpZiB5b3Ugd2FudCB0byBlbmFibGUgc3VwcG9ydCBmb3IgVW5pY29kZSB2aWEgSUNVLgotLy8gI2RlZmluZSBORE5CT09TVF9IQVNfSUNVCi0KLS8vIGRlZmluZSB0aGlzIGlmIHlvdSB3YW50IHJlZ2V4IHRvIHVzZSBfX2NkZWNsIGNhbGxpbmcgY29udmVuc2lvbnMsIGV2ZW4gd2hlbiBfX2Zhc3RjYWxsIGlzIGF2YWlsYWJsZToKLS8vICNkZWZpbmUgTkROQk9PU1RfUkVHRVhfTk9fRkFTVENBTEwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvYmFzaWNfcmVnZXguaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9iYXNpY19yZWdleC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlmZTRlYTcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9iYXNpY19yZWdleC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3ODIgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwNCBKb2huIE1hZGRvY2sKLSAqIENvcHlyaWdodCAyMDExIEdhcm1pbiBMdGQuIG9yIGl0cyBzdWJzaWRpYXJpZXMKLSAqCi0gKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0gKiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0gKiBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICovCi0KLSAvKgotICAqICAgTE9DQVRJT046ICAgIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy8gZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0gICogICBGSUxFICAgICAgICAgYmFzaWNfcmVnZXguY3BwCi0gICogICBWRVJTSU9OICAgICAgc2VlIDxuZG5ib29zdC92ZXJzaW9uLmhwcD4KLSAgKiAgIERFU0NSSVBUSU9OOiBEZWNsYXJlcyB0ZW1wbGF0ZSBjbGFzcyBiYXNpY19yZWdleC4KLSAgKi8KLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9WNF9CQVNJQ19SRUdFWF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfVjRfQkFTSUNfUkVHRVhfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9mdW5jdGlvbmFsL2hhc2guaHBwPgotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfUFJFRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdHsKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlIDogNDI1MSA0MjMxIDQ4MDApCi0jaWYgTkROQk9PU1RfTVNWQyA8IDE2MDAKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlIDogNDY2MCkKLSNlbmRpZgotI2VuZGlmCi0KLW5hbWVzcGFjZSByZV9kZXRhaWx7Ci0KLS8vCi0vLyBmb3J3YXJkIGRlY2xhcmF0aW9uLCB3ZSB3aWxsIG5lZWQgdGhpcyBvbmUgbGF0ZXI6Ci0vLwotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci1jbGFzcyBiYXNpY19yZWdleF9wYXJzZXI7Ci0KLXRlbXBsYXRlIDxjbGFzcyBJPgotdm9pZCBidWJibGVfZG93bl9vbmUoSSBmaXJzdCwgSSBsYXN0KQotewotICAgaWYoZmlyc3QgIT0gbGFzdCkKLSAgIHsKLSAgICAgIEkgbmV4dCA9IGxhc3QgLSAxOwotICAgICAgd2hpbGUoKG5leHQgIT0gZmlyc3QpICYmICgqbmV4dCA8ICoobmV4dC0xKSkpCi0gICAgICB7Ci0gICAgICAgICAobmV4dC0xKS0+c3dhcCgqbmV4dCk7Ci0gICAgICAgICAtLW5leHQ7Ci0gICAgICB9Ci0gICB9Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBJdGVyYXRvcj4KLWlubGluZSBpbnQgaGFzaF92YWx1ZV9mcm9tX2NhcHR1cmVfbmFtZShJdGVyYXRvciBpLCBJdGVyYXRvciBqKQotewotICAgc3RkOjpzaXplX3QgciA9IG5kbmJvb3N0OjpoYXNoX3JhbmdlKGksIGopOwotICAgciAlPSAoKHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KSgpIC0gMTAwMDEpOwotICAgciArPSAxMDAwMDsKLSAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KHIpOwotfQotCi1jbGFzcyBuYW1lZF9zdWJleHByZXNzaW9ucwotewotcHVibGljOgotICAgc3RydWN0IG5hbWUKLSAgIHsKLSAgICAgIHRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLSAgICAgIG5hbWUoY29uc3QgY2hhclQqIGksIGNvbnN0IGNoYXJUKiBqLCBpbnQgaWR4KQotICAgICAgICAgOiBpbmRleChpZHgpIAotICAgICAgeyAKLSAgICAgICAgIGhhc2ggPSBoYXNoX3ZhbHVlX2Zyb21fY2FwdHVyZV9uYW1lKGksIGopOyAKLSAgICAgIH0KLSAgICAgIG5hbWUoaW50IGgsIGludCBpZHgpCi0gICAgICAgICA6IGluZGV4KGlkeCksIGhhc2goaCkKLSAgICAgIHsgCi0gICAgICB9Ci0gICAgICBpbnQgaW5kZXg7Ci0gICAgICBpbnQgaGFzaDsKLSAgICAgIGJvb2wgb3BlcmF0b3IgPCAoY29uc3QgbmFtZSYgb3RoZXIpY29uc3QKLSAgICAgIHsKLSAgICAgICAgIHJldHVybiBoYXNoIDwgb3RoZXIuaGFzaDsKLSAgICAgIH0KLSAgICAgIGJvb2wgb3BlcmF0b3IgPT0gKGNvbnN0IG5hbWUmIG90aGVyKWNvbnN0Ci0gICAgICB7Ci0gICAgICAgICByZXR1cm4gaGFzaCA9PSBvdGhlci5oYXNoOyAKLSAgICAgIH0KLSAgICAgIHZvaWQgc3dhcChuYW1lJiBvdGhlcikKLSAgICAgIHsKLSAgICAgICAgIHN0ZDo6c3dhcChpbmRleCwgb3RoZXIuaW5kZXgpOwotICAgICAgICAgc3RkOjpzd2FwKGhhc2gsIG90aGVyLmhhc2gpOwotICAgICAgfQotICAgfTsKLQotICAgdHlwZWRlZiBzdGQ6OnZlY3RvcjxuYW1lPjo6Y29uc3RfaXRlcmF0b3IgY29uc3RfaXRlcmF0b3I7Ci0gICB0eXBlZGVmIHN0ZDo6cGFpcjxjb25zdF9pdGVyYXRvciwgY29uc3RfaXRlcmF0b3I+IHJhbmdlX3R5cGU7Ci0KLSAgIG5hbWVkX3N1YmV4cHJlc3Npb25zKCl7fQotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci0gICB2b2lkIHNldF9uYW1lKGNvbnN0IGNoYXJUKiBpLCBjb25zdCBjaGFyVCogaiwgaW50IGluZGV4KQotICAgewotICAgICAgbV9zdWJfbmFtZXMucHVzaF9iYWNrKG5hbWUoaSwgaiwgaW5kZXgpKTsKLSAgICAgIGJ1YmJsZV9kb3duX29uZShtX3N1Yl9uYW1lcy5iZWdpbigpLCBtX3N1Yl9uYW1lcy5lbmQoKSk7Ci0gICB9Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci0gICBpbnQgZ2V0X2lkKGNvbnN0IGNoYXJUKiBpLCBjb25zdCBjaGFyVCogailjb25zdAotICAgewotICAgICAgbmFtZSB0KGksIGosIDApOwotICAgICAgdHlwZW5hbWUgc3RkOjp2ZWN0b3I8bmFtZT46OmNvbnN0X2l0ZXJhdG9yIHBvcyA9IHN0ZDo6bG93ZXJfYm91bmQobV9zdWJfbmFtZXMuYmVnaW4oKSwgbV9zdWJfbmFtZXMuZW5kKCksIHQpOwotICAgICAgaWYoKHBvcyAhPSBtX3N1Yl9uYW1lcy5lbmQoKSkgJiYgKCpwb3MgPT0gdCkpCi0gICAgICB7Ci0gICAgICAgICByZXR1cm4gcG9zLT5pbmRleDsKLSAgICAgIH0KLSAgICAgIHJldHVybiAtMTsKLSAgIH0KLSAgIHRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLSAgIHJhbmdlX3R5cGUgZXF1YWxfcmFuZ2UoY29uc3QgY2hhclQqIGksIGNvbnN0IGNoYXJUKiBqKWNvbnN0Ci0gICB7Ci0gICAgICBuYW1lIHQoaSwgaiwgMCk7Ci0gICAgICByZXR1cm4gc3RkOjplcXVhbF9yYW5nZShtX3N1Yl9uYW1lcy5iZWdpbigpLCBtX3N1Yl9uYW1lcy5lbmQoKSwgdCk7Ci0gICB9Ci0gICBpbnQgZ2V0X2lkKGludCBoKWNvbnN0Ci0gICB7Ci0gICAgICBuYW1lIHQoaCwgMCk7Ci0gICAgICBzdGQ6OnZlY3RvcjxuYW1lPjo6Y29uc3RfaXRlcmF0b3IgcG9zID0gc3RkOjpsb3dlcl9ib3VuZChtX3N1Yl9uYW1lcy5iZWdpbigpLCBtX3N1Yl9uYW1lcy5lbmQoKSwgdCk7Ci0gICAgICBpZigocG9zICE9IG1fc3ViX25hbWVzLmVuZCgpKSAmJiAoKnBvcyA9PSB0KSkKLSAgICAgIHsKLSAgICAgICAgIHJldHVybiBwb3MtPmluZGV4OwotICAgICAgfQotICAgICAgcmV0dXJuIC0xOwotICAgfQotICAgcmFuZ2VfdHlwZSBlcXVhbF9yYW5nZShpbnQgaCljb25zdAotICAgewotICAgICAgbmFtZSB0KGgsIDApOwotICAgICAgcmV0dXJuIHN0ZDo6ZXF1YWxfcmFuZ2UobV9zdWJfbmFtZXMuYmVnaW4oKSwgbV9zdWJfbmFtZXMuZW5kKCksIHQpOwotICAgfQotcHJpdmF0ZToKLSAgIHN0ZDo6dmVjdG9yPG5hbWU+IG1fc3ViX25hbWVzOwotfTsKLQotLy8KLS8vIGNsYXNzIHJlZ2V4X2RhdGE6Ci0vLyByZXByZXNlbnRzIHRoZSBkYXRhIHdlIHdpc2ggdG8gZXhwb3NlIHRvIHRoZSBtYXRjaGluZyBhbGdvcml0aG1zLgotLy8KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotc3RydWN0IHJlZ2V4X2RhdGEgOiBwdWJsaWMgbmFtZWRfc3ViZXhwcmVzc2lvbnMKLXsKLSAgIHR5cGVkZWYgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3B0aW9uX3R5cGUgICBmbGFnX3R5cGU7Ci0gICB0eXBlZGVmIHN0ZDo6c2l6ZV90ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90eXBlOyAgCi0KLSAgIHJlZ2V4X2RhdGEoY29uc3QgOjpuZG5ib29zdDo6c2hhcmVkX3B0cjwKLSAgICAgIDo6bmRuYm9vc3Q6OnJlZ2V4X3RyYWl0c193cmFwcGVyPHRyYWl0cz4gPiYgdCkgCi0gICAgICA6IG1fcHRyYWl0cyh0KSwgbV9leHByZXNzaW9uKDApLCBtX2V4cHJlc3Npb25fbGVuKDApIHt9Ci0gICByZWdleF9kYXRhKCkgCi0gICAgICA6IG1fcHRyYWl0cyhuZXcgOjpuZG5ib29zdDo6cmVnZXhfdHJhaXRzX3dyYXBwZXI8dHJhaXRzPigpKSwgbV9leHByZXNzaW9uKDApLCBtX2V4cHJlc3Npb25fbGVuKDApIHt9Ci0KLSAgIDo6bmRuYm9vc3Q6OnNoYXJlZF9wdHI8Ci0gICAgICA6Om5kbmJvb3N0OjpyZWdleF90cmFpdHNfd3JhcHBlcjx0cmFpdHM+Ci0gICAgICA+ICAgICAgICAgICAgICAgICAgICAgICAgbV9wdHJhaXRzOyAgICAgICAgICAgICAgICAgLy8gdHJhaXRzIGNsYXNzIGluc3RhbmNlCi0gICBmbGFnX3R5cGUgICAgICAgICAgICAgICAgICAgbV9mbGFnczsgICAgICAgICAgICAgICAgICAgLy8gZmxhZ3Mgd2l0aCB3aGljaCB3ZSB3ZXJlIGNvbXBpbGVkCi0gICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgbV9zdGF0dXM7ICAgICAgICAgICAgICAgICAgLy8gZXJyb3IgY29kZSAoMCBpbXBsaWVzIE9LKS4KLSAgIGNvbnN0IGNoYXJUKiAgICAgICAgICAgICAgICBtX2V4cHJlc3Npb247ICAgICAgICAgICAgICAvLyB0aGUgb3JpZ2luYWwgZXhwcmVzc2lvbgotICAgc3RkOjpwdHJkaWZmX3QgICAgICAgICAgICAgIG1fZXhwcmVzc2lvbl9sZW47ICAgICAgICAgIC8vIHRoZSBsZW5ndGggb2YgdGhlIG9yaWdpbmFsIGV4cHJlc3Npb24KLSAgIHNpemVfdHlwZSAgICAgICAgICAgICAgICAgICBtX21hcmtfY291bnQ7ICAgICAgICAgICAgICAvLyB0aGUgbnVtYmVyIG9mIG1hcmtlZCBzdWItZXhwcmVzc2lvbnMKLSAgIHJlX2RldGFpbDo6cmVfc3ludGF4X2Jhc2UqICBtX2ZpcnN0X3N0YXRlOyAgICAgICAgICAgICAvLyB0aGUgZmlyc3Qgc3RhdGUgb2YgdGhlIG1hY2hpbmUKLSAgIHVuc2lnbmVkICAgICAgICAgICAgICAgICAgICBtX3Jlc3RhcnRfdHlwZTsgICAgICAgICAgICAvLyBzZWFyY2ggb3B0aW1pc2F0aW9uIHR5cGUKLSAgIHVuc2lnbmVkIGNoYXIgICAgICAgICAgICAgICBtX3N0YXJ0bWFwWzEgPDwgQ0hBUl9CSVRdOyAvLyB3aGljaCBjaGFyYWN0ZXJzIGNhbiBzdGFydCBhIG1hdGNoCi0gICB1bnNpZ25lZCBpbnQgICAgICAgICAgICAgICAgbV9jYW5fYmVfbnVsbDsgICAgICAgICAgICAgLy8gd2hldGhlciB3ZSBjYW4gbWF0Y2ggYSBudWxsIHN0cmluZwotICAgcmVfZGV0YWlsOjpyYXdfc3RvcmFnZSAgICAgIG1fZGF0YTsgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBidWZmZXIgaW4gd2hpY2ggb3VyIHN0YXRlcyBhcmUgY29uc3RydWN0ZWQKLSAgIHR5cGVuYW1lIHRyYWl0czo6Y2hhcl9jbGFzc190eXBlICAgIG1fd29yZF9tYXNrOyAgICAgICAvLyBtYXNrIHVzZWQgdG8gZGV0ZXJtaW5lIGlmIGEgY2hhcmFjdGVyIGlzIGEgd29yZCBjaGFyYWN0ZXIKLSAgIHN0ZDo6dmVjdG9yPAotICAgICAgc3RkOjpwYWlyPAotICAgICAgc3RkOjpzaXplX3QsIHN0ZDo6c2l6ZV90PiA+IG1fc3ViczsgICAgICAgICAgICAgICAgIC8vIFBvc2l0aW9uIG9mIHN1Yi1leHByZXNzaW9ucyB3aXRoaW4gdGhlICpzdHJpbmcqLgotICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgIG1faGFzX3JlY3Vyc2lvbnM7ICAgICAgICAgIC8vIHdoZXRoZXIgd2UgaGF2ZSByZWN1cnNpdmUgZXhwcmVzc2lvbnM7Ci19OwotLy8KLS8vIGNsYXNzIGJhc2ljX3JlZ2V4X2ltcGxlbWVudGF0aW9uCi0vLyBwaW1wbCBpbXBsZW1lbnRhdGlvbiBjbGFzcyBmb3IgYmFzaWNfcmVnZXguCi0vLwotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci1jbGFzcyBiYXNpY19yZWdleF9pbXBsZW1lbnRhdGlvbgotICAgOiBwdWJsaWMgcmVnZXhfZGF0YTxjaGFyVCwgdHJhaXRzPgotewotcHVibGljOgotICAgdHlwZWRlZiByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcHRpb25fdHlwZSAgIGZsYWdfdHlwZTsKLSAgIHR5cGVkZWYgc3RkOjpwdHJkaWZmX3QgICAgICAgICAgICAgICAgICAgICAgICBkaWZmZXJlbmNlX3R5cGU7Ci0gICB0eXBlZGVmIHN0ZDo6c2l6ZV90ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90eXBlOyAKLSAgIHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzOjpsb2NhbGVfdHlwZSAgICAgICAgICBsb2NhbGVfdHlwZTsKLSAgIHR5cGVkZWYgY29uc3QgY2hhclQqICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdF9pdGVyYXRvcjsKLQotICAgYmFzaWNfcmVnZXhfaW1wbGVtZW50YXRpb24oKXt9Ci0gICBiYXNpY19yZWdleF9pbXBsZW1lbnRhdGlvbihjb25zdCA6Om5kbmJvb3N0OjpzaGFyZWRfcHRyPAotICAgICAgOjpuZG5ib29zdDo6cmVnZXhfdHJhaXRzX3dyYXBwZXI8dHJhaXRzPiA+JiB0KQotICAgICAgOiByZWdleF9kYXRhPGNoYXJULCB0cmFpdHM+KHQpIHt9Ci0gICB2b2lkIGFzc2lnbihjb25zdCBjaGFyVCogYXJnX2ZpcnN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyVCogYXJnX2xhc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdHlwZSBmKQotICAgewotICAgICAgcmVnZXhfZGF0YTxjaGFyVCwgdHJhaXRzPiogcGRhdCA9IHRoaXM7Ci0gICAgICBiYXNpY19yZWdleF9wYXJzZXI8Y2hhclQsIHRyYWl0cz4gcGFyc2VyKHBkYXQpOwotICAgICAgcGFyc2VyLnBhcnNlKGFyZ19maXJzdCwgYXJnX2xhc3QsIGYpOwotICAgfQotCi0gICBsb2NhbGVfdHlwZSBORE5CT09TVF9SRUdFWF9DQUxMIGltYnVlKGxvY2FsZV90eXBlIGwpCi0gICB7IAotICAgICAgcmV0dXJuIHRoaXMtPm1fcHRyYWl0cy0+aW1idWUobCk7IAotICAgfQotICAgbG9jYWxlX3R5cGUgTkROQk9PU1RfUkVHRVhfQ0FMTCBnZXRsb2MoKWNvbnN0Ci0gICB7IAotICAgICAgcmV0dXJuIHRoaXMtPm1fcHRyYWl0cy0+Z2V0bG9jKCk7IAotICAgfQotICAgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQ+IE5ETkJPT1NUX1JFR0VYX0NBTEwgc3RyKCljb25zdAotICAgewotICAgICAgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQ+IHJlc3VsdDsKLSAgICAgIGlmKHRoaXMtPm1fc3RhdHVzID09IDApCi0gICAgICAgICByZXN1bHQgPSBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVD4odGhpcy0+bV9leHByZXNzaW9uLCB0aGlzLT5tX2V4cHJlc3Npb25fbGVuKTsKLSAgICAgIHJldHVybiByZXN1bHQ7Ci0gICB9Ci0gICBjb25zdF9pdGVyYXRvciBORE5CT09TVF9SRUdFWF9DQUxMIGV4cHJlc3Npb24oKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gdGhpcy0+bV9leHByZXNzaW9uOwotICAgfQotICAgc3RkOjpwYWlyPGNvbnN0X2l0ZXJhdG9yLCBjb25zdF9pdGVyYXRvcj4gTkROQk9PU1RfUkVHRVhfQ0FMTCBzdWJleHByZXNzaW9uKHN0ZDo6c2l6ZV90IG4pY29uc3QKLSAgIHsKLSAgICAgIGlmKG4gPT0gMCkKLSAgICAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oc3RkOjpvdXRfb2ZfcmFuZ2UoIjAgaXMgbm90IGEgdmFsaWQgc3ViZXhwcmVzc2lvbiBpbmRleC4iKSk7Ci0gICAgICBjb25zdCBzdGQ6OnBhaXI8c3RkOjpzaXplX3QsIHN0ZDo6c2l6ZV90PiYgcGkgPSB0aGlzLT5tX3N1YnMuYXQobiAtIDEpOwotICAgICAgc3RkOjpwYWlyPGNvbnN0X2l0ZXJhdG9yLCBjb25zdF9pdGVyYXRvcj4gcChleHByZXNzaW9uKCkgKyBwaS5maXJzdCwgZXhwcmVzc2lvbigpICsgcGkuc2Vjb25kKTsKLSAgICAgIHJldHVybiBwOwotICAgfQotICAgLy8KLSAgIC8vIGJlZ2luLCBlbmQ6Ci0gICBjb25zdF9pdGVyYXRvciBORE5CT09TVF9SRUdFWF9DQUxMIGJlZ2luKCljb25zdAotICAgeyAKLSAgICAgIHJldHVybiAodGhpcy0+bV9zdGF0dXMgPyAwIDogdGhpcy0+bV9leHByZXNzaW9uKTsgCi0gICB9Ci0gICBjb25zdF9pdGVyYXRvciBORE5CT09TVF9SRUdFWF9DQUxMIGVuZCgpY29uc3QKLSAgIHsgCi0gICAgICByZXR1cm4gKHRoaXMtPm1fc3RhdHVzID8gMCA6IHRoaXMtPm1fZXhwcmVzc2lvbiArIHRoaXMtPm1fZXhwcmVzc2lvbl9sZW4pOyAKLSAgIH0KLSAgIGZsYWdfdHlwZSBORE5CT09TVF9SRUdFWF9DQUxMIGZsYWdzKCljb25zdAotICAgewotICAgICAgcmV0dXJuIHRoaXMtPm1fZmxhZ3M7Ci0gICB9Ci0gICBzaXplX3R5cGUgTkROQk9PU1RfUkVHRVhfQ0FMTCBzaXplKCljb25zdAotICAgewotICAgICAgcmV0dXJuIHRoaXMtPm1fZXhwcmVzc2lvbl9sZW47Ci0gICB9Ci0gICBpbnQgTkROQk9PU1RfUkVHRVhfQ0FMTCBzdGF0dXMoKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gdGhpcy0+bV9zdGF0dXM7Ci0gICB9Ci0gICBzaXplX3R5cGUgTkROQk9PU1RfUkVHRVhfQ0FMTCBtYXJrX2NvdW50KCljb25zdAotICAgewotICAgICAgcmV0dXJuIHRoaXMtPm1fbWFya19jb3VudDsKLSAgIH0KLSAgIGNvbnN0IHJlX2RldGFpbDo6cmVfc3ludGF4X2Jhc2UqIGdldF9maXJzdF9zdGF0ZSgpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiB0aGlzLT5tX2ZpcnN0X3N0YXRlOwotICAgfQotICAgdW5zaWduZWQgZ2V0X3Jlc3RhcnRfdHlwZSgpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiB0aGlzLT5tX3Jlc3RhcnRfdHlwZTsKLSAgIH0KLSAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGdldF9tYXAoKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gdGhpcy0+bV9zdGFydG1hcDsKLSAgIH0KLSAgIGNvbnN0IDo6bmRuYm9vc3Q6OnJlZ2V4X3RyYWl0c193cmFwcGVyPHRyYWl0cz4mIGdldF90cmFpdHMoKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gKih0aGlzLT5tX3B0cmFpdHMpOwotICAgfQotICAgYm9vbCBjYW5fYmVfbnVsbCgpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiB0aGlzLT5tX2Nhbl9iZV9udWxsOwotICAgfQotICAgY29uc3QgcmVnZXhfZGF0YTxjaGFyVCwgdHJhaXRzPiYgZ2V0X2RhdGEoKWNvbnN0Ci0gICB7Ci0gICAgICBiYXNpY19yZWdleF9pbXBsZW1lbnRhdGlvbjxjaGFyVCwgdHJhaXRzPiBjb25zdCogcCA9IHRoaXM7Ci0gICAgICByZXR1cm4gKnN0YXRpY19jYXN0PGNvbnN0IHJlZ2V4X2RhdGE8Y2hhclQsIHRyYWl0cz4qPihwKTsKLSAgIH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIHJlX2RldGFpbAotLy8KLS8vIGNsYXNzIGJhc2ljX3JlZ2V4OgotLy8gcmVwcmVzZW50cyB0aGUgY29tcGlsZWQKLS8vIHJlZ3VsYXIgZXhwcmVzc2lvbjoKLS8vCi0KLSNpZmRlZiBORE5CT09TVF9SRUdFWF9OT19GV0QKLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzID0gcmVnZXhfdHJhaXRzPGNoYXJUPiA+Ci0jZWxzZQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHMgPgotI2VuZGlmCi1jbGFzcyBiYXNpY19yZWdleCA6IHB1YmxpYyByZWdiYXNlCi17Ci1wdWJsaWM6Ci0gICAvLyB0eXBlZGVmczoKLSAgIHR5cGVkZWYgc3RkOjpzaXplX3QgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFpdHNfc2l6ZV90eXBlOwotICAgdHlwZWRlZiB0eXBlbmFtZSB0cmFpdHM6OnN0cmluZ190eXBlICAgICAgICAgIHRyYWl0c19zdHJpbmdfdHlwZTsKLSAgIHR5cGVkZWYgY2hhclQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyX3R5cGU7Ci0gICB0eXBlZGVmIHRyYWl0cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhaXRzX3R5cGU7Ci0KLSAgIHR5cGVkZWYgY2hhclQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZV90eXBlOwotICAgdHlwZWRlZiBjaGFyVCYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZTsKLSAgIHR5cGVkZWYgY29uc3QgY2hhclQmICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdF9yZWZlcmVuY2U7Ci0gICB0eXBlZGVmIGNvbnN0IGNoYXJUKiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RfaXRlcmF0b3I7Ci0gICB0eXBlZGVmIGNvbnN0X2l0ZXJhdG9yICAgICAgICAgICAgICAgICAgICAgICAgaXRlcmF0b3I7Ci0gICB0eXBlZGVmIHN0ZDo6cHRyZGlmZl90ICAgICAgICAgICAgICAgICAgICAgICAgZGlmZmVyZW5jZV90eXBlOwotICAgdHlwZWRlZiBzdGQ6OnNpemVfdCAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdHlwZTsgICAKLSAgIHR5cGVkZWYgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3B0aW9uX3R5cGUgICBmbGFnX3R5cGU7Ci0gICAvLyBsb2NhbGVfdHlwZQotICAgLy8gcGxhY2Vob2xkZXIgZm9yIGFjdHVhbCBsb2NhbGUgdHlwZSB1c2VkIGJ5IHRoZQotICAgLy8gdHJhaXRzIGNsYXNzIHRvIGxvY2FsaXNlICp0aGlzLgotICAgdHlwZWRlZiB0eXBlbmFtZSB0cmFpdHM6OmxvY2FsZV90eXBlICAgICAgICAgIGxvY2FsZV90eXBlOwotICAgCi1wdWJsaWM6Ci0gICBleHBsaWNpdCBiYXNpY19yZWdleCgpe30KLSAgIGV4cGxpY2l0IGJhc2ljX3JlZ2V4KGNvbnN0IGNoYXJUKiBwLCBmbGFnX3R5cGUgZiA9IHJlZ2V4X2NvbnN0YW50czo6bm9ybWFsKQotICAgewotICAgICAgYXNzaWduKHAsIGYpOwotICAgfQotICAgYmFzaWNfcmVnZXgoY29uc3QgY2hhclQqIHAxLCBjb25zdCBjaGFyVCogcDIsIGZsYWdfdHlwZSBmID0gcmVnZXhfY29uc3RhbnRzOjpub3JtYWwpCi0gICB7Ci0gICAgICBhc3NpZ24ocDEsIHAyLCBmKTsKLSAgIH0KLSAgIGJhc2ljX3JlZ2V4KGNvbnN0IGNoYXJUKiBwLCBzaXplX3R5cGUgbGVuLCBmbGFnX3R5cGUgZikKLSAgIHsKLSAgICAgIGFzc2lnbihwLCBsZW4sIGYpOwotICAgfQotICAgYmFzaWNfcmVnZXgoY29uc3QgYmFzaWNfcmVnZXgmIHRoYXQpCi0gICAgICA6IG1fcGltcGwodGhhdC5tX3BpbXBsKSB7fQotICAgfmJhc2ljX3JlZ2V4KCl7fQotICAgYmFzaWNfcmVnZXgmIE5ETkJPT1NUX1JFR0VYX0NBTEwgb3BlcmF0b3I9KGNvbnN0IGJhc2ljX3JlZ2V4JiB0aGF0KQotICAgewotICAgICAgcmV0dXJuIGFzc2lnbih0aGF0KTsKLSAgIH0KLSAgIGJhc2ljX3JlZ2V4JiBORE5CT09TVF9SRUdFWF9DQUxMIG9wZXJhdG9yPShjb25zdCBjaGFyVCogcHRyKQotICAgewotICAgICAgcmV0dXJuIGFzc2lnbihwdHIpOwotICAgfQotCi0gICAvLwotICAgLy8gYXNzaWduOgotICAgYmFzaWNfcmVnZXgmIGFzc2lnbihjb25zdCBiYXNpY19yZWdleCYgdGhhdCkKLSAgIHsgCi0gICAgICBtX3BpbXBsID0gdGhhdC5tX3BpbXBsOwotICAgICAgcmV0dXJuICp0aGlzOyAKLSAgIH0KLSAgIGJhc2ljX3JlZ2V4JiBhc3NpZ24oY29uc3QgY2hhclQqIHAsIGZsYWdfdHlwZSBmID0gcmVnZXhfY29uc3RhbnRzOjpub3JtYWwpCi0gICB7Ci0gICAgICByZXR1cm4gYXNzaWduKHAsIHAgKyB0cmFpdHM6Omxlbmd0aChwKSwgZik7Ci0gICB9Ci0gICBiYXNpY19yZWdleCYgYXNzaWduKGNvbnN0IGNoYXJUKiBwLCBzaXplX3R5cGUgbGVuLCBmbGFnX3R5cGUgZikKLSAgIHsKLSAgICAgIHJldHVybiBhc3NpZ24ocCwgcCArIGxlbiwgZik7Ci0gICB9Ci1wcml2YXRlOgotICAgYmFzaWNfcmVnZXgmIGRvX2Fzc2lnbihjb25zdCBjaGFyVCogcDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXJUKiBwMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ190eXBlIGYpOwotcHVibGljOgotICAgYmFzaWNfcmVnZXgmIGFzc2lnbihjb25zdCBjaGFyVCogcDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXJUKiBwMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ190eXBlIGYgPSByZWdleF9jb25zdGFudHM6Om5vcm1hbCkKLSAgIHsKLSAgICAgIHJldHVybiBkb19hc3NpZ24ocDEsIHAyLCBmKTsKLSAgIH0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19NRU1CRVJfVEVNUExBVEVTKQotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgU1QsIGNsYXNzIFNBPgotICAgdW5zaWduZWQgaW50IE5ETkJPT1NUX1JFR0VYX0NBTEwgc2V0X2V4cHJlc3Npb24oY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQsIFNULCBTQT4mIHAsIGZsYWdfdHlwZSBmID0gcmVnZXhfY29uc3RhbnRzOjpub3JtYWwpCi0gICB7IAotICAgICAgcmV0dXJuIHNldF9leHByZXNzaW9uKHAuZGF0YSgpLCBwLmRhdGEoKSArIHAuc2l6ZSgpLCBmKTsgCi0gICB9Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBTVCwgY2xhc3MgU0E+Ci0gICBleHBsaWNpdCBiYXNpY19yZWdleChjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVCwgU1QsIFNBPiYgcCwgZmxhZ190eXBlIGYgPSByZWdleF9jb25zdGFudHM6Om5vcm1hbCkKLSAgIHsgCi0gICAgICBhc3NpZ24ocCwgZik7IAotICAgfQotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgSW5wdXRJdGVyYXRvcj4KLSAgIGJhc2ljX3JlZ2V4KElucHV0SXRlcmF0b3IgYXJnX2ZpcnN0LCBJbnB1dEl0ZXJhdG9yIGFyZ19sYXN0LCBmbGFnX3R5cGUgZiA9IHJlZ2V4X2NvbnN0YW50czo6bm9ybWFsKQotICAgewotICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0cmFpdHM6OnN0cmluZ190eXBlIHNlcV90eXBlOwotICAgICAgc2VxX3R5cGUgYShhcmdfZmlyc3QsIGFyZ19sYXN0KTsKLSAgICAgIGlmKGEuc2l6ZSgpKQotICAgICAgICAgYXNzaWduKHN0YXRpY19jYXN0PGNvbnN0IGNoYXJUKj4oJiphLmJlZ2luKCkpLCBzdGF0aWNfY2FzdDxjb25zdCBjaGFyVCo+KCYqYS5iZWdpbigpICsgYS5zaXplKCkpLCBmKTsKLSAgICAgIGVsc2UKLSAgICAgICAgIGFzc2lnbihzdGF0aWNfY2FzdDxjb25zdCBjaGFyVCo+KDApLCBzdGF0aWNfY2FzdDxjb25zdCBjaGFyVCo+KDApLCBmKTsKLSAgIH0KLQotICAgdGVtcGxhdGUgPGNsYXNzIFNULCBjbGFzcyBTQT4KLSAgIGJhc2ljX3JlZ2V4JiBORE5CT09TVF9SRUdFWF9DQUxMIG9wZXJhdG9yPShjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVCwgU1QsIFNBPiYgcCkKLSAgIHsKLSAgICAgIHJldHVybiBhc3NpZ24ocC5kYXRhKCksIHAuZGF0YSgpICsgcC5zaXplKCksIHJlZ2V4X2NvbnN0YW50czo6bm9ybWFsKTsKLSAgIH0KLQotICAgdGVtcGxhdGUgPGNsYXNzIHN0cmluZ190cmFpdHMsIGNsYXNzIEE+Ci0gICBiYXNpY19yZWdleCYgTkROQk9PU1RfUkVHRVhfQ0FMTCBhc3NpZ24oCi0gICAgICAgY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQsIHN0cmluZ190cmFpdHMsIEE+JiBzLAotICAgICAgIGZsYWdfdHlwZSBmID0gcmVnZXhfY29uc3RhbnRzOjpub3JtYWwpCi0gICB7Ci0gICAgICByZXR1cm4gYXNzaWduKHMuZGF0YSgpLCBzLmRhdGEoKSArIHMuc2l6ZSgpLCBmKTsKLSAgIH0KLQotICAgdGVtcGxhdGUgPGNsYXNzIElucHV0SXRlcmF0b3I+Ci0gICBiYXNpY19yZWdleCYgTkROQk9PU1RfUkVHRVhfQ0FMTCBhc3NpZ24oSW5wdXRJdGVyYXRvciBhcmdfZmlyc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIElucHV0SXRlcmF0b3IgYXJnX2xhc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdfdHlwZSBmID0gcmVnZXhfY29uc3RhbnRzOjpub3JtYWwpCi0gICB7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIHRyYWl0czo6c3RyaW5nX3R5cGUgc2VxX3R5cGU7Ci0gICAgICBzZXFfdHlwZSBhKGFyZ19maXJzdCwgYXJnX2xhc3QpOwotICAgICAgaWYoYS5zaXplKCkpCi0gICAgICB7Ci0gICAgICAgICBjb25zdCBjaGFyVCogcDEgPSAmKmEuYmVnaW4oKTsKLSAgICAgICAgIGNvbnN0IGNoYXJUKiBwMiA9ICYqYS5iZWdpbigpICsgYS5zaXplKCk7Ci0gICAgICAgICByZXR1cm4gYXNzaWduKHAxLCBwMiwgZik7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gYXNzaWduKHN0YXRpY19jYXN0PGNvbnN0IGNoYXJUKj4oMCksIHN0YXRpY19jYXN0PGNvbnN0IGNoYXJUKj4oMCksIGYpOwotICAgfQotI2Vsc2UKLSAgIHVuc2lnbmVkIGludCBORE5CT09TVF9SRUdFWF9DQUxMIHNldF9leHByZXNzaW9uKGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJUPiYgcCwgZmxhZ190eXBlIGYgPSByZWdleF9jb25zdGFudHM6Om5vcm1hbCkKLSAgIHsgCi0gICAgICByZXR1cm4gc2V0X2V4cHJlc3Npb24ocC5kYXRhKCksIHAuZGF0YSgpICsgcC5zaXplKCksIGYpOyAKLSAgIH0KLQotICAgYmFzaWNfcmVnZXgoY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQ+JiBwLCBmbGFnX3R5cGUgZiA9IHJlZ2V4X2NvbnN0YW50czo6bm9ybWFsKQotICAgeyAKLSAgICAgIGFzc2lnbihwLCBmKTsgCi0gICB9Ci0KLSAgIGJhc2ljX3JlZ2V4JiBORE5CT09TVF9SRUdFWF9DQUxMIG9wZXJhdG9yPShjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVD4mIHApCi0gICB7Ci0gICAgICByZXR1cm4gYXNzaWduKHAuZGF0YSgpLCBwLmRhdGEoKSArIHAuc2l6ZSgpLCByZWdleF9jb25zdGFudHM6Om5vcm1hbCk7Ci0gICB9Ci0KLSAgIGJhc2ljX3JlZ2V4JiBORE5CT09TVF9SRUdFWF9DQUxMIGFzc2lnbigKLSAgICAgICBjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVD4mIHMsCi0gICAgICAgZmxhZ190eXBlIGYgPSByZWdleF9jb25zdGFudHM6Om5vcm1hbCkKLSAgIHsKLSAgICAgIHJldHVybiBhc3NpZ24ocy5kYXRhKCksIHMuZGF0YSgpICsgcy5zaXplKCksIGYpOwotICAgfQotCi0jZW5kaWYKLQotICAgLy8KLSAgIC8vIGxvY2FsZToKLSAgIGxvY2FsZV90eXBlIE5ETkJPT1NUX1JFR0VYX0NBTEwgaW1idWUobG9jYWxlX3R5cGUgbCk7Ci0gICBsb2NhbGVfdHlwZSBORE5CT09TVF9SRUdFWF9DQUxMIGdldGxvYygpY29uc3QKLSAgIHsgCi0gICAgICByZXR1cm4gbV9waW1wbC5nZXQoKSA/IG1fcGltcGwtPmdldGxvYygpIDogbG9jYWxlX3R5cGUoKTsgCi0gICB9Ci0gICAvLwotICAgLy8gZ2V0ZmxhZ3M6Ci0gICAvLyByZXRhaW5lZCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgb25seSwgImZsYWdzIgotICAgLy8gaXMgbm93IHRoZSBwcmVmZXJyZWQgbmFtZToKLSAgIGZsYWdfdHlwZSBORE5CT09TVF9SRUdFWF9DQUxMIGdldGZsYWdzKCljb25zdAotICAgeyAKLSAgICAgIHJldHVybiBmbGFncygpOwotICAgfQotICAgZmxhZ190eXBlIE5ETkJPT1NUX1JFR0VYX0NBTEwgZmxhZ3MoKWNvbnN0Ci0gICB7IAotICAgICAgcmV0dXJuIG1fcGltcGwuZ2V0KCkgPyBtX3BpbXBsLT5mbGFncygpIDogMDsKLSAgIH0KLSAgIC8vCi0gICAvLyBzdHI6Ci0gICBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVD4gTkROQk9PU1RfUkVHRVhfQ0FMTCBzdHIoKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gbV9waW1wbC5nZXQoKSA/IG1fcGltcGwtPnN0cigpIDogc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQ+KCk7Ci0gICB9Ci0gICAvLwotICAgLy8gYmVnaW4sIGVuZCwgc3ViZXhwcmVzc2lvbjoKLSAgIHN0ZDo6cGFpcjxjb25zdF9pdGVyYXRvciwgY29uc3RfaXRlcmF0b3I+IE5ETkJPT1NUX1JFR0VYX0NBTEwgc3ViZXhwcmVzc2lvbihzdGQ6OnNpemVfdCBuKWNvbnN0Ci0gICB7Ci0gICAgICBpZighbV9waW1wbC5nZXQoKSkKLSAgICAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oc3RkOjpsb2dpY19lcnJvcigiQ2FuJ3QgYWNjZXNzIHN1YmV4cHJlc3Npb25zIGluIGFuIGludmFsaWQgcmVnZXguIikpOwotICAgICAgcmV0dXJuIG1fcGltcGwtPnN1YmV4cHJlc3Npb24obik7Ci0gICB9Ci0gICBjb25zdF9pdGVyYXRvciBORE5CT09TVF9SRUdFWF9DQUxMIGJlZ2luKCljb25zdAotICAgeyAKLSAgICAgIHJldHVybiAobV9waW1wbC5nZXQoKSA/IG1fcGltcGwtPmJlZ2luKCkgOiAwKTsgCi0gICB9Ci0gICBjb25zdF9pdGVyYXRvciBORE5CT09TVF9SRUdFWF9DQUxMIGVuZCgpY29uc3QKLSAgIHsgCi0gICAgICByZXR1cm4gKG1fcGltcGwuZ2V0KCkgPyBtX3BpbXBsLT5lbmQoKSA6IDApOyAKLSAgIH0KLSAgIC8vCi0gICAvLyBzd2FwOgotICAgdm9pZCBORE5CT09TVF9SRUdFWF9DQUxMIHN3YXAoYmFzaWNfcmVnZXgmIHRoYXQpdGhyb3coKQotICAgewotICAgICAgbV9waW1wbC5zd2FwKHRoYXQubV9waW1wbCk7Ci0gICB9Ci0gICAvLwotICAgLy8gc2l6ZToKLSAgIHNpemVfdHlwZSBORE5CT09TVF9SRUdFWF9DQUxMIHNpemUoKWNvbnN0Ci0gICB7IAotICAgICAgcmV0dXJuIChtX3BpbXBsLmdldCgpID8gbV9waW1wbC0+c2l6ZSgpIDogMCk7IAotICAgfQotICAgLy8KLSAgIC8vIG1heF9zaXplOgotICAgc2l6ZV90eXBlIE5ETkJPT1NUX1JFR0VYX0NBTEwgbWF4X3NpemUoKWNvbnN0Ci0gICB7IAotICAgICAgcmV0dXJuIFVJTlRfTUFYOyAKLSAgIH0KLSAgIC8vCi0gICAvLyBlbXB0eToKLSAgIGJvb2wgTkROQk9PU1RfUkVHRVhfQ0FMTCBlbXB0eSgpY29uc3QKLSAgIHsgCi0gICAgICByZXR1cm4gKG1fcGltcGwuZ2V0KCkgPyAwICE9IG1fcGltcGwtPnN0YXR1cygpIDogdHJ1ZSk7IAotICAgfQotCi0gICBzaXplX3R5cGUgTkROQk9PU1RfUkVHRVhfQ0FMTCBtYXJrX2NvdW50KCljb25zdCAKLSAgIHsgCi0gICAgICByZXR1cm4gKG1fcGltcGwuZ2V0KCkgPyBtX3BpbXBsLT5tYXJrX2NvdW50KCkgOiAwKTsgCi0gICB9Ci0KLSAgIGludCBzdGF0dXMoKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gKG1fcGltcGwuZ2V0KCkgPyBtX3BpbXBsLT5zdGF0dXMoKSA6IHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfZW1wdHkpOwotICAgfQotCi0gICBpbnQgTkROQk9PU1RfUkVHRVhfQ0FMTCBjb21wYXJlKGNvbnN0IGJhc2ljX3JlZ2V4JiB0aGF0KSBjb25zdAotICAgewotICAgICAgaWYobV9waW1wbC5nZXQoKSA9PSB0aGF0Lm1fcGltcGwuZ2V0KCkpCi0gICAgICAgICByZXR1cm4gMDsKLSAgICAgIGlmKCFtX3BpbXBsLmdldCgpKQotICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgaWYoIXRoYXQubV9waW1wbC5nZXQoKSkKLSAgICAgICAgIHJldHVybiAxOwotICAgICAgaWYoc3RhdHVzKCkgIT0gdGhhdC5zdGF0dXMoKSkKLSAgICAgICAgIHJldHVybiBzdGF0dXMoKSAtIHRoYXQuc3RhdHVzKCk7Ci0gICAgICBpZihmbGFncygpICE9IHRoYXQuZmxhZ3MoKSkKLSAgICAgICAgIHJldHVybiBmbGFncygpIC0gdGhhdC5mbGFncygpOwotICAgICAgcmV0dXJuIHN0cigpLmNvbXBhcmUodGhhdC5zdHIoKSk7Ci0gICB9Ci0gICBib29sIE5ETkJPT1NUX1JFR0VYX0NBTEwgb3BlcmF0b3I9PShjb25zdCBiYXNpY19yZWdleCYgZSljb25zdAotICAgeyAKLSAgICAgIHJldHVybiBjb21wYXJlKGUpID09IDA7IAotICAgfQotICAgYm9vbCBORE5CT09TVF9SRUdFWF9DQUxMIG9wZXJhdG9yICE9IChjb25zdCBiYXNpY19yZWdleCYgZSljb25zdAotICAgeyAKLSAgICAgIHJldHVybiBjb21wYXJlKGUpICE9IDA7IAotICAgfQotICAgYm9vbCBORE5CT09TVF9SRUdFWF9DQUxMIG9wZXJhdG9yPChjb25zdCBiYXNpY19yZWdleCYgZSljb25zdAotICAgeyAKLSAgICAgIHJldHVybiBjb21wYXJlKGUpIDwgMDsgCi0gICB9Ci0gICBib29sIE5ETkJPT1NUX1JFR0VYX0NBTEwgb3BlcmF0b3I+KGNvbnN0IGJhc2ljX3JlZ2V4JiBlKWNvbnN0Ci0gICB7IAotICAgICAgcmV0dXJuIGNvbXBhcmUoZSkgPiAwOyAKLSAgIH0KLSAgIGJvb2wgTkROQk9PU1RfUkVHRVhfQ0FMTCBvcGVyYXRvcjw9KGNvbnN0IGJhc2ljX3JlZ2V4JiBlKWNvbnN0Ci0gICB7IAotICAgICAgcmV0dXJuIGNvbXBhcmUoZSkgPD0gMDsgCi0gICB9Ci0gICBib29sIE5ETkJPT1NUX1JFR0VYX0NBTEwgb3BlcmF0b3I+PShjb25zdCBiYXNpY19yZWdleCYgZSljb25zdAotICAgeyAKLSAgICAgIHJldHVybiBjb21wYXJlKGUpID49IDA7IAotICAgfQotCi0gICAvLwotICAgLy8gVGhlIGZvbGxvd2luZyBhcmUgZGVwcmVjYXRlZCBhcyBwdWJsaWMgaW50ZXJmYWNlcwotICAgLy8gYnV0IGFyZSBhdmFpbGFibGUgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBlYXJsaWVyIHZlcnNpb25zLgotICAgY29uc3QgY2hhclQqIE5ETkJPT1NUX1JFR0VYX0NBTEwgZXhwcmVzc2lvbigpY29uc3QgCi0gICB7IAotICAgICAgcmV0dXJuIChtX3BpbXBsLmdldCgpICYmICFtX3BpbXBsLT5zdGF0dXMoKSA/IG1fcGltcGwtPmV4cHJlc3Npb24oKSA6IDApOyAKLSAgIH0KLSAgIHVuc2lnbmVkIGludCBORE5CT09TVF9SRUdFWF9DQUxMIHNldF9leHByZXNzaW9uKGNvbnN0IGNoYXJUKiBwMSwgY29uc3QgY2hhclQqIHAyLCBmbGFnX3R5cGUgZiA9IHJlZ2V4X2NvbnN0YW50czo6bm9ybWFsKQotICAgewotICAgICAgYXNzaWduKHAxLCBwMiwgZiB8IHJlZ2V4X2NvbnN0YW50czo6bm9fZXhjZXB0KTsKLSAgICAgIHJldHVybiBzdGF0dXMoKTsKLSAgIH0KLSAgIHVuc2lnbmVkIGludCBORE5CT09TVF9SRUdFWF9DQUxMIHNldF9leHByZXNzaW9uKGNvbnN0IGNoYXJUKiBwLCBmbGFnX3R5cGUgZiA9IHJlZ2V4X2NvbnN0YW50czo6bm9ybWFsKSAKLSAgIHsgCi0gICAgICBhc3NpZ24ocCwgZiB8IHJlZ2V4X2NvbnN0YW50czo6bm9fZXhjZXB0KTsgCi0gICAgICByZXR1cm4gc3RhdHVzKCk7Ci0gICB9Ci0gICB1bnNpZ25lZCBpbnQgTkROQk9PU1RfUkVHRVhfQ0FMTCBlcnJvcl9jb2RlKCljb25zdAotICAgewotICAgICAgcmV0dXJuIHN0YXR1cygpOwotICAgfQotICAgLy8KLSAgIC8vIHByaXZhdGUgYWNjZXNzIG1ldGhvZHM6Ci0gICAvLwotICAgY29uc3QgcmVfZGV0YWlsOjpyZV9zeW50YXhfYmFzZSogZ2V0X2ZpcnN0X3N0YXRlKCljb25zdAotICAgewotICAgICAgTkROQk9PU1RfQVNTRVJUKDAgIT0gbV9waW1wbC5nZXQoKSk7Ci0gICAgICByZXR1cm4gbV9waW1wbC0+Z2V0X2ZpcnN0X3N0YXRlKCk7Ci0gICB9Ci0gICB1bnNpZ25lZCBnZXRfcmVzdGFydF90eXBlKCljb25zdAotICAgewotICAgICAgTkROQk9PU1RfQVNTRVJUKDAgIT0gbV9waW1wbC5nZXQoKSk7Ci0gICAgICByZXR1cm4gbV9waW1wbC0+Z2V0X3Jlc3RhcnRfdHlwZSgpOwotICAgfQotICAgY29uc3QgdW5zaWduZWQgY2hhciogZ2V0X21hcCgpY29uc3QKLSAgIHsKLSAgICAgIE5ETkJPT1NUX0FTU0VSVCgwICE9IG1fcGltcGwuZ2V0KCkpOwotICAgICAgcmV0dXJuIG1fcGltcGwtPmdldF9tYXAoKTsKLSAgIH0KLSAgIGNvbnN0IDo6bmRuYm9vc3Q6OnJlZ2V4X3RyYWl0c193cmFwcGVyPHRyYWl0cz4mIGdldF90cmFpdHMoKWNvbnN0Ci0gICB7Ci0gICAgICBORE5CT09TVF9BU1NFUlQoMCAhPSBtX3BpbXBsLmdldCgpKTsKLSAgICAgIHJldHVybiBtX3BpbXBsLT5nZXRfdHJhaXRzKCk7Ci0gICB9Ci0gICBib29sIGNhbl9iZV9udWxsKCljb25zdAotICAgewotICAgICAgTkROQk9PU1RfQVNTRVJUKDAgIT0gbV9waW1wbC5nZXQoKSk7Ci0gICAgICByZXR1cm4gbV9waW1wbC0+Y2FuX2JlX251bGwoKTsKLSAgIH0KLSAgIGNvbnN0IHJlX2RldGFpbDo6cmVnZXhfZGF0YTxjaGFyVCwgdHJhaXRzPiYgZ2V0X2RhdGEoKWNvbnN0Ci0gICB7Ci0gICAgICBORE5CT09TVF9BU1NFUlQoMCAhPSBtX3BpbXBsLmdldCgpKTsKLSAgICAgIHJldHVybiBtX3BpbXBsLT5nZXRfZGF0YSgpOwotICAgfQotICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8cmVfZGV0YWlsOjpuYW1lZF9zdWJleHByZXNzaW9ucyA+IGdldF9uYW1lZF9zdWJzKCljb25zdAotICAgewotICAgICAgcmV0dXJuIG1fcGltcGw7Ci0gICB9Ci0KLXByaXZhdGU6Ci0gICBzaGFyZWRfcHRyPHJlX2RldGFpbDo6YmFzaWNfcmVnZXhfaW1wbGVtZW50YXRpb248Y2hhclQsIHRyYWl0cz4gPiBtX3BpbXBsOwotfTsKLQotLy8KLS8vIG91dCBvZiBsaW5lIG1lbWJlcnM7Ci0vLyB0aGVzZSBhcmUgdGhlIG9ubHkgbWVtYmVycyB0aGF0IG11dGF0ZSB0aGUgYmFzaWNfcmVnZXggb2JqZWN0LAotLy8gYW5kIGFyZSBkZXNpZ25lZCB0byBwcm92aWRlIHRoZSBzdHJvbmcgZXhjZXB0aW9uIGd1YXJlbnRlZQotLy8gKGluIHRoZSBldmVudCBvZiBhIHRocm93LCB0aGUgc3RhdGUgb2YgdGhlIG9iamVjdCByZW1haW5zIHVuY2hhbmdlZCkuCi0vLwotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci1iYXNpY19yZWdleDxjaGFyVCwgdHJhaXRzPiYgYmFzaWNfcmVnZXg8Y2hhclQsIHRyYWl0cz46OmRvX2Fzc2lnbihjb25zdCBjaGFyVCogcDEsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyVCogcDIsCi0gICAgICAgICAgICAgICAgICAgICAgICBmbGFnX3R5cGUgZikKLXsKLSAgIHNoYXJlZF9wdHI8cmVfZGV0YWlsOjpiYXNpY19yZWdleF9pbXBsZW1lbnRhdGlvbjxjaGFyVCwgdHJhaXRzPiA+IHRlbXA7Ci0gICBpZighbV9waW1wbC5nZXQoKSkKLSAgIHsKLSAgICAgIHRlbXAgPSBzaGFyZWRfcHRyPHJlX2RldGFpbDo6YmFzaWNfcmVnZXhfaW1wbGVtZW50YXRpb248Y2hhclQsIHRyYWl0cz4gPihuZXcgcmVfZGV0YWlsOjpiYXNpY19yZWdleF9pbXBsZW1lbnRhdGlvbjxjaGFyVCwgdHJhaXRzPigpKTsKLSAgIH0KLSAgIGVsc2UKLSAgIHsKLSAgICAgIHRlbXAgPSBzaGFyZWRfcHRyPHJlX2RldGFpbDo6YmFzaWNfcmVnZXhfaW1wbGVtZW50YXRpb248Y2hhclQsIHRyYWl0cz4gPihuZXcgcmVfZGV0YWlsOjpiYXNpY19yZWdleF9pbXBsZW1lbnRhdGlvbjxjaGFyVCwgdHJhaXRzPihtX3BpbXBsLT5tX3B0cmFpdHMpKTsKLSAgIH0KLSAgIHRlbXAtPmFzc2lnbihwMSwgcDIsIGYpOwotICAgdGVtcC5zd2FwKG1fcGltcGwpOwotICAgcmV0dXJuICp0aGlzOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLXR5cGVuYW1lIGJhc2ljX3JlZ2V4PGNoYXJULCB0cmFpdHM+Ojpsb2NhbGVfdHlwZSBORE5CT09TVF9SRUdFWF9DQUxMIGJhc2ljX3JlZ2V4PGNoYXJULCB0cmFpdHM+OjppbWJ1ZShsb2NhbGVfdHlwZSBsKQoteyAKLSAgIHNoYXJlZF9wdHI8cmVfZGV0YWlsOjpiYXNpY19yZWdleF9pbXBsZW1lbnRhdGlvbjxjaGFyVCwgdHJhaXRzPiA+IHRlbXAobmV3IHJlX2RldGFpbDo6YmFzaWNfcmVnZXhfaW1wbGVtZW50YXRpb248Y2hhclQsIHRyYWl0cz4oKSk7Ci0gICBsb2NhbGVfdHlwZSByZXN1bHQgPSB0ZW1wLT5pbWJ1ZShsKTsKLSAgIHRlbXAuc3dhcChtX3BpbXBsKTsKLSAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8vCi0vLyBub24tbWVtYmVyczoKLS8vCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLXZvaWQgc3dhcChiYXNpY19yZWdleDxjaGFyVCwgdHJhaXRzPiYgZTEsIGJhc2ljX3JlZ2V4PGNoYXJULCB0cmFpdHM+JiBlMikKLXsKLSAgIGUxLnN3YXAoZTIpOwotfQotCi0jaWZuZGVmIE5ETkJPT1NUX05PX1NURF9MT0NBTEUKLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzLCBjbGFzcyB0cmFpdHMyPgotc3RkOjpiYXNpY19vc3RyZWFtPGNoYXJULCB0cmFpdHM+JiAKLSAgIG9wZXJhdG9yIDw8IChzdGQ6OmJhc2ljX29zdHJlYW08Y2hhclQsIHRyYWl0cz4mIG9zLCAKLSAgICAgICAgICAgICAgICBjb25zdCBiYXNpY19yZWdleDxjaGFyVCwgdHJhaXRzMj4mIGUpCi17Ci0gICByZXR1cm4gKG9zIDw8IGUuc3RyKCkpOwotfQotI2Vsc2UKLXRlbXBsYXRlIDxjbGFzcyB0cmFpdHM+Ci1zdGQ6Om9zdHJlYW0mIG9wZXJhdG9yIDw8IChzdGQ6Om9zdHJlYW0mIG9zLCBjb25zdCBiYXNpY19yZWdleDxjaGFyLCB0cmFpdHM+JiBlKQotewotICAgcmV0dXJuIChvcyA8PCBlLnN0cigpKTsKLX0KLSNlbmRpZgotCi0vLwotLy8gY2xhc3MgcmVnX2V4cHJlc3Npb246Ci0vLyB0aGlzIGlzIHByb3ZpZGVkIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSBvbmx5LAotLy8gaXQgaXMgZGVwcmVjYXRlZCwgbm8gbm90IHVzZSEKLS8vCi0jaWZkZWYgTkROQk9PU1RfUkVHRVhfTk9fRldECi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cyA9IHJlZ2V4X3RyYWl0czxjaGFyVD4gPgotI2Vsc2UKLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzID4KLSNlbmRpZgotY2xhc3MgcmVnX2V4cHJlc3Npb24gOiBwdWJsaWMgYmFzaWNfcmVnZXg8Y2hhclQsIHRyYWl0cz4KLXsKLXB1YmxpYzoKLSAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzaWNfcmVnZXg8Y2hhclQsIHRyYWl0cz46OmZsYWdfdHlwZSBmbGFnX3R5cGU7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIGJhc2ljX3JlZ2V4PGNoYXJULCB0cmFpdHM+OjpzaXplX3R5cGUgc2l6ZV90eXBlOwotICAgZXhwbGljaXQgcmVnX2V4cHJlc3Npb24oKXt9Ci0gICBleHBsaWNpdCByZWdfZXhwcmVzc2lvbihjb25zdCBjaGFyVCogcCwgZmxhZ190eXBlIGYgPSByZWdleF9jb25zdGFudHM6Om5vcm1hbCkKLSAgICAgIDogYmFzaWNfcmVnZXg8Y2hhclQsIHRyYWl0cz4ocCwgZil7fQotICAgcmVnX2V4cHJlc3Npb24oY29uc3QgY2hhclQqIHAxLCBjb25zdCBjaGFyVCogcDIsIGZsYWdfdHlwZSBmID0gcmVnZXhfY29uc3RhbnRzOjpub3JtYWwpCi0gICAgICA6IGJhc2ljX3JlZ2V4PGNoYXJULCB0cmFpdHM+KHAxLCBwMiwgZil7fQotICAgcmVnX2V4cHJlc3Npb24oY29uc3QgY2hhclQqIHAsIHNpemVfdHlwZSBsZW4sIGZsYWdfdHlwZSBmKQotICAgICAgOiBiYXNpY19yZWdleDxjaGFyVCwgdHJhaXRzPihwLCBsZW4sIGYpe30KLSAgIHJlZ19leHByZXNzaW9uKGNvbnN0IHJlZ19leHByZXNzaW9uJiB0aGF0KQotICAgICAgOiBiYXNpY19yZWdleDxjaGFyVCwgdHJhaXRzPih0aGF0KSB7fQotICAgfnJlZ19leHByZXNzaW9uKCl7fQotICAgcmVnX2V4cHJlc3Npb24mIE5ETkJPT1NUX1JFR0VYX0NBTEwgb3BlcmF0b3I9KGNvbnN0IHJlZ19leHByZXNzaW9uJiB0aGF0KQotICAgewotICAgICAgcmV0dXJuIHRoaXMtPmFzc2lnbih0aGF0KTsKLSAgIH0KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX01FTUJFUl9URU1QTEFURVMpCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgU1QsIGNsYXNzIFNBPgotICAgZXhwbGljaXQgcmVnX2V4cHJlc3Npb24oY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQsIFNULCBTQT4mIHAsIGZsYWdfdHlwZSBmID0gcmVnZXhfY29uc3RhbnRzOjpub3JtYWwpCi0gICA6IGJhc2ljX3JlZ2V4PGNoYXJULCB0cmFpdHM+KHAsIGYpCi0gICB7IAotICAgfQotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgSW5wdXRJdGVyYXRvcj4KLSAgIHJlZ19leHByZXNzaW9uKElucHV0SXRlcmF0b3IgYXJnX2ZpcnN0LCBJbnB1dEl0ZXJhdG9yIGFyZ19sYXN0LCBmbGFnX3R5cGUgZiA9IHJlZ2V4X2NvbnN0YW50czo6bm9ybWFsKQotICAgOiBiYXNpY19yZWdleDxjaGFyVCwgdHJhaXRzPihhcmdfZmlyc3QsIGFyZ19sYXN0LCBmKQotICAgewotICAgfQotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgU1QsIGNsYXNzIFNBPgotICAgcmVnX2V4cHJlc3Npb24mIE5ETkJPT1NUX1JFR0VYX0NBTEwgb3BlcmF0b3I9KGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJULCBTVCwgU0E+JiBwKQotICAgewotICAgICAgdGhpcy0+YXNzaWduKHApOwotICAgICAgcmV0dXJuICp0aGlzOwotICAgfQotI2Vsc2UKLSAgIGV4cGxpY2l0IHJlZ19leHByZXNzaW9uKGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJUPiYgcCwgZmxhZ190eXBlIGYgPSByZWdleF9jb25zdGFudHM6Om5vcm1hbCkKLSAgIDogYmFzaWNfcmVnZXg8Y2hhclQsIHRyYWl0cz4ocCwgZikKLSAgIHsgCi0gICB9Ci0KLSAgIHJlZ19leHByZXNzaW9uJiBORE5CT09TVF9SRUdFWF9DQUxMIG9wZXJhdG9yPShjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVD4mIHApCi0gICB7Ci0gICAgICB0aGlzLT5hc3NpZ24ocCk7Ci0gICAgICByZXR1cm4gKnRoaXM7Ci0gICB9Ci0jZW5kaWYKLQotfTsKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyAocG9wKQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9TVUZGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvYmFzaWNfcmVnZXhfY3JlYXRvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L2Jhc2ljX3JlZ2V4X2NyZWF0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZGIwNGU2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvYmFzaWNfcmVnZXhfY3JlYXRvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTcxICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IChjKSAyMDA0Ci0gKiBKb2huIE1hZGRvY2sKLSAqCi0gKiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLSAqIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotICogTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqLwotCi0gLyoKLSAgKiAgIExPQ0FUSU9OOiAgICBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0gICogICBGSUxFICAgICAgICAgYmFzaWNfcmVnZXhfY3JlYXRvci5jcHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IERlY2xhcmVzIHRlbXBsYXRlIGNsYXNzIGJhc2ljX3JlZ2V4X2NyZWF0b3Igd2hpY2ggZmlsbHMgaW4KLSAgKiAgICAgICAgICAgICAgICB0aGUgZGF0YSBtZW1iZXJzIG9mIGEgcmVnZXhfZGF0YSBvYmplY3QuCi0gICovCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfVjRfQkFTSUNfUkVHRVhfQ1JFQVRPUl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfVjRfQkFTSUNfUkVHRVhfQ1JFQVRPUl9IUFAKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1BSRUZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotIyAgcHJhZ21hIHdhcm5pbmcocHVzaCkKLSMgIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ4MDApCi0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0ewotCi1uYW1lc3BhY2UgcmVfZGV0YWlsewotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci1zdHJ1Y3QgZGlncmFwaCA6IHB1YmxpYyBzdGQ6OnBhaXI8Y2hhclQsIGNoYXJUPgotewotICAgZGlncmFwaCgpIDogc3RkOjpwYWlyPGNoYXJULCBjaGFyVD4oMCwgMCl7fQotICAgZGlncmFwaChjaGFyVCBjMSkgOiBzdGQ6OnBhaXI8Y2hhclQsIGNoYXJUPihjMSwgMCl7fQotICAgZGlncmFwaChjaGFyVCBjMSwgY2hhclQgYzIpIDogc3RkOjpwYWlyPGNoYXJULCBjaGFyVD4oYzEsIGMyKQotICAge30KLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApCi0gICBkaWdyYXBoKGNvbnN0IGRpZ3JhcGg8Y2hhclQ+JiBkKSA6IHN0ZDo6cGFpcjxjaGFyVCwgY2hhclQ+KGQuZmlyc3QsIGQuc2Vjb25kKXt9Ci0jZW5kaWYKLSAgIHRlbXBsYXRlIDxjbGFzcyBTZXE+Ci0gICBkaWdyYXBoKGNvbnN0IFNlcSYgcykgOiBzdGQ6OnBhaXI8Y2hhclQsIGNoYXJUPigpCi0gICB7Ci0gICAgICBORE5CT09TVF9BU1NFUlQocy5zaXplKCkgPD0gMik7Ci0gICAgICBORE5CT09TVF9BU1NFUlQocy5zaXplKCkpOwotICAgICAgdGhpcy0+Zmlyc3QgPSBzWzBdOwotICAgICAgdGhpcy0+c2Vjb25kID0gKHMuc2l6ZSgpID4gMSkgPyBzWzFdIDogMDsKLSAgIH0KLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotY2xhc3MgYmFzaWNfY2hhcl9zZXQKLXsKLXB1YmxpYzoKLSAgIHR5cGVkZWYgZGlncmFwaDxjaGFyVD4gICAgICAgICAgICAgICAgICAgZGlncmFwaF90eXBlOwotICAgdHlwZWRlZiB0eXBlbmFtZSB0cmFpdHM6OnN0cmluZ190eXBlICAgICBzdHJpbmdfdHlwZTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzOjpjaGFyX2NsYXNzX3R5cGUgbV90eXBlOwotCi0gICBiYXNpY19jaGFyX3NldCgpCi0gICB7Ci0gICAgICBtX25lZ2F0ZSA9IGZhbHNlOwotICAgICAgbV9oYXNfZGlncmFwaHMgPSBmYWxzZTsKLSAgICAgIG1fY2xhc3NlcyA9IDA7Ci0gICAgICBtX25lZ2F0ZWRfY2xhc3NlcyA9IDA7Ci0gICAgICBtX2VtcHR5ID0gdHJ1ZTsKLSAgIH0KLQotICAgdm9pZCBhZGRfc2luZ2xlKGNvbnN0IGRpZ3JhcGhfdHlwZSYgcykKLSAgIHsKLSAgICAgIG1fc2luZ2xlcy5pbnNlcnQobV9zaW5nbGVzLmVuZCgpLCBzKTsKLSAgICAgIGlmKHMuc2Vjb25kKQotICAgICAgICAgbV9oYXNfZGlncmFwaHMgPSB0cnVlOwotICAgICAgbV9lbXB0eSA9IGZhbHNlOwotICAgfQotICAgdm9pZCBhZGRfcmFuZ2UoY29uc3QgZGlncmFwaF90eXBlJiBmaXJzdCwgY29uc3QgZGlncmFwaF90eXBlJiBlbmQpCi0gICB7Ci0gICAgICBtX3Jhbmdlcy5pbnNlcnQobV9yYW5nZXMuZW5kKCksIGZpcnN0KTsKLSAgICAgIG1fcmFuZ2VzLmluc2VydChtX3Jhbmdlcy5lbmQoKSwgZW5kKTsKLSAgICAgIGlmKGZpcnN0LnNlY29uZCkKLSAgICAgIHsKLSAgICAgICAgIG1faGFzX2RpZ3JhcGhzID0gdHJ1ZTsKLSAgICAgICAgIGFkZF9zaW5nbGUoZmlyc3QpOwotICAgICAgfQotICAgICAgaWYoZW5kLnNlY29uZCkKLSAgICAgIHsKLSAgICAgICAgIG1faGFzX2RpZ3JhcGhzID0gdHJ1ZTsKLSAgICAgICAgIGFkZF9zaW5nbGUoZW5kKTsKLSAgICAgIH0KLSAgICAgIG1fZW1wdHkgPSBmYWxzZTsKLSAgIH0KLSAgIHZvaWQgYWRkX2NsYXNzKG1fdHlwZSBtKQotICAgewotICAgICAgbV9jbGFzc2VzIHw9IG07Ci0gICAgICBtX2VtcHR5ID0gZmFsc2U7Ci0gICB9Ci0gICB2b2lkIGFkZF9uZWdhdGVkX2NsYXNzKG1fdHlwZSBtKQotICAgewotICAgICAgbV9uZWdhdGVkX2NsYXNzZXMgfD0gbTsKLSAgICAgIG1fZW1wdHkgPSBmYWxzZTsKLSAgIH0KLSAgIHZvaWQgYWRkX2VxdWl2YWxlbnQoY29uc3QgZGlncmFwaF90eXBlJiBzKQotICAgewotICAgICAgbV9lcXVpdmFsZW50cy5pbnNlcnQobV9lcXVpdmFsZW50cy5lbmQoKSwgcyk7Ci0gICAgICBpZihzLnNlY29uZCkKLSAgICAgIHsKLSAgICAgICAgIG1faGFzX2RpZ3JhcGhzID0gdHJ1ZTsKLSAgICAgICAgIGFkZF9zaW5nbGUocyk7Ci0gICAgICB9Ci0gICAgICBtX2VtcHR5ID0gZmFsc2U7Ci0gICB9Ci0gICB2b2lkIG5lZ2F0ZSgpCi0gICB7IAotICAgICAgbV9uZWdhdGUgPSB0cnVlOwotICAgICAgLy9tX2VtcHR5ID0gZmFsc2U7Ci0gICB9Ci0KLSAgIC8vCi0gICAvLyBhY2Nlc3NvciBmdW5jdGlvbnM6Ci0gICAvLwotICAgYm9vbCBoYXNfZGlncmFwaHMoKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gbV9oYXNfZGlncmFwaHM7Ci0gICB9Ci0gICBib29sIGlzX25lZ2F0ZWQoKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gbV9uZWdhdGU7Ci0gICB9Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHN0ZDo6dmVjdG9yPGRpZ3JhcGhfdHlwZT46OmNvbnN0X2l0ZXJhdG9yICBsaXN0X2l0ZXJhdG9yOwotICAgbGlzdF9pdGVyYXRvciBzaW5nbGVzX2JlZ2luKCljb25zdAotICAgewotICAgICAgcmV0dXJuIG1fc2luZ2xlcy5iZWdpbigpOwotICAgfQotICAgbGlzdF9pdGVyYXRvciBzaW5nbGVzX2VuZCgpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBtX3NpbmdsZXMuZW5kKCk7Ci0gICB9Ci0gICBsaXN0X2l0ZXJhdG9yIHJhbmdlc19iZWdpbigpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBtX3Jhbmdlcy5iZWdpbigpOwotICAgfQotICAgbGlzdF9pdGVyYXRvciByYW5nZXNfZW5kKCljb25zdAotICAgewotICAgICAgcmV0dXJuIG1fcmFuZ2VzLmVuZCgpOwotICAgfQotICAgbGlzdF9pdGVyYXRvciBlcXVpdmFsZW50c19iZWdpbigpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBtX2VxdWl2YWxlbnRzLmJlZ2luKCk7Ci0gICB9Ci0gICBsaXN0X2l0ZXJhdG9yIGVxdWl2YWxlbnRzX2VuZCgpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBtX2VxdWl2YWxlbnRzLmVuZCgpOwotICAgfQotICAgbV90eXBlIGNsYXNzZXMoKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gbV9jbGFzc2VzOwotICAgfQotICAgbV90eXBlIG5lZ2F0ZWRfY2xhc3NlcygpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBtX25lZ2F0ZWRfY2xhc3NlczsKLSAgIH0KLSAgIGJvb2wgZW1wdHkoKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gbV9lbXB0eTsKLSAgIH0KLXByaXZhdGU6Ci0gICBzdGQ6OnZlY3RvcjxkaWdyYXBoX3R5cGU+IG1fc2luZ2xlczsgICAgICAgICAvLyBhIGxpc3Qgb2Ygc2luZ2xlIGNoYXJhY3RlcnMgdG8gbWF0Y2gKLSAgIHN0ZDo6dmVjdG9yPGRpZ3JhcGhfdHlwZT4gbV9yYW5nZXM7ICAgICAgICAgIC8vIGEgbGlzdCBvZiBlbmQgcG9pbnRzIG9mIG91ciByYW5nZXMKLSAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgbV9uZWdhdGU7ICAgICAgICAgIC8vIHRydWUgaWYgdGhlIHNldCBpcyB0byBiZSBuZWdhdGVkCi0gICBib29sICAgICAgICAgICAgICAgICAgICAgIG1faGFzX2RpZ3JhcGhzOyAgICAvLyB0cnVlIGlmIHdlIGhhdmUgZGlncmFwaHMgcHJlc2VudAotICAgbV90eXBlICAgICAgICAgICAgICAgICAgICBtX2NsYXNzZXM7ICAgICAgICAgLy8gY2hhcmFjdGVyIGNsYXNzZXMgdG8gbWF0Y2gKLSAgIG1fdHlwZSAgICAgICAgICAgICAgICAgICAgbV9uZWdhdGVkX2NsYXNzZXM7IC8vIG5lZ2F0ZWQgY2hhcmFjdGVyIGNsYXNzZXMgdG8gbWF0Y2gKLSAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgbV9lbXB0eTsgICAgICAgICAgIC8vIHdoZXRoZXIgd2UndmUgYWRkZWQgYW55dGhpbmcgeWV0Ci0gICBzdGQ6OnZlY3RvcjxkaWdyYXBoX3R5cGU+IG1fZXF1aXZhbGVudHM7ICAgICAvLyBhIGxpc3Qgb2YgZXF1aXZhbGVuY2UgY2xhc3NlcwotfTsKLSAgIAotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci1jbGFzcyBiYXNpY19yZWdleF9jcmVhdG9yCi17Ci1wdWJsaWM6Ci0gICBiYXNpY19yZWdleF9jcmVhdG9yKHJlZ2V4X2RhdGE8Y2hhclQsIHRyYWl0cz4qIGRhdGEpOwotICAgc3RkOjpwdHJkaWZmX3QgZ2V0b2Zmc2V0KHZvaWQqIGFkZHIpCi0gICB7Ci0gICAgICByZXR1cm4gZ2V0b2Zmc2V0KGFkZHIsIG1fcGRhdGEtPm1fZGF0YS5kYXRhKCkpOwotICAgfQotICAgc3RkOjpwdHJkaWZmX3QgZ2V0b2Zmc2V0KGNvbnN0IHZvaWQqIGFkZHIsIGNvbnN0IHZvaWQqIGJhc2UpCi0gICB7Ci0gICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGFkZHIpIC0gc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGJhc2UpOwotICAgfQotICAgcmVfc3ludGF4X2Jhc2UqIGdldGFkZHJlc3Moc3RkOjpwdHJkaWZmX3Qgb2ZmKQotICAgewotICAgICAgcmV0dXJuIGdldGFkZHJlc3Mob2ZmLCBtX3BkYXRhLT5tX2RhdGEuZGF0YSgpKTsKLSAgIH0KLSAgIHJlX3N5bnRheF9iYXNlKiBnZXRhZGRyZXNzKHN0ZDo6cHRyZGlmZl90IG9mZiwgdm9pZCogYmFzZSkKLSAgIHsKLSAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxyZV9zeW50YXhfYmFzZSo+KHN0YXRpY19jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDxjaGFyKj4oYmFzZSkgKyBvZmYpKTsKLSAgIH0KLSAgIHZvaWQgaW5pdCh1bnNpZ25lZCBsX2ZsYWdzKQotICAgewotICAgICAgbV9wZGF0YS0+bV9mbGFncyA9IGxfZmxhZ3M7Ci0gICAgICBtX2ljYXNlID0gbF9mbGFncyAmIHJlZ2V4X2NvbnN0YW50czo6aWNhc2U7Ci0gICB9Ci0gICByZWdiYXNlOjpmbGFnX3R5cGUgZmxhZ3MoKQotICAgewotICAgICAgcmV0dXJuIG1fcGRhdGEtPm1fZmxhZ3M7Ci0gICB9Ci0gICB2b2lkIGZsYWdzKHJlZ2Jhc2U6OmZsYWdfdHlwZSBmKQotICAgewotICAgICAgbV9wZGF0YS0+bV9mbGFncyA9IGY7Ci0gICAgICBpZihtX2ljYXNlICE9IHN0YXRpY19jYXN0PGJvb2w+KGYgJiByZWdiYXNlOjppY2FzZSkpCi0gICAgICB7Ci0gICAgICAgICBtX2ljYXNlID0gc3RhdGljX2Nhc3Q8Ym9vbD4oZiAmIHJlZ2Jhc2U6OmljYXNlKTsKLSAgICAgIH0KLSAgIH0KLSAgIHJlX3N5bnRheF9iYXNlKiBhcHBlbmRfc3RhdGUoc3ludGF4X2VsZW1lbnRfdHlwZSB0LCBzdGQ6OnNpemVfdCBzID0gc2l6ZW9mKHJlX3N5bnRheF9iYXNlKSk7Ci0gICByZV9zeW50YXhfYmFzZSogaW5zZXJ0X3N0YXRlKHN0ZDo6cHRyZGlmZl90IHBvcywgc3ludGF4X2VsZW1lbnRfdHlwZSB0LCBzdGQ6OnNpemVfdCBzID0gc2l6ZW9mKHJlX3N5bnRheF9iYXNlKSk7Ci0gICByZV9saXRlcmFsKiBhcHBlbmRfbGl0ZXJhbChjaGFyVCBjKTsKLSAgIHJlX3N5bnRheF9iYXNlKiBhcHBlbmRfc2V0KGNvbnN0IGJhc2ljX2NoYXJfc2V0PGNoYXJULCB0cmFpdHM+JiBjaGFyX3NldCk7Ci0gICByZV9zeW50YXhfYmFzZSogYXBwZW5kX3NldChjb25zdCBiYXNpY19jaGFyX3NldDxjaGFyVCwgdHJhaXRzPiYgY2hhcl9zZXQsIG1wbDo6ZmFsc2VfKik7Ci0gICByZV9zeW50YXhfYmFzZSogYXBwZW5kX3NldChjb25zdCBiYXNpY19jaGFyX3NldDxjaGFyVCwgdHJhaXRzPiYgY2hhcl9zZXQsIG1wbDo6dHJ1ZV8qKTsKLSAgIHZvaWQgZmluYWxpemUoY29uc3QgY2hhclQqIHAxLCBjb25zdCBjaGFyVCogcDIpOwotcHJvdGVjdGVkOgotICAgcmVnZXhfZGF0YTxjaGFyVCwgdHJhaXRzPiogICAgbV9wZGF0YTsgICAgICAgICAgICAgIC8vIHBvaW50ZXIgdG8gdGhlIGJhc2ljX3JlZ2V4X2RhdGEgc3RydWN0IHdlIGFyZSBmaWxsaW5nIGluCi0gICBjb25zdCA6Om5kbmJvb3N0OjpyZWdleF90cmFpdHNfd3JhcHBlcjx0cmFpdHM+JiAgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3RyYWl0czsgICAgICAgICAgICAgLy8gY29udmVuaWVuY2UgcmVmZXJlbmNlIHRvIHRyYWl0cyBjbGFzcwotICAgcmVfc3ludGF4X2Jhc2UqICAgICAgICAgICAgICAgbV9sYXN0X3N0YXRlOyAgICAgICAgIC8vIHRoZSBsYXN0IHN0YXRlIHdlIGFkZGVkCi0gICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICBtX2ljYXNlOyAgICAgICAgICAgICAgLy8gdHJ1ZSBmb3IgY2FzZSBpbnNlbnNpdGl2ZSBtYXRjaGVzCi0gICB1bnNpZ25lZCAgICAgICAgICAgICAgICAgICAgICBtX3JlcGVhdGVyX2lkOyAgICAgICAgLy8gdGhlIHN0YXRlX2lkIG9mIHRoZSBuZXh0IHJlcGVhdGVyCi0gICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICBtX2hhc19iYWNrcmVmczsgICAgICAgLy8gdHJ1ZSBpZiB0aGVyZSBhcmUgYWN0dWFsbHkgYW55IGJhY2tyZWZzCi0gICB1bnNpZ25lZCAgICAgICAgICAgICAgICAgICAgICBtX2JhY2tyZWZzOyAgICAgICAgICAgLy8gYml0bWFzayBvZiBwZXJtaXR0ZWQgYmFja3JlZnMKLSAgIG5kbmJvb3N0Ojp1aW50bWF4X3QgICAgICAgICAgICAgIG1fYmFkX3JlcGVhdHM7ICAgICAgICAvLyBiaXRtYXNrIG9mIHJlcGVhdHMgd2UgY2FuJ3QgZGVkdWNlIGEgc3RhcnRtYXAgZm9yOwotICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgbV9oYXNfcmVjdXJzaW9uczsgICAgIC8vIHNldCB3aGVuIHdlIGhhdmUgcmVjdXJzaXZlIGV4cHJlc2lzb25zIHRvIGZpeHVwCi0gICBzdGQ6OnZlY3Rvcjxib29sPiAgICAgICAgICAgICBtX3JlY3Vyc2lvbl9jaGVja3M7ICAgLy8gbm90ZXMgd2hpY2ggcmVjdXJzaW9ucyB3ZSd2ZSBmb2xsb3dlZCB3aGlsZSBhbmFseXNpbmcgdGhpcyBleHByZXNzaW9uCi0gICB0eXBlbmFtZSB0cmFpdHM6OmNoYXJfY2xhc3NfdHlwZSBtX3dvcmRfbWFzazsgICAgICAgLy8gbWFzayB1c2VkIHRvIGRldGVybWluZSBpZiBhIGNoYXJhY3RlciBpcyBhIHdvcmQgY2hhcmFjdGVyCi0gICB0eXBlbmFtZSB0cmFpdHM6OmNoYXJfY2xhc3NfdHlwZSBtX21hc2tfc3BhY2U7ICAgICAgLy8gbWFzayB1c2VkIHRvIGRldGVybWluZSBpZiBhIGNoYXJhY3RlciBpcyBhIHdvcmQgY2hhcmFjdGVyCi0gICB0eXBlbmFtZSB0cmFpdHM6OmNoYXJfY2xhc3NfdHlwZSBtX2xvd2VyX21hc2s7ICAgICAgIC8vIG1hc2sgdXNlZCB0byBkZXRlcm1pbmUgaWYgYSBjaGFyYWN0ZXIgaXMgYSBsb3dlcmNhc2UgY2hhcmFjdGVyCi0gICB0eXBlbmFtZSB0cmFpdHM6OmNoYXJfY2xhc3NfdHlwZSBtX3VwcGVyX21hc2s7ICAgICAgLy8gbWFzayB1c2VkIHRvIGRldGVybWluZSBpZiBhIGNoYXJhY3RlciBpcyBhbiB1cHBlcmNhc2UgY2hhcmFjdGVyCi0gICB0eXBlbmFtZSB0cmFpdHM6OmNoYXJfY2xhc3NfdHlwZSBtX2FscGhhX21hc2s7ICAgICAgLy8gbWFzayB1c2VkIHRvIGRldGVybWluZSBpZiBhIGNoYXJhY3RlciBpcyBhbiBhbHBoYWJldGljIGNoYXJhY3RlcgotcHJpdmF0ZToKLSAgIGJhc2ljX3JlZ2V4X2NyZWF0b3ImIG9wZXJhdG9yPShjb25zdCBiYXNpY19yZWdleF9jcmVhdG9yJik7Ci0gICBiYXNpY19yZWdleF9jcmVhdG9yKGNvbnN0IGJhc2ljX3JlZ2V4X2NyZWF0b3ImKTsKLQotICAgdm9pZCBmaXh1cF9wb2ludGVycyhyZV9zeW50YXhfYmFzZSogc3RhdGUpOwotICAgdm9pZCBmaXh1cF9yZWN1cnNpb25zKHJlX3N5bnRheF9iYXNlKiBzdGF0ZSk7Ci0gICB2b2lkIGNyZWF0ZV9zdGFydG1hcHMocmVfc3ludGF4X2Jhc2UqIHN0YXRlKTsKLSAgIGludCBjYWxjdWxhdGVfYmFja3N0ZXAocmVfc3ludGF4X2Jhc2UqIHN0YXRlKTsKLSAgIHZvaWQgY3JlYXRlX3N0YXJ0bWFwKHJlX3N5bnRheF9iYXNlKiBzdGF0ZSwgdW5zaWduZWQgY2hhciogbF9tYXAsIHVuc2lnbmVkIGludCogcG51bGwsIHVuc2lnbmVkIGNoYXIgbWFzayk7Ci0gICB1bnNpZ25lZCBnZXRfcmVzdGFydF90eXBlKHJlX3N5bnRheF9iYXNlKiBzdGF0ZSk7Ci0gICB2b2lkIHNldF9hbGxfbWFza3ModW5zaWduZWQgY2hhciogYml0cywgdW5zaWduZWQgY2hhcik7Ci0gICBib29sIGlzX2JhZF9yZXBlYXQocmVfc3ludGF4X2Jhc2UqIHB0KTsKLSAgIHZvaWQgc2V0X2JhZF9yZXBlYXQocmVfc3ludGF4X2Jhc2UqIHB0KTsKLSAgIHN5bnRheF9lbGVtZW50X3R5cGUgZ2V0X3JlcGVhdF90eXBlKHJlX3N5bnRheF9iYXNlKiBzdGF0ZSk7Ci0gICB2b2lkIHByb2JlX2xlYWRpbmdfcmVwZWF0KHJlX3N5bnRheF9iYXNlKiBzdGF0ZSk7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLWJhc2ljX3JlZ2V4X2NyZWF0b3I8Y2hhclQsIHRyYWl0cz46OmJhc2ljX3JlZ2V4X2NyZWF0b3IocmVnZXhfZGF0YTxjaGFyVCwgdHJhaXRzPiogZGF0YSkKLSAgIDogbV9wZGF0YShkYXRhKSwgbV90cmFpdHMoKihkYXRhLT5tX3B0cmFpdHMpKSwgbV9sYXN0X3N0YXRlKDApLCBtX3JlcGVhdGVyX2lkKDApLCBtX2hhc19iYWNrcmVmcyhmYWxzZSksIG1fYmFja3JlZnMoMCksIG1faGFzX3JlY3Vyc2lvbnMoZmFsc2UpCi17Ci0gICBtX3BkYXRhLT5tX2RhdGEuY2xlYXIoKTsKLSAgIG1fcGRhdGEtPm1fc3RhdHVzID0gOjpuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjplcnJvcl9vazsKLSAgIHN0YXRpYyBjb25zdCBjaGFyVCB3ID0gJ3cnOwotICAgc3RhdGljIGNvbnN0IGNoYXJUIHMgPSAncyc7Ci0gICBzdGF0aWMgY29uc3QgY2hhclQgbFs1XSA9IHsgJ2wnLCAnbycsICd3JywgJ2UnLCAncicsIH07Ci0gICBzdGF0aWMgY29uc3QgY2hhclQgdVs1XSA9IHsgJ3UnLCAncCcsICdwJywgJ2UnLCAncicsIH07Ci0gICBzdGF0aWMgY29uc3QgY2hhclQgYVs1XSA9IHsgJ2EnLCAnbCcsICdwJywgJ2gnLCAnYScsIH07Ci0gICBtX3dvcmRfbWFzayA9IG1fdHJhaXRzLmxvb2t1cF9jbGFzc25hbWUoJncsICZ3ICsxKTsKLSAgIG1fbWFza19zcGFjZSA9IG1fdHJhaXRzLmxvb2t1cF9jbGFzc25hbWUoJnMsICZzICsxKTsKLSAgIG1fbG93ZXJfbWFzayA9IG1fdHJhaXRzLmxvb2t1cF9jbGFzc25hbWUobCwgbCArIDUpOwotICAgbV91cHBlcl9tYXNrID0gbV90cmFpdHMubG9va3VwX2NsYXNzbmFtZSh1LCB1ICsgNSk7Ci0gICBtX2FscGhhX21hc2sgPSBtX3RyYWl0cy5sb29rdXBfY2xhc3NuYW1lKGEsIGEgKyA1KTsKLSAgIG1fcGRhdGEtPm1fd29yZF9tYXNrID0gbV93b3JkX21hc2s7Ci0gICBORE5CT09TVF9BU1NFUlQobV93b3JkX21hc2sgIT0gMCk7IAotICAgTkROQk9PU1RfQVNTRVJUKG1fbWFza19zcGFjZSAhPSAwKTsgCi0gICBORE5CT09TVF9BU1NFUlQobV9sb3dlcl9tYXNrICE9IDApOyAKLSAgIE5ETkJPT1NUX0FTU0VSVChtX3VwcGVyX21hc2sgIT0gMCk7IAotICAgTkROQk9PU1RfQVNTRVJUKG1fYWxwaGFfbWFzayAhPSAwKTsgCi19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotcmVfc3ludGF4X2Jhc2UqIGJhc2ljX3JlZ2V4X2NyZWF0b3I8Y2hhclQsIHRyYWl0cz46OmFwcGVuZF9zdGF0ZShzeW50YXhfZWxlbWVudF90eXBlIHQsIHN0ZDo6c2l6ZV90IHMpCi17Ci0gICAvLyBpZiB0aGUgc3RhdGUgaXMgYSBiYWNrcmVmIHRoZW4gbWFrZSBhIG5vdGUgb2YgaXQ6Ci0gICBpZih0ID09IHN5bnRheF9lbGVtZW50X2JhY2tyZWYpCi0gICAgICB0aGlzLT5tX2hhc19iYWNrcmVmcyA9IHRydWU7Ci0gICAvLyBhcHBlbmQgYSBuZXcgc3RhdGUsIHN0YXJ0IGJ5IGFsaWduaW5nIG91ciBsYXN0IG9uZToKLSAgIG1fcGRhdGEtPm1fZGF0YS5hbGlnbigpOwotICAgLy8gc2V0IHRoZSBvZmZzZXQgdG8gdGhlIG5leHQgc3RhdGUgaW4gb3VyIGxhc3Qgb25lOgotICAgaWYobV9sYXN0X3N0YXRlKQotICAgICAgbV9sYXN0X3N0YXRlLT5uZXh0LmkgPSBtX3BkYXRhLT5tX2RhdGEuc2l6ZSgpIC0gZ2V0b2Zmc2V0KG1fbGFzdF9zdGF0ZSk7Ci0gICAvLyBub3cgYWN0dWFsbHkgZXh0ZW50IG91ciBkYXRhOgotICAgbV9sYXN0X3N0YXRlID0gc3RhdGljX2Nhc3Q8cmVfc3ludGF4X2Jhc2UqPihtX3BkYXRhLT5tX2RhdGEuZXh0ZW5kKHMpKTsKLSAgIC8vIGZpbGwgaW4gYm9pbGVycGxhdGUgb3B0aW9ucyBpbiB0aGUgbmV3IHN0YXRlOgotICAgbV9sYXN0X3N0YXRlLT5uZXh0LmkgPSAwOwotICAgbV9sYXN0X3N0YXRlLT50eXBlID0gdDsKLSAgIHJldHVybiBtX2xhc3Rfc3RhdGU7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotcmVfc3ludGF4X2Jhc2UqIGJhc2ljX3JlZ2V4X2NyZWF0b3I8Y2hhclQsIHRyYWl0cz46Omluc2VydF9zdGF0ZShzdGQ6OnB0cmRpZmZfdCBwb3MsIHN5bnRheF9lbGVtZW50X3R5cGUgdCwgc3RkOjpzaXplX3QgcykKLXsKLSAgIC8vIGFwcGVuZCBhIG5ldyBzdGF0ZSwgc3RhcnQgYnkgYWxpZ25pbmcgb3VyIGxhc3Qgb25lOgotICAgbV9wZGF0YS0+bV9kYXRhLmFsaWduKCk7Ci0gICAvLyBzZXQgdGhlIG9mZnNldCB0byB0aGUgbmV4dCBzdGF0ZSBpbiBvdXIgbGFzdCBvbmU6Ci0gICBpZihtX2xhc3Rfc3RhdGUpCi0gICAgICBtX2xhc3Rfc3RhdGUtPm5leHQuaSA9IG1fcGRhdGEtPm1fZGF0YS5zaXplKCkgLSBnZXRvZmZzZXQobV9sYXN0X3N0YXRlKTsKLSAgIC8vIHJlbWVtYmVyIHRoZSBsYXN0IHN0YXRlIHBvc2l0aW9uOgotICAgc3RkOjpwdHJkaWZmX3Qgb2ZmID0gZ2V0b2Zmc2V0KG1fbGFzdF9zdGF0ZSkgKyBzOwotICAgLy8gbm93IGFjdHVhbGx5IGluc2VydCBvdXIgZGF0YToKLSAgIHJlX3N5bnRheF9iYXNlKiBuZXdfc3RhdGUgPSBzdGF0aWNfY2FzdDxyZV9zeW50YXhfYmFzZSo+KG1fcGRhdGEtPm1fZGF0YS5pbnNlcnQocG9zLCBzKSk7Ci0gICAvLyBmaWxsIGluIGJvaWxlcnBsYXRlIG9wdGlvbnMgaW4gdGhlIG5ldyBzdGF0ZToKLSAgIG5ld19zdGF0ZS0+bmV4dC5pID0gczsKLSAgIG5ld19zdGF0ZS0+dHlwZSA9IHQ7Ci0gICBtX2xhc3Rfc3RhdGUgPSBnZXRhZGRyZXNzKG9mZik7Ci0gICByZXR1cm4gbmV3X3N0YXRlOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLXJlX2xpdGVyYWwqIGJhc2ljX3JlZ2V4X2NyZWF0b3I8Y2hhclQsIHRyYWl0cz46OmFwcGVuZF9saXRlcmFsKGNoYXJUIGMpCi17Ci0gICByZV9saXRlcmFsKiByZXN1bHQ7Ci0gICAvLyBzdGFydCBieSBzZWVpbmcgaWYgd2UgaGF2ZSBhbiBleGlzdGluZyByZV9saXRlcmFsIHdlIGNhbiBleHRlbmQ6Ci0gICBpZigoMCA9PSBtX2xhc3Rfc3RhdGUpIHx8IChtX2xhc3Rfc3RhdGUtPnR5cGUgIT0gc3ludGF4X2VsZW1lbnRfbGl0ZXJhbCkpCi0gICB7Ci0gICAgICAvLyBubyBleGlzdGluZyByZV9saXRlcmFsLCBjcmVhdGUgYSBuZXcgb25lOgotICAgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8cmVfbGl0ZXJhbCo+KGFwcGVuZF9zdGF0ZShzeW50YXhfZWxlbWVudF9saXRlcmFsLCBzaXplb2YocmVfbGl0ZXJhbCkgKyBzaXplb2YoY2hhclQpKSk7Ci0gICAgICByZXN1bHQtPmxlbmd0aCA9IDE7Ci0gICAgICAqc3RhdGljX2Nhc3Q8Y2hhclQqPihzdGF0aWNfY2FzdDx2b2lkKj4ocmVzdWx0KzEpKSA9IG1fdHJhaXRzLnRyYW5zbGF0ZShjLCBtX2ljYXNlKTsKLSAgIH0KLSAgIGVsc2UKLSAgIHsKLSAgICAgIC8vIHdlIGhhdmUgYW4gZXhpc3RpbmcgcmVfbGl0ZXJhbCwgZXh0ZW5kIGl0OgotICAgICAgc3RkOjpwdHJkaWZmX3Qgb2ZmID0gZ2V0b2Zmc2V0KG1fbGFzdF9zdGF0ZSk7Ci0gICAgICBtX3BkYXRhLT5tX2RhdGEuZXh0ZW5kKHNpemVvZihjaGFyVCkpOwotICAgICAgbV9sYXN0X3N0YXRlID0gcmVzdWx0ID0gc3RhdGljX2Nhc3Q8cmVfbGl0ZXJhbCo+KGdldGFkZHJlc3Mob2ZmKSk7Ci0gICAgICBjaGFyVCogY2hhcmFjdGVycyA9IHN0YXRpY19jYXN0PGNoYXJUKj4oc3RhdGljX2Nhc3Q8dm9pZCo+KHJlc3VsdCsxKSk7Ci0gICAgICBjaGFyYWN0ZXJzW3Jlc3VsdC0+bGVuZ3RoXSA9IG1fdHJhaXRzLnRyYW5zbGF0ZShjLCBtX2ljYXNlKTsKLSAgICAgICsrKHJlc3VsdC0+bGVuZ3RoKTsKLSAgIH0KLSAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotaW5saW5lIHJlX3N5bnRheF9iYXNlKiBiYXNpY19yZWdleF9jcmVhdG9yPGNoYXJULCB0cmFpdHM+OjphcHBlbmRfc2V0KAotICAgY29uc3QgYmFzaWNfY2hhcl9zZXQ8Y2hhclQsIHRyYWl0cz4mIGNoYXJfc2V0KQotewotICAgdHlwZWRlZiBtcGw6OmJvb2xfPCAoc2l6ZW9mKGNoYXJUKSA9PSAxKSA+IHRydXRoX3R5cGU7Ci0gICByZXR1cm4gY2hhcl9zZXQuaGFzX2RpZ3JhcGhzKCkgCi0gICAgICA/IGFwcGVuZF9zZXQoY2hhcl9zZXQsIHN0YXRpY19jYXN0PG1wbDo6ZmFsc2VfKj4oMCkpCi0gICAgICA6IGFwcGVuZF9zZXQoY2hhcl9zZXQsIHN0YXRpY19jYXN0PHRydXRoX3R5cGUqPigwKSk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotcmVfc3ludGF4X2Jhc2UqIGJhc2ljX3JlZ2V4X2NyZWF0b3I8Y2hhclQsIHRyYWl0cz46OmFwcGVuZF9zZXQoCi0gICBjb25zdCBiYXNpY19jaGFyX3NldDxjaGFyVCwgdHJhaXRzPiYgY2hhcl9zZXQsIG1wbDo6ZmFsc2VfKikKLXsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzOjpzdHJpbmdfdHlwZSBzdHJpbmdfdHlwZTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzaWNfY2hhcl9zZXQ8Y2hhclQsIHRyYWl0cz46Omxpc3RfaXRlcmF0b3IgaXRlbV9pdGVyYXRvcjsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzOjpjaGFyX2NsYXNzX3R5cGUgbV90eXBlOwotICAgCi0gICByZV9zZXRfbG9uZzxtX3R5cGU+KiByZXN1bHQgPSBzdGF0aWNfY2FzdDxyZV9zZXRfbG9uZzxtX3R5cGU+Kj4oYXBwZW5kX3N0YXRlKHN5bnRheF9lbGVtZW50X2xvbmdfc2V0LCBzaXplb2YocmVfc2V0X2xvbmc8bV90eXBlPikpKTsKLSAgIC8vCi0gICAvLyBmaWxsIGluIHRoZSBiYXNpY3M6Ci0gICAvLwotICAgcmVzdWx0LT5jc2luZ2xlcyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpkaXN0YW5jZShjaGFyX3NldC5zaW5nbGVzX2JlZ2luKCksIGNoYXJfc2V0LnNpbmdsZXNfZW5kKCkpKTsKLSAgIHJlc3VsdC0+Y3JhbmdlcyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpkaXN0YW5jZShjaGFyX3NldC5yYW5nZXNfYmVnaW4oKSwgY2hhcl9zZXQucmFuZ2VzX2VuZCgpKSkgLyAyOwotICAgcmVzdWx0LT5jZXF1aXZhbGVudHMgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6ZGlzdGFuY2UoY2hhcl9zZXQuZXF1aXZhbGVudHNfYmVnaW4oKSwgY2hhcl9zZXQuZXF1aXZhbGVudHNfZW5kKCkpKTsKLSAgIHJlc3VsdC0+Y2NsYXNzZXMgPSBjaGFyX3NldC5jbGFzc2VzKCk7Ci0gICByZXN1bHQtPmNuY2xhc3NlcyA9IGNoYXJfc2V0Lm5lZ2F0ZWRfY2xhc3NlcygpOwotICAgaWYoZmxhZ3MoKSAmIHJlZ2Jhc2U6OmljYXNlKQotICAgewotICAgICAgLy8gYWRqdXN0IGNsYXNzZXMgYXMgbmVlZGVkOgotICAgICAgaWYoKChyZXN1bHQtPmNjbGFzc2VzICYgbV9sb3dlcl9tYXNrKSA9PSBtX2xvd2VyX21hc2spIHx8ICgocmVzdWx0LT5jY2xhc3NlcyAmIG1fdXBwZXJfbWFzaykgPT0gbV91cHBlcl9tYXNrKSkKLSAgICAgICAgIHJlc3VsdC0+Y2NsYXNzZXMgfD0gbV9hbHBoYV9tYXNrOwotICAgICAgaWYoKChyZXN1bHQtPmNuY2xhc3NlcyAmIG1fbG93ZXJfbWFzaykgPT0gbV9sb3dlcl9tYXNrKSB8fCAoKHJlc3VsdC0+Y25jbGFzc2VzICYgbV91cHBlcl9tYXNrKSA9PSBtX3VwcGVyX21hc2spKQotICAgICAgICAgcmVzdWx0LT5jbmNsYXNzZXMgfD0gbV9hbHBoYV9tYXNrOwotICAgfQotCi0gICByZXN1bHQtPmlzbm90ID0gY2hhcl9zZXQuaXNfbmVnYXRlZCgpOwotICAgcmVzdWx0LT5zaW5nbGV0b24gPSAhY2hhcl9zZXQuaGFzX2RpZ3JhcGhzKCk7Ci0gICAvLwotICAgLy8gcmVtZW1iZXIgd2hlcmUgdGhlIHN0YXRlIGlzIGZvciBsYXRlcjoKLSAgIC8vCi0gICBzdGQ6OnB0cmRpZmZfdCBvZmZzZXQgPSBnZXRvZmZzZXQocmVzdWx0KTsKLSAgIC8vCi0gICAvLyBub3cgZXh0ZW5kIHdpdGggYWxsIHRoZSBzaW5nbGVzOgotICAgLy8KLSAgIGl0ZW1faXRlcmF0b3IgZmlyc3QsIGxhc3Q7Ci0gICBmaXJzdCA9IGNoYXJfc2V0LnNpbmdsZXNfYmVnaW4oKTsKLSAgIGxhc3QgPSBjaGFyX3NldC5zaW5nbGVzX2VuZCgpOwotICAgd2hpbGUoZmlyc3QgIT0gbGFzdCkKLSAgIHsKLSAgICAgIGNoYXJUKiBwID0gc3RhdGljX2Nhc3Q8Y2hhclQqPih0aGlzLT5tX3BkYXRhLT5tX2RhdGEuZXh0ZW5kKHNpemVvZihjaGFyVCkgKiAoZmlyc3QtPnNlY29uZCA/IDMgOiAyKSkpOwotICAgICAgcFswXSA9IG1fdHJhaXRzLnRyYW5zbGF0ZShmaXJzdC0+Zmlyc3QsIG1faWNhc2UpOwotICAgICAgaWYoZmlyc3QtPnNlY29uZCkKLSAgICAgIHsKLSAgICAgICAgIHBbMV0gPSBtX3RyYWl0cy50cmFuc2xhdGUoZmlyc3QtPnNlY29uZCwgbV9pY2FzZSk7Ci0gICAgICAgICBwWzJdID0gMDsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgICAgIHBbMV0gPSAwOwotICAgICAgKytmaXJzdDsKLSAgIH0KLSAgIC8vCi0gICAvLyBub3cgZXh0ZW5kIHdpdGggYWxsIHRoZSByYW5nZXM6Ci0gICAvLwotICAgZmlyc3QgPSBjaGFyX3NldC5yYW5nZXNfYmVnaW4oKTsKLSAgIGxhc3QgPSBjaGFyX3NldC5yYW5nZXNfZW5kKCk7Ci0gICB3aGlsZShmaXJzdCAhPSBsYXN0KQotICAgewotICAgICAgLy8gZmlyc3QgZ3JhYiB0aGUgZW5kcG9pbnRzIG9mIHRoZSByYW5nZToKLSAgICAgIGRpZ3JhcGg8Y2hhclQ+IGMxID0gKmZpcnN0OwotICAgICAgYzEuZmlyc3QgPSB0aGlzLT5tX3RyYWl0cy50cmFuc2xhdGUoYzEuZmlyc3QsIHRoaXMtPm1faWNhc2UpOwotICAgICAgYzEuc2Vjb25kID0gdGhpcy0+bV90cmFpdHMudHJhbnNsYXRlKGMxLnNlY29uZCwgdGhpcy0+bV9pY2FzZSk7Ci0gICAgICArK2ZpcnN0OwotICAgICAgZGlncmFwaDxjaGFyVD4gYzIgPSAqZmlyc3Q7Ci0gICAgICBjMi5maXJzdCA9IHRoaXMtPm1fdHJhaXRzLnRyYW5zbGF0ZShjMi5maXJzdCwgdGhpcy0+bV9pY2FzZSk7Ci0gICAgICBjMi5zZWNvbmQgPSB0aGlzLT5tX3RyYWl0cy50cmFuc2xhdGUoYzIuc2Vjb25kLCB0aGlzLT5tX2ljYXNlKTsKLSAgICAgICsrZmlyc3Q7Ci0gICAgICBzdHJpbmdfdHlwZSBzMSwgczI7Ci0gICAgICAvLyBkaWZmZXJlbnQgYWN0aW9ucyBub3cgZGVwZW5kaW5nIHVwb24gd2hldGhlciBjb2xsYXRpb24gaXMgdHVybmVkIG9uOgotICAgICAgaWYoZmxhZ3MoKSAmIHJlZ2V4X2NvbnN0YW50czo6Y29sbGF0ZSkKLSAgICAgIHsKLSAgICAgICAgIC8vIHdlIG5lZWQgdG8gdHJhbnNmb3JtIG91ciByYW5nZSBpbnRvIHNvcnQga2V5czoKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fR05VQ19fLCA8IDMpCi0gICAgICAgICBzdHJpbmdfdHlwZSBpbigzLCBjaGFyVCgwKSk7Ci0gICAgICAgICBpblswXSA9IGMxLmZpcnN0OwotICAgICAgICAgaW5bMV0gPSBjMS5zZWNvbmQ7Ci0gICAgICAgICBzMSA9IHRoaXMtPm1fdHJhaXRzLnRyYW5zZm9ybShpbi5jX3N0cigpLCAoaW5bMV0gPyBpbi5jX3N0cigpKzIgOiBpbi5jX3N0cigpKzEpKTsKLSAgICAgICAgIGluWzBdID0gYzIuZmlyc3Q7Ci0gICAgICAgICBpblsxXSA9IGMyLnNlY29uZDsKLSAgICAgICAgIHMyID0gdGhpcy0+bV90cmFpdHMudHJhbnNmb3JtKGluLmNfc3RyKCksIChpblsxXSA/IGluLmNfc3RyKCkrMiA6IGluLmNfc3RyKCkrMSkpOwotI2Vsc2UKLSAgICAgICAgIGNoYXJUIGExWzNdID0geyBjMS5maXJzdCwgYzEuc2Vjb25kLCBjaGFyVCgwKSwgfTsKLSAgICAgICAgIGNoYXJUIGEyWzNdID0geyBjMi5maXJzdCwgYzIuc2Vjb25kLCBjaGFyVCgwKSwgfTsKLSAgICAgICAgIHMxID0gdGhpcy0+bV90cmFpdHMudHJhbnNmb3JtKGExLCAoYTFbMV0gPyBhMSsyIDogYTErMSkpOwotICAgICAgICAgczIgPSB0aGlzLT5tX3RyYWl0cy50cmFuc2Zvcm0oYTIsIChhMlsxXSA/IGEyKzIgOiBhMisxKSk7Ci0jZW5kaWYKLSAgICAgICAgIGlmKHMxLnNpemUoKSA9PSAwKQotICAgICAgICAgICAgczEgPSBzdHJpbmdfdHlwZSgxLCBjaGFyVCgwKSk7Ci0gICAgICAgICBpZihzMi5zaXplKCkgPT0gMCkKLSAgICAgICAgICAgIHMyID0gc3RyaW5nX3R5cGUoMSwgY2hhclQoMCkpOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICAgaWYoYzEuc2Vjb25kKQotICAgICAgICAgewotICAgICAgICAgICAgczEuaW5zZXJ0KHMxLmVuZCgpLCBjMS5maXJzdCk7Ci0gICAgICAgICAgICBzMS5pbnNlcnQoczEuZW5kKCksIGMxLnNlY29uZCk7Ci0gICAgICAgICB9Ci0gICAgICAgICBlbHNlCi0gICAgICAgICAgICBzMSA9IHN0cmluZ190eXBlKDEsIGMxLmZpcnN0KTsKLSAgICAgICAgIGlmKGMyLnNlY29uZCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIHMyLmluc2VydChzMi5lbmQoKSwgYzIuZmlyc3QpOwotICAgICAgICAgICAgczIuaW5zZXJ0KHMyLmVuZCgpLCBjMi5zZWNvbmQpOwotICAgICAgICAgfQotICAgICAgICAgZWxzZQotICAgICAgICAgICAgczIuaW5zZXJ0KHMyLmVuZCgpLCBjMi5maXJzdCk7Ci0gICAgICB9Ci0gICAgICBpZihzMSA+IHMyKQotICAgICAgewotICAgICAgICAgLy8gT29wcyBlcnJvcjoKLSAgICAgICAgIHJldHVybiAwOwotICAgICAgfQotICAgICAgY2hhclQqIHAgPSBzdGF0aWNfY2FzdDxjaGFyVCo+KHRoaXMtPm1fcGRhdGEtPm1fZGF0YS5leHRlbmQoc2l6ZW9mKGNoYXJUKSAqIChzMS5zaXplKCkgKyBzMi5zaXplKCkgKyAyKSApICk7Ci0gICAgICByZV9kZXRhaWw6OmNvcHkoczEuYmVnaW4oKSwgczEuZW5kKCksIHApOwotICAgICAgcFtzMS5zaXplKCldID0gY2hhclQoMCk7Ci0gICAgICBwICs9IHMxLnNpemUoKSArIDE7Ci0gICAgICByZV9kZXRhaWw6OmNvcHkoczIuYmVnaW4oKSwgczIuZW5kKCksIHApOwotICAgICAgcFtzMi5zaXplKCldID0gY2hhclQoMCk7Ci0gICB9Ci0gICAvLwotICAgLy8gbm93IHByb2Nlc3MgdGhlIGVxdWl2YWxlbmNlIGNsYXNzZXM6Ci0gICAvLwotICAgZmlyc3QgPSBjaGFyX3NldC5lcXVpdmFsZW50c19iZWdpbigpOwotICAgbGFzdCA9IGNoYXJfc2V0LmVxdWl2YWxlbnRzX2VuZCgpOwotICAgd2hpbGUoZmlyc3QgIT0gbGFzdCkKLSAgIHsKLSAgICAgIHN0cmluZ190eXBlIHM7Ci0gICAgICBpZihmaXJzdC0+c2Vjb25kKQotICAgICAgewotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19HTlVDX18sIDwgMykKLSAgICAgICAgIHN0cmluZ190eXBlIGluKDMsIGNoYXJUKDApKTsKLSAgICAgICAgIGluWzBdID0gZmlyc3QtPmZpcnN0OwotICAgICAgICAgaW5bMV0gPSBmaXJzdC0+c2Vjb25kOwotICAgICAgICAgcyA9IG1fdHJhaXRzLnRyYW5zZm9ybV9wcmltYXJ5KGluLmNfc3RyKCksIGluLmNfc3RyKCkrMik7Ci0jZWxzZQotICAgICAgICAgY2hhclQgY3NbM10gPSB7IGZpcnN0LT5maXJzdCwgZmlyc3QtPnNlY29uZCwgY2hhclQoMCksIH07Ci0gICAgICAgICBzID0gbV90cmFpdHMudHJhbnNmb3JtX3ByaW1hcnkoY3MsIGNzKzIpOwotI2VuZGlmCi0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICAgICBzID0gbV90cmFpdHMudHJhbnNmb3JtX3ByaW1hcnkoJmZpcnN0LT5maXJzdCwgJmZpcnN0LT5maXJzdCsxKTsKLSAgICAgIGlmKHMuZW1wdHkoKSkKLSAgICAgICAgIHJldHVybiAwOyAgLy8gaW52YWxpZCBvciB1bnN1cHBvcnRlZCBlcXVpdmFsZW5jZSBjbGFzcwotICAgICAgY2hhclQqIHAgPSBzdGF0aWNfY2FzdDxjaGFyVCo+KHRoaXMtPm1fcGRhdGEtPm1fZGF0YS5leHRlbmQoc2l6ZW9mKGNoYXJUKSAqIChzLnNpemUoKSsxKSApICk7Ci0gICAgICByZV9kZXRhaWw6OmNvcHkocy5iZWdpbigpLCBzLmVuZCgpLCBwKTsKLSAgICAgIHBbcy5zaXplKCldID0gY2hhclQoMCk7Ci0gICAgICArK2ZpcnN0OwotICAgfQotICAgLy8KLSAgIC8vIGZpbmFsbHkgcmVzZXQgdGhlIGFkZHJlc3Mgb2Ygb3VyIGxhc3Qgc3RhdGU6Ci0gICAvLwotICAgbV9sYXN0X3N0YXRlID0gcmVzdWx0ID0gc3RhdGljX2Nhc3Q8cmVfc2V0X2xvbmc8bV90eXBlPio+KGdldGFkZHJlc3Mob2Zmc2V0KSk7Ci0gICByZXR1cm4gcmVzdWx0OwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUPgotaW5saW5lIGJvb2wgY2hhcl9sZXNzKFQgdDEsIFQgdDIpCi17Ci0gICByZXR1cm4gdDEgPCB0MjsKLX0KLWlubGluZSBib29sIGNoYXJfbGVzcyhjaGFyIHQxLCBjaGFyIHQyKQotewotICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHQxKSA8IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHQyKTsKLX0KLWlubGluZSBib29sIGNoYXJfbGVzcyhzaWduZWQgY2hhciB0MSwgc2lnbmVkIGNoYXIgdDIpCi17Ci0gICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4odDEpIDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4odDIpOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLXJlX3N5bnRheF9iYXNlKiBiYXNpY19yZWdleF9jcmVhdG9yPGNoYXJULCB0cmFpdHM+OjphcHBlbmRfc2V0KAotICAgY29uc3QgYmFzaWNfY2hhcl9zZXQ8Y2hhclQsIHRyYWl0cz4mIGNoYXJfc2V0LCBtcGw6OnRydWVfKikKLXsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzOjpzdHJpbmdfdHlwZSBzdHJpbmdfdHlwZTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzaWNfY2hhcl9zZXQ8Y2hhclQsIHRyYWl0cz46Omxpc3RfaXRlcmF0b3IgaXRlbV9pdGVyYXRvcjsKLSAgIAotICAgcmVfc2V0KiByZXN1bHQgPSBzdGF0aWNfY2FzdDxyZV9zZXQqPihhcHBlbmRfc3RhdGUoc3ludGF4X2VsZW1lbnRfc2V0LCBzaXplb2YocmVfc2V0KSkpOwotICAgYm9vbCBuZWdhdGUgPSBjaGFyX3NldC5pc19uZWdhdGVkKCk7Ci0gICBzdGQ6Om1lbXNldChyZXN1bHQtPl9tYXAsIDAsIHNpemVvZihyZXN1bHQtPl9tYXApKTsKLSAgIC8vCi0gICAvLyBoYW5kbGUgc2luZ2xlcyBmaXJzdDoKLSAgIC8vCi0gICBpdGVtX2l0ZXJhdG9yIGZpcnN0LCBsYXN0OwotICAgZmlyc3QgPSBjaGFyX3NldC5zaW5nbGVzX2JlZ2luKCk7Ci0gICBsYXN0ID0gY2hhcl9zZXQuc2luZ2xlc19lbmQoKTsKLSAgIHdoaWxlKGZpcnN0ICE9IGxhc3QpCi0gICB7Ci0gICAgICBmb3IodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgKDEgPDwgQ0hBUl9CSVQpOyArK2kpCi0gICAgICB7Ci0gICAgICAgICBpZih0aGlzLT5tX3RyYWl0cy50cmFuc2xhdGUoc3RhdGljX2Nhc3Q8Y2hhclQ+KGkpLCB0aGlzLT5tX2ljYXNlKQotICAgICAgICAgICAgPT0gdGhpcy0+bV90cmFpdHMudHJhbnNsYXRlKGZpcnN0LT5maXJzdCwgdGhpcy0+bV9pY2FzZSkpCi0gICAgICAgICAgICByZXN1bHQtPl9tYXBbaV0gPSB0cnVlOwotICAgICAgfQotICAgICAgKytmaXJzdDsKLSAgIH0KLSAgIC8vCi0gICAvLyBPSyBub3cgaGFuZGxlIHJhbmdlczoKLSAgIC8vCi0gICBmaXJzdCA9IGNoYXJfc2V0LnJhbmdlc19iZWdpbigpOwotICAgbGFzdCA9IGNoYXJfc2V0LnJhbmdlc19lbmQoKTsKLSAgIHdoaWxlKGZpcnN0ICE9IGxhc3QpCi0gICB7Ci0gICAgICAvLyBmaXJzdCBncmFiIHRoZSBlbmRwb2ludHMgb2YgdGhlIHJhbmdlOgotICAgICAgY2hhclQgYzEgPSB0aGlzLT5tX3RyYWl0cy50cmFuc2xhdGUoZmlyc3QtPmZpcnN0LCB0aGlzLT5tX2ljYXNlKTsKLSAgICAgICsrZmlyc3Q7Ci0gICAgICBjaGFyVCBjMiA9IHRoaXMtPm1fdHJhaXRzLnRyYW5zbGF0ZShmaXJzdC0+Zmlyc3QsIHRoaXMtPm1faWNhc2UpOwotICAgICAgKytmaXJzdDsKLSAgICAgIC8vIGRpZmZlcmVudCBhY3Rpb25zIG5vdyBkZXBlbmRpbmcgdXBvbiB3aGV0aGVyIGNvbGxhdGlvbiBpcyB0dXJuZWQgb246Ci0gICAgICBpZihmbGFncygpICYgcmVnZXhfY29uc3RhbnRzOjpjb2xsYXRlKQotICAgICAgewotICAgICAgICAgLy8gd2UgbmVlZCB0byB0cmFuc2Zvcm0gb3VyIHJhbmdlIGludG8gc29ydCBrZXlzOgotICAgICAgICAgY2hhclQgYzNbMl0gPSB7IGMxLCBjaGFyVCgwKSwgfTsKLSAgICAgICAgIHN0cmluZ190eXBlIHMxID0gdGhpcy0+bV90cmFpdHMudHJhbnNmb3JtKGMzLCBjMysxKTsKLSAgICAgICAgIGMzWzBdID0gYzI7Ci0gICAgICAgICBzdHJpbmdfdHlwZSBzMiA9IHRoaXMtPm1fdHJhaXRzLnRyYW5zZm9ybShjMywgYzMrMSk7Ci0gICAgICAgICBpZihzMSA+IHMyKQotICAgICAgICAgewotICAgICAgICAgICAgLy8gT29wcyBlcnJvcjoKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgfQotICAgICAgICAgTkROQk9PU1RfQVNTRVJUKGMzWzFdID09IGNoYXJUKDApKTsKLSAgICAgICAgIGZvcih1bnNpZ25lZCBpID0gMDsgaSA8ICgxdSA8PCBDSEFSX0JJVCk7ICsraSkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIGMzWzBdID0gc3RhdGljX2Nhc3Q8Y2hhclQ+KGkpOwotICAgICAgICAgICAgc3RyaW5nX3R5cGUgczMgPSB0aGlzLT5tX3RyYWl0cy50cmFuc2Zvcm0oYzMsIGMzICsxKTsKLSAgICAgICAgICAgIGlmKChzMSA8PSBzMykgJiYgKHMzIDw9IHMyKSkKLSAgICAgICAgICAgICAgIHJlc3VsdC0+X21hcFtpXSA9IHRydWU7Ci0gICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgICBpZihjaGFyX2xlc3MoYzIsIGMxKSkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIE9vcHMgZXJyb3I6Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgIH0KLSAgICAgICAgIC8vIGV2ZXJ5dGhpbmcgaW4gcmFuZ2UgbWF0Y2hlczoKLSAgICAgICAgIHN0ZDo6bWVtc2V0KHJlc3VsdC0+X21hcCArIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGMxKSwgdHJ1ZSwgMSArIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGMyKSAtIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGMxKSk7Ci0gICAgICB9Ci0gICB9Ci0gICAvLwotICAgLy8gYW5kIG5vdyB0aGUgY2xhc3NlczoKLSAgIC8vCi0gICB0eXBlZGVmIHR5cGVuYW1lIHRyYWl0czo6Y2hhcl9jbGFzc190eXBlIG1fdHlwZTsKLSAgIG1fdHlwZSBtID0gY2hhcl9zZXQuY2xhc3NlcygpOwotICAgaWYoZmxhZ3MoKSAmIHJlZ2Jhc2U6OmljYXNlKQotICAgewotICAgICAgLy8gYWRqdXN0IG0gYXMgbmVlZGVkOgotICAgICAgaWYoKChtICYgbV9sb3dlcl9tYXNrKSA9PSBtX2xvd2VyX21hc2spIHx8ICgobSAmIG1fdXBwZXJfbWFzaykgPT0gbV91cHBlcl9tYXNrKSkKLSAgICAgICAgIG0gfD0gbV9hbHBoYV9tYXNrOwotICAgfQotICAgaWYobSAhPSAwKQotICAgewotICAgICAgZm9yKHVuc2lnbmVkIGkgPSAwOyBpIDwgKDF1IDw8IENIQVJfQklUKTsgKytpKQotICAgICAgewotICAgICAgICAgaWYodGhpcy0+bV90cmFpdHMuaXNjdHlwZShzdGF0aWNfY2FzdDxjaGFyVD4oaSksIG0pKQotICAgICAgICAgICAgcmVzdWx0LT5fbWFwW2ldID0gdHJ1ZTsKLSAgICAgIH0KLSAgIH0KLSAgIC8vCi0gICAvLyBhbmQgbm93IHRoZSBuZWdhdGVkIGNsYXNzZXM6Ci0gICAvLwotICAgbSA9IGNoYXJfc2V0Lm5lZ2F0ZWRfY2xhc3NlcygpOwotICAgaWYoZmxhZ3MoKSAmIHJlZ2Jhc2U6OmljYXNlKQotICAgewotICAgICAgLy8gYWRqdXN0IG0gYXMgbmVlZGVkOgotICAgICAgaWYoKChtICYgbV9sb3dlcl9tYXNrKSA9PSBtX2xvd2VyX21hc2spIHx8ICgobSAmIG1fdXBwZXJfbWFzaykgPT0gbV91cHBlcl9tYXNrKSkKLSAgICAgICAgIG0gfD0gbV9hbHBoYV9tYXNrOwotICAgfQotICAgaWYobSAhPSAwKQotICAgewotICAgICAgZm9yKHVuc2lnbmVkIGkgPSAwOyBpIDwgKDF1IDw8IENIQVJfQklUKTsgKytpKQotICAgICAgewotICAgICAgICAgaWYoMCA9PSB0aGlzLT5tX3RyYWl0cy5pc2N0eXBlKHN0YXRpY19jYXN0PGNoYXJUPihpKSwgbSkpCi0gICAgICAgICAgICByZXN1bHQtPl9tYXBbaV0gPSB0cnVlOwotICAgICAgfQotICAgfQotICAgLy8KLSAgIC8vIG5vdyBwcm9jZXNzIHRoZSBlcXVpdmFsZW5jZSBjbGFzc2VzOgotICAgLy8KLSAgIGZpcnN0ID0gY2hhcl9zZXQuZXF1aXZhbGVudHNfYmVnaW4oKTsKLSAgIGxhc3QgPSBjaGFyX3NldC5lcXVpdmFsZW50c19lbmQoKTsKLSAgIHdoaWxlKGZpcnN0ICE9IGxhc3QpCi0gICB7Ci0gICAgICBzdHJpbmdfdHlwZSBzOwotICAgICAgTkROQk9PU1RfQVNTRVJUKHN0YXRpY19jYXN0PGNoYXJUPigwKSA9PSBmaXJzdC0+c2Vjb25kKTsKLSAgICAgIHMgPSBtX3RyYWl0cy50cmFuc2Zvcm1fcHJpbWFyeSgmZmlyc3QtPmZpcnN0LCAmZmlyc3QtPmZpcnN0KzEpOwotICAgICAgaWYocy5lbXB0eSgpKQotICAgICAgICAgcmV0dXJuIDA7ICAvLyBpbnZhbGlkIG9yIHVuc3VwcG9ydGVkIGVxdWl2YWxlbmNlIGNsYXNzCi0gICAgICBmb3IodW5zaWduZWQgaSA9IDA7IGkgPCAoMXUgPDwgQ0hBUl9CSVQpOyArK2kpCi0gICAgICB7Ci0gICAgICAgICBjaGFyVCBjWzJdID0geyAoc3RhdGljX2Nhc3Q8Y2hhclQ+KGkpKSwgY2hhclQoMCksIH07Ci0gICAgICAgICBzdHJpbmdfdHlwZSBzMiA9IHRoaXMtPm1fdHJhaXRzLnRyYW5zZm9ybV9wcmltYXJ5KGMsIGMrMSk7Ci0gICAgICAgICBpZihzID09IHMyKQotICAgICAgICAgICAgcmVzdWx0LT5fbWFwW2ldID0gdHJ1ZTsKLSAgICAgIH0KLSAgICAgICsrZmlyc3Q7Ci0gICB9Ci0gICBpZihuZWdhdGUpCi0gICB7Ci0gICAgICBmb3IodW5zaWduZWQgaSA9IDA7IGkgPCAoMXUgPDwgQ0hBUl9CSVQpOyArK2kpCi0gICAgICB7Ci0gICAgICAgICByZXN1bHQtPl9tYXBbaV0gPSAhKHJlc3VsdC0+X21hcFtpXSk7Ci0gICAgICB9Ci0gICB9Ci0gICByZXR1cm4gcmVzdWx0OwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLXZvaWQgYmFzaWNfcmVnZXhfY3JlYXRvcjxjaGFyVCwgdHJhaXRzPjo6ZmluYWxpemUoY29uc3QgY2hhclQqIHAxLCBjb25zdCBjaGFyVCogcDIpCi17Ci0gICBpZih0aGlzLT5tX3BkYXRhLT5tX3N0YXR1cykKLSAgICAgIHJldHVybjsKLSAgIC8vIHdlJ3ZlIGFkZGVkIGFsbCB0aGUgc3RhdGVzIHdlIG5lZWQsIG5vdyBmaW5pc2ggdGhpbmdzIG9mZi4KLSAgIC8vIHN0YXJ0IGJ5IGFkZGluZyBhIHRlcm1pbmF0aW5nIHN0YXRlOgotICAgYXBwZW5kX3N0YXRlKHN5bnRheF9lbGVtZW50X21hdGNoKTsKLSAgIC8vIGV4dGVuZCBzdG9yYWdlIHRvIHN0b3JlIG9yaWdpbmFsIGV4cHJlc3Npb246Ci0gICBzdGQ6OnB0cmRpZmZfdCBsZW4gPSBwMiAtIHAxOwotICAgbV9wZGF0YS0+bV9leHByZXNzaW9uX2xlbiA9IGxlbjsKLSAgIGNoYXJUKiBwcyA9IHN0YXRpY19jYXN0PGNoYXJUKj4obV9wZGF0YS0+bV9kYXRhLmV4dGVuZChzaXplb2YoY2hhclQpICogKDEgKyAocDIgLSBwMSkpKSk7Ci0gICBtX3BkYXRhLT5tX2V4cHJlc3Npb24gPSBwczsKLSAgIHJlX2RldGFpbDo6Y29weShwMSwgcDIsIHBzKTsKLSAgIHBzW3AyIC0gcDFdID0gMDsKLSAgIC8vIGZpbGwgaW4gb3VyIG90aGVyIGRhdGEuLi4KLSAgIC8vIHN1Y2Nlc3NmdWwgcGFyc2luZyBpbXBsaWVzIGEgemVybyBzdGF0dXM6Ci0gICBtX3BkYXRhLT5tX3N0YXR1cyA9IDA7Ci0gICAvLyBnZXQgdGhlIGZpcnN0IHN0YXRlIG9mIHRoZSBtYWNoaW5lOgotICAgbV9wZGF0YS0+bV9maXJzdF9zdGF0ZSA9IHN0YXRpY19jYXN0PHJlX3N5bnRheF9iYXNlKj4obV9wZGF0YS0+bV9kYXRhLmRhdGEoKSk7Ci0gICAvLyBmaXh1cCBwb2ludGVycyBpbiB0aGUgbWFjaGluZToKLSAgIGZpeHVwX3BvaW50ZXJzKG1fcGRhdGEtPm1fZmlyc3Rfc3RhdGUpOwotICAgaWYobV9oYXNfcmVjdXJzaW9ucykKLSAgIHsKLSAgICAgIG1fcGRhdGEtPm1faGFzX3JlY3Vyc2lvbnMgPSB0cnVlOwotICAgICAgZml4dXBfcmVjdXJzaW9ucyhtX3BkYXRhLT5tX2ZpcnN0X3N0YXRlKTsKLSAgICAgIGlmKHRoaXMtPm1fcGRhdGEtPm1fc3RhdHVzKQotICAgICAgICAgcmV0dXJuOwotICAgfQotICAgZWxzZQotICAgICAgbV9wZGF0YS0+bV9oYXNfcmVjdXJzaW9ucyA9IGZhbHNlOwotICAgLy8gY3JlYXRlIG5lc3RlZCBzdGFydG1hcHM6Ci0gICBjcmVhdGVfc3RhcnRtYXBzKG1fcGRhdGEtPm1fZmlyc3Rfc3RhdGUpOwotICAgLy8gY3JlYXRlIG1haW4gc3RhcnRtYXA6Ci0gICBzdGQ6Om1lbXNldChtX3BkYXRhLT5tX3N0YXJ0bWFwLCAwLCBzaXplb2YobV9wZGF0YS0+bV9zdGFydG1hcCkpOwotICAgbV9wZGF0YS0+bV9jYW5fYmVfbnVsbCA9IDA7Ci0KLSAgIG1fYmFkX3JlcGVhdHMgPSAwOwotICAgaWYobV9oYXNfcmVjdXJzaW9ucykKLSAgICAgIG1fcmVjdXJzaW9uX2NoZWNrcy5hc3NpZ24oMSArIG1fcGRhdGEtPm1fbWFya19jb3VudCwgZmFsc2UpOwotICAgY3JlYXRlX3N0YXJ0bWFwKG1fcGRhdGEtPm1fZmlyc3Rfc3RhdGUsIG1fcGRhdGEtPm1fc3RhcnRtYXAsICYobV9wZGF0YS0+bV9jYW5fYmVfbnVsbCksIG1hc2tfYWxsKTsKLSAgIC8vIGdldCB0aGUgcmVzdGFydCB0eXBlOgotICAgbV9wZGF0YS0+bV9yZXN0YXJ0X3R5cGUgPSBnZXRfcmVzdGFydF90eXBlKG1fcGRhdGEtPm1fZmlyc3Rfc3RhdGUpOwotICAgLy8gb3B0aW1pc2UgYSBsZWFkaW5nIHJlcGVhdCBpZiB0aGVyZSBpcyBvbmU6Ci0gICBwcm9iZV9sZWFkaW5nX3JlcGVhdChtX3BkYXRhLT5tX2ZpcnN0X3N0YXRlKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci12b2lkIGJhc2ljX3JlZ2V4X2NyZWF0b3I8Y2hhclQsIHRyYWl0cz46OmZpeHVwX3BvaW50ZXJzKHJlX3N5bnRheF9iYXNlKiBzdGF0ZSkKLXsKLSAgIHdoaWxlKHN0YXRlKQotICAgewotICAgICAgc3dpdGNoKHN0YXRlLT50eXBlKQotICAgICAgewotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9yZWN1cnNlOgotICAgICAgICAgbV9oYXNfcmVjdXJzaW9ucyA9IHRydWU7Ci0gICAgICAgICBpZihzdGF0ZS0+bmV4dC5pKQotICAgICAgICAgICAgc3RhdGUtPm5leHQucCA9IGdldGFkZHJlc3Moc3RhdGUtPm5leHQuaSwgc3RhdGUpOwotICAgICAgICAgZWxzZQotICAgICAgICAgICAgc3RhdGUtPm5leHQucCA9IDA7Ci0gICAgICAgICBicmVhazsKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfcmVwOgotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9kb3RfcmVwOgotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9jaGFyX3JlcDoKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfc2hvcnRfc2V0X3JlcDoKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfbG9uZ19zZXRfcmVwOgotICAgICAgICAgLy8gc2V0IHRoZSBzdGF0ZV9pZCBvZiB0aGlzIHJlcGVhdDoKLSAgICAgICAgIHN0YXRpY19jYXN0PHJlX3JlcGVhdCo+KHN0YXRlKS0+c3RhdGVfaWQgPSBtX3JlcGVhdGVyX2lkKys7Ci0gICAgICAgICBORE5CT09TVF9GQUxMVEhST1VHSDsKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfYWx0OgotICAgICAgICAgc3RkOjptZW1zZXQoc3RhdGljX2Nhc3Q8cmVfYWx0Kj4oc3RhdGUpLT5fbWFwLCAwLCBzaXplb2Yoc3RhdGljX2Nhc3Q8cmVfYWx0Kj4oc3RhdGUpLT5fbWFwKSk7Ci0gICAgICAgICBzdGF0aWNfY2FzdDxyZV9hbHQqPihzdGF0ZSktPmNhbl9iZV9udWxsID0gMDsKLSAgICAgICAgIE5ETkJPT1NUX0ZBTExUSFJPVUdIOwotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9qdW1wOgotICAgICAgICAgc3RhdGljX2Nhc3Q8cmVfanVtcCo+KHN0YXRlKS0+YWx0LnAgPSBnZXRhZGRyZXNzKHN0YXRpY19jYXN0PHJlX2p1bXAqPihzdGF0ZSktPmFsdC5pLCBzdGF0ZSk7Ci0gICAgICAgICBORE5CT09TVF9GQUxMVEhST1VHSDsKLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICBpZihzdGF0ZS0+bmV4dC5pKQotICAgICAgICAgICAgc3RhdGUtPm5leHQucCA9IGdldGFkZHJlc3Moc3RhdGUtPm5leHQuaSwgc3RhdGUpOwotICAgICAgICAgZWxzZQotICAgICAgICAgICAgc3RhdGUtPm5leHQucCA9IDA7Ci0gICAgICB9Ci0gICAgICBzdGF0ZSA9IHN0YXRlLT5uZXh0LnA7Ci0gICB9Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotdm9pZCBiYXNpY19yZWdleF9jcmVhdG9yPGNoYXJULCB0cmFpdHM+OjpmaXh1cF9yZWN1cnNpb25zKHJlX3N5bnRheF9iYXNlKiBzdGF0ZSkKLXsKLSAgIHJlX3N5bnRheF9iYXNlKiBiYXNlID0gc3RhdGU7Ci0gICB3aGlsZShzdGF0ZSkKLSAgIHsKLSAgICAgIHN3aXRjaChzdGF0ZS0+dHlwZSkKLSAgICAgIHsKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfYXNzZXJ0X2JhY2tyZWY6Ci0gICAgICAgICB7Ci0gICAgICAgICAgICAvLyBqdXN0IGNoZWNrIHRoYXQgdGhlIGluZGV4IGlzIHZhbGlkOgotICAgICAgICAgICAgaW50IGlkeCA9IHN0YXRpY19jYXN0PGNvbnN0IHJlX2JyYWNlKj4oc3RhdGUpLT5pbmRleDsKLSAgICAgICAgICAgIGlmKGlkeCA8IDApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICBpZHggPSAtaWR4LTE7Ci0gICAgICAgICAgICAgICBpZihpZHggPj0gMTAwMDApCi0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICBpZHggPSBtX3BkYXRhLT5nZXRfaWQoaWR4KTsKLSAgICAgICAgICAgICAgICAgIGlmKGlkeCA8PSAwKQotICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgLy8gY2hlY2sgb2Ygc3ViLWV4cHJlc3Npb24gdGhhdCBkb2Vzbid0IGV4aXN0OgotICAgICAgICAgICAgICAgICAgICAgaWYoMCA9PSB0aGlzLT5tX3BkYXRhLT5tX3N0YXR1cykgLy8gdXBkYXRlIHRoZSBlcnJvciBjb2RlIGlmIG5vdCBhbHJlYWR5IHNldAotICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy0+bV9wZGF0YS0+bV9zdGF0dXMgPSBuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjplcnJvcl9iYWRfcGF0dGVybjsKLSAgICAgICAgICAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAgICAgICAgICAvLyBjbGVhciB0aGUgZXhwcmVzc2lvbiwgd2Ugc2hvdWxkIGJlIGVtcHR5OgotICAgICAgICAgICAgICAgICAgICAgLy8KLSAgICAgICAgICAgICAgICAgICAgIHRoaXMtPm1fcGRhdGEtPm1fZXhwcmVzc2lvbiA9IDA7Ci0gICAgICAgICAgICAgICAgICAgICB0aGlzLT5tX3BkYXRhLT5tX2V4cHJlc3Npb25fbGVuID0gMDsKLSAgICAgICAgICAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAgICAgICAgICAvLyBhbmQgdGhyb3cgaWYgcmVxdWlyZWQ6Ci0gICAgICAgICAgICAgICAgICAgICAvLwotICAgICAgICAgICAgICAgICAgICAgaWYoMCA9PSAodGhpcy0+ZmxhZ3MoKSAmIHJlZ2V4X2NvbnN0YW50czo6bm9fZXhjZXB0KSkKLSAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIG1lc3NhZ2UgPSAiRW5jb3VudGVyZWQgYSBmb3J3YXJkIHJlZmVyZW5jZSB0byBhIG1hcmtlZCBzdWItZXhwcmVzc2lvbiB0aGF0IGRvZXMgbm90IGV4aXN0LiI7Ci0gICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6cmVnZXhfZXJyb3IgZShtZXNzYWdlLCBuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjplcnJvcl9iYWRfcGF0dGVybiwgMCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBlLnJhaXNlKCk7Ci0gICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICB9Ci0gICAgICAgICBicmVhazsKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfcmVjdXJzZToKLSAgICAgICAgIHsKLSAgICAgICAgICAgIGJvb2wgb2sgPSBmYWxzZTsKLSAgICAgICAgICAgIHJlX3N5bnRheF9iYXNlKiBwID0gYmFzZTsKLSAgICAgICAgICAgIHN0ZDo6cHRyZGlmZl90IGlkeCA9IHN0YXRpY19jYXN0PHJlX2p1bXAqPihzdGF0ZSktPmFsdC5pOwotICAgICAgICAgICAgaWYoaWR4ID4gMTAwMDApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAvLwotICAgICAgICAgICAgICAgLy8gVGhlcmUgbWF5IGJlIG1vcmUgdGhhbiBvbmUgY2FwdHVyZSBncm91cCB3aXRoIHRoaXMgaGFzaCwganVzdCBkbyB3aGF0IFBlcmwKLSAgICAgICAgICAgICAgIC8vIGRvZXMgYW5kIHJlY3Vyc2UgdG8gdGhlIGxlZnRtb3N0OgotICAgICAgICAgICAgICAgLy8KLSAgICAgICAgICAgICAgIGlkeCA9IG1fcGRhdGEtPmdldF9pZChzdGF0aWNfY2FzdDxpbnQ+KGlkeCkpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgd2hpbGUocCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIGlmKChwLT50eXBlID09IHN5bnRheF9lbGVtZW50X3N0YXJ0bWFyaykgJiYgKHN0YXRpY19jYXN0PHJlX2JyYWNlKj4ocCktPmluZGV4ID09IGlkeCkpCi0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAvLwotICAgICAgICAgICAgICAgICAgLy8gV2UndmUgZm91bmQgdGhlIHRhcmdldCBvZiB0aGUgcmVjdXJzaW9uLCBzZXQgdGhlIGp1bXAgdGFyZ2V0OgotICAgICAgICAgICAgICAgICAgLy8KLSAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHJlX2p1bXAqPihzdGF0ZSktPmFsdC5wID0gcDsKLSAgICAgICAgICAgICAgICAgIG9rID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgIC8vIAotICAgICAgICAgICAgICAgICAgLy8gTm93IHNjYW4gdGhlIHRhcmdldCBmb3IgbmVzdGVkIHJlcGVhdHM6Ci0gICAgICAgICAgICAgICAgICAvLwotICAgICAgICAgICAgICAgICAgcCA9IHAtPm5leHQucDsKLSAgICAgICAgICAgICAgICAgIGludCBuZXh0X3JlcF9pZCA9IDA7Ci0gICAgICAgICAgICAgICAgICB3aGlsZShwKQotICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgc3dpdGNoKHAtPnR5cGUpCi0gICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICBjYXNlIHN5bnRheF9lbGVtZW50X3JlcDoKLSAgICAgICAgICAgICAgICAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfZG90X3JlcDoKLSAgICAgICAgICAgICAgICAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfY2hhcl9yZXA6Ci0gICAgICAgICAgICAgICAgICAgICBjYXNlIHN5bnRheF9lbGVtZW50X3Nob3J0X3NldF9yZXA6Ci0gICAgICAgICAgICAgICAgICAgICBjYXNlIHN5bnRheF9lbGVtZW50X2xvbmdfc2V0X3JlcDoKLSAgICAgICAgICAgICAgICAgICAgICAgIG5leHRfcmVwX2lkID0gc3RhdGljX2Nhc3Q8cmVfcmVwZWF0Kj4ocCktPnN0YXRlX2lkOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICBjYXNlIHN5bnRheF9lbGVtZW50X2VuZG1hcms6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZihzdGF0aWNfY2FzdDxjb25zdCByZV9icmFjZSo+KHApLT5pbmRleCA9PSBpZHgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0X3JlcF9pZCA9IC0xOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OiAKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgaWYobmV4dF9yZXBfaWQpCi0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgIHAgPSBwLT5uZXh0LnA7Ci0gICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICBpZihuZXh0X3JlcF9pZCA+IDApCi0gICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxyZV9yZWN1cnNlKj4oc3RhdGUpLT5zdGF0ZV9pZCA9IG5leHRfcmVwX2lkIC0gMTsKLSAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICBwID0gcC0+bmV4dC5wOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYoIW9rKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgLy8gcmVjdXJzaW9uIHRvIHN1Yi1leHByZXNzaW9uIHRoYXQgZG9lc24ndCBleGlzdDoKLSAgICAgICAgICAgICAgIGlmKDAgPT0gdGhpcy0+bV9wZGF0YS0+bV9zdGF0dXMpIC8vIHVwZGF0ZSB0aGUgZXJyb3IgY29kZSBpZiBub3QgYWxyZWFkeSBzZXQKLSAgICAgICAgICAgICAgICAgIHRoaXMtPm1fcGRhdGEtPm1fc3RhdHVzID0gbmRuYm9vc3Q6OnJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfYmFkX3BhdHRlcm47Ci0gICAgICAgICAgICAgICAvLwotICAgICAgICAgICAgICAgLy8gY2xlYXIgdGhlIGV4cHJlc3Npb24sIHdlIHNob3VsZCBiZSBlbXB0eToKLSAgICAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAgICB0aGlzLT5tX3BkYXRhLT5tX2V4cHJlc3Npb24gPSAwOwotICAgICAgICAgICAgICAgdGhpcy0+bV9wZGF0YS0+bV9leHByZXNzaW9uX2xlbiA9IDA7Ci0gICAgICAgICAgICAgICAvLwotICAgICAgICAgICAgICAgLy8gYW5kIHRocm93IGlmIHJlcXVpcmVkOgotICAgICAgICAgICAgICAgLy8KLSAgICAgICAgICAgICAgIGlmKDAgPT0gKHRoaXMtPmZsYWdzKCkgJiByZWdleF9jb25zdGFudHM6Om5vX2V4Y2VwdCkpCi0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBtZXNzYWdlID0gIkVuY291bnRlcmVkIGEgZm9yd2FyZCByZWZlcmVuY2UgdG8gYSByZWN1cnNpdmUgc3ViLWV4cHJlc3Npb24gdGhhdCBkb2VzIG5vdCBleGlzdC4iOwotICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnJlZ2V4X2Vycm9yIGUobWVzc2FnZSwgbmRuYm9vc3Q6OnJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfYmFkX3BhdHRlcm4sIDApOwotICAgICAgICAgICAgICAgICAgZS5yYWlzZSgpOwotICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgfQotICAgICAgICAgYnJlYWs7Ci0gICAgICBkZWZhdWx0OgotICAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgICBzdGF0ZSA9IHN0YXRlLT5uZXh0LnA7Ci0gICB9Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotdm9pZCBiYXNpY19yZWdleF9jcmVhdG9yPGNoYXJULCB0cmFpdHM+OjpjcmVhdGVfc3RhcnRtYXBzKHJlX3N5bnRheF9iYXNlKiBzdGF0ZSkKLXsKLSAgIC8vIG5vbi1yZWN1cnNpdmUgaW1wbGVtZW50YXRpb246Ci0gICAvLyBjcmVhdGUgdGhlIGxhc3QgbWFwIGluIHRoZSBtYWNoaW5lIGZpcnN0LCBzbyB0aGF0IGVhcmxpZXIgbWFwcwotICAgLy8gY2FuIG1ha2UgdXNlIG9mIHRoZSByZXN1bHQuLi4KLSAgIC8vCi0gICAvLyBUaGlzIHdhcyBvcmlnaW5hbGx5IGEgcmVjdXJzaXZlIGltcGxlbWVudGF0aW9uLCBidXQgdGhhdCBjYXVzZWQgc3RhY2sKLSAgIC8vIG92ZXJmbG93cyB3aXRoIGNvbXBsZXggZXhwcmVzc2lvbnMgb24gc21hbGwgc3RhY2tzICh0aGluayBDT00rKS4KLQotICAgLy8gc3RhcnQgYnkgc2F2aW5nIHRoZSBjYXNlIHNldHRpbmc6Ci0gICBib29sIGxfaWNhc2UgPSBtX2ljYXNlOwotICAgc3RkOjp2ZWN0b3I8c3RkOjpwYWlyPGJvb2wsIHJlX3N5bnRheF9iYXNlKj4gPiB2OwotCi0gICB3aGlsZShzdGF0ZSkKLSAgIHsKLSAgICAgIHN3aXRjaChzdGF0ZS0+dHlwZSkKLSAgICAgIHsKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfdG9nZ2xlX2Nhc2U6Ci0gICAgICAgICAvLyB3ZSBuZWVkIHRvIHRyYWNrIGNhc2UgY2hhbmdlcyBoZXJlOgotICAgICAgICAgbV9pY2FzZSA9IHN0YXRpY19jYXN0PHJlX2Nhc2UqPihzdGF0ZSktPmljYXNlOwotICAgICAgICAgc3RhdGUgPSBzdGF0ZS0+bmV4dC5wOwotICAgICAgICAgY29udGludWU7Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X2FsdDoKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfcmVwOgotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9kb3RfcmVwOgotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9jaGFyX3JlcDoKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfc2hvcnRfc2V0X3JlcDoKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfbG9uZ19zZXRfcmVwOgotICAgICAgICAgLy8ganVzdCBwdXNoIHRoZSBzdGF0ZSBvbnRvIG91ciBzdGFjayBmb3Igbm93OgotICAgICAgICAgdi5wdXNoX2JhY2soc3RkOjpwYWlyPGJvb2wsIHJlX3N5bnRheF9iYXNlKj4obV9pY2FzZSwgc3RhdGUpKTsKLSAgICAgICAgIHN0YXRlID0gc3RhdGUtPm5leHQucDsKLSAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9iYWNrc3RlcDoKLSAgICAgICAgIC8vIHdlIG5lZWQgdG8gY2FsY3VsYXRlIGhvdyBiaWcgdGhlIGJhY2tzdGVwIGlzOgotICAgICAgICAgc3RhdGljX2Nhc3Q8cmVfYnJhY2UqPihzdGF0ZSktPmluZGV4Ci0gICAgICAgICAgICA9IHRoaXMtPmNhbGN1bGF0ZV9iYWNrc3RlcChzdGF0ZS0+bmV4dC5wKTsKLSAgICAgICAgIGlmKHN0YXRpY19jYXN0PHJlX2JyYWNlKj4oc3RhdGUpLT5pbmRleCA8IDApCi0gICAgICAgICB7Ci0gICAgICAgICAgICAvLyBPb3BzIGVycm9yOgotICAgICAgICAgICAgaWYoMCA9PSB0aGlzLT5tX3BkYXRhLT5tX3N0YXR1cykgLy8gdXBkYXRlIHRoZSBlcnJvciBjb2RlIGlmIG5vdCBhbHJlYWR5IHNldAotICAgICAgICAgICAgICAgdGhpcy0+bV9wZGF0YS0+bV9zdGF0dXMgPSBuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjplcnJvcl9iYWRfcGF0dGVybjsKLSAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAvLyBjbGVhciB0aGUgZXhwcmVzc2lvbiwgd2Ugc2hvdWxkIGJlIGVtcHR5OgotICAgICAgICAgICAgLy8KLSAgICAgICAgICAgIHRoaXMtPm1fcGRhdGEtPm1fZXhwcmVzc2lvbiA9IDA7Ci0gICAgICAgICAgICB0aGlzLT5tX3BkYXRhLT5tX2V4cHJlc3Npb25fbGVuID0gMDsKLSAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAvLyBhbmQgdGhyb3cgaWYgcmVxdWlyZWQ6Ci0gICAgICAgICAgICAvLwotICAgICAgICAgICAgaWYoMCA9PSAodGhpcy0+ZmxhZ3MoKSAmIHJlZ2V4X2NvbnN0YW50czo6bm9fZXhjZXB0KSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIG1lc3NhZ2UgPSAiSW52YWxpZCBsb29rYmVoaW5kIGFzc2VydGlvbiBlbmNvdW50ZXJlZCBpbiB0aGUgcmVndWxhciBleHByZXNzaW9uLiI7Ci0gICAgICAgICAgICAgICBuZG5ib29zdDo6cmVnZXhfZXJyb3IgZShtZXNzYWdlLCBuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjplcnJvcl9iYWRfcGF0dGVybiwgMCk7Ci0gICAgICAgICAgICAgICBlLnJhaXNlKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICB9Ci0gICAgICAgICBORE5CT09TVF9GQUxMVEhST1VHSDsKLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICBzdGF0ZSA9IHN0YXRlLT5uZXh0LnA7Ci0gICAgICB9Ci0gICB9Ci0KLSAgIC8vIG5vdyB3b3JrIHRocm91Z2ggb3VyIGxpc3QsIGJ1aWxkaW5nIGFsbCB0aGUgbWFwcyBhcyB3ZSBnbzoKLSAgIHdoaWxlKHYuc2l6ZSgpKQotICAgewotICAgICAgLy8gSW5pdGlhbGl6ZSBtX3JlY3Vyc2lvbl9jaGVja3MgaWYgd2UgbmVlZCBpdDoKLSAgICAgIGlmKG1faGFzX3JlY3Vyc2lvbnMpCi0gICAgICAgICBtX3JlY3Vyc2lvbl9jaGVja3MuYXNzaWduKDEgKyBtX3BkYXRhLT5tX21hcmtfY291bnQsIGZhbHNlKTsKLQotICAgICAgY29uc3Qgc3RkOjpwYWlyPGJvb2wsIHJlX3N5bnRheF9iYXNlKj4mIHAgPSB2LmJhY2soKTsKLSAgICAgIG1faWNhc2UgPSBwLmZpcnN0OwotICAgICAgc3RhdGUgPSBwLnNlY29uZDsKLSAgICAgIHYucG9wX2JhY2soKTsKLQotICAgICAgLy8gQnVpbGQgbWFwczoKLSAgICAgIG1fYmFkX3JlcGVhdHMgPSAwOwotICAgICAgY3JlYXRlX3N0YXJ0bWFwKHN0YXRlLT5uZXh0LnAsIHN0YXRpY19jYXN0PHJlX2FsdCo+KHN0YXRlKS0+X21hcCwgJnN0YXRpY19jYXN0PHJlX2FsdCo+KHN0YXRlKS0+Y2FuX2JlX251bGwsIG1hc2tfdGFrZSk7Ci0gICAgICBtX2JhZF9yZXBlYXRzID0gMDsKLQotICAgICAgaWYobV9oYXNfcmVjdXJzaW9ucykKLSAgICAgICAgIG1fcmVjdXJzaW9uX2NoZWNrcy5hc3NpZ24oMSArIG1fcGRhdGEtPm1fbWFya19jb3VudCwgZmFsc2UpOwotICAgICAgY3JlYXRlX3N0YXJ0bWFwKHN0YXRpY19jYXN0PHJlX2FsdCo+KHN0YXRlKS0+YWx0LnAsIHN0YXRpY19jYXN0PHJlX2FsdCo+KHN0YXRlKS0+X21hcCwgJnN0YXRpY19jYXN0PHJlX2FsdCo+KHN0YXRlKS0+Y2FuX2JlX251bGwsIG1hc2tfc2tpcCk7Ci0gICAgICAvLyBhZGp1c3QgdGhlIHR5cGUgb2YgdGhlIHN0YXRlIHRvIGFsbG93IGZvciBmYXN0ZXIgbWF0Y2hpbmc6Ci0gICAgICBzdGF0ZS0+dHlwZSA9IHRoaXMtPmdldF9yZXBlYXRfdHlwZShzdGF0ZSk7Ci0gICB9Ci0gICAvLyByZXN0b3JlIGNhc2Ugc2Vuc2l0aXZpdHk6Ci0gICBtX2ljYXNlID0gbF9pY2FzZTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci1pbnQgYmFzaWNfcmVnZXhfY3JlYXRvcjxjaGFyVCwgdHJhaXRzPjo6Y2FsY3VsYXRlX2JhY2tzdGVwKHJlX3N5bnRheF9iYXNlKiBzdGF0ZSkKLXsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzOjpjaGFyX2NsYXNzX3R5cGUgbV90eXBlOwotICAgaW50IHJlc3VsdCA9IDA7Ci0gICB3aGlsZShzdGF0ZSkKLSAgIHsKLSAgICAgIHN3aXRjaChzdGF0ZS0+dHlwZSkKLSAgICAgIHsKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfc3RhcnRtYXJrOgotICAgICAgICAgaWYoKHN0YXRpY19jYXN0PHJlX2JyYWNlKj4oc3RhdGUpLT5pbmRleCA9PSAtMSkKLSAgICAgICAgICAgIHx8IChzdGF0aWNfY2FzdDxyZV9icmFjZSo+KHN0YXRlKS0+aW5kZXggPT0gLTIpKQotICAgICAgICAgewotICAgICAgICAgICAgc3RhdGUgPSBzdGF0aWNfY2FzdDxyZV9qdW1wKj4oc3RhdGUtPm5leHQucCktPmFsdC5wLT5uZXh0LnA7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgIH0KLSAgICAgICAgIGVsc2UgaWYoc3RhdGljX2Nhc3Q8cmVfYnJhY2UqPihzdGF0ZSktPmluZGV4ID09IC0zKQotICAgICAgICAgewotICAgICAgICAgICAgc3RhdGUgPSBzdGF0ZS0+bmV4dC5wLT5uZXh0LnA7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgIH0KLSAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9lbmRtYXJrOgotICAgICAgICAgaWYoKHN0YXRpY19jYXN0PHJlX2JyYWNlKj4oc3RhdGUpLT5pbmRleCA9PSAtMSkKLSAgICAgICAgICAgIHx8IChzdGF0aWNfY2FzdDxyZV9icmFjZSo+KHN0YXRlKS0+aW5kZXggPT0gLTIpKQotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9saXRlcmFsOgotICAgICAgICAgcmVzdWx0ICs9IHN0YXRpY19jYXN0PHJlX2xpdGVyYWwqPihzdGF0ZSktPmxlbmd0aDsKLSAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF93aWxkOgotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9zZXQ6Ci0gICAgICAgICByZXN1bHQgKz0gMTsKLSAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9kb3RfcmVwOgotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9jaGFyX3JlcDoKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfc2hvcnRfc2V0X3JlcDoKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfYmFja3JlZjoKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfcmVwOgotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9jb21iaW5pbmc6Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X2xvbmdfc2V0X3JlcDoKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfYmFja3N0ZXA6Ci0gICAgICAgICB7Ci0gICAgICAgICAgICByZV9yZXBlYXQqIHJlcCA9IHN0YXRpY19jYXN0PHJlX3JlcGVhdCAqPihzdGF0ZSk7Ci0gICAgICAgICAgICAvLyBhZGp1c3QgdGhlIHR5cGUgb2YgdGhlIHN0YXRlIHRvIGFsbG93IGZvciBmYXN0ZXIgbWF0Y2hpbmc6Ci0gICAgICAgICAgICBzdGF0ZS0+dHlwZSA9IHRoaXMtPmdldF9yZXBlYXRfdHlwZShzdGF0ZSk7Ci0gICAgICAgICAgICBpZigoc3RhdGUtPnR5cGUgPT0gc3ludGF4X2VsZW1lbnRfZG90X3JlcCkgCi0gICAgICAgICAgICAgICB8fCAoc3RhdGUtPnR5cGUgPT0gc3ludGF4X2VsZW1lbnRfY2hhcl9yZXApCi0gICAgICAgICAgICAgICB8fCAoc3RhdGUtPnR5cGUgPT0gc3ludGF4X2VsZW1lbnRfc2hvcnRfc2V0X3JlcCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICBpZihyZXAtPm1heCAhPSByZXAtPm1pbikKLSAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgICAgICAgIHJlc3VsdCArPSBzdGF0aWNfY2FzdDxpbnQ+KHJlcC0+bWluKTsKLSAgICAgICAgICAgICAgIHN0YXRlID0gcmVwLT5hbHQucDsKLSAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZihzdGF0ZS0+dHlwZSA9PSBzeW50YXhfZWxlbWVudF9sb25nX3NldF9yZXApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICBORE5CT09TVF9BU1NFUlQocmVwLT5uZXh0LnAtPnR5cGUgPT0gc3ludGF4X2VsZW1lbnRfbG9uZ19zZXQpOwotICAgICAgICAgICAgICAgaWYoc3RhdGljX2Nhc3Q8cmVfc2V0X2xvbmc8bV90eXBlPio+KHJlcC0+bmV4dC5wKS0+c2luZ2xldG9uID09IDApCi0gICAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICAgICAgICBpZihyZXAtPm1heCAhPSByZXAtPm1pbikKLSAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgICAgICAgIHJlc3VsdCArPSBzdGF0aWNfY2FzdDxpbnQ+KHJlcC0+bWluKTsKLSAgICAgICAgICAgICAgIHN0YXRlID0gcmVwLT5hbHQucDsKLSAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgfQotICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9sb25nX3NldDoKLSAgICAgICAgIGlmKHN0YXRpY19jYXN0PHJlX3NldF9sb25nPG1fdHlwZT4qPihzdGF0ZSktPnNpbmdsZXRvbiA9PSAwKQotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgcmVzdWx0ICs9IDE7Ci0gICAgICAgICBicmVhazsKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfanVtcDoKLSAgICAgICAgIHN0YXRlID0gc3RhdGljX2Nhc3Q8cmVfanVtcCo+KHN0YXRlKS0+YWx0LnA7Ci0gICAgICAgICBjb250aW51ZTsKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfYWx0OgotICAgICAgICAgewotICAgICAgICAgICAgaW50IHIxID0gY2FsY3VsYXRlX2JhY2tzdGVwKHN0YXRlLT5uZXh0LnApOwotICAgICAgICAgICAgaW50IHIyID0gY2FsY3VsYXRlX2JhY2tzdGVwKHN0YXRpY19jYXN0PHJlX2FsdCo+KHN0YXRlKS0+YWx0LnApOwotICAgICAgICAgICAgaWYoKHIxIDwgMCkgfHwgKHIxICE9IHIyKSkKLSAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQgKyByMTsKLSAgICAgICAgIH0KLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICAgIHN0YXRlID0gc3RhdGUtPm5leHQucDsKLSAgIH0KLSAgIHJldHVybiAtMTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci12b2lkIGJhc2ljX3JlZ2V4X2NyZWF0b3I8Y2hhclQsIHRyYWl0cz46OmNyZWF0ZV9zdGFydG1hcChyZV9zeW50YXhfYmFzZSogc3RhdGUsIHVuc2lnbmVkIGNoYXIqIGxfbWFwLCB1bnNpZ25lZCBpbnQqIHBudWxsLCB1bnNpZ25lZCBjaGFyIG1hc2spCi17Ci0gICBpbnQgbm90X2xhc3RfanVtcCA9IDE7Ci0gICByZV9zeW50YXhfYmFzZSogcmVjdXJzaW9uX3N0YXJ0ID0gMDsKLSAgIGludCByZWN1cnNpb25fc3ViID0gMDsKLSAgIHJlX3N5bnRheF9iYXNlKiByZWN1cnNpb25fcmVzdGFydCA9IDA7Ci0KLSAgIC8vIHRyYWNrIGNhc2Ugc2Vuc2l0aXZpdHk6Ci0gICBib29sIGxfaWNhc2UgPSBtX2ljYXNlOwotCi0gICB3aGlsZShzdGF0ZSkKLSAgIHsKLSAgICAgIHN3aXRjaChzdGF0ZS0+dHlwZSkKLSAgICAgIHsKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfdG9nZ2xlX2Nhc2U6Ci0gICAgICAgICBsX2ljYXNlID0gc3RhdGljX2Nhc3Q8cmVfY2FzZSo+KHN0YXRlKS0+aWNhc2U7Ci0gICAgICAgICBzdGF0ZSA9IHN0YXRlLT5uZXh0LnA7Ci0gICAgICAgICBicmVhazsKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfbGl0ZXJhbDoKLSAgICAgIHsKLSAgICAgICAgIC8vIGRvbid0IHNldCBhbnl0aGluZyBpbiAqcG51bGwsIHNldCBlYWNoIGVsZW1lbnQgaW4gbF9tYXAKLSAgICAgICAgIC8vIHRoYXQgY291bGQgbWF0Y2ggdGhlIGZpcnN0IGNoYXJhY3RlciBpbiB0aGUgbGl0ZXJhbDoKLSAgICAgICAgIGlmKGxfbWFwKQotICAgICAgICAgewotICAgICAgICAgICAgbF9tYXBbMF0gfD0gbWFza19pbml0OwotICAgICAgICAgICAgY2hhclQgZmlyc3RfY2hhciA9ICpzdGF0aWNfY2FzdDxjaGFyVCo+KHN0YXRpY19jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDxyZV9saXRlcmFsKj4oc3RhdGUpICsgMSkpOwotICAgICAgICAgICAgZm9yKHVuc2lnbmVkIGludCBpID0gMDsgaSA8ICgxdSA8PCBDSEFSX0JJVCk7ICsraSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIGlmKG1fdHJhaXRzLnRyYW5zbGF0ZShzdGF0aWNfY2FzdDxjaGFyVD4oaSksIGxfaWNhc2UpID09IGZpcnN0X2NoYXIpCi0gICAgICAgICAgICAgICAgICBsX21hcFtpXSB8PSBtYXNrOwotICAgICAgICAgICAgfQotICAgICAgICAgfQotICAgICAgICAgcmV0dXJuOwotICAgICAgfQotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9lbmRfbGluZToKLSAgICAgIHsKLSAgICAgICAgIC8vIG5leHQgY2hhcmFjdGVyIG11c3QgYmUgYSBsaW5lIHNlcGFyYXRvciAoaWYgdGhlcmUgaXMgb25lKToKLSAgICAgICAgIGlmKGxfbWFwKQotICAgICAgICAgewotICAgICAgICAgICAgbF9tYXBbMF0gfD0gbWFza19pbml0OwotICAgICAgICAgICAgbF9tYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KCdcbicpXSB8PSBtYXNrOwotICAgICAgICAgICAgbF9tYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KCdccicpXSB8PSBtYXNrOwotICAgICAgICAgICAgbF9tYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KCdcZicpXSB8PSBtYXNrOwotICAgICAgICAgICAgbF9tYXBbMHg4NV0gfD0gbWFzazsKLSAgICAgICAgIH0KLSAgICAgICAgIC8vIG5vdyBmaWd1cmUgb3V0IGlmIHdlIGNhbiBtYXRjaCBhIE5VTEwgc3RyaW5nIGF0IHRoaXMgcG9pbnQ6Ci0gICAgICAgICBpZihwbnVsbCkKLSAgICAgICAgICAgIGNyZWF0ZV9zdGFydG1hcChzdGF0ZS0+bmV4dC5wLCAwLCBwbnVsbCwgbWFzayk7Ci0gICAgICAgICByZXR1cm47Ci0gICAgICB9Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X3JlY3Vyc2U6Ci0gICAgICAgICB7Ci0gICAgICAgICAgICBpZihzdGF0ZS0+dHlwZSA9PSBzeW50YXhfZWxlbWVudF9zdGFydG1hcmspCi0gICAgICAgICAgICAgICByZWN1cnNpb25fc3ViID0gc3RhdGljX2Nhc3Q8cmVfYnJhY2UqPihzdGF0ZSktPmluZGV4OwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgcmVjdXJzaW9uX3N1YiA9IDA7Ci0gICAgICAgICAgICBpZihtX3JlY3Vyc2lvbl9jaGVja3NbcmVjdXJzaW9uX3N1Yl0pCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAvLyBJbmZpbml0ZSByZWN1cnNpb24hIQotICAgICAgICAgICAgICAgaWYoMCA9PSB0aGlzLT5tX3BkYXRhLT5tX3N0YXR1cykgLy8gdXBkYXRlIHRoZSBlcnJvciBjb2RlIGlmIG5vdCBhbHJlYWR5IHNldAotICAgICAgICAgICAgICAgICAgdGhpcy0+bV9wZGF0YS0+bV9zdGF0dXMgPSBuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjplcnJvcl9iYWRfcGF0dGVybjsKLSAgICAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAgICAvLyBjbGVhciB0aGUgZXhwcmVzc2lvbiwgd2Ugc2hvdWxkIGJlIGVtcHR5OgotICAgICAgICAgICAgICAgLy8KLSAgICAgICAgICAgICAgIHRoaXMtPm1fcGRhdGEtPm1fZXhwcmVzc2lvbiA9IDA7Ci0gICAgICAgICAgICAgICB0aGlzLT5tX3BkYXRhLT5tX2V4cHJlc3Npb25fbGVuID0gMDsKLSAgICAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAgICAvLyBhbmQgdGhyb3cgaWYgcmVxdWlyZWQ6Ci0gICAgICAgICAgICAgICAvLwotICAgICAgICAgICAgICAgaWYoMCA9PSAodGhpcy0+ZmxhZ3MoKSAmIHJlZ2V4X2NvbnN0YW50czo6bm9fZXhjZXB0KSkKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIG1lc3NhZ2UgPSAiRW5jb3VudGVyZWQgYW4gaW5maW5pdGUgcmVjdXJzaW9uLiI7Ci0gICAgICAgICAgICAgICAgICBuZG5ib29zdDo6cmVnZXhfZXJyb3IgZShtZXNzYWdlLCBuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjplcnJvcl9iYWRfcGF0dGVybiwgMCk7Ci0gICAgICAgICAgICAgICAgICBlLnJhaXNlKCk7Ci0gICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmKHJlY3Vyc2lvbl9zdGFydCA9PSAwKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgcmVjdXJzaW9uX3N0YXJ0ID0gc3RhdGU7Ci0gICAgICAgICAgICAgICByZWN1cnNpb25fcmVzdGFydCA9IHN0YXRlLT5uZXh0LnA7Ci0gICAgICAgICAgICAgICBzdGF0ZSA9IHN0YXRpY19jYXN0PHJlX2p1bXAqPihzdGF0ZSktPmFsdC5wOwotICAgICAgICAgICAgICAgbV9yZWN1cnNpb25fY2hlY2tzW3JlY3Vyc2lvbl9zdWJdID0gdHJ1ZTsKLSAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgbV9yZWN1cnNpb25fY2hlY2tzW3JlY3Vyc2lvbl9zdWJdID0gdHJ1ZTsKLSAgICAgICAgICAgIC8vIGNhbid0IGhhbmRsZSBuZXN0ZWQgcmVjdXJzaW9uIGhlcmUuLi4KLSAgICAgICAgICAgIE5ETkJPT1NUX0ZBTExUSFJPVUdIOwotICAgICAgICAgfQotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9iYWNrcmVmOgotICAgICAgICAgLy8gY2FuIGJlIG51bGwsIGFuZCBhbnkgY2hhcmFjdGVyIGNhbiBtYXRjaDoKLSAgICAgICAgIGlmKHBudWxsKQotICAgICAgICAgICAgKnBudWxsIHw9IG1hc2s7Ci0gICAgICAgICBORE5CT09TVF9GQUxMVEhST1VHSDsKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfd2lsZDoKLSAgICAgIHsKLSAgICAgICAgIC8vIGNhbid0IGJlIG51bGwsIGFueSBjaGFyYWN0ZXIgY2FuIG1hdGNoOgotICAgICAgICAgc2V0X2FsbF9tYXNrcyhsX21hcCwgbWFzayk7Ci0gICAgICAgICByZXR1cm47Ci0gICAgICB9Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X21hdGNoOgotICAgICAgewotICAgICAgICAgLy8gbXVzdCBiZSBudWxsLCBhbnkgY2hhcmFjdGVyIGNhbiBtYXRjaDoKLSAgICAgICAgIHNldF9hbGxfbWFza3MobF9tYXAsIG1hc2spOwotICAgICAgICAgaWYocG51bGwpCi0gICAgICAgICAgICAqcG51bGwgfD0gbWFzazsKLSAgICAgICAgIHJldHVybjsKLSAgICAgIH0KLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfd29yZF9zdGFydDoKLSAgICAgIHsKLSAgICAgICAgIC8vIHJlY3Vyc2UsIHRoZW4gQU5EIHdpdGggYWxsIHRoZSB3b3JkIGNoYXJhY3RlcnM6Ci0gICAgICAgICBjcmVhdGVfc3RhcnRtYXAoc3RhdGUtPm5leHQucCwgbF9tYXAsIHBudWxsLCBtYXNrKTsKLSAgICAgICAgIGlmKGxfbWFwKQotICAgICAgICAgewotICAgICAgICAgICAgbF9tYXBbMF0gfD0gbWFza19pbml0OwotICAgICAgICAgICAgZm9yKHVuc2lnbmVkIGludCBpID0gMDsgaSA8ICgxdSA8PCBDSEFSX0JJVCk7ICsraSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIGlmKCFtX3RyYWl0cy5pc2N0eXBlKHN0YXRpY19jYXN0PGNoYXJUPihpKSwgbV93b3JkX21hc2spKQotICAgICAgICAgICAgICAgICAgbF9tYXBbaV0gJj0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4ofm1hc2spOwotICAgICAgICAgICAgfQotICAgICAgICAgfQotICAgICAgICAgcmV0dXJuOwotICAgICAgfQotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF93b3JkX2VuZDoKLSAgICAgIHsKLSAgICAgICAgIC8vIHJlY3Vyc2UsIHRoZW4gQU5EIHdpdGggYWxsIHRoZSB3b3JkIGNoYXJhY3RlcnM6Ci0gICAgICAgICBjcmVhdGVfc3RhcnRtYXAoc3RhdGUtPm5leHQucCwgbF9tYXAsIHBudWxsLCBtYXNrKTsKLSAgICAgICAgIGlmKGxfbWFwKQotICAgICAgICAgewotICAgICAgICAgICAgbF9tYXBbMF0gfD0gbWFza19pbml0OwotICAgICAgICAgICAgZm9yKHVuc2lnbmVkIGludCBpID0gMDsgaSA8ICgxdSA8PCBDSEFSX0JJVCk7ICsraSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIGlmKG1fdHJhaXRzLmlzY3R5cGUoc3RhdGljX2Nhc3Q8Y2hhclQ+KGkpLCBtX3dvcmRfbWFzaykpCi0gICAgICAgICAgICAgICAgICBsX21hcFtpXSAmPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPih+bWFzayk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICB9Ci0gICAgICAgICByZXR1cm47Ci0gICAgICB9Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X2J1ZmZlcl9lbmQ6Ci0gICAgICB7Ci0gICAgICAgICAvLyB3ZSAqbXVzdCBiZSBudWxsKiA6Ci0gICAgICAgICBpZihwbnVsbCkKLSAgICAgICAgICAgICpwbnVsbCB8PSBtYXNrOwotICAgICAgICAgcmV0dXJuOwotICAgICAgfQotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9sb25nX3NldDoKLSAgICAgICAgIGlmKGxfbWFwKQotICAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0cmFpdHM6OmNoYXJfY2xhc3NfdHlwZSBtX3R5cGU7Ci0gICAgICAgICAgICBpZihzdGF0aWNfY2FzdDxyZV9zZXRfbG9uZzxtX3R5cGU+Kj4oc3RhdGUpLT5zaW5nbGV0b24pCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICBsX21hcFswXSB8PSBtYXNrX2luaXQ7Ci0gICAgICAgICAgICAgICBmb3IodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgKDF1IDw8IENIQVJfQklUKTsgKytpKQotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgY2hhclQgYyA9IHN0YXRpY19jYXN0PGNoYXJUPihpKTsKLSAgICAgICAgICAgICAgICAgIGlmKCZjICE9IHJlX2lzX3NldF9tZW1iZXIoJmMsICZjICsgMSwgc3RhdGljX2Nhc3Q8cmVfc2V0X2xvbmc8bV90eXBlPio+KHN0YXRlKSwgKm1fcGRhdGEsIGxfaWNhc2UpKQotICAgICAgICAgICAgICAgICAgICAgbF9tYXBbaV0gfD0gbWFzazsKLSAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgIHNldF9hbGxfbWFza3MobF9tYXAsIG1hc2spOwotICAgICAgICAgfQotICAgICAgICAgcmV0dXJuOwotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9zZXQ6Ci0gICAgICAgICBpZihsX21hcCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIGxfbWFwWzBdIHw9IG1hc2tfaW5pdDsKLSAgICAgICAgICAgIGZvcih1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCAoMXUgPDwgQ0hBUl9CSVQpOyArK2kpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICBpZihzdGF0aWNfY2FzdDxyZV9zZXQqPihzdGF0ZSktPl9tYXBbCi0gICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihtX3RyYWl0cy50cmFuc2xhdGUoc3RhdGljX2Nhc3Q8Y2hhclQ+KGkpLCBsX2ljYXNlKSldKQotICAgICAgICAgICAgICAgICAgbF9tYXBbaV0gfD0gbWFzazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgIH0KLSAgICAgICAgIHJldHVybjsKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfanVtcDoKLSAgICAgICAgIC8vIHRha2UgdGhlIGp1bXA6Ci0gICAgICAgICBzdGF0ZSA9IHN0YXRpY19jYXN0PHJlX2FsdCo+KHN0YXRlKS0+YWx0LnA7Ci0gICAgICAgICBub3RfbGFzdF9qdW1wID0gLTE7Ci0gICAgICAgICBicmVhazsKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfYWx0OgotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9yZXA6Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X2RvdF9yZXA6Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X2NoYXJfcmVwOgotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9zaG9ydF9zZXRfcmVwOgotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9sb25nX3NldF9yZXA6Ci0gICAgICAgICB7Ci0gICAgICAgICAgICByZV9hbHQqIHJlcCA9IHN0YXRpY19jYXN0PHJlX2FsdCo+KHN0YXRlKTsKLSAgICAgICAgICAgIGlmKHJlcC0+X21hcFswXSAmIG1hc2tfaW5pdCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIGlmKGxfbWFwKQotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgLy8gY29weSBwcmV2aW91cyByZXN1bHRzOgotICAgICAgICAgICAgICAgICAgbF9tYXBbMF0gfD0gbWFza19pbml0OwotICAgICAgICAgICAgICAgICAgZm9yKHVuc2lnbmVkIGludCBpID0gMDsgaSA8PSBVQ0hBUl9NQVg7ICsraSkKLSAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgIGlmKHJlcC0+X21hcFtpXSAmIG1hc2tfYW55KQotICAgICAgICAgICAgICAgICAgICAgICAgbF9tYXBbaV0gfD0gbWFzazsKLSAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgIGlmKHBudWxsKQotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgaWYocmVwLT5jYW5fYmVfbnVsbCAmIG1hc2tfYW55KQotICAgICAgICAgICAgICAgICAgICAgKnBudWxsIHw9IG1hc2s7Ci0gICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAvLyB3ZSBoYXZlbid0IGNyZWF0ZWQgYSBzdGFydG1hcCBmb3IgdGhpcyBhbHRlcm5hdGl2ZSB5ZXQKLSAgICAgICAgICAgICAgIC8vIHNvIHRha2UgdGhlIHVuaW9uIG9mIHRoZSB0d28gb3B0aW9uczoKLSAgICAgICAgICAgICAgIGlmKGlzX2JhZF9yZXBlYXQoc3RhdGUpKQotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgc2V0X2FsbF9tYXNrcyhsX21hcCwgbWFzayk7Ci0gICAgICAgICAgICAgICAgICBpZihwbnVsbCkKLSAgICAgICAgICAgICAgICAgICAgICpwbnVsbCB8PSBtYXNrOwotICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgc2V0X2JhZF9yZXBlYXQoc3RhdGUpOwotICAgICAgICAgICAgICAgY3JlYXRlX3N0YXJ0bWFwKHN0YXRlLT5uZXh0LnAsIGxfbWFwLCBwbnVsbCwgbWFzayk7Ci0gICAgICAgICAgICAgICBpZigoc3RhdGUtPnR5cGUgPT0gc3ludGF4X2VsZW1lbnRfYWx0KQotICAgICAgICAgICAgICAgICAgfHwgKHN0YXRpY19jYXN0PHJlX3JlcGVhdCo+KHN0YXRlKS0+bWluID09IDApCi0gICAgICAgICAgICAgICAgICB8fCAobm90X2xhc3RfanVtcCA9PSAwKSkKLSAgICAgICAgICAgICAgICAgIGNyZWF0ZV9zdGFydG1hcChyZXAtPmFsdC5wLCBsX21hcCwgcG51bGwsIG1hc2spOwotICAgICAgICAgICAgfQotICAgICAgICAgfQotICAgICAgICAgcmV0dXJuOwotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9zb2Z0X2J1ZmZlcl9lbmQ6Ci0gICAgICAgICAvLyBtYXRjaCBuZXdsaW5lIG9yIG51bGw6Ci0gICAgICAgICBpZihsX21hcCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIGxfbWFwWzBdIHw9IG1hc2tfaW5pdDsKLSAgICAgICAgICAgIGxfbWFwW3N0YXRpY19jYXN0PHVuc2lnbmVkPignXG4nKV0gfD0gbWFzazsKLSAgICAgICAgICAgIGxfbWFwW3N0YXRpY19jYXN0PHVuc2lnbmVkPignXHInKV0gfD0gbWFzazsKLSAgICAgICAgIH0KLSAgICAgICAgIGlmKHBudWxsKQotICAgICAgICAgICAgKnBudWxsIHw9IG1hc2s7Ci0gICAgICAgICByZXR1cm47Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X2VuZG1hcms6Ci0gICAgICAgICAvLyBuZWVkIHRvIGhhbmRsZSBpbmRlcGVuZGVudCBzdWJzIGFzIGEgc3BlY2lhbCBjYXNlOgotICAgICAgICAgaWYoc3RhdGljX2Nhc3Q8cmVfYnJhY2UqPihzdGF0ZSktPmluZGV4IDwgMCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIGNhbiBiZSBudWxsLCBhbnkgY2hhcmFjdGVyIGNhbiBtYXRjaDoKLSAgICAgICAgICAgIHNldF9hbGxfbWFza3MobF9tYXAsIG1hc2spOwotICAgICAgICAgICAgaWYocG51bGwpCi0gICAgICAgICAgICAgICAqcG51bGwgfD0gbWFzazsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgIH0KLSAgICAgICAgIGVsc2UgaWYocmVjdXJzaW9uX3N0YXJ0ICYmIChyZWN1cnNpb25fc3ViICE9IDApICYmIChyZWN1cnNpb25fc3ViID09IHN0YXRpY19jYXN0PHJlX2JyYWNlKj4oc3RhdGUpLT5pbmRleCkpCi0gICAgICAgICB7Ci0gICAgICAgICAgICAvLyByZWN1cnNpb24gdGVybWluYXRpb246Ci0gICAgICAgICAgICByZWN1cnNpb25fc3RhcnQgPSAwOwotICAgICAgICAgICAgc3RhdGUgPSByZWN1cnNpb25fcmVzdGFydDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgfQotCi0gICAgICAgICAvLwotICAgICAgICAgLy8gTm9ybWFsbHkgd2UganVzdCBnbyB0byB0aGUgbmV4dCBzdGF0ZS4uLiBidXQgaWYgdGhpcyBzdWItZXhwcmVzc2lvbiBpcwotICAgICAgICAgLy8gdGhlIHRhcmdldCBvZiBhIHJlY3Vyc2lvbiwgdGhlbiB3ZSBtaWdodCBiZSBlbmRpbmcgYSByZWN1cnNpb24sIGluIHdoaWNoCi0gICAgICAgICAvLyBjYXNlIHdlIHNob3VsZCBjaGVjayB3aGF0ZXZlciBmb2xsb3dzIHRoYXQgcmVjdXJzaW9uLCBhcyB3ZWxsIGFzIHdoYXRldmVyCi0gICAgICAgICAvLyBmb2xsb3dzIHRoaXMgc3RhdGU6Ci0gICAgICAgICAvLwotICAgICAgICAgaWYobV9wZGF0YS0+bV9oYXNfcmVjdXJzaW9ucyAmJiBzdGF0aWNfY2FzdDxyZV9icmFjZSo+KHN0YXRlKS0+aW5kZXgpCi0gICAgICAgICB7Ci0gICAgICAgICAgICBib29sIG9rID0gZmFsc2U7Ci0gICAgICAgICAgICByZV9zeW50YXhfYmFzZSogcCA9IG1fcGRhdGEtPm1fZmlyc3Rfc3RhdGU7Ci0gICAgICAgICAgICB3aGlsZShwKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgaWYocC0+dHlwZSA9PSBzeW50YXhfZWxlbWVudF9yZWN1cnNlKQotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgcmVfYnJhY2UqIHAyID0gc3RhdGljX2Nhc3Q8cmVfYnJhY2UqPihzdGF0aWNfY2FzdDxyZV9qdW1wKj4ocCktPmFsdC5wKTsKLSAgICAgICAgICAgICAgICAgIGlmKChwMi0+dHlwZSA9PSBzeW50YXhfZWxlbWVudF9zdGFydG1hcmspICYmIChwMi0+aW5kZXggPT0gc3RhdGljX2Nhc3Q8cmVfYnJhY2UqPihzdGF0ZSktPmluZGV4KSkKLSAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgIG9rID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgcCA9IHAtPm5leHQucDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmKG9rKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgY3JlYXRlX3N0YXJ0bWFwKHAtPm5leHQucCwgbF9tYXAsIHBudWxsLCBtYXNrKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgIH0KLSAgICAgICAgIHN0YXRlID0gc3RhdGUtPm5leHQucDsKLSAgICAgICAgIGJyZWFrOwotCi0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X3N0YXJ0bWFyazoKLSAgICAgICAgIC8vIG5lZWQgdG8gaGFuZGxlIGluZGVwZW5kZW50IHN1YnMgYXMgYSBzcGVjaWFsIGNhc2U6Ci0gICAgICAgICBpZihzdGF0aWNfY2FzdDxyZV9icmFjZSo+KHN0YXRlKS0+aW5kZXggPT0gLTMpCi0gICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0ZSA9IHN0YXRlLT5uZXh0LnAtPm5leHQucDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgfQotICAgICAgICAgTkROQk9PU1RfRkFMTFRIUk9VR0g7Ci0gICAgICBkZWZhdWx0OgotICAgICAgICAgc3RhdGUgPSBzdGF0ZS0+bmV4dC5wOwotICAgICAgfQotICAgICAgKytub3RfbGFzdF9qdW1wOwotICAgfQotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLXVuc2lnbmVkIGJhc2ljX3JlZ2V4X2NyZWF0b3I8Y2hhclQsIHRyYWl0cz46OmdldF9yZXN0YXJ0X3R5cGUocmVfc3ludGF4X2Jhc2UqIHN0YXRlKQotewotICAgLy8KLSAgIC8vIGZpbmQgb3V0IGhvdyB0aGUgbWFjaGluZSBzdGFydHMsIHNvIHdlIGNhbiBvcHRpbWlzZSB0aGUgc2VhcmNoOgotICAgLy8KLSAgIHdoaWxlKHN0YXRlKQotICAgewotICAgICAgc3dpdGNoKHN0YXRlLT50eXBlKQotICAgICAgewotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9zdGFydG1hcms6Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X2VuZG1hcms6Ci0gICAgICAgICBzdGF0ZSA9IHN0YXRlLT5uZXh0LnA7Ci0gICAgICAgICBjb250aW51ZTsKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfc3RhcnRfbGluZToKLSAgICAgICAgIHJldHVybiByZWdiYXNlOjpyZXN0YXJ0X2xpbmU7Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X3dvcmRfc3RhcnQ6Ci0gICAgICAgICByZXR1cm4gcmVnYmFzZTo6cmVzdGFydF93b3JkOwotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9idWZmZXJfc3RhcnQ6Ci0gICAgICAgICByZXR1cm4gcmVnYmFzZTo6cmVzdGFydF9idWY7Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X3Jlc3RhcnRfY29udGludWU6Ci0gICAgICAgICByZXR1cm4gcmVnYmFzZTo6cmVzdGFydF9jb250aW51ZTsKLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICBzdGF0ZSA9IDA7Ci0gICAgICAgICBjb250aW51ZTsKLSAgICAgIH0KLSAgIH0KLSAgIHJldHVybiByZWdiYXNlOjpyZXN0YXJ0X2FueTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci12b2lkIGJhc2ljX3JlZ2V4X2NyZWF0b3I8Y2hhclQsIHRyYWl0cz46OnNldF9hbGxfbWFza3ModW5zaWduZWQgY2hhciogYml0cywgdW5zaWduZWQgY2hhciBtYXNrKQotewotICAgLy8KLSAgIC8vIHNldCBtYXNrIGluIGFsbCBvZiBiaXRzIGVsZW1lbnRzLCAKLSAgIC8vIGlmIGJpdHNbMF0gaGFzIG1hc2tfaW5pdCBub3Qgc2V0IHRoZW4gd2UgY2FuIAotICAgLy8gb3B0aW1pc2UgdGhpcyB0byBhIGNhbGwgdG8gbWVtc2V0OgotICAgLy8KLSAgIGlmKGJpdHMpCi0gICB7Ci0gICAgICBpZihiaXRzWzBdID09IDApCi0gICAgICAgICAoc3RkOjptZW1zZXQpKGJpdHMsIG1hc2ssIDF1IDw8IENIQVJfQklUKTsKLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgIGZvcih1bnNpZ25lZCBpID0gMDsgaSA8ICgxdSA8PCBDSEFSX0JJVCk7ICsraSkKLSAgICAgICAgICAgIGJpdHNbaV0gfD0gbWFzazsKLSAgICAgIH0KLSAgICAgIGJpdHNbMF0gfD0gbWFza19pbml0OwotICAgfQotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLWJvb2wgYmFzaWNfcmVnZXhfY3JlYXRvcjxjaGFyVCwgdHJhaXRzPjo6aXNfYmFkX3JlcGVhdChyZV9zeW50YXhfYmFzZSogcHQpCi17Ci0gICBzd2l0Y2gocHQtPnR5cGUpCi0gICB7Ci0gICBjYXNlIHN5bnRheF9lbGVtZW50X3JlcDoKLSAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfZG90X3JlcDoKLSAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfY2hhcl9yZXA6Ci0gICBjYXNlIHN5bnRheF9lbGVtZW50X3Nob3J0X3NldF9yZXA6Ci0gICBjYXNlIHN5bnRheF9lbGVtZW50X2xvbmdfc2V0X3JlcDoKLSAgICAgIHsKLSAgICAgICAgIHVuc2lnbmVkIHN0YXRlX2lkID0gc3RhdGljX2Nhc3Q8cmVfcmVwZWF0Kj4ocHQpLT5zdGF0ZV9pZDsKLSAgICAgICAgIGlmKHN0YXRlX2lkID4gc2l6ZW9mKG1fYmFkX3JlcGVhdHMpICogQ0hBUl9CSVQpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsgIC8vIHJ1biBvdXQgb2YgYml0cywgYXNzdW1lIHdlIGNhbid0IHRyYXZlcnNlIHRoaXMgb25lLgotICAgICAgICAgc3RhdGljIGNvbnN0IG5kbmJvb3N0Ojp1aW50bWF4X3Qgb25lID0gMXVMOwotICAgICAgICAgcmV0dXJuIG1fYmFkX3JlcGVhdHMgJiAob25lIDw8IHN0YXRlX2lkKTsKLSAgICAgIH0KLSAgIGRlZmF1bHQ6Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICB9Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotdm9pZCBiYXNpY19yZWdleF9jcmVhdG9yPGNoYXJULCB0cmFpdHM+OjpzZXRfYmFkX3JlcGVhdChyZV9zeW50YXhfYmFzZSogcHQpCi17Ci0gICBzd2l0Y2gocHQtPnR5cGUpCi0gICB7Ci0gICBjYXNlIHN5bnRheF9lbGVtZW50X3JlcDoKLSAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfZG90X3JlcDoKLSAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfY2hhcl9yZXA6Ci0gICBjYXNlIHN5bnRheF9lbGVtZW50X3Nob3J0X3NldF9yZXA6Ci0gICBjYXNlIHN5bnRheF9lbGVtZW50X2xvbmdfc2V0X3JlcDoKLSAgICAgIHsKLSAgICAgICAgIHVuc2lnbmVkIHN0YXRlX2lkID0gc3RhdGljX2Nhc3Q8cmVfcmVwZWF0Kj4ocHQpLT5zdGF0ZV9pZDsKLSAgICAgICAgIHN0YXRpYyBjb25zdCBuZG5ib29zdDo6dWludG1heF90IG9uZSA9IDF1TDsKLSAgICAgICAgIGlmKHN0YXRlX2lkIDw9IHNpemVvZihtX2JhZF9yZXBlYXRzKSAqIENIQVJfQklUKQotICAgICAgICAgICAgbV9iYWRfcmVwZWF0cyB8PSAob25lIDw8IHN0YXRlX2lkKTsKLSAgICAgIH0KLSAgICAgIGJyZWFrOwotICAgZGVmYXVsdDoKLSAgICAgIGJyZWFrOwotICAgfQotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLXN5bnRheF9lbGVtZW50X3R5cGUgYmFzaWNfcmVnZXhfY3JlYXRvcjxjaGFyVCwgdHJhaXRzPjo6Z2V0X3JlcGVhdF90eXBlKHJlX3N5bnRheF9iYXNlKiBzdGF0ZSkKLXsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzOjpjaGFyX2NsYXNzX3R5cGUgbV90eXBlOwotICAgaWYoc3RhdGUtPnR5cGUgPT0gc3ludGF4X2VsZW1lbnRfcmVwKQotICAgewotICAgICAgLy8gY2hlY2sgdG8gc2VlIGlmIHdlIGFyZSByZXBlYXRpbmcgYSBzaW5nbGUgc3RhdGU6Ci0gICAgICBpZihzdGF0ZS0+bmV4dC5wLT5uZXh0LnAtPm5leHQucCA9PSBzdGF0aWNfY2FzdDxyZV9hbHQqPihzdGF0ZSktPmFsdC5wKQotICAgICAgewotICAgICAgICAgc3dpdGNoKHN0YXRlLT5uZXh0LnAtPnR5cGUpCi0gICAgICAgICB7Ci0gICAgICAgICBjYXNlIHJlX2RldGFpbDo6c3ludGF4X2VsZW1lbnRfd2lsZDoKLSAgICAgICAgICAgIHJldHVybiByZV9kZXRhaWw6OnN5bnRheF9lbGVtZW50X2RvdF9yZXA7Ci0gICAgICAgICBjYXNlIHJlX2RldGFpbDo6c3ludGF4X2VsZW1lbnRfbGl0ZXJhbDoKLSAgICAgICAgICAgIHJldHVybiByZV9kZXRhaWw6OnN5bnRheF9lbGVtZW50X2NoYXJfcmVwOwotICAgICAgICAgY2FzZSByZV9kZXRhaWw6OnN5bnRheF9lbGVtZW50X3NldDoKLSAgICAgICAgICAgIHJldHVybiByZV9kZXRhaWw6OnN5bnRheF9lbGVtZW50X3Nob3J0X3NldF9yZXA7Ci0gICAgICAgICBjYXNlIHJlX2RldGFpbDo6c3ludGF4X2VsZW1lbnRfbG9uZ19zZXQ6Ci0gICAgICAgICAgICBpZihzdGF0aWNfY2FzdDxyZV9kZXRhaWw6OnJlX3NldF9sb25nPG1fdHlwZT4qPihzdGF0ZS0+bmV4dC5wKS0+c2luZ2xldG9uKQotICAgICAgICAgICAgICAgcmV0dXJuIHJlX2RldGFpbDo6c3ludGF4X2VsZW1lbnRfbG9uZ19zZXRfcmVwOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICB9Ci0gICAgICB9Ci0gICB9Ci0gICByZXR1cm4gc3RhdGUtPnR5cGU7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotdm9pZCBiYXNpY19yZWdleF9jcmVhdG9yPGNoYXJULCB0cmFpdHM+Ojpwcm9iZV9sZWFkaW5nX3JlcGVhdChyZV9zeW50YXhfYmFzZSogc3RhdGUpCi17Ci0gICAvLyBlbnVtZXJhdGUgb3VyIHN0YXRlcywgYW5kIHNlZSBpZiB3ZSBoYXZlIGEgbGVhZGluZyByZXBlYXQgCi0gICAvLyBmb3Igd2hpY2ggZmFpbGVkIHNlYXJjaCByZXN0YXJ0cyBjYW4gYmUgb3B0aW1pc2VkOwotICAgZG8KLSAgIHsKLSAgICAgIHN3aXRjaChzdGF0ZS0+dHlwZSkKLSAgICAgIHsKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfc3RhcnRtYXJrOgotICAgICAgICAgaWYoc3RhdGljX2Nhc3Q8cmVfYnJhY2UqPihzdGF0ZSktPmluZGV4ID49IDApCi0gICAgICAgICB7Ci0gICAgICAgICAgICBzdGF0ZSA9IHN0YXRlLT5uZXh0LnA7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgIH0KLSAgICAgICAgIGlmKChzdGF0aWNfY2FzdDxyZV9icmFjZSo+KHN0YXRlKS0+aW5kZXggPT0gLTEpCi0gICAgICAgICAgICB8fCAoc3RhdGljX2Nhc3Q8cmVfYnJhY2UqPihzdGF0ZSktPmluZGV4ID09IC0yKSkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIHNraXAgcGFzdCB0aGUgemVybyB3aWR0aCBhc3NlcnRpb246Ci0gICAgICAgICAgICBzdGF0ZSA9IHN0YXRpY19jYXN0PGNvbnN0IHJlX2p1bXAqPihzdGF0ZS0+bmV4dC5wKS0+YWx0LnAtPm5leHQucDsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgfQotICAgICAgICAgaWYoc3RhdGljX2Nhc3Q8cmVfYnJhY2UqPihzdGF0ZSktPmluZGV4ID09IC0zKQotICAgICAgICAgewotICAgICAgICAgICAgLy8gSGF2ZSB0byBza2lwIHRoZSBsZWFkaW5nIGp1bXAgc3RhdGU6Ci0gICAgICAgICAgICBzdGF0ZSA9IHN0YXRlLT5uZXh0LnAtPm5leHQucDsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgfQotICAgICAgICAgcmV0dXJuOwotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9lbmRtYXJrOgotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9zdGFydF9saW5lOgotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9lbmRfbGluZToKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfd29yZF9ib3VuZGFyeToKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfd2l0aGluX3dvcmQ6Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X3dvcmRfc3RhcnQ6Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X3dvcmRfZW5kOgotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9idWZmZXJfc3RhcnQ6Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X2J1ZmZlcl9lbmQ6Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X3Jlc3RhcnRfY29udGludWU6Ci0gICAgICAgICBzdGF0ZSA9IHN0YXRlLT5uZXh0LnA7Ci0gICAgICAgICBicmVhazsKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfZG90X3JlcDoKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfY2hhcl9yZXA6Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X3Nob3J0X3NldF9yZXA6Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X2xvbmdfc2V0X3JlcDoKLSAgICAgICAgIGlmKHRoaXMtPm1faGFzX2JhY2tyZWZzID09IDApCi0gICAgICAgICAgICBzdGF0aWNfY2FzdDxyZV9yZXBlYXQqPihzdGF0ZSktPmxlYWRpbmcgPSB0cnVlOwotICAgICAgICAgTkROQk9PU1RfRkFMTFRIUk9VR0g7Ci0gICAgICBkZWZhdWx0OgotICAgICAgICAgcmV0dXJuOwotICAgICAgfQotICAgfXdoaWxlKHN0YXRlKTsKLX0KLQotCi19IC8vIG5hbWVzcGFjZSByZV9kZXRhaWwKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSMgIHByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfU1VGRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L2Jhc2ljX3JlZ2V4X3BhcnNlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L2Jhc2ljX3JlZ2V4X3BhcnNlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJmNzJlNDQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9iYXNpY19yZWdleF9wYXJzZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjg3NCArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAoYykgMjAwNAotICogSm9obiBNYWRkb2NrCi0gKgotICogVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0gKiBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLSAqIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKi8KLQotIC8qCi0gICogICBMT0NBVElPTjogICAgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotICAqICAgRklMRSAgICAgICAgIGJhc2ljX3JlZ2V4X3BhcnNlci5jcHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IERlY2xhcmVzIHRlbXBsYXRlIGNsYXNzIGJhc2ljX3JlZ2V4X3BhcnNlci4KLSAgKi8KLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9WNF9CQVNJQ19SRUdFWF9QQVJTRVJfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JFR0VYX1Y0X0JBU0lDX1JFR0VYX1BBUlNFUl9IUFAKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1BSRUZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci1uYW1lc3BhY2UgcmVfZGV0YWlsewotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MjQ0IDQ4MDApCi0jZW5kaWYKLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci1jbGFzcyBiYXNpY19yZWdleF9wYXJzZXIgOiBwdWJsaWMgYmFzaWNfcmVnZXhfY3JlYXRvcjxjaGFyVCwgdHJhaXRzPgotewotcHVibGljOgotICAgYmFzaWNfcmVnZXhfcGFyc2VyKHJlZ2V4X2RhdGE8Y2hhclQsIHRyYWl0cz4qIGRhdGEpOwotICAgdm9pZCBwYXJzZShjb25zdCBjaGFyVCogcDEsIGNvbnN0IGNoYXJUKiBwMiwgdW5zaWduZWQgZmxhZ3MpOwotICAgdm9pZCBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfdHlwZSBlcnJvcl9jb2RlLCBzdGQ6OnB0cmRpZmZfdCBwb3NpdGlvbik7Ci0gICB2b2lkIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl90eXBlIGVycm9yX2NvZGUsIHN0ZDo6cHRyZGlmZl90IHBvc2l0aW9uLCBzdGQ6OnN0cmluZyBtZXNzYWdlLCBzdGQ6OnB0cmRpZmZfdCBzdGFydF9wb3MpOwotICAgdm9pZCBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfdHlwZSBlcnJvcl9jb2RlLCBzdGQ6OnB0cmRpZmZfdCBwb3NpdGlvbiwgY29uc3Qgc3RkOjpzdHJpbmcmIG1lc3NhZ2UpCi0gICB7Ci0gICAgICBmYWlsKGVycm9yX2NvZGUsIHBvc2l0aW9uLCBtZXNzYWdlLCBwb3NpdGlvbik7Ci0gICB9Ci0KLSAgIGJvb2wgcGFyc2VfYWxsKCk7Ci0gICBib29sIHBhcnNlX2Jhc2ljKCk7Ci0gICBib29sIHBhcnNlX2V4dGVuZGVkKCk7Ci0gICBib29sIHBhcnNlX2xpdGVyYWwoKTsKLSAgIGJvb2wgcGFyc2Vfb3Blbl9wYXJlbigpOwotICAgYm9vbCBwYXJzZV9iYXNpY19lc2NhcGUoKTsKLSAgIGJvb2wgcGFyc2VfZXh0ZW5kZWRfZXNjYXBlKCk7Ci0gICBib29sIHBhcnNlX21hdGNoX2FueSgpOwotICAgYm9vbCBwYXJzZV9yZXBlYXQoc3RkOjpzaXplX3QgbG93ID0gMCwgc3RkOjpzaXplX3QgaGlnaCA9IChzdGQ6Om51bWVyaWNfbGltaXRzPHN0ZDo6c2l6ZV90Pjo6bWF4KSgpKTsKLSAgIGJvb2wgcGFyc2VfcmVwZWF0X3JhbmdlKGJvb2wgaXNiYXNpYyk7Ci0gICBib29sIHBhcnNlX2FsdCgpOwotICAgYm9vbCBwYXJzZV9zZXQoKTsKLSAgIGJvb2wgcGFyc2VfYmFja3JlZigpOwotICAgdm9pZCBwYXJzZV9zZXRfbGl0ZXJhbChiYXNpY19jaGFyX3NldDxjaGFyVCwgdHJhaXRzPiYgY2hhcl9zZXQpOwotICAgYm9vbCBwYXJzZV9pbm5lcl9zZXQoYmFzaWNfY2hhcl9zZXQ8Y2hhclQsIHRyYWl0cz4mIGNoYXJfc2V0KTsKLSAgIGJvb2wgcGFyc2VfUUUoKTsKLSAgIGJvb2wgcGFyc2VfcGVybF9leHRlbnNpb24oKTsKLSAgIGJvb2wgYWRkX2VtYWNzX2NvZGUoYm9vbCBuZWdhdGUpOwotICAgYm9vbCB1bndpbmRfYWx0cyhzdGQ6OnB0cmRpZmZfdCBsYXN0X3BhcmVuX3N0YXJ0KTsKLSAgIGRpZ3JhcGg8Y2hhclQ+IGdldF9uZXh0X3NldF9saXRlcmFsKGJhc2ljX2NoYXJfc2V0PGNoYXJULCB0cmFpdHM+JiBjaGFyX3NldCk7Ci0gICBjaGFyVCB1bmVzY2FwZV9jaGFyYWN0ZXIoKTsKLSAgIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wdGlvbl90eXBlIHBhcnNlX29wdGlvbnMoKTsKLQotcHJpdmF0ZToKLSAgIHR5cGVkZWYgYm9vbCAoYmFzaWNfcmVnZXhfcGFyc2VyOjoqcGFyc2VyX3Byb2NfdHlwZSkoKTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzOjpzdHJpbmdfdHlwZSBzdHJpbmdfdHlwZTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzOjpjaGFyX2NsYXNzX3R5cGUgY2hhcl9jbGFzc190eXBlOwotICAgcGFyc2VyX3Byb2NfdHlwZSAgICAgICAgICAgbV9wYXJzZXJfcHJvYzsgICAgLy8gdGhlIG1haW4gcGFyc2VyIHRvIHVzZQotICAgY29uc3QgY2hhclQqICAgICAgICAgICAgICAgbV9iYXNlOyAgICAgICAgICAgLy8gdGhlIHN0YXJ0IG9mIHRoZSBzdHJpbmcgYmVpbmcgcGFyc2VkCi0gICBjb25zdCBjaGFyVCogICAgICAgICAgICAgICBtX2VuZDsgICAgICAgICAgICAvLyB0aGUgZW5kIG9mIHRoZSBzdHJpbmcgYmVpbmcgcGFyc2VkCi0gICBjb25zdCBjaGFyVCogICAgICAgICAgICAgICBtX3Bvc2l0aW9uOyAgICAgICAvLyBvdXIgY3VycmVudCBwYXJzZXIgcG9zaXRpb24KLSAgIHVuc2lnbmVkICAgICAgICAgICAgICAgICAgIG1fbWFya19jb3VudDsgICAgIC8vIGhvdyBtYW55IHN1Yi1leHByZXNzaW9ucyB3ZSBoYXZlCi0gICBpbnQgICAgICAgICAgICAgICAgICAgICAgICBtX21hcmtfcmVzZXQ7ICAgICAvLyB1c2VkIHRvIGluZGljYXRlIHRoYXQgd2UncmUgaW5zaWRlIGEgKD98Li4uKSBibG9jay4KLSAgIHVuc2lnbmVkICAgICAgICAgICAgICAgICAgIG1fbWF4X21hcms7ICAgICAgIC8vIGxhcmdlc3QgbWFyayBjb3VudCBzZWVuIGluc2lkZSBhICg/fC4uLikgYmxvY2suCi0gICBzdGQ6OnB0cmRpZmZfdCAgICAgICAgICAgICBtX3BhcmVuX3N0YXJ0OyAgICAvLyB3aGVyZSB0aGUgbGFzdCBzZWVuICcpJyBiZWdhbiAod2hlcmUgcmVwZWF0cyBhcmUgaW5zZXJ0ZWQpLgotICAgc3RkOjpwdHJkaWZmX3QgICAgICAgICAgICAgbV9hbHRfaW5zZXJ0X3BvaW50OyAvLyB3aGVyZSB0byBpbnNlcnQgdGhlIG5leHQgYWx0ZXJuYXRpdmUKLSAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgIG1faGFzX2Nhc2VfY2hhbmdlOyAvLyB0cnVlIGlmIHNvbWV3aGVyZSBpbiB0aGUgY3VycmVudCBibG9jayB0aGUgY2FzZSBoYXMgY2hhbmdlZAotI2lmIGRlZmluZWQoTkROQk9PU1RfTVNWQykgJiYgZGVmaW5lZChfTV9JWDg2KQotICAgLy8gVGhpcyBpcyBhbiB1Z2x5IHdhcm5pbmcgc3VwcHJlc3Npb24gd29ya2Fyb3VuZCAoZm9yIHdhcm5pbmdzICppbnNpZGUqIHN0ZDo6dmVjdG9yCi0gICAvLyB0aGF0IGNhbiBub3Qgb3RoZXJ3aXNlIGJlIHN1cHByZXNzZWQpLi4uCi0gICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKHNpemVvZihsb25nKSA+PSBzaXplb2Yodm9pZCopKTsKLSAgIHN0ZDo6dmVjdG9yPGxvbmc+ICAgICAgICAgICBtX2FsdF9qdW1wczsgICAgICAvLyBsaXN0IG9mIGFsdGVybmF0aXZlIGluIHRoZSBjdXJyZW50IHNjb3BlLgotI2Vsc2UKLSAgIHN0ZDo6dmVjdG9yPHN0ZDo6cHRyZGlmZl90PiBtX2FsdF9qdW1wczsgICAgICAvLyBsaXN0IG9mIGFsdGVybmF0aXZlIGluIHRoZSBjdXJyZW50IHNjb3BlLgotI2VuZGlmCi0KLSAgIGJhc2ljX3JlZ2V4X3BhcnNlciYgb3BlcmF0b3I9KGNvbnN0IGJhc2ljX3JlZ2V4X3BhcnNlciYpOwotICAgYmFzaWNfcmVnZXhfcGFyc2VyKGNvbnN0IGJhc2ljX3JlZ2V4X3BhcnNlciYpOwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci1iYXNpY19yZWdleF9wYXJzZXI8Y2hhclQsIHRyYWl0cz46OmJhc2ljX3JlZ2V4X3BhcnNlcihyZWdleF9kYXRhPGNoYXJULCB0cmFpdHM+KiBkYXRhKQotICAgOiBiYXNpY19yZWdleF9jcmVhdG9yPGNoYXJULCB0cmFpdHM+KGRhdGEpLCBtX21hcmtfY291bnQoMCksIG1fbWFya19yZXNldCgtMSksIG1fbWF4X21hcmsoMCksIG1fcGFyZW5fc3RhcnQoMCksIG1fYWx0X2luc2VydF9wb2ludCgwKSwgbV9oYXNfY2FzZV9jaGFuZ2UoZmFsc2UpCi17Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotdm9pZCBiYXNpY19yZWdleF9wYXJzZXI8Y2hhclQsIHRyYWl0cz46OnBhcnNlKGNvbnN0IGNoYXJUKiBwMSwgY29uc3QgY2hhclQqIHAyLCB1bnNpZ25lZCBsX2ZsYWdzKQotewotICAgLy8gcGFzcyBsX2ZsYWdzIG9uIHRvIGJhc2UgY2xhc3M6Ci0gICB0aGlzLT5pbml0KGxfZmxhZ3MpOwotICAgLy8gc2V0IHVwIHBvaW50ZXJzOgotICAgbV9wb3NpdGlvbiA9IG1fYmFzZSA9IHAxOwotICAgbV9lbmQgPSBwMjsKLSAgIC8vIGVtcHR5IHN0cmluZ3MgYXJlIGVycm9yczoKLSAgIGlmKChwMSA9PSBwMikgJiYgCi0gICAgICAoCi0gICAgICAgICAoKGxfZmxhZ3MgJiByZWdiYXNlOjptYWluX29wdGlvbl90eXBlKSAhPSByZWdiYXNlOjpwZXJsX3N5bnRheF9ncm91cCkKLSAgICAgICAgIHx8IChsX2ZsYWdzICYgcmVnYmFzZTo6bm9fZW1wdHlfZXhwcmVzc2lvbnMpCi0gICAgICApCi0gICAgICkKLSAgIHsKLSAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9lbXB0eSwgMCk7Ci0gICAgICByZXR1cm47Ci0gICB9Ci0gICAvLyBzZWxlY3Qgd2hpY2ggcGFyc2VyIHRvIHVzZToKLSAgIHN3aXRjaChsX2ZsYWdzICYgcmVnYmFzZTo6bWFpbl9vcHRpb25fdHlwZSkKLSAgIHsKLSAgIGNhc2UgcmVnYmFzZTo6cGVybF9zeW50YXhfZ3JvdXA6Ci0gICAgICB7Ci0gICAgICAgICBtX3BhcnNlcl9wcm9jID0gJmJhc2ljX3JlZ2V4X3BhcnNlcjxjaGFyVCwgdHJhaXRzPjo6cGFyc2VfZXh0ZW5kZWQ7Ci0gICAgICAgICAvLwotICAgICAgICAgLy8gQWRkIGEgbGVhZGluZyBwYXJlbiB3aXRoIGluZGV4IHplcm8gdG8gZ2l2ZSByZWN1cnNpb25zIGEgdGFyZ2V0OgotICAgICAgICAgLy8KLSAgICAgICAgIHJlX2JyYWNlKiBiciA9IHN0YXRpY19jYXN0PHJlX2JyYWNlKj4odGhpcy0+YXBwZW5kX3N0YXRlKHN5bnRheF9lbGVtZW50X3N0YXJ0bWFyaywgc2l6ZW9mKHJlX2JyYWNlKSkpOwotICAgICAgICAgYnItPmluZGV4ID0gMDsKLSAgICAgICAgIGJyLT5pY2FzZSA9IHRoaXMtPmZsYWdzKCkgJiByZWdiYXNlOjppY2FzZTsKLSAgICAgICAgIGJyZWFrOwotICAgICAgfQotICAgY2FzZSByZWdiYXNlOjpiYXNpY19zeW50YXhfZ3JvdXA6Ci0gICAgICBtX3BhcnNlcl9wcm9jID0gJmJhc2ljX3JlZ2V4X3BhcnNlcjxjaGFyVCwgdHJhaXRzPjo6cGFyc2VfYmFzaWM7Ci0gICAgICBicmVhazsKLSAgIGNhc2UgcmVnYmFzZTo6bGl0ZXJhbDoKLSAgICAgIG1fcGFyc2VyX3Byb2MgPSAmYmFzaWNfcmVnZXhfcGFyc2VyPGNoYXJULCB0cmFpdHM+OjpwYXJzZV9saXRlcmFsOwotICAgICAgYnJlYWs7Ci0gICBkZWZhdWx0OgotICAgICAgLy8gT29vcHMsIHNvbWVvbmUgaGFzIG1hbmFnZWQgdG8gc2V0IG1vcmUgdGhhbiBvbmUgb2YgdGhlIG1haW4gb3B0aW9uIGZsYWdzLCAKLSAgICAgIC8vIHNvIHRoaXMgbXVzdCBiZSBhbiBlcnJvcjoKLSAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl91bmtub3duLCAwLCAiQW4gaW52YWxpZCBjb21iaW5hdGlvbiBvZiByZWd1bGFyIGV4cHJlc3Npb24gc3ludGF4IGZsYWdzIHdhcyB1c2VkLiIpOwotICAgICAgcmV0dXJuOwotICAgfQotCi0gICAvLyBwYXJzZSBhbGwgb3VyIGNoYXJhY3RlcnM6Ci0gICBib29sIHJlc3VsdCA9IHBhcnNlX2FsbCgpOwotICAgLy8KLSAgIC8vIFVud2luZCBvdXIgYWx0ZXJuYXRpdmVzOgotICAgLy8KLSAgIHVud2luZF9hbHRzKC0xKTsKLSAgIC8vIHJlc2V0IGxfZmxhZ3MgYXMgYSBnbG9iYWwgc2NvcGUgKD9pbXN4KSBtYXkgaGF2ZSBhbHRlcmVkIHRoZW06Ci0gICB0aGlzLT5mbGFncyhsX2ZsYWdzKTsKLSAgIC8vIGlmIHdlIGhhdmVuJ3QgZ29iYmxlZCB1cCBhbGwgdGhlIGNoYXJhY3RlcnMgdGhlbiB3ZSBtdXN0Ci0gICAvLyBoYXZlIGhhZCBhbiB1bmV4cGVjdGVkICcpJyA6Ci0gICBpZighcmVzdWx0KQotICAgewotICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX3BhcmVuLCA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmRpc3RhbmNlKG1fYmFzZSwgbV9wb3NpdGlvbiksICJGb3VuZCBhIGNsb3NpbmcgKSB3aXRoIG5vIGNvcnJlc3BvbmRpbmcgb3BlbmVuaW5nIHBhcmVudGhlc2lzLiIpOwotICAgICAgcmV0dXJuOwotICAgfQotICAgLy8gaWYgYW4gZXJyb3IgaGFzIGJlZW4gc2V0IHRoZW4gZ2l2ZSB1cCBub3c6Ci0gICBpZih0aGlzLT5tX3BkYXRhLT5tX3N0YXR1cykKLSAgICAgIHJldHVybjsKLSAgIC8vIGZpbGwgaW4gb3VyIHN1Yi1leHByZXNzaW9uIGNvdW50OgotICAgdGhpcy0+bV9wZGF0YS0+bV9tYXJrX2NvdW50ID0gMSArIG1fbWFya19jb3VudDsKLSAgIHRoaXMtPmZpbmFsaXplKHAxLCBwMik7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotdm9pZCBiYXNpY19yZWdleF9wYXJzZXI8Y2hhclQsIHRyYWl0cz46OmZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl90eXBlIGVycm9yX2NvZGUsIHN0ZDo6cHRyZGlmZl90IHBvc2l0aW9uKQotewotICAgLy8gZ2V0IHRoZSBlcnJvciBtZXNzYWdlOgotICAgc3RkOjpzdHJpbmcgbWVzc2FnZSA9IHRoaXMtPm1fcGRhdGEtPm1fcHRyYWl0cy0+ZXJyb3Jfc3RyaW5nKGVycm9yX2NvZGUpOwotICAgZmFpbChlcnJvcl9jb2RlLCBwb3NpdGlvbiwgbWVzc2FnZSk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotdm9pZCBiYXNpY19yZWdleF9wYXJzZXI8Y2hhclQsIHRyYWl0cz46OmZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl90eXBlIGVycm9yX2NvZGUsIHN0ZDo6cHRyZGlmZl90IHBvc2l0aW9uLCBzdGQ6OnN0cmluZyBtZXNzYWdlLCBzdGQ6OnB0cmRpZmZfdCBzdGFydF9wb3MpCi17Ci0gICBpZigwID09IHRoaXMtPm1fcGRhdGEtPm1fc3RhdHVzKSAvLyB1cGRhdGUgdGhlIGVycm9yIGNvZGUgaWYgbm90IGFscmVhZHkgc2V0Ci0gICAgICB0aGlzLT5tX3BkYXRhLT5tX3N0YXR1cyA9IGVycm9yX2NvZGU7Ci0gICBtX3Bvc2l0aW9uID0gbV9lbmQ7IC8vIGRvbid0IGJvdGhlciBwYXJzaW5nIGFueXRoaW5nIGVsc2UKLQotI2lmbmRlZiBORE5CT09TVF9OT19URU1QTEFURURfSVRFUkFUT1JfQ09OU1RSVUNUT1JTCi0gICAvLwotICAgLy8gQXVnbWVudCBlcnJvciBtZXNzYWdlIHdpdGggdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiB0ZXh0OgotICAgLy8KLSAgIGlmKHN0YXJ0X3BvcyA9PSBwb3NpdGlvbikKLSAgICAgIHN0YXJ0X3BvcyA9IChzdGQ6Om1heCkoc3RhdGljX2Nhc3Q8c3RkOjpwdHJkaWZmX3Q+KDApLCBwb3NpdGlvbiAtIHN0YXRpY19jYXN0PHN0ZDo6cHRyZGlmZl90PigxMCkpOwotICAgc3RkOjpwdHJkaWZmX3QgZW5kX3BvcyA9IChzdGQ6Om1pbikocG9zaXRpb24gKyBzdGF0aWNfY2FzdDxzdGQ6OnB0cmRpZmZfdD4oMTApLCBzdGF0aWNfY2FzdDxzdGQ6OnB0cmRpZmZfdD4obV9lbmQgLSBtX2Jhc2UpKTsKLSAgIGlmKGVycm9yX2NvZGUgIT0gcmVnZXhfY29uc3RhbnRzOjplcnJvcl9lbXB0eSkKLSAgIHsKLSAgICAgIGlmKChzdGFydF9wb3MgIT0gMCkgfHwgKGVuZF9wb3MgIT0gKG1fZW5kIC0gbV9iYXNlKSkpCi0gICAgICAgICBtZXNzYWdlICs9ICIgIFRoZSBlcnJvciBvY2N1cnJlZCB3aGlsZSBwYXJzaW5nIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gZnJhZ21lbnQ6ICciOwotICAgICAgZWxzZQotICAgICAgICAgbWVzc2FnZSArPSAiICBUaGUgZXJyb3Igb2NjdXJyZWQgd2hpbGUgcGFyc2luZyB0aGUgcmVndWxhciBleHByZXNzaW9uOiAnIjsKLSAgICAgIGlmKHN0YXJ0X3BvcyAhPSBlbmRfcG9zKQotICAgICAgewotICAgICAgICAgbWVzc2FnZSArPSBzdGQ6OnN0cmluZyhtX2Jhc2UgKyBzdGFydF9wb3MsIG1fYmFzZSArIHBvc2l0aW9uKTsKLSAgICAgICAgIG1lc3NhZ2UgKz0gIj4+PkhFUkU+Pj4iOwotICAgICAgICAgbWVzc2FnZSArPSBzdGQ6OnN0cmluZyhtX2Jhc2UgKyBwb3NpdGlvbiwgbV9iYXNlICsgZW5kX3Bvcyk7Ci0gICAgICB9Ci0gICAgICBtZXNzYWdlICs9ICInLiI7Ci0gICB9Ci0jZW5kaWYKLQotI2lmbmRlZiBORE5CT09TVF9OT19FWENFUFRJT05TCi0gICBpZigwID09ICh0aGlzLT5mbGFncygpICYgcmVnZXhfY29uc3RhbnRzOjpub19leGNlcHQpKQotICAgewotICAgICAgbmRuYm9vc3Q6OnJlZ2V4X2Vycm9yIGUobWVzc2FnZSwgZXJyb3JfY29kZSwgcG9zaXRpb24pOwotICAgICAgZS5yYWlzZSgpOwotICAgfQotI2Vsc2UKLSAgICh2b2lkKXBvc2l0aW9uOyAvLyBzdXBwcmVzcyB3YXJuaW5ncy4KLSNlbmRpZgotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLWJvb2wgYmFzaWNfcmVnZXhfcGFyc2VyPGNoYXJULCB0cmFpdHM+OjpwYXJzZV9hbGwoKQotewotICAgYm9vbCByZXN1bHQgPSB0cnVlOwotICAgd2hpbGUocmVzdWx0ICYmIChtX3Bvc2l0aW9uICE9IG1fZW5kKSkKLSAgIHsKLSAgICAgIHJlc3VsdCA9ICh0aGlzLT4qbV9wYXJzZXJfcHJvYykoKTsKLSAgIH0KLSAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQ3MDIpCi0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotYm9vbCBiYXNpY19yZWdleF9wYXJzZXI8Y2hhclQsIHRyYWl0cz46OnBhcnNlX2Jhc2ljKCkKLXsKLSAgIHN3aXRjaCh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikpCi0gICB7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2VzY2FwZToKLSAgICAgIHJldHVybiBwYXJzZV9iYXNpY19lc2NhcGUoKTsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfZG90OgotICAgICAgcmV0dXJuIHBhcnNlX21hdGNoX2FueSgpOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OnN5bnRheF9jYXJldDoKLSAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIHRoaXMtPmFwcGVuZF9zdGF0ZShzeW50YXhfZWxlbWVudF9zdGFydF9saW5lKTsKLSAgICAgIGJyZWFrOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OnN5bnRheF9kb2xsYXI6Ci0gICAgICArK21fcG9zaXRpb247Ci0gICAgICB0aGlzLT5hcHBlbmRfc3RhdGUoc3ludGF4X2VsZW1lbnRfZW5kX2xpbmUpOwotICAgICAgYnJlYWs7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X3N0YXI6Ci0gICAgICBpZighKHRoaXMtPm1fbGFzdF9zdGF0ZSkgfHwgKHRoaXMtPm1fbGFzdF9zdGF0ZS0+dHlwZSA9PSBzeW50YXhfZWxlbWVudF9zdGFydF9saW5lKSkKLSAgICAgICAgIHJldHVybiBwYXJzZV9saXRlcmFsKCk7Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICByZXR1cm4gcGFyc2VfcmVwZWF0KCk7Ci0gICAgICB9Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X3BsdXM6Ci0gICAgICBpZighKHRoaXMtPm1fbGFzdF9zdGF0ZSkgfHwgKHRoaXMtPm1fbGFzdF9zdGF0ZS0+dHlwZSA9PSBzeW50YXhfZWxlbWVudF9zdGFydF9saW5lKSB8fCAhKHRoaXMtPmZsYWdzKCkgJiByZWdiYXNlOjplbWFjc19leCkpCi0gICAgICAgICByZXR1cm4gcGFyc2VfbGl0ZXJhbCgpOwotICAgICAgZWxzZQotICAgICAgewotICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgcmV0dXJuIHBhcnNlX3JlcGVhdCgxKTsKLSAgICAgIH0KLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfcXVlc3Rpb246Ci0gICAgICBpZighKHRoaXMtPm1fbGFzdF9zdGF0ZSkgfHwgKHRoaXMtPm1fbGFzdF9zdGF0ZS0+dHlwZSA9PSBzeW50YXhfZWxlbWVudF9zdGFydF9saW5lKSB8fCAhKHRoaXMtPmZsYWdzKCkgJiByZWdiYXNlOjplbWFjc19leCkpCi0gICAgICAgICByZXR1cm4gcGFyc2VfbGl0ZXJhbCgpOwotICAgICAgZWxzZQotICAgICAgewotICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgcmV0dXJuIHBhcnNlX3JlcGVhdCgwLCAxKTsKLSAgICAgIH0KLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9zZXQ6Ci0gICAgICByZXR1cm4gcGFyc2Vfc2V0KCk7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X25ld2xpbmU6Ci0gICAgICBpZih0aGlzLT5mbGFncygpICYgcmVnYmFzZTo6bmV3bGluZV9hbHQpCi0gICAgICAgICByZXR1cm4gcGFyc2VfYWx0KCk7Ci0gICAgICBlbHNlCi0gICAgICAgICByZXR1cm4gcGFyc2VfbGl0ZXJhbCgpOwotICAgZGVmYXVsdDoKLSAgICAgIHJldHVybiBwYXJzZV9saXRlcmFsKCk7Ci0gICB9Ci0gICByZXR1cm4gdHJ1ZTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci1ib29sIGJhc2ljX3JlZ2V4X3BhcnNlcjxjaGFyVCwgdHJhaXRzPjo6cGFyc2VfZXh0ZW5kZWQoKQotewotICAgYm9vbCByZXN1bHQgPSB0cnVlOwotICAgc3dpdGNoKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSkKLSAgIHsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9tYXJrOgotICAgICAgcmV0dXJuIHBhcnNlX29wZW5fcGFyZW4oKTsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfY2xvc2VfbWFyazoKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfZXNjYXBlOgotICAgICAgcmV0dXJuIHBhcnNlX2V4dGVuZGVkX2VzY2FwZSgpOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OnN5bnRheF9kb3Q6Ci0gICAgICByZXR1cm4gcGFyc2VfbWF0Y2hfYW55KCk7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2NhcmV0OgotICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgdGhpcy0+YXBwZW5kX3N0YXRlKAotICAgICAgICAgKHRoaXMtPmZsYWdzKCkgJiByZWdleF9jb25zdGFudHM6Om5vX21vZF9tID8gc3ludGF4X2VsZW1lbnRfYnVmZmVyX3N0YXJ0IDogc3ludGF4X2VsZW1lbnRfc3RhcnRfbGluZSkpOwotICAgICAgYnJlYWs7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2RvbGxhcjoKLSAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIHRoaXMtPmFwcGVuZF9zdGF0ZSgKLSAgICAgICAgICh0aGlzLT5mbGFncygpICYgcmVnZXhfY29uc3RhbnRzOjpub19tb2RfbSA/IHN5bnRheF9lbGVtZW50X2J1ZmZlcl9lbmQgOiBzeW50YXhfZWxlbWVudF9lbmRfbGluZSkpOwotICAgICAgYnJlYWs7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X3N0YXI6Ci0gICAgICBpZihtX3Bvc2l0aW9uID09IHRoaXMtPm1fYmFzZSkKLSAgICAgIHsKLSAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9iYWRyZXBlYXQsIDAsICJUaGUgcmVwZWF0IG9wZXJhdG9yIFwiKlwiIGNhbm5vdCBzdGFydCBhIHJlZ3VsYXIgZXhwcmVzc2lvbi4iKTsKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLSAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIHJldHVybiBwYXJzZV9yZXBlYXQoKTsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfcXVlc3Rpb246Ci0gICAgICBpZihtX3Bvc2l0aW9uID09IHRoaXMtPm1fYmFzZSkKLSAgICAgIHsKLSAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9iYWRyZXBlYXQsIDAsICJUaGUgcmVwZWF0IG9wZXJhdG9yIFwiP1wiIGNhbm5vdCBzdGFydCBhIHJlZ3VsYXIgZXhwcmVzc2lvbi4iKTsKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLSAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIHJldHVybiBwYXJzZV9yZXBlYXQoMCwxKTsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfcGx1czoKLSAgICAgIGlmKG1fcG9zaXRpb24gPT0gdGhpcy0+bV9iYXNlKQotICAgICAgewotICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2JhZHJlcGVhdCwgMCwgIlRoZSByZXBlYXQgb3BlcmF0b3IgXCIrXCIgY2Fubm90IHN0YXJ0IGEgcmVndWxhciBleHByZXNzaW9uLiIpOwotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgcmV0dXJuIHBhcnNlX3JlcGVhdCgxKTsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9icmFjZToKLSAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIHJldHVybiBwYXJzZV9yZXBlYXRfcmFuZ2UoZmFsc2UpOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OnN5bnRheF9jbG9zZV9icmFjZToKLSAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9icmFjZSwgdGhpcy0+bV9wb3NpdGlvbiAtIHRoaXMtPm1fYmFzZSwgIkZvdW5kIGEgY2xvc2luZyByZXBldGl0aW9uIG9wZXJhdG9yIH0gd2l0aCBubyBjb3JyZXNwb25kaW5nIHsuIik7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29yOgotICAgICAgcmV0dXJuIHBhcnNlX2FsdCgpOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX3NldDoKLSAgICAgIHJldHVybiBwYXJzZV9zZXQoKTsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfbmV3bGluZToKLSAgICAgIGlmKHRoaXMtPmZsYWdzKCkgJiByZWdiYXNlOjpuZXdsaW5lX2FsdCkKLSAgICAgICAgIHJldHVybiBwYXJzZV9hbHQoKTsKLSAgICAgIGVsc2UKLSAgICAgICAgIHJldHVybiBwYXJzZV9saXRlcmFsKCk7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2hhc2g6Ci0gICAgICAvLwotICAgICAgLy8gSWYgd2UgaGF2ZSBhIG1vZF94IGZsYWcgc2V0LCB0aGVuIHNraXAgdW50aWwKLSAgICAgIC8vIHdlIGdldCB0byBhIG5ld2xpbmUgY2hhcmFjdGVyOgotICAgICAgLy8KLSAgICAgIGlmKCh0aGlzLT5mbGFncygpIAotICAgICAgICAgJiAocmVnYmFzZTo6bm9fcGVybF9leHxyZWdiYXNlOjptb2RfeCkpCi0gICAgICAgICA9PSByZWdiYXNlOjptb2RfeCkKLSAgICAgIHsKLSAgICAgICAgIHdoaWxlKChtX3Bvc2l0aW9uICE9IG1fZW5kKSAmJiAhaXNfc2VwYXJhdG9yKCptX3Bvc2l0aW9uKyspKXt9Ci0gICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0KLSAgICAgIE5ETkJPT1NUX0ZBTExUSFJPVUdIOwotICAgZGVmYXVsdDoKLSAgICAgIHJlc3VsdCA9IHBhcnNlX2xpdGVyYWwoKTsKLSAgICAgIGJyZWFrOwotICAgfQotICAgcmV0dXJuIHJlc3VsdDsKLX0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotYm9vbCBiYXNpY19yZWdleF9wYXJzZXI8Y2hhclQsIHRyYWl0cz46OnBhcnNlX2xpdGVyYWwoKQotewotICAgLy8gYXBwZW5kIHRoaXMgYXMgYSBsaXRlcmFsIHByb3ZpZGVkIGl0J3Mgbm90IGEgc3BhY2UgY2hhcmFjdGVyCi0gICAvLyBvciB0aGUgcGVybCBvcHRpb24gcmVnYmFzZTo6bW9kX3ggaXMgbm90IHNldDoKLSAgIGlmKAotICAgICAgKCh0aGlzLT5mbGFncygpIAotICAgICAgICAgJiAocmVnYmFzZTo6bWFpbl9vcHRpb25fdHlwZXxyZWdiYXNlOjptb2RfeHxyZWdiYXNlOjpub19wZXJsX2V4KSkgCi0gICAgICAgICAgICAhPSByZWdiYXNlOjptb2RfeCkKLSAgICAgIHx8ICF0aGlzLT5tX3RyYWl0cy5pc2N0eXBlKCptX3Bvc2l0aW9uLCB0aGlzLT5tX21hc2tfc3BhY2UpKQotICAgICAgICAgdGhpcy0+YXBwZW5kX2xpdGVyYWwoKm1fcG9zaXRpb24pOwotICAgKyttX3Bvc2l0aW9uOwotICAgcmV0dXJuIHRydWU7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotYm9vbCBiYXNpY19yZWdleF9wYXJzZXI8Y2hhclQsIHRyYWl0cz46OnBhcnNlX29wZW5fcGFyZW4oKQotewotICAgLy8KLSAgIC8vIHNraXAgdGhlICcoJyBhbmQgZXJyb3IgY2hlY2s6Ci0gICAvLwotICAgaWYoKyttX3Bvc2l0aW9uID09IG1fZW5kKQotICAgewotICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX3BhcmVuLCBtX3Bvc2l0aW9uIC0gbV9iYXNlKTsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgIH0KLSAgIC8vCi0gICAvLyBiZWdpbiBieSBjaGVja2luZyBmb3IgYSBwZXJsLXN0eWxlICg/Li4uKSBleHRlbnNpb246Ci0gICAvLwotICAgaWYoCi0gICAgICAgICAoKHRoaXMtPmZsYWdzKCkgJiAocmVnYmFzZTo6bWFpbl9vcHRpb25fdHlwZSB8IHJlZ2Jhc2U6Om5vX3BlcmxfZXgpKSA9PSAwKQotICAgICAgICAgfHwgKCh0aGlzLT5mbGFncygpICYgKHJlZ2Jhc2U6Om1haW5fb3B0aW9uX3R5cGUgfCByZWdiYXNlOjplbWFjc19leCkpID09IChyZWdiYXNlOjpiYXNpY19zeW50YXhfZ3JvdXB8cmVnYmFzZTo6ZW1hY3NfZXgpKQotICAgICApCi0gICB7Ci0gICAgICBpZih0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgPT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfcXVlc3Rpb24pCi0gICAgICAgICByZXR1cm4gcGFyc2VfcGVybF9leHRlbnNpb24oKTsKLSAgIH0KLSAgIC8vCi0gICAvLyB1cGRhdGUgb3VyIG1hcmsgY291bnQsIGFuZCBhcHBlbmQgdGhlIHJlcXVpcmVkIHN0YXRlOgotICAgLy8KLSAgIHVuc2lnbmVkIG1hcmtpZCA9IDA7Ci0gICBpZigwID09ICh0aGlzLT5mbGFncygpICYgcmVnYmFzZTo6bm9zdWJzKSkKLSAgIHsKLSAgICAgIG1hcmtpZCA9ICsrbV9tYXJrX2NvdW50OwotI2lmbmRlZiBORE5CT09TVF9OT19TVERfRElTVEFOQ0UKLSAgICAgIGlmKHRoaXMtPmZsYWdzKCkgJiByZWdiYXNlOjpzYXZlX3N1YmV4cHJlc3Npb25fbG9jYXRpb24pCi0gICAgICAgICB0aGlzLT5tX3BkYXRhLT5tX3N1YnMucHVzaF9iYWNrKHN0ZDo6cGFpcjxzdGQ6OnNpemVfdCwgc3RkOjpzaXplX3Q+KHN0ZDo6ZGlzdGFuY2UobV9iYXNlLCBtX3Bvc2l0aW9uKSAtIDEsIDApKTsKLSNlbHNlCi0gICAgICBpZih0aGlzLT5mbGFncygpICYgcmVnYmFzZTo6c2F2ZV9zdWJleHByZXNzaW9uX2xvY2F0aW9uKQotICAgICAgICAgdGhpcy0+bV9wZGF0YS0+bV9zdWJzLnB1c2hfYmFjayhzdGQ6OnBhaXI8c3RkOjpzaXplX3QsIHN0ZDo6c2l6ZV90PigobV9wb3NpdGlvbiAtIG1fYmFzZSkgLSAxLCAwKSk7Ci0jZW5kaWYKLSAgIH0KLSAgIHJlX2JyYWNlKiBwYiA9IHN0YXRpY19jYXN0PHJlX2JyYWNlKj4odGhpcy0+YXBwZW5kX3N0YXRlKHN5bnRheF9lbGVtZW50X3N0YXJ0bWFyaywgc2l6ZW9mKHJlX2JyYWNlKSkpOwotICAgcGItPmluZGV4ID0gbWFya2lkOwotICAgcGItPmljYXNlID0gdGhpcy0+ZmxhZ3MoKSAmIHJlZ2Jhc2U6OmljYXNlOwotICAgc3RkOjpwdHJkaWZmX3QgbGFzdF9wYXJlbl9zdGFydCA9IHRoaXMtPmdldG9mZnNldChwYik7Ci0gICAvLyBiYWNrIHVwIGluc2VydGlvbiBwb2ludCBmb3IgYWx0ZXJuYXRpb25zLCBhbmQgc2V0IG5ldyBwb2ludDoKLSAgIHN0ZDo6cHRyZGlmZl90IGxhc3RfYWx0X3BvaW50ID0gbV9hbHRfaW5zZXJ0X3BvaW50OwotICAgdGhpcy0+bV9wZGF0YS0+bV9kYXRhLmFsaWduKCk7Ci0gICBtX2FsdF9pbnNlcnRfcG9pbnQgPSB0aGlzLT5tX3BkYXRhLT5tX2RhdGEuc2l6ZSgpOwotICAgLy8KLSAgIC8vIGJhY2sgdXAgdGhlIGN1cnJlbnQgZmxhZ3MgaW4gY2FzZSB3ZSBoYXZlIGEgbmVzdGVkICg/aW1zeCkgZ3JvdXA6Ci0gICAvLwotICAgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3B0aW9uX3R5cGUgb3B0cyA9IHRoaXMtPmZsYWdzKCk7Ci0gICBib29sIG9sZF9jYXNlX2NoYW5nZSA9IG1faGFzX2Nhc2VfY2hhbmdlOwotICAgbV9oYXNfY2FzZV9jaGFuZ2UgPSBmYWxzZTsgLy8gbm8gY2hhbmdlcyB0byB0aGlzIHNjb3BlIGFzIHlldC4uLgotICAgLy8KLSAgIC8vIEJhY2sgdXAgYnJhbmNoIHJlc2V0IGRhdGEgaW4gY2FzZSB3ZSBoYXZlIGEgbmVzdGVkICg/fC4uLikKLSAgIC8vCi0gICBpbnQgbWFya19yZXNldCA9IG1fbWFya19yZXNldDsKLSAgIG1fbWFya19yZXNldCA9IC0xOwotICAgLy8KLSAgIC8vIG5vdyByZWN1cnNpdmVseSBhZGQgbW9yZSBzdGF0ZXMsIHRoaXMgd2lsbCB0ZXJtaW5hdGUgd2hlbiB3ZSBnZXQgdG8gYQotICAgLy8gbWF0Y2hpbmcgJyknIDoKLSAgIC8vCi0gICBwYXJzZV9hbGwoKTsKLSAgIC8vCi0gICAvLyBVbndpbmQgcHVzaGVkIGFsdGVybmF0aXZlczoKLSAgIC8vCi0gICBpZigwID09IHVud2luZF9hbHRzKGxhc3RfcGFyZW5fc3RhcnQpKQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgLy8KLSAgIC8vIHJlc3RvcmUgZmxhZ3M6Ci0gICAvLwotICAgaWYobV9oYXNfY2FzZV9jaGFuZ2UpCi0gICB7Ci0gICAgICAvLyB0aGUgY2FzZSBoYXMgY2hhbmdlZCBpbiBvbmUgb3IgbW9yZSBvZiB0aGUgYWx0ZXJuYXRpdmVzCi0gICAgICAvLyB3aXRoaW4gdGhlIHNjb3BlZCAoLi4uKSBibG9jazogd2UgaGF2ZSB0byBhZGQgYSBzdGF0ZQotICAgICAgLy8gdG8gcmVzZXQgdGhlIGNhc2Ugc2Vuc2l0aXZpdHk6Ci0gICAgICBzdGF0aWNfY2FzdDxyZV9jYXNlKj4oCi0gICAgICAgICB0aGlzLT5hcHBlbmRfc3RhdGUoc3ludGF4X2VsZW1lbnRfdG9nZ2xlX2Nhc2UsIHNpemVvZihyZV9jYXNlKSkKLSAgICAgICAgICktPmljYXNlID0gb3B0cyAmIHJlZ2Jhc2U6OmljYXNlOwotICAgfQotICAgdGhpcy0+ZmxhZ3Mob3B0cyk7Ci0gICBtX2hhc19jYXNlX2NoYW5nZSA9IG9sZF9jYXNlX2NoYW5nZTsKLSAgIC8vCi0gICAvLyByZXN0b3JlIGJyYW5jaCByZXNldDoKLSAgIC8vCi0gICBtX21hcmtfcmVzZXQgPSBtYXJrX3Jlc2V0OwotICAgLy8KLSAgIC8vIHdlIGVpdGhlciBoYXZlIGEgJyknIG9yIHdlIGhhdmUgcnVuIG91dCBvZiBjaGFyYWN0ZXJzIHByZW1hdHVyZWx5OgotICAgLy8KLSAgIGlmKG1fcG9zaXRpb24gPT0gbV9lbmQpCi0gICB7Ci0gICAgICB0aGlzLT5mYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfcGFyZW4sIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6ZGlzdGFuY2UobV9iYXNlLCBtX2VuZCkpOwotICAgICAgcmV0dXJuIGZhbHNlOwotICAgfQotICAgTkROQk9PU1RfQVNTRVJUKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSA9PSByZWdleF9jb25zdGFudHM6OnN5bnRheF9jbG9zZV9tYXJrKTsKLSNpZm5kZWYgTkROQk9PU1RfTk9fU1REX0RJU1RBTkNFCi0gICBpZihtYXJraWQgJiYgKHRoaXMtPmZsYWdzKCkgJiByZWdiYXNlOjpzYXZlX3N1YmV4cHJlc3Npb25fbG9jYXRpb24pKQotICAgICAgdGhpcy0+bV9wZGF0YS0+bV9zdWJzLmF0KG1hcmtpZCAtIDEpLnNlY29uZCA9IHN0ZDo6ZGlzdGFuY2UobV9iYXNlLCBtX3Bvc2l0aW9uKTsKLSNlbHNlCi0gICBpZihtYXJraWQgJiYgKHRoaXMtPmZsYWdzKCkgJiByZWdiYXNlOjpzYXZlX3N1YmV4cHJlc3Npb25fbG9jYXRpb24pKQotICAgICAgdGhpcy0+bV9wZGF0YS0+bV9zdWJzLmF0KG1hcmtpZCAtIDEpLnNlY29uZCA9IChtX3Bvc2l0aW9uIC0gbV9iYXNlKTsKLSNlbmRpZgotICAgKyttX3Bvc2l0aW9uOwotICAgLy8KLSAgIC8vIGFwcGVuZCBjbG9zaW5nIHBhcmVudGhlc2lzIHN0YXRlOgotICAgLy8KLSAgIHBiID0gc3RhdGljX2Nhc3Q8cmVfYnJhY2UqPih0aGlzLT5hcHBlbmRfc3RhdGUoc3ludGF4X2VsZW1lbnRfZW5kbWFyaywgc2l6ZW9mKHJlX2JyYWNlKSkpOwotICAgcGItPmluZGV4ID0gbWFya2lkOwotICAgcGItPmljYXNlID0gdGhpcy0+ZmxhZ3MoKSAmIHJlZ2Jhc2U6OmljYXNlOwotICAgdGhpcy0+bV9wYXJlbl9zdGFydCA9IGxhc3RfcGFyZW5fc3RhcnQ7Ci0gICAvLwotICAgLy8gcmVzdG9yZSB0aGUgYWx0ZXJuYXRlIGluc2VydGlvbiBwb2ludDoKLSAgIC8vCi0gICB0aGlzLT5tX2FsdF9pbnNlcnRfcG9pbnQgPSBsYXN0X2FsdF9wb2ludDsKLSAgIC8vCi0gICAvLyBhbGxvdyBiYWNrcmVmcyB0byB0aGlzIG1hcms6Ci0gICAvLwotICAgaWYoKG1hcmtpZCA+IDApICYmIChtYXJraWQgPCBzaXplb2YodW5zaWduZWQpICogQ0hBUl9CSVQpKQotICAgICAgdGhpcy0+bV9iYWNrcmVmcyB8PSAxdSA8PCAobWFya2lkIC0gMSk7Ci0KLSAgIHJldHVybiB0cnVlOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLWJvb2wgYmFzaWNfcmVnZXhfcGFyc2VyPGNoYXJULCB0cmFpdHM+OjpwYXJzZV9iYXNpY19lc2NhcGUoKQotewotICAgKyttX3Bvc2l0aW9uOwotICAgYm9vbCByZXN1bHQgPSB0cnVlOwotICAgc3dpdGNoKHRoaXMtPm1fdHJhaXRzLmVzY2FwZV9zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikpCi0gICB7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fbWFyazoKLSAgICAgIHJldHVybiBwYXJzZV9vcGVuX3BhcmVuKCk7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2Nsb3NlX21hcms6Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X3BsdXM6Ci0gICAgICBpZih0aGlzLT5mbGFncygpICYgcmVnZXhfY29uc3RhbnRzOjpia19wbHVzX3FtKQotICAgICAgewotICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgcmV0dXJuIHBhcnNlX3JlcGVhdCgxKTsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgICAgIHJldHVybiBwYXJzZV9saXRlcmFsKCk7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X3F1ZXN0aW9uOgotICAgICAgaWYodGhpcy0+ZmxhZ3MoKSAmIHJlZ2V4X2NvbnN0YW50czo6YmtfcGx1c19xbSkKLSAgICAgIHsKLSAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgIHJldHVybiBwYXJzZV9yZXBlYXQoMCwgMSk7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICAgICByZXR1cm4gcGFyc2VfbGl0ZXJhbCgpOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX2JyYWNlOgotICAgICAgaWYodGhpcy0+ZmxhZ3MoKSAmIHJlZ2Jhc2U6Om5vX2ludGVydmFscykKLSAgICAgICAgIHJldHVybiBwYXJzZV9saXRlcmFsKCk7Ci0gICAgICArK21fcG9zaXRpb247Ci0gICAgICByZXR1cm4gcGFyc2VfcmVwZWF0X3JhbmdlKHRydWUpOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OnN5bnRheF9jbG9zZV9icmFjZToKLSAgICAgIGlmKHRoaXMtPmZsYWdzKCkgJiByZWdiYXNlOjpub19pbnRlcnZhbHMpCi0gICAgICAgICByZXR1cm4gcGFyc2VfbGl0ZXJhbCgpOwotICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2JyYWNlLCB0aGlzLT5tX3Bvc2l0aW9uIC0gdGhpcy0+bV9iYXNlLCAiRm91bmQgYSBjbG9zaW5nIHJlcGV0aXRpb24gb3BlcmF0b3IgfSB3aXRoIG5vIGNvcnJlc3BvbmRpbmcgey4iKTsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3I6Ci0gICAgICBpZih0aGlzLT5mbGFncygpICYgcmVnYmFzZTo6YmtfdmJhcikKLSAgICAgICAgIHJldHVybiBwYXJzZV9hbHQoKTsKLSAgICAgIGVsc2UKLSAgICAgICAgIHJlc3VsdCA9IHBhcnNlX2xpdGVyYWwoKTsKLSAgICAgIGJyZWFrOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OnN5bnRheF9kaWdpdDoKLSAgICAgIHJldHVybiBwYXJzZV9iYWNrcmVmKCk7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3R5cGVfc3RhcnRfYnVmZmVyOgotICAgICAgaWYodGhpcy0+ZmxhZ3MoKSAmIHJlZ2Jhc2U6OmVtYWNzX2V4KQotICAgICAgewotICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgdGhpcy0+YXBwZW5kX3N0YXRlKHN5bnRheF9lbGVtZW50X2J1ZmZlcl9zdGFydCk7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICAgICByZXN1bHQgPSBwYXJzZV9saXRlcmFsKCk7Ci0gICAgICBicmVhazsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfdHlwZV9lbmRfYnVmZmVyOgotICAgICAgaWYodGhpcy0+ZmxhZ3MoKSAmIHJlZ2Jhc2U6OmVtYWNzX2V4KQotICAgICAgewotICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgdGhpcy0+YXBwZW5kX3N0YXRlKHN5bnRheF9lbGVtZW50X2J1ZmZlcl9lbmQpOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgICAgcmVzdWx0ID0gcGFyc2VfbGl0ZXJhbCgpOwotICAgICAgYnJlYWs7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3R5cGVfd29yZF9hc3NlcnQ6Ci0gICAgICBpZih0aGlzLT5mbGFncygpICYgcmVnYmFzZTo6ZW1hY3NfZXgpCi0gICAgICB7Ci0gICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICB0aGlzLT5hcHBlbmRfc3RhdGUoc3ludGF4X2VsZW1lbnRfd29yZF9ib3VuZGFyeSk7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICAgICByZXN1bHQgPSBwYXJzZV9saXRlcmFsKCk7Ci0gICAgICBicmVhazsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfdHlwZV9ub3Rfd29yZF9hc3NlcnQ6Ci0gICAgICBpZih0aGlzLT5mbGFncygpICYgcmVnYmFzZTo6ZW1hY3NfZXgpCi0gICAgICB7Ci0gICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICB0aGlzLT5hcHBlbmRfc3RhdGUoc3ludGF4X2VsZW1lbnRfd2l0aGluX3dvcmQpOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgICAgcmVzdWx0ID0gcGFyc2VfbGl0ZXJhbCgpOwotICAgICAgYnJlYWs7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3R5cGVfbGVmdF93b3JkOgotICAgICAgaWYodGhpcy0+ZmxhZ3MoKSAmIHJlZ2Jhc2U6OmVtYWNzX2V4KQotICAgICAgewotICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgdGhpcy0+YXBwZW5kX3N0YXRlKHN5bnRheF9lbGVtZW50X3dvcmRfc3RhcnQpOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgICAgcmVzdWx0ID0gcGFyc2VfbGl0ZXJhbCgpOwotICAgICAgYnJlYWs7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3R5cGVfcmlnaHRfd29yZDoKLSAgICAgIGlmKHRoaXMtPmZsYWdzKCkgJiByZWdiYXNlOjplbWFjc19leCkKLSAgICAgIHsKLSAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgIHRoaXMtPmFwcGVuZF9zdGF0ZShzeW50YXhfZWxlbWVudF93b3JkX2VuZCk7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICAgICByZXN1bHQgPSBwYXJzZV9saXRlcmFsKCk7Ci0gICAgICBicmVhazsKLSAgIGRlZmF1bHQ6Ci0gICAgICBpZih0aGlzLT5mbGFncygpICYgcmVnYmFzZTo6ZW1hY3NfZXgpCi0gICAgICB7Ci0gICAgICAgICBib29sIG5lZ2F0ZSA9IHRydWU7Ci0gICAgICAgICBzd2l0Y2goKm1fcG9zaXRpb24pCi0gICAgICAgICB7Ci0gICAgICAgICBjYXNlICd3JzoKLSAgICAgICAgICAgIG5lZ2F0ZSA9IGZhbHNlOwotICAgICAgICAgICAgTkROQk9PU1RfRkFMTFRIUk9VR0g7Ci0gICAgICAgICBjYXNlICdXJzoKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgIGJhc2ljX2NoYXJfc2V0PGNoYXJULCB0cmFpdHM+IGNoYXJfc2V0OwotICAgICAgICAgICAgaWYobmVnYXRlKQotICAgICAgICAgICAgICAgY2hhcl9zZXQubmVnYXRlKCk7Ci0gICAgICAgICAgICBjaGFyX3NldC5hZGRfY2xhc3ModGhpcy0+bV93b3JkX21hc2spOwotICAgICAgICAgICAgaWYoMCA9PSB0aGlzLT5hcHBlbmRfc2V0KGNoYXJfc2V0KSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9jdHlwZSwgbV9wb3NpdGlvbiAtIG1fYmFzZSk7Ci0gICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgIGNhc2UgJ3MnOgotICAgICAgICAgICAgbmVnYXRlID0gZmFsc2U7Ci0gICAgICAgICAgICBORE5CT09TVF9GQUxMVEhST1VHSDsKLSAgICAgICAgIGNhc2UgJ1MnOgotICAgICAgICAgICAgcmV0dXJuIGFkZF9lbWFjc19jb2RlKG5lZ2F0ZSk7Ci0gICAgICAgICBjYXNlICdjJzoKLSAgICAgICAgIGNhc2UgJ0MnOgotICAgICAgICAgICAgLy8gbm90IHN1cHBvcnRlZCB5ZXQ6Ci0gICAgICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfZXNjYXBlLCBtX3Bvc2l0aW9uIC0gbV9iYXNlLCAiVGhlIFxcYyBhbmQgXFxDIGVzY2FwZSBzZXF1ZW5jZXMgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgUE9TSVggYmFzaWMgcmVndWxhciBleHByZXNzaW9uczogdHJ5IHRoZSBQZXJsIHN5bnRheCBpbnN0ZWFkLiIpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgfQotICAgICAgfQotICAgICAgcmVzdWx0ID0gcGFyc2VfbGl0ZXJhbCgpOwotICAgICAgYnJlYWs7Ci0gICB9Ci0gICByZXR1cm4gcmVzdWx0OwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLWJvb2wgYmFzaWNfcmVnZXhfcGFyc2VyPGNoYXJULCB0cmFpdHM+OjpwYXJzZV9leHRlbmRlZF9lc2NhcGUoKQotewotICAgKyttX3Bvc2l0aW9uOwotICAgaWYobV9wb3NpdGlvbiA9PSBtX2VuZCkKLSAgIHsKLSAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9lc2NhcGUsIG1fcG9zaXRpb24gLSBtX2Jhc2UsICJJbmNvbXBsZXRlIGVzY2FwZSBzZXF1ZW5jZSBmb3VuZC4iKTsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgIH0KLSAgIGJvb2wgbmVnYXRlID0gZmFsc2U7IC8vIGluIGNhc2UgdGhpcyBpcyBhIGNoYXJhY3RlciBjbGFzcyBlc2NhcGU6IFx3IFxkIGV0YwotICAgc3dpdGNoKHRoaXMtPm1fdHJhaXRzLmVzY2FwZV9zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikpCi0gICB7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3R5cGVfbm90X2NsYXNzOgotICAgICAgbmVnYXRlID0gdHJ1ZTsKLSAgICAgIE5ETkJPT1NUX0ZBTExUSFJPVUdIOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OmVzY2FwZV90eXBlX2NsYXNzOgotICAgICAgewotZXNjYXBlX3R5cGVfY2xhc3NfanVtcDoKLSAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzOjpjaGFyX2NsYXNzX3R5cGUgbV90eXBlOwotICAgICAgICAgbV90eXBlIG0gPSB0aGlzLT5tX3RyYWl0cy5sb29rdXBfY2xhc3NuYW1lKG1fcG9zaXRpb24sIG1fcG9zaXRpb24rMSk7Ci0gICAgICAgICBpZihtICE9IDApCi0gICAgICAgICB7Ci0gICAgICAgICAgICBiYXNpY19jaGFyX3NldDxjaGFyVCwgdHJhaXRzPiBjaGFyX3NldDsKLSAgICAgICAgICAgIGlmKG5lZ2F0ZSkKLSAgICAgICAgICAgICAgIGNoYXJfc2V0Lm5lZ2F0ZSgpOwotICAgICAgICAgICAgY2hhcl9zZXQuYWRkX2NsYXNzKG0pOwotICAgICAgICAgICAgaWYoMCA9PSB0aGlzLT5hcHBlbmRfc2V0KGNoYXJfc2V0KSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9jdHlwZSwgbV9wb3NpdGlvbiAtIG1fYmFzZSk7Ci0gICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgIH0KLSAgICAgICAgIC8vCi0gICAgICAgICAvLyBub3QgYSBjbGFzcywganVzdCBhIHJlZ3VsYXIgdW5rbm93biBlc2NhcGU6Ci0gICAgICAgICAvLwotICAgICAgICAgdGhpcy0+YXBwZW5kX2xpdGVyYWwodW5lc2NhcGVfY2hhcmFjdGVyKCkpOwotICAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2RpZ2l0OgotICAgICAgcmV0dXJuIHBhcnNlX2JhY2tyZWYoKTsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfdHlwZV9sZWZ0X3dvcmQ6Ci0gICAgICArK21fcG9zaXRpb247Ci0gICAgICB0aGlzLT5hcHBlbmRfc3RhdGUoc3ludGF4X2VsZW1lbnRfd29yZF9zdGFydCk7Ci0gICAgICBicmVhazsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfdHlwZV9yaWdodF93b3JkOgotICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgdGhpcy0+YXBwZW5kX3N0YXRlKHN5bnRheF9lbGVtZW50X3dvcmRfZW5kKTsKLSAgICAgIGJyZWFrOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OmVzY2FwZV90eXBlX3N0YXJ0X2J1ZmZlcjoKLSAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIHRoaXMtPmFwcGVuZF9zdGF0ZShzeW50YXhfZWxlbWVudF9idWZmZXJfc3RhcnQpOwotICAgICAgYnJlYWs7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3R5cGVfZW5kX2J1ZmZlcjoKLSAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIHRoaXMtPmFwcGVuZF9zdGF0ZShzeW50YXhfZWxlbWVudF9idWZmZXJfZW5kKTsKLSAgICAgIGJyZWFrOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OmVzY2FwZV90eXBlX3dvcmRfYXNzZXJ0OgotICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgdGhpcy0+YXBwZW5kX3N0YXRlKHN5bnRheF9lbGVtZW50X3dvcmRfYm91bmRhcnkpOwotICAgICAgYnJlYWs7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3R5cGVfbm90X3dvcmRfYXNzZXJ0OgotICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgdGhpcy0+YXBwZW5kX3N0YXRlKHN5bnRheF9lbGVtZW50X3dpdGhpbl93b3JkKTsKLSAgICAgIGJyZWFrOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OmVzY2FwZV90eXBlX1o6Ci0gICAgICArK21fcG9zaXRpb247Ci0gICAgICB0aGlzLT5hcHBlbmRfc3RhdGUoc3ludGF4X2VsZW1lbnRfc29mdF9idWZmZXJfZW5kKTsKLSAgICAgIGJyZWFrOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OmVzY2FwZV90eXBlX1E6Ci0gICAgICByZXR1cm4gcGFyc2VfUUUoKTsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfdHlwZV9DOgotICAgICAgcmV0dXJuIHBhcnNlX21hdGNoX2FueSgpOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OmVzY2FwZV90eXBlX1g6Ci0gICAgICArK21fcG9zaXRpb247Ci0gICAgICB0aGlzLT5hcHBlbmRfc3RhdGUoc3ludGF4X2VsZW1lbnRfY29tYmluaW5nKTsKLSAgICAgIGJyZWFrOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OmVzY2FwZV90eXBlX0c6Ci0gICAgICArK21fcG9zaXRpb247Ci0gICAgICB0aGlzLT5hcHBlbmRfc3RhdGUoc3ludGF4X2VsZW1lbnRfcmVzdGFydF9jb250aW51ZSk7Ci0gICAgICBicmVhazsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfdHlwZV9ub3RfcHJvcGVydHk6Ci0gICAgICBuZWdhdGUgPSB0cnVlOwotICAgICAgTkROQk9PU1RfRkFMTFRIUk9VR0g7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3R5cGVfcHJvcGVydHk6Ci0gICAgICB7Ci0gICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICBjaGFyX2NsYXNzX3R5cGUgbTsKLSAgICAgICAgIGlmKG1fcG9zaXRpb24gPT0gbV9lbmQpCi0gICAgICAgICB7Ci0gICAgICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfZXNjYXBlLCBtX3Bvc2l0aW9uIC0gbV9iYXNlLCAiSW5jb21wbGV0ZSBwcm9wZXJ0eSBlc2NhcGUgZm91bmQuIik7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICB9Ci0gICAgICAgICAvLyBtYXliZSBoYXZlIFxwe2RkZH0KLSAgICAgICAgIGlmKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSA9PSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX2JyYWNlKQotICAgICAgICAgewotICAgICAgICAgICAgY29uc3QgY2hhclQqIGJhc2UgPSBtX3Bvc2l0aW9uOwotICAgICAgICAgICAgLy8gc2tpcCBmb3J3YXJkIHVudGlsIHdlIGZpbmQgZW5jbG9zaW5nIGJyYWNlOgotICAgICAgICAgICAgd2hpbGUoKG1fcG9zaXRpb24gIT0gbV9lbmQpICYmICh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfY2xvc2VfYnJhY2UpKQotICAgICAgICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgICAgaWYobV9wb3NpdGlvbiA9PSBtX2VuZCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9lc2NhcGUsIG1fcG9zaXRpb24gLSBtX2Jhc2UsICJDbG9zaW5nIH0gbWlzc2luZyBmcm9tIHByb3BlcnR5IGVzY2FwZSBzZXF1ZW5jZS4iKTsKLSAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG0gPSB0aGlzLT5tX3RyYWl0cy5sb29rdXBfY2xhc3NuYW1lKCsrYmFzZSwgbV9wb3NpdGlvbisrKTsKLSAgICAgICAgIH0KLSAgICAgICAgIGVsc2UKLSAgICAgICAgIHsKLSAgICAgICAgICAgIG0gPSB0aGlzLT5tX3RyYWl0cy5sb29rdXBfY2xhc3NuYW1lKG1fcG9zaXRpb24sIG1fcG9zaXRpb24rMSk7Ci0gICAgICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICB9Ci0gICAgICAgICBpZihtICE9IDApCi0gICAgICAgICB7Ci0gICAgICAgICAgICBiYXNpY19jaGFyX3NldDxjaGFyVCwgdHJhaXRzPiBjaGFyX3NldDsKLSAgICAgICAgICAgIGlmKG5lZ2F0ZSkKLSAgICAgICAgICAgICAgIGNoYXJfc2V0Lm5lZ2F0ZSgpOwotICAgICAgICAgICAgY2hhcl9zZXQuYWRkX2NsYXNzKG0pOwotICAgICAgICAgICAgaWYoMCA9PSB0aGlzLT5hcHBlbmRfc2V0KGNoYXJfc2V0KSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9jdHlwZSwgbV9wb3NpdGlvbiAtIG1fYmFzZSk7Ci0gICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgIH0KLSAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9jdHlwZSwgbV9wb3NpdGlvbiAtIG1fYmFzZSwgIkVzY2FwZSBzZXF1ZW5jZSB3YXMgbmVpdGhlciBhIHZhbGlkIHByb3BlcnR5IG5vciBhIHZhbGlkIGNoYXJhY3RlciBjbGFzcyBuYW1lLiIpOwotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgY2FzZSByZWdleF9jb25zdGFudHM6OmVzY2FwZV90eXBlX3Jlc2V0X3N0YXJ0X21hcms6Ci0gICAgICBpZigwID09ICh0aGlzLT5mbGFncygpICYgKHJlZ2Jhc2U6Om1haW5fb3B0aW9uX3R5cGUgfCByZWdiYXNlOjpub19wZXJsX2V4KSkpCi0gICAgICB7Ci0gICAgICAgICByZV9icmFjZSogcGIgPSBzdGF0aWNfY2FzdDxyZV9icmFjZSo+KHRoaXMtPmFwcGVuZF9zdGF0ZShzeW50YXhfZWxlbWVudF9zdGFydG1hcmssIHNpemVvZihyZV9icmFjZSkpKTsKLSAgICAgICAgIHBiLT5pbmRleCA9IC01OwotICAgICAgICAgcGItPmljYXNlID0gdGhpcy0+ZmxhZ3MoKSAmIHJlZ2Jhc2U6OmljYXNlOwotICAgICAgICAgdGhpcy0+bV9wZGF0YS0+bV9kYXRhLmFsaWduKCk7Ci0gICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0KLSAgICAgIGdvdG8gZXNjYXBlX3R5cGVfY2xhc3NfanVtcDsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfdHlwZV9saW5lX2VuZGluZzoKLSAgICAgIGlmKDAgPT0gKHRoaXMtPmZsYWdzKCkgJiAocmVnYmFzZTo6bWFpbl9vcHRpb25fdHlwZSB8IHJlZ2Jhc2U6Om5vX3BlcmxfZXgpKSkKLSAgICAgIHsKLSAgICAgICAgIGNvbnN0IGNoYXJUKiBlID0gZ2V0X2VzY2FwZV9SX3N0cmluZzxjaGFyVD4oKTsKLSAgICAgICAgIGNvbnN0IGNoYXJUKiBvbGRfcG9zaXRpb24gPSBtX3Bvc2l0aW9uOwotICAgICAgICAgY29uc3QgY2hhclQqIG9sZF9lbmQgPSBtX2VuZDsKLSAgICAgICAgIGNvbnN0IGNoYXJUKiBvbGRfYmFzZSA9IG1fYmFzZTsKLSAgICAgICAgIG1fcG9zaXRpb24gPSBlOwotICAgICAgICAgbV9iYXNlID0gZTsKLSAgICAgICAgIG1fZW5kID0gZSArIHRyYWl0czo6bGVuZ3RoKGUpOwotICAgICAgICAgYm9vbCByID0gcGFyc2VfYWxsKCk7Ci0gICAgICAgICBtX3Bvc2l0aW9uID0gKytvbGRfcG9zaXRpb247Ci0gICAgICAgICBtX2VuZCA9IG9sZF9lbmQ7Ci0gICAgICAgICBtX2Jhc2UgPSBvbGRfYmFzZTsKLSAgICAgICAgIHJldHVybiByOwotICAgICAgfQotICAgICAgZ290byBlc2NhcGVfdHlwZV9jbGFzc19qdW1wOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OmVzY2FwZV90eXBlX2V4dGVuZGVkX2JhY2tyZWY6Ci0gICAgICBpZigwID09ICh0aGlzLT5mbGFncygpICYgKHJlZ2Jhc2U6Om1haW5fb3B0aW9uX3R5cGUgfCByZWdiYXNlOjpub19wZXJsX2V4KSkpCi0gICAgICB7Ci0gICAgICAgICBib29sIGhhdmVfYnJhY2UgPSBmYWxzZTsKLSAgICAgICAgIGJvb2wgbmVnYXRpdmUgPSBmYWxzZTsKLSAgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyKiBpbmNvbXBsZXRlX21lc3NhZ2UgPSAiSW5jb21wbGV0ZSBcXGcgZXNjYXBlIGZvdW5kLiI7Ci0gICAgICAgICBpZigrK21fcG9zaXRpb24gPT0gbV9lbmQpCi0gICAgICAgICB7Ci0gICAgICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfZXNjYXBlLCBtX3Bvc2l0aW9uIC0gbV9iYXNlLCBpbmNvbXBsZXRlX21lc3NhZ2UpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgfQotICAgICAgICAgLy8gbWF5YmUgaGF2ZSBcZ3tkZGR9Ci0gICAgICAgICByZWdleF9jb25zdGFudHM6OnN5bnRheF90eXBlIHN5biA9IHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKTsKLSAgICAgICAgIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X3R5cGUgc3luX2VuZCA9IDA7Ci0gICAgICAgICBpZigoc3luID09IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fYnJhY2UpIAotICAgICAgICAgICAgfHwgKHN5biA9PSByZWdleF9jb25zdGFudHM6OmVzY2FwZV90eXBlX2xlZnRfd29yZCkKLSAgICAgICAgICAgIHx8IChzeW4gPT0gcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfdHlwZV9lbmRfYnVmZmVyKSkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIGlmKCsrbV9wb3NpdGlvbiA9PSBtX2VuZCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9lc2NhcGUsIG1fcG9zaXRpb24gLSBtX2Jhc2UsIGluY29tcGxldGVfbWVzc2FnZSk7Ci0gICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBoYXZlX2JyYWNlID0gdHJ1ZTsKLSAgICAgICAgICAgIHN3aXRjaChzeW4pCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fYnJhY2U6Ci0gICAgICAgICAgICAgICBzeW5fZW5kID0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfY2xvc2VfYnJhY2U7Ci0gICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfdHlwZV9sZWZ0X3dvcmQ6Ci0gICAgICAgICAgICAgICBzeW5fZW5kID0gcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfdHlwZV9yaWdodF93b3JkOwotICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgc3luX2VuZCA9IHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3R5cGVfZW5kX2J1ZmZlcjsKLSAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgfQotICAgICAgICAgbmVnYXRpdmUgPSAoKm1fcG9zaXRpb24gPT0gc3RhdGljX2Nhc3Q8Y2hhclQ+KCctJykpOwotICAgICAgICAgaWYoKG5lZ2F0aXZlKSAmJiAoKyttX3Bvc2l0aW9uID09IG1fZW5kKSkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9lc2NhcGUsIG1fcG9zaXRpb24gLSBtX2Jhc2UsIGluY29tcGxldGVfbWVzc2FnZSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICB9Ci0gICAgICAgICBjb25zdCBjaGFyVCogcGMgPSBtX3Bvc2l0aW9uOwotICAgICAgICAgaW50IGkgPSB0aGlzLT5tX3RyYWl0cy50b2kocGMsIG1fZW5kLCAxMCk7Ci0gICAgICAgICBpZigoaSA8IDApICYmIHN5bl9lbmQpCi0gICAgICAgICB7Ci0gICAgICAgICAgICAvLyBDaGVjayBmb3IgYSBuYW1lZCBjYXB0dXJlLCBnZXQgdGhlIGxlZnRtb3N0IG9uZSBpZiB0aGVyZSBpcyBtb3JlIHRoYW4gb25lOgotICAgICAgICAgICAgY29uc3QgY2hhclQqIGJhc2UgPSBtX3Bvc2l0aW9uOwotICAgICAgICAgICAgd2hpbGUoKG1fcG9zaXRpb24gIT0gbV9lbmQpICYmICh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gc3luX2VuZCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpID0gaGFzaF92YWx1ZV9mcm9tX2NhcHR1cmVfbmFtZShiYXNlLCBtX3Bvc2l0aW9uKTsKLSAgICAgICAgICAgIHBjID0gbV9wb3NpdGlvbjsKLSAgICAgICAgIH0KLSAgICAgICAgIGlmKG5lZ2F0aXZlKQotICAgICAgICAgICAgaSA9IDEgKyBtX21hcmtfY291bnQgLSBpOwotICAgICAgICAgaWYoKChpID4gMCkgJiYgKHRoaXMtPm1fYmFja3JlZnMgJiAoMXUgPDwgKGktMSkpKSkgfHwgKChpID4gMTAwMDApICYmICh0aGlzLT5tX3BkYXRhLT5nZXRfaWQoaSkgPiAwKSAmJiAodGhpcy0+bV9iYWNrcmVmcyAmICgxdSA8PCAodGhpcy0+bV9wZGF0YS0+Z2V0X2lkKGkpLTEpKSkpKQotICAgICAgICAgewotICAgICAgICAgICAgbV9wb3NpdGlvbiA9IHBjOwotICAgICAgICAgICAgcmVfYnJhY2UqIHBiID0gc3RhdGljX2Nhc3Q8cmVfYnJhY2UqPih0aGlzLT5hcHBlbmRfc3RhdGUoc3ludGF4X2VsZW1lbnRfYmFja3JlZiwgc2l6ZW9mKHJlX2JyYWNlKSkpOwotICAgICAgICAgICAgcGItPmluZGV4ID0gaTsKLSAgICAgICAgICAgIHBiLT5pY2FzZSA9IHRoaXMtPmZsYWdzKCkgJiByZWdiYXNlOjppY2FzZTsKLSAgICAgICAgIH0KLSAgICAgICAgIGVsc2UKLSAgICAgICAgIHsKLSAgICAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9iYWNrcmVmLCBtX3Bvc2l0aW9uIC0gbV9iYXNlKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgIH0KLSAgICAgICAgIG1fcG9zaXRpb24gPSBwYzsKLSAgICAgICAgIGlmKGhhdmVfYnJhY2UpCi0gICAgICAgICB7Ci0gICAgICAgICAgICBpZigobV9wb3NpdGlvbiA9PSBtX2VuZCkgfHwgKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSBzeW5fZW5kKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9lc2NhcGUsIG1fcG9zaXRpb24gLSBtX2Jhc2UsIGluY29tcGxldGVfbWVzc2FnZSk7Ci0gICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICB9Ci0gICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0KLSAgICAgIGdvdG8gZXNjYXBlX3R5cGVfY2xhc3NfanVtcDsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfdHlwZV9jb250cm9sX3Y6Ci0gICAgICBpZigwID09ICh0aGlzLT5mbGFncygpICYgKHJlZ2Jhc2U6Om1haW5fb3B0aW9uX3R5cGUgfCByZWdiYXNlOjpub19wZXJsX2V4KSkpCi0gICAgICAgICBnb3RvIGVzY2FwZV90eXBlX2NsYXNzX2p1bXA7Ci0gICAgICBORE5CT09TVF9GQUxMVEhST1VHSDsKLSAgIGRlZmF1bHQ6Ci0gICAgICB0aGlzLT5hcHBlbmRfbGl0ZXJhbCh1bmVzY2FwZV9jaGFyYWN0ZXIoKSk7Ci0gICAgICBicmVhazsKLSAgIH0KLSAgIHJldHVybiB0cnVlOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLWJvb2wgYmFzaWNfcmVnZXhfcGFyc2VyPGNoYXJULCB0cmFpdHM+OjpwYXJzZV9tYXRjaF9hbnkoKQotewotICAgLy8KLSAgIC8vIHdlIGhhdmUgYSAnLicgdGhhdCBjYW4gbWF0Y2ggYW55IGNoYXJhY3RlcjoKLSAgIC8vCi0gICArK21fcG9zaXRpb247Ci0gICBzdGF0aWNfY2FzdDxyZV9kb3QqPigKLSAgICAgIHRoaXMtPmFwcGVuZF9zdGF0ZShzeW50YXhfZWxlbWVudF93aWxkLCBzaXplb2YocmVfZG90KSkKLSAgICAgICktPm1hc2sgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPih0aGlzLT5mbGFncygpICYgcmVnYmFzZTo6bm9fbW9kX3MgCi0gICAgICA/IHJlX2RldGFpbDo6Zm9yY2Vfbm90X25ld2xpbmUgCi0gICAgICAgICA6IHRoaXMtPmZsYWdzKCkgJiByZWdiYXNlOjptb2RfcyA/Ci0gICAgICAgICAgICByZV9kZXRhaWw6OmZvcmNlX25ld2xpbmUgOiByZV9kZXRhaWw6OmRvbnRfY2FyZSk7Ci0gICByZXR1cm4gdHJ1ZTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci1ib29sIGJhc2ljX3JlZ2V4X3BhcnNlcjxjaGFyVCwgdHJhaXRzPjo6cGFyc2VfcmVwZWF0KHN0ZDo6c2l6ZV90IGxvdywgc3RkOjpzaXplX3QgaGlnaCkKLXsKLSAgIGJvb2wgZ3JlZWR5ID0gdHJ1ZTsKLSAgIGJvb2wgcG9jZXNzaXZlID0gZmFsc2U7Ci0gICBzdGQ6OnNpemVfdCBpbnNlcnRfcG9pbnQ7Ci0gICAvLyAKLSAgIC8vIHdoZW4gd2UgZ2V0IHRvIGhlcmUgd2UgbWF5IGhhdmUgYSBub24tZ3JlZWR5ID8gbWFyayBzdGlsbCB0byBjb21lOgotICAgLy8KLSAgIGlmKChtX3Bvc2l0aW9uICE9IG1fZW5kKSAKLSAgICAgICYmICgKLSAgICAgICAgICAgICgwID09ICh0aGlzLT5mbGFncygpICYgKHJlZ2Jhc2U6Om1haW5fb3B0aW9uX3R5cGUgfCByZWdiYXNlOjpub19wZXJsX2V4KSkpCi0gICAgICAgICAgICB8fCAoKHJlZ2Jhc2U6OmJhc2ljX3N5bnRheF9ncm91cHxyZWdiYXNlOjplbWFjc19leCkgPT0gKHRoaXMtPmZsYWdzKCkgJiAocmVnYmFzZTo6bWFpbl9vcHRpb25fdHlwZSB8IHJlZ2Jhc2U6OmVtYWNzX2V4KSkpCi0gICAgICAgICApCi0gICAgICApCi0gICB7Ci0gICAgICAvLyBPSyB3ZSBoYXZlIGEgcGVybCBvciBlbWFjcyByZWdleCwgY2hlY2sgZm9yIGEgJz8nOgotICAgICAgaWYodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pID09IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X3F1ZXN0aW9uKQotICAgICAgewotICAgICAgICAgZ3JlZWR5ID0gZmFsc2U7Ci0gICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICB9Ci0gICAgICAvLyBmb3IgcGVybCByZWdleGVzIG9ubHkgY2hlY2sgZm9yIHBvY2Vzc2l2ZSArKyByZXBlYXRzLgotICAgICAgaWYoKG1fcG9zaXRpb24gIT0gbV9lbmQpCi0gICAgICAgICAmJiAoMCA9PSAodGhpcy0+ZmxhZ3MoKSAmIHJlZ2Jhc2U6Om1haW5fb3B0aW9uX3R5cGUpKSAKLSAgICAgICAgICYmICh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgPT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfcGx1cykpCi0gICAgICB7Ci0gICAgICAgICBwb2Nlc3NpdmUgPSB0cnVlOwotICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgfQotICAgfQotICAgaWYoMCA9PSB0aGlzLT5tX2xhc3Rfc3RhdGUpCi0gICB7Ci0gICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfYmFkcmVwZWF0LCA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmRpc3RhbmNlKG1fYmFzZSwgbV9wb3NpdGlvbiksICJOb3RoaW5nIHRvIHJlcGVhdC4iKTsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgIH0KLSAgIGlmKHRoaXMtPm1fbGFzdF9zdGF0ZS0+dHlwZSA9PSBzeW50YXhfZWxlbWVudF9lbmRtYXJrKQotICAgewotICAgICAgLy8gaW5zZXJ0IGEgcmVwZWF0IGJlZm9yZSB0aGUgJygnIG1hdGNoaW5nIHRoZSBsYXN0ICcpJzoKLSAgICAgIGluc2VydF9wb2ludCA9IHRoaXMtPm1fcGFyZW5fc3RhcnQ7Ci0gICB9Ci0gICBlbHNlIGlmKCh0aGlzLT5tX2xhc3Rfc3RhdGUtPnR5cGUgPT0gc3ludGF4X2VsZW1lbnRfbGl0ZXJhbCkgJiYgKHN0YXRpY19jYXN0PHJlX2xpdGVyYWwqPih0aGlzLT5tX2xhc3Rfc3RhdGUpLT5sZW5ndGggPiAxKSkKLSAgIHsKLSAgICAgIC8vIHRoZSBsYXN0IHN0YXRlIHdhcyBhIGxpdGVyYWwgd2l0aCBtb3JlIHRoYW4gb25lIGNoYXJhY3Rlciwgc3BsaXQgaXQgaW4gdHdvOgotICAgICAgcmVfbGl0ZXJhbCogbGl0ID0gc3RhdGljX2Nhc3Q8cmVfbGl0ZXJhbCo+KHRoaXMtPm1fbGFzdF9zdGF0ZSk7Ci0gICAgICBjaGFyVCBjID0gKHN0YXRpY19jYXN0PGNoYXJUKj4oc3RhdGljX2Nhc3Q8dm9pZCo+KGxpdCsxKSkpW2xpdC0+bGVuZ3RoIC0gMV07Ci0gICAgICAtLShsaXQtPmxlbmd0aCk7Ci0gICAgICAvLyBub3cgYXBwZW5kIG5ldyBzdGF0ZToKLSAgICAgIGxpdCA9IHN0YXRpY19jYXN0PHJlX2xpdGVyYWwqPih0aGlzLT5hcHBlbmRfc3RhdGUoc3ludGF4X2VsZW1lbnRfbGl0ZXJhbCwgc2l6ZW9mKHJlX2xpdGVyYWwpICsgc2l6ZW9mKGNoYXJUKSkpOwotICAgICAgbGl0LT5sZW5ndGggPSAxOwotICAgICAgKHN0YXRpY19jYXN0PGNoYXJUKj4oc3RhdGljX2Nhc3Q8dm9pZCo+KGxpdCsxKSkpWzBdID0gYzsKLSAgICAgIGluc2VydF9wb2ludCA9IHRoaXMtPmdldG9mZnNldCh0aGlzLT5tX2xhc3Rfc3RhdGUpOwotICAgfQotICAgZWxzZQotICAgewotICAgICAgLy8gcmVwZWF0IHRoZSBsYXN0IHN0YXRlIHdoYXRldmVyIGl0IHdhcywgbmVlZCB0byBhZGQgc29tZSBlcnJvciBjaGVja2luZyBoZXJlOgotICAgICAgc3dpdGNoKHRoaXMtPm1fbGFzdF9zdGF0ZS0+dHlwZSkKLSAgICAgIHsKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfc3RhcnRfbGluZToKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfZW5kX2xpbmU6Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X3dvcmRfYm91bmRhcnk6Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X3dpdGhpbl93b3JkOgotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF93b3JkX3N0YXJ0OgotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF93b3JkX2VuZDoKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfYnVmZmVyX3N0YXJ0OgotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9idWZmZXJfZW5kOgotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9hbHQ6Ci0gICAgICBjYXNlIHN5bnRheF9lbGVtZW50X3NvZnRfYnVmZmVyX2VuZDoKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfcmVzdGFydF9jb250aW51ZToKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfanVtcDoKLSAgICAgIGNhc2Ugc3ludGF4X2VsZW1lbnRfc3RhcnRtYXJrOgotICAgICAgY2FzZSBzeW50YXhfZWxlbWVudF9iYWNrc3RlcDoKLSAgICAgICAgIC8vIGNhbid0IGxlZ2FsbHkgcmVwZWF0IGFueSBvZiB0aGUgYWJvdmU6Ci0gICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfYmFkcmVwZWF0LCBtX3Bvc2l0aW9uIC0gbV9iYXNlKTsKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAvLyBkbyBub3RoaW5nLi4uCi0gICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICAgIGluc2VydF9wb2ludCA9IHRoaXMtPmdldG9mZnNldCh0aGlzLT5tX2xhc3Rfc3RhdGUpOwotICAgfQotICAgLy8KLSAgIC8vIE9LIHdlIG5vdyBrbm93IHdoYXQgdG8gcmVwZWF0LCBzbyBpbnNlcnQgdGhlIHJlcGVhdCBhcm91bmQgaXQ6Ci0gICAvLwotICAgcmVfcmVwZWF0KiByZXAgPSBzdGF0aWNfY2FzdDxyZV9yZXBlYXQqPih0aGlzLT5pbnNlcnRfc3RhdGUoaW5zZXJ0X3BvaW50LCBzeW50YXhfZWxlbWVudF9yZXAsIHJlX3JlcGVhdGVyX3NpemUpKTsKLSAgIHJlcC0+bWluID0gbG93OwotICAgcmVwLT5tYXggPSBoaWdoOwotICAgcmVwLT5ncmVlZHkgPSBncmVlZHk7Ci0gICByZXAtPmxlYWRpbmcgPSBmYWxzZTsKLSAgIC8vIHN0b3JlIG91ciByZXBlYXRlciBwb3NpdGlvbiBmb3IgbGF0ZXI6Ci0gICBzdGQ6OnB0cmRpZmZfdCByZXBfb2ZmID0gdGhpcy0+Z2V0b2Zmc2V0KHJlcCk7Ci0gICAvLyBhbmQgYXBwZW5kIGEgYmFjayBqdW1wIHRvIHRoZSByZXBlYXQ6Ci0gICByZV9qdW1wKiBqbXAgPSBzdGF0aWNfY2FzdDxyZV9qdW1wKj4odGhpcy0+YXBwZW5kX3N0YXRlKHN5bnRheF9lbGVtZW50X2p1bXAsIHNpemVvZihyZV9qdW1wKSkpOwotICAgam1wLT5hbHQuaSA9IHJlcF9vZmYgLSB0aGlzLT5nZXRvZmZzZXQoam1wKTsKLSAgIHRoaXMtPm1fcGRhdGEtPm1fZGF0YS5hbGlnbigpOwotICAgLy8gbm93IGZpbGwgaW4gdGhlIGFsdCBqdW1wIGZvciB0aGUgcmVwZWF0OgotICAgcmVwID0gc3RhdGljX2Nhc3Q8cmVfcmVwZWF0Kj4odGhpcy0+Z2V0YWRkcmVzcyhyZXBfb2ZmKSk7Ci0gICByZXAtPmFsdC5pID0gdGhpcy0+bV9wZGF0YS0+bV9kYXRhLnNpemUoKSAtIHJlcF9vZmY7Ci0gICAvLwotICAgLy8gSWYgdGhlIHJlcGVhdCBpcyBwb2Nlc3NpdmUgdGhlbiBicmFja2V0IHRoZSByZXBlYXQgd2l0aCBhICg/Pi4uLikKLSAgIC8vIGluZGVwZW5kZW50IHN1Yi1leHByZXNzaW9uIGNvbnN0cnVjdDoKLSAgIC8vCi0gICBpZihwb2Nlc3NpdmUpCi0gICB7Ci0gICAgICBpZihtX3Bvc2l0aW9uICE9IG1fZW5kKQotICAgICAgewotICAgICAgICAgLy8KLSAgICAgICAgIC8vIENoZWNrIGZvciBpbGxlZ2FsIGZvbGxvd2luZyBxdWFudGlmaWVyLCB3ZSBoYXZlIHRvIGRvIHRoaXMgaGVyZSwgYmVjYXVzZQotICAgICAgICAgLy8gdGhlIGV4dHJhIHN0YXRlcyB3ZSBpbnNlcnQgYmVsb3cgY2lyY3VtdmVudHMgb3VyIHVzdWFsIGVycm9yIGNoZWNraW5nIDotKAotICAgICAgICAgLy8KLSAgICAgICAgIHN3aXRjaCh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikpCi0gICAgICAgICB7Ci0gICAgICAgICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X3N0YXI6Ci0gICAgICAgICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X3BsdXM6Ci0gICAgICAgICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X3F1ZXN0aW9uOgotICAgICAgICAgY2FzZSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX2JyYWNlOgotICAgICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2JhZHJlcGVhdCwgbV9wb3NpdGlvbiAtIG1fYmFzZSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICB9Ci0gICAgICB9Ci0gICAgICByZV9icmFjZSogcGIgPSBzdGF0aWNfY2FzdDxyZV9icmFjZSo+KHRoaXMtPmluc2VydF9zdGF0ZShpbnNlcnRfcG9pbnQsIHN5bnRheF9lbGVtZW50X3N0YXJ0bWFyaywgc2l6ZW9mKHJlX2JyYWNlKSkpOwotICAgICAgcGItPmluZGV4ID0gLTM7Ci0gICAgICBwYi0+aWNhc2UgPSB0aGlzLT5mbGFncygpICYgcmVnYmFzZTo6aWNhc2U7Ci0gICAgICBqbXAgPSBzdGF0aWNfY2FzdDxyZV9qdW1wKj4odGhpcy0+aW5zZXJ0X3N0YXRlKGluc2VydF9wb2ludCArIHNpemVvZihyZV9icmFjZSksIHN5bnRheF9lbGVtZW50X2p1bXAsIHNpemVvZihyZV9qdW1wKSkpOwotICAgICAgdGhpcy0+bV9wZGF0YS0+bV9kYXRhLmFsaWduKCk7Ci0gICAgICBqbXAtPmFsdC5pID0gdGhpcy0+bV9wZGF0YS0+bV9kYXRhLnNpemUoKSAtIHRoaXMtPmdldG9mZnNldChqbXApOwotICAgICAgcGIgPSBzdGF0aWNfY2FzdDxyZV9icmFjZSo+KHRoaXMtPmFwcGVuZF9zdGF0ZShzeW50YXhfZWxlbWVudF9lbmRtYXJrLCBzaXplb2YocmVfYnJhY2UpKSk7Ci0gICAgICBwYi0+aW5kZXggPSAtMzsKLSAgICAgIHBiLT5pY2FzZSA9IHRoaXMtPmZsYWdzKCkgJiByZWdiYXNlOjppY2FzZTsKLSAgIH0KLSAgIHJldHVybiB0cnVlOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLWJvb2wgYmFzaWNfcmVnZXhfcGFyc2VyPGNoYXJULCB0cmFpdHM+OjpwYXJzZV9yZXBlYXRfcmFuZ2UoYm9vbCBpc2Jhc2ljKQotewotICAgc3RhdGljIGNvbnN0IGNoYXIqIGluY29tcGxldGVfbWVzc2FnZSA9ICJNaXNzaW5nIH0gaW4gcXVhbnRpZmllZCByZXBldGl0aW9uLiI7Ci0gICAvLwotICAgLy8gcGFyc2UgYSByZXBlYXQtcmFuZ2U6Ci0gICAvLwotICAgc3RkOjpzaXplX3QgbWluLCBtYXg7Ci0gICBpbnQgdjsKLSAgIC8vIHNraXAgd2hpdGVzcGFjZToKLSAgIHdoaWxlKChtX3Bvc2l0aW9uICE9IG1fZW5kKSAmJiB0aGlzLT5tX3RyYWl0cy5pc2N0eXBlKCptX3Bvc2l0aW9uLCB0aGlzLT5tX21hc2tfc3BhY2UpKQotICAgICAgKyttX3Bvc2l0aW9uOwotICAgaWYodGhpcy0+bV9wb3NpdGlvbiA9PSB0aGlzLT5tX2VuZCkKLSAgIHsKLSAgICAgIGlmKHRoaXMtPmZsYWdzKCkgJiAocmVnYmFzZTo6bWFpbl9vcHRpb25fdHlwZSB8IHJlZ2Jhc2U6Om5vX3BlcmxfZXgpKQotICAgICAgewotICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2JyYWNlLCB0aGlzLT5tX3Bvc2l0aW9uIC0gdGhpcy0+bV9iYXNlLCBpbmNvbXBsZXRlX21lc3NhZ2UpOwotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgICAgLy8gVHJlYXQgdGhlIG9wZW5pbmcgJ3snIGFzIGEgbGl0ZXJhbCBjaGFyYWN0ZXIsIHJld2luZCB0byBzdGFydCBvZiBlcnJvcjoKLSAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgIHdoaWxlKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX2JyYWNlKSAtLW1fcG9zaXRpb247Ci0gICAgICByZXR1cm4gcGFyc2VfbGl0ZXJhbCgpOwotICAgfQotICAgLy8gZ2V0IG1pbjoKLSAgIHYgPSB0aGlzLT5tX3RyYWl0cy50b2kobV9wb3NpdGlvbiwgbV9lbmQsIDEwKTsKLSAgIC8vIHNraXAgd2hpdGVzcGFjZToKLSAgIGlmKHYgPCAwKQotICAgewotICAgICAgaWYodGhpcy0+ZmxhZ3MoKSAmIChyZWdiYXNlOjptYWluX29wdGlvbl90eXBlIHwgcmVnYmFzZTo6bm9fcGVybF9leCkpCi0gICAgICB7Ci0gICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfYnJhY2UsIHRoaXMtPm1fcG9zaXRpb24gLSB0aGlzLT5tX2Jhc2UsIGluY29tcGxldGVfbWVzc2FnZSk7Ci0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICAgICAvLyBUcmVhdCB0aGUgb3BlbmluZyAneycgYXMgYSBsaXRlcmFsIGNoYXJhY3RlciwgcmV3aW5kIHRvIHN0YXJ0IG9mIGVycm9yOgotICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fYnJhY2UpIC0tbV9wb3NpdGlvbjsKLSAgICAgIHJldHVybiBwYXJzZV9saXRlcmFsKCk7Ci0gICB9Ci0gICB3aGlsZSgobV9wb3NpdGlvbiAhPSBtX2VuZCkgJiYgdGhpcy0+bV90cmFpdHMuaXNjdHlwZSgqbV9wb3NpdGlvbiwgdGhpcy0+bV9tYXNrX3NwYWNlKSkKLSAgICAgICsrbV9wb3NpdGlvbjsKLSAgIGlmKHRoaXMtPm1fcG9zaXRpb24gPT0gdGhpcy0+bV9lbmQpCi0gICB7Ci0gICAgICBpZih0aGlzLT5mbGFncygpICYgKHJlZ2Jhc2U6Om1haW5fb3B0aW9uX3R5cGUgfCByZWdiYXNlOjpub19wZXJsX2V4KSkKLSAgICAgIHsKLSAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9icmFjZSwgdGhpcy0+bV9wb3NpdGlvbiAtIHRoaXMtPm1fYmFzZSwgaW5jb21wbGV0ZV9tZXNzYWdlKTsKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLSAgICAgIC8vIFRyZWF0IHRoZSBvcGVuaW5nICd7JyBhcyBhIGxpdGVyYWwgY2hhcmFjdGVyLCByZXdpbmQgdG8gc3RhcnQgb2YgZXJyb3I6Ci0gICAgICAtLW1fcG9zaXRpb247Ci0gICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9icmFjZSkgLS1tX3Bvc2l0aW9uOwotICAgICAgcmV0dXJuIHBhcnNlX2xpdGVyYWwoKTsKLSAgIH0KLSAgIG1pbiA9IHY7Ci0gICAvLyBzZWUgaWYgd2UgaGF2ZSBhIGNvbW1hOgotICAgaWYodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pID09IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2NvbW1hKQotICAgewotICAgICAgLy8gbW92ZSBvbiBhbmQgZXJyb3IgY2hlY2s6Ci0gICAgICArK21fcG9zaXRpb247Ci0gICAgICAvLyBza2lwIHdoaXRlc3BhY2U6Ci0gICAgICB3aGlsZSgobV9wb3NpdGlvbiAhPSBtX2VuZCkgJiYgdGhpcy0+bV90cmFpdHMuaXNjdHlwZSgqbV9wb3NpdGlvbiwgdGhpcy0+bV9tYXNrX3NwYWNlKSkKLSAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIGlmKHRoaXMtPm1fcG9zaXRpb24gPT0gdGhpcy0+bV9lbmQpCi0gICAgICB7Ci0gICAgICAgICBpZih0aGlzLT5mbGFncygpICYgKHJlZ2Jhc2U6Om1haW5fb3B0aW9uX3R5cGUgfCByZWdiYXNlOjpub19wZXJsX2V4KSkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9icmFjZSwgdGhpcy0+bV9wb3NpdGlvbiAtIHRoaXMtPm1fYmFzZSwgaW5jb21wbGV0ZV9tZXNzYWdlKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgIH0KLSAgICAgICAgIC8vIFRyZWF0IHRoZSBvcGVuaW5nICd7JyBhcyBhIGxpdGVyYWwgY2hhcmFjdGVyLCByZXdpbmQgdG8gc3RhcnQgb2YgZXJyb3I6Ci0gICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9icmFjZSkgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgcmV0dXJuIHBhcnNlX2xpdGVyYWwoKTsKLSAgICAgIH0KLSAgICAgIC8vIGdldCB0aGUgdmFsdWUgaWYgYW55OgotICAgICAgdiA9IHRoaXMtPm1fdHJhaXRzLnRvaShtX3Bvc2l0aW9uLCBtX2VuZCwgMTApOwotICAgICAgbWF4ID0gKHYgPj0gMCkgPyAoc3RkOjpzaXplX3QpdiA6IChzdGQ6Om51bWVyaWNfbGltaXRzPHN0ZDo6c2l6ZV90Pjo6bWF4KSgpOwotICAgfQotICAgZWxzZQotICAgewotICAgICAgLy8gbm8gY29tbWEsIG1heCA9IG1pbjoKLSAgICAgIG1heCA9IG1pbjsKLSAgIH0KLSAgIC8vIHNraXAgd2hpdGVzcGFjZToKLSAgIHdoaWxlKChtX3Bvc2l0aW9uICE9IG1fZW5kKSAmJiB0aGlzLT5tX3RyYWl0cy5pc2N0eXBlKCptX3Bvc2l0aW9uLCB0aGlzLT5tX21hc2tfc3BhY2UpKQotICAgICAgKyttX3Bvc2l0aW9uOwotICAgLy8gT0sgbm93IGNoZWNrIHRyYWlsaW5nIH06Ci0gICBpZih0aGlzLT5tX3Bvc2l0aW9uID09IHRoaXMtPm1fZW5kKQotICAgewotICAgICAgaWYodGhpcy0+ZmxhZ3MoKSAmIChyZWdiYXNlOjptYWluX29wdGlvbl90eXBlIHwgcmVnYmFzZTo6bm9fcGVybF9leCkpCi0gICAgICB7Ci0gICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfYnJhY2UsIHRoaXMtPm1fcG9zaXRpb24gLSB0aGlzLT5tX2Jhc2UsIGluY29tcGxldGVfbWVzc2FnZSk7Ci0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICAgICAvLyBUcmVhdCB0aGUgb3BlbmluZyAneycgYXMgYSBsaXRlcmFsIGNoYXJhY3RlciwgcmV3aW5kIHRvIHN0YXJ0IG9mIGVycm9yOgotICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fYnJhY2UpIC0tbV9wb3NpdGlvbjsKLSAgICAgIHJldHVybiBwYXJzZV9saXRlcmFsKCk7Ci0gICB9Ci0gICBpZihpc2Jhc2ljKQotICAgewotICAgICAgaWYodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pID09IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2VzY2FwZSkKLSAgICAgIHsKLSAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgIGlmKHRoaXMtPm1fcG9zaXRpb24gPT0gdGhpcy0+bV9lbmQpCi0gICAgICAgICB7Ci0gICAgICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfYnJhY2UsIHRoaXMtPm1fcG9zaXRpb24gLSB0aGlzLT5tX2Jhc2UsIGluY29tcGxldGVfbWVzc2FnZSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfYnJhY2UsIHRoaXMtPm1fcG9zaXRpb24gLSB0aGlzLT5tX2Jhc2UsIGluY29tcGxldGVfbWVzc2FnZSk7Ci0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICB9Ci0gICBpZih0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgPT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfY2xvc2VfYnJhY2UpCi0gICAgICArK21fcG9zaXRpb247Ci0gICBlbHNlCi0gICB7Ci0gICAgICAvLyBUcmVhdCB0aGUgb3BlbmluZyAneycgYXMgYSBsaXRlcmFsIGNoYXJhY3RlciwgcmV3aW5kIHRvIHN0YXJ0IG9mIGVycm9yOgotICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fYnJhY2UpIC0tbV9wb3NpdGlvbjsKLSAgICAgIHJldHVybiBwYXJzZV9saXRlcmFsKCk7Ci0gICB9Ci0gICAvLwotICAgLy8gZmluYWxseSBnbyBhbmQgYWRkIHRoZSByZXBlYXQsIHVubGVzcyBlcnJvcjoKLSAgIC8vCi0gICBpZihtaW4gPiBtYXgpCi0gICB7Ci0gICAgICAvLyBCYWNrdHJhY2sgdG8gZXJyb3IgbG9jYXRpb246Ci0gICAgICBtX3Bvc2l0aW9uIC09IDI7Ci0gICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5pc2N0eXBlKCptX3Bvc2l0aW9uLCB0aGlzLT5tX3dvcmRfbWFzaykpIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9iYWRicmFjZSwgbV9wb3NpdGlvbiAtIG1fYmFzZSk7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICB9Ci0gICByZXR1cm4gcGFyc2VfcmVwZWF0KG1pbiwgbWF4KTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci1ib29sIGJhc2ljX3JlZ2V4X3BhcnNlcjxjaGFyVCwgdHJhaXRzPjo6cGFyc2VfYWx0KCkKLXsKLSAgIC8vCi0gICAvLyBlcnJvciBjaGVjazogaWYgdGhlcmUgaGF2ZSBiZWVuIG5vIHByZXZpb3VzIHN0YXRlcywKLSAgIC8vIG9yIGlmIHRoZSBsYXN0IHN0YXRlIHdhcyBhICcoJyB0aGVuIGVycm9yOgotICAgLy8KLSAgIGlmKAotICAgICAgKCh0aGlzLT5tX2xhc3Rfc3RhdGUgPT0gMCkgfHwgKHRoaXMtPm1fbGFzdF9zdGF0ZS0+dHlwZSA9PSBzeW50YXhfZWxlbWVudF9zdGFydG1hcmspKQotICAgICAgJiYKLSAgICAgICEoCi0gICAgICAgICAoKHRoaXMtPmZsYWdzKCkgJiByZWdiYXNlOjptYWluX29wdGlvbl90eXBlKSA9PSByZWdiYXNlOjpwZXJsX3N5bnRheF9ncm91cCkKLSAgICAgICAgICAgJiYKLSAgICAgICAgICgodGhpcy0+ZmxhZ3MoKSAmIHJlZ2Jhc2U6Om5vX2VtcHR5X2V4cHJlc3Npb25zKSA9PSAwKQotICAgICAgICApCi0gICAgICApCi0gICB7Ci0gICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfZW1wdHksIHRoaXMtPm1fcG9zaXRpb24gLSB0aGlzLT5tX2Jhc2UsICJBIHJlZ3VsYXIgZXhwcmVzc2lvbiBjYW4gc3RhcnQgd2l0aCB0aGUgYWx0ZXJuYXRpb24gb3BlcmF0b3IgfC4iKTsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgIH0KLSAgIC8vCi0gICAvLyBSZXNldCBtYXJrIGNvdW50IGlmIHJlcXVpcmVkOgotICAgLy8KLSAgIGlmKG1fbWF4X21hcmsgPCBtX21hcmtfY291bnQpCi0gICAgICBtX21heF9tYXJrID0gbV9tYXJrX2NvdW50OwotICAgaWYobV9tYXJrX3Jlc2V0ID49IDApCi0gICAgICBtX21hcmtfY291bnQgPSBtX21hcmtfcmVzZXQ7Ci0KLSAgICsrbV9wb3NpdGlvbjsKLSAgIC8vCi0gICAvLyB3ZSBuZWVkIHRvIGFwcGVuZCBhIHRyYWlsaW5nIGp1bXA6IAotICAgLy8KLSAgIHJlX3N5bnRheF9iYXNlKiBwaiA9IHRoaXMtPmFwcGVuZF9zdGF0ZShyZV9kZXRhaWw6OnN5bnRheF9lbGVtZW50X2p1bXAsIHNpemVvZihyZV9qdW1wKSk7Ci0gICBzdGQ6OnB0cmRpZmZfdCBqdW1wX29mZnNldCA9IHRoaXMtPmdldG9mZnNldChwaik7Ci0gICAvLwotICAgLy8gbm93IGluc2VydCB0aGUgYWx0ZXJuYXRpdmU6Ci0gICAvLwotICAgcmVfYWx0KiBwYWx0ID0gc3RhdGljX2Nhc3Q8cmVfYWx0Kj4odGhpcy0+aW5zZXJ0X3N0YXRlKHRoaXMtPm1fYWx0X2luc2VydF9wb2ludCwgc3ludGF4X2VsZW1lbnRfYWx0LCByZV9hbHRfc2l6ZSkpOwotICAganVtcF9vZmZzZXQgKz0gcmVfYWx0X3NpemU7Ci0gICB0aGlzLT5tX3BkYXRhLT5tX2RhdGEuYWxpZ24oKTsKLSAgIHBhbHQtPmFsdC5pID0gdGhpcy0+bV9wZGF0YS0+bV9kYXRhLnNpemUoKSAtIHRoaXMtPmdldG9mZnNldChwYWx0KTsKLSAgIC8vCi0gICAvLyB1cGRhdGUgbV9hbHRfaW5zZXJ0X3BvaW50IHNvIHRoYXQgdGhlIG5leHQgYWx0ZXJuYXRlIGdldHMKLSAgIC8vIGluc2VydGVkIGF0IHRoZSBzdGFydCBvZiB0aGUgc2Vjb25kIG9mIHRoZSB0d28gd2UndmUganVzdCBjcmVhdGVkOgotICAgLy8KLSAgIHRoaXMtPm1fYWx0X2luc2VydF9wb2ludCA9IHRoaXMtPm1fcGRhdGEtPm1fZGF0YS5zaXplKCk7Ci0gICAvLwotICAgLy8gdGhlIHN0YXJ0IG9mIHRoaXMgYWx0ZXJuYXRpdmUgbXVzdCBoYXZlIGEgY2FzZSBjaGFuZ2VzIHN0YXRlCi0gICAvLyBpZiB0aGUgY3VycmVudCBibG9jayBoYXMgbWVzc2VkIGFyb3VuZCB3aXRoIGNhc2UgY2hhbmdlczoKLSAgIC8vCi0gICBpZihtX2hhc19jYXNlX2NoYW5nZSkKLSAgIHsKLSAgICAgIHN0YXRpY19jYXN0PHJlX2Nhc2UqPigKLSAgICAgICAgIHRoaXMtPmFwcGVuZF9zdGF0ZShzeW50YXhfZWxlbWVudF90b2dnbGVfY2FzZSwgc2l6ZW9mKHJlX2Nhc2UpKQotICAgICAgICAgKS0+aWNhc2UgPSB0aGlzLT5tX2ljYXNlOwotICAgfQotICAgLy8KLSAgIC8vIHB1c2ggdGhlIGFsdGVybmF0aXZlIG9udG8gb3VyIHN0YWNrLCBhIHJlY3Vyc2l2ZQotICAgLy8gaW1wbGVtZW50YXRpb24gaGVyZSBpcyBlYXNpZXIgdG8gdW5kZXJzdGFuZCAoYW5kIGZhc3RlcgotICAgLy8gYXMgaXQgaGFwcGVucyksIGJ1dCBjYXVzZXMgYWxsIGtpbmRzIG9mIHN0YWNrIG92ZXJmbG93IHByb2JsZW1zCi0gICAvLyBvbiBwcm9ncmFtcyB3aXRoIHNtYWxsIHN0YWNrcyAoQ09NKykuCi0gICAvLwotICAgbV9hbHRfanVtcHMucHVzaF9iYWNrKGp1bXBfb2Zmc2V0KTsKLSAgIHJldHVybiB0cnVlOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLWJvb2wgYmFzaWNfcmVnZXhfcGFyc2VyPGNoYXJULCB0cmFpdHM+OjpwYXJzZV9zZXQoKQotewotICAgc3RhdGljIGNvbnN0IGNoYXIqIGluY29tcGxldGVfbWVzc2FnZSA9ICJDaGFyYWN0ZXIgc2V0IGRlY2xhcmF0aW9uIHN0YXJ0aW5nIHdpdGggWyB0ZXJtaW5hdGVkIHByZW1hdHVyZWx5IC0gZWl0aGVyIG5vIF0gd2FzIGZvdW5kIG9yIHRoZSBzZXQgaGFkIG5vIGNvbnRlbnQuIjsKLSAgICsrbV9wb3NpdGlvbjsKLSAgIGlmKG1fcG9zaXRpb24gPT0gbV9lbmQpCi0gICB7Ci0gICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfYnJhY2ssIG1fcG9zaXRpb24gLSBtX2Jhc2UsIGluY29tcGxldGVfbWVzc2FnZSk7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICB9Ci0gICBiYXNpY19jaGFyX3NldDxjaGFyVCwgdHJhaXRzPiBjaGFyX3NldDsKLQotICAgY29uc3QgY2hhclQqIGJhc2UgPSBtX3Bvc2l0aW9uOyAgLy8gd2hlcmUgdGhlICdbJyB3YXMKLSAgIGNvbnN0IGNoYXJUKiBpdGVtX2Jhc2UgPSBtX3Bvc2l0aW9uOyAgLy8gd2hlcmUgdGhlICdbJyBvciAnXicgd2FzCi0KLSAgIHdoaWxlKG1fcG9zaXRpb24gIT0gbV9lbmQpCi0gICB7Ci0gICAgICBzd2l0Y2godGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pKQotICAgICAgewotICAgICAgY2FzZSByZWdleF9jb25zdGFudHM6OnN5bnRheF9jYXJldDoKLSAgICAgICAgIGlmKG1fcG9zaXRpb24gPT0gYmFzZSkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIGNoYXJfc2V0Lm5lZ2F0ZSgpOwotICAgICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgICAgaXRlbV9iYXNlID0gbV9wb3NpdGlvbjsKLSAgICAgICAgIH0KLSAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHBhcnNlX3NldF9saXRlcmFsKGNoYXJfc2V0KTsKLSAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSByZWdleF9jb25zdGFudHM6OnN5bnRheF9jbG9zZV9zZXQ6Ci0gICAgICAgICBpZihtX3Bvc2l0aW9uID09IGl0ZW1fYmFzZSkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIHBhcnNlX3NldF9saXRlcmFsKGNoYXJfc2V0KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgfQotICAgICAgICAgZWxzZQotICAgICAgICAgewotICAgICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgICAgaWYoMCA9PSB0aGlzLT5hcHBlbmRfc2V0KGNoYXJfc2V0KSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9jdHlwZSwgbV9wb3NpdGlvbiAtIG1fYmFzZSk7Ci0gICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICB9Ci0gICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9zZXQ6Ci0gICAgICAgICBpZihwYXJzZV9pbm5lcl9zZXQoY2hhcl9zZXQpKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfZXNjYXBlOgotICAgICAgICAgewotICAgICAgICAgICAgLy8gCi0gICAgICAgICAgICAvLyBsb29rIGFoZWFkIGFuZCBzZWUgaWYgdGhpcyBpcyBhIGNoYXJhY3RlciBjbGFzcyBzaG9ydGN1dAotICAgICAgICAgICAgLy8gXGQgXHcgXHMgZXRjLi4uCi0gICAgICAgICAgICAvLwotICAgICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgICAgaWYodGhpcy0+bV90cmFpdHMuZXNjYXBlX3N5bnRheF90eXBlKCptX3Bvc2l0aW9uKQotICAgICAgICAgICAgICAgPT0gcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfdHlwZV9jbGFzcykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIGNoYXJfY2xhc3NfdHlwZSBtID0gdGhpcy0+bV90cmFpdHMubG9va3VwX2NsYXNzbmFtZShtX3Bvc2l0aW9uLCBtX3Bvc2l0aW9uKzEpOwotICAgICAgICAgICAgICAgaWYobSAhPSAwKQotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgY2hhcl9zZXQuYWRkX2NsYXNzKG0pOwotICAgICAgICAgICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmKHRoaXMtPm1fdHJhaXRzLmVzY2FwZV9zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikKLSAgICAgICAgICAgICAgID09IHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3R5cGVfbm90X2NsYXNzKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgLy8gbmVnYXRlZCBjaGFyYWN0ZXIgY2xhc3M6Ci0gICAgICAgICAgICAgICBjaGFyX2NsYXNzX3R5cGUgbSA9IHRoaXMtPm1fdHJhaXRzLmxvb2t1cF9jbGFzc25hbWUobV9wb3NpdGlvbiwgbV9wb3NpdGlvbisxKTsKLSAgICAgICAgICAgICAgIGlmKG0gIT0gMCkKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgIGNoYXJfc2V0LmFkZF9uZWdhdGVkX2NsYXNzKG0pOwotICAgICAgICAgICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAvLyBub3QgYSBjaGFyYWN0ZXIgY2xhc3MsIGp1c3QgYSByZWd1bGFyIGVzY2FwZToKLSAgICAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIHBhcnNlX3NldF9saXRlcmFsKGNoYXJfc2V0KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgfQotICAgICAgZGVmYXVsdDoKLSAgICAgICAgIHBhcnNlX3NldF9saXRlcmFsKGNoYXJfc2V0KTsKLSAgICAgICAgIGJyZWFrOwotICAgICAgfQotICAgfQotICAgcmV0dXJuIG1fcG9zaXRpb24gIT0gbV9lbmQ7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotYm9vbCBiYXNpY19yZWdleF9wYXJzZXI8Y2hhclQsIHRyYWl0cz46OnBhcnNlX2lubmVyX3NldChiYXNpY19jaGFyX3NldDxjaGFyVCwgdHJhaXRzPiYgY2hhcl9zZXQpCi17Ci0gICBzdGF0aWMgY29uc3QgY2hhciogaW5jb21wbGV0ZV9tZXNzYWdlID0gIkNoYXJhY3RlciBjbGFzcyBkZWNsYXJhdGlvbiBzdGFydGluZyB3aXRoIFsgdGVybWluYXRlZCBwcmVtYXR1cmVseSAtIGVpdGhlciBubyBdIHdhcyBmb3VuZCBvciB0aGUgc2V0IGhhZCBubyBjb250ZW50LiI7Ci0gICAvLwotICAgLy8gd2UgaGF2ZSBlaXRoZXIgYSBjaGFyYWN0ZXIgY2xhc3MgWzpuYW1lOl0KLSAgIC8vIGEgY29sbGF0aW5nIGVsZW1lbnQgWy5uYW1lLl0KLSAgIC8vIG9yIGFuIGVxdWl2YWxlbmNlIGNsYXNzIFs9bmFtZT1dCi0gICAvLwotICAgaWYobV9lbmQgPT0gKyttX3Bvc2l0aW9uKQotICAgewotICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2JyYWNrLCBtX3Bvc2l0aW9uIC0gbV9iYXNlLCBpbmNvbXBsZXRlX21lc3NhZ2UpOwotICAgICAgcmV0dXJuIGZhbHNlOwotICAgfQotICAgc3dpdGNoKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSkKLSAgIHsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfZG90OgotICAgICAgLy8KLSAgICAgIC8vIGEgY29sbGF0aW5nIGVsZW1lbnQgaXMgdHJlYXRlZCBhcyBhIGxpdGVyYWw6Ci0gICAgICAvLwotICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgcGFyc2Vfc2V0X2xpdGVyYWwoY2hhcl9zZXQpOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2NvbG9uOgotICAgICAgewotICAgICAgLy8gY2hlY2sgdGhhdCBjaGFyYWN0ZXIgY2xhc3NlcyBhcmUgYWN0dWFsbHkgZW5hYmxlZDoKLSAgICAgIGlmKCh0aGlzLT5mbGFncygpICYgKHJlZ2Jhc2U6Om1haW5fb3B0aW9uX3R5cGUgfCByZWdiYXNlOjpub19jaGFyX2NsYXNzZXMpKSAKLSAgICAgICAgID09IChyZWdiYXNlOjpiYXNpY19zeW50YXhfZ3JvdXAgIHwgcmVnYmFzZTo6bm9fY2hhcl9jbGFzc2VzKSkKLSAgICAgIHsKLSAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgIHBhcnNlX3NldF9saXRlcmFsKGNoYXJfc2V0KTsKLSAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgfQotICAgICAgLy8gc2tpcCB0aGUgJzonCi0gICAgICBpZihtX2VuZCA9PSArK21fcG9zaXRpb24pCi0gICAgICB7Ci0gICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfYnJhY2ssIG1fcG9zaXRpb24gLSBtX2Jhc2UsIGluY29tcGxldGVfbWVzc2FnZSk7Ci0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICAgICBjb25zdCBjaGFyVCogbmFtZV9maXJzdCA9IG1fcG9zaXRpb247Ci0gICAgICAvLyBza2lwIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIHRoZW4gZmluZCB0aGUgbWF0Y2hpbmcgJzpdJwotICAgICAgaWYobV9lbmQgPT0gKyttX3Bvc2l0aW9uKQotICAgICAgewotICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2JyYWNrLCBtX3Bvc2l0aW9uIC0gbV9iYXNlLCBpbmNvbXBsZXRlX21lc3NhZ2UpOwotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgICAgd2hpbGUoKG1fcG9zaXRpb24gIT0gbV9lbmQpIAotICAgICAgICAgJiYgKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9jb2xvbikpIAotICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgY29uc3QgY2hhclQqIG5hbWVfbGFzdCA9IG1fcG9zaXRpb247Ci0gICAgICBpZihtX2VuZCA9PSBtX3Bvc2l0aW9uKQotICAgICAgewotICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2JyYWNrLCBtX3Bvc2l0aW9uIC0gbV9iYXNlLCBpbmNvbXBsZXRlX21lc3NhZ2UpOwotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgICAgaWYoKG1fZW5kID09ICsrbV9wb3NpdGlvbikgCi0gICAgICAgICB8fCAodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2Nsb3NlX3NldCkpCi0gICAgICB7Ci0gICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfYnJhY2ssIG1fcG9zaXRpb24gLSBtX2Jhc2UsIGluY29tcGxldGVfbWVzc2FnZSk7Ci0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICAgICAvLwotICAgICAgLy8gY2hlY2sgZm9yIG5lZ2F0ZWQgY2xhc3M6Ci0gICAgICAvLwotICAgICAgYm9vbCBuZWdhdGVkID0gZmFsc2U7Ci0gICAgICBpZih0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbmFtZV9maXJzdCkgPT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfY2FyZXQpCi0gICAgICB7Ci0gICAgICAgICArK25hbWVfZmlyc3Q7Ci0gICAgICAgICBuZWdhdGVkID0gdHJ1ZTsKLSAgICAgIH0KLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzOjpjaGFyX2NsYXNzX3R5cGUgbV90eXBlOwotICAgICAgbV90eXBlIG0gPSB0aGlzLT5tX3RyYWl0cy5sb29rdXBfY2xhc3NuYW1lKG5hbWVfZmlyc3QsIG5hbWVfbGFzdCk7Ci0gICAgICBpZihtID09IDApCi0gICAgICB7Ci0gICAgICAgICBpZihjaGFyX3NldC5lbXB0eSgpICYmIChuYW1lX2xhc3QgLSBuYW1lX2ZpcnN0ID09IDEpKQotICAgICAgICAgewotICAgICAgICAgICAgLy8gbWF5YmUgYSBzcGVjaWFsIGNhc2U6Ci0gICAgICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICAgICBpZiggKG1fcG9zaXRpb24gIT0gbV9lbmQpIAotICAgICAgICAgICAgICAgJiYgKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAKLSAgICAgICAgICAgICAgICAgID09IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2Nsb3NlX3NldCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICBpZih0aGlzLT5tX3RyYWl0cy5lc2NhcGVfc3ludGF4X3R5cGUoKm5hbWVfZmlyc3QpIAotICAgICAgICAgICAgICAgICAgPT0gcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfdHlwZV9sZWZ0X3dvcmQpCi0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICAgICAgICAgICB0aGlzLT5hcHBlbmRfc3RhdGUoc3ludGF4X2VsZW1lbnRfd29yZF9zdGFydCk7Ci0gICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICBpZih0aGlzLT5tX3RyYWl0cy5lc2NhcGVfc3ludGF4X3R5cGUoKm5hbWVfZmlyc3QpIAotICAgICAgICAgICAgICAgICAgPT0gcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfdHlwZV9yaWdodF93b3JkKQotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgICAgICAgICAgdGhpcy0+YXBwZW5kX3N0YXRlKHN5bnRheF9lbGVtZW50X3dvcmRfZW5kKTsKLSAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgIH0KLSAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9jdHlwZSwgbmFtZV9maXJzdCAtIG1fYmFzZSk7Ci0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICAgICBpZihuZWdhdGVkID09IGZhbHNlKQotICAgICAgICAgY2hhcl9zZXQuYWRkX2NsYXNzKG0pOwotICAgICAgZWxzZQotICAgICAgICAgY2hhcl9zZXQuYWRkX25lZ2F0ZWRfY2xhc3MobSk7Ci0gICAgICArK21fcG9zaXRpb247Ci0gICAgICBicmVhazsKLSAgIH0KLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfZXF1YWw6Ci0gICAgICB7Ci0gICAgICAvLyBza2lwIHRoZSAnPScKLSAgICAgIGlmKG1fZW5kID09ICsrbV9wb3NpdGlvbikKLSAgICAgIHsKLSAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9icmFjaywgbV9wb3NpdGlvbiAtIG1fYmFzZSwgaW5jb21wbGV0ZV9tZXNzYWdlKTsKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLSAgICAgIGNvbnN0IGNoYXJUKiBuYW1lX2ZpcnN0ID0gbV9wb3NpdGlvbjsKLSAgICAgIC8vIHNraXAgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgdGhlbiBmaW5kIHRoZSBtYXRjaGluZyAnPV0nCi0gICAgICBpZihtX2VuZCA9PSArK21fcG9zaXRpb24pCi0gICAgICB7Ci0gICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfYnJhY2ssIG1fcG9zaXRpb24gLSBtX2Jhc2UsIGluY29tcGxldGVfbWVzc2FnZSk7Ci0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICAgICB3aGlsZSgobV9wb3NpdGlvbiAhPSBtX2VuZCkgCi0gICAgICAgICAmJiAodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2VxdWFsKSkgCi0gICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICBjb25zdCBjaGFyVCogbmFtZV9sYXN0ID0gbV9wb3NpdGlvbjsKLSAgICAgIGlmKG1fZW5kID09IG1fcG9zaXRpb24pCi0gICAgICB7Ci0gICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfYnJhY2ssIG1fcG9zaXRpb24gLSBtX2Jhc2UsIGluY29tcGxldGVfbWVzc2FnZSk7Ci0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICAgICBpZigobV9lbmQgPT0gKyttX3Bvc2l0aW9uKSAKLSAgICAgICAgIHx8ICh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfY2xvc2Vfc2V0KSkKLSAgICAgIHsKLSAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9icmFjaywgbV9wb3NpdGlvbiAtIG1fYmFzZSwgaW5jb21wbGV0ZV9tZXNzYWdlKTsKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLSAgICAgIHN0cmluZ190eXBlIG0gPSB0aGlzLT5tX3RyYWl0cy5sb29rdXBfY29sbGF0ZW5hbWUobmFtZV9maXJzdCwgbmFtZV9sYXN0KTsKLSAgICAgIGlmKCgwID09IG0uc2l6ZSgpKSB8fCAobS5zaXplKCkgPiAyKSkKLSAgICAgIHsKLSAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9jb2xsYXRlLCBuYW1lX2ZpcnN0IC0gbV9iYXNlKTsKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLSAgICAgIGRpZ3JhcGg8Y2hhclQ+IGQ7Ci0gICAgICBkLmZpcnN0ID0gbVswXTsKLSAgICAgIGlmKG0uc2l6ZSgpID4gMSkKLSAgICAgICAgIGQuc2Vjb25kID0gbVsxXTsKLSAgICAgIGVsc2UKLSAgICAgICAgIGQuc2Vjb25kID0gMDsKLSAgICAgIGNoYXJfc2V0LmFkZF9lcXVpdmFsZW50KGQpOwotICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgYnJlYWs7Ci0gICB9Ci0gICBkZWZhdWx0OgotICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgcGFyc2Vfc2V0X2xpdGVyYWwoY2hhcl9zZXQpOwotICAgICAgYnJlYWs7Ci0gICB9Ci0gICByZXR1cm4gdHJ1ZTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci12b2lkIGJhc2ljX3JlZ2V4X3BhcnNlcjxjaGFyVCwgdHJhaXRzPjo6cGFyc2Vfc2V0X2xpdGVyYWwoYmFzaWNfY2hhcl9zZXQ8Y2hhclQsIHRyYWl0cz4mIGNoYXJfc2V0KQotewotICAgZGlncmFwaDxjaGFyVD4gc3RhcnRfcmFuZ2UoZ2V0X25leHRfc2V0X2xpdGVyYWwoY2hhcl9zZXQpKTsKLSAgIGlmKG1fZW5kID09IG1fcG9zaXRpb24pCi0gICB7Ci0gICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfYnJhY2ssIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgcmV0dXJuOwotICAgfQotICAgaWYodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pID09IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2Rhc2gpCi0gICB7Ci0gICAgICAvLyB3ZSBoYXZlIGEgcmFuZ2U6Ci0gICAgICBpZihtX2VuZCA9PSArK21fcG9zaXRpb24pCi0gICAgICB7Ci0gICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfYnJhY2ssIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgICAgcmV0dXJuOwotICAgICAgfQotICAgICAgaWYodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2Nsb3NlX3NldCkKLSAgICAgIHsKLSAgICAgICAgIGRpZ3JhcGg8Y2hhclQ+IGVuZF9yYW5nZSA9IGdldF9uZXh0X3NldF9saXRlcmFsKGNoYXJfc2V0KTsKLSAgICAgICAgIGNoYXJfc2V0LmFkZF9yYW5nZShzdGFydF9yYW5nZSwgZW5kX3JhbmdlKTsKLSAgICAgICAgIGlmKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSA9PSByZWdleF9jb25zdGFudHM6OnN5bnRheF9kYXNoKQotICAgICAgICAgewotICAgICAgICAgICAgaWYobV9lbmQgPT0gKyttX3Bvc2l0aW9uKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2JyYWNrLCBtX3Bvc2l0aW9uIC0gbV9iYXNlKTsKLSAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSA9PSByZWdleF9jb25zdGFudHM6OnN5bnRheF9jbG9zZV9zZXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAvLyB0cmFpbGluZyAtIDoKLSAgICAgICAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9yYW5nZSwgbV9wb3NpdGlvbiAtIG1fYmFzZSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICB9Ci0gICAgICAgICByZXR1cm47Ci0gICAgICB9Ci0gICAgICAtLW1fcG9zaXRpb247Ci0gICB9Ci0gICBjaGFyX3NldC5hZGRfc2luZ2xlKHN0YXJ0X3JhbmdlKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci1kaWdyYXBoPGNoYXJUPiBiYXNpY19yZWdleF9wYXJzZXI8Y2hhclQsIHRyYWl0cz46OmdldF9uZXh0X3NldF9saXRlcmFsKGJhc2ljX2NoYXJfc2V0PGNoYXJULCB0cmFpdHM+JiBjaGFyX3NldCkKLXsKLSAgIGRpZ3JhcGg8Y2hhclQ+IHJlc3VsdDsKLSAgIHN3aXRjaCh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikpCi0gICB7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2Rhc2g6Ci0gICAgICBpZighY2hhcl9zZXQuZW1wdHkoKSkKLSAgICAgIHsKLSAgICAgICAgIC8vIHNlZSBpZiB3ZSBhcmUgYXQgdGhlIGVuZCBvZiB0aGUgc2V0OgotICAgICAgICAgaWYoKCsrbV9wb3NpdGlvbiA9PSBtX2VuZCkgfHwgKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9jbG9zZV9zZXQpKQotICAgICAgICAgewotICAgICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX3JhbmdlLCBtX3Bvc2l0aW9uIC0gbV9iYXNlKTsKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgICB9Ci0gICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICB9Ci0gICAgICByZXN1bHQuZmlyc3QgPSAqbV9wb3NpdGlvbisrOwotICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfZXNjYXBlOgotICAgICAgLy8gY2hlY2sgdG8gc2VlIGlmIGVzY2FwZXMgYXJlIHN1cHBvcnRlZCBmaXJzdDoKLSAgICAgIGlmKHRoaXMtPmZsYWdzKCkgJiByZWdleF9jb25zdGFudHM6Om5vX2VzY2FwZV9pbl9saXN0cykKLSAgICAgIHsKLSAgICAgICAgIHJlc3VsdCA9ICptX3Bvc2l0aW9uKys7Ci0gICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIHJlc3VsdCA9IHVuZXNjYXBlX2NoYXJhY3RlcigpOwotICAgICAgYnJlYWs7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fc2V0OgotICAgewotICAgICAgaWYobV9lbmQgPT0gKyttX3Bvc2l0aW9uKQotICAgICAgewotICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2NvbGxhdGUsIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgIH0KLSAgICAgIGlmKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9kb3QpCi0gICAgICB7Ci0gICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICByZXN1bHQuZmlyc3QgPSAqbV9wb3NpdGlvbjsKLSAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICB9Ci0gICAgICBpZihtX2VuZCA9PSArK21fcG9zaXRpb24pCi0gICAgICB7Ci0gICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfY29sbGF0ZSwgbV9wb3NpdGlvbiAtIG1fYmFzZSk7Ci0gICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgfQotICAgICAgY29uc3QgY2hhclQqIG5hbWVfZmlyc3QgPSBtX3Bvc2l0aW9uOwotICAgICAgLy8gc2tpcCBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCB0aGVuIGZpbmQgdGhlIG1hdGNoaW5nICc6XScKLSAgICAgIGlmKG1fZW5kID09ICsrbV9wb3NpdGlvbikKLSAgICAgIHsKLSAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9jb2xsYXRlLCBuYW1lX2ZpcnN0IC0gbV9iYXNlKTsKLSAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICB9Ci0gICAgICB3aGlsZSgobV9wb3NpdGlvbiAhPSBtX2VuZCkgCi0gICAgICAgICAmJiAodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2RvdCkpIAotICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgY29uc3QgY2hhclQqIG5hbWVfbGFzdCA9IG1fcG9zaXRpb247Ci0gICAgICBpZihtX2VuZCA9PSBtX3Bvc2l0aW9uKQotICAgICAgewotICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2NvbGxhdGUsIG5hbWVfZmlyc3QgLSBtX2Jhc2UpOwotICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgIH0KLSAgICAgIGlmKChtX2VuZCA9PSArK21fcG9zaXRpb24pIAotICAgICAgICAgfHwgKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9jbG9zZV9zZXQpKQotICAgICAgewotICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2NvbGxhdGUsIG5hbWVfZmlyc3QgLSBtX2Jhc2UpOwotICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgIH0KLSAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIHN0cmluZ190eXBlIHMgPSB0aGlzLT5tX3RyYWl0cy5sb29rdXBfY29sbGF0ZW5hbWUobmFtZV9maXJzdCwgbmFtZV9sYXN0KTsKLSAgICAgIGlmKHMuZW1wdHkoKSB8fCAocy5zaXplKCkgPiAyKSkKLSAgICAgIHsKLSAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9jb2xsYXRlLCBuYW1lX2ZpcnN0IC0gbV9iYXNlKTsKLSAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICB9Ci0gICAgICByZXN1bHQuZmlyc3QgPSBzWzBdOwotICAgICAgaWYocy5zaXplKCkgPiAxKQotICAgICAgICAgcmVzdWx0LnNlY29uZCA9IHNbMV07Ci0gICAgICBlbHNlCi0gICAgICAgICByZXN1bHQuc2Vjb25kID0gMDsKLSAgICAgIHJldHVybiByZXN1bHQ7Ci0gICB9Ci0gICBkZWZhdWx0OgotICAgICAgcmVzdWx0ID0gKm1fcG9zaXRpb24rKzsKLSAgIH0KLSAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8vCi0vLyBkb2VzIGEgdmFsdWUgZml0IGluIHRoZSBzcGVjaWZpZWQgY2hhclQgdHlwZT8KLS8vCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci1ib29sIHZhbGlkX3ZhbHVlKGNoYXJULCBpbnQgdiwgY29uc3QgbXBsOjp0cnVlXyYpCi17Ci0gICByZXR1cm4gKHYgPj4gKHNpemVvZihjaGFyVCkgKiBDSEFSX0JJVCkpID09IDA7Ci19Ci10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci1ib29sIHZhbGlkX3ZhbHVlKGNoYXJULCBpbnQsIGNvbnN0IG1wbDo6ZmFsc2VfJikKLXsKLSAgIHJldHVybiB0cnVlOyAvLyB2IHdpbGwgYWxzd2F5cyBmaXQgaW4gYSBjaGFyVAotfQotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotYm9vbCB2YWxpZF92YWx1ZShjaGFyVCBjLCBpbnQgdikKLXsKLSAgIHJldHVybiB2YWxpZF92YWx1ZShjLCB2LCBtcGw6OmJvb2xfPChzaXplb2YoY2hhclQpIDwgc2l6ZW9mKGludCkpPigpKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci1jaGFyVCBiYXNpY19yZWdleF9wYXJzZXI8Y2hhclQsIHRyYWl0cz46OnVuZXNjYXBlX2NoYXJhY3RlcigpCi17Ci0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MTI3KQotI2VuZGlmCi0gICBjaGFyVCByZXN1bHQoMCk7Ci0gICBpZihtX3Bvc2l0aW9uID09IG1fZW5kKQotICAgewotICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2VzY2FwZSwgbV9wb3NpdGlvbiAtIG1fYmFzZSwgIkVzY2FwZSBzZXF1ZW5jZSB0ZXJtaW5hdGVkIHByZW1hdHVyZWx5LiIpOwotICAgICAgcmV0dXJuIGZhbHNlOwotICAgfQotICAgc3dpdGNoKHRoaXMtPm1fdHJhaXRzLmVzY2FwZV9zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikpCi0gICB7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3R5cGVfY29udHJvbF9hOgotICAgICAgcmVzdWx0ID0gY2hhclQoJ1xhJyk7Ci0gICAgICBicmVhazsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfdHlwZV9lOgotICAgICAgcmVzdWx0ID0gY2hhclQoMjcpOwotICAgICAgYnJlYWs7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3R5cGVfY29udHJvbF9mOgotICAgICAgcmVzdWx0ID0gY2hhclQoJ1xmJyk7Ci0gICAgICBicmVhazsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfdHlwZV9jb250cm9sX246Ci0gICAgICByZXN1bHQgPSBjaGFyVCgnXG4nKTsKLSAgICAgIGJyZWFrOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OmVzY2FwZV90eXBlX2NvbnRyb2xfcjoKLSAgICAgIHJlc3VsdCA9IGNoYXJUKCdccicpOwotICAgICAgYnJlYWs7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3R5cGVfY29udHJvbF90OgotICAgICAgcmVzdWx0ID0gY2hhclQoJ1x0Jyk7Ci0gICAgICBicmVhazsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfdHlwZV9jb250cm9sX3Y6Ci0gICAgICByZXN1bHQgPSBjaGFyVCgnXHYnKTsKLSAgICAgIGJyZWFrOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OmVzY2FwZV90eXBlX3dvcmRfYXNzZXJ0OgotICAgICAgcmVzdWx0ID0gY2hhclQoJ1xiJyk7Ci0gICAgICBicmVhazsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfdHlwZV9hc2NpaV9jb250cm9sOgotICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgaWYobV9wb3NpdGlvbiA9PSBtX2VuZCkKLSAgICAgIHsKLSAgICAgICAgIC8vIFJld2luZCB0byBzdGFydCBvZiBlc2NhcGU6Ci0gICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfZXNjYXBlKSAtLW1fcG9zaXRpb247Ci0gICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfZXNjYXBlLCBtX3Bvc2l0aW9uIC0gbV9iYXNlLCAiQVNDSUkgZXNjYXBlIHNlcXVlbmNlIHRlcm1pbmF0ZWQgcHJlbWF0dXJlbHkuIik7Ci0gICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgfQotICAgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8Y2hhclQ+KCptX3Bvc2l0aW9uICUgMzIpOwotICAgICAgYnJlYWs7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3R5cGVfaGV4OgotICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgaWYobV9wb3NpdGlvbiA9PSBtX2VuZCkKLSAgICAgIHsKLSAgICAgICAgIC8vIFJld2luZCB0byBzdGFydCBvZiBlc2NhcGU6Ci0gICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfZXNjYXBlKSAtLW1fcG9zaXRpb247Ci0gICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfZXNjYXBlLCBtX3Bvc2l0aW9uIC0gbV9iYXNlLCAiSGV4YWRlY2ltYWwgZXNjYXBlIHNlcXVlbmNlIHRlcm1pbmF0ZWQgcHJlbWF0dXJlbHkuIik7Ci0gICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgfQotICAgICAgLy8gbWF5YmUgaGF2ZSBceHtkZGR9Ci0gICAgICBpZih0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgPT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9icmFjZSkKLSAgICAgIHsKLSAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgIGlmKG1fcG9zaXRpb24gPT0gbV9lbmQpCi0gICAgICAgICB7Ci0gICAgICAgICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgZXNjYXBlOgotICAgICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2VzY2FwZSkgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2VzY2FwZSwgbV9wb3NpdGlvbiAtIG1fYmFzZSwgIk1pc3NpbmcgfSBpbiBoZXhhZGVjaW1hbCBlc2NhcGUgc2VxdWVuY2UuIik7Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICAgfQotICAgICAgICAgaW50IGkgPSB0aGlzLT5tX3RyYWl0cy50b2kobV9wb3NpdGlvbiwgbV9lbmQsIDE2KTsKLSAgICAgICAgIGlmKChtX3Bvc2l0aW9uID09IG1fZW5kKQotICAgICAgICAgICAgfHwgKGkgPCAwKQotICAgICAgICAgICAgfHwgKChzdGQ6Om51bWVyaWNfbGltaXRzPGNoYXJUPjo6aXNfc3BlY2lhbGl6ZWQpICYmIChpID4gKGludCkoc3RkOjpudW1lcmljX2xpbWl0czxjaGFyVD46Om1heCkoKSkpCi0gICAgICAgICAgICB8fCAodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2Nsb3NlX2JyYWNlKSkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIFJld2luZCB0byBzdGFydCBvZiBlc2NhcGU6Ci0gICAgICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfZXNjYXBlKSAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfYmFkYnJhY2UsIG1fcG9zaXRpb24gLSBtX2Jhc2UsICJIZXhhZGVjaW1hbCBlc2NhcGUgc2VxdWVuY2Ugd2FzIGludmFsaWQuIik7Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICAgfQotICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgcmVzdWx0ID0gY2hhclQoaSk7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgICBzdGQ6OnB0cmRpZmZfdCBsZW4gPSAoc3RkOjptaW4pKHN0YXRpY19jYXN0PHN0ZDo6cHRyZGlmZl90PigyKSwgc3RhdGljX2Nhc3Q8c3RkOjpwdHJkaWZmX3Q+KG1fZW5kIC0gbV9wb3NpdGlvbikpOwotICAgICAgICAgaW50IGkgPSB0aGlzLT5tX3RyYWl0cy50b2kobV9wb3NpdGlvbiwgbV9wb3NpdGlvbiArIGxlbiwgMTYpOwotICAgICAgICAgaWYoKGkgPCAwKQotICAgICAgICAgICAgfHwgIXZhbGlkX3ZhbHVlKGNoYXJUKDApLCBpKSkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIFJld2luZCB0byBzdGFydCBvZiBlc2NhcGU6Ci0gICAgICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfZXNjYXBlKSAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfZXNjYXBlLCBtX3Bvc2l0aW9uIC0gbV9iYXNlLCAiRXNjYXBlIHNlcXVlbmNlIGRpZCBub3QgZW5jb2RlIGEgdmFsaWQgY2hhcmFjdGVyLiIpOwotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAgICAgIH0KLSAgICAgICAgIHJlc3VsdCA9IGNoYXJUKGkpOwotICAgICAgfQotICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfZGlnaXQ6Ci0gICAgICB7Ci0gICAgICAvLyBhbiBvY3RhbCBlc2NhcGUgc2VxdWVuY2UsIHRoZSBmaXJzdCBjaGFyYWN0ZXIgbXVzdCBiZSBhIHplcm8KLSAgICAgIC8vIGZvbGxvd2VkIGJ5IHVwIHRvIDMgb2N0YWwgZGlnaXRzOgotICAgICAgc3RkOjpwdHJkaWZmX3QgbGVuID0gKHN0ZDo6bWluKSg6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmRpc3RhbmNlKG1fcG9zaXRpb24sIG1fZW5kKSwgc3RhdGljX2Nhc3Q8c3RkOjpwdHJkaWZmX3Q+KDQpKTsKLSAgICAgIGNvbnN0IGNoYXJUKiBicCA9IG1fcG9zaXRpb247Ci0gICAgICBpbnQgdmFsID0gdGhpcy0+bV90cmFpdHMudG9pKGJwLCBicCArIDEsIDgpOwotICAgICAgaWYodmFsICE9IDApCi0gICAgICB7Ci0gICAgICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgZXNjYXBlOgotICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2VzY2FwZSkgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgLy8gT29wcyBub3QgYW4gb2N0YWwgZXNjYXBlIGFmdGVyIGFsbDoKLSAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9lc2NhcGUsIG1fcG9zaXRpb24gLSBtX2Jhc2UsICJJbnZhbGlkIG9jdGFsIGVzY2FwZSBzZXF1ZW5jZS4iKTsKLSAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICB9Ci0gICAgICB2YWwgPSB0aGlzLT5tX3RyYWl0cy50b2kobV9wb3NpdGlvbiwgbV9wb3NpdGlvbiArIGxlbiwgOCk7Ci0gICAgICBpZih2YWwgPCAwKSAKLSAgICAgIHsKLSAgICAgICAgIC8vIFJld2luZCB0byBzdGFydCBvZiBlc2NhcGU6Ci0gICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfZXNjYXBlKSAtLW1fcG9zaXRpb247Ci0gICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfZXNjYXBlLCBtX3Bvc2l0aW9uIC0gbV9iYXNlLCAiT2N0YWwgZXNjYXBlIHNlcXVlbmNlIGlzIGludmFsaWQuIik7Ci0gICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgfQotICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNoYXJUPih2YWwpOwotICAgICAgfQotICAgY2FzZSByZWdleF9jb25zdGFudHM6OmVzY2FwZV90eXBlX25hbWVkX2NoYXI6Ci0gICAgICB7Ci0gICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICBpZihtX3Bvc2l0aW9uID09IG1fZW5kKQotICAgICAgICAgewotICAgICAgICAgICAgLy8gUmV3aW5kIHRvIHN0YXJ0IG9mIGVzY2FwZToKLSAgICAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIHdoaWxlKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9lc2NhcGUpIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9lc2NhcGUsIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgfQotICAgICAgICAgLy8gbWF5YmUgaGF2ZSBcTntuYW1lfQotICAgICAgICAgaWYodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pID09IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fYnJhY2UpCi0gICAgICAgICB7Ci0gICAgICAgICAgICBjb25zdCBjaGFyVCogYmFzZSA9IG1fcG9zaXRpb247Ci0gICAgICAgICAgICAvLyBza2lwIGZvcndhcmQgdW50aWwgd2UgZmluZCBlbmNsb3NpbmcgYnJhY2U6Ci0gICAgICAgICAgICB3aGlsZSgobV9wb3NpdGlvbiAhPSBtX2VuZCkgJiYgKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9jbG9zZV9icmFjZSkpCi0gICAgICAgICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICAgICBpZihtX3Bvc2l0aW9uID09IG1fZW5kKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgLy8gUmV3aW5kIHRvIHN0YXJ0IG9mIGVzY2FwZToKLSAgICAgICAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgICAgIHdoaWxlKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9lc2NhcGUpIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9lc2NhcGUsIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgc3RyaW5nX3R5cGUgcyA9IHRoaXMtPm1fdHJhaXRzLmxvb2t1cF9jb2xsYXRlbmFtZSgrK2Jhc2UsIG1fcG9zaXRpb24rKyk7Ci0gICAgICAgICAgICBpZihzLmVtcHR5KCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgZXNjYXBlOgotICAgICAgICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2VzY2FwZSkgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2NvbGxhdGUsIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYocy5zaXplKCkgPT0gMSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIHJldHVybiBzWzBdOwotICAgICAgICAgICAgfQotICAgICAgICAgfQotICAgICAgICAgLy8gZmFsbCB0aHJvdWdoIGlzIGEgZmFpbHVyZToKLSAgICAgICAgIC8vIFJld2luZCB0byBzdGFydCBvZiBlc2NhcGU6Ci0gICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfZXNjYXBlKSAtLW1fcG9zaXRpb247Ci0gICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfZXNjYXBlLCBtX3Bvc2l0aW9uIC0gbV9iYXNlKTsKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLSAgIGRlZmF1bHQ6Ci0gICAgICByZXN1bHQgPSAqbV9wb3NpdGlvbjsKLSAgICAgIGJyZWFrOwotICAgfQotICAgKyttX3Bvc2l0aW9uOwotICAgcmV0dXJuIHJlc3VsdDsKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotYm9vbCBiYXNpY19yZWdleF9wYXJzZXI8Y2hhclQsIHRyYWl0cz46OnBhcnNlX2JhY2tyZWYoKQotewotICAgTkROQk9PU1RfQVNTRVJUKG1fcG9zaXRpb24gIT0gbV9lbmQpOwotICAgY29uc3QgY2hhclQqIHBjID0gbV9wb3NpdGlvbjsKLSAgIGludCBpID0gdGhpcy0+bV90cmFpdHMudG9pKHBjLCBwYyArIDEsIDEwKTsKLSAgIGlmKChpID09IDApIHx8ICgoKHRoaXMtPmZsYWdzKCkgJiByZWdiYXNlOjptYWluX29wdGlvbl90eXBlKSA9PSByZWdiYXNlOjpwZXJsX3N5bnRheF9ncm91cCkgJiYgKHRoaXMtPmZsYWdzKCkgJiByZWdiYXNlOjpub19ia19yZWZzKSkpCi0gICB7Ci0gICAgICAvLyBub3QgYSBiYWNrcmVmIGF0IGFsbCBidXQgYW4gb2N0YWwgZXNjYXBlIHNlcXVlbmNlOgotICAgICAgY2hhclQgYyA9IHVuZXNjYXBlX2NoYXJhY3RlcigpOwotICAgICAgdGhpcy0+YXBwZW5kX2xpdGVyYWwoYyk7Ci0gICB9Ci0gICBlbHNlIGlmKChpID4gMCkgJiYgKHRoaXMtPm1fYmFja3JlZnMgJiAoMXUgPDwgKGktMSkpKSkKLSAgIHsKLSAgICAgIG1fcG9zaXRpb24gPSBwYzsKLSAgICAgIHJlX2JyYWNlKiBwYiA9IHN0YXRpY19jYXN0PHJlX2JyYWNlKj4odGhpcy0+YXBwZW5kX3N0YXRlKHN5bnRheF9lbGVtZW50X2JhY2tyZWYsIHNpemVvZihyZV9icmFjZSkpKTsKLSAgICAgIHBiLT5pbmRleCA9IGk7Ci0gICAgICBwYi0+aWNhc2UgPSB0aGlzLT5mbGFncygpICYgcmVnYmFzZTo6aWNhc2U7Ci0gICB9Ci0gICBlbHNlCi0gICB7Ci0gICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgZXNjYXBlOgotICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2VzY2FwZSkgLS1tX3Bvc2l0aW9uOwotICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2JhY2tyZWYsIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgcmV0dXJuIGZhbHNlOwotICAgfQotICAgcmV0dXJuIHRydWU7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotYm9vbCBiYXNpY19yZWdleF9wYXJzZXI8Y2hhclQsIHRyYWl0cz46OnBhcnNlX1FFKCkKLXsKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQxMjcpCi0jZW5kaWYKLSAgIC8vCi0gICAvLyBwYXJzZSBhIFxRLi4uXEUgc2VxdWVuY2U6Ci0gICAvLwotICAgKyttX3Bvc2l0aW9uOyAvLyBza2lwIHRoZSBRCi0gICBjb25zdCBjaGFyVCogc3RhcnQgPSBtX3Bvc2l0aW9uOwotICAgY29uc3QgY2hhclQqIGVuZDsKLSAgIGRvCi0gICB7Ci0gICAgICB3aGlsZSgobV9wb3NpdGlvbiAhPSBtX2VuZCkgCi0gICAgICAgICAmJiAodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2VzY2FwZSkpCi0gICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICBpZihtX3Bvc2l0aW9uID09IG1fZW5kKQotICAgICAgewotICAgICAgICAgLy8gIGEgXFEuLi5cRSBzZXF1ZW5jZSBtYXkgdGVybWluYXRlIHdpdGggdGhlIGVuZCBvZiB0aGUgZXhwcmVzc2lvbjoKLSAgICAgICAgIGVuZCA9IG1fcG9zaXRpb247Ci0gICAgICAgICBicmVhazsgIAotICAgICAgfQotICAgICAgaWYoKyttX3Bvc2l0aW9uID09IG1fZW5kKSAvLyBza2lwIHRoZSBlc2NhcGUKLSAgICAgIHsKLSAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9lc2NhcGUsIG1fcG9zaXRpb24gLSBtX2Jhc2UsICJVbnRlcm1pbmF0ZWQgXFxRLi4uXFxFIHNlcXVlbmNlLiIpOwotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgICAgLy8gY2hlY2sgdG8gc2VlIGlmIGl0J3MgYSBcRToKLSAgICAgIGlmKHRoaXMtPm1fdHJhaXRzLmVzY2FwZV9zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgPT0gcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfdHlwZV9FKQotICAgICAgewotICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgZW5kID0gbV9wb3NpdGlvbiAtIDI7Ci0gICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICAgIC8vIG90aGVyd2lzZSBnbyByb3VuZCBhZ2FpbjoKLSAgIH13aGlsZSh0cnVlKTsKLSAgIC8vCi0gICAvLyBub3cgYWRkIGFsbCB0aGUgY2hhcmFjdGVyIGJldHdlZW4gdGhlIHR3byBlc2NhcGVzIGFzIGxpdGVyYWxzOgotICAgLy8KLSAgIHdoaWxlKHN0YXJ0ICE9IGVuZCkKLSAgIHsKLSAgICAgIHRoaXMtPmFwcGVuZF9saXRlcmFsKCpzdGFydCk7Ci0gICAgICArK3N0YXJ0OwotICAgfQotICAgcmV0dXJuIHRydWU7Ci0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLWJvb2wgYmFzaWNfcmVnZXhfcGFyc2VyPGNoYXJULCB0cmFpdHM+OjpwYXJzZV9wZXJsX2V4dGVuc2lvbigpCi17Ci0gICBpZigrK21fcG9zaXRpb24gPT0gbV9lbmQpCi0gICB7Ci0gICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgKD8gc2VxdWVuY2U6Ci0gICAgICAtLW1fcG9zaXRpb247Ci0gICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9tYXJrKSAtLW1fcG9zaXRpb247Ci0gICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfcGVybF9leHRlbnNpb24sIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgcmV0dXJuIGZhbHNlOwotICAgfQotICAgLy8KLSAgIC8vIHRyZWF0IGNvbW1lbnRzIGFzIGEgc3BlY2lhbCBjYXNlLCBhcyB0aGVzZQotICAgLy8gYXJlIHRoZSBvbmx5IG9uZXMgdGhhdCBkb24ndCBzdGFydCB3aXRoIGEgbGVhZGluZwotICAgLy8gc3RhcnRtYXJrIHN0YXRlOgotICAgLy8KLSAgIGlmKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSA9PSByZWdleF9jb25zdGFudHM6OnN5bnRheF9oYXNoKQotICAgewotICAgICAgd2hpbGUoKG1fcG9zaXRpb24gIT0gbV9lbmQpIAotICAgICAgICAgJiYgKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKyspICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2Nsb3NlX21hcmspKQotICAgICAge30gICAgICAKLSAgICAgIHJldHVybiB0cnVlOwotICAgfQotICAgLy8KLSAgIC8vIGJhY2t1cCBzb21lIHN0YXRlLCBhbmQgcHJlcGFyZSB0aGUgd2F5OgotICAgLy8KLSAgIGludCBtYXJraWQgPSAwOwotICAgc3RkOjpwdHJkaWZmX3QganVtcF9vZmZzZXQgPSAwOwotICAgcmVfYnJhY2UqIHBiID0gc3RhdGljX2Nhc3Q8cmVfYnJhY2UqPih0aGlzLT5hcHBlbmRfc3RhdGUoc3ludGF4X2VsZW1lbnRfc3RhcnRtYXJrLCBzaXplb2YocmVfYnJhY2UpKSk7Ci0gICBwYi0+aWNhc2UgPSB0aGlzLT5mbGFncygpICYgcmVnYmFzZTo6aWNhc2U7Ci0gICBzdGQ6OnB0cmRpZmZfdCBsYXN0X3BhcmVuX3N0YXJ0ID0gdGhpcy0+Z2V0b2Zmc2V0KHBiKTsKLSAgIC8vIGJhY2sgdXAgaW5zZXJ0aW9uIHBvaW50IGZvciBhbHRlcm5hdGlvbnMsIGFuZCBzZXQgbmV3IHBvaW50OgotICAgc3RkOjpwdHJkaWZmX3QgbGFzdF9hbHRfcG9pbnQgPSBtX2FsdF9pbnNlcnRfcG9pbnQ7Ci0gICB0aGlzLT5tX3BkYXRhLT5tX2RhdGEuYWxpZ24oKTsKLSAgIG1fYWx0X2luc2VydF9wb2ludCA9IHRoaXMtPm1fcGRhdGEtPm1fZGF0YS5zaXplKCk7Ci0gICBzdGQ6OnB0cmRpZmZfdCBleHBlY3RlZF9hbHRfcG9pbnQgPSBtX2FsdF9pbnNlcnRfcG9pbnQ7Ci0gICBib29sIHJlc3RvcmVfZmxhZ3MgPSB0cnVlOwotICAgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3B0aW9uX3R5cGUgb2xkX2ZsYWdzID0gdGhpcy0+ZmxhZ3MoKTsKLSAgIGJvb2wgb2xkX2Nhc2VfY2hhbmdlID0gbV9oYXNfY2FzZV9jaGFuZ2U7Ci0gICBtX2hhc19jYXNlX2NoYW5nZSA9IGZhbHNlOwotICAgY2hhclQgbmFtZV9kZWxpbTsKLSAgIGludCBtYXJrX3Jlc2V0ID0gbV9tYXJrX3Jlc2V0OwotICAgaW50IG1heF9tYXJrID0gbV9tYXhfbWFyazsKLSAgIG1fbWFya19yZXNldCA9IC0xOwotICAgbV9tYXhfbWFyayA9IG1fbWFya19jb3VudDsKLSAgIGludCB2OwotICAgLy8KLSAgIC8vIHNlbGVjdCB0aGUgYWN0dWFsIGV4dGVuc2lvbiB1c2VkOgotICAgLy8KLSAgIHN3aXRjaCh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikpCi0gICB7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29yOgotICAgICAgbV9tYXJrX3Jlc2V0ID0gbV9tYXJrX2NvdW50OwotICAgICAgTkROQk9PU1RfRkFMTFRIUk9VR0g7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2NvbG9uOgotICAgICAgLy8KLSAgICAgIC8vIGEgbm9uLWNhcHR1cmluZyBtYXJrOgotICAgICAgLy8KLSAgICAgIHBiLT5pbmRleCA9IG1hcmtpZCA9IDA7Ci0gICAgICArK21fcG9zaXRpb247Ci0gICAgICBicmVhazsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfZGlnaXQ6Ci0gICAgICB7Ci0gICAgICAvLwotICAgICAgLy8gYSByZWN1cnNpdmUgc3ViZXhwcmVzc2lvbjoKLSAgICAgIC8vCi0gICAgICB2ID0gdGhpcy0+bV90cmFpdHMudG9pKG1fcG9zaXRpb24sIG1fZW5kLCAxMCk7Ci0gICAgICBpZigodiA8IDApIHx8ICh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfY2xvc2VfbWFyaykpCi0gICAgICB7Ci0gICAgICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgKD8gc2VxdWVuY2U6Ci0gICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9tYXJrKSAtLW1fcG9zaXRpb247Ci0gICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfcGVybF9leHRlbnNpb24sIG1fcG9zaXRpb24gLSBtX2Jhc2UsICJUaGUgcmVjdXJzaXZlIHN1Yi1leHByZXNzaW9uIHJlZmVycyB0byBhbiBpbnZhbGlkIG1hcmtpbmcgZ3JvdXAsIG9yIGlzIHVudGVybWluYXRlZC4iKTsKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLWluc2VydF9yZWN1cnNpb246Ci0gICAgICBwYi0+aW5kZXggPSBtYXJraWQgPSAwOwotICAgICAgcmVfcmVjdXJzZSogcHIgPSBzdGF0aWNfY2FzdDxyZV9yZWN1cnNlKj4odGhpcy0+YXBwZW5kX3N0YXRlKHN5bnRheF9lbGVtZW50X3JlY3Vyc2UsIHNpemVvZihyZV9yZWN1cnNlKSkpOwotICAgICAgcHItPmFsdC5pID0gdjsKLSAgICAgIHByLT5zdGF0ZV9pZCA9IDA7Ci0gICAgICBzdGF0aWNfY2FzdDxyZV9jYXNlKj4oCi0gICAgICAgICAgICB0aGlzLT5hcHBlbmRfc3RhdGUoc3ludGF4X2VsZW1lbnRfdG9nZ2xlX2Nhc2UsIHNpemVvZihyZV9jYXNlKSkKLSAgICAgICAgICAgICktPmljYXNlID0gdGhpcy0+ZmxhZ3MoKSAmIHJlZ2Jhc2U6OmljYXNlOwotICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X3BsdXM6Ci0gICAgICAvLwotICAgICAgLy8gQSBmb3J3YXJkLXJlbGF0aXZlIHJlY3Vyc2l2ZSBzdWJleHByZXNzaW9uOgotICAgICAgLy8KLSAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIHYgPSB0aGlzLT5tX3RyYWl0cy50b2kobV9wb3NpdGlvbiwgbV9lbmQsIDEwKTsKLSAgICAgIGlmKCh2IDw9IDApIHx8ICh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfY2xvc2VfbWFyaykpCi0gICAgICB7Ci0gICAgICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgKD8gc2VxdWVuY2U6Ci0gICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9tYXJrKSAtLW1fcG9zaXRpb247Ci0gICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfcGVybF9leHRlbnNpb24sIG1fcG9zaXRpb24gLSBtX2Jhc2UsICJBbiBpbnZhbGlkIG9yIHVudGVybWluYXRlZCByZWN1cnNpdmUgc3ViLWV4cHJlc3Npb24uIik7Ci0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICAgICB2ICs9IG1fbWFya19jb3VudDsKLSAgICAgIGdvdG8gaW5zZXJ0X3JlY3Vyc2lvbjsKLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfZGFzaDoKLSAgICAgIC8vCi0gICAgICAvLyBQb3NzaWJseSBhIGJhY2t3YXJkLXJlbGF0aXZlIHJlY3Vyc2l2ZSBzdWJleHByZXNzaW9uOgotICAgICAgLy8KLSAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIHYgPSB0aGlzLT5tX3RyYWl0cy50b2kobV9wb3NpdGlvbiwgbV9lbmQsIDEwKTsKLSAgICAgIGlmKHYgPD0gMCkKLSAgICAgIHsKLSAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgIC8vIE9vcHMgbm90IGEgcmVsYXRpdmUgcmVjdXJzaW9uIGF0IGFsbCwgYnV0IGEgKD8taW1zeCkgZ3JvdXA6Ci0gICAgICAgICBnb3RvIG9wdGlvbl9ncm91cF9qdW1wOwotICAgICAgfQotICAgICAgdiA9IG1fbWFya19jb3VudCArIDEgLSB2OwotICAgICAgaWYodiA8PSAwKQotICAgICAgewotICAgICAgICAgLy8gUmV3aW5kIHRvIHN0YXJ0IG9mICg/IHNlcXVlbmNlOgotICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fbWFyaykgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX3BlcmxfZXh0ZW5zaW9uLCBtX3Bvc2l0aW9uIC0gbV9iYXNlLCAiQW4gaW52YWxpZCBvciB1bnRlcm1pbmF0ZWQgcmVjdXJzaXZlIHN1Yi1leHByZXNzaW9uLiIpOwotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgICAgZ290byBpbnNlcnRfcmVjdXJzaW9uOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OnN5bnRheF9lcXVhbDoKLSAgICAgIHBiLT5pbmRleCA9IG1hcmtpZCA9IC0xOwotICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAganVtcF9vZmZzZXQgPSB0aGlzLT5nZXRvZmZzZXQodGhpcy0+YXBwZW5kX3N0YXRlKHN5bnRheF9lbGVtZW50X2p1bXAsIHNpemVvZihyZV9qdW1wKSkpOwotICAgICAgdGhpcy0+bV9wZGF0YS0+bV9kYXRhLmFsaWduKCk7Ci0gICAgICBtX2FsdF9pbnNlcnRfcG9pbnQgPSB0aGlzLT5tX3BkYXRhLT5tX2RhdGEuc2l6ZSgpOwotICAgICAgYnJlYWs7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X25vdDoKLSAgICAgIHBiLT5pbmRleCA9IG1hcmtpZCA9IC0yOwotICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAganVtcF9vZmZzZXQgPSB0aGlzLT5nZXRvZmZzZXQodGhpcy0+YXBwZW5kX3N0YXRlKHN5bnRheF9lbGVtZW50X2p1bXAsIHNpemVvZihyZV9qdW1wKSkpOwotICAgICAgdGhpcy0+bV9wZGF0YS0+bV9kYXRhLmFsaWduKCk7Ci0gICAgICBtX2FsdF9pbnNlcnRfcG9pbnQgPSB0aGlzLT5tX3BkYXRhLT5tX2RhdGEuc2l6ZSgpOwotICAgICAgYnJlYWs7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3R5cGVfbGVmdF93b3JkOgotICAgICAgewotICAgICAgICAgLy8gYSBsb29rYmVoaW5kIGFzc2VydGlvbjoKLSAgICAgICAgIGlmKCsrbV9wb3NpdGlvbiA9PSBtX2VuZCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIFJld2luZCB0byBzdGFydCBvZiAoPyBzZXF1ZW5jZToKLSAgICAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIHdoaWxlKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX21hcmspIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9wZXJsX2V4dGVuc2lvbiwgbV9wb3NpdGlvbiAtIG1fYmFzZSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICB9Ci0gICAgICAgICByZWdleF9jb25zdGFudHM6OnN5bnRheF90eXBlIHQgPSB0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbik7Ci0gICAgICAgICBpZih0ID09IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X25vdCkKLSAgICAgICAgICAgIHBiLT5pbmRleCA9IG1hcmtpZCA9IC0yOwotICAgICAgICAgZWxzZSBpZih0ID09IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2VxdWFsKQotICAgICAgICAgICAgcGItPmluZGV4ID0gbWFya2lkID0gLTE7Ci0gICAgICAgICBlbHNlCi0gICAgICAgICB7Ci0gICAgICAgICAgICAvLyBQcm9iYWJseSBhIG5hbWVkIGNhcHR1cmUgd2hpY2ggYWxzbyBzdGFydHMgKD88IDoKLSAgICAgICAgICAgIG5hbWVfZGVsaW0gPSAnPic7Ci0gICAgICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICBnb3RvIG5hbWVkX2NhcHR1cmVfanVtcDsKLSAgICAgICAgIH0KLSAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgIGp1bXBfb2Zmc2V0ID0gdGhpcy0+Z2V0b2Zmc2V0KHRoaXMtPmFwcGVuZF9zdGF0ZShzeW50YXhfZWxlbWVudF9qdW1wLCBzaXplb2YocmVfanVtcCkpKTsKLSAgICAgICAgIHRoaXMtPmFwcGVuZF9zdGF0ZShzeW50YXhfZWxlbWVudF9iYWNrc3RlcCwgc2l6ZW9mKHJlX2JyYWNlKSk7Ci0gICAgICAgICB0aGlzLT5tX3BkYXRhLT5tX2RhdGEuYWxpZ24oKTsKLSAgICAgICAgIG1fYWx0X2luc2VydF9wb2ludCA9IHRoaXMtPm1fcGRhdGEtPm1fZGF0YS5zaXplKCk7Ci0gICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgIGNhc2UgcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfdHlwZV9yaWdodF93b3JkOgotICAgICAgLy8KLSAgICAgIC8vIGFuIGluZGVwZW5kZW50IHN1Yi1leHByZXNzaW9uOgotICAgICAgLy8KLSAgICAgIHBiLT5pbmRleCA9IG1hcmtpZCA9IC0zOwotICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAganVtcF9vZmZzZXQgPSB0aGlzLT5nZXRvZmZzZXQodGhpcy0+YXBwZW5kX3N0YXRlKHN5bnRheF9lbGVtZW50X2p1bXAsIHNpemVvZihyZV9qdW1wKSkpOwotICAgICAgdGhpcy0+bV9wZGF0YS0+bV9kYXRhLmFsaWduKCk7Ci0gICAgICBtX2FsdF9pbnNlcnRfcG9pbnQgPSB0aGlzLT5tX3BkYXRhLT5tX2RhdGEuc2l6ZSgpOwotICAgICAgYnJlYWs7Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fbWFyazoKLSAgICAgIHsKLSAgICAgIC8vIGEgY29uZGl0aW9uYWwgZXhwcmVzc2lvbjoKLSAgICAgIHBiLT5pbmRleCA9IG1hcmtpZCA9IC00OwotICAgICAgaWYoKyttX3Bvc2l0aW9uID09IG1fZW5kKQotICAgICAgewotICAgICAgICAgLy8gUmV3aW5kIHRvIHN0YXJ0IG9mICg/IHNlcXVlbmNlOgotICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fbWFyaykgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX3BlcmxfZXh0ZW5zaW9uLCBtX3Bvc2l0aW9uIC0gbV9iYXNlKTsKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLSAgICAgIHYgPSB0aGlzLT5tX3RyYWl0cy50b2kobV9wb3NpdGlvbiwgbV9lbmQsIDEwKTsKLSAgICAgIGlmKG1fcG9zaXRpb24gPT0gbV9lbmQpCi0gICAgICB7Ci0gICAgICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgKD8gc2VxdWVuY2U6Ci0gICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9tYXJrKSAtLW1fcG9zaXRpb247Ci0gICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfcGVybF9leHRlbnNpb24sIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgICAgaWYoKm1fcG9zaXRpb24gPT0gY2hhclQoJ1InKSkKLSAgICAgIHsKLSAgICAgICAgIGlmKCsrbV9wb3NpdGlvbiA9PSBtX2VuZCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIFJld2luZCB0byBzdGFydCBvZiAoPyBzZXF1ZW5jZToKLSAgICAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIHdoaWxlKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX21hcmspIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9wZXJsX2V4dGVuc2lvbiwgbV9wb3NpdGlvbiAtIG1fYmFzZSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICB9Ci0gICAgICAgICBpZigqbV9wb3NpdGlvbiA9PSBjaGFyVCgnJicpKQotICAgICAgICAgewotICAgICAgICAgICAgY29uc3QgY2hhclQqIGJhc2UgPSArK21fcG9zaXRpb247Ci0gICAgICAgICAgICB3aGlsZSgobV9wb3NpdGlvbiAhPSBtX2VuZCkgJiYgKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9jbG9zZV9tYXJrKSkKLSAgICAgICAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIGlmKG1fcG9zaXRpb24gPT0gbV9lbmQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgKD8gc2VxdWVuY2U6Ci0gICAgICAgICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9tYXJrKSAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfcGVybF9leHRlbnNpb24sIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdiA9IC1zdGF0aWNfY2FzdDxpbnQ+KGhhc2hfdmFsdWVfZnJvbV9jYXB0dXJlX25hbWUoYmFzZSwgbV9wb3NpdGlvbikpOwotICAgICAgICAgfQotICAgICAgICAgZWxzZQotICAgICAgICAgewotICAgICAgICAgICAgdiA9IC10aGlzLT5tX3RyYWl0cy50b2kobV9wb3NpdGlvbiwgbV9lbmQsIDEwKTsKLSAgICAgICAgIH0KLSAgICAgICAgIHJlX2JyYWNlKiBiciA9IHN0YXRpY19jYXN0PHJlX2JyYWNlKj4odGhpcy0+YXBwZW5kX3N0YXRlKHN5bnRheF9lbGVtZW50X2Fzc2VydF9iYWNrcmVmLCBzaXplb2YocmVfYnJhY2UpKSk7Ci0gICAgICAgICBici0+aW5kZXggPSB2IDwgMCA/ICh2IC0gMSkgOiAwOwotICAgICAgICAgaWYodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2Nsb3NlX21hcmspCi0gICAgICAgICB7Ci0gICAgICAgICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgKD8gc2VxdWVuY2U6Ci0gICAgICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9tYXJrKSAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfcGVybF9leHRlbnNpb24sIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgfQotICAgICAgICAgaWYoKyttX3Bvc2l0aW9uID09IG1fZW5kKQotICAgICAgICAgewotICAgICAgICAgICAgLy8gUmV3aW5kIHRvIHN0YXJ0IG9mICg/IHNlcXVlbmNlOgotICAgICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fbWFyaykgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX3BlcmxfZXh0ZW5zaW9uLCBtX3Bvc2l0aW9uIC0gbV9iYXNlKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGVsc2UgaWYoKCptX3Bvc2l0aW9uID09IGNoYXJUKCdcJycpKSB8fCAoKm1fcG9zaXRpb24gPT0gY2hhclQoJzwnKSkpCi0gICAgICB7Ci0gICAgICAgICBjb25zdCBjaGFyVCogYmFzZSA9ICsrbV9wb3NpdGlvbjsKLSAgICAgICAgIHdoaWxlKChtX3Bvc2l0aW9uICE9IG1fZW5kKSAmJiAoKm1fcG9zaXRpb24gIT0gY2hhclQoJz4nKSkgJiYgKCptX3Bvc2l0aW9uICE9IGNoYXJUKCdcJycpKSkKLSAgICAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgIGlmKG1fcG9zaXRpb24gPT0gbV9lbmQpCi0gICAgICAgICB7Ci0gICAgICAgICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgKD8gc2VxdWVuY2U6Ci0gICAgICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9tYXJrKSAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfcGVybF9leHRlbnNpb24sIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgfQotICAgICAgICAgdiA9IHN0YXRpY19jYXN0PGludD4oaGFzaF92YWx1ZV9mcm9tX2NhcHR1cmVfbmFtZShiYXNlLCBtX3Bvc2l0aW9uKSk7Ci0gICAgICAgICByZV9icmFjZSogYnIgPSBzdGF0aWNfY2FzdDxyZV9icmFjZSo+KHRoaXMtPmFwcGVuZF9zdGF0ZShzeW50YXhfZWxlbWVudF9hc3NlcnRfYmFja3JlZiwgc2l6ZW9mKHJlX2JyYWNlKSkpOwotICAgICAgICAgYnItPmluZGV4ID0gdjsKLSAgICAgICAgIGlmKCgoKm1fcG9zaXRpb24gIT0gY2hhclQoJz4nKSkgJiYgKCptX3Bvc2l0aW9uICE9IGNoYXJUKCdcJycpKSkgfHwgKCsrbV9wb3NpdGlvbiA9PSBtX2VuZCkpCi0gICAgICAgICB7Ci0gICAgICAgICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgKD8gc2VxdWVuY2U6Ci0gICAgICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9tYXJrKSAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfcGVybF9leHRlbnNpb24sIG1fcG9zaXRpb24gLSBtX2Jhc2UsICJVbnRlcm1pbmF0ZWQgbmFtZWQgY2FwdHVyZS4iKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgIH0KLSAgICAgICAgIGlmKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9jbG9zZV9tYXJrKQotICAgICAgICAgewotICAgICAgICAgICAgLy8gUmV3aW5kIHRvIHN0YXJ0IG9mICg/IHNlcXVlbmNlOgotICAgICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fbWFyaykgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX3BlcmxfZXh0ZW5zaW9uLCBtX3Bvc2l0aW9uIC0gbV9iYXNlKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgIH0KLSAgICAgICAgIGlmKCsrbV9wb3NpdGlvbiA9PSBtX2VuZCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIFJld2luZCB0byBzdGFydCBvZiAoPyBzZXF1ZW5jZToKLSAgICAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIHdoaWxlKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX21hcmspIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9wZXJsX2V4dGVuc2lvbiwgbV9wb3NpdGlvbiAtIG1fYmFzZSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmKCptX3Bvc2l0aW9uID09IGNoYXJUKCdEJykpCi0gICAgICB7Ci0gICAgICAgICBjb25zdCBjaGFyKiBkZWYgPSAiREVGSU5FIjsKLSAgICAgICAgIHdoaWxlKCpkZWYgJiYgKG1fcG9zaXRpb24gIT0gbV9lbmQpICYmICgqbV9wb3NpdGlvbiA9PSBjaGFyVCgqZGVmKSkpCi0gICAgICAgICAgICArK21fcG9zaXRpb24sICsrZGVmOwotICAgICAgICAgaWYoKG1fcG9zaXRpb24gPT0gbV9lbmQpIHx8ICpkZWYpCi0gICAgICAgICB7Ci0gICAgICAgICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgKD8gc2VxdWVuY2U6Ci0gICAgICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9tYXJrKSAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfcGVybF9leHRlbnNpb24sIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgfQotICAgICAgICAgcmVfYnJhY2UqIGJyID0gc3RhdGljX2Nhc3Q8cmVfYnJhY2UqPih0aGlzLT5hcHBlbmRfc3RhdGUoc3ludGF4X2VsZW1lbnRfYXNzZXJ0X2JhY2tyZWYsIHNpemVvZihyZV9icmFjZSkpKTsKLSAgICAgICAgIGJyLT5pbmRleCA9IDk5OTk7IC8vIHNwZWNpYWwgbWFnaWMgdmFsdWUhCi0gICAgICAgICBpZih0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfY2xvc2VfbWFyaykKLSAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIFJld2luZCB0byBzdGFydCBvZiAoPyBzZXF1ZW5jZToKLSAgICAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIHdoaWxlKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX21hcmspIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9wZXJsX2V4dGVuc2lvbiwgbV9wb3NpdGlvbiAtIG1fYmFzZSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICB9Ci0gICAgICAgICBpZigrK21fcG9zaXRpb24gPT0gbV9lbmQpCi0gICAgICAgICB7Ci0gICAgICAgICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgKD8gc2VxdWVuY2U6Ci0gICAgICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9tYXJrKSAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfcGVybF9leHRlbnNpb24sIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgfQotICAgICAgfQotICAgICAgZWxzZSBpZih2ID4gMCkKLSAgICAgIHsKLSAgICAgICAgIHJlX2JyYWNlKiBiciA9IHN0YXRpY19jYXN0PHJlX2JyYWNlKj4odGhpcy0+YXBwZW5kX3N0YXRlKHN5bnRheF9lbGVtZW50X2Fzc2VydF9iYWNrcmVmLCBzaXplb2YocmVfYnJhY2UpKSk7Ci0gICAgICAgICBici0+aW5kZXggPSB2OwotICAgICAgICAgaWYodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2Nsb3NlX21hcmspCi0gICAgICAgICB7Ci0gICAgICAgICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgKD8gc2VxdWVuY2U6Ci0gICAgICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9tYXJrKSAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfcGVybF9leHRlbnNpb24sIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgfQotICAgICAgICAgaWYoKyttX3Bvc2l0aW9uID09IG1fZW5kKQotICAgICAgICAgewotICAgICAgICAgICAgLy8gUmV3aW5kIHRvIHN0YXJ0IG9mICg/IHNlcXVlbmNlOgotICAgICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fbWFyaykgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX3BlcmxfZXh0ZW5zaW9uLCBtX3Bvc2l0aW9uIC0gbV9iYXNlKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgIC8vIHZlcmlmeSB0aGF0IHdlIGhhdmUgYSBsb29rYWhlYWQgb3IgbG9va2JlaGluZCBhc3NlcnQ6Ci0gICAgICAgICBpZih0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfcXVlc3Rpb24pCi0gICAgICAgICB7Ci0gICAgICAgICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgKD8gc2VxdWVuY2U6Ci0gICAgICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9tYXJrKSAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfcGVybF9leHRlbnNpb24sIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgfQotICAgICAgICAgaWYoKyttX3Bvc2l0aW9uID09IG1fZW5kKQotICAgICAgICAgewotICAgICAgICAgICAgLy8gUmV3aW5kIHRvIHN0YXJ0IG9mICg/IHNlcXVlbmNlOgotICAgICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fbWFyaykgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX3BlcmxfZXh0ZW5zaW9uLCBtX3Bvc2l0aW9uIC0gbV9iYXNlKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgIH0KLSAgICAgICAgIGlmKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSA9PSByZWdleF9jb25zdGFudHM6OmVzY2FwZV90eXBlX2xlZnRfd29yZCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIGlmKCsrbV9wb3NpdGlvbiA9PSBtX2VuZCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIC8vIFJld2luZCB0byBzdGFydCBvZiAoPyBzZXF1ZW5jZToKLSAgICAgICAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgICAgIHdoaWxlKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX21hcmspIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9wZXJsX2V4dGVuc2lvbiwgbV9wb3NpdGlvbiAtIG1fYmFzZSk7Ci0gICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZigodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2VxdWFsKQotICAgICAgICAgICAgICAgJiYgKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9ub3QpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgLy8gUmV3aW5kIHRvIHN0YXJ0IG9mICg/IHNlcXVlbmNlOgotICAgICAgICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fbWFyaykgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX3BlcmxfZXh0ZW5zaW9uLCBtX3Bvc2l0aW9uIC0gbV9iYXNlKTsKLSAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1fcG9zaXRpb24gLT0gMzsKLSAgICAgICAgIH0KLSAgICAgICAgIGVsc2UKLSAgICAgICAgIHsKLSAgICAgICAgICAgIGlmKCh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfZXF1YWwpCi0gICAgICAgICAgICAgICAmJiAodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X25vdCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgKD8gc2VxdWVuY2U6Ci0gICAgICAgICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9tYXJrKSAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfcGVybF9leHRlbnNpb24sIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgbV9wb3NpdGlvbiAtPSAyOwotICAgICAgICAgfQotICAgICAgfQotICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICBjYXNlIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2Nsb3NlX21hcms6Ci0gICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgKD8gc2VxdWVuY2U6Ci0gICAgICAtLW1fcG9zaXRpb247Ci0gICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9tYXJrKSAtLW1fcG9zaXRpb247Ci0gICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfcGVybF9leHRlbnNpb24sIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgcmV0dXJuIGZhbHNlOwotICAgY2FzZSByZWdleF9jb25zdGFudHM6OmVzY2FwZV90eXBlX2VuZF9idWZmZXI6Ci0gICAgICB7Ci0gICAgICBuYW1lX2RlbGltID0gKm1fcG9zaXRpb247Ci1uYW1lZF9jYXB0dXJlX2p1bXA6Ci0gICAgICBtYXJraWQgPSAwOwotICAgICAgaWYoMCA9PSAodGhpcy0+ZmxhZ3MoKSAmIHJlZ2Jhc2U6Om5vc3VicykpCi0gICAgICB7Ci0gICAgICAgICBtYXJraWQgPSArK21fbWFya19jb3VudDsKLSAgICNpZm5kZWYgTkROQk9PU1RfTk9fU1REX0RJU1RBTkNFCi0gICAgICAgICBpZih0aGlzLT5mbGFncygpICYgcmVnYmFzZTo6c2F2ZV9zdWJleHByZXNzaW9uX2xvY2F0aW9uKQotICAgICAgICAgICAgdGhpcy0+bV9wZGF0YS0+bV9zdWJzLnB1c2hfYmFjayhzdGQ6OnBhaXI8c3RkOjpzaXplX3QsIHN0ZDo6c2l6ZV90PihzdGQ6OmRpc3RhbmNlKG1fYmFzZSwgbV9wb3NpdGlvbikgLSAyLCAwKSk7Ci0gICAjZWxzZQotICAgICAgICAgaWYodGhpcy0+ZmxhZ3MoKSAmIHJlZ2Jhc2U6OnNhdmVfc3ViZXhwcmVzc2lvbl9sb2NhdGlvbikKLSAgICAgICAgICAgIHRoaXMtPm1fcGRhdGEtPm1fc3Vicy5wdXNoX2JhY2soc3RkOjpwYWlyPHN0ZDo6c2l6ZV90LCBzdGQ6OnNpemVfdD4oKG1fcG9zaXRpb24gLSBtX2Jhc2UpIC0gMiwgMCkpOwotICAgI2VuZGlmCi0gICAgICB9Ci0gICAgICBwYi0+aW5kZXggPSBtYXJraWQ7Ci0gICAgICBjb25zdCBjaGFyVCogYmFzZSA9ICsrbV9wb3NpdGlvbjsKLSAgICAgIGlmKG1fcG9zaXRpb24gPT0gbV9lbmQpCi0gICAgICB7Ci0gICAgICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgKD8gc2VxdWVuY2U6Ci0gICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9tYXJrKSAtLW1fcG9zaXRpb247Ci0gICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfcGVybF9leHRlbnNpb24sIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgICAgd2hpbGUoKG1fcG9zaXRpb24gIT0gbV9lbmQpICYmICgqbV9wb3NpdGlvbiAhPSBuYW1lX2RlbGltKSkKLSAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIGlmKG1fcG9zaXRpb24gPT0gbV9lbmQpCi0gICAgICB7Ci0gICAgICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgKD8gc2VxdWVuY2U6Ci0gICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9tYXJrKSAtLW1fcG9zaXRpb247Ci0gICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfcGVybF9leHRlbnNpb24sIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgICAgdGhpcy0+bV9wZGF0YS0+c2V0X25hbWUoYmFzZSwgbV9wb3NpdGlvbiwgbWFya2lkKTsKLSAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIGJyZWFrOwotICAgICAgfQotICAgZGVmYXVsdDoKLSAgICAgIGlmKCptX3Bvc2l0aW9uID09IGNoYXJUKCdSJykpCi0gICAgICB7Ci0gICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICB2ID0gMDsKLSAgICAgICAgIGlmKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9jbG9zZV9tYXJrKQotICAgICAgICAgewotICAgICAgICAgICAgLy8gUmV3aW5kIHRvIHN0YXJ0IG9mICg/IHNlcXVlbmNlOgotICAgICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fbWFyaykgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX3BlcmxfZXh0ZW5zaW9uLCBtX3Bvc2l0aW9uIC0gbV9iYXNlKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgIH0KLSAgICAgICAgIGdvdG8gaW5zZXJ0X3JlY3Vyc2lvbjsKLSAgICAgIH0KLSAgICAgIGlmKCptX3Bvc2l0aW9uID09IGNoYXJUKCcmJykpCi0gICAgICB7Ci0gICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICBjb25zdCBjaGFyVCogYmFzZSA9IG1fcG9zaXRpb247Ci0gICAgICAgICB3aGlsZSgobV9wb3NpdGlvbiAhPSBtX2VuZCkgJiYgKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9jbG9zZV9tYXJrKSkKLSAgICAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgIGlmKG1fcG9zaXRpb24gPT0gbV9lbmQpCi0gICAgICAgICB7Ci0gICAgICAgICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgKD8gc2VxdWVuY2U6Ci0gICAgICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9tYXJrKSAtLW1fcG9zaXRpb247Ci0gICAgICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfcGVybF9leHRlbnNpb24sIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgfQotICAgICAgICAgdiA9IHN0YXRpY19jYXN0PGludD4oaGFzaF92YWx1ZV9mcm9tX2NhcHR1cmVfbmFtZShiYXNlLCBtX3Bvc2l0aW9uKSk7Ci0gICAgICAgICBnb3RvIGluc2VydF9yZWN1cnNpb247Ci0gICAgICB9Ci0gICAgICBpZigqbV9wb3NpdGlvbiA9PSBjaGFyVCgnUCcpKQotICAgICAgewotICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgaWYobV9wb3NpdGlvbiA9PSBtX2VuZCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIFJld2luZCB0byBzdGFydCBvZiAoPyBzZXF1ZW5jZToKLSAgICAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIHdoaWxlKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX21hcmspIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9wZXJsX2V4dGVuc2lvbiwgbV9wb3NpdGlvbiAtIG1fYmFzZSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICB9Ci0gICAgICAgICBpZigqbV9wb3NpdGlvbiA9PSBjaGFyVCgnPicpKQotICAgICAgICAgewotICAgICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgICAgY29uc3QgY2hhclQqIGJhc2UgPSBtX3Bvc2l0aW9uOwotICAgICAgICAgICAgd2hpbGUoKG1fcG9zaXRpb24gIT0gbV9lbmQpICYmICh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfY2xvc2VfbWFyaykpCi0gICAgICAgICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICAgICBpZihtX3Bvc2l0aW9uID09IG1fZW5kKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgLy8gUmV3aW5kIHRvIHN0YXJ0IG9mICg/IHNlcXVlbmNlOgotICAgICAgICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fbWFyaykgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX3BlcmxfZXh0ZW5zaW9uLCBtX3Bvc2l0aW9uIC0gbV9iYXNlKTsKLSAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHYgPSBzdGF0aWNfY2FzdDxpbnQ+KGhhc2hfdmFsdWVfZnJvbV9jYXB0dXJlX25hbWUoYmFzZSwgbV9wb3NpdGlvbikpOwotICAgICAgICAgICAgZ290byBpbnNlcnRfcmVjdXJzaW9uOwotICAgICAgICAgfQotICAgICAgfQotICAgICAgLy8KLSAgICAgIC8vIGxldHMgYXNzdW1lIHRoYXQgd2UgaGF2ZSBhICg/aW1zeCkgZ3JvdXAgYW5kIHRyeSBhbmQgcGFyc2UgaXQ6Ci0gICAgICAvLwotb3B0aW9uX2dyb3VwX2p1bXA6Ci0gICAgICByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcHRpb25fdHlwZSBvcHRzID0gcGFyc2Vfb3B0aW9ucygpOwotICAgICAgaWYobV9wb3NpdGlvbiA9PSBtX2VuZCkKLSAgICAgIHsKLSAgICAgICAgIC8vIFJld2luZCB0byBzdGFydCBvZiAoPyBzZXF1ZW5jZToKLSAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgIHdoaWxlKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX21hcmspIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9wZXJsX2V4dGVuc2lvbiwgbV9wb3NpdGlvbiAtIG1fYmFzZSk7Ci0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICAgICAvLyBtYWtlIGEgbm90ZSBvZiB3aGV0aGVyIHdlIGhhdmUgYSBjYXNlIGNoYW5nZToKLSAgICAgIG1faGFzX2Nhc2VfY2hhbmdlID0gKChvcHRzICYgcmVnYmFzZTo6aWNhc2UpICE9ICh0aGlzLT5mbGFncygpICYgcmVnYmFzZTo6aWNhc2UpKTsKLSAgICAgIHBiLT5pbmRleCA9IG1hcmtpZCA9IDA7Ci0gICAgICBpZih0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgPT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfY2xvc2VfbWFyaykKLSAgICAgIHsKLSAgICAgICAgIC8vIHVwZGF0ZSBmbGFncyBhbmQgY2Fycnkgb24gYXMgbm9ybWFsOgotICAgICAgICAgdGhpcy0+ZmxhZ3Mob3B0cyk7Ci0gICAgICAgICByZXN0b3JlX2ZsYWdzID0gZmFsc2U7Ci0gICAgICAgICBvbGRfY2FzZV9jaGFuZ2UgfD0gbV9oYXNfY2FzZV9jaGFuZ2U7IC8vIGRlZmVyIGVuZCBvZiBzY29wZSBieSBvbmUgJyknCi0gICAgICB9Ci0gICAgICBlbHNlIGlmKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSA9PSByZWdleF9jb25zdGFudHM6OnN5bnRheF9jb2xvbikKLSAgICAgIHsKLSAgICAgICAgIC8vIHVwZGF0ZSBmbGFncyBhbmQgY2Fycnkgb24gdW50aWwgdGhlIG1hdGNoaW5nICcpJyBpcyBmb3VuZDoKLSAgICAgICAgIHRoaXMtPmZsYWdzKG9wdHMpOwotICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICAgLy8gUmV3aW5kIHRvIHN0YXJ0IG9mICg/IHNlcXVlbmNlOgotICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fbWFyaykgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX3BlcmxfZXh0ZW5zaW9uLCBtX3Bvc2l0aW9uIC0gbV9iYXNlKTsKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLQotICAgICAgLy8gZmluYWxseSBhcHBlbmQgYSBjYXNlIGNoYW5nZSBzdGF0ZSBpZiB3ZSBuZWVkIGl0OgotICAgICAgaWYobV9oYXNfY2FzZV9jaGFuZ2UpCi0gICAgICB7Ci0gICAgICAgICBzdGF0aWNfY2FzdDxyZV9jYXNlKj4oCi0gICAgICAgICAgICB0aGlzLT5hcHBlbmRfc3RhdGUoc3ludGF4X2VsZW1lbnRfdG9nZ2xlX2Nhc2UsIHNpemVvZihyZV9jYXNlKSkKLSAgICAgICAgICAgICktPmljYXNlID0gb3B0cyAmIHJlZ2Jhc2U6OmljYXNlOwotICAgICAgfQotCi0gICB9Ci0gICAvLwotICAgLy8gbm93IHJlY3Vyc2l2ZWx5IGFkZCBtb3JlIHN0YXRlcywgdGhpcyB3aWxsIHRlcm1pbmF0ZSB3aGVuIHdlIGdldCB0byBhCi0gICAvLyBtYXRjaGluZyAnKScgOgotICAgLy8KLSAgIHBhcnNlX2FsbCgpOwotICAgLy8KLSAgIC8vIFVud2luZCBhbHRlcm5hdGl2ZXM6Ci0gICAvLwotICAgaWYoMCA9PSB1bndpbmRfYWx0cyhsYXN0X3BhcmVuX3N0YXJ0KSkKLSAgIHsKLSAgICAgIC8vIFJld2luZCB0byBzdGFydCBvZiAoPyBzZXF1ZW5jZToKLSAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgIHdoaWxlKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX21hcmspIC0tbV9wb3NpdGlvbjsKLSAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9wZXJsX2V4dGVuc2lvbiwgbV9wb3NpdGlvbiAtIG1fYmFzZSwgIkludmFsaWQgYWx0ZXJuYXRpb24gb3BlcmF0b3JzIHdpdGhpbiAoPy4uLikgYmxvY2suIik7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICB9Ci0gICAvLwotICAgLy8gd2UgZWl0aGVyIGhhdmUgYSAnKScgb3Igd2UgaGF2ZSBydW4gb3V0IG9mIGNoYXJhY3RlcnMgcHJlbWF0dXJlbHk6Ci0gICAvLwotICAgaWYobV9wb3NpdGlvbiA9PSBtX2VuZCkKLSAgIHsKLSAgICAgIC8vIFJld2luZCB0byBzdGFydCBvZiAoPyBzZXF1ZW5jZToKLSAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgIHdoaWxlKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX21hcmspIC0tbV9wb3NpdGlvbjsKLSAgICAgIHRoaXMtPmZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9wYXJlbiwgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpkaXN0YW5jZShtX2Jhc2UsIG1fZW5kKSk7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICB9Ci0gICBORE5CT09TVF9BU1NFUlQodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pID09IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2Nsb3NlX21hcmspOwotICAgKyttX3Bvc2l0aW9uOwotICAgLy8KLSAgIC8vIHJlc3RvcmUgdGhlIGZsYWdzOgotICAgLy8KLSAgIGlmKHJlc3RvcmVfZmxhZ3MpCi0gICB7Ci0gICAgICAvLyBhcHBlbmQgYSBjYXNlIGNoYW5nZSBzdGF0ZSBpZiB3ZSBuZWVkIGl0OgotICAgICAgaWYobV9oYXNfY2FzZV9jaGFuZ2UpCi0gICAgICB7Ci0gICAgICAgICBzdGF0aWNfY2FzdDxyZV9jYXNlKj4oCi0gICAgICAgICAgICB0aGlzLT5hcHBlbmRfc3RhdGUoc3ludGF4X2VsZW1lbnRfdG9nZ2xlX2Nhc2UsIHNpemVvZihyZV9jYXNlKSkKLSAgICAgICAgICAgICktPmljYXNlID0gb2xkX2ZsYWdzICYgcmVnYmFzZTo6aWNhc2U7Ci0gICAgICB9Ci0gICAgICB0aGlzLT5mbGFncyhvbGRfZmxhZ3MpOwotICAgfQotICAgLy8KLSAgIC8vIHNldCB1cCB0aGUganVtcCBwb2ludGVyIGlmIHdlIGhhdmUgb25lOgotICAgLy8KLSAgIGlmKGp1bXBfb2Zmc2V0KQotICAgewotICAgICAgdGhpcy0+bV9wZGF0YS0+bV9kYXRhLmFsaWduKCk7Ci0gICAgICByZV9qdW1wKiBqbXAgPSBzdGF0aWNfY2FzdDxyZV9qdW1wKj4odGhpcy0+Z2V0YWRkcmVzcyhqdW1wX29mZnNldCkpOwotICAgICAgam1wLT5hbHQuaSA9IHRoaXMtPm1fcGRhdGEtPm1fZGF0YS5zaXplKCkgLSB0aGlzLT5nZXRvZmZzZXQoam1wKTsKLSAgICAgIGlmKCh0aGlzLT5tX2xhc3Rfc3RhdGUgPT0gam1wKSAmJiAobWFya2lkICE9IC0yKSkKLSAgICAgIHsKLSAgICAgICAgIC8vIE9vcHMuLi4gd2UgZGlkbid0IGhhdmUgYW55dGhpbmcgaW5zaWRlIHRoZSBhc3NlcnRpb24uCi0gICAgICAgICAvLyBOb3RlIHdlIGRvbid0IGdldCBoZXJlIGZvciBuZWdhdGVkIGZvcndhcmQgbG9va2FoZWFkIGFzICg/ISkKLSAgICAgICAgIC8vIGRvZXMgaGF2ZSBzb21lIHVzZXMuCi0gICAgICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgKD8gc2VxdWVuY2U6Ci0gICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9tYXJrKSAtLW1fcG9zaXRpb247Ci0gICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfcGVybF9leHRlbnNpb24sIG1fcG9zaXRpb24gLSBtX2Jhc2UsICJJbnZhbGlkIG9yIGVtcHR5IHplcm8gd2lkdGggYXNzZXJ0aW9uLiIpOwotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgfQotICAgLy8KLSAgIC8vIHZlcmlmeSB0aGF0IGlmIHRoaXMgaXMgY29uZGl0aW9uYWwgZXhwcmVzc2lvbiwgdGhhdCB3ZSBkbyBoYXZlCi0gICAvLyBhbiBhbHRlcm5hdGl2ZSwgaWYgbm90IGFkZCBvbmU6Ci0gICAvLwotICAgaWYobWFya2lkID09IC00KQotICAgewotICAgICAgcmVfc3ludGF4X2Jhc2UqIGIgPSB0aGlzLT5nZXRhZGRyZXNzKGV4cGVjdGVkX2FsdF9wb2ludCk7Ci0gICAgICAvLyBNYWtlIHN1cmUgd2UgaGF2ZSBleGFjdGx5IG9uZSBhbHRlcm5hdGl2ZSBmb2xsb3dpbmcgdGhpcyBzdGF0ZToKLSAgICAgIGlmKGItPnR5cGUgIT0gc3ludGF4X2VsZW1lbnRfYWx0KQotICAgICAgewotICAgICAgICAgcmVfYWx0KiBhbHQgPSBzdGF0aWNfY2FzdDxyZV9hbHQqPih0aGlzLT5pbnNlcnRfc3RhdGUoZXhwZWN0ZWRfYWx0X3BvaW50LCBzeW50YXhfZWxlbWVudF9hbHQsIHNpemVvZihyZV9hbHQpKSk7Ci0gICAgICAgICBhbHQtPmFsdC5pID0gdGhpcy0+bV9wZGF0YS0+bV9kYXRhLnNpemUoKSAtIHRoaXMtPmdldG9mZnNldChhbHQpOwotICAgICAgfQotICAgICAgZWxzZSBpZih0aGlzLT5nZXRhZGRyZXNzKHN0YXRpY19jYXN0PHJlX2FsdCo+KGIpLT5hbHQuaSwgYiktPnR5cGUgPT0gc3ludGF4X2VsZW1lbnRfYWx0KQotICAgICAgewotICAgICAgICAgLy8gQ2FuJ3QgaGF2ZSBzZWVuIG1vcmUgdGhhbiBvbmUgYWx0ZXJuYXRpdmU6Ci0gICAgICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgKD8gc2VxdWVuY2U6Ci0gICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9tYXJrKSAtLW1fcG9zaXRpb247Ci0gICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfYmFkX3BhdHRlcm4sIG1fcG9zaXRpb24gLSBtX2Jhc2UsICJNb3JlIHRoYW4gb25lIGFsdGVybmF0aW9uIG9wZXJhdG9yIHwgd2FzIGVuY291bnRlcmVkIGluc2lkZSBhIGNvbmRpdGlvbmFsIGV4cHJlc3Npb24uIik7Ci0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgICAvLyBXZSBtdXN0ICpub3QqIGhhdmUgc2VlbiBhbiBhbHRlcm5hdGl2ZSBpbnNpZGUgYSAoREVGSU5FKSBibG9jazoKLSAgICAgICAgIGIgPSB0aGlzLT5nZXRhZGRyZXNzKGItPm5leHQuaSwgYik7Ci0gICAgICAgICBpZigoYi0+dHlwZSA9PSBzeW50YXhfZWxlbWVudF9hc3NlcnRfYmFja3JlZikgJiYgKHN0YXRpY19jYXN0PHJlX2JyYWNlKj4oYiktPmluZGV4ID09IDk5OTkpKQotICAgICAgICAgewotICAgICAgICAgICAgLy8gUmV3aW5kIHRvIHN0YXJ0IG9mICg/IHNlcXVlbmNlOgotICAgICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wZW5fbWFyaykgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2JhZF9wYXR0ZXJuLCBtX3Bvc2l0aW9uIC0gbV9iYXNlLCAiQWx0ZXJuYXRpb24gb3BlcmF0b3JzIGFyZSBub3QgYWxsb3dlZCBpbnNpZGUgYSBERUZJTkUgYmxvY2suIik7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICB9Ci0gICAgICB9Ci0gICAgICAvLyBjaGVjayBmb3IgaW52YWxpZCByZXBldGl0aW9uIG9mIG5leHQgc3RhdGU6Ci0gICAgICBiID0gdGhpcy0+Z2V0YWRkcmVzcyhleHBlY3RlZF9hbHRfcG9pbnQpOwotICAgICAgYiA9IHRoaXMtPmdldGFkZHJlc3Moc3RhdGljX2Nhc3Q8cmVfYWx0Kj4oYiktPm5leHQuaSwgYik7Ci0gICAgICBpZigoYi0+dHlwZSAhPSBzeW50YXhfZWxlbWVudF9hc3NlcnRfYmFja3JlZikKLSAgICAgICAgICYmIChiLT50eXBlICE9IHN5bnRheF9lbGVtZW50X3N0YXJ0bWFyaykpCi0gICAgICB7Ci0gICAgICAgICAvLyBSZXdpbmQgdG8gc3RhcnQgb2YgKD8gc2VxdWVuY2U6Ci0gICAgICAgICAtLW1fcG9zaXRpb247Ci0gICAgICAgICB3aGlsZSh0aGlzLT5tX3RyYWl0cy5zeW50YXhfdHlwZSgqbV9wb3NpdGlvbikgIT0gcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3Blbl9tYXJrKSAtLW1fcG9zaXRpb247Ci0gICAgICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfYmFkcmVwZWF0LCBtX3Bvc2l0aW9uIC0gbV9iYXNlLCAiQSByZXBldGl0aW9uIG9wZXJhdG9yIGNhbm5vdCBiZSBhcHBsaWVkIHRvIGEgemVyby13aWR0aCBhc3NlcnRpb24uIik7Ci0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICB9Ci0gICAvLwotICAgLy8gYXBwZW5kIGNsb3NpbmcgcGFyZW50aGVzaXMgc3RhdGU6Ci0gICAvLwotICAgcGIgPSBzdGF0aWNfY2FzdDxyZV9icmFjZSo+KHRoaXMtPmFwcGVuZF9zdGF0ZShzeW50YXhfZWxlbWVudF9lbmRtYXJrLCBzaXplb2YocmVfYnJhY2UpKSk7Ci0gICBwYi0+aW5kZXggPSBtYXJraWQ7Ci0gICBwYi0+aWNhc2UgPSB0aGlzLT5mbGFncygpICYgcmVnYmFzZTo6aWNhc2U7Ci0gICB0aGlzLT5tX3BhcmVuX3N0YXJ0ID0gbGFzdF9wYXJlbl9zdGFydDsKLSAgIC8vCi0gICAvLyByZXN0b3JlIHRoZSBhbHRlcm5hdGUgaW5zZXJ0aW9uIHBvaW50OgotICAgLy8KLSAgIHRoaXMtPm1fYWx0X2luc2VydF9wb2ludCA9IGxhc3RfYWx0X3BvaW50OwotICAgLy8KLSAgIC8vIGFuZCB0aGUgY2FzZSBjaGFuZ2UgZGF0YToKLSAgIC8vCi0gICBtX2hhc19jYXNlX2NoYW5nZSA9IG9sZF9jYXNlX2NoYW5nZTsKLSAgIC8vCi0gICAvLyBBbmQgdGhlIG1hcmtfcmVzZXQgZGF0YToKLSAgIC8vCi0gICBpZihtX21heF9tYXJrID4gbV9tYXJrX2NvdW50KQotICAgewotICAgICAgbV9tYXJrX2NvdW50ID0gbV9tYXhfbWFyazsKLSAgIH0KLSAgIG1fbWFya19yZXNldCA9IG1hcmtfcmVzZXQ7Ci0gICBtX21heF9tYXJrID0gbWF4X21hcms7Ci0KLQotICAgaWYobWFya2lkID4gMCkKLSAgIHsKLSNpZm5kZWYgTkROQk9PU1RfTk9fU1REX0RJU1RBTkNFCi0gICAgICBpZih0aGlzLT5mbGFncygpICYgcmVnYmFzZTo6c2F2ZV9zdWJleHByZXNzaW9uX2xvY2F0aW9uKQotICAgICAgICAgdGhpcy0+bV9wZGF0YS0+bV9zdWJzLmF0KG1hcmtpZCAtIDEpLnNlY29uZCA9IHN0ZDo6ZGlzdGFuY2UobV9iYXNlLCBtX3Bvc2l0aW9uKSAtIDE7Ci0jZWxzZQotICAgICAgaWYodGhpcy0+ZmxhZ3MoKSAmIHJlZ2Jhc2U6OnNhdmVfc3ViZXhwcmVzc2lvbl9sb2NhdGlvbikKLSAgICAgICAgIHRoaXMtPm1fcGRhdGEtPm1fc3Vicy5hdChtYXJraWQgLSAxKS5zZWNvbmQgPSAobV9wb3NpdGlvbiAtIG1fYmFzZSkgLSAxOwotI2VuZGlmCi0gICAgICAvLwotICAgICAgLy8gYWxsb3cgYmFja3JlZnMgdG8gdGhpcyBtYXJrOgotICAgICAgLy8KLSAgICAgIGlmKChtYXJraWQgPiAwKSAmJiAobWFya2lkIDwgKGludCkoc2l6ZW9mKHVuc2lnbmVkKSAqIENIQVJfQklUKSkpCi0gICAgICAgICB0aGlzLT5tX2JhY2tyZWZzIHw9IDF1IDw8IChtYXJraWQgLSAxKTsKLSAgIH0KLSAgIHJldHVybiB0cnVlOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLWJvb2wgYmFzaWNfcmVnZXhfcGFyc2VyPGNoYXJULCB0cmFpdHM+OjphZGRfZW1hY3NfY29kZShib29sIG5lZ2F0ZSkKLXsKLSAgIC8vCi0gICAvLyBwYXJzZXMgYW4gZW1hY3Mgc3R5bGUgXHN4IG9yIFxTeCBjb25zdHJ1Y3QuCi0gICAvLwotICAgaWYoKyttX3Bvc2l0aW9uID09IG1fZW5kKQotICAgewotICAgICAgLy8gUmV3aW5kIHRvIHN0YXJ0IG9mIHNlcXVlbmNlOgotICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgd2hpbGUodGhpcy0+bV90cmFpdHMuc3ludGF4X3R5cGUoKm1fcG9zaXRpb24pICE9IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X2VzY2FwZSkgLS1tX3Bvc2l0aW9uOwotICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2VzY2FwZSwgbV9wb3NpdGlvbiAtIG1fYmFzZSk7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICB9Ci0gICBiYXNpY19jaGFyX3NldDxjaGFyVCwgdHJhaXRzPiBjaGFyX3NldDsKLSAgIGlmKG5lZ2F0ZSkKLSAgICAgIGNoYXJfc2V0Lm5lZ2F0ZSgpOwotCi0gICBzdGF0aWMgY29uc3QgY2hhclQgc19wdW5jdFs1XSA9IHsgJ3AnLCAndScsICduJywgJ2MnLCAndCcsIH07Ci0KLSAgIHN3aXRjaCgqbV9wb3NpdGlvbikKLSAgIHsKLSAgIGNhc2UgJ3MnOgotICAgY2FzZSAnICc6Ci0gICAgICBjaGFyX3NldC5hZGRfY2xhc3ModGhpcy0+bV9tYXNrX3NwYWNlKTsKLSAgICAgIGJyZWFrOwotICAgY2FzZSAndyc6Ci0gICAgICBjaGFyX3NldC5hZGRfY2xhc3ModGhpcy0+bV93b3JkX21hc2spOwotICAgICAgYnJlYWs7Ci0gICBjYXNlICdfJzoKLSAgICAgIGNoYXJfc2V0LmFkZF9zaW5nbGUoZGlncmFwaDxjaGFyVD4oY2hhclQoJyQnKSkpOyAKLSAgICAgIGNoYXJfc2V0LmFkZF9zaW5nbGUoZGlncmFwaDxjaGFyVD4oY2hhclQoJyYnKSkpOyAKLSAgICAgIGNoYXJfc2V0LmFkZF9zaW5nbGUoZGlncmFwaDxjaGFyVD4oY2hhclQoJyonKSkpOyAKLSAgICAgIGNoYXJfc2V0LmFkZF9zaW5nbGUoZGlncmFwaDxjaGFyVD4oY2hhclQoJysnKSkpOyAKLSAgICAgIGNoYXJfc2V0LmFkZF9zaW5nbGUoZGlncmFwaDxjaGFyVD4oY2hhclQoJy0nKSkpOyAKLSAgICAgIGNoYXJfc2V0LmFkZF9zaW5nbGUoZGlncmFwaDxjaGFyVD4oY2hhclQoJ18nKSkpOyAKLSAgICAgIGNoYXJfc2V0LmFkZF9zaW5nbGUoZGlncmFwaDxjaGFyVD4oY2hhclQoJzwnKSkpOyAKLSAgICAgIGNoYXJfc2V0LmFkZF9zaW5nbGUoZGlncmFwaDxjaGFyVD4oY2hhclQoJz4nKSkpOyAKLSAgICAgIGJyZWFrOwotICAgY2FzZSAnLic6Ci0gICAgICBjaGFyX3NldC5hZGRfY2xhc3ModGhpcy0+bV90cmFpdHMubG9va3VwX2NsYXNzbmFtZShzX3B1bmN0LCBzX3B1bmN0KzUpKTsKLSAgICAgIGJyZWFrOwotICAgY2FzZSAnKCc6Ci0gICAgICBjaGFyX3NldC5hZGRfc2luZ2xlKGRpZ3JhcGg8Y2hhclQ+KGNoYXJUKCcoJykpKTsgCi0gICAgICBjaGFyX3NldC5hZGRfc2luZ2xlKGRpZ3JhcGg8Y2hhclQ+KGNoYXJUKCdbJykpKTsgCi0gICAgICBjaGFyX3NldC5hZGRfc2luZ2xlKGRpZ3JhcGg8Y2hhclQ+KGNoYXJUKCd7JykpKTsgCi0gICAgICBicmVhazsKLSAgIGNhc2UgJyknOgotICAgICAgY2hhcl9zZXQuYWRkX3NpbmdsZShkaWdyYXBoPGNoYXJUPihjaGFyVCgnKScpKSk7IAotICAgICAgY2hhcl9zZXQuYWRkX3NpbmdsZShkaWdyYXBoPGNoYXJUPihjaGFyVCgnXScpKSk7IAotICAgICAgY2hhcl9zZXQuYWRkX3NpbmdsZShkaWdyYXBoPGNoYXJUPihjaGFyVCgnfScpKSk7IAotICAgICAgYnJlYWs7Ci0gICBjYXNlICciJzoKLSAgICAgIGNoYXJfc2V0LmFkZF9zaW5nbGUoZGlncmFwaDxjaGFyVD4oY2hhclQoJyInKSkpOyAKLSAgICAgIGNoYXJfc2V0LmFkZF9zaW5nbGUoZGlncmFwaDxjaGFyVD4oY2hhclQoJ1wnJykpKTsgCi0gICAgICBjaGFyX3NldC5hZGRfc2luZ2xlKGRpZ3JhcGg8Y2hhclQ+KGNoYXJUKCdgJykpKTsgCi0gICAgICBicmVhazsKLSAgIGNhc2UgJ1wnJzoKLSAgICAgIGNoYXJfc2V0LmFkZF9zaW5nbGUoZGlncmFwaDxjaGFyVD4oY2hhclQoJ1wnJykpKTsgCi0gICAgICBjaGFyX3NldC5hZGRfc2luZ2xlKGRpZ3JhcGg8Y2hhclQ+KGNoYXJUKCcsJykpKTsgCi0gICAgICBjaGFyX3NldC5hZGRfc2luZ2xlKGRpZ3JhcGg8Y2hhclQ+KGNoYXJUKCcjJykpKTsgCi0gICAgICBicmVhazsKLSAgIGNhc2UgJzwnOgotICAgICAgY2hhcl9zZXQuYWRkX3NpbmdsZShkaWdyYXBoPGNoYXJUPihjaGFyVCgnOycpKSk7IAotICAgICAgYnJlYWs7Ci0gICBjYXNlICc+JzoKLSAgICAgIGNoYXJfc2V0LmFkZF9zaW5nbGUoZGlncmFwaDxjaGFyVD4oY2hhclQoJ1xuJykpKTsgCi0gICAgICBjaGFyX3NldC5hZGRfc2luZ2xlKGRpZ3JhcGg8Y2hhclQ+KGNoYXJUKCdcZicpKSk7IAotICAgICAgYnJlYWs7Ci0gICBkZWZhdWx0OgotICAgICAgZmFpbChyZWdleF9jb25zdGFudHM6OmVycm9yX2N0eXBlLCBtX3Bvc2l0aW9uIC0gbV9iYXNlKTsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgIH0KLSAgIGlmKDAgPT0gdGhpcy0+YXBwZW5kX3NldChjaGFyX3NldCkpCi0gICB7Ci0gICAgICBmYWlsKHJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfY3R5cGUsIG1fcG9zaXRpb24gLSBtX2Jhc2UpOwotICAgICAgcmV0dXJuIGZhbHNlOwotICAgfQotICAgKyttX3Bvc2l0aW9uOwotICAgcmV0dXJuIHRydWU7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3B0aW9uX3R5cGUgYmFzaWNfcmVnZXhfcGFyc2VyPGNoYXJULCB0cmFpdHM+OjpwYXJzZV9vcHRpb25zKCkKLXsKLSAgIC8vIHdlIGhhdmUgYSAoP2ltc3gtaW1zeCkgZ3JvdXAsIGNvbnZlcnQgaXQgaW50byBhIHNldCBvZiBmbGFnczoKLSAgIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X29wdGlvbl90eXBlIGYgPSB0aGlzLT5mbGFncygpOwotICAgYm9vbCBicmVha291dCA9IGZhbHNlOwotICAgZG8KLSAgIHsKLSAgICAgIHN3aXRjaCgqbV9wb3NpdGlvbikKLSAgICAgIHsKLSAgICAgIGNhc2UgJ3MnOgotICAgICAgICAgZiB8PSByZWdleF9jb25zdGFudHM6Om1vZF9zOwotICAgICAgICAgZiAmPSB+cmVnZXhfY29uc3RhbnRzOjpub19tb2RfczsKLSAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSAnbSc6Ci0gICAgICAgICBmICY9IH5yZWdleF9jb25zdGFudHM6Om5vX21vZF9tOwotICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlICdpJzoKLSAgICAgICAgIGYgfD0gcmVnZXhfY29uc3RhbnRzOjppY2FzZTsKLSAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSAneCc6Ci0gICAgICAgICBmIHw9IHJlZ2V4X2NvbnN0YW50czo6bW9kX3g7Ci0gICAgICAgICBicmVhazsKLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICBicmVha291dCA9IHRydWU7Ci0gICAgICAgICBjb250aW51ZTsKLSAgICAgIH0KLSAgICAgIGlmKCsrbV9wb3NpdGlvbiA9PSBtX2VuZCkKLSAgICAgIHsKLSAgICAgICAgIC8vIFJld2luZCB0byBzdGFydCBvZiAoPyBzZXF1ZW5jZToKLSAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgIHdoaWxlKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX21hcmspIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9wYXJlbiwgbV9wb3NpdGlvbiAtIG1fYmFzZSk7Ci0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICB9Ci0gICB3aGlsZSghYnJlYWtvdXQpOwotICAgCi0gICBicmVha291dCA9IGZhbHNlOwotCi0gICBpZigqbV9wb3NpdGlvbiA9PSBzdGF0aWNfY2FzdDxjaGFyVD4oJy0nKSkKLSAgIHsKLSAgICAgIGlmKCsrbV9wb3NpdGlvbiA9PSBtX2VuZCkKLSAgICAgIHsKLSAgICAgICAgIC8vIFJld2luZCB0byBzdGFydCBvZiAoPyBzZXF1ZW5jZToKLSAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgIHdoaWxlKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX21hcmspIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9wYXJlbiwgbV9wb3NpdGlvbiAtIG1fYmFzZSk7Ci0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICAgICBkbwotICAgICAgewotICAgICAgICAgc3dpdGNoKCptX3Bvc2l0aW9uKQotICAgICAgICAgewotICAgICAgICAgY2FzZSAncyc6Ci0gICAgICAgICAgICBmICY9IH5yZWdleF9jb25zdGFudHM6Om1vZF9zOwotICAgICAgICAgICAgZiB8PSByZWdleF9jb25zdGFudHM6Om5vX21vZF9zOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICBjYXNlICdtJzoKLSAgICAgICAgICAgIGYgfD0gcmVnZXhfY29uc3RhbnRzOjpub19tb2RfbTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgY2FzZSAnaSc6Ci0gICAgICAgICAgICBmICY9IH5yZWdleF9jb25zdGFudHM6OmljYXNlOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICBjYXNlICd4JzoKLSAgICAgICAgICAgIGYgJj0gfnJlZ2V4X2NvbnN0YW50czo6bW9kX3g7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBicmVha291dCA9IHRydWU7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgIH0KLSAgICAgICAgIGlmKCsrbV9wb3NpdGlvbiA9PSBtX2VuZCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIFJld2luZCB0byBzdGFydCBvZiAoPyBzZXF1ZW5jZToKLSAgICAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIHdoaWxlKHRoaXMtPm1fdHJhaXRzLnN5bnRheF90eXBlKCptX3Bvc2l0aW9uKSAhPSByZWdleF9jb25zdGFudHM6OnN5bnRheF9vcGVuX21hcmspIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9wYXJlbiwgbV9wb3NpdGlvbiAtIG1fYmFzZSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICB9Ci0gICAgICB9Ci0gICAgICB3aGlsZSghYnJlYWtvdXQpOwotICAgfQotICAgcmV0dXJuIGY7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotYm9vbCBiYXNpY19yZWdleF9wYXJzZXI8Y2hhclQsIHRyYWl0cz46OnVud2luZF9hbHRzKHN0ZDo6cHRyZGlmZl90IGxhc3RfcGFyZW5fc3RhcnQpCi17Ci0gICAvLwotICAgLy8gSWYgd2UgZGlkbid0IGFjdHVhbGx5IGFkZCBhbnkgc3RhdGVzIGFmdGVyIHRoZSBsYXN0IAotICAgLy8gYWx0ZXJuYXRpdmUgdGhlbiB0aGF0J3MgYW4gZXJyb3I6Ci0gICAvLwotICAgaWYoKHRoaXMtPm1fYWx0X2luc2VydF9wb2ludCA9PSBzdGF0aWNfY2FzdDxzdGQ6OnB0cmRpZmZfdD4odGhpcy0+bV9wZGF0YS0+bV9kYXRhLnNpemUoKSkpCi0gICAgICAmJiBtX2FsdF9qdW1wcy5zaXplKCkgJiYgKG1fYWx0X2p1bXBzLmJhY2soKSA+IGxhc3RfcGFyZW5fc3RhcnQpCi0gICAgICAmJgotICAgICAgISgKLSAgICAgICAgICgodGhpcy0+ZmxhZ3MoKSAmIHJlZ2Jhc2U6Om1haW5fb3B0aW9uX3R5cGUpID09IHJlZ2Jhc2U6OnBlcmxfc3ludGF4X2dyb3VwKQotICAgICAgICAgICAmJgotICAgICAgICAgKCh0aGlzLT5mbGFncygpICYgcmVnYmFzZTo6bm9fZW1wdHlfZXhwcmVzc2lvbnMpID09IDApCi0gICAgICAgICkKLSAgICAgICkKLSAgIHsKLSAgICAgIGZhaWwocmVnZXhfY29uc3RhbnRzOjplcnJvcl9lbXB0eSwgdGhpcy0+bV9wb3NpdGlvbiAtIHRoaXMtPm1fYmFzZSwgIkNhbid0IHRlcm1pbmF0ZSBhIHN1Yi1leHByZXNzaW9uIHdpdGggYW4gYWx0ZXJuYXRpb24gb3BlcmF0b3IgfC4iKTsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgIH0KLSAgIC8vIAotICAgLy8gRml4IHVwIG91ciBhbHRlcm5hdGl2ZXM6Ci0gICAvLwotICAgd2hpbGUobV9hbHRfanVtcHMuc2l6ZSgpICYmIChtX2FsdF9qdW1wcy5iYWNrKCkgPiBsYXN0X3BhcmVuX3N0YXJ0KSkKLSAgIHsKLSAgICAgIC8vCi0gICAgICAvLyBmaXggdXAgdGhlIGp1bXAgdG8gcG9pbnQgdG8gdGhlIGVuZCBvZiB0aGUgc3RhdGVzCi0gICAgICAvLyB0aGF0IHdlJ3ZlIGp1c3QgYWRkZWQ6Ci0gICAgICAvLwotICAgICAgc3RkOjpwdHJkaWZmX3QganVtcF9vZmZzZXQgPSBtX2FsdF9qdW1wcy5iYWNrKCk7Ci0gICAgICBtX2FsdF9qdW1wcy5wb3BfYmFjaygpOwotICAgICAgdGhpcy0+bV9wZGF0YS0+bV9kYXRhLmFsaWduKCk7Ci0gICAgICByZV9qdW1wKiBqbXAgPSBzdGF0aWNfY2FzdDxyZV9qdW1wKj4odGhpcy0+Z2V0YWRkcmVzcyhqdW1wX29mZnNldCkpOwotICAgICAgTkROQk9PU1RfQVNTRVJUKGptcC0+dHlwZSA9PSBzeW50YXhfZWxlbWVudF9qdW1wKTsKLSAgICAgIGptcC0+YWx0LmkgPSB0aGlzLT5tX3BkYXRhLT5tX2RhdGEuc2l6ZSgpIC0ganVtcF9vZmZzZXQ7Ci0gICB9Ci0gICByZXR1cm4gdHJ1ZTsKLX0KLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgcmVfZGV0YWlsCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfU1VGRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9jX3JlZ2V4X3RyYWl0cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L2NfcmVnZXhfdHJhaXRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjJhZGQ5MS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L2NfcmVnZXhfdHJhaXRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIxMSArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAoYykgMjAwNAotICogSm9obiBNYWRkb2NrCi0gKgotICogVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0gKiBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLSAqIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKi8KLSAKLSAvKgotICAqICAgTE9DQVRJT046ICAgIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLSAgKiAgIEZJTEUgICAgICAgICBjX3JlZ2V4X3RyYWl0cy5ocHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IERlY2xhcmVzIHJlZ3VsYXIgZXhwcmVzc2lvbiB0cmFpdHMgY2xhc3MgdGhhdCB3cmFwcyB0aGUgZ2xvYmFsIEMgbG9jYWxlLgotICAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX0NfUkVHRVhfVFJBSVRTX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9DX1JFR0VYX1RSQUlUU19IUFBfSU5DTFVERUQKLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9DT05GSUdfSFBQCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvY29uZmlnLmhwcD4KLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9XT1JLQVJPVU5EX0hQUAotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X3dvcmthcm91bmQuaHBwPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxjY3R5cGU+Ci0KLSNpZmRlZiBORE5CT09TVF9OT19TVERDX05BTUVTUEFDRQotbmFtZXNwYWNlIHN0ZHsKLSAgIHVzaW5nIDo6c3RybGVuOyB1c2luZyA6OnRvbG93ZXI7Ci19Ci0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1BSRUZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLXN0cnVjdCBjX3JlZ2V4X3RyYWl0czsKLQotdGVtcGxhdGU8Pgotc3RydWN0IE5ETkJPT1NUX1JFR0VYX0RFQ0wgY19yZWdleF90cmFpdHM8Y2hhcj4KLXsKLSAgIGNfcmVnZXhfdHJhaXRzKCl7fQotICAgdHlwZWRlZiBjaGFyIGNoYXJfdHlwZTsKLSAgIHR5cGVkZWYgc3RkOjpzaXplX3Qgc2l6ZV90eXBlOwotICAgdHlwZWRlZiBzdGQ6OnN0cmluZyBzdHJpbmdfdHlwZTsKLSAgIHN0cnVjdCBsb2NhbGVfdHlwZXt9OwotICAgdHlwZWRlZiBuZG5ib29zdDo6dWludDMyX3QgY2hhcl9jbGFzc190eXBlOwotCi0gICBzdGF0aWMgc2l6ZV90eXBlIGxlbmd0aChjb25zdCBjaGFyX3R5cGUqIHApIAotICAgeyAKLSAgICAgIHJldHVybiAoc3RkOjpzdHJsZW4pKHApOyAKLSAgIH0KLQotICAgY2hhciB0cmFuc2xhdGUoY2hhciBjKSBjb25zdCAKLSAgIHsgCi0gICAgICByZXR1cm4gYzsgCi0gICB9Ci0gICBjaGFyIHRyYW5zbGF0ZV9ub2Nhc2UoY2hhciBjKSBjb25zdCAKLSAgIHsgCi0gICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y2hhcj4oKHN0ZDo6dG9sb3dlcikoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oYykpKTsgCi0gICB9Ci0KLSAgIHN0YXRpYyBzdHJpbmdfdHlwZSBORE5CT09TVF9SRUdFWF9DQUxMIHRyYW5zZm9ybShjb25zdCBjaGFyKiBwMSwgY29uc3QgY2hhciogcDIpOwotICAgc3RhdGljIHN0cmluZ190eXBlIE5ETkJPT1NUX1JFR0VYX0NBTEwgdHJhbnNmb3JtX3ByaW1hcnkoY29uc3QgY2hhciogcDEsIGNvbnN0IGNoYXIqIHAyKTsKLQotICAgc3RhdGljIGNoYXJfY2xhc3NfdHlwZSBORE5CT09TVF9SRUdFWF9DQUxMIGxvb2t1cF9jbGFzc25hbWUoY29uc3QgY2hhciogcDEsIGNvbnN0IGNoYXIqIHAyKTsKLSAgIHN0YXRpYyBzdHJpbmdfdHlwZSBORE5CT09TVF9SRUdFWF9DQUxMIGxvb2t1cF9jb2xsYXRlbmFtZShjb25zdCBjaGFyKiBwMSwgY29uc3QgY2hhciogcDIpOwotCi0gICBzdGF0aWMgYm9vbCBORE5CT09TVF9SRUdFWF9DQUxMIGlzY3R5cGUoY2hhciwgY2hhcl9jbGFzc190eXBlKTsKLSAgIHN0YXRpYyBpbnQgTkROQk9PU1RfUkVHRVhfQ0FMTCB2YWx1ZShjaGFyLCBpbnQpOwotCi0gICBsb2NhbGVfdHlwZSBpbWJ1ZShsb2NhbGVfdHlwZSBsKQotICAgeyByZXR1cm4gbDsgfQotICAgbG9jYWxlX3R5cGUgZ2V0bG9jKCljb25zdAotICAgeyByZXR1cm4gbG9jYWxlX3R5cGUoKTsgfQotCi1wcml2YXRlOgotICAgLy8gdGhpcyB0eXBlIGlzIG5vdCBjb3B5YWJsZToKLSAgIGNfcmVnZXhfdHJhaXRzKGNvbnN0IGNfcmVnZXhfdHJhaXRzJik7Ci0gICBjX3JlZ2V4X3RyYWl0cyYgb3BlcmF0b3I9KGNvbnN0IGNfcmVnZXhfdHJhaXRzJik7Ci19OwotCi0jaWZuZGVmIE5ETkJPT1NUX05PX1dSRUdFWAotdGVtcGxhdGU8Pgotc3RydWN0IE5ETkJPT1NUX1JFR0VYX0RFQ0wgY19yZWdleF90cmFpdHM8d2NoYXJfdD4KLXsKLSAgIGNfcmVnZXhfdHJhaXRzKCl7fQotICAgdHlwZWRlZiB3Y2hhcl90IGNoYXJfdHlwZTsKLSAgIHR5cGVkZWYgc3RkOjpzaXplX3Qgc2l6ZV90eXBlOwotICAgdHlwZWRlZiBzdGQ6OndzdHJpbmcgc3RyaW5nX3R5cGU7Ci0gICBzdHJ1Y3QgbG9jYWxlX3R5cGV7fTsKLSAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVpbnQzMl90IGNoYXJfY2xhc3NfdHlwZTsKLQotICAgc3RhdGljIHNpemVfdHlwZSBsZW5ndGgoY29uc3QgY2hhcl90eXBlKiBwKSAKLSAgIHsgCi0gICAgICByZXR1cm4gKHN0ZDo6d2NzbGVuKShwKTsgCi0gICB9Ci0KLSAgIHdjaGFyX3QgdHJhbnNsYXRlKHdjaGFyX3QgYykgY29uc3QgCi0gICB7IAotICAgICAgcmV0dXJuIGM7IAotICAgfQotICAgd2NoYXJfdCB0cmFuc2xhdGVfbm9jYXNlKHdjaGFyX3QgYykgY29uc3QgCi0gICB7IAotICAgICAgcmV0dXJuIChzdGQ6OnRvd2xvd2VyKShjKTsgCi0gICB9Ci0KLSAgIHN0YXRpYyBzdHJpbmdfdHlwZSBORE5CT09TVF9SRUdFWF9DQUxMIHRyYW5zZm9ybShjb25zdCB3Y2hhcl90KiBwMSwgY29uc3Qgd2NoYXJfdCogcDIpOwotICAgc3RhdGljIHN0cmluZ190eXBlIE5ETkJPT1NUX1JFR0VYX0NBTEwgdHJhbnNmb3JtX3ByaW1hcnkoY29uc3Qgd2NoYXJfdCogcDEsIGNvbnN0IHdjaGFyX3QqIHAyKTsKLQotICAgc3RhdGljIGNoYXJfY2xhc3NfdHlwZSBORE5CT09TVF9SRUdFWF9DQUxMIGxvb2t1cF9jbGFzc25hbWUoY29uc3Qgd2NoYXJfdCogcDEsIGNvbnN0IHdjaGFyX3QqIHAyKTsKLSAgIHN0YXRpYyBzdHJpbmdfdHlwZSBORE5CT09TVF9SRUdFWF9DQUxMIGxvb2t1cF9jb2xsYXRlbmFtZShjb25zdCB3Y2hhcl90KiBwMSwgY29uc3Qgd2NoYXJfdCogcDIpOwotCi0gICBzdGF0aWMgYm9vbCBORE5CT09TVF9SRUdFWF9DQUxMIGlzY3R5cGUod2NoYXJfdCwgY2hhcl9jbGFzc190eXBlKTsKLSAgIHN0YXRpYyBpbnQgTkROQk9PU1RfUkVHRVhfQ0FMTCB2YWx1ZSh3Y2hhcl90LCBpbnQpOwotCi0gICBsb2NhbGVfdHlwZSBpbWJ1ZShsb2NhbGVfdHlwZSBsKQotICAgeyByZXR1cm4gbDsgfQotICAgbG9jYWxlX3R5cGUgZ2V0bG9jKCljb25zdAotICAgeyByZXR1cm4gbG9jYWxlX3R5cGUoKTsgfQotCi1wcml2YXRlOgotICAgLy8gdGhpcyB0eXBlIGlzIG5vdCBjb3B5YWJsZToKLSAgIGNfcmVnZXhfdHJhaXRzKGNvbnN0IGNfcmVnZXhfdHJhaXRzJik7Ci0gICBjX3JlZ2V4X3RyYWl0cyYgb3BlcmF0b3I9KGNvbnN0IGNfcmVnZXhfdHJhaXRzJik7Ci19OwotCi0jaWZkZWYgTkROQk9PU1RfUkVHRVhfSEFTX09USEVSX1dDSEFSX1QKLS8vCi0vLyBQcm92aWRlIGFuIHVuc2lnbmVkIHNob3J0IHZlcnNpb24gYXMgd2VsbCwgc28gdGhlIHVzZXIgY2FuIGxpbmsgdG8gdGhpcwotLy8gbm8gbWF0dGVyIHdoZXRoZXIgdGhleSBidWlsZCB3aXRoIC9aYzp3Y2hhcl90IG9yIG5vdCAoTVNWQyBzcGVjaWZpYykuCi0vLwotdGVtcGxhdGU8Pgotc3RydWN0IE5ETkJPT1NUX1JFR0VYX0RFQ0wgY19yZWdleF90cmFpdHM8dW5zaWduZWQgc2hvcnQ+Ci17Ci0gICBjX3JlZ2V4X3RyYWl0cygpe30KLSAgIHR5cGVkZWYgdW5zaWduZWQgc2hvcnQgY2hhcl90eXBlOwotICAgdHlwZWRlZiBzdGQ6OnNpemVfdCBzaXplX3R5cGU7Ci0gICB0eXBlZGVmIHN0ZDo6YmFzaWNfc3RyaW5nPHVuc2lnbmVkIHNob3J0PiBzdHJpbmdfdHlwZTsKLSAgIHN0cnVjdCBsb2NhbGVfdHlwZXt9OwotICAgdHlwZWRlZiBuZG5ib29zdDo6dWludDMyX3QgY2hhcl9jbGFzc190eXBlOwotCi0gICBzdGF0aWMgc2l6ZV90eXBlIGxlbmd0aChjb25zdCBjaGFyX3R5cGUqIHApIAotICAgeyAKLSAgICAgIHJldHVybiAoc3RkOjp3Y3NsZW4pKChjb25zdCB3Y2hhcl90KilwKTsgCi0gICB9Ci0KLSAgIHVuc2lnbmVkIHNob3J0IHRyYW5zbGF0ZSh1bnNpZ25lZCBzaG9ydCBjKSBjb25zdCAKLSAgIHsgCi0gICAgICByZXR1cm4gYzsgCi0gICB9Ci0gICB1bnNpZ25lZCBzaG9ydCB0cmFuc2xhdGVfbm9jYXNlKHVuc2lnbmVkIHNob3J0IGMpIGNvbnN0IAotICAgeyAKLSAgICAgIHJldHVybiAoc3RkOjp0b3dsb3dlcikoKHdjaGFyX3QpYyk7IAotICAgfQotCi0gICBzdGF0aWMgc3RyaW5nX3R5cGUgTkROQk9PU1RfUkVHRVhfQ0FMTCB0cmFuc2Zvcm0oY29uc3QgdW5zaWduZWQgc2hvcnQqIHAxLCBjb25zdCB1bnNpZ25lZCBzaG9ydCogcDIpOwotICAgc3RhdGljIHN0cmluZ190eXBlIE5ETkJPT1NUX1JFR0VYX0NBTEwgdHJhbnNmb3JtX3ByaW1hcnkoY29uc3QgdW5zaWduZWQgc2hvcnQqIHAxLCBjb25zdCB1bnNpZ25lZCBzaG9ydCogcDIpOwotCi0gICBzdGF0aWMgY2hhcl9jbGFzc190eXBlIE5ETkJPT1NUX1JFR0VYX0NBTEwgbG9va3VwX2NsYXNzbmFtZShjb25zdCB1bnNpZ25lZCBzaG9ydCogcDEsIGNvbnN0IHVuc2lnbmVkIHNob3J0KiBwMik7Ci0gICBzdGF0aWMgc3RyaW5nX3R5cGUgTkROQk9PU1RfUkVHRVhfQ0FMTCBsb29rdXBfY29sbGF0ZW5hbWUoY29uc3QgdW5zaWduZWQgc2hvcnQqIHAxLCBjb25zdCB1bnNpZ25lZCBzaG9ydCogcDIpOwotCi0gICBzdGF0aWMgYm9vbCBORE5CT09TVF9SRUdFWF9DQUxMIGlzY3R5cGUodW5zaWduZWQgc2hvcnQsIGNoYXJfY2xhc3NfdHlwZSk7Ci0gICBzdGF0aWMgaW50IE5ETkJPT1NUX1JFR0VYX0NBTEwgdmFsdWUodW5zaWduZWQgc2hvcnQsIGludCk7Ci0KLSAgIGxvY2FsZV90eXBlIGltYnVlKGxvY2FsZV90eXBlIGwpCi0gICB7IHJldHVybiBsOyB9Ci0gICBsb2NhbGVfdHlwZSBnZXRsb2MoKWNvbnN0Ci0gICB7IHJldHVybiBsb2NhbGVfdHlwZSgpOyB9Ci0KLXByaXZhdGU6Ci0gICAvLyB0aGlzIHR5cGUgaXMgbm90IGNvcHlhYmxlOgotICAgY19yZWdleF90cmFpdHMoY29uc3QgY19yZWdleF90cmFpdHMmKTsKLSAgIGNfcmVnZXhfdHJhaXRzJiBvcGVyYXRvcj0oY29uc3QgY19yZWdleF90cmFpdHMmKTsKLX07Ci0KLSNlbmRpZgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fV1JFR0VYCi0KLX0KLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1NVRkZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0jZW5kaWYKLQotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvY2hhcl9yZWdleF90cmFpdHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9jaGFyX3JlZ2V4X3RyYWl0cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU1ZTUyMjguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9jaGFyX3JlZ2V4X3RyYWl0cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw4MSArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAoYykgMjAwMgotICogSm9obiBNYWRkb2NrCi0gKgotICogVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUKLSAqIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlCi0gKiBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICovCi0KLSAvKgotICAqICAgTE9DQVRJT046ICAgIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLSAgKiAgIEZJTEUgICAgICAgICBjaGFyX3JlZ2V4X3RyYWl0cy5jcHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IERlY2xhcmVzIGRlcHJlY2F0ZWQgdHJhaXRzIGNsYXNzZXMgY2hhcl9yZWdleF90cmFpdHM8Pi4KLSAgKi8KLQotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1Y0X0NIQVJfUkVHRVhfVFJBSVRTX0hQUAotI2RlZmluZSBORE5CT09TVF9SRUdFWF9WNF9DSEFSX1JFR0VYX1RSQUlUU19IUFAKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1BSRUZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci0KLW5hbWVzcGFjZSBkZXByZWNhdGVkewotLy8KLS8vIGNsYXNzIGNoYXJfcmVnZXhfdHJhaXRzX2kKLS8vIHByb3ZpZGVzIGNhc2UgaW5zZW5zaXRpdmUgdHJhaXRzIGNsYXNzZXMgKGRlcHJlY2F0ZWQpOgotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotY2xhc3MgY2hhcl9yZWdleF90cmFpdHNfaSA6IHB1YmxpYyByZWdleF90cmFpdHM8Y2hhclQ+IHt9OwotCi10ZW1wbGF0ZTw+Ci1jbGFzcyBjaGFyX3JlZ2V4X3RyYWl0c19pPGNoYXI+IDogcHVibGljIHJlZ2V4X3RyYWl0czxjaGFyPgotewotcHVibGljOgotICAgdHlwZWRlZiBjaGFyIGNoYXJfdHlwZTsKLSAgIHR5cGVkZWYgdW5zaWduZWQgY2hhciB1Y2hhcl90eXBlOwotICAgdHlwZWRlZiB1bnNpZ25lZCBpbnQgc2l6ZV90eXBlOwotICAgdHlwZWRlZiByZWdleF90cmFpdHM8Y2hhcj4gYmFzZV90eXBlOwotCi19OwotCi0jaWZuZGVmIE5ETkJPT1NUX05PX1dSRUdFWAotdGVtcGxhdGU8PgotY2xhc3MgY2hhcl9yZWdleF90cmFpdHNfaTx3Y2hhcl90PiA6IHB1YmxpYyByZWdleF90cmFpdHM8d2NoYXJfdD4KLXsKLXB1YmxpYzoKLSAgIHR5cGVkZWYgd2NoYXJfdCBjaGFyX3R5cGU7Ci0gICB0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHVjaGFyX3R5cGU7Ci0gICB0eXBlZGVmIHVuc2lnbmVkIGludCBzaXplX3R5cGU7Ci0gICB0eXBlZGVmIHJlZ2V4X3RyYWl0czx3Y2hhcl90PiBiYXNlX3R5cGU7Ci0KLX07Ci0jZW5kaWYKLX0gLy8gbmFtZXNwYWNlIGRlcHJlY2F0ZWQKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9TVUZGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotI2VuZGlmIC8vIGluY2x1ZGUKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9jcHBfcmVnZXhfdHJhaXRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvY3BwX3JlZ2V4X3RyYWl0cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVlYzg2NTcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9jcHBfcmVnZXhfdHJhaXRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwOTkgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDQgSm9obiBNYWRkb2NrCi0gKiBDb3B5cmlnaHQgMjAxMSBHYXJtaW4gTHRkLiBvciBpdHMgc3Vic2lkaWFyaWVzCi0gKgotICogVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0gKiBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLSAqIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKi8KLSAKLSAvKgotICAqICAgTE9DQVRJT046ICAgIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLSAgKiAgIEZJTEUgICAgICAgICBjcHBfcmVnZXhfdHJhaXRzLmhwcAotICAqICAgVkVSU0lPTiAgICAgIHNlZSA8bmRuYm9vc3QvdmVyc2lvbi5ocHA+Ci0gICogICBERVNDUklQVElPTjogRGVjbGFyZXMgcmVndWxhciBleHByZXNzaW9uIHRyYWl0cyBjbGFzcyBjcHBfcmVnZXhfdHJhaXRzLgotICAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX0NQUF9SRUdFWF9UUkFJVFNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX0NQUF9SRUdFWF9UUkFJVFNfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2ludGVnZXIuaHBwPgotCi0jaWZuZGVmIE5ETkJPT1NUX05PX1NURF9MT0NBTEUKLQotI2lmbmRlZiBORE5CT09TVF9SRV9QQVRfRVhDRVBUX0hQUAotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3BhdHRlcm5fZXhjZXB0LmhwcD4KLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9UUkFJVFNfREVGQVVMVFNfSFBQX0lOQ0xVREVECi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfdHJhaXRzX2RlZmF1bHRzLmhwcD4KLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19USFJFQURTCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvcGVuZGluZy9zdGF0aWNfbXV0ZXguaHBwPgotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1BSSU1BUllfVFJBTlNGT1JNCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvdjQvcHJpbWFyeV90cmFuc2Zvcm0uaHBwPgotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX09CSkVDVF9DQUNIRV9IUFAKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC9wZW5kaW5nL29iamVjdF9jYWNoZS5ocHA+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPGlzdHJlYW0+Ci0jaW5jbHVkZSA8aW9zPgotI2luY2x1ZGUgPGNsaW1pdHM+Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9QUkVGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDc4NiA0MjUxKQotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdHsgCi0KLS8vCi0vLyBmb3J3YXJkIGRlY2xhcmF0aW9uIGlzIG5lZWRlZCBieSBzb21lIGNvbXBpbGVyczoKLS8vCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci1jbGFzcyBjcHBfcmVnZXhfdHJhaXRzOwotICAgCi1uYW1lc3BhY2UgcmVfZGV0YWlsewotCi0vLwotLy8gY2xhc3MgcGFyc2VyX2J1ZjoKLS8vIGFjdHMgYXMgYSBzdHJlYW0gYnVmZmVyIHdoaWNoIHdyYXBzIGFyb3VuZCBhIHBhaXIgb2YgcG9pbnRlcnM6Ci0vLwotdGVtcGxhdGUgPGNsYXNzIGNoYXJULAotICAgICAgICAgIGNsYXNzIHRyYWl0cyA9IDo6c3RkOjpjaGFyX3RyYWl0czxjaGFyVD4gPgotY2xhc3MgcGFyc2VyX2J1ZiA6IHB1YmxpYyA6OnN0ZDo6YmFzaWNfc3RyZWFtYnVmPGNoYXJULCB0cmFpdHM+Ci17Ci0gICB0eXBlZGVmIDo6c3RkOjpiYXNpY19zdHJlYW1idWY8Y2hhclQsIHRyYWl0cz4gYmFzZV90eXBlOwotICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlX3R5cGU6OmludF90eXBlIGludF90eXBlOwotICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlX3R5cGU6OmNoYXJfdHlwZSBjaGFyX3R5cGU7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfdHlwZTo6cG9zX3R5cGUgcG9zX3R5cGU7Ci0gICB0eXBlZGVmIDo6c3RkOjpzdHJlYW1zaXplIHN0cmVhbXNpemU7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfdHlwZTo6b2ZmX3R5cGUgb2ZmX3R5cGU7Ci1wdWJsaWM6Ci0gICBwYXJzZXJfYnVmKCkgOiBiYXNlX3R5cGUoKSB7IHNldGJ1ZigwLCAwKTsgfQotICAgY29uc3QgY2hhclQqIGdldG5leHQoKSB7IHJldHVybiB0aGlzLT5ncHRyKCk7IH0KLXByb3RlY3RlZDoKLSAgIHN0ZDo6YmFzaWNfc3RyZWFtYnVmPGNoYXJULCB0cmFpdHM+KiBzZXRidWYoY2hhcl90eXBlKiBzLCBzdHJlYW1zaXplIG4pOwotICAgdHlwZW5hbWUgcGFyc2VyX2J1ZjxjaGFyVCwgdHJhaXRzPjo6cG9zX3R5cGUgc2Vla3Bvcyhwb3NfdHlwZSBzcCwgOjpzdGQ6Omlvc19iYXNlOjpvcGVubW9kZSB3aGljaCk7Ci0gICB0eXBlbmFtZSBwYXJzZXJfYnVmPGNoYXJULCB0cmFpdHM+Ojpwb3NfdHlwZSBzZWVrb2ZmKG9mZl90eXBlIG9mZiwgOjpzdGQ6Omlvc19iYXNlOjpzZWVrZGlyIHdheSwgOjpzdGQ6Omlvc19iYXNlOjpvcGVubW9kZSB3aGljaCk7Ci1wcml2YXRlOgotICAgcGFyc2VyX2J1ZiYgb3BlcmF0b3I9KGNvbnN0IHBhcnNlcl9idWYmKTsKLSAgIHBhcnNlcl9idWYoY29uc3QgcGFyc2VyX2J1ZiYpOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLXN0ZDo6YmFzaWNfc3RyZWFtYnVmPGNoYXJULCB0cmFpdHM+KgotcGFyc2VyX2J1ZjxjaGFyVCwgdHJhaXRzPjo6c2V0YnVmKGNoYXJfdHlwZSogcywgc3RyZWFtc2l6ZSBuKQotewotICAgdGhpcy0+c2V0ZyhzLCBzLCBzICsgbik7Ci0gICByZXR1cm4gdGhpczsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLXR5cGVuYW1lIHBhcnNlcl9idWY8Y2hhclQsIHRyYWl0cz46OnBvc190eXBlCi1wYXJzZXJfYnVmPGNoYXJULCB0cmFpdHM+OjpzZWVrb2ZmKG9mZl90eXBlIG9mZiwgOjpzdGQ6Omlvc19iYXNlOjpzZWVrZGlyIHdheSwgOjpzdGQ6Omlvc19iYXNlOjpvcGVubW9kZSB3aGljaCkKLXsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmludF90PHNpemVvZih3YXkpICogQ0hBUl9CSVQ+OjpsZWFzdCBjYXN0X3R5cGU7Ci0KLSAgIGlmKHdoaWNoICYgOjpzdGQ6Omlvc19iYXNlOjpvdXQpCi0gICAgICByZXR1cm4gcG9zX3R5cGUob2ZmX3R5cGUoLTEpKTsKLSAgIHN0ZDo6cHRyZGlmZl90IHNpemUgPSB0aGlzLT5lZ3B0cigpIC0gdGhpcy0+ZWJhY2soKTsKLSAgIHN0ZDo6cHRyZGlmZl90IHBvcyA9IHRoaXMtPmdwdHIoKSAtIHRoaXMtPmViYWNrKCk7Ci0gICBjaGFyVCogZyA9IHRoaXMtPmViYWNrKCk7Ci0gICBzd2l0Y2goc3RhdGljX2Nhc3Q8Y2FzdF90eXBlPih3YXkpKQotICAgewotICAgY2FzZSA6OnN0ZDo6aW9zX2Jhc2U6OmJlZzoKLSAgICAgIGlmKChvZmYgPCAwKSB8fCAob2ZmID4gc2l6ZSkpCi0gICAgICAgICByZXR1cm4gcG9zX3R5cGUob2ZmX3R5cGUoLTEpKTsKLSAgICAgIGVsc2UKLSAgICAgICAgIHRoaXMtPnNldGcoZywgZyArIG9mZiwgZyArIHNpemUpOwotICAgICAgYnJlYWs7Ci0gICBjYXNlIDo6c3RkOjppb3NfYmFzZTo6ZW5kOgotICAgICAgaWYoKG9mZiA8IDApIHx8IChvZmYgPiBzaXplKSkKLSAgICAgICAgIHJldHVybiBwb3NfdHlwZShvZmZfdHlwZSgtMSkpOwotICAgICAgZWxzZQotICAgICAgICAgdGhpcy0+c2V0ZyhnLCBnICsgc2l6ZSAtIG9mZiwgZyArIHNpemUpOwotICAgICAgYnJlYWs7Ci0gICBjYXNlIDo6c3RkOjppb3NfYmFzZTo6Y3VyOgotICAgewotICAgICAgc3RkOjpwdHJkaWZmX3QgbmV3cG9zID0gc3RhdGljX2Nhc3Q8c3RkOjpwdHJkaWZmX3Q+KHBvcyArIG9mZik7Ci0gICAgICBpZigobmV3cG9zIDwgMCkgfHwgKG5ld3BvcyA+IHNpemUpKQotICAgICAgICAgcmV0dXJuIHBvc190eXBlKG9mZl90eXBlKC0xKSk7Ci0gICAgICBlbHNlCi0gICAgICAgICB0aGlzLT5zZXRnKGcsIGcgKyBuZXdwb3MsIGcgKyBzaXplKTsKLSAgICAgIGJyZWFrOwotICAgfQotICAgZGVmYXVsdDogOwotICAgfQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDI0NCkKLSNlbmRpZgotICAgcmV0dXJuIHN0YXRpY19jYXN0PHBvc190eXBlPih0aGlzLT5ncHRyKCkgLSB0aGlzLT5lYmFjaygpKTsKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi19Ci0KLXRlbXBsYXRlPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci10eXBlbmFtZSBwYXJzZXJfYnVmPGNoYXJULCB0cmFpdHM+Ojpwb3NfdHlwZQotcGFyc2VyX2J1ZjxjaGFyVCwgdHJhaXRzPjo6c2Vla3Bvcyhwb3NfdHlwZSBzcCwgOjpzdGQ6Omlvc19iYXNlOjpvcGVubW9kZSB3aGljaCkKLXsKLSAgIGlmKHdoaWNoICYgOjpzdGQ6Omlvc19iYXNlOjpvdXQpCi0gICAgICByZXR1cm4gcG9zX3R5cGUob2ZmX3R5cGUoLTEpKTsKLSAgIG9mZl90eXBlIHNpemUgPSBzdGF0aWNfY2FzdDxvZmZfdHlwZT4odGhpcy0+ZWdwdHIoKSAtIHRoaXMtPmViYWNrKCkpOwotICAgY2hhclQqIGcgPSB0aGlzLT5lYmFjaygpOwotICAgaWYob2ZmX3R5cGUoc3ApIDw9IHNpemUpCi0gICB7Ci0gICAgICB0aGlzLT5zZXRnKGcsIGcgKyBvZmZfdHlwZShzcCksIGcgKyBzaXplKTsKLSAgIH0KLSAgIHJldHVybiBwb3NfdHlwZShvZmZfdHlwZSgtMSkpOwotfQotCi0vLwotLy8gY2xhc3MgY3BwX3JlZ2V4X3RyYWl0c19iYXNlOgotLy8gYWN0cyBhcyBhIGNvbnRhaW5lciBmb3IgbG9jYWxlIGFuZCB0aGUgZmFjZXRzIHdlIGFyZSB1c2luZy4KLS8vCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci1zdHJ1Y3QgY3BwX3JlZ2V4X3RyYWl0c19iYXNlCi17Ci0gICBjcHBfcmVnZXhfdHJhaXRzX2Jhc2UoY29uc3Qgc3RkOjpsb2NhbGUmIGwpCi0gICB7IGltYnVlKGwpOyB9Ci0gICBzdGQ6OmxvY2FsZSBpbWJ1ZShjb25zdCBzdGQ6OmxvY2FsZSYgbCk7Ci0KLSAgIHN0ZDo6bG9jYWxlIG1fbG9jYWxlOwotICAgc3RkOjpjdHlwZTxjaGFyVD4gY29uc3QqIG1fcGN0eXBlOwotI2lmbmRlZiBORE5CT09TVF9OT19TVERfTUVTU0FHRVMKLSAgIHN0ZDo6bWVzc2FnZXM8Y2hhclQ+IGNvbnN0KiBtX3BtZXNzYWdlczsKLSNlbmRpZgotICAgc3RkOjpjb2xsYXRlPGNoYXJUPiBjb25zdCogbV9wY29sbGF0ZTsKLQotICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgY3BwX3JlZ2V4X3RyYWl0c19iYXNlJiBiKWNvbnN0Ci0gICB7Ci0gICAgICBpZihtX3BjdHlwZSA9PSBiLm1fcGN0eXBlKQotICAgICAgewotI2lmbmRlZiBORE5CT09TVF9OT19TVERfTUVTU0FHRVMKLSAgICAgICAgIGlmKG1fcG1lc3NhZ2VzID09IGIubV9wbWVzc2FnZXMpCi0gICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbV9wY29sbGF0ZSA8IGIubV9wY29sbGF0ZTsKLSAgICAgICAgIH0KLSAgICAgICAgIHJldHVybiBtX3BtZXNzYWdlcyA8IGIubV9wbWVzc2FnZXM7Ci0jZWxzZQotICAgICAgICAgcmV0dXJuIG1fcGNvbGxhdGUgPCBiLm1fcGNvbGxhdGU7Ci0jZW5kaWYKLSAgICAgIH0KLSAgICAgIHJldHVybiBtX3BjdHlwZSA8IGIubV9wY3R5cGU7Ci0gICB9Ci0gICBib29sIG9wZXJhdG9yPT0oY29uc3QgY3BwX3JlZ2V4X3RyYWl0c19iYXNlJiBiKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gKG1fcGN0eXBlID09IGIubV9wY3R5cGUpIAotI2lmbmRlZiBORE5CT09TVF9OT19TVERfTUVTU0FHRVMKLSAgICAgICAgICYmIChtX3BtZXNzYWdlcyA9PSBiLm1fcG1lc3NhZ2VzKSAKLSNlbmRpZgotICAgICAgICAgJiYgKG1fcGNvbGxhdGUgPT0gYi5tX3Bjb2xsYXRlKTsKLSAgIH0KLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLXN0ZDo6bG9jYWxlIGNwcF9yZWdleF90cmFpdHNfYmFzZTxjaGFyVD46OmltYnVlKGNvbnN0IHN0ZDo6bG9jYWxlJiBsKQotewotICAgc3RkOjpsb2NhbGUgcmVzdWx0KG1fbG9jYWxlKTsKLSAgIG1fbG9jYWxlID0gbDsKLSAgIG1fcGN0eXBlID0gJk5ETkJPT1NUX1VTRV9GQUNFVChzdGQ6OmN0eXBlPGNoYXJUPiwgbCk7Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1NURF9NRVNTQUdFUwotICAgbV9wbWVzc2FnZXMgPSBORE5CT09TVF9IQVNfRkFDRVQoc3RkOjptZXNzYWdlczxjaGFyVD4sIGwpID8gJk5ETkJPT1NUX1VTRV9GQUNFVChzdGQ6Om1lc3NhZ2VzPGNoYXJUPiwgbCkgOiAwOwotI2VuZGlmCi0gICBtX3Bjb2xsYXRlID0gJk5ETkJPT1NUX1VTRV9GQUNFVChzdGQ6OmNvbGxhdGU8Y2hhclQ+LCBsKTsKLSAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8vCi0vLyBjbGFzcyBjcHBfcmVnZXhfdHJhaXRzX2NoYXJfbGF5ZXI6Ci0vLyBpbXBsZW1lbnRzIG1ldGhvZHMgdGhhdCByZXF1aXJlIHNwZWNpYWxpc2F0aW9uIGZvciBuYXJyb3cgY2hhcmFjdGVyczoKLS8vCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci1jbGFzcyBjcHBfcmVnZXhfdHJhaXRzX2NoYXJfbGF5ZXIgOiBwdWJsaWMgY3BwX3JlZ2V4X3RyYWl0c19iYXNlPGNoYXJUPgotewotICAgdHlwZWRlZiBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVD4gc3RyaW5nX3R5cGU7Ci0gICB0eXBlZGVmIHN0ZDo6bWFwPGNoYXJULCByZWdleF9jb25zdGFudHM6OnN5bnRheF90eXBlPiBtYXBfdHlwZTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwX3R5cGU6OmNvbnN0X2l0ZXJhdG9yIG1hcF9pdGVyYXRvcl90eXBlOwotcHVibGljOgotICAgY3BwX3JlZ2V4X3RyYWl0c19jaGFyX2xheWVyKGNvbnN0IHN0ZDo6bG9jYWxlJiBsKQotICAgICAgOiBjcHBfcmVnZXhfdHJhaXRzX2Jhc2U8Y2hhclQ+KGwpCi0gICB7Ci0gICAgICBpbml0KCk7Ci0gICB9Ci0gICBjcHBfcmVnZXhfdHJhaXRzX2NoYXJfbGF5ZXIoY29uc3QgY3BwX3JlZ2V4X3RyYWl0c19iYXNlPGNoYXJUPiYgYikKLSAgICAgIDogY3BwX3JlZ2V4X3RyYWl0c19iYXNlPGNoYXJUPihiKQotICAgewotICAgICAgaW5pdCgpOwotICAgfQotICAgdm9pZCBpbml0KCk7Ci0KLSAgIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X3R5cGUgc3ludGF4X3R5cGUoY2hhclQgYyljb25zdAotICAgewotICAgICAgbWFwX2l0ZXJhdG9yX3R5cGUgaSA9IG1fY2hhcl9tYXAuZmluZChjKTsKLSAgICAgIHJldHVybiAoKGkgPT0gbV9jaGFyX21hcC5lbmQoKSkgPyAwIDogaS0+c2Vjb25kKTsKLSAgIH0KLSAgIHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3N5bnRheF90eXBlIGVzY2FwZV9zeW50YXhfdHlwZShjaGFyVCBjKSBjb25zdAotICAgewotICAgICAgbWFwX2l0ZXJhdG9yX3R5cGUgaSA9IG1fY2hhcl9tYXAuZmluZChjKTsKLSAgICAgIGlmKGkgPT0gbV9jaGFyX21hcC5lbmQoKSkKLSAgICAgIHsKLSAgICAgICAgIGlmKHRoaXMtPm1fcGN0eXBlLT5pcyhzdGQ6OmN0eXBlX2Jhc2U6Omxvd2VyLCBjKSkgcmV0dXJuIHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3R5cGVfY2xhc3M7Ci0gICAgICAgICBpZih0aGlzLT5tX3BjdHlwZS0+aXMoc3RkOjpjdHlwZV9iYXNlOjp1cHBlciwgYykpIHJldHVybiByZWdleF9jb25zdGFudHM6OmVzY2FwZV90eXBlX25vdF9jbGFzczsKLSAgICAgICAgIHJldHVybiAwOwotICAgICAgfQotICAgICAgcmV0dXJuIGktPnNlY29uZDsKLSAgIH0KLQotcHJpdmF0ZToKLSAgIHN0cmluZ190eXBlIGdldF9kZWZhdWx0X21lc3NhZ2UocmVnZXhfY29uc3RhbnRzOjpzeW50YXhfdHlwZSk7Ci0gICAvLyBUT0RPOiB1c2UgYSBoYXNoIHRhYmxlIHdoZW4gYXZhaWxhYmxlIQotICAgbWFwX3R5cGUgbV9jaGFyX21hcDsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLXZvaWQgY3BwX3JlZ2V4X3RyYWl0c19jaGFyX2xheWVyPGNoYXJUPjo6aW5pdCgpCi17Ci0gICAvLyB3ZSBuZWVkIHRvIHN0YXJ0IGJ5IGluaXRpYWxpc2luZyBvdXIgc3ludGF4IG1hcCBzbyB3ZSBrbm93IHdoaWNoCi0gICAvLyBjaGFyYWN0ZXIgaXMgdXNlZCBmb3Igd2hpY2ggcHVycG9zZToKLSNpZm5kZWYgTkROQk9PU1RfTk9fU1REX01FU1NBR0VTCi0jaWZuZGVmIF9fSUJNQ1BQX18KLSAgIHR5cGVuYW1lIHN0ZDo6bWVzc2FnZXM8Y2hhclQ+OjpjYXRhbG9nIGNhdCA9IHN0YXRpY19jYXN0PHN0ZDo6bWVzc2FnZXM8Y2hhcj46OmNhdGFsb2c+KC0xKTsKLSNlbHNlCi0gICB0eXBlbmFtZSBzdGQ6Om1lc3NhZ2VzPGNoYXJUPjo6Y2F0YWxvZyBjYXQgPSByZWludGVycHJldF9jYXN0PHN0ZDo6bWVzc2FnZXM8Y2hhcj46OmNhdGFsb2c+KC0xKTsKLSNlbmRpZgotICAgc3RkOjpzdHJpbmcgY2F0X25hbWUoY3BwX3JlZ2V4X3RyYWl0czxjaGFyVD46OmdldF9jYXRhbG9nX25hbWUoKSk7Ci0gICBpZihjYXRfbmFtZS5zaXplKCkgJiYgKHRoaXMtPm1fcG1lc3NhZ2VzICE9IDApKQotICAgewotICAgICAgY2F0ID0gdGhpcy0+bV9wbWVzc2FnZXMtPm9wZW4oCi0gICAgICAgICBjYXRfbmFtZSwgCi0gICAgICAgICB0aGlzLT5tX2xvY2FsZSk7Ci0gICAgICBpZigoaW50KWNhdCA8IDApCi0gICAgICB7Ci0gICAgICAgICBzdGQ6OnN0cmluZyBtKCJVbmFibGUgdG8gb3BlbiBtZXNzYWdlIGNhdGFsb2c6ICIpOwotICAgICAgICAgc3RkOjpydW50aW1lX2Vycm9yIGVycihtICsgY2F0X25hbWUpOwotICAgICAgICAgbmRuYm9vc3Q6OnJlX2RldGFpbDo6cmFpc2VfcnVudGltZV9lcnJvcihlcnIpOwotICAgICAgfQotICAgfQotICAgLy8KLSAgIC8vIGlmIHdlIGhhdmUgYSB2YWxpZCBjYXRhbG9nIHRoZW4gbG9hZCBvdXIgbWVzc2FnZXM6Ci0gICAvLwotICAgaWYoKGludCljYXQgPj0gMCkKLSAgIHsKLSNpZm5kZWYgTkROQk9PU1RfTk9fRVhDRVBUSU9OUwotICAgICAgdHJ5ewotI2VuZGlmCi0gICAgICAgICBmb3IocmVnZXhfY29uc3RhbnRzOjpzeW50YXhfdHlwZSBpID0gMTsgaSA8IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X21heDsgKytpKQotICAgICAgICAgewotICAgICAgICAgICAgc3RyaW5nX3R5cGUgbXNzID0gdGhpcy0+bV9wbWVzc2FnZXMtPmdldChjYXQsIDAsIGksIGdldF9kZWZhdWx0X21lc3NhZ2UoaSkpOwotICAgICAgICAgICAgZm9yKHR5cGVuYW1lIHN0cmluZ190eXBlOjpzaXplX3R5cGUgaiA9IDA7IGogPCBtc3Muc2l6ZSgpOyArK2opCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICBtX2NoYXJfbWFwW21zc1tqXV0gPSBpOwotICAgICAgICAgICAgfQotICAgICAgICAgfQotICAgICAgICAgdGhpcy0+bV9wbWVzc2FnZXMtPmNsb3NlKGNhdCk7Ci0jaWZuZGVmIE5ETkJPT1NUX05PX0VYQ0VQVElPTlMKLSAgICAgIH0KLSAgICAgIGNhdGNoKC4uLikKLSAgICAgIHsKLSAgICAgICAgIGlmKHRoaXMtPm1fcG1lc3NhZ2VzKQotICAgICAgICAgICAgdGhpcy0+bV9wbWVzc2FnZXMtPmNsb3NlKGNhdCk7Ci0gICAgICAgICB0aHJvdzsKLSAgICAgIH0KLSNlbmRpZgotICAgfQotICAgZWxzZQotICAgewotI2VuZGlmCi0gICAgICBmb3IocmVnZXhfY29uc3RhbnRzOjpzeW50YXhfdHlwZSBpID0gMTsgaSA8IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X21heDsgKytpKQotICAgICAgewotICAgICAgICAgY29uc3QgY2hhciogcHRyID0gZ2V0X2RlZmF1bHRfc3ludGF4KGkpOwotICAgICAgICAgd2hpbGUocHRyICYmICpwdHIpCi0gICAgICAgICB7Ci0gICAgICAgICAgICBtX2NoYXJfbWFwW3RoaXMtPm1fcGN0eXBlLT53aWRlbigqcHRyKV0gPSBpOwotICAgICAgICAgICAgKytwdHI7Ci0gICAgICAgICB9Ci0gICAgICB9Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1NURF9NRVNTQUdFUwotICAgfQotI2VuZGlmCi19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLXR5cGVuYW1lIGNwcF9yZWdleF90cmFpdHNfY2hhcl9sYXllcjxjaGFyVD46OnN0cmluZ190eXBlIAotICAgY3BwX3JlZ2V4X3RyYWl0c19jaGFyX2xheWVyPGNoYXJUPjo6Z2V0X2RlZmF1bHRfbWVzc2FnZShyZWdleF9jb25zdGFudHM6OnN5bnRheF90eXBlIGkpCi17Ci0gICBjb25zdCBjaGFyKiBwdHIgPSBnZXRfZGVmYXVsdF9zeW50YXgoaSk7Ci0gICBzdHJpbmdfdHlwZSByZXN1bHQ7Ci0gICB3aGlsZShwdHIgJiYgKnB0cikKLSAgIHsKLSAgICAgIHJlc3VsdC5hcHBlbmQoMSwgdGhpcy0+bV9wY3R5cGUtPndpZGVuKCpwdHIpKTsKLSAgICAgICsrcHRyOwotICAgfQotICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLy8KLS8vIHNwZWNpYWxpc2VkIHZlcnNpb24gZm9yIG5hcnJvdyBjaGFyYWN0ZXJzOgotLy8KLXRlbXBsYXRlIDw+Ci1jbGFzcyBORE5CT09TVF9SRUdFWF9ERUNMIGNwcF9yZWdleF90cmFpdHNfY2hhcl9sYXllcjxjaGFyPiA6IHB1YmxpYyBjcHBfcmVnZXhfdHJhaXRzX2Jhc2U8Y2hhcj4KLXsKLSAgIHR5cGVkZWYgc3RkOjpzdHJpbmcgc3RyaW5nX3R5cGU7Ci1wdWJsaWM6Ci0gICBjcHBfcmVnZXhfdHJhaXRzX2NoYXJfbGF5ZXIoY29uc3Qgc3RkOjpsb2NhbGUmIGwpCi0gICA6IGNwcF9yZWdleF90cmFpdHNfYmFzZTxjaGFyPihsKQotICAgewotICAgICAgaW5pdCgpOwotICAgfQotICAgY3BwX3JlZ2V4X3RyYWl0c19jaGFyX2xheWVyKGNvbnN0IGNwcF9yZWdleF90cmFpdHNfYmFzZTxjaGFyPiYgbCkKLSAgIDogY3BwX3JlZ2V4X3RyYWl0c19iYXNlPGNoYXI+KGwpCi0gICB7Ci0gICAgICBpbml0KCk7Ci0gICB9Ci0KLSAgIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X3R5cGUgc3ludGF4X3R5cGUoY2hhciBjKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gbV9jaGFyX21hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjKV07Ci0gICB9Ci0gICByZWdleF9jb25zdGFudHM6OmVzY2FwZV9zeW50YXhfdHlwZSBlc2NhcGVfc3ludGF4X3R5cGUoY2hhciBjKSBjb25zdAotICAgewotICAgICAgcmV0dXJuIG1fY2hhcl9tYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oYyldOwotICAgfQotCi1wcml2YXRlOgotICAgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfdHlwZSBtX2NoYXJfbWFwWzF1IDw8IENIQVJfQklUXTsKLSAgIHZvaWQgaW5pdCgpOwotfTsKLQotI2lmZGVmIE5ETkJPT1NUX1JFR0VYX0JVR0dZX0NUWVBFX0ZBQ0VUCi1lbnVtCi17Ci0gICBjaGFyX2NsYXNzX3NwYWNlPTE8PDAsIAotICAgY2hhcl9jbGFzc19wcmludD0xPDwxLCAKLSAgIGNoYXJfY2xhc3NfY250cmw9MTw8MiwgCi0gICBjaGFyX2NsYXNzX3VwcGVyPTE8PDMsIAotICAgY2hhcl9jbGFzc19sb3dlcj0xPDw0LAotICAgY2hhcl9jbGFzc19hbHBoYT0xPDw1LCAKLSAgIGNoYXJfY2xhc3NfZGlnaXQ9MTw8NiwgCi0gICBjaGFyX2NsYXNzX3B1bmN0PTE8PDcsIAotICAgY2hhcl9jbGFzc194ZGlnaXQ9MTw8OCwKLSAgIGNoYXJfY2xhc3NfYWxudW09Y2hhcl9jbGFzc19hbHBoYXxjaGFyX2NsYXNzX2RpZ2l0LCAKLSAgIGNoYXJfY2xhc3NfZ3JhcGg9Y2hhcl9jbGFzc19hbG51bXxjaGFyX2NsYXNzX3B1bmN0LAotICAgY2hhcl9jbGFzc19ibGFuaz0xPDw5LAotICAgY2hhcl9jbGFzc193b3JkPTE8PDEwLAotICAgY2hhcl9jbGFzc191bmljb2RlPTE8PDExLAotICAgY2hhcl9jbGFzc19ob3Jpem9udGFsX3NwYWNlPTE8PDEyLAotICAgY2hhcl9jbGFzc192ZXJ0aWNhbF9zcGFjZT0xPDwxMwotfTsKLQotI2VuZGlmCi0KLS8vCi0vLyBjbGFzcyBjcHBfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uOgotLy8gcHJvdmlkZXMgcGltcGwgaW1wbGVtZW50YXRpb24gZm9yIGNwcF9yZWdleF90cmFpdHMuCi0vLwotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotY2xhc3MgY3BwX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbiA6IHB1YmxpYyBjcHBfcmVnZXhfdHJhaXRzX2NoYXJfbGF5ZXI8Y2hhclQ+Ci17Ci1wdWJsaWM6Ci0gICB0eXBlZGVmIHR5cGVuYW1lIGNwcF9yZWdleF90cmFpdHM8Y2hhclQ+OjpjaGFyX2NsYXNzX3R5cGUgY2hhcl9jbGFzc190eXBlOwotICAgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6OmN0eXBlPGNoYXJUPjo6bWFzayAgICAgICAgICAgICAgICAgIG5hdGl2ZV9tYXNrX3R5cGU7Ci0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX0JVR0dZX0NUWVBFX0ZBQ0VUCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoY2hhcl9jbGFzc190eXBlLCBtYXNrX2JsYW5rID0gMXUgPDwgMjQpOwotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGNoYXJfY2xhc3NfdHlwZSwgbWFza193b3JkID0gMXUgPDwgMjUpOwotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGNoYXJfY2xhc3NfdHlwZSwgbWFza191bmljb2RlID0gMXUgPDwgMjYpOwotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGNoYXJfY2xhc3NfdHlwZSwgbWFza19ob3Jpem9udGFsID0gMXUgPDwgMjcpOwotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGNoYXJfY2xhc3NfdHlwZSwgbWFza192ZXJ0aWNhbCA9IDF1IDw8IDI4KTsKLSNlbmRpZgotCi0gICB0eXBlZGVmIHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJUPiBzdHJpbmdfdHlwZTsKLSAgIHR5cGVkZWYgY2hhclQgY2hhcl90eXBlOwotICAgLy9jcHBfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uKCk7Ci0gICBjcHBfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uKGNvbnN0IHN0ZDo6bG9jYWxlJiBsKQotICAgICAgOiBjcHBfcmVnZXhfdHJhaXRzX2NoYXJfbGF5ZXI8Y2hhclQ+KGwpCi0gICB7Ci0gICAgICBpbml0KCk7Ci0gICB9Ci0gICBjcHBfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uKGNvbnN0IGNwcF9yZWdleF90cmFpdHNfYmFzZTxjaGFyVD4mIGwpCi0gICAgICA6IGNwcF9yZWdleF90cmFpdHNfY2hhcl9sYXllcjxjaGFyVD4obCkKLSAgIHsKLSAgICAgIGluaXQoKTsKLSAgIH0KLSAgIHN0ZDo6c3RyaW5nIGVycm9yX3N0cmluZyhyZWdleF9jb25zdGFudHM6OmVycm9yX3R5cGUgbikgY29uc3QKLSAgIHsKLSAgICAgIGlmKCFtX2Vycm9yX3N0cmluZ3MuZW1wdHkoKSkKLSAgICAgIHsKLSAgICAgICAgIHN0ZDo6bWFwPGludCwgc3RkOjpzdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBwID0gbV9lcnJvcl9zdHJpbmdzLmZpbmQobik7Ci0gICAgICAgICByZXR1cm4gKHAgPT0gbV9lcnJvcl9zdHJpbmdzLmVuZCgpKSA/IHN0ZDo6c3RyaW5nKGdldF9kZWZhdWx0X2Vycm9yX3N0cmluZyhuKSkgOiBwLT5zZWNvbmQ7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gZ2V0X2RlZmF1bHRfZXJyb3Jfc3RyaW5nKG4pOwotICAgfQotICAgY2hhcl9jbGFzc190eXBlIGxvb2t1cF9jbGFzc25hbWUoY29uc3QgY2hhclQqIHAxLCBjb25zdCBjaGFyVCogcDIpIGNvbnN0Ci0gICB7Ci0gICAgICBjaGFyX2NsYXNzX3R5cGUgcmVzdWx0ID0gbG9va3VwX2NsYXNzbmFtZV9pbXAocDEsIHAyKTsKLSAgICAgIGlmKHJlc3VsdCA9PSAwKQotICAgICAgewotICAgICAgICAgc3RyaW5nX3R5cGUgdGVtcChwMSwgcDIpOwotICAgICAgICAgdGhpcy0+bV9wY3R5cGUtPnRvbG93ZXIoJip0ZW1wLmJlZ2luKCksICYqdGVtcC5iZWdpbigpICsgdGVtcC5zaXplKCkpOwotICAgICAgICAgcmVzdWx0ID0gbG9va3VwX2NsYXNzbmFtZV9pbXAoJip0ZW1wLmJlZ2luKCksICYqdGVtcC5iZWdpbigpICsgdGVtcC5zaXplKCkpOwotICAgICAgfQotICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgIH0KLSAgIHN0cmluZ190eXBlIGxvb2t1cF9jb2xsYXRlbmFtZShjb25zdCBjaGFyVCogcDEsIGNvbnN0IGNoYXJUKiBwMikgY29uc3Q7Ci0gICBzdHJpbmdfdHlwZSB0cmFuc2Zvcm1fcHJpbWFyeShjb25zdCBjaGFyVCogcDEsIGNvbnN0IGNoYXJUKiBwMikgY29uc3Q7Ci0gICBzdHJpbmdfdHlwZSB0cmFuc2Zvcm0oY29uc3QgY2hhclQqIHAxLCBjb25zdCBjaGFyVCogcDIpIGNvbnN0OwotcHJpdmF0ZToKLSAgIHN0ZDo6bWFwPGludCwgc3RkOjpzdHJpbmc+ICAgICBtX2Vycm9yX3N0cmluZ3M7ICAgLy8gZXJyb3IgbWVzc2FnZXMgaW5kZXhlZCBieSBudW1iZXJpYyBJRAotICAgc3RkOjptYXA8c3RyaW5nX3R5cGUsIGNoYXJfY2xhc3NfdHlwZT4gIG1fY3VzdG9tX2NsYXNzX25hbWVzOyAvLyBjaGFyYWN0ZXIgY2xhc3MgbmFtZXMKLSAgIHN0ZDo6bWFwPHN0cmluZ190eXBlLCBzdHJpbmdfdHlwZT4gICAgICBtX2N1c3RvbV9jb2xsYXRlX25hbWVzOyAvLyBjb2xsYXRpbmcgZWxlbWVudCBuYW1lcwotICAgdW5zaWduZWQgICAgICAgICAgICAgICAgICAgICAgIG1fY29sbGF0ZV90eXBlOyAgICAvLyB0aGUgZm9ybSBvZiB0aGUgY29sbGF0aW9uIHN0cmluZwotICAgY2hhclQgICAgICAgICAgICAgICAgICAgICAgICAgIG1fY29sbGF0ZV9kZWxpbTsgICAvLyB0aGUgY29sbGF0aW9uIGdyb3VwIGRlbGltaXRlcgotICAgLy8KLSAgIC8vIGhlbHBlcnM6Ci0gICAvLwotICAgY2hhcl9jbGFzc190eXBlIGxvb2t1cF9jbGFzc25hbWVfaW1wKGNvbnN0IGNoYXJUKiBwMSwgY29uc3QgY2hhclQqIHAyKSBjb25zdDsKLSAgIHZvaWQgaW5pdCgpOwotI2lmZGVmIE5ETkJPT1NUX1JFR0VYX0JVR0dZX0NUWVBFX0ZBQ0VUCi1wdWJsaWM6Ci0gICBib29sIGlzY3R5cGUoY2hhclQgYywgY2hhcl9jbGFzc190eXBlIG0pY29uc3Q7Ci0jZW5kaWYKLX07Ci0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfQlVHR1lfQ1RZUEVfRkFDRVQKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19JTkNMQVNTX01FTUJFUl9JTklUSUFMSVpBVElPTikKLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotdHlwZW5hbWUgY3BwX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD46OmNoYXJfY2xhc3NfdHlwZSBjb25zdCBjcHBfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6bWFza19ibGFuazsKLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLXR5cGVuYW1lIGNwcF9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+OjpjaGFyX2NsYXNzX3R5cGUgY29uc3QgY3BwX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD46Om1hc2tfd29yZDsKLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLXR5cGVuYW1lIGNwcF9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+OjpjaGFyX2NsYXNzX3R5cGUgY29uc3QgY3BwX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD46Om1hc2tfdW5pY29kZTsKLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLXR5cGVuYW1lIGNwcF9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+OjpjaGFyX2NsYXNzX3R5cGUgY29uc3QgY3BwX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD46Om1hc2tfdmVydGljYWw7Ci10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci10eXBlbmFtZSBjcHBfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6Y2hhcl9jbGFzc190eXBlIGNvbnN0IGNwcF9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+OjptYXNrX2hvcml6b250YWw7Ci0KLSNlbmRpZgotI2VuZGlmCi0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLXR5cGVuYW1lIGNwcF9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+OjpzdHJpbmdfdHlwZSAKLSAgIGNwcF9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+Ojp0cmFuc2Zvcm1fcHJpbWFyeShjb25zdCBjaGFyVCogcDEsIGNvbnN0IGNoYXJUKiBwMikgY29uc3QKLXsKLSAgIC8vCi0gICAvLyBQUkVDT05ESVRJT05TOgotICAgLy8KLSAgIC8vIEEgYnVnIGluIGdjYyAzLjIgKGFuZCBtYXliZSBvdGhlciB2ZXJzaW9ucyBhcyB3ZWxsKSB0cmVhdHMKLSAgIC8vIHAxIGFzIGEgbnVsbCB0ZXJtaW5hdGVkIHN0cmluZywgZm9yIGVmZmljaWVuY3kgcmVhc29ucyAKLSAgIC8vIHdlIHdvcmsgYXJvdW5kIHRoaXMgZWxzZXdoZXJlLCBidXQganVzdCBhc3NlcnQgaGVyZSB0aGF0Ci0gICAvLyB3ZSBhZGhlcmUgdG8gZ2NjJ3MgKGJ1Z2d5KSBwcmVjb25kaXRpb25zLi4uCi0gICAvLwotICAgTkROQk9PU1RfQVNTRVJUKCpwMiA9PSAwKTsKLQotICAgc3RyaW5nX3R5cGUgcmVzdWx0OwotICAgLy8KLSAgIC8vIHN3YWxsb3dpbmcgYWxsIGV4Y2VwdGlvbnMgaGVyZSBpcyBhIGJhZCBpZGVhCi0gICAvLyBob3dldmVyIGF0IGxlYXN0IG9uZSBzdGQgbGliIHdpbGwgYWx3YXlzIHRocm93Ci0gICAvLyBzdGQ6OmJhZF9hbGxvYyBmb3IgY2VydGFpbiBhcmd1bWVudHMuLi4KLSAgIC8vCi0jaWZuZGVmIE5ETkJPT1NUX05PX0VYQ0VQVElPTlMKLSAgIHRyeXsKLSNlbmRpZgotICAgICAgLy8KLSAgICAgIC8vIFdoYXQgd2UgZG8gaGVyZSBkZXBlbmRzIHVwb24gdGhlIGZvcm1hdCBvZiB0aGUgc29ydCBrZXkgcmV0dXJuZWQgYnkKLSAgICAgIC8vIHNvcnQga2V5IHJldHVybmVkIGJ5IHRoaXMtPnRyYW5zZm9ybToKLSAgICAgIC8vCi0gICAgICBzd2l0Y2gobV9jb2xsYXRlX3R5cGUpCi0gICAgICB7Ci0gICAgICBjYXNlIHNvcnRfQzoKLSAgICAgIGNhc2Ugc29ydF91bmtub3duOgotICAgICAgICAgLy8gdGhlIGJlc3Qgd2UgY2FuIGRvIGlzIHRyYW5zbGF0ZSB0byBsb3dlciBjYXNlLCB0aGVuIGdldCBhIHJlZ3VsYXIgc29ydCBrZXk6Ci0gICAgICAgICB7Ci0gICAgICAgICAgICByZXN1bHQuYXNzaWduKHAxLCBwMik7Ci0gICAgICAgICAgICB0aGlzLT5tX3BjdHlwZS0+dG9sb3dlcigmKnJlc3VsdC5iZWdpbigpLCAmKnJlc3VsdC5iZWdpbigpICsgcmVzdWx0LnNpemUoKSk7Ci0gICAgICAgICAgICByZXN1bHQgPSB0aGlzLT5tX3Bjb2xsYXRlLT50cmFuc2Zvcm0oJipyZXN1bHQuYmVnaW4oKSwgJipyZXN1bHQuYmVnaW4oKSArIHJlc3VsdC5zaXplKCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICB9Ci0gICAgICBjYXNlIHNvcnRfZml4ZWQ6Ci0gICAgICAgICB7Ci0gICAgICAgICAgICAvLyBnZXQgYSByZWd1bGFyIHNvcnQga2V5LCBhbmQgdGhlbiB0cnVuY2F0ZSBpdDoKLSAgICAgICAgICAgIHJlc3VsdC5hc3NpZ24odGhpcy0+bV9wY29sbGF0ZS0+dHJhbnNmb3JtKHAxLCBwMikpOwotICAgICAgICAgICAgcmVzdWx0LmVyYXNlKHRoaXMtPm1fY29sbGF0ZV9kZWxpbSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgIH0KLSAgICAgIGNhc2Ugc29ydF9kZWxpbToKLSAgICAgICAgICAgIC8vIGdldCBhIHJlZ3VsYXIgc29ydCBrZXksIGFuZCB0aGVuIHRydW5jYXRlIGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIGRlbGltOgotICAgICAgICAgICAgcmVzdWx0LmFzc2lnbih0aGlzLT5tX3Bjb2xsYXRlLT50cmFuc2Zvcm0ocDEsIHAyKSk7Ci0gICAgICAgICAgICBzdGQ6OnNpemVfdCBpOwotICAgICAgICAgICAgZm9yKGkgPSAwOyBpIDwgcmVzdWx0LnNpemUoKTsgKytpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgaWYocmVzdWx0W2ldID09IG1fY29sbGF0ZV9kZWxpbSkKLSAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmVzdWx0LmVyYXNlKGkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0jaWZuZGVmIE5ETkJPT1NUX05PX0VYQ0VQVElPTlMKLSAgIH1jYXRjaCguLi4pe30KLSNlbmRpZgotICAgd2hpbGUocmVzdWx0LnNpemUoKSAmJiAoY2hhclQoMCkgPT0gKnJlc3VsdC5yYmVnaW4oKSkpCi0gICAgICByZXN1bHQuZXJhc2UocmVzdWx0LnNpemUoKSAtIDEpOwotICAgaWYocmVzdWx0LmVtcHR5KCkpCi0gICB7Ci0gICAgICAvLyBjaGFyYWN0ZXIgaXMgaWdub3JhYmxlIGF0IHRoZSBwcmltYXJ5IGxldmVsOgotICAgICAgcmVzdWx0ID0gc3RyaW5nX3R5cGUoMSwgY2hhclQoMCkpOwotICAgfQotICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotdHlwZW5hbWUgY3BwX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD46OnN0cmluZ190eXBlIAotICAgY3BwX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD46OnRyYW5zZm9ybShjb25zdCBjaGFyVCogcDEsIGNvbnN0IGNoYXJUKiBwMikgY29uc3QKLXsKLSAgIC8vCi0gICAvLyBQUkVDT05ESVRJT05TOgotICAgLy8KLSAgIC8vIEEgYnVnIGluIGdjYyAzLjIgKGFuZCBtYXliZSBvdGhlciB2ZXJzaW9ucyBhcyB3ZWxsKSB0cmVhdHMKLSAgIC8vIHAxIGFzIGEgbnVsbCB0ZXJtaW5hdGVkIHN0cmluZywgZm9yIGVmZmljaWVuY3kgcmVhc29ucyAKLSAgIC8vIHdlIHdvcmsgYXJvdW5kIHRoaXMgZWxzZXdoZXJlLCBidXQganVzdCBhc3NlcnQgaGVyZSB0aGF0Ci0gICAvLyB3ZSBhZGhlcmUgdG8gZ2NjJ3MgKGJ1Z2d5KSBwcmVjb25kaXRpb25zLi4uCi0gICAvLwotICAgTkROQk9PU1RfQVNTRVJUKCpwMiA9PSAwKTsKLSAgIC8vCi0gICAvLyBzd2FsbG93aW5nIGFsbCBleGNlcHRpb25zIGhlcmUgaXMgYSBiYWQgaWRlYQotICAgLy8gaG93ZXZlciBhdCBsZWFzdCBvbmUgc3RkIGxpYiB3aWxsIGFsd2F5cyB0aHJvdwotICAgLy8gc3RkOjpiYWRfYWxsb2MgZm9yIGNlcnRhaW4gYXJndW1lbnRzLi4uCi0gICAvLwotICAgc3RyaW5nX3R5cGUgcmVzdWx0OwotI2lmbmRlZiBORE5CT09TVF9OT19FWENFUFRJT05TCi0gICB0cnl7Ci0jZW5kaWYKLSAgICAgIHJlc3VsdCA9IHRoaXMtPm1fcGNvbGxhdGUtPnRyYW5zZm9ybShwMSwgcDIpOwotICAgICAgLy8KLSAgICAgIC8vIEJvcmxhbmQncyBTVExQb3J0IHZlcnNpb24gcmV0dXJucyBhIE5VTEwtdGVybWluYXRlZAotICAgICAgLy8gc3RyaW5nIHRoYXQgaGFzIGdhcmJhZ2UgYXQgdGhlIGVuZCAtIGVhY2ggY2FsbCB0bwotICAgICAgLy8gc3RkOjpjb2xsYXRlPHdjaGFyX3Q+Ojp0cmFuc2Zvcm0gcmV0dXJucyBhIGRpZmZlcmVudCBzdHJpbmchCi0gICAgICAvLyBTbyBhcyBhIHdvcmthcm91bmQsIHdlJ2xsIHRydW5jYXRlIHRoZSBzdHJpbmcgYXQgdGhlIGZpcnN0IE5VTEwKLSAgICAgIC8vIHdoaWNoIF9zZWVtc18gdG8gd29yay4uLi4KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgPCAweDU4MCkKLSAgICAgIHJlc3VsdC5lcmFzZShyZXN1bHQuZmluZChjaGFyVCgwKSkpOwotI2Vsc2UKLSAgICAgIC8vCi0gICAgICAvLyBzb21lIGltcGxlbWVudGF0aW9ucyAoRGlua3Vtd2FyZSkgYXBwZW5kIHVubmVjZXNzYXJ5IHRyYWlsaW5nIFwwJ3M6Ci0gICAgICB3aGlsZShyZXN1bHQuc2l6ZSgpICYmIChjaGFyVCgwKSA9PSAqcmVzdWx0LnJiZWdpbigpKSkKLSAgICAgICAgIHJlc3VsdC5lcmFzZShyZXN1bHQuc2l6ZSgpIC0gMSk7Ci0jZW5kaWYKLSAgICAgIE5ETkJPT1NUX0FTU0VSVChzdGQ6OmZpbmQocmVzdWx0LmJlZ2luKCksIHJlc3VsdC5lbmQoKSwgY2hhclQoMCkpID09IHJlc3VsdC5lbmQoKSk7Ci0jaWZuZGVmIE5ETkJPT1NUX05PX0VYQ0VQVElPTlMKLSAgIH0KLSAgIGNhdGNoKC4uLikKLSAgIHsKLSAgIH0KLSNlbmRpZgotICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci10eXBlbmFtZSBjcHBfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6c3RyaW5nX3R5cGUgCi0gICBjcHBfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6bG9va3VwX2NvbGxhdGVuYW1lKGNvbnN0IGNoYXJUKiBwMSwgY29uc3QgY2hhclQqIHAyKSBjb25zdAotewotICAgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6Om1hcDxzdHJpbmdfdHlwZSwgc3RyaW5nX3R5cGU+Ojpjb25zdF9pdGVyYXRvciBpdGVyX3R5cGU7Ci0gICBpZihtX2N1c3RvbV9jb2xsYXRlX25hbWVzLnNpemUoKSkKLSAgIHsKLSAgICAgIGl0ZXJfdHlwZSBwb3MgPSBtX2N1c3RvbV9jb2xsYXRlX25hbWVzLmZpbmQoc3RyaW5nX3R5cGUocDEsIHAyKSk7Ci0gICAgICBpZihwb3MgIT0gbV9jdXN0b21fY29sbGF0ZV9uYW1lcy5lbmQoKSkKLSAgICAgICAgIHJldHVybiBwb3MtPnNlY29uZDsKLSAgIH0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURURfSVRFUkFUT1JfQ09OU1RSVUNUT1JTKVwKLSAgICAgICAgICAgICAgICYmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMClcCi0gICAgICAgICAgICAgICAmJiAhTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIDw9IDB4MDU1MSkKLSAgIHN0ZDo6c3RyaW5nIG5hbWUocDEsIHAyKTsKLSNlbHNlCi0gICBzdGQ6OnN0cmluZyBuYW1lOwotICAgY29uc3QgY2hhclQqIHAwID0gcDE7Ci0gICB3aGlsZShwMCAhPSBwMikKLSAgICAgIG5hbWUuYXBwZW5kKDEsIGNoYXIoKnAwKyspKTsKLSNlbmRpZgotICAgbmFtZSA9IGxvb2t1cF9kZWZhdWx0X2NvbGxhdGVfbmFtZShuYW1lKTsKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURURfSVRFUkFUT1JfQ09OU1RSVUNUT1JTKVwKLSAgICAgICAgICAgICAgICYmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMClcCi0gICAgICAgICAgICAgICAmJiAhTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIDw9IDB4MDU1MSkKLSAgIGlmKG5hbWUuc2l6ZSgpKQotICAgICAgcmV0dXJuIHN0cmluZ190eXBlKG5hbWUuYmVnaW4oKSwgbmFtZS5lbmQoKSk7Ci0jZWxzZQotICAgaWYobmFtZS5zaXplKCkpCi0gICB7Ci0gICAgICBzdHJpbmdfdHlwZSByZXN1bHQ7Ci0gICAgICB0eXBlZGVmIHN0ZDo6c3RyaW5nOjpjb25zdF9pdGVyYXRvciBpdGVyOwotICAgICAgaXRlciBiID0gbmFtZS5iZWdpbigpOwotICAgICAgaXRlciBlID0gbmFtZS5lbmQoKTsKLSAgICAgIHdoaWxlKGIgIT0gZSkKLSAgICAgICAgIHJlc3VsdC5hcHBlbmQoMSwgY2hhclQoKmIrKykpOwotICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgIH0KLSNlbmRpZgotICAgaWYocDIgLSBwMSA9PSAxKQotICAgICAgcmV0dXJuIHN0cmluZ190eXBlKDEsICpwMSk7Ci0gICByZXR1cm4gc3RyaW5nX3R5cGUoKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotdm9pZCBjcHBfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6aW5pdCgpCi17Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1NURF9NRVNTQUdFUwotI2lmbmRlZiBfX0lCTUNQUF9fCi0gICB0eXBlbmFtZSBzdGQ6Om1lc3NhZ2VzPGNoYXJUPjo6Y2F0YWxvZyBjYXQgPSBzdGF0aWNfY2FzdDxzdGQ6Om1lc3NhZ2VzPGNoYXI+OjpjYXRhbG9nPigtMSk7Ci0jZWxzZQotICAgdHlwZW5hbWUgc3RkOjptZXNzYWdlczxjaGFyVD46OmNhdGFsb2cgY2F0ID0gcmVpbnRlcnByZXRfY2FzdDxzdGQ6Om1lc3NhZ2VzPGNoYXI+OjpjYXRhbG9nPigtMSk7Ci0jZW5kaWYKLSAgIHN0ZDo6c3RyaW5nIGNhdF9uYW1lKGNwcF9yZWdleF90cmFpdHM8Y2hhclQ+OjpnZXRfY2F0YWxvZ19uYW1lKCkpOwotICAgaWYoY2F0X25hbWUuc2l6ZSgpICYmICh0aGlzLT5tX3BtZXNzYWdlcyAhPSAwKSkKLSAgIHsKLSAgICAgIGNhdCA9IHRoaXMtPm1fcG1lc3NhZ2VzLT5vcGVuKAotICAgICAgICAgY2F0X25hbWUsIAotICAgICAgICAgdGhpcy0+bV9sb2NhbGUpOwotICAgICAgaWYoKGludCljYXQgPCAwKQotICAgICAgewotICAgICAgICAgc3RkOjpzdHJpbmcgbSgiVW5hYmxlIHRvIG9wZW4gbWVzc2FnZSBjYXRhbG9nOiAiKTsKLSAgICAgICAgIHN0ZDo6cnVudGltZV9lcnJvciBlcnIobSArIGNhdF9uYW1lKTsKLSAgICAgICAgIG5kbmJvb3N0OjpyZV9kZXRhaWw6OnJhaXNlX3J1bnRpbWVfZXJyb3IoZXJyKTsKLSAgICAgIH0KLSAgIH0KLSAgIC8vCi0gICAvLyBpZiB3ZSBoYXZlIGEgdmFsaWQgY2F0YWxvZyB0aGVuIGxvYWQgb3VyIG1lc3NhZ2VzOgotICAgLy8KLSAgIGlmKChpbnQpY2F0ID49IDApCi0gICB7Ci0gICAgICAvLwotICAgICAgLy8gRXJyb3IgbWVzc2FnZXM6Ci0gICAgICAvLwotICAgICAgZm9yKG5kbmJvb3N0OjpyZWdleF9jb25zdGFudHM6OmVycm9yX3R5cGUgaSA9IHN0YXRpY19jYXN0PG5kbmJvb3N0OjpyZWdleF9jb25zdGFudHM6OmVycm9yX3R5cGU+KDApOyAKLSAgICAgICAgIGkgPD0gbmRuYm9vc3Q6OnJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfdW5rbm93bjsgCi0gICAgICAgICBpID0gc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OnJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfdHlwZT4oaSArIDEpKQotICAgICAgewotICAgICAgICAgY29uc3QgY2hhciogcCA9IGdldF9kZWZhdWx0X2Vycm9yX3N0cmluZyhpKTsKLSAgICAgICAgIHN0cmluZ190eXBlIGRlZmF1bHRfbWVzc2FnZTsKLSAgICAgICAgIHdoaWxlKCpwKQotICAgICAgICAgewotICAgICAgICAgICAgZGVmYXVsdF9tZXNzYWdlLmFwcGVuZCgxLCB0aGlzLT5tX3BjdHlwZS0+d2lkZW4oKnApKTsKLSAgICAgICAgICAgICsrcDsKLSAgICAgICAgIH0KLSAgICAgICAgIHN0cmluZ190eXBlIHMgPSB0aGlzLT5tX3BtZXNzYWdlcy0+Z2V0KGNhdCwgMCwgaSsyMDAsIGRlZmF1bHRfbWVzc2FnZSk7Ci0gICAgICAgICBzdGQ6OnN0cmluZyByZXN1bHQ7Ci0gICAgICAgICBmb3Ioc3RkOjpzdHJpbmc6OnNpemVfdHlwZSBqID0gMDsgaiA8IHMuc2l6ZSgpOyArK2opCi0gICAgICAgICB7Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKDEsIHRoaXMtPm1fcGN0eXBlLT5uYXJyb3coc1tqXSwgMCkpOwotICAgICAgICAgfQotICAgICAgICAgbV9lcnJvcl9zdHJpbmdzW2ldID0gcmVzdWx0OwotICAgICAgfQotICAgICAgLy8KLSAgICAgIC8vIEN1c3RvbSBjbGFzcyBuYW1lczoKLSAgICAgIC8vCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX0JVR0dZX0NUWVBFX0ZBQ0VUCi0gICAgICBzdGF0aWMgY29uc3QgY2hhcl9jbGFzc190eXBlIG1hc2tzWzE2XSA9IAotICAgICAgewotICAgICAgICAgc3RkOjpjdHlwZTxjaGFyVD46OmFsbnVtLAotICAgICAgICAgc3RkOjpjdHlwZTxjaGFyVD46OmFscGhhLAotICAgICAgICAgc3RkOjpjdHlwZTxjaGFyVD46OmNudHJsLAotICAgICAgICAgc3RkOjpjdHlwZTxjaGFyVD46OmRpZ2l0LAotICAgICAgICAgc3RkOjpjdHlwZTxjaGFyVD46OmdyYXBoLAotICAgICAgICAgY3BwX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD46Om1hc2tfaG9yaXpvbnRhbCwKLSAgICAgICAgIHN0ZDo6Y3R5cGU8Y2hhclQ+Ojpsb3dlciwKLSAgICAgICAgIHN0ZDo6Y3R5cGU8Y2hhclQ+OjpwcmludCwKLSAgICAgICAgIHN0ZDo6Y3R5cGU8Y2hhclQ+OjpwdW5jdCwKLSAgICAgICAgIHN0ZDo6Y3R5cGU8Y2hhclQ+OjpzcGFjZSwKLSAgICAgICAgIHN0ZDo6Y3R5cGU8Y2hhclQ+Ojp1cHBlciwKLSAgICAgICAgIGNwcF9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+OjptYXNrX3ZlcnRpY2FsLAotICAgICAgICAgc3RkOjpjdHlwZTxjaGFyVD46OnhkaWdpdCwKLSAgICAgICAgIGNwcF9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+OjptYXNrX2JsYW5rLAotICAgICAgICAgY3BwX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD46Om1hc2tfd29yZCwKLSAgICAgICAgIGNwcF9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+OjptYXNrX3VuaWNvZGUsCi0gICAgICB9OwotI2Vsc2UKLSAgICAgIHN0YXRpYyBjb25zdCBjaGFyX2NsYXNzX3R5cGUgbWFza3NbMTZdID0gCi0gICAgICB7Ci0gICAgICAgICA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmNoYXJfY2xhc3NfYWxudW0sCi0gICAgICAgICA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmNoYXJfY2xhc3NfYWxwaGEsCi0gICAgICAgICA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmNoYXJfY2xhc3NfY250cmwsCi0gICAgICAgICA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmNoYXJfY2xhc3NfZGlnaXQsCi0gICAgICAgICA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmNoYXJfY2xhc3NfZ3JhcGgsCi0gICAgICAgICA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmNoYXJfY2xhc3NfaG9yaXpvbnRhbF9zcGFjZSwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc19sb3dlciwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc19wcmludCwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc19wdW5jdCwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc19zcGFjZSwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc191cHBlciwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc192ZXJ0aWNhbF9zcGFjZSwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc194ZGlnaXQsCi0gICAgICAgICA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmNoYXJfY2xhc3NfYmxhbmssCi0gICAgICAgICA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmNoYXJfY2xhc3Nfd29yZCwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc191bmljb2RlLAotICAgICAgfTsKLSNlbmRpZgotICAgICAgc3RhdGljIGNvbnN0IHN0cmluZ190eXBlIG51bGxfc3RyaW5nOwotICAgICAgZm9yKHVuc2lnbmVkIGludCBqID0gMDsgaiA8PSAxMzsgKytqKQotICAgICAgewotICAgICAgICAgc3RyaW5nX3R5cGUgcyh0aGlzLT5tX3BtZXNzYWdlcy0+Z2V0KGNhdCwgMCwgaiszMDAsIG51bGxfc3RyaW5nKSk7Ci0gICAgICAgICBpZihzLnNpemUoKSkKLSAgICAgICAgICAgIHRoaXMtPm1fY3VzdG9tX2NsYXNzX25hbWVzW3NdID0gbWFza3Nbal07Ci0gICAgICB9Ci0gICB9Ci0jZW5kaWYKLSAgIC8vCi0gICAvLyBnZXQgdGhlIGNvbGxhdGlvbiBmb3JtYXQgdXNlZCBieSBtX3Bjb2xsYXRlOgotICAgLy8KLSAgIG1fY29sbGF0ZV90eXBlID0gcmVfZGV0YWlsOjpmaW5kX3NvcnRfc3ludGF4KHRoaXMsICZtX2NvbGxhdGVfZGVsaW0pOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci10eXBlbmFtZSBjcHBfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6Y2hhcl9jbGFzc190eXBlIAotICAgY3BwX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD46Omxvb2t1cF9jbGFzc25hbWVfaW1wKGNvbnN0IGNoYXJUKiBwMSwgY29uc3QgY2hhclQqIHAyKSBjb25zdAotewotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9CVUdHWV9DVFlQRV9GQUNFVAotICAgc3RhdGljIGNvbnN0IGNoYXJfY2xhc3NfdHlwZSBtYXNrc1syMl0gPSAKLSAgIHsKLSAgICAgIDAsCi0gICAgICBzdGQ6OmN0eXBlPGNoYXI+OjphbG51bSwgCi0gICAgICBzdGQ6OmN0eXBlPGNoYXI+OjphbHBoYSwKLSAgICAgIGNwcF9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+OjptYXNrX2JsYW5rLAotICAgICAgc3RkOjpjdHlwZTxjaGFyPjo6Y250cmwsCi0gICAgICBzdGQ6OmN0eXBlPGNoYXI+OjpkaWdpdCwKLSAgICAgIHN0ZDo6Y3R5cGU8Y2hhcj46OmRpZ2l0LAotICAgICAgc3RkOjpjdHlwZTxjaGFyPjo6Z3JhcGgsCi0gICAgICBjcHBfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6bWFza19ob3Jpem9udGFsLAotICAgICAgc3RkOjpjdHlwZTxjaGFyPjo6bG93ZXIsCi0gICAgICBzdGQ6OmN0eXBlPGNoYXI+Ojpsb3dlciwKLSAgICAgIHN0ZDo6Y3R5cGU8Y2hhcj46OnByaW50LAotICAgICAgc3RkOjpjdHlwZTxjaGFyPjo6cHVuY3QsCi0gICAgICBzdGQ6OmN0eXBlPGNoYXI+OjpzcGFjZSwKLSAgICAgIHN0ZDo6Y3R5cGU8Y2hhcj46OnNwYWNlLAotICAgICAgc3RkOjpjdHlwZTxjaGFyPjo6dXBwZXIsCi0gICAgICBjcHBfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6bWFza191bmljb2RlLAotICAgICAgc3RkOjpjdHlwZTxjaGFyPjo6dXBwZXIsCi0gICAgICBjcHBfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6bWFza192ZXJ0aWNhbCwKLSAgICAgIHN0ZDo6Y3R5cGU8Y2hhcj46OmFsbnVtIHwgY3BwX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD46Om1hc2tfd29yZCwgCi0gICAgICBzdGQ6OmN0eXBlPGNoYXI+OjphbG51bSB8IGNwcF9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+OjptYXNrX3dvcmQsIAotICAgICAgc3RkOjpjdHlwZTxjaGFyPjo6eGRpZ2l0LAotICAgfTsKLSNlbHNlCi0gICBzdGF0aWMgY29uc3QgY2hhcl9jbGFzc190eXBlIG1hc2tzWzIyXSA9IAotICAgewotICAgICAgMCwKLSAgICAgIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc19hbG51bSwgCi0gICAgICA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmNoYXJfY2xhc3NfYWxwaGEsCi0gICAgICA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmNoYXJfY2xhc3NfYmxhbmssCi0gICAgICA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmNoYXJfY2xhc3NfY250cmwsCi0gICAgICA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmNoYXJfY2xhc3NfZGlnaXQsCi0gICAgICA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmNoYXJfY2xhc3NfZGlnaXQsCi0gICAgICA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmNoYXJfY2xhc3NfZ3JhcGgsCi0gICAgICA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmNoYXJfY2xhc3NfaG9yaXpvbnRhbF9zcGFjZSwKLSAgICAgIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc19sb3dlciwKLSAgICAgIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc19sb3dlciwKLSAgICAgIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc19wcmludCwKLSAgICAgIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc19wdW5jdCwKLSAgICAgIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc19zcGFjZSwKLSAgICAgIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc19zcGFjZSwKLSAgICAgIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc191cHBlciwKLSAgICAgIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc191bmljb2RlLAotICAgICAgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpjaGFyX2NsYXNzX3VwcGVyLAotICAgICAgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpjaGFyX2NsYXNzX3ZlcnRpY2FsX3NwYWNlLAotICAgICAgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpjaGFyX2NsYXNzX2FsbnVtIHwgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpjaGFyX2NsYXNzX3dvcmQsIAotICAgICAgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpjaGFyX2NsYXNzX2FsbnVtIHwgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpjaGFyX2NsYXNzX3dvcmQsIAotICAgICAgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpjaGFyX2NsYXNzX3hkaWdpdCwKLSAgIH07Ci0jZW5kaWYKLSAgIGlmKG1fY3VzdG9tX2NsYXNzX25hbWVzLnNpemUoKSkKLSAgIHsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc3RkOjptYXA8c3RkOjpiYXNpY19zdHJpbmc8Y2hhclQ+LCBjaGFyX2NsYXNzX3R5cGU+Ojpjb25zdF9pdGVyYXRvciBtYXBfaXRlcjsKLSAgICAgIG1hcF9pdGVyIHBvcyA9IG1fY3VzdG9tX2NsYXNzX25hbWVzLmZpbmQoc3RyaW5nX3R5cGUocDEsIHAyKSk7Ci0gICAgICBpZihwb3MgIT0gbV9jdXN0b21fY2xhc3NfbmFtZXMuZW5kKCkpCi0gICAgICAgICByZXR1cm4gcG9zLT5zZWNvbmQ7Ci0gICB9Ci0gICBzdGQ6OnNpemVfdCBzdGF0ZV9pZCA9IDEgKyByZV9kZXRhaWw6OmdldF9kZWZhdWx0X2NsYXNzX2lkKHAxLCBwMik7Ci0gICBORE5CT09TVF9BU1NFUlQoc3RhdGVfaWQgPCBzaXplb2YobWFza3MpIC8gc2l6ZW9mKG1hc2tzWzBdKSk7Ci0gICByZXR1cm4gbWFza3Nbc3RhdGVfaWRdOwotfQotCi0jaWZkZWYgTkROQk9PU1RfUkVHRVhfQlVHR1lfQ1RZUEVfRkFDRVQKLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLWJvb2wgY3BwX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD46OmlzY3R5cGUoY29uc3QgY2hhclQgYywgY2hhcl9jbGFzc190eXBlIG1hc2spIGNvbnN0Ci17Ci0gICByZXR1cm4KLSAgICAgICgobWFzayAmIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc19zcGFjZSkgJiYgKHRoaXMtPm1fcGN0eXBlLT5pcyhzdGQ6OmN0eXBlPGNoYXJUPjo6c3BhY2UsIGMpKSkKLSAgICAgIHx8ICgobWFzayAmIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc19wcmludCkgJiYgKHRoaXMtPm1fcGN0eXBlLT5pcyhzdGQ6OmN0eXBlPGNoYXJUPjo6cHJpbnQsIGMpKSkKLSAgICAgIHx8ICgobWFzayAmIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc19jbnRybCkgJiYgKHRoaXMtPm1fcGN0eXBlLT5pcyhzdGQ6OmN0eXBlPGNoYXJUPjo6Y250cmwsIGMpKSkKLSAgICAgIHx8ICgobWFzayAmIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc191cHBlcikgJiYgKHRoaXMtPm1fcGN0eXBlLT5pcyhzdGQ6OmN0eXBlPGNoYXJUPjo6dXBwZXIsIGMpKSkKLSAgICAgIHx8ICgobWFzayAmIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc19sb3dlcikgJiYgKHRoaXMtPm1fcGN0eXBlLT5pcyhzdGQ6OmN0eXBlPGNoYXJUPjo6bG93ZXIsIGMpKSkKLSAgICAgIHx8ICgobWFzayAmIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc19hbHBoYSkgJiYgKHRoaXMtPm1fcGN0eXBlLT5pcyhzdGQ6OmN0eXBlPGNoYXJUPjo6YWxwaGEsIGMpKSkKLSAgICAgIHx8ICgobWFzayAmIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc19kaWdpdCkgJiYgKHRoaXMtPm1fcGN0eXBlLT5pcyhzdGQ6OmN0eXBlPGNoYXJUPjo6ZGlnaXQsIGMpKSkKLSAgICAgIHx8ICgobWFzayAmIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc19wdW5jdCkgJiYgKHRoaXMtPm1fcGN0eXBlLT5pcyhzdGQ6OmN0eXBlPGNoYXJUPjo6cHVuY3QsIGMpKSkKLSAgICAgIHx8ICgobWFzayAmIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc194ZGlnaXQpICYmICh0aGlzLT5tX3BjdHlwZS0+aXMoc3RkOjpjdHlwZTxjaGFyVD46OnhkaWdpdCwgYykpKQotICAgICAgfHwgKChtYXNrICYgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpjaGFyX2NsYXNzX2JsYW5rKSAmJiAodGhpcy0+bV9wY3R5cGUtPmlzKHN0ZDo6Y3R5cGU8Y2hhclQ+OjpzcGFjZSwgYykpICYmICE6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmlzX3NlcGFyYXRvcihjKSkKLSAgICAgIHx8ICgobWFzayAmIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y2hhcl9jbGFzc193b3JkKSAmJiAoYyA9PSAnXycpKQotICAgICAgfHwgKChtYXNrICYgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpjaGFyX2NsYXNzX3VuaWNvZGUpICYmIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6aXNfZXh0ZW5kZWQoYykpCi0gICAgICB8fCAoKG1hc2sgJiA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmNoYXJfY2xhc3NfdmVydGljYWxfc3BhY2UpICYmIChpc19zZXBhcmF0b3IoYykgfHwgKGMgPT0gJ1x2JykpKQotICAgICAgfHwgKChtYXNrICYgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpjaGFyX2NsYXNzX2hvcml6b250YWxfc3BhY2UpICYmIHRoaXMtPm1fcGN0eXBlLT5pcyhzdGQ6OmN0eXBlPGNoYXJUPjo6c3BhY2UsIGMpICYmICEoaXNfc2VwYXJhdG9yKGMpIHx8IChjID09ICdcdicpKSk7Ci19Ci0jZW5kaWYKLQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci1pbmxpbmUgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8Y29uc3QgY3BwX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD4gPiBjcmVhdGVfY3BwX3JlZ2V4X3RyYWl0cyhjb25zdCBzdGQ6OmxvY2FsZSYgbCBORE5CT09TVF9BUFBFTkRfRVhQTElDSVRfVEVNUExBVEVfVFlQRShjaGFyVCkpCi17Ci0gICBjcHBfcmVnZXhfdHJhaXRzX2Jhc2U8Y2hhclQ+IGtleShsKTsKLSAgIHJldHVybiA6Om5kbmJvb3N0OjpvYmplY3RfY2FjaGU8Y3BwX3JlZ2V4X3RyYWl0c19iYXNlPGNoYXJUPiwgY3BwX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD4gPjo6Z2V0KGtleSwgNSk7Ci19Ci0KLX0gLy8gcmVfZGV0YWlsCi0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLWNsYXNzIGNwcF9yZWdleF90cmFpdHMKLXsKLXByaXZhdGU6Ci0gICB0eXBlZGVmIHN0ZDo6Y3R5cGU8Y2hhclQ+ICAgICAgICAgICAgY3R5cGVfdHlwZTsKLXB1YmxpYzoKLSAgIHR5cGVkZWYgY2hhclQgICAgICAgICAgICAgICAgICAgICAgICBjaGFyX3R5cGU7Ci0gICB0eXBlZGVmIHN0ZDo6c2l6ZV90ICAgICAgICAgICAgICAgICAgc2l6ZV90eXBlOwotICAgdHlwZWRlZiBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyX3R5cGU+IHN0cmluZ190eXBlOwotICAgdHlwZWRlZiBzdGQ6OmxvY2FsZSAgICAgICAgICAgICAgICAgIGxvY2FsZV90eXBlOwotICAgdHlwZWRlZiBuZG5ib29zdDo6dWludF9sZWFzdDMyX3QgICAgICAgIGNoYXJfY2xhc3NfdHlwZTsKLQotICAgc3RydWN0IGJvb3N0X2V4dGVuc2lvbnNfdGFne307Ci0KLSAgIGNwcF9yZWdleF90cmFpdHMoKQotICAgICAgOiBtX3BpbXBsKHJlX2RldGFpbDo6Y3JlYXRlX2NwcF9yZWdleF90cmFpdHM8Y2hhclQ+KHN0ZDo6bG9jYWxlKCkpKQotICAgeyB9Ci0gICBzdGF0aWMgc2l6ZV90eXBlIGxlbmd0aChjb25zdCBjaGFyX3R5cGUqIHApCi0gICB7Ci0gICAgICByZXR1cm4gc3RkOjpjaGFyX3RyYWl0czxjaGFyVD46Omxlbmd0aChwKTsKLSAgIH0KLSAgIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X3R5cGUgc3ludGF4X3R5cGUoY2hhclQgYyljb25zdAotICAgewotICAgICAgcmV0dXJuIG1fcGltcGwtPnN5bnRheF90eXBlKGMpOwotICAgfQotICAgcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfc3ludGF4X3R5cGUgZXNjYXBlX3N5bnRheF90eXBlKGNoYXJUIGMpIGNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gbV9waW1wbC0+ZXNjYXBlX3N5bnRheF90eXBlKGMpOwotICAgfQotICAgY2hhclQgdHJhbnNsYXRlKGNoYXJUIGMpIGNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gYzsKLSAgIH0KLSAgIGNoYXJUIHRyYW5zbGF0ZV9ub2Nhc2UoY2hhclQgYykgY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBtX3BpbXBsLT5tX3BjdHlwZS0+dG9sb3dlcihjKTsKLSAgIH0KLSAgIGNoYXJUIHRyYW5zbGF0ZShjaGFyVCBjLCBib29sIGljYXNlKSBjb25zdAotICAgewotICAgICAgcmV0dXJuIGljYXNlID8gbV9waW1wbC0+bV9wY3R5cGUtPnRvbG93ZXIoYykgOiBjOwotICAgfQotICAgY2hhclQgdG9sb3dlcihjaGFyVCBjKSBjb25zdAotICAgewotICAgICAgcmV0dXJuIG1fcGltcGwtPm1fcGN0eXBlLT50b2xvd2VyKGMpOwotICAgfQotICAgY2hhclQgdG91cHBlcihjaGFyVCBjKSBjb25zdAotICAgewotICAgICAgcmV0dXJuIG1fcGltcGwtPm1fcGN0eXBlLT50b3VwcGVyKGMpOwotICAgfQotICAgc3RyaW5nX3R5cGUgdHJhbnNmb3JtKGNvbnN0IGNoYXJUKiBwMSwgY29uc3QgY2hhclQqIHAyKSBjb25zdAotICAgewotICAgICAgcmV0dXJuIG1fcGltcGwtPnRyYW5zZm9ybShwMSwgcDIpOwotICAgfQotICAgc3RyaW5nX3R5cGUgdHJhbnNmb3JtX3ByaW1hcnkoY29uc3QgY2hhclQqIHAxLCBjb25zdCBjaGFyVCogcDIpIGNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gbV9waW1wbC0+dHJhbnNmb3JtX3ByaW1hcnkocDEsIHAyKTsKLSAgIH0KLSAgIGNoYXJfY2xhc3NfdHlwZSBsb29rdXBfY2xhc3NuYW1lKGNvbnN0IGNoYXJUKiBwMSwgY29uc3QgY2hhclQqIHAyKSBjb25zdAotICAgewotICAgICAgcmV0dXJuIG1fcGltcGwtPmxvb2t1cF9jbGFzc25hbWUocDEsIHAyKTsKLSAgIH0KLSAgIHN0cmluZ190eXBlIGxvb2t1cF9jb2xsYXRlbmFtZShjb25zdCBjaGFyVCogcDEsIGNvbnN0IGNoYXJUKiBwMikgY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBtX3BpbXBsLT5sb29rdXBfY29sbGF0ZW5hbWUocDEsIHAyKTsKLSAgIH0KLSAgIGJvb2wgaXNjdHlwZShjaGFyVCBjLCBjaGFyX2NsYXNzX3R5cGUgZikgY29uc3QKLSAgIHsKLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfQlVHR1lfQ1RZUEVfRkFDRVQKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc3RkOjpjdHlwZTxjaGFyVD46Om1hc2sgY3R5cGVfbWFzazsKLQotICAgICAgc3RhdGljIGNvbnN0IGN0eXBlX21hc2sgbWFza19iYXNlID0gCi0gICAgICAgICBzdGF0aWNfY2FzdDxjdHlwZV9tYXNrPigKLSAgICAgICAgICAgIHN0ZDo6Y3R5cGU8Y2hhclQ+OjphbG51bSAKLSAgICAgICAgICAgIHwgc3RkOjpjdHlwZTxjaGFyVD46OmFscGhhCi0gICAgICAgICAgICB8IHN0ZDo6Y3R5cGU8Y2hhclQ+OjpjbnRybAotICAgICAgICAgICAgfCBzdGQ6OmN0eXBlPGNoYXJUPjo6ZGlnaXQKLSAgICAgICAgICAgIHwgc3RkOjpjdHlwZTxjaGFyVD46OmdyYXBoCi0gICAgICAgICAgICB8IHN0ZDo6Y3R5cGU8Y2hhclQ+Ojpsb3dlcgotICAgICAgICAgICAgfCBzdGQ6OmN0eXBlPGNoYXJUPjo6cHJpbnQKLSAgICAgICAgICAgIHwgc3RkOjpjdHlwZTxjaGFyVD46OnB1bmN0Ci0gICAgICAgICAgICB8IHN0ZDo6Y3R5cGU8Y2hhclQ+OjpzcGFjZQotICAgICAgICAgICAgfCBzdGQ6OmN0eXBlPGNoYXJUPjo6dXBwZXIKLSAgICAgICAgICAgIHwgc3RkOjpjdHlwZTxjaGFyVD46OnhkaWdpdCk7Ci0KLSAgICAgIGlmKChmICYgbWFza19iYXNlKSAKLSAgICAgICAgICYmIChtX3BpbXBsLT5tX3BjdHlwZS0+aXMoCi0gICAgICAgICAgICBzdGF0aWNfY2FzdDxjdHlwZV9tYXNrPihmICYgbWFza19iYXNlKSwgYykpKQotICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICBlbHNlIGlmKChmICYgcmVfZGV0YWlsOjpjcHBfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6bWFza191bmljb2RlKSAmJiByZV9kZXRhaWw6OmlzX2V4dGVuZGVkKGMpKQotICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICBlbHNlIGlmKChmICYgcmVfZGV0YWlsOjpjcHBfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6bWFza193b3JkKSAmJiAoYyA9PSAnXycpKQotICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICBlbHNlIGlmKChmICYgcmVfZGV0YWlsOjpjcHBfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6bWFza19ibGFuaykgCi0gICAgICAgICAmJiBtX3BpbXBsLT5tX3BjdHlwZS0+aXMoc3RkOjpjdHlwZTxjaGFyVD46OnNwYWNlLCBjKQotICAgICAgICAgJiYgIXJlX2RldGFpbDo6aXNfc2VwYXJhdG9yKGMpKQotICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICBlbHNlIGlmKChmICYgcmVfZGV0YWlsOjpjcHBfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6bWFza192ZXJ0aWNhbCkgCi0gICAgICAgICAmJiAoOjpuZG5ib29zdDo6cmVfZGV0YWlsOjppc19zZXBhcmF0b3IoYykgfHwgKGMgPT0gJ1x2JykpKQotICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICBlbHNlIGlmKChmICYgcmVfZGV0YWlsOjpjcHBfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6bWFza19ob3Jpem9udGFsKSAKLSAgICAgICAgICYmIHRoaXMtPmlzY3R5cGUoYywgc3RkOjpjdHlwZTxjaGFyVD46OnNwYWNlKSAmJiAhdGhpcy0+aXNjdHlwZShjLCByZV9kZXRhaWw6OmNwcF9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+OjptYXNrX3ZlcnRpY2FsKSkKLSAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgcmV0dXJuIGZhbHNlOwotI2Vsc2UKLSAgICAgIHJldHVybiBtX3BpbXBsLT5pc2N0eXBlKGMsIGYpOwotI2VuZGlmCi0gICB9Ci0gICBpbnQgdG9pKGNvbnN0IGNoYXJUKiYgcDEsIGNvbnN0IGNoYXJUKiBwMiwgaW50IHJhZGl4KWNvbnN0OwotICAgaW50IHZhbHVlKGNoYXJUIGMsIGludCByYWRpeCljb25zdAotICAgewotICAgICAgY29uc3QgY2hhclQqIHBjID0gJmM7Ci0gICAgICByZXR1cm4gdG9pKHBjLCBwYyArIDEsIHJhZGl4KTsKLSAgIH0KLSAgIGxvY2FsZV90eXBlIGltYnVlKGxvY2FsZV90eXBlIGwpCi0gICB7Ci0gICAgICBzdGQ6OmxvY2FsZSByZXN1bHQoZ2V0bG9jKCkpOwotICAgICAgbV9waW1wbCA9IHJlX2RldGFpbDo6Y3JlYXRlX2NwcF9yZWdleF90cmFpdHM8Y2hhclQ+KGwpOwotICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgIH0KLSAgIGxvY2FsZV90eXBlIGdldGxvYygpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBtX3BpbXBsLT5tX2xvY2FsZTsKLSAgIH0KLSAgIHN0ZDo6c3RyaW5nIGVycm9yX3N0cmluZyhyZWdleF9jb25zdGFudHM6OmVycm9yX3R5cGUgbikgY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBtX3BpbXBsLT5lcnJvcl9zdHJpbmcobik7Ci0gICB9Ci0KLSAgIC8vCi0gICAvLyBleHRlbnNpb246Ci0gICAvLyBzZXQgdGhlIG5hbWUgb2YgdGhlIG1lc3NhZ2UgY2F0YWxvZyBpbiB1c2UgKGRlZmF1bHRzIHRvICJib29zdF9yZWdleCIpLgotICAgLy8KLSAgIHN0YXRpYyBzdGQ6OnN0cmluZyBjYXRhbG9nX25hbWUoY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUpOwotICAgc3RhdGljIHN0ZDo6c3RyaW5nIGdldF9jYXRhbG9nX25hbWUoKTsKLQotcHJpdmF0ZToKLSAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPGNvbnN0IHJlX2RldGFpbDo6Y3BwX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD4gPiBtX3BpbXBsOwotICAgLy8KLSAgIC8vIGNhdGFsb2cgbmFtZSBoYW5kbGVyOgotICAgLy8KLSAgIHN0YXRpYyBzdGQ6OnN0cmluZyYgZ2V0X2NhdGFsb2dfbmFtZV9pbnN0KCk7Ci0KLSNpZmRlZiBORE5CT09TVF9IQVNfVEhSRUFEUwotICAgc3RhdGljIHN0YXRpY19tdXRleCYgZ2V0X211dGV4X2luc3QoKTsKLSNlbmRpZgotfTsKLQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci1pbnQgY3BwX3JlZ2V4X3RyYWl0czxjaGFyVD46OnRvaShjb25zdCBjaGFyVComIGZpcnN0LCBjb25zdCBjaGFyVCogbGFzdCwgaW50IHJhZGl4KWNvbnN0Ci17Ci0gICByZV9kZXRhaWw6OnBhcnNlcl9idWY8Y2hhclQ+ICAgc2J1ZjsgICAgICAgICAgICAvLyBidWZmZXIgZm9yIHBhcnNpbmcgbnVtYmVycy4KLSAgIHN0ZDo6YmFzaWNfaXN0cmVhbTxjaGFyVD4gICAgICBpcygmc2J1Zik7ICAgICAgIC8vIHN0cmVhbSBmb3IgcGFyc2luZyBudW1iZXJzLgotCi0gICAvLyB3ZSBkbyBOT1Qgd2FudCB0byBwYXJzZSBhbnkgdGhvdXNhbmRzIHNlcGFyYXRvcnMgaW5zaWRlIHRoZSBzdHJlYW06Ci0gICBsYXN0ID0gc3RkOjpmaW5kKGZpcnN0LCBsYXN0LCBORE5CT09TVF9VU0VfRkFDRVQoc3RkOjpudW1wdW5jdDxjaGFyVD4sIGlzLmdldGxvYygpKS50aG91c2FuZHNfc2VwKCkpOwotCi0gICBzYnVmLnB1YnNldGJ1Zihjb25zdF9jYXN0PGNoYXJUKj4oc3RhdGljX2Nhc3Q8Y29uc3QgY2hhclQqPihmaXJzdCkpLCBzdGF0aWNfY2FzdDxzdGQ6OnN0cmVhbXNpemU+KGxhc3QtZmlyc3QpKTsKLSAgIGlzLmNsZWFyKCk7Ci0gICBpZihzdGQ6OmFicyhyYWRpeCkgPT0gMTYpIGlzID4+IHN0ZDo6aGV4OwotICAgZWxzZSBpZihzdGQ6OmFicyhyYWRpeCkgPT0gOCkgaXMgPj4gc3RkOjpvY3Q7Ci0gICBlbHNlIGlzID4+IHN0ZDo6ZGVjOwotICAgaW50IHZhbDsKLSAgIGlmKGlzID4+IHZhbCkKLSAgIHsKLSAgICAgIGZpcnN0ID0gZmlyc3QgKyAoKGxhc3QgLSBmaXJzdCkgLSBzYnVmLmluX2F2YWlsKCkpOwotICAgICAgcmV0dXJuIHZhbDsKLSAgIH0KLSAgIGVsc2UKLSAgICAgIHJldHVybiAtMTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotc3RkOjpzdHJpbmcgY3BwX3JlZ2V4X3RyYWl0czxjaGFyVD46OmNhdGFsb2dfbmFtZShjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSkKLXsKLSNpZmRlZiBORE5CT09TVF9IQVNfVEhSRUFEUwotICAgc3RhdGljX211dGV4OjpzY29wZWRfbG9jayBsayhnZXRfbXV0ZXhfaW5zdCgpKTsKLSNlbmRpZgotICAgc3RkOjpzdHJpbmcgcmVzdWx0KGdldF9jYXRhbG9nX25hbWVfaW5zdCgpKTsKLSAgIGdldF9jYXRhbG9nX25hbWVfaW5zdCgpID0gbmFtZTsKLSAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLXN0ZDo6c3RyaW5nJiBjcHBfcmVnZXhfdHJhaXRzPGNoYXJUPjo6Z2V0X2NhdGFsb2dfbmFtZV9pbnN0KCkKLXsKLSAgIHN0YXRpYyBzdGQ6OnN0cmluZyBzX25hbWU7Ci0gICByZXR1cm4gc19uYW1lOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci1zdGQ6OnN0cmluZyBjcHBfcmVnZXhfdHJhaXRzPGNoYXJUPjo6Z2V0X2NhdGFsb2dfbmFtZSgpCi17Ci0jaWZkZWYgTkROQk9PU1RfSEFTX1RIUkVBRFMKLSAgIHN0YXRpY19tdXRleDo6c2NvcGVkX2xvY2sgbGsoZ2V0X211dGV4X2luc3QoKSk7Ci0jZW5kaWYKLSAgIHN0ZDo6c3RyaW5nIHJlc3VsdChnZXRfY2F0YWxvZ19uYW1lX2luc3QoKSk7Ci0gICByZXR1cm4gcmVzdWx0OwotfQotCi0jaWZkZWYgTkROQk9PU1RfSEFTX1RIUkVBRFMKLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLXN0YXRpY19tdXRleCYgY3BwX3JlZ2V4X3RyYWl0czxjaGFyVD46OmdldF9tdXRleF9pbnN0KCkKLXsKLSAgIHN0YXRpYyBzdGF0aWNfbXV0ZXggc19tdXRleCA9IE5ETkJPT1NUX1NUQVRJQ19NVVRFWF9JTklUOwotICAgcmV0dXJuIHNfbXV0ZXg7Ci19Ci0jZW5kaWYKLQotCi19IC8vIGJvb3N0Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9TVUZGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotI2VuZGlmCi0KLSNlbmRpZgotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvY3JlZ2V4LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvY3JlZ2V4LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmZlNjFmMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L2NyZWdleC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMzAgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMgotICogSm9obiBNYWRkb2NrCi0gKgotICogVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUKLSAqIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlCi0gKiBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICovCi0KLSAvKgotICAqICAgTE9DQVRJT046ICAgIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLSAgKiAgIEZJTEUgICAgICAgICBjcmVnZXguY3BwCi0gICogICBWRVJTSU9OICAgICAgc2VlIDxuZG5ib29zdC92ZXJzaW9uLmhwcD4KLSAgKiAgIERFU0NSSVBUSU9OOiBEZWNsYXJlcyBQT1NJWCBBUEkgZnVuY3Rpb25zCi0gICogICAgICAgICAgICAgICAgKyBuZG5ib29zdDo6UmVnRXggaGlnaCBsZXZlbCB3cmFwcGVyLgotICAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JFX0NSRUdFWF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfUkVfQ1JFR0VYX0hQUF9JTkNMVURFRAotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX0NPTkZJR19IUFAKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC9jb25maWcuaHBwPgotI2VuZGlmCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvdjQvbWF0Y2hfZmxhZ3MuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3Y0L2Vycm9yX3R5cGUuaHBwPgotCi0jaWZkZWYgX19jcGx1c3BsdXMKLSNpbmNsdWRlIDxjc3RkZGVmPgotI2Vsc2UKLSNpbmNsdWRlIDxzdGRkZWYuaD4KLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfUFJFRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLS8qIGluY2x1ZGUgdGhlc2UgZGVmcyBvbmx5IGZvciBQT1NJWCBjb21wYXRhYmxpdHkgKi8KLSNpZmRlZiBfX2NwbHVzcGx1cwotbmFtZXNwYWNlIG5kbmJvb3N0ewotZXh0ZXJuICJDIiB7Ci0jZW5kaWYKLQotI2lmIGRlZmluZWQoX19jcGx1c3BsdXMpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFKQotdHlwZWRlZiBzdGQ6OnB0cmRpZmZfdCByZWdvZmZfdDsKLXR5cGVkZWYgc3RkOjpzaXplX3QgcmVnc2l6ZV90OwotI2Vsc2UKLXR5cGVkZWYgcHRyZGlmZl90IHJlZ29mZl90OwotdHlwZWRlZiBzaXplX3QgcmVnc2l6ZV90OwotI2VuZGlmCi0KLXR5cGVkZWYgc3RydWN0Ci17Ci0gICB1bnNpZ25lZCBpbnQgcmVfbWFnaWM7Ci0jaWZkZWYgX19jcGx1c3BsdXMKLSAgIHN0ZDo6c2l6ZV90ICByZV9uc3ViOyAgICAgIC8qIG51bWJlciBvZiBwYXJlbnRoZXNpemVkIHN1YmV4cHJlc3Npb25zICovCi0jZWxzZQotICAgc2l6ZV90IHJlX25zdWI7IAotI2VuZGlmCi0gICBjb25zdCBjaGFyKiAgcmVfZW5kcDsgICAgICAgLyogZW5kIHBvaW50ZXIgZm9yIFJFR19QRU5EICovCi0gICB2b2lkKiBndXRzOyAgICAgICAgICAgICAgICAvKiBub25lIG9mIHlvdXIgYnVzaW5lc3MgOi0pICovCi0gICBtYXRjaF9mbGFnX3R5cGUgZWZsYWdzOyAgICAgICAgLyogbm9uZSBvZiB5b3VyIGJ1c2luZXNzIDotKSAqLwotfSByZWdleF90QTsKLQotI2lmbmRlZiBORE5CT09TVF9OT19XUkVHRVgKLXR5cGVkZWYgc3RydWN0Ci17Ci0gICB1bnNpZ25lZCBpbnQgcmVfbWFnaWM7Ci0jaWZkZWYgX19jcGx1c3BsdXMKLSAgIHN0ZDo6c2l6ZV90ICByZV9uc3ViOyAgICAgICAgIC8qIG51bWJlciBvZiBwYXJlbnRoZXNpemVkIHN1YmV4cHJlc3Npb25zICovCi0jZWxzZQotICAgc2l6ZV90IHJlX25zdWI7Ci0jZW5kaWYKLSAgIGNvbnN0IHdjaGFyX3QqIHJlX2VuZHA7ICAgICAgIC8qIGVuZCBwb2ludGVyIGZvciBSRUdfUEVORCAqLwotICAgdm9pZCogZ3V0czsgICAgICAgICAgICAgICAgICAgLyogbm9uZSBvZiB5b3VyIGJ1c2luZXNzIDotKSAqLwotICAgbWF0Y2hfZmxhZ190eXBlIGVmbGFnczsgICAgICAgICAgIC8qIG5vbmUgb2YgeW91ciBidXNpbmVzcyA6LSkgKi8KLX0gcmVnZXhfdFc7Ci0jZW5kaWYKLQotdHlwZWRlZiBzdHJ1Y3QKLXsKLSAgIHJlZ29mZl90IHJtX3NvOyAgICAgIC8qIHN0YXJ0IG9mIG1hdGNoICovCi0gICByZWdvZmZfdCBybV9lbzsgICAgICAvKiBlbmQgb2YgbWF0Y2ggKi8KLX0gcmVnbWF0Y2hfdDsKLQotLyogcmVnY29tcCgpIGZsYWdzICovCi10eXBlZGVmIGVudW17Ci0gICBSRUdfQkFTSUMgPSAwMDAwLAotICAgUkVHX0VYVEVOREVEID0gMDAwMSwKLSAgIFJFR19JQ0FTRSA9IDAwMDIsCi0gICBSRUdfTk9TVUIgPSAwMDA0LAotICAgUkVHX05FV0xJTkUgPSAwMDEwLAotICAgUkVHX05PU1BFQyA9IDAwMjAsCi0gICBSRUdfUEVORCA9IDAwNDAsCi0gICBSRUdfRFVNUCA9IDAyMDAsCi0gICBSRUdfTk9DT0xMQVRFID0gMDQwMCwKLSAgIFJFR19FU0NBUEVfSU5fTElTVFMgPSAwMTAwMCwKLSAgIFJFR19ORVdMSU5FX0FMVCA9IDAyMDAwLAotICAgUkVHX1BFUkxFWCA9IDA0MDAwLAotCi0gICBSRUdfUEVSTCA9IFJFR19FWFRFTkRFRCB8IFJFR19OT0NPTExBVEUgfCBSRUdfRVNDQVBFX0lOX0xJU1RTIHwgUkVHX1BFUkxFWCwKLSAgIFJFR19BV0sgPSBSRUdfRVhURU5ERUQgfCBSRUdfRVNDQVBFX0lOX0xJU1RTLAotICAgUkVHX0dSRVAgPSBSRUdfQkFTSUMgfCBSRUdfTkVXTElORV9BTFQsCi0gICBSRUdfRUdSRVAgPSBSRUdfRVhURU5ERUQgfCBSRUdfTkVXTElORV9BTFQsCi0KLSAgIFJFR19BU1NFUlQgPSAxNSwKLSAgIFJFR19JTlZBUkcgPSAxNiwKLSAgIFJFR19BVE9JID0gMjU1LCAgIC8qIGNvbnZlcnQgbmFtZSB0byBudW1iZXIgKCEpICovCi0gICBSRUdfSVRPQSA9IDA0MDAgICAvKiBjb252ZXJ0IG51bWJlciB0byBuYW1lICghKSAqLwotfSByZWdfY29tcF9mbGFnczsKLQotLyogcmVnZXhlYygpIGZsYWdzICovCi10eXBlZGVmIGVudW17Ci0gICBSRUdfTk9UQk9MID0gICAgMDAwMDEsCi0gICBSRUdfTk9URU9MID0gICAgMDAwMDIsCi0gICBSRUdfU1RBUlRFTkQgPSAgMDAwMDQKLX0gcmVnX2V4ZWNfZmxhZ3M7Ci0KLS8qCi0gKiBQT1NJWCBlcnJvciBjb2RlczoKLSAqLwotdHlwZWRlZiB1bnNpZ25lZCByZWdfZXJyb3JfdDsKLXR5cGVkZWYgcmVnX2Vycm9yX3QgcmVnX2VycmNvZGVfdDsgIC8qIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5ICovCi0KLXN0YXRpYyBjb25zdCByZWdfZXJyb3JfdCBSRUdfTk9FUlJPUiA9IDA7ICAgLyogU3VjY2Vzcy4gICovCi1zdGF0aWMgY29uc3QgcmVnX2Vycm9yX3QgUkVHX05PTUFUQ0ggPSAxOyAgIC8qIERpZG4ndCBmaW5kIGEgbWF0Y2ggKGZvciByZWdleGVjKS4gICovCi0KLSAgLyogUE9TSVggcmVnY29tcCByZXR1cm4gZXJyb3IgY29kZXMuICAoSW4gdGhlIG9yZGVyIGxpc3RlZCBpbiB0aGUKLSAgICAgc3RhbmRhcmQuKSAgKi8KLXN0YXRpYyBjb25zdCByZWdfZXJyb3JfdCBSRUdfQkFEUEFUID0gMjsgICAgLyogSW52YWxpZCBwYXR0ZXJuLiAgKi8KLXN0YXRpYyBjb25zdCByZWdfZXJyb3JfdCBSRUdfRUNPTExBVEUgPSAzOyAgLyogVW5kZWZpbmVkIGNvbGxhdGluZyBlbGVtZW50LiAgKi8KLXN0YXRpYyBjb25zdCByZWdfZXJyb3JfdCBSRUdfRUNUWVBFID0gNDsgICAgLyogSW52YWxpZCBjaGFyYWN0ZXIgY2xhc3MgbmFtZS4gICovCi1zdGF0aWMgY29uc3QgcmVnX2Vycm9yX3QgUkVHX0VFU0NBUEUgPSA1OyAgIC8qIFRyYWlsaW5nIGJhY2tzbGFzaC4gICovCi1zdGF0aWMgY29uc3QgcmVnX2Vycm9yX3QgUkVHX0VTVUJSRUcgPSA2OyAgIC8qIEludmFsaWQgYmFjayByZWZlcmVuY2UuICAqLwotc3RhdGljIGNvbnN0IHJlZ19lcnJvcl90IFJFR19FQlJBQ0sgPSA3OyAgICAvKiBVbm1hdGNoZWQgbGVmdCBicmFja2V0LiAgKi8KLXN0YXRpYyBjb25zdCByZWdfZXJyb3JfdCBSRUdfRVBBUkVOID0gODsgICAgLyogUGFyZW50aGVzaXMgaW1iYWxhbmNlLiAgKi8KLXN0YXRpYyBjb25zdCByZWdfZXJyb3JfdCBSRUdfRUJSQUNFID0gOTsgICAgLyogVW5tYXRjaGVkIFx7LiAgKi8KLXN0YXRpYyBjb25zdCByZWdfZXJyb3JfdCBSRUdfQkFEQlIgPSAxMDsgICAgLyogSW52YWxpZCBjb250ZW50cyBvZiBce1x9LiAgKi8KLXN0YXRpYyBjb25zdCByZWdfZXJyb3JfdCBSRUdfRVJBTkdFID0gMTE7ICAgLyogSW52YWxpZCByYW5nZSBlbmQuICAqLwotc3RhdGljIGNvbnN0IHJlZ19lcnJvcl90IFJFR19FU1BBQ0UgPSAxMjsgICAvKiBSYW4gb3V0IG9mIG1lbW9yeS4gICovCi1zdGF0aWMgY29uc3QgcmVnX2Vycm9yX3QgUkVHX0JBRFJQVCA9IDEzOyAgIC8qIE5vIHByZWNlZGluZyByZSBmb3IgcmVwZXRpdGlvbiBvcC4gICovCi1zdGF0aWMgY29uc3QgcmVnX2Vycm9yX3QgUkVHX0VFTkQgPSAxNDsgICAgIC8qIHVuZXhwZWN0ZWQgZW5kIG9mIGV4cHJlc3Npb24gKi8KLXN0YXRpYyBjb25zdCByZWdfZXJyb3JfdCBSRUdfRVNJWkUgPSAxNTsgICAgLyogZXhwcmVzc2lvbiB0b28gYmlnICovCi1zdGF0aWMgY29uc3QgcmVnX2Vycm9yX3QgUkVHX0VSUEFSRU4gPSA4OyAgIC8qID0gUkVHX0VQQVJFTiA6IHVubWF0Y2hlZCByaWdodCBwYXJlbnRoZXNpcyAqLwotc3RhdGljIGNvbnN0IHJlZ19lcnJvcl90IFJFR19FTVBUWSA9IDE3OyAgICAvKiBlbXB0eSBleHByZXNzaW9uICovCi1zdGF0aWMgY29uc3QgcmVnX2Vycm9yX3QgUkVHX0VfTUVNT1JZID0gMTU7IC8qID0gUkVHX0VTSVpFIDogb3V0IG9mIG1lbW9yeSAqLwotc3RhdGljIGNvbnN0IHJlZ19lcnJvcl90IFJFR19FQ09NUExFWElUWSA9IDE4OyAvKiBjb21wbGV4aXR5IHRvbyBoaWdoICovCi1zdGF0aWMgY29uc3QgcmVnX2Vycm9yX3QgUkVHX0VTVEFDSyA9IDE5OyAgIC8qIG91dCBvZiBzdGFjayBzcGFjZSAqLwotc3RhdGljIGNvbnN0IHJlZ19lcnJvcl90IFJFR19FX1BFUkwgPSAyMDsgICAvKiBQZXJsICg/Li4uKSBlcnJvciAqLwotc3RhdGljIGNvbnN0IHJlZ19lcnJvcl90IFJFR19FX1VOS05PV04gPSAyMTsgLyogdW5rbm93biBlcnJvciAqLwotc3RhdGljIGNvbnN0IHJlZ19lcnJvcl90IFJFR19FTk9TWVMgPSAyMTsgICAvKiA9IFJFR19FX1VOS05PV04gOiBSZXNlcnZlZC4gKi8KLQotTkROQk9PU1RfUkVHRVhfREVDTCBpbnQgTkROQk9PU1RfUkVHRVhfQ0NBTEwgcmVnY29tcEEocmVnZXhfdEEqLCBjb25zdCBjaGFyKiwgaW50KTsKLU5ETkJPT1NUX1JFR0VYX0RFQ0wgcmVnc2l6ZV90IE5ETkJPT1NUX1JFR0VYX0NDQUxMIHJlZ2Vycm9yQShpbnQsIGNvbnN0IHJlZ2V4X3RBKiwgY2hhciosIHJlZ3NpemVfdCk7Ci1ORE5CT09TVF9SRUdFWF9ERUNMIGludCBORE5CT09TVF9SRUdFWF9DQ0FMTCByZWdleGVjQShjb25zdCByZWdleF90QSosIGNvbnN0IGNoYXIqLCByZWdzaXplX3QsIHJlZ21hdGNoX3QqLCBpbnQpOwotTkROQk9PU1RfUkVHRVhfREVDTCB2b2lkIE5ETkJPT1NUX1JFR0VYX0NDQUxMIHJlZ2ZyZWVBKHJlZ2V4X3RBKik7Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fV1JFR0VYCi1ORE5CT09TVF9SRUdFWF9ERUNMIGludCBORE5CT09TVF9SRUdFWF9DQ0FMTCByZWdjb21wVyhyZWdleF90VyosIGNvbnN0IHdjaGFyX3QqLCBpbnQpOwotTkROQk9PU1RfUkVHRVhfREVDTCByZWdzaXplX3QgTkROQk9PU1RfUkVHRVhfQ0NBTEwgcmVnZXJyb3JXKGludCwgY29uc3QgcmVnZXhfdFcqLCB3Y2hhcl90KiwgcmVnc2l6ZV90KTsKLU5ETkJPT1NUX1JFR0VYX0RFQ0wgaW50IE5ETkJPT1NUX1JFR0VYX0NDQUxMIHJlZ2V4ZWNXKGNvbnN0IHJlZ2V4X3RXKiwgY29uc3Qgd2NoYXJfdCosIHJlZ3NpemVfdCwgcmVnbWF0Y2hfdCosIGludCk7Ci1ORE5CT09TVF9SRUdFWF9ERUNMIHZvaWQgTkROQk9PU1RfUkVHRVhfQ0NBTEwgcmVnZnJlZVcocmVnZXhfdFcqKTsKLSNlbmRpZgotCi0jaWZkZWYgVU5JQ09ERQotI2RlZmluZSByZWdjb21wIHJlZ2NvbXBXCi0jZGVmaW5lIHJlZ2Vycm9yIHJlZ2Vycm9yVwotI2RlZmluZSByZWdleGVjIHJlZ2V4ZWNXCi0jZGVmaW5lIHJlZ2ZyZWUgcmVnZnJlZVcKLSNkZWZpbmUgcmVnZXhfdCByZWdleF90VwotI2Vsc2UKLSNkZWZpbmUgcmVnY29tcCByZWdjb21wQQotI2RlZmluZSByZWdlcnJvciByZWdlcnJvckEKLSNkZWZpbmUgcmVnZXhlYyByZWdleGVjQQotI2RlZmluZSByZWdmcmVlIHJlZ2ZyZWVBCi0jZGVmaW5lIHJlZ2V4X3QgcmVnZXhfdEEKLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfU1VGRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotfSAvKiBleHRlcm4gIkMiICovCi19IC8qIG5hbWVzcGFjZSAqLwotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKF9fY3BsdXNwbHVzKQotLyoKLSAqIEMrKyBoaWdoIGxldmVsIHdyYXBwZXIgZ29lcyBoZXJlOgotICovCi0jaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPHZlY3Rvcj4KLW5hbWVzcGFjZSBuZG5ib29zdHsKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1BSRUZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi1jbGFzcyBSZWdFeDsKLQotbmFtZXNwYWNlIHJlX2RldGFpbHsKLQotY2xhc3MgUmVnRXhEYXRhOwotc3RydWN0IHByZWQxOwotc3RydWN0IHByZWQyOwotc3RydWN0IHByZWQzOwotc3RydWN0IHByZWQ0OwotCi19ICAvKiBuYW1lc3BhY2UgcmVfZGV0YWlsICovCi0KLSNpZiAoZGVmaW5lZChORE5CT09TVF9NU1ZDKSB8fCBkZWZpbmVkKF9fQk9STEFORENfXykpICYmICFkZWZpbmVkKE5ETkJPT1NUX0RJU0FCTEVfV0lOMzIpCi10eXBlZGVmIGJvb2wgKF9fY2RlY2wgKkdyZXBDYWxsYmFjaykoY29uc3QgUmVnRXgmIGV4cHJlc3Npb24pOwotdHlwZWRlZiBib29sIChfX2NkZWNsICpHcmVwRmlsZUNhbGxiYWNrKShjb25zdCBjaGFyKiBmaWxlLCBjb25zdCBSZWdFeCYgZXhwcmVzc2lvbik7Ci10eXBlZGVmIGJvb2wgKF9fY2RlY2wgKkZpbmRGaWxlc0NhbGxiYWNrKShjb25zdCBjaGFyKiBmaWxlKTsKLSNlbHNlCi10eXBlZGVmIGJvb2wgKCpHcmVwQ2FsbGJhY2spKGNvbnN0IFJlZ0V4JiBleHByZXNzaW9uKTsKLXR5cGVkZWYgYm9vbCAoKkdyZXBGaWxlQ2FsbGJhY2spKGNvbnN0IGNoYXIqIGZpbGUsIGNvbnN0IFJlZ0V4JiBleHByZXNzaW9uKTsKLXR5cGVkZWYgYm9vbCAoKkZpbmRGaWxlc0NhbGxiYWNrKShjb25zdCBjaGFyKiBmaWxlKTsKLSNlbmRpZgotCi1jbGFzcyBORE5CT09TVF9SRUdFWF9ERUNMIFJlZ0V4Ci17Ci1wcml2YXRlOgotICAgcmVfZGV0YWlsOjpSZWdFeERhdGEqIHBkYXRhOwotcHVibGljOgotICAgUmVnRXgoKTsKLSAgIFJlZ0V4KGNvbnN0IFJlZ0V4JiBvKTsKLSAgIH5SZWdFeCgpOwotICAgZXhwbGljaXQgUmVnRXgoY29uc3QgY2hhciogYywgYm9vbCBpY2FzZSA9IGZhbHNlKTsKLSAgIGV4cGxpY2l0IFJlZ0V4KGNvbnN0IHN0ZDo6c3RyaW5nJiBzLCBib29sIGljYXNlID0gZmFsc2UpOwotICAgUmVnRXgmIG9wZXJhdG9yPShjb25zdCBSZWdFeCYgbyk7Ci0gICBSZWdFeCYgb3BlcmF0b3I9KGNvbnN0IGNoYXIqIHApOwotICAgUmVnRXgmIG9wZXJhdG9yPShjb25zdCBzdGQ6OnN0cmluZyYgcyl7IHJldHVybiB0aGlzLT5vcGVyYXRvcj0ocy5jX3N0cigpKTsgfQotICAgdW5zaWduZWQgaW50IFNldEV4cHJlc3Npb24oY29uc3QgY2hhciogcCwgYm9vbCBpY2FzZSA9IGZhbHNlKTsKLSAgIHVuc2lnbmVkIGludCBTZXRFeHByZXNzaW9uKGNvbnN0IHN0ZDo6c3RyaW5nJiBzLCBib29sIGljYXNlID0gZmFsc2UpeyByZXR1cm4gU2V0RXhwcmVzc2lvbihzLmNfc3RyKCksIGljYXNlKTsgfQotICAgc3RkOjpzdHJpbmcgRXhwcmVzc2lvbigpY29uc3Q7Ci0gICB1bnNpZ25lZCBpbnQgZXJyb3JfY29kZSgpY29uc3Q7Ci0gICAvKgotICAgICogbm93IG1hdGNoaW5nIG9wZXJhdG9yczoKLSAgICAqLwotICAgYm9vbCBNYXRjaChjb25zdCBjaGFyKiBwLCBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KTsKLSAgIGJvb2wgTWF0Y2goY29uc3Qgc3RkOjpzdHJpbmcmIHMsIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpIHsgcmV0dXJuIE1hdGNoKHMuY19zdHIoKSwgZmxhZ3MpOyB9Ci0gICBib29sIFNlYXJjaChjb25zdCBjaGFyKiBwLCBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KTsKLSAgIGJvb2wgU2VhcmNoKGNvbnN0IHN0ZDo6c3RyaW5nJiBzLCBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KSB7IHJldHVybiBTZWFyY2gocy5jX3N0cigpLCBmbGFncyk7IH0KLSAgIHVuc2lnbmVkIGludCBHcmVwKEdyZXBDYWxsYmFjayBjYiwgY29uc3QgY2hhciogcCwgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCk7Ci0gICB1bnNpZ25lZCBpbnQgR3JlcChHcmVwQ2FsbGJhY2sgY2IsIGNvbnN0IHN0ZDo6c3RyaW5nJiBzLCBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KSB7IHJldHVybiBHcmVwKGNiLCBzLmNfc3RyKCksIGZsYWdzKTsgfQotICAgdW5zaWduZWQgaW50IEdyZXAoc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+JiB2LCBjb25zdCBjaGFyKiBwLCBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KTsKLSAgIHVuc2lnbmVkIGludCBHcmVwKHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgdiwgY29uc3Qgc3RkOjpzdHJpbmcmIHMsIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpIHsgcmV0dXJuIEdyZXAodiwgcy5jX3N0cigpLCBmbGFncyk7IH0KLSAgIHVuc2lnbmVkIGludCBHcmVwKHN0ZDo6dmVjdG9yPHN0ZDo6c2l6ZV90PiYgdiwgY29uc3QgY2hhciogcCwgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCk7Ci0gICB1bnNpZ25lZCBpbnQgR3JlcChzdGQ6OnZlY3RvcjxzdGQ6OnNpemVfdD4mIHYsIGNvbnN0IHN0ZDo6c3RyaW5nJiBzLCBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KSB7IHJldHVybiBHcmVwKHYsIHMuY19zdHIoKSwgZmxhZ3MpOyB9Ci0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX05PX0ZJTEVJVEVSCi0gICB1bnNpZ25lZCBpbnQgR3JlcEZpbGVzKEdyZXBGaWxlQ2FsbGJhY2sgY2IsIGNvbnN0IGNoYXIqIGZpbGVzLCBib29sIHJlY3Vyc2UgPSBmYWxzZSwgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCk7Ci0gICB1bnNpZ25lZCBpbnQgR3JlcEZpbGVzKEdyZXBGaWxlQ2FsbGJhY2sgY2IsIGNvbnN0IHN0ZDo6c3RyaW5nJiBmaWxlcywgYm9vbCByZWN1cnNlID0gZmFsc2UsIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpIHsgcmV0dXJuIEdyZXBGaWxlcyhjYiwgZmlsZXMuY19zdHIoKSwgcmVjdXJzZSwgZmxhZ3MpOyB9Ci0gICB1bnNpZ25lZCBpbnQgRmluZEZpbGVzKEZpbmRGaWxlc0NhbGxiYWNrIGNiLCBjb25zdCBjaGFyKiBmaWxlcywgYm9vbCByZWN1cnNlID0gZmFsc2UsIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpOwotICAgdW5zaWduZWQgaW50IEZpbmRGaWxlcyhGaW5kRmlsZXNDYWxsYmFjayBjYiwgY29uc3Qgc3RkOjpzdHJpbmcmIGZpbGVzLCBib29sIHJlY3Vyc2UgPSBmYWxzZSwgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkgeyByZXR1cm4gRmluZEZpbGVzKGNiLCBmaWxlcy5jX3N0cigpLCByZWN1cnNlLCBmbGFncyk7IH0KLSNlbmRpZgotCi0gICBzdGQ6OnN0cmluZyBNZXJnZShjb25zdCBzdGQ6OnN0cmluZyYgaW4sIGNvbnN0IHN0ZDo6c3RyaW5nJiBmbXQsCi0gICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY29weSA9IHRydWUsIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpOwotICAgc3RkOjpzdHJpbmcgTWVyZ2UoY29uc3QgY2hhciogaW4sIGNvbnN0IGNoYXIqIGZtdCwKLSAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjb3B5ID0gdHJ1ZSwgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCk7Ci0KLSAgIHN0ZDo6c2l6ZV90IFNwbGl0KHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiYgdiwgc3RkOjpzdHJpbmcmIHMsIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQsIHVuc2lnbmVkIG1heF9jb3VudCA9IH4wKTsKLSAgIC8qCi0gICAgKiBub3cgb3BlcmF0b3JzIGZvciByZXR1cm5pbmcgd2hhdCBtYXRjaGVkIGluIG1vcmUgZGV0YWlsOgotICAgICovCi0gICBzdGQ6OnNpemVfdCBQb3NpdGlvbihpbnQgaSA9IDApY29uc3Q7Ci0gICBzdGQ6OnNpemVfdCBMZW5ndGgoaW50IGkgPSAwKWNvbnN0OwotICAgYm9vbCBNYXRjaGVkKGludCBpID0gMCljb25zdDsKLSAgIHN0ZDo6c2l6ZV90IE1hcmtzKCljb25zdDsKLSAgIHN0ZDo6c3RyaW5nIFdoYXQoaW50IGkgPSAwKWNvbnN0OwotICAgc3RkOjpzdHJpbmcgb3BlcmF0b3JbXShpbnQgaSljb25zdCB7IHJldHVybiBXaGF0KGkpOyB9Ci0KLSAgIHN0YXRpYyBjb25zdCBzdGQ6OnNpemVfdCBucG9zOwotCi0gICBmcmllbmQgc3RydWN0IHJlX2RldGFpbDo6cHJlZDE7Ci0gICBmcmllbmQgc3RydWN0IHJlX2RldGFpbDo6cHJlZDI7Ci0gICBmcmllbmQgc3RydWN0IHJlX2RldGFpbDo6cHJlZDM7Ci0gICBmcmllbmQgc3RydWN0IHJlX2RldGFpbDo6cHJlZDQ7Ci19OwotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfU1VGRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLX0gLyogbmFtZXNwYWNlIG5kbmJvb3N0ICovCi0KLSNlbmRpZiAvKiBfX2NwbHVzcGx1cyAqLwotCi0jZW5kaWYgLyogaW5jbHVkZSBndWFyZCAqLwotCi0KLQotCi0KLQotCi0KLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L2Vycm9yX3R5cGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9lcnJvcl90eXBlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTU0ZTljMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L2Vycm9yX3R5cGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDMtMjAwNQotICogSm9obiBNYWRkb2NrCi0gKgotICogVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUKLSAqIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlCi0gKiBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICovCi0gCi0gLyoKLSAgKiAgIExPQ0FUSU9OOiAgICBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0gICogICBGSUxFICAgICAgICAgZXJyb3JfdHlwZS5ocHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IERlY2xhcmVzIHJlZ3VsYXIgZXhwcmVzc2lvbiBlcnJvciB0eXBlIGVudW1lcmF0b3IuCi0gICovCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfRVJST1JfVFlQRV9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfRVJST1JfVFlQRV9IUFAKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci0jZW5kaWYKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1uYW1lc3BhY2UgcmVnZXhfY29uc3RhbnRzewotCi1lbnVtIGVycm9yX3R5cGV7Ci0KLSAgIGVycm9yX29rID0gMCwgICAgICAgICAvKiBub3QgdXNlZCAqLwotICAgZXJyb3Jfbm9fbWF0Y2ggPSAxLCAgIC8qIG5vdCB1c2VkICovCi0gICBlcnJvcl9iYWRfcGF0dGVybiA9IDIsCi0gICBlcnJvcl9jb2xsYXRlID0gMywKLSAgIGVycm9yX2N0eXBlID0gNCwKLSAgIGVycm9yX2VzY2FwZSA9IDUsCi0gICBlcnJvcl9iYWNrcmVmID0gNiwKLSAgIGVycm9yX2JyYWNrID0gNywKLSAgIGVycm9yX3BhcmVuID0gOCwKLSAgIGVycm9yX2JyYWNlID0gOSwKLSAgIGVycm9yX2JhZGJyYWNlID0gMTAsCi0gICBlcnJvcl9yYW5nZSA9IDExLAotICAgZXJyb3Jfc3BhY2UgPSAxMiwKLSAgIGVycm9yX2JhZHJlcGVhdCA9IDEzLAotICAgZXJyb3JfZW5kID0gMTQsICAgIC8qIG5vdCB1c2VkICovCi0gICBlcnJvcl9zaXplID0gMTUsCi0gICBlcnJvcl9yaWdodF9wYXJlbiA9IDE2LCAgLyogbm90IHVzZWQgKi8KLSAgIGVycm9yX2VtcHR5ID0gMTcsCi0gICBlcnJvcl9jb21wbGV4aXR5ID0gMTgsCi0gICBlcnJvcl9zdGFjayA9IDE5LAotICAgZXJyb3JfcGVybF9leHRlbnNpb24gPSAyMCwKLSAgIGVycm9yX3Vua25vd24gPSAyMQotfTsKLQotfQotfQotI2VuZGlmIC8qIF9fY3BsdXNwbHVzICovCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9maWxlaXRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L2ZpbGVpdGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzViOTlmOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L2ZpbGVpdGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ1NSArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAyCi0gKiBKb2huIE1hZGRvY2sKLSAqCi0gKiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLSAqIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotICogTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqLwotIAotIC8qCi0gICogICBMT0NBVElPTjogICAgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotICAqICAgRklMRSAgICAgICAgIGZpbGVpdGVyLmhwcAotICAqICAgVkVSU0lPTiAgICAgIHNlZSA8bmRuYm9vc3QvdmVyc2lvbi5ocHA+Ci0gICogICBERVNDUklQVElPTjogRGVjbGFyZXMgdmFyaW91cyBwbGF0Zm9ybSBpbmRlcGVuZGVudCBmaWxlIGFuZAotICAqICAgICAgICAgICAgICAgIGRpcmVjdG9yeSBpdGVyYXRvcnMsIHBsdXMgYmluYXJ5IGZpbGUgaW5wdXQgaW4KLSAgKiAgICAgICAgICAgICAgICB0aGUgZm9ybSBvZiBjbGFzcyBtYXBfZmlsZS4KLSAgKi8KLQotI2lmbmRlZiBORE5CT09TVF9SRV9GSUxFSVRFUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfUkVfRklMRUlURVJfSFBQX0lOQ0xVREVECi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfQ09ORklHX0hQUAotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L2NvbmZpZy5ocHA+Ci0jZW5kaWYKLSNpbmNsdWRlIDxuZG5ib29zdC9hc3NlcnQuaHBwPgotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX05PX0ZJTEVJVEVSCi0KLSNpZiAoZGVmaW5lZChfX0NZR1dJTl9fKSB8fCBkZWZpbmVkKF9fQ1lHV0lOMzJfXykpICYmICFkZWZpbmVkKE5ETkJPT1NUX1JFR0VYX05PX1czMikKLSNlcnJvciAiU29ycnksIGNhbid0IG1peCA8d2luZG93cy5oPiB3aXRoIFNUTCBjb2RlIGFuZCBnY2MgY29tcGlsZXI6IGlmIHlvdSByYW4gY29uZmlndXJlLCB0cnkgYWdhaW4gd2l0aCBjb25maWd1cmUgLS1kaXNhYmxlLW1zLXdpbmRvd3MiCi0jZGVmaW5lIE5ETkJPT1NUX1JFR0VYX0ZJX1dJTjMyX01BUAotI2RlZmluZSBORE5CT09TVF9SRUdFWF9GSV9QT1NJWF9ESVIKLSNlbGlmIChkZWZpbmVkKF9fV0lOMzJfXykgfHwgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoV0lOMzIpKSAmJiAhZGVmaW5lZChORE5CT09TVF9SRUdFWF9OT19XMzIpCi0jZGVmaW5lIE5ETkJPT1NUX1JFR0VYX0ZJX1dJTjMyX01BUAotI2RlZmluZSBORE5CT09TVF9SRUdFWF9GSV9XSU4zMl9ESVIKLSNlbHNlCi0jZGVmaW5lIE5ETkJPT1NUX1JFR0VYX0ZJX1BPU0lYX01BUAotI2RlZmluZSBORE5CT09TVF9SRUdFWF9GSV9QT1NJWF9ESVIKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9SRUdFWF9GSV9XSU4zMl9NQVApfHxkZWZpbmVkKE5ETkJPT1NUX1JFR0VYX0ZJX1dJTjMyX0RJUikKLSNpbmNsdWRlIDx3aW5kb3dzLmg+Ci0jZW5kaWYKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfUkVHRVhfRklfV0lOMzJfRElSKQotCi0jaW5jbHVkZSA8Y3N0ZGRlZj4KLQotbmFtZXNwYWNlIG5kbmJvb3N0ewotICAgbmFtZXNwYWNlIHJlX2RldGFpbHsKLQotI2lmbmRlZiBORE5CT09TVF9OT19BTlNJX0FQSVMKLXR5cGVkZWYgV0lOMzJfRklORF9EQVRBQSBfZmlfZmluZF9kYXRhOwotI2Vsc2UKLXR5cGVkZWYgV0lOMzJfRklORF9EQVRBVyBfZmlfZmluZF9kYXRhOwotI2VuZGlmCi10eXBlZGVmIEhBTkRMRSBfZmlfZmluZF9oYW5kbGU7Ci0KLSAgIH0gLy8gbmFtZXNwYWNlIHJlX2RldGFpbAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZGVmaW5lIF9maV9pbnZhbGlkX2hhbmRsZSBJTlZBTElEX0hBTkRMRV9WQUxVRQotI2RlZmluZSBfZmlfZGlyIEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWQotCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX1JFR0VYX0ZJX1BPU0lYX0RJUikKLQotI2luY2x1ZGUgPGNzdGRkZWY+Ci0jaW5jbHVkZSA8Y3N0ZGlvPgotI2luY2x1ZGUgPGNjdHlwZT4KLSNpbmNsdWRlIDxpdGVyYXRvcj4KLSNpbmNsdWRlIDxsaXN0PgotI2luY2x1ZGUgPGNhc3NlcnQ+Ci0jaW5jbHVkZSA8ZGlyZW50Lmg+Ci0KLSNpZiBkZWZpbmVkKF9fU1VOUFJPX0NDKQotdXNpbmcgc3RkOjpsaXN0OwotI2VuZGlmCi0KLSNpZm5kZWYgTUFYX1BBVEgKLSNkZWZpbmUgTUFYX1BBVEggMjU2Ci0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0ewotICAgbmFtZXNwYWNlIHJlX2RldGFpbHsKLQotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfUFJFRklYCi0jZW5kaWYKLQotc3RydWN0IF9maV9maW5kX2RhdGEKLXsKLSAgIHVuc2lnbmVkIGR3RmlsZUF0dHJpYnV0ZXM7Ci0gICBjaGFyIGNGaWxlTmFtZVtNQVhfUEFUSF07Ci19OwotCi1zdHJ1Y3QgX2ZpX3ByaXZfZGF0YTsKLQotdHlwZWRlZiBfZmlfcHJpdl9kYXRhKiBfZmlfZmluZF9oYW5kbGU7Ci0jZGVmaW5lIF9maV9pbnZhbGlkX2hhbmRsZSAwCi0jZGVmaW5lIF9maV9kaXIgMQotCi1fZmlfZmluZF9oYW5kbGUgX2ZpX0ZpbmRGaXJzdEZpbGUoY29uc3QgY2hhciogbHBGaWxlTmFtZSwgX2ZpX2ZpbmRfZGF0YSogbHBGaW5kRmlsZURhdGEpOwotYm9vbCBfZmlfRmluZE5leHRGaWxlKF9maV9maW5kX2hhbmRsZSBoRmluZEZpbGUsICAgX2ZpX2ZpbmRfZGF0YSogbHBGaW5kRmlsZURhdGEpOwotYm9vbCBfZmlfRmluZENsb3NlKF9maV9maW5kX2hhbmRsZSBoRmluZEZpbGUpOwotCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9TVUZGSVgKLSNlbmRpZgotCi0gICB9IC8vIG5hbWVzcGFjZSByZV9kZXRhaWwKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpZmRlZiBGaW5kRmlyc3RGaWxlCi0gI3VuZGVmIEZpbmRGaXJzdEZpbGUKLSNlbmRpZgotI2lmZGVmIEZpbmROZXh0RmlsZQotICN1bmRlZiBGaW5kTmV4dEZpbGUKLSNlbmRpZgotI2lmZGVmIEZpbmRDbG9zZQotICN1bmRlZiBGaW5kQ2xvc2UKLSNlbmRpZgotCi0jZGVmaW5lIEZpbmRGaXJzdEZpbGVBIF9maV9GaW5kRmlyc3RGaWxlCi0jZGVmaW5lIEZpbmROZXh0RmlsZUEgX2ZpX0ZpbmROZXh0RmlsZQotI2RlZmluZSBGaW5kQ2xvc2UgX2ZpX0ZpbmRDbG9zZQotCi0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0ewotICAgbmFtZXNwYWNlIHJlX2RldGFpbHsKLQotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfUFJFRklYCi0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX1JFR0VYX0ZJX1dJTjMyX01BUCAvLyB3aW4zMiBtYXBmaWxlCi0KLWNsYXNzIE5ETkJPT1NUX1JFR0VYX0RFQ0wgbWFwZmlsZQotewotICAgSEFORExFIGhmaWxlOwotICAgSEFORExFIGhtYXA7Ci0gICBjb25zdCBjaGFyKiBfZmlyc3Q7Ci0gICBjb25zdCBjaGFyKiBfbGFzdDsKLXB1YmxpYzoKLQotICAgdHlwZWRlZiBjb25zdCBjaGFyKiBpdGVyYXRvcjsKLQotICAgbWFwZmlsZSgpeyBoZmlsZSA9IGhtYXAgPSAwOyBfZmlyc3QgPSBfbGFzdCA9IDA7IH0KLSAgIG1hcGZpbGUoY29uc3QgY2hhciogZmlsZSl7IGhmaWxlID0gaG1hcCA9IDA7IF9maXJzdCA9IF9sYXN0ID0gMDsgb3BlbihmaWxlKTsgfQotICAgfm1hcGZpbGUoKXsgY2xvc2UoKTsgfQotICAgdm9pZCBvcGVuKGNvbnN0IGNoYXIqIGZpbGUpOwotICAgdm9pZCBjbG9zZSgpOwotICAgY29uc3QgY2hhciogYmVnaW4oKXsgcmV0dXJuIF9maXJzdDsgfQotICAgY29uc3QgY2hhciogZW5kKCl7IHJldHVybiBfbGFzdDsgfQotICAgc2l6ZV90IHNpemUoKXsgcmV0dXJuIF9sYXN0IC0gX2ZpcnN0OyB9Ci0gICBib29sIHZhbGlkKCl7IHJldHVybiAoaGZpbGUgIT0gMCkgJiYgKGhmaWxlICE9IElOVkFMSURfSEFORExFX1ZBTFVFKTsgfQotfTsKLQotCi0jZWxzZQotCi1jbGFzcyBORE5CT09TVF9SRUdFWF9ERUNMIG1hcGZpbGVfaXRlcmF0b3I7Ci0KLWNsYXNzIE5ETkJPT1NUX1JFR0VYX0RFQ0wgbWFwZmlsZQotewotICAgdHlwZWRlZiBjaGFyKiBwb2ludGVyOwotICAgc3RkOjpGSUxFKiBoZmlsZTsKLSAgIGxvbmcgaW50IF9zaXplOwotICAgcG9pbnRlciogX2ZpcnN0OwotICAgcG9pbnRlciogX2xhc3Q7Ci0gICBtdXRhYmxlIHN0ZDo6bGlzdDxwb2ludGVyKj4gY29uZGVtZWQ7Ci0gICBlbnVtIHNpemVzCi0gICB7Ci0gICAgICBidWZfc2l6ZSA9IDQwOTYKLSAgIH07Ci0gICB2b2lkIGxvY2socG9pbnRlciogbm9kZSljb25zdDsKLSAgIHZvaWQgdW5sb2NrKHBvaW50ZXIqIG5vZGUpY29uc3Q7Ci1wdWJsaWM6Ci0KLSAgIHR5cGVkZWYgbWFwZmlsZV9pdGVyYXRvciBpdGVyYXRvcjsKLQotICAgbWFwZmlsZSgpeyBoZmlsZSA9IDA7IF9zaXplID0gMDsgX2ZpcnN0ID0gX2xhc3QgPSAwOyB9Ci0gICBtYXBmaWxlKGNvbnN0IGNoYXIqIGZpbGUpeyBoZmlsZSA9IDA7IF9zaXplID0gMDsgX2ZpcnN0ID0gX2xhc3QgPSAwOyBvcGVuKGZpbGUpOyB9Ci0gICB+bWFwZmlsZSgpeyBjbG9zZSgpOyB9Ci0gICB2b2lkIG9wZW4oY29uc3QgY2hhciogZmlsZSk7Ci0gICB2b2lkIGNsb3NlKCk7Ci0gICBpdGVyYXRvciBiZWdpbigpY29uc3Q7Ci0gICBpdGVyYXRvciBlbmQoKWNvbnN0OwotICAgdW5zaWduZWQgbG9uZyBzaXplKCljb25zdHsgcmV0dXJuIF9zaXplOyB9Ci0gICBib29sIHZhbGlkKCljb25zdHsgcmV0dXJuIGhmaWxlICE9IDA7IH0KLSAgIGZyaWVuZCBjbGFzcyBtYXBmaWxlX2l0ZXJhdG9yOwotfTsKLQotY2xhc3MgTkROQk9PU1RfUkVHRVhfREVDTCBtYXBmaWxlX2l0ZXJhdG9yCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fU1REX0lURVJBVE9SKSB8fCBkZWZpbmVkKE5ETkJPT1NUX01TVkNfU1REX0lURVJBVE9SKQotOiBwdWJsaWMgc3RkOjppdGVyYXRvcjxzdGQ6OnJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnLCBjaGFyPgotI2VuZGlmCi17Ci0gICB0eXBlZGVmIG1hcGZpbGU6OnBvaW50ZXIgaW50ZXJuYWxfcG9pbnRlcjsKLSAgIGludGVybmFsX3BvaW50ZXIqIG5vZGU7Ci0gICBjb25zdCBtYXBmaWxlKiBmaWxlOwotICAgdW5zaWduZWQgbG9uZyBvZmZzZXQ7Ci0gICBsb25nIHBvc2l0aW9uKCljb25zdAotICAgewotICAgICAgcmV0dXJuIGZpbGUgPyAoKG5vZGUgLSBmaWxlLT5fZmlyc3QpICogbWFwZmlsZTo6YnVmX3NpemUgKyBvZmZzZXQpIDogMDsKLSAgIH0KLSAgIHZvaWQgcG9zaXRpb24obG9uZyBwb3MpCi0gICB7Ci0gICAgICBpZihmaWxlKQotICAgICAgewotICAgICAgICAgbm9kZSA9IGZpbGUtPl9maXJzdCArIChwb3MgLyBtYXBmaWxlOjpidWZfc2l6ZSk7Ci0gICAgICAgICBvZmZzZXQgPSBwb3MgJSBtYXBmaWxlOjpidWZfc2l6ZTsKLSAgICAgIH0KLSAgIH0KLXB1YmxpYzoKLSAgIHR5cGVkZWYgc3RkOjpwdHJkaWZmX3QgICAgICAgICAgICAgICAgICBkaWZmZXJlbmNlX3R5cGU7Ci0gICB0eXBlZGVmIGNoYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVfdHlwZTsKLSAgIHR5cGVkZWYgY29uc3QgY2hhciogICAgICAgICAgICAgICAgICAgICBwb2ludGVyOwotICAgdHlwZWRlZiBjb25zdCBjaGFyJiAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZTsKLSAgIHR5cGVkZWYgc3RkOjpyYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZyBpdGVyYXRvcl9jYXRlZ29yeTsKLQotICAgbWFwZmlsZV9pdGVyYXRvcigpIHsgbm9kZSA9IDA7IGZpbGUgPSAwOyBvZmZzZXQgPSAwOyB9Ci0gICBtYXBmaWxlX2l0ZXJhdG9yKGNvbnN0IG1hcGZpbGUqIGYsIGxvbmcgYXJnX3Bvc2l0aW9uKQotICAgewotICAgICAgZmlsZSA9IGY7Ci0gICAgICBub2RlID0gZi0+X2ZpcnN0ICsgYXJnX3Bvc2l0aW9uIC8gbWFwZmlsZTo6YnVmX3NpemU7Ci0gICAgICBvZmZzZXQgPSBhcmdfcG9zaXRpb24gJSBtYXBmaWxlOjpidWZfc2l6ZTsKLSAgICAgIGlmKGZpbGUpCi0gICAgICAgICBmaWxlLT5sb2NrKG5vZGUpOwotICAgfQotICAgbWFwZmlsZV9pdGVyYXRvcihjb25zdCBtYXBmaWxlX2l0ZXJhdG9yJiBpKQotICAgewotICAgICAgZmlsZSA9IGkuZmlsZTsKLSAgICAgIG5vZGUgPSBpLm5vZGU7Ci0gICAgICBvZmZzZXQgPSBpLm9mZnNldDsKLSAgICAgIGlmKGZpbGUpCi0gICAgICAgICBmaWxlLT5sb2NrKG5vZGUpOwotICAgfQotICAgfm1hcGZpbGVfaXRlcmF0b3IoKQotICAgewotICAgICAgaWYoZmlsZSAmJiBub2RlKQotICAgICAgICAgZmlsZS0+dW5sb2NrKG5vZGUpOwotICAgfQotICAgbWFwZmlsZV9pdGVyYXRvciYgb3BlcmF0b3IgPSAoY29uc3QgbWFwZmlsZV9pdGVyYXRvciYgaSk7Ci0gICBjaGFyIG9wZXJhdG9yKiAoKWNvbnN0Ci0gICB7Ci0gICAgICBORE5CT09TVF9BU1NFUlQobm9kZSA+PSBmaWxlLT5fZmlyc3QpOwotICAgICAgTkROQk9PU1RfQVNTRVJUKG5vZGUgPCBmaWxlLT5fbGFzdCk7Ci0gICAgICByZXR1cm4gZmlsZSA/ICooKm5vZGUgKyBzaXplb2YoaW50KSArIG9mZnNldCkgOiBjaGFyKDApOwotICAgfQotICAgY2hhciBvcGVyYXRvcltdIChsb25nIG9mZiljb25zdAotICAgewotICAgICAgbWFwZmlsZV9pdGVyYXRvciB0bXAoKnRoaXMpOwotICAgICAgdG1wICs9IG9mZjsKLSAgICAgIHJldHVybiAqdG1wOwotICAgfQotICAgbWFwZmlsZV9pdGVyYXRvciYgb3BlcmF0b3IrKyAoKTsKLSAgIG1hcGZpbGVfaXRlcmF0b3Igb3BlcmF0b3IrKyAoaW50KTsKLSAgIG1hcGZpbGVfaXRlcmF0b3ImIG9wZXJhdG9yLS0gKCk7Ci0gICBtYXBmaWxlX2l0ZXJhdG9yIG9wZXJhdG9yLS0gKGludCk7Ci0KLSAgIG1hcGZpbGVfaXRlcmF0b3ImIG9wZXJhdG9yICs9IChsb25nIG9mZikKLSAgIHsKLSAgICAgIHBvc2l0aW9uKHBvc2l0aW9uKCkgKyBvZmYpOwotICAgICAgcmV0dXJuICp0aGlzOwotICAgfQotICAgbWFwZmlsZV9pdGVyYXRvciYgb3BlcmF0b3IgLT0gKGxvbmcgb2ZmKQotICAgewotICAgICAgcG9zaXRpb24ocG9zaXRpb24oKSAtIG9mZik7Ci0gICAgICByZXR1cm4gKnRoaXM7Ci0gICB9Ci0KLSAgIGZyaWVuZCBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IG1hcGZpbGVfaXRlcmF0b3ImIGksIGNvbnN0IG1hcGZpbGVfaXRlcmF0b3ImIGopCi0gICB7Ci0gICAgICByZXR1cm4gKGkuZmlsZSA9PSBqLmZpbGUpICYmIChpLm5vZGUgPT0gai5ub2RlKSAmJiAoaS5vZmZzZXQgPT0gai5vZmZzZXQpOwotICAgfQotCi0gICBmcmllbmQgaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBtYXBmaWxlX2l0ZXJhdG9yJiBpLCBjb25zdCBtYXBmaWxlX2l0ZXJhdG9yJiBqKQotICAgewotICAgICAgcmV0dXJuICEoaSA9PSBqKTsKLSAgIH0KLQotICAgZnJpZW5kIGlubGluZSBib29sIG9wZXJhdG9yPChjb25zdCBtYXBmaWxlX2l0ZXJhdG9yJiBpLCBjb25zdCBtYXBmaWxlX2l0ZXJhdG9yJiBqKQotICAgewotICAgICAgcmV0dXJuIGkucG9zaXRpb24oKSA8IGoucG9zaXRpb24oKTsKLSAgIH0KLSAgIGZyaWVuZCBpbmxpbmUgYm9vbCBvcGVyYXRvcj4oY29uc3QgbWFwZmlsZV9pdGVyYXRvciYgaSwgY29uc3QgbWFwZmlsZV9pdGVyYXRvciYgaikKLSAgIHsKLSAgICAgIHJldHVybiBpLnBvc2l0aW9uKCkgPiBqLnBvc2l0aW9uKCk7Ci0gICB9Ci0gICBmcmllbmQgaW5saW5lIGJvb2wgb3BlcmF0b3I8PShjb25zdCBtYXBmaWxlX2l0ZXJhdG9yJiBpLCBjb25zdCBtYXBmaWxlX2l0ZXJhdG9yJiBqKQotICAgewotICAgICAgcmV0dXJuIGkucG9zaXRpb24oKSA8PSBqLnBvc2l0aW9uKCk7Ci0gICB9Ci0gICBmcmllbmQgaW5saW5lIGJvb2wgb3BlcmF0b3I+PShjb25zdCBtYXBmaWxlX2l0ZXJhdG9yJiBpLCBjb25zdCBtYXBmaWxlX2l0ZXJhdG9yJiBqKQotICAgewotICAgICAgcmV0dXJuIGkucG9zaXRpb24oKSA+PSBqLnBvc2l0aW9uKCk7Ci0gICB9Ci0KLSAgIGZyaWVuZCBtYXBmaWxlX2l0ZXJhdG9yIG9wZXJhdG9yICsgKGNvbnN0IG1hcGZpbGVfaXRlcmF0b3ImIGksIGxvbmcgb2ZmKTsKLSAgIGZyaWVuZCBtYXBmaWxlX2l0ZXJhdG9yIG9wZXJhdG9yICsgKGxvbmcgb2ZmLCBjb25zdCBtYXBmaWxlX2l0ZXJhdG9yJiBpKQotICAgewotICAgICAgbWFwZmlsZV9pdGVyYXRvciB0bXAoaSk7Ci0gICAgICByZXR1cm4gdG1wICs9IG9mZjsKLSAgIH0KLSAgIGZyaWVuZCBtYXBmaWxlX2l0ZXJhdG9yIG9wZXJhdG9yIC0gKGNvbnN0IG1hcGZpbGVfaXRlcmF0b3ImIGksIGxvbmcgb2ZmKTsKLSAgIGZyaWVuZCBpbmxpbmUgbG9uZyBvcGVyYXRvciAtIChjb25zdCBtYXBmaWxlX2l0ZXJhdG9yJiBpLCBjb25zdCBtYXBmaWxlX2l0ZXJhdG9yJiBqKQotICAgewotICAgICAgcmV0dXJuIGkucG9zaXRpb24oKSAtIGoucG9zaXRpb24oKTsKLSAgIH0KLX07Ci0KLSNlbmRpZgotCi0vLyBfZmlfc2VwIGRldGVybWluZXMgdGhlIGRpcmVjdG9yeSBzZXBhcmF0b3IsIGVpdGhlciAnXFwnIG9yICcvJwotTkROQk9PU1RfUkVHRVhfREVDTCBleHRlcm4gY29uc3QgY2hhciogX2ZpX3NlcDsKLQotc3RydWN0IGZpbGVfaXRlcmF0b3JfcmVmCi17Ci0gICBfZmlfZmluZF9oYW5kbGUgaGY7Ci0gICBfZmlfZmluZF9kYXRhIF9kYXRhOwotICAgbG9uZyBjb3VudDsKLX07Ci0KLQotY2xhc3MgTkROQk9PU1RfUkVHRVhfREVDTCBmaWxlX2l0ZXJhdG9yIAotewotICAgY2hhciogX3Jvb3Q7Ci0gICBjaGFyKiBfcGF0aDsKLSAgIGNoYXIqIHB0cjsKLSAgIGZpbGVfaXRlcmF0b3JfcmVmKiByZWY7Ci0KLXB1YmxpYzoKLSAgIHR5cGVkZWYgc3RkOjpwdHJkaWZmX3QgICAgICAgICAgICBkaWZmZXJlbmNlX3R5cGU7Ci0gICB0eXBlZGVmIGNvbnN0IGNoYXIqICAgICAgICAgICAgICAgdmFsdWVfdHlwZTsKLSAgIHR5cGVkZWYgY29uc3QgY2hhcioqICAgICAgICAgICAgICBwb2ludGVyOwotICAgdHlwZWRlZiBjb25zdCBjaGFyKiYgICAgICAgICAgICAgIHJlZmVyZW5jZTsKLSAgIHR5cGVkZWYgc3RkOjppbnB1dF9pdGVyYXRvcl90YWcgICBpdGVyYXRvcl9jYXRlZ29yeTsKLQotICAgZmlsZV9pdGVyYXRvcigpOwotICAgZmlsZV9pdGVyYXRvcihjb25zdCBjaGFyKiB3aWxkKTsKLSAgIH5maWxlX2l0ZXJhdG9yKCk7Ci0gICBmaWxlX2l0ZXJhdG9yKGNvbnN0IGZpbGVfaXRlcmF0b3ImKTsKLSAgIGZpbGVfaXRlcmF0b3ImIG9wZXJhdG9yPShjb25zdCBmaWxlX2l0ZXJhdG9yJik7Ci0gICBjb25zdCBjaGFyKiByb290KCljb25zdCB7IHJldHVybiBfcm9vdDsgfQotICAgY29uc3QgY2hhciogcGF0aCgpY29uc3QgeyByZXR1cm4gX3BhdGg7IH0KLSAgIGNvbnN0IGNoYXIqIG5hbWUoKWNvbnN0IHsgcmV0dXJuIHB0cjsgfQotICAgX2ZpX2ZpbmRfZGF0YSogZGF0YSgpIHsgcmV0dXJuICYocmVmLT5fZGF0YSk7IH0KLSAgIHZvaWQgbmV4dCgpOwotICAgZmlsZV9pdGVyYXRvciYgb3BlcmF0b3IrKygpIHsgbmV4dCgpOyByZXR1cm4gKnRoaXM7IH0KLSAgIGZpbGVfaXRlcmF0b3Igb3BlcmF0b3IrKyhpbnQpOwotICAgY29uc3QgY2hhciogb3BlcmF0b3IqKCkgeyByZXR1cm4gcGF0aCgpOyB9Ci0KLSAgIGZyaWVuZCBpbmxpbmUgYm9vbCBvcGVyYXRvciA9PSAoY29uc3QgZmlsZV9pdGVyYXRvciYgZjEsIGNvbnN0IGZpbGVfaXRlcmF0b3ImIGYyKQotICAgewotICAgICAgcmV0dXJuICgoZjEucmVmLT5oZiA9PSBfZmlfaW52YWxpZF9oYW5kbGUpICYmIChmMi5yZWYtPmhmID09IF9maV9pbnZhbGlkX2hhbmRsZSkpOwotICAgfQotCi0gICBmcmllbmQgaW5saW5lIGJvb2wgb3BlcmF0b3IgIT0gKGNvbnN0IGZpbGVfaXRlcmF0b3ImIGYxLCBjb25zdCBmaWxlX2l0ZXJhdG9yJiBmMikKLSAgIHsKLSAgICAgIHJldHVybiAhKGYxID09IGYyKTsKLSAgIH0KLQotfTsKLQotLy8gZHdhIDkvMTMvMDAgLSBzdXBwcmVzcyB1bnVzZWQgcGFyYW1ldGVyIHdhcm5pbmcKLWlubGluZSBib29sIG9wZXJhdG9yIDwgKGNvbnN0IGZpbGVfaXRlcmF0b3ImLCBjb25zdCBmaWxlX2l0ZXJhdG9yJikKLXsKLSAgIHJldHVybiBmYWxzZTsKLX0KLQotCi1jbGFzcyBORE5CT09TVF9SRUdFWF9ERUNMIGRpcmVjdG9yeV9pdGVyYXRvcgotewotICAgY2hhciogX3Jvb3Q7Ci0gICBjaGFyKiBfcGF0aDsKLSAgIGNoYXIqIHB0cjsKLSAgIGZpbGVfaXRlcmF0b3JfcmVmKiByZWY7Ci0KLXB1YmxpYzoKLSAgIHR5cGVkZWYgc3RkOjpwdHJkaWZmX3QgICAgICAgICAgICBkaWZmZXJlbmNlX3R5cGU7Ci0gICB0eXBlZGVmIGNvbnN0IGNoYXIqICAgICAgICAgICAgICAgdmFsdWVfdHlwZTsKLSAgIHR5cGVkZWYgY29uc3QgY2hhcioqICAgICAgICAgICAgICBwb2ludGVyOwotICAgdHlwZWRlZiBjb25zdCBjaGFyKiYgICAgICAgICAgICAgIHJlZmVyZW5jZTsKLSAgIHR5cGVkZWYgc3RkOjppbnB1dF9pdGVyYXRvcl90YWcgICBpdGVyYXRvcl9jYXRlZ29yeTsKLQotICAgZGlyZWN0b3J5X2l0ZXJhdG9yKCk7Ci0gICBkaXJlY3RvcnlfaXRlcmF0b3IoY29uc3QgY2hhciogd2lsZCk7Ci0gICB+ZGlyZWN0b3J5X2l0ZXJhdG9yKCk7Ci0gICBkaXJlY3RvcnlfaXRlcmF0b3IoY29uc3QgZGlyZWN0b3J5X2l0ZXJhdG9yJiBvdGhlcik7Ci0gICBkaXJlY3RvcnlfaXRlcmF0b3ImIG9wZXJhdG9yPShjb25zdCBkaXJlY3RvcnlfaXRlcmF0b3ImIG90aGVyKTsKLQotICAgY29uc3QgY2hhciogcm9vdCgpY29uc3QgeyByZXR1cm4gX3Jvb3Q7IH0KLSAgIGNvbnN0IGNoYXIqIHBhdGgoKWNvbnN0IHsgcmV0dXJuIF9wYXRoOyB9Ci0gICBjb25zdCBjaGFyKiBuYW1lKCljb25zdCB7IHJldHVybiBwdHI7IH0KLSAgIF9maV9maW5kX2RhdGEqIGRhdGEoKSB7IHJldHVybiAmKHJlZi0+X2RhdGEpOyB9Ci0gICB2b2lkIG5leHQoKTsKLSAgIGRpcmVjdG9yeV9pdGVyYXRvciYgb3BlcmF0b3IrKygpIHsgbmV4dCgpOyByZXR1cm4gKnRoaXM7IH0KLSAgIGRpcmVjdG9yeV9pdGVyYXRvciBvcGVyYXRvcisrKGludCk7Ci0gICBjb25zdCBjaGFyKiBvcGVyYXRvciooKSB7IHJldHVybiBwYXRoKCk7IH0KLQotICAgc3RhdGljIGNvbnN0IGNoYXIqIHNlcGFyYXRvcigpIHsgcmV0dXJuIF9maV9zZXA7IH0KLQotICAgZnJpZW5kIGlubGluZSBib29sIG9wZXJhdG9yID09IChjb25zdCBkaXJlY3RvcnlfaXRlcmF0b3ImIGYxLCBjb25zdCBkaXJlY3RvcnlfaXRlcmF0b3ImIGYyKQotICAgewotICAgICAgcmV0dXJuICgoZjEucmVmLT5oZiA9PSBfZmlfaW52YWxpZF9oYW5kbGUpICYmIChmMi5yZWYtPmhmID09IF9maV9pbnZhbGlkX2hhbmRsZSkpOwotICAgfQotCi0KLSAgIGZyaWVuZCBpbmxpbmUgYm9vbCBvcGVyYXRvciAhPSAoY29uc3QgZGlyZWN0b3J5X2l0ZXJhdG9yJiBmMSwgY29uc3QgZGlyZWN0b3J5X2l0ZXJhdG9yJiBmMikKLSAgIHsKLSAgICAgIHJldHVybiAhKGYxID09IGYyKTsKLSAgIH0KLQotICAgfTsKLQotaW5saW5lIGJvb2wgb3BlcmF0b3IgPCAoY29uc3QgZGlyZWN0b3J5X2l0ZXJhdG9yJiwgY29uc3QgZGlyZWN0b3J5X2l0ZXJhdG9yJikKLXsKLSAgIHJldHVybiBmYWxzZTsKLX0KLQotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfU1VGRklYCi0jZW5kaWYKLQotCi19IC8vIG5hbWVzcGFjZSByZV9kZXRhaWwKLXVzaW5nIG5kbmJvb3N0OjpyZV9kZXRhaWw6OmRpcmVjdG9yeV9pdGVyYXRvcjsKLXVzaW5nIG5kbmJvb3N0OjpyZV9kZXRhaWw6OmZpbGVfaXRlcmF0b3I7Ci11c2luZyBuZG5ib29zdDo6cmVfZGV0YWlsOjptYXBmaWxlOwotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmICAgICAvLyBORE5CT09TVF9SRUdFWF9OT19GSUxFSVRFUgotI2VuZGlmICAgICAvLyBORE5CT09TVF9SRV9GSUxFSVRFUl9IUFAKLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvaW5zdGFuY2VzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvaW5zdGFuY2VzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjY0ZTAxZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L2luc3RhbmNlcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMjIgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMgotICogSm9obiBNYWRkb2NrCi0gKgotICogVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUKLSAqIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlCi0gKiBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICovCi0KLSAvKgotICAqICAgTE9DQVRJT046ICAgIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLSAgKiAgIEZJTEUgICAgICAgICBpbnN0YW5jZXMuY3BwCi0gICogICBWRVJTSU9OICAgICAgc2VlIDxuZG5ib29zdC92ZXJzaW9uLmhwcD4KLSAgKiAgIERFU0NSSVBUSU9OOiBEZWZpbmVzIHRob3NlIHRlbXBsYXRlIGluc3RhbmNlcyB0aGF0IGFyZSBwbGFjZWQgaW4gdGhlCi0gICogICAgICAgICAgICAgICAgbGlicmFyeSByYXRoZXIgdGhhbiBpbiB0aGUgdXNlcnMgb2JqZWN0IGZpbGVzLgotICAqLwotCi0vLwotLy8gbm90ZSBubyBpbmNsdWRlIGd1YXJkLCB3ZSBtYXkgaW5jbHVkZSB0aGlzIG11bHRpcGxlIHRpbWVzOgotLy8KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfTk9fRVhURVJOQUxfVEVNUExBVEVTCi0KLW5hbWVzcGFjZSBuZG5ib29zdHsKLQotLy8KLS8vIHRoaXMgaGVhZGVyIGNhbiBiZSBpbmNsdWRlZCBtdWx0aXBsZSB0aW1lcywgZWFjaCB0aW1lIHdpdGgKLS8vIGEgZGlmZmVyZW50IGNoYXJhY3RlciB0eXBlLCBORE5CT09TVF9SRUdFWF9DSEFSX1QgbXVzdCBiZSBkZWZpbmVkCi0vLyBmaXJzdDoKLS8vCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX0NIQVJfVAotIyAgZXJyb3IgIk5ETkJPT1NUX1JFR0VYX0NIQVJfVCBub3QgZGVmaW5lZCIKLSNlbmRpZgotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1RSQUlUU19UCi0jICBkZWZpbmUgTkROQk9PU1RfUkVHRVhfVFJBSVRTX1QgLCBuZG5ib29zdDo6cmVnZXhfdHJhaXRzPE5ETkJPT1NUX1JFR0VYX0NIQVJfVCA+Ci0jZW5kaWYKLQotLy8KLS8vIHdoYXQgZm9sbG93cyBpcyBjb21waWxlciBzcGVjaWZpYzoKLS8vCi0KLSNpZiAgZGVmaW5lZChfX0JPUkxBTkRDX18pICYmIChfX0JPUkxBTkRDX18gPCAweDYwMCkKLQotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfUFJFRklYCi0jZW5kaWYKLQotIyAgaWZuZGVmIE5ETkJPT1NUX1JFR0VYX0lOU1RBTlRJQVRFCi0jICAgICBwcmFnbWEgb3B0aW9uIHB1c2ggLUpneAotIyAgZW5kaWYKLQotdGVtcGxhdGUgY2xhc3MgTkROQk9PU1RfUkVHRVhfREVDTCBiYXNpY19yZWdleDwgTkROQk9PU1RfUkVHRVhfQ0hBUl9UIE5ETkJPT1NUX1JFR0VYX1RSQUlUU19UID47Ci10ZW1wbGF0ZSBjbGFzcyBORE5CT09TVF9SRUdFWF9ERUNMIG1hdGNoX3Jlc3VsdHM8IGNvbnN0IE5ETkJPT1NUX1JFR0VYX0NIQVJfVCogPjsKLSNpZm5kZWYgTkROQk9PU1RfTk9fU1REX0FMTE9DQVRPUgotdGVtcGxhdGUgY2xhc3MgTkROQk9PU1RfUkVHRVhfREVDTCA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OnBlcmxfbWF0Y2hlcjxORE5CT09TVF9SRUdFWF9DSEFSX1QgY29uc3QgKiwgbWF0Y2hfcmVzdWx0czwgY29uc3QgTkROQk9PU1RfUkVHRVhfQ0hBUl9UKiA+OjphbGxvY2F0b3JfdHlwZSBORE5CT09TVF9SRUdFWF9UUkFJVFNfVCA+OwotI2VuZGlmCi0KLSMgIGlmbmRlZiBORE5CT09TVF9SRUdFWF9JTlNUQU5USUFURQotIyAgICAgcHJhZ21hIG9wdGlvbiBwb3AKLSMgIGVuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1NVRkZJWAotI2VuZGlmCi0KLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfTVNWQykgfHwgZGVmaW5lZChfX0lDTCkKLQotIyAgaWZuZGVmIE5ETkJPT1NUX1JFR0VYX0lOU1RBTlRJQVRFCi0jICAgICBpZmRlZiBfX0dOVUNfXwotIyAgICAgICAgZGVmaW5lIHRlbXBsYXRlIF9fZXh0ZW5zaW9uX18gZXh0ZXJuIHRlbXBsYXRlCi0jICAgICBlbHNlCi0jICAgICAgICBpZiBORE5CT09TVF9NU1ZDID4gMTMxMAotIyAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1JFR0VYX1RFTVBMQVRFX0RFQ0wKLSMgICAgICAgIGVuZGlmCi0jICAgICAgICBkZWZpbmUgdGVtcGxhdGUgZXh0ZXJuIHRlbXBsYXRlCi0jICAgICBlbmRpZgotIyAgZW5kaWYKLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9URU1QTEFURV9ERUNMCi0jICBkZWZpbmUgTkROQk9PU1RfUkVHRVhfVEVNUExBVEVfREVDTCBORE5CT09TVF9SRUdFWF9ERUNMCi0jZW5kaWYKLQotIyAgaWZkZWYgTkROQk9PU1RfTVNWQwotIyAgICAgcHJhZ21hIHdhcm5pbmcocHVzaCkKLSMgICAgIHByYWdtYSB3YXJuaW5nKGRpc2FibGUgOiA0MjUxIDQyMzEpCi0jICAgICBpZiBORE5CT09TVF9NU1ZDIDwgMTYwMAotIyAgICAgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZSA6IDQ2NjApCi0jICAgICBlbmRpZgotIyAgZW5kaWYKLQotdGVtcGxhdGUgY2xhc3MgTkROQk9PU1RfUkVHRVhfVEVNUExBVEVfREVDTCBiYXNpY19yZWdleDwgTkROQk9PU1RfUkVHRVhfQ0hBUl9UIE5ETkJPT1NUX1JFR0VYX1RSQUlUU19UID47Ci0KLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApCi10ZW1wbGF0ZSBjbGFzcyBORE5CT09TVF9SRUdFWF9URU1QTEFURV9ERUNMIG1hdGNoX3Jlc3VsdHM8IGNvbnN0IE5ETkJPT1NUX1JFR0VYX0NIQVJfVCogPjsKLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9OT19TVERfQUxMT0NBVE9SCi10ZW1wbGF0ZSBjbGFzcyBORE5CT09TVF9SRUdFWF9URU1QTEFURV9ERUNMIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6cGVybF9tYXRjaGVyPE5ETkJPT1NUX1JFR0VYX0NIQVJfVCBjb25zdCAqLCBtYXRjaF9yZXN1bHRzPCBjb25zdCBORE5CT09TVF9SRUdFWF9DSEFSX1QqID46OmFsbG9jYXRvcl90eXBlIE5ETkJPT1NUX1JFR0VYX1RSQUlUU19UID47Ci0jZW5kaWYKLSNpZiAhKGRlZmluZWQoTkROQk9PU1RfRElOS1VNV0FSRV9TVERMSUIpICYmIChORE5CT09TVF9ESU5LVU1XQVJFX1NURExJQiA8PSAxKSlcCi0gICAmJiAhKGRlZmluZWQoTkROQk9PU1RfSU5URUxfQ1hYX1ZFUlNJT04pICYmIChORE5CT09TVF9JTlRFTF9DWFhfVkVSU0lPTiA8PSA4MDApKVwKLSAgICYmICEoZGVmaW5lZChfX1NHSV9TVExfUE9SVCkgfHwgZGVmaW5lZChfU1RMUE9SVF9WRVJTSU9OKSlcCi0gICAmJiAhZGVmaW5lZChORE5CT09TVF9SRUdFWF9JQ1VfSU5TVEFOQ0VTKQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkKLXRlbXBsYXRlIGNsYXNzIE5ETkJPT1NUX1JFR0VYX1RFTVBMQVRFX0RFQ0wgbWF0Y2hfcmVzdWx0czwgc3RkOjpiYXNpY19zdHJpbmc8TkROQk9PU1RfUkVHRVhfQ0hBUl9UPjo6Y29uc3RfaXRlcmF0b3IgPjsKLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9OT19TVERfQUxMT0NBVE9SCi10ZW1wbGF0ZSBjbGFzcyBORE5CT09TVF9SRUdFWF9URU1QTEFURV9ERUNMIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6cGVybF9tYXRjaGVyPCBzdGQ6OmJhc2ljX3N0cmluZzxORE5CT09TVF9SRUdFWF9DSEFSX1Q+Ojpjb25zdF9pdGVyYXRvciwgbWF0Y2hfcmVzdWx0czwgc3RkOjpiYXNpY19zdHJpbmc8TkROQk9PU1RfUkVHRVhfQ0hBUl9UPjo6Y29uc3RfaXRlcmF0b3IgPjo6YWxsb2NhdG9yX3R5cGUsIG5kbmJvb3N0OjpyZWdleF90cmFpdHM8TkROQk9PU1RfUkVHRVhfQ0hBUl9UID4gPjsKLSNlbmRpZgotI2VuZGlmCi0KLQotIyAgaWZkZWYgTkROQk9PU1RfTVNWQwotIyAgICAgcHJhZ21hIHdhcm5pbmcocG9wKQotIyAgZW5kaWYKLQotIyAgaWZkZWYgdGVtcGxhdGUKLSMgICAgIHVuZGVmIHRlbXBsYXRlCi0jICBlbmRpZgotCi0jdW5kZWYgTkROQk9PU1RfUkVHRVhfVEVNUExBVEVfREVDTAotCi0jZWxpZiAoZGVmaW5lZChfX0dOVUNfXykgJiYgKF9fR05VQ19fID49IDMpKSB8fCAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9FWFRFUk5fVEVNUExBVEUpCi0KLSMgIGlmbmRlZiBORE5CT09TVF9SRUdFWF9JTlNUQU5USUFURQotIyAgICAgaWZkZWYgX19HTlVDX18KLSMgICAgICAgIGRlZmluZSB0ZW1wbGF0ZSBfX2V4dGVuc2lvbl9fIGV4dGVybiB0ZW1wbGF0ZQotIyAgICAgZWxzZQotIyAgICAgICAgZGVmaW5lIHRlbXBsYXRlIGV4dGVybiB0ZW1wbGF0ZQotIyAgICAgZW5kaWYKLSMgIGVuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19TVERfTE9DQUxFKSAmJiAhZGVmaW5lZChORE5CT09TVF9SRUdFWF9JQ1VfSU5TVEFOQ0VTKQotbmFtZXNwYWNlIHJlX2RldGFpbHsKLXRlbXBsYXRlIE5ETkJPT1NUX1JFR0VYX0RFQ0wKLXN0ZDo6bG9jYWxlIGNwcF9yZWdleF90cmFpdHNfYmFzZTxORE5CT09TVF9SRUdFWF9DSEFSX1Q+OjppbWJ1ZShjb25zdCBzdGQ6OmxvY2FsZSYgbCk7Ci0KLXRlbXBsYXRlIE5ETkJPT1NUX1JFR0VYX0RFQ0wKLWNwcF9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248TkROQk9PU1RfUkVHRVhfQ0hBUl9UPjo6c3RyaW5nX3R5cGUgCi0gICBjcHBfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPE5ETkJPT1NUX1JFR0VYX0NIQVJfVD46OnRyYW5zZm9ybV9wcmltYXJ5KGNvbnN0IE5ETkJPT1NUX1JFR0VYX0NIQVJfVCogcDEsIGNvbnN0IE5ETkJPT1NUX1JFR0VYX0NIQVJfVCogcDIpIGNvbnN0OwotdGVtcGxhdGUgTkROQk9PU1RfUkVHRVhfREVDTAotY3BwX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxORE5CT09TVF9SRUdFWF9DSEFSX1Q+OjpzdHJpbmdfdHlwZSAKLSAgIGNwcF9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248TkROQk9PU1RfUkVHRVhfQ0hBUl9UPjo6dHJhbnNmb3JtKGNvbnN0IE5ETkJPT1NUX1JFR0VYX0NIQVJfVCogcDEsIGNvbnN0IE5ETkJPT1NUX1JFR0VYX0NIQVJfVCogcDIpIGNvbnN0OwotdGVtcGxhdGUgTkROQk9PU1RfUkVHRVhfREVDTAotY3BwX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxORE5CT09TVF9SRUdFWF9DSEFSX1Q+OjpzdHJpbmdfdHlwZSAKLSAgIGNwcF9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248TkROQk9PU1RfUkVHRVhfQ0hBUl9UPjo6bG9va3VwX2NvbGxhdGVuYW1lKGNvbnN0IE5ETkJPT1NUX1JFR0VYX0NIQVJfVCogcDEsIGNvbnN0IE5ETkJPT1NUX1JFR0VYX0NIQVJfVCogcDIpIGNvbnN0OwotdGVtcGxhdGUgTkROQk9PU1RfUkVHRVhfREVDTAotdm9pZCBjcHBfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPE5ETkJPT1NUX1JFR0VYX0NIQVJfVD46OmluaXQoKTsKLXRlbXBsYXRlIE5ETkJPT1NUX1JFR0VYX0RFQ0wKLWNwcF9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248TkROQk9PU1RfUkVHRVhfQ0hBUl9UPjo6Y2hhcl9jbGFzc190eXBlIAotICAgY3BwX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxORE5CT09TVF9SRUdFWF9DSEFSX1Q+Ojpsb29rdXBfY2xhc3NuYW1lX2ltcChjb25zdCBORE5CT09TVF9SRUdFWF9DSEFSX1QqIHAxLCBjb25zdCBORE5CT09TVF9SRUdFWF9DSEFSX1QqIHAyKSBjb25zdDsKLSNpZmRlZiBORE5CT09TVF9SRUdFWF9CVUdHWV9DVFlQRV9GQUNFVAotdGVtcGxhdGUgTkROQk9PU1RfUkVHRVhfREVDTAotYm9vbCBjcHBfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPE5ETkJPT1NUX1JFR0VYX0NIQVJfVD46OmlzY3R5cGUoY29uc3QgTkROQk9PU1RfUkVHRVhfQ0hBUl9UIGMsIGNoYXJfY2xhc3NfdHlwZSBtYXNrKSBjb25zdDsKLSNlbmRpZgotfSAvLyBuYW1lc3BhY2UKLXRlbXBsYXRlIE5ETkJPT1NUX1JFR0VYX0RFQ0wKLWludCBjcHBfcmVnZXhfdHJhaXRzPE5ETkJPT1NUX1JFR0VYX0NIQVJfVD46OnRvaShjb25zdCBORE5CT09TVF9SRUdFWF9DSEFSX1QqJiBmaXJzdCwgY29uc3QgTkROQk9PU1RfUkVHRVhfQ0hBUl9UKiBsYXN0LCBpbnQgcmFkaXgpY29uc3Q7Ci10ZW1wbGF0ZSBORE5CT09TVF9SRUdFWF9ERUNMCi1zdGQ6OnN0cmluZyBjcHBfcmVnZXhfdHJhaXRzPE5ETkJPT1NUX1JFR0VYX0NIQVJfVD46OmNhdGFsb2dfbmFtZShjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSk7Ci10ZW1wbGF0ZSBORE5CT09TVF9SRUdFWF9ERUNMCi1zdGQ6OnN0cmluZyYgY3BwX3JlZ2V4X3RyYWl0czxORE5CT09TVF9SRUdFWF9DSEFSX1Q+OjpnZXRfY2F0YWxvZ19uYW1lX2luc3QoKTsKLXRlbXBsYXRlIE5ETkJPT1NUX1JFR0VYX0RFQ0wKLXN0ZDo6c3RyaW5nIGNwcF9yZWdleF90cmFpdHM8TkROQk9PU1RfUkVHRVhfQ0hBUl9UPjo6Z2V0X2NhdGFsb2dfbmFtZSgpOwotI2lmZGVmIE5ETkJPT1NUX0hBU19USFJFQURTCi10ZW1wbGF0ZSBORE5CT09TVF9SRUdFWF9ERUNMCi1zdGF0aWNfbXV0ZXgmIGNwcF9yZWdleF90cmFpdHM8TkROQk9PU1RfUkVHRVhfQ0hBUl9UPjo6Z2V0X211dGV4X2luc3QoKTsKLSNlbmRpZgotI2VuZGlmCi0KLXRlbXBsYXRlIE5ETkJPT1NUX1JFR0VYX0RFQ0wgYmFzaWNfcmVnZXg8TkROQk9PU1RfUkVHRVhfQ0hBUl9UIE5ETkJPT1NUX1JFR0VYX1RSQUlUU19UID4mIAotICAgYmFzaWNfcmVnZXg8TkROQk9PU1RfUkVHRVhfQ0hBUl9UIE5ETkJPT1NUX1JFR0VYX1RSQUlUU19UID46OmRvX2Fzc2lnbigKLSAgICAgIGNvbnN0IE5ETkJPT1NUX1JFR0VYX0NIQVJfVCogcDEsIAotICAgICAgY29uc3QgTkROQk9PU1RfUkVHRVhfQ0hBUl9UKiBwMiwgCi0gICAgICBmbGFnX3R5cGUgZik7Ci10ZW1wbGF0ZSBORE5CT09TVF9SRUdFWF9ERUNMIGJhc2ljX3JlZ2V4PE5ETkJPT1NUX1JFR0VYX0NIQVJfVCBORE5CT09TVF9SRUdFWF9UUkFJVFNfVCA+Ojpsb2NhbGVfdHlwZSBORE5CT09TVF9SRUdFWF9DQUxMIAotICAgYmFzaWNfcmVnZXg8TkROQk9PU1RfUkVHRVhfQ0hBUl9UIE5ETkJPT1NUX1JFR0VYX1RSQUlUU19UID46OmltYnVlKGxvY2FsZV90eXBlIGwpOwotCi10ZW1wbGF0ZSBORE5CT09TVF9SRUdFWF9ERUNMIHZvaWQgTkROQk9PU1RfUkVHRVhfQ0FMTCAKLSAgIG1hdGNoX3Jlc3VsdHM8Y29uc3QgTkROQk9PU1RfUkVHRVhfQ0hBUl9UKj46Om1heWJlX2Fzc2lnbigKLSAgICAgIGNvbnN0IG1hdGNoX3Jlc3VsdHM8Y29uc3QgTkROQk9PU1RfUkVHRVhfQ0hBUl9UKj4mIG0pOwotCi1uYW1lc3BhY2UgcmVfZGV0YWlsewotdGVtcGxhdGUgTkROQk9PU1RfUkVHRVhfREVDTCB2b2lkIHBlcmxfbWF0Y2hlcjxORE5CT09TVF9SRUdFWF9DSEFSX1QgY29uc3QgKiwgbWF0Y2hfcmVzdWx0czwgY29uc3QgTkROQk9PU1RfUkVHRVhfQ0hBUl9UKiA+OjphbGxvY2F0b3JfdHlwZSBORE5CT09TVF9SRUdFWF9UUkFJVFNfVCA+Ojpjb25zdHJ1Y3RfaW5pdCgKLSAgICAgIGNvbnN0IGJhc2ljX3JlZ2V4PE5ETkJPT1NUX1JFR0VYX0NIQVJfVCBORE5CT09TVF9SRUdFWF9UUkFJVFNfVCA+JiBlLCBtYXRjaF9mbGFnX3R5cGUgZik7Ci10ZW1wbGF0ZSBORE5CT09TVF9SRUdFWF9ERUNMIGJvb2wgcGVybF9tYXRjaGVyPE5ETkJPT1NUX1JFR0VYX0NIQVJfVCBjb25zdCAqLCBtYXRjaF9yZXN1bHRzPCBjb25zdCBORE5CT09TVF9SRUdFWF9DSEFSX1QqID46OmFsbG9jYXRvcl90eXBlIE5ETkJPT1NUX1JFR0VYX1RSQUlUU19UID46Om1hdGNoKCk7Ci10ZW1wbGF0ZSBORE5CT09TVF9SRUdFWF9ERUNMIGJvb2wgcGVybF9tYXRjaGVyPE5ETkJPT1NUX1JFR0VYX0NIQVJfVCBjb25zdCAqLCBtYXRjaF9yZXN1bHRzPCBjb25zdCBORE5CT09TVF9SRUdFWF9DSEFSX1QqID46OmFsbG9jYXRvcl90eXBlIE5ETkJPT1NUX1JFR0VYX1RSQUlUU19UID46OmZpbmQoKTsKLX0gLy8gbmFtZXNwYWNlCi0KLSNpZiAoZGVmaW5lZChfX0dMSUJDUFBfXykgfHwgZGVmaW5lZChfX0dMSUJDWFhfXykpIFwKLSAgICYmICFkZWZpbmVkKE5ETkJPT1NUX1JFR0VYX0lDVV9JTlNUQU5DRVMpXAotICAgJiYgIWRlZmluZWQoX19TR0lfU1RMX1BPUlQpXAotICAgJiYgIWRlZmluZWQoX1NUTFBPUlRfVkVSU0lPTikKLS8vIHN0ZDpiYXNpY19zdHJpbmc8Pjo6Y29uc3RfaXRlcmF0b3IgaW5zdGFuY2VzIGFzIHdlbGw6Ci10ZW1wbGF0ZSBORE5CT09TVF9SRUdFWF9ERUNMIHZvaWQgTkROQk9PU1RfUkVHRVhfQ0FMTCAKLSAgIG1hdGNoX3Jlc3VsdHM8c3RkOjpiYXNpY19zdHJpbmc8TkROQk9PU1RfUkVHRVhfQ0hBUl9UPjo6Y29uc3RfaXRlcmF0b3I+OjptYXliZV9hc3NpZ24oCi0gICAgICBjb25zdCBtYXRjaF9yZXN1bHRzPHN0ZDo6YmFzaWNfc3RyaW5nPE5ETkJPT1NUX1JFR0VYX0NIQVJfVD46OmNvbnN0X2l0ZXJhdG9yPiYgbSk7Ci0KLW5hbWVzcGFjZSByZV9kZXRhaWx7Ci10ZW1wbGF0ZSBORE5CT09TVF9SRUdFWF9ERUNMIHZvaWQgcGVybF9tYXRjaGVyPHN0ZDo6YmFzaWNfc3RyaW5nPE5ETkJPT1NUX1JFR0VYX0NIQVJfVD46OmNvbnN0X2l0ZXJhdG9yLCBtYXRjaF9yZXN1bHRzPCBzdGQ6OmJhc2ljX3N0cmluZzxORE5CT09TVF9SRUdFWF9DSEFSX1Q+Ojpjb25zdF9pdGVyYXRvciA+OjphbGxvY2F0b3JfdHlwZSwgbmRuYm9vc3Q6OnJlZ2V4X3RyYWl0czxORE5CT09TVF9SRUdFWF9DSEFSX1QgPiA+Ojpjb25zdHJ1Y3RfaW5pdCgKLSAgICAgIGNvbnN0IGJhc2ljX3JlZ2V4PE5ETkJPT1NUX1JFR0VYX0NIQVJfVD4mIGUsIG1hdGNoX2ZsYWdfdHlwZSBmKTsKLXRlbXBsYXRlIE5ETkJPT1NUX1JFR0VYX0RFQ0wgYm9vbCBwZXJsX21hdGNoZXI8c3RkOjpiYXNpY19zdHJpbmc8TkROQk9PU1RfUkVHRVhfQ0hBUl9UPjo6Y29uc3RfaXRlcmF0b3IsIG1hdGNoX3Jlc3VsdHM8IHN0ZDo6YmFzaWNfc3RyaW5nPE5ETkJPT1NUX1JFR0VYX0NIQVJfVD46OmNvbnN0X2l0ZXJhdG9yID46OmFsbG9jYXRvcl90eXBlLCBuZG5ib29zdDo6cmVnZXhfdHJhaXRzPE5ETkJPT1NUX1JFR0VYX0NIQVJfVCA+ID46Om1hdGNoKCk7Ci10ZW1wbGF0ZSBORE5CT09TVF9SRUdFWF9ERUNMIGJvb2wgcGVybF9tYXRjaGVyPHN0ZDo6YmFzaWNfc3RyaW5nPE5ETkJPT1NUX1JFR0VYX0NIQVJfVD46OmNvbnN0X2l0ZXJhdG9yLCBtYXRjaF9yZXN1bHRzPCBzdGQ6OmJhc2ljX3N0cmluZzxORE5CT09TVF9SRUdFWF9DSEFSX1Q+Ojpjb25zdF9pdGVyYXRvciA+OjphbGxvY2F0b3JfdHlwZSwgbmRuYm9vc3Q6OnJlZ2V4X3RyYWl0czxORE5CT09TVF9SRUdFWF9DSEFSX1QgPiA+OjpmaW5kKCk7Ci19IC8vIG5hbWVzcGFjZQotI2VuZGlmCi0KLSMgIGlmZGVmIHRlbXBsYXRlCi0jICAgICB1bmRlZiB0ZW1wbGF0ZQotIyAgZW5kaWYKLQotCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1JFR0VYX05PX0VYVEVSTkFMX1RFTVBMQVRFUwotCi0KLQotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvaXRlcmF0b3JfY2F0ZWdvcnkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9pdGVyYXRvcl9jYXRlZ29yeS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc5MDQxN2IuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9pdGVyYXRvcl9jYXRlZ29yeS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5MSArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAoYykgMjAwMgotICogSm9obiBNYWRkb2NrCi0gKgotICogVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0gKiBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLSAqIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKi8KLQotIC8qCi0gICogICBMT0NBVElPTjogICAgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotICAqICAgRklMRSAgICAgICAgIHJlZ2V4X21hdGNoLmhwcAotICAqICAgVkVSU0lPTiAgICAgIHNlZSA8bmRuYm9vc3QvdmVyc2lvbi5ocHA+Ci0gICogICBERVNDUklQVElPTjogSXRlcmF0b3IgdHJhaXRzIGZvciBzZWxlY3RpbmcgYW4gaXRlcmF0b3IgdHlwZSBhcwotICAqICAgICAgICAgICAgICAgIGFuIGludGVncmFsIGNvbnN0YW50IGV4cHJlc3Npb24uCi0gICovCi0KLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9JVEVSQVRPUl9DQVRFR09SWV9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfSVRFUkFUT1JfQ0FURUdPUllfSFBQCi0KLSNpbmNsdWRlIDxpdGVyYXRvcj4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb252ZXJ0aWJsZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcG9pbnRlci5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdHsKLW5hbWVzcGFjZSBkZXRhaWx7Ci0KLXRlbXBsYXRlIDxjbGFzcyBJPgotc3RydWN0IGlzX3JhbmRvbV9pbXAKLXsKLSNpZm5kZWYgTkROQk9PU1RfTk9fU1REX0lURVJBVE9SX1RSQUlUUwotcHJpdmF0ZToKLSAgIHR5cGVkZWYgdHlwZW5hbWUgc3RkOjppdGVyYXRvcl90cmFpdHM8ST46Oml0ZXJhdG9yX2NhdGVnb3J5IGNhdDsKLXB1YmxpYzoKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9ICg6Om5kbmJvb3N0Ojppc19jb252ZXJ0aWJsZTxjYXQqLCBzdGQ6OnJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnKj46OnZhbHVlKSk7Ci0jZWxzZQotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gZmFsc2UpOwotI2VuZGlmCi19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgST4KLXN0cnVjdCBpc19yYW5kb21fcG9pbnRlcl9pbXAKLXsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOwotfTsKLQotdGVtcGxhdGUgPGJvb2wgaXNfcG9pbnRlcl90eXBlPgotc3RydWN0IGlzX3JhbmRvbV9pbXBfc2VsZWN0b3IKLXsKLSAgIHRlbXBsYXRlIDxjbGFzcyBJPgotICAgc3RydWN0IHJlYmluZAotICAgewotICAgICAgdHlwZWRlZiBpc19yYW5kb21faW1wPEk+IHR5cGU7Ci0gICB9OwotfTsKLQotdGVtcGxhdGUgPD4KLXN0cnVjdCBpc19yYW5kb21faW1wX3NlbGVjdG9yPHRydWU+Ci17Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgST4KLSAgIHN0cnVjdCByZWJpbmQKLSAgIHsKLSAgICAgIHR5cGVkZWYgaXNfcmFuZG9tX3BvaW50ZXJfaW1wPEk+IHR5cGU7Ci0gICB9OwotfTsKLQotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgST4KLXN0cnVjdCBpc19yYW5kb21fYWNjZXNzX2l0ZXJhdG9yCi17Ci1wcml2YXRlOgotICAgdHlwZWRlZiBkZXRhaWw6OmlzX3JhbmRvbV9pbXBfc2VsZWN0b3I8IDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8ST46OnZhbHVlPiBzZWxlY3RvcjsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgc2VsZWN0b3I6OnRlbXBsYXRlIHJlYmluZDxJPiBib3VuZF90eXBlOwotICAgdHlwZWRlZiB0eXBlbmFtZSBib3VuZF90eXBlOjp0eXBlIGFuc3dlcjsKLXB1YmxpYzoKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGFuc3dlcjo6dmFsdWUpOwotfTsKLQotI2lmbmRlZiBORE5CT09TVF9OT19JTkNMQVNTX01FTUJFUl9JTklUSUFMSVpBVElPTgotdGVtcGxhdGUgPGNsYXNzIEk+Ci1jb25zdCBib29sIGlzX3JhbmRvbV9hY2Nlc3NfaXRlcmF0b3I8ST46OnZhbHVlOwotI2VuZGlmCi0KLX0KLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvaXRlcmF0b3JfdHJhaXRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvaXRlcmF0b3JfdHJhaXRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjc5NWIzNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L2l0ZXJhdG9yX3RyYWl0cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzUgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMgotICogSm9obiBNYWRkb2NrCi0gKgotICogVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0gKiBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLSAqIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKi8KLQotIC8qCi0gICogICBMT0NBVElPTjogICAgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotICAqICAgRklMRSAgICAgICAgIGl0ZXJhdG9yX3RyYWl0cy5jcHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IERlY2xhcmVzIGl0ZXJhdG9yIHRyYWl0cyB3b3JrYXJvdW5kcy4KLSAgKi8KLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9WNF9JVEVSQVRPUl9UUkFJVFNfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JFR0VYX1Y0X0lURVJBVE9SX1RSQUlUU19IUFAKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1BSRUZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci1uYW1lc3BhY2UgcmVfZGV0YWlsewotCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19TVERfSVRFUkFUT1JfVFJBSVRTKSB8fCBkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi0KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IHJlZ2V4X2l0ZXJhdG9yX3RyYWl0cyAKLXsKLSAgdHlwZWRlZiB0eXBlbmFtZSBUOjppdGVyYXRvcl9jYXRlZ29yeSBpdGVyYXRvcl9jYXRlZ29yeTsKLSAgdHlwZWRlZiB0eXBlbmFtZSBUOjp2YWx1ZV90eXBlICAgICAgICB2YWx1ZV90eXBlOwotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1NURF9JVEVSQVRPUikKLSAgdHlwZWRlZiB0eXBlbmFtZSBUOjpkaWZmZXJlbmNlX3R5cGUgICBkaWZmZXJlbmNlX3R5cGU7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgVDo6cG9pbnRlciAgICAgICAgICAgcG9pbnRlcjsKLSAgdHlwZWRlZiB0eXBlbmFtZSBUOjpyZWZlcmVuY2UgICAgICAgICByZWZlcmVuY2U7Ci0jZWxzZQotICB0eXBlZGVmIHN0ZDo6cHRyZGlmZl90ICAgICAgICAgICAgICAgIGRpZmZlcmVuY2VfdHlwZTsKLSAgdHlwZWRlZiB2YWx1ZV90eXBlKiAgICAgICAgICAgICAgICAgICBwb2ludGVyOwotICB0eXBlZGVmIHZhbHVlX3R5cGUmICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZTsKLSNlbmRpZgotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgcG9pbnRlcl9pdGVyYXRvcl90cmFpdHMKLXsKLSAgIHR5cGVkZWYgc3RkOjpwdHJkaWZmX3QgZGlmZmVyZW5jZV90eXBlOwotICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci0gICB0eXBlZGVmIFQqIHBvaW50ZXI7Ci0gICB0eXBlZGVmIFQmIHJlZmVyZW5jZTsKLSAgIHR5cGVkZWYgc3RkOjpyYW5kb21fYWNjZXNzX2l0ZXJhdG9yX3RhZyBpdGVyYXRvcl9jYXRlZ29yeTsKLX07Ci10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBjb25zdF9wb2ludGVyX2l0ZXJhdG9yX3RyYWl0cwotewotICAgdHlwZWRlZiBzdGQ6OnB0cmRpZmZfdCBkaWZmZXJlbmNlX3R5cGU7Ci0gICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLSAgIHR5cGVkZWYgY29uc3QgVCogcG9pbnRlcjsKLSAgIHR5cGVkZWYgY29uc3QgVCYgcmVmZXJlbmNlOwotICAgdHlwZWRlZiBzdGQ6OnJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnIGl0ZXJhdG9yX2NhdGVnb3J5OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxjaGFyKj4gOiBwb2ludGVyX2l0ZXJhdG9yX3RyYWl0czxjaGFyPnt9OwotdGVtcGxhdGU8Pgotc3RydWN0IHJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxjb25zdCBjaGFyKj4gOiBjb25zdF9wb2ludGVyX2l0ZXJhdG9yX3RyYWl0czxjaGFyPnt9OwotdGVtcGxhdGU8Pgotc3RydWN0IHJlZ2V4X2l0ZXJhdG9yX3RyYWl0czx3Y2hhcl90Kj4gOiBwb2ludGVyX2l0ZXJhdG9yX3RyYWl0czx3Y2hhcl90Pnt9OwotdGVtcGxhdGU8Pgotc3RydWN0IHJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxjb25zdCB3Y2hhcl90Kj4gOiBjb25zdF9wb2ludGVyX2l0ZXJhdG9yX3RyYWl0czx3Y2hhcl90Pnt9OwotLy8KLS8vIHRoZSBmb2xsd29pbmcgYXJlIG5lZWRlZCBmb3IgSUNVIHN1cHBvcnQ6Ci0vLwotdGVtcGxhdGU8Pgotc3RydWN0IHJlZ2V4X2l0ZXJhdG9yX3RyYWl0czx1bnNpZ25lZCBjaGFyKj4gOiBwb2ludGVyX2l0ZXJhdG9yX3RyYWl0czxjaGFyPnt9OwotdGVtcGxhdGU8Pgotc3RydWN0IHJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxjb25zdCB1bnNpZ25lZCBjaGFyKj4gOiBjb25zdF9wb2ludGVyX2l0ZXJhdG9yX3RyYWl0czxjaGFyPnt9OwotdGVtcGxhdGU8Pgotc3RydWN0IHJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxpbnQqPiA6IHBvaW50ZXJfaXRlcmF0b3JfdHJhaXRzPGludD57fTsKLXRlbXBsYXRlPD4KLXN0cnVjdCByZWdleF9pdGVyYXRvcl90cmFpdHM8Y29uc3QgaW50Kj4gOiBjb25zdF9wb2ludGVyX2l0ZXJhdG9yX3RyYWl0czxpbnQ+e307Ci0KLSNpZmRlZiBORE5CT09TVF9SRUdFWF9IQVNfT1RIRVJfV0NIQVJfVAotdGVtcGxhdGU8Pgotc3RydWN0IHJlZ2V4X2l0ZXJhdG9yX3RyYWl0czx1bnNpZ25lZCBzaG9ydCo+IDogcG9pbnRlcl9pdGVyYXRvcl90cmFpdHM8dW5zaWduZWQgc2hvcnQ+e307Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcmVnZXhfaXRlcmF0b3JfdHJhaXRzPGNvbnN0IHVuc2lnbmVkIHNob3J0Kj4gOiBjb25zdF9wb2ludGVyX2l0ZXJhdG9yX3RyYWl0czx1bnNpZ25lZCBzaG9ydD57fTsKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChfX1NHSV9TVExfUE9SVCkgJiYgZGVmaW5lZChfX1NUTF9ERUJVRykKLXRlbXBsYXRlPD4KLXN0cnVjdCByZWdleF9pdGVyYXRvcl90cmFpdHM8c3RkOjpzdHJpbmc6Oml0ZXJhdG9yPiA6IHBvaW50ZXJfaXRlcmF0b3JfdHJhaXRzPGNoYXI+e307Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcmVnZXhfaXRlcmF0b3JfdHJhaXRzPHN0ZDo6c3RyaW5nOjpjb25zdF9pdGVyYXRvcj4gOiBjb25zdF9wb2ludGVyX2l0ZXJhdG9yX3RyYWl0czxjaGFyPnt9OwotI2lmbmRlZiBORE5CT09TVF9OT19TVERfV1NUUklORwotdGVtcGxhdGU8Pgotc3RydWN0IHJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxzdGQ6OndzdHJpbmc6Oml0ZXJhdG9yPiA6IHBvaW50ZXJfaXRlcmF0b3JfdHJhaXRzPHdjaGFyX3Q+e307Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcmVnZXhfaXRlcmF0b3JfdHJhaXRzPHN0ZDo6d3N0cmluZzo6Y29uc3RfaXRlcmF0b3I+IDogY29uc3RfcG9pbnRlcl9pdGVyYXRvcl90cmFpdHM8d2NoYXJfdD57fTsKLSNlbmRpZiAvLyBORE5CT09TVF9OT19XU1RSSU5HCi0jZW5kaWYgLy8gc3Rwb3J0Ci0KLSNlbHNlCi0KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IHJlZ2V4X2l0ZXJhdG9yX3RyYWl0cyA6IHB1YmxpYyBzdGQ6Oml0ZXJhdG9yX3RyYWl0czxUPiB7fTsKLQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIHJlX2RldGFpbAotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1NVRkZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9tYXRjaF9mbGFncy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L21hdGNoX2ZsYWdzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDM1MmQwZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L21hdGNoX2ZsYWdzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzOCArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAyCi0gKiBKb2huIE1hZGRvY2sKLSAqCi0gKiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLSAqIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotICogTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqLwotIAotIC8qCi0gICogICBMT0NBVElPTjogICAgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotICAqICAgRklMRSAgICAgICAgIG1hdGNoX2ZsYWdzLmhwcAotICAqICAgVkVSU0lPTiAgICAgIHNlZSA8bmRuYm9vc3QvdmVyc2lvbi5ocHA+Ci0gICogICBERVNDUklQVElPTjogRGVjbGFyZXMgbWF0Y2hfZmxhZ3MgdHlwZS4KLSAgKi8KLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9WNF9NQVRDSF9GTEFHUwotI2RlZmluZSBORE5CT09TVF9SRUdFWF9WNF9NQVRDSF9GTEFHUwotCi0jaWZkZWYgX19jcGx1c3BsdXMKLSMgIGluY2x1ZGUgPG5kbmJvb3N0L2NzdGRpbnQuaHBwPgotI2VuZGlmCi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotbmFtZXNwYWNlIG5kbmJvb3N0ewotICAgbmFtZXNwYWNlIHJlZ2V4X2NvbnN0YW50c3sKLSNlbmRpZgotCi10eXBlZGVmIGVudW0gX21hdGNoX2ZsYWdzCi17Ci0gICBtYXRjaF9kZWZhdWx0ID0gMCwKLSAgIG1hdGNoX25vdF9ib2wgPSAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZmlyc3QgaXMgbm90IHN0YXJ0IG9mIGxpbmUgKi8KLSAgIG1hdGNoX25vdF9lb2wgPSBtYXRjaF9ub3RfYm9sIDw8IDEsICAgICAgICAgICAgICAgLyogbGFzdCBpcyBub3QgZW5kIG9mIGxpbmUgKi8KLSAgIG1hdGNoX25vdF9ib2IgPSBtYXRjaF9ub3RfZW9sIDw8IDEsICAgICAgICAgICAgICAgLyogZmlyc3QgaXMgbm90IHN0YXJ0IG9mIGJ1ZmZlciAqLwotICAgbWF0Y2hfbm90X2VvYiA9IG1hdGNoX25vdF9ib2IgPDwgMSwgICAgICAgICAgICAgICAvKiBsYXN0IGlzIG5vdCBlbmQgb2YgYnVmZmVyICovCi0gICBtYXRjaF9ub3RfYm93ID0gbWF0Y2hfbm90X2VvYiA8PCAxLCAgICAgICAgICAgICAgIC8qIGZpcnN0IGlzIG5vdCBzdGFydCBvZiB3b3JkICovCi0gICBtYXRjaF9ub3RfZW93ID0gbWF0Y2hfbm90X2JvdyA8PCAxLCAgICAgICAgICAgICAgIC8qIGxhc3QgaXMgbm90IGVuZCBvZiB3b3JkICovCi0gICBtYXRjaF9ub3RfZG90X25ld2xpbmUgPSBtYXRjaF9ub3RfZW93IDw8IDEsICAgICAgIC8qIFxuIGlzIG5vdCBtYXRjaGVkIGJ5ICcuJyAqLwotICAgbWF0Y2hfbm90X2RvdF9udWxsID0gbWF0Y2hfbm90X2RvdF9uZXdsaW5lIDw8IDEsICAvKiAnXDAnIGlzIG5vdCBtYXRjaGVkIGJ5ICcuJyAqLwotICAgbWF0Y2hfcHJldl9hdmFpbCA9IG1hdGNoX25vdF9kb3RfbnVsbCA8PCAxLCAgICAgICAvKiAqLS1maXJzdCBpcyBhIHZhbGlkIGV4cHJlc3Npb24gKi8KLSAgIG1hdGNoX2luaXQgPSBtYXRjaF9wcmV2X2F2YWlsIDw8IDEsICAgICAgICAgICAgICAgLyogaW50ZXJuYWwgdXNlICovCi0gICBtYXRjaF9hbnkgPSBtYXRjaF9pbml0IDw8IDEsICAgICAgICAgICAgICAgICAgICAgIC8qIGRvbid0IGNhcmUgd2hhdCB3ZSBtYXRjaCAqLwotICAgbWF0Y2hfbm90X251bGwgPSBtYXRjaF9hbnkgPDwgMSwgICAgICAgICAgICAgICAgICAvKiBzdHJpbmcgY2FuJ3QgYmUgbnVsbCAqLwotICAgbWF0Y2hfY29udGludW91cyA9IG1hdGNoX25vdF9udWxsIDw8IDEsICAgICAgICAgICAvKiBlYWNoIGdyZXAgbWF0Y2ggbXVzdCBjb250aW51ZSBmcm9tICovCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHVuaW50ZXJ1cHRlZCBmcm9tIHRoZSBwcmV2aW91cyBvbmUgKi8KLSAgIG1hdGNoX3BhcnRpYWwgPSBtYXRjaF9jb250aW51b3VzIDw8IDEsICAgICAgICAgICAgLyogZmluZCBwYXJ0aWFsIG1hdGNoZXMgKi8KLSAgIAotICAgbWF0Y2hfc3RvcCA9IG1hdGNoX3BhcnRpYWwgPDwgMSwgICAgICAgICAgICAgICAgICAvKiBzdG9wIGFmdGVyIGZpcnN0IG1hdGNoIChncmVwKSBWMyBvbmx5ICovCi0gICBtYXRjaF9ub3RfaW5pdGlhbF9udWxsID0gbWF0Y2hfc3RvcCwgICAgICAgICAgICAgIC8qIGRvbid0IG1hdGNoIGluaXRpYWwgbnVsbCwgVjQgb25seSAqLwotICAgbWF0Y2hfYWxsID0gbWF0Y2hfc3RvcCA8PCAxLCAgICAgICAgICAgICAgICAgICAgICAvKiBtdXN0IGZpbmQgdGhlIHdob2xlIG9mIGlucHV0IGV2ZW4gaWYgbWF0Y2hfYW55IGlzIHNldCAqLwotICAgbWF0Y2hfcGVybCA9IG1hdGNoX2FsbCA8PCAxLCAgICAgICAgICAgICAgICAgICAgICAvKiBVc2UgcGVybCBtYXRjaGluZyBydWxlcyAqLwotICAgbWF0Y2hfcG9zaXggPSBtYXRjaF9wZXJsIDw8IDEsICAgICAgICAgICAgICAgICAgICAvKiBVc2UgUE9TSVggbWF0Y2hpbmcgcnVsZXMgKi8KLSAgIG1hdGNoX25vc3VicyA9IG1hdGNoX3Bvc2l4IDw8IDEsICAgICAgICAgICAgICAgICAgLyogZG9uJ3QgdHJhcCBtYXJrZWQgc3VicyAqLwotICAgbWF0Y2hfZXh0cmEgPSBtYXRjaF9ub3N1YnMgPDwgMSwgICAgICAgICAgICAgICAgICAvKiBpbmNsdWRlIGZ1bGwgY2FwdHVyZSBpbmZvcm1hdGlvbiBmb3IgcmVwZWF0ZWQgY2FwdHVyZXMgKi8KLSAgIG1hdGNoX3NpbmdsZV9saW5lID0gbWF0Y2hfZXh0cmEgPDwgMSwgICAgICAgICAgICAgLyogdHJlYXQgdGV4dCBhcyBzaW5nbGUgbGluZSBhbmQgaWdub3IgYW55IFxuJ3Mgd2hlbiBtYXRjaGluZyBeIGFuZCAkLiAqLwotICAgbWF0Y2hfdW51c2VkMSA9IG1hdGNoX3NpbmdsZV9saW5lIDw8IDEsICAgICAgICAgICAvKiB1bnVzZWQgKi8KLSAgIG1hdGNoX3VudXNlZDIgPSBtYXRjaF91bnVzZWQxIDw8IDEsICAgICAgICAgICAgICAgLyogdW51c2VkICovCi0gICBtYXRjaF91bnVzZWQzID0gbWF0Y2hfdW51c2VkMiA8PCAxLCAgICAgICAgICAgICAgIC8qIHVudXNlZCAqLwotICAgbWF0Y2hfbWF4ID0gbWF0Y2hfdW51c2VkMywKLQotICAgZm9ybWF0X3BlcmwgPSAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBwZXJsIHN0eWxlIHJlcGxhY2VtZW50ICovCi0gICBmb3JtYXRfZGVmYXVsdCA9IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGRpdHRvLiAqLwotICAgZm9ybWF0X3NlZCA9IG1hdGNoX21heCA8PCAxLCAgICAgICAgICAgICAgICAgICAgICAvKiBzZWQgc3R5bGUgcmVwbGFjZW1lbnQuICovCi0gICBmb3JtYXRfYWxsID0gZm9ybWF0X3NlZCA8PCAxLCAgICAgICAgICAgICAgICAgICAgIC8qIGVuYWJsZSBhbGwgZXh0ZW50aW9ucyB0byBzeXRheC4gKi8KLSAgIGZvcm1hdF9ub19jb3B5ID0gZm9ybWF0X2FsbCA8PCAxLCAgICAgICAgICAgICAgICAgLyogZG9uJ3QgY29weSBub24tbWF0Y2hpbmcgc2VnbWVudHMuICovCi0gICBmb3JtYXRfZmlyc3Rfb25seSA9IGZvcm1hdF9ub19jb3B5IDw8IDEsICAgICAgICAgIC8qIE9ubHkgcmVwbGFjZSBmaXJzdCBvY2N1cmFuY2UuICovCi0gICBmb3JtYXRfaXNfaWYgPSBmb3JtYXRfZmlyc3Rfb25seSA8PCAxLCAgICAgICAgICAgIC8qIGludGVybmFsIHVzZSBvbmx5LiAqLwotICAgZm9ybWF0X2xpdGVyYWwgPSBmb3JtYXRfaXNfaWYgPDwgMSAgICAgICAgICAgICAgICAvKiB0cmVhdCBzdHJpbmcgYXMgYSBsaXRlcmFsICovCi0KLX0gbWF0Y2hfZmxhZ3M7Ci0KLSNpZiAoZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSIDwgMTMwMCkpIHx8IGRlZmluZWQoX19CT1JMQU5EQ19fKQotdHlwZWRlZiB1bnNpZ25lZCBsb25nIG1hdGNoX2ZsYWdfdHlwZTsKLSNlbHNlCi10eXBlZGVmIG1hdGNoX2ZsYWdzIG1hdGNoX2ZsYWdfdHlwZTsKLQotCi0jaWZkZWYgX19jcGx1c3BsdXMKLWlubGluZSBtYXRjaF9mbGFncyBvcGVyYXRvciYobWF0Y2hfZmxhZ3MgbTEsIG1hdGNoX2ZsYWdzIG0yKQoteyByZXR1cm4gc3RhdGljX2Nhc3Q8bWF0Y2hfZmxhZ3M+KHN0YXRpY19jYXN0PG5kbmJvb3N0OjppbnQzMl90PihtMSkgJiBzdGF0aWNfY2FzdDxuZG5ib29zdDo6aW50MzJfdD4obTIpKTsgfQotaW5saW5lIG1hdGNoX2ZsYWdzIG9wZXJhdG9yfChtYXRjaF9mbGFncyBtMSwgbWF0Y2hfZmxhZ3MgbTIpCi17IHJldHVybiBzdGF0aWNfY2FzdDxtYXRjaF9mbGFncz4oc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OmludDMyX3Q+KG0xKSB8IHN0YXRpY19jYXN0PG5kbmJvb3N0OjppbnQzMl90PihtMikpOyB9Ci1pbmxpbmUgbWF0Y2hfZmxhZ3Mgb3BlcmF0b3JeKG1hdGNoX2ZsYWdzIG0xLCBtYXRjaF9mbGFncyBtMikKLXsgcmV0dXJuIHN0YXRpY19jYXN0PG1hdGNoX2ZsYWdzPihzdGF0aWNfY2FzdDxuZG5ib29zdDo6aW50MzJfdD4obTEpIF4gc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OmludDMyX3Q+KG0yKSk7IH0KLWlubGluZSBtYXRjaF9mbGFncyBvcGVyYXRvcn4obWF0Y2hfZmxhZ3MgbTEpCi17IHJldHVybiBzdGF0aWNfY2FzdDxtYXRjaF9mbGFncz4ofnN0YXRpY19jYXN0PG5kbmJvb3N0OjppbnQzMl90PihtMSkpOyB9Ci1pbmxpbmUgbWF0Y2hfZmxhZ3MmIG9wZXJhdG9yJj0obWF0Y2hfZmxhZ3MmIG0xLCBtYXRjaF9mbGFncyBtMikKLXsgbTEgPSBtMSZtMjsgcmV0dXJuIG0xOyB9Ci1pbmxpbmUgbWF0Y2hfZmxhZ3MmIG9wZXJhdG9yfD0obWF0Y2hfZmxhZ3MmIG0xLCBtYXRjaF9mbGFncyBtMikKLXsgbTEgPSBtMXxtMjsgcmV0dXJuIG0xOyB9Ci1pbmxpbmUgbWF0Y2hfZmxhZ3MmIG9wZXJhdG9yXj0obWF0Y2hfZmxhZ3MmIG0xLCBtYXRjaF9mbGFncyBtMikKLXsgbTEgPSBtMV5tMjsgcmV0dXJuIG0xOyB9Ci0jZW5kaWYKLSNlbmRpZgotCi0jaWZkZWYgX19jcGx1c3BsdXMKLX0gLyogbmFtZXNwYWNlIHJlZ2V4X2NvbnN0YW50cyAqLwotLyoKLSAqIGltcG9ydCBuYW1lcyBpbnRvIGJvb3N0IGZvciBiYWNrd2FyZHMgY29tcGF0aWJsaXR5OgotICovCi11c2luZyByZWdleF9jb25zdGFudHM6Om1hdGNoX2ZsYWdfdHlwZTsKLXVzaW5nIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZGVmYXVsdDsKLXVzaW5nIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfbm90X2JvbDsKLXVzaW5nIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfbm90X2VvbDsKLXVzaW5nIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfbm90X2JvYjsKLXVzaW5nIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfbm90X2VvYjsKLXVzaW5nIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfbm90X2JvdzsKLXVzaW5nIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfbm90X2VvdzsKLXVzaW5nIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfbm90X2RvdF9uZXdsaW5lOwotdXNpbmcgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9ub3RfZG90X251bGw7Ci11c2luZyByZWdleF9jb25zdGFudHM6Om1hdGNoX3ByZXZfYXZhaWw7Ci0vKiB1c2luZyByZWdleF9jb25zdGFudHM6Om1hdGNoX2luaXQ7ICovCi11c2luZyByZWdleF9jb25zdGFudHM6Om1hdGNoX2FueTsKLXVzaW5nIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfbm90X251bGw7Ci11c2luZyByZWdleF9jb25zdGFudHM6Om1hdGNoX2NvbnRpbnVvdXM7Ci11c2luZyByZWdleF9jb25zdGFudHM6Om1hdGNoX3BhcnRpYWw7Ci0vKnVzaW5nIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfc3RvcDsgKi8KLXVzaW5nIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfYWxsOwotdXNpbmcgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9wZXJsOwotdXNpbmcgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9wb3NpeDsKLXVzaW5nIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfbm9zdWJzOwotdXNpbmcgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9leHRyYTsKLXVzaW5nIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfc2luZ2xlX2xpbmU7Ci0vKnVzaW5nIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfbWF4OyAqLwotdXNpbmcgcmVnZXhfY29uc3RhbnRzOjpmb3JtYXRfYWxsOwotdXNpbmcgcmVnZXhfY29uc3RhbnRzOjpmb3JtYXRfc2VkOwotdXNpbmcgcmVnZXhfY29uc3RhbnRzOjpmb3JtYXRfcGVybDsKLXVzaW5nIHJlZ2V4X2NvbnN0YW50czo6Zm9ybWF0X2RlZmF1bHQ7Ci11c2luZyByZWdleF9jb25zdGFudHM6OmZvcm1hdF9ub19jb3B5OwotdXNpbmcgcmVnZXhfY29uc3RhbnRzOjpmb3JtYXRfZmlyc3Rfb25seTsKLS8qdXNpbmcgcmVnZXhfY29uc3RhbnRzOjpmb3JtYXRfaXNfaWY7Ki8KLQotfSAvKiBuYW1lc3BhY2UgbmRuYm9vc3QgKi8KLSNlbmRpZiAvKiBfX2NwbHVzcGx1cyAqLwotI2VuZGlmIC8qIGluY2x1ZGUgZ3VhcmQgKi8KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9tYXRjaF9yZXN1bHRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvbWF0Y2hfcmVzdWx0cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhiYjk4MWYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9tYXRjaF9yZXN1bHRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDcwMiArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDA5Ci0gKiBKb2huIE1hZGRvY2sKLSAqCi0gKiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLSAqIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotICogTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqLwotCi0gLyoKLSAgKiAgIExPQ0FUSU9OOiAgICBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0gICogICBGSUxFICAgICAgICAgbWF0Y2hfcmVzdWx0cy5jcHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IERlY2xhcmVzIHRlbXBsYXRlIGNsYXNzIG1hdGNoX3Jlc3VsdHMuCi0gICovCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfVjRfTUFUQ0hfUkVTVUxUU19IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfVjRfTUFUQ0hfUkVTVUxUU19IUFAKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1BSRUZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZSA6IDQyNTEgNDIzMSkKLSMgIGlmIE5ETkJPT1NUX01TVkMgPCAxNjAwCi0jICAgICBwcmFnbWEgd2FybmluZyhkaXNhYmxlIDogNDY2MCkKLSMgIGVuZGlmCi0jZW5kaWYKLQotbmFtZXNwYWNlIHJlX2RldGFpbHsKLQotY2xhc3MgbmFtZWRfc3ViZXhwcmVzc2lvbnM7Ci0KLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yPgotY2xhc3MgbWF0Y2hfcmVzdWx0cwoteyAKLXByaXZhdGU6Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1NURF9BTExPQ0FUT1IKLSAgIHR5cGVkZWYgICAgICAgICAgc3RkOjp2ZWN0b3I8c3ViX21hdGNoPEJpZGlJdGVyYXRvcj4sIEFsbG9jYXRvcj4gdmVjdG9yX3R5cGU7Ci0jZWxzZQotICAgdHlwZWRlZiAgICAgICAgICBzdGQ6OnZlY3RvcjxzdWJfbWF0Y2g8QmlkaUl0ZXJhdG9yPiA+ICAgICAgICAgICB2ZWN0b3JfdHlwZTsKLSNlbmRpZgotcHVibGljOiAKLSAgIHR5cGVkZWYgICAgICAgICAgc3ViX21hdGNoPEJpZGlJdGVyYXRvcj4gICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVfdHlwZTsKLSNpZiAgIWRlZmluZWQoTkROQk9PU1RfTk9fU1REX0FMTE9DQVRPUikgJiYgIShkZWZpbmVkKE5ETkJPT1NUX01TVkMpICYmIGRlZmluZWQoX1NUTFBPUlRfVkVSU0lPTikpCi0gICB0eXBlZGVmIHR5cGVuYW1lIEFsbG9jYXRvcjo6Y29uc3RfcmVmZXJlbmNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RfcmVmZXJlbmNlOwotI2Vsc2UKLSAgIHR5cGVkZWYgICAgICAgICAgY29uc3QgdmFsdWVfdHlwZSYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdF9yZWZlcmVuY2U7Ci0jZW5kaWYKLSAgIHR5cGVkZWYgICAgICAgICAgY29uc3RfcmVmZXJlbmNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2U7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHZlY3Rvcl90eXBlOjpjb25zdF9pdGVyYXRvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RfaXRlcmF0b3I7Ci0gICB0eXBlZGVmICAgICAgICAgIGNvbnN0X2l0ZXJhdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlcmF0b3I7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmlkaUl0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBlICAgICAgICAgIGRpZmZlcmVuY2VfdHlwZTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgQWxsb2NhdG9yOjpzaXplX3R5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3R5cGU7Ci0gICB0eXBlZGVmICAgICAgICAgIEFsbG9jYXRvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb2NhdG9yX3R5cGU7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmlkaUl0ZXJhdG9yPjo6dmFsdWVfdHlwZSAgICAgICAgICAgICAgIGNoYXJfdHlwZTsKLSAgIHR5cGVkZWYgICAgICAgICAgc3RkOjpiYXNpY19zdHJpbmc8Y2hhcl90eXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdfdHlwZTsKLSAgIHR5cGVkZWYgICAgICAgICAgcmVfZGV0YWlsOjpuYW1lZF9zdWJleHByZXNzaW9ucyAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lZF9zdWJfdHlwZTsKLQotICAgLy8gY29uc3RydWN0L2NvcHkvZGVzdHJveToKLSAgIGV4cGxpY2l0IG1hdGNoX3Jlc3VsdHMoY29uc3QgQWxsb2NhdG9yJiBhID0gQWxsb2NhdG9yKCkpCi0jaWZuZGVmIE5ETkJPT1NUX05PX1NURF9BTExPQ0FUT1IKLSAgICAgIDogbV9zdWJzKGEpLCBtX2Jhc2UoKSwgbV9sYXN0X2Nsb3NlZF9wYXJlbigwKSwgbV9pc19zaW5ndWxhcih0cnVlKSB7fQotI2Vsc2UKLSAgICAgIDogbV9zdWJzKCksIG1fYmFzZSgpLCBtX2xhc3RfY2xvc2VkX3BhcmVuKDApLCBtX2lzX3Npbmd1bGFyKHRydWUpIHsgKHZvaWQpYTsgfQotI2VuZGlmCi0gICBtYXRjaF9yZXN1bHRzKGNvbnN0IG1hdGNoX3Jlc3VsdHMmIG0pCi0gICAgICA6IG1fc3VicyhtLm1fc3VicyksIG1fbmFtZWRfc3VicyhtLm1fbmFtZWRfc3VicyksIG1fbGFzdF9jbG9zZWRfcGFyZW4obS5tX2xhc3RfY2xvc2VkX3BhcmVuKSwgbV9pc19zaW5ndWxhcihtLm1faXNfc2luZ3VsYXIpIAotICAgewotICAgICAgaWYoIW1faXNfc2luZ3VsYXIpCi0gICAgICB7Ci0gICAgICAgICBtX2Jhc2UgPSBtLm1fYmFzZTsKLSAgICAgICAgIG1fbnVsbCA9IG0ubV9udWxsOwotICAgICAgfQotICAgfQotICAgbWF0Y2hfcmVzdWx0cyYgb3BlcmF0b3I9KGNvbnN0IG1hdGNoX3Jlc3VsdHMmIG0pCi0gICB7Ci0gICAgICBtX3N1YnMgPSBtLm1fc3ViczsKLSAgICAgIG1fbmFtZWRfc3VicyA9IG0ubV9uYW1lZF9zdWJzOwotICAgICAgbV9sYXN0X2Nsb3NlZF9wYXJlbiA9IG0ubV9sYXN0X2Nsb3NlZF9wYXJlbjsKLSAgICAgIG1faXNfc2luZ3VsYXIgPSBtLm1faXNfc2luZ3VsYXI7Ci0gICAgICBpZighbV9pc19zaW5ndWxhcikKLSAgICAgIHsKLSAgICAgICAgIG1fYmFzZSA9IG0ubV9iYXNlOwotICAgICAgICAgbV9udWxsID0gbS5tX251bGw7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gKnRoaXM7Ci0gICB9Ci0gICB+bWF0Y2hfcmVzdWx0cygpe30KLQotICAgLy8gc2l6ZToKLSAgIHNpemVfdHlwZSBzaXplKCkgY29uc3QKLSAgIHsgcmV0dXJuIGVtcHR5KCkgPyAwIDogbV9zdWJzLnNpemUoKSAtIDI7IH0KLSAgIHNpemVfdHlwZSBtYXhfc2l6ZSgpIGNvbnN0Ci0gICB7IHJldHVybiBtX3N1YnMubWF4X3NpemUoKTsgfQotICAgYm9vbCBlbXB0eSgpIGNvbnN0Ci0gICB7IHJldHVybiBtX3N1YnMuc2l6ZSgpIDwgMjsgfQotICAgLy8gZWxlbWVudCBhY2Nlc3M6Ci0gICBkaWZmZXJlbmNlX3R5cGUgbGVuZ3RoKGludCBzdWIgPSAwKSBjb25zdAotICAgewotICAgICAgaWYobV9pc19zaW5ndWxhcikKLSAgICAgICAgIHJhaXNlX2xvZ2ljX2Vycm9yKCk7Ci0gICAgICBzdWIgKz0gMjsKLSAgICAgIGlmKChzdWIgPCAoaW50KW1fc3Vicy5zaXplKCkpICYmIChzdWIgPiAwKSkKLSAgICAgICAgIHJldHVybiBtX3N1YnNbc3ViXS5sZW5ndGgoKTsKLSAgICAgIHJldHVybiAwOwotICAgfQotICAgZGlmZmVyZW5jZV90eXBlIGxlbmd0aChjb25zdCBjaGFyX3R5cGUqIHN1YikgY29uc3QKLSAgIHsKLSAgICAgIGlmKG1faXNfc2luZ3VsYXIpCi0gICAgICAgICByYWlzZV9sb2dpY19lcnJvcigpOwotICAgICAgY29uc3QgY2hhcl90eXBlKiBzdWJfZW5kID0gc3ViOwotICAgICAgd2hpbGUoKnN1Yl9lbmQpICsrc3ViX2VuZDsKLSAgICAgIHJldHVybiBsZW5ndGgobmFtZWRfc3ViZXhwcmVzc2lvbl9pbmRleChzdWIsIHN1Yl9lbmQpKTsKLSAgIH0KLSAgIHRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLSAgIGRpZmZlcmVuY2VfdHlwZSBsZW5ndGgoY29uc3QgY2hhclQqIHN1YikgY29uc3QKLSAgIHsKLSAgICAgIGlmKG1faXNfc2luZ3VsYXIpCi0gICAgICAgICByYWlzZV9sb2dpY19lcnJvcigpOwotICAgICAgY29uc3QgY2hhclQqIHN1Yl9lbmQgPSBzdWI7Ci0gICAgICB3aGlsZSgqc3ViX2VuZCkgKytzdWJfZW5kOwotICAgICAgcmV0dXJuIGxlbmd0aChuYW1lZF9zdWJleHByZXNzaW9uX2luZGV4KHN1Yiwgc3ViX2VuZCkpOwotICAgfQotICAgdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyBUcmFpdHMsIGNsYXNzIEE+Ci0gICBkaWZmZXJlbmNlX3R5cGUgbGVuZ3RoKGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJULCBUcmFpdHMsIEE+JiBzdWIpIGNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gbGVuZ3RoKHN1Yi5jX3N0cigpKTsKLSAgIH0KLSAgIGRpZmZlcmVuY2VfdHlwZSBwb3NpdGlvbihzaXplX3R5cGUgc3ViID0gMCkgY29uc3QKLSAgIHsKLSAgICAgIGlmKG1faXNfc2luZ3VsYXIpCi0gICAgICAgICByYWlzZV9sb2dpY19lcnJvcigpOwotICAgICAgc3ViICs9IDI7Ci0gICAgICBpZihzdWIgPCBtX3N1YnMuc2l6ZSgpKQotICAgICAgewotICAgICAgICAgY29uc3Qgc3ViX21hdGNoPEJpZGlJdGVyYXRvcj4mIHMgPSBtX3N1YnNbc3ViXTsKLSAgICAgICAgIGlmKHMubWF0Y2hlZCB8fCAoc3ViID09IDIpKQotICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6ZGlzdGFuY2UoKEJpZGlJdGVyYXRvcikobV9iYXNlKSwgKEJpZGlJdGVyYXRvcikocy5maXJzdCkpOwotICAgICAgICAgfQotICAgICAgfQotICAgICAgcmV0dXJuIH5zdGF0aWNfY2FzdDxkaWZmZXJlbmNlX3R5cGU+KDApOwotICAgfQotICAgZGlmZmVyZW5jZV90eXBlIHBvc2l0aW9uKGNvbnN0IGNoYXJfdHlwZSogc3ViKSBjb25zdAotICAgewotICAgICAgY29uc3QgY2hhcl90eXBlKiBzdWJfZW5kID0gc3ViOwotICAgICAgd2hpbGUoKnN1Yl9lbmQpICsrc3ViX2VuZDsKLSAgICAgIHJldHVybiBwb3NpdGlvbihuYW1lZF9zdWJleHByZXNzaW9uX2luZGV4KHN1Yiwgc3ViX2VuZCkpOwotICAgfQotICAgdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotICAgZGlmZmVyZW5jZV90eXBlIHBvc2l0aW9uKGNvbnN0IGNoYXJUKiBzdWIpIGNvbnN0Ci0gICB7Ci0gICAgICBjb25zdCBjaGFyVCogc3ViX2VuZCA9IHN1YjsKLSAgICAgIHdoaWxlKCpzdWJfZW5kKSArK3N1Yl9lbmQ7Ci0gICAgICByZXR1cm4gcG9zaXRpb24obmFtZWRfc3ViZXhwcmVzc2lvbl9pbmRleChzdWIsIHN1Yl9lbmQpKTsKLSAgIH0KLSAgIHRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgVHJhaXRzLCBjbGFzcyBBPgotICAgZGlmZmVyZW5jZV90eXBlIHBvc2l0aW9uKGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJULCBUcmFpdHMsIEE+JiBzdWIpIGNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gcG9zaXRpb24oc3ViLmNfc3RyKCkpOwotICAgfQotICAgc3RyaW5nX3R5cGUgc3RyKGludCBzdWIgPSAwKSBjb25zdAotICAgewotICAgICAgaWYobV9pc19zaW5ndWxhcikKLSAgICAgICAgIHJhaXNlX2xvZ2ljX2Vycm9yKCk7Ci0gICAgICBzdWIgKz0gMjsKLSAgICAgIHN0cmluZ190eXBlIHJlc3VsdDsKLSAgICAgIGlmKHN1YiA8IChpbnQpbV9zdWJzLnNpemUoKSAmJiAoc3ViID4gMCkpCi0gICAgICB7Ci0gICAgICAgICBjb25zdCBzdWJfbWF0Y2g8QmlkaUl0ZXJhdG9yPiYgcyA9IG1fc3Vic1tzdWJdOwotICAgICAgICAgaWYocy5tYXRjaGVkKQotICAgICAgICAgewotICAgICAgICAgICAgcmVzdWx0ID0gcy5zdHIoKTsKLSAgICAgICAgIH0KLSAgICAgIH0KLSAgICAgIHJldHVybiByZXN1bHQ7Ci0gICB9Ci0gICBzdHJpbmdfdHlwZSBzdHIoY29uc3QgY2hhcl90eXBlKiBzdWIpIGNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gKCp0aGlzKVtzdWJdLnN0cigpOwotICAgfQotICAgdGVtcGxhdGUgPGNsYXNzIFRyYWl0cywgY2xhc3MgQT4KLSAgIHN0cmluZ190eXBlIHN0cihjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyX3R5cGUsIFRyYWl0cywgQT4mIHN1YikgY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiAoKnRoaXMpW3N1Yl0uc3RyKCk7Ci0gICB9Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci0gICBzdHJpbmdfdHlwZSBzdHIoY29uc3QgY2hhclQqIHN1YikgY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiAoKnRoaXMpW3N1Yl0uc3RyKCk7Ci0gICB9Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIFRyYWl0cywgY2xhc3MgQT4KLSAgIHN0cmluZ190eXBlIHN0cihjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVCwgVHJhaXRzLCBBPiYgc3ViKSBjb25zdAotICAgewotICAgICAgcmV0dXJuICgqdGhpcylbc3ViXS5zdHIoKTsKLSAgIH0KLSAgIGNvbnN0X3JlZmVyZW5jZSBvcGVyYXRvcltdKGludCBzdWIpIGNvbnN0Ci0gICB7Ci0gICAgICBpZihtX2lzX3Npbmd1bGFyICYmIG1fc3Vicy5lbXB0eSgpKQotICAgICAgICAgcmFpc2VfbG9naWNfZXJyb3IoKTsKLSAgICAgIHN1YiArPSAyOwotICAgICAgaWYoc3ViIDwgKGludCltX3N1YnMuc2l6ZSgpICYmIChzdWIgPj0gMCkpCi0gICAgICB7Ci0gICAgICAgICByZXR1cm4gbV9zdWJzW3N1Yl07Ci0gICAgICB9Ci0gICAgICByZXR1cm4gbV9udWxsOwotICAgfQotICAgLy8KLSAgIC8vIE5hbWVkIHN1Yi1leHByZXNzaW9uczoKLSAgIC8vCi0gICBjb25zdF9yZWZlcmVuY2UgbmFtZWRfc3ViZXhwcmVzc2lvbihjb25zdCBjaGFyX3R5cGUqIGksIGNvbnN0IGNoYXJfdHlwZSogaikgY29uc3QKLSAgIHsKLSAgICAgIC8vCi0gICAgICAvLyBTY2FuIGZvciB0aGUgbGVmdG1vc3QgKm1hdGNoZWQqIHN1YmV4cHJlc3Npb24gd2l0aCB0aGUgc3BlY2lmaWVkIG5hbWVkOgotICAgICAgLy8KLSAgICAgIGlmKG1faXNfc2luZ3VsYXIpCi0gICAgICAgICByYWlzZV9sb2dpY19lcnJvcigpOwotICAgICAgcmVfZGV0YWlsOjpuYW1lZF9zdWJleHByZXNzaW9uczo6cmFuZ2VfdHlwZSByID0gbV9uYW1lZF9zdWJzLT5lcXVhbF9yYW5nZShpLCBqKTsKLSAgICAgIHdoaWxlKChyLmZpcnN0ICE9IHIuc2Vjb25kKSAmJiAoKCp0aGlzKVtyLmZpcnN0LT5pbmRleF0ubWF0Y2hlZCA9PSBmYWxzZSkpCi0gICAgICAgICArK3IuZmlyc3Q7Ci0gICAgICByZXR1cm4gci5maXJzdCAhPSByLnNlY29uZCA/ICgqdGhpcylbci5maXJzdC0+aW5kZXhdIDogbV9udWxsOwotICAgfQotICAgdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotICAgY29uc3RfcmVmZXJlbmNlIG5hbWVkX3N1YmV4cHJlc3Npb24oY29uc3QgY2hhclQqIGksIGNvbnN0IGNoYXJUKiBqKSBjb25zdAotICAgewotICAgICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVChzaXplb2YoY2hhclQpIDw9IHNpemVvZihjaGFyX3R5cGUpKTsKLSAgICAgIGlmKGkgPT0gaikKLSAgICAgICAgIHJldHVybiBtX251bGw7Ci0gICAgICBzdGQ6OnZlY3RvcjxjaGFyX3R5cGU+IHM7Ci0gICAgICB3aGlsZShpICE9IGopCi0gICAgICAgICBzLmluc2VydChzLmVuZCgpLCAqaSsrKTsKLSAgICAgIHJldHVybiBuYW1lZF9zdWJleHByZXNzaW9uKCYqcy5iZWdpbigpLCAmKnMuYmVnaW4oKSArIHMuc2l6ZSgpKTsKLSAgIH0KLSAgIGludCBuYW1lZF9zdWJleHByZXNzaW9uX2luZGV4KGNvbnN0IGNoYXJfdHlwZSogaSwgY29uc3QgY2hhcl90eXBlKiBqKSBjb25zdAotICAgewotICAgICAgLy8KLSAgICAgIC8vIFNjYW4gZm9yIHRoZSBsZWZ0bW9zdCAqbWF0Y2hlZCogc3ViZXhwcmVzc2lvbiB3aXRoIHRoZSBzcGVjaWZpZWQgbmFtZWQuCi0gICAgICAvLyBJZiBub25lIGZvdW5kIHRoZW4gcmV0dXJuIHRoZSBsZWZ0bW9zdCBleHByZXNzaW9uIHdpdGggdGhhdCBuYW1lLAotICAgICAgLy8gb3RoZXJ3aXNlIGFuIGludmFsaWQgaW5kZXg6Ci0gICAgICAvLwotICAgICAgaWYobV9pc19zaW5ndWxhcikKLSAgICAgICAgIHJhaXNlX2xvZ2ljX2Vycm9yKCk7Ci0gICAgICByZV9kZXRhaWw6Om5hbWVkX3N1YmV4cHJlc3Npb25zOjpyYW5nZV90eXBlIHMsIHI7Ci0gICAgICBzID0gciA9IG1fbmFtZWRfc3Vicy0+ZXF1YWxfcmFuZ2UoaSwgaik7Ci0gICAgICB3aGlsZSgoci5maXJzdCAhPSByLnNlY29uZCkgJiYgKCgqdGhpcylbci5maXJzdC0+aW5kZXhdLm1hdGNoZWQgPT0gZmFsc2UpKQotICAgICAgICAgKytyLmZpcnN0OwotICAgICAgaWYoci5maXJzdCA9PSByLnNlY29uZCkKLSAgICAgICAgIHIgPSBzOwotICAgICAgcmV0dXJuIHIuZmlyc3QgIT0gci5zZWNvbmQgPyByLmZpcnN0LT5pbmRleCA6IC0yMDsKLSAgIH0KLSAgIHRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLSAgIGludCBuYW1lZF9zdWJleHByZXNzaW9uX2luZGV4KGNvbnN0IGNoYXJUKiBpLCBjb25zdCBjaGFyVCogaikgY29uc3QKLSAgIHsKLSAgICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoc2l6ZW9mKGNoYXJUKSA8PSBzaXplb2YoY2hhcl90eXBlKSk7Ci0gICAgICBpZihpID09IGopCi0gICAgICAgICByZXR1cm4gLTIwOwotICAgICAgc3RkOjp2ZWN0b3I8Y2hhcl90eXBlPiBzOwotICAgICAgd2hpbGUoaSAhPSBqKQotICAgICAgICAgcy5pbnNlcnQocy5lbmQoKSwgKmkrKyk7Ci0gICAgICByZXR1cm4gbmFtZWRfc3ViZXhwcmVzc2lvbl9pbmRleCgmKnMuYmVnaW4oKSwgJipzLmJlZ2luKCkgKyBzLnNpemUoKSk7Ci0gICB9Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgVHJhaXRzLCBjbGFzcyBBPgotICAgY29uc3RfcmVmZXJlbmNlIG9wZXJhdG9yW10oY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8Y2hhcl90eXBlLCBUcmFpdHMsIEE+JiBzKSBjb25zdAotICAgewotICAgICAgcmV0dXJuIG5hbWVkX3N1YmV4cHJlc3Npb24ocy5jX3N0cigpLCBzLmNfc3RyKCkgKyBzLnNpemUoKSk7Ci0gICB9Ci0gICBjb25zdF9yZWZlcmVuY2Ugb3BlcmF0b3JbXShjb25zdCBjaGFyX3R5cGUqIHApIGNvbnN0Ci0gICB7Ci0gICAgICBjb25zdCBjaGFyX3R5cGUqIGUgPSBwOwotICAgICAgd2hpbGUoKmUpICsrZTsKLSAgICAgIHJldHVybiBuYW1lZF9zdWJleHByZXNzaW9uKHAsIGUpOwotICAgfQotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci0gICBjb25zdF9yZWZlcmVuY2Ugb3BlcmF0b3JbXShjb25zdCBjaGFyVCogcCkgY29uc3QKLSAgIHsKLSAgICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoc2l6ZW9mKGNoYXJUKSA8PSBzaXplb2YoY2hhcl90eXBlKSk7Ci0gICAgICBpZigqcCA9PSAwKQotICAgICAgICAgcmV0dXJuIG1fbnVsbDsKLSAgICAgIHN0ZDo6dmVjdG9yPGNoYXJfdHlwZT4gczsKLSAgICAgIHdoaWxlKCpwKQotICAgICAgICAgcy5pbnNlcnQocy5lbmQoKSwgKnArKyk7Ci0gICAgICByZXR1cm4gbmFtZWRfc3ViZXhwcmVzc2lvbigmKnMuYmVnaW4oKSwgJipzLmJlZ2luKCkgKyBzLnNpemUoKSk7Ci0gICB9Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIFRyYWl0cywgY2xhc3MgQT4KLSAgIGNvbnN0X3JlZmVyZW5jZSBvcGVyYXRvcltdKGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJULCBUcmFpdHMsIEE+JiBucykgY29uc3QKLSAgIHsKLSAgICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoc2l6ZW9mKGNoYXJUKSA8PSBzaXplb2YoY2hhcl90eXBlKSk7Ci0gICAgICBpZihucy5lbXB0eSgpKQotICAgICAgICAgcmV0dXJuIG1fbnVsbDsKLSAgICAgIHN0ZDo6dmVjdG9yPGNoYXJfdHlwZT4gczsKLSAgICAgIGZvcih1bnNpZ25lZCBpID0gMDsgaSA8IG5zLnNpemUoKTsgKytpKQotICAgICAgICAgcy5pbnNlcnQocy5lbmQoKSwgbnNbaV0pOwotICAgICAgcmV0dXJuIG5hbWVkX3N1YmV4cHJlc3Npb24oJipzLmJlZ2luKCksICYqcy5iZWdpbigpICsgcy5zaXplKCkpOwotICAgfQotCi0gICBjb25zdF9yZWZlcmVuY2UgcHJlZml4KCkgY29uc3QKLSAgIHsKLSAgICAgIGlmKG1faXNfc2luZ3VsYXIpCi0gICAgICAgICByYWlzZV9sb2dpY19lcnJvcigpOwotICAgICAgcmV0dXJuICgqdGhpcylbLTFdOwotICAgfQotCi0gICBjb25zdF9yZWZlcmVuY2Ugc3VmZml4KCkgY29uc3QKLSAgIHsKLSAgICAgIGlmKG1faXNfc2luZ3VsYXIpCi0gICAgICAgICByYWlzZV9sb2dpY19lcnJvcigpOwotICAgICAgcmV0dXJuICgqdGhpcylbLTJdOwotICAgfQotICAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdAotICAgewotICAgICAgcmV0dXJuIChtX3N1YnMuc2l6ZSgpID4gMikgPyAobV9zdWJzLmJlZ2luKCkgKyAyKSA6IG1fc3Vicy5lbmQoKTsKLSAgIH0KLSAgIGNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gbV9zdWJzLmVuZCgpOwotICAgfQotICAgLy8gZm9ybWF0OgotICAgdGVtcGxhdGUgPGNsYXNzIE91dHB1dEl0ZXJhdG9yLCBjbGFzcyBGdW5jdG9yPgotICAgT3V0cHV0SXRlcmF0b3IgZm9ybWF0KE91dHB1dEl0ZXJhdG9yIG91dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBGdW5jdG9yIGZtdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBmb3JtYXRfZGVmYXVsdCkgY29uc3QKLSAgIHsKLSAgICAgIGlmKG1faXNfc2luZ3VsYXIpCi0gICAgICAgICByYWlzZV9sb2dpY19lcnJvcigpOwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZV9kZXRhaWw6OmNvbXB1dGVfZnVuY3Rvcl90eXBlPEZ1bmN0b3IsIG1hdGNoX3Jlc3VsdHM8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3I+LCBPdXRwdXRJdGVyYXRvcj46OnR5cGUgRjsKLSAgICAgIEYgZnVuYyhmbXQpOwotICAgICAgcmV0dXJuIGZ1bmMoKnRoaXMsIG91dCwgZmxhZ3MpOwotICAgfQotICAgdGVtcGxhdGUgPGNsYXNzIEZ1bmN0b3I+Ci0gICBzdHJpbmdfdHlwZSBmb3JtYXQoRnVuY3RvciBmbXQsIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IGZvcm1hdF9kZWZhdWx0KSBjb25zdAotICAgewotICAgICAgaWYobV9pc19zaW5ndWxhcikKLSAgICAgICAgIHJhaXNlX2xvZ2ljX2Vycm9yKCk7Ci0gICAgICBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyX3R5cGU+IHJlc3VsdDsKLSAgICAgIHJlX2RldGFpbDo6c3RyaW5nX291dF9pdGVyYXRvcjxzdGQ6OmJhc2ljX3N0cmluZzxjaGFyX3R5cGU+ID4gaShyZXN1bHQpOwotCi0gICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlX2RldGFpbDo6Y29tcHV0ZV9mdW5jdG9yX3R5cGU8RnVuY3RvciwgbWF0Y2hfcmVzdWx0czxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvcj4sIHJlX2RldGFpbDo6c3RyaW5nX291dF9pdGVyYXRvcjxzdGQ6OmJhc2ljX3N0cmluZzxjaGFyX3R5cGU+ID4gPjo6dHlwZSBGOwotICAgICAgRiBmdW5jKGZtdCk7Ci0KLSAgICAgIGZ1bmMoKnRoaXMsIGksIGZsYWdzKTsKLSAgICAgIHJldHVybiByZXN1bHQ7Ci0gICB9Ci0gICAvLyBmb3JtYXQgd2l0aCBsb2NhbGU6Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgT3V0cHV0SXRlcmF0b3IsIGNsYXNzIEZ1bmN0b3IsIGNsYXNzIFJlZ2V4VD4KLSAgIE91dHB1dEl0ZXJhdG9yIGZvcm1hdChPdXRwdXRJdGVyYXRvciBvdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgRnVuY3RvciBmbXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJlZ2V4VCYgcmUpIGNvbnN0Ci0gICB7Ci0gICAgICBpZihtX2lzX3Npbmd1bGFyKQotICAgICAgICAgcmFpc2VfbG9naWNfZXJyb3IoKTsKLSAgICAgIHR5cGVkZWYgOjpuZG5ib29zdDo6cmVnZXhfdHJhaXRzX3dyYXBwZXI8dHlwZW5hbWUgUmVnZXhUOjp0cmFpdHNfdHlwZT4gdHJhaXRzX3R5cGU7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlX2RldGFpbDo6Y29tcHV0ZV9mdW5jdG9yX3R5cGU8RnVuY3RvciwgbWF0Y2hfcmVzdWx0czxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvcj4sIE91dHB1dEl0ZXJhdG9yLCB0cmFpdHNfdHlwZT46OnR5cGUgRjsKLSAgICAgIEYgZnVuYyhmbXQpOwotICAgICAgcmV0dXJuIGZ1bmMoKnRoaXMsIG91dCwgZmxhZ3MsIHJlLmdldF90cmFpdHMoKSk7Ci0gICB9Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgUmVnZXhULCBjbGFzcyBGdW5jdG9yPgotICAgc3RyaW5nX3R5cGUgZm9ybWF0KEZ1bmN0b3IgZm10LAotICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncywKLSAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSZWdleFQmIHJlKSBjb25zdAotICAgewotICAgICAgaWYobV9pc19zaW5ndWxhcikKLSAgICAgICAgIHJhaXNlX2xvZ2ljX2Vycm9yKCk7Ci0gICAgICB0eXBlZGVmIDo6bmRuYm9vc3Q6OnJlZ2V4X3RyYWl0c193cmFwcGVyPHR5cGVuYW1lIFJlZ2V4VDo6dHJhaXRzX3R5cGU+IHRyYWl0c190eXBlOwotICAgICAgc3RkOjpiYXNpY19zdHJpbmc8Y2hhcl90eXBlPiByZXN1bHQ7Ci0gICAgICByZV9kZXRhaWw6OnN0cmluZ19vdXRfaXRlcmF0b3I8c3RkOjpiYXNpY19zdHJpbmc8Y2hhcl90eXBlPiA+IGkocmVzdWx0KTsKLQotICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZV9kZXRhaWw6OmNvbXB1dGVfZnVuY3Rvcl90eXBlPEZ1bmN0b3IsIG1hdGNoX3Jlc3VsdHM8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3I+LCByZV9kZXRhaWw6OnN0cmluZ19vdXRfaXRlcmF0b3I8c3RkOjpiYXNpY19zdHJpbmc8Y2hhcl90eXBlPiA+LCB0cmFpdHNfdHlwZSA+Ojp0eXBlIEY7Ci0gICAgICBGIGZ1bmMoZm10KTsKLQotICAgICAgZnVuYygqdGhpcywgaSwgZmxhZ3MsIHJlLmdldF90cmFpdHMoKSk7Ci0gICAgICByZXR1cm4gcmVzdWx0OwotICAgfQotCi0gICBjb25zdF9yZWZlcmVuY2UgZ2V0X2xhc3RfY2xvc2VkX3BhcmVuKCljb25zdAotICAgewotICAgICAgaWYobV9pc19zaW5ndWxhcikKLSAgICAgICAgIHJhaXNlX2xvZ2ljX2Vycm9yKCk7Ci0gICAgICByZXR1cm4gbV9sYXN0X2Nsb3NlZF9wYXJlbiA9PSAwID8gbV9udWxsIDogKCp0aGlzKVttX2xhc3RfY2xvc2VkX3BhcmVuXTsKLSAgIH0KLQotICAgYWxsb2NhdG9yX3R5cGUgZ2V0X2FsbG9jYXRvcigpIGNvbnN0Ci0gICB7Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1NURF9BTExPQ0FUT1IKLSAgICAgIHJldHVybiBtX3N1YnMuZ2V0X2FsbG9jYXRvcigpOwotI2Vsc2UKLSAgICAgcmV0dXJuIGFsbG9jYXRvcl90eXBlKCk7Ci0jZW5kaWYKLSAgIH0KLSAgIHZvaWQgc3dhcChtYXRjaF9yZXN1bHRzJiB0aGF0KQotICAgewotICAgICAgc3RkOjpzd2FwKG1fc3VicywgdGhhdC5tX3N1YnMpOwotICAgICAgc3RkOjpzd2FwKG1fbmFtZWRfc3VicywgdGhhdC5tX25hbWVkX3N1YnMpOwotICAgICAgc3RkOjpzd2FwKG1fbGFzdF9jbG9zZWRfcGFyZW4sIHRoYXQubV9sYXN0X2Nsb3NlZF9wYXJlbik7Ci0gICAgICBpZihtX2lzX3Npbmd1bGFyKQotICAgICAgewotICAgICAgICAgaWYoIXRoYXQubV9pc19zaW5ndWxhcikKLSAgICAgICAgIHsKLSAgICAgICAgICAgIG1fYmFzZSA9IHRoYXQubV9iYXNlOwotICAgICAgICAgICAgbV9udWxsID0gdGhhdC5tX251bGw7Ci0gICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmKHRoYXQubV9pc19zaW5ndWxhcikKLSAgICAgIHsKLSAgICAgICAgIHRoYXQubV9iYXNlID0gbV9iYXNlOwotICAgICAgICAgdGhhdC5tX251bGwgPSBtX251bGw7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgICBzdGQ6OnN3YXAobV9iYXNlLCB0aGF0Lm1fYmFzZSk7Ci0gICAgICAgICBzdGQ6OnN3YXAobV9udWxsLCB0aGF0Lm1fbnVsbCk7Ci0gICAgICB9Ci0gICAgICBzdGQ6OnN3YXAobV9pc19zaW5ndWxhciwgdGhhdC5tX2lzX3Npbmd1bGFyKTsKLSAgIH0KLSAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBtYXRjaF9yZXN1bHRzJiB0aGF0KWNvbnN0Ci0gICB7Ci0gICAgICBpZihtX2lzX3Npbmd1bGFyKQotICAgICAgewotICAgICAgICAgcmV0dXJuIHRoYXQubV9pc19zaW5ndWxhcjsKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYodGhhdC5tX2lzX3Npbmd1bGFyKQotICAgICAgewotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgICAgcmV0dXJuIChtX3N1YnMgPT0gdGhhdC5tX3N1YnMpICYmIChtX2Jhc2UgPT0gdGhhdC5tX2Jhc2UpICYmIChtX2xhc3RfY2xvc2VkX3BhcmVuID09IHRoYXQubV9sYXN0X2Nsb3NlZF9wYXJlbik7Ci0gICB9Ci0gICBib29sIG9wZXJhdG9yIT0oY29uc3QgbWF0Y2hfcmVzdWx0cyYgdGhhdCljb25zdAotICAgeyByZXR1cm4gISgqdGhpcyA9PSB0aGF0KTsgfQotCi0jaWZkZWYgTkROQk9PU1RfUkVHRVhfTUFUQ0hfRVhUUkEKLSAgIHR5cGVkZWYgdHlwZW5hbWUgc3ViX21hdGNoPEJpZGlJdGVyYXRvcj46OmNhcHR1cmVfc2VxdWVuY2VfdHlwZSBjYXB0dXJlX3NlcXVlbmNlX3R5cGU7Ci0KLSAgIGNvbnN0IGNhcHR1cmVfc2VxdWVuY2VfdHlwZSYgY2FwdHVyZXMoaW50IGkpY29uc3QKLSAgIHsKLSAgICAgIGlmKG1faXNfc2luZ3VsYXIpCi0gICAgICAgICByYWlzZV9sb2dpY19lcnJvcigpOwotICAgICAgcmV0dXJuICgqdGhpcylbaV0uY2FwdHVyZXMoKTsKLSAgIH0KLSNlbmRpZgotCi0gICAvLwotICAgLy8gcHJpdmF0ZSBhY2Nlc3MgZnVuY3Rpb25zOgotICAgdm9pZCBORE5CT09TVF9SRUdFWF9DQUxMIHNldF9zZWNvbmQoQmlkaUl0ZXJhdG9yIGkpCi0gICB7Ci0gICAgICBORE5CT09TVF9BU1NFUlQobV9zdWJzLnNpemUoKSA+IDIpOwotICAgICAgbV9zdWJzWzJdLnNlY29uZCA9IGk7Ci0gICAgICBtX3N1YnNbMl0ubWF0Y2hlZCA9IHRydWU7Ci0gICAgICBtX3N1YnNbMF0uZmlyc3QgPSBpOwotICAgICAgbV9zdWJzWzBdLm1hdGNoZWQgPSAobV9zdWJzWzBdLmZpcnN0ICE9IG1fc3Vic1swXS5zZWNvbmQpOwotICAgICAgbV9udWxsLmZpcnN0ID0gaTsKLSAgICAgIG1fbnVsbC5zZWNvbmQgPSBpOwotICAgICAgbV9udWxsLm1hdGNoZWQgPSBmYWxzZTsKLSAgICAgIG1faXNfc2luZ3VsYXIgPSBmYWxzZTsKLSAgIH0KLQotICAgdm9pZCBORE5CT09TVF9SRUdFWF9DQUxMIHNldF9zZWNvbmQoQmlkaUl0ZXJhdG9yIGksIHNpemVfdHlwZSBwb3MsIGJvb2wgbSA9IHRydWUsIGJvb2wgZXNjYXBlX2sgPSBmYWxzZSkKLSAgIHsKLSAgICAgIGlmKHBvcykKLSAgICAgICAgIG1fbGFzdF9jbG9zZWRfcGFyZW4gPSBzdGF0aWNfY2FzdDxpbnQ+KHBvcyk7Ci0gICAgICBwb3MgKz0gMjsKLSAgICAgIE5ETkJPT1NUX0FTU0VSVChtX3N1YnMuc2l6ZSgpID4gcG9zKTsKLSAgICAgIG1fc3Vic1twb3NdLnNlY29uZCA9IGk7Ci0gICAgICBtX3N1YnNbcG9zXS5tYXRjaGVkID0gbTsKLSAgICAgIGlmKChwb3MgPT0gMikgJiYgIWVzY2FwZV9rKQotICAgICAgewotICAgICAgICAgbV9zdWJzWzBdLmZpcnN0ID0gaTsKLSAgICAgICAgIG1fc3Vic1swXS5tYXRjaGVkID0gKG1fc3Vic1swXS5maXJzdCAhPSBtX3N1YnNbMF0uc2Vjb25kKTsKLSAgICAgICAgIG1fbnVsbC5maXJzdCA9IGk7Ci0gICAgICAgICBtX251bGwuc2Vjb25kID0gaTsKLSAgICAgICAgIG1fbnVsbC5tYXRjaGVkID0gZmFsc2U7Ci0gICAgICAgICBtX2lzX3Npbmd1bGFyID0gZmFsc2U7Ci0gICAgICB9Ci0gICB9Ci0gICB2b2lkIE5ETkJPT1NUX1JFR0VYX0NBTEwgc2V0X3NpemUoc2l6ZV90eXBlIG4sIEJpZGlJdGVyYXRvciBpLCBCaWRpSXRlcmF0b3IgaikKLSAgIHsKLSAgICAgIHZhbHVlX3R5cGUgdihqKTsKLSAgICAgIHNpemVfdHlwZSBsZW4gPSBtX3N1YnMuc2l6ZSgpOwotICAgICAgaWYobGVuID4gbiArIDIpCi0gICAgICB7Ci0gICAgICAgICBtX3N1YnMuZXJhc2UobV9zdWJzLmJlZ2luKCkrbisyLCBtX3N1YnMuZW5kKCkpOwotICAgICAgICAgc3RkOjpmaWxsKG1fc3Vicy5iZWdpbigpLCBtX3N1YnMuZW5kKCksIHYpOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICAgc3RkOjpmaWxsKG1fc3Vicy5iZWdpbigpLCBtX3N1YnMuZW5kKCksIHYpOwotICAgICAgICAgaWYobisyICE9IGxlbikKLSAgICAgICAgICAgIG1fc3Vicy5pbnNlcnQobV9zdWJzLmVuZCgpLCBuKzItbGVuLCB2KTsKLSAgICAgIH0KLSAgICAgIG1fc3Vic1sxXS5maXJzdCA9IGk7Ci0gICAgICBtX2xhc3RfY2xvc2VkX3BhcmVuID0gMDsKLSAgIH0KLSAgIHZvaWQgTkROQk9PU1RfUkVHRVhfQ0FMTCBzZXRfYmFzZShCaWRpSXRlcmF0b3IgcG9zKQotICAgewotICAgICAgbV9iYXNlID0gcG9zOwotICAgfQotICAgQmlkaUl0ZXJhdG9yIGJhc2UoKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gbV9iYXNlOwotICAgfQotICAgdm9pZCBORE5CT09TVF9SRUdFWF9DQUxMIHNldF9maXJzdChCaWRpSXRlcmF0b3IgaSkKLSAgIHsKLSAgICAgIE5ETkJPT1NUX0FTU0VSVChtX3N1YnMuc2l6ZSgpID4gMik7Ci0gICAgICAvLyBzZXQgdXAgcHJlZml4OgotICAgICAgbV9zdWJzWzFdLnNlY29uZCA9IGk7Ci0gICAgICBtX3N1YnNbMV0ubWF0Y2hlZCA9IChtX3N1YnNbMV0uZmlyc3QgIT0gaSk7Ci0gICAgICAvLyBzZXQgdXAgJDA6Ci0gICAgICBtX3N1YnNbMl0uZmlyc3QgPSBpOwotICAgICAgLy8gemVybyBvdXQgZXZlcnl0aGluZyBlbHNlOgotICAgICAgZm9yKHNpemVfdHlwZSBuID0gMzsgbiA8IG1fc3Vicy5zaXplKCk7ICsrbikKLSAgICAgIHsKLSAgICAgICAgIG1fc3Vic1tuXS5maXJzdCA9IG1fc3Vic1tuXS5zZWNvbmQgPSBtX3N1YnNbMF0uc2Vjb25kOwotICAgICAgICAgbV9zdWJzW25dLm1hdGNoZWQgPSBmYWxzZTsKLSAgICAgIH0KLSAgIH0KLSAgIHZvaWQgTkROQk9PU1RfUkVHRVhfQ0FMTCBzZXRfZmlyc3QoQmlkaUl0ZXJhdG9yIGksIHNpemVfdHlwZSBwb3MsIGJvb2wgZXNjYXBlX2sgPSBmYWxzZSkKLSAgIHsKLSAgICAgIE5ETkJPT1NUX0FTU0VSVChwb3MrMiA8IG1fc3Vicy5zaXplKCkpOwotICAgICAgaWYocG9zIHx8IGVzY2FwZV9rKQotICAgICAgewotICAgICAgICAgbV9zdWJzW3BvcysyXS5maXJzdCA9IGk7Ci0gICAgICAgICBpZihlc2NhcGVfaykKLSAgICAgICAgIHsKLSAgICAgICAgICAgIG1fc3Vic1sxXS5zZWNvbmQgPSBpOwotICAgICAgICAgICAgbV9zdWJzWzFdLm1hdGNoZWQgPSAobV9zdWJzWzFdLmZpcnN0ICE9IG1fc3Vic1sxXS5zZWNvbmQpOwotICAgICAgICAgfQotICAgICAgfQotICAgICAgZWxzZQotICAgICAgICAgc2V0X2ZpcnN0KGkpOwotICAgfQotICAgdm9pZCBORE5CT09TVF9SRUdFWF9DQUxMIG1heWJlX2Fzc2lnbihjb25zdCBtYXRjaF9yZXN1bHRzPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yPiYgbSk7Ci0KLSAgIHZvaWQgTkROQk9PU1RfUkVHRVhfQ0FMTCBzZXRfbmFtZWRfc3VicyhuZG5ib29zdDo6c2hhcmVkX3B0cjxuYW1lZF9zdWJfdHlwZT4gc3VicykKLSAgIHsKLSAgICAgIG1fbmFtZWRfc3VicyA9IHN1YnM7Ci0gICB9Ci0KLXByaXZhdGU6Ci0gICAvLwotICAgLy8gRXJyb3IgaGFuZGxlciBjYWxsZWQgd2hlbiBhbiB1bmluaXRpYWxpemVkIG1hdGNoX3Jlc3VsdHMgaXMgYWNjZXNzZWQ6Ci0gICAvLwotICAgc3RhdGljIHZvaWQgcmFpc2VfbG9naWNfZXJyb3IoKQotICAgewotICAgICAgc3RkOjpsb2dpY19lcnJvciBlKCJBdHRlbXB0IHRvIGFjY2VzcyBhbiB1bmluaXRpYWx6ZWQgbmRuYm9vc3Q6Om1hdGNoX3Jlc3VsdHM8PiBjbGFzcy4iKTsKLSAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oZSk7Ci0gICB9Ci0KLQotICAgdmVjdG9yX3R5cGUgICAgICAgICAgICBtX3N1YnM7ICAgICAgICAgICAgICAgICAgICAgIC8vIHN1YmV4cHJlc3Npb25zCi0gICBCaWRpSXRlcmF0b3IgICBtX2Jhc2U7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hlcmUgdGhlIHNlYXJjaCBzdGFydGVkIGZyb20KLSAgIHN1Yl9tYXRjaDxCaWRpSXRlcmF0b3I+IG1fbnVsbDsgICAgICAgICAgICAgICAgICAgICAvLyBhIG51bGwgbWF0Y2gKLSAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPG5hbWVkX3N1Yl90eXBlPiBtX25hbWVkX3N1YnM7ICAgICAvLyBTaGFyZWQgY29weSBvZiBuYW1lZCBzdWJzIGluIHRoZSByZWdleCBvYmplY3QKLSAgIGludCBtX2xhc3RfY2xvc2VkX3BhcmVuOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBMYXN0ICkgdG8gYmUgc2VlbiAtIHVzZWQgZm9yIGZvcm1hdHRpbmcKLSAgIGJvb2wgbV9pc19zaW5ndWxhcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUcnVlIGlmIG91ciBzdG9yZWQgaXRlcmF0b3JzIGFyZSBzaW5ndWxhcgotfTsKLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yPgotdm9pZCBORE5CT09TVF9SRUdFWF9DQUxMIG1hdGNoX3Jlc3VsdHM8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3I+OjptYXliZV9hc3NpZ24oY29uc3QgbWF0Y2hfcmVzdWx0czxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvcj4mIG0pCi17Ci0gICBpZihtX2lzX3Npbmd1bGFyKQotICAgewotICAgICAgKnRoaXMgPSBtOwotICAgICAgcmV0dXJuOwotICAgfQotICAgY29uc3RfaXRlcmF0b3IgcDEsIHAyOwotICAgcDEgPSBiZWdpbigpOwotICAgcDIgPSBtLmJlZ2luKCk7Ci0gICAvLwotICAgLy8gRGlzdGFuY2VzIGFyZSBtZWFzdXJlZCBmcm9tIHRoZSBzdGFydCBvZiAqdGhpcyogbWF0Y2gsIHVubGVzcyB0aGlzIGlzbid0Ci0gICAvLyBhIHZhbGlkIG1hdGNoIGluIHdoaWNoIGNhc2Ugd2UgdXNlIHRoZSBzdGFydCBvZiB0aGUgd2hvbGUgc2VxdWVuY2UuICBOb3RlIHRoYXQKLSAgIC8vIG5vIHN1YnNlcXVlbnQgbWF0Y2gtY2FuZGlkYXRlIGNhbiBldmVyIGJlIHRvIHRoZSBsZWZ0IG9mIHRoZSBmaXJzdCBtYXRjaCBmb3VuZC4KLSAgIC8vIFRoaXMgZW5zdXJlcyB0aGF0IHdoZW4gd2UgYXJlIHVzaW5nIGJpZGlyZWN0aW9uYWwgaXRlcmF0b3JzLCB0aGF0IGRpc3RhbmNlcyAKLSAgIC8vIG1lYXN1cmVkIGFyZSBhcyBzaG9ydCBhcyBwb3NzaWJsZSwgYW5kIHRoZXJlZm9yZSBhcyBlZmZpY2llbnQgYXMgcG9zc2libGUKLSAgIC8vIHRvIGNvbXB1dGUuICBGaW5hbGx5IG5vdGUgdGhhdCB3ZSBkb24ndCB1c2UgdGhlICJtYXRjaGVkIiBkYXRhIG1lbWJlciB0byB0ZXN0Ci0gICAvLyB3aGV0aGVyIGEgc3ViLWV4cHJlc3Npb24gaXMgYSB2YWxpZCBtYXRjaCwgYmVjYXVzZSBwYXJ0aWFsIG1hdGNoZXMgc2V0IHRoaXMKLSAgIC8vIHRvIGZhbHNlIGZvciBzdWItZXhwcmVzc2lvbiAwLgotICAgLy8KLSAgIEJpZGlJdGVyYXRvciBsX2VuZCA9IHRoaXMtPnN1ZmZpeCgpLnNlY29uZDsKLSAgIEJpZGlJdGVyYXRvciBsX2Jhc2UgPSAocDEtPmZpcnN0ID09IGxfZW5kKSA/IHRoaXMtPnByZWZpeCgpLmZpcnN0IDogKCp0aGlzKVswXS5maXJzdDsKLSAgIGRpZmZlcmVuY2VfdHlwZSBsZW4xID0gMDsKLSAgIGRpZmZlcmVuY2VfdHlwZSBsZW4yID0gMDsKLSAgIGRpZmZlcmVuY2VfdHlwZSBiYXNlMSA9IDA7Ci0gICBkaWZmZXJlbmNlX3R5cGUgYmFzZTIgPSAwOwotICAgc3RkOjpzaXplX3QgaTsKLSAgIGZvcihpID0gMDsgaSA8IHNpemUoKTsgKytpLCArK3AxLCArK3AyKQotICAgewotICAgICAgLy8KLSAgICAgIC8vIExlZnRtb3N0IHRha2VzIHByaW9yaXR5IG92ZXIgbG9uZ2VzdDsgaGFuZGxlIHNwZWNpYWwgY2FzZXMKLSAgICAgIC8vIHdoZXJlIGRpc3RhbmNlcyBuZWVkIG5vdCBiZSBjb21wdXRlZCBmaXJzdCAoYW4gb3B0aW1pc2F0aW9uCi0gICAgICAvLyBmb3IgYmlkaXJlY3Rpb25hbCBpdGVyYXRvcnM6IGVuc3VyZSB0aGF0IHdlIGRvbid0IGFjY2lkZW50bHkKLSAgICAgIC8vIGNvbXB1dGUgdGhlIGxlbmd0aCBvZiB0aGUgd2hvbGUgc2VxdWVuY2UsIGFzIHRoaXMgY2FuIGJlIHJlYWxseQotICAgICAgLy8gZXhwZW5zaXZlKS4KLSAgICAgIC8vCi0gICAgICBpZihwMS0+Zmlyc3QgPT0gbF9lbmQpCi0gICAgICB7Ci0gICAgICAgICBpZihwMi0+Zmlyc3QgIT0gbF9lbmQpCi0gICAgICAgICB7Ci0gICAgICAgICAgICAvLyBwMiBtdXN0IGJlIGJldHRlciB0aGFuIHAxLCBhbmQgbm8gbmVlZCB0byBjYWxjdWxhdGUKLSAgICAgICAgICAgIC8vIGFjdHVhbCBkaXN0YW5jZXM6Ci0gICAgICAgICAgICBiYXNlMSA9IDE7Ci0gICAgICAgICAgICBiYXNlMiA9IDA7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgIH0KLSAgICAgICAgIGVsc2UKLSAgICAgICAgIHsKLSAgICAgICAgICAgIC8vICpwMSBhbmQgKnAyIGFyZSBlaXRoZXIgdW5tYXRjaGVkIG9yIG1hdGNoIGVuZC1vZiBzZXF1ZW5jZSwKLSAgICAgICAgICAgIC8vIGVpdGhlciB3YXkgbm8gbmVlZCB0byBjYWxjdWxhdGUgZGlzdGFuY2VzOgotICAgICAgICAgICAgaWYoKHAxLT5tYXRjaGVkID09IGZhbHNlKSAmJiAocDItPm1hdGNoZWQgPT0gdHJ1ZSkpCi0gICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGlmKChwMS0+bWF0Y2hlZCA9PSB0cnVlKSAmJiAocDItPm1hdGNoZWQgPT0gZmFsc2UpKQotICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmKHAyLT5maXJzdCA9PSBsX2VuZCkKLSAgICAgIHsKLSAgICAgICAgIC8vIHAxIGJldHRlciB0aGFuIHAyLCBhbmQgbm8gbmVlZCB0byBjYWxjdWxhdGUgZGlzdGFuY2VzOgotICAgICAgICAgcmV0dXJuOwotICAgICAgfQotICAgICAgYmFzZTEgPSA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmRpc3RhbmNlKGxfYmFzZSwgcDEtPmZpcnN0KTsKLSAgICAgIGJhc2UyID0gOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpkaXN0YW5jZShsX2Jhc2UsIHAyLT5maXJzdCk7Ci0gICAgICBORE5CT09TVF9BU1NFUlQoYmFzZTEgPj0gMCk7Ci0gICAgICBORE5CT09TVF9BU1NFUlQoYmFzZTIgPj0gMCk7Ci0gICAgICBpZihiYXNlMSA8IGJhc2UyKSByZXR1cm47Ci0gICAgICBpZihiYXNlMiA8IGJhc2UxKSBicmVhazsKLQotICAgICAgbGVuMSA9IDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6ZGlzdGFuY2UoKEJpZGlJdGVyYXRvcilwMS0+Zmlyc3QsIChCaWRpSXRlcmF0b3IpcDEtPnNlY29uZCk7Ci0gICAgICBsZW4yID0gOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpkaXN0YW5jZSgoQmlkaUl0ZXJhdG9yKXAyLT5maXJzdCwgKEJpZGlJdGVyYXRvcilwMi0+c2Vjb25kKTsKLSAgICAgIE5ETkJPT1NUX0FTU0VSVChsZW4xID49IDApOwotICAgICAgTkROQk9PU1RfQVNTRVJUKGxlbjIgPj0gMCk7Ci0gICAgICBpZigobGVuMSAhPSBsZW4yKSB8fCAoKHAxLT5tYXRjaGVkID09IGZhbHNlKSAmJiAocDItPm1hdGNoZWQgPT0gdHJ1ZSkpKQotICAgICAgICAgYnJlYWs7Ci0gICAgICBpZigocDEtPm1hdGNoZWQgPT0gdHJ1ZSkgJiYgKHAyLT5tYXRjaGVkID09IGZhbHNlKSkKLSAgICAgICAgIHJldHVybjsKLSAgIH0KLSAgIGlmKGkgPT0gc2l6ZSgpKQotICAgICAgcmV0dXJuOwotICAgaWYoYmFzZTIgPCBiYXNlMSkKLSAgICAgICp0aGlzID0gbTsKLSAgIGVsc2UgaWYoKGxlbjIgPiBsZW4xKSB8fCAoKHAxLT5tYXRjaGVkID09IGZhbHNlKSAmJiAocDItPm1hdGNoZWQgPT0gdHJ1ZSkpICkKLSAgICAgICp0aGlzID0gbTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yPgotdm9pZCBzd2FwKG1hdGNoX3Jlc3VsdHM8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3I+JiBhLCBtYXRjaF9yZXN1bHRzPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yPiYgYikKLXsKLSAgIGEuc3dhcChiKTsKLX0KLQotI2lmbmRlZiBORE5CT09TVF9OT19TVERfTE9DQUxFCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cywgY2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3I+Ci1zdGQ6OmJhc2ljX29zdHJlYW08Y2hhclQsIHRyYWl0cz4mCi0gICBvcGVyYXRvciA8PCAoc3RkOjpiYXNpY19vc3RyZWFtPGNoYXJULCB0cmFpdHM+JiBvcywKLSAgICAgICAgICAgICAgICBjb25zdCBtYXRjaF9yZXN1bHRzPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yPiYgcykKLXsKLSAgIHJldHVybiAob3MgPDwgcy5zdHIoKSk7Ci19Ci0jZWxzZQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yPgotc3RkOjpvc3RyZWFtJiBvcGVyYXRvciA8PCAoc3RkOjpvc3RyZWFtJiBvcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hdGNoX3Jlc3VsdHM8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3I+JiBzKQotewotICAgcmV0dXJuIChvcyA8PCBzLnN0cigpKTsKLX0KLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1NVRkZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0jZW5kaWYKLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L21lbV9ibG9ja19jYWNoZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L21lbV9ibG9ja19jYWNoZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZlNzFhM2IuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9tZW1fYmxvY2tfY2FjaGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTkgKzAsMCBAQAotIC8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDIKLSAqIEpvaG4gTWFkZG9jawotICoKLSAqIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotICogQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0gKiBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICovCi0KLSAvKgotICAqICAgTE9DQVRJT046ICAgIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLSAgKiAgIEZJTEUgICAgICAgICBtZW1fYmxvY2tfY2FjaGUuaHBwCi0gICogICBWRVJTSU9OICAgICAgc2VlIDxuZG5ib29zdC92ZXJzaW9uLmhwcD4KLSAgKiAgIERFU0NSSVBUSU9OOiBtZW1vcnkgYmxvY2sgY2FjaGUgdXNlZCBieSB0aGUgbm9uLXJlY3Vyc2l2ZSBtYXRjaGVyLgotICAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1Y0X01FTV9CTE9DS19DQUNIRV9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfVjRfTUVNX0JMT0NLX0NBQ0hFX0hQUAotCi0jaW5jbHVkZSA8bmV3PgotI2lmZGVmIE5ETkJPT1NUX0hBU19USFJFQURTCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvcGVuZGluZy9zdGF0aWNfbXV0ZXguaHBwPgotI2VuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1BSRUZJWAotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdHsKLW5hbWVzcGFjZSByZV9kZXRhaWx7Ci0KLXN0cnVjdCBtZW1fYmxvY2tfbm9kZQotewotICAgbWVtX2Jsb2NrX25vZGUqIG5leHQ7Ci19OwotCi1zdHJ1Y3QgbWVtX2Jsb2NrX2NhY2hlCi17Ci0gICAvLyB0aGlzIG1lbWJlciBoYXMgdG8gYmUgc3RhdGljYWxseSBpbml0aWFsc2VkOgotICAgbWVtX2Jsb2NrX25vZGUqIG5leHQ7Ci0gICB1bnNpZ25lZCBjYWNoZWRfYmxvY2tzOwotI2lmZGVmIE5ETkJPT1NUX0hBU19USFJFQURTCi0gICBuZG5ib29zdDo6c3RhdGljX211dGV4IG11dDsKLSNlbmRpZgotCi0gICB+bWVtX2Jsb2NrX2NhY2hlKCkKLSAgIHsKLSAgICAgIHdoaWxlKG5leHQpCi0gICAgICB7Ci0gICAgICAgICBtZW1fYmxvY2tfbm9kZSogb2xkID0gbmV4dDsKLSAgICAgICAgIG5leHQgPSBuZXh0LT5uZXh0OwotICAgICAgICAgOjpvcGVyYXRvciBkZWxldGUob2xkKTsKLSAgICAgIH0KLSAgIH0KLSAgIHZvaWQqIGdldCgpCi0gICB7Ci0jaWZkZWYgTkROQk9PU1RfSEFTX1RIUkVBRFMKLSAgICAgIG5kbmJvb3N0OjpzdGF0aWNfbXV0ZXg6OnNjb3BlZF9sb2NrIGcobXV0KTsKLSNlbmRpZgotICAgICBpZihuZXh0KQotICAgICAgewotICAgICAgICAgbWVtX2Jsb2NrX25vZGUqIHJlc3VsdCA9IG5leHQ7Ci0gICAgICAgICBuZXh0ID0gbmV4dC0+bmV4dDsKLSAgICAgICAgIC0tY2FjaGVkX2Jsb2NrczsKLSAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gOjpvcGVyYXRvciBuZXcoTkROQk9PU1RfUkVHRVhfQkxPQ0tTSVpFKTsKLSAgIH0KLSAgIHZvaWQgcHV0KHZvaWQqIHApCi0gICB7Ci0jaWZkZWYgTkROQk9PU1RfSEFTX1RIUkVBRFMKLSAgICAgIG5kbmJvb3N0OjpzdGF0aWNfbXV0ZXg6OnNjb3BlZF9sb2NrIGcobXV0KTsKLSNlbmRpZgotICAgICAgaWYoY2FjaGVkX2Jsb2NrcyA+PSBORE5CT09TVF9SRUdFWF9NQVhfQ0FDSEVfQkxPQ0tTKQotICAgICAgewotICAgICAgICAgOjpvcGVyYXRvciBkZWxldGUocCk7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgICBtZW1fYmxvY2tfbm9kZSogb2xkID0gc3RhdGljX2Nhc3Q8bWVtX2Jsb2NrX25vZGUqPihwKTsKLSAgICAgICAgIG9sZC0+bmV4dCA9IG5leHQ7Ci0gICAgICAgICBuZXh0ID0gb2xkOwotICAgICAgICAgKytjYWNoZWRfYmxvY2tzOwotICAgICAgfQotICAgfQotfTsKLQotZXh0ZXJuIG1lbV9ibG9ja19jYWNoZSBibG9ja19jYWNoZTsKLQotfQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfU1VGRklYCi0jZW5kaWYKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcGVybF9tYXRjaGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcGVybF9tYXRjaGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjRjZjBhZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3BlcmxfbWF0Y2hlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1ODcgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDIKLSAqIEpvaG4gTWFkZG9jawotICoKLSAqIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotICogQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0gKiBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICovCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfTUFUQ0hFUl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfTUFUQ0hFUl9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3Y0L2l0ZXJhdG9yX2NhdGVnb3J5LmhwcD4KLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1BSRUZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotIyAgcHJhZ21hIHdhcm5pbmcocHVzaCkKLSMgIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ4MDApCi0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0ewotbmFtZXNwYWNlIHJlX2RldGFpbHsKLQotLy8KLS8vIGVycm9yIGNoZWNraW5nIEFQSToKLS8vCi1ORE5CT09TVF9SRUdFWF9ERUNMIHZvaWQgTkROQk9PU1RfUkVHRVhfQ0FMTCB2ZXJpZnlfb3B0aW9ucyhuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjpzeW50YXhfb3B0aW9uX3R5cGUgZWYsIG1hdGNoX2ZsYWdfdHlwZSBtZik7Ci0vLwotLy8gZnVuY3Rpb24gY2FuX3N0YXJ0OgotLy8KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLWlubGluZSBib29sIGNhbl9zdGFydChjaGFyVCBjLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBtYXAsIHVuc2lnbmVkIGNoYXIgbWFzaykKLXsKLSAgIHJldHVybiAoKGMgPCBzdGF0aWNfY2FzdDxjaGFyVD4oMCkpID8gdHJ1ZSA6ICgoYyA+PSBzdGF0aWNfY2FzdDxjaGFyVD4oMSA8PCBDSEFSX0JJVCkpID8gdHJ1ZSA6IG1hcFtjXSAmIG1hc2spKTsKLX0KLWlubGluZSBib29sIGNhbl9zdGFydChjaGFyIGMsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIG1hcCwgdW5zaWduZWQgY2hhciBtYXNrKQotewotICAgcmV0dXJuIG1hcFsodW5zaWduZWQgY2hhciljXSAmIG1hc2s7Ci19Ci1pbmxpbmUgYm9vbCBjYW5fc3RhcnQoc2lnbmVkIGNoYXIgYywgY29uc3QgdW5zaWduZWQgY2hhciogbWFwLCB1bnNpZ25lZCBjaGFyIG1hc2spCi17Ci0gICByZXR1cm4gbWFwWyh1bnNpZ25lZCBjaGFyKWNdICYgbWFzazsKLX0KLWlubGluZSBib29sIGNhbl9zdGFydCh1bnNpZ25lZCBjaGFyIGMsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIG1hcCwgdW5zaWduZWQgY2hhciBtYXNrKQotewotICAgcmV0dXJuIG1hcFtjXSAmIG1hc2s7Ci19Ci1pbmxpbmUgYm9vbCBjYW5fc3RhcnQodW5zaWduZWQgc2hvcnQgYywgY29uc3QgdW5zaWduZWQgY2hhciogbWFwLCB1bnNpZ25lZCBjaGFyIG1hc2spCi17Ci0gICByZXR1cm4gKChjID49ICgxIDw8IENIQVJfQklUKSkgPyB0cnVlIDogbWFwW2NdICYgbWFzayk7Ci19Ci0jaWYgIWRlZmluZWQoX19ocHV4KSAmJiAhZGVmaW5lZChfX1dJTlNDV19fKS8vIFdDSEFSX01JTiBub3QgdXNhYmxlIGluIHBwLWRpcmVjdGl2ZXMuCi0jaWYgZGVmaW5lZChXQ0hBUl9NSU4pICYmIChXQ0hBUl9NSU4gPT0gMCkgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fSU5UUklOU0lDX1dDSEFSX1QpCi1pbmxpbmUgYm9vbCBjYW5fc3RhcnQod2NoYXJfdCBjLCBjb25zdCB1bnNpZ25lZCBjaGFyKiBtYXAsIHVuc2lnbmVkIGNoYXIgbWFzaykKLXsKLSAgIHJldHVybiAoKGMgPj0gc3RhdGljX2Nhc3Q8d2NoYXJfdD4oMXUgPDwgQ0hBUl9CSVQpKSA/IHRydWUgOiBtYXBbY10gJiBtYXNrKTsKLX0KLSNlbmRpZgotI2VuZGlmCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fSU5UUklOU0lDX1dDSEFSX1QpCi1pbmxpbmUgYm9vbCBjYW5fc3RhcnQodW5zaWduZWQgaW50IGMsIGNvbnN0IHVuc2lnbmVkIGNoYXIqIG1hcCwgdW5zaWduZWQgY2hhciBtYXNrKQotewotICAgcmV0dXJuICgoKGMgPj0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PigxdSA8PCBDSEFSX0JJVCkpID8gdHJ1ZSA6IG1hcFtjXSAmIG1hc2spKTsKLX0KLSNlbmRpZgotCi0KLS8vCi0vLyBVbmZvcnR1bmF0ZWx5IFJvZ3VlIFdhdmVzIHN0YW5kYXJkIGxpYnJhcnkgYXBwZWFycyB0byBoYXZlIGEgYnVnCi0vLyBpbiBzdGQ6OmJhc2ljX3N0cmluZzo6Y29tcGFyZSB0aGF0IHJlc3VsdHMgaW4gZXJvbmVvdXMgYW5zd2VycwotLy8gaW4gc29tZSBjYXNlcyAodGVzdGVkIHdpdGggQm9ybGFuZCBDKysgNS4xLCBSb2d1ZSBXYXZlIGxpYiB2ZXJzaW9uCi0vLyAweDAyMDEwMSkgdGhlIHRlc3QgY2FzZSB3YXM6Ci0vLyB7MzkxMzUsMH0gPCB7MHhmZiwwfQotLy8gd2hpY2ggc3VjY2VlZHMgd2hlbiBpdCBzaG91bGQgbm90LgotLy8KLSNpZm5kZWYgX1JXU1REX1ZFUgotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMxMCkKLXRlbXBsYXRlIDxjbGFzcyBDLCBjbGFzcyBULCBjbGFzcyBBPgotaW5saW5lIGludCBzdHJpbmdfY29tcGFyZShjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzxDLFQsQT4mIHMsIGNvbnN0IEMqIHApCi17IAotICAgaWYoMCA9PSAqcCkKLSAgIHsKLSAgICAgIGlmKHMuZW1wdHkoKSB8fCAoKHMuc2l6ZSgpID09IDEpICYmIChzWzBdID09IDApKSkKLSAgICAgICAgIHJldHVybiAwOwotICAgfQotICAgcmV0dXJuIHMuY29tcGFyZShwKTsgCi19Ci0jZW5kaWYKLSNlbHNlCi0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzEwKQotdGVtcGxhdGUgPGNsYXNzIEMsIGNsYXNzIFQsIGNsYXNzIEE+Ci1pbmxpbmUgaW50IHN0cmluZ19jb21wYXJlKGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPEMsVCxBPiYgcywgY29uc3QgQyogcCkKLXsgCi0gICBpZigwID09ICpwKQotICAgewotICAgICAgaWYocy5lbXB0eSgpIHx8ICgocy5zaXplKCkgPT0gMSkgJiYgKHNbMF0gPT0gMCkpKQotICAgICAgICAgcmV0dXJuIDA7Ci0gICB9Ci0gICByZXR1cm4gcy5jb21wYXJlKHApOyAKLX0KLSNlbmRpZgotaW5saW5lIGludCBzdHJpbmdfY29tcGFyZShjb25zdCBzdGQ6OnN0cmluZyYgcywgY29uc3QgY2hhciogcCkKLXsgcmV0dXJuIHN0ZDo6c3RyY21wKHMuY19zdHIoKSwgcCk7IH0KLSMgaWZuZGVmIE5ETkJPT1NUX05PX1dSRUdFWAotaW5saW5lIGludCBzdHJpbmdfY29tcGFyZShjb25zdCBzdGQ6OndzdHJpbmcmIHMsIGNvbnN0IHdjaGFyX3QqIHApCi17IHJldHVybiBzdGQ6Ondjc2NtcChzLmNfc3RyKCksIHApOyB9Ci0jZW5kaWYKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFNlcSwgY2xhc3MgQz4KLWlubGluZSBpbnQgc3RyaW5nX2NvbXBhcmUoY29uc3QgU2VxJiBzLCBjb25zdCBDKiBwKQotewotICAgc3RkOjpzaXplX3QgaSA9IDA7Ci0gICB3aGlsZSgoaSA8IHMuc2l6ZSgpKSAmJiAocFtpXSA9PSBzW2ldKSkKLSAgIHsKLSAgICAgICsraTsKLSAgIH0KLSAgIHJldHVybiAoaSA9PSBzLnNpemUoKSkgPyAtcFtpXSA6IHNbaV0gLSBwW2ldOwotfQotIyBkZWZpbmUgU1RSX0NPTVAocyxwKSBzdHJpbmdfY29tcGFyZShzLHApCi0KLXRlbXBsYXRlPGNsYXNzIGNoYXJUPgotaW5saW5lIGNvbnN0IGNoYXJUKiByZV9za2lwX3Bhc3RfbnVsbChjb25zdCBjaGFyVCogcCkKLXsKLSAgd2hpbGUgKCpwICE9IHN0YXRpY19jYXN0PGNoYXJUPigwKSkgKytwOwotICByZXR1cm4gKytwOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgaXRlcmF0b3IsIGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHNfdHlwZSwgY2xhc3MgY2hhcl9jbGFzc1Q+Ci1pdGVyYXRvciBORE5CT09TVF9SRUdFWF9DQUxMIHJlX2lzX3NldF9tZW1iZXIoaXRlcmF0b3IgbmV4dCwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZXJhdG9yIGxhc3QsIAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZV9zZXRfbG9uZzxjaGFyX2NsYXNzVD4qIHNldF8sIAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZWdleF9kYXRhPGNoYXJULCB0cmFpdHNfdHlwZT4mIGUsIGJvb2wgaWNhc2UpCi17ICAgCi0gICBjb25zdCBjaGFyVCogcCA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhclQqPihzZXRfKzEpOwotICAgaXRlcmF0b3IgcHRyOwotICAgdW5zaWduZWQgaW50IGk7Ci0gICAvL2Jvb2wgaWNhc2UgPSBlLm1fZmxhZ3MgJiByZWdleF9jb25zdGFudHM6OmljYXNlOwotCi0gICBpZihuZXh0ID09IGxhc3QpIHJldHVybiBuZXh0OwotCi0gICB0eXBlZGVmIHR5cGVuYW1lIHRyYWl0c190eXBlOjpzdHJpbmdfdHlwZSB0cmFpdHNfc3RyaW5nX3R5cGU7Ci0gICBjb25zdCA6Om5kbmJvb3N0OjpyZWdleF90cmFpdHNfd3JhcHBlcjx0cmFpdHNfdHlwZT4mIHRyYWl0c19pbnN0ID0gKihlLm1fcHRyYWl0cyk7Ci0gICAKLSAgIC8vIGR3YSA5LzEzLzAwIHN1cHByZXNzIGluY29ycmVjdCBNU1ZDIHdhcm5pbmcgLSBpdCBjbGFpbXMgdGhpcyBpcyBuZXZlcgotICAgLy8gcmVmZXJlbmNlZAotICAgKHZvaWQpdHJhaXRzX2luc3Q7Ci0KLSAgIC8vIHRyeSBhbmQgbWF0Y2ggYSBzaW5nbGUgY2hhcmFjdGVyLCBjb3VsZCBiZSBhIG11bHRpLWNoYXJhY3RlcgotICAgLy8gY29sbGF0aW5nIGVsZW1lbnQuLi4KLSAgIGZvcihpID0gMDsgaSA8IHNldF8tPmNzaW5nbGVzOyArK2kpCi0gICB7Ci0gICAgICBwdHIgPSBuZXh0OwotICAgICAgaWYoKnAgPT0gc3RhdGljX2Nhc3Q8Y2hhclQ+KDApKQotICAgICAgewotICAgICAgICAgLy8gdHJlYXQgbnVsbCBzdHJpbmcgYXMgc3BlY2lhbCBjYXNlOgotICAgICAgICAgaWYodHJhaXRzX2luc3QudHJhbnNsYXRlKCpwdHIsIGljYXNlKSAhPSAqcCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIHdoaWxlKCpwID09IHN0YXRpY19jYXN0PGNoYXJUPigwKSkrK3A7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgIH0KLSAgICAgICAgIHJldHVybiBzZXRfLT5pc25vdCA/IG5leHQgOiAocHRyID09IG5leHQpID8gKytuZXh0IDogcHRyOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICAgd2hpbGUoKnAgJiYgKHB0ciAhPSBsYXN0KSkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIGlmKHRyYWl0c19pbnN0LnRyYW5zbGF0ZSgqcHRyLCBpY2FzZSkgIT0gKnApCi0gICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICsrcDsKLSAgICAgICAgICAgICsrcHRyOwotICAgICAgICAgfQotCi0gICAgICAgICBpZigqcCA9PSBzdGF0aWNfY2FzdDxjaGFyVD4oMCkpIC8vIGlmIG51bGwgd2UndmUgbWF0Y2hlZAotICAgICAgICAgICAgcmV0dXJuIHNldF8tPmlzbm90ID8gbmV4dCA6IChwdHIgPT0gbmV4dCkgPyArK25leHQgOiBwdHI7Ci0KLSAgICAgICAgIHAgPSByZV9za2lwX3Bhc3RfbnVsbChwKTsgICAgIC8vIHNraXAgbnVsbAotICAgICAgfQotICAgfQotCi0gICBjaGFyVCBjb2wgPSB0cmFpdHNfaW5zdC50cmFuc2xhdGUoKm5leHQsIGljYXNlKTsKLQotCi0gICBpZihzZXRfLT5jcmFuZ2VzIHx8IHNldF8tPmNlcXVpdmFsZW50cykKLSAgIHsKLSAgICAgIHRyYWl0c19zdHJpbmdfdHlwZSBzMTsKLSAgICAgIC8vCi0gICAgICAvLyB0cnkgYW5kIG1hdGNoIGEgcmFuZ2UsIE5CIG9ubHkgYSBzaW5nbGUgY2hhcmFjdGVyIGNhbiBtYXRjaAotICAgICAgaWYoc2V0Xy0+Y3JhbmdlcykKLSAgICAgIHsKLSAgICAgICAgIGlmKChlLm1fZmxhZ3MgJiByZWdleF9jb25zdGFudHM6OmNvbGxhdGUpID09IDApCi0gICAgICAgICAgICBzMS5hc3NpZ24oMSwgY29sKTsKLSAgICAgICAgIGVsc2UKLSAgICAgICAgIHsKLSAgICAgICAgICAgIGNoYXJUIGFbMl0gPSB7IGNvbCwgY2hhclQoMCksIH07Ci0gICAgICAgICAgICBzMSA9IHRyYWl0c19pbnN0LnRyYW5zZm9ybShhLCBhICsgMSk7Ci0gICAgICAgICB9Ci0gICAgICAgICBmb3IoaSA9IDA7IGkgPCBzZXRfLT5jcmFuZ2VzOyArK2kpCi0gICAgICAgICB7Ci0gICAgICAgICAgICBpZihTVFJfQ09NUChzMSwgcCkgPj0gMCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIGRveyArK3A7IH13aGlsZSgqcCk7Ci0gICAgICAgICAgICAgICArK3A7Ci0gICAgICAgICAgICAgICBpZihTVFJfQ09NUChzMSwgcCkgPD0gMCkKLSAgICAgICAgICAgICAgICAgIHJldHVybiBzZXRfLT5pc25vdCA/IG5leHQgOiArK25leHQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAvLyBza2lwIGZpcnN0IHN0cmluZwotICAgICAgICAgICAgICAgZG97ICsrcDsgfXdoaWxlKCpwKTsKLSAgICAgICAgICAgICAgICsrcDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8vIHNraXAgc2Vjb25kIHN0cmluZwotICAgICAgICAgICAgZG97ICsrcDsgfXdoaWxlKCpwKTsKLSAgICAgICAgICAgICsrcDsKLSAgICAgICAgIH0KLSAgICAgIH0KLSAgICAgIC8vCi0gICAgICAvLyB0cnkgYW5kIG1hdGNoIGFuIGVxdWl2YWxlbmNlIGNsYXNzLCBOQiBvbmx5IGEgc2luZ2xlIGNoYXJhY3RlciBjYW4gbWF0Y2gKLSAgICAgIGlmKHNldF8tPmNlcXVpdmFsZW50cykKLSAgICAgIHsKLSAgICAgICAgIGNoYXJUIGFbMl0gPSB7IGNvbCwgY2hhclQoMCksIH07Ci0gICAgICAgICBzMSA9IHRyYWl0c19pbnN0LnRyYW5zZm9ybV9wcmltYXJ5KGEsIGEgKzEpOwotICAgICAgICAgZm9yKGkgPSAwOyBpIDwgc2V0Xy0+Y2VxdWl2YWxlbnRzOyArK2kpCi0gICAgICAgICB7Ci0gICAgICAgICAgICBpZihTVFJfQ09NUChzMSwgcCkgPT0gMCkKLSAgICAgICAgICAgICAgIHJldHVybiBzZXRfLT5pc25vdCA/IG5leHQgOiArK25leHQ7Ci0gICAgICAgICAgICAvLyBza2lwIHN0cmluZwotICAgICAgICAgICAgZG97ICsrcDsgfXdoaWxlKCpwKTsKLSAgICAgICAgICAgICsrcDsKLSAgICAgICAgIH0KLSAgICAgIH0KLSAgIH0KLSAgIGlmKHRyYWl0c19pbnN0LmlzY3R5cGUoY29sLCBzZXRfLT5jY2xhc3NlcykgPT0gdHJ1ZSkKLSAgICAgIHJldHVybiBzZXRfLT5pc25vdCA/IG5leHQgOiArK25leHQ7Ci0gICBpZigoc2V0Xy0+Y25jbGFzc2VzICE9IDApICYmICh0cmFpdHNfaW5zdC5pc2N0eXBlKGNvbCwgc2V0Xy0+Y25jbGFzc2VzKSA9PSBmYWxzZSkpCi0gICAgICByZXR1cm4gc2V0Xy0+aXNub3QgPyBuZXh0IDogKytuZXh0OwotICAgcmV0dXJuIHNldF8tPmlzbm90ID8gKytuZXh0IDogbmV4dDsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvcj4KLWNsYXNzIHJlcGVhdGVyX2NvdW50Ci17Ci0gICByZXBlYXRlcl9jb3VudCoqIHN0YWNrOwotICAgcmVwZWF0ZXJfY291bnQqIG5leHQ7Ci0gICBpbnQgc3RhdGVfaWQ7Ci0gICBzdGQ6OnNpemVfdCBjb3VudDsgICAgICAgIC8vIHRoZSBudW1iZXIgb2YgaXRlcmF0aW9ucyBzbyBmYXIKLSAgIEJpZGlJdGVyYXRvciBzdGFydF9wb3M7ICAgLy8gd2hlcmUgdGhlIGxhc3QgcmVwZWF0IHN0YXJ0ZWQKLXB1YmxpYzoKLSAgIHJlcGVhdGVyX2NvdW50KHJlcGVhdGVyX2NvdW50KiogcykKLSAgIHsKLSAgICAgIHN0YWNrID0gczsKLSAgICAgIG5leHQgPSAwOwotICAgICAgc3RhdGVfaWQgPSAtMTsKLSAgICAgIGNvdW50ID0gMDsKLSAgIH0KLSAgIHJlcGVhdGVyX2NvdW50KGludCBpLCByZXBlYXRlcl9jb3VudCoqIHMsIEJpZGlJdGVyYXRvciBzdGFydCkKLSAgICAgIDogc3RhcnRfcG9zKHN0YXJ0KQotICAgewotICAgICAgc3RhdGVfaWQgPSBpOwotICAgICAgc3RhY2sgPSBzOwotICAgICAgbmV4dCA9ICpzdGFjazsKLSAgICAgICpzdGFjayA9IHRoaXM7Ci0gICAgICBpZihzdGF0ZV9pZCA+IG5leHQtPnN0YXRlX2lkKQotICAgICAgICAgY291bnQgPSAwOwotICAgICAgZWxzZQotICAgICAgewotICAgICAgICAgcmVwZWF0ZXJfY291bnQqIHAgPSBuZXh0OwotICAgICAgICAgd2hpbGUocCAmJiAocC0+c3RhdGVfaWQgIT0gc3RhdGVfaWQpKQotICAgICAgICAgICAgcCA9IHAtPm5leHQ7Ci0gICAgICAgICBpZihwKQotICAgICAgICAgewotICAgICAgICAgICAgY291bnQgPSBwLT5jb3VudDsKLSAgICAgICAgICAgIHN0YXJ0X3BvcyA9IHAtPnN0YXJ0X3BvczsKLSAgICAgICAgIH0KLSAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNvdW50ID0gMDsKLSAgICAgIH0KLSAgIH0KLSAgIH5yZXBlYXRlcl9jb3VudCgpCi0gICB7Ci0gICAgICBpZihuZXh0KQotICAgICAgICAgKnN0YWNrID0gbmV4dDsKLSAgIH0KLSAgIHN0ZDo6c2l6ZV90IGdldF9jb3VudCgpIHsgcmV0dXJuIGNvdW50OyB9Ci0gICBpbnQgZ2V0X2lkKCkgeyByZXR1cm4gc3RhdGVfaWQ7IH0KLSAgIHN0ZDo6c2l6ZV90IG9wZXJhdG9yKysoKSB7IHJldHVybiArK2NvdW50OyB9Ci0gICBib29sIGNoZWNrX251bGxfcmVwZWF0KGNvbnN0IEJpZGlJdGVyYXRvciYgcG9zLCBzdGQ6OnNpemVfdCBtYXgpCi0gICB7Ci0gICAgICAvLyB0aGlzIGlzIGNhbGxlZCB3aGVuIHdlIGFyZSBhYm91dCB0byBzdGFydCBhIG5ldyByZXBlYXQsCi0gICAgICAvLyBpZiB0aGUgbGFzdCBvbmUgd2FzIE5VTEwgbW92ZSBvdXIgY291bnQgdG8gbWF4LAotICAgICAgLy8gb3RoZXJ3aXNlIHNhdmUgdGhlIGN1cnJlbnQgcG9zaXRpb24uCi0gICAgICBib29sIHJlc3VsdCA9IChjb3VudCA9PSAwKSA/IGZhbHNlIDogKHBvcyA9PSBzdGFydF9wb3MpOwotICAgICAgaWYocmVzdWx0KQotICAgICAgICAgY291bnQgPSBtYXg7Ci0gICAgICBlbHNlCi0gICAgICAgICBzdGFydF9wb3MgPSBwb3M7Ci0gICAgICByZXR1cm4gcmVzdWx0OwotICAgfQotfTsKLQotc3RydWN0IHNhdmVkX3N0YXRlOwotCi1lbnVtIHNhdmVkX3N0YXRlX3R5cGUKLXsKLSAgIHNhdmVkX3R5cGVfZW5kID0gMCwKLSAgIHNhdmVkX3R5cGVfcGFyZW4gPSAxLAotICAgc2F2ZWRfdHlwZV9yZWN1cnNlID0gMiwKLSAgIHNhdmVkX3R5cGVfYXNzZXJ0aW9uID0gMywKLSAgIHNhdmVkX3N0YXRlX2FsdCA9IDQsCi0gICBzYXZlZF9zdGF0ZV9yZXBlYXRlcl9jb3VudCA9IDUsCi0gICBzYXZlZF9zdGF0ZV9leHRyYV9ibG9jayA9IDYsCi0gICBzYXZlZF9zdGF0ZV9ncmVlZHlfc2luZ2xlX3JlcGVhdCA9IDcsCi0gICBzYXZlZF9zdGF0ZV9yZXBfc2xvd19kb3QgPSA4LAotICAgc2F2ZWRfc3RhdGVfcmVwX2Zhc3RfZG90ID0gOSwKLSAgIHNhdmVkX3N0YXRlX3JlcF9jaGFyID0gMTAsCi0gICBzYXZlZF9zdGF0ZV9yZXBfc2hvcnRfc2V0ID0gMTEsCi0gICBzYXZlZF9zdGF0ZV9yZXBfbG9uZ19zZXQgPSAxMiwKLSAgIHNhdmVkX3N0YXRlX25vbl9ncmVlZHlfbG9uZ19yZXBlYXQgPSAxMywgCi0gICBzYXZlZF9zdGF0ZV9jb3VudCA9IDE0Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUmVzdWx0cz4KLXN0cnVjdCByZWN1cnNpb25faW5mbwotewotICAgdHlwZWRlZiB0eXBlbmFtZSBSZXN1bHRzOjp2YWx1ZV90eXBlIHZhbHVlX3R5cGU7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHZhbHVlX3R5cGU6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotICAgaW50IGlkeDsKLSAgIGNvbnN0IHJlX3N5bnRheF9iYXNlKiBwcmV0dXJuX2FkZHJlc3M7Ci0gICBSZXN1bHRzIHJlc3VsdHM7Ci0gICByZXBlYXRlcl9jb3VudDxpdGVyYXRvcj4qIHJlcGVhdGVyX3N0YWNrOwotfTsKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGUgOiA0MjUxIDQyMzEpCi0jICBpZiBORE5CT09TVF9NU1ZDIDwgMTYwMAotIyAgICAgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZSA6IDQ2NjApCi0jICBlbmRpZgotI2VuZGlmCi0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotY2xhc3MgcGVybF9tYXRjaGVyCi17Ci1wdWJsaWM6Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHRyYWl0czo6Y2hhcl90eXBlIGNoYXJfdHlwZTsKLSAgIHR5cGVkZWYgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+IHNlbGZfdHlwZTsKLSAgIHR5cGVkZWYgYm9vbCAoc2VsZl90eXBlOjoqbWF0Y2hlcl9wcm9jX3R5cGUpKHZvaWQpOwotICAgdHlwZWRlZiBzdGQ6OnNpemVfdCB0cmFpdHNfc2l6ZV90eXBlOwotICAgdHlwZWRlZiB0eXBlbmFtZSBpc19ieXRlPGNoYXJfdHlwZT46OndpZHRoX3R5cGUgd2lkdGhfdHlwZTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgcmVnZXhfaXRlcmF0b3JfdHJhaXRzPEJpZGlJdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZSBkaWZmZXJlbmNlX3R5cGU7Ci0gICB0eXBlZGVmIG1hdGNoX3Jlc3VsdHM8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3I+IHJlc3VsdHNfdHlwZTsKLQotICAgcGVybF9tYXRjaGVyKEJpZGlJdGVyYXRvciBmaXJzdCwgQmlkaUl0ZXJhdG9yIGVuZCwgCi0gICAgICBtYXRjaF9yZXN1bHRzPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yPiYgd2hhdCwgCi0gICAgICBjb25zdCBiYXNpY19yZWdleDxjaGFyX3R5cGUsIHRyYWl0cz4mIGUsCi0gICAgICBtYXRjaF9mbGFnX3R5cGUgZiwKLSAgICAgIEJpZGlJdGVyYXRvciBsX2Jhc2UpCi0gICAgICA6ICBtX3Jlc3VsdCh3aGF0KSwgYmFzZShmaXJzdCksIGxhc3QoZW5kKSwgCi0gICAgICAgICBwb3NpdGlvbihmaXJzdCksIGJhY2tzdG9wKGxfYmFzZSksIHJlKGUpLCB0cmFpdHNfaW5zdChlLmdldF90cmFpdHMoKSksIAotICAgICAgICAgbV9pbmRlcGVuZGVudChmYWxzZSksIG5leHRfY291bnQoJnJlcF9vYmopLCByZXBfb2JqKCZuZXh0X2NvdW50KQotICAgewotICAgICAgY29uc3RydWN0X2luaXQoZSwgZik7Ci0gICB9Ci0KLSAgIGJvb2wgbWF0Y2goKTsKLSAgIGJvb2wgZmluZCgpOwotCi0gICB2b2lkIHNldGYobWF0Y2hfZmxhZ190eXBlIGYpCi0gICB7IG1fbWF0Y2hfZmxhZ3MgfD0gZjsgfQotICAgdm9pZCB1bnNldGYobWF0Y2hfZmxhZ190eXBlIGYpCi0gICB7IG1fbWF0Y2hfZmxhZ3MgJj0gfmY7IH0KLQotcHJpdmF0ZToKLSAgIHZvaWQgY29uc3RydWN0X2luaXQoY29uc3QgYmFzaWNfcmVnZXg8Y2hhcl90eXBlLCB0cmFpdHM+JiBlLCBtYXRjaF9mbGFnX3R5cGUgZik7Ci0KLSAgIGJvb2wgZmluZF9pbXAoKTsKLSAgIGJvb2wgbWF0Y2hfaW1wKCk7Ci0jaWZkZWYgTkROQk9PU1RfUkVHRVhfSEFTX01TX1NUQUNLX0dVQVJECi0gICB0eXBlZGVmIGJvb2wgKHBlcmxfbWF0Y2hlcjo6KnByb3RlY3RlZF9wcm9jX3R5cGUpKCk7Ci0gICBib29sIHByb3RlY3RlZF9jYWxsKHByb3RlY3RlZF9wcm9jX3R5cGUpOwotI2VuZGlmCi0gICB2b2lkIGVzdGltYXRlX21heF9zdGF0ZV9jb3VudChzdGQ6OnJhbmRvbV9hY2Nlc3NfaXRlcmF0b3JfdGFnKik7Ci0gICB2b2lkIGVzdGltYXRlX21heF9zdGF0ZV9jb3VudCh2b2lkKik7Ci0gICBib29sIG1hdGNoX3ByZWZpeCgpOwotICAgYm9vbCBtYXRjaF9hbGxfc3RhdGVzKCk7Ci0KLSAgIC8vIG1hdGNoIHByb2NzLCBzdG9yZWQgaW4gc19tYXRjaF92dGFibGU6Ci0gICBib29sIG1hdGNoX3N0YXJ0bWFyaygpOwotICAgYm9vbCBtYXRjaF9lbmRtYXJrKCk7Ci0gICBib29sIG1hdGNoX2xpdGVyYWwoKTsKLSAgIGJvb2wgbWF0Y2hfc3RhcnRfbGluZSgpOwotICAgYm9vbCBtYXRjaF9lbmRfbGluZSgpOwotICAgYm9vbCBtYXRjaF93aWxkKCk7Ci0gICBib29sIG1hdGNoX21hdGNoKCk7Ci0gICBib29sIG1hdGNoX3dvcmRfYm91bmRhcnkoKTsKLSAgIGJvb2wgbWF0Y2hfd2l0aGluX3dvcmQoKTsKLSAgIGJvb2wgbWF0Y2hfd29yZF9zdGFydCgpOwotICAgYm9vbCBtYXRjaF93b3JkX2VuZCgpOwotICAgYm9vbCBtYXRjaF9idWZmZXJfc3RhcnQoKTsKLSAgIGJvb2wgbWF0Y2hfYnVmZmVyX2VuZCgpOwotICAgYm9vbCBtYXRjaF9iYWNrcmVmKCk7Ci0gICBib29sIG1hdGNoX2xvbmdfc2V0KCk7Ci0gICBib29sIG1hdGNoX3NldCgpOwotICAgYm9vbCBtYXRjaF9qdW1wKCk7Ci0gICBib29sIG1hdGNoX2FsdCgpOwotICAgYm9vbCBtYXRjaF9yZXAoKTsKLSAgIGJvb2wgbWF0Y2hfY29tYmluaW5nKCk7Ci0gICBib29sIG1hdGNoX3NvZnRfYnVmZmVyX2VuZCgpOwotICAgYm9vbCBtYXRjaF9yZXN0YXJ0X2NvbnRpbnVlKCk7Ci0gICBib29sIG1hdGNoX2xvbmdfc2V0X3JlcGVhdCgpOwotICAgYm9vbCBtYXRjaF9zZXRfcmVwZWF0KCk7Ci0gICBib29sIG1hdGNoX2NoYXJfcmVwZWF0KCk7Ci0gICBib29sIG1hdGNoX2RvdF9yZXBlYXRfZmFzdCgpOwotICAgYm9vbCBtYXRjaF9kb3RfcmVwZWF0X3Nsb3coKTsKLSAgIGJvb2wgbWF0Y2hfZG90X3JlcGVhdF9kaXNwYXRjaCgpCi0gICB7Ci0gICAgICByZXR1cm4gOjpuZG5ib29zdDo6aXNfcmFuZG9tX2FjY2Vzc19pdGVyYXRvcjxCaWRpSXRlcmF0b3I+Ojp2YWx1ZSA/IG1hdGNoX2RvdF9yZXBlYXRfZmFzdCgpIDogbWF0Y2hfZG90X3JlcGVhdF9zbG93KCk7Ci0gICB9Ci0gICBib29sIG1hdGNoX2JhY2tzdGVwKCk7Ci0gICBib29sIG1hdGNoX2Fzc2VydF9iYWNrcmVmKCk7Ci0gICBib29sIG1hdGNoX3RvZ2dsZV9jYXNlKCk7Ci0jaWZkZWYgTkROQk9PU1RfUkVHRVhfUkVDVVJTSVZFCi0gICBib29sIGJhY2t0cmFja190aWxsX21hdGNoKHN0ZDo6c2l6ZV90IGNvdW50KTsKLSNlbmRpZgotICAgYm9vbCBtYXRjaF9yZWN1cnNpb24oKTsKLQotICAgLy8gZmluZCBwcm9jcyBzdG9yZWQgaW4gc19maW5kX3Z0YWJsZToKLSAgIGJvb2wgZmluZF9yZXN0YXJ0X2FueSgpOwotICAgYm9vbCBmaW5kX3Jlc3RhcnRfd29yZCgpOwotICAgYm9vbCBmaW5kX3Jlc3RhcnRfbGluZSgpOwotICAgYm9vbCBmaW5kX3Jlc3RhcnRfYnVmKCk7Ci0gICBib29sIGZpbmRfcmVzdGFydF9saXQoKTsKLQotcHJpdmF0ZToKLSAgIC8vIGZpbmFsIHJlc3VsdCBzdHJ1Y3R1cmUgdG8gYmUgZmlsbGVkIGluOgotICAgbWF0Y2hfcmVzdWx0czxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvcj4mIG1fcmVzdWx0OwotICAgLy8gdGVtcG9yYXJ5IHJlc3VsdCBmb3IgUE9TSVggbWF0Y2hlczoKLSAgIHNjb3BlZF9wdHI8bWF0Y2hfcmVzdWx0czxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvcj4gPiBtX3RlbXBfbWF0Y2g7Ci0gICAvLyBwb2ludGVyIHRvIGFjdHVhbCByZXN1bHQgc3RydWN0dXJlIHRvIGZpbGwgaW46Ci0gICBtYXRjaF9yZXN1bHRzPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yPiogbV9wcmVzdWx0OwotICAgLy8gc3RhcnQgb2Ygc2VxdWVuY2UgYmVpbmcgc2VhcmNoZWQ6Ci0gICBCaWRpSXRlcmF0b3IgYmFzZTsKLSAgIC8vIGVuZCBvZiBzZXF1ZW5jZSBiZWluZyBzZWFyY2hlZDoKLSAgIEJpZGlJdGVyYXRvciBsYXN0OyAKLSAgIC8vIGN1cnJlbnQgY2hhcmFjdGVyIGJlaW5nIGV4YW1pbmVkOgotICAgQmlkaUl0ZXJhdG9yIHBvc2l0aW9uOwotICAgLy8gd2hlcmUgdG8gcmVzdGFydCBuZXh0IHNlYXJjaCBhZnRlciBmYWlsZWQgbWF0Y2ggYXR0ZW1wdDoKLSAgIEJpZGlJdGVyYXRvciByZXN0YXJ0OwotICAgLy8gd2hlcmUgdGhlIGN1cnJlbnQgc2VhcmNoIHN0YXJ0ZWQgZnJvbSwgYWN0cyBhcyBiYXNlIGZvciAkYCBkdXJpbmcgZ3JlcDoKLSAgIEJpZGlJdGVyYXRvciBzZWFyY2hfYmFzZTsKLSAgIC8vIGhvdyBmYXIgd2UgY2FuIGdvIGJhY2sgd2hlbiBtYXRjaGluZyBsb29rYmVoaW5kOgotICAgQmlkaUl0ZXJhdG9yIGJhY2tzdG9wOwotICAgLy8gdGhlIGV4cHJlc3Npb24gYmVpbmcgZXhhbWluZWQ6Ci0gICBjb25zdCBiYXNpY19yZWdleDxjaGFyX3R5cGUsIHRyYWl0cz4mIHJlOwotICAgLy8gdGhlIGV4cHJlc3Npb24ncyB0cmFpdHMgY2xhc3M6Ci0gICBjb25zdCA6Om5kbmJvb3N0OjpyZWdleF90cmFpdHNfd3JhcHBlcjx0cmFpdHM+JiB0cmFpdHNfaW5zdDsKLSAgIC8vIHRoZSBuZXh0IHN0YXRlIGluIHRoZSBtYWNoaW5lIGJlaW5nIG1hdGNoZWQ6Ci0gICBjb25zdCByZV9zeW50YXhfYmFzZSogcHN0YXRlOwotICAgLy8gbWF0Y2hpbmcgZmxhZ3MgaW4gdXNlOgotICAgbWF0Y2hfZmxhZ190eXBlIG1fbWF0Y2hfZmxhZ3M7Ci0gICAvLyBob3cgbWFueSBzdGF0ZXMgd2UgaGF2ZSBleGFtaW5lZCBzbyBmYXI6Ci0gICBzdGQ6OnB0cmRpZmZfdCBzdGF0ZV9jb3VudDsKLSAgIC8vIG1heCBudW1iZXIgb2Ygc3RhdGVzIHRvIGV4YW1pbmUgYmVmb3JlIGdpdmluZyB1cDoKLSAgIHN0ZDo6cHRyZGlmZl90IG1heF9zdGF0ZV9jb3VudDsKLSAgIC8vIHdoZXRoZXIgd2Ugc2hvdWxkIGlnbm9yZSBjYXNlIG9yIG5vdDoKLSAgIGJvb2wgaWNhc2U7Ci0gICAvLyBzZXQgdG8gdHJ1ZSB3aGVuIChwb3NpdGlvbiA9PSBsYXN0KSwgaW5kaWNhdGVzIHRoYXQgd2UgbWF5IGhhdmUgYSBwYXJ0aWFsIG1hdGNoOgotICAgYm9vbCBtX2hhc19wYXJ0aWFsX21hdGNoOwotICAgLy8gc2V0IHRvIHRydWUgd2hlbmV2ZXIgd2UgZ2V0IGEgbWF0Y2g6Ci0gICBib29sIG1faGFzX2ZvdW5kX21hdGNoOwotICAgLy8gc2V0IHRvIHRydWUgd2hlbmV2ZXIgd2UncmUgaW5zaWRlIGFuIGluZGVwZW5kZW50IHN1Yi1leHByZXNzaW9uOgotICAgYm9vbCBtX2luZGVwZW5kZW50OwotICAgLy8gdGhlIGN1cnJlbnQgcmVwZWF0IGJlaW5nIGV4YW1pbmVkOgotICAgcmVwZWF0ZXJfY291bnQ8QmlkaUl0ZXJhdG9yPiogbmV4dF9jb3VudDsKLSAgIC8vIHRoZSBmaXJzdCByZXBlYXQgYmVpbmcgZXhhbWluZWQgKHRvcCBvZiBsaW5rZWQgbGlzdCk6Ci0gICByZXBlYXRlcl9jb3VudDxCaWRpSXRlcmF0b3I+IHJlcF9vYmo7Ci0gICAvLyB0aGUgbWFzayB0byBwYXNzIHdoZW4gbWF0Y2hpbmcgd29yZCBib3VuZGFyaWVzOgotICAgdHlwZW5hbWUgdHJhaXRzOjpjaGFyX2NsYXNzX3R5cGUgbV93b3JkX21hc2s7Ci0gICAvLyB0aGUgYml0bWFzayB0byB1c2Ugd2hlbiBkZXRlcm1pbmluZyB3aGV0aGVyIGEgbWF0Y2hfYW55IG1hdGNoZXMgYSBuZXdsaW5lIG9yIG5vdDoKLSAgIHVuc2lnbmVkIGNoYXIgbWF0Y2hfYW55X21hc2s7Ci0gICAvLyByZWN1cnNpb24gaW5mb3JtYXRpb246Ci0gICBzdGQ6OnZlY3RvcjxyZWN1cnNpb25faW5mbzxyZXN1bHRzX3R5cGU+ID4gcmVjdXJzaW9uX3N0YWNrOwotCi0jaWZkZWYgTkROQk9PU1RfUkVHRVhfTk9OX1JFQ1VSU0lWRQotICAgLy8KLSAgIC8vIGFkZGl0aW9uYWwgbWVtYmVycyBmb3Igbm9uLXJlY3Vyc2l2ZSB2ZXJzaW9uOgotICAgLy8KLSAgIHR5cGVkZWYgYm9vbCAoc2VsZl90eXBlOjoqdW53aW5kX3Byb2NfdHlwZSkoYm9vbCk7Ci0KLSAgIHZvaWQgZXh0ZW5kX3N0YWNrKCk7Ci0gICBib29sIHVud2luZChib29sKTsKLSAgIGJvb2wgdW53aW5kX2VuZChib29sKTsKLSAgIGJvb2wgdW53aW5kX3BhcmVuKGJvb2wpOwotICAgYm9vbCB1bndpbmRfcmVjdXJzaW9uX3N0b3BwZXIoYm9vbCk7Ci0gICBib29sIHVud2luZF9hc3NlcnRpb24oYm9vbCk7Ci0gICBib29sIHVud2luZF9hbHQoYm9vbCk7Ci0gICBib29sIHVud2luZF9yZXBlYXRlcl9jb3VudGVyKGJvb2wpOwotICAgYm9vbCB1bndpbmRfZXh0cmFfYmxvY2soYm9vbCk7Ci0gICBib29sIHVud2luZF9ncmVlZHlfc2luZ2xlX3JlcGVhdChib29sKTsKLSAgIGJvb2wgdW53aW5kX3Nsb3dfZG90X3JlcGVhdChib29sKTsKLSAgIGJvb2wgdW53aW5kX2Zhc3RfZG90X3JlcGVhdChib29sKTsKLSAgIGJvb2wgdW53aW5kX2NoYXJfcmVwZWF0KGJvb2wpOwotICAgYm9vbCB1bndpbmRfc2hvcnRfc2V0X3JlcGVhdChib29sKTsKLSAgIGJvb2wgdW53aW5kX2xvbmdfc2V0X3JlcGVhdChib29sKTsKLSAgIGJvb2wgdW53aW5kX25vbl9ncmVlZHlfcmVwZWF0KGJvb2wpOwotICAgYm9vbCB1bndpbmRfcmVjdXJzaW9uKGJvb2wpOwotICAgYm9vbCB1bndpbmRfcmVjdXJzaW9uX3BvcChib29sKTsKLSAgIHZvaWQgZGVzdHJveV9zaW5nbGVfcmVwZWF0KCk7Ci0gICB2b2lkIHB1c2hfbWF0Y2hlZF9wYXJlbihpbnQgaW5kZXgsIGNvbnN0IHN1Yl9tYXRjaDxCaWRpSXRlcmF0b3I+JiBzdWIpOwotICAgdm9pZCBwdXNoX3JlY3Vyc2lvbl9zdG9wcGVyKCk7Ci0gICB2b2lkIHB1c2hfYXNzZXJ0aW9uKGNvbnN0IHJlX3N5bnRheF9iYXNlKiBwcywgYm9vbCBwb3NpdGl2ZSk7Ci0gICB2b2lkIHB1c2hfYWx0KGNvbnN0IHJlX3N5bnRheF9iYXNlKiBwcyk7Ci0gICB2b2lkIHB1c2hfcmVwZWF0ZXJfY291bnQoaW50IGksIHJlcGVhdGVyX2NvdW50PEJpZGlJdGVyYXRvcj4qKiBzKTsKLSAgIHZvaWQgcHVzaF9zaW5nbGVfcmVwZWF0KHN0ZDo6c2l6ZV90IGMsIGNvbnN0IHJlX3JlcGVhdCogciwgQmlkaUl0ZXJhdG9yIGxhc3RfcG9zaXRpb24sIGludCBzdGF0ZV9pZCk7Ci0gICB2b2lkIHB1c2hfbm9uX2dyZWVkeV9yZXBlYXQoY29uc3QgcmVfc3ludGF4X2Jhc2UqIHBzKTsKLSAgIHZvaWQgcHVzaF9yZWN1cnNpb24oaW50IGlkeCwgY29uc3QgcmVfc3ludGF4X2Jhc2UqIHAsIHJlc3VsdHNfdHlwZSogcHJlc3VsdHMpOwotICAgdm9pZCBwdXNoX3JlY3Vyc2lvbl9wb3AoKTsKLQotICAgLy8gcG9pbnRlciB0byBiYXNlIG9mIHN0YWNrOgotICAgc2F2ZWRfc3RhdGUqIG1fc3RhY2tfYmFzZTsKLSAgIC8vIHBvaW50ZXIgdG8gY3VycmVudCBzdGFjayBwb3NpdGlvbjoKLSAgIHNhdmVkX3N0YXRlKiBtX2JhY2t1cF9zdGF0ZTsKLSAgIC8vIGRldGVybWluZXMgd2hhdCB2YWx1ZSB0byByZXR1cm4gd2hlbiB1bndpbmRpbmcgZnJvbSByZWN1cnNpb24sCi0gICAvLyBhbGxvd3MgZm9yIG1peGVkIHJlY3Vyc2l2ZS9ub24tcmVjdXJzaXZlIGFsZ29yaXRobToKLSAgIGJvb2wgbV9yZWN1cnNpdmVfcmVzdWx0OwotICAgLy8gaG93IG1hbnkgbWVtb3J5IGJsb2NrcyBoYXZlIHdlIHVzZWQgdXA/OgotICAgdW5zaWduZWQgdXNlZF9ibG9ja19jb3VudDsKLSNlbmRpZgotCi0gICAvLyB0aGVzZSBvcGVyYXRpb25zIGFyZW4ndCBhbGxvd2VkLCBzbyBhcmUgZGVjbGFyZWQgcHJpdmF0ZSwKLSAgIC8vIGJvZGllcyBhcmUgcHJvdmlkZWQgdG8ga2VlcCBleHBsaWNpdC1pbnN0YW50aWF0aW9uIHJlcXVlc3RzIGhhcHB5OgotICAgcGVybF9tYXRjaGVyJiBvcGVyYXRvcj0oY29uc3QgcGVybF9tYXRjaGVyJikKLSAgIHsKLSAgICAgIHJldHVybiAqdGhpczsKLSAgIH0KLSAgIHBlcmxfbWF0Y2hlcihjb25zdCBwZXJsX21hdGNoZXImIHRoYXQpCi0gICAgICA6IG1fcmVzdWx0KHRoYXQubV9yZXN1bHQpLCByZSh0aGF0LnJlKSwgdHJhaXRzX2luc3QodGhhdC50cmFpdHNfaW5zdCksIHJlcF9vYmooMCkge30KLX07Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIHJlX2RldGFpbAotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfU1VGRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jICBwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotLy8KLS8vIGluY2x1ZGUgdGhlIGltcGxlbWVudGF0aW9uIG9mIHBlcmxfbWF0Y2hlcjoKLS8vCi0jaWZkZWYgTkROQk9PU1RfUkVHRVhfUkVDVVJTSVZFCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvdjQvcGVybF9tYXRjaGVyX3JlY3Vyc2l2ZS5ocHA+Ci0jZWxzZQotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3Y0L3BlcmxfbWF0Y2hlcl9ub25fcmVjdXJzaXZlLmhwcD4KLSNlbmRpZgotLy8gdGhpcyBvbmUgaGFzIHRvIGJlIGxhc3Q6Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvdjQvcGVybF9tYXRjaGVyX2NvbW1vbi5ocHA+Ci0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3BlcmxfbWF0Y2hlcl9jb21tb24uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9wZXJsX21hdGNoZXJfY29tbW9uLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWQ1ZmVkMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3BlcmxfbWF0Y2hlcl9jb21tb24uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTk2ICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IChjKSAyMDAyCi0gKiBKb2huIE1hZGRvY2sKLSAqCi0gKiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLSAqIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotICogTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqLwotCi0gLyoKLSAgKiAgIExPQ0FUSU9OOiAgICBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0gICogICBGSUxFICAgICAgICAgcGVybF9tYXRjaGVyX2NvbW1vbi5jcHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IERlZmluaXRpb25zIG9mIHBlcmxfbWF0Y2hlciBtZW1iZXIgZnVuY3Rpb25zIHRoYXQgYXJlIAotICAqICAgICAgICAgICAgICAgIGNvbW1vbiB0byBib3RoIHRoZSByZWN1cnNpdmUgYW5kIG5vbi1yZWN1cnNpdmUgdmVyc2lvbnMuCi0gICovCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfVjRfUEVSTF9NQVRDSEVSX0NPTU1PTl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfVjRfUEVSTF9NQVRDSEVSX0NPTU1PTl9IUFAKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1BSRUZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0jaWZkZWYgX19CT1JMQU5EQ19fCi0jICBwcmFnbWEgb3B0aW9uIHB1c2ggLXctODAwOCAtdy04MDY2Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jICBwcmFnbWEgd2FybmluZyhwdXNoKQotIyAgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDgwMCkKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci1uYW1lc3BhY2UgcmVfZGV0YWlsewotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLXZvaWQgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+Ojpjb25zdHJ1Y3RfaW5pdChjb25zdCBiYXNpY19yZWdleDxjaGFyX3R5cGUsIHRyYWl0cz4mIGUsIG1hdGNoX2ZsYWdfdHlwZSBmKQoteyAKLSAgIHR5cGVkZWYgdHlwZW5hbWUgcmVnZXhfaXRlcmF0b3JfdHJhaXRzPEJpZGlJdGVyYXRvcj46Oml0ZXJhdG9yX2NhdGVnb3J5IGNhdGVnb3J5OwotICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNpY19yZWdleDxjaGFyX3R5cGUsIHRyYWl0cz46OmZsYWdfdHlwZSBleHByZXNzaW9uX2ZsYWdfdHlwZTsKLSAgIAotICAgaWYoZS5lbXB0eSgpKQotICAgewotICAgICAgLy8gcHJlY29uZGl0aW9uIGZhaWx1cmU6IGUgaXMgbm90IGEgdmFsaWQgcmVnZXguCi0gICAgICBzdGQ6OmludmFsaWRfYXJndW1lbnQgZXgoIkludmFsaWQgcmVndWxhciBleHByZXNzaW9uIG9iamVjdCIpOwotICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihleCk7Ci0gICB9Ci0gICBwc3RhdGUgPSAwOwotICAgbV9tYXRjaF9mbGFncyA9IGY7Ci0gICBlc3RpbWF0ZV9tYXhfc3RhdGVfY291bnQoc3RhdGljX2Nhc3Q8Y2F0ZWdvcnkqPigwKSk7Ci0gICBleHByZXNzaW9uX2ZsYWdfdHlwZSByZV9mID0gcmUuZmxhZ3MoKTsKLSAgIGljYXNlID0gcmVfZiAmIHJlZ2V4X2NvbnN0YW50czo6aWNhc2U7Ci0gICBpZighKG1fbWF0Y2hfZmxhZ3MgJiAobWF0Y2hfcGVybHxtYXRjaF9wb3NpeCkpKQotICAgewotICAgICAgaWYoKHJlX2YgJiAocmVnYmFzZTo6bWFpbl9vcHRpb25fdHlwZXxyZWdiYXNlOjpub19wZXJsX2V4KSkgPT0gMCkKLSAgICAgICAgIG1fbWF0Y2hfZmxhZ3MgfD0gbWF0Y2hfcGVybDsKLSAgICAgIGVsc2UgaWYoKHJlX2YgJiAocmVnYmFzZTo6bWFpbl9vcHRpb25fdHlwZXxyZWdiYXNlOjplbWFjc19leCkpID09IChyZWdiYXNlOjpiYXNpY19zeW50YXhfZ3JvdXB8cmVnYmFzZTo6ZW1hY3NfZXgpKQotICAgICAgICAgbV9tYXRjaF9mbGFncyB8PSBtYXRjaF9wZXJsOwotICAgICAgZWxzZSBpZigocmVfZiAmIChyZWdiYXNlOjptYWluX29wdGlvbl90eXBlfHJlZ2Jhc2U6OmxpdGVyYWwpKSA9PSAocmVnYmFzZTo6bGl0ZXJhbCkpCi0gICAgICAgICBtX21hdGNoX2ZsYWdzIHw9IG1hdGNoX3Blcmw7Ci0gICAgICBlbHNlCi0gICAgICAgICBtX21hdGNoX2ZsYWdzIHw9IG1hdGNoX3Bvc2l4OwotICAgfQotICAgaWYobV9tYXRjaF9mbGFncyAmIG1hdGNoX3Bvc2l4KQotICAgewotICAgICAgbV90ZW1wX21hdGNoLnJlc2V0KG5ldyBtYXRjaF9yZXN1bHRzPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yPigpKTsKLSAgICAgIG1fcHJlc3VsdCA9IG1fdGVtcF9tYXRjaC5nZXQoKTsKLSAgIH0KLSAgIGVsc2UKLSAgICAgIG1fcHJlc3VsdCA9ICZtX3Jlc3VsdDsKLSNpZmRlZiBORE5CT09TVF9SRUdFWF9OT05fUkVDVVJTSVZFCi0gICBtX3N0YWNrX2Jhc2UgPSAwOwotICAgbV9iYWNrdXBfc3RhdGUgPSAwOwotI2VuZGlmCi0gICAvLyBmaW5kIHRoZSB2YWx1ZSB0byB1c2UgZm9yIG1hdGNoaW5nIHdvcmQgYm91bmRhcmllczoKLSAgIG1fd29yZF9tYXNrID0gcmUuZ2V0X2RhdGEoKS5tX3dvcmRfbWFzazsgCi0gICAvLyBmaW5kIGJpdG1hc2sgdG8gdXNlIGZvciBtYXRjaGluZyAnLic6Ci0gICBtYXRjaF9hbnlfbWFzayA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KChmICYgbWF0Y2hfbm90X2RvdF9uZXdsaW5lKSA/IHJlX2RldGFpbDo6dGVzdF9ub3RfbmV3bGluZSA6IHJlX2RldGFpbDo6dGVzdF9uZXdsaW5lKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci12b2lkIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6ZXN0aW1hdGVfbWF4X3N0YXRlX2NvdW50KHN0ZDo6cmFuZG9tX2FjY2Vzc19pdGVyYXRvcl90YWcqKQotewotICAgLy8KLSAgIC8vIEhvdyBtYW55IHN0YXRlcyBzaG91bGQgd2UgYWxsb3cgb3VyIG1hY2hpbmUgdG8gdmlzaXQgYmVmb3JlIGdpdmluZyB1cD8KLSAgIC8vIFRoaXMgaXMgYSBoZXVyaXN0aWM6IGl0IHRha2VzIHRoZSBncmVhdGVyIG9mIE8oTl4yKSBhbmQgTyhOU14yKQotICAgLy8gd2hlcmUgTiBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcsIGFuZCBTIGlzIHRoZSBudW1iZXIgb2Ygc3RhdGVzCi0gICAvLyBpbiB0aGUgbWFjaGluZS4gIEl0J3MgdGVtcHRpbmcgdG8gdXAgdGhpcyB0byBPKE5eMlMpIG9yIGV2ZW4gTyhOXjJTXjIpCi0gICAvLyBidXQgdGhlc2UgdGFrZSB1bnJlYXNvbmFibHkgYW1vdW50cyBvZiB0aW1lIHRvIGJhbGUgb3V0IGluIHBhdGhvbG9naWNhbAotICAgLy8gY2FzZXMuCi0gICAvLwotICAgLy8gQ2FsY3VsYXRlIE5TXjIgZmlyc3Q6Ci0gICAvLwotICAgc3RhdGljIGNvbnN0IHN0ZDo6cHRyZGlmZl90IGsgPSAxMDAwMDA7Ci0gICBzdGQ6OnB0cmRpZmZfdCBkaXN0ID0gbmRuYm9vc3Q6OnJlX2RldGFpbDo6ZGlzdGFuY2UoYmFzZSwgbGFzdCk7Ci0gICBpZihkaXN0ID09IDApCi0gICAgICBkaXN0ID0gMTsKLSAgIHN0ZDo6cHRyZGlmZl90IHN0YXRlcyA9IHJlLnNpemUoKTsKLSAgIGlmKHN0YXRlcyA9PSAwKQotICAgICAgc3RhdGVzID0gMTsKLSAgIHN0YXRlcyAqPSBzdGF0ZXM7Ci0gICBpZigoc3RkOjpudW1lcmljX2xpbWl0czxzdGQ6OnB0cmRpZmZfdD46Om1heCkoKSAvIGRpc3QgPCBzdGF0ZXMpCi0gICB7Ci0gICAgICBtYXhfc3RhdGVfY291bnQgPSAoc3RkOjptaW4pKChzdGQ6OnB0cmRpZmZfdClORE5CT09TVF9SRUdFWF9NQVhfU1RBVEVfQ09VTlQsIChzdGQ6Om51bWVyaWNfbGltaXRzPHN0ZDo6cHRyZGlmZl90Pjo6bWF4KSgpIC0gMik7Ci0gICAgICByZXR1cm47Ci0gICB9Ci0gICBzdGF0ZXMgKj0gZGlzdDsKLSAgIGlmKChzdGQ6Om51bWVyaWNfbGltaXRzPHN0ZDo6cHRyZGlmZl90Pjo6bWF4KSgpIC0gayA8IHN0YXRlcykKLSAgIHsKLSAgICAgIG1heF9zdGF0ZV9jb3VudCA9IChzdGQ6Om1pbikoKHN0ZDo6cHRyZGlmZl90KU5ETkJPT1NUX1JFR0VYX01BWF9TVEFURV9DT1VOVCwgKHN0ZDo6bnVtZXJpY19saW1pdHM8c3RkOjpwdHJkaWZmX3Q+OjptYXgpKCkgLSAyKTsKLSAgICAgIHJldHVybjsKLSAgIH0KLSAgIHN0YXRlcyArPSBrOwotCi0gICBtYXhfc3RhdGVfY291bnQgPSBzdGF0ZXM7Ci0KLSAgIC8vCi0gICAvLyBOb3cgY2FsY3VsYXRlIE5eMjoKLSAgIC8vCi0gICBzdGF0ZXMgPSBkaXN0OwotICAgaWYoKHN0ZDo6bnVtZXJpY19saW1pdHM8c3RkOjpwdHJkaWZmX3Q+OjptYXgpKCkgLyBkaXN0IDwgc3RhdGVzKQotICAgewotICAgICAgbWF4X3N0YXRlX2NvdW50ID0gKHN0ZDo6bWluKSgoc3RkOjpwdHJkaWZmX3QpTkROQk9PU1RfUkVHRVhfTUFYX1NUQVRFX0NPVU5ULCAoc3RkOjpudW1lcmljX2xpbWl0czxzdGQ6OnB0cmRpZmZfdD46Om1heCkoKSAtIDIpOwotICAgICAgcmV0dXJuOwotICAgfQotICAgc3RhdGVzICo9IGRpc3Q7Ci0gICBpZigoc3RkOjpudW1lcmljX2xpbWl0czxzdGQ6OnB0cmRpZmZfdD46Om1heCkoKSAtIGsgPCBzdGF0ZXMpCi0gICB7Ci0gICAgICBtYXhfc3RhdGVfY291bnQgPSAoc3RkOjptaW4pKChzdGQ6OnB0cmRpZmZfdClORE5CT09TVF9SRUdFWF9NQVhfU1RBVEVfQ09VTlQsIChzdGQ6Om51bWVyaWNfbGltaXRzPHN0ZDo6cHRyZGlmZl90Pjo6bWF4KSgpIC0gMik7Ci0gICAgICByZXR1cm47Ci0gICB9Ci0gICBzdGF0ZXMgKz0gazsKLSAgIC8vCi0gICAvLyBOXjIgY2FuIGJlIGEgdmVyeSBsYXJnZSBudW1iZXIgaW5kZWVkLCB0byBwcmV2ZW50IHRoaW5ncyBnZXR0aW5nIG91dAotICAgLy8gb2YgY29udHJvbCwgY2FwIHRoZSBtYXggc3RhdGVzOgotICAgLy8KLSAgIGlmKHN0YXRlcyA+IE5ETkJPT1NUX1JFR0VYX01BWF9TVEFURV9DT1VOVCkKLSAgICAgIHN0YXRlcyA9IE5ETkJPT1NUX1JFR0VYX01BWF9TVEFURV9DT1VOVDsKLSAgIC8vCi0gICAvLyBJZiAodGhlIHBvc3NpYmx5IGNhcHBlZCkgTl4yIGlzIGxhcmdlciB0aGFuIG91ciBmaXJzdCBlc3RpbWF0ZSwKLSAgIC8vIHVzZSB0aGlzIGluc3RlYWQ6Ci0gICAvLwotICAgaWYoc3RhdGVzID4gbWF4X3N0YXRlX2NvdW50KQotICAgICAgbWF4X3N0YXRlX2NvdW50ID0gc3RhdGVzOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWlubGluZSB2b2lkIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6ZXN0aW1hdGVfbWF4X3N0YXRlX2NvdW50KHZvaWQqKQotewotICAgLy8gd2UgZG9uJ3Qga25vdyBob3cgbG9uZyB0aGUgc2VxdWVuY2UgaXM6Ci0gICBtYXhfc3RhdGVfY291bnQgPSBORE5CT09TVF9SRUdFWF9NQVhfU1RBVEVfQ09VTlQ7Ci19Ci0KLSNpZmRlZiBORE5CT09TVF9SRUdFWF9IQVNfTVNfU1RBQ0tfR1VBUkQKLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotaW5saW5lIGJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+Ojpwcm90ZWN0ZWRfY2FsbCgKLSAgIHByb3RlY3RlZF9wcm9jX3R5cGUgcHJvYykKLXsKLSAgIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y29uY3JldGVfcHJvdGVjdGVkX2NhbGwKLSAgICAgIDxwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz4gPgotICAgICAgb2JqKHRoaXMsIHByb2MpOwotICAgcmV0dXJuIG9iai5leGVjdXRlKCk7Ci0KLX0KLSNlbmRpZgotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWlubGluZSBib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2goKQotewotI2lmZGVmIE5ETkJPT1NUX1JFR0VYX0hBU19NU19TVEFDS19HVUFSRAotICAgcmV0dXJuIHByb3RlY3RlZF9jYWxsKCZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2ltcCk7Ci0jZWxzZQotICAgcmV0dXJuIG1hdGNoX2ltcCgpOwotI2VuZGlmCi19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2ltcCgpCi17Ci0gICAvLyBpbml0aWFsaXNlIG91ciBzdGFjayBpZiB3ZSBhcmUgbm9uLXJlY3Vyc2l2ZToKLSNpZmRlZiBORE5CT09TVF9SRUdFWF9OT05fUkVDVVJTSVZFCi0gICBzYXZlX3N0YXRlX2luaXQgaW5pdCgmbV9zdGFja19iYXNlLCAmbV9iYWNrdXBfc3RhdGUpOwotICAgdXNlZF9ibG9ja19jb3VudCA9IE5ETkJPT1NUX1JFR0VYX01BWF9CTE9DS1M7Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fRVhDRVBUSU9OUykKLSAgIHRyeXsKLSNlbmRpZgotI2VuZGlmCi0KLSAgIC8vIHJlc2V0IG91ciBzdGF0ZSBtYWNoaW5lOgotICAgcG9zaXRpb24gPSBiYXNlOwotICAgc2VhcmNoX2Jhc2UgPSBiYXNlOwotICAgc3RhdGVfY291bnQgPSAwOwotICAgbV9tYXRjaF9mbGFncyB8PSByZWdleF9jb25zdGFudHM6Om1hdGNoX2FsbDsKLSAgIG1fcHJlc3VsdC0+c2V0X3NpemUoKG1fbWF0Y2hfZmxhZ3MgJiBtYXRjaF9ub3N1YnMpID8gMSA6IHJlLm1hcmtfY291bnQoKSwgc2VhcmNoX2Jhc2UsIGxhc3QpOwotICAgbV9wcmVzdWx0LT5zZXRfYmFzZShiYXNlKTsKLSAgIG1fcHJlc3VsdC0+c2V0X25hbWVkX3N1YnModGhpcy0+cmUuZ2V0X25hbWVkX3N1YnMoKSk7Ci0gICBpZihtX21hdGNoX2ZsYWdzICYgbWF0Y2hfcG9zaXgpCi0gICAgICBtX3Jlc3VsdCA9ICptX3ByZXN1bHQ7Ci0gICB2ZXJpZnlfb3B0aW9ucyhyZS5mbGFncygpLCBtX21hdGNoX2ZsYWdzKTsKLSAgIGlmKDAgPT0gbWF0Y2hfcHJlZml4KCkpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICByZXR1cm4gKG1fcmVzdWx0WzBdLnNlY29uZCA9PSBsYXN0KSAmJiAobV9yZXN1bHRbMF0uZmlyc3QgPT0gYmFzZSk7Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1JFR0VYX05PTl9SRUNVUlNJVkUpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0VYQ0VQVElPTlMpCi0gICB9Ci0gICBjYXRjaCguLi4pCi0gICB7Ci0gICAgICAvLyB1bndpbmQgYWxsIHB1c2hlZCBzdGF0ZXMsIGFwYXJ0IGZyb20gYW55dGhpbmcgZWxzZSB0aGlzCi0gICAgICAvLyBlbnN1cmVzIHRoYXQgYWxsIHRoZSBzdGF0ZXMgYXJlIGNvcnJlY3RseSBkZXN0cnVjdGVkCi0gICAgICAvLyBub3QganVzdCB0aGUgbWVtb3J5IGZyZWVkLgotICAgICAgd2hpbGUodW53aW5kKHRydWUpKXt9Ci0gICAgICB0aHJvdzsKLSAgIH0KLSNlbmRpZgotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWlubGluZSBib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6ZmluZCgpCi17Ci0jaWZkZWYgTkROQk9PU1RfUkVHRVhfSEFTX01TX1NUQUNLX0dVQVJECi0gICByZXR1cm4gcHJvdGVjdGVkX2NhbGwoJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6ZmluZF9pbXApOwotI2Vsc2UKLSAgIHJldHVybiBmaW5kX2ltcCgpOwotI2VuZGlmCi19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OmZpbmRfaW1wKCkKLXsKLSAgIHN0YXRpYyBtYXRjaGVyX3Byb2NfdHlwZSBjb25zdCBzX2ZpbmRfdnRhYmxlWzddID0gCi0gICB7Ci0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjpmaW5kX3Jlc3RhcnRfYW55LAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6ZmluZF9yZXN0YXJ0X3dvcmQsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjpmaW5kX3Jlc3RhcnRfbGluZSwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OmZpbmRfcmVzdGFydF9idWYsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9wcmVmaXgsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjpmaW5kX3Jlc3RhcnRfbGl0LAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6ZmluZF9yZXN0YXJ0X2xpdCwKLSAgIH07Ci0KLSAgIC8vIGluaXRpYWxpc2Ugb3VyIHN0YWNrIGlmIHdlIGFyZSBub24tcmVjdXJzaXZlOgotI2lmZGVmIE5ETkJPT1NUX1JFR0VYX05PTl9SRUNVUlNJVkUKLSAgIHNhdmVfc3RhdGVfaW5pdCBpbml0KCZtX3N0YWNrX2Jhc2UsICZtX2JhY2t1cF9zdGF0ZSk7Ci0gICB1c2VkX2Jsb2NrX2NvdW50ID0gTkROQk9PU1RfUkVHRVhfTUFYX0JMT0NLUzsKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19FWENFUFRJT05TKQotICAgdHJ5ewotI2VuZGlmCi0jZW5kaWYKLQotICAgc3RhdGVfY291bnQgPSAwOwotICAgaWYoKG1fbWF0Y2hfZmxhZ3MgJiByZWdleF9jb25zdGFudHM6Om1hdGNoX2luaXQpID09IDApCi0gICB7Ci0gICAgICAvLyByZXNldCBvdXIgc3RhdGUgbWFjaGluZToKLSAgICAgIHNlYXJjaF9iYXNlID0gcG9zaXRpb24gPSBiYXNlOwotICAgICAgcHN0YXRlID0gcmUuZ2V0X2ZpcnN0X3N0YXRlKCk7Ci0gICAgICBtX3ByZXN1bHQtPnNldF9zaXplKChtX21hdGNoX2ZsYWdzICYgbWF0Y2hfbm9zdWJzKSA/IDEgOiByZS5tYXJrX2NvdW50KCksIGJhc2UsIGxhc3QpOwotICAgICAgbV9wcmVzdWx0LT5zZXRfYmFzZShiYXNlKTsKLSAgICAgIG1fcHJlc3VsdC0+c2V0X25hbWVkX3N1YnModGhpcy0+cmUuZ2V0X25hbWVkX3N1YnMoKSk7Ci0gICAgICBtX21hdGNoX2ZsYWdzIHw9IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfaW5pdDsKLSAgIH0KLSAgIGVsc2UKLSAgIHsKLSAgICAgIC8vIHN0YXJ0IGFnYWluOgotICAgICAgc2VhcmNoX2Jhc2UgPSBwb3NpdGlvbiA9IG1fcmVzdWx0WzBdLnNlY29uZDsKLSAgICAgIC8vIElmIGxhc3QgbWF0Y2ggd2FzIG51bGwgYW5kIG1hdGNoX25vdF9udWxsIHdhcyBub3Qgc2V0IHRoZW4gaW5jcmVtZW50Ci0gICAgICAvLyBvdXIgc3RhcnQgcG9zaXRpb24sIG90aGVyd2lzZSB3ZSBnbyBpbnRvIGFuIGluZmluaXRlIGxvb3A6Ci0gICAgICBpZigoKG1fbWF0Y2hfZmxhZ3MgJiBtYXRjaF9ub3RfbnVsbCkgPT0gMCkgJiYgKG1fcmVzdWx0Lmxlbmd0aCgpID09IDApKQotICAgICAgewotICAgICAgICAgaWYocG9zaXRpb24gPT0gbGFzdCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgIGVsc2UgCi0gICAgICAgICAgICArK3Bvc2l0aW9uOwotICAgICAgfQotICAgICAgLy8gcmVzZXQgJGAgc3RhcnQ6Ci0gICAgICBtX3ByZXN1bHQtPnNldF9zaXplKChtX21hdGNoX2ZsYWdzICYgbWF0Y2hfbm9zdWJzKSA/IDEgOiByZS5tYXJrX2NvdW50KCksIHNlYXJjaF9iYXNlLCBsYXN0KTsKLSAgICAgIC8vaWYoKGJhc2UgIT0gc2VhcmNoX2Jhc2UpICYmIChiYXNlID09IGJhY2tzdG9wKSkKLSAgICAgIC8vICAgbV9tYXRjaF9mbGFncyB8PSBtYXRjaF9wcmV2X2F2YWlsOwotICAgfQotICAgaWYobV9tYXRjaF9mbGFncyAmIG1hdGNoX3Bvc2l4KQotICAgewotICAgICAgbV9yZXN1bHQuc2V0X3NpemUocmUubWFya19jb3VudCgpLCBiYXNlLCBsYXN0KTsKLSAgICAgIG1fcmVzdWx0LnNldF9iYXNlKGJhc2UpOwotICAgfQotCi0gICB2ZXJpZnlfb3B0aW9ucyhyZS5mbGFncygpLCBtX21hdGNoX2ZsYWdzKTsKLSAgIC8vIGZpbmQgb3V0IHdoYXQga2luZCBvZiBleHByZXNzaW9uIHdlIGhhdmU6Ci0gICB1bnNpZ25lZCB0eXBlID0gKG1fbWF0Y2hfZmxhZ3MgJiBtYXRjaF9jb250aW51b3VzKSA/IAotICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihyZWdiYXNlOjpyZXN0YXJ0X2NvbnRpbnVlKSAKLSAgICAgICAgIDogc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihyZS5nZXRfcmVzdGFydF90eXBlKCkpOwotCi0gICAvLyBjYWxsIHRoZSBhcHByb3ByaWF0ZSBzZWFyY2ggcm91dGluZToKLSAgIG1hdGNoZXJfcHJvY190eXBlIHByb2MgPSBzX2ZpbmRfdnRhYmxlW3R5cGVdOwotICAgcmV0dXJuICh0aGlzLT4qcHJvYykoKTsKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfUkVHRVhfTk9OX1JFQ1VSU0lWRSkgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fRVhDRVBUSU9OUykKLSAgIH0KLSAgIGNhdGNoKC4uLikKLSAgIHsKLSAgICAgIC8vIHVud2luZCBhbGwgcHVzaGVkIHN0YXRlcywgYXBhcnQgZnJvbSBhbnl0aGluZyBlbHNlIHRoaXMKLSAgICAgIC8vIGVuc3VyZXMgdGhhdCBhbGwgdGhlIHN0YXRlcyBhcmUgY29ycmVjdGx5IGRlc3RydWN0ZWQKLSAgICAgIC8vIG5vdCBqdXN0IHRoZSBtZW1vcnkgZnJlZWQuCi0gICAgICB3aGlsZSh1bndpbmQodHJ1ZSkpe30KLSAgICAgIHRocm93OwotICAgfQotI2VuZGlmCi19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX3ByZWZpeCgpCi17Ci0gICBtX2hhc19wYXJ0aWFsX21hdGNoID0gZmFsc2U7Ci0gICBtX2hhc19mb3VuZF9tYXRjaCA9IGZhbHNlOwotICAgcHN0YXRlID0gcmUuZ2V0X2ZpcnN0X3N0YXRlKCk7Ci0gICBtX3ByZXN1bHQtPnNldF9maXJzdChwb3NpdGlvbik7Ci0gICByZXN0YXJ0ID0gcG9zaXRpb247Ci0gICBtYXRjaF9hbGxfc3RhdGVzKCk7Ci0gICBpZighbV9oYXNfZm91bmRfbWF0Y2ggJiYgbV9oYXNfcGFydGlhbF9tYXRjaCAmJiAobV9tYXRjaF9mbGFncyAmIG1hdGNoX3BhcnRpYWwpKQotICAgewotICAgICAgbV9oYXNfZm91bmRfbWF0Y2ggPSB0cnVlOwotICAgICAgbV9wcmVzdWx0LT5zZXRfc2Vjb25kKGxhc3QsIDAsIGZhbHNlKTsKLSAgICAgIHBvc2l0aW9uID0gbGFzdDsKLSAgICAgIGlmKChtX21hdGNoX2ZsYWdzICYgbWF0Y2hfcG9zaXgpID09IG1hdGNoX3Bvc2l4KQotICAgICAgewotICAgICAgICAgbV9yZXN1bHQubWF5YmVfYXNzaWduKCptX3ByZXN1bHQpOwotICAgICAgfQotICAgfQotI2lmZGVmIE5ETkJPT1NUX1JFR0VYX01BVENIX0VYVFJBCi0gICBpZihtX2hhc19mb3VuZF9tYXRjaCAmJiAobWF0Y2hfZXh0cmEgJiBtX21hdGNoX2ZsYWdzKSkKLSAgIHsKLSAgICAgIC8vCi0gICAgICAvLyB3ZSBoYXZlIGEgbWF0Y2gsIHJldmVyc2UgdGhlIGNhcHR1cmUgaW5mb3JtYXRpb246Ci0gICAgICAvLwotICAgICAgZm9yKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9wcmVzdWx0LT5zaXplKCk7ICsraSkKLSAgICAgIHsKLSAgICAgICAgIHR5cGVuYW1lIHN1Yl9tYXRjaDxCaWRpSXRlcmF0b3I+OjpjYXB0dXJlX3NlcXVlbmNlX3R5cGUgJiBzZXEgPSAoKCptX3ByZXN1bHQpW2ldKS5nZXRfY2FwdHVyZXMoKTsKLSAgICAgICAgIHN0ZDo6cmV2ZXJzZShzZXEuYmVnaW4oKSwgc2VxLmVuZCgpKTsKLSAgICAgIH0KLSAgIH0KLSNlbmRpZgotICAgaWYoIW1faGFzX2ZvdW5kX21hdGNoKQotICAgICAgcG9zaXRpb24gPSByZXN0YXJ0OyAvLyByZXNldCBzZWFyY2ggcG9zdGlvbgotICAgcmV0dXJuIG1faGFzX2ZvdW5kX21hdGNoOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9saXRlcmFsKCkKLXsKLSAgIHVuc2lnbmVkIGludCBsZW4gPSBzdGF0aWNfY2FzdDxjb25zdCByZV9saXRlcmFsKj4ocHN0YXRlKS0+bGVuZ3RoOwotICAgY29uc3QgY2hhcl90eXBlKiB3aGF0ID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyX3R5cGUqPihzdGF0aWNfY2FzdDxjb25zdCByZV9saXRlcmFsKj4ocHN0YXRlKSArIDEpOwotICAgLy8KLSAgIC8vIGNvbXBhcmUgc3RyaW5nIHdpdGggd2hhdCB3ZSBzdG9yZWQgaW4KLSAgIC8vIG91ciByZWNvcmRzOgotICAgZm9yKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGxlbjsgKytpLCArK3Bvc2l0aW9uKQotICAgewotICAgICAgaWYoKHBvc2l0aW9uID09IGxhc3QpIHx8ICh0cmFpdHNfaW5zdC50cmFuc2xhdGUoKnBvc2l0aW9uLCBpY2FzZSkgIT0gd2hhdFtpXSkpCi0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICB9Ci0gICBwc3RhdGUgPSBwc3RhdGUtPm5leHQucDsKLSAgIHJldHVybiB0cnVlOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9zdGFydF9saW5lKCkKLXsKLSAgIGlmKHBvc2l0aW9uID09IGJhY2tzdG9wKQotICAgewotICAgICAgaWYoKG1fbWF0Y2hfZmxhZ3MgJiBtYXRjaF9wcmV2X2F2YWlsKSA9PSAwKQotICAgICAgewotICAgICAgICAgaWYoKG1fbWF0Y2hfZmxhZ3MgJiBtYXRjaF9ub3RfYm9sKSA9PSAwKQotICAgICAgICAgewotICAgICAgICAgICAgcHN0YXRlID0gcHN0YXRlLT5uZXh0LnA7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgIH0KLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIH0KLSAgIH0KLSAgIGVsc2UgaWYobV9tYXRjaF9mbGFncyAmIG1hdGNoX3NpbmdsZV9saW5lKQotICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAvLyBjaGVjayB0aGUgcHJldmlvdXMgdmFsdWUgY2hhcmFjdGVyOgotICAgQmlkaUl0ZXJhdG9yIHQocG9zaXRpb24pOwotICAgLS10OwotICAgaWYocG9zaXRpb24gIT0gbGFzdCkKLSAgIHsKLSAgICAgIGlmKGlzX3NlcGFyYXRvcigqdCkgJiYgISgoKnQgPT0gc3RhdGljX2Nhc3Q8Y2hhcl90eXBlPignXHInKSkgJiYgKCpwb3NpdGlvbiA9PSBzdGF0aWNfY2FzdDxjaGFyX3R5cGU+KCdcbicpKSkgKQotICAgICAgewotICAgICAgICAgcHN0YXRlID0gcHN0YXRlLT5uZXh0LnA7Ci0gICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0KLSAgIH0KLSAgIGVsc2UgaWYoaXNfc2VwYXJhdG9yKCp0KSkKLSAgIHsKLSAgICAgIHBzdGF0ZSA9IHBzdGF0ZS0+bmV4dC5wOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICB9Ci0gICByZXR1cm4gZmFsc2U7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2VuZF9saW5lKCkKLXsKLSAgIGlmKHBvc2l0aW9uICE9IGxhc3QpCi0gICB7Ci0gICAgICBpZihtX21hdGNoX2ZsYWdzICYgbWF0Y2hfc2luZ2xlX2xpbmUpCi0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAvLyB3ZSdyZSBub3QgeWV0IGF0IHRoZSBlbmQgc28gKmZpcnN0IGlzIGFsd2F5cyB2YWxpZDoKLSAgICAgIGlmKGlzX3NlcGFyYXRvcigqcG9zaXRpb24pKQotICAgICAgewotICAgICAgICAgaWYoKHBvc2l0aW9uICE9IGJhY2tzdG9wKSB8fCAobV9tYXRjaF9mbGFncyAmIG1hdGNoX3ByZXZfYXZhaWwpKQotICAgICAgICAgewotICAgICAgICAgICAgLy8gY2hlY2sgdGhhdCB3ZSdyZSBub3QgaW4gdGhlIG1pZGRsZSBvZiBcclxuIHNlcXVlbmNlCi0gICAgICAgICAgICBCaWRpSXRlcmF0b3IgdChwb3NpdGlvbik7Ci0gICAgICAgICAgICAtLXQ7Ci0gICAgICAgICAgICBpZigoKnQgPT0gc3RhdGljX2Nhc3Q8Y2hhcl90eXBlPignXHInKSkgJiYgKCpwb3NpdGlvbiA9PSBzdGF0aWNfY2FzdDxjaGFyX3R5cGU+KCdcbicpKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgIH0KLSAgICAgICAgIHBzdGF0ZSA9IHBzdGF0ZS0+bmV4dC5wOwotICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICB9Ci0gICB9Ci0gICBlbHNlIGlmKChtX21hdGNoX2ZsYWdzICYgbWF0Y2hfbm90X2VvbCkgPT0gMCkKLSAgIHsKLSAgICAgIHBzdGF0ZSA9IHBzdGF0ZS0+bmV4dC5wOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICB9Ci0gICByZXR1cm4gZmFsc2U7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX3dpbGQoKQotewotICAgaWYocG9zaXRpb24gPT0gbGFzdCkgCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICBpZihpc19zZXBhcmF0b3IoKnBvc2l0aW9uKSAmJiAoKG1hdGNoX2FueV9tYXNrICYgc3RhdGljX2Nhc3Q8Y29uc3QgcmVfZG90Kj4ocHN0YXRlKS0+bWFzaykgPT0gMCkpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICBpZigoKnBvc2l0aW9uID09IGNoYXJfdHlwZSgwKSkgJiYgKG1fbWF0Y2hfZmxhZ3MgJiBtYXRjaF9ub3RfZG90X251bGwpKQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgcHN0YXRlID0gcHN0YXRlLT5uZXh0LnA7Ci0gICArK3Bvc2l0aW9uOwotICAgcmV0dXJuIHRydWU7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX3dvcmRfYm91bmRhcnkoKQotewotICAgYm9vbCBiOyAvLyBpbmRjYXRlcyB3aGV0aGVyIG5leHQgY2hhcmFjdGVyIGlzIGEgd29yZCBjaGFyYWN0ZXIKLSAgIGlmKHBvc2l0aW9uICE9IGxhc3QpCi0gICB7Ci0gICAgICAvLyBwcmV2IGFuZCB0aGlzIGNoYXJhY3RlciBtdXN0IGJlIG9wcG9zaXRlczoKLSAgICNpZiBkZWZpbmVkKE5ETkJPT1NUX1JFR0VYX1VTRV9DX0xPQ0FMRSkgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgKF9fR05VQ19fID09IDIpICYmIChfX0dOVUNfTUlOT1JfXyA8IDk1KQotICAgICAgYiA9IHRyYWl0czo6aXNjdHlwZSgqcG9zaXRpb24sIG1fd29yZF9tYXNrKTsKLSAgICNlbHNlCi0gICAgICBiID0gdHJhaXRzX2luc3QuaXNjdHlwZSgqcG9zaXRpb24sIG1fd29yZF9tYXNrKTsKLSAgICNlbmRpZgotICAgfQotICAgZWxzZQotICAgewotICAgICAgYiA9IChtX21hdGNoX2ZsYWdzICYgbWF0Y2hfbm90X2VvdykgPyB0cnVlIDogZmFsc2U7Ci0gICB9Ci0gICBpZigocG9zaXRpb24gPT0gYmFja3N0b3ApICYmICgobV9tYXRjaF9mbGFncyAmIG1hdGNoX3ByZXZfYXZhaWwpID09IDApKQotICAgewotICAgICAgaWYobV9tYXRjaF9mbGFncyAmIG1hdGNoX25vdF9ib3cpCi0gICAgICAgICBiIF49IHRydWU7Ci0gICAgICBlbHNlCi0gICAgICAgICBiIF49IGZhbHNlOwotICAgfQotICAgZWxzZQotICAgewotICAgICAgLS1wb3NpdGlvbjsKLSAgICAgIGIgXj0gdHJhaXRzX2luc3QuaXNjdHlwZSgqcG9zaXRpb24sIG1fd29yZF9tYXNrKTsKLSAgICAgICsrcG9zaXRpb247Ci0gICB9Ci0gICBpZihiKQotICAgewotICAgICAgcHN0YXRlID0gcHN0YXRlLT5uZXh0LnA7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgIH0KLSAgIHJldHVybiBmYWxzZTsgLy8gbm8gbWF0Y2ggaWYgd2UgZ2V0IHRvIGhlcmUuLi4KLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfd2l0aGluX3dvcmQoKQotewotICAgaWYocG9zaXRpb24gPT0gbGFzdCkKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgIC8vIGJvdGggcHJldiBhbmQgdGhpcyBjaGFyYWN0ZXIgbXVzdCBiZSBtX3dvcmRfbWFzazoKLSAgIGJvb2wgcHJldiA9IHRyYWl0c19pbnN0LmlzY3R5cGUoKnBvc2l0aW9uLCBtX3dvcmRfbWFzayk7Ci0gICB7Ci0gICAgICBib29sIGI7Ci0gICAgICBpZigocG9zaXRpb24gPT0gYmFja3N0b3ApICYmICgobV9tYXRjaF9mbGFncyAmIG1hdGNoX3ByZXZfYXZhaWwpID09IDApKSAKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgIC0tcG9zaXRpb247Ci0gICAgICAgICBiID0gdHJhaXRzX2luc3QuaXNjdHlwZSgqcG9zaXRpb24sIG1fd29yZF9tYXNrKTsKLSAgICAgICAgICsrcG9zaXRpb247Ci0gICAgICB9Ci0gICAgICBpZihiID09IHByZXYpCi0gICAgICB7Ci0gICAgICAgICBwc3RhdGUgPSBwc3RhdGUtPm5leHQucDsKLSAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgfQotICAgfQotICAgcmV0dXJuIGZhbHNlOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF93b3JkX3N0YXJ0KCkKLXsKLSAgIGlmKHBvc2l0aW9uID09IGxhc3QpCi0gICAgICByZXR1cm4gZmFsc2U7IC8vIGNhbid0IGJlIHN0YXJ0aW5nIGEgd29yZCBpZiB3ZSdyZSBhbHJlYWR5IGF0IHRoZSBlbmQgb2YgaW5wdXQKLSAgIGlmKCF0cmFpdHNfaW5zdC5pc2N0eXBlKCpwb3NpdGlvbiwgbV93b3JkX21hc2spKQotICAgICAgcmV0dXJuIGZhbHNlOyAvLyBuZXh0IGNoYXJhY3RlciBpc24ndCBhIHdvcmQgY2hhcmFjdGVyCi0gICBpZigocG9zaXRpb24gPT0gYmFja3N0b3ApICYmICgobV9tYXRjaF9mbGFncyAmIG1hdGNoX3ByZXZfYXZhaWwpID09IDApKQotICAgewotICAgICAgaWYobV9tYXRjaF9mbGFncyAmIG1hdGNoX25vdF9ib3cpCi0gICAgICAgICByZXR1cm4gZmFsc2U7IC8vIG5vIHByZXZpb3VzIGlucHV0Ci0gICB9Ci0gICBlbHNlCi0gICB7Ci0gICAgICAvLyBvdGhlcndpc2UgaW5zaWRlIGJ1ZmZlcjoKLSAgICAgIEJpZGlJdGVyYXRvciB0KHBvc2l0aW9uKTsKLSAgICAgIC0tdDsKLSAgICAgIGlmKHRyYWl0c19pbnN0LmlzY3R5cGUoKnQsIG1fd29yZF9tYXNrKSkKLSAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gcHJldmlvdXMgY2hhcmFjdGVyIG5vdCBub24td29yZAotICAgfQotICAgLy8gT0sgd2UgaGF2ZSBhIG1hdGNoOgotICAgcHN0YXRlID0gcHN0YXRlLT5uZXh0LnA7Ci0gICByZXR1cm4gdHJ1ZTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfd29yZF9lbmQoKQotewotICAgaWYoKHBvc2l0aW9uID09IGJhY2tzdG9wKSAmJiAoKG1fbWF0Y2hfZmxhZ3MgJiBtYXRjaF9wcmV2X2F2YWlsKSA9PSAwKSkKLSAgICAgIHJldHVybiBmYWxzZTsgIC8vIHN0YXJ0IG9mIGJ1ZmZlciBjYW4ndCBiZSBlbmQgb2Ygd29yZAotICAgQmlkaUl0ZXJhdG9yIHQocG9zaXRpb24pOwotICAgLS10OwotICAgaWYodHJhaXRzX2luc3QuaXNjdHlwZSgqdCwgbV93b3JkX21hc2spID09IGZhbHNlKQotICAgICAgcmV0dXJuIGZhbHNlOyAgLy8gcHJldmlvdXMgY2hhcmFjdGVyIHdhc24ndCBhIHdvcmQgY2hhcmFjdGVyCi0KLSAgIGlmKHBvc2l0aW9uID09IGxhc3QpCi0gICB7Ci0gICAgICBpZihtX21hdGNoX2ZsYWdzICYgbWF0Y2hfbm90X2VvdykKLSAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gZW5kIG9mIGJ1ZmZlciBidXQgbm90IGVuZCBvZiB3b3JkCi0gICB9Ci0gICBlbHNlCi0gICB7Ci0gICAgICAvLyBvdGhlcndpc2UgaW5zaWRlIGJ1ZmZlcjoKLSAgICAgIGlmKHRyYWl0c19pbnN0LmlzY3R5cGUoKnBvc2l0aW9uLCBtX3dvcmRfbWFzaykpCi0gICAgICAgICByZXR1cm4gZmFsc2U7IC8vIG5leHQgY2hhcmFjdGVyIGlzIGEgd29yZCBjaGFyYWN0ZXIKLSAgIH0KLSAgIHBzdGF0ZSA9IHBzdGF0ZS0+bmV4dC5wOwotICAgcmV0dXJuIHRydWU7ICAgICAgLy8gaWYgd2UgZmFsbCB0aHJvdWdoIHRvIGhlcmUgdGhlbiB3ZSd2ZSBzdWNjZWVkZWQKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfYnVmZmVyX3N0YXJ0KCkKLXsKLSAgIGlmKChwb3NpdGlvbiAhPSBiYWNrc3RvcCkgfHwgKG1fbWF0Y2hfZmxhZ3MgJiBtYXRjaF9ub3RfYm9iKSkKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgIC8vIE9LIG1hdGNoOgotICAgcHN0YXRlID0gcHN0YXRlLT5uZXh0LnA7Ci0gICByZXR1cm4gdHJ1ZTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfYnVmZmVyX2VuZCgpCi17Ci0gICBpZigocG9zaXRpb24gIT0gbGFzdCkgfHwgKG1fbWF0Y2hfZmxhZ3MgJiBtYXRjaF9ub3RfZW9iKSkKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgIC8vIE9LIG1hdGNoOgotICAgcHN0YXRlID0gcHN0YXRlLT5uZXh0LnA7Ci0gICByZXR1cm4gdHJ1ZTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfYmFja3JlZigpCi17Ci0gICAvLwotICAgLy8gQ29tcGFyZSB3aXRoIHdoYXQgd2UgcHJldmlvdXNseSBtYXRjaGVkLgotICAgLy8gTm90ZSB0aGF0IHRoaXMgc3VjY2VlZHMgaWYgdGhlIGJhY2tyZWYgZGlkIG5vdCBwYXJ0aXNpcGF0ZQotICAgLy8gaW4gdGhlIG1hdGNoLCB0aGlzIGlzIGluIGxpbmUgd2l0aCBFQ01BU2NyaXB0LCBidXQgbm90IFBlcmwKLSAgIC8vIG9yIFBDUkUuCi0gICAvLwotICAgaW50IGluZGV4ID0gc3RhdGljX2Nhc3Q8Y29uc3QgcmVfYnJhY2UqPihwc3RhdGUpLT5pbmRleDsKLSAgIGlmKGluZGV4ID49IDEwMDAwKQotICAgewotICAgICAgbmFtZWRfc3ViZXhwcmVzc2lvbnM6OnJhbmdlX3R5cGUgciA9IHJlLmdldF9kYXRhKCkuZXF1YWxfcmFuZ2UoaW5kZXgpOwotICAgICAgTkROQk9PU1RfQVNTRVJUKHIuZmlyc3QgIT0gci5zZWNvbmQpOwotICAgICAgZG8KLSAgICAgIHsKLSAgICAgICAgIGluZGV4ID0gci5maXJzdC0+aW5kZXg7Ci0gICAgICAgICArK3IuZmlyc3Q7Ci0gICAgICB9d2hpbGUoKHIuZmlyc3QgIT0gci5zZWNvbmQpICYmICgoKm1fcHJlc3VsdClbaW5kZXhdLm1hdGNoZWQgIT0gdHJ1ZSkpOwotICAgfQotCi0gICBpZigobV9tYXRjaF9mbGFncyAmIG1hdGNoX3BlcmwpICYmICEoKm1fcHJlc3VsdClbaW5kZXhdLm1hdGNoZWQpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgIEJpZGlJdGVyYXRvciBpID0gKCptX3ByZXN1bHQpW2luZGV4XS5maXJzdDsKLSAgIEJpZGlJdGVyYXRvciBqID0gKCptX3ByZXN1bHQpW2luZGV4XS5zZWNvbmQ7Ci0gICB3aGlsZShpICE9IGopCi0gICB7Ci0gICAgICBpZigocG9zaXRpb24gPT0gbGFzdCkgfHwgKHRyYWl0c19pbnN0LnRyYW5zbGF0ZSgqcG9zaXRpb24sIGljYXNlKSAhPSB0cmFpdHNfaW5zdC50cmFuc2xhdGUoKmksIGljYXNlKSkpCi0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICArK2k7Ci0gICAgICArK3Bvc2l0aW9uOwotICAgfQotICAgcHN0YXRlID0gcHN0YXRlLT5uZXh0LnA7Ci0gICByZXR1cm4gdHJ1ZTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfbG9uZ19zZXQoKQotewotICAgdHlwZWRlZiB0eXBlbmFtZSB0cmFpdHM6OmNoYXJfY2xhc3NfdHlwZSBjaGFyX2NsYXNzX3R5cGU7Ci0gICAvLyBsZXQgdGhlIHRyYWl0cyBjbGFzcyBkbyB0aGUgd29yazoKLSAgIGlmKHBvc2l0aW9uID09IGxhc3QpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICBCaWRpSXRlcmF0b3IgdCA9IHJlX2lzX3NldF9tZW1iZXIocG9zaXRpb24sIGxhc3QsIHN0YXRpY19jYXN0PGNvbnN0IHJlX3NldF9sb25nPGNoYXJfY2xhc3NfdHlwZT4qPihwc3RhdGUpLCByZS5nZXRfZGF0YSgpLCBpY2FzZSk7Ci0gICBpZih0ICE9IHBvc2l0aW9uKQotICAgewotICAgICAgcHN0YXRlID0gcHN0YXRlLT5uZXh0LnA7Ci0gICAgICBwb3NpdGlvbiA9IHQ7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgIH0KLSAgIHJldHVybiBmYWxzZTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfc2V0KCkKLXsKLSAgIGlmKHBvc2l0aW9uID09IGxhc3QpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICBpZihzdGF0aWNfY2FzdDxjb25zdCByZV9zZXQqPihwc3RhdGUpLT5fbWFwW3N0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHRyYWl0c19pbnN0LnRyYW5zbGF0ZSgqcG9zaXRpb24sIGljYXNlKSldKQotICAgewotICAgICAgcHN0YXRlID0gcHN0YXRlLT5uZXh0LnA7Ci0gICAgICArK3Bvc2l0aW9uOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICB9Ci0gICByZXR1cm4gZmFsc2U7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2p1bXAoKQotewotICAgcHN0YXRlID0gc3RhdGljX2Nhc3Q8Y29uc3QgcmVfanVtcCo+KHBzdGF0ZSktPmFsdC5wOwotICAgcmV0dXJuIHRydWU7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2NvbWJpbmluZygpCi17Ci0gICBpZihwb3NpdGlvbiA9PSBsYXN0KQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgaWYoaXNfY29tYmluaW5nKHRyYWl0c19pbnN0LnRyYW5zbGF0ZSgqcG9zaXRpb24sIGljYXNlKSkpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICArK3Bvc2l0aW9uOwotICAgd2hpbGUoKHBvc2l0aW9uICE9IGxhc3QpICYmIGlzX2NvbWJpbmluZyh0cmFpdHNfaW5zdC50cmFuc2xhdGUoKnBvc2l0aW9uLCBpY2FzZSkpKQotICAgICAgKytwb3NpdGlvbjsKLSAgIHBzdGF0ZSA9IHBzdGF0ZS0+bmV4dC5wOwotICAgcmV0dXJuIHRydWU7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX3NvZnRfYnVmZmVyX2VuZCgpCi17Ci0gICBpZihtX21hdGNoX2ZsYWdzICYgbWF0Y2hfbm90X2VvYikKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgIEJpZGlJdGVyYXRvciBwKHBvc2l0aW9uKTsKLSAgIHdoaWxlKChwICE9IGxhc3QpICYmIGlzX3NlcGFyYXRvcih0cmFpdHNfaW5zdC50cmFuc2xhdGUoKnAsIGljYXNlKSkpKytwOwotICAgaWYocCAhPSBsYXN0KQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgcHN0YXRlID0gcHN0YXRlLT5uZXh0LnA7Ci0gICByZXR1cm4gdHJ1ZTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfcmVzdGFydF9jb250aW51ZSgpCi17Ci0gICBpZihwb3NpdGlvbiA9PSBzZWFyY2hfYmFzZSkKLSAgIHsKLSAgICAgIHBzdGF0ZSA9IHBzdGF0ZS0+bmV4dC5wOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICB9Ci0gICByZXR1cm4gZmFsc2U7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2JhY2tzdGVwKCkKLXsKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQxMjcpCi0jZW5kaWYKLSAgIGlmKCA6Om5kbmJvb3N0Ojppc19yYW5kb21fYWNjZXNzX2l0ZXJhdG9yPEJpZGlJdGVyYXRvcj46OnZhbHVlKQotICAgewotICAgICAgc3RkOjpwdHJkaWZmX3QgbWF4bGVuID0gOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpkaXN0YW5jZShiYWNrc3RvcCwgcG9zaXRpb24pOwotICAgICAgaWYobWF4bGVuIDwgc3RhdGljX2Nhc3Q8Y29uc3QgcmVfYnJhY2UqPihwc3RhdGUpLT5pbmRleCkKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIHN0ZDo6YWR2YW5jZShwb3NpdGlvbiwgLXN0YXRpY19jYXN0PGNvbnN0IHJlX2JyYWNlKj4ocHN0YXRlKS0+aW5kZXgpOwotICAgfQotICAgZWxzZQotICAgewotICAgICAgaW50IGMgPSBzdGF0aWNfY2FzdDxjb25zdCByZV9icmFjZSo+KHBzdGF0ZSktPmluZGV4OwotICAgICAgd2hpbGUoYy0tKQotICAgICAgewotICAgICAgICAgaWYocG9zaXRpb24gPT0gYmFja3N0b3ApCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAtLXBvc2l0aW9uOwotICAgICAgfQotICAgfQotICAgcHN0YXRlID0gcHN0YXRlLT5uZXh0LnA7Ci0gICByZXR1cm4gdHJ1ZTsKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotaW5saW5lIGJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9hc3NlcnRfYmFja3JlZigpCi17Ci0gICAvLyByZXR1cm4gdHJ1ZSBpZiBtYXJrZWQgc3ViLWV4cHJlc3Npb24gTiBoYXMgYmVlbiBtYXRjaGVkOgotICAgaW50IGluZGV4ID0gc3RhdGljX2Nhc3Q8Y29uc3QgcmVfYnJhY2UqPihwc3RhdGUpLT5pbmRleDsKLSAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0gICBpZihpbmRleCA9PSA5OTk5KQotICAgewotICAgICAgLy8gTWFnaWMgdmFsdWUgZm9yIGEgKERFRklORSkgYmxvY2s6Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICB9Ci0gICBlbHNlIGlmKGluZGV4ID4gMCkKLSAgIHsKLSAgICAgIC8vIEhhdmUgd2UgbWF0Y2hlZCBzdWJleHByZXNzaW9uICJpbmRleCI/Ci0gICAgICAvLyBDaGVjayBpZiBpbmRleCBpcyBhIGhhc2ggdmFsdWU6Ci0gICAgICBpZihpbmRleCA+PSAxMDAwMCkKLSAgICAgIHsKLSAgICAgICAgIG5hbWVkX3N1YmV4cHJlc3Npb25zOjpyYW5nZV90eXBlIHIgPSByZS5nZXRfZGF0YSgpLmVxdWFsX3JhbmdlKGluZGV4KTsKLSAgICAgICAgIHdoaWxlKHIuZmlyc3QgIT0gci5zZWNvbmQpCi0gICAgICAgICB7Ci0gICAgICAgICAgICBpZigoKm1fcHJlc3VsdClbci5maXJzdC0+aW5kZXhdLm1hdGNoZWQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICByZXN1bHQgPSB0cnVlOwotICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICArK3IuZmlyc3Q7Ci0gICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgICByZXN1bHQgPSAoKm1fcHJlc3VsdClbaW5kZXhdLm1hdGNoZWQ7Ci0gICAgICB9Ci0gICAgICBwc3RhdGUgPSBwc3RhdGUtPm5leHQucDsKLSAgIH0KLSAgIGVsc2UKLSAgIHsKLSAgICAgIC8vIEhhdmUgd2UgcmVjdXJzZWQgaW50byBzdWJleHByZXNzaW9uICJpbmRleCI/Ci0gICAgICAvLyBJZiBpbmRleCA9PSAwIHRoZW4gY2hlY2sgZm9yIGFueSByZWN1cnNpb24gYXQgYWxsLCBvdGhlcndpc2UgZm9yIHJlY3Vyc2lvbiB0byAtaW5kZXgtMS4KLSAgICAgIGludCBpZHggPSAtaW5kZXgtMTsKLSAgICAgIGlmKGlkeCA+PSAxMDAwMCkKLSAgICAgIHsKLSAgICAgICAgIG5hbWVkX3N1YmV4cHJlc3Npb25zOjpyYW5nZV90eXBlIHIgPSByZS5nZXRfZGF0YSgpLmVxdWFsX3JhbmdlKGlkeCk7Ci0gICAgICAgICBpbnQgc3RhY2tfaW5kZXggPSByZWN1cnNpb25fc3RhY2suZW1wdHkoKSA/IC0xIDogcmVjdXJzaW9uX3N0YWNrLmJhY2soKS5pZHg7Ci0gICAgICAgICB3aGlsZShyLmZpcnN0ICE9IHIuc2Vjb25kKQotICAgICAgICAgewotICAgICAgICAgICAgcmVzdWx0IHw9IChzdGFja19pbmRleCA9PSByLmZpcnN0LT5pbmRleCk7Ci0gICAgICAgICAgICBpZihyZXN1bHQpYnJlYWs7Ci0gICAgICAgICAgICArK3IuZmlyc3Q7Ci0gICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgICByZXN1bHQgPSAhcmVjdXJzaW9uX3N0YWNrLmVtcHR5KCkgJiYgKChyZWN1cnNpb25fc3RhY2suYmFjaygpLmlkeCA9PSBpZHgpIHx8IChpbmRleCA9PSAwKSk7Ci0gICAgICB9Ci0gICAgICBwc3RhdGUgPSBwc3RhdGUtPm5leHQucDsKLSAgIH0KLSAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX3RvZ2dsZV9jYXNlKCkKLXsKLSAgIC8vIGNoYW5nZSBvdXIgY2FzZSBzZW5zaXRpdml0eToKLSAgIHRoaXMtPmljYXNlID0gc3RhdGljX2Nhc3Q8Y29uc3QgcmVfY2FzZSo+KHBzdGF0ZSktPmljYXNlOwotICAgcHN0YXRlID0gcHN0YXRlLT5uZXh0LnA7Ci0gICByZXR1cm4gdHJ1ZTsKLX0KLQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjpmaW5kX3Jlc3RhcnRfYW55KCkKLXsKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQxMjcpCi0jZW5kaWYKLSAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIF9tYXAgPSByZS5nZXRfbWFwKCk7Ci0gICB3aGlsZSh0cnVlKQotICAgewotICAgICAgLy8gc2tpcCBldmVyeXRoaW5nIHdlIGNhbid0IG1hdGNoOgotICAgICAgd2hpbGUoKHBvc2l0aW9uICE9IGxhc3QpICYmICFjYW5fc3RhcnQoKnBvc2l0aW9uLCBfbWFwLCAodW5zaWduZWQgY2hhciltYXNrX2FueSkgKQotICAgICAgICAgKytwb3NpdGlvbjsKLSAgICAgIGlmKHBvc2l0aW9uID09IGxhc3QpCi0gICAgICB7Ci0gICAgICAgICAvLyBydW4gb3V0IG9mIGNoYXJhY3RlcnMsIHRyeSBhIG51bGwgbWF0Y2ggaWYgcG9zc2libGU6Ci0gICAgICAgICBpZihyZS5jYW5fYmVfbnVsbCgpKQotICAgICAgICAgICAgcmV0dXJuIG1hdGNoX3ByZWZpeCgpOwotICAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgICAvLyBub3cgdHJ5IGFuZCBvYnRhaW4gYSBtYXRjaDoKLSAgICAgIGlmKG1hdGNoX3ByZWZpeCgpKQotICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICBpZihwb3NpdGlvbiA9PSBsYXN0KQotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgKytwb3NpdGlvbjsKLSAgIH0KLSAgIHJldHVybiBmYWxzZTsKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OmZpbmRfcmVzdGFydF93b3JkKCkKLXsKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQxMjcpCi0jZW5kaWYKLSAgIC8vIGRvIHNlYXJjaCBvcHRpbWlzZWQgZm9yIHdvcmQgc3RhcnRzOgotICAgY29uc3QgdW5zaWduZWQgY2hhciogX21hcCA9IHJlLmdldF9tYXAoKTsKLSAgIGlmKChtX21hdGNoX2ZsYWdzICYgbWF0Y2hfcHJldl9hdmFpbCkgfHwgKHBvc2l0aW9uICE9IGJhc2UpKQotICAgICAgLS1wb3NpdGlvbjsKLSAgIGVsc2UgaWYobWF0Y2hfcHJlZml4KCkpCi0gICAgICByZXR1cm4gdHJ1ZTsKLSAgIGRvCi0gICB7Ci0gICAgICB3aGlsZSgocG9zaXRpb24gIT0gbGFzdCkgJiYgdHJhaXRzX2luc3QuaXNjdHlwZSgqcG9zaXRpb24sIG1fd29yZF9tYXNrKSkKLSAgICAgICAgICsrcG9zaXRpb247Ci0gICAgICB3aGlsZSgocG9zaXRpb24gIT0gbGFzdCkgJiYgIXRyYWl0c19pbnN0LmlzY3R5cGUoKnBvc2l0aW9uLCBtX3dvcmRfbWFzaykpCi0gICAgICAgICArK3Bvc2l0aW9uOwotICAgICAgaWYocG9zaXRpb24gPT0gbGFzdCkKLSAgICAgICAgIGJyZWFrOwotCi0gICAgICBpZihjYW5fc3RhcnQoKnBvc2l0aW9uLCBfbWFwLCAodW5zaWduZWQgY2hhciltYXNrX2FueSkgKQotICAgICAgewotICAgICAgICAgaWYobWF0Y2hfcHJlZml4KCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0KLSAgICAgIGlmKHBvc2l0aW9uID09IGxhc3QpCi0gICAgICAgICBicmVhazsKLSAgIH0gd2hpbGUodHJ1ZSk7Ci0gICByZXR1cm4gZmFsc2U7Ci0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjpmaW5kX3Jlc3RhcnRfbGluZSgpCi17Ci0gICAvLyBkbyBzZWFyY2ggb3B0aW1pc2VkIGZvciBsaW5lIHN0YXJ0czoKLSAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIF9tYXAgPSByZS5nZXRfbWFwKCk7Ci0gICBpZihtYXRjaF9wcmVmaXgoKSkKLSAgICAgIHJldHVybiB0cnVlOwotICAgd2hpbGUocG9zaXRpb24gIT0gbGFzdCkKLSAgIHsKLSAgICAgIHdoaWxlKChwb3NpdGlvbiAhPSBsYXN0KSAmJiAhaXNfc2VwYXJhdG9yKCpwb3NpdGlvbikpCi0gICAgICAgICArK3Bvc2l0aW9uOwotICAgICAgaWYocG9zaXRpb24gPT0gbGFzdCkKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICsrcG9zaXRpb247Ci0gICAgICBpZihwb3NpdGlvbiA9PSBsYXN0KQotICAgICAgewotICAgICAgICAgaWYocmUuY2FuX2JlX251bGwoKSAmJiBtYXRjaF9wcmVmaXgoKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotCi0gICAgICBpZiggY2FuX3N0YXJ0KCpwb3NpdGlvbiwgX21hcCwgKHVuc2lnbmVkIGNoYXIpbWFza19hbnkpICkKLSAgICAgIHsKLSAgICAgICAgIGlmKG1hdGNoX3ByZWZpeCgpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICB9Ci0gICAgICBpZihwb3NpdGlvbiA9PSBsYXN0KQotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgLy8rK3Bvc2l0aW9uOwotICAgfQotICAgcmV0dXJuIGZhbHNlOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjpmaW5kX3Jlc3RhcnRfYnVmKCkKLXsKLSAgIGlmKChwb3NpdGlvbiA9PSBiYXNlKSAmJiAoKG1fbWF0Y2hfZmxhZ3MgJiBtYXRjaF9ub3RfYm9iKSA9PSAwKSkKLSAgICAgIHJldHVybiBtYXRjaF9wcmVmaXgoKTsKLSAgIHJldHVybiBmYWxzZTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6ZmluZF9yZXN0YXJ0X2xpdCgpCi17Ci0jaWYgMAotICAgaWYocG9zaXRpb24gPT0gbGFzdCkKLSAgICAgIHJldHVybiBmYWxzZTsgLy8gY2FuJ3QgcG9zc2libHkgbWF0Y2ggaWYgd2UncmUgYXQgdGhlIGVuZCBhbHJlYWR5Ci0KLSAgIHVuc2lnbmVkIHR5cGUgPSAobV9tYXRjaF9mbGFncyAmIG1hdGNoX2NvbnRpbnVvdXMpID8gCi0gICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KHJlZ2Jhc2U6OnJlc3RhcnRfY29udGludWUpIAotICAgICAgICAgOiBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KHJlLmdldF9yZXN0YXJ0X3R5cGUoKSk7Ci0KLSAgIGNvbnN0IGttcF9pbmZvPGNoYXJfdHlwZT4qIGluZm8gPSBhY2Nlc3M6OmdldF9rbXAocmUpOwotICAgaW50IGxlbiA9IGluZm8tPmxlbjsKLSAgIGNvbnN0IGNoYXJfdHlwZSogeCA9IGluZm8tPnBzdHI7Ci0gICBpbnQgaiA9IDA7IAotICAgd2hpbGUgKHBvc2l0aW9uICE9IGxhc3QpIAotICAgewotICAgICAgd2hpbGUoKGogPiAtMSkgJiYgKHhbal0gIT0gdHJhaXRzX2luc3QudHJhbnNsYXRlKCpwb3NpdGlvbiwgaWNhc2UpKSkgCi0gICAgICAgICBqID0gaW5mby0+a21wX25leHRbal07Ci0gICAgICArK3Bvc2l0aW9uOwotICAgICAgKytqOwotICAgICAgaWYoaiA+PSBsZW4pIAotICAgICAgewotICAgICAgICAgaWYodHlwZSA9PSByZWdiYXNlOjpyZXN0YXJ0X2ZpeGVkX2xpdCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIHN0ZDo6YWR2YW5jZShwb3NpdGlvbiwgLWopOwotICAgICAgICAgICAgcmVzdGFydCA9IHBvc2l0aW9uOwotICAgICAgICAgICAgc3RkOjphZHZhbmNlKHJlc3RhcnQsIGxlbik7Ci0gICAgICAgICAgICBtX3Jlc3VsdC5zZXRfZmlyc3QocG9zaXRpb24pOwotICAgICAgICAgICAgbV9yZXN1bHQuc2V0X3NlY29uZChyZXN0YXJ0KTsKLSAgICAgICAgICAgIHBvc2l0aW9uID0gcmVzdGFydDsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgfQotICAgICAgICAgZWxzZQotICAgICAgICAgewotICAgICAgICAgICAgcmVzdGFydCA9IHBvc2l0aW9uOwotICAgICAgICAgICAgc3RkOjphZHZhbmNlKHBvc2l0aW9uLCAtaik7Ci0gICAgICAgICAgICBpZihtYXRjaF9wcmVmaXgoKSkKLSAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgZm9yKGludCBrID0gMDsgKHJlc3RhcnQgIT0gcG9zaXRpb24pICYmIChrIDwgaik7ICsraywgLS1yZXN0YXJ0KQotICAgICAgICAgICAgICAgICAgICAge30gLy8gZHdhIDEwLzIwLzIwMDAgLSB3YXJuaW5nIHN1cHByZXNzaW9uIGZvciBNV0NXCi0gICAgICAgICAgICAgICBpZihyZXN0YXJ0ICE9IGxhc3QpCi0gICAgICAgICAgICAgICAgICArK3Jlc3RhcnQ7Ci0gICAgICAgICAgICAgICBwb3NpdGlvbiA9IHJlc3RhcnQ7Ci0gICAgICAgICAgICAgICBqID0gMDsgIC8vd2UgY291bGQgZG8gYmV0dGVyIHRoYW4gdGhpcy4uLgotICAgICAgICAgICAgfQotICAgICAgICAgfQotICAgICAgfQotICAgfQotICAgaWYoKG1fbWF0Y2hfZmxhZ3MgJiBtYXRjaF9wYXJ0aWFsKSAmJiAocG9zaXRpb24gPT0gbGFzdCkgJiYgaikKLSAgIHsKLSAgICAgIC8vIHdlIG5lZWQgdG8gY2hlY2sgZm9yIGEgcGFydGlhbCBtYXRjaDoKLSAgICAgIHJlc3RhcnQgPSBwb3NpdGlvbjsKLSAgICAgIHN0ZDo6YWR2YW5jZShwb3NpdGlvbiwgLWopOwotICAgICAgcmV0dXJuIG1hdGNoX3ByZWZpeCgpOwotICAgfQotI2VuZGlmCi0gICByZXR1cm4gZmFsc2U7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIHJlX2RldGFpbAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotIyAgcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLSNpZmRlZiBfX0JPUkxBTkRDX18KLSMgIHByYWdtYSBvcHRpb24gcG9wCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9TVUZGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcGVybF9tYXRjaGVyX25vbl9yZWN1cnNpdmUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9wZXJsX21hdGNoZXJfbm9uX3JlY3Vyc2l2ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMyODg1NmMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9wZXJsX21hdGNoZXJfbm9uX3JlY3Vyc2l2ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNjQyICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IChjKSAyMDAyCi0gKiBKb2huIE1hZGRvY2sKLSAqCi0gKiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLSAqIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotICogTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqLwotCi0gLyoKLSAgKiAgIExPQ0FUSU9OOiAgICBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0gICogICBGSUxFICAgICAgICAgcGVybF9tYXRjaGVyX2NvbW1vbi5jcHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IERlZmluaXRpb25zIG9mIHBlcmxfbWF0Y2hlciBtZW1iZXIgZnVuY3Rpb25zIHRoYXQgYXJlIAotICAqICAgICAgICAgICAgICAgIHNwZWNpZmljIHRvIHRoZSBub24tcmVjdXJzaXZlIGltcGxlbWVudGF0aW9uLgotICAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1Y0X1BFUkxfTUFUQ0hFUl9OT05fUkVDVVJTSVZFX0hQUAotI2RlZmluZSBORE5CT09TVF9SRUdFWF9WNF9QRVJMX01BVENIRVJfTk9OX1JFQ1VSU0lWRV9IUFAKLQotI2luY2x1ZGUgPG5ldz4KLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1BSRUZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSMgIHByYWdtYSB3YXJuaW5nKHB1c2gpCi0jICBwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0ODAwKQotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdHsKLW5hbWVzcGFjZSByZV9kZXRhaWx7Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPgotaW5saW5lIHZvaWQgaW5wbGFjZV9kZXN0cm95KFQqIHApCi17Ci0gICAodm9pZClwOyAgLy8gd2FybmluZyBzdXBwcmVzc2lvbgotICAgcC0+flQoKTsKLX0KLQotc3RydWN0IHNhdmVkX3N0YXRlCi17Ci0gICB1bmlvbnsKLSAgICAgIHVuc2lnbmVkIGludCBzdGF0ZV9pZDsKLSAgICAgIC8vIHRoaXMgcGFkZGluZyBlbnN1cmVzIGNvcnJlY3QgYWxpZ25tZW50IG9uIDY0LWJpdCBwbGF0Zm9ybXM6Ci0gICAgICBzdGQ6OnNpemVfdCBwYWRkaW5nMTsKLSAgICAgIHN0ZDo6cHRyZGlmZl90IHBhZGRpbmcyOwotICAgICAgdm9pZCogcGFkZGluZzM7Ci0gICB9OwotICAgc2F2ZWRfc3RhdGUodW5zaWduZWQgaSkgOiBzdGF0ZV9pZChpKSB7fQotfTsKLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvcj4KLXN0cnVjdCBzYXZlZF9tYXRjaGVkX3BhcmVuIDogcHVibGljIHNhdmVkX3N0YXRlCi17Ci0gICBpbnQgaW5kZXg7Ci0gICBzdWJfbWF0Y2g8QmlkaUl0ZXJhdG9yPiBzdWI7Ci0gICBzYXZlZF9tYXRjaGVkX3BhcmVuKGludCBpLCBjb25zdCBzdWJfbWF0Y2g8QmlkaUl0ZXJhdG9yPiYgcykgOiBzYXZlZF9zdGF0ZSgxKSwgaW5kZXgoaSksIHN1YihzKXt9OwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvcj4KLXN0cnVjdCBzYXZlZF9wb3NpdGlvbiA6IHB1YmxpYyBzYXZlZF9zdGF0ZQotewotICAgY29uc3QgcmVfc3ludGF4X2Jhc2UqIHBzdGF0ZTsKLSAgIEJpZGlJdGVyYXRvciBwb3NpdGlvbjsKLSAgIHNhdmVkX3Bvc2l0aW9uKGNvbnN0IHJlX3N5bnRheF9iYXNlKiBwcywgQmlkaUl0ZXJhdG9yIHBvcywgaW50IGkpIDogc2F2ZWRfc3RhdGUoaSksIHBzdGF0ZShwcyksIHBvc2l0aW9uKHBvcyl7fTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3I+Ci1zdHJ1Y3Qgc2F2ZWRfYXNzZXJ0aW9uIDogcHVibGljIHNhdmVkX3Bvc2l0aW9uPEJpZGlJdGVyYXRvcj4KLXsKLSAgIGJvb2wgcG9zaXRpdmU7Ci0gICBzYXZlZF9hc3NlcnRpb24oYm9vbCBwLCBjb25zdCByZV9zeW50YXhfYmFzZSogcHMsIEJpZGlJdGVyYXRvciBwb3MpIAotICAgICAgOiBzYXZlZF9wb3NpdGlvbjxCaWRpSXRlcmF0b3I+KHBzLCBwb3MsIHNhdmVkX3R5cGVfYXNzZXJ0aW9uKSwgcG9zaXRpdmUocCl7fTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3I+Ci1zdHJ1Y3Qgc2F2ZWRfcmVwZWF0ZXIgOiBwdWJsaWMgc2F2ZWRfc3RhdGUKLXsKLSAgIHJlcGVhdGVyX2NvdW50PEJpZGlJdGVyYXRvcj4gY291bnQ7Ci0gICBzYXZlZF9yZXBlYXRlcihpbnQgaSwgcmVwZWF0ZXJfY291bnQ8QmlkaUl0ZXJhdG9yPioqIHMsIEJpZGlJdGVyYXRvciBzdGFydCkgCi0gICAgICA6IHNhdmVkX3N0YXRlKHNhdmVkX3N0YXRlX3JlcGVhdGVyX2NvdW50KSwgY291bnQoaSxzLHN0YXJ0KXt9Ci19OwotCi1zdHJ1Y3Qgc2F2ZWRfZXh0cmFfYmxvY2sgOiBwdWJsaWMgc2F2ZWRfc3RhdGUKLXsKLSAgIHNhdmVkX3N0YXRlICpiYXNlLCAqZW5kOwotICAgc2F2ZWRfZXh0cmFfYmxvY2soc2F2ZWRfc3RhdGUqIGIsIHNhdmVkX3N0YXRlKiBlKSAKLSAgICAgIDogc2F2ZWRfc3RhdGUoc2F2ZWRfc3RhdGVfZXh0cmFfYmxvY2spLCBiYXNlKGIpLCBlbmQoZSkge30KLX07Ci0KLXN0cnVjdCBzYXZlX3N0YXRlX2luaXQKLXsKLSAgIHNhdmVkX3N0YXRlKiogc3RhY2s7Ci0gICBzYXZlX3N0YXRlX2luaXQoc2F2ZWRfc3RhdGUqKiBiYXNlLCBzYXZlZF9zdGF0ZSoqIGVuZCkKLSAgICAgIDogc3RhY2soYmFzZSkKLSAgIHsKLSAgICAgICpiYXNlID0gc3RhdGljX2Nhc3Q8c2F2ZWRfc3RhdGUqPihnZXRfbWVtX2Jsb2NrKCkpOwotICAgICAgKmVuZCA9IHJlaW50ZXJwcmV0X2Nhc3Q8c2F2ZWRfc3RhdGUqPihyZWludGVycHJldF9jYXN0PGNoYXIqPigqYmFzZSkrTkROQk9PU1RfUkVHRVhfQkxPQ0tTSVpFKTsKLSAgICAgIC0tKCplbmQpOwotICAgICAgKHZvaWQpIG5ldyAoKmVuZClzYXZlZF9zdGF0ZSgwKTsKLSAgICAgIE5ETkJPT1NUX0FTU0VSVCgqZW5kID4gKmJhc2UpOwotICAgfQotICAgfnNhdmVfc3RhdGVfaW5pdCgpCi0gICB7Ci0gICAgICBwdXRfbWVtX2Jsb2NrKCpzdGFjayk7Ci0gICAgICAqc3RhY2sgPSAwOwotICAgfQotfTsKLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvcj4KLXN0cnVjdCBzYXZlZF9zaW5nbGVfcmVwZWF0IDogcHVibGljIHNhdmVkX3N0YXRlCi17Ci0gICBzdGQ6OnNpemVfdCBjb3VudDsKLSAgIGNvbnN0IHJlX3JlcGVhdCogcmVwOwotICAgQmlkaUl0ZXJhdG9yIGxhc3RfcG9zaXRpb247Ci0gICBzYXZlZF9zaW5nbGVfcmVwZWF0KHN0ZDo6c2l6ZV90IGMsIGNvbnN0IHJlX3JlcGVhdCogciwgQmlkaUl0ZXJhdG9yIGxwLCBpbnQgYXJnX2lkKSAKLSAgICAgIDogc2F2ZWRfc3RhdGUoYXJnX2lkKSwgY291bnQoYyksIHJlcChyKSwgbGFzdF9wb3NpdGlvbihscCl7fQotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFJlc3VsdHM+Ci1zdHJ1Y3Qgc2F2ZWRfcmVjdXJzaW9uIDogcHVibGljIHNhdmVkX3N0YXRlCi17Ci0gICBzYXZlZF9yZWN1cnNpb24oaW50IGlkeCwgY29uc3QgcmVfc3ludGF4X2Jhc2UqIHAsIFJlc3VsdHMqIHByKSAKLSAgICAgIDogc2F2ZWRfc3RhdGUoMTQpLCByZWN1cnNpb25faWQoaWR4KSwgcHJldHVybl9hZGRyZXNzKHApLCByZXN1bHRzKCpwcikKLSAgIHt9Ci0gICBpbnQgcmVjdXJzaW9uX2lkOwotICAgY29uc3QgcmVfc3ludGF4X2Jhc2UqIHByZXR1cm5fYWRkcmVzczsKLSAgIFJlc3VsdHMgcmVzdWx0czsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2FsbF9zdGF0ZXMoKQotewotICAgc3RhdGljIG1hdGNoZXJfcHJvY190eXBlIGNvbnN0IHNfbWF0Y2hfdnRhYmxlWzMwXSA9IAotICAgewotICAgICAgKCZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX3N0YXJ0bWFyayksCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9lbmRtYXJrLAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfbGl0ZXJhbCwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX3N0YXJ0X2xpbmUsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9lbmRfbGluZSwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX3dpbGQsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9tYXRjaCwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX3dvcmRfYm91bmRhcnksCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF93aXRoaW5fd29yZCwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX3dvcmRfc3RhcnQsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF93b3JkX2VuZCwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2J1ZmZlcl9zdGFydCwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2J1ZmZlcl9lbmQsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9iYWNrcmVmLAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfbG9uZ19zZXQsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9zZXQsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9qdW1wLAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfYWx0LAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfcmVwLAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfY29tYmluaW5nLAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfc29mdF9idWZmZXJfZW5kLAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfcmVzdGFydF9jb250aW51ZSwKLSAgICAgIC8vIEFsdGhvdWdoIHRoaXMgbmV4dCBsaW5lICpzaG91bGQqIGJlIGV2YWx1YXRlZCBhdCBjb21waWxlIHRpbWUsIGluIHByYWN0aWNlCi0gICAgICAvLyBzb21lIGNvbXBpbGVycyAoVkMrKykgZW1pdCBydW4tdGltZSBpbml0aWFsaXNhdGlvbiB3aGljaCBicmVha3MgdGhyZWFkCi0gICAgICAvLyBzYWZldHksIHNvIHVzZSBhIGRpc3BhdGNoIGZ1bmN0aW9uIGluc3RlYWQ6Ci0gICAgICAvLyg6Om5kbmJvb3N0Ojppc19yYW5kb21fYWNjZXNzX2l0ZXJhdG9yPEJpZGlJdGVyYXRvcj46OnZhbHVlID8gJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfZG90X3JlcGVhdF9mYXN0IDogJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfZG90X3JlcGVhdF9zbG93KSwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2RvdF9yZXBlYXRfZGlzcGF0Y2gsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9jaGFyX3JlcGVhdCwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX3NldF9yZXBlYXQsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9sb25nX3NldF9yZXBlYXQsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9iYWNrc3RlcCwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2Fzc2VydF9iYWNrcmVmLAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfdG9nZ2xlX2Nhc2UsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9yZWN1cnNpb24sCi0gICB9OwotCi0gICBwdXNoX3JlY3Vyc2lvbl9zdG9wcGVyKCk7Ci0gICBkb3sKLSAgICAgIHdoaWxlKHBzdGF0ZSkKLSAgICAgIHsKLSAgICAgICAgIG1hdGNoZXJfcHJvY190eXBlIHByb2MgPSBzX21hdGNoX3Z0YWJsZVtwc3RhdGUtPnR5cGVdOwotICAgICAgICAgKytzdGF0ZV9jb3VudDsKLSAgICAgICAgIGlmKCEodGhpcy0+KnByb2MpKCkpCi0gICAgICAgICB7Ci0gICAgICAgICAgICBpZihzdGF0ZV9jb3VudCA+IG1heF9zdGF0ZV9jb3VudCkKLSAgICAgICAgICAgICAgIHJhaXNlX2Vycm9yKHRyYWl0c19pbnN0LCByZWdleF9jb25zdGFudHM6OmVycm9yX2NvbXBsZXhpdHkpOwotICAgICAgICAgICAgaWYoKG1fbWF0Y2hfZmxhZ3MgJiBtYXRjaF9wYXJ0aWFsKSAmJiAocG9zaXRpb24gPT0gbGFzdCkgJiYgKHBvc2l0aW9uICE9IHNlYXJjaF9iYXNlKSkKLSAgICAgICAgICAgICAgIG1faGFzX3BhcnRpYWxfbWF0Y2ggPSB0cnVlOwotICAgICAgICAgICAgYm9vbCBzdWNjZXNzZnVsX3Vud2luZCA9IHVud2luZChmYWxzZSk7Ci0gICAgICAgICAgICBpZigobV9tYXRjaF9mbGFncyAmIG1hdGNoX3BhcnRpYWwpICYmIChwb3NpdGlvbiA9PSBsYXN0KSAmJiAocG9zaXRpb24gIT0gc2VhcmNoX2Jhc2UpKQotICAgICAgICAgICAgICAgbV9oYXNfcGFydGlhbF9tYXRjaCA9IHRydWU7Ci0gICAgICAgICAgICBpZihmYWxzZSA9PSBzdWNjZXNzZnVsX3Vud2luZCkKLSAgICAgICAgICAgICAgIHJldHVybiBtX3JlY3Vyc2l2ZV9yZXN1bHQ7Ci0gICAgICAgICB9Ci0gICAgICB9Ci0gICB9d2hpbGUodW53aW5kKHRydWUpKTsKLSAgIHJldHVybiBtX3JlY3Vyc2l2ZV9yZXN1bHQ7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotdm9pZCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OmV4dGVuZF9zdGFjaygpCi17Ci0gICBpZih1c2VkX2Jsb2NrX2NvdW50KQotICAgewotICAgICAgLS11c2VkX2Jsb2NrX2NvdW50OwotICAgICAgc2F2ZWRfc3RhdGUqIHN0YWNrX2Jhc2U7Ci0gICAgICBzYXZlZF9zdGF0ZSogYmFja3VwX3N0YXRlOwotICAgICAgc3RhY2tfYmFzZSA9IHN0YXRpY19jYXN0PHNhdmVkX3N0YXRlKj4oZ2V0X21lbV9ibG9jaygpKTsKLSAgICAgIGJhY2t1cF9zdGF0ZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8c2F2ZWRfc3RhdGUqPihyZWludGVycHJldF9jYXN0PGNoYXIqPihzdGFja19iYXNlKStORE5CT09TVF9SRUdFWF9CTE9DS1NJWkUpOwotICAgICAgc2F2ZWRfZXh0cmFfYmxvY2sqIGJsb2NrID0gc3RhdGljX2Nhc3Q8c2F2ZWRfZXh0cmFfYmxvY2sqPihiYWNrdXBfc3RhdGUpOwotICAgICAgLS1ibG9jazsKLSAgICAgICh2b2lkKSBuZXcgKGJsb2NrKSBzYXZlZF9leHRyYV9ibG9jayhtX3N0YWNrX2Jhc2UsIG1fYmFja3VwX3N0YXRlKTsKLSAgICAgIG1fc3RhY2tfYmFzZSA9IHN0YWNrX2Jhc2U7Ci0gICAgICBtX2JhY2t1cF9zdGF0ZSA9IGJsb2NrOwotICAgfQotICAgZWxzZQotICAgICAgcmFpc2VfZXJyb3IodHJhaXRzX2luc3QsIHJlZ2V4X2NvbnN0YW50czo6ZXJyb3Jfc3RhY2spOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWlubGluZSB2b2lkIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6cHVzaF9tYXRjaGVkX3BhcmVuKGludCBpbmRleCwgY29uc3Qgc3ViX21hdGNoPEJpZGlJdGVyYXRvcj4mIHN1YikKLXsKLSAgIC8vTkROQk9PU1RfQVNTRVJUKGluZGV4KTsKLSAgIHNhdmVkX21hdGNoZWRfcGFyZW48QmlkaUl0ZXJhdG9yPiogcG1wID0gc3RhdGljX2Nhc3Q8c2F2ZWRfbWF0Y2hlZF9wYXJlbjxCaWRpSXRlcmF0b3I+Kj4obV9iYWNrdXBfc3RhdGUpOwotICAgLS1wbXA7Ci0gICBpZihwbXAgPCBtX3N0YWNrX2Jhc2UpCi0gICB7Ci0gICAgICBleHRlbmRfc3RhY2soKTsKLSAgICAgIHBtcCA9IHN0YXRpY19jYXN0PHNhdmVkX21hdGNoZWRfcGFyZW48QmlkaUl0ZXJhdG9yPio+KG1fYmFja3VwX3N0YXRlKTsKLSAgICAgIC0tcG1wOwotICAgfQotICAgKHZvaWQpIG5ldyAocG1wKXNhdmVkX21hdGNoZWRfcGFyZW48QmlkaUl0ZXJhdG9yPihpbmRleCwgc3ViKTsKLSAgIG1fYmFja3VwX3N0YXRlID0gcG1wOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWlubGluZSB2b2lkIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6cHVzaF9yZWN1cnNpb25fc3RvcHBlcigpCi17Ci0gICBzYXZlZF9zdGF0ZSogcG1wID0gbV9iYWNrdXBfc3RhdGU7Ci0gICAtLXBtcDsKLSAgIGlmKHBtcCA8IG1fc3RhY2tfYmFzZSkKLSAgIHsKLSAgICAgIGV4dGVuZF9zdGFjaygpOwotICAgICAgcG1wID0gbV9iYWNrdXBfc3RhdGU7Ci0gICAgICAtLXBtcDsKLSAgIH0KLSAgICh2b2lkKSBuZXcgKHBtcClzYXZlZF9zdGF0ZShzYXZlZF90eXBlX3JlY3Vyc2UpOwotICAgbV9iYWNrdXBfc3RhdGUgPSBwbXA7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotaW5saW5lIHZvaWQgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjpwdXNoX2Fzc2VydGlvbihjb25zdCByZV9zeW50YXhfYmFzZSogcHMsIGJvb2wgcG9zaXRpdmUpCi17Ci0gICBzYXZlZF9hc3NlcnRpb248QmlkaUl0ZXJhdG9yPiogcG1wID0gc3RhdGljX2Nhc3Q8c2F2ZWRfYXNzZXJ0aW9uPEJpZGlJdGVyYXRvcj4qPihtX2JhY2t1cF9zdGF0ZSk7Ci0gICAtLXBtcDsKLSAgIGlmKHBtcCA8IG1fc3RhY2tfYmFzZSkKLSAgIHsKLSAgICAgIGV4dGVuZF9zdGFjaygpOwotICAgICAgcG1wID0gc3RhdGljX2Nhc3Q8c2F2ZWRfYXNzZXJ0aW9uPEJpZGlJdGVyYXRvcj4qPihtX2JhY2t1cF9zdGF0ZSk7Ci0gICAgICAtLXBtcDsKLSAgIH0KLSAgICh2b2lkKSBuZXcgKHBtcClzYXZlZF9hc3NlcnRpb248QmlkaUl0ZXJhdG9yPihwb3NpdGl2ZSwgcHMsIHBvc2l0aW9uKTsKLSAgIG1fYmFja3VwX3N0YXRlID0gcG1wOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWlubGluZSB2b2lkIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6cHVzaF9hbHQoY29uc3QgcmVfc3ludGF4X2Jhc2UqIHBzKQotewotICAgc2F2ZWRfcG9zaXRpb248QmlkaUl0ZXJhdG9yPiogcG1wID0gc3RhdGljX2Nhc3Q8c2F2ZWRfcG9zaXRpb248QmlkaUl0ZXJhdG9yPio+KG1fYmFja3VwX3N0YXRlKTsKLSAgIC0tcG1wOwotICAgaWYocG1wIDwgbV9zdGFja19iYXNlKQotICAgewotICAgICAgZXh0ZW5kX3N0YWNrKCk7Ci0gICAgICBwbXAgPSBzdGF0aWNfY2FzdDxzYXZlZF9wb3NpdGlvbjxCaWRpSXRlcmF0b3I+Kj4obV9iYWNrdXBfc3RhdGUpOwotICAgICAgLS1wbXA7Ci0gICB9Ci0gICAodm9pZCkgbmV3IChwbXApc2F2ZWRfcG9zaXRpb248QmlkaUl0ZXJhdG9yPihwcywgcG9zaXRpb24sIHNhdmVkX3N0YXRlX2FsdCk7Ci0gICBtX2JhY2t1cF9zdGF0ZSA9IHBtcDsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1pbmxpbmUgdm9pZCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OnB1c2hfbm9uX2dyZWVkeV9yZXBlYXQoY29uc3QgcmVfc3ludGF4X2Jhc2UqIHBzKQotewotICAgc2F2ZWRfcG9zaXRpb248QmlkaUl0ZXJhdG9yPiogcG1wID0gc3RhdGljX2Nhc3Q8c2F2ZWRfcG9zaXRpb248QmlkaUl0ZXJhdG9yPio+KG1fYmFja3VwX3N0YXRlKTsKLSAgIC0tcG1wOwotICAgaWYocG1wIDwgbV9zdGFja19iYXNlKQotICAgewotICAgICAgZXh0ZW5kX3N0YWNrKCk7Ci0gICAgICBwbXAgPSBzdGF0aWNfY2FzdDxzYXZlZF9wb3NpdGlvbjxCaWRpSXRlcmF0b3I+Kj4obV9iYWNrdXBfc3RhdGUpOwotICAgICAgLS1wbXA7Ci0gICB9Ci0gICAodm9pZCkgbmV3IChwbXApc2F2ZWRfcG9zaXRpb248QmlkaUl0ZXJhdG9yPihwcywgcG9zaXRpb24sIHNhdmVkX3N0YXRlX25vbl9ncmVlZHlfbG9uZ19yZXBlYXQpOwotICAgbV9iYWNrdXBfc3RhdGUgPSBwbXA7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotaW5saW5lIHZvaWQgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjpwdXNoX3JlcGVhdGVyX2NvdW50KGludCBpLCByZXBlYXRlcl9jb3VudDxCaWRpSXRlcmF0b3I+KiogcykKLXsKLSAgIHNhdmVkX3JlcGVhdGVyPEJpZGlJdGVyYXRvcj4qIHBtcCA9IHN0YXRpY19jYXN0PHNhdmVkX3JlcGVhdGVyPEJpZGlJdGVyYXRvcj4qPihtX2JhY2t1cF9zdGF0ZSk7Ci0gICAtLXBtcDsKLSAgIGlmKHBtcCA8IG1fc3RhY2tfYmFzZSkKLSAgIHsKLSAgICAgIGV4dGVuZF9zdGFjaygpOwotICAgICAgcG1wID0gc3RhdGljX2Nhc3Q8c2F2ZWRfcmVwZWF0ZXI8QmlkaUl0ZXJhdG9yPio+KG1fYmFja3VwX3N0YXRlKTsKLSAgICAgIC0tcG1wOwotICAgfQotICAgKHZvaWQpIG5ldyAocG1wKXNhdmVkX3JlcGVhdGVyPEJpZGlJdGVyYXRvcj4oaSwgcywgcG9zaXRpb24pOwotICAgbV9iYWNrdXBfc3RhdGUgPSBwbXA7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotaW5saW5lIHZvaWQgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjpwdXNoX3NpbmdsZV9yZXBlYXQoc3RkOjpzaXplX3QgYywgY29uc3QgcmVfcmVwZWF0KiByLCBCaWRpSXRlcmF0b3IgbGFzdF9wb3NpdGlvbiwgaW50IHN0YXRlX2lkKQotewotICAgc2F2ZWRfc2luZ2xlX3JlcGVhdDxCaWRpSXRlcmF0b3I+KiBwbXAgPSBzdGF0aWNfY2FzdDxzYXZlZF9zaW5nbGVfcmVwZWF0PEJpZGlJdGVyYXRvcj4qPihtX2JhY2t1cF9zdGF0ZSk7Ci0gICAtLXBtcDsKLSAgIGlmKHBtcCA8IG1fc3RhY2tfYmFzZSkKLSAgIHsKLSAgICAgIGV4dGVuZF9zdGFjaygpOwotICAgICAgcG1wID0gc3RhdGljX2Nhc3Q8c2F2ZWRfc2luZ2xlX3JlcGVhdDxCaWRpSXRlcmF0b3I+Kj4obV9iYWNrdXBfc3RhdGUpOwotICAgICAgLS1wbXA7Ci0gICB9Ci0gICAodm9pZCkgbmV3IChwbXApc2F2ZWRfc2luZ2xlX3JlcGVhdDxCaWRpSXRlcmF0b3I+KGMsIHIsIGxhc3RfcG9zaXRpb24sIHN0YXRlX2lkKTsKLSAgIG1fYmFja3VwX3N0YXRlID0gcG1wOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWlubGluZSB2b2lkIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6cHVzaF9yZWN1cnNpb24oaW50IGlkeCwgY29uc3QgcmVfc3ludGF4X2Jhc2UqIHAsIHJlc3VsdHNfdHlwZSogcHJlc3VsdHMpCi17Ci0gICBzYXZlZF9yZWN1cnNpb248cmVzdWx0c190eXBlPiogcG1wID0gc3RhdGljX2Nhc3Q8c2F2ZWRfcmVjdXJzaW9uPHJlc3VsdHNfdHlwZT4qPihtX2JhY2t1cF9zdGF0ZSk7Ci0gICAtLXBtcDsKLSAgIGlmKHBtcCA8IG1fc3RhY2tfYmFzZSkKLSAgIHsKLSAgICAgIGV4dGVuZF9zdGFjaygpOwotICAgICAgcG1wID0gc3RhdGljX2Nhc3Q8c2F2ZWRfcmVjdXJzaW9uPHJlc3VsdHNfdHlwZT4qPihtX2JhY2t1cF9zdGF0ZSk7Ci0gICAgICAtLXBtcDsKLSAgIH0KLSAgICh2b2lkKSBuZXcgKHBtcClzYXZlZF9yZWN1cnNpb248cmVzdWx0c190eXBlPihpZHgsIHAsIHByZXN1bHRzKTsKLSAgIG1fYmFja3VwX3N0YXRlID0gcG1wOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9zdGFydG1hcmsoKQotewotICAgaW50IGluZGV4ID0gc3RhdGljX2Nhc3Q8Y29uc3QgcmVfYnJhY2UqPihwc3RhdGUpLT5pbmRleDsKLSAgIGljYXNlID0gc3RhdGljX2Nhc3Q8Y29uc3QgcmVfYnJhY2UqPihwc3RhdGUpLT5pY2FzZTsKLSAgIHN3aXRjaChpbmRleCkKLSAgIHsKLSAgIGNhc2UgMDoKLSAgICAgIHBzdGF0ZSA9IHBzdGF0ZS0+bmV4dC5wOwotICAgICAgYnJlYWs7Ci0gICBjYXNlIC0xOgotICAgY2FzZSAtMjoKLSAgICAgIHsKLSAgICAgICAgIC8vIGZvcndhcmQgbG9va2FoZWFkIGFzc2VydDoKLSAgICAgICAgIGNvbnN0IHJlX3N5bnRheF9iYXNlKiBuZXh0X3BzdGF0ZSA9IHN0YXRpY19jYXN0PGNvbnN0IHJlX2p1bXAqPihwc3RhdGUtPm5leHQucCktPmFsdC5wLT5uZXh0LnA7Ci0gICAgICAgICBwc3RhdGUgPSBwc3RhdGUtPm5leHQucC0+bmV4dC5wOwotICAgICAgICAgcHVzaF9hc3NlcnRpb24obmV4dF9wc3RhdGUsIGluZGV4ID09IC0xKTsKLSAgICAgICAgIGJyZWFrOwotICAgICAgfQotICAgY2FzZSAtMzoKLSAgICAgIHsKLSAgICAgICAgIC8vIGluZGVwZW5kZW50IHN1Yi1leHByZXNzaW9uLCBjdXJyZW50bHkgdGhpcyBpcyBhbHdheXMgcmVjdXJzaXZlOgotICAgICAgICAgYm9vbCBvbGRfaW5kZXBlbmRlbnQgPSBtX2luZGVwZW5kZW50OwotICAgICAgICAgbV9pbmRlcGVuZGVudCA9IHRydWU7Ci0gICAgICAgICBjb25zdCByZV9zeW50YXhfYmFzZSogbmV4dF9wc3RhdGUgPSBzdGF0aWNfY2FzdDxjb25zdCByZV9qdW1wKj4ocHN0YXRlLT5uZXh0LnApLT5hbHQucC0+bmV4dC5wOwotICAgICAgICAgcHN0YXRlID0gcHN0YXRlLT5uZXh0LnAtPm5leHQucDsKLSAgICAgICAgIGJvb2wgciA9IG1hdGNoX2FsbF9zdGF0ZXMoKTsKLSAgICAgICAgIHBzdGF0ZSA9IG5leHRfcHN0YXRlOwotICAgICAgICAgbV9pbmRlcGVuZGVudCA9IG9sZF9pbmRlcGVuZGVudDsKLSNpZmRlZiBORE5CT09TVF9SRUdFWF9NQVRDSF9FWFRSQQotICAgICAgICAgaWYociAmJiAobV9tYXRjaF9mbGFncyAmIG1hdGNoX2V4dHJhKSkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAvLyBvdXIgY2FwdHVyZXMgaGF2ZSBiZWVuIHN0b3JlZCBpbiAqbV9wcmVzdWx0Ci0gICAgICAgICAgICAvLyB3ZSBuZWVkIHRvIHVucGFjayB0aGVtLCBhbmQgaW5zZXJ0IHRoZW0KLSAgICAgICAgICAgIC8vIGJhY2sgaW4gdGhlIHJpZ2h0IG9yZGVyIHdoZW4gd2UgdW53aW5kIHRoZSBzdGFjazoKLSAgICAgICAgICAgIC8vCi0gICAgICAgICAgICBtYXRjaF9yZXN1bHRzPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yPiB0ZW1wX21hdGNoKCptX3ByZXN1bHQpOwotICAgICAgICAgICAgdW5zaWduZWQgaTsKLSAgICAgICAgICAgIGZvcihpID0gMDsgaSA8IHRlbXBfbWF0Y2guc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICAgICAoKm1fcHJlc3VsdClbaV0uZ2V0X2NhcHR1cmVzKCkuY2xlYXIoKTsKLSAgICAgICAgICAgIC8vIG1hdGNoIGV2ZXJ5dGhpbmcgZWxzZToKLSAgICAgICAgICAgIHIgPSBtYXRjaF9hbGxfc3RhdGVzKCk7Ci0gICAgICAgICAgICAvLyBub3cgcGxhY2UgdGhlIHN0b3JlZCBjYXB0dXJlcyBiYWNrOgotICAgICAgICAgICAgZm9yKGkgPSAwOyBpIDwgdGVtcF9tYXRjaC5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc3ViX21hdGNoPEJpZGlJdGVyYXRvcj46OmNhcHR1cmVfc2VxdWVuY2VfdHlwZSBzZXE7Ci0gICAgICAgICAgICAgICBzZXEmIHMxID0gKCptX3ByZXN1bHQpW2ldLmdldF9jYXB0dXJlcygpOwotICAgICAgICAgICAgICAgY29uc3Qgc2VxJiBzMiA9IHRlbXBfbWF0Y2hbaV0uY2FwdHVyZXMoKTsKLSAgICAgICAgICAgICAgIHMxLmluc2VydCgKLSAgICAgICAgICAgICAgICAgIHMxLmVuZCgpLCAKLSAgICAgICAgICAgICAgICAgIHMyLmJlZ2luKCksIAotICAgICAgICAgICAgICAgICAgczIuZW5kKCkpOwotICAgICAgICAgICAgfQotICAgICAgICAgfQotI2VuZGlmCi0gICAgICAgICByZXR1cm4gcjsKLSAgICAgIH0KLSAgIGNhc2UgLTQ6Ci0gICAgICB7Ci0gICAgICAvLyBjb25kaXRpb25hbCBleHByZXNzaW9uOgotICAgICAgY29uc3QgcmVfYWx0KiBhbHQgPSBzdGF0aWNfY2FzdDxjb25zdCByZV9hbHQqPihwc3RhdGUtPm5leHQucCk7Ci0gICAgICBORE5CT09TVF9BU1NFUlQoYWx0LT50eXBlID09IHN5bnRheF9lbGVtZW50X2FsdCk7Ci0gICAgICBwc3RhdGUgPSBhbHQtPm5leHQucDsKLSAgICAgIGlmKHBzdGF0ZS0+dHlwZSA9PSBzeW50YXhfZWxlbWVudF9hc3NlcnRfYmFja3JlZikKLSAgICAgIHsKLSAgICAgICAgIGlmKCFtYXRjaF9hc3NlcnRfYmFja3JlZigpKQotICAgICAgICAgICAgcHN0YXRlID0gYWx0LT5hbHQucDsKLSAgICAgICAgIGJyZWFrOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICAgLy8gemVybyB3aWR0aCBhc3NlcnRpb24sIGhhdmUgdG8gbWF0Y2ggdGhpcyByZWN1cnNpdmVseToKLSAgICAgICAgIE5ETkJPT1NUX0FTU0VSVChwc3RhdGUtPnR5cGUgPT0gc3ludGF4X2VsZW1lbnRfc3RhcnRtYXJrKTsKLSAgICAgICAgIGJvb2wgbmVnYXRlZCA9IHN0YXRpY19jYXN0PGNvbnN0IHJlX2JyYWNlKj4ocHN0YXRlKS0+aW5kZXggPT0gLTI7Ci0gICAgICAgICBCaWRpSXRlcmF0b3Igc2F2ZWRfcG9zaXRpb24gPSBwb3NpdGlvbjsKLSAgICAgICAgIGNvbnN0IHJlX3N5bnRheF9iYXNlKiBuZXh0X3BzdGF0ZSA9IHN0YXRpY19jYXN0PGNvbnN0IHJlX2p1bXAqPihwc3RhdGUtPm5leHQucCktPmFsdC5wLT5uZXh0LnA7Ci0gICAgICAgICBwc3RhdGUgPSBwc3RhdGUtPm5leHQucC0+bmV4dC5wOwotICAgICAgICAgYm9vbCByID0gbWF0Y2hfYWxsX3N0YXRlcygpOwotICAgICAgICAgcG9zaXRpb24gPSBzYXZlZF9wb3NpdGlvbjsKLSAgICAgICAgIGlmKG5lZ2F0ZWQpCi0gICAgICAgICAgICByID0gIXI7Ci0gICAgICAgICBpZihyKQotICAgICAgICAgICAgcHN0YXRlID0gbmV4dF9wc3RhdGU7Ci0gICAgICAgICBlbHNlCi0gICAgICAgICAgICBwc3RhdGUgPSBhbHQtPmFsdC5wOwotICAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgICB9Ci0gICBjYXNlIC01OgotICAgICAgewotICAgICAgICAgcHVzaF9tYXRjaGVkX3BhcmVuKDAsICgqbV9wcmVzdWx0KVswXSk7Ci0gICAgICAgICBtX3ByZXN1bHQtPnNldF9maXJzdChwb3NpdGlvbiwgMCwgdHJ1ZSk7Ci0gICAgICAgICBwc3RhdGUgPSBwc3RhdGUtPm5leHQucDsKLSAgICAgICAgIGJyZWFrOwotICAgICAgfQotICAgZGVmYXVsdDoKLSAgIHsKLSAgICAgIE5ETkJPT1NUX0FTU0VSVChpbmRleCA+IDApOwotICAgICAgaWYoKG1fbWF0Y2hfZmxhZ3MgJiBtYXRjaF9ub3N1YnMpID09IDApCi0gICAgICB7Ci0gICAgICAgICBwdXNoX21hdGNoZWRfcGFyZW4oaW5kZXgsICgqbV9wcmVzdWx0KVtpbmRleF0pOwotICAgICAgICAgbV9wcmVzdWx0LT5zZXRfZmlyc3QocG9zaXRpb24sIGluZGV4KTsKLSAgICAgIH0KLSAgICAgIHBzdGF0ZSA9IHBzdGF0ZS0+bmV4dC5wOwotICAgICAgYnJlYWs7Ci0gICB9Ci0gICB9Ci0gICByZXR1cm4gdHJ1ZTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfYWx0KCkKLXsKLSAgIGJvb2wgdGFrZV9maXJzdCwgdGFrZV9zZWNvbmQ7Ci0gICBjb25zdCByZV9hbHQqIGptcCA9IHN0YXRpY19jYXN0PGNvbnN0IHJlX2FsdCo+KHBzdGF0ZSk7Ci0KLSAgIC8vIGZpbmQgb3V0IHdoaWNoIG9mIHRoZXNlIHR3byBhbHRlcm5hdGl2ZXMgd2UgbmVlZCB0byB0YWtlOgotICAgaWYocG9zaXRpb24gPT0gbGFzdCkKLSAgIHsKLSAgICAgIHRha2VfZmlyc3QgPSBqbXAtPmNhbl9iZV9udWxsICYgbWFza190YWtlOwotICAgICAgdGFrZV9zZWNvbmQgPSBqbXAtPmNhbl9iZV9udWxsICYgbWFza19za2lwOwotICAgfQotICAgZWxzZQotICAgewotICAgICAgdGFrZV9maXJzdCA9IGNhbl9zdGFydCgqcG9zaXRpb24sIGptcC0+X21hcCwgKHVuc2lnbmVkIGNoYXIpbWFza190YWtlKTsKLSAgICAgIHRha2Vfc2Vjb25kID0gY2FuX3N0YXJ0KCpwb3NpdGlvbiwgam1wLT5fbWFwLCAodW5zaWduZWQgY2hhciltYXNrX3NraXApOwotICB9Ci0KLSAgIGlmKHRha2VfZmlyc3QpCi0gICB7Ci0gICAgICAvLyB3ZSBjYW4gdGFrZSB0aGUgZmlyc3QgYWx0ZXJuYXRpdmUsCi0gICAgICAvLyBzZWUgaWYgd2UgbmVlZCB0byBwdXNoIG5leHQgYWx0ZXJuYXRpdmU6Ci0gICAgICBpZih0YWtlX3NlY29uZCkKLSAgICAgIHsKLSAgICAgICAgIHB1c2hfYWx0KGptcC0+YWx0LnApOwotICAgICAgfQotICAgICAgcHN0YXRlID0gcHN0YXRlLT5uZXh0LnA7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgIH0KLSAgIGlmKHRha2Vfc2Vjb25kKQotICAgewotICAgICAgcHN0YXRlID0gam1wLT5hbHQucDsKLSAgICAgIHJldHVybiB0cnVlOwotICAgfQotICAgcmV0dXJuIGZhbHNlOyAgLy8gbmVpdGhlciBvcHRpb24gaXMgcG9zc2libGUKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfcmVwKCkKLXsKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQxMjcgNDI0NCkKLSNlbmRpZgotI2lmZGVmIF9fQk9STEFORENfXwotI3ByYWdtYSBvcHRpb24gcHVzaCAtdy04MDA4IC13LTgwNjYgLXctODAwNAotI2VuZGlmCi0gICBjb25zdCByZV9yZXBlYXQqIHJlcCA9IHN0YXRpY19jYXN0PGNvbnN0IHJlX3JlcGVhdCo+KHBzdGF0ZSk7Ci0KLSAgIC8vIGZpbmQgb3V0IHdoaWNoIG9mIHRoZXNlIHR3byBhbHRlcm5hdGl2ZXMgd2UgbmVlZCB0byB0YWtlOgotICAgYm9vbCB0YWtlX2ZpcnN0LCB0YWtlX3NlY29uZDsKLSAgIGlmKHBvc2l0aW9uID09IGxhc3QpCi0gICB7Ci0gICAgICB0YWtlX2ZpcnN0ID0gcmVwLT5jYW5fYmVfbnVsbCAmIG1hc2tfdGFrZTsKLSAgICAgIHRha2Vfc2Vjb25kID0gcmVwLT5jYW5fYmVfbnVsbCAmIG1hc2tfc2tpcDsKLSAgIH0KLSAgIGVsc2UKLSAgIHsKLSAgICAgIHRha2VfZmlyc3QgPSBjYW5fc3RhcnQoKnBvc2l0aW9uLCByZXAtPl9tYXAsICh1bnNpZ25lZCBjaGFyKW1hc2tfdGFrZSk7Ci0gICAgICB0YWtlX3NlY29uZCA9IGNhbl9zdGFydCgqcG9zaXRpb24sIHJlcC0+X21hcCwgKHVuc2lnbmVkIGNoYXIpbWFza19za2lwKTsKLSAgIH0KLQotICAgaWYoKG1fYmFja3VwX3N0YXRlLT5zdGF0ZV9pZCAhPSBzYXZlZF9zdGF0ZV9yZXBlYXRlcl9jb3VudCkgCi0gICAgICB8fCAoc3RhdGljX2Nhc3Q8c2F2ZWRfcmVwZWF0ZXI8QmlkaUl0ZXJhdG9yPio+KG1fYmFja3VwX3N0YXRlKS0+Y291bnQuZ2V0X2lkKCkgIT0gcmVwLT5zdGF0ZV9pZCkKLSAgICAgIHx8IChuZXh0X2NvdW50LT5nZXRfaWQoKSAhPSByZXAtPnN0YXRlX2lkKSkKLSAgIHsKLSAgICAgIC8vIHdlJ3JlIG1vdmluZyB0byBhIGRpZmZlcmVudCByZXBlYXQgZnJvbSB0aGUgbGFzdAotICAgICAgLy8gb25lLCBzbyBzZXQgdXAgYSBjb3VudGVyIG9iamVjdDoKLSAgICAgIHB1c2hfcmVwZWF0ZXJfY291bnQocmVwLT5zdGF0ZV9pZCwgJm5leHRfY291bnQpOwotICAgfQotICAgLy8KLSAgIC8vIElmIHdlJ3ZlIGhhZCBhdCBsZWFzdCBvbmUgcmVwZWF0IGFscmVhZHksIGFuZCB0aGUgbGFzdCBvbmUgCi0gICAvLyBtYXRjaGVkIHRoZSBOVUxMIHN0cmluZyB0aGVuIHNldCB0aGUgcmVwZWF0IGNvdW50IHRvCi0gICAvLyBtYXhpbXVtOgotICAgLy8KLSAgIG5leHRfY291bnQtPmNoZWNrX251bGxfcmVwZWF0KHBvc2l0aW9uLCByZXAtPm1heCk7Ci0KLSAgIGlmKG5leHRfY291bnQtPmdldF9jb3VudCgpIDwgcmVwLT5taW4pCi0gICB7Ci0gICAgICAvLyB3ZSBtdXN0IHRha2UgdGhlIHJlcGVhdDoKLSAgICAgIGlmKHRha2VfZmlyc3QpCi0gICAgICB7Ci0gICAgICAgICAvLyBpbmNyZWFzZSB0aGUgY291bnRlcjoKLSAgICAgICAgICsrKCpuZXh0X2NvdW50KTsKLSAgICAgICAgIHBzdGF0ZSA9IHJlcC0+bmV4dC5wOwotICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICB9Ci0KLSAgIGJvb2wgZ3JlZWR5ID0gKHJlcC0+Z3JlZWR5KSAmJiAoIShtX21hdGNoX2ZsYWdzICYgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9hbnkpIHx8IG1faW5kZXBlbmRlbnQpOyAgIAotICAgaWYoZ3JlZWR5KQotICAgewotICAgICAgLy8gdHJ5IGFuZCB0YWtlIHRoZSByZXBlYXQgaWYgd2UgY2FuOgotICAgICAgaWYoKG5leHRfY291bnQtPmdldF9jb3VudCgpIDwgcmVwLT5tYXgpICYmIHRha2VfZmlyc3QpCi0gICAgICB7Ci0gICAgICAgICBpZih0YWtlX3NlY29uZCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIHN0b3JlIHBvc2l0aW9uIGluIGNhc2Ugd2UgZmFpbDoKLSAgICAgICAgICAgIHB1c2hfYWx0KHJlcC0+YWx0LnApOwotICAgICAgICAgfQotICAgICAgICAgLy8gaW5jcmVhc2UgdGhlIGNvdW50ZXI6Ci0gICAgICAgICArKygqbmV4dF9jb3VudCk7Ci0gICAgICAgICBwc3RhdGUgPSByZXAtPm5leHQucDsKLSAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgfQotICAgICAgZWxzZSBpZih0YWtlX3NlY29uZCkKLSAgICAgIHsKLSAgICAgICAgIHBzdGF0ZSA9IHJlcC0+YWx0LnA7Ci0gICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0KLSAgICAgIHJldHVybiBmYWxzZTsgLy8gY2FuJ3QgdGFrZSBhbnl0aGluZywgZmFpbC4uLgotICAgfQotICAgZWxzZSAvLyBub24tZ3JlZWR5Ci0gICB7Ci0gICAgICAvLyB0cnkgYW5kIHNraXAgdGhlIHJlcGVhdCBpZiB3ZSBjYW46Ci0gICAgICBpZih0YWtlX3NlY29uZCkKLSAgICAgIHsKLSAgICAgICAgIGlmKChuZXh0X2NvdW50LT5nZXRfY291bnQoKSA8IHJlcC0+bWF4KSAmJiB0YWtlX2ZpcnN0KQotICAgICAgICAgewotICAgICAgICAgICAgLy8gc3RvcmUgcG9zaXRpb24gaW4gY2FzZSB3ZSBmYWlsOgotICAgICAgICAgICAgcHVzaF9ub25fZ3JlZWR5X3JlcGVhdChyZXAtPm5leHQucCk7Ci0gICAgICAgICB9Ci0gICAgICAgICBwc3RhdGUgPSByZXAtPmFsdC5wOwotICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICB9Ci0gICAgICBpZigobmV4dF9jb3VudC0+Z2V0X2NvdW50KCkgPCByZXAtPm1heCkgJiYgdGFrZV9maXJzdCkKLSAgICAgIHsKLSAgICAgICAgIC8vIGluY3JlYXNlIHRoZSBjb3VudGVyOgotICAgICAgICAgKysoKm5leHRfY291bnQpOwotICAgICAgICAgcHN0YXRlID0gcmVwLT5uZXh0LnA7Ci0gICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0KLSAgIH0KLSAgIHJldHVybiBmYWxzZTsKLSNpZmRlZiBfX0JPUkxBTkRDX18KLSNwcmFnbWEgb3B0aW9uIHBvcAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9kb3RfcmVwZWF0X3Nsb3coKQotewotICAgdW5zaWduZWQgY291bnQgPSAwOwotICAgY29uc3QgcmVfcmVwZWF0KiByZXAgPSBzdGF0aWNfY2FzdDxjb25zdCByZV9yZXBlYXQqPihwc3RhdGUpOwotICAgcmVfc3ludGF4X2Jhc2UqIHBzaW5nbGUgPSByZXAtPm5leHQucDsKLSAgIC8vIG1hdGNoIGNvbXB1bHNhcnkgcmVwZWF0cyBmaXJzdDoKLSAgIHdoaWxlKGNvdW50IDwgcmVwLT5taW4pCi0gICB7Ci0gICAgICBwc3RhdGUgPSBwc2luZ2xlOwotICAgICAgaWYoIW1hdGNoX3dpbGQoKSkKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICsrY291bnQ7Ci0gICB9Ci0gICBib29sIGdyZWVkeSA9IChyZXAtPmdyZWVkeSkgJiYgKCEobV9tYXRjaF9mbGFncyAmIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfYW55KSB8fCBtX2luZGVwZW5kZW50KTsgICAKLSAgIGlmKGdyZWVkeSkKLSAgIHsKLSAgICAgIC8vIHJlcGVhdCBmb3IgYXMgbG9uZyBhcyB3ZSBjYW46Ci0gICAgICB3aGlsZShjb3VudCA8IHJlcC0+bWF4KQotICAgICAgewotICAgICAgICAgcHN0YXRlID0gcHNpbmdsZTsKLSAgICAgICAgIGlmKCFtYXRjaF93aWxkKCkpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICsrY291bnQ7Ci0gICAgICB9Ci0gICAgICAvLyByZW1lbWJlciB3aGVyZSB3ZSBnb3QgdG8gaWYgdGhpcyBpcyBhIGxlYWRpbmcgcmVwZWF0OgotICAgICAgaWYoKHJlcC0+bGVhZGluZykgJiYgKGNvdW50IDwgcmVwLT5tYXgpKQotICAgICAgICAgcmVzdGFydCA9IHBvc2l0aW9uOwotICAgICAgLy8gcHVzaCBiYWNrdHJhY2sgaW5mbyBpZiBhdmFpbGFibGU6Ci0gICAgICBpZihjb3VudCAtIHJlcC0+bWluKQotICAgICAgICAgcHVzaF9zaW5nbGVfcmVwZWF0KGNvdW50LCByZXAsIHBvc2l0aW9uLCBzYXZlZF9zdGF0ZV9ncmVlZHlfc2luZ2xlX3JlcGVhdCk7Ci0gICAgICAvLyBqdW1wIHRvIG5leHQgc3RhdGU6Ci0gICAgICBwc3RhdGUgPSByZXAtPmFsdC5wOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICB9Ci0gICBlbHNlCi0gICB7Ci0gICAgICAvLyBub24tZ3JlZWR5LCBwdXNoIHN0YXRlIGFuZCByZXR1cm4gdHJ1ZSBpZiB3ZSBjYW4gc2tpcDoKLSAgICAgIGlmKGNvdW50IDwgcmVwLT5tYXgpCi0gICAgICAgICBwdXNoX3NpbmdsZV9yZXBlYXQoY291bnQsIHJlcCwgcG9zaXRpb24sIHNhdmVkX3N0YXRlX3JlcF9zbG93X2RvdCk7Ci0gICAgICBwc3RhdGUgPSByZXAtPmFsdC5wOwotICAgICAgcmV0dXJuIChwb3NpdGlvbiA9PSBsYXN0KSA/IChyZXAtPmNhbl9iZV9udWxsICYgbWFza19za2lwKSA6IGNhbl9zdGFydCgqcG9zaXRpb24sIHJlcC0+X21hcCwgbWFza19za2lwKTsKLSAgIH0KLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfZG90X3JlcGVhdF9mYXN0KCkKLXsKLSAgIGlmKG1fbWF0Y2hfZmxhZ3MgJiBtYXRjaF9ub3RfZG90X251bGwpCi0gICAgICByZXR1cm4gbWF0Y2hfZG90X3JlcGVhdF9zbG93KCk7Ci0gICBpZigoc3RhdGljX2Nhc3Q8Y29uc3QgcmVfZG90Kj4ocHN0YXRlLT5uZXh0LnApLT5tYXNrICYgbWF0Y2hfYW55X21hc2spID09IDApCi0gICAgICByZXR1cm4gbWF0Y2hfZG90X3JlcGVhdF9zbG93KCk7Ci0KLSAgIGNvbnN0IHJlX3JlcGVhdCogcmVwID0gc3RhdGljX2Nhc3Q8Y29uc3QgcmVfcmVwZWF0Kj4ocHN0YXRlKTsKLSAgIGJvb2wgZ3JlZWR5ID0gKHJlcC0+Z3JlZWR5KSAmJiAoIShtX21hdGNoX2ZsYWdzICYgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9hbnkpIHx8IG1faW5kZXBlbmRlbnQpOyAgIAotICAgdW5zaWduZWQgY291bnQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oKHN0ZDo6bWluKShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpkaXN0YW5jZShwb3NpdGlvbiwgbGFzdCkpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZ3JlZWR5ID8gcmVwLT5tYXggOiByZXAtPm1pbikpKTsKLSAgIGlmKHJlcC0+bWluID4gY291bnQpCi0gICB7Ci0gICAgICBwb3NpdGlvbiA9IGxhc3Q7Ci0gICAgICByZXR1cm4gZmFsc2U7ICAvLyBub3QgZW5vdWdoIHRleHQgbGVmdCB0byBtYXRjaAotICAgfQotICAgc3RkOjphZHZhbmNlKHBvc2l0aW9uLCBjb3VudCk7Ci0KLSAgIGlmKGdyZWVkeSkKLSAgIHsKLSAgICAgIGlmKChyZXAtPmxlYWRpbmcpICYmIChjb3VudCA8IHJlcC0+bWF4KSkKLSAgICAgICAgIHJlc3RhcnQgPSBwb3NpdGlvbjsKLSAgICAgIC8vIHB1c2ggYmFja3RyYWNrIGluZm8gaWYgYXZhaWxhYmxlOgotICAgICAgaWYoY291bnQgLSByZXAtPm1pbikKLSAgICAgICAgIHB1c2hfc2luZ2xlX3JlcGVhdChjb3VudCwgcmVwLCBwb3NpdGlvbiwgc2F2ZWRfc3RhdGVfZ3JlZWR5X3NpbmdsZV9yZXBlYXQpOwotICAgICAgLy8ganVtcCB0byBuZXh0IHN0YXRlOgotICAgICAgcHN0YXRlID0gcmVwLT5hbHQucDsKLSAgICAgIHJldHVybiB0cnVlOwotICAgfQotICAgZWxzZQotICAgewotICAgICAgLy8gbm9uLWdyZWVkeSwgcHVzaCBzdGF0ZSBhbmQgcmV0dXJuIHRydWUgaWYgd2UgY2FuIHNraXA6Ci0gICAgICBpZihjb3VudCA8IHJlcC0+bWF4KQotICAgICAgICAgcHVzaF9zaW5nbGVfcmVwZWF0KGNvdW50LCByZXAsIHBvc2l0aW9uLCBzYXZlZF9zdGF0ZV9yZXBfZmFzdF9kb3QpOwotICAgICAgcHN0YXRlID0gcmVwLT5hbHQucDsKLSAgICAgIHJldHVybiAocG9zaXRpb24gPT0gbGFzdCkgPyAocmVwLT5jYW5fYmVfbnVsbCAmIG1hc2tfc2tpcCkgOiBjYW5fc3RhcnQoKnBvc2l0aW9uLCByZXAtPl9tYXAsIG1hc2tfc2tpcCk7Ci0gICB9Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2NoYXJfcmVwZWF0KCkKLXsKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQxMjcpCi0jZW5kaWYKLSNpZmRlZiBfX0JPUkxBTkRDX18KLSNwcmFnbWEgb3B0aW9uIHB1c2ggLXctODAwOCAtdy04MDY2IC13LTgwMDQKLSNlbmRpZgotICAgY29uc3QgcmVfcmVwZWF0KiByZXAgPSBzdGF0aWNfY2FzdDxjb25zdCByZV9yZXBlYXQqPihwc3RhdGUpOwotICAgTkROQk9PU1RfQVNTRVJUKDEgPT0gc3RhdGljX2Nhc3Q8Y29uc3QgcmVfbGl0ZXJhbCo+KHJlcC0+bmV4dC5wKS0+bGVuZ3RoKTsKLSAgIGNvbnN0IGNoYXJfdHlwZSB3aGF0ID0gKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcl90eXBlKj4oc3RhdGljX2Nhc3Q8Y29uc3QgcmVfbGl0ZXJhbCo+KHJlcC0+bmV4dC5wKSArIDEpOwotICAgc3RkOjpzaXplX3QgY291bnQgPSAwOwotICAgLy8KLSAgIC8vIHN0YXJ0IGJ5IHdvcmtpbmcgb3V0IGhvdyBtdWNoIHdlIGNhbiBza2lwOgotICAgLy8KLSAgIGJvb2wgZ3JlZWR5ID0gKHJlcC0+Z3JlZWR5KSAmJiAoIShtX21hdGNoX2ZsYWdzICYgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9hbnkpIHx8IG1faW5kZXBlbmRlbnQpOyAgIAotICAgc3RkOjpzaXplX3QgZGVzaXJlZCA9IGdyZWVkeSA/IHJlcC0+bWF4IDogcmVwLT5taW47Ci0gICBpZig6Om5kbmJvb3N0Ojppc19yYW5kb21fYWNjZXNzX2l0ZXJhdG9yPEJpZGlJdGVyYXRvcj46OnZhbHVlKQotICAgewotICAgICAgQmlkaUl0ZXJhdG9yIGVuZCA9IHBvc2l0aW9uOwotICAgICAgc3RkOjphZHZhbmNlKGVuZCwgKHN0ZDo6bWluKSgoc3RkOjpzaXplX3QpOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpkaXN0YW5jZShwb3NpdGlvbiwgbGFzdCksIGRlc2lyZWQpKTsKLSAgICAgIEJpZGlJdGVyYXRvciBvcmlnaW4ocG9zaXRpb24pOwotICAgICAgd2hpbGUoKHBvc2l0aW9uICE9IGVuZCkgJiYgKHRyYWl0c19pbnN0LnRyYW5zbGF0ZSgqcG9zaXRpb24sIGljYXNlKSA9PSB3aGF0KSkKLSAgICAgIHsKLSAgICAgICAgICsrcG9zaXRpb247Ci0gICAgICB9Ci0gICAgICBjb3VudCA9ICh1bnNpZ25lZCk6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmRpc3RhbmNlKG9yaWdpbiwgcG9zaXRpb24pOwotICAgfQotICAgZWxzZQotICAgewotICAgICAgd2hpbGUoKGNvdW50IDwgZGVzaXJlZCkgJiYgKHBvc2l0aW9uICE9IGxhc3QpICYmICh0cmFpdHNfaW5zdC50cmFuc2xhdGUoKnBvc2l0aW9uLCBpY2FzZSkgPT0gd2hhdCkpCi0gICAgICB7Ci0gICAgICAgICArK3Bvc2l0aW9uOwotICAgICAgICAgKytjb3VudDsKLSAgICAgIH0KLSAgIH0KLQotICAgaWYoY291bnQgPCByZXAtPm1pbikKLSAgICAgIHJldHVybiBmYWxzZTsKLQotICAgaWYoZ3JlZWR5KQotICAgewotICAgICAgaWYoKHJlcC0+bGVhZGluZykgJiYgKGNvdW50IDwgcmVwLT5tYXgpKQotICAgICAgICAgcmVzdGFydCA9IHBvc2l0aW9uOwotICAgICAgLy8gcHVzaCBiYWNrdHJhY2sgaW5mbyBpZiBhdmFpbGFibGU6Ci0gICAgICBpZihjb3VudCAtIHJlcC0+bWluKQotICAgICAgICAgcHVzaF9zaW5nbGVfcmVwZWF0KGNvdW50LCByZXAsIHBvc2l0aW9uLCBzYXZlZF9zdGF0ZV9ncmVlZHlfc2luZ2xlX3JlcGVhdCk7Ci0gICAgICAvLyBqdW1wIHRvIG5leHQgc3RhdGU6Ci0gICAgICBwc3RhdGUgPSByZXAtPmFsdC5wOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICB9Ci0gICBlbHNlCi0gICB7Ci0gICAgICAvLyBub24tZ3JlZWR5LCBwdXNoIHN0YXRlIGFuZCByZXR1cm4gdHJ1ZSBpZiB3ZSBjYW4gc2tpcDoKLSAgICAgIGlmKGNvdW50IDwgcmVwLT5tYXgpCi0gICAgICAgICBwdXNoX3NpbmdsZV9yZXBlYXQoY291bnQsIHJlcCwgcG9zaXRpb24sIHNhdmVkX3N0YXRlX3JlcF9jaGFyKTsKLSAgICAgIHBzdGF0ZSA9IHJlcC0+YWx0LnA7Ci0gICAgICByZXR1cm4gKHBvc2l0aW9uID09IGxhc3QpID8gKHJlcC0+Y2FuX2JlX251bGwgJiBtYXNrX3NraXApIDogY2FuX3N0YXJ0KCpwb3NpdGlvbiwgcmVwLT5fbWFwLCBtYXNrX3NraXApOwotICAgfQotI2lmZGVmIF9fQk9STEFORENfXwotI3ByYWdtYSBvcHRpb24gcG9wCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX3NldF9yZXBlYXQoKQotewotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDEyNykKLSNlbmRpZgotI2lmZGVmIF9fQk9STEFORENfXwotI3ByYWdtYSBvcHRpb24gcHVzaCAtdy04MDA4IC13LTgwNjYgLXctODAwNAotI2VuZGlmCi0gICBjb25zdCByZV9yZXBlYXQqIHJlcCA9IHN0YXRpY19jYXN0PGNvbnN0IHJlX3JlcGVhdCo+KHBzdGF0ZSk7Ci0gICBjb25zdCB1bnNpZ25lZCBjaGFyKiBtYXAgPSBzdGF0aWNfY2FzdDxjb25zdCByZV9zZXQqPihyZXAtPm5leHQucCktPl9tYXA7Ci0gICBzdGQ6OnNpemVfdCBjb3VudCA9IDA7Ci0gICAvLwotICAgLy8gc3RhcnQgYnkgd29ya2luZyBvdXQgaG93IG11Y2ggd2UgY2FuIHNraXA6Ci0gICAvLwotICAgYm9vbCBncmVlZHkgPSAocmVwLT5ncmVlZHkpICYmICghKG1fbWF0Y2hfZmxhZ3MgJiByZWdleF9jb25zdGFudHM6Om1hdGNoX2FueSkgfHwgbV9pbmRlcGVuZGVudCk7ICAgCi0gICBzdGQ6OnNpemVfdCBkZXNpcmVkID0gZ3JlZWR5ID8gcmVwLT5tYXggOiByZXAtPm1pbjsKLSAgIGlmKDo6bmRuYm9vc3Q6OmlzX3JhbmRvbV9hY2Nlc3NfaXRlcmF0b3I8QmlkaUl0ZXJhdG9yPjo6dmFsdWUpCi0gICB7Ci0gICAgICBCaWRpSXRlcmF0b3IgZW5kID0gcG9zaXRpb247Ci0gICAgICBzdGQ6OmFkdmFuY2UoZW5kLCAoc3RkOjptaW4pKChzdGQ6OnNpemVfdCk6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmRpc3RhbmNlKHBvc2l0aW9uLCBsYXN0KSwgZGVzaXJlZCkpOwotICAgICAgQmlkaUl0ZXJhdG9yIG9yaWdpbihwb3NpdGlvbik7Ci0gICAgICB3aGlsZSgocG9zaXRpb24gIT0gZW5kKSAmJiBtYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4odHJhaXRzX2luc3QudHJhbnNsYXRlKCpwb3NpdGlvbiwgaWNhc2UpKV0pCi0gICAgICB7Ci0gICAgICAgICArK3Bvc2l0aW9uOwotICAgICAgfQotICAgICAgY291bnQgPSAodW5zaWduZWQpOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpkaXN0YW5jZShvcmlnaW4sIHBvc2l0aW9uKTsKLSAgIH0KLSAgIGVsc2UKLSAgIHsKLSAgICAgIHdoaWxlKChjb3VudCA8IGRlc2lyZWQpICYmIChwb3NpdGlvbiAhPSBsYXN0KSAmJiBtYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4odHJhaXRzX2luc3QudHJhbnNsYXRlKCpwb3NpdGlvbiwgaWNhc2UpKV0pCi0gICAgICB7Ci0gICAgICAgICArK3Bvc2l0aW9uOwotICAgICAgICAgKytjb3VudDsKLSAgICAgIH0KLSAgIH0KLQotICAgaWYoY291bnQgPCByZXAtPm1pbikKLSAgICAgIHJldHVybiBmYWxzZTsKLQotICAgaWYoZ3JlZWR5KQotICAgewotICAgICAgaWYoKHJlcC0+bGVhZGluZykgJiYgKGNvdW50IDwgcmVwLT5tYXgpKQotICAgICAgICAgcmVzdGFydCA9IHBvc2l0aW9uOwotICAgICAgLy8gcHVzaCBiYWNrdHJhY2sgaW5mbyBpZiBhdmFpbGFibGU6Ci0gICAgICBpZihjb3VudCAtIHJlcC0+bWluKQotICAgICAgICAgcHVzaF9zaW5nbGVfcmVwZWF0KGNvdW50LCByZXAsIHBvc2l0aW9uLCBzYXZlZF9zdGF0ZV9ncmVlZHlfc2luZ2xlX3JlcGVhdCk7Ci0gICAgICAvLyBqdW1wIHRvIG5leHQgc3RhdGU6Ci0gICAgICBwc3RhdGUgPSByZXAtPmFsdC5wOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICB9Ci0gICBlbHNlCi0gICB7Ci0gICAgICAvLyBub24tZ3JlZWR5LCBwdXNoIHN0YXRlIGFuZCByZXR1cm4gdHJ1ZSBpZiB3ZSBjYW4gc2tpcDoKLSAgICAgIGlmKGNvdW50IDwgcmVwLT5tYXgpCi0gICAgICAgICBwdXNoX3NpbmdsZV9yZXBlYXQoY291bnQsIHJlcCwgcG9zaXRpb24sIHNhdmVkX3N0YXRlX3JlcF9zaG9ydF9zZXQpOwotICAgICAgcHN0YXRlID0gcmVwLT5hbHQucDsKLSAgICAgIHJldHVybiAocG9zaXRpb24gPT0gbGFzdCkgPyAocmVwLT5jYW5fYmVfbnVsbCAmIG1hc2tfc2tpcCkgOiBjYW5fc3RhcnQoKnBvc2l0aW9uLCByZXAtPl9tYXAsIG1hc2tfc2tpcCk7Ci0gICB9Ci0jaWZkZWYgX19CT1JMQU5EQ19fCi0jcHJhZ21hIG9wdGlvbiBwb3AKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfbG9uZ19zZXRfcmVwZWF0KCkKLXsKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQxMjcpCi0jZW5kaWYKLSNpZmRlZiBfX0JPUkxBTkRDX18KLSNwcmFnbWEgb3B0aW9uIHB1c2ggLXctODAwOCAtdy04MDY2IC13LTgwMDQKLSNlbmRpZgotICAgdHlwZWRlZiB0eXBlbmFtZSB0cmFpdHM6OmNoYXJfY2xhc3NfdHlwZSBtX3R5cGU7Ci0gICBjb25zdCByZV9yZXBlYXQqIHJlcCA9IHN0YXRpY19jYXN0PGNvbnN0IHJlX3JlcGVhdCo+KHBzdGF0ZSk7Ci0gICBjb25zdCByZV9zZXRfbG9uZzxtX3R5cGU+KiBzZXQgPSBzdGF0aWNfY2FzdDxjb25zdCByZV9zZXRfbG9uZzxtX3R5cGU+Kj4ocHN0YXRlLT5uZXh0LnApOwotICAgc3RkOjpzaXplX3QgY291bnQgPSAwOwotICAgLy8KLSAgIC8vIHN0YXJ0IGJ5IHdvcmtpbmcgb3V0IGhvdyBtdWNoIHdlIGNhbiBza2lwOgotICAgLy8KLSAgIGJvb2wgZ3JlZWR5ID0gKHJlcC0+Z3JlZWR5KSAmJiAoIShtX21hdGNoX2ZsYWdzICYgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9hbnkpIHx8IG1faW5kZXBlbmRlbnQpOyAgIAotICAgc3RkOjpzaXplX3QgZGVzaXJlZCA9IGdyZWVkeSA/IHJlcC0+bWF4IDogcmVwLT5taW47Ci0gICBpZig6Om5kbmJvb3N0Ojppc19yYW5kb21fYWNjZXNzX2l0ZXJhdG9yPEJpZGlJdGVyYXRvcj46OnZhbHVlKQotICAgewotICAgICAgQmlkaUl0ZXJhdG9yIGVuZCA9IHBvc2l0aW9uOwotICAgICAgc3RkOjphZHZhbmNlKGVuZCwgKHN0ZDo6bWluKSgoc3RkOjpzaXplX3QpOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpkaXN0YW5jZShwb3NpdGlvbiwgbGFzdCksIGRlc2lyZWQpKTsKLSAgICAgIEJpZGlJdGVyYXRvciBvcmlnaW4ocG9zaXRpb24pOwotICAgICAgd2hpbGUoKHBvc2l0aW9uICE9IGVuZCkgJiYgKHBvc2l0aW9uICE9IHJlX2lzX3NldF9tZW1iZXIocG9zaXRpb24sIGxhc3QsIHNldCwgcmUuZ2V0X2RhdGEoKSwgaWNhc2UpKSkKLSAgICAgIHsKLSAgICAgICAgICsrcG9zaXRpb247Ci0gICAgICB9Ci0gICAgICBjb3VudCA9ICh1bnNpZ25lZCk6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmRpc3RhbmNlKG9yaWdpbiwgcG9zaXRpb24pOwotICAgfQotICAgZWxzZQotICAgewotICAgICAgd2hpbGUoKGNvdW50IDwgZGVzaXJlZCkgJiYgKHBvc2l0aW9uICE9IGxhc3QpICYmIChwb3NpdGlvbiAhPSByZV9pc19zZXRfbWVtYmVyKHBvc2l0aW9uLCBsYXN0LCBzZXQsIHJlLmdldF9kYXRhKCksIGljYXNlKSkpCi0gICAgICB7Ci0gICAgICAgICArK3Bvc2l0aW9uOwotICAgICAgICAgKytjb3VudDsKLSAgICAgIH0KLSAgIH0KLQotICAgaWYoY291bnQgPCByZXAtPm1pbikKLSAgICAgIHJldHVybiBmYWxzZTsKLQotICAgaWYoZ3JlZWR5KQotICAgewotICAgICAgaWYoKHJlcC0+bGVhZGluZykgJiYgKGNvdW50IDwgcmVwLT5tYXgpKQotICAgICAgICAgcmVzdGFydCA9IHBvc2l0aW9uOwotICAgICAgLy8gcHVzaCBiYWNrdHJhY2sgaW5mbyBpZiBhdmFpbGFibGU6Ci0gICAgICBpZihjb3VudCAtIHJlcC0+bWluKQotICAgICAgICAgcHVzaF9zaW5nbGVfcmVwZWF0KGNvdW50LCByZXAsIHBvc2l0aW9uLCBzYXZlZF9zdGF0ZV9ncmVlZHlfc2luZ2xlX3JlcGVhdCk7Ci0gICAgICAvLyBqdW1wIHRvIG5leHQgc3RhdGU6Ci0gICAgICBwc3RhdGUgPSByZXAtPmFsdC5wOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICB9Ci0gICBlbHNlCi0gICB7Ci0gICAgICAvLyBub24tZ3JlZWR5LCBwdXNoIHN0YXRlIGFuZCByZXR1cm4gdHJ1ZSBpZiB3ZSBjYW4gc2tpcDoKLSAgICAgIGlmKGNvdW50IDwgcmVwLT5tYXgpCi0gICAgICAgICBwdXNoX3NpbmdsZV9yZXBlYXQoY291bnQsIHJlcCwgcG9zaXRpb24sIHNhdmVkX3N0YXRlX3JlcF9sb25nX3NldCk7Ci0gICAgICBwc3RhdGUgPSByZXAtPmFsdC5wOwotICAgICAgcmV0dXJuIChwb3NpdGlvbiA9PSBsYXN0KSA/IChyZXAtPmNhbl9iZV9udWxsICYgbWFza19za2lwKSA6IGNhbl9zdGFydCgqcG9zaXRpb24sIHJlcC0+X21hcCwgbWFza19za2lwKTsKLSAgIH0KLSNpZmRlZiBfX0JPUkxBTkRDX18KLSNwcmFnbWEgb3B0aW9uIHBvcAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9yZWN1cnNpb24oKQotewotICAgTkROQk9PU1RfQVNTRVJUKHBzdGF0ZS0+dHlwZSA9PSBzeW50YXhfZWxlbWVudF9yZWN1cnNlKTsKLSAgIC8vCi0gICAvLyBCYWNrdXAgY2FsbCBzdGFjazoKLSAgIC8vCi0gICBwdXNoX3JlY3Vyc2lvbl9wb3AoKTsKLSAgIC8vCi0gICAvLyBTZXQgbmV3IGNhbGwgc3RhY2s6Ci0gICAvLwotICAgaWYocmVjdXJzaW9uX3N0YWNrLmNhcGFjaXR5KCkgPT0gMCkKLSAgIHsKLSAgICAgIHJlY3Vyc2lvbl9zdGFjay5yZXNlcnZlKDUwKTsKLSAgIH0KLSAgIHJlY3Vyc2lvbl9zdGFjay5wdXNoX2JhY2socmVjdXJzaW9uX2luZm88cmVzdWx0c190eXBlPigpKTsKLSAgIHJlY3Vyc2lvbl9zdGFjay5iYWNrKCkucHJldHVybl9hZGRyZXNzID0gcHN0YXRlLT5uZXh0LnA7Ci0gICByZWN1cnNpb25fc3RhY2suYmFjaygpLnJlc3VsdHMgPSAqbV9wcmVzdWx0OwotICAgaWYoc3RhdGljX2Nhc3Q8Y29uc3QgcmVfcmVjdXJzZSo+KHBzdGF0ZSktPnN0YXRlX2lkID4gMCkKLSAgIHsKLSAgICAgIHB1c2hfcmVwZWF0ZXJfY291bnQoc3RhdGljX2Nhc3Q8Y29uc3QgcmVfcmVjdXJzZSo+KHBzdGF0ZSktPnN0YXRlX2lkLCAmbmV4dF9jb3VudCk7Ci0gICB9Ci0gICBwc3RhdGUgPSBzdGF0aWNfY2FzdDxjb25zdCByZV9qdW1wKj4ocHN0YXRlKS0+YWx0LnA7Ci0gICByZWN1cnNpb25fc3RhY2suYmFjaygpLmlkeCA9IHN0YXRpY19jYXN0PGNvbnN0IHJlX2JyYWNlKj4ocHN0YXRlKS0+aW5kZXg7Ci0KLSAgIHJldHVybiB0cnVlOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9lbmRtYXJrKCkKLXsKLSAgIGludCBpbmRleCA9IHN0YXRpY19jYXN0PGNvbnN0IHJlX2JyYWNlKj4ocHN0YXRlKS0+aW5kZXg7Ci0gICBpY2FzZSA9IHN0YXRpY19jYXN0PGNvbnN0IHJlX2JyYWNlKj4ocHN0YXRlKS0+aWNhc2U7Ci0gICBpZihpbmRleCA+IDApCi0gICB7Ci0gICAgICBpZigobV9tYXRjaF9mbGFncyAmIG1hdGNoX25vc3VicykgPT0gMCkKLSAgICAgIHsKLSAgICAgICAgIG1fcHJlc3VsdC0+c2V0X3NlY29uZChwb3NpdGlvbiwgaW5kZXgpOwotICAgICAgfQotICAgICAgaWYoIXJlY3Vyc2lvbl9zdGFjay5lbXB0eSgpKQotICAgICAgewotICAgICAgICAgaWYoaW5kZXggPT0gcmVjdXJzaW9uX3N0YWNrLmJhY2soKS5pZHgpCi0gICAgICAgICB7Ci0gICAgICAgICAgICBwc3RhdGUgPSByZWN1cnNpb25fc3RhY2suYmFjaygpLnByZXR1cm5fYWRkcmVzczsKLSAgICAgICAgICAgICptX3ByZXN1bHQgPSByZWN1cnNpb25fc3RhY2suYmFjaygpLnJlc3VsdHM7Ci0gICAgICAgICAgICBwdXNoX3JlY3Vyc2lvbihyZWN1cnNpb25fc3RhY2suYmFjaygpLmlkeCwgcmVjdXJzaW9uX3N0YWNrLmJhY2soKS5wcmV0dXJuX2FkZHJlc3MsICZyZWN1cnNpb25fc3RhY2suYmFjaygpLnJlc3VsdHMpOwotICAgICAgICAgICAgcmVjdXJzaW9uX3N0YWNrLnBvcF9iYWNrKCk7Ci0gICAgICAgICB9Ci0gICAgICB9Ci0gICB9Ci0gICBlbHNlIGlmKChpbmRleCA8IDApICYmIChpbmRleCAhPSAtNCkpCi0gICB7Ci0gICAgICAvLyBtYXRjaGVkIGZvcndhcmQgbG9va2FoZWFkOgotICAgICAgcHN0YXRlID0gMDsKLSAgICAgIHJldHVybiB0cnVlOwotICAgfQotICAgcHN0YXRlID0gcHN0YXRlLT5uZXh0LnA7Ci0gICByZXR1cm4gdHJ1ZTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfbWF0Y2goKQotewotICAgaWYoIXJlY3Vyc2lvbl9zdGFjay5lbXB0eSgpKQotICAgewotICAgICAgTkROQk9PU1RfQVNTRVJUKDAgPT0gcmVjdXJzaW9uX3N0YWNrLmJhY2soKS5pZHgpOwotICAgICAgcHN0YXRlID0gcmVjdXJzaW9uX3N0YWNrLmJhY2soKS5wcmV0dXJuX2FkZHJlc3M7Ci0gICAgICAqbV9wcmVzdWx0ID0gcmVjdXJzaW9uX3N0YWNrLmJhY2soKS5yZXN1bHRzOwotICAgICAgcHVzaF9yZWN1cnNpb24ocmVjdXJzaW9uX3N0YWNrLmJhY2soKS5pZHgsIHJlY3Vyc2lvbl9zdGFjay5iYWNrKCkucHJldHVybl9hZGRyZXNzLCAmcmVjdXJzaW9uX3N0YWNrLmJhY2soKS5yZXN1bHRzKTsKLSAgICAgIHJlY3Vyc2lvbl9zdGFjay5wb3BfYmFjaygpOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICB9Ci0gICBpZigobV9tYXRjaF9mbGFncyAmIG1hdGNoX25vdF9udWxsKSAmJiAocG9zaXRpb24gPT0gKCptX3ByZXN1bHQpWzBdLmZpcnN0KSkKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgIGlmKChtX21hdGNoX2ZsYWdzICYgbWF0Y2hfYWxsKSAmJiAocG9zaXRpb24gIT0gbGFzdCkpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICBpZigobV9tYXRjaF9mbGFncyAmIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfbm90X2luaXRpYWxfbnVsbCkgJiYgKHBvc2l0aW9uID09IHNlYXJjaF9iYXNlKSkKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgIG1fcHJlc3VsdC0+c2V0X3NlY29uZChwb3NpdGlvbik7Ci0gICBwc3RhdGUgPSAwOwotICAgbV9oYXNfZm91bmRfbWF0Y2ggPSB0cnVlOwotICAgaWYoKG1fbWF0Y2hfZmxhZ3MgJiBtYXRjaF9wb3NpeCkgPT0gbWF0Y2hfcG9zaXgpCi0gICB7Ci0gICAgICBtX3Jlc3VsdC5tYXliZV9hc3NpZ24oKm1fcHJlc3VsdCk7Ci0gICAgICBpZigobV9tYXRjaF9mbGFncyAmIG1hdGNoX2FueSkgPT0gMCkKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgIH0KLSNpZmRlZiBORE5CT09TVF9SRUdFWF9NQVRDSF9FWFRSQQotICAgaWYobWF0Y2hfZXh0cmEgJiBtX21hdGNoX2ZsYWdzKQotICAgewotICAgICAgZm9yKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9wcmVzdWx0LT5zaXplKCk7ICsraSkKLSAgICAgICAgIGlmKCgqbV9wcmVzdWx0KVtpXS5tYXRjaGVkKQotICAgICAgICAgICAgKCgqbV9wcmVzdWx0KVtpXSkuZ2V0X2NhcHR1cmVzKCkucHVzaF9iYWNrKCgqbV9wcmVzdWx0KVtpXSk7Ci0gICB9Ci0jZW5kaWYKLSAgIHJldHVybiB0cnVlOwotfQotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi1VbndpbmQgYW5kIGFzc29jaWF0ZWQgcHJvY2VlZHVyZXMgZm9sbG93LCB0aGVzZSBwZXJmb3JtIHdoYXQgbm9ybWFsIHN0YWNrCi11bndpbmRpbmcgZG9lcyBpbiB0aGUgcmVjdXJzaXZlIGltcGxlbWVudGF0aW9uLgotCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+Ojp1bndpbmQoYm9vbCBoYXZlX21hdGNoKQotewotICAgc3RhdGljIHVud2luZF9wcm9jX3R5cGUgY29uc3Qgc191bndpbmRfdGFibGVbMThdID0gCi0gICB7Ci0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+Ojp1bndpbmRfZW5kLAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6dW53aW5kX3BhcmVuLAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6dW53aW5kX3JlY3Vyc2lvbl9zdG9wcGVyLAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6dW53aW5kX2Fzc2VydGlvbiwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OnVud2luZF9hbHQsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+Ojp1bndpbmRfcmVwZWF0ZXJfY291bnRlciwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OnVud2luZF9leHRyYV9ibG9jaywKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OnVud2luZF9ncmVlZHlfc2luZ2xlX3JlcGVhdCwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OnVud2luZF9zbG93X2RvdF9yZXBlYXQsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+Ojp1bndpbmRfZmFzdF9kb3RfcmVwZWF0LAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6dW53aW5kX2NoYXJfcmVwZWF0LAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6dW53aW5kX3Nob3J0X3NldF9yZXBlYXQsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+Ojp1bndpbmRfbG9uZ19zZXRfcmVwZWF0LAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6dW53aW5kX25vbl9ncmVlZHlfcmVwZWF0LAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6dW53aW5kX3JlY3Vyc2lvbiwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OnVud2luZF9yZWN1cnNpb25fcG9wLAotICAgfTsKLQotICAgbV9yZWN1cnNpdmVfcmVzdWx0ID0gaGF2ZV9tYXRjaDsKLSAgIHVud2luZF9wcm9jX3R5cGUgdW53aW5kZXI7Ci0gICBib29sIGNvbnQ7Ci0gICAvLwotICAgLy8ga2VlcCB1bndpbmRpbmcgb3VyIHN0YWNrIHVudGlsIHdlIGhhdmUgc29tZXRoaW5nIHRvIGRvOgotICAgLy8KLSAgIGRvCi0gICB7Ci0gICAgICB1bndpbmRlciA9IHNfdW53aW5kX3RhYmxlW21fYmFja3VwX3N0YXRlLT5zdGF0ZV9pZF07Ci0gICAgICBjb250ID0gKHRoaXMtPip1bndpbmRlcikobV9yZWN1cnNpdmVfcmVzdWx0KTsKLSAgIH13aGlsZShjb250KTsKLSAgIC8vCi0gICAvLyByZXR1cm4gdHJ1ZSBpZiB3ZSBoYXZlIG1vcmUgc3RhdGVzIHRvIHRyeToKLSAgIC8vCi0gICByZXR1cm4gcHN0YXRlID8gdHJ1ZSA6IGZhbHNlOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+Ojp1bndpbmRfZW5kKGJvb2wpCi17Ci0gICBwc3RhdGUgPSAwOyAgIC8vIG5vdGhpbmcgbGVmdCB0byBzZWFyY2gKLSAgIHJldHVybiBmYWxzZTsgLy8gZW5kIG9mIHN0YWNrIG5vdGhpbmcgbW9yZSB0byBzZWFyY2gKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6dW53aW5kX3BhcmVuKGJvb2wgaGF2ZV9tYXRjaCkKLXsKLSAgIHNhdmVkX21hdGNoZWRfcGFyZW48QmlkaUl0ZXJhdG9yPiogcG1wID0gc3RhdGljX2Nhc3Q8c2F2ZWRfbWF0Y2hlZF9wYXJlbjxCaWRpSXRlcmF0b3I+Kj4obV9iYWNrdXBfc3RhdGUpOwotICAgLy8gcmVzdG9yZSBwcmV2aW91cyB2YWx1ZXMgaWYgbm8gbWF0Y2ggd2FzIGZvdW5kOgotICAgaWYoaGF2ZV9tYXRjaCA9PSBmYWxzZSkKLSAgIHsKLSAgICAgIG1fcHJlc3VsdC0+c2V0X2ZpcnN0KHBtcC0+c3ViLmZpcnN0LCBwbXAtPmluZGV4LCBwbXAtPmluZGV4ID09IDApOwotICAgICAgbV9wcmVzdWx0LT5zZXRfc2Vjb25kKHBtcC0+c3ViLnNlY29uZCwgcG1wLT5pbmRleCwgcG1wLT5zdWIubWF0Y2hlZCwgcG1wLT5pbmRleCA9PSAwKTsKLSAgIH0KLSNpZmRlZiBORE5CT09TVF9SRUdFWF9NQVRDSF9FWFRSQQotICAgLy8KLSAgIC8vIHdlIGhhdmUgYSBtYXRjaCwgcHVzaCB0aGUgY2FwdHVyZSBpbmZvcm1hdGlvbiBvbnRvIHRoZSBzdGFjazoKLSAgIC8vCi0gICBlbHNlIGlmKHBtcC0+c3ViLm1hdGNoZWQgJiYgKG1hdGNoX2V4dHJhICYgbV9tYXRjaF9mbGFncykpCi0gICAgICAoKCptX3ByZXN1bHQpW3BtcC0+aW5kZXhdKS5nZXRfY2FwdHVyZXMoKS5wdXNoX2JhY2socG1wLT5zdWIpOwotI2VuZGlmCi0gICAvLyB1bndpbmQgc3RhY2s6Ci0gICBtX2JhY2t1cF9zdGF0ZSA9IHBtcCsxOwotICAgbmRuYm9vc3Q6OnJlX2RldGFpbDo6aW5wbGFjZV9kZXN0cm95KHBtcCk7Ci0gICByZXR1cm4gdHJ1ZTsgLy8ga2VlcCBsb29raW5nCi19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OnVud2luZF9yZWN1cnNpb25fc3RvcHBlcihib29sKQotewotICAgbmRuYm9vc3Q6OnJlX2RldGFpbDo6aW5wbGFjZV9kZXN0cm95KG1fYmFja3VwX3N0YXRlKyspOwotICAgcHN0YXRlID0gMDsgICAvLyBub3RoaW5nIGxlZnQgdG8gc2VhcmNoCi0gICByZXR1cm4gZmFsc2U7IC8vIGVuZCBvZiBzdGFjayBub3RoaW5nIG1vcmUgdG8gc2VhcmNoCi19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OnVud2luZF9hc3NlcnRpb24oYm9vbCByKQotewotICAgc2F2ZWRfYXNzZXJ0aW9uPEJpZGlJdGVyYXRvcj4qIHBtcCA9IHN0YXRpY19jYXN0PHNhdmVkX2Fzc2VydGlvbjxCaWRpSXRlcmF0b3I+Kj4obV9iYWNrdXBfc3RhdGUpOwotICAgcHN0YXRlID0gcG1wLT5wc3RhdGU7Ci0gICBwb3NpdGlvbiA9IHBtcC0+cG9zaXRpb247Ci0gICBib29sIHJlc3VsdCA9IChyID09IHBtcC0+cG9zaXRpdmUpOwotICAgbV9yZWN1cnNpdmVfcmVzdWx0ID0gcG1wLT5wb3NpdGl2ZSA/IHIgOiAhcjsKLSAgIG5kbmJvb3N0OjpyZV9kZXRhaWw6OmlucGxhY2VfZGVzdHJveShwbXArKyk7Ci0gICBtX2JhY2t1cF9zdGF0ZSA9IHBtcDsKLSAgIHJldHVybiAhcmVzdWx0OyAvLyByZXR1cm4gZmFsc2UgaWYgdGhlIGFzc2VydGlvbiB3YXMgbWF0Y2hlZCB0byBzdG9wIHNlYXJjaC4KLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6dW53aW5kX2FsdChib29sIHIpCi17Ci0gICBzYXZlZF9wb3NpdGlvbjxCaWRpSXRlcmF0b3I+KiBwbXAgPSBzdGF0aWNfY2FzdDxzYXZlZF9wb3NpdGlvbjxCaWRpSXRlcmF0b3I+Kj4obV9iYWNrdXBfc3RhdGUpOwotICAgaWYoIXIpCi0gICB7Ci0gICAgICBwc3RhdGUgPSBwbXAtPnBzdGF0ZTsKLSAgICAgIHBvc2l0aW9uID0gcG1wLT5wb3NpdGlvbjsKLSAgIH0KLSAgIG5kbmJvb3N0OjpyZV9kZXRhaWw6OmlucGxhY2VfZGVzdHJveShwbXArKyk7Ci0gICBtX2JhY2t1cF9zdGF0ZSA9IHBtcDsKLSAgIHJldHVybiByOyAKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6dW53aW5kX3JlcGVhdGVyX2NvdW50ZXIoYm9vbCkKLXsKLSAgIHNhdmVkX3JlcGVhdGVyPEJpZGlJdGVyYXRvcj4qIHBtcCA9IHN0YXRpY19jYXN0PHNhdmVkX3JlcGVhdGVyPEJpZGlJdGVyYXRvcj4qPihtX2JhY2t1cF9zdGF0ZSk7Ci0gICBuZG5ib29zdDo6cmVfZGV0YWlsOjppbnBsYWNlX2Rlc3Ryb3kocG1wKyspOwotICAgbV9iYWNrdXBfc3RhdGUgPSBwbXA7Ci0gICByZXR1cm4gdHJ1ZTsgLy8ga2VlcCBsb29raW5nCi19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OnVud2luZF9leHRyYV9ibG9jayhib29sKQotewotICAgc2F2ZWRfZXh0cmFfYmxvY2sqIHBtcCA9IHN0YXRpY19jYXN0PHNhdmVkX2V4dHJhX2Jsb2NrKj4obV9iYWNrdXBfc3RhdGUpOwotICAgdm9pZCogY29uZGVtbWVkID0gbV9zdGFja19iYXNlOwotICAgbV9zdGFja19iYXNlID0gcG1wLT5iYXNlOwotICAgbV9iYWNrdXBfc3RhdGUgPSBwbXAtPmVuZDsKLSAgIG5kbmJvb3N0OjpyZV9kZXRhaWw6OmlucGxhY2VfZGVzdHJveShwbXApOwotICAgcHV0X21lbV9ibG9jayhjb25kZW1tZWQpOwotICAgcmV0dXJuIHRydWU7IC8vIGtlZXAgbG9va2luZwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWlubGluZSB2b2lkIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6ZGVzdHJveV9zaW5nbGVfcmVwZWF0KCkKLXsKLSAgIHNhdmVkX3NpbmdsZV9yZXBlYXQ8QmlkaUl0ZXJhdG9yPiogcCA9IHN0YXRpY19jYXN0PHNhdmVkX3NpbmdsZV9yZXBlYXQ8QmlkaUl0ZXJhdG9yPio+KG1fYmFja3VwX3N0YXRlKTsKLSAgIG5kbmJvb3N0OjpyZV9kZXRhaWw6OmlucGxhY2VfZGVzdHJveShwKyspOwotICAgbV9iYWNrdXBfc3RhdGUgPSBwOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+Ojp1bndpbmRfZ3JlZWR5X3NpbmdsZV9yZXBlYXQoYm9vbCByKQotewotICAgc2F2ZWRfc2luZ2xlX3JlcGVhdDxCaWRpSXRlcmF0b3I+KiBwbXAgPSBzdGF0aWNfY2FzdDxzYXZlZF9zaW5nbGVfcmVwZWF0PEJpZGlJdGVyYXRvcj4qPihtX2JhY2t1cF9zdGF0ZSk7Ci0KLSAgIC8vIGlmIHdlIGhhdmUgYSBtYXRjaCwganVzdCBkaXNjYXJkIHRoaXMgc3RhdGU6Ci0gICBpZihyKSAKLSAgIHsKLSAgICAgIGRlc3Ryb3lfc2luZ2xlX3JlcGVhdCgpOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICB9Ci0KLSAgIGNvbnN0IHJlX3JlcGVhdCogcmVwID0gcG1wLT5yZXA7Ci0gICBzdGQ6OnNpemVfdCBjb3VudCA9IHBtcC0+Y291bnQ7Ci0gICBORE5CT09TVF9BU1NFUlQocmVwLT5uZXh0LnAgIT0gMCk7Ci0gICBORE5CT09TVF9BU1NFUlQocmVwLT5hbHQucCAhPSAwKTsKLQotICAgY291bnQgLT0gcmVwLT5taW47Ci0gICAKLSAgIGlmKChtX21hdGNoX2ZsYWdzICYgbWF0Y2hfcGFydGlhbCkgJiYgKHBvc2l0aW9uID09IGxhc3QpKQotICAgICAgbV9oYXNfcGFydGlhbF9tYXRjaCA9IHRydWU7Ci0KLSAgIE5ETkJPT1NUX0FTU0VSVChjb3VudCk7Ci0gICBwb3NpdGlvbiA9IHBtcC0+bGFzdF9wb3NpdGlvbjsKLQotICAgLy8gYmFja3RyYWNrIHRpbGwgd2UgY2FuIHNraXAgb3V0OgotICAgZG8KLSAgIHsKLSAgICAgIC0tcG9zaXRpb247Ci0gICAgICAtLWNvdW50OwotICAgICAgKytzdGF0ZV9jb3VudDsKLSAgIH13aGlsZShjb3VudCAmJiAhY2FuX3N0YXJ0KCpwb3NpdGlvbiwgcmVwLT5fbWFwLCBtYXNrX3NraXApKTsKLQotICAgLy8gaWYgd2UndmUgaGl0IGJhc2UsIGRlc3Ryb3kgdGhpcyBzdGF0ZToKLSAgIGlmKGNvdW50ID09IDApCi0gICB7Ci0gICAgICAgICBkZXN0cm95X3NpbmdsZV9yZXBlYXQoKTsKLSAgICAgICAgIGlmKCFjYW5fc3RhcnQoKnBvc2l0aW9uLCByZXAtPl9tYXAsIG1hc2tfc2tpcCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgIH0KLSAgIGVsc2UKLSAgIHsKLSAgICAgIHBtcC0+Y291bnQgPSBjb3VudCArIHJlcC0+bWluOwotICAgICAgcG1wLT5sYXN0X3Bvc2l0aW9uID0gcG9zaXRpb247Ci0gICB9Ci0gICBwc3RhdGUgPSByZXAtPmFsdC5wOwotICAgcmV0dXJuIGZhbHNlOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+Ojp1bndpbmRfc2xvd19kb3RfcmVwZWF0KGJvb2wgcikKLXsKLSAgIHNhdmVkX3NpbmdsZV9yZXBlYXQ8QmlkaUl0ZXJhdG9yPiogcG1wID0gc3RhdGljX2Nhc3Q8c2F2ZWRfc2luZ2xlX3JlcGVhdDxCaWRpSXRlcmF0b3I+Kj4obV9iYWNrdXBfc3RhdGUpOwotCi0gICAvLyBpZiB3ZSBoYXZlIGEgbWF0Y2gsIGp1c3QgZGlzY2FyZCB0aGlzIHN0YXRlOgotICAgaWYocikgCi0gICB7Ci0gICAgICBkZXN0cm95X3NpbmdsZV9yZXBlYXQoKTsKLSAgICAgIHJldHVybiB0cnVlOwotICAgfQotCi0gICBjb25zdCByZV9yZXBlYXQqIHJlcCA9IHBtcC0+cmVwOwotICAgc3RkOjpzaXplX3QgY291bnQgPSBwbXAtPmNvdW50OwotICAgTkROQk9PU1RfQVNTRVJUKHJlcC0+dHlwZSA9PSBzeW50YXhfZWxlbWVudF9kb3RfcmVwKTsKLSAgIE5ETkJPT1NUX0FTU0VSVChyZXAtPm5leHQucCAhPSAwKTsKLSAgIE5ETkJPT1NUX0FTU0VSVChyZXAtPmFsdC5wICE9IDApOwotICAgTkROQk9PU1RfQVNTRVJUKHJlcC0+bmV4dC5wLT50eXBlID09IHN5bnRheF9lbGVtZW50X3dpbGQpOwotCi0gICBORE5CT09TVF9BU1NFUlQoY291bnQgPCByZXAtPm1heCk7Ci0gICBwc3RhdGUgPSByZXAtPm5leHQucDsKLSAgIHBvc2l0aW9uID0gcG1wLT5sYXN0X3Bvc2l0aW9uOwotCi0gICBpZihwb3NpdGlvbiAhPSBsYXN0KQotICAgewotICAgICAgLy8gd2luZCBmb3J3YXJkIHVudGlsIHdlIGNhbiBza2lwIG91dCBvZiB0aGUgcmVwZWF0OgotICAgICAgZG8KLSAgICAgIHsKLSAgICAgICAgIGlmKCFtYXRjaF93aWxkKCkpCi0gICAgICAgICB7Ci0gICAgICAgICAgICAvLyBmYWlsZWQgcmVwZWF0IG1hdGNoLCBkaXNjYXJkIHRoaXMgc3RhdGUgYW5kIGxvb2sgZm9yIGFub3RoZXI6Ci0gICAgICAgICAgICBkZXN0cm95X3NpbmdsZV9yZXBlYXQoKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgfQotICAgICAgICAgKytjb3VudDsKLSAgICAgICAgICsrc3RhdGVfY291bnQ7Ci0gICAgICAgICBwc3RhdGUgPSByZXAtPm5leHQucDsKLSAgICAgIH13aGlsZSgoY291bnQgPCByZXAtPm1heCkgJiYgKHBvc2l0aW9uICE9IGxhc3QpICYmICFjYW5fc3RhcnQoKnBvc2l0aW9uLCByZXAtPl9tYXAsIG1hc2tfc2tpcCkpOwotICAgfSAgIAotICAgaWYocG9zaXRpb24gPT0gbGFzdCkKLSAgIHsKLSAgICAgIC8vIGNhbid0IHJlcGVhdCBhbnkgbW9yZSwgcmVtb3ZlIHRoZSBwdXNoZWQgc3RhdGU6IAotICAgICAgZGVzdHJveV9zaW5nbGVfcmVwZWF0KCk7Ci0gICAgICBpZigobV9tYXRjaF9mbGFncyAmIG1hdGNoX3BhcnRpYWwpICYmIChwb3NpdGlvbiA9PSBsYXN0KSAmJiAocG9zaXRpb24gIT0gc2VhcmNoX2Jhc2UpKQotICAgICAgICAgbV9oYXNfcGFydGlhbF9tYXRjaCA9IHRydWU7Ci0gICAgICBpZigwID09IChyZXAtPmNhbl9iZV9udWxsICYgbWFza19za2lwKSkKLSAgICAgICAgIHJldHVybiB0cnVlOwotICAgfQotICAgZWxzZSBpZihjb3VudCA9PSByZXAtPm1heCkKLSAgIHsKLSAgICAgIC8vIGNhbid0IHJlcGVhdCBhbnkgbW9yZSwgcmVtb3ZlIHRoZSBwdXNoZWQgc3RhdGU6IAotICAgICAgZGVzdHJveV9zaW5nbGVfcmVwZWF0KCk7Ci0gICAgICBpZighY2FuX3N0YXJ0KCpwb3NpdGlvbiwgcmVwLT5fbWFwLCBtYXNrX3NraXApKQotICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICB9Ci0gICBlbHNlCi0gICB7Ci0gICAgICBwbXAtPmNvdW50ID0gY291bnQ7Ci0gICAgICBwbXAtPmxhc3RfcG9zaXRpb24gPSBwb3NpdGlvbjsKLSAgIH0KLSAgIHBzdGF0ZSA9IHJlcC0+YWx0LnA7Ci0gICByZXR1cm4gZmFsc2U7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OnVud2luZF9mYXN0X2RvdF9yZXBlYXQoYm9vbCByKQotewotICAgc2F2ZWRfc2luZ2xlX3JlcGVhdDxCaWRpSXRlcmF0b3I+KiBwbXAgPSBzdGF0aWNfY2FzdDxzYXZlZF9zaW5nbGVfcmVwZWF0PEJpZGlJdGVyYXRvcj4qPihtX2JhY2t1cF9zdGF0ZSk7Ci0KLSAgIC8vIGlmIHdlIGhhdmUgYSBtYXRjaCwganVzdCBkaXNjYXJkIHRoaXMgc3RhdGU6Ci0gICBpZihyKSAKLSAgIHsKLSAgICAgIGRlc3Ryb3lfc2luZ2xlX3JlcGVhdCgpOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICB9Ci0KLSAgIGNvbnN0IHJlX3JlcGVhdCogcmVwID0gcG1wLT5yZXA7Ci0gICBzdGQ6OnNpemVfdCBjb3VudCA9IHBtcC0+Y291bnQ7Ci0KLSAgIE5ETkJPT1NUX0FTU0VSVChjb3VudCA8IHJlcC0+bWF4KTsKLSAgIHBvc2l0aW9uID0gcG1wLT5sYXN0X3Bvc2l0aW9uOwotICAgaWYocG9zaXRpb24gIT0gbGFzdCkKLSAgIHsKLQotICAgICAgLy8gd2luZCBmb3J3YXJkIHVudGlsIHdlIGNhbiBza2lwIG91dCBvZiB0aGUgcmVwZWF0OgotICAgICAgZG8KLSAgICAgIHsKLSAgICAgICAgICsrcG9zaXRpb247Ci0gICAgICAgICArK2NvdW50OwotICAgICAgICAgKytzdGF0ZV9jb3VudDsKLSAgICAgIH13aGlsZSgoY291bnQgPCByZXAtPm1heCkgJiYgKHBvc2l0aW9uICE9IGxhc3QpICYmICFjYW5fc3RhcnQoKnBvc2l0aW9uLCByZXAtPl9tYXAsIG1hc2tfc2tpcCkpOwotICAgfQotCi0gICAvLyByZW1lbWJlciB3aGVyZSB3ZSBnb3QgdG8gaWYgdGhpcyBpcyBhIGxlYWRpbmcgcmVwZWF0OgotICAgaWYoKHJlcC0+bGVhZGluZykgJiYgKGNvdW50IDwgcmVwLT5tYXgpKQotICAgICAgcmVzdGFydCA9IHBvc2l0aW9uOwotICAgaWYocG9zaXRpb24gPT0gbGFzdCkKLSAgIHsKLSAgICAgIC8vIGNhbid0IHJlcGVhdCBhbnkgbW9yZSwgcmVtb3ZlIHRoZSBwdXNoZWQgc3RhdGU6IAotICAgICAgZGVzdHJveV9zaW5nbGVfcmVwZWF0KCk7Ci0gICAgICBpZigobV9tYXRjaF9mbGFncyAmIG1hdGNoX3BhcnRpYWwpICYmIChwb3NpdGlvbiA9PSBsYXN0KSAmJiAocG9zaXRpb24gIT0gc2VhcmNoX2Jhc2UpKQotICAgICAgICAgbV9oYXNfcGFydGlhbF9tYXRjaCA9IHRydWU7Ci0gICAgICBpZigwID09IChyZXAtPmNhbl9iZV9udWxsICYgbWFza19za2lwKSkKLSAgICAgICAgIHJldHVybiB0cnVlOwotICAgfQotICAgZWxzZSBpZihjb3VudCA9PSByZXAtPm1heCkKLSAgIHsKLSAgICAgIC8vIGNhbid0IHJlcGVhdCBhbnkgbW9yZSwgcmVtb3ZlIHRoZSBwdXNoZWQgc3RhdGU6IAotICAgICAgZGVzdHJveV9zaW5nbGVfcmVwZWF0KCk7Ci0gICAgICBpZighY2FuX3N0YXJ0KCpwb3NpdGlvbiwgcmVwLT5fbWFwLCBtYXNrX3NraXApKQotICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICB9Ci0gICBlbHNlCi0gICB7Ci0gICAgICBwbXAtPmNvdW50ID0gY291bnQ7Ci0gICAgICBwbXAtPmxhc3RfcG9zaXRpb24gPSBwb3NpdGlvbjsKLSAgIH0KLSAgIHBzdGF0ZSA9IHJlcC0+YWx0LnA7Ci0gICByZXR1cm4gZmFsc2U7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OnVud2luZF9jaGFyX3JlcGVhdChib29sIHIpCi17Ci0gICBzYXZlZF9zaW5nbGVfcmVwZWF0PEJpZGlJdGVyYXRvcj4qIHBtcCA9IHN0YXRpY19jYXN0PHNhdmVkX3NpbmdsZV9yZXBlYXQ8QmlkaUl0ZXJhdG9yPio+KG1fYmFja3VwX3N0YXRlKTsKLQotICAgLy8gaWYgd2UgaGF2ZSBhIG1hdGNoLCBqdXN0IGRpc2NhcmQgdGhpcyBzdGF0ZToKLSAgIGlmKHIpIAotICAgewotICAgICAgZGVzdHJveV9zaW5nbGVfcmVwZWF0KCk7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgIH0KLQotICAgY29uc3QgcmVfcmVwZWF0KiByZXAgPSBwbXAtPnJlcDsKLSAgIHN0ZDo6c2l6ZV90IGNvdW50ID0gcG1wLT5jb3VudDsKLSAgIHBzdGF0ZSA9IHJlcC0+bmV4dC5wOwotICAgY29uc3QgY2hhcl90eXBlIHdoYXQgPSAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyX3R5cGUqPihzdGF0aWNfY2FzdDxjb25zdCByZV9saXRlcmFsKj4ocHN0YXRlKSArIDEpOwotICAgcG9zaXRpb24gPSBwbXAtPmxhc3RfcG9zaXRpb247Ci0KLSAgIE5ETkJPT1NUX0FTU0VSVChyZXAtPnR5cGUgPT0gc3ludGF4X2VsZW1lbnRfY2hhcl9yZXApOwotICAgTkROQk9PU1RfQVNTRVJUKHJlcC0+bmV4dC5wICE9IDApOwotICAgTkROQk9PU1RfQVNTRVJUKHJlcC0+YWx0LnAgIT0gMCk7Ci0gICBORE5CT09TVF9BU1NFUlQocmVwLT5uZXh0LnAtPnR5cGUgPT0gc3ludGF4X2VsZW1lbnRfbGl0ZXJhbCk7Ci0gICBORE5CT09TVF9BU1NFUlQoY291bnQgPCByZXAtPm1heCk7Ci0KLSAgIGlmKHBvc2l0aW9uICE9IGxhc3QpCi0gICB7Ci0gICAgICAvLyB3aW5kIGZvcndhcmQgdW50aWwgd2UgY2FuIHNraXAgb3V0IG9mIHRoZSByZXBlYXQ6Ci0gICAgICBkbwotICAgICAgewotICAgICAgICAgaWYodHJhaXRzX2luc3QudHJhbnNsYXRlKCpwb3NpdGlvbiwgaWNhc2UpICE9IHdoYXQpCi0gICAgICAgICB7Ci0gICAgICAgICAgICAvLyBmYWlsZWQgcmVwZWF0IG1hdGNoLCBkaXNjYXJkIHRoaXMgc3RhdGUgYW5kIGxvb2sgZm9yIGFub3RoZXI6Ci0gICAgICAgICAgICBkZXN0cm95X3NpbmdsZV9yZXBlYXQoKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgfQotICAgICAgICAgKytjb3VudDsKLSAgICAgICAgICsrIHBvc2l0aW9uOwotICAgICAgICAgKytzdGF0ZV9jb3VudDsKLSAgICAgICAgIHBzdGF0ZSA9IHJlcC0+bmV4dC5wOwotICAgICAgfXdoaWxlKChjb3VudCA8IHJlcC0+bWF4KSAmJiAocG9zaXRpb24gIT0gbGFzdCkgJiYgIWNhbl9zdGFydCgqcG9zaXRpb24sIHJlcC0+X21hcCwgbWFza19za2lwKSk7Ci0gICB9ICAgCi0gICAvLyByZW1lbWJlciB3aGVyZSB3ZSBnb3QgdG8gaWYgdGhpcyBpcyBhIGxlYWRpbmcgcmVwZWF0OgotICAgaWYoKHJlcC0+bGVhZGluZykgJiYgKGNvdW50IDwgcmVwLT5tYXgpKQotICAgICAgcmVzdGFydCA9IHBvc2l0aW9uOwotICAgaWYocG9zaXRpb24gPT0gbGFzdCkKLSAgIHsKLSAgICAgIC8vIGNhbid0IHJlcGVhdCBhbnkgbW9yZSwgcmVtb3ZlIHRoZSBwdXNoZWQgc3RhdGU6IAotICAgICAgZGVzdHJveV9zaW5nbGVfcmVwZWF0KCk7Ci0gICAgICBpZigobV9tYXRjaF9mbGFncyAmIG1hdGNoX3BhcnRpYWwpICYmIChwb3NpdGlvbiA9PSBsYXN0KSAmJiAocG9zaXRpb24gIT0gc2VhcmNoX2Jhc2UpKQotICAgICAgICAgbV9oYXNfcGFydGlhbF9tYXRjaCA9IHRydWU7Ci0gICAgICBpZigwID09IChyZXAtPmNhbl9iZV9udWxsICYgbWFza19za2lwKSkKLSAgICAgICAgIHJldHVybiB0cnVlOwotICAgfQotICAgZWxzZSBpZihjb3VudCA9PSByZXAtPm1heCkKLSAgIHsKLSAgICAgIC8vIGNhbid0IHJlcGVhdCBhbnkgbW9yZSwgcmVtb3ZlIHRoZSBwdXNoZWQgc3RhdGU6IAotICAgICAgZGVzdHJveV9zaW5nbGVfcmVwZWF0KCk7Ci0gICAgICBpZighY2FuX3N0YXJ0KCpwb3NpdGlvbiwgcmVwLT5fbWFwLCBtYXNrX3NraXApKQotICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICB9Ci0gICBlbHNlCi0gICB7Ci0gICAgICBwbXAtPmNvdW50ID0gY291bnQ7Ci0gICAgICBwbXAtPmxhc3RfcG9zaXRpb24gPSBwb3NpdGlvbjsKLSAgIH0KLSAgIHBzdGF0ZSA9IHJlcC0+YWx0LnA7Ci0gICByZXR1cm4gZmFsc2U7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OnVud2luZF9zaG9ydF9zZXRfcmVwZWF0KGJvb2wgcikKLXsKLSAgIHNhdmVkX3NpbmdsZV9yZXBlYXQ8QmlkaUl0ZXJhdG9yPiogcG1wID0gc3RhdGljX2Nhc3Q8c2F2ZWRfc2luZ2xlX3JlcGVhdDxCaWRpSXRlcmF0b3I+Kj4obV9iYWNrdXBfc3RhdGUpOwotCi0gICAvLyBpZiB3ZSBoYXZlIGEgbWF0Y2gsIGp1c3QgZGlzY2FyZCB0aGlzIHN0YXRlOgotICAgaWYocikgCi0gICB7Ci0gICAgICBkZXN0cm95X3NpbmdsZV9yZXBlYXQoKTsKLSAgICAgIHJldHVybiB0cnVlOwotICAgfQotCi0gICBjb25zdCByZV9yZXBlYXQqIHJlcCA9IHBtcC0+cmVwOwotICAgc3RkOjpzaXplX3QgY291bnQgPSBwbXAtPmNvdW50OwotICAgcHN0YXRlID0gcmVwLT5uZXh0LnA7Ci0gICBjb25zdCB1bnNpZ25lZCBjaGFyKiBtYXAgPSBzdGF0aWNfY2FzdDxjb25zdCByZV9zZXQqPihyZXAtPm5leHQucCktPl9tYXA7Ci0gICBwb3NpdGlvbiA9IHBtcC0+bGFzdF9wb3NpdGlvbjsKLQotICAgTkROQk9PU1RfQVNTRVJUKHJlcC0+dHlwZSA9PSBzeW50YXhfZWxlbWVudF9zaG9ydF9zZXRfcmVwKTsKLSAgIE5ETkJPT1NUX0FTU0VSVChyZXAtPm5leHQucCAhPSAwKTsKLSAgIE5ETkJPT1NUX0FTU0VSVChyZXAtPmFsdC5wICE9IDApOwotICAgTkROQk9PU1RfQVNTRVJUKHJlcC0+bmV4dC5wLT50eXBlID09IHN5bnRheF9lbGVtZW50X3NldCk7Ci0gICBORE5CT09TVF9BU1NFUlQoY291bnQgPCByZXAtPm1heCk7Ci0gICAKLSAgIGlmKHBvc2l0aW9uICE9IGxhc3QpCi0gICB7Ci0gICAgICAvLyB3aW5kIGZvcndhcmQgdW50aWwgd2UgY2FuIHNraXAgb3V0IG9mIHRoZSByZXBlYXQ6Ci0gICAgICBkbwotICAgICAgewotICAgICAgICAgaWYoIW1hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPih0cmFpdHNfaW5zdC50cmFuc2xhdGUoKnBvc2l0aW9uLCBpY2FzZSkpXSkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIGZhaWxlZCByZXBlYXQgbWF0Y2gsIGRpc2NhcmQgdGhpcyBzdGF0ZSBhbmQgbG9vayBmb3IgYW5vdGhlcjoKLSAgICAgICAgICAgIGRlc3Ryb3lfc2luZ2xlX3JlcGVhdCgpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICB9Ci0gICAgICAgICArK2NvdW50OwotICAgICAgICAgKysgcG9zaXRpb247Ci0gICAgICAgICArK3N0YXRlX2NvdW50OwotICAgICAgICAgcHN0YXRlID0gcmVwLT5uZXh0LnA7Ci0gICAgICB9d2hpbGUoKGNvdW50IDwgcmVwLT5tYXgpICYmIChwb3NpdGlvbiAhPSBsYXN0KSAmJiAhY2FuX3N0YXJ0KCpwb3NpdGlvbiwgcmVwLT5fbWFwLCBtYXNrX3NraXApKTsKLSAgIH0gICAKLSAgIC8vIHJlbWVtYmVyIHdoZXJlIHdlIGdvdCB0byBpZiB0aGlzIGlzIGEgbGVhZGluZyByZXBlYXQ6Ci0gICBpZigocmVwLT5sZWFkaW5nKSAmJiAoY291bnQgPCByZXAtPm1heCkpCi0gICAgICByZXN0YXJ0ID0gcG9zaXRpb247Ci0gICBpZihwb3NpdGlvbiA9PSBsYXN0KQotICAgewotICAgICAgLy8gY2FuJ3QgcmVwZWF0IGFueSBtb3JlLCByZW1vdmUgdGhlIHB1c2hlZCBzdGF0ZTogCi0gICAgICBkZXN0cm95X3NpbmdsZV9yZXBlYXQoKTsKLSAgICAgIGlmKChtX21hdGNoX2ZsYWdzICYgbWF0Y2hfcGFydGlhbCkgJiYgKHBvc2l0aW9uID09IGxhc3QpICYmIChwb3NpdGlvbiAhPSBzZWFyY2hfYmFzZSkpCi0gICAgICAgICBtX2hhc19wYXJ0aWFsX21hdGNoID0gdHJ1ZTsKLSAgICAgIGlmKDAgPT0gKHJlcC0+Y2FuX2JlX251bGwgJiBtYXNrX3NraXApKQotICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICB9Ci0gICBlbHNlIGlmKGNvdW50ID09IHJlcC0+bWF4KQotICAgewotICAgICAgLy8gY2FuJ3QgcmVwZWF0IGFueSBtb3JlLCByZW1vdmUgdGhlIHB1c2hlZCBzdGF0ZTogCi0gICAgICBkZXN0cm95X3NpbmdsZV9yZXBlYXQoKTsKLSAgICAgIGlmKCFjYW5fc3RhcnQoKnBvc2l0aW9uLCByZXAtPl9tYXAsIG1hc2tfc2tpcCkpCi0gICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgIH0KLSAgIGVsc2UKLSAgIHsKLSAgICAgIHBtcC0+Y291bnQgPSBjb3VudDsKLSAgICAgIHBtcC0+bGFzdF9wb3NpdGlvbiA9IHBvc2l0aW9uOwotICAgfQotICAgcHN0YXRlID0gcmVwLT5hbHQucDsKLSAgIHJldHVybiBmYWxzZTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6dW53aW5kX2xvbmdfc2V0X3JlcGVhdChib29sIHIpCi17Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHRyYWl0czo6Y2hhcl9jbGFzc190eXBlIG1fdHlwZTsKLSAgIHNhdmVkX3NpbmdsZV9yZXBlYXQ8QmlkaUl0ZXJhdG9yPiogcG1wID0gc3RhdGljX2Nhc3Q8c2F2ZWRfc2luZ2xlX3JlcGVhdDxCaWRpSXRlcmF0b3I+Kj4obV9iYWNrdXBfc3RhdGUpOwotCi0gICAvLyBpZiB3ZSBoYXZlIGEgbWF0Y2gsIGp1c3QgZGlzY2FyZCB0aGlzIHN0YXRlOgotICAgaWYocikKLSAgIHsKLSAgICAgIGRlc3Ryb3lfc2luZ2xlX3JlcGVhdCgpOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICB9Ci0KLSAgIGNvbnN0IHJlX3JlcGVhdCogcmVwID0gcG1wLT5yZXA7Ci0gICBzdGQ6OnNpemVfdCBjb3VudCA9IHBtcC0+Y291bnQ7Ci0gICBwc3RhdGUgPSByZXAtPm5leHQucDsKLSAgIGNvbnN0IHJlX3NldF9sb25nPG1fdHlwZT4qIHNldCA9IHN0YXRpY19jYXN0PGNvbnN0IHJlX3NldF9sb25nPG1fdHlwZT4qPihwc3RhdGUpOwotICAgcG9zaXRpb24gPSBwbXAtPmxhc3RfcG9zaXRpb247Ci0KLSAgIE5ETkJPT1NUX0FTU0VSVChyZXAtPnR5cGUgPT0gc3ludGF4X2VsZW1lbnRfbG9uZ19zZXRfcmVwKTsKLSAgIE5ETkJPT1NUX0FTU0VSVChyZXAtPm5leHQucCAhPSAwKTsKLSAgIE5ETkJPT1NUX0FTU0VSVChyZXAtPmFsdC5wICE9IDApOwotICAgTkROQk9PU1RfQVNTRVJUKHJlcC0+bmV4dC5wLT50eXBlID09IHN5bnRheF9lbGVtZW50X2xvbmdfc2V0KTsKLSAgIE5ETkJPT1NUX0FTU0VSVChjb3VudCA8IHJlcC0+bWF4KTsKLQotICAgaWYocG9zaXRpb24gIT0gbGFzdCkKLSAgIHsKLSAgICAgIC8vIHdpbmQgZm9yd2FyZCB1bnRpbCB3ZSBjYW4gc2tpcCBvdXQgb2YgdGhlIHJlcGVhdDoKLSAgICAgIGRvCi0gICAgICB7Ci0gICAgICAgICBpZihwb3NpdGlvbiA9PSByZV9pc19zZXRfbWVtYmVyKHBvc2l0aW9uLCBsYXN0LCBzZXQsIHJlLmdldF9kYXRhKCksIGljYXNlKSkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIGZhaWxlZCByZXBlYXQgbWF0Y2gsIGRpc2NhcmQgdGhpcyBzdGF0ZSBhbmQgbG9vayBmb3IgYW5vdGhlcjoKLSAgICAgICAgICAgIGRlc3Ryb3lfc2luZ2xlX3JlcGVhdCgpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICB9Ci0gICAgICAgICArK3Bvc2l0aW9uOwotICAgICAgICAgKytjb3VudDsKLSAgICAgICAgICsrc3RhdGVfY291bnQ7Ci0gICAgICAgICBwc3RhdGUgPSByZXAtPm5leHQucDsKLSAgICAgIH13aGlsZSgoY291bnQgPCByZXAtPm1heCkgJiYgKHBvc2l0aW9uICE9IGxhc3QpICYmICFjYW5fc3RhcnQoKnBvc2l0aW9uLCByZXAtPl9tYXAsIG1hc2tfc2tpcCkpOwotICAgfSAgIAotICAgLy8gcmVtZW1iZXIgd2hlcmUgd2UgZ290IHRvIGlmIHRoaXMgaXMgYSBsZWFkaW5nIHJlcGVhdDoKLSAgIGlmKChyZXAtPmxlYWRpbmcpICYmIChjb3VudCA8IHJlcC0+bWF4KSkKLSAgICAgIHJlc3RhcnQgPSBwb3NpdGlvbjsKLSAgIGlmKHBvc2l0aW9uID09IGxhc3QpCi0gICB7Ci0gICAgICAvLyBjYW4ndCByZXBlYXQgYW55IG1vcmUsIHJlbW92ZSB0aGUgcHVzaGVkIHN0YXRlOgotICAgICAgZGVzdHJveV9zaW5nbGVfcmVwZWF0KCk7Ci0gICAgICBpZigobV9tYXRjaF9mbGFncyAmIG1hdGNoX3BhcnRpYWwpICYmIChwb3NpdGlvbiA9PSBsYXN0KSAmJiAocG9zaXRpb24gIT0gc2VhcmNoX2Jhc2UpKQotICAgICAgICAgbV9oYXNfcGFydGlhbF9tYXRjaCA9IHRydWU7Ci0gICAgICBpZigwID09IChyZXAtPmNhbl9iZV9udWxsICYgbWFza19za2lwKSkKLSAgICAgICAgIHJldHVybiB0cnVlOwotICAgfQotICAgZWxzZSBpZihjb3VudCA9PSByZXAtPm1heCkKLSAgIHsKLSAgICAgIC8vIGNhbid0IHJlcGVhdCBhbnkgbW9yZSwgcmVtb3ZlIHRoZSBwdXNoZWQgc3RhdGU6IAotICAgICAgZGVzdHJveV9zaW5nbGVfcmVwZWF0KCk7Ci0gICAgICBpZighY2FuX3N0YXJ0KCpwb3NpdGlvbiwgcmVwLT5fbWFwLCBtYXNrX3NraXApKQotICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICB9Ci0gICBlbHNlCi0gICB7Ci0gICAgICBwbXAtPmNvdW50ID0gY291bnQ7Ci0gICAgICBwbXAtPmxhc3RfcG9zaXRpb24gPSBwb3NpdGlvbjsKLSAgIH0KLSAgIHBzdGF0ZSA9IHJlcC0+YWx0LnA7Ci0gICByZXR1cm4gZmFsc2U7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OnVud2luZF9ub25fZ3JlZWR5X3JlcGVhdChib29sIHIpCi17Ci0gICBzYXZlZF9wb3NpdGlvbjxCaWRpSXRlcmF0b3I+KiBwbXAgPSBzdGF0aWNfY2FzdDxzYXZlZF9wb3NpdGlvbjxCaWRpSXRlcmF0b3I+Kj4obV9iYWNrdXBfc3RhdGUpOwotICAgaWYoIXIpCi0gICB7Ci0gICAgICBwb3NpdGlvbiA9IHBtcC0+cG9zaXRpb247Ci0gICAgICBwc3RhdGUgPSBwbXAtPnBzdGF0ZTsKLSAgICAgICsrKCpuZXh0X2NvdW50KTsKLSAgIH0KLSAgIG5kbmJvb3N0OjpyZV9kZXRhaWw6OmlucGxhY2VfZGVzdHJveShwbXArKyk7Ci0gICBtX2JhY2t1cF9zdGF0ZSA9IHBtcDsKLSAgIHJldHVybiByOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+Ojp1bndpbmRfcmVjdXJzaW9uKGJvb2wgcikKLXsKLSAgIHNhdmVkX3JlY3Vyc2lvbjxyZXN1bHRzX3R5cGU+KiBwbXAgPSBzdGF0aWNfY2FzdDxzYXZlZF9yZWN1cnNpb248cmVzdWx0c190eXBlPio+KG1fYmFja3VwX3N0YXRlKTsKLSAgIGlmKCFyKQotICAgewotICAgICAgcmVjdXJzaW9uX3N0YWNrLnB1c2hfYmFjayhyZWN1cnNpb25faW5mbzxyZXN1bHRzX3R5cGU+KCkpOwotICAgICAgcmVjdXJzaW9uX3N0YWNrLmJhY2soKS5pZHggPSBwbXAtPnJlY3Vyc2lvbl9pZDsKLSAgICAgIHJlY3Vyc2lvbl9zdGFjay5iYWNrKCkucHJldHVybl9hZGRyZXNzID0gcG1wLT5wcmV0dXJuX2FkZHJlc3M7Ci0gICAgICByZWN1cnNpb25fc3RhY2suYmFjaygpLnJlc3VsdHMgPSBwbXAtPnJlc3VsdHM7Ci0gICB9Ci0gICBuZG5ib29zdDo6cmVfZGV0YWlsOjppbnBsYWNlX2Rlc3Ryb3kocG1wKyspOwotICAgbV9iYWNrdXBfc3RhdGUgPSBwbXA7Ci0gICByZXR1cm4gdHJ1ZTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6dW53aW5kX3JlY3Vyc2lvbl9wb3AoYm9vbCByKQotewotICAgc2F2ZWRfc3RhdGUqIHBtcCA9IHN0YXRpY19jYXN0PHNhdmVkX3N0YXRlKj4obV9iYWNrdXBfc3RhdGUpOwotICAgaWYoIXIpCi0gICB7Ci0gICAgICByZWN1cnNpb25fc3RhY2sucG9wX2JhY2soKTsKLSAgIH0KLSAgIG5kbmJvb3N0OjpyZV9kZXRhaWw6OmlucGxhY2VfZGVzdHJveShwbXArKyk7Ci0gICBtX2JhY2t1cF9zdGF0ZSA9IHBtcDsKLSAgIHJldHVybiB0cnVlOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLXZvaWQgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjpwdXNoX3JlY3Vyc2lvbl9wb3AoKQotewotICAgc2F2ZWRfc3RhdGUqIHBtcCA9IHN0YXRpY19jYXN0PHNhdmVkX3N0YXRlKj4obV9iYWNrdXBfc3RhdGUpOwotICAgLS1wbXA7Ci0gICBpZihwbXAgPCBtX3N0YWNrX2Jhc2UpCi0gICB7Ci0gICAgICBleHRlbmRfc3RhY2soKTsKLSAgICAgIHBtcCA9IHN0YXRpY19jYXN0PHNhdmVkX3N0YXRlKj4obV9iYWNrdXBfc3RhdGUpOwotICAgICAgLS1wbXA7Ci0gICB9Ci0gICAodm9pZCkgbmV3IChwbXApc2F2ZWRfc3RhdGUoMTUpOwotICAgbV9iYWNrdXBfc3RhdGUgPSBwbXA7Ci19Ci0vKgotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6dW53aW5kX3BhcmVudGhlc2lzX3BvcChib29sIHIpCi17Ci0gICBzYXZlZF9zdGF0ZSogcG1wID0gc3RhdGljX2Nhc3Q8c2F2ZWRfc3RhdGUqPihtX2JhY2t1cF9zdGF0ZSk7Ci0gICBpZighcikKLSAgIHsKLSAgICAgIC0tcGFyZW50aGVzaXNfc3RhY2tfcG9zaXRpb247Ci0gICB9Ci0gICBuZG5ib29zdDo6cmVfZGV0YWlsOjppbnBsYWNlX2Rlc3Ryb3kocG1wKyspOwotICAgbV9iYWNrdXBfc3RhdGUgPSBwbXA7Ci0gICByZXR1cm4gdHJ1ZTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci12b2lkIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6cHVzaF9wYXJlbnRoZXNpc19wb3AoKQotewotICAgc2F2ZWRfc3RhdGUqIHBtcCA9IHN0YXRpY19jYXN0PHNhdmVkX3N0YXRlKj4obV9iYWNrdXBfc3RhdGUpOwotICAgLS1wbXA7Ci0gICBpZihwbXAgPCBtX3N0YWNrX2Jhc2UpCi0gICB7Ci0gICAgICBleHRlbmRfc3RhY2soKTsKLSAgICAgIHBtcCA9IHN0YXRpY19jYXN0PHNhdmVkX3N0YXRlKj4obV9iYWNrdXBfc3RhdGUpOwotICAgICAgLS1wbXA7Ci0gICB9Ci0gICAodm9pZCkgbmV3IChwbXApc2F2ZWRfc3RhdGUoMTYpOwotICAgbV9iYWNrdXBfc3RhdGUgPSBwbXA7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OnVud2luZF9wYXJlbnRoZXNpc19wdXNoKGJvb2wgcikKLXsKLSAgIHNhdmVkX3Bvc2l0aW9uPEJpZGlJdGVyYXRvcj4qIHBtcCA9IHN0YXRpY19jYXN0PHNhdmVkX3Bvc2l0aW9uPEJpZGlJdGVyYXRvcj4qPihtX2JhY2t1cF9zdGF0ZSk7Ci0gICBpZighcikKLSAgIHsKLSAgICAgIHBhcmVudGhlc2lzX3N0YWNrW3BhcmVudGhlc2lzX3N0YWNrX3Bvc2l0aW9uKytdID0gcG1wLT5wb3NpdGlvbjsKLSAgIH0KLSAgIG5kbmJvb3N0OjpyZV9kZXRhaWw6OmlucGxhY2VfZGVzdHJveShwbXArKyk7Ci0gICBtX2JhY2t1cF9zdGF0ZSA9IHBtcDsKLSAgIHJldHVybiB0cnVlOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWlubGluZSB2b2lkIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6cHVzaF9wYXJlbnRoZXNpc19wdXNoKEJpZGlJdGVyYXRvciBwKQotewotICAgc2F2ZWRfcG9zaXRpb248QmlkaUl0ZXJhdG9yPiogcG1wID0gc3RhdGljX2Nhc3Q8c2F2ZWRfcG9zaXRpb248QmlkaUl0ZXJhdG9yPio+KG1fYmFja3VwX3N0YXRlKTsKLSAgIC0tcG1wOwotICAgaWYocG1wIDwgbV9zdGFja19iYXNlKQotICAgewotICAgICAgZXh0ZW5kX3N0YWNrKCk7Ci0gICAgICBwbXAgPSBzdGF0aWNfY2FzdDxzYXZlZF9wb3NpdGlvbjxCaWRpSXRlcmF0b3I+Kj4obV9iYWNrdXBfc3RhdGUpOwotICAgICAgLS1wbXA7Ci0gICB9Ci0gICAodm9pZCkgbmV3IChwbXApc2F2ZWRfcG9zaXRpb248QmlkaUl0ZXJhdG9yPigwLCBwLCAxNyk7Ci0gICBtX2JhY2t1cF9zdGF0ZSA9IHBtcDsKLX0KLSovCi19IC8vIG5hbWVzcGFjZSByZV9kZXRhaWwKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jICBwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1NVRkZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0jZW5kaWYKLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3BlcmxfbWF0Y2hlcl9yZWN1cnNpdmUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9wZXJsX21hdGNoZXJfcmVjdXJzaXZlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDVlZTZiYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3BlcmxfbWF0Y2hlcl9yZWN1cnNpdmUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTkxICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IChjKSAyMDAyCi0gKiBKb2huIE1hZGRvY2sKLSAqCi0gKiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLSAqIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotICogTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqLwotCi0gLyoKLSAgKiAgIExPQ0FUSU9OOiAgICBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0gICogICBGSUxFICAgICAgICAgcGVybF9tYXRjaGVyX2NvbW1vbi5jcHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IERlZmluaXRpb25zIG9mIHBlcmxfbWF0Y2hlciBtZW1iZXIgZnVuY3Rpb25zIHRoYXQgYXJlIAotICAqICAgICAgICAgICAgICAgIHNwZWNpZmljIHRvIHRoZSByZWN1cnNpdmUgaW1wbGVtZW50YXRpb24uCi0gICovCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfVjRfUEVSTF9NQVRDSEVSX1JFQ1VSU0lWRV9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfVjRfUEVSTF9NQVRDSEVSX1JFQ1VSU0lWRV9IUFAKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1BSRUZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDgwMCkKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci1uYW1lc3BhY2UgcmVfZGV0YWlsewotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yPgotY2xhc3MgYmFja3VwX3N1YmV4Ci17Ci0gICBpbnQgaW5kZXg7Ci0gICBzdWJfbWF0Y2g8QmlkaUl0ZXJhdG9yPiBzdWI7Ci1wdWJsaWM6Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgQT4KLSAgIGJhY2t1cF9zdWJleChjb25zdCBtYXRjaF9yZXN1bHRzPEJpZGlJdGVyYXRvciwgQT4mIHcsIGludCBpKQotICAgICAgOiBpbmRleChpKSwgc3ViKHdbaV0sIGZhbHNlKSB7fQotICAgdGVtcGxhdGUgPGNsYXNzIEE+Ci0gICB2b2lkIHJlc3RvcmUobWF0Y2hfcmVzdWx0czxCaWRpSXRlcmF0b3IsIEE+JiB3KQotICAgewotICAgICAgdy5zZXRfZmlyc3Qoc3ViLmZpcnN0LCBpbmRleCwgaW5kZXggPT0gMCk7Ci0gICAgICB3LnNldF9zZWNvbmQoc3ViLnNlY29uZCwgaW5kZXgsIHN1Yi5tYXRjaGVkLCBpbmRleCA9PSAwKTsKLSAgIH0KLSAgIGNvbnN0IHN1Yl9tYXRjaDxCaWRpSXRlcmF0b3I+JiBnZXQoKSB7IHJldHVybiBzdWI7IH0KLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2FsbF9zdGF0ZXMoKQotewotICAgc3RhdGljIG1hdGNoZXJfcHJvY190eXBlIGNvbnN0IHNfbWF0Y2hfdnRhYmxlWzMwXSA9IAotICAgewotICAgICAgKCZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX3N0YXJ0bWFyayksCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9lbmRtYXJrLAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfbGl0ZXJhbCwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX3N0YXJ0X2xpbmUsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9lbmRfbGluZSwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX3dpbGQsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9tYXRjaCwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX3dvcmRfYm91bmRhcnksCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF93aXRoaW5fd29yZCwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX3dvcmRfc3RhcnQsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF93b3JkX2VuZCwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2J1ZmZlcl9zdGFydCwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2J1ZmZlcl9lbmQsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9iYWNrcmVmLAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfbG9uZ19zZXQsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9zZXQsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9qdW1wLAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfYWx0LAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfcmVwLAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfY29tYmluaW5nLAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfc29mdF9idWZmZXJfZW5kLAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfcmVzdGFydF9jb250aW51ZSwKLSAgICAgIC8vIEFsdGhvdWdoIHRoaXMgbmV4dCBsaW5lICpzaG91bGQqIGJlIGV2YWx1YXRlZCBhdCBjb21waWxlIHRpbWUsIGluIHByYWN0aWNlCi0gICAgICAvLyBzb21lIGNvbXBpbGVycyAoVkMrKykgZW1pdCBydW4tdGltZSBpbml0aWFsaXNhdGlvbiB3aGljaCBicmVha3MgdGhyZWFkCi0gICAgICAvLyBzYWZldHksIHNvIHVzZSBhIGRpc3BhdGNoIGZ1bmN0aW9uIGluc3RlYWQ6Ci0gICAgICAvLyg6Om5kbmJvb3N0Ojppc19yYW5kb21fYWNjZXNzX2l0ZXJhdG9yPEJpZGlJdGVyYXRvcj46OnZhbHVlID8gJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfZG90X3JlcGVhdF9mYXN0IDogJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfZG90X3JlcGVhdF9zbG93KSwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2RvdF9yZXBlYXRfZGlzcGF0Y2gsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9jaGFyX3JlcGVhdCwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX3NldF9yZXBlYXQsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9sb25nX3NldF9yZXBlYXQsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9iYWNrc3RlcCwKLSAgICAgICZwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2Fzc2VydF9iYWNrcmVmLAotICAgICAgJnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfdG9nZ2xlX2Nhc2UsCi0gICAgICAmcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9yZWN1cnNpb24sCi0gICB9OwotCi0gICBpZihzdGF0ZV9jb3VudCA+IG1heF9zdGF0ZV9jb3VudCkKLSAgICAgIHJhaXNlX2Vycm9yKHRyYWl0c19pbnN0LCByZWdleF9jb25zdGFudHM6OmVycm9yX2NvbXBsZXhpdHkpOwotICAgd2hpbGUocHN0YXRlKQotICAgewotICAgICAgbWF0Y2hlcl9wcm9jX3R5cGUgcHJvYyA9IHNfbWF0Y2hfdnRhYmxlW3BzdGF0ZS0+dHlwZV07Ci0gICAgICArK3N0YXRlX2NvdW50OwotICAgICAgaWYoISh0aGlzLT4qcHJvYykoKSkKLSAgICAgIHsKLSAgICAgICAgIGlmKChtX21hdGNoX2ZsYWdzICYgbWF0Y2hfcGFydGlhbCkgJiYgKHBvc2l0aW9uID09IGxhc3QpICYmIChwb3NpdGlvbiAhPSBzZWFyY2hfYmFzZSkpCi0gICAgICAgICAgICBtX2hhc19wYXJ0aWFsX21hdGNoID0gdHJ1ZTsKLSAgICAgICAgIHJldHVybiAwOwotICAgICAgfQotICAgfQotICAgcmV0dXJuIHRydWU7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX3N0YXJ0bWFyaygpCi17Ci0gICBpbnQgaW5kZXggPSBzdGF0aWNfY2FzdDxjb25zdCByZV9icmFjZSo+KHBzdGF0ZSktPmluZGV4OwotICAgaWNhc2UgPSBzdGF0aWNfY2FzdDxjb25zdCByZV9icmFjZSo+KHBzdGF0ZSktPmljYXNlOwotICAgYm9vbCByID0gdHJ1ZTsKLSAgIHN3aXRjaChpbmRleCkKLSAgIHsKLSAgIGNhc2UgMDoKLSAgICAgIHBzdGF0ZSA9IHBzdGF0ZS0+bmV4dC5wOwotICAgICAgYnJlYWs7Ci0gICBjYXNlIC0xOgotICAgY2FzZSAtMjoKLSAgICAgIHsKLSAgICAgICAgIC8vIGZvcndhcmQgbG9va2FoZWFkIGFzc2VydDoKLSAgICAgICAgIEJpZGlJdGVyYXRvciBvbGRfcG9zaXRpb24ocG9zaXRpb24pOwotICAgICAgICAgY29uc3QgcmVfc3ludGF4X2Jhc2UqIG5leHRfcHN0YXRlID0gc3RhdGljX2Nhc3Q8Y29uc3QgcmVfanVtcCo+KHBzdGF0ZS0+bmV4dC5wKS0+YWx0LnAtPm5leHQucDsKLSAgICAgICAgIHBzdGF0ZSA9IHBzdGF0ZS0+bmV4dC5wLT5uZXh0LnA7Ci0gICAgICAgICByID0gbWF0Y2hfYWxsX3N0YXRlcygpOwotICAgICAgICAgcHN0YXRlID0gbmV4dF9wc3RhdGU7Ci0gICAgICAgICBwb3NpdGlvbiA9IG9sZF9wb3NpdGlvbjsKLSAgICAgICAgIGlmKChyICYmIChpbmRleCAhPSAtMSkpIHx8ICghciAmJiAoaW5kZXggIT0gLTIpKSkKLSAgICAgICAgICAgIHIgPSBmYWxzZTsKLSAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHIgPSB0cnVlOwotICAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICBjYXNlIC0zOgotICAgICAgewotICAgICAgICAgLy8gaW5kZXBlbmRlbnQgc3ViLWV4cHJlc3Npb246Ci0gICAgICAgICBib29sIG9sZF9pbmRlcGVuZGVudCA9IG1faW5kZXBlbmRlbnQ7Ci0gICAgICAgICBtX2luZGVwZW5kZW50ID0gdHJ1ZTsKLSAgICAgICAgIGNvbnN0IHJlX3N5bnRheF9iYXNlKiBuZXh0X3BzdGF0ZSA9IHN0YXRpY19jYXN0PGNvbnN0IHJlX2p1bXAqPihwc3RhdGUtPm5leHQucCktPmFsdC5wLT5uZXh0LnA7Ci0gICAgICAgICBwc3RhdGUgPSBwc3RhdGUtPm5leHQucC0+bmV4dC5wOwotICAgICAgICAgciA9IG1hdGNoX2FsbF9zdGF0ZXMoKTsKLSAgICAgICAgIHBzdGF0ZSA9IG5leHRfcHN0YXRlOwotICAgICAgICAgbV9pbmRlcGVuZGVudCA9IG9sZF9pbmRlcGVuZGVudDsKLSNpZmRlZiBORE5CT09TVF9SRUdFWF9NQVRDSF9FWFRSQQotICAgICAgICAgaWYociAmJiAobV9tYXRjaF9mbGFncyAmIG1hdGNoX2V4dHJhKSkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIC8vCi0gICAgICAgICAgICAvLyBvdXIgY2FwdHVyZXMgaGF2ZSBiZWVuIHN0b3JlZCBpbiAqbV9wcmVzdWx0Ci0gICAgICAgICAgICAvLyB3ZSBuZWVkIHRvIHVucGFjayB0aGVtLCBhbmQgaW5zZXJ0IHRoZW0KLSAgICAgICAgICAgIC8vIGJhY2sgaW4gdGhlIHJpZ2h0IG9yZGVyIHdoZW4gd2UgdW53aW5kIHRoZSBzdGFjazoKLSAgICAgICAgICAgIC8vCi0gICAgICAgICAgICB1bnNpZ25lZCBpOwotICAgICAgICAgICAgbWF0Y2hfcmVzdWx0czxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvcj4gdG0oKm1fcHJlc3VsdCk7Ci0gICAgICAgICAgICBmb3IoaSA9IDA7IGkgPCB0bS5zaXplKCk7ICsraSkKLSAgICAgICAgICAgICAgICgqbV9wcmVzdWx0KVtpXS5nZXRfY2FwdHVyZXMoKS5jbGVhcigpOwotICAgICAgICAgICAgLy8gbWF0Y2ggZXZlcnl0aGluZyBlbHNlOgotICAgICAgICAgICAgciA9IG1hdGNoX2FsbF9zdGF0ZXMoKTsKLSAgICAgICAgICAgIC8vIG5vdyBwbGFjZSB0aGUgc3RvcmVkIGNhcHR1cmVzIGJhY2s6Ci0gICAgICAgICAgICBmb3IoaSA9IDA7IGkgPCB0bS5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc3ViX21hdGNoPEJpZGlJdGVyYXRvcj46OmNhcHR1cmVfc2VxdWVuY2VfdHlwZSBzZXE7Ci0gICAgICAgICAgICAgICBzZXEmIHMxID0gKCptX3ByZXN1bHQpW2ldLmdldF9jYXB0dXJlcygpOwotICAgICAgICAgICAgICAgY29uc3Qgc2VxJiBzMiA9IHRtW2ldLmNhcHR1cmVzKCk7Ci0gICAgICAgICAgICAgICBzMS5pbnNlcnQoCi0gICAgICAgICAgICAgICAgICBzMS5lbmQoKSwgCi0gICAgICAgICAgICAgICAgICBzMi5iZWdpbigpLCAKLSAgICAgICAgICAgICAgICAgIHMyLmVuZCgpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgIH0KLSNlbmRpZgotICAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICBjYXNlIC00OgotICAgICAgewotICAgICAgLy8gY29uZGl0aW9uYWwgZXhwcmVzc2lvbjoKLSAgICAgIGNvbnN0IHJlX2FsdCogYWx0ID0gc3RhdGljX2Nhc3Q8Y29uc3QgcmVfYWx0Kj4ocHN0YXRlLT5uZXh0LnApOwotICAgICAgTkROQk9PU1RfQVNTRVJUKGFsdC0+dHlwZSA9PSBzeW50YXhfZWxlbWVudF9hbHQpOwotICAgICAgcHN0YXRlID0gYWx0LT5uZXh0LnA7Ci0gICAgICBpZihwc3RhdGUtPnR5cGUgPT0gc3ludGF4X2VsZW1lbnRfYXNzZXJ0X2JhY2tyZWYpCi0gICAgICB7Ci0gICAgICAgICBpZighbWF0Y2hfYXNzZXJ0X2JhY2tyZWYoKSkKLSAgICAgICAgICAgIHBzdGF0ZSA9IGFsdC0+YWx0LnA7Ci0gICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgIC8vIHplcm8gd2lkdGggYXNzZXJ0aW9uLCBoYXZlIHRvIG1hdGNoIHRoaXMgcmVjdXJzaXZlbHk6Ci0gICAgICAgICBORE5CT09TVF9BU1NFUlQocHN0YXRlLT50eXBlID09IHN5bnRheF9lbGVtZW50X3N0YXJ0bWFyayk7Ci0gICAgICAgICBib29sIG5lZ2F0ZWQgPSBzdGF0aWNfY2FzdDxjb25zdCByZV9icmFjZSo+KHBzdGF0ZSktPmluZGV4ID09IC0yOwotICAgICAgICAgQmlkaUl0ZXJhdG9yIHNhdmVkX3Bvc2l0aW9uID0gcG9zaXRpb247Ci0gICAgICAgICBjb25zdCByZV9zeW50YXhfYmFzZSogbmV4dF9wc3RhdGUgPSBzdGF0aWNfY2FzdDxjb25zdCByZV9qdW1wKj4ocHN0YXRlLT5uZXh0LnApLT5hbHQucC0+bmV4dC5wOwotICAgICAgICAgcHN0YXRlID0gcHN0YXRlLT5uZXh0LnAtPm5leHQucDsKLSAgICAgICAgIGJvb2wgcmVzID0gbWF0Y2hfYWxsX3N0YXRlcygpOwotICAgICAgICAgcG9zaXRpb24gPSBzYXZlZF9wb3NpdGlvbjsKLSAgICAgICAgIGlmKG5lZ2F0ZWQpCi0gICAgICAgICAgICByZXMgPSAhcmVzOwotICAgICAgICAgaWYocmVzKQotICAgICAgICAgICAgcHN0YXRlID0gbmV4dF9wc3RhdGU7Ci0gICAgICAgICBlbHNlCi0gICAgICAgICAgICBwc3RhdGUgPSBhbHQtPmFsdC5wOwotICAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgICB9Ci0gICBjYXNlIC01OgotICAgICAgewotICAgICAgICAgLy8gUmVzZXQgc3RhcnQgb2YgJDAsIHNpbmNlIHdlIGhhdmUgYSBcSyBlc2NhcGUKLSAgICAgICAgIGJhY2t1cF9zdWJleDxCaWRpSXRlcmF0b3I+IHN1YigqbV9wcmVzdWx0LCAwKTsKLSAgICAgICAgIG1fcHJlc3VsdC0+c2V0X2ZpcnN0KHBvc2l0aW9uLCAwLCB0cnVlKTsKLSAgICAgICAgIHBzdGF0ZSA9IHBzdGF0ZS0+bmV4dC5wOwotICAgICAgICAgciA9IG1hdGNoX2FsbF9zdGF0ZXMoKTsKLSAgICAgICAgIGlmKHIgPT0gZmFsc2UpCi0gICAgICAgICAgICBzdWIucmVzdG9yZSgqbV9wcmVzdWx0KTsKLSAgICAgICAgIGJyZWFrOwotICAgICAgfQotICAgZGVmYXVsdDoKLSAgIHsKLSAgICAgIE5ETkJPT1NUX0FTU0VSVChpbmRleCA+IDApOwotICAgICAgaWYoKG1fbWF0Y2hfZmxhZ3MgJiBtYXRjaF9ub3N1YnMpID09IDApCi0gICAgICB7Ci0gICAgICAgICBiYWNrdXBfc3ViZXg8QmlkaUl0ZXJhdG9yPiBzdWIoKm1fcHJlc3VsdCwgaW5kZXgpOwotICAgICAgICAgbV9wcmVzdWx0LT5zZXRfZmlyc3QocG9zaXRpb24sIGluZGV4KTsKLSAgICAgICAgIHBzdGF0ZSA9IHBzdGF0ZS0+bmV4dC5wOwotICAgICAgICAgciA9IG1hdGNoX2FsbF9zdGF0ZXMoKTsKLSAgICAgICAgIGlmKHIgPT0gZmFsc2UpCi0gICAgICAgICAgICBzdWIucmVzdG9yZSgqbV9wcmVzdWx0KTsKLSNpZmRlZiBORE5CT09TVF9SRUdFWF9NQVRDSF9FWFRSQQotICAgICAgICAgLy8KLSAgICAgICAgIC8vIHdlIGhhdmUgYSBtYXRjaCwgcHVzaCB0aGUgY2FwdHVyZSBpbmZvcm1hdGlvbiBvbnRvIHRoZSBzdGFjazoKLSAgICAgICAgIC8vCi0gICAgICAgICBlbHNlIGlmKHN1Yi5nZXQoKS5tYXRjaGVkICYmIChtYXRjaF9leHRyYSAmIG1fbWF0Y2hfZmxhZ3MpKQotICAgICAgICAgICAgKCgqbV9wcmVzdWx0KVtpbmRleF0pLmdldF9jYXB0dXJlcygpLnB1c2hfYmFjayhzdWIuZ2V0KCkpOwotI2VuZGlmCi0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgICBwc3RhdGUgPSBwc3RhdGUtPm5leHQucDsKLSAgICAgIH0KLSAgICAgIGJyZWFrOwotICAgfQotICAgfQotICAgcmV0dXJuIHI7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2FsdCgpCi17Ci0gICBib29sIHRha2VfZmlyc3QsIHRha2Vfc2Vjb25kOwotICAgY29uc3QgcmVfYWx0KiBqbXAgPSBzdGF0aWNfY2FzdDxjb25zdCByZV9hbHQqPihwc3RhdGUpOwotCi0gICAvLyBmaW5kIG91dCB3aGljaCBvZiB0aGVzZSB0d28gYWx0ZXJuYXRpdmVzIHdlIG5lZWQgdG8gdGFrZToKLSAgIGlmKHBvc2l0aW9uID09IGxhc3QpCi0gICB7Ci0gICAgICB0YWtlX2ZpcnN0ID0gam1wLT5jYW5fYmVfbnVsbCAmIG1hc2tfdGFrZTsKLSAgICAgIHRha2Vfc2Vjb25kID0gam1wLT5jYW5fYmVfbnVsbCAmIG1hc2tfc2tpcDsKLSAgIH0KLSAgIGVsc2UKLSAgIHsKLSAgICAgIHRha2VfZmlyc3QgPSBjYW5fc3RhcnQoKnBvc2l0aW9uLCBqbXAtPl9tYXAsICh1bnNpZ25lZCBjaGFyKW1hc2tfdGFrZSk7Ci0gICAgICB0YWtlX3NlY29uZCA9IGNhbl9zdGFydCgqcG9zaXRpb24sIGptcC0+X21hcCwgKHVuc2lnbmVkIGNoYXIpbWFza19za2lwKTsKLSAgfQotCi0gICBpZih0YWtlX2ZpcnN0KQotICAgewotICAgICAgLy8gd2UgY2FuIHRha2UgdGhlIGZpcnN0IGFsdGVybmF0aXZlLAotICAgICAgLy8gc2VlIGlmIHdlIG5lZWQgdG8gcHVzaCBuZXh0IGFsdGVybmF0aXZlOgotICAgICAgaWYodGFrZV9zZWNvbmQpCi0gICAgICB7Ci0gICAgICAgICBCaWRpSXRlcmF0b3Igb2xkcG9zaXRpb24ocG9zaXRpb24pOwotICAgICAgICAgY29uc3QgcmVfc3ludGF4X2Jhc2UqIG9sZF9wc3RhdGUgPSBqbXAtPmFsdC5wOwotICAgICAgICAgcHN0YXRlID0gcHN0YXRlLT5uZXh0LnA7Ci0gICAgICAgICBpZighbWF0Y2hfYWxsX3N0YXRlcygpKQotICAgICAgICAgewotICAgICAgICAgICAgcHN0YXRlID0gb2xkX3BzdGF0ZTsKLSAgICAgICAgICAgIHBvc2l0aW9uID0gb2xkcG9zaXRpb247Ci0gICAgICAgICB9Ci0gICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0KLSAgICAgIHBzdGF0ZSA9IHBzdGF0ZS0+bmV4dC5wOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICB9Ci0gICBpZih0YWtlX3NlY29uZCkKLSAgIHsKLSAgICAgIHBzdGF0ZSA9IGptcC0+YWx0LnA7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgIH0KLSAgIHJldHVybiBmYWxzZTsgIC8vIG5laXRoZXIgb3B0aW9uIGlzIHBvc3NpYmxlCi19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX3JlcCgpCi17Ci0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MTI3IDQyNDQpCi0jZW5kaWYKLSAgIGNvbnN0IHJlX3JlcGVhdCogcmVwID0gc3RhdGljX2Nhc3Q8Y29uc3QgcmVfcmVwZWF0Kj4ocHN0YXRlKTsKLSAgIC8vCi0gICAvLyBBbHdheXMgY29weSB0aGUgcmVwZWF0IGNvdW50LCBzbyB0aGF0IHRoZSBzdGF0ZSBpcyByZXN0b3JlZAotICAgLy8gd2hlbiB3ZSBleGl0IHRoaXMgc2NvcGU6Ci0gICAvLwotICAgcmVwZWF0ZXJfY291bnQ8QmlkaUl0ZXJhdG9yPiByKHJlcC0+c3RhdGVfaWQsICZuZXh0X2NvdW50LCBwb3NpdGlvbik7Ci0gICAvLwotICAgLy8gSWYgd2UndmUgaGFkIGF0IGxlYXN0IG9uZSByZXBlYXQgYWxyZWFkeSwgYW5kIHRoZSBsYXN0IG9uZSAKLSAgIC8vIG1hdGNoZWQgdGhlIE5VTEwgc3RyaW5nIHRoZW4gc2V0IHRoZSByZXBlYXQgY291bnQgdG8KLSAgIC8vIG1heGltdW06Ci0gICAvLwotICAgbmV4dF9jb3VudC0+Y2hlY2tfbnVsbF9yZXBlYXQocG9zaXRpb24sIHJlcC0+bWF4KTsKLQotICAgLy8gZmluZCBvdXQgd2hpY2ggb2YgdGhlc2UgdHdvIGFsdGVybmF0aXZlcyB3ZSBuZWVkIHRvIHRha2U6Ci0gICBib29sIHRha2VfZmlyc3QsIHRha2Vfc2Vjb25kOwotICAgaWYocG9zaXRpb24gPT0gbGFzdCkKLSAgIHsKLSAgICAgIHRha2VfZmlyc3QgPSByZXAtPmNhbl9iZV9udWxsICYgbWFza190YWtlOwotICAgICAgdGFrZV9zZWNvbmQgPSByZXAtPmNhbl9iZV9udWxsICYgbWFza19za2lwOwotICAgfQotICAgZWxzZQotICAgewotICAgICAgdGFrZV9maXJzdCA9IGNhbl9zdGFydCgqcG9zaXRpb24sIHJlcC0+X21hcCwgKHVuc2lnbmVkIGNoYXIpbWFza190YWtlKTsKLSAgICAgIHRha2Vfc2Vjb25kID0gY2FuX3N0YXJ0KCpwb3NpdGlvbiwgcmVwLT5fbWFwLCAodW5zaWduZWQgY2hhciltYXNrX3NraXApOwotICAgfQotCi0gICBpZihuZXh0X2NvdW50LT5nZXRfY291bnQoKSA8IHJlcC0+bWluKQotICAgewotICAgICAgLy8gd2UgbXVzdCB0YWtlIHRoZSByZXBlYXQ6Ci0gICAgICBpZih0YWtlX2ZpcnN0KQotICAgICAgewotICAgICAgICAgLy8gaW5jcmVhc2UgdGhlIGNvdW50ZXI6Ci0gICAgICAgICArKygqbmV4dF9jb3VudCk7Ci0gICAgICAgICBwc3RhdGUgPSByZXAtPm5leHQucDsKLSAgICAgICAgIHJldHVybiBtYXRjaF9hbGxfc3RhdGVzKCk7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICB9Ci0gICBib29sIGdyZWVkeSA9IChyZXAtPmdyZWVkeSkgJiYgKCEobV9tYXRjaF9mbGFncyAmIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfYW55KSB8fCBtX2luZGVwZW5kZW50KTsgICAKLSAgIGlmKGdyZWVkeSkKLSAgIHsKLSAgICAgIC8vIHRyeSBhbmQgdGFrZSB0aGUgcmVwZWF0IGlmIHdlIGNhbjoKLSAgICAgIGlmKChuZXh0X2NvdW50LT5nZXRfY291bnQoKSA8IHJlcC0+bWF4KSAmJiB0YWtlX2ZpcnN0KQotICAgICAgewotICAgICAgICAgLy8gc3RvcmUgcG9zaXRpb24gaW4gY2FzZSB3ZSBmYWlsOgotICAgICAgICAgQmlkaUl0ZXJhdG9yIHBvcyA9IHBvc2l0aW9uOwotICAgICAgICAgLy8gaW5jcmVhc2UgdGhlIGNvdW50ZXI6Ci0gICAgICAgICArKygqbmV4dF9jb3VudCk7Ci0gICAgICAgICBwc3RhdGUgPSByZXAtPm5leHQucDsKLSAgICAgICAgIGlmKG1hdGNoX2FsbF9zdGF0ZXMoKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgLy8gZmFpbGVkIHJlcGVhdCwgcmVzZXQgcG9zaXN0aW9uIGFuZCBmYWxsIHRocm91Z2ggZm9yIGFsdGVybmF0aXZlOgotICAgICAgICAgcG9zaXRpb24gPSBwb3M7Ci0gICAgICB9Ci0gICAgICBpZih0YWtlX3NlY29uZCkKLSAgICAgIHsKLSAgICAgICAgIHBzdGF0ZSA9IHJlcC0+YWx0LnA7Ci0gICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0KLSAgICAgIHJldHVybiBmYWxzZTsgLy8gY2FuJ3QgdGFrZSBhbnl0aGluZywgZmFpbC4uLgotICAgfQotICAgZWxzZSAvLyBub24tZ3JlZWR5Ci0gICB7Ci0gICAgICAvLyB0cnkgYW5kIHNraXAgdGhlIHJlcGVhdCBpZiB3ZSBjYW46Ci0gICAgICBpZih0YWtlX3NlY29uZCkKLSAgICAgIHsKLSAgICAgICAgIC8vIHN0b3JlIHBvc2l0aW9uIGluIGNhc2Ugd2UgZmFpbDoKLSAgICAgICAgIEJpZGlJdGVyYXRvciBwb3MgPSBwb3NpdGlvbjsKLSAgICAgICAgIHBzdGF0ZSA9IHJlcC0+YWx0LnA7Ci0gICAgICAgICBpZihtYXRjaF9hbGxfc3RhdGVzKCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgIC8vIGZhaWxlZCBhbHRlcm5hdGl2ZSwgcmVzZXQgcG9zaXN0aW9uIGFuZCBmYWxsIHRocm91Z2ggZm9yIHJlcGVhdDoKLSAgICAgICAgIHBvc2l0aW9uID0gcG9zOwotICAgICAgfQotICAgICAgaWYoKG5leHRfY291bnQtPmdldF9jb3VudCgpIDwgcmVwLT5tYXgpICYmIHRha2VfZmlyc3QpCi0gICAgICB7Ci0gICAgICAgICAvLyBpbmNyZWFzZSB0aGUgY291bnRlcjoKLSAgICAgICAgICsrKCpuZXh0X2NvdW50KTsKLSAgICAgICAgIHBzdGF0ZSA9IHJlcC0+bmV4dC5wOwotICAgICAgICAgcmV0dXJuIG1hdGNoX2FsbF9zdGF0ZXMoKTsKLSAgICAgIH0KLSAgIH0KLSAgIHJldHVybiBmYWxzZTsKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2RvdF9yZXBlYXRfc2xvdygpCi17Ci0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MTI3KQotI2VuZGlmCi0gICB1bnNpZ25lZCBjb3VudCA9IDA7Ci0gICBjb25zdCByZV9yZXBlYXQqIHJlcCA9IHN0YXRpY19jYXN0PGNvbnN0IHJlX3JlcGVhdCo+KHBzdGF0ZSk7Ci0gICByZV9zeW50YXhfYmFzZSogcHNpbmdsZSA9IHJlcC0+bmV4dC5wOwotICAgLy8gbWF0Y2ggY29tcHVsc2FyeSByZXBlYXRzIGZpcnN0OgotICAgd2hpbGUoY291bnQgPCByZXAtPm1pbikKLSAgIHsKLSAgICAgIHBzdGF0ZSA9IHBzaW5nbGU7Ci0gICAgICBpZighbWF0Y2hfd2lsZCgpKQotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgKytjb3VudDsKLSAgIH0KLSAgIGJvb2wgZ3JlZWR5ID0gKHJlcC0+Z3JlZWR5KSAmJiAoIShtX21hdGNoX2ZsYWdzICYgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9hbnkpIHx8IG1faW5kZXBlbmRlbnQpOyAgIAotICAgaWYoZ3JlZWR5KQotICAgewotICAgICAgLy8gbm9ybWFsIHJlcGVhdDoKLSAgICAgIHdoaWxlKGNvdW50IDwgcmVwLT5tYXgpCi0gICAgICB7Ci0gICAgICAgICBwc3RhdGUgPSBwc2luZ2xlOwotICAgICAgICAgaWYoIW1hdGNoX3dpbGQoKSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgKytjb3VudDsKLSAgICAgIH0KLSAgICAgIGlmKChyZXAtPmxlYWRpbmcpICYmIChjb3VudCA8IHJlcC0+bWF4KSkKLSAgICAgICAgIHJlc3RhcnQgPSBwb3NpdGlvbjsKLSAgICAgIHBzdGF0ZSA9IHJlcDsKLSAgICAgIHJldHVybiBiYWNrdHJhY2tfdGlsbF9tYXRjaChjb3VudCAtIHJlcC0+bWluKTsKLSAgIH0KLSAgIGVsc2UKLSAgIHsKLSAgICAgIC8vIG5vbi1ncmVlZHksIGtlZXAgdHJ5aW5nIHRpbGwgd2UgZ2V0IGEgbWF0Y2g6Ci0gICAgICBCaWRpSXRlcmF0b3Igc2F2ZV9wb3M7Ci0gICAgICBkbwotICAgICAgewotICAgICAgICAgaWYoKHJlcC0+bGVhZGluZykgJiYgKHJlcC0+bWF4ID09IFVJTlRfTUFYKSkKLSAgICAgICAgICAgIHJlc3RhcnQgPSBwb3NpdGlvbjsKLSAgICAgICAgIHBzdGF0ZSA9IHJlcC0+YWx0LnA7Ci0gICAgICAgICBzYXZlX3BvcyA9IHBvc2l0aW9uOwotICAgICAgICAgKytzdGF0ZV9jb3VudDsKLSAgICAgICAgIGlmKG1hdGNoX2FsbF9zdGF0ZXMoKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgaWYoY291bnQgPj0gcmVwLT5tYXgpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICArK2NvdW50OwotICAgICAgICAgcHN0YXRlID0gcHNpbmdsZTsKLSAgICAgICAgIHBvc2l0aW9uID0gc2F2ZV9wb3M7Ci0gICAgICAgICBpZighbWF0Y2hfd2lsZCgpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfXdoaWxlKHRydWUpOwotICAgfQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfZG90X3JlcGVhdF9mYXN0KCkKLXsKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQxMjcpCi0jZW5kaWYKLSAgIGlmKG1fbWF0Y2hfZmxhZ3MgJiBtYXRjaF9ub3RfZG90X251bGwpCi0gICAgICByZXR1cm4gbWF0Y2hfZG90X3JlcGVhdF9zbG93KCk7Ci0gICBpZigoc3RhdGljX2Nhc3Q8Y29uc3QgcmVfZG90Kj4ocHN0YXRlLT5uZXh0LnApLT5tYXNrICYgbWF0Y2hfYW55X21hc2spID09IDApCi0gICAgICByZXR1cm4gbWF0Y2hfZG90X3JlcGVhdF9zbG93KCk7Ci0gICAvLwotICAgLy8gc3RhcnQgYnkgd29ya2luZyBvdXQgaG93IG11Y2ggd2UgY2FuIHNraXA6Ci0gICAvLwotICAgY29uc3QgcmVfcmVwZWF0KiByZXAgPSBzdGF0aWNfY2FzdDxjb25zdCByZV9yZXBlYXQqPihwc3RhdGUpOwotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDI2NykKLSNlbmRpZgotICAgYm9vbCBncmVlZHkgPSAocmVwLT5ncmVlZHkpICYmICghKG1fbWF0Y2hfZmxhZ3MgJiByZWdleF9jb25zdGFudHM6Om1hdGNoX2FueSkgfHwgbV9pbmRlcGVuZGVudCk7ICAgCi0gICBzdGQ6OnNpemVfdCBjb3VudCA9IChzdGQ6Om1pbikoc3RhdGljX2Nhc3Q8c3RkOjpzaXplX3Q+KDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6ZGlzdGFuY2UocG9zaXRpb24sIGxhc3QpKSwgc3RhdGljX2Nhc3Q8c3RkOjpzaXplX3Q+KGdyZWVkeSA/IHJlcC0+bWF4IDogcmVwLT5taW4pKTsKLSAgIGlmKHJlcC0+bWluID4gY291bnQpCi0gICB7Ci0gICAgICBwb3NpdGlvbiA9IGxhc3Q7Ci0gICAgICByZXR1cm4gZmFsc2U7ICAvLyBub3QgZW5vdWdoIHRleHQgbGVmdCB0byBtYXRjaAotICAgfQotICAgc3RkOjphZHZhbmNlKHBvc2l0aW9uLCBjb3VudCk7Ci0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotICAgaWYoKHJlcC0+bGVhZGluZykgJiYgKGNvdW50IDwgcmVwLT5tYXgpICYmIGdyZWVkeSkKLSAgICAgIHJlc3RhcnQgPSBwb3NpdGlvbjsKLSAgIGlmKGdyZWVkeSkKLSAgICAgIHJldHVybiBiYWNrdHJhY2tfdGlsbF9tYXRjaChjb3VudCAtIHJlcC0+bWluKTsKLQotICAgLy8gbm9uLWdyZWVkeSwga2VlcCB0cnlpbmcgdGlsbCB3ZSBnZXQgYSBtYXRjaDoKLSAgIEJpZGlJdGVyYXRvciBzYXZlX3BvczsKLSAgIGRvCi0gICB7Ci0gICAgICB3aGlsZSgocG9zaXRpb24gIT0gbGFzdCkgJiYgKGNvdW50IDwgcmVwLT5tYXgpICYmICFjYW5fc3RhcnQoKnBvc2l0aW9uLCByZXAtPl9tYXAsIG1hc2tfc2tpcCkpCi0gICAgICB7Ci0gICAgICAgICArK3Bvc2l0aW9uOwotICAgICAgICAgKytjb3VudDsKLSAgICAgIH0KLSAgICAgIGlmKChyZXAtPmxlYWRpbmcpICYmIChyZXAtPm1heCA9PSBVSU5UX01BWCkpCi0gICAgICAgICByZXN0YXJ0ID0gcG9zaXRpb247Ci0gICAgICBwc3RhdGUgPSByZXAtPmFsdC5wOwotICAgICAgc2F2ZV9wb3MgPSBwb3NpdGlvbjsKLSAgICAgICsrc3RhdGVfY291bnQ7Ci0gICAgICBpZihtYXRjaF9hbGxfc3RhdGVzKCkpCi0gICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIGlmKGNvdW50ID49IHJlcC0+bWF4KQotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgaWYoc2F2ZV9wb3MgPT0gbGFzdCkKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIHBvc2l0aW9uID0gKytzYXZlX3BvczsKLSAgICAgICsrY291bnQ7Ci0gICB9d2hpbGUodHJ1ZSk7Ci0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9jaGFyX3JlcGVhdCgpCi17Ci0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MTI3KQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDI2NykKLSNlbmRpZgotI2lmZGVmIF9fQk9STEFORENfXwotI3ByYWdtYSBvcHRpb24gcHVzaCAtdy04MDA4IC13LTgwNjYgLXctODAwNAotI2VuZGlmCi0gICBjb25zdCByZV9yZXBlYXQqIHJlcCA9IHN0YXRpY19jYXN0PGNvbnN0IHJlX3JlcGVhdCo+KHBzdGF0ZSk7Ci0gICBORE5CT09TVF9BU1NFUlQoMSA9PSBzdGF0aWNfY2FzdDxjb25zdCByZV9saXRlcmFsKj4ocmVwLT5uZXh0LnApLT5sZW5ndGgpOwotICAgY29uc3QgY2hhcl90eXBlIHdoYXQgPSAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyX3R5cGUqPihzdGF0aWNfY2FzdDxjb25zdCByZV9saXRlcmFsKj4ocmVwLT5uZXh0LnApICsgMSk7Ci0gICAvLwotICAgLy8gc3RhcnQgYnkgd29ya2luZyBvdXQgaG93IG11Y2ggd2UgY2FuIHNraXA6Ci0gICAvLwotICAgYm9vbCBncmVlZHkgPSAocmVwLT5ncmVlZHkpICYmICghKG1fbWF0Y2hfZmxhZ3MgJiByZWdleF9jb25zdGFudHM6Om1hdGNoX2FueSkgfHwgbV9pbmRlcGVuZGVudCk7ICAgCi0gICBzdGQ6OnNpemVfdCBjb3VudCwgZGVzaXJlZDsKLSAgIGlmKDo6bmRuYm9vc3Q6OmlzX3JhbmRvbV9hY2Nlc3NfaXRlcmF0b3I8QmlkaUl0ZXJhdG9yPjo6dmFsdWUpCi0gICB7Ci0gICAgICBkZXNpcmVkID0gCi0gICAgICAgICAoc3RkOjptaW4pKAotICAgICAgICAgICAgKHN0ZDo6c2l6ZV90KShncmVlZHkgPyByZXAtPm1heCA6IHJlcC0+bWluKSwKLSAgICAgICAgICAgIChzdGQ6OnNpemVfdCk6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmRpc3RhbmNlKHBvc2l0aW9uLCBsYXN0KSk7Ci0gICAgICBjb3VudCA9IGRlc2lyZWQ7Ci0gICAgICArK2Rlc2lyZWQ7Ci0gICAgICBpZihpY2FzZSkKLSAgICAgIHsKLSAgICAgICAgIHdoaWxlKC0tZGVzaXJlZCAmJiAodHJhaXRzX2luc3QudHJhbnNsYXRlX25vY2FzZSgqcG9zaXRpb24pID09IHdoYXQpKQotICAgICAgICAgewotICAgICAgICAgICAgKytwb3NpdGlvbjsKLSAgICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgIHsKLSAgICAgICAgIHdoaWxlKC0tZGVzaXJlZCAmJiAodHJhaXRzX2luc3QudHJhbnNsYXRlKCpwb3NpdGlvbikgPT0gd2hhdCkpCi0gICAgICAgICB7Ci0gICAgICAgICAgICArK3Bvc2l0aW9uOwotICAgICAgICAgfQotICAgICAgfQotICAgICAgY291bnQgPSBjb3VudCAtIGRlc2lyZWQ7Ci0gICB9Ci0gICBlbHNlCi0gICB7Ci0gICAgICBjb3VudCA9IDA7Ci0gICAgICBkZXNpcmVkID0gZ3JlZWR5ID8gcmVwLT5tYXggOiByZXAtPm1pbjsKLSAgICAgIHdoaWxlKChjb3VudCA8IGRlc2lyZWQpICYmIChwb3NpdGlvbiAhPSBsYXN0KSAmJiAodHJhaXRzX2luc3QudHJhbnNsYXRlKCpwb3NpdGlvbiwgaWNhc2UpID09IHdoYXQpKQotICAgICAgewotICAgICAgICAgKytwb3NpdGlvbjsKLSAgICAgICAgICsrY291bnQ7Ci0gICAgICB9Ci0gICB9Ci0gICBpZigocmVwLT5sZWFkaW5nKSAmJiAoY291bnQgPCByZXAtPm1heCkgJiYgZ3JlZWR5KQotICAgICAgcmVzdGFydCA9IHBvc2l0aW9uOwotICAgaWYoY291bnQgPCByZXAtPm1pbikKLSAgICAgIHJldHVybiBmYWxzZTsKLQotICAgaWYoZ3JlZWR5KQotICAgICAgcmV0dXJuIGJhY2t0cmFja190aWxsX21hdGNoKGNvdW50IC0gcmVwLT5taW4pOwotCi0gICAvLyBub24tZ3JlZWR5LCBrZWVwIHRyeWluZyB0aWxsIHdlIGdldCBhIG1hdGNoOgotICAgQmlkaUl0ZXJhdG9yIHNhdmVfcG9zOwotICAgZG8KLSAgIHsKLSAgICAgIHdoaWxlKChwb3NpdGlvbiAhPSBsYXN0KSAmJiAoY291bnQgPCByZXAtPm1heCkgJiYgIWNhbl9zdGFydCgqcG9zaXRpb24sIHJlcC0+X21hcCwgbWFza19za2lwKSkKLSAgICAgIHsKLSAgICAgICAgIGlmKCh0cmFpdHNfaW5zdC50cmFuc2xhdGUoKnBvc2l0aW9uLCBpY2FzZSkgPT0gd2hhdCkpCi0gICAgICAgICB7Ci0gICAgICAgICAgICArK3Bvc2l0aW9uOwotICAgICAgICAgICAgKytjb3VudDsKLSAgICAgICAgIH0KLSAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsgIC8vIGNvdW5sZG4ndCByZXBlYXQgZXZlbiB0aG91Z2ggaXQgd2FzIHRoZSBvbmx5IG9wdGlvbgotICAgICAgfQotICAgICAgaWYoKHJlcC0+bGVhZGluZykgJiYgKHJlcC0+bWF4ID09IFVJTlRfTUFYKSkKLSAgICAgICAgIHJlc3RhcnQgPSBwb3NpdGlvbjsKLSAgICAgIHBzdGF0ZSA9IHJlcC0+YWx0LnA7Ci0gICAgICBzYXZlX3BvcyA9IHBvc2l0aW9uOwotICAgICAgKytzdGF0ZV9jb3VudDsKLSAgICAgIGlmKG1hdGNoX2FsbF9zdGF0ZXMoKSkKLSAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgaWYoY291bnQgPj0gcmVwLT5tYXgpCi0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICBwb3NpdGlvbiA9IHNhdmVfcG9zOwotICAgICAgaWYocG9zaXRpb24gPT0gbGFzdCkKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIGlmKHRyYWl0c19pbnN0LnRyYW5zbGF0ZSgqcG9zaXRpb24sIGljYXNlKSA9PSB3aGF0KQotICAgICAgewotICAgICAgICAgKytwb3NpdGlvbjsKLSAgICAgICAgICsrY291bnQ7Ci0gICAgICB9Ci0gICAgICBlbHNlCi0gICAgICB7Ci0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICB9d2hpbGUodHJ1ZSk7Ci0jaWZkZWYgX19CT1JMQU5EQ19fCi0jcHJhZ21hIG9wdGlvbiBwb3AKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfc2V0X3JlcGVhdCgpCi17Ci0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MTI3KQotI2VuZGlmCi0jaWZkZWYgX19CT1JMQU5EQ19fCi0jcHJhZ21hIG9wdGlvbiBwdXNoIC13LTgwMDggLXctODA2NiAtdy04MDA0Ci0jZW5kaWYKLSAgIGNvbnN0IHJlX3JlcGVhdCogcmVwID0gc3RhdGljX2Nhc3Q8Y29uc3QgcmVfcmVwZWF0Kj4ocHN0YXRlKTsKLSAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIG1hcCA9IHN0YXRpY19jYXN0PGNvbnN0IHJlX3NldCo+KHJlcC0+bmV4dC5wKS0+X21hcDsKLSAgIHVuc2lnbmVkIGNvdW50ID0gMDsKLSAgIC8vCi0gICAvLyBzdGFydCBieSB3b3JraW5nIG91dCBob3cgbXVjaCB3ZSBjYW4gc2tpcDoKLSAgIC8vCi0gICBib29sIGdyZWVkeSA9IChyZXAtPmdyZWVkeSkgJiYgKCEobV9tYXRjaF9mbGFncyAmIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfYW55KSB8fCBtX2luZGVwZW5kZW50KTsgICAKLSAgIHN0ZDo6c2l6ZV90IGRlc2lyZWQgPSBncmVlZHkgPyByZXAtPm1heCA6IHJlcC0+bWluOwotICAgaWYoOjpuZG5ib29zdDo6aXNfcmFuZG9tX2FjY2Vzc19pdGVyYXRvcjxCaWRpSXRlcmF0b3I+Ojp2YWx1ZSkKLSAgIHsKLSAgICAgIEJpZGlJdGVyYXRvciBlbmQgPSBwb3NpdGlvbjsKLSAgICAgIHN0ZDo6YWR2YW5jZShlbmQsIChzdGQ6Om1pbikoKHN0ZDo6c2l6ZV90KTo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6ZGlzdGFuY2UocG9zaXRpb24sIGxhc3QpLCBkZXNpcmVkKSk7Ci0gICAgICBCaWRpSXRlcmF0b3Igb3JpZ2luKHBvc2l0aW9uKTsKLSAgICAgIHdoaWxlKChwb3NpdGlvbiAhPSBlbmQpICYmIG1hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPih0cmFpdHNfaW5zdC50cmFuc2xhdGUoKnBvc2l0aW9uLCBpY2FzZSkpXSkKLSAgICAgIHsKLSAgICAgICAgICsrcG9zaXRpb247Ci0gICAgICB9Ci0gICAgICBjb3VudCA9ICh1bnNpZ25lZCk6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmRpc3RhbmNlKG9yaWdpbiwgcG9zaXRpb24pOwotICAgfQotICAgZWxzZQotICAgewotICAgICAgd2hpbGUoKGNvdW50IDwgZGVzaXJlZCkgJiYgKHBvc2l0aW9uICE9IGxhc3QpICYmIG1hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPih0cmFpdHNfaW5zdC50cmFuc2xhdGUoKnBvc2l0aW9uLCBpY2FzZSkpXSkKLSAgICAgIHsKLSAgICAgICAgICsrcG9zaXRpb247Ci0gICAgICAgICArK2NvdW50OwotICAgICAgfQotICAgfQotICAgaWYoKHJlcC0+bGVhZGluZykgJiYgKGNvdW50IDwgcmVwLT5tYXgpICYmIGdyZWVkeSkKLSAgICAgIHJlc3RhcnQgPSBwb3NpdGlvbjsKLSAgIGlmKGNvdW50IDwgcmVwLT5taW4pCi0gICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgIGlmKGdyZWVkeSkKLSAgICAgIHJldHVybiBiYWNrdHJhY2tfdGlsbF9tYXRjaChjb3VudCAtIHJlcC0+bWluKTsKLQotICAgLy8gbm9uLWdyZWVkeSwga2VlcCB0cnlpbmcgdGlsbCB3ZSBnZXQgYSBtYXRjaDoKLSAgIEJpZGlJdGVyYXRvciBzYXZlX3BvczsKLSAgIGRvCi0gICB7Ci0gICAgICB3aGlsZSgocG9zaXRpb24gIT0gbGFzdCkgJiYgKGNvdW50IDwgcmVwLT5tYXgpICYmICFjYW5fc3RhcnQoKnBvc2l0aW9uLCByZXAtPl9tYXAsIG1hc2tfc2tpcCkpCi0gICAgICB7Ci0gICAgICAgICBpZihtYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4odHJhaXRzX2luc3QudHJhbnNsYXRlKCpwb3NpdGlvbiwgaWNhc2UpKV0pCi0gICAgICAgICB7Ci0gICAgICAgICAgICArK3Bvc2l0aW9uOwotICAgICAgICAgICAgKytjb3VudDsKLSAgICAgICAgIH0KLSAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsgIC8vIGNvdW5sZG4ndCByZXBlYXQgZXZlbiB0aG91Z2ggaXQgd2FzIHRoZSBvbmx5IG9wdGlvbgotICAgICAgfQotICAgICAgaWYoKHJlcC0+bGVhZGluZykgJiYgKHJlcC0+bWF4ID09IFVJTlRfTUFYKSkKLSAgICAgICAgIHJlc3RhcnQgPSBwb3NpdGlvbjsKLSAgICAgIHBzdGF0ZSA9IHJlcC0+YWx0LnA7Ci0gICAgICBzYXZlX3BvcyA9IHBvc2l0aW9uOwotICAgICAgKytzdGF0ZV9jb3VudDsKLSAgICAgIGlmKG1hdGNoX2FsbF9zdGF0ZXMoKSkKLSAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgaWYoY291bnQgPj0gcmVwLT5tYXgpCi0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICBwb3NpdGlvbiA9IHNhdmVfcG9zOwotICAgICAgaWYocG9zaXRpb24gPT0gbGFzdCkKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgIGlmKG1hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPih0cmFpdHNfaW5zdC50cmFuc2xhdGUoKnBvc2l0aW9uLCBpY2FzZSkpXSkKLSAgICAgIHsKLSAgICAgICAgICsrcG9zaXRpb247Ci0gICAgICAgICArK2NvdW50OwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgfXdoaWxlKHRydWUpOwotI2lmZGVmIF9fQk9STEFORENfXwotI3ByYWdtYSBvcHRpb24gcG9wCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX2xvbmdfc2V0X3JlcGVhdCgpCi17Ci0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MTI3KQotI2VuZGlmCi0jaWZkZWYgX19CT1JMQU5EQ19fCi0jcHJhZ21hIG9wdGlvbiBwdXNoIC13LTgwMDggLXctODA2NiAtdy04MDA0Ci0jZW5kaWYKLSAgIHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzOjpjaGFyX2NsYXNzX3R5cGUgY2hhcl9jbGFzc190eXBlOwotICAgY29uc3QgcmVfcmVwZWF0KiByZXAgPSBzdGF0aWNfY2FzdDxjb25zdCByZV9yZXBlYXQqPihwc3RhdGUpOwotICAgY29uc3QgcmVfc2V0X2xvbmc8Y2hhcl9jbGFzc190eXBlPiogc2V0ID0gc3RhdGljX2Nhc3Q8Y29uc3QgcmVfc2V0X2xvbmc8Y2hhcl9jbGFzc190eXBlPio+KHBzdGF0ZS0+bmV4dC5wKTsKLSAgIHVuc2lnbmVkIGNvdW50ID0gMDsKLSAgIC8vCi0gICAvLyBzdGFydCBieSB3b3JraW5nIG91dCBob3cgbXVjaCB3ZSBjYW4gc2tpcDoKLSAgIC8vCi0gICBib29sIGdyZWVkeSA9IChyZXAtPmdyZWVkeSkgJiYgKCEobV9tYXRjaF9mbGFncyAmIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfYW55KSB8fCBtX2luZGVwZW5kZW50KTsgICAKLSAgIHN0ZDo6c2l6ZV90IGRlc2lyZWQgPSBncmVlZHkgPyByZXAtPm1heCA6IHJlcC0+bWluOwotICAgaWYoOjpuZG5ib29zdDo6aXNfcmFuZG9tX2FjY2Vzc19pdGVyYXRvcjxCaWRpSXRlcmF0b3I+Ojp2YWx1ZSkKLSAgIHsKLSAgICAgIEJpZGlJdGVyYXRvciBlbmQgPSBwb3NpdGlvbjsKLSAgICAgIHN0ZDo6YWR2YW5jZShlbmQsIChzdGQ6Om1pbikoKHN0ZDo6c2l6ZV90KTo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6ZGlzdGFuY2UocG9zaXRpb24sIGxhc3QpLCBkZXNpcmVkKSk7Ci0gICAgICBCaWRpSXRlcmF0b3Igb3JpZ2luKHBvc2l0aW9uKTsKLSAgICAgIHdoaWxlKChwb3NpdGlvbiAhPSBlbmQpICYmIChwb3NpdGlvbiAhPSByZV9pc19zZXRfbWVtYmVyKHBvc2l0aW9uLCBsYXN0LCBzZXQsIHJlLmdldF9kYXRhKCksIGljYXNlKSkpCi0gICAgICB7Ci0gICAgICAgICArK3Bvc2l0aW9uOwotICAgICAgfQotICAgICAgY291bnQgPSAodW5zaWduZWQpOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpkaXN0YW5jZShvcmlnaW4sIHBvc2l0aW9uKTsKLSAgIH0KLSAgIGVsc2UKLSAgIHsKLSAgICAgIHdoaWxlKChjb3VudCA8IGRlc2lyZWQpICYmIChwb3NpdGlvbiAhPSBsYXN0KSAmJiAocG9zaXRpb24gIT0gcmVfaXNfc2V0X21lbWJlcihwb3NpdGlvbiwgbGFzdCwgc2V0LCByZS5nZXRfZGF0YSgpLCBpY2FzZSkpKQotICAgICAgewotICAgICAgICAgKytwb3NpdGlvbjsKLSAgICAgICAgICsrY291bnQ7Ci0gICAgICB9Ci0gICB9Ci0gICBpZigocmVwLT5sZWFkaW5nKSAmJiAoY291bnQgPCByZXAtPm1heCkgJiYgZ3JlZWR5KQotICAgICAgcmVzdGFydCA9IHBvc2l0aW9uOwotICAgaWYoY291bnQgPCByZXAtPm1pbikKLSAgICAgIHJldHVybiBmYWxzZTsKLQotICAgaWYoZ3JlZWR5KQotICAgICAgcmV0dXJuIGJhY2t0cmFja190aWxsX21hdGNoKGNvdW50IC0gcmVwLT5taW4pOwotCi0gICAvLyBub24tZ3JlZWR5LCBrZWVwIHRyeWluZyB0aWxsIHdlIGdldCBhIG1hdGNoOgotICAgQmlkaUl0ZXJhdG9yIHNhdmVfcG9zOwotICAgZG8KLSAgIHsKLSAgICAgIHdoaWxlKChwb3NpdGlvbiAhPSBsYXN0KSAmJiAoY291bnQgPCByZXAtPm1heCkgJiYgIWNhbl9zdGFydCgqcG9zaXRpb24sIHJlcC0+X21hcCwgbWFza19za2lwKSkKLSAgICAgIHsKLSAgICAgICAgIGlmKHBvc2l0aW9uICE9IHJlX2lzX3NldF9tZW1iZXIocG9zaXRpb24sIGxhc3QsIHNldCwgcmUuZ2V0X2RhdGEoKSwgaWNhc2UpKQotICAgICAgICAgewotICAgICAgICAgICAgKytwb3NpdGlvbjsKLSAgICAgICAgICAgICsrY291bnQ7Ci0gICAgICAgICB9Ci0gICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7ICAvLyBjb3VubGRuJ3QgcmVwZWF0IGV2ZW4gdGhvdWdoIGl0IHdhcyB0aGUgb25seSBvcHRpb24KLSAgICAgIH0KLSAgICAgIGlmKChyZXAtPmxlYWRpbmcpICYmIChyZXAtPm1heCA9PSBVSU5UX01BWCkpCi0gICAgICAgICByZXN0YXJ0ID0gcG9zaXRpb247Ci0gICAgICBwc3RhdGUgPSByZXAtPmFsdC5wOwotICAgICAgc2F2ZV9wb3MgPSBwb3NpdGlvbjsKLSAgICAgICsrc3RhdGVfY291bnQ7Ci0gICAgICBpZihtYXRjaF9hbGxfc3RhdGVzKCkpCi0gICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIGlmKGNvdW50ID49IHJlcC0+bWF4KQotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgcG9zaXRpb24gPSBzYXZlX3BvczsKLSAgICAgIGlmKHBvc2l0aW9uID09IGxhc3QpCi0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICBpZihwb3NpdGlvbiAhPSByZV9pc19zZXRfbWVtYmVyKHBvc2l0aW9uLCBsYXN0LCBzZXQsIHJlLmdldF9kYXRhKCksIGljYXNlKSkKLSAgICAgIHsKLSAgICAgICAgICsrcG9zaXRpb247Ci0gICAgICAgICArK2NvdW50OwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgfXdoaWxlKHRydWUpOwotI2lmZGVmIF9fQk9STEFORENfXwotI3ByYWdtYSBvcHRpb24gcG9wCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46OmJhY2t0cmFja190aWxsX21hdGNoKHN0ZDo6c2l6ZV90IGNvdW50KQotewotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDEyNykKLSNlbmRpZgotICAgaWYoKG1fbWF0Y2hfZmxhZ3MgJiBtYXRjaF9wYXJ0aWFsKSAmJiAocG9zaXRpb24gPT0gbGFzdCkpCi0gICAgICBtX2hhc19wYXJ0aWFsX21hdGNoID0gdHJ1ZTsKLQotICAgY29uc3QgcmVfcmVwZWF0KiByZXAgPSBzdGF0aWNfY2FzdDxjb25zdCByZV9yZXBlYXQqPihwc3RhdGUpOwotICAgQmlkaUl0ZXJhdG9yIGJhY2t0cmFjayA9IHBvc2l0aW9uOwotICAgaWYocG9zaXRpb24gPT0gbGFzdCkKLSAgIHsKLSAgICAgIGlmKHJlcC0+Y2FuX2JlX251bGwgJiBtYXNrX3NraXApIAotICAgICAgewotICAgICAgICAgcHN0YXRlID0gcmVwLT5hbHQucDsKLSAgICAgICAgIGlmKG1hdGNoX2FsbF9zdGF0ZXMoKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgfQotICAgICAgaWYoY291bnQpCi0gICAgICB7Ci0gICAgICAgICBwb3NpdGlvbiA9IC0tYmFja3RyYWNrOwotICAgICAgICAgLS1jb3VudDsKLSAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgIH0KLSAgIGRvCi0gICB7Ci0gICAgICB3aGlsZShjb3VudCAmJiAhY2FuX3N0YXJ0KCpwb3NpdGlvbiwgcmVwLT5fbWFwLCBtYXNrX3NraXApKQotICAgICAgewotICAgICAgICAgLS1wb3NpdGlvbjsKLSAgICAgICAgIC0tY291bnQ7Ci0gICAgICAgICArK3N0YXRlX2NvdW50OwotICAgICAgfQotICAgICAgcHN0YXRlID0gcmVwLT5hbHQucDsKLSAgICAgIGJhY2t0cmFjayA9IHBvc2l0aW9uOwotICAgICAgaWYobWF0Y2hfYWxsX3N0YXRlcygpKQotICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICBpZihjb3VudCA9PSAwKQotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgcG9zaXRpb24gPSAtLWJhY2t0cmFjazsKLSAgICAgICsrc3RhdGVfY291bnQ7Ci0gICAgICAtLWNvdW50OwotICAgfXdoaWxlKHRydWUpOwotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1ib29sIHBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPjo6bWF0Y2hfcmVjdXJzaW9uKCkKLXsKLSAgIE5ETkJPT1NUX0FTU0VSVChwc3RhdGUtPnR5cGUgPT0gc3ludGF4X2VsZW1lbnRfcmVjdXJzZSk7Ci0gICAvLwotICAgLy8gU2V0IG5ldyBjYWxsIHN0YWNrOgotICAgLy8KLSAgIGlmKHJlY3Vyc2lvbl9zdGFjay5jYXBhY2l0eSgpID09IDApCi0gICB7Ci0gICAgICByZWN1cnNpb25fc3RhY2sucmVzZXJ2ZSg1MCk7Ci0gICB9Ci0gICByZWN1cnNpb25fc3RhY2sucHVzaF9iYWNrKHJlY3Vyc2lvbl9pbmZvPHJlc3VsdHNfdHlwZT4oKSk7Ci0gICByZWN1cnNpb25fc3RhY2suYmFjaygpLnByZXR1cm5fYWRkcmVzcyA9IHBzdGF0ZS0+bmV4dC5wOwotICAgcmVjdXJzaW9uX3N0YWNrLmJhY2soKS5yZXN1bHRzID0gKm1fcHJlc3VsdDsKLSAgIHJlY3Vyc2lvbl9zdGFjay5iYWNrKCkucmVwZWF0ZXJfc3RhY2sgPSBuZXh0X2NvdW50OwotICAgcHN0YXRlID0gc3RhdGljX2Nhc3Q8Y29uc3QgcmVfanVtcCo+KHBzdGF0ZSktPmFsdC5wOwotICAgcmVjdXJzaW9uX3N0YWNrLmJhY2soKS5pZHggPSBzdGF0aWNfY2FzdDxjb25zdCByZV9icmFjZSo+KHBzdGF0ZSktPmluZGV4OwotCi0gICByZXBlYXRlcl9jb3VudDxCaWRpSXRlcmF0b3I+KiBzYXZlZCA9IG5leHRfY291bnQ7Ci0gICByZXBlYXRlcl9jb3VudDxCaWRpSXRlcmF0b3I+IHIoJm5leHRfY291bnQpOyAvLyByZXNldHMgYWxsIHJlcGVhdCBjb3VudHMgc2luY2Ugd2UncmUgcmVjdXJzaW5nIGFuZCBzdGFydGluZyBmcmVzaCBvbiB0aG9zZQotICAgbmV4dF9jb3VudCA9ICZyOwotICAgYm9vbCByZXN1bHQgPSBtYXRjaF9hbGxfc3RhdGVzKCk7Ci0gICBuZXh0X2NvdW50ID0gc2F2ZWQ7Ci0KLSAgIGlmKCFyZXN1bHQpCi0gICB7Ci0gICAgICBuZXh0X2NvdW50ID0gcmVjdXJzaW9uX3N0YWNrLmJhY2soKS5yZXBlYXRlcl9zdGFjazsKLSAgICAgICptX3ByZXN1bHQgPSByZWN1cnNpb25fc3RhY2suYmFjaygpLnJlc3VsdHM7Ci0gICAgICByZWN1cnNpb25fc3RhY2sucG9wX2JhY2soKTsKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgIH0KLSAgIHJldHVybiB0cnVlOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcGVybF9tYXRjaGVyPEJpZGlJdGVyYXRvciwgQWxsb2NhdG9yLCB0cmFpdHM+OjptYXRjaF9lbmRtYXJrKCkKLXsKLSAgIGludCBpbmRleCA9IHN0YXRpY19jYXN0PGNvbnN0IHJlX2JyYWNlKj4ocHN0YXRlKS0+aW5kZXg7Ci0gICBpY2FzZSA9IHN0YXRpY19jYXN0PGNvbnN0IHJlX2JyYWNlKj4ocHN0YXRlKS0+aWNhc2U7Ci0gICBpZihpbmRleCA+IDApCi0gICB7Ci0gICAgICBpZigobV9tYXRjaF9mbGFncyAmIG1hdGNoX25vc3VicykgPT0gMCkKLSAgICAgIHsKLSAgICAgICAgIG1fcHJlc3VsdC0+c2V0X3NlY29uZChwb3NpdGlvbiwgaW5kZXgpOwotICAgICAgfQotICAgICAgaWYoIXJlY3Vyc2lvbl9zdGFjay5lbXB0eSgpKQotICAgICAgewotICAgICAgICAgaWYoaW5kZXggPT0gcmVjdXJzaW9uX3N0YWNrLmJhY2soKS5pZHgpCi0gICAgICAgICB7Ci0gICAgICAgICAgICByZWN1cnNpb25faW5mbzxyZXN1bHRzX3R5cGU+IHNhdmVkID0gcmVjdXJzaW9uX3N0YWNrLmJhY2soKTsKLSAgICAgICAgICAgIHJlY3Vyc2lvbl9zdGFjay5wb3BfYmFjaygpOwotICAgICAgICAgICAgcHN0YXRlID0gc2F2ZWQucHJldHVybl9hZGRyZXNzOwotICAgICAgICAgICAgcmVwZWF0ZXJfY291bnQ8QmlkaUl0ZXJhdG9yPiogc2F2ZWRfY291bnQgPSBuZXh0X2NvdW50OwotICAgICAgICAgICAgbmV4dF9jb3VudCA9IHNhdmVkLnJlcGVhdGVyX3N0YWNrOwotICAgICAgICAgICAgKm1fcHJlc3VsdCA9IHNhdmVkLnJlc3VsdHM7Ci0gICAgICAgICAgICBpZighbWF0Y2hfYWxsX3N0YXRlcygpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgcmVjdXJzaW9uX3N0YWNrLnB1c2hfYmFjayhzYXZlZCk7Ci0gICAgICAgICAgICAgICBuZXh0X2NvdW50ID0gc2F2ZWRfY291bnQ7Ci0gICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICB9Ci0gICAgICB9Ci0gICB9Ci0gICBlbHNlIGlmKChpbmRleCA8IDApICYmIChpbmRleCAhPSAtNCkpCi0gICB7Ci0gICAgICAvLyBtYXRjaGVkIGZvcndhcmQgbG9va2FoZWFkOgotICAgICAgcHN0YXRlID0gMDsKLSAgICAgIHJldHVybiB0cnVlOwotICAgfQotICAgcHN0YXRlID0gcHN0YXRlID8gcHN0YXRlLT5uZXh0LnAgOiAwOwotICAgcmV0dXJuIHRydWU7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotYm9vbCBwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3IsIHRyYWl0cz46Om1hdGNoX21hdGNoKCkKLXsKLSAgIGlmKCFyZWN1cnNpb25fc3RhY2suZW1wdHkoKSkKLSAgIHsKLSAgICAgIE5ETkJPT1NUX0FTU0VSVCgwID09IHJlY3Vyc2lvbl9zdGFjay5iYWNrKCkuaWR4KTsKLSAgICAgIGNvbnN0IHJlX3N5bnRheF9iYXNlKiBzYXZlZF9zdGF0ZSA9IHBzdGF0ZSA9IHJlY3Vyc2lvbl9zdGFjay5iYWNrKCkucHJldHVybl9hZGRyZXNzOwotICAgICAgKm1fcHJlc3VsdCA9IHJlY3Vyc2lvbl9zdGFjay5iYWNrKCkucmVzdWx0czsKLSAgICAgIHJlY3Vyc2lvbl9zdGFjay5wb3BfYmFjaygpOwotICAgICAgaWYoIW1hdGNoX2FsbF9zdGF0ZXMoKSkKLSAgICAgIHsKLSAgICAgICAgIHJlY3Vyc2lvbl9zdGFjay5wdXNoX2JhY2socmVjdXJzaW9uX2luZm88cmVzdWx0c190eXBlPigpKTsKLSAgICAgICAgIHJlY3Vyc2lvbl9zdGFjay5iYWNrKCkucHJldHVybl9hZGRyZXNzID0gc2F2ZWRfc3RhdGU7Ci0gICAgICAgICByZWN1cnNpb25fc3RhY2suYmFjaygpLnJlc3VsdHMgPSAqbV9wcmVzdWx0OwotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgfQotICAgICAgcmV0dXJuIHRydWU7Ci0gICB9Ci0gICBpZigobV9tYXRjaF9mbGFncyAmIG1hdGNoX25vdF9udWxsKSAmJiAocG9zaXRpb24gPT0gKCptX3ByZXN1bHQpWzBdLmZpcnN0KSkKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgIGlmKChtX21hdGNoX2ZsYWdzICYgbWF0Y2hfYWxsKSAmJiAocG9zaXRpb24gIT0gbGFzdCkpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICBpZigobV9tYXRjaF9mbGFncyAmIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfbm90X2luaXRpYWxfbnVsbCkgJiYgKHBvc2l0aW9uID09IHNlYXJjaF9iYXNlKSkKLSAgICAgIHJldHVybiBmYWxzZTsKLSAgIG1fcHJlc3VsdC0+c2V0X3NlY29uZChwb3NpdGlvbik7Ci0gICBwc3RhdGUgPSAwOwotICAgbV9oYXNfZm91bmRfbWF0Y2ggPSB0cnVlOwotICAgaWYoKG1fbWF0Y2hfZmxhZ3MgJiBtYXRjaF9wb3NpeCkgPT0gbWF0Y2hfcG9zaXgpCi0gICB7Ci0gICAgICBtX3Jlc3VsdC5tYXliZV9hc3NpZ24oKm1fcHJlc3VsdCk7Ci0gICAgICBpZigobV9tYXRjaF9mbGFncyAmIG1hdGNoX2FueSkgPT0gMCkKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgIH0KLSNpZmRlZiBORE5CT09TVF9SRUdFWF9NQVRDSF9FWFRSQQotICAgaWYobWF0Y2hfZXh0cmEgJiBtX21hdGNoX2ZsYWdzKQotICAgewotICAgICAgZm9yKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9wcmVzdWx0LT5zaXplKCk7ICsraSkKLSAgICAgICAgIGlmKCgqbV9wcmVzdWx0KVtpXS5tYXRjaGVkKQotICAgICAgICAgICAgKCgqbV9wcmVzdWx0KVtpXSkuZ2V0X2NhcHR1cmVzKCkucHVzaF9iYWNrKCgqbV9wcmVzdWx0KVtpXSk7Ci0gICB9Ci0jZW5kaWYKLSAgIHJldHVybiB0cnVlOwotfQotCi0KLQotfSAvLyBuYW1lc3BhY2UgcmVfZGV0YWlsCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1NVRkZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9wcmltYXJ5X3RyYW5zZm9ybS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3ByaW1hcnlfdHJhbnNmb3JtLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGM5YmM2OC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3ByaW1hcnlfdHJhbnNmb3JtLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0NiArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAyCi0gKiBKb2huIE1hZGRvY2sKLSAqCi0gKiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLSAqIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotICogTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqLwotIAotIC8qCi0gICogICBMT0NBVElPTjogICAgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotICAqICAgRklMRTogICAgICAgIHByaW1hcnlfdHJhbnNmb3JtLmhwcAotICAqICAgVkVSU0lPTjogICAgIHNlZSA8bmRuYm9vc3QvdmVyc2lvbi5ocHA+Ci0gICogICBERVNDUklQVElPTjogSGV1cmlzdGljYWxseSBkZXRlcm1pbmVzIHRoZSBzb3J0IHN0cmluZyBmb3JtYXQgaW4gdXNlCi0gICogICAgICAgICAgICAgICAgYnkgdGhlIGN1cnJlbnQgbG9jYWxlLgotICAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1BSSU1BUllfVFJBTlNGT1JNCi0jZGVmaW5lIE5ETkJPT1NUX1JFR0VYX1BSSU1BUllfVFJBTlNGT1JNCi0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9QUkVGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0ewotICAgbmFtZXNwYWNlIHJlX2RldGFpbHsKLQotCi1lbnVtewotICAgc29ydF9DLAotICAgc29ydF9maXhlZCwKLSAgIHNvcnRfZGVsaW0sCi0gICBzb3J0X3Vua25vd24KLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBTLCBjbGFzcyBjaGFyVD4KLXVuc2lnbmVkIGNvdW50X2NoYXJzKGNvbnN0IFMmIHMsIGNoYXJUIGMpCi17Ci0gICAvLwotICAgLy8gQ291bnQgaG93IG1hbnkgb2NjdXJhbmNlcyBvZiBjaGFyYWN0ZXIgYyBvY2N1cgotICAgLy8gaW4gc3RyaW5nIHM6IGlmIGMgaXMgYSBkZWxpbWV0ZXIgYmV0d2VlbiBjb2xsYXRpb24KLSAgIC8vIGZpZWxkcywgdGhlbiB0aGlzIHNob3VsZCBiZSB0aGUgc2FtZSB2YWx1ZSBmb3IgYWxsCi0gICAvLyBzb3J0IGtleXM6Ci0gICAvLwotICAgdW5zaWduZWQgaW50IGNvdW50ID0gMDsKLSAgIGZvcih1bnNpZ25lZCBwb3MgPSAwOyBwb3MgPCBzLnNpemUoKTsgKytwb3MpCi0gICB7Ci0gICAgICBpZihzW3Bvc10gPT0gYykgKytjb3VudDsKLSAgIH0KLSAgIHJldHVybiBjb3VudDsKLX0KLQotCi10ZW1wbGF0ZSA8Y2xhc3MgdHJhaXRzLCBjbGFzcyBjaGFyVD4KLXVuc2lnbmVkIGZpbmRfc29ydF9zeW50YXgoY29uc3QgdHJhaXRzKiBwdCwgY2hhclQqIGRlbGltKQotewotICAgLy8KLSAgIC8vIGNvbXBhcmUgJ2EnIHdpdGggJ0EnIHRvIHNlZSBob3cgc2ltaWxhciB0aGV5IGFyZSwKLSAgIC8vIHNob3VsZCByZWFsbHkgdXNlIGEtYWNjdXRlIGJ1dCB3ZSBjYW4ndCBwb3J0YWJseSBkbyB0aGF0LAotICAgLy8KLSAgIHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzOjpzdHJpbmdfdHlwZSBzdHJpbmdfdHlwZTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzOjpjaGFyX3R5cGUgY2hhcl90eXBlOwotCi0gICAvLyBTdXBwcmVzcyBpbmNvcnJlY3Qgd2FybmluZyBmb3IgTVNWQwotICAgKHZvaWQpcHQ7Ci0KLSAgIGNoYXJfdHlwZSBhWzJdID0geydhJywgJ1wwJywgfTsKLSAgIHN0cmluZ190eXBlIHNhKHB0LT50cmFuc2Zvcm0oYSwgYSsxKSk7Ci0gICBpZihzYSA9PSBhKQotICAgewotICAgICAgKmRlbGltID0gMDsKLSAgICAgIHJldHVybiBzb3J0X0M7Ci0gICB9Ci0gICBjaGFyX3R5cGUgQVsyXSA9IHsgJ0EnLCAnXDAnLCB9OwotICAgc3RyaW5nX3R5cGUgc0EocHQtPnRyYW5zZm9ybShBLCBBKzEpKTsKLSAgIGNoYXJfdHlwZSBjWzJdID0geyAnOycsICdcMCcsIH07Ci0gICBzdHJpbmdfdHlwZSBzYyhwdC0+dHJhbnNmb3JtKGMsIGMrMSkpOwotCi0gICBpbnQgcG9zID0gMDsKLSAgIHdoaWxlKChwb3MgPD0gc3RhdGljX2Nhc3Q8aW50PihzYS5zaXplKCkpKSAmJiAocG9zIDw9IHN0YXRpY19jYXN0PGludD4oc0Euc2l6ZSgpKSkgJiYgKHNhW3Bvc10gPT0gc0FbcG9zXSkpICsrcG9zOwotICAgLS1wb3M7Ci0gICBpZihwb3MgPCAwKQotICAgewotICAgICAgKmRlbGltID0gMDsKLSAgICAgIHJldHVybiBzb3J0X3Vua25vd247Ci0gICB9Ci0gICAvLwotICAgLy8gYXQgdGhpcyBwb2ludCBzYVtwb3NdIGlzIGVpdGhlciB0aGUgZW5kIG9mIGEgZml4ZWQgd2lkdGggZmllbGQKLSAgIC8vIG9yIHRoZSBjaGFyYWN0ZXIgdGhhdCBhY3RzIGFzIGEgZGVsaW1pdGVyOgotICAgLy8KLSAgIGNoYXJUIG1heWJlX2RlbGltID0gc2FbcG9zXTsKLSAgIGlmKChwb3MgIT0gMCkgJiYgKGNvdW50X2NoYXJzKHNhLCBtYXliZV9kZWxpbSkgPT0gY291bnRfY2hhcnMoc0EsIG1heWJlX2RlbGltKSkgJiYgKGNvdW50X2NoYXJzKHNhLCBtYXliZV9kZWxpbSkgPT0gY291bnRfY2hhcnMoc2MsIG1heWJlX2RlbGltKSkpCi0gICB7Ci0gICAgICAqZGVsaW0gPSBtYXliZV9kZWxpbTsKLSAgICAgIHJldHVybiBzb3J0X2RlbGltOwotICAgfQotICAgLy8KLSAgIC8vIE9LIGRvZW4ndCBsb29rIGxpa2UgYSBkZWxpbWl0ZXIsIHRyeSBmb3IgZml4ZWQgd2lkdGggZmllbGQ6Ci0gICAvLwotICAgaWYoKHNhLnNpemUoKSA9PSBzQS5zaXplKCkpICYmIChzYS5zaXplKCkgPT0gc2Muc2l6ZSgpKSkKLSAgIHsKLSAgICAgIC8vIG5vdGUgYXNzdW1lcyB0aGF0IHRoZSBmaXhlZCB3aWR0aCBmaWVsZCBpcyBsZXNzIHRoYW4KLSAgICAgIC8vIChudW1lcmljX2xpbWl0czxjaGFyVD46Om1heCkoKSwgc2hvdWxkIGJlIHRydWUgZm9yIGFsbCB0eXBlcwotICAgICAgLy8gSSBjYW4ndCBpbWFnaW5lIDEyNyBjaGFyYWN0ZXIgZmllbGRzLi4uCi0gICAgICAqZGVsaW0gPSBzdGF0aWNfY2FzdDxjaGFyVD4oKytwb3MpOwotICAgICAgcmV0dXJuIHNvcnRfZml4ZWQ7Ci0gICB9Ci0gICAvLwotICAgLy8gZG9uJ3Qga25vdyB3aGF0IGl0IGlzOgotICAgLy8KLSAgICpkZWxpbSA9IDA7Ci0gICByZXR1cm4gc29ydF91bmtub3duOwotfQotCi0KLSAgIH0gLy8gbmFtZXNwYWNlIHJlX2RldGFpbAotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1NVRkZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0jZW5kaWYKLQotCi0KLQotCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9wcm90ZWN0ZWRfY2FsbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3Byb3RlY3RlZF9jYWxsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODg2MTVkZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3Byb3RlY3RlZF9jYWxsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDgxICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IChjKSAyMDA0Ci0gKiBKb2huIE1hZGRvY2sKLSAqCi0gKiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLSAqIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotICogTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqLwotCi0gLyoKLSAgKiAgIExPQ0FUSU9OOiAgICBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0gICogICBGSUxFICAgICAgICAgYmFzaWNfcmVnZXhfY3JlYXRvci5jcHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IERlY2xhcmVzIHRlbXBsYXRlIGNsYXNzIGJhc2ljX3JlZ2V4X2NyZWF0b3Igd2hpY2ggZmlsbHMgaW4KLSAgKiAgICAgICAgICAgICAgICB0aGUgZGF0YSBtZW1iZXJzIG9mIGEgcmVnZXhfZGF0YSBvYmplY3QuCi0gICovCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfVjRfUFJPVEVDVEVEX0NBTExfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JFR0VYX1Y0X1BST1RFQ1RFRF9DQUxMX0hQUAotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfUFJFRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdHsKLW5hbWVzcGFjZSByZV9kZXRhaWx7Ci0KLWNsYXNzIE5ETkJPT1NUX1JFR0VYX0RFQ0wgYWJzdHJhY3RfcHJvdGVjdGVkX2NhbGwKLXsKLXB1YmxpYzoKLSAgIGJvb2wgTkROQk9PU1RfUkVHRVhfQ0FMTCBleGVjdXRlKCljb25zdDsKLSAgIC8vIHRoaXMgc3RvcHMgZ2NjLTQgZnJvbSBjb21wbGFpbmluZzoKLSAgIHZpcnR1YWwgfmFic3RyYWN0X3Byb3RlY3RlZF9jYWxsKCl7fQotcHJpdmF0ZToKLSAgIHZpcnR1YWwgYm9vbCBjYWxsKCljb25zdCA9IDA7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLWNsYXNzIGNvbmNyZXRlX3Byb3RlY3RlZF9jYWxsCi0gICA6IHB1YmxpYyBhYnN0cmFjdF9wcm90ZWN0ZWRfY2FsbAotewotcHVibGljOgotICAgdHlwZWRlZiBib29sIChUOjoqcHJvY190eXBlKSgpOwotICAgY29uY3JldGVfcHJvdGVjdGVkX2NhbGwoVCogbywgcHJvY190eXBlIHApCi0gICAgICA6IG9iaihvKSwgcHJvYyhwKSB7fQotcHJpdmF0ZToKLSAgIHZpcnR1YWwgYm9vbCBjYWxsKCljb25zdDsKLSAgIFQqIG9iajsKLSAgIHByb2NfdHlwZSBwcm9jOwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1ib29sIGNvbmNyZXRlX3Byb3RlY3RlZF9jYWxsPFQ+OjpjYWxsKCljb25zdAotewotICAgcmV0dXJuIChvYmotPipwcm9jKSgpOwotfQotCi19Ci19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfU1VGRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9yZWdiYXNlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcmVnYmFzZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdjNTI0NjguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9yZWdiYXNlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE4MCArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAyCi0gKiBKb2huIE1hZGRvY2sKLSAqCi0gKiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLSAqIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotICogTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqLwotCi0gLyoKLSAgKiAgIExPQ0FUSU9OOiAgICBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0gICogICBGSUxFICAgICAgICAgcmVnYmFzZS5jcHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IERlY2xhcmVzIGNsYXNzIHJlZ2Jhc2UuCi0gICovCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfVjRfUkVHQkFTRV9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfVjRfUkVHQkFTRV9IUFAKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1BSRUZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci0vLwotLy8gY2xhc3MgcmVnYmFzZQotLy8gaGFuZGxlcyBlcnJvciBjb2RlcyBhbmQgZmxhZ3MKLS8vCi1jbGFzcyBORE5CT09TVF9SRUdFWF9ERUNMIHJlZ2Jhc2UKLXsKLXB1YmxpYzoKLSAgIGVudW0gZmxhZ190eXBlXwotICAgewotICAgICAgLy8KLSAgICAgIC8vIERpdmlkZSB0aGUgZmxhZ3MgdXAgaW50byBsb2dpY2FsIGdyb3VwczoKLSAgICAgIC8vIGJpdHMgMC03IGluZGljYXRlIG1haW4gc3luYXR4IHR5cGUuCi0gICAgICAvLyBiaXRzIDgtMTUgaW5kaWNhdGUgc3ludGF4IHN1YnR5cGUuCi0gICAgICAvLyBiaXRzIDE2LTMxIGluZGljYXRlIG9wdGlvbnMgdGhhdCBhcmUgY29tbW9uIHRvIGFsbAotICAgICAgLy8gcmVnZXggc3ludGF4ZXMuCi0gICAgICAvLyBJbiBhbGwgY2FzZXMgdGhlIGRlZmF1bHQgaXMgMC4KLSAgICAgIC8vCi0gICAgICAvLyBNYWluIHN5bmF0eCBncm91cDoKLSAgICAgIC8vCi0gICAgICBwZXJsX3N5bnRheF9ncm91cCA9IDAsICAgICAgICAgICAgICAgICAgICAgIC8vIGRlZmF1bHQKLSAgICAgIGJhc2ljX3N5bnRheF9ncm91cCA9IDEsICAgICAgICAgICAgICAgICAgICAgLy8gUE9TSVggYmFzaWMKLSAgICAgIGxpdGVyYWwgPSAyLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWxsIGNoYXJhY3RlcnMgYXJlIGxpdGVyYWxzCi0gICAgICBtYWluX29wdGlvbl90eXBlID0gbGl0ZXJhbCB8IGJhc2ljX3N5bnRheF9ncm91cCB8IHBlcmxfc3ludGF4X2dyb3VwLCAvLyBldmVyeXRoaW5nIQotICAgICAgLy8KLSAgICAgIC8vIG9wdGlvbnMgc3BlY2lmaWMgdG8gcGVybCBncm91cDoKLSAgICAgIC8vCi0gICAgICBub19ia19yZWZzID0gMSA8PCA4LCAgICAgICAgICAgICAgICAgICAgICAgIC8vIFxkIG5vdCBhbGxvd2VkCi0gICAgICBub19wZXJsX2V4ID0gMSA8PCA5LCAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRpc2FibGUgcGVybCBleHRlbnNpb25zCi0gICAgICBub19tb2RfbSA9IDEgPDwgMTAsICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRpc2FibGUgUGVybCBtIG1vZGlmaWVyCi0gICAgICBtb2RfeCA9IDEgPDwgMTEsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFBlcmwgeCBtb2RpZmllcgotICAgICAgbW9kX3MgPSAxIDw8IDEyLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3JjZSBzIG1vZGlmaWVyIG9uIChvdmVycmlkZXMgbWF0Y2hfbm90X2RvdF9uZXdsaW5lKQotICAgICAgbm9fbW9kX3MgPSAxIDw8IDEzLCAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3JjZSBzIG1vZGlmaWVyIG9mZiAob3ZlcnJpZGVzIG1hdGNoX25vdF9kb3RfbmV3bGluZSkKLQotICAgICAgLy8KLSAgICAgIC8vIG9wdGlvbnMgc3BlY2lmaWMgdG8gYmFzaWMgZ3JvdXA6Ci0gICAgICAvLwotICAgICAgbm9fY2hhcl9jbGFzc2VzID0gMSA8PCA4LCAgICAgICAgICAgICAgICAgICAvLyBbWzpDTEFTUzpdXSBub3QgYWxsb3dlZAotICAgICAgbm9faW50ZXJ2YWxzID0gMSA8PCA5LCAgICAgICAgICAgICAgICAgICAgICAvLyB7eCx5fSBub3QgYWxsb3dlZAotICAgICAgYmtfcGx1c19xbSA9IDEgPDwgMTAsICAgICAgICAgICAgICAgICAgICAgICAvLyB1c2VzIFwrIGFuZCBcPwotICAgICAgYmtfdmJhciA9IDEgPDwgMTEsICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB1c2UgXHwgZm9yIGFsdGVybmF0aXZlcwotICAgICAgZW1hY3NfZXggPSAxIDw8IDEyLCAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbmFibGVzIGVtYWNzIGV4dGVuc2lvbnMKLQotICAgICAgLy8KLSAgICAgIC8vIG9wdGlvbnMgY29tbW9uIHRvIGFsbCBncm91cHM6Ci0gICAgICAvLwotICAgICAgbm9fZXNjYXBlX2luX2xpc3RzID0gMSA8PCAxNiwgICAgICAgICAgICAgICAgICAgICAvLyAnXCcgbm90IHNwZWNpYWwgaW5zaWRlIFsuLi5dCi0gICAgICBuZXdsaW5lX2FsdCA9IDEgPDwgMTcsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFxuIGlzIHRoZSBzYW1lIGFzIHwKLSAgICAgIG5vX2V4Y2VwdCA9IDEgPDwgMTgsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbm8gZXhjZXB0aW9uIG9uIGVycm9yCi0gICAgICBmYWlsYml0ID0gMSA8PCAxOSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVycm9yIGZsYWcKLSAgICAgIGljYXNlID0gMSA8PCAyMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2hhcmFjdGVycyBhcmUgbWF0Y2hlZCByZWdhcmRsZXNzIG9mIGNhc2UKLSAgICAgIG5vY29sbGF0ZSA9IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZG9uJ3QgdXNlIGxvY2FsZSBzcGVjaWZpYyBjb2xsYXRpb24gKGRlcHJlY2F0ZWQpCi0gICAgICBjb2xsYXRlID0gMSA8PCAyMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVzZSBsb2NhbGUgc3BlY2lmaWMgY29sbGF0aW9uCi0gICAgICBub3N1YnMgPSAxIDw8IDIyLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRvbid0IG1hcmsgc3ViLWV4cHJlc3Npb25zCi0gICAgICBzYXZlX3N1YmV4cHJlc3Npb25fbG9jYXRpb24gPSAxIDw8IDIzLCAgICAgICAgICAgIC8vIHNhdmUgc3ViZXhwcmVzc2lvbiBsb2NhdGlvbnMKLSAgICAgIG5vX2VtcHR5X2V4cHJlc3Npb25zID0gMSA8PCAyNCwgICAgICAgICAgICAgICAgICAgLy8gbm8gZW1wdHkgZXhwcmVzc2lvbnMgYWxsb3dlZAotICAgICAgb3B0aW1pemUgPSAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBub3QgcmVhbGx5IHN1cHBvcnRlZAotICAgICAgCi0KLQotICAgICAgYmFzaWMgPSBiYXNpY19zeW50YXhfZ3JvdXAgfCBjb2xsYXRlIHwgbm9fZXNjYXBlX2luX2xpc3RzLAotICAgICAgZXh0ZW5kZWQgPSBub19ia19yZWZzIHwgY29sbGF0ZSB8IG5vX3BlcmxfZXggfCBub19lc2NhcGVfaW5fbGlzdHMsCi0gICAgICBub3JtYWwgPSAwLAotICAgICAgZW1hY3MgPSBiYXNpY19zeW50YXhfZ3JvdXAgfCBjb2xsYXRlIHwgZW1hY3NfZXggfCBia192YmFyLAotICAgICAgYXdrID0gbm9fYmtfcmVmcyB8IGNvbGxhdGUgfCBub19wZXJsX2V4LAotICAgICAgZ3JlcCA9IGJhc2ljIHwgbmV3bGluZV9hbHQsCi0gICAgICBlZ3JlcCA9IGV4dGVuZGVkIHwgbmV3bGluZV9hbHQsCi0gICAgICBzZWQgPSBiYXNpYywKLSAgICAgIHBlcmwgPSBub3JtYWwsCi0gICAgICBFQ01BU2NyaXB0ID0gbm9ybWFsLAotICAgICAgSmF2YVNjcmlwdCA9IG5vcm1hbCwKLSAgICAgIEpTY3JpcHQgPSBub3JtYWwKLSAgIH07Ci0gICB0eXBlZGVmIHVuc2lnbmVkIGludCBmbGFnX3R5cGU7Ci0KLSAgIGVudW0gcmVzdGFydF9pbmZvCi0gICB7Ci0gICAgICByZXN0YXJ0X2FueSA9IDAsCi0gICAgICByZXN0YXJ0X3dvcmQgPSAxLAotICAgICAgcmVzdGFydF9saW5lID0gMiwKLSAgICAgIHJlc3RhcnRfYnVmID0gMywKLSAgICAgIHJlc3RhcnRfY29udGludWUgPSA0LAotICAgICAgcmVzdGFydF9saXQgPSA1LAotICAgICAgcmVzdGFydF9maXhlZF9saXQgPSA2LCAKLSAgICAgIHJlc3RhcnRfY291bnQgPSA3Ci0gICB9OwotfTsKLQotLy8KLS8vIHByb3ZpZGUgc3RkIGxpYiBwcm9wb3NhbCBjb21wYXRpYmxlIGNvbnN0YW50czoKLS8vCi1uYW1lc3BhY2UgcmVnZXhfY29uc3RhbnRzewotCi0gICBlbnVtIGZsYWdfdHlwZV8KLSAgIHsKLQotICAgICAgbm9fZXhjZXB0ID0gOjpuZG5ib29zdDo6cmVnYmFzZTo6bm9fZXhjZXB0LAotICAgICAgZmFpbGJpdCA9IDo6bmRuYm9vc3Q6OnJlZ2Jhc2U6OmZhaWxiaXQsCi0gICAgICBsaXRlcmFsID0gOjpuZG5ib29zdDo6cmVnYmFzZTo6bGl0ZXJhbCwKLSAgICAgIGljYXNlID0gOjpuZG5ib29zdDo6cmVnYmFzZTo6aWNhc2UsCi0gICAgICBub2NvbGxhdGUgPSA6Om5kbmJvb3N0OjpyZWdiYXNlOjpub2NvbGxhdGUsCi0gICAgICBjb2xsYXRlID0gOjpuZG5ib29zdDo6cmVnYmFzZTo6Y29sbGF0ZSwKLSAgICAgIG5vc3VicyA9IDo6bmRuYm9vc3Q6OnJlZ2Jhc2U6Om5vc3VicywKLSAgICAgIG9wdGltaXplID0gOjpuZG5ib29zdDo6cmVnYmFzZTo6b3B0aW1pemUsCi0gICAgICBia19wbHVzX3FtID0gOjpuZG5ib29zdDo6cmVnYmFzZTo6YmtfcGx1c19xbSwKLSAgICAgIGJrX3ZiYXIgPSA6Om5kbmJvb3N0OjpyZWdiYXNlOjpia192YmFyLAotICAgICAgbm9faW50ZXJ2YWxzID0gOjpuZG5ib29zdDo6cmVnYmFzZTo6bm9faW50ZXJ2YWxzLAotICAgICAgbm9fY2hhcl9jbGFzc2VzID0gOjpuZG5ib29zdDo6cmVnYmFzZTo6bm9fY2hhcl9jbGFzc2VzLAotICAgICAgbm9fZXNjYXBlX2luX2xpc3RzID0gOjpuZG5ib29zdDo6cmVnYmFzZTo6bm9fZXNjYXBlX2luX2xpc3RzLAotICAgICAgbm9fbW9kX20gPSA6Om5kbmJvb3N0OjpyZWdiYXNlOjpub19tb2RfbSwKLSAgICAgIG1vZF94ID0gOjpuZG5ib29zdDo6cmVnYmFzZTo6bW9kX3gsCi0gICAgICBtb2RfcyA9IDo6bmRuYm9vc3Q6OnJlZ2Jhc2U6Om1vZF9zLAotICAgICAgbm9fbW9kX3MgPSA6Om5kbmJvb3N0OjpyZWdiYXNlOjpub19tb2RfcywKLSAgICAgIHNhdmVfc3ViZXhwcmVzc2lvbl9sb2NhdGlvbiA9IDo6bmRuYm9vc3Q6OnJlZ2Jhc2U6OnNhdmVfc3ViZXhwcmVzc2lvbl9sb2NhdGlvbiwKLSAgICAgIG5vX2VtcHR5X2V4cHJlc3Npb25zID0gOjpuZG5ib29zdDo6cmVnYmFzZTo6bm9fZW1wdHlfZXhwcmVzc2lvbnMsCi0KLSAgICAgIGJhc2ljID0gOjpuZG5ib29zdDo6cmVnYmFzZTo6YmFzaWMsCi0gICAgICBleHRlbmRlZCA9IDo6bmRuYm9vc3Q6OnJlZ2Jhc2U6OmV4dGVuZGVkLAotICAgICAgbm9ybWFsID0gOjpuZG5ib29zdDo6cmVnYmFzZTo6bm9ybWFsLAotICAgICAgZW1hY3MgPSA6Om5kbmJvb3N0OjpyZWdiYXNlOjplbWFjcywKLSAgICAgIGF3ayA9IDo6bmRuYm9vc3Q6OnJlZ2Jhc2U6OmF3aywKLSAgICAgIGdyZXAgPSA6Om5kbmJvb3N0OjpyZWdiYXNlOjpncmVwLAotICAgICAgZWdyZXAgPSA6Om5kbmJvb3N0OjpyZWdiYXNlOjplZ3JlcCwKLSAgICAgIHNlZCA9IGJhc2ljLAotICAgICAgcGVybCA9IG5vcm1hbCwKLSAgICAgIEVDTUFTY3JpcHQgPSBub3JtYWwsCi0gICAgICBKYXZhU2NyaXB0ID0gbm9ybWFsLAotICAgICAgSlNjcmlwdCA9IG5vcm1hbAotICAgfTsKLSAgIHR5cGVkZWYgOjpuZG5ib29zdDo6cmVnYmFzZTo6ZmxhZ190eXBlIHN5bnRheF9vcHRpb25fdHlwZTsKLQotfSAvLyBuYW1lc3BhY2UgcmVnZXhfY29uc3RhbnRzCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9TVUZGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcmVnZXguaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9yZWdleC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2ZDMxMTEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9yZWdleC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMDIgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMgotICogSm9obiBNYWRkb2NrCi0gKgotICogVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0gKiBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLSAqIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKi8KLQotIC8qCi0gICogICBMT0NBVElPTjogICAgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotICAqICAgRklMRSAgICAgICAgIHJlZ2V4LmNwcAotICAqICAgVkVSU0lPTiAgICAgIHNlZSA8bmRuYm9vc3QvdmVyc2lvbi5ocHA+Ci0gICogICBERVNDUklQVElPTjogRGVjbGFyZXMgbmRuYm9vc3Q6OmJhc2ljX3JlZ2V4PD4gYW5kIGFzc29jaWF0ZWQKLSAgKiAgICAgICAgICAgICAgICBmdW5jdGlvbnMgYW5kIGNsYXNzZXMuIFRoaXMgaGVhZGVyIGlzIHRoZSBtYWluCi0gICogICAgICAgICAgICAgICAgZW50cnkgcG9pbnQgZm9yIHRoZSB0ZW1wbGF0ZSByZWdleCBjb2RlLgotICAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JFX1JFR0VYX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9SRV9SRUdFWF9IUFBfSU5DTFVERUQKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi0KLS8vIHdoYXQgZm9sbG93cyBpcyBhbGwgQysrIGRvbid0IGluY2x1ZGUgaW4gQyBidWlsZHMhIQotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX0NPTkZJR19IUFAKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC9jb25maWcuaHBwPgotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1dPUktBUk9VTkRfSFBQCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfd29ya2Fyb3VuZC5ocHA+Ci0jZW5kaWYKLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9GV0RfSFBQCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXhfZndkLmhwcD4KLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9UUkFJVFNfSFBQCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvcmVnZXhfdHJhaXRzLmhwcD4KLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9SQVdfQlVGRkVSX0hQUAotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3Y0L2Vycm9yX3R5cGUuaHBwPgotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1Y0X01BVENIX0ZMQUdTCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvdjQvbWF0Y2hfZmxhZ3MuaHBwPgotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1JBV19CVUZGRVJfSFBQCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfcmF3X2J1ZmZlci5ocHA+Ci0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfUkVfUEFUX0VYQ0VQVF9IUFAKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC9wYXR0ZXJuX2V4Y2VwdC5ocHA+Ci0jZW5kaWYKLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9WNF9DSEFSX1JFR0VYX1RSQUlUU19IUFAKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC92NC9jaGFyX3JlZ2V4X3RyYWl0cy5ocHA+Ci0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfVjRfU1RBVEVTX0hQUAotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3Y0L3N0YXRlcy5ocHA+Ci0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfVjRfUkVHQkFTRV9IUFAKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC92NC9yZWdiYXNlLmhwcD4KLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9WNF9JVEVSQVRPUl9UUkFJVFNfSFBQCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvdjQvaXRlcmF0b3JfdHJhaXRzLmhwcD4KLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9WNF9CQVNJQ19SRUdFWF9IUFAKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC92NC9iYXNpY19yZWdleC5ocHA+Ci0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfVjRfQkFTSUNfUkVHRVhfQ1JFQVRPUl9IUFAKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC92NC9iYXNpY19yZWdleF9jcmVhdG9yLmhwcD4KLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9WNF9CQVNJQ19SRUdFWF9QQVJTRVJfSFBQCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvdjQvYmFzaWNfcmVnZXhfcGFyc2VyLmhwcD4KLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9WNF9TVUJfTUFUQ0hfSFBQCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvdjQvc3ViX21hdGNoLmhwcD4KLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9GT1JNQVRfSFBQCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfZm9ybWF0LmhwcD4KLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9WNF9NQVRDSF9SRVNVTFRTX0hQUAotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3Y0L21hdGNoX3Jlc3VsdHMuaHBwPgotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1Y0X1BST1RFQ1RFRF9DQUxMX0hQUAotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3Y0L3Byb3RlY3RlZF9jYWxsLmhwcD4KLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9NQVRDSEVSX0hQUAotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3Y0L3BlcmxfbWF0Y2hlci5ocHA+Ci0jZW5kaWYKLS8vCi0vLyB0ZW1wbGF0ZSBpbnN0YW5jZXM6Ci0vLwotI2RlZmluZSBORE5CT09TVF9SRUdFWF9DSEFSX1QgY2hhcgotI2lmZGVmIE5ETkJPT1NUX1JFR0VYX05BUlJPV19JTlNUQU5USUFURQotIyAgZGVmaW5lIE5ETkJPT1NUX1JFR0VYX0lOU1RBTlRJQVRFCi0jZW5kaWYKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC92NC9pbnN0YW5jZXMuaHBwPgotI3VuZGVmIE5ETkJPT1NUX1JFR0VYX0NIQVJfVAotI2lmZGVmIE5ETkJPT1NUX1JFR0VYX0lOU1RBTlRJQVRFCi0jICB1bmRlZiBORE5CT09TVF9SRUdFWF9JTlNUQU5USUFURQotI2VuZGlmCi0KLSNpZm5kZWYgTkROQk9PU1RfTk9fV1JFR0VYCi0jZGVmaW5lIE5ETkJPT1NUX1JFR0VYX0NIQVJfVCB3Y2hhcl90Ci0jaWZkZWYgTkROQk9PU1RfUkVHRVhfV0lERV9JTlNUQU5USUFURQotIyAgZGVmaW5lIE5ETkJPT1NUX1JFR0VYX0lOU1RBTlRJQVRFCi0jZW5kaWYKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC92NC9pbnN0YW5jZXMuaHBwPgotI3VuZGVmIE5ETkJPT1NUX1JFR0VYX0NIQVJfVAotI2lmZGVmIE5ETkJPT1NUX1JFR0VYX0lOU1RBTlRJQVRFCi0jICB1bmRlZiBORE5CT09TVF9SRUdFWF9JTlNUQU5USUFURQotI2VuZGlmCi0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1dSRUdFWCkgJiYgZGVmaW5lZChORE5CT09TVF9SRUdFWF9IQVNfT1RIRVJfV0NIQVJfVCkKLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfQ0hBUl9UIHVuc2lnbmVkIHNob3J0Ci0jaWZkZWYgTkROQk9PU1RfUkVHRVhfVVNfSU5TVEFOVElBVEUKLSMgIGRlZmluZSBORE5CT09TVF9SRUdFWF9JTlNUQU5USUFURQotI2VuZGlmCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvdjQvaW5zdGFuY2VzLmhwcD4KLSN1bmRlZiBORE5CT09TVF9SRUdFWF9DSEFSX1QKLSNpZmRlZiBORE5CT09TVF9SRUdFWF9JTlNUQU5USUFURQotIyAgdW5kZWYgTkROQk9PU1RfUkVHRVhfSU5TVEFOVElBVEUKLSNlbmRpZgotI2VuZGlmCi0KLQotbmFtZXNwYWNlIG5kbmJvb3N0ewotI2lmZGVmIE5ETkJPT1NUX1JFR0VYX05PX0ZXRAotdHlwZWRlZiBiYXNpY19yZWdleDxjaGFyLCByZWdleF90cmFpdHM8Y2hhcj4gPiByZWdleDsKLSNpZm5kZWYgTkROQk9PU1RfTk9fV1JFR0VYCi10eXBlZGVmIGJhc2ljX3JlZ2V4PHdjaGFyX3QsIHJlZ2V4X3RyYWl0czx3Y2hhcl90PiA+IHdyZWdleDsKLSNlbmRpZgotI2VuZGlmCi0KLXR5cGVkZWYgbWF0Y2hfcmVzdWx0czxjb25zdCBjaGFyKj4gY21hdGNoOwotdHlwZWRlZiBtYXRjaF9yZXN1bHRzPHN0ZDo6c3RyaW5nOjpjb25zdF9pdGVyYXRvcj4gc21hdGNoOwotI2lmbmRlZiBORE5CT09TVF9OT19XUkVHRVgKLXR5cGVkZWYgbWF0Y2hfcmVzdWx0czxjb25zdCB3Y2hhcl90Kj4gd2NtYXRjaDsKLXR5cGVkZWYgbWF0Y2hfcmVzdWx0czxzdGQ6OndzdHJpbmc6OmNvbnN0X2l0ZXJhdG9yPiB3c21hdGNoOwotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX01BVENIX0hQUAotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X21hdGNoLmhwcD4KLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9WNF9SRUdFWF9TRUFSQ0hfSFBQCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfc2VhcmNoLmhwcD4KLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9JVEVSQVRPUl9IUFAKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC92NC9yZWdleF9pdGVyYXRvci5ocHA+Ci0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfVE9LRU5fSVRFUkFUT1JfSFBQCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfdG9rZW5faXRlcmF0b3IuaHBwPgotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1Y0X1JFR0VYX0dSRVBfSFBQCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfZ3JlcC5ocHA+Ci0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfVjRfUkVHRVhfUkVQTEFDRV9IUFAKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC92NC9yZWdleF9yZXBsYWNlLmhwcD4KLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9WNF9SRUdFWF9NRVJHRV9IUFAKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC92NC9yZWdleF9tZXJnZS5ocHA+Ci0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfU1BMSVRfSFBQCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfc3BsaXQuaHBwPgotI2VuZGlmCi0KLSNlbmRpZiAgLy8gX19jcGx1c3BsdXMKLQotI2VuZGlmICAvLyBpbmNsdWRlCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfZm9ybWF0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfZm9ybWF0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDEzOTdhMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X2Zvcm1hdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTU2ICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDkgSm9obiBNYWRkb2NrCi0gKiBDb3B5cmlnaHQgMjAwOCBFcmljIE5pZWJsZXIuIAotICoKLSAqIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotICogQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0gKiBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICovCi0KLSAvKgotICAqICAgTE9DQVRJT046ICAgIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLSAgKiAgIEZJTEUgICAgICAgICByZWdleF9mb3JtYXQuaHBwCi0gICogICBWRVJTSU9OICAgICAgc2VlIDxuZG5ib29zdC92ZXJzaW9uLmhwcD4KLSAgKiAgIERFU0NSSVBUSU9OOiBQcm92aWRlcyBmb3JtYXR0aW5nIG91dHB1dCByb3V0aW5lcyBmb3Igc2VhcmNoIGFuZCByZXBsYWNlCi0gICogICAgICAgICAgICAgICAgb3BlcmF0aW9ucy4gIE5vdGUgdGhpcyBpcyBhbiBpbnRlcm5hbCBoZWFkZXIgZmlsZSBpbmNsdWRlZAotICAqICAgICAgICAgICAgICAgIGJ5IHJlZ2V4LmhwcCwgZG8gbm90IGluY2x1ZGUgb24gaXRzIG93bi4KLSAgKi8KLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9GT1JNQVRfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JFR0VYX0ZPUk1BVF9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3BvaW50ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Z1bmN0aW9uLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jbGFzcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2FtZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29udmVydGlibGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9wb2ludGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfY3YuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2FuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL25vdC5ocHA+Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1NGSU5BRQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9oYXNfeHh4LmhwcD4KLSNlbmRpZgotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdHsKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1BSRUZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0vLwotLy8gRm9yd2FyZCBkZWNsYXJhdGlvbjoKLS8vCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IgPSBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHN0ZDo6dmVjdG9yPHN1Yl9tYXRjaDxCaWRpSXRlcmF0b3I+ID46OmFsbG9jYXRvcl90eXBlID4KLWNsYXNzIG1hdGNoX3Jlc3VsdHM7Ci0KLW5hbWVzcGFjZSByZV9kZXRhaWx7Ci0KLS8vCi0vLyBzdHJ1Y3QgdHJpdmlhbF9mb3JtYXRfdHJhaXRzOgotLy8gZGVmaW5lcyBtaW5pbXVtIGxvY2FsaXNhdGlvbiBzdXBwb3J0IGZvciBmb3JtYXR0aW5nCi0vLyBpbiB0aGUgY2FzZSB0aGF0IHRoZSBhY3R1YWwgcmVnZXggdHJhaXRzIGlzIHVuYXZhaWxhYmxlLgotLy8KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLXN0cnVjdCB0cml2aWFsX2Zvcm1hdF90cmFpdHMKLXsKLSAgIHR5cGVkZWYgY2hhclQgY2hhcl90eXBlOwotCi0gICBzdGF0aWMgc3RkOjpwdHJkaWZmX3QgbGVuZ3RoKGNvbnN0IGNoYXJUKiBwKQotICAgewotICAgICAgcmV0dXJuIGdsb2JhbF9sZW5ndGgocCk7Ci0gICB9Ci0gICBzdGF0aWMgY2hhclQgdG9sb3dlcihjaGFyVCBjKQotICAgewotICAgICAgcmV0dXJuIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Z2xvYmFsX2xvd2VyKGMpOwotICAgfQotICAgc3RhdGljIGNoYXJUIHRvdXBwZXIoY2hhclQgYykKLSAgIHsKLSAgICAgIHJldHVybiA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6Omdsb2JhbF91cHBlcihjKTsKLSAgIH0KLSAgIHN0YXRpYyBpbnQgdmFsdWUoY29uc3QgY2hhclQgYywgaW50IHJhZGl4KQotICAgewotICAgICAgaW50IHJlc3VsdCA9IGdsb2JhbF92YWx1ZShjKTsKLSAgICAgIHJldHVybiByZXN1bHQgPj0gcmFkaXggPyAtMSA6IHJlc3VsdDsKLSAgIH0KLSAgIGludCB0b2koY29uc3QgY2hhclQqJiBwMSwgY29uc3QgY2hhclQqIHAyLCBpbnQgcmFkaXgpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBnbG9iYWxfdG9pKHAxLCBwMiwgcmFkaXgsICp0aGlzKTsKLSAgIH0KLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBPdXRwdXRJdGVyYXRvciwgY2xhc3MgUmVzdWx0cywgY2xhc3MgdHJhaXRzLCBjbGFzcyBGb3J3YXJkSXRlcj4KLWNsYXNzIGJhc2ljX3JlZ2V4X2Zvcm1hdHRlcgotewotcHVibGljOgotICAgdHlwZWRlZiB0eXBlbmFtZSB0cmFpdHM6OmNoYXJfdHlwZSBjaGFyX3R5cGU7Ci0gICBiYXNpY19yZWdleF9mb3JtYXR0ZXIoT3V0cHV0SXRlcmF0b3IgbywgY29uc3QgUmVzdWx0cyYgciwgY29uc3QgdHJhaXRzJiB0KQotICAgICAgOiBtX3RyYWl0cyh0KSwgbV9yZXN1bHRzKHIpLCBtX291dChvKSwgbV9zdGF0ZShvdXRwdXRfY29weSksIG1fcmVzdG9yZV9zdGF0ZShvdXRwdXRfY29weSksIG1faGF2ZV9jb25kaXRpb25hbChmYWxzZSkge30KLSAgIE91dHB1dEl0ZXJhdG9yIGZvcm1hdChGb3J3YXJkSXRlciBwMSwgRm9yd2FyZEl0ZXIgcDIsIG1hdGNoX2ZsYWdfdHlwZSBmKTsKLSAgIE91dHB1dEl0ZXJhdG9yIGZvcm1hdChGb3J3YXJkSXRlciBwMSwgbWF0Y2hfZmxhZ190eXBlIGYpCi0gICB7Ci0gICAgICByZXR1cm4gZm9ybWF0KHAxLCBwMSArIG1fdHJhaXRzLmxlbmd0aChwMSksIGYpOwotICAgfQotcHJpdmF0ZToKLSAgIHR5cGVkZWYgdHlwZW5hbWUgUmVzdWx0czo6dmFsdWVfdHlwZSBzdWJfbWF0Y2hfdHlwZTsKLSAgIGVudW0gb3V0cHV0X3N0YXRlCi0gICB7Ci0gICAgICBvdXRwdXRfY29weSwKLSAgICAgIG91dHB1dF9uZXh0X2xvd2VyLAotICAgICAgb3V0cHV0X25leHRfdXBwZXIsCi0gICAgICBvdXRwdXRfbG93ZXIsCi0gICAgICBvdXRwdXRfdXBwZXIsCi0gICAgICBvdXRwdXRfbm9uZQotICAgfTsKLQotICAgdm9pZCBwdXQoY2hhcl90eXBlIGMpOwotICAgdm9pZCBwdXQoY29uc3Qgc3ViX21hdGNoX3R5cGUmIHN1Yik7Ci0gICB2b2lkIGZvcm1hdF9hbGwoKTsKLSAgIHZvaWQgZm9ybWF0X3BlcmwoKTsKLSAgIHZvaWQgZm9ybWF0X2VzY2FwZSgpOwotICAgdm9pZCBmb3JtYXRfY29uZGl0aW9uYWwoKTsKLSAgIHZvaWQgZm9ybWF0X3VudGlsX3Njb3BlX2VuZCgpOwotICAgYm9vbCBoYW5kbGVfcGVybF92ZXJiKGJvb2wgaGF2ZV9icmFjZSk7Ci0KLSAgIGlubGluZSB0eXBlbmFtZSBSZXN1bHRzOjp2YWx1ZV90eXBlIGNvbnN0JiBnZXRfbmFtZWRfc3ViKEZvcndhcmRJdGVyIGksIEZvcndhcmRJdGVyIGosIGNvbnN0IG1wbDo6ZmFsc2VfJikKLSAgIHsKLSAgICAgIHN0ZDo6dmVjdG9yPGNoYXJfdHlwZT4gdihpLCBqKTsKLSAgICAgIHJldHVybiAoaSAhPSBqKSA/IHRoaXMtPm1fcmVzdWx0cy5uYW1lZF9zdWJleHByZXNzaW9uKCZ2WzBdLCAmdlswXSArIHYuc2l6ZSgpKQotICAgICAgICAgOiB0aGlzLT5tX3Jlc3VsdHMubmFtZWRfc3ViZXhwcmVzc2lvbihzdGF0aWNfY2FzdDxjb25zdCBjaGFyX3R5cGUqPigwKSwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcl90eXBlKj4oMCkpOwotICAgfQotICAgaW5saW5lIHR5cGVuYW1lIFJlc3VsdHM6OnZhbHVlX3R5cGUgY29uc3QmIGdldF9uYW1lZF9zdWIoRm9yd2FyZEl0ZXIgaSwgRm9yd2FyZEl0ZXIgaiwgY29uc3QgbXBsOjp0cnVlXyYpCi0gICB7Ci0gICAgICByZXR1cm4gdGhpcy0+bV9yZXN1bHRzLm5hbWVkX3N1YmV4cHJlc3Npb24oaSwgaik7Ci0gICB9Ci0gICBpbmxpbmUgdHlwZW5hbWUgUmVzdWx0czo6dmFsdWVfdHlwZSBjb25zdCYgZ2V0X25hbWVkX3N1YihGb3J3YXJkSXRlciBpLCBGb3J3YXJkSXRlciBqKQotICAgewotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6aXNfY29udmVydGlibGU8Rm9yd2FyZEl0ZXIsIGNvbnN0IGNoYXJfdHlwZSo+Ojp0eXBlIHRhZ190eXBlOwotICAgICAgcmV0dXJuIGdldF9uYW1lZF9zdWIoaSwgaiwgdGFnX3R5cGUoKSk7Ci0gICB9Ci0gICBpbmxpbmUgaW50IGdldF9uYW1lZF9zdWJfaW5kZXgoRm9yd2FyZEl0ZXIgaSwgRm9yd2FyZEl0ZXIgaiwgY29uc3QgbXBsOjpmYWxzZV8mKQotICAgewotICAgICAgc3RkOjp2ZWN0b3I8Y2hhcl90eXBlPiB2KGksIGopOwotICAgICAgcmV0dXJuIChpICE9IGopID8gdGhpcy0+bV9yZXN1bHRzLm5hbWVkX3N1YmV4cHJlc3Npb25faW5kZXgoJnZbMF0sICZ2WzBdICsgdi5zaXplKCkpCi0gICAgICAgICA6IHRoaXMtPm1fcmVzdWx0cy5uYW1lZF9zdWJleHByZXNzaW9uX2luZGV4KHN0YXRpY19jYXN0PGNvbnN0IGNoYXJfdHlwZSo+KDApLCBzdGF0aWNfY2FzdDxjb25zdCBjaGFyX3R5cGUqPigwKSk7Ci0gICB9Ci0gICBpbmxpbmUgaW50IGdldF9uYW1lZF9zdWJfaW5kZXgoRm9yd2FyZEl0ZXIgaSwgRm9yd2FyZEl0ZXIgaiwgY29uc3QgbXBsOjp0cnVlXyYpCi0gICB7Ci0gICAgICByZXR1cm4gdGhpcy0+bV9yZXN1bHRzLm5hbWVkX3N1YmV4cHJlc3Npb25faW5kZXgoaSwgaik7Ci0gICB9Ci0gICBpbmxpbmUgaW50IGdldF9uYW1lZF9zdWJfaW5kZXgoRm9yd2FyZEl0ZXIgaSwgRm9yd2FyZEl0ZXIgaikKLSAgIHsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmlzX2NvbnZlcnRpYmxlPEZvcndhcmRJdGVyLCBjb25zdCBjaGFyX3R5cGUqPjo6dHlwZSB0YWdfdHlwZTsKLSAgICAgIHJldHVybiBnZXRfbmFtZWRfc3ViX2luZGV4KGksIGosIHRhZ190eXBlKCkpOwotICAgfQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSAgIC8vIG1zdmMtOC4wIGlzc3VlcyBhIHNwdXJpb3VzIHdhcm5pbmcgb24gdGhlIGNhbGwgdG8gc3RkOjphZHZhbmNlIGhlcmU6Ci0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQyNDQpCi0jZW5kaWYKLSAgIGlubGluZSBpbnQgdG9pKEZvcndhcmRJdGVyJiBpLCBGb3J3YXJkSXRlciBqLCBpbnQgYmFzZSwgY29uc3QgbmRuYm9vc3Q6Om1wbDo6ZmFsc2VfJikKLSAgIHsKLSAgICAgIGlmKGkgIT0gaikKLSAgICAgIHsKLSAgICAgICAgIHN0ZDo6dmVjdG9yPGNoYXJfdHlwZT4gdihpLCBqKTsKLSAgICAgICAgIGNvbnN0IGNoYXJfdHlwZSogc3RhcnQgPSAmdlswXTsKLSAgICAgICAgIGNvbnN0IGNoYXJfdHlwZSogcG9zID0gc3RhcnQ7Ci0gICAgICAgICBpbnQgciA9IG1fdHJhaXRzLnRvaShwb3MsICZ2WzBdICsgdi5zaXplKCksIGJhc2UpOwotICAgICAgICAgc3RkOjphZHZhbmNlKGksIHBvcyAtIHN0YXJ0KTsKLSAgICAgICAgIHJldHVybiByOwotICAgICAgfQotICAgICAgcmV0dXJuIC0xOwotICAgfQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLSAgIGlubGluZSBpbnQgdG9pKEZvcndhcmRJdGVyJiBpLCBGb3J3YXJkSXRlciBqLCBpbnQgYmFzZSwgY29uc3QgbmRuYm9vc3Q6Om1wbDo6dHJ1ZV8mKQotICAgewotICAgICAgcmV0dXJuIG1fdHJhaXRzLnRvaShpLCBqLCBiYXNlKTsKLSAgIH0KLSAgIGlubGluZSBpbnQgdG9pKEZvcndhcmRJdGVyJiBpLCBGb3J3YXJkSXRlciBqLCBpbnQgYmFzZSkKLSAgIHsKLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiBkZWZpbmVkKF9fSU5URUxfQ09NUElMRVIpICYmICgoX19JTlRFTF9DT01QSUxFUiA9PSA5OTk5KSB8fCAoX19JTlRFTF9DT01QSUxFUiA9PSAxMjEwKSkKLSAgICAgIC8vIFdvcmthcm91bmQgZm9yIEludGVsIHN1cHBvcnQgaXNzdWUgIzY1NjY1NC4KLSAgICAgIC8vIFNlZSBhbHNvIGh0dHBzOi8vc3ZuLmJvb3N0Lm9yZy90cmFjL2Jvb3N0L3RpY2tldC82MzU5Ci0gICAgICByZXR1cm4gdG9pKGksIGosIGJhc2UsIG1wbDo6ZmFsc2VfKCkpOwotI2Vsc2UKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmlzX2NvbnZlcnRpYmxlPEZvcndhcmRJdGVyLCBjb25zdCBjaGFyX3R5cGUqJj46OnR5cGUgdGFnX3R5cGU7Ci0gICAgICByZXR1cm4gdG9pKGksIGosIGJhc2UsIHRhZ190eXBlKCkpOwotI2VuZGlmCi0gICB9Ci0KLSAgIGNvbnN0IHRyYWl0cyYgICAgbV90cmFpdHM7ICAgICAgIC8vIHRoZSB0cmFpdHMgY2xhc3MgZm9yIGxvY2FsaXNlZCBmb3JtYXR0aW5nIG9wZXJhdGlvbnMKLSAgIGNvbnN0IFJlc3VsdHMmICAgbV9yZXN1bHRzOyAgICAgLy8gdGhlIG1hdGNoX3Jlc3VsdHMgYmVpbmcgdXNlZC4KLSAgIE91dHB1dEl0ZXJhdG9yICAgbV9vdXQ7ICAgICAgICAgLy8gd2hlcmUgdG8gc2VuZCBvdXRwdXQuCi0gICBGb3J3YXJkSXRlciAgICAgIG1fcG9zaXRpb247ICAvLyBmb3JtYXQgc3RyaW5nLCBjdXJyZW50IHBvc2l0aW9uCi0gICBGb3J3YXJkSXRlciAgICAgIG1fZW5kOyAgICAgICAvLyBmb3JtYXQgc3RyaW5nIGVuZAotICAgbWF0Y2hfZmxhZ190eXBlICBtX2ZsYWdzOyAgICAgIC8vIGZvcm1hdCBmbGFncyB0byB1c2UKLSAgIG91dHB1dF9zdGF0ZSAgICAgbV9zdGF0ZTsgICAgICAvLyB3aGF0IHRvIGRvIHdpdGggdGhlIG5leHQgY2hhcmFjdGVyCi0gICBvdXRwdXRfc3RhdGUgICAgIG1fcmVzdG9yZV9zdGF0ZTsgIC8vIHdoYXQgc3RhdGUgdG8gcmVzdG9yZSB0by4KLSAgIGJvb2wgICAgICAgICAgICAgbV9oYXZlX2NvbmRpdGlvbmFsOyAvLyB3ZSBhcmUgcGFyc2luZyBhIGNvbmRpdGlvbmFsCi1wcml2YXRlOgotICAgYmFzaWNfcmVnZXhfZm9ybWF0dGVyKGNvbnN0IGJhc2ljX3JlZ2V4X2Zvcm1hdHRlciYpOwotICAgYmFzaWNfcmVnZXhfZm9ybWF0dGVyJiBvcGVyYXRvcj0oY29uc3QgYmFzaWNfcmVnZXhfZm9ybWF0dGVyJik7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgT3V0cHV0SXRlcmF0b3IsIGNsYXNzIFJlc3VsdHMsIGNsYXNzIHRyYWl0cywgY2xhc3MgRm9yd2FyZEl0ZXI+Ci1PdXRwdXRJdGVyYXRvciBiYXNpY19yZWdleF9mb3JtYXR0ZXI8T3V0cHV0SXRlcmF0b3IsIFJlc3VsdHMsIHRyYWl0cywgRm9yd2FyZEl0ZXI+Ojpmb3JtYXQoRm9yd2FyZEl0ZXIgcDEsIEZvcndhcmRJdGVyIHAyLCBtYXRjaF9mbGFnX3R5cGUgZikKLXsKLSAgIG1fcG9zaXRpb24gPSBwMTsKLSAgIG1fZW5kID0gcDI7Ci0gICBtX2ZsYWdzID0gZjsKLSAgIGZvcm1hdF9hbGwoKTsKLSAgIHJldHVybiBtX291dDsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIE91dHB1dEl0ZXJhdG9yLCBjbGFzcyBSZXN1bHRzLCBjbGFzcyB0cmFpdHMsIGNsYXNzIEZvcndhcmRJdGVyPgotdm9pZCBiYXNpY19yZWdleF9mb3JtYXR0ZXI8T3V0cHV0SXRlcmF0b3IsIFJlc3VsdHMsIHRyYWl0cywgRm9yd2FyZEl0ZXI+Ojpmb3JtYXRfYWxsKCkKLXsKLSAgIC8vIG92ZXIgYW5kIG92ZXI6Ci0gICB3aGlsZShtX3Bvc2l0aW9uICE9IG1fZW5kKQotICAgewotICAgICAgc3dpdGNoKCptX3Bvc2l0aW9uKQotICAgICAgewotICAgICAgY2FzZSAnJic6Ci0gICAgICAgICBpZihtX2ZsYWdzICYgOjpuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjpmb3JtYXRfc2VkKQotICAgICAgICAgewotICAgICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgICAgcHV0KG1fcmVzdWx0c1swXSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgIH0KLSAgICAgICAgIHB1dCgqbV9wb3NpdGlvbisrKTsKLSAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSAnXFwnOgotICAgICAgICAgZm9ybWF0X2VzY2FwZSgpOwotICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlICcoJzoKLSAgICAgICAgIGlmKG1fZmxhZ3MgJiBuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjpmb3JtYXRfYWxsKQotICAgICAgICAgewotICAgICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgICAgYm9vbCBoYXZlX2NvbmRpdGlvbmFsID0gbV9oYXZlX2NvbmRpdGlvbmFsOwotICAgICAgICAgICAgbV9oYXZlX2NvbmRpdGlvbmFsID0gZmFsc2U7Ci0gICAgICAgICAgICBmb3JtYXRfdW50aWxfc2NvcGVfZW5kKCk7Ci0gICAgICAgICAgICBtX2hhdmVfY29uZGl0aW9uYWwgPSBoYXZlX2NvbmRpdGlvbmFsOwotICAgICAgICAgICAgaWYobV9wb3NpdGlvbiA9PSBtX2VuZCkKLSAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIE5ETkJPT1NUX0FTU0VSVCgqbV9wb3NpdGlvbiA9PSBzdGF0aWNfY2FzdDxjaGFyX3R5cGU+KCcpJykpOwotICAgICAgICAgICAgKyttX3Bvc2l0aW9uOyAgLy8gc2tpcCB0aGUgY2xvc2luZyAnKScKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgfQotICAgICAgICAgcHV0KCptX3Bvc2l0aW9uKTsKLSAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgIGJyZWFrOwotICAgICAgY2FzZSAnKSc6Ci0gICAgICAgICBpZihtX2ZsYWdzICYgbmRuYm9vc3Q6OnJlZ2V4X2NvbnN0YW50czo6Zm9ybWF0X2FsbCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgIH0KLSAgICAgICAgIHB1dCgqbV9wb3NpdGlvbik7Ci0gICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgJzonOgotICAgICAgICAgaWYoKG1fZmxhZ3MgJiBuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjpmb3JtYXRfYWxsKSAmJiBtX2hhdmVfY29uZGl0aW9uYWwpCi0gICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICB9Ci0gICAgICAgICBwdXQoKm1fcG9zaXRpb24pOwotICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlICc/JzoKLSAgICAgICAgIGlmKG1fZmxhZ3MgJiBuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjpmb3JtYXRfYWxsKQotICAgICAgICAgewotICAgICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgICAgZm9ybWF0X2NvbmRpdGlvbmFsKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgIH0KLSAgICAgICAgIHB1dCgqbV9wb3NpdGlvbik7Ci0gICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgJyQnOgotICAgICAgICAgaWYoKG1fZmxhZ3MgJiBmb3JtYXRfc2VkKSA9PSAwKQotICAgICAgICAgewotICAgICAgICAgICAgZm9ybWF0X3BlcmwoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgfQotICAgICAgICAgLy8gbm90IGEgc3BlY2lhbCBjaGFyYWN0ZXI6Ci0gICAgICAgICBORE5CT09TVF9GQUxMVEhST1VHSDsKLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICBwdXQoKm1fcG9zaXRpb24pOwotICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICB9Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBPdXRwdXRJdGVyYXRvciwgY2xhc3MgUmVzdWx0cywgY2xhc3MgdHJhaXRzLCBjbGFzcyBGb3J3YXJkSXRlcj4KLXZvaWQgYmFzaWNfcmVnZXhfZm9ybWF0dGVyPE91dHB1dEl0ZXJhdG9yLCBSZXN1bHRzLCB0cmFpdHMsIEZvcndhcmRJdGVyPjo6Zm9ybWF0X3BlcmwoKQotewotICAgLy8KLSAgIC8vIE9uIGVudHJ5ICptX3Bvc2l0aW9uIHBvaW50cyB0byBhICckJyBjaGFyYWN0ZXIKLSAgIC8vIG91dHB1dCB0aGUgaW5mb3JtYXRpb24gdGhhdCBnb2VzIHdpdGggaXQ6Ci0gICAvLwotICAgTkROQk9PU1RfQVNTRVJUKCptX3Bvc2l0aW9uID09ICckJyk7Ci0gICAvLwotICAgLy8gc2VlIGlmIHRoaXMgaXMgYSB0cmFpbGluZyAnJCc6Ci0gICAvLwotICAgaWYoKyttX3Bvc2l0aW9uID09IG1fZW5kKQotICAgewotICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgcHV0KCptX3Bvc2l0aW9uKTsKLSAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIHJldHVybjsKLSAgIH0KLSAgIC8vCi0gICAvLyBPSyBmaW5kIG91dCB3aGF0IGtpbmQgaXQgaXM6Ci0gICAvLwotICAgYm9vbCBoYXZlX2JyYWNlID0gZmFsc2U7Ci0gICBGb3J3YXJkSXRlciBzYXZlX3Bvc2l0aW9uID0gbV9wb3NpdGlvbjsKLSAgIHN3aXRjaCgqbV9wb3NpdGlvbikKLSAgIHsKLSAgIGNhc2UgJyYnOgotICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgcHV0KHRoaXMtPm1fcmVzdWx0c1swXSk7Ci0gICAgICBicmVhazsKLSAgIGNhc2UgJ2AnOgotICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgcHV0KHRoaXMtPm1fcmVzdWx0cy5wcmVmaXgoKSk7Ci0gICAgICBicmVhazsKLSAgIGNhc2UgJ1wnJzoKLSAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIHB1dCh0aGlzLT5tX3Jlc3VsdHMuc3VmZml4KCkpOwotICAgICAgYnJlYWs7Ci0gICBjYXNlICckJzoKLSAgICAgIHB1dCgqbV9wb3NpdGlvbisrKTsKLSAgICAgIGJyZWFrOwotICAgY2FzZSAnKyc6Ci0gICAgICBpZigoKyttX3Bvc2l0aW9uICE9IG1fZW5kKSAmJiAoKm1fcG9zaXRpb24gPT0gJ3snKSkKLSAgICAgIHsKLSAgICAgICAgIEZvcndhcmRJdGVyIGJhc2UgPSArK21fcG9zaXRpb247Ci0gICAgICAgICB3aGlsZSgobV9wb3NpdGlvbiAhPSBtX2VuZCkgJiYgKCptX3Bvc2l0aW9uICE9ICd9JykpICsrbV9wb3NpdGlvbjsKLSAgICAgICAgIGlmKG1fcG9zaXRpb24gIT0gbV9lbmQpCi0gICAgICAgICB7Ci0gICAgICAgICAgICAvLyBOYW1lZCBzdWItZXhwcmVzc2lvbjoKLSAgICAgICAgICAgIHB1dChnZXRfbmFtZWRfc3ViKGJhc2UsIG1fcG9zaXRpb24pKTsKLSAgICAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgfQotICAgICAgICAgZWxzZQotICAgICAgICAgewotICAgICAgICAgICAgbV9wb3NpdGlvbiA9IC0tYmFzZTsKLSAgICAgICAgIH0KLSAgICAgIH0KLSAgICAgIHB1dCgodGhpcy0+bV9yZXN1bHRzKVt0aGlzLT5tX3Jlc3VsdHMuc2l6ZSgpID4gMSA/IHN0YXRpY19jYXN0PGludD4odGhpcy0+bV9yZXN1bHRzLnNpemUoKSAtIDEpIDogMV0pOwotICAgICAgYnJlYWs7Ci0gICBjYXNlICd7JzoKLSAgICAgIGhhdmVfYnJhY2UgPSB0cnVlOwotICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgTkROQk9PU1RfRkFMTFRIUk9VR0g7Ci0gICBkZWZhdWx0OgotICAgICAgLy8gc2VlIGlmIHdlIGhhdmUgYSBudW1iZXI6Ci0gICAgICB7Ci0gICAgICAgICBzdGQ6OnB0cmRpZmZfdCBsZW4gPSA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmRpc3RhbmNlKG1fcG9zaXRpb24sIG1fZW5kKTsKLSAgICAgICAgIC8vbGVuID0gKHN0ZDo6bWluKShzdGF0aWNfY2FzdDxzdGQ6OnB0cmRpZmZfdD4oMiksIGxlbik7Ci0gICAgICAgICBpbnQgdiA9IHRoaXMtPnRvaShtX3Bvc2l0aW9uLCBtX3Bvc2l0aW9uICsgbGVuLCAxMCk7Ci0gICAgICAgICBpZigodiA8IDApIHx8IChoYXZlX2JyYWNlICYmICgobV9wb3NpdGlvbiA9PSBtX2VuZCkgfHwgKCptX3Bvc2l0aW9uICE9ICd9JykpKSkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIC8vIExvb2sgZm9yIGEgUGVybC01LjEwIHZlcmI6Ci0gICAgICAgICAgICBpZighaGFuZGxlX3BlcmxfdmVyYihoYXZlX2JyYWNlKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgIC8vIGxlYXZlIHRoZSAkIGFzIGlzLCBhbmQgY2Fycnkgb246Ci0gICAgICAgICAgICAgICBtX3Bvc2l0aW9uID0gLS1zYXZlX3Bvc2l0aW9uOwotICAgICAgICAgICAgICAgcHV0KCptX3Bvc2l0aW9uKTsKLSAgICAgICAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgfQotICAgICAgICAgLy8gb3RoZXJ3aXNlIG91dHB1dCBzdWIgdjoKLSAgICAgICAgIHB1dCh0aGlzLT5tX3Jlc3VsdHNbdl0pOwotICAgICAgICAgaWYoaGF2ZV9icmFjZSkKLSAgICAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIH0KLSAgIH0KLX0KLQotdGVtcGxhdGUgPGNsYXNzIE91dHB1dEl0ZXJhdG9yLCBjbGFzcyBSZXN1bHRzLCBjbGFzcyB0cmFpdHMsIGNsYXNzIEZvcndhcmRJdGVyPgotYm9vbCBiYXNpY19yZWdleF9mb3JtYXR0ZXI8T3V0cHV0SXRlcmF0b3IsIFJlc3VsdHMsIHRyYWl0cywgRm9yd2FyZEl0ZXI+OjpoYW5kbGVfcGVybF92ZXJiKGJvb2wgaGF2ZV9icmFjZSkKLXsKLSAgIC8vIAotICAgLy8gV2UgbWF5IGhhdmUgYSBjYXBpdGFsaXNlZCBzdHJpbmcgY29udGFpbmluZyBhIFBlcmwgYWN0aW9uOgotICAgLy8KLSAgIHN0YXRpYyBjb25zdCBjaGFyX3R5cGUgTUFUQ0hbXSA9IHsgJ00nLCAnQScsICdUJywgJ0MnLCAnSCcgfTsKLSAgIHN0YXRpYyBjb25zdCBjaGFyX3R5cGUgUFJFTUFUQ0hbXSA9IHsgJ1AnLCAnUicsICdFJywgJ00nLCAnQScsICdUJywgJ0MnLCAnSCcgfTsKLSAgIHN0YXRpYyBjb25zdCBjaGFyX3R5cGUgUE9TVE1BVENIW10gPSB7ICdQJywgJ08nLCAnUycsICdUJywgJ00nLCAnQScsICdUJywgJ0MnLCAnSCcgfTsKLSAgIHN0YXRpYyBjb25zdCBjaGFyX3R5cGUgTEFTVF9QQVJFTl9NQVRDSFtdID0geyAnTCcsICdBJywgJ1MnLCAnVCcsICdfJywgJ1AnLCAnQScsICdSJywgJ0UnLCAnTicsICdfJywgJ00nLCAnQScsICdUJywgJ0MnLCAnSCcgfTsKLSAgIHN0YXRpYyBjb25zdCBjaGFyX3R5cGUgTEFTVF9TVUJNQVRDSF9SRVNVTFRbXSA9IHsgJ0wnLCAnQScsICdTJywgJ1QnLCAnXycsICdTJywgJ1UnLCAnQicsICdNJywgJ0EnLCAnVCcsICdDJywgJ0gnLCAnXycsICdSJywgJ0UnLCAnUycsICdVJywgJ0wnLCAnVCcgfTsKLSAgIHN0YXRpYyBjb25zdCBjaGFyX3R5cGUgTEFTVF9TVUJNQVRDSF9SRVNVTFRfQUxUW10gPSB7ICdeJywgJ04nIH07Ci0KLSAgIGlmKG1fcG9zaXRpb24gPT0gbV9lbmQpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0gICBpZihoYXZlX2JyYWNlICYmICgqbV9wb3NpdGlvbiA9PSAnXicpKQotICAgICAgKyttX3Bvc2l0aW9uOwotCi0gICBzdGQ6OnB0cmRpZmZfdCBtYXhfbGVuID0gbV9lbmQgLSBtX3Bvc2l0aW9uOwotCi0gICBpZigobWF4X2xlbiA+PSA1KSAmJiBzdGQ6OmVxdWFsKG1fcG9zaXRpb24sIG1fcG9zaXRpb24gKyA1LCBNQVRDSCkpCi0gICB7Ci0gICAgICBtX3Bvc2l0aW9uICs9IDU7Ci0gICAgICBpZihoYXZlX2JyYWNlKQotICAgICAgewotICAgICAgICAgaWYoKG1fcG9zaXRpb24gIT0gbV9lbmQpICYmICgqbV9wb3NpdGlvbiA9PSAnfScpKQotICAgICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgZWxzZQotICAgICAgICAgewotICAgICAgICAgICAgbV9wb3NpdGlvbiAtPSA1OwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgfQotICAgICAgfQotICAgICAgcHV0KHRoaXMtPm1fcmVzdWx0c1swXSk7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgIH0KLSAgIGlmKChtYXhfbGVuID49IDgpICYmIHN0ZDo6ZXF1YWwobV9wb3NpdGlvbiwgbV9wb3NpdGlvbiArIDgsIFBSRU1BVENIKSkKLSAgIHsKLSAgICAgIG1fcG9zaXRpb24gKz0gODsKLSAgICAgIGlmKGhhdmVfYnJhY2UpCi0gICAgICB7Ci0gICAgICAgICBpZigobV9wb3NpdGlvbiAhPSBtX2VuZCkgJiYgKCptX3Bvc2l0aW9uID09ICd9JykpCi0gICAgICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICBlbHNlCi0gICAgICAgICB7Ci0gICAgICAgICAgICBtX3Bvc2l0aW9uIC09IDg7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBwdXQodGhpcy0+bV9yZXN1bHRzLnByZWZpeCgpKTsKLSAgICAgIHJldHVybiB0cnVlOwotICAgfQotICAgaWYoKG1heF9sZW4gPj0gOSkgJiYgc3RkOjplcXVhbChtX3Bvc2l0aW9uLCBtX3Bvc2l0aW9uICsgOSwgUE9TVE1BVENIKSkKLSAgIHsKLSAgICAgIG1fcG9zaXRpb24gKz0gOTsKLSAgICAgIGlmKGhhdmVfYnJhY2UpCi0gICAgICB7Ci0gICAgICAgICBpZigobV9wb3NpdGlvbiAhPSBtX2VuZCkgJiYgKCptX3Bvc2l0aW9uID09ICd9JykpCi0gICAgICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICBlbHNlCi0gICAgICAgICB7Ci0gICAgICAgICAgICBtX3Bvc2l0aW9uIC09IDk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBwdXQodGhpcy0+bV9yZXN1bHRzLnN1ZmZpeCgpKTsKLSAgICAgIHJldHVybiB0cnVlOwotICAgfQotICAgaWYoKG1heF9sZW4gPj0gMTYpICYmIHN0ZDo6ZXF1YWwobV9wb3NpdGlvbiwgbV9wb3NpdGlvbiArIDE2LCBMQVNUX1BBUkVOX01BVENIKSkKLSAgIHsKLSAgICAgIG1fcG9zaXRpb24gKz0gMTY7Ci0gICAgICBpZihoYXZlX2JyYWNlKQotICAgICAgewotICAgICAgICAgaWYoKG1fcG9zaXRpb24gIT0gbV9lbmQpICYmICgqbV9wb3NpdGlvbiA9PSAnfScpKQotICAgICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgZWxzZQotICAgICAgICAgewotICAgICAgICAgICAgbV9wb3NpdGlvbiAtPSAxNjsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgIH0KLSAgICAgIH0KLSAgICAgIHB1dCgodGhpcy0+bV9yZXN1bHRzKVt0aGlzLT5tX3Jlc3VsdHMuc2l6ZSgpID4gMSA/IHN0YXRpY19jYXN0PGludD4odGhpcy0+bV9yZXN1bHRzLnNpemUoKSAtIDEpIDogMV0pOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICB9Ci0gICBpZigobWF4X2xlbiA+PSAyMCkgJiYgc3RkOjplcXVhbChtX3Bvc2l0aW9uLCBtX3Bvc2l0aW9uICsgMjAsIExBU1RfU1VCTUFUQ0hfUkVTVUxUKSkKLSAgIHsKLSAgICAgIG1fcG9zaXRpb24gKz0gMjA7Ci0gICAgICBpZihoYXZlX2JyYWNlKQotICAgICAgewotICAgICAgICAgaWYoKG1fcG9zaXRpb24gIT0gbV9lbmQpICYmICgqbV9wb3NpdGlvbiA9PSAnfScpKQotICAgICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgZWxzZQotICAgICAgICAgewotICAgICAgICAgICAgbV9wb3NpdGlvbiAtPSAyMDsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgIH0KLSAgICAgIH0KLSAgICAgIHB1dCh0aGlzLT5tX3Jlc3VsdHMuZ2V0X2xhc3RfY2xvc2VkX3BhcmVuKCkpOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICB9Ci0gICBpZigobWF4X2xlbiA+PSAyKSAmJiBzdGQ6OmVxdWFsKG1fcG9zaXRpb24sIG1fcG9zaXRpb24gKyAyLCBMQVNUX1NVQk1BVENIX1JFU1VMVF9BTFQpKQotICAgewotICAgICAgbV9wb3NpdGlvbiArPSAyOwotICAgICAgaWYoaGF2ZV9icmFjZSkKLSAgICAgIHsKLSAgICAgICAgIGlmKChtX3Bvc2l0aW9uICE9IG1fZW5kKSAmJiAoKm1fcG9zaXRpb24gPT0gJ30nKSkKLSAgICAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgIGVsc2UKLSAgICAgICAgIHsKLSAgICAgICAgICAgIG1fcG9zaXRpb24gLT0gMjsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgIH0KLSAgICAgIH0KLSAgICAgIHB1dCh0aGlzLT5tX3Jlc3VsdHMuZ2V0X2xhc3RfY2xvc2VkX3BhcmVuKCkpOwotICAgICAgcmV0dXJuIHRydWU7Ci0gICB9Ci0gICByZXR1cm4gZmFsc2U7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBPdXRwdXRJdGVyYXRvciwgY2xhc3MgUmVzdWx0cywgY2xhc3MgdHJhaXRzLCBjbGFzcyBGb3J3YXJkSXRlcj4KLXZvaWQgYmFzaWNfcmVnZXhfZm9ybWF0dGVyPE91dHB1dEl0ZXJhdG9yLCBSZXN1bHRzLCB0cmFpdHMsIEZvcndhcmRJdGVyPjo6Zm9ybWF0X2VzY2FwZSgpCi17Ci0gICAvLyBza2lwIHRoZSBlc2NhcGUgYW5kIGNoZWNrIGZvciB0cmFpbGluZyBlc2NhcGU6Ci0gICBpZigrK21fcG9zaXRpb24gPT0gbV9lbmQpCi0gICB7Ci0gICAgICBwdXQoc3RhdGljX2Nhc3Q8Y2hhcl90eXBlPignXFwnKSk7Ci0gICAgICByZXR1cm47Ci0gICB9Ci0gICAvLyBub3cgc3dpdGNoIG9uIHRoZSBlc2NhcGUgdHlwZToKLSAgIHN3aXRjaCgqbV9wb3NpdGlvbikKLSAgIHsKLSAgIGNhc2UgJ2EnOgotICAgICAgcHV0KHN0YXRpY19jYXN0PGNoYXJfdHlwZT4oJ1xhJykpOwotICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgYnJlYWs7Ci0gICBjYXNlICdmJzoKLSAgICAgIHB1dChzdGF0aWNfY2FzdDxjaGFyX3R5cGU+KCdcZicpKTsKLSAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIGJyZWFrOwotICAgY2FzZSAnbic6Ci0gICAgICBwdXQoc3RhdGljX2Nhc3Q8Y2hhcl90eXBlPignXG4nKSk7Ci0gICAgICArK21fcG9zaXRpb247Ci0gICAgICBicmVhazsKLSAgIGNhc2UgJ3InOgotICAgICAgcHV0KHN0YXRpY19jYXN0PGNoYXJfdHlwZT4oJ1xyJykpOwotICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgYnJlYWs7Ci0gICBjYXNlICd0JzoKLSAgICAgIHB1dChzdGF0aWNfY2FzdDxjaGFyX3R5cGU+KCdcdCcpKTsKLSAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIGJyZWFrOwotICAgY2FzZSAndic6Ci0gICAgICBwdXQoc3RhdGljX2Nhc3Q8Y2hhcl90eXBlPignXHYnKSk7Ci0gICAgICArK21fcG9zaXRpb247Ci0gICAgICBicmVhazsKLSAgIGNhc2UgJ3gnOgotICAgICAgaWYoKyttX3Bvc2l0aW9uID09IG1fZW5kKQotICAgICAgewotICAgICAgICAgcHV0KHN0YXRpY19jYXN0PGNoYXJfdHlwZT4oJ3gnKSk7Ci0gICAgICAgICByZXR1cm47Ci0gICAgICB9Ci0gICAgICAvLyBtYXliZSBoYXZlIFx4e2RkZH0KLSAgICAgIGlmKCptX3Bvc2l0aW9uID09IHN0YXRpY19jYXN0PGNoYXJfdHlwZT4oJ3snKSkKLSAgICAgIHsKLSAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgIGludCB2YWwgPSB0aGlzLT50b2kobV9wb3NpdGlvbiwgbV9lbmQsIDE2KTsKLSAgICAgICAgIGlmKHZhbCA8IDApCi0gICAgICAgICB7Ci0gICAgICAgICAgICAvLyBpbnZhbGlkIHZhbHVlIHRyZWF0IGV2ZXJ5dGhpbmcgYXMgbGl0ZXJhbHM6Ci0gICAgICAgICAgICBwdXQoc3RhdGljX2Nhc3Q8Y2hhcl90eXBlPigneCcpKTsKLSAgICAgICAgICAgIHB1dChzdGF0aWNfY2FzdDxjaGFyX3R5cGU+KCd7JykpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgfQotICAgICAgICAgaWYoKG1fcG9zaXRpb24gPT0gbV9lbmQpIHx8ICgqbV9wb3NpdGlvbiAhPSBzdGF0aWNfY2FzdDxjaGFyX3R5cGU+KCd9JykpKQotICAgICAgICAgewotICAgICAgICAgICAgLS1tX3Bvc2l0aW9uOwotICAgICAgICAgICAgd2hpbGUoKm1fcG9zaXRpb24gIT0gc3RhdGljX2Nhc3Q8Y2hhcl90eXBlPignXFwnKSkKLSAgICAgICAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIHB1dCgqbV9wb3NpdGlvbisrKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgIH0KLSAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgIHB1dChzdGF0aWNfY2FzdDxjaGFyX3R5cGU+KHZhbCkpOwotICAgICAgICAgcmV0dXJuOwotICAgICAgfQotICAgICAgZWxzZQotICAgICAgewotICAgICAgICAgc3RkOjpwdHJkaWZmX3QgbGVuID0gOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpkaXN0YW5jZShtX3Bvc2l0aW9uLCBtX2VuZCk7Ci0gICAgICAgICBsZW4gPSAoc3RkOjptaW4pKHN0YXRpY19jYXN0PHN0ZDo6cHRyZGlmZl90PigyKSwgbGVuKTsKLSAgICAgICAgIGludCB2YWwgPSB0aGlzLT50b2kobV9wb3NpdGlvbiwgbV9wb3NpdGlvbiArIGxlbiwgMTYpOwotICAgICAgICAgaWYodmFsIDwgMCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIHB1dCgqbV9wb3NpdGlvbisrKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgIH0KLSAgICAgICAgIHB1dChzdGF0aWNfY2FzdDxjaGFyX3R5cGU+KHZhbCkpOwotICAgICAgfQotICAgICAgYnJlYWs7Ci0gICBjYXNlICdjJzoKLSAgICAgIGlmKCsrbV9wb3NpdGlvbiA9PSBtX2VuZCkKLSAgICAgIHsKLSAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgIHB1dCgqbV9wb3NpdGlvbisrKTsKLSAgICAgICAgIHJldHVybjsKLSAgICAgIH0KLSAgICAgIHB1dChzdGF0aWNfY2FzdDxjaGFyX3R5cGU+KCptX3Bvc2l0aW9uKysgJSAzMikpOwotICAgICAgYnJlYWs7Ci0gICBjYXNlICdlJzoKLSAgICAgIHB1dChzdGF0aWNfY2FzdDxjaGFyX3R5cGU+KDI3KSk7Ci0gICAgICArK21fcG9zaXRpb247Ci0gICAgICBicmVhazsKLSAgIGRlZmF1bHQ6Ci0gICAgICAvLyBzZWUgaWYgd2UgaGF2ZSBhIHBlcmwgc3BlY2lmaWMgZXNjYXBlOgotICAgICAgaWYoKG1fZmxhZ3MgJiBuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjpmb3JtYXRfc2VkKSA9PSAwKQotICAgICAgewotICAgICAgICAgYm9vbCBicmVha291dCA9IGZhbHNlOwotICAgICAgICAgc3dpdGNoKCptX3Bvc2l0aW9uKQotICAgICAgICAgewotICAgICAgICAgY2FzZSAnbCc6Ci0gICAgICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICAgICBtX3Jlc3RvcmVfc3RhdGUgPSBtX3N0YXRlOwotICAgICAgICAgICAgbV9zdGF0ZSA9IG91dHB1dF9uZXh0X2xvd2VyOwotICAgICAgICAgICAgYnJlYWtvdXQgPSB0cnVlOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICBjYXNlICdMJzoKLSAgICAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIG1fc3RhdGUgPSBvdXRwdXRfbG93ZXI7Ci0gICAgICAgICAgICBicmVha291dCA9IHRydWU7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgIGNhc2UgJ3UnOgotICAgICAgICAgICAgKyttX3Bvc2l0aW9uOwotICAgICAgICAgICAgbV9yZXN0b3JlX3N0YXRlID0gbV9zdGF0ZTsKLSAgICAgICAgICAgIG1fc3RhdGUgPSBvdXRwdXRfbmV4dF91cHBlcjsKLSAgICAgICAgICAgIGJyZWFrb3V0ID0gdHJ1ZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgY2FzZSAnVSc6Ci0gICAgICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICAgICBtX3N0YXRlID0gb3V0cHV0X3VwcGVyOwotICAgICAgICAgICAgYnJlYWtvdXQgPSB0cnVlOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICBjYXNlICdFJzoKLSAgICAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgICAgIG1fc3RhdGUgPSBvdXRwdXRfY29weTsKLSAgICAgICAgICAgIGJyZWFrb3V0ID0gdHJ1ZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgfQotICAgICAgICAgaWYoYnJlYWtvdXQpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICAgIC8vIHNlZSBpZiB3ZSBoYXZlIGEgXG4gc2VkIHN0eWxlIGJhY2tyZWZlcmVuY2U6Ci0gICAgICBzdGQ6OnB0cmRpZmZfdCBsZW4gPSA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmRpc3RhbmNlKG1fcG9zaXRpb24sIG1fZW5kKTsKLSAgICAgIGxlbiA9IChzdGQ6Om1pbikoc3RhdGljX2Nhc3Q8c3RkOjpwdHJkaWZmX3Q+KDEpLCBsZW4pOwotICAgICAgaW50IHYgPSB0aGlzLT50b2kobV9wb3NpdGlvbiwgbV9wb3NpdGlvbitsZW4sIDEwKTsKLSAgICAgIGlmKCh2ID4gMCkgfHwgKCh2ID09IDApICYmIChtX2ZsYWdzICYgOjpuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjpmb3JtYXRfc2VkKSkpCi0gICAgICB7Ci0gICAgICAgICBwdXQobV9yZXN1bHRzW3ZdKTsKLSAgICAgICAgIGJyZWFrOwotICAgICAgfQotICAgICAgZWxzZSBpZih2ID09IDApCi0gICAgICB7Ci0gICAgICAgICAvLyBvY3RhbCBlY2FwZSBzZXF1ZW5jZToKLSAgICAgICAgIC0tbV9wb3NpdGlvbjsKLSAgICAgICAgIGxlbiA9IDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6ZGlzdGFuY2UobV9wb3NpdGlvbiwgbV9lbmQpOwotICAgICAgICAgbGVuID0gKHN0ZDo6bWluKShzdGF0aWNfY2FzdDxzdGQ6OnB0cmRpZmZfdD4oNCksIGxlbik7Ci0gICAgICAgICB2ID0gdGhpcy0+dG9pKG1fcG9zaXRpb24sIG1fcG9zaXRpb24gKyBsZW4sIDgpOwotICAgICAgICAgTkROQk9PU1RfQVNTRVJUKHYgPj0gMCk7Ci0gICAgICAgICBwdXQoc3RhdGljX2Nhc3Q8Y2hhcl90eXBlPih2KSk7Ci0gICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICAgIC8vIE90aGVyd2lzZSBvdXRwdXQgdGhlIGNoYXJhY3RlciAiYXMgaXMiOgotICAgICAgcHV0KCptX3Bvc2l0aW9uKyspOwotICAgICAgYnJlYWs7Ci0gICB9Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBPdXRwdXRJdGVyYXRvciwgY2xhc3MgUmVzdWx0cywgY2xhc3MgdHJhaXRzLCBjbGFzcyBGb3J3YXJkSXRlcj4KLXZvaWQgYmFzaWNfcmVnZXhfZm9ybWF0dGVyPE91dHB1dEl0ZXJhdG9yLCBSZXN1bHRzLCB0cmFpdHMsIEZvcndhcmRJdGVyPjo6Zm9ybWF0X2NvbmRpdGlvbmFsKCkKLXsKLSAgIGlmKG1fcG9zaXRpb24gPT0gbV9lbmQpCi0gICB7Ci0gICAgICAvLyBvb3BzIHRyYWlsaW5nICc/JzoKLSAgICAgIHB1dChzdGF0aWNfY2FzdDxjaGFyX3R5cGU+KCc/JykpOwotICAgICAgcmV0dXJuOwotICAgfQotICAgaW50IHY7Ci0gICBpZigqbV9wb3NpdGlvbiA9PSAneycpCi0gICB7Ci0gICAgICBGb3J3YXJkSXRlciBiYXNlID0gbV9wb3NpdGlvbjsKLSAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgIHYgPSB0aGlzLT50b2kobV9wb3NpdGlvbiwgbV9lbmQsIDEwKTsKLSAgICAgIGlmKHYgPCAwKQotICAgICAgewotICAgICAgICAgLy8gVHJ5IGEgbmFtZWQgc3ViZXhwcmVzc2lvbjoKLSAgICAgICAgIHdoaWxlKChtX3Bvc2l0aW9uICE9IG1fZW5kKSAmJiAoKm1fcG9zaXRpb24gIT0gJ30nKSkKLSAgICAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgIHYgPSB0aGlzLT5nZXRfbmFtZWRfc3ViX2luZGV4KGJhc2UgKyAxLCBtX3Bvc2l0aW9uKTsKLSAgICAgIH0KLSAgICAgIGlmKCh2IDwgMCkgfHwgKCptX3Bvc2l0aW9uICE9ICd9JykpCi0gICAgICB7Ci0gICAgICAgICBtX3Bvc2l0aW9uID0gYmFzZTsKLSAgICAgICAgIC8vIG9vcHMgdHJhaWxpbmcgJz8nOgotICAgICAgICAgcHV0KHN0YXRpY19jYXN0PGNoYXJfdHlwZT4oJz8nKSk7Ci0gICAgICAgICByZXR1cm47Ci0gICAgICB9Ci0gICAgICAvLyBTa2lwIHRyYWlsaW5nICd9JzoKLSAgICAgICsrbV9wb3NpdGlvbjsKLSAgIH0KLSAgIGVsc2UKLSAgIHsKLSAgICAgIHN0ZDo6cHRyZGlmZl90IGxlbiA9IDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6ZGlzdGFuY2UobV9wb3NpdGlvbiwgbV9lbmQpOwotICAgICAgbGVuID0gKHN0ZDo6bWluKShzdGF0aWNfY2FzdDxzdGQ6OnB0cmRpZmZfdD4oMiksIGxlbik7Ci0gICAgICB2ID0gdGhpcy0+dG9pKG1fcG9zaXRpb24sIG1fcG9zaXRpb24gKyBsZW4sIDEwKTsKLSAgIH0KLSAgIGlmKHYgPCAwKQotICAgewotICAgICAgLy8gb29wcyBub3QgYSBudW1iZXI6Ci0gICAgICBwdXQoc3RhdGljX2Nhc3Q8Y2hhcl90eXBlPignPycpKTsKLSAgICAgIHJldHVybjsKLSAgIH0KLQotICAgLy8gb3V0cHV0IHZhcmllcyBkZXBlbmRpbmcgdXBvbiB3aGV0aGVyIHN1Yi1leHByZXNzaW9uIHYgbWF0Y2hlZCBvciBub3Q6Ci0gICBpZihtX3Jlc3VsdHNbdl0ubWF0Y2hlZCkKLSAgIHsKLSAgICAgIG1faGF2ZV9jb25kaXRpb25hbCA9IHRydWU7Ci0gICAgICBmb3JtYXRfYWxsKCk7Ci0gICAgICBtX2hhdmVfY29uZGl0aW9uYWwgPSBmYWxzZTsKLSAgICAgIGlmKChtX3Bvc2l0aW9uICE9IG1fZW5kKSAmJiAoKm1fcG9zaXRpb24gPT0gc3RhdGljX2Nhc3Q8Y2hhcl90eXBlPignOicpKSkKLSAgICAgIHsKLSAgICAgICAgIC8vIHNraXAgdGhlICc6JzoKLSAgICAgICAgICsrbV9wb3NpdGlvbjsKLSAgICAgICAgIC8vIHNhdmUgb3V0cHV0IHN0YXRlLCB0aGVuIHR1cm4gaXQgb2ZmOgotICAgICAgICAgb3V0cHV0X3N0YXRlIHNhdmVkX3N0YXRlID0gbV9zdGF0ZTsKLSAgICAgICAgIG1fc3RhdGUgPSBvdXRwdXRfbm9uZTsKLSAgICAgICAgIC8vIGZvcm1hdCB0aGUgcmVzdCBvZiB0aGlzIHNjb3BlOgotICAgICAgICAgZm9ybWF0X3VudGlsX3Njb3BlX2VuZCgpOwotICAgICAgICAgLy8gcmVzdG9yZSBvdXRwdXQgc3RhdGU6Ci0gICAgICAgICBtX3N0YXRlID0gc2F2ZWRfc3RhdGU7Ci0gICAgICB9Ci0gICB9Ci0gICBlbHNlCi0gICB7Ci0gICAgICAvLyBzYXZlIG91dHB1dCBzdGF0ZSwgdGhlbiB0dXJuIGl0IG9mZjoKLSAgICAgIG91dHB1dF9zdGF0ZSBzYXZlZF9zdGF0ZSA9IG1fc3RhdGU7Ci0gICAgICBtX3N0YXRlID0gb3V0cHV0X25vbmU7Ci0gICAgICAvLyBmb3JtYXQgdW50aWwgJzonIG9yICcpJzoKLSAgICAgIG1faGF2ZV9jb25kaXRpb25hbCA9IHRydWU7Ci0gICAgICBmb3JtYXRfYWxsKCk7Ci0gICAgICBtX2hhdmVfY29uZGl0aW9uYWwgPSBmYWxzZTsKLSAgICAgIC8vIHJlc3RvcmUgc3RhdGU6Ci0gICAgICBtX3N0YXRlID0gc2F2ZWRfc3RhdGU7Ci0gICAgICBpZigobV9wb3NpdGlvbiAhPSBtX2VuZCkgJiYgKCptX3Bvc2l0aW9uID09IHN0YXRpY19jYXN0PGNoYXJfdHlwZT4oJzonKSkpCi0gICAgICB7Ci0gICAgICAgICAvLyBza2lwIHRoZSAnOic6Ci0gICAgICAgICArK21fcG9zaXRpb247Ci0gICAgICAgICAvLyBmb3JtYXQgdGhlIHJlc3Qgb2YgdGhpcyBzY29wZToKLSAgICAgICAgIGZvcm1hdF91bnRpbF9zY29wZV9lbmQoKTsKLSAgICAgIH0KLSAgIH0KLX0KLQotdGVtcGxhdGUgPGNsYXNzIE91dHB1dEl0ZXJhdG9yLCBjbGFzcyBSZXN1bHRzLCBjbGFzcyB0cmFpdHMsIGNsYXNzIEZvcndhcmRJdGVyPgotdm9pZCBiYXNpY19yZWdleF9mb3JtYXR0ZXI8T3V0cHV0SXRlcmF0b3IsIFJlc3VsdHMsIHRyYWl0cywgRm9yd2FyZEl0ZXI+Ojpmb3JtYXRfdW50aWxfc2NvcGVfZW5kKCkKLXsKLSAgIGRvCi0gICB7Ci0gICAgICBmb3JtYXRfYWxsKCk7Ci0gICAgICBpZigobV9wb3NpdGlvbiA9PSBtX2VuZCkgfHwgKCptX3Bvc2l0aW9uID09IHN0YXRpY19jYXN0PGNoYXJfdHlwZT4oJyknKSkpCi0gICAgICAgICByZXR1cm47Ci0gICAgICBwdXQoKm1fcG9zaXRpb24rKyk7Ci0gICB9d2hpbGUobV9wb3NpdGlvbiAhPSBtX2VuZCk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBPdXRwdXRJdGVyYXRvciwgY2xhc3MgUmVzdWx0cywgY2xhc3MgdHJhaXRzLCBjbGFzcyBGb3J3YXJkSXRlcj4KLXZvaWQgYmFzaWNfcmVnZXhfZm9ybWF0dGVyPE91dHB1dEl0ZXJhdG9yLCBSZXN1bHRzLCB0cmFpdHMsIEZvcndhcmRJdGVyPjo6cHV0KGNoYXJfdHlwZSBjKQotewotICAgLy8gd3JpdGUgYSBzaW5nbGUgY2hhcmFjdGVyIHRvIG91dHB1dAotICAgLy8gYWNjb3JkaW5nIHRvIHdoaWNoIGNhc2UgdHJhbnNsYXRpb24gbW9kZSB3ZSBhcmUgaW46Ci0gICBzd2l0Y2godGhpcy0+bV9zdGF0ZSkKLSAgIHsKLSAgIGNhc2Ugb3V0cHV0X25vbmU6Ci0gICAgICByZXR1cm47Ci0gICBjYXNlIG91dHB1dF9uZXh0X2xvd2VyOgotICAgICAgYyA9IG1fdHJhaXRzLnRvbG93ZXIoYyk7Ci0gICAgICB0aGlzLT5tX3N0YXRlID0gbV9yZXN0b3JlX3N0YXRlOwotICAgICAgYnJlYWs7Ci0gICBjYXNlIG91dHB1dF9uZXh0X3VwcGVyOgotICAgICAgYyA9IG1fdHJhaXRzLnRvdXBwZXIoYyk7Ci0gICAgICB0aGlzLT5tX3N0YXRlID0gbV9yZXN0b3JlX3N0YXRlOwotICAgICAgYnJlYWs7Ci0gICBjYXNlIG91dHB1dF9sb3dlcjoKLSAgICAgIGMgPSBtX3RyYWl0cy50b2xvd2VyKGMpOwotICAgICAgYnJlYWs7Ci0gICBjYXNlIG91dHB1dF91cHBlcjoKLSAgICAgIGMgPSBtX3RyYWl0cy50b3VwcGVyKGMpOwotICAgICAgYnJlYWs7Ci0gICBkZWZhdWx0OgotICAgICAgYnJlYWs7Ci0gICB9Ci0gICAqbV9vdXQgPSBjOwotICAgKyttX291dDsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIE91dHB1dEl0ZXJhdG9yLCBjbGFzcyBSZXN1bHRzLCBjbGFzcyB0cmFpdHMsIGNsYXNzIEZvcndhcmRJdGVyPgotdm9pZCBiYXNpY19yZWdleF9mb3JtYXR0ZXI8T3V0cHV0SXRlcmF0b3IsIFJlc3VsdHMsIHRyYWl0cywgRm9yd2FyZEl0ZXI+OjpwdXQoY29uc3Qgc3ViX21hdGNoX3R5cGUmIHN1YikKLXsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgc3ViX21hdGNoX3R5cGU6Oml0ZXJhdG9yIGl0ZXJhdG9yX3R5cGU7Ci0gICBpdGVyYXRvcl90eXBlIGkgPSBzdWIuZmlyc3Q7Ci0gICB3aGlsZShpICE9IHN1Yi5zZWNvbmQpCi0gICB7Ci0gICAgICBwdXQoKmkpOwotICAgICAgKytpOwotICAgfQotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgUz4KLWNsYXNzIHN0cmluZ19vdXRfaXRlcmF0b3IKLSNpZm5kZWYgTkROQk9PU1RfTk9fU1REX0lURVJBVE9SCi0gICA6IHB1YmxpYyBzdGQ6Oml0ZXJhdG9yPHN0ZDo6b3V0cHV0X2l0ZXJhdG9yX3RhZywgdHlwZW5hbWUgUzo6dmFsdWVfdHlwZT4KLSNlbmRpZgotewotICAgUyogb3V0OwotcHVibGljOgotICAgc3RyaW5nX291dF9pdGVyYXRvcihTJiBzKSA6IG91dCgmcykge30KLSAgIHN0cmluZ19vdXRfaXRlcmF0b3ImIG9wZXJhdG9yKysoKSB7IHJldHVybiAqdGhpczsgfQotICAgc3RyaW5nX291dF9pdGVyYXRvciYgb3BlcmF0b3IrKyhpbnQpIHsgcmV0dXJuICp0aGlzOyB9Ci0gICBzdHJpbmdfb3V0X2l0ZXJhdG9yJiBvcGVyYXRvciooKSB7IHJldHVybiAqdGhpczsgfQotICAgc3RyaW5nX291dF9pdGVyYXRvciYgb3BlcmF0b3I9KHR5cGVuYW1lIFM6OnZhbHVlX3R5cGUgdikgCi0gICB7IAotICAgICAgb3V0LT5hcHBlbmQoMSwgdik7IAotICAgICAgcmV0dXJuICp0aGlzOyAKLSAgIH0KLQotI2lmZGVmIE5ETkJPT1NUX05PX1NURF9JVEVSQVRPUgotICAgdHlwZWRlZiBzdGQ6OnB0cmRpZmZfdCBkaWZmZXJlbmNlX3R5cGU7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIFM6OnZhbHVlX3R5cGUgdmFsdWVfdHlwZTsKLSAgIHR5cGVkZWYgdmFsdWVfdHlwZSogcG9pbnRlcjsKLSAgIHR5cGVkZWYgdmFsdWVfdHlwZSYgcmVmZXJlbmNlOwotICAgdHlwZWRlZiBzdGQ6Om91dHB1dF9pdGVyYXRvcl90YWcgaXRlcmF0b3JfY2F0ZWdvcnk7Ci0jZW5kaWYKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBPdXRwdXRJdGVyYXRvciwgY2xhc3MgSXRlcmF0b3IsIGNsYXNzIEFsbG9jLCBjbGFzcyBGb3J3YXJkSXRlciwgY2xhc3MgdHJhaXRzPgotT3V0cHV0SXRlcmF0b3IgcmVnZXhfZm9ybWF0X2ltcChPdXRwdXRJdGVyYXRvciBvdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG1hdGNoX3Jlc3VsdHM8SXRlcmF0b3IsIEFsbG9jPiYgbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yd2FyZEl0ZXIgcDEsIEZvcndhcmRJdGVyIHAyLAotICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRyYWl0cyYgdAotICAgICAgICAgICAgICAgICAgICAgICAgICkKLXsKLSAgIGlmKGZsYWdzICYgcmVnZXhfY29uc3RhbnRzOjpmb3JtYXRfbGl0ZXJhbCkKLSAgIHsKLSAgICAgIHJldHVybiByZV9kZXRhaWw6OmNvcHkocDEsIHAyLCBvdXQpOwotICAgfQotCi0gICByZV9kZXRhaWw6OmJhc2ljX3JlZ2V4X2Zvcm1hdHRlcjwKLSAgICAgIE91dHB1dEl0ZXJhdG9yLCAKLSAgICAgIG1hdGNoX3Jlc3VsdHM8SXRlcmF0b3IsIEFsbG9jPiwgCi0gICAgICB0cmFpdHMsIEZvcndhcmRJdGVyPiBmKG91dCwgbSwgdCk7Ci0gICByZXR1cm4gZi5mb3JtYXQocDEsIHAyLCBmbGFncyk7Ci19Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fU0ZJTkFFCi0KLU5ETkJPT1NUX01QTF9IQVNfWFhYX1RSQUlUX0RFRihjb25zdF9pdGVyYXRvcikKLQotc3RydWN0IGFueV90eXBlIAotewotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICBhbnlfdHlwZShjb25zdCBUJik7IAotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFU+Ci0gICBhbnlfdHlwZShjb25zdCBUJiwgY29uc3QgVSYpOyAKLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVLCBjbGFzcyBWPgotICAgYW55X3R5cGUoY29uc3QgVCYsIGNvbnN0IFUmLCBjb25zdCBWJik7IAotfTsKLXR5cGVkZWYgY2hhciBub190eXBlOwotdHlwZWRlZiBjaGFyICgmdW5hcnlfdHlwZSlbMl07Ci10eXBlZGVmIGNoYXIgKCZiaW5hcnlfdHlwZSlbM107Ci10eXBlZGVmIGNoYXIgKCZ0ZXJuYXJ5X3R5cGUpWzRdOwotCi1ub190eXBlIGNoZWNrX2lzX2Zvcm1hdHRlcih1bmFyeV90eXBlLCBiaW5hcnlfdHlwZSwgdGVybmFyeV90eXBlKTsKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci11bmFyeV90eXBlIGNoZWNrX2lzX2Zvcm1hdHRlcihUIGNvbnN0ICYsIGJpbmFyeV90eXBlLCB0ZXJuYXJ5X3R5cGUpOwotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWJpbmFyeV90eXBlIGNoZWNrX2lzX2Zvcm1hdHRlcih1bmFyeV90eXBlLCBUIGNvbnN0ICYsIHRlcm5hcnlfdHlwZSk7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgotYmluYXJ5X3R5cGUgY2hlY2tfaXNfZm9ybWF0dGVyKFQgY29uc3QgJiwgVSBjb25zdCAmLCB0ZXJuYXJ5X3R5cGUpOwotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXRlcm5hcnlfdHlwZSBjaGVja19pc19mb3JtYXR0ZXIodW5hcnlfdHlwZSwgYmluYXJ5X3R5cGUsIFQgY29uc3QgJik7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgotdGVybmFyeV90eXBlIGNoZWNrX2lzX2Zvcm1hdHRlcihUIGNvbnN0ICYsIGJpbmFyeV90eXBlLCBVIGNvbnN0ICYpOwotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLXRlcm5hcnlfdHlwZSBjaGVja19pc19mb3JtYXR0ZXIodW5hcnlfdHlwZSwgVCBjb25zdCAmLCBVIGNvbnN0ICYpOwotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4KLXRlcm5hcnlfdHlwZSBjaGVja19pc19mb3JtYXR0ZXIoVCBjb25zdCAmLCBVIGNvbnN0ICYsIFYgY29uc3QgJik7Ci0KLXN0cnVjdCB1bmFyeV9iaW5hcnlfdGVybmFyeQotewotICAgIHR5cGVkZWYgdW5hcnlfdHlwZSAoKnVuYXJ5X2Z1bikoYW55X3R5cGUpOwotICAgIHR5cGVkZWYgYmluYXJ5X3R5cGUgKCpiaW5hcnlfZnVuKShhbnlfdHlwZSwgYW55X3R5cGUpOwotICAgIHR5cGVkZWYgdGVybmFyeV90eXBlICgqdGVybmFyeV9mdW4pKGFueV90eXBlLCBhbnlfdHlwZSwgYW55X3R5cGUpOwotICAgIG9wZXJhdG9yIHVuYXJ5X2Z1bigpOwotICAgIG9wZXJhdG9yIGJpbmFyeV9mdW4oKTsKLSAgICBvcGVyYXRvciB0ZXJuYXJ5X2Z1bigpOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgRm9ybWF0dGVyLCBib29sIElzRnVuY3Rpb24gPSBuZG5ib29zdDo6aXNfZnVuY3Rpb248Rm9ybWF0dGVyPjo6dmFsdWU+Ci1zdHJ1Y3QgZm9ybWF0dGVyX3dyYXBwZXIKLSAgOiBGb3JtYXR0ZXIKLSAgLCB1bmFyeV9iaW5hcnlfdGVybmFyeQotewotICAgZm9ybWF0dGVyX3dyYXBwZXIoKXt9Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGb3JtYXR0ZXI+Ci1zdHJ1Y3QgZm9ybWF0dGVyX3dyYXBwZXI8Rm9ybWF0dGVyLCB0cnVlPgotICA6IHVuYXJ5X2JpbmFyeV90ZXJuYXJ5Ci17Ci0gICAgb3BlcmF0b3IgRm9ybWF0dGVyICooKTsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEZvcm1hdHRlcj4KLXN0cnVjdCBmb3JtYXR0ZXJfd3JhcHBlcjxGb3JtYXR0ZXIgKiwgZmFsc2U+Ci0gIDogdW5hcnlfYmluYXJ5X3Rlcm5hcnkKLXsKLSAgICBvcGVyYXRvciBGb3JtYXR0ZXIgKigpOwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIEYsIGNsYXNzIE0sIGNsYXNzIE8+Ci1zdHJ1Y3QgZm9ybWF0X3RyYWl0c19pbXAKLXsKLXByaXZhdGU6Ci0gICAvLwotICAgLy8gRiBtdXN0IGJlIGEgcG9pbnRlciwgYSBmdW5jdGlvbiwgb3IgYSBjbGFzcyB3aXRoIGEgZnVuY3Rpb24gY2FsbCBvcGVyYXRvcjoKLSAgIC8vCi0gICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKCg6Om5kbmJvb3N0Ojppc19wb2ludGVyPEY+Ojp2YWx1ZSB8fCA6Om5kbmJvb3N0Ojppc19mdW5jdGlvbjxGPjo6dmFsdWUgfHwgOjpuZG5ib29zdDo6aXNfY2xhc3M8Rj46OnZhbHVlKSk7Ci0gICBzdGF0aWMgZm9ybWF0dGVyX3dyYXBwZXI8dHlwZW5hbWUgdW53cmFwX3JlZmVyZW5jZTxGPjo6dHlwZT4gZjsKLSAgIHN0YXRpYyBNIG07Ci0gICBzdGF0aWMgTyBvdXQ7Ci0gICBzdGF0aWMgbmRuYm9vc3Q6OnJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZmxhZ190eXBlIGZsYWdzOwotcHVibGljOgotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPSBzaXplb2YoY2hlY2tfaXNfZm9ybWF0dGVyKGYobSksIGYobSwgb3V0KSwgZihtLCBvdXQsIGZsYWdzKSkpKTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBGLCBjbGFzcyBNLCBjbGFzcyBPPgotc3RydWN0IGZvcm1hdF90cmFpdHMKLXsKLXB1YmxpYzoKLSAgIC8vIAotICAgLy8gVHlwZSBpcyBtcGw6OmludF88Tj4gd2hlcmUgTiBpcyBvbmUgb2Y6Ci0gICAvLwotICAgLy8gMCA6IEYgaXMgYSBwb2ludGVyIHRvIGEgcHJlc3VtYWJseSBudWxsLXRlcm1pbmF0ZWQgc3RyaW5nLgotICAgLy8gMSA6IEYgaXMgYSBjaGFyYWN0ZXItY29udGFpbmVyIHN1Y2ggYXMgYSBzdGQ6OnN0cmluZy4KLSAgIC8vIDIgOiBGIGlzIGEgVW5hcnkgRnVuY3Rvci4KLSAgIC8vIDMgOiBGIGlzIGEgQmluYXJ5IEZ1bmN0b3IuCi0gICAvLyA0IDogRiBpcyBhIFRlcm5hcnkgRnVuY3Rvci4KLSAgIC8vCi0gICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjptcGw6OmlmXzwKLSAgICAgIG5kbmJvb3N0OjptcGw6OmFuZF88bmRuYm9vc3Q6OmlzX3BvaW50ZXI8Rj4sIG5kbmJvb3N0OjptcGw6Om5vdF88bmRuYm9vc3Q6OmlzX2Z1bmN0aW9uPHR5cGVuYW1lIG5kbmJvb3N0OjpyZW1vdmVfcG9pbnRlcjxGPjo6dHlwZT4gPiA+LAotICAgICAgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiwKLSAgICAgIHR5cGVuYW1lIG5kbmJvb3N0OjptcGw6OmlmXzwKLSAgICAgICAgIGhhc19jb25zdF9pdGVyYXRvcjxGPiwKLSAgICAgICAgIG5kbmJvb3N0OjptcGw6OmludF88MT4sCi0gICAgICAgICBuZG5ib29zdDo6bXBsOjppbnRfPGZvcm1hdF90cmFpdHNfaW1wPEYsIE0sIE8+Ojp2YWx1ZT4KLSAgICAgID46OnR5cGUKLSAgID46OnR5cGUgdHlwZTsKLSAgIC8vCi0gICAvLyBUaGlzIHN0YXRpYyBhc3NlcnRpb24gd2lsbCBmYWlsIGlmIHRoZSBmdW5jdG9yIHBhc3NlZCBkb2VzIG5vdCBhY2NlcHQKLSAgIC8vIHRoZSBzYW1lIHR5cGUgb2YgYXJndW1lbnRzIHBhc3NlZC4KLSAgIC8vCi0gICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKCBuZG5ib29zdDo6aXNfY2xhc3M8Rj46OnZhbHVlICYmICFoYXNfY29uc3RfaXRlcmF0b3I8Rj46OnZhbHVlID8gKHR5cGU6OnZhbHVlID4gMSkgOiB0cnVlKTsKLX07Ci0KLSNlbHNlIC8vIE5ETkJPT1NUX05PX1NGSU5BRQotCi10ZW1wbGF0ZSA8Y2xhc3MgRiwgY2xhc3MgTSwgY2xhc3MgTz4KLXN0cnVjdCBmb3JtYXRfdHJhaXRzCi17Ci1wdWJsaWM6Ci0gICAvLyAKLSAgIC8vIFR5cGUgaXMgbXBsOjppbnRfPE4+IHdoZXJlIE4gaXMgb25lIG9mOgotICAgLy8KLSAgIC8vIDAgOiBGIGlzIGEgcG9pbnRlciB0byBhIHByZXN1bWFibHkgbnVsbC10ZXJtaW5hdGVkIHN0cmluZy4KLSAgIC8vIDEgOiBGIGlzIGEgY2hhcmFjdGVyLWNvbnRhaW5lciBzdWNoIGFzIGEgc3RkOjpzdHJpbmcuCi0gICAvLwotICAgLy8gT3RoZXIgb3B0aW9ucyBzdWNoIGFzIEYgYmVpbmcgYSBGdW5jdG9yIGFyZSBub3Qgc3VwcG9ydGVkIHdpdGhvdXQKLSAgIC8vIFNGSU5BRSBzdXBwb3J0LgotICAgLy8KLSAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6Om1wbDo6aWZfPAotICAgICAgbmRuYm9vc3Q6OmlzX3BvaW50ZXI8Rj4sCi0gICAgICBuZG5ib29zdDo6bXBsOjppbnRfPDA+LAotICAgICAgbmRuYm9vc3Q6Om1wbDo6aW50XzwxPgotICAgPjo6dHlwZSB0eXBlOwotfTsKLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1NGSU5BRQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmFzZSwgY2xhc3MgTWF0Y2g+Ci1zdHJ1Y3QgZm9ybWF0X2Z1bmN0b3IzCi17Ci0gICBmb3JtYXRfZnVuY3RvcjMoQmFzZSBiKSA6IGZ1bmMoYikge30KLSAgIHRlbXBsYXRlIDxjbGFzcyBPdXRwdXRJdGVyPgotICAgT3V0cHV0SXRlciBvcGVyYXRvcigpKGNvbnN0IE1hdGNoJiBtLCBPdXRwdXRJdGVyIGksIG5kbmJvb3N0OjpyZWdleF9jb25zdGFudHM6Om1hdGNoX2ZsYWdfdHlwZSBmKQotICAgewotICAgICAgcmV0dXJuIG5kbmJvb3N0Ojp1bndyYXBfcmVmKGZ1bmMpKG0sIGksIGYpOwotICAgfQotICAgdGVtcGxhdGUgPGNsYXNzIE91dHB1dEl0ZXIsIGNsYXNzIFRyYWl0cz4KLSAgIE91dHB1dEl0ZXIgb3BlcmF0b3IoKShjb25zdCBNYXRjaCYgbSwgT3V0cHV0SXRlciBpLCBuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjptYXRjaF9mbGFnX3R5cGUgZiwgY29uc3QgVHJhaXRzJikKLSAgIHsKLSAgICAgIHJldHVybiAoKnRoaXMpKG0sIGksIGYpOwotICAgfQotcHJpdmF0ZToKLSAgIEJhc2UgZnVuYzsKLSAgIGZvcm1hdF9mdW5jdG9yMyhjb25zdCBmb3JtYXRfZnVuY3RvcjMmKTsKLSAgIGZvcm1hdF9mdW5jdG9yMyYgb3BlcmF0b3I9KGNvbnN0IGZvcm1hdF9mdW5jdG9yMyYpOwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIEJhc2UsIGNsYXNzIE1hdGNoPgotc3RydWN0IGZvcm1hdF9mdW5jdG9yMgotewotICAgZm9ybWF0X2Z1bmN0b3IyKEJhc2UgYikgOiBmdW5jKGIpIHt9Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgT3V0cHV0SXRlcj4KLSAgIE91dHB1dEl0ZXIgb3BlcmF0b3IoKShjb25zdCBNYXRjaCYgbSwgT3V0cHV0SXRlciBpLCBuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjptYXRjaF9mbGFnX3R5cGUgLypmKi8pCi0gICB7Ci0gICAgICByZXR1cm4gbmRuYm9vc3Q6OnVud3JhcF9yZWYoZnVuYykobSwgaSk7Ci0gICB9Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgT3V0cHV0SXRlciwgY2xhc3MgVHJhaXRzPgotICAgT3V0cHV0SXRlciBvcGVyYXRvcigpKGNvbnN0IE1hdGNoJiBtLCBPdXRwdXRJdGVyIGksIG5kbmJvb3N0OjpyZWdleF9jb25zdGFudHM6Om1hdGNoX2ZsYWdfdHlwZSBmLCBjb25zdCBUcmFpdHMmKQotICAgewotICAgICAgcmV0dXJuICgqdGhpcykobSwgaSwgZik7Ci0gICB9Ci1wcml2YXRlOgotICAgQmFzZSBmdW5jOwotICAgZm9ybWF0X2Z1bmN0b3IyKGNvbnN0IGZvcm1hdF9mdW5jdG9yMiYpOwotICAgZm9ybWF0X2Z1bmN0b3IyJiBvcGVyYXRvcj0oY29uc3QgZm9ybWF0X2Z1bmN0b3IyJik7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgQmFzZSwgY2xhc3MgTWF0Y2g+Ci1zdHJ1Y3QgZm9ybWF0X2Z1bmN0b3IxCi17Ci0gICBmb3JtYXRfZnVuY3RvcjEoQmFzZSBiKSA6IGZ1bmMoYikge30KLQotICAgdGVtcGxhdGUgPGNsYXNzIFMsIGNsYXNzIE91dHB1dEl0ZXI+Ci0gICBPdXRwdXRJdGVyIGRvX2Zvcm1hdF9zdHJpbmcoY29uc3QgUyYgcywgT3V0cHV0SXRlciBpKQotICAgewotICAgICAgcmV0dXJuIHJlX2RldGFpbDo6Y29weShzLmJlZ2luKCksIHMuZW5kKCksIGkpOwotICAgfQotICAgdGVtcGxhdGUgPGNsYXNzIFMsIGNsYXNzIE91dHB1dEl0ZXI+Ci0gICBpbmxpbmUgT3V0cHV0SXRlciBkb19mb3JtYXRfc3RyaW5nKGNvbnN0IFMqIHMsIE91dHB1dEl0ZXIgaSkKLSAgIHsKLSAgICAgIHdoaWxlKHMgJiYgKnMpCi0gICAgICB7Ci0gICAgICAgICAqaSA9ICpzOwotICAgICAgICAgKytpOwotICAgICAgICAgKytzOwotICAgICAgfQotICAgICAgcmV0dXJuIGk7Ci0gICB9Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgT3V0cHV0SXRlcj4KLSAgIE91dHB1dEl0ZXIgb3BlcmF0b3IoKShjb25zdCBNYXRjaCYgbSwgT3V0cHV0SXRlciBpLCBuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjptYXRjaF9mbGFnX3R5cGUgLypmKi8pCi0gICB7Ci0gICAgICByZXR1cm4gZG9fZm9ybWF0X3N0cmluZyhuZG5ib29zdDo6dW53cmFwX3JlZihmdW5jKShtKSwgaSk7Ci0gICB9Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgT3V0cHV0SXRlciwgY2xhc3MgVHJhaXRzPgotICAgT3V0cHV0SXRlciBvcGVyYXRvcigpKGNvbnN0IE1hdGNoJiBtLCBPdXRwdXRJdGVyIGksIG5kbmJvb3N0OjpyZWdleF9jb25zdGFudHM6Om1hdGNoX2ZsYWdfdHlwZSBmLCBjb25zdCBUcmFpdHMmKQotICAgewotICAgICAgcmV0dXJuICgqdGhpcykobSwgaSwgZik7Ci0gICB9Ci1wcml2YXRlOgotICAgQmFzZSBmdW5jOwotICAgZm9ybWF0X2Z1bmN0b3IxKGNvbnN0IGZvcm1hdF9mdW5jdG9yMSYpOwotICAgZm9ybWF0X2Z1bmN0b3IxJiBvcGVyYXRvcj0oY29uc3QgZm9ybWF0X2Z1bmN0b3IxJik7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIE1hdGNoLCBjbGFzcyBUcmFpdHM+Ci1zdHJ1Y3QgZm9ybWF0X2Z1bmN0b3JfY19zdHJpbmcKLXsKLSAgIGZvcm1hdF9mdW5jdG9yX2Nfc3RyaW5nKGNvbnN0IGNoYXJUKiBwcykgOiBmdW5jKHBzKSB7fQotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgT3V0cHV0SXRlcj4KLSAgIE91dHB1dEl0ZXIgb3BlcmF0b3IoKShjb25zdCBNYXRjaCYgbSwgT3V0cHV0SXRlciBpLCBuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjptYXRjaF9mbGFnX3R5cGUgZiwgY29uc3QgVHJhaXRzJiB0ID0gVHJhaXRzKCkpCi0gICB7Ci0gICAgICAvL3R5cGVkZWYgdHlwZW5hbWUgTWF0Y2g6OmNoYXJfdHlwZSBjaGFyX3R5cGU7Ci0gICAgICBjb25zdCBjaGFyVCogZW5kID0gZnVuYzsKLSAgICAgIHdoaWxlKCplbmQpICsrZW5kOwotICAgICAgcmV0dXJuIHJlZ2V4X2Zvcm1hdF9pbXAoaSwgbSwgZnVuYywgZW5kLCBmLCB0KTsKLSAgIH0KLXByaXZhdGU6Ci0gICBjb25zdCBjaGFyVCogZnVuYzsKLSAgIGZvcm1hdF9mdW5jdG9yX2Nfc3RyaW5nKGNvbnN0IGZvcm1hdF9mdW5jdG9yX2Nfc3RyaW5nJik7Ci0gICBmb3JtYXRfZnVuY3Rvcl9jX3N0cmluZyYgb3BlcmF0b3I9KGNvbnN0IGZvcm1hdF9mdW5jdG9yX2Nfc3RyaW5nJik7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgQ29udGFpbmVyLCBjbGFzcyBNYXRjaCwgY2xhc3MgVHJhaXRzPgotc3RydWN0IGZvcm1hdF9mdW5jdG9yX2NvbnRhaW5lcgotewotICAgZm9ybWF0X2Z1bmN0b3JfY29udGFpbmVyKGNvbnN0IENvbnRhaW5lciYgYykgOiBmdW5jKGMpIHt9Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBPdXRwdXRJdGVyPgotICAgT3V0cHV0SXRlciBvcGVyYXRvcigpKGNvbnN0IE1hdGNoJiBtLCBPdXRwdXRJdGVyIGksIG5kbmJvb3N0OjpyZWdleF9jb25zdGFudHM6Om1hdGNoX2ZsYWdfdHlwZSBmLCBjb25zdCBUcmFpdHMmIHQgPSBUcmFpdHMoKSkKLSAgIHsKLSAgICAgIC8vdHlwZWRlZiB0eXBlbmFtZSBNYXRjaDo6Y2hhcl90eXBlIGNoYXJfdHlwZTsKLSAgICAgIHJldHVybiByZV9kZXRhaWw6OnJlZ2V4X2Zvcm1hdF9pbXAoaSwgbSwgZnVuYy5iZWdpbigpLCBmdW5jLmVuZCgpLCBmLCB0KTsKLSAgIH0KLXByaXZhdGU6Ci0gICBjb25zdCBDb250YWluZXImIGZ1bmM7Ci0gICBmb3JtYXRfZnVuY3Rvcl9jb250YWluZXIoY29uc3QgZm9ybWF0X2Z1bmN0b3JfY29udGFpbmVyJik7Ci0gICBmb3JtYXRfZnVuY3Rvcl9jb250YWluZXImIG9wZXJhdG9yPShjb25zdCBmb3JtYXRfZnVuY3Rvcl9jb250YWluZXImKTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBGdW5jLCBjbGFzcyBNYXRjaCwgY2xhc3MgT3V0cHV0SXRlcmF0b3IsIGNsYXNzIFRyYWl0cyA9IHJlX2RldGFpbDo6dHJpdmlhbF9mb3JtYXRfdHJhaXRzPHR5cGVuYW1lIE1hdGNoOjpjaGFyX3R5cGU+ID4KLXN0cnVjdCBjb21wdXRlX2Z1bmN0b3JfdHlwZQotewotICAgdHlwZWRlZiB0eXBlbmFtZSBmb3JtYXRfdHJhaXRzPEZ1bmMsIE1hdGNoLCBPdXRwdXRJdGVyYXRvcj46OnR5cGUgdGFnOwotICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX2N2PCB0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX3BvaW50ZXI8RnVuYz46OnR5cGU+Ojp0eXBlIG1heWJlX2NoYXJfdHlwZTsKLQotICAgdHlwZWRlZiB0eXBlbmFtZSBtcGw6OmlmXzwKLSAgICAgIDo6bmRuYm9vc3Q6OmlzX3NhbWU8dGFnLCBtcGw6OmludF88MD4gPiwgZm9ybWF0X2Z1bmN0b3JfY19zdHJpbmc8bWF5YmVfY2hhcl90eXBlLCBNYXRjaCwgVHJhaXRzPiwKLSAgICAgIHR5cGVuYW1lIG1wbDo6aWZfPAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfc2FtZTx0YWcsIG1wbDo6aW50XzwxPiA+LCBmb3JtYXRfZnVuY3Rvcl9jb250YWluZXI8RnVuYywgTWF0Y2gsIFRyYWl0cz4sCi0gICAgICAgICB0eXBlbmFtZSBtcGw6OmlmXzwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3NhbWU8dGFnLCBtcGw6OmludF88Mj4gPiwgZm9ybWF0X2Z1bmN0b3IxPEZ1bmMsIE1hdGNoPiwKLSAgICAgICAgICAgIHR5cGVuYW1lIG1wbDo6aWZfPAotICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfc2FtZTx0YWcsIG1wbDo6aW50XzwzPiA+LCBmb3JtYXRfZnVuY3RvcjI8RnVuYywgTWF0Y2g+LCAKLSAgICAgICAgICAgICAgIGZvcm1hdF9mdW5jdG9yMzxGdW5jLCBNYXRjaD4KLSAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgID46OnR5cGUKLSAgICAgID46OnR5cGUKLSAgID46OnR5cGUgdHlwZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIHJlX2RldGFpbAotCi10ZW1wbGF0ZSA8Y2xhc3MgT3V0cHV0SXRlcmF0b3IsIGNsYXNzIEl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIEZ1bmN0b3I+Ci1pbmxpbmUgT3V0cHV0SXRlcmF0b3IgcmVnZXhfZm9ybWF0KE91dHB1dEl0ZXJhdG9yIG91dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF0Y2hfcmVzdWx0czxJdGVyYXRvciwgQWxsb2NhdG9yPiYgbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgRnVuY3RvciBmbXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IGZvcm1hdF9hbGwKLSAgICAgICAgICAgICAgICAgICAgICAgICApCi17Ci0gICByZXR1cm4gbS5mb3JtYXQob3V0LCBmbXQsIGZsYWdzKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIEZ1bmN0b3I+Ci1pbmxpbmUgc3RkOjpiYXNpY19zdHJpbmc8dHlwZW5hbWUgbWF0Y2hfcmVzdWx0czxJdGVyYXRvciwgQWxsb2NhdG9yPjo6Y2hhcl90eXBlPiByZWdleF9mb3JtYXQoY29uc3QgbWF0Y2hfcmVzdWx0czxJdGVyYXRvciwgQWxsb2NhdG9yPiYgbSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZ1bmN0b3IgZm10LCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gZm9ybWF0X2FsbCkKLXsKLSAgIHJldHVybiBtLmZvcm1hdChmbXQsIGZsYWdzKTsKLX0KLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1NVRkZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgIC8vIE5ETkJPT1NUX1JFR0VYX0ZPUk1BVF9IUFAKLQotCi0KLQotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTk4MDUwZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MyArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAyCi0gKiBKb2huIE1hZGRvY2sKLSAqCi0gKiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLSAqIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotICogTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqLwotCi0gLyoKLSAgKiAgIExPQ0FUSU9OOiAgICBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0gICogICBGSUxFICAgICAgICAgcmVnZXhfZndkLmNwcAotICAqICAgVkVSU0lPTiAgICAgIHNlZSA8bmRuYm9vc3QvdmVyc2lvbi5ocHA+Ci0gICogICBERVNDUklQVElPTjogRm9yd2FyZCBkZWNsYXJlcyBuZG5ib29zdDo6YmFzaWNfcmVnZXg8PiBhbmQKLSAgKiAgICAgICAgICAgICAgICBhc3NvY2lhdGVkIHR5cGVkZWZzLgotICAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX0ZXRF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfRldEX0hQUF9JTkNMVURFRAotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX0NPTkZJR19IUFAKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC9jb25maWcuaHBwPgotI2VuZGlmCi0KLS8vCi0vLyBkZWZpbmUgTkROQk9PU1RfUkVHRVhfTk9fRldEIGlmIHRoaXMKLS8vIGhlYWRlciBkb2Vzbid0IHdvcmshCi0vLwotI2lmZGVmIE5ETkJPT1NUX1JFR0VYX05PX0ZXRAotIyAgaWZuZGVmIE5ETkJPT1NUX1JFX1JFR0VYX0hQUAotIyAgICAgaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXguaHBwPgotIyAgZW5kaWYKLSNlbHNlCi0KLW5hbWVzcGFjZSBuZG5ib29zdHsKLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotY2xhc3MgY3BwX3JlZ2V4X3RyYWl0czsKLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLXN0cnVjdCBjX3JlZ2V4X3RyYWl0czsKLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLWNsYXNzIHczMl9yZWdleF90cmFpdHM7Ci0KLSNpZmRlZiBORE5CT09TVF9SRUdFWF9VU0VfV0lOMzJfTE9DQUxFCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIGltcGxlbWVudGF0aW9uVCA9IHczMl9yZWdleF90cmFpdHM8Y2hhclQ+ID4KLXN0cnVjdCByZWdleF90cmFpdHM7Ci0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX1JFR0VYX1VTRV9DUFBfTE9DQUxFKQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyBpbXBsZW1lbnRhdGlvblQgPSBjcHBfcmVnZXhfdHJhaXRzPGNoYXJUPiA+Ci1zdHJ1Y3QgcmVnZXhfdHJhaXRzOwotI2Vsc2UKLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgaW1wbGVtZW50YXRpb25UID0gY19yZWdleF90cmFpdHM8Y2hhclQ+ID4KLXN0cnVjdCByZWdleF90cmFpdHM7Ci0jZW5kaWYKLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHMgPSByZWdleF90cmFpdHM8Y2hhclQ+ID4KLWNsYXNzIGJhc2ljX3JlZ2V4OwotCi10eXBlZGVmIGJhc2ljX3JlZ2V4PGNoYXIsIHJlZ2V4X3RyYWl0czxjaGFyPiA+IHJlZ2V4OwotI2lmbmRlZiBORE5CT09TVF9OT19XUkVHRVgKLXR5cGVkZWYgYmFzaWNfcmVnZXg8d2NoYXJfdCwgcmVnZXhfdHJhaXRzPHdjaGFyX3Q+ID4gd3JlZ2V4OwotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAgLy8gTkROQk9PU1RfUkVHRVhfTk9fRldECi0KLSNlbmRpZgotCi0KLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X2dyZXAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9yZWdleF9ncmVwLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWU3ODlkMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X2dyZXAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTU1ICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDIKLSAqIEpvaG4gTWFkZG9jawotICoKLSAqIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotICogQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0gKiBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICovCi0KLSAvKgotICAqICAgTE9DQVRJT046ICAgIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLSAgKiAgIEZJTEUgICAgICAgICByZWdleF9ncmVwLmhwcAotICAqICAgVkVSU0lPTiAgICAgIHNlZSA8bmRuYm9vc3QvdmVyc2lvbi5ocHA+Ci0gICogICBERVNDUklQVElPTjogUHJvdmlkZXMgcmVnZXhfZ3JlcCBpbXBsZW1lbnRhdGlvbi4KLSAgKi8KLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9WNF9SRUdFWF9HUkVQX0hQUAotI2RlZmluZSBORE5CT09TVF9SRUdFWF9WNF9SRUdFWF9HUkVQX0hQUAotCi0KLW5hbWVzcGFjZSBuZG5ib29zdHsKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1BSRUZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0vLwotLy8gcmVnZXhfZ3JlcDoKLS8vIGZpbmQgYWxsIG5vbi1vdmVybGFwcGluZyBtYXRjaGVzIHdpdGhpbiB0aGUgc2VxdWVuY2UgZmlyc3QgbGFzdDoKLS8vCi10ZW1wbGF0ZSA8Y2xhc3MgUHJlZGljYXRlLCBjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci1pbmxpbmUgdW5zaWduZWQgaW50IHJlZ2V4X2dyZXAoUHJlZGljYXRlIGZvbywgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmlkaUl0ZXJhdG9yIGZpcnN0LCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCaWRpSXRlcmF0b3IgbGFzdCwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzaWNfcmVnZXg8Y2hhclQsIHRyYWl0cz4mIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICBpZihlLmZsYWdzKCkgJiByZWdleF9jb25zdGFudHM6OmZhaWxiaXQpCi0gICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgIHR5cGVkZWYgdHlwZW5hbWUgbWF0Y2hfcmVzdWx0czxCaWRpSXRlcmF0b3I+OjphbGxvY2F0b3JfdHlwZSBtYXRjaF9hbGxvY2F0b3JfdHlwZTsKLQotICAgbWF0Y2hfcmVzdWx0czxCaWRpSXRlcmF0b3I+IG07Ci0gICByZV9kZXRhaWw6OnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIG1hdGNoX2FsbG9jYXRvcl90eXBlLCB0cmFpdHM+IG1hdGNoZXIoZmlyc3QsIGxhc3QsIG0sIGUsIGZsYWdzLCBmaXJzdCk7Ci0gICB1bnNpZ25lZCBpbnQgY291bnQgPSAwOwotICAgd2hpbGUobWF0Y2hlci5maW5kKCkpCi0gICB7Ci0gICAgICArK2NvdW50OwotICAgICAgaWYoMCA9PSBmb28obSkpCi0gICAgICAgICByZXR1cm4gY291bnQ7IC8vIGNhbGxlciBkb2Vzbid0IHdhbnQgdG8gZ28gb24KLSAgICAgIGlmKG1bMF0uc2Vjb25kID09IGxhc3QpCi0gICAgICAgICByZXR1cm4gY291bnQ7IC8vIHdlJ3ZlIHJlYWNoZWQgdGhlIGVuZCwgZG9uJ3QgdHJ5IGFuZCBmaW5kIGFuIGV4dHJhIG51bGwgbWF0Y2guCi0gICAgICBpZihtLmxlbmd0aCgpID09IDApCi0gICAgICB7Ci0gICAgICAgICBpZihtWzBdLnNlY29uZCA9PSBsYXN0KQotICAgICAgICAgICAgcmV0dXJuIGNvdW50OwotICAgICAgICAgLy8gd2UgZm91bmQgYSBOVUxMLW1hdGNoLCBub3cgdHJ5IHRvIGZpbmQKLSAgICAgICAgIC8vIGEgbm9uLU5VTEwgb25lIGF0IHRoZSBzYW1lIHBvc2l0aW9uOgotICAgICAgICAgbWF0Y2hfcmVzdWx0czxCaWRpSXRlcmF0b3IsIG1hdGNoX2FsbG9jYXRvcl90eXBlPiBtMihtKTsKLSAgICAgICAgIG1hdGNoZXIuc2V0ZihtYXRjaF9ub3RfbnVsbCB8IG1hdGNoX2NvbnRpbnVvdXMpOwotICAgICAgICAgaWYobWF0Y2hlci5maW5kKCkpCi0gICAgICAgICB7Ci0gICAgICAgICAgICArK2NvdW50OwotICAgICAgICAgICAgaWYoMCA9PSBmb28obSkpCi0gICAgICAgICAgICAgICByZXR1cm4gY291bnQ7Ci0gICAgICAgICB9Ci0gICAgICAgICBlbHNlCi0gICAgICAgICB7Ci0gICAgICAgICAgICAvLyByZXNldCBtYXRjaCBiYWNrIHRvIHdoZXJlIGl0IHdhczoKLSAgICAgICAgICAgIG0gPSBtMjsKLSAgICAgICAgIH0KLSAgICAgICAgIG1hdGNoZXIudW5zZXRmKChtYXRjaF9ub3RfbnVsbCB8IG1hdGNoX2NvbnRpbnVvdXMpICYgfmZsYWdzKTsKLSAgICAgIH0KLSAgIH0KLSAgIHJldHVybiBjb3VudDsKLX0KLQotLy8KLS8vIHJlZ2V4X2dyZXAgY29udmVuaWVuY2UgaW50ZXJmYWNlczoKLSNpZm5kZWYgTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcKLS8vCi0vLyB0aGlzIGlzbid0IHJlYWxseSBhIHBhcnRpYWwgc3BlY2lhbGlzYXRpb24sIGJ1dCB0ZW1wbGF0ZSBmdW5jdGlvbgotLy8gb3ZlcmxvYWRpbmcgLSBpZiB0aGUgY29tcGlsZXIgZG9lc24ndCBzdXBwb3J0IHBhcnRpYWwgc3BlY2lhbGlzYXRpb24KLS8vIHRoZW4gaXQgcmVhbGx5IHdvbid0IHN1cHBvcnQgdGhpcyBlaXRoZXI6Ci10ZW1wbGF0ZSA8Y2xhc3MgUHJlZGljYXRlLCBjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotaW5saW5lIHVuc2lnbmVkIGludCByZWdleF9ncmVwKFByZWRpY2F0ZSBmb28sIGNvbnN0IGNoYXJUKiBzdHIsIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzaWNfcmVnZXg8Y2hhclQsIHRyYWl0cz4mIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZWdleF9ncmVwKGZvbywgc3RyLCBzdHIgKyB0cmFpdHM6Omxlbmd0aChzdHIpLCBlLCBmbGFncyk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBQcmVkaWNhdGUsIGNsYXNzIFNULCBjbGFzcyBTQSwgY2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLWlubGluZSB1bnNpZ25lZCBpbnQgcmVnZXhfZ3JlcChQcmVkaWNhdGUgZm9vLCBjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVCwgU1QsIFNBPiYgcywgCi0gICAgICAgICAgICAgICAgIGNvbnN0IGJhc2ljX3JlZ2V4PGNoYXJULCB0cmFpdHM+JiBlLCAKLSAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZWdleF9ncmVwKGZvbywgcy5iZWdpbigpLCBzLmVuZCgpLCBlLCBmbGFncyk7Ci19Ci0jZWxzZSAgLy8gcGFydGlhbCBzcGVjaWFsaXNhdGlvbgotaW5saW5lIHVuc2lnbmVkIGludCByZWdleF9ncmVwKGJvb2wgKCpmb28pKGNvbnN0IGNtYXRjaCYpLCBjb25zdCBjaGFyKiBzdHIsIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZWdleF9ncmVwKGZvbywgc3RyLCBzdHIgKyByZWdleDo6dHJhaXRzX3R5cGU6Omxlbmd0aChzdHIpLCBlLCBmbGFncyk7Ci19Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1dSRUdFWAotaW5saW5lIHVuc2lnbmVkIGludCByZWdleF9ncmVwKGJvb2wgKCpmb28pKGNvbnN0IHdjbWF0Y2gmKSwgY29uc3Qgd2NoYXJfdCogc3RyLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdyZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlZ2V4X2dyZXAoZm9vLCBzdHIsIHN0ciArIHdyZWdleDo6dHJhaXRzX3R5cGU6Omxlbmd0aChzdHIpLCBlLCBmbGFncyk7Ci19Ci0jZW5kaWYKLWlubGluZSB1bnNpZ25lZCBpbnQgcmVnZXhfZ3JlcChib29sICgqZm9vKShjb25zdCBtYXRjaF9yZXN1bHRzPHN0ZDo6c3RyaW5nOjpjb25zdF9pdGVyYXRvcj4mKSwgY29uc3Qgc3RkOjpzdHJpbmcmIHMsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlZ2V4X2dyZXAoZm9vLCBzLmJlZ2luKCksIHMuZW5kKCksIGUsIGZsYWdzKTsKLX0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19XUkVHRVgpCi1pbmxpbmUgdW5zaWduZWQgaW50IHJlZ2V4X2dyZXAoYm9vbCAoKmZvbykoY29uc3QgbWF0Y2hfcmVzdWx0czxzdGQ6OmJhc2ljX3N0cmluZzx3Y2hhcl90Pjo6Y29uc3RfaXRlcmF0b3I+JiksIAotICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8d2NoYXJfdD4mIHMsIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd3JlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVnZXhfZ3JlcChmb28sIHMuYmVnaW4oKSwgcy5lbmQoKSwgZSwgZmxhZ3MpOwotfQotI2VuZGlmCi0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1NVRkZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgIC8vIE5ETkJPT1NUX1JFR0VYX1Y0X1JFR0VYX0dSRVBfSFBQCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfaXRlcmF0b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9yZWdleF9pdGVyYXRvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBjMDEzNmUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9yZWdleF9pdGVyYXRvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMDEgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDMKLSAqIEpvaG4gTWFkZG9jawotICoKLSAqIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotICogQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0gKiBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICovCi0KLSAvKgotICAqICAgTE9DQVRJT046ICAgIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLSAgKiAgIEZJTEUgICAgICAgICByZWdleF9pdGVyYXRvci5ocHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IFByb3ZpZGVzIHJlZ2V4X2l0ZXJhdG9yIGltcGxlbWVudGF0aW9uLgotICAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1Y0X1JFR0VYX0lURVJBVE9SX0hQUAotI2RlZmluZSBORE5CT09TVF9SRUdFWF9WNF9SRUdFWF9JVEVSQVRPUl9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3NoYXJlZF9wdHIuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9QUkVGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlyZWN0aW9uYWxJdGVyYXRvciwgCi0gICAgICAgICAgY2xhc3MgY2hhclQsCi0gICAgICAgICAgY2xhc3MgdHJhaXRzPgotY2xhc3MgcmVnZXhfaXRlcmF0b3JfaW1wbGVtZW50YXRpb24gCi17Ci0gICB0eXBlZGVmIGJhc2ljX3JlZ2V4PGNoYXJULCB0cmFpdHM+IHJlZ2V4X3R5cGU7Ci0KLSAgIG1hdGNoX3Jlc3VsdHM8QmlkaXJlY3Rpb25hbEl0ZXJhdG9yPiB3aGF0OyAgLy8gY3VycmVudCBtYXRjaAotICAgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yICAgICAgICAgICAgICAgIGJhc2U7ICAvLyBzdGFydCBvZiBzZXF1ZW5jZQotICAgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yICAgICAgICAgICAgICAgIGVuZDsgICAvLyBlbmQgb2Ygc2VxdWVuY2UKLSAgIGNvbnN0IHJlZ2V4X3R5cGUgICAgICAgICAgICAgICAgICAgICByZTsgICAvLyB0aGUgZXhwcmVzc2lvbgotICAgbWF0Y2hfZmxhZ190eXBlICAgICAgICAgICAgICAgICAgICAgIGZsYWdzOyAvLyBmbGFncyBmb3IgbWF0Y2hpbmcKLQotcHVibGljOgotICAgcmVnZXhfaXRlcmF0b3JfaW1wbGVtZW50YXRpb24oY29uc3QgcmVnZXhfdHlwZSogcCwgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIGxhc3QsIG1hdGNoX2ZsYWdfdHlwZSBmKQotICAgICAgOiBiYXNlKCksIGVuZChsYXN0KSwgcmUoKnApLCBmbGFncyhmKXt9Ci0gICBib29sIGluaXQoQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIGZpcnN0KQotICAgewotICAgICAgYmFzZSA9IGZpcnN0OwotICAgICAgcmV0dXJuIHJlZ2V4X3NlYXJjaChmaXJzdCwgZW5kLCB3aGF0LCByZSwgZmxhZ3MpOwotICAgfQotICAgYm9vbCBjb21wYXJlKGNvbnN0IHJlZ2V4X2l0ZXJhdG9yX2ltcGxlbWVudGF0aW9uJiB0aGF0KQotICAgewotICAgICAgaWYodGhpcyA9PSAmdGhhdCkgcmV0dXJuIHRydWU7Ci0gICAgICByZXR1cm4gKCZyZS5nZXRfZGF0YSgpID09ICZ0aGF0LnJlLmdldF9kYXRhKCkpICYmIChlbmQgPT0gdGhhdC5lbmQpICYmIChmbGFncyA9PSB0aGF0LmZsYWdzKSAmJiAod2hhdFswXS5maXJzdCA9PSB0aGF0LndoYXRbMF0uZmlyc3QpICYmICh3aGF0WzBdLnNlY29uZCA9PSB0aGF0LndoYXRbMF0uc2Vjb25kKTsKLSAgIH0KLSAgIGNvbnN0IG1hdGNoX3Jlc3VsdHM8QmlkaXJlY3Rpb25hbEl0ZXJhdG9yPiYgZ2V0KCkKLSAgIHsgcmV0dXJuIHdoYXQ7IH0KLSAgIGJvb2wgbmV4dCgpCi0gICB7Ci0gICAgICAvL2lmKHdoYXQucHJlZml4KCkuZmlyc3QgIT0gd2hhdFswXS5zZWNvbmQpCi0gICAgICAvLyAgIGZsYWdzIHw9IG1hdGNoX3ByZXZfYXZhaWw7Ci0gICAgICBCaWRpcmVjdGlvbmFsSXRlcmF0b3IgbmV4dF9zdGFydCA9IHdoYXRbMF0uc2Vjb25kOwotICAgICAgbWF0Y2hfZmxhZ190eXBlIGYoZmxhZ3MpOwotICAgICAgaWYoIXdoYXQubGVuZ3RoKCkgfHwgKGYgJiByZWdleF9jb25zdGFudHM6Om1hdGNoX3Bvc2l4KSkKLSAgICAgICAgIGYgfD0gcmVnZXhfY29uc3RhbnRzOjptYXRjaF9ub3RfaW5pdGlhbF9udWxsOwotICAgICAgLy9pZihiYXNlICE9IG5leHRfc3RhcnQpCi0gICAgICAvLyAgIGYgfD0gcmVnZXhfY29uc3RhbnRzOjptYXRjaF9ub3RfYm9iOwotICAgICAgYm9vbCByZXN1bHQgPSByZWdleF9zZWFyY2gobmV4dF9zdGFydCwgZW5kLCB3aGF0LCByZSwgZiwgYmFzZSk7Ci0gICAgICBpZihyZXN1bHQpCi0gICAgICAgICB3aGF0LnNldF9iYXNlKGJhc2UpOwotICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgIH0KLXByaXZhdGU6Ci0gICByZWdleF9pdGVyYXRvcl9pbXBsZW1lbnRhdGlvbiYgb3BlcmF0b3I9KGNvbnN0IHJlZ2V4X2l0ZXJhdG9yX2ltcGxlbWVudGF0aW9uJik7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yLCAKLSAgICAgICAgICBjbGFzcyBjaGFyVCA9IE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8QmlkaXJlY3Rpb25hbEl0ZXJhdG9yPjo6dmFsdWVfdHlwZSwKLSAgICAgICAgICBjbGFzcyB0cmFpdHMgPSByZWdleF90cmFpdHM8Y2hhclQ+ID4KLWNsYXNzIHJlZ2V4X2l0ZXJhdG9yIAotI2lmbmRlZiBORE5CT09TVF9OT19TVERfSVRFUkFUT1IKLSAgIDogcHVibGljIHN0ZDo6aXRlcmF0b3I8Ci0gICAgICAgICBzdGQ6OmZvcndhcmRfaXRlcmF0b3JfdGFnLCAKLSAgICAgICAgIG1hdGNoX3Jlc3VsdHM8QmlkaXJlY3Rpb25hbEl0ZXJhdG9yPiwKLSAgICAgICAgIHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPEJpZGlyZWN0aW9uYWxJdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZSwKLSAgICAgICAgIGNvbnN0IG1hdGNoX3Jlc3VsdHM8QmlkaXJlY3Rpb25hbEl0ZXJhdG9yPiosCi0gICAgICAgICBjb25zdCBtYXRjaF9yZXN1bHRzPEJpZGlyZWN0aW9uYWxJdGVyYXRvcj4mID4gICAgICAgICAKLSNlbmRpZgotewotcHJpdmF0ZToKLSAgIHR5cGVkZWYgcmVnZXhfaXRlcmF0b3JfaW1wbGVtZW50YXRpb248QmlkaXJlY3Rpb25hbEl0ZXJhdG9yLCBjaGFyVCwgdHJhaXRzPiBpbXBsOwotICAgdHlwZWRlZiBzaGFyZWRfcHRyPGltcGw+IHBpbXBsOwotcHVibGljOgotICAgdHlwZWRlZiAgICAgICAgICBiYXNpY19yZWdleDxjaGFyVCwgdHJhaXRzPiAgICAgICAgICAgICAgICAgICByZWdleF90eXBlOwotICAgdHlwZWRlZiAgICAgICAgICBtYXRjaF9yZXN1bHRzPEJpZGlyZWN0aW9uYWxJdGVyYXRvcj4gICAgICAgICAgICAgICAgICAgIHZhbHVlX3R5cGU7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPEJpZGlyZWN0aW9uYWxJdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZSAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWZmZXJlbmNlX3R5cGU7Ci0gICB0eXBlZGVmICAgICAgICAgIGNvbnN0IHZhbHVlX3R5cGUqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRlcjsKLSAgIHR5cGVkZWYgICAgICAgICAgY29uc3QgdmFsdWVfdHlwZSYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2U7IAotICAgdHlwZWRlZiAgICAgICAgICBzdGQ6OmZvcndhcmRfaXRlcmF0b3JfdGFnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZXJhdG9yX2NhdGVnb3J5OwotICAgCi0gICByZWdleF9pdGVyYXRvcigpe30KLSAgIHJlZ2V4X2l0ZXJhdG9yKEJpZGlyZWN0aW9uYWxJdGVyYXRvciBhLCBCaWRpcmVjdGlvbmFsSXRlcmF0b3IgYiwgCi0gICAgICAgICAgICAgICAgICBjb25zdCByZWdleF90eXBlJiByZSwgCi0gICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgbSA9IG1hdGNoX2RlZmF1bHQpCi0gICAgICAgICAgICAgICAgICA6IHBkYXRhKG5ldyBpbXBsKCZyZSwgYiwgbSkpCi0gICB7Ci0gICAgICBpZighcGRhdGEtPmluaXQoYSkpCi0gICAgICB7Ci0gICAgICAgICBwZGF0YS5yZXNldCgpOwotICAgICAgfQotICAgfQotICAgcmVnZXhfaXRlcmF0b3IoY29uc3QgcmVnZXhfaXRlcmF0b3ImIHRoYXQpCi0gICAgICA6IHBkYXRhKHRoYXQucGRhdGEpIHt9Ci0gICByZWdleF9pdGVyYXRvciYgb3BlcmF0b3I9KGNvbnN0IHJlZ2V4X2l0ZXJhdG9yJiB0aGF0KQotICAgewotICAgICAgcGRhdGEgPSB0aGF0LnBkYXRhOwotICAgICAgcmV0dXJuICp0aGlzOwotICAgfQotICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IHJlZ2V4X2l0ZXJhdG9yJiB0aGF0KWNvbnN0Ci0gICB7IAotICAgICAgaWYoKHBkYXRhLmdldCgpID09IDApIHx8ICh0aGF0LnBkYXRhLmdldCgpID09IDApKQotICAgICAgICAgcmV0dXJuIHBkYXRhLmdldCgpID09IHRoYXQucGRhdGEuZ2V0KCk7Ci0gICAgICByZXR1cm4gcGRhdGEtPmNvbXBhcmUoKih0aGF0LnBkYXRhLmdldCgpKSk7IAotICAgfQotICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IHJlZ2V4X2l0ZXJhdG9yJiB0aGF0KWNvbnN0Ci0gICB7IHJldHVybiAhKCp0aGlzID09IHRoYXQpOyB9Ci0gICBjb25zdCB2YWx1ZV90eXBlJiBvcGVyYXRvciooKWNvbnN0Ci0gICB7IHJldHVybiBwZGF0YS0+Z2V0KCk7IH0KLSAgIGNvbnN0IHZhbHVlX3R5cGUqIG9wZXJhdG9yLT4oKWNvbnN0Ci0gICB7IHJldHVybiAmKHBkYXRhLT5nZXQoKSk7IH0KLSAgIHJlZ2V4X2l0ZXJhdG9yJiBvcGVyYXRvcisrKCkKLSAgIHsKLSAgICAgIGNvdygpOwotICAgICAgaWYoMCA9PSBwZGF0YS0+bmV4dCgpKQotICAgICAgewotICAgICAgICAgcGRhdGEucmVzZXQoKTsKLSAgICAgIH0KLSAgICAgIHJldHVybiAqdGhpczsKLSAgIH0KLSAgIHJlZ2V4X2l0ZXJhdG9yIG9wZXJhdG9yKysoaW50KQotICAgewotICAgICAgcmVnZXhfaXRlcmF0b3IgcmVzdWx0KCp0aGlzKTsKLSAgICAgICsrKCp0aGlzKTsKLSAgICAgIHJldHVybiByZXN1bHQ7Ci0gICB9Ci1wcml2YXRlOgotCi0gICBwaW1wbCBwZGF0YTsKLQotICAgdm9pZCBjb3coKQotICAgewotICAgICAgLy8gY29weS1vbi13cml0ZQotICAgICAgaWYocGRhdGEuZ2V0KCkgJiYgIXBkYXRhLnVuaXF1ZSgpKQotICAgICAgewotICAgICAgICAgcGRhdGEucmVzZXQobmV3IGltcGwoKihwZGF0YS5nZXQoKSkpKTsKLSAgICAgIH0KLSAgIH0KLX07Ci0KLXR5cGVkZWYgcmVnZXhfaXRlcmF0b3I8Y29uc3QgY2hhcio+IGNyZWdleF9pdGVyYXRvcjsKLXR5cGVkZWYgcmVnZXhfaXRlcmF0b3I8c3RkOjpzdHJpbmc6OmNvbnN0X2l0ZXJhdG9yPiBzcmVnZXhfaXRlcmF0b3I7Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1dSRUdFWAotdHlwZWRlZiByZWdleF9pdGVyYXRvcjxjb25zdCB3Y2hhcl90Kj4gd2NyZWdleF9pdGVyYXRvcjsKLXR5cGVkZWYgcmVnZXhfaXRlcmF0b3I8c3RkOjp3c3RyaW5nOjpjb25zdF9pdGVyYXRvcj4gd3NyZWdleF9pdGVyYXRvcjsKLSNlbmRpZgotCi0vLyBtYWtlX3JlZ2V4X2l0ZXJhdG9yOgotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci1pbmxpbmUgcmVnZXhfaXRlcmF0b3I8Y29uc3QgY2hhclQqLCBjaGFyVCwgdHJhaXRzPiBtYWtlX3JlZ2V4X2l0ZXJhdG9yKGNvbnN0IGNoYXJUKiBwLCBjb25zdCBiYXNpY19yZWdleDxjaGFyVCwgdHJhaXRzPiYgZSwgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9mbGFnX3R5cGUgbSA9IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZWdleF9pdGVyYXRvcjxjb25zdCBjaGFyVCosIGNoYXJULCB0cmFpdHM+KHAsIHArdHJhaXRzOjpsZW5ndGgocCksIGUsIG0pOwotfQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHMsIGNsYXNzIFNULCBjbGFzcyBTQT4KLWlubGluZSByZWdleF9pdGVyYXRvcjx0eXBlbmFtZSBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVCwgU1QsIFNBPjo6Y29uc3RfaXRlcmF0b3IsIGNoYXJULCB0cmFpdHM+IG1ha2VfcmVnZXhfaXRlcmF0b3IoY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQsIFNULCBTQT4mIHAsIGNvbnN0IGJhc2ljX3JlZ2V4PGNoYXJULCB0cmFpdHM+JiBlLCByZWdleF9jb25zdGFudHM6Om1hdGNoX2ZsYWdfdHlwZSBtID0gcmVnZXhfY29uc3RhbnRzOjptYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlZ2V4X2l0ZXJhdG9yPHR5cGVuYW1lIHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJULCBTVCwgU0E+Ojpjb25zdF9pdGVyYXRvciwgY2hhclQsIHRyYWl0cz4ocC5iZWdpbigpLCBwLmVuZCgpLCBlLCBtKTsKLX0KLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1NVRkZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfUkVHRVhfVjRfUkVHRVhfSVRFUkFUT1JfSFBQCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfbWF0Y2guaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9yZWdleF9tYXRjaC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgxZjliOWIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9yZWdleF9tYXRjaC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzODIgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMgotICogSm9obiBNYWRkb2NrCi0gKgotICogVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0gKiBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLSAqIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKi8KLQotIC8qCi0gICogICBMT0NBVElPTjogICAgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotICAqICAgRklMRSAgICAgICAgIHJlZ2V4X21hdGNoLmhwcAotICAqICAgVkVSU0lPTiAgICAgIHNlZSA8bmRuYm9vc3QvdmVyc2lvbi5ocHA+Ci0gICogICBERVNDUklQVElPTjogUmVndWxhciBleHByZXNzaW9uIG1hdGNoaW5nIGFsZ29yaXRobXMuCi0gICogICAgICAgICAgICAgICAgTm90ZSB0aGlzIGlzIGFuIGludGVybmFsIGhlYWRlciBmaWxlIGluY2x1ZGVkCi0gICogICAgICAgICAgICAgICAgYnkgcmVnZXguaHBwLCBkbyBub3QgaW5jbHVkZSBvbiBpdHMgb3duLgotICAqLwotCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfTUFUQ0hfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JFR0VYX01BVENIX0hQUAotCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9QUkVGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotLy8KLS8vIHByb2MgcmVnZXhfbWF0Y2gKLS8vIHJldHVybnMgdHJ1ZSBpZiB0aGUgc3BlY2lmaWVkIHJlZ3VsYXIgZXhwcmVzc2lvbiBtYXRjaGVzCi0vLyB0aGUgd2hvbGUgb2YgdGhlIGlucHV0LiAgRmlsbHMgaW4gd2hhdCBtYXRjaGVkIGluIG0uCi0vLwotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvciwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotYm9vbCByZWdleF9tYXRjaChCaWRpSXRlcmF0b3IgZmlyc3QsIEJpZGlJdGVyYXRvciBsYXN0LCAKLSAgICAgICAgICAgICAgICAgbWF0Y2hfcmVzdWx0czxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvcj4mIG0sIAotICAgICAgICAgICAgICAgICBjb25zdCBiYXNpY19yZWdleDxjaGFyVCwgdHJhaXRzPiYgZSwgCi0gICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZV9kZXRhaWw6OnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPiBtYXRjaGVyKGZpcnN0LCBsYXN0LCBtLCBlLCBmbGFncywgZmlyc3QpOwotICAgcmV0dXJuIG1hdGNoZXIubWF0Y2goKTsKLX0KLXRlbXBsYXRlIDxjbGFzcyBpdGVyYXRvciwgY2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLWJvb2wgcmVnZXhfbWF0Y2goaXRlcmF0b3IgZmlyc3QsIGl0ZXJhdG9yIGxhc3QsIAotICAgICAgICAgICAgICAgICBjb25zdCBiYXNpY19yZWdleDxjaGFyVCwgdHJhaXRzPiYgZSwgCi0gICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICBtYXRjaF9yZXN1bHRzPGl0ZXJhdG9yPiBtOwotICAgcmV0dXJuIHJlZ2V4X21hdGNoKGZpcnN0LCBsYXN0LCBtLCBlLCBmbGFncyB8IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfYW55KTsKLX0KLS8vCi0vLyBxdWVyeV9tYXRjaCBjb252ZW5pZW5jZSBpbnRlcmZhY2VzOgotI2lmbmRlZiBORE5CT09TVF9OT19GVU5DVElPTl9URU1QTEFURV9PUkRFUklORwotLy8KLS8vIHRoaXMgaXNuJ3QgcmVhbGx5IGEgcGFydGlhbCBzcGVjaWFsaXNhdGlvbiwgYnV0IHRlbXBsYXRlIGZ1bmN0aW9uCi0vLyBvdmVybG9hZGluZyAtIGlmIHRoZSBjb21waWxlciBkb2Vzbid0IHN1cHBvcnQgcGFydGlhbCBzcGVjaWFsaXNhdGlvbgotLy8gdGhlbiBpdCByZWFsbHkgd29uJ3Qgc3VwcG9ydCB0aGlzIGVpdGhlcjoKLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgQWxsb2NhdG9yLCBjbGFzcyB0cmFpdHM+Ci1pbmxpbmUgYm9vbCByZWdleF9tYXRjaChjb25zdCBjaGFyVCogc3RyLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX3Jlc3VsdHM8Y29uc3QgY2hhclQqLCBBbGxvY2F0b3I+JiBtLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2ljX3JlZ2V4PGNoYXJULCB0cmFpdHM+JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVnZXhfbWF0Y2goc3RyLCBzdHIgKyB0cmFpdHM6Omxlbmd0aChzdHIpLCBtLCBlLCBmbGFncyk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBTVCwgY2xhc3MgU0EsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLWlubGluZSBib29sIHJlZ2V4X21hdGNoKGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJULCBTVCwgU0E+JiBzLCAKLSAgICAgICAgICAgICAgICAgbWF0Y2hfcmVzdWx0czx0eXBlbmFtZSBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVCwgU1QsIFNBPjo6Y29uc3RfaXRlcmF0b3IsIEFsbG9jYXRvcj4mIG0sIAotICAgICAgICAgICAgICAgICBjb25zdCBiYXNpY19yZWdleDxjaGFyVCwgdHJhaXRzPiYgZSwgCi0gICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVnZXhfbWF0Y2gocy5iZWdpbigpLCBzLmVuZCgpLCBtLCBlLCBmbGFncyk7Ci19Ci10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLWlubGluZSBib29sIHJlZ2V4X21hdGNoKGNvbnN0IGNoYXJUKiBzdHIsIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzaWNfcmVnZXg8Y2hhclQsIHRyYWl0cz4mIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIG1hdGNoX3Jlc3VsdHM8Y29uc3QgY2hhclQqPiBtOwotICAgcmV0dXJuIHJlZ2V4X21hdGNoKHN0ciwgc3RyICsgdHJhaXRzOjpsZW5ndGgoc3RyKSwgbSwgZSwgZmxhZ3MgfCByZWdleF9jb25zdGFudHM6Om1hdGNoX2FueSk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBTVCwgY2xhc3MgU0EsIGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci1pbmxpbmUgYm9vbCByZWdleF9tYXRjaChjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVCwgU1QsIFNBPiYgcywgCi0gICAgICAgICAgICAgICAgIGNvbnN0IGJhc2ljX3JlZ2V4PGNoYXJULCB0cmFpdHM+JiBlLCAKLSAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQsIFNULCBTQT46OmNvbnN0X2l0ZXJhdG9yIGl0ZXJhdG9yOwotICAgbWF0Y2hfcmVzdWx0czxpdGVyYXRvcj4gbTsKLSAgIHJldHVybiByZWdleF9tYXRjaChzLmJlZ2luKCksIHMuZW5kKCksIG0sIGUsIGZsYWdzIHwgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9hbnkpOwotfQotI2Vsc2UgIC8vIHBhcnRpYWwgb3JkZXJpbmcKLWlubGluZSBib29sIHJlZ2V4X21hdGNoKGNvbnN0IGNoYXIqIHN0ciwgCi0gICAgICAgICAgICAgICAgICAgICAgICBjbWF0Y2gmIG0sIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZWdleF9tYXRjaChzdHIsIHN0ciArIHJlZ2V4Ojp0cmFpdHNfdHlwZTo6bGVuZ3RoKHN0ciksIG0sIGUsIGZsYWdzKTsKLX0KLWlubGluZSBib29sIHJlZ2V4X21hdGNoKGNvbnN0IGNoYXIqIHN0ciwgCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgbWF0Y2hfcmVzdWx0czxjb25zdCBjaGFyKj4gbTsKLSAgIHJldHVybiByZWdleF9tYXRjaChzdHIsIHN0ciArIHJlZ2V4Ojp0cmFpdHNfdHlwZTo6bGVuZ3RoKHN0ciksIG0sIGUsIGZsYWdzIHwgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9hbnkpOwotfQotI2lmbmRlZiBORE5CT09TVF9OT19TVERfTE9DQUxFCi1pbmxpbmUgYm9vbCByZWdleF9tYXRjaChjb25zdCBjaGFyKiBzdHIsIAotICAgICAgICAgICAgICAgICAgICAgICAgY21hdGNoJiBtLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2ljX3JlZ2V4PGNoYXIsIGNwcF9yZWdleF90cmFpdHM8Y2hhcj4gPiYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlZ2V4X21hdGNoKHN0ciwgc3RyICsgcmVnZXg6OnRyYWl0c190eXBlOjpsZW5ndGgoc3RyKSwgbSwgZSwgZmxhZ3MpOwotfQotaW5saW5lIGJvb2wgcmVnZXhfbWF0Y2goY29uc3QgY2hhciogc3RyLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2ljX3JlZ2V4PGNoYXIsIGNwcF9yZWdleF90cmFpdHM8Y2hhcj4gPiYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgbWF0Y2hfcmVzdWx0czxjb25zdCBjaGFyKj4gbTsKLSAgIHJldHVybiByZWdleF9tYXRjaChzdHIsIHN0ciArIHJlZ2V4Ojp0cmFpdHNfdHlwZTo6bGVuZ3RoKHN0ciksIG0sIGUsIGZsYWdzIHwgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9hbnkpOwotfQotI2VuZGlmCi1pbmxpbmUgYm9vbCByZWdleF9tYXRjaChjb25zdCBjaGFyKiBzdHIsIAotICAgICAgICAgICAgICAgICAgICAgICAgY21hdGNoJiBtLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2ljX3JlZ2V4PGNoYXIsIGNfcmVnZXhfdHJhaXRzPGNoYXI+ID4mIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZWdleF9tYXRjaChzdHIsIHN0ciArIHJlZ2V4Ojp0cmFpdHNfdHlwZTo6bGVuZ3RoKHN0ciksIG0sIGUsIGZsYWdzKTsKLX0KLWlubGluZSBib29sIHJlZ2V4X21hdGNoKGNvbnN0IGNoYXIqIHN0ciwgCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNpY19yZWdleDxjaGFyLCBjX3JlZ2V4X3RyYWl0czxjaGFyPiA+JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICBtYXRjaF9yZXN1bHRzPGNvbnN0IGNoYXIqPiBtOwotICAgcmV0dXJuIHJlZ2V4X21hdGNoKHN0ciwgc3RyICsgcmVnZXg6OnRyYWl0c190eXBlOjpsZW5ndGgoc3RyKSwgbSwgZSwgZmxhZ3MgfCByZWdleF9jb25zdGFudHM6Om1hdGNoX2FueSk7Ci19Ci0jaWYgZGVmaW5lZChfV0lOMzIpICYmICFkZWZpbmVkKE5ETkJPT1NUX1JFR0VYX05PX1czMikKLWlubGluZSBib29sIHJlZ2V4X21hdGNoKGNvbnN0IGNoYXIqIHN0ciwgCi0gICAgICAgICAgICAgICAgICAgICAgICBjbWF0Y2gmIG0sIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzaWNfcmVnZXg8Y2hhciwgdzMyX3JlZ2V4X3RyYWl0czxjaGFyPiA+JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVnZXhfbWF0Y2goc3RyLCBzdHIgKyByZWdleDo6dHJhaXRzX3R5cGU6Omxlbmd0aChzdHIpLCBtLCBlLCBmbGFncyk7Ci19Ci1pbmxpbmUgYm9vbCByZWdleF9tYXRjaChjb25zdCBjaGFyKiBzdHIsIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzaWNfcmVnZXg8Y2hhciwgdzMyX3JlZ2V4X3RyYWl0czxjaGFyPiA+JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICBtYXRjaF9yZXN1bHRzPGNvbnN0IGNoYXIqPiBtOwotICAgcmV0dXJuIHJlZ2V4X21hdGNoKHN0ciwgc3RyICsgcmVnZXg6OnRyYWl0c190eXBlOjpsZW5ndGgoc3RyKSwgbSwgZSwgZmxhZ3MgfCByZWdleF9jb25zdGFudHM6Om1hdGNoX2FueSk7Ci19Ci0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfTk9fV1JFR0VYCi1pbmxpbmUgYm9vbCByZWdleF9tYXRjaChjb25zdCB3Y2hhcl90KiBzdHIsIAotICAgICAgICAgICAgICAgICAgICAgICAgd2NtYXRjaCYgbSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3cmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZWdleF9tYXRjaChzdHIsIHN0ciArIHdyZWdleDo6dHJhaXRzX3R5cGU6Omxlbmd0aChzdHIpLCBtLCBlLCBmbGFncyk7Ci19Ci1pbmxpbmUgYm9vbCByZWdleF9tYXRjaChjb25zdCB3Y2hhcl90KiBzdHIsIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd3JlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICBtYXRjaF9yZXN1bHRzPGNvbnN0IHdjaGFyX3QqPiBtOwotICAgcmV0dXJuIHJlZ2V4X21hdGNoKHN0ciwgc3RyICsgd3JlZ2V4Ojp0cmFpdHNfdHlwZTo6bGVuZ3RoKHN0ciksIG0sIGUsIGZsYWdzIHwgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9hbnkpOwotfQotI2lmbmRlZiBORE5CT09TVF9OT19TVERfTE9DQUxFCi1pbmxpbmUgYm9vbCByZWdleF9tYXRjaChjb25zdCB3Y2hhcl90KiBzdHIsIAotICAgICAgICAgICAgICAgICAgICAgICAgd2NtYXRjaCYgbSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNpY19yZWdleDx3Y2hhcl90LCBjcHBfcmVnZXhfdHJhaXRzPHdjaGFyX3Q+ID4mIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZWdleF9tYXRjaChzdHIsIHN0ciArIHdyZWdleDo6dHJhaXRzX3R5cGU6Omxlbmd0aChzdHIpLCBtLCBlLCBmbGFncyk7Ci19Ci1pbmxpbmUgYm9vbCByZWdleF9tYXRjaChjb25zdCB3Y2hhcl90KiBzdHIsIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzaWNfcmVnZXg8d2NoYXJfdCwgY3BwX3JlZ2V4X3RyYWl0czx3Y2hhcl90PiA+JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICBtYXRjaF9yZXN1bHRzPGNvbnN0IHdjaGFyX3QqPiBtOwotICAgcmV0dXJuIHJlZ2V4X21hdGNoKHN0ciwgc3RyICsgd3JlZ2V4Ojp0cmFpdHNfdHlwZTo6bGVuZ3RoKHN0ciksIG0sIGUsIGZsYWdzIHwgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9hbnkpOwotfQotI2VuZGlmCi1pbmxpbmUgYm9vbCByZWdleF9tYXRjaChjb25zdCB3Y2hhcl90KiBzdHIsIAotICAgICAgICAgICAgICAgICAgICAgICAgd2NtYXRjaCYgbSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNpY19yZWdleDx3Y2hhcl90LCBjX3JlZ2V4X3RyYWl0czx3Y2hhcl90PiA+JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVnZXhfbWF0Y2goc3RyLCBzdHIgKyB3cmVnZXg6OnRyYWl0c190eXBlOjpsZW5ndGgoc3RyKSwgbSwgZSwgZmxhZ3MpOwotfQotaW5saW5lIGJvb2wgcmVnZXhfbWF0Y2goY29uc3Qgd2NoYXJfdCogc3RyLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2ljX3JlZ2V4PHdjaGFyX3QsIGNfcmVnZXhfdHJhaXRzPHdjaGFyX3Q+ID4mIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIG1hdGNoX3Jlc3VsdHM8Y29uc3Qgd2NoYXJfdCo+IG07Ci0gICByZXR1cm4gcmVnZXhfbWF0Y2goc3RyLCBzdHIgKyB3cmVnZXg6OnRyYWl0c190eXBlOjpsZW5ndGgoc3RyKSwgbSwgZSwgZmxhZ3MgfCByZWdleF9jb25zdGFudHM6Om1hdGNoX2FueSk7Ci19Ci0jaWYgZGVmaW5lZChfV0lOMzIpICYmICFkZWZpbmVkKE5ETkJPT1NUX1JFR0VYX05PX1czMikKLWlubGluZSBib29sIHJlZ2V4X21hdGNoKGNvbnN0IHdjaGFyX3QqIHN0ciwgCi0gICAgICAgICAgICAgICAgICAgICAgICB3Y21hdGNoJiBtLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2ljX3JlZ2V4PHdjaGFyX3QsIHczMl9yZWdleF90cmFpdHM8d2NoYXJfdD4gPiYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlZ2V4X21hdGNoKHN0ciwgc3RyICsgd3JlZ2V4Ojp0cmFpdHNfdHlwZTo6bGVuZ3RoKHN0ciksIG0sIGUsIGZsYWdzKTsKLX0KLWlubGluZSBib29sIHJlZ2V4X21hdGNoKGNvbnN0IHdjaGFyX3QqIHN0ciwgCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNpY19yZWdleDx3Y2hhcl90LCB3MzJfcmVnZXhfdHJhaXRzPHdjaGFyX3Q+ID4mIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIG1hdGNoX3Jlc3VsdHM8Y29uc3Qgd2NoYXJfdCo+IG07Ci0gICByZXR1cm4gcmVnZXhfbWF0Y2goc3RyLCBzdHIgKyB3cmVnZXg6OnRyYWl0c190eXBlOjpsZW5ndGgoc3RyKSwgbSwgZSwgZmxhZ3MgfCByZWdleF9jb25zdGFudHM6Om1hdGNoX2FueSk7Ci19Ci0jZW5kaWYKLSNlbmRpZgotaW5saW5lIGJvb2wgcmVnZXhfbWF0Y2goY29uc3Qgc3RkOjpzdHJpbmcmIHMsIAotICAgICAgICAgICAgICAgICAgICAgICAgc21hdGNoJiBtLAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZWdleF9tYXRjaChzLmJlZ2luKCksIHMuZW5kKCksIG0sIGUsIGZsYWdzKTsKLX0KLWlubGluZSBib29sIHJlZ2V4X21hdGNoKGNvbnN0IHN0ZDo6c3RyaW5nJiBzLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICBtYXRjaF9yZXN1bHRzPHN0ZDo6c3RyaW5nOjpjb25zdF9pdGVyYXRvcj4gbTsKLSAgIHJldHVybiByZWdleF9tYXRjaChzLmJlZ2luKCksIHMuZW5kKCksIG0sIGUsIGZsYWdzIHwgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9hbnkpOwotfQotI2lmbmRlZiBORE5CT09TVF9OT19TVERfTE9DQUxFCi1pbmxpbmUgYm9vbCByZWdleF9tYXRjaChjb25zdCBzdGQ6OnN0cmluZyYgcywgCi0gICAgICAgICAgICAgICAgICAgICAgICBzbWF0Y2gmIG0sCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNpY19yZWdleDxjaGFyLCBjcHBfcmVnZXhfdHJhaXRzPGNoYXI+ID4mIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZWdleF9tYXRjaChzLmJlZ2luKCksIHMuZW5kKCksIG0sIGUsIGZsYWdzKTsKLX0KLWlubGluZSBib29sIHJlZ2V4X21hdGNoKGNvbnN0IHN0ZDo6c3RyaW5nJiBzLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2ljX3JlZ2V4PGNoYXIsIGNwcF9yZWdleF90cmFpdHM8Y2hhcj4gPiYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgbWF0Y2hfcmVzdWx0czxzdGQ6OnN0cmluZzo6Y29uc3RfaXRlcmF0b3I+IG07Ci0gICByZXR1cm4gcmVnZXhfbWF0Y2gocy5iZWdpbigpLCBzLmVuZCgpLCBtLCBlLCBmbGFncyB8IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfYW55KTsKLX0KLSNlbmRpZgotaW5saW5lIGJvb2wgcmVnZXhfbWF0Y2goY29uc3Qgc3RkOjpzdHJpbmcmIHMsIAotICAgICAgICAgICAgICAgICAgICAgICAgc21hdGNoJiBtLAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzaWNfcmVnZXg8Y2hhciwgY19yZWdleF90cmFpdHM8Y2hhcj4gPiYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlZ2V4X21hdGNoKHMuYmVnaW4oKSwgcy5lbmQoKSwgbSwgZSwgZmxhZ3MpOwotfQotaW5saW5lIGJvb2wgcmVnZXhfbWF0Y2goY29uc3Qgc3RkOjpzdHJpbmcmIHMsIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzaWNfcmVnZXg8Y2hhciwgY19yZWdleF90cmFpdHM8Y2hhcj4gPiYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgbWF0Y2hfcmVzdWx0czxzdGQ6OnN0cmluZzo6Y29uc3RfaXRlcmF0b3I+IG07Ci0gICByZXR1cm4gcmVnZXhfbWF0Y2gocy5iZWdpbigpLCBzLmVuZCgpLCBtLCBlLCBmbGFncyB8IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfYW55KTsKLX0KLSNpZiBkZWZpbmVkKF9XSU4zMikgJiYgIWRlZmluZWQoTkROQk9PU1RfUkVHRVhfTk9fVzMyKQotaW5saW5lIGJvb2wgcmVnZXhfbWF0Y2goY29uc3Qgc3RkOjpzdHJpbmcmIHMsIAotICAgICAgICAgICAgICAgICAgICAgICAgc21hdGNoJiBtLAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzaWNfcmVnZXg8Y2hhciwgdzMyX3JlZ2V4X3RyYWl0czxjaGFyPiA+JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVnZXhfbWF0Y2gocy5iZWdpbigpLCBzLmVuZCgpLCBtLCBlLCBmbGFncyk7Ci19Ci1pbmxpbmUgYm9vbCByZWdleF9tYXRjaChjb25zdCBzdGQ6OnN0cmluZyYgcywgCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNpY19yZWdleDxjaGFyLCB3MzJfcmVnZXhfdHJhaXRzPGNoYXI+ID4mIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIG1hdGNoX3Jlc3VsdHM8c3RkOjpzdHJpbmc6OmNvbnN0X2l0ZXJhdG9yPiBtOwotICAgcmV0dXJuIHJlZ2V4X21hdGNoKHMuYmVnaW4oKSwgcy5lbmQoKSwgbSwgZSwgZmxhZ3MgfCByZWdleF9jb25zdGFudHM6Om1hdGNoX2FueSk7Ci19Ci0jZW5kaWYKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19XUkVHRVgpCi1pbmxpbmUgYm9vbCByZWdleF9tYXRjaChjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzx3Y2hhcl90PiYgcywgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9yZXN1bHRzPHN0ZDo6YmFzaWNfc3RyaW5nPHdjaGFyX3Q+Ojpjb25zdF9pdGVyYXRvcj4mIG0sCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3cmVnZXgmIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZWdleF9tYXRjaChzLmJlZ2luKCksIHMuZW5kKCksIG0sIGUsIGZsYWdzKTsKLX0KLWlubGluZSBib29sIHJlZ2V4X21hdGNoKGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPHdjaGFyX3Q+JiBzLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdyZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgbWF0Y2hfcmVzdWx0czxzdGQ6OmJhc2ljX3N0cmluZzx3Y2hhcl90Pjo6Y29uc3RfaXRlcmF0b3I+IG07Ci0gICByZXR1cm4gcmVnZXhfbWF0Y2gocy5iZWdpbigpLCBzLmVuZCgpLCBtLCBlLCBmbGFncyB8IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfYW55KTsKLX0KLSNpZm5kZWYgTkROQk9PU1RfTk9fU1REX0xPQ0FMRQotaW5saW5lIGJvb2wgcmVnZXhfbWF0Y2goY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8d2NoYXJfdD4mIHMsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfcmVzdWx0czxzdGQ6OmJhc2ljX3N0cmluZzx3Y2hhcl90Pjo6Y29uc3RfaXRlcmF0b3I+JiBtLAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzaWNfcmVnZXg8d2NoYXJfdCwgY3BwX3JlZ2V4X3RyYWl0czx3Y2hhcl90PiA+JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVnZXhfbWF0Y2gocy5iZWdpbigpLCBzLmVuZCgpLCBtLCBlLCBmbGFncyk7Ci19Ci1pbmxpbmUgYm9vbCByZWdleF9tYXRjaChjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzx3Y2hhcl90PiYgcywgCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNpY19yZWdleDx3Y2hhcl90LCBjcHBfcmVnZXhfdHJhaXRzPHdjaGFyX3Q+ID4mIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIG1hdGNoX3Jlc3VsdHM8c3RkOjpiYXNpY19zdHJpbmc8d2NoYXJfdD46OmNvbnN0X2l0ZXJhdG9yPiBtOwotICAgcmV0dXJuIHJlZ2V4X21hdGNoKHMuYmVnaW4oKSwgcy5lbmQoKSwgbSwgZSwgZmxhZ3MgfCByZWdleF9jb25zdGFudHM6Om1hdGNoX2FueSk7Ci19Ci0jZW5kaWYKLWlubGluZSBib29sIHJlZ2V4X21hdGNoKGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPHdjaGFyX3Q+JiBzLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX3Jlc3VsdHM8c3RkOjpiYXNpY19zdHJpbmc8d2NoYXJfdD46OmNvbnN0X2l0ZXJhdG9yPiYgbSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2ljX3JlZ2V4PHdjaGFyX3QsIGNfcmVnZXhfdHJhaXRzPHdjaGFyX3Q+ID4mIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZWdleF9tYXRjaChzLmJlZ2luKCksIHMuZW5kKCksIG0sIGUsIGZsYWdzKTsKLX0KLWlubGluZSBib29sIHJlZ2V4X21hdGNoKGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPHdjaGFyX3Q+JiBzLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2ljX3JlZ2V4PHdjaGFyX3QsIGNfcmVnZXhfdHJhaXRzPHdjaGFyX3Q+ID4mIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIG1hdGNoX3Jlc3VsdHM8c3RkOjpiYXNpY19zdHJpbmc8d2NoYXJfdD46OmNvbnN0X2l0ZXJhdG9yPiBtOwotICAgcmV0dXJuIHJlZ2V4X21hdGNoKHMuYmVnaW4oKSwgcy5lbmQoKSwgbSwgZSwgZmxhZ3MgfCByZWdleF9jb25zdGFudHM6Om1hdGNoX2FueSk7Ci19Ci0jaWYgZGVmaW5lZChfV0lOMzIpICYmICFkZWZpbmVkKE5ETkJPT1NUX1JFR0VYX05PX1czMikKLWlubGluZSBib29sIHJlZ2V4X21hdGNoKGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPHdjaGFyX3Q+JiBzLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX3Jlc3VsdHM8c3RkOjpiYXNpY19zdHJpbmc8d2NoYXJfdD46OmNvbnN0X2l0ZXJhdG9yPiYgbSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2ljX3JlZ2V4PHdjaGFyX3QsIHczMl9yZWdleF90cmFpdHM8d2NoYXJfdD4gPiYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlZ2V4X21hdGNoKHMuYmVnaW4oKSwgcy5lbmQoKSwgbSwgZSwgZmxhZ3MpOwotfQotaW5saW5lIGJvb2wgcmVnZXhfbWF0Y2goY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8d2NoYXJfdD4mIHMsIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzaWNfcmVnZXg8d2NoYXJfdCwgdzMyX3JlZ2V4X3RyYWl0czx3Y2hhcl90PiA+JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICBtYXRjaF9yZXN1bHRzPHN0ZDo6YmFzaWNfc3RyaW5nPHdjaGFyX3Q+Ojpjb25zdF9pdGVyYXRvcj4gbTsKLSAgIHJldHVybiByZWdleF9tYXRjaChzLmJlZ2luKCksIHMuZW5kKCksIG0sIGUsIGZsYWdzIHwgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9hbnkpOwotfQotI2VuZGlmCi0jZW5kaWYKLQotI2VuZGlmCi0KLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1NVRkZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgICAvLyBORE5CT09TVF9SRUdFWF9NQVRDSF9IUFAKLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KLQotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfbWVyZ2UuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9yZWdleF9tZXJnZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxYjkxNGYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9yZWdleF9tZXJnZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5MyArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAyCi0gKiBKb2huIE1hZGRvY2sKLSAqCi0gKiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLSAqIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotICogTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqLwotCi0gLyoKLSAgKiAgIExPQ0FUSU9OOiAgICBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0gICogICBGSUxFICAgICAgICAgcmVnZXhfZm9ybWF0LmhwcAotICAqICAgVkVSU0lPTiAgICAgIHNlZSA8bmRuYm9vc3QvdmVyc2lvbi5ocHA+Ci0gICogICBERVNDUklQVElPTjogUHJvdmlkZXMgZm9ybWF0dGluZyBvdXRwdXQgcm91dGluZXMgZm9yIHNlYXJjaCBhbmQgcmVwbGFjZQotICAqICAgICAgICAgICAgICAgIG9wZXJhdGlvbnMuICBOb3RlIHRoaXMgaXMgYW4gaW50ZXJuYWwgaGVhZGVyIGZpbGUgaW5jbHVkZWQKLSAgKiAgICAgICAgICAgICAgICBieSByZWdleC5ocHAsIGRvIG5vdCBpbmNsdWRlIG9uIGl0cyBvd24uCi0gICovCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfVjRfUkVHRVhfTUVSR0VfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JFR0VYX1Y0X1JFR0VYX01FUkdFX0hQUAotCi0KLW5hbWVzcGFjZSBuZG5ib29zdHsKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1BSRUZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi10ZW1wbGF0ZSA8Y2xhc3MgT3V0cHV0SXRlcmF0b3IsIGNsYXNzIEl0ZXJhdG9yLCBjbGFzcyB0cmFpdHMsIGNsYXNzIGNoYXJUPgotaW5saW5lIE91dHB1dEl0ZXJhdG9yIHJlZ2V4X21lcmdlKE91dHB1dEl0ZXJhdG9yIG91dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRvciBmaXJzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRvciBsYXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2ljX3JlZ2V4PGNoYXJULCB0cmFpdHM+JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyVCogZm10LCAKLSAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlZ2V4X3JlcGxhY2Uob3V0LCBmaXJzdCwgbGFzdCwgZSwgZm10LCBmbGFncyk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBPdXRwdXRJdGVyYXRvciwgY2xhc3MgSXRlcmF0b3IsIGNsYXNzIHRyYWl0cywgY2xhc3MgY2hhclQ+Ci1pbmxpbmUgT3V0cHV0SXRlcmF0b3IgcmVnZXhfbWVyZ2UoT3V0cHV0SXRlcmF0b3Igb3V0LAotICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdG9yIGZpcnN0LAotICAgICAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdG9yIGxhc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzaWNfcmVnZXg8Y2hhclQsIHRyYWl0cz4mIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJUPiYgZm10LAotICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVnZXhfbWVyZ2Uob3V0LCBmaXJzdCwgbGFzdCwgZSwgZm10LmNfc3RyKCksIGZsYWdzKTsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIHRyYWl0cywgY2xhc3MgY2hhclQ+Ci1pbmxpbmUgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQ+IHJlZ2V4X21lcmdlKGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJUPiYgcywKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNpY19yZWdleDxjaGFyVCwgdHJhaXRzPiYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhclQqIGZtdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlZ2V4X3JlcGxhY2UocywgZSwgZm10LCBmbGFncyk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyB0cmFpdHMsIGNsYXNzIGNoYXJUPgotaW5saW5lIHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJUPiByZWdleF9tZXJnZShjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVD4mIHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzaWNfcmVnZXg8Y2hhclQsIHRyYWl0cz4mIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJUPiYgZm10LAotICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVnZXhfcmVwbGFjZShzLCBlLCBmbXQsIGZsYWdzKTsKLX0KLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1NVRkZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgIC8vIE5ETkJPT1NUX1JFR0VYX1Y0X1JFR0VYX01FUkdFX0hQUAotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfcmF3X2J1ZmZlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X3Jhd19idWZmZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOTkwMzU5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfcmF3X2J1ZmZlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMTAgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMgotICogSm9obiBNYWRkb2NrCi0gKgotICogVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0gKiBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLSAqIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKi8KLQotIC8qCi0gICogICBMT0NBVElPTjogICAgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotICAqICAgRklMRSAgICAgICAgIHJlZ2V4X3Jhd19idWZmZXIuaHBwCi0gICogICBWRVJTSU9OICAgICAgc2VlIDxuZG5ib29zdC92ZXJzaW9uLmhwcD4KLSAgKiAgIERFU0NSSVBUSU9OOiBSYXcgY2hhcmFjdGVyIGJ1ZmZlciBmb3IgcmVnZXggY29kZS4KLSAgKiAgICAgICAgICAgICAgICBOb3RlIHRoaXMgaXMgYW4gaW50ZXJuYWwgaGVhZGVyIGZpbGUgaW5jbHVkZWQKLSAgKiAgICAgICAgICAgICAgICBieSByZWdleC5ocHAsIGRvIG5vdCBpbmNsdWRlIG9uIGl0cyBvd24uCi0gICovCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfUkFXX0JVRkZFUl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfUkFXX0JVRkZFUl9IUFAKLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9DT05GSUdfSFBQCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvY29uZmlnLmhwcD4KLSNlbmRpZgotCi0jaW5jbHVkZSA8YWxnb3JpdGhtPgotI2luY2x1ZGUgPGNzdGRkZWY+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdHsKLSAgIG5hbWVzcGFjZSByZV9kZXRhaWx7Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9QUkVGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotc3RydWN0IGVtcHR5X3BhZGRpbmd7fTsKLQotdW5pb24gcGFkZGluZwotewotICAgdm9pZCogcDsKLSAgIHVuc2lnbmVkIGludCBpOwotfTsKLQotdGVtcGxhdGUgPGludCBOPgotc3RydWN0IHBhZGRpbmczCi17Ci0gICBlbnVtewotICAgICAgcGFkZGluZ19zaXplID0gOCwKLSAgICAgIHBhZGRpbmdfbWFzayA9IDcKLSAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcGFkZGluZzM8Mj4KLXsKLSAgIGVudW17Ci0gICAgICBwYWRkaW5nX3NpemUgPSAyLAotICAgICAgcGFkZGluZ19tYXNrID0gMQotICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBwYWRkaW5nMzw0PgotewotICAgZW51bXsKLSAgICAgIHBhZGRpbmdfc2l6ZSA9IDQsCi0gICAgICBwYWRkaW5nX21hc2sgPSAzCi0gICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHBhZGRpbmczPDg+Ci17Ci0gICBlbnVtewotICAgICAgcGFkZGluZ19zaXplID0gOCwKLSAgICAgIHBhZGRpbmdfbWFzayA9IDcKLSAgIH07Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgcGFkZGluZzM8MTY+Ci17Ci0gICBlbnVtewotICAgICAgcGFkZGluZ19zaXplID0gMTYsCi0gICAgICBwYWRkaW5nX21hc2sgPSAxNQotICAgfTsKLX07Ci0KLWVudW17Ci0gICBwYWRkaW5nX3NpemUgPSBwYWRkaW5nMzxzaXplb2YocGFkZGluZyk+OjpwYWRkaW5nX3NpemUsCi0gICBwYWRkaW5nX21hc2sgPSBwYWRkaW5nMzxzaXplb2YocGFkZGluZyk+OjpwYWRkaW5nX21hc2sKLX07Ci0KLS8vCi0vLyBjbGFzcyByYXdfc3RvcmFnZQotLy8gYmFzaWNhbGx5IHRoaXMgaXMgYSBzaW1wbGlmaWVkIHZlY3Rvcjx1bnNpZ25lZCBjaGFyPgotLy8gdGhpcyBpcyB1c2VkIGJ5IGJhc2ljX3JlZ2V4IGZvciBleHByZXNzaW9uIHN0b3JhZ2UKLS8vCi0KLWNsYXNzIE5ETkJPT1NUX1JFR0VYX0RFQ0wgcmF3X3N0b3JhZ2UKLXsKLXB1YmxpYzoKLSAgIHR5cGVkZWYgc3RkOjpzaXplX3QgICAgICAgICAgIHNpemVfdHlwZTsKLSAgIHR5cGVkZWYgdW5zaWduZWQgY2hhciogICAgICAgIHBvaW50ZXI7Ci1wcml2YXRlOgotICAgcG9pbnRlciBsYXN0LCBzdGFydCwgZW5kOwotcHVibGljOgotCi0gICByYXdfc3RvcmFnZSgpOwotICAgcmF3X3N0b3JhZ2Uoc2l6ZV90eXBlIG4pOwotCi0gICB+cmF3X3N0b3JhZ2UoKQotICAgewotICAgICAgOjpvcGVyYXRvciBkZWxldGUoc3RhcnQpOwotICAgfQotCi0gICB2b2lkIE5ETkJPT1NUX1JFR0VYX0NBTEwgcmVzaXplKHNpemVfdHlwZSBuKTsKLSAgIAotICAgdm9pZCogTkROQk9PU1RfUkVHRVhfQ0FMTCBleHRlbmQoc2l6ZV90eXBlIG4pCi0gICB7Ci0gICAgICBpZihzaXplX3R5cGUobGFzdCAtIGVuZCkgPCBuKQotICAgICAgICAgcmVzaXplKG4gKyAoZW5kIC0gc3RhcnQpKTsKLSAgICAgIHJlZ2lzdGVyIHBvaW50ZXIgcmVzdWx0ID0gZW5kOwotICAgICAgZW5kICs9IG47Ci0gICAgICByZXR1cm4gcmVzdWx0OwotICAgfQotCi0gICB2b2lkKiBORE5CT09TVF9SRUdFWF9DQUxMIGluc2VydChzaXplX3R5cGUgcG9zLCBzaXplX3R5cGUgbik7Ci0KLSAgIHNpemVfdHlwZSBORE5CT09TVF9SRUdFWF9DQUxMIHNpemUoKQotICAgewotICAgICAgcmV0dXJuIGVuZCAtIHN0YXJ0OwotICAgfQotCi0gICBzaXplX3R5cGUgTkROQk9PU1RfUkVHRVhfQ0FMTCBjYXBhY2l0eSgpCi0gICB7Ci0gICAgICByZXR1cm4gbGFzdCAtIHN0YXJ0OwotICAgfQotCi0gICB2b2lkKiBORE5CT09TVF9SRUdFWF9DQUxMIGRhdGEoKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gc3RhcnQ7Ci0gICB9Ci0KLSAgIHNpemVfdHlwZSBORE5CT09TVF9SRUdFWF9DQUxMIGluZGV4KHZvaWQqIHB0cikKLSAgIHsKLSAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxwb2ludGVyPihwdHIpIC0gc3RhdGljX2Nhc3Q8cG9pbnRlcj4oZGF0YSgpKTsKLSAgIH0KLQotICAgdm9pZCBORE5CT09TVF9SRUdFWF9DQUxMIGNsZWFyKCkKLSAgIHsKLSAgICAgIGVuZCA9IHN0YXJ0OwotICAgfQotCi0gICB2b2lkIE5ETkJPT1NUX1JFR0VYX0NBTEwgYWxpZ24oKQotICAgewotICAgICAgLy8gbW92ZSBlbmQgdXAgdG8gYSBib3VuZGFyeToKLSAgICAgIGVuZCA9IHN0YXJ0ICsgKCgoZW5kIC0gc3RhcnQpICsgcGFkZGluZ19tYXNrKSAmIH5wYWRkaW5nX21hc2spOwotICAgfQotICAgdm9pZCBzd2FwKHJhd19zdG9yYWdlJiB0aGF0KQotICAgewotICAgICAgc3RkOjpzd2FwKHN0YXJ0LCB0aGF0LnN0YXJ0KTsKLSAgICAgIHN0ZDo6c3dhcChlbmQsIHRoYXQuZW5kKTsKLSAgICAgIHN0ZDo6c3dhcChsYXN0LCB0aGF0Lmxhc3QpOwotICB9Ci19OwotCi1pbmxpbmUgcmF3X3N0b3JhZ2U6OnJhd19zdG9yYWdlKCkKLXsKLSAgIGxhc3QgPSBzdGFydCA9IGVuZCA9IDA7Ci19Ci0KLWlubGluZSByYXdfc3RvcmFnZTo6cmF3X3N0b3JhZ2Uoc2l6ZV90eXBlIG4pCi17Ci0gICBzdGFydCA9IGVuZCA9IHN0YXRpY19jYXN0PHBvaW50ZXI+KDo6b3BlcmF0b3IgbmV3KG4pKTsKLSAgIE5ETkJPT1NUX1JFR0VYX05PRUhfQVNTRVJUKHN0YXJ0KQotICAgbGFzdCA9IHN0YXJ0ICsgbjsKLX0KLQotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfU1VGRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIHJlX2RldGFpbAotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmCi0KLQotCi0KLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X3JlcGxhY2UuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9yZWdleF9yZXBsYWNlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmIyNGZhOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X3JlcGxhY2UuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTkgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwOQotICogSm9obiBNYWRkb2NrCi0gKgotICogVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0gKiBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLSAqIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKi8KLQotIC8qCi0gICogICBMT0NBVElPTjogICAgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotICAqICAgRklMRSAgICAgICAgIHJlZ2V4X2Zvcm1hdC5ocHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IFByb3ZpZGVzIGZvcm1hdHRpbmcgb3V0cHV0IHJvdXRpbmVzIGZvciBzZWFyY2ggYW5kIHJlcGxhY2UKLSAgKiAgICAgICAgICAgICAgICBvcGVyYXRpb25zLiAgTm90ZSB0aGlzIGlzIGFuIGludGVybmFsIGhlYWRlciBmaWxlIGluY2x1ZGVkCi0gICogICAgICAgICAgICAgICAgYnkgcmVnZXguaHBwLCBkbyBub3QgaW5jbHVkZSBvbiBpdHMgb3duLgotICAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1Y0X1JFR0VYX1JFUExBQ0VfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JFR0VYX1Y0X1JFR0VYX1JFUExBQ0VfSFBQCi0KLQotbmFtZXNwYWNlIG5kbmJvb3N0ewotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfUFJFRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLXRlbXBsYXRlIDxjbGFzcyBPdXRwdXRJdGVyYXRvciwgY2xhc3MgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yLCBjbGFzcyB0cmFpdHMsIGNsYXNzIGNoYXJULCBjbGFzcyBGb3JtYXR0ZXI+Ci1PdXRwdXRJdGVyYXRvciByZWdleF9yZXBsYWNlKE91dHB1dEl0ZXJhdG9yIG91dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBCaWRpcmVjdGlvbmFsSXRlcmF0b3IgZmlyc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIGxhc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzaWNfcmVnZXg8Y2hhclQsIHRyYWl0cz4mIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdHRlciBmbXQsIAotICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZWdleF9pdGVyYXRvcjxCaWRpcmVjdGlvbmFsSXRlcmF0b3IsIGNoYXJULCB0cmFpdHM+IGkoZmlyc3QsIGxhc3QsIGUsIGZsYWdzKTsKLSAgIHJlZ2V4X2l0ZXJhdG9yPEJpZGlyZWN0aW9uYWxJdGVyYXRvciwgY2hhclQsIHRyYWl0cz4gajsKLSAgIGlmKGkgPT0gaikKLSAgIHsKLSAgICAgIGlmKCEoZmxhZ3MgJiByZWdleF9jb25zdGFudHM6OmZvcm1hdF9ub19jb3B5KSkKLSAgICAgICAgIG91dCA9IHJlX2RldGFpbDo6Y29weShmaXJzdCwgbGFzdCwgb3V0KTsKLSAgIH0KLSAgIGVsc2UKLSAgIHsKLSAgICAgIEJpZGlyZWN0aW9uYWxJdGVyYXRvciBsYXN0X20oZmlyc3QpOwotICAgICAgd2hpbGUoaSAhPSBqKQotICAgICAgewotICAgICAgICAgaWYoIShmbGFncyAmIHJlZ2V4X2NvbnN0YW50czo6Zm9ybWF0X25vX2NvcHkpKQotICAgICAgICAgICAgb3V0ID0gcmVfZGV0YWlsOjpjb3B5KGktPnByZWZpeCgpLmZpcnN0LCBpLT5wcmVmaXgoKS5zZWNvbmQsIG91dCk7IAotICAgICAgICAgb3V0ID0gaS0+Zm9ybWF0KG91dCwgZm10LCBmbGFncywgZSk7Ci0gICAgICAgICBsYXN0X20gPSAoKmkpWzBdLnNlY29uZDsKLSAgICAgICAgIGlmKGZsYWdzICYgcmVnZXhfY29uc3RhbnRzOjpmb3JtYXRfZmlyc3Rfb25seSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgKytpOwotICAgICAgfQotICAgICAgaWYoIShmbGFncyAmIHJlZ2V4X2NvbnN0YW50czo6Zm9ybWF0X25vX2NvcHkpKQotICAgICAgICAgb3V0ID0gcmVfZGV0YWlsOjpjb3B5KGxhc3RfbSwgbGFzdCwgb3V0KTsKLSAgIH0KLSAgIHJldHVybiBvdXQ7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyB0cmFpdHMsIGNsYXNzIGNoYXJULCBjbGFzcyBGb3JtYXR0ZXI+Ci1zdGQ6OmJhc2ljX3N0cmluZzxjaGFyVD4gcmVnZXhfcmVwbGFjZShjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVD4mIHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzaWNfcmVnZXg8Y2hhclQsIHRyYWl0cz4mIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdHRlciBmbXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJUPiByZXN1bHQ7Ci0gICByZV9kZXRhaWw6OnN0cmluZ19vdXRfaXRlcmF0b3I8c3RkOjpiYXNpY19zdHJpbmc8Y2hhclQ+ID4gaShyZXN1bHQpOwotICAgcmVnZXhfcmVwbGFjZShpLCBzLmJlZ2luKCksIHMuZW5kKCksIGUsIGZtdCwgZmxhZ3MpOwotICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1NVRkZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgIC8vIE5ETkJPT1NUX1JFR0VYX1Y0X1JFR0VYX1JFUExBQ0VfSFBQCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9yZWdleF9zZWFyY2guaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9yZWdleF9zZWFyY2guaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYTQ4MGZkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfc2VhcmNoLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIxNyArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAyCi0gKiBKb2huIE1hZGRvY2sKLSAqCi0gKiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLSAqIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotICogTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqLwotCi0gLyoKLSAgKiAgIExPQ0FUSU9OOiAgICBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0gICogICBGSUxFICAgICAgICAgcmVnZXhfc2VhcmNoLmhwcAotICAqICAgVkVSU0lPTiAgICAgIHNlZSA8bmRuYm9vc3QvdmVyc2lvbi5ocHA+Ci0gICogICBERVNDUklQVElPTjogUHJvdmlkZXMgcmVnZXhfc2VhcmNoIGltcGxlbWVudGF0aW9uLgotICAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1Y0X1JFR0VYX1NFQVJDSF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfVjRfUkVHRVhfU0VBUkNIX0hQUAotCi0KLW5hbWVzcGFjZSBuZG5ib29zdHsKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1BSRUZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci1ib29sIHJlZ2V4X3NlYXJjaChCaWRpSXRlcmF0b3IgZmlyc3QsIEJpZGlJdGVyYXRvciBsYXN0LCAKLSAgICAgICAgICAgICAgICAgIG1hdGNoX3Jlc3VsdHM8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3I+JiBtLCAKLSAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2ljX3JlZ2V4PGNoYXJULCB0cmFpdHM+JiBlLCAKLSAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVnZXhfc2VhcmNoKGZpcnN0LCBsYXN0LCBtLCBlLCBmbGFncywgZmlyc3QpOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBBbGxvY2F0b3IsIGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci1ib29sIHJlZ2V4X3NlYXJjaChCaWRpSXRlcmF0b3IgZmlyc3QsIEJpZGlJdGVyYXRvciBsYXN0LCAKLSAgICAgICAgICAgICAgICAgIG1hdGNoX3Jlc3VsdHM8QmlkaUl0ZXJhdG9yLCBBbGxvY2F0b3I+JiBtLCAKLSAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2ljX3JlZ2V4PGNoYXJULCB0cmFpdHM+JiBlLCAKLSAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncywKLSAgICAgICAgICAgICAgICAgIEJpZGlJdGVyYXRvciBiYXNlKQotewotICAgaWYoZS5mbGFncygpICYgcmVnZXhfY29uc3RhbnRzOjpmYWlsYml0KQotICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICByZV9kZXRhaWw6OnBlcmxfbWF0Y2hlcjxCaWRpSXRlcmF0b3IsIEFsbG9jYXRvciwgdHJhaXRzPiBtYXRjaGVyKGZpcnN0LCBsYXN0LCBtLCBlLCBmbGFncywgYmFzZSk7Ci0gICByZXR1cm4gbWF0Y2hlci5maW5kKCk7Ci19Ci0KLS8vCi0vLyByZWdleF9zZWFyY2ggY29udmVuaWVuY2UgaW50ZXJmYWNlczoKLSNpZm5kZWYgTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcKLS8vCi0vLyB0aGlzIGlzbid0IHJlYWxseSBhIHBhcnRpYWwgc3BlY2lhbGlzYXRpb24sIGJ1dCB0ZW1wbGF0ZSBmdW5jdGlvbgotLy8gb3ZlcmxvYWRpbmcgLSBpZiB0aGUgY29tcGlsZXIgZG9lc24ndCBzdXBwb3J0IHBhcnRpYWwgc3BlY2lhbGlzYXRpb24KLS8vIHRoZW4gaXQgcmVhbGx5IHdvbid0IHN1cHBvcnQgdGhpcyBlaXRoZXI6Ci10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgdHJhaXRzPgotaW5saW5lIGJvb2wgcmVnZXhfc2VhcmNoKGNvbnN0IGNoYXJUKiBzdHIsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfcmVzdWx0czxjb25zdCBjaGFyVCosIEFsbG9jYXRvcj4mIG0sIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzaWNfcmVnZXg8Y2hhclQsIHRyYWl0cz4mIGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzID0gbWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZWdleF9zZWFyY2goc3RyLCBzdHIgKyB0cmFpdHM6Omxlbmd0aChzdHIpLCBtLCBlLCBmbGFncyk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBTVCwgY2xhc3MgU0EsIGNsYXNzIEFsbG9jYXRvciwgY2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLWlubGluZSBib29sIHJlZ2V4X3NlYXJjaChjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVCwgU1QsIFNBPiYgcywgCi0gICAgICAgICAgICAgICAgIG1hdGNoX3Jlc3VsdHM8dHlwZW5hbWUgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQsIFNULCBTQT46OmNvbnN0X2l0ZXJhdG9yLCBBbGxvY2F0b3I+JiBtLCAKLSAgICAgICAgICAgICAgICAgY29uc3QgYmFzaWNfcmVnZXg8Y2hhclQsIHRyYWl0cz4mIGUsIAotICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlZ2V4X3NlYXJjaChzLmJlZ2luKCksIHMuZW5kKCksIG0sIGUsIGZsYWdzKTsKLX0KLSNlbHNlICAvLyBwYXJ0aWFsIG92ZXJsb2FkczoKLWlubGluZSBib29sIHJlZ2V4X3NlYXJjaChjb25zdCBjaGFyKiBzdHIsIAotICAgICAgICAgICAgICAgICAgICAgICAgY21hdGNoJiBtLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVnZXhfc2VhcmNoKHN0ciwgc3RyICsgcmVnZXg6OnRyYWl0c190eXBlOjpsZW5ndGgoc3RyKSwgbSwgZSwgZmxhZ3MpOwotfQotaW5saW5lIGJvb2wgcmVnZXhfc2VhcmNoKGNvbnN0IGNoYXIqIGZpcnN0LCBjb25zdCBjaGFyKiBsYXN0LCAKLSAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICBjbWF0Y2ggbTsKLSAgIHJldHVybiByZWdleF9zZWFyY2goZmlyc3QsIGxhc3QsIG0sIGUsIGZsYWdzIHwgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9hbnkpOwotfQotCi0jaWZuZGVmIE5ETkJPT1NUX05PX1dSRUdFWAotaW5saW5lIGJvb2wgcmVnZXhfc2VhcmNoKGNvbnN0IHdjaGFyX3QqIHN0ciwgCi0gICAgICAgICAgICAgICAgICAgICAgICB3Y21hdGNoJiBtLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdyZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlZ2V4X3NlYXJjaChzdHIsIHN0ciArIHdyZWdleDo6dHJhaXRzX3R5cGU6Omxlbmd0aChzdHIpLCBtLCBlLCBmbGFncyk7Ci19Ci1pbmxpbmUgYm9vbCByZWdleF9zZWFyY2goY29uc3Qgd2NoYXJfdCogZmlyc3QsIGNvbnN0IHdjaGFyX3QqIGxhc3QsIAotICAgICAgICAgICAgICAgICAgY29uc3Qgd3JlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICB3Y21hdGNoIG07Ci0gICByZXR1cm4gcmVnZXhfc2VhcmNoKGZpcnN0LCBsYXN0LCBtLCBlLCBmbGFncyB8IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfYW55KTsKLX0KLSNlbmRpZgotaW5saW5lIGJvb2wgcmVnZXhfc2VhcmNoKGNvbnN0IHN0ZDo6c3RyaW5nJiBzLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIHNtYXRjaCYgbSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVnZXhfc2VhcmNoKHMuYmVnaW4oKSwgcy5lbmQoKSwgbSwgZSwgZmxhZ3MpOwotfQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1dSRUdFWCkKLWlubGluZSBib29sIHJlZ2V4X3NlYXJjaChjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzx3Y2hhcl90PiYgcywgCi0gICAgICAgICAgICAgICAgICAgICAgICB3c21hdGNoJiBtLAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd3JlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVnZXhfc2VhcmNoKHMuYmVnaW4oKSwgcy5lbmQoKSwgbSwgZSwgZmxhZ3MpOwotfQotI2VuZGlmCi0KLSNlbmRpZgotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaUl0ZXJhdG9yLCBjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotYm9vbCByZWdleF9zZWFyY2goQmlkaUl0ZXJhdG9yIGZpcnN0LCBCaWRpSXRlcmF0b3IgbGFzdCwgCi0gICAgICAgICAgICAgICAgICBjb25zdCBiYXNpY19yZWdleDxjaGFyVCwgdHJhaXRzPiYgZSwgCi0gICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgaWYoZS5mbGFncygpICYgcmVnZXhfY29uc3RhbnRzOjpmYWlsYml0KQotICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICBtYXRjaF9yZXN1bHRzPEJpZGlJdGVyYXRvcj4gbTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgbWF0Y2hfcmVzdWx0czxCaWRpSXRlcmF0b3I+OjphbGxvY2F0b3JfdHlwZSBtYXRjaF9hbGxvY190eXBlOwotICAgcmVfZGV0YWlsOjpwZXJsX21hdGNoZXI8QmlkaUl0ZXJhdG9yLCBtYXRjaF9hbGxvY190eXBlLCB0cmFpdHM+IG1hdGNoZXIoZmlyc3QsIGxhc3QsIG0sIGUsIGZsYWdzIHwgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9hbnksIGZpcnN0KTsKLSAgIHJldHVybiBtYXRjaGVyLmZpbmQoKTsKLX0KLQotI2lmbmRlZiBORE5CT09TVF9OT19GVU5DVElPTl9URU1QTEFURV9PUkRFUklORwotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0cz4KLWlubGluZSBib29sIHJlZ2V4X3NlYXJjaChjb25zdCBjaGFyVCogc3RyLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2ljX3JlZ2V4PGNoYXJULCB0cmFpdHM+JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVnZXhfc2VhcmNoKHN0ciwgc3RyICsgdHJhaXRzOjpsZW5ndGgoc3RyKSwgZSwgZmxhZ3MpOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgU1QsIGNsYXNzIFNBLCBjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotaW5saW5lIGJvb2wgcmVnZXhfc2VhcmNoKGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJULCBTVCwgU0E+JiBzLCAKLSAgICAgICAgICAgICAgICAgY29uc3QgYmFzaWNfcmVnZXg8Y2hhclQsIHRyYWl0cz4mIGUsIAotICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlZ2V4X3NlYXJjaChzLmJlZ2luKCksIHMuZW5kKCksIGUsIGZsYWdzKTsKLX0KLSNlbHNlICAvLyBub24tdGVtcGxhdGUgZnVuY3Rpb24gb3ZlcmxvYWRzCi1pbmxpbmUgYm9vbCByZWdleF9zZWFyY2goY29uc3QgY2hhciogc3RyLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICBjbWF0Y2ggbTsKLSAgIHJldHVybiByZWdleF9zZWFyY2goc3RyLCBzdHIgKyByZWdleDo6dHJhaXRzX3R5cGU6Omxlbmd0aChzdHIpLCBtLCBlLCBmbGFncyB8IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfYW55KTsKLX0KLSNpZm5kZWYgTkROQk9PU1RfTk9fV1JFR0VYCi1pbmxpbmUgYm9vbCByZWdleF9zZWFyY2goY29uc3Qgd2NoYXJfdCogc3RyLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdyZWdleCYgZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgZmxhZ3MgPSBtYXRjaF9kZWZhdWx0KQotewotICAgd2NtYXRjaCBtOwotICAgcmV0dXJuIHJlZ2V4X3NlYXJjaChzdHIsIHN0ciArIHdyZWdleDo6dHJhaXRzX3R5cGU6Omxlbmd0aChzdHIpLCBtLCBlLCBmbGFncyB8IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfYW55KTsKLX0KLSNlbmRpZgotaW5saW5lIGJvb2wgcmVnZXhfc2VhcmNoKGNvbnN0IHN0ZDo6c3RyaW5nJiBzLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICBzbWF0Y2ggbTsKLSAgIHJldHVybiByZWdleF9zZWFyY2gocy5iZWdpbigpLCBzLmVuZCgpLCBtLCBlLCBmbGFncyB8IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfYW55KTsKLX0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19XUkVHRVgpCi1pbmxpbmUgYm9vbCByZWdleF9zZWFyY2goY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8d2NoYXJfdD4mIHMsIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd3JlZ2V4JiBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICB3c21hdGNoIG07Ci0gICByZXR1cm4gcmVnZXhfc2VhcmNoKHMuYmVnaW4oKSwgcy5lbmQoKSwgbSwgZSwgZmxhZ3MgfCByZWdleF9jb25zdGFudHM6Om1hdGNoX2FueSk7Ci19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19XUkVHRVgKLQotI2VuZGlmIC8vIHBhcnRpYWwgb3ZlcmxvYWQKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1NVRkZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgIC8vIE5ETkJPT1NUX1JFR0VYX1Y0X1JFR0VYX1NFQVJDSF9IUFAKLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X3NwbGl0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfc3BsaXQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZGM2N2IzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfc3BsaXQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTcyICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDIKLSAqIEpvaG4gTWFkZG9jawotICoKLSAqIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotICogQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0gKiBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICovCi0gCi0gLyoKLSAgKiAgIExPQ0FUSU9OOiAgICBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0gICogICBGSUxFICAgICAgICAgcmVnZXhfc3BsaXQuaHBwCi0gICogICBWRVJTSU9OICAgICAgc2VlIDxuZG5ib29zdC92ZXJzaW9uLmhwcD4KLSAgKiAgIERFU0NSSVBUSU9OOiBJbXBsZW1lbnRzIHJlZ2V4X3NwbGl0IGFuZCBhc3NvY2lhdGVkIGZ1bmN0aW9ucy4KLSAgKiAgICAgICAgICAgICAgICBOb3RlIHRoaXMgaXMgYW4gaW50ZXJuYWwgaGVhZGVyIGZpbGUgaW5jbHVkZWQKLSAgKiAgICAgICAgICAgICAgICBieSByZWdleC5ocHAsIGRvIG5vdCBpbmNsdWRlIG9uIGl0cyBvd24uCi0gICovCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfU1BMSVRfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JFR0VYX1NQTElUX0hQUAotCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9QUkVGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSMgIHByYWdtYSB3YXJuaW5nKHB1c2gpCi0jICBwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0ODAwKQotI2VuZGlmCi0KLW5hbWVzcGFjZSByZV9kZXRhaWx7Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLWNvbnN0IGJhc2ljX3JlZ2V4PGNoYXJUPiYgZ2V0X2RlZmF1bHRfZXhwcmVzc2lvbihjaGFyVCkKLXsKLSAgIHN0YXRpYyBjb25zdCBjaGFyVCBleHByZXNzaW9uX3RleHRbNF0gPSB7ICdcXCcsICdzJywgJysnLCAnXDAwJywgfTsKLSAgIHN0YXRpYyBjb25zdCBiYXNpY19yZWdleDxjaGFyVD4gZShleHByZXNzaW9uX3RleHQpOwotICAgcmV0dXJuIGU7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBPdXRwdXRJdGVyYXRvciwgY2xhc3MgY2hhclQsIGNsYXNzIFRyYWl0czEsIGNsYXNzIEFsbG9jMT4KLWNsYXNzIHNwbGl0X3ByZWQKLXsKLSAgIHR5cGVkZWYgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQsIFRyYWl0czEsIEFsbG9jMT4gc3RyaW5nX3R5cGU7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHN0cmluZ190eXBlOjpjb25zdF9pdGVyYXRvciBpdGVyYXRvcl90eXBlOwotICAgaXRlcmF0b3JfdHlwZSogcF9sYXN0OwotICAgT3V0cHV0SXRlcmF0b3IqIHBfb3V0OwotICAgc3RkOjpzaXplX3QqIHBfbWF4OwotICAgc3RkOjpzaXplX3QgaW5pdGlhbF9tYXg7Ci1wdWJsaWM6Ci0gICBzcGxpdF9wcmVkKGl0ZXJhdG9yX3R5cGUqIGEsIE91dHB1dEl0ZXJhdG9yKiBiLCBzdGQ6OnNpemVfdCogYykKLSAgICAgIDogcF9sYXN0KGEpLCBwX291dChiKSwgcF9tYXgoYyksIGluaXRpYWxfbWF4KCpjKSB7fQotCi0gICBib29sIG9wZXJhdG9yKCkoY29uc3QgbWF0Y2hfcmVzdWx0czxpdGVyYXRvcl90eXBlPiYgd2hhdCk7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgT3V0cHV0SXRlcmF0b3IsIGNsYXNzIGNoYXJULCBjbGFzcyBUcmFpdHMxLCBjbGFzcyBBbGxvYzE+Ci1ib29sIHNwbGl0X3ByZWQ8T3V0cHV0SXRlcmF0b3IsIGNoYXJULCBUcmFpdHMxLCBBbGxvYzE+OjpvcGVyYXRvcigpCi0gICAoY29uc3QgbWF0Y2hfcmVzdWx0czxpdGVyYXRvcl90eXBlPiYgd2hhdCkKLXsKLSAgICpwX2xhc3QgPSB3aGF0WzBdLnNlY29uZDsKLSAgIGlmKHdoYXQuc2l6ZSgpID4gMSkKLSAgIHsKLSAgICAgIC8vIG91dHB1dCBzdWItZXhwcmVzc2lvbnMgb25seToKLSAgICAgIGZvcih1bnNpZ25lZCBpID0gMTsgaSA8IHdoYXQuc2l6ZSgpOyArK2kpCi0gICAgICB7Ci0gICAgICAgICAqKCpwX291dCkgPSB3aGF0LnN0cihpKTsKLSAgICAgICAgICsrKCpwX291dCk7Ci0gICAgICAgICBpZigwID09IC0tKnBfbWF4KSByZXR1cm4gZmFsc2U7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gKnBfbWF4ICE9IDA7Ci0gICB9Ci0gICBlbHNlCi0gICB7Ci0gICAgICAvLyBvdXRwdXQgJGAgb25seSBpZiBpdCdzIG5vdC1udWxsIG9yIG5vdCBhdCB0aGUgc3RhcnQgb2YgdGhlIGlucHV0OgotICAgICAgY29uc3Qgc3ViX21hdGNoPGl0ZXJhdG9yX3R5cGU+JiBzdWIgPSB3aGF0Wy0xXTsKLSAgICAgIGlmKChzdWIuZmlyc3QgIT0gc3ViLnNlY29uZCkgfHwgKCpwX21heCAhPSBpbml0aWFsX21heCkpCi0gICAgICB7Ci0gICAgICAgICAqKCpwX291dCkgPSBzdWIuc3RyKCk7Ci0gICAgICAgICArKygqcF9vdXQpOwotICAgICAgICAgcmV0dXJuIC0tKnBfbWF4OwotICAgICAgfQotICAgfQotICAgLy8KLSAgIC8vIGluaXRpYWwgbnVsbCwgZG8gbm90aGluZzoKLSAgIHJldHVybiB0cnVlOwotfQotCi19IC8vIG5hbWVzcGFjZSByZV9kZXRhaWwKLQotdGVtcGxhdGUgPGNsYXNzIE91dHB1dEl0ZXJhdG9yLCBjbGFzcyBjaGFyVCwgY2xhc3MgVHJhaXRzMSwgY2xhc3MgQWxsb2MxLCBjbGFzcyBUcmFpdHMyPgotc3RkOjpzaXplX3QgcmVnZXhfc3BsaXQoT3V0cHV0SXRlcmF0b3Igb3V0LAotICAgICAgICAgICAgICAgICAgIHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJULCBUcmFpdHMxLCBBbGxvYzE+JiBzLCAKLSAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNpY19yZWdleDxjaGFyVCwgVHJhaXRzMj4mIGUsCi0gICAgICAgICAgICAgICAgICAgbWF0Y2hfZmxhZ190eXBlIGZsYWdzLAotICAgICAgICAgICAgICAgICAgIHN0ZDo6c2l6ZV90IG1heF9zcGxpdCkKLXsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQsIFRyYWl0czEsIEFsbG9jMT46OmNvbnN0X2l0ZXJhdG9yICBjaV90OwotICAgLy90eXBlZGVmIHR5cGVuYW1lIG1hdGNoX3Jlc3VsdHM8Y2lfdD46OmFsbG9jYXRvcl90eXBlICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hfYWxsb2NhdG9yOwotICAgY2lfdCBsYXN0ID0gcy5iZWdpbigpOwotICAgc3RkOjpzaXplX3QgaW5pdF9zaXplID0gbWF4X3NwbGl0OwotICAgcmVfZGV0YWlsOjpzcGxpdF9wcmVkPE91dHB1dEl0ZXJhdG9yLCBjaGFyVCwgVHJhaXRzMSwgQWxsb2MxPiBwcmVkKCZsYXN0LCAmb3V0LCAmbWF4X3NwbGl0KTsKLSAgIGNpX3QgaSwgajsKLSAgIGkgPSBzLmJlZ2luKCk7Ci0gICBqID0gcy5lbmQoKTsKLSAgIHJlZ2V4X2dyZXAocHJlZCwgaSwgaiwgZSwgZmxhZ3MpOwotICAgLy8KLSAgIC8vIGlmIHRoZXJlIGlzIHN0aWxsIGlucHV0IGxlZnQsIGRvIGEgZmluYWwgcHVzaCBhcyBsb25nIGFzIG1heF9zcGxpdAotICAgLy8gaXMgbm90IGV4aGF1c3RlZCwgYW5kIHdlJ3JlIG5vdCBzcGxpdHRpbmcgc3ViLWV4cHJlc3Npb25zIHJhdGhlciAKLSAgIC8vIHRoYW4gd2hpdGVzcGFjZToKLSAgIGlmKG1heF9zcGxpdCAmJiAobGFzdCAhPSBzLmVuZCgpKSAmJiAoZS5tYXJrX2NvdW50KCkgPT0gMSkpCi0gICB7Ci0gICAgICAqb3V0ID0gc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQsIFRyYWl0czEsIEFsbG9jMT4oKGNpX3QpbGFzdCwgKGNpX3Qpcy5lbmQoKSk7Ci0gICAgICArK291dDsKLSAgICAgIGxhc3QgPSBzLmVuZCgpOwotICAgICAgLS1tYXhfc3BsaXQ7Ci0gICB9Ci0gICAvLwotICAgLy8gZGVsZXRlIGZyb20gdGhlIHN0cmluZyBldmVyeXRoaW5nIHRoYXQgaGFzIGJlZW4gcHJvY2Vzc2VkIHNvIGZhcjoKLSAgIHMuZXJhc2UoMCwgbGFzdCAtIHMuYmVnaW4oKSk7Ci0gICAvLwotICAgLy8gcmV0dXJuIHRoZSBudW1iZXIgb2YgbmV3IHJlY29yZHMgcHVzaGVkOgotICAgcmV0dXJuIGluaXRfc2l6ZSAtIG1heF9zcGxpdDsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIE91dHB1dEl0ZXJhdG9yLCBjbGFzcyBjaGFyVCwgY2xhc3MgVHJhaXRzMSwgY2xhc3MgQWxsb2MxLCBjbGFzcyBUcmFpdHMyPgotaW5saW5lIHN0ZDo6c2l6ZV90IHJlZ2V4X3NwbGl0KE91dHB1dEl0ZXJhdG9yIG91dCwKLSAgICAgICAgICAgICAgICAgICBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVCwgVHJhaXRzMSwgQWxsb2MxPiYgcywgCi0gICAgICAgICAgICAgICAgICAgY29uc3QgYmFzaWNfcmVnZXg8Y2hhclQsIFRyYWl0czI+JiBlLAotICAgICAgICAgICAgICAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmbGFncyA9IG1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gcmVnZXhfc3BsaXQob3V0LCBzLCBlLCBmbGFncywgVUlOVF9NQVgpOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgT3V0cHV0SXRlcmF0b3IsIGNsYXNzIGNoYXJULCBjbGFzcyBUcmFpdHMxLCBjbGFzcyBBbGxvYzE+Ci1pbmxpbmUgc3RkOjpzaXplX3QgcmVnZXhfc3BsaXQoT3V0cHV0SXRlcmF0b3Igb3V0LAotICAgICAgICAgICAgICAgICAgIHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJULCBUcmFpdHMxLCBBbGxvYzE+JiBzKQotewotICAgcmV0dXJuIHJlZ2V4X3NwbGl0KG91dCwgcywgcmVfZGV0YWlsOjpnZXRfZGVmYXVsdF9leHByZXNzaW9uKGNoYXJUKDApKSwgbWF0Y2hfZGVmYXVsdCwgVUlOVF9NQVgpOwotfQotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotIyAgcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9TVUZGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9yZWdleF90b2tlbl9pdGVyYXRvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X3Rva2VuX2l0ZXJhdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2I2MWM5Yy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X3Rva2VuX2l0ZXJhdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM0MiArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAoYykgMjAwMwotICogSm9obiBNYWRkb2NrCi0gKgotICogVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0gKiBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLSAqIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKi8KLQotIC8qCi0gICogICBMT0NBVElPTjogICAgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotICAqICAgRklMRSAgICAgICAgIHJlZ2V4X3Rva2VuX2l0ZXJhdG9yLmhwcAotICAqICAgVkVSU0lPTiAgICAgIHNlZSA8bmRuYm9vc3QvdmVyc2lvbi5ocHA+Ci0gICogICBERVNDUklQVElPTjogUHJvdmlkZXMgcmVnZXhfdG9rZW5faXRlcmF0b3IgaW1wbGVtZW50YXRpb24uCi0gICovCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfVjRfUkVHRVhfVE9LRU5fSVRFUkFUT1JfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JFR0VYX1Y0X1JFR0VYX1RPS0VOX0lURVJBVE9SX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3Qvc2hhcmVkX3B0ci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotI2lmIChORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgPj0gMHg1NjApICYmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1NzApKSlcCi0gICAgICB8fCBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkgXAotICAgICAgfHwgTkROQk9PU1RfV09SS0FST1VORChfX01XRVJLU19fLCBORE5CT09TVF9URVNURURfQVQoMHgzMDAzKSkKLS8vCi0vLyBCb3JsYW5kIEMrKyBCdWlsZGVyIDYsIGFuZCBWaXN1YWwgQysrIDYsCi0vLyBjYW4ndCBjb3BlIHdpdGggdGhlIGFycmF5IHRlbXBsYXRlIGNvbnN0cnVjdG9yCi0vLyBzbyB3ZSBoYXZlIGEgdGVtcGxhdGUgbWVtYmVyIHRoYXQgd2lsbCBhY2NlcHQgYW55IHR5cGUgYXMgCi0vLyBhcmd1bWVudCwgYW5kIHRoZW4gYXNzZXJ0IHRoYXQgaXMgcmVhbGx5IGlzIGFuIGFycmF5OgotLy8KLSNpbmNsdWRlIDxuZG5ib29zdC9zdGF0aWNfYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19hcnJheS5ocHA+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0ewotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfUFJFRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA+IDEzMDApCi0jICBwcmFnbWEgd2FybmluZyhwdXNoKQotIyAgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0NzAwKQotI2VuZGlmCi0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpcmVjdGlvbmFsSXRlcmF0b3IsCi0gICAgICAgICAgY2xhc3MgY2hhclQsCi0gICAgICAgICAgY2xhc3MgdHJhaXRzPgotY2xhc3MgcmVnZXhfdG9rZW5faXRlcmF0b3JfaW1wbGVtZW50YXRpb24gCi17Ci0gICB0eXBlZGVmIGJhc2ljX3JlZ2V4PGNoYXJULCB0cmFpdHM+IHJlZ2V4X3R5cGU7Ci0gICB0eXBlZGVmIHN1Yl9tYXRjaDxCaWRpcmVjdGlvbmFsSXRlcmF0b3I+ICAgICAgdmFsdWVfdHlwZTsKLQotICAgbWF0Y2hfcmVzdWx0czxCaWRpcmVjdGlvbmFsSXRlcmF0b3I+IHdoYXQ7ICAgLy8gY3VycmVudCBtYXRjaAotICAgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yICAgICAgICAgICAgICAgIGJhc2U7ICAgIC8vIHN0YXJ0IG9mIHNlYXJjaCBhcmVhCi0gICBCaWRpcmVjdGlvbmFsSXRlcmF0b3IgICAgICAgICAgICAgICAgZW5kOyAgICAvLyBlbmQgb2Ygc2VhcmNoIGFyZWEKLSAgIGNvbnN0IHJlZ2V4X3R5cGUgICAgICAgICAgICAgICAgICAgICByZTsgICAgLy8gdGhlIGV4cHJlc3Npb24KLSAgIG1hdGNoX2ZsYWdfdHlwZSAgICAgICAgICAgICAgICAgICAgICBmbGFnczsgIC8vIG1hdGNoIGZsYWdzCi0gICB2YWx1ZV90eXBlICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0OyAvLyB0aGUgY3VycmVudCBzdHJpbmcgcmVzdWx0Ci0gICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTjsgICAgICAvLyB0aGUgY3VycmVudCBzdWItZXhwcmVzc2lvbiBiZWluZyBlbnVtZXJhdGVkCi0gICBzdGQ6OnZlY3RvcjxpbnQ+ICAgICAgICAgICAgICAgICAgICAgc3ViczsgICAvLyB0aGUgc3ViLWV4cHJlc3Npb25zIHRvIGVudW1lcmF0ZQotCi1wdWJsaWM6Ci0gICByZWdleF90b2tlbl9pdGVyYXRvcl9pbXBsZW1lbnRhdGlvbihjb25zdCByZWdleF90eXBlKiBwLCBCaWRpcmVjdGlvbmFsSXRlcmF0b3IgbGFzdCwgaW50IHN1YiwgbWF0Y2hfZmxhZ190eXBlIGYpCi0gICAgICA6IGVuZChsYXN0KSwgcmUoKnApLCBmbGFncyhmKXsgc3Vicy5wdXNoX2JhY2soc3ViKTsgfQotICAgcmVnZXhfdG9rZW5faXRlcmF0b3JfaW1wbGVtZW50YXRpb24oY29uc3QgcmVnZXhfdHlwZSogcCwgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIGxhc3QsIGNvbnN0IHN0ZDo6dmVjdG9yPGludD4mIHYsIG1hdGNoX2ZsYWdfdHlwZSBmKQotICAgICAgOiBlbmQobGFzdCksIHJlKCpwKSwgZmxhZ3MoZiksIHN1YnModil7fQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fSFBfYUNDLCA8IDYwNzAwKQotI2lmIChORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgPj0gMHg1NjApICYmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1NzApKSlcCi0gICAgICB8fCBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkgXAotICAgICAgfHwgTkROQk9PU1RfV09SS0FST1VORChfX01XRVJLU19fLCBORE5CT09TVF9URVNURURfQVQoMHgzMDAzKSkgXAotICAgICAgfHwgTkROQk9PU1RfV09SS0FST1VORChfX0hQX2FDQywgPCA2MDcwMCkKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgcmVnZXhfdG9rZW5faXRlcmF0b3JfaW1wbGVtZW50YXRpb24oY29uc3QgcmVnZXhfdHlwZSogcCwgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIGxhc3QsIGNvbnN0IFQmIHN1Ym1hdGNoZXMsIG1hdGNoX2ZsYWdfdHlwZSBmKQotICAgICAgOiBlbmQobGFzdCksIHJlKCpwKSwgZmxhZ3MoZikKLSAgIHsKLSAgICAgIC8vIGFzc2VydCB0aGF0IFQgcmVhbGx5IGlzIGFuIGFycmF5OgotICAgICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCg6Om5kbmJvb3N0Ojppc19hcnJheTxUPjo6dmFsdWUpOwotICAgICAgY29uc3Qgc3RkOjpzaXplX3QgYXJyYXlfc2l6ZSA9IHNpemVvZihUKSAvIHNpemVvZihzdWJtYXRjaGVzWzBdKTsKLSAgICAgIGZvcihzdGQ6OnNpemVfdCBpID0gMDsgaSA8IGFycmF5X3NpemU7ICsraSkKLSAgICAgIHsKLSAgICAgICAgIHN1YnMucHVzaF9iYWNrKHN1Ym1hdGNoZXNbaV0pOwotICAgICAgfQotICAgfQotI2Vsc2UKLSAgIHRlbXBsYXRlIDxzdGQ6OnNpemVfdCBDTj4KLSAgIHJlZ2V4X3Rva2VuX2l0ZXJhdG9yX2ltcGxlbWVudGF0aW9uKGNvbnN0IHJlZ2V4X3R5cGUqIHAsIEJpZGlyZWN0aW9uYWxJdGVyYXRvciBsYXN0LCBjb25zdCBpbnQgKCZzdWJtYXRjaGVzKVtDTl0sIG1hdGNoX2ZsYWdfdHlwZSBmKQotICAgICAgOiBlbmQobGFzdCksIHJlKCpwKSwgZmxhZ3MoZikKLSAgIHsKLSAgICAgIGZvcihzdGQ6OnNpemVfdCBpID0gMDsgaSA8IENOOyArK2kpCi0gICAgICB7Ci0gICAgICAgICBzdWJzLnB1c2hfYmFjayhzdWJtYXRjaGVzW2ldKTsKLSAgICAgIH0KLSAgIH0KLSNlbmRpZgotI2VuZGlmCi0gICBib29sIGluaXQoQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIGZpcnN0KQotICAgewotICAgICAgTiA9IDA7Ci0gICAgICBiYXNlID0gZmlyc3Q7Ci0gICAgICBpZihyZWdleF9zZWFyY2goZmlyc3QsIGVuZCwgd2hhdCwgcmUsIGZsYWdzLCBiYXNlKSA9PSB0cnVlKQotICAgICAgewotICAgICAgICAgTiA9IDA7Ci0gICAgICAgICByZXN1bHQgPSAoKHN1YnNbTl0gPT0gLTEpID8gd2hhdC5wcmVmaXgoKSA6IHdoYXRbKGludClzdWJzW05dXSk7Ci0gICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYoKHN1YnNbTl0gPT0gLTEpICYmIChmaXJzdCAhPSBlbmQpKQotICAgICAgewotICAgICAgICAgcmVzdWx0LmZpcnN0ID0gZmlyc3Q7Ci0gICAgICAgICByZXN1bHQuc2Vjb25kID0gZW5kOwotICAgICAgICAgcmVzdWx0Lm1hdGNoZWQgPSAoZmlyc3QgIT0gZW5kKTsKLSAgICAgICAgIE4gPSAtMTsKLSAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgfQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgfQotICAgYm9vbCBjb21wYXJlKGNvbnN0IHJlZ2V4X3Rva2VuX2l0ZXJhdG9yX2ltcGxlbWVudGF0aW9uJiB0aGF0KQotICAgewotICAgICAgaWYodGhpcyA9PSAmdGhhdCkgcmV0dXJuIHRydWU7Ci0gICAgICByZXR1cm4gKCZyZS5nZXRfZGF0YSgpID09ICZ0aGF0LnJlLmdldF9kYXRhKCkpIAotICAgICAgICAgJiYgKGVuZCA9PSB0aGF0LmVuZCkgCi0gICAgICAgICAmJiAoZmxhZ3MgPT0gdGhhdC5mbGFncykgCi0gICAgICAgICAmJiAoTiA9PSB0aGF0Lk4pIAotICAgICAgICAgJiYgKHdoYXRbMF0uZmlyc3QgPT0gdGhhdC53aGF0WzBdLmZpcnN0KSAKLSAgICAgICAgICYmICh3aGF0WzBdLnNlY29uZCA9PSB0aGF0LndoYXRbMF0uc2Vjb25kKTsKLSAgIH0KLSAgIGNvbnN0IHZhbHVlX3R5cGUmIGdldCgpCi0gICB7IHJldHVybiByZXN1bHQ7IH0KLSAgIGJvb2wgbmV4dCgpCi0gICB7Ci0gICAgICBpZihOID09IC0xKQotICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgaWYoTisxIDwgKGludClzdWJzLnNpemUoKSkKLSAgICAgIHsKLSAgICAgICAgICsrTjsKLSAgICAgICAgIHJlc3VsdCA9KChzdWJzW05dID09IC0xKSA/IHdoYXQucHJlZml4KCkgOiB3aGF0W3N1YnNbTl1dKTsKLSAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgfQotICAgICAgLy9pZih3aGF0LnByZWZpeCgpLmZpcnN0ICE9IHdoYXRbMF0uc2Vjb25kKQotICAgICAgLy8gICBmbGFncyB8PSAvKm1hdGNoX3ByZXZfYXZhaWwgfCovIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfbm90X2JvYjsKLSAgICAgIEJpZGlyZWN0aW9uYWxJdGVyYXRvciBsYXN0X2VuZCh3aGF0WzBdLnNlY29uZCk7Ci0gICAgICBpZihyZWdleF9zZWFyY2gobGFzdF9lbmQsIGVuZCwgd2hhdCwgcmUsICgod2hhdFswXS5maXJzdCA9PSB3aGF0WzBdLnNlY29uZCkgPyBmbGFncyB8IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfbm90X2luaXRpYWxfbnVsbCA6IGZsYWdzKSwgYmFzZSkpCi0gICAgICB7Ci0gICAgICAgICBOID0wOwotICAgICAgICAgcmVzdWx0ID0oKHN1YnNbTl0gPT0gLTEpID8gd2hhdC5wcmVmaXgoKSA6IHdoYXRbc3Vic1tOXV0pOwotICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmKChsYXN0X2VuZCAhPSBlbmQpICYmIChzdWJzWzBdID09IC0xKSkKLSAgICAgIHsKLSAgICAgICAgIE4gPS0xOwotICAgICAgICAgcmVzdWx0LmZpcnN0ID0gbGFzdF9lbmQ7Ci0gICAgICAgICByZXN1bHQuc2Vjb25kID0gZW5kOwotICAgICAgICAgcmVzdWx0Lm1hdGNoZWQgPSAobGFzdF9lbmQgIT0gZW5kKTsKLSAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgfQotICAgICAgcmV0dXJuIGZhbHNlOwotICAgfQotcHJpdmF0ZToKLSAgIHJlZ2V4X3Rva2VuX2l0ZXJhdG9yX2ltcGxlbWVudGF0aW9uJiBvcGVyYXRvcj0oY29uc3QgcmVnZXhfdG9rZW5faXRlcmF0b3JfaW1wbGVtZW50YXRpb24mKTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpcmVjdGlvbmFsSXRlcmF0b3IsIAotICAgICAgICAgIGNsYXNzIGNoYXJUID0gTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxCaWRpcmVjdGlvbmFsSXRlcmF0b3I+Ojp2YWx1ZV90eXBlLAotICAgICAgICAgIGNsYXNzIHRyYWl0cyA9IHJlZ2V4X3RyYWl0czxjaGFyVD4gPgotY2xhc3MgcmVnZXhfdG9rZW5faXRlcmF0b3IgCi0jaWZuZGVmIE5ETkJPT1NUX05PX1NURF9JVEVSQVRPUgotICAgOiBwdWJsaWMgc3RkOjppdGVyYXRvcjwKLSAgICAgICAgIHN0ZDo6Zm9yd2FyZF9pdGVyYXRvcl90YWcsIAotICAgICAgICAgc3ViX21hdGNoPEJpZGlyZWN0aW9uYWxJdGVyYXRvcj4sCi0gICAgICAgICB0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxCaWRpcmVjdGlvbmFsSXRlcmF0b3I+OjpkaWZmZXJlbmNlX3R5cGUsCi0gICAgICAgICBjb25zdCBzdWJfbWF0Y2g8QmlkaXJlY3Rpb25hbEl0ZXJhdG9yPiosCi0gICAgICAgICBjb25zdCBzdWJfbWF0Y2g8QmlkaXJlY3Rpb25hbEl0ZXJhdG9yPiYgPiAgICAgICAgIAotI2VuZGlmCi17Ci1wcml2YXRlOgotICAgdHlwZWRlZiByZWdleF90b2tlbl9pdGVyYXRvcl9pbXBsZW1lbnRhdGlvbjxCaWRpcmVjdGlvbmFsSXRlcmF0b3IsIGNoYXJULCB0cmFpdHM+IGltcGw7Ci0gICB0eXBlZGVmIHNoYXJlZF9wdHI8aW1wbD4gcGltcGw7Ci1wdWJsaWM6Ci0gICB0eXBlZGVmICAgICAgICAgIGJhc2ljX3JlZ2V4PGNoYXJULCB0cmFpdHM+ICAgICAgICAgICAgICAgICAgIHJlZ2V4X3R5cGU7Ci0gICB0eXBlZGVmICAgICAgICAgIHN1Yl9tYXRjaDxCaWRpcmVjdGlvbmFsSXRlcmF0b3I+ICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVfdHlwZTsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8QmlkaXJlY3Rpb25hbEl0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBlIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZmZlcmVuY2VfdHlwZTsKLSAgIHR5cGVkZWYgICAgICAgICAgY29uc3QgdmFsdWVfdHlwZSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludGVyOwotICAgdHlwZWRlZiAgICAgICAgICBjb25zdCB2YWx1ZV90eXBlJiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZTsgCi0gICB0eXBlZGVmICAgICAgICAgIHN0ZDo6Zm9yd2FyZF9pdGVyYXRvcl90YWcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlcmF0b3JfY2F0ZWdvcnk7Ci0gICAKLSAgIHJlZ2V4X3Rva2VuX2l0ZXJhdG9yKCl7fQotICAgcmVnZXhfdG9rZW5faXRlcmF0b3IoQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIGEsIEJpZGlyZWN0aW9uYWxJdGVyYXRvciBiLCBjb25zdCByZWdleF90eXBlJiByZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3VibWF0Y2ggPSAwLCBtYXRjaF9mbGFnX3R5cGUgbSA9IG1hdGNoX2RlZmF1bHQpCi0gICAgICAgICAgICAgICAgICAgICAgICA6IHBkYXRhKG5ldyBpbXBsKCZyZSwgYiwgc3VibWF0Y2gsIG0pKQotICAgewotICAgICAgaWYoIXBkYXRhLT5pbml0KGEpKQotICAgICAgICAgcGRhdGEucmVzZXQoKTsKLSAgIH0KLSAgIHJlZ2V4X3Rva2VuX2l0ZXJhdG9yKEJpZGlyZWN0aW9uYWxJdGVyYXRvciBhLCBCaWRpcmVjdGlvbmFsSXRlcmF0b3IgYiwgY29uc3QgcmVnZXhfdHlwZSYgcmUsIAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8aW50PiYgc3VibWF0Y2hlcywgbWF0Y2hfZmxhZ190eXBlIG0gPSBtYXRjaF9kZWZhdWx0KQotICAgICAgICAgICAgICAgICAgICAgICAgOiBwZGF0YShuZXcgaW1wbCgmcmUsIGIsIHN1Ym1hdGNoZXMsIG0pKQotICAgewotICAgICAgaWYoIXBkYXRhLT5pbml0KGEpKQotICAgICAgICAgcGRhdGEucmVzZXQoKTsKLSAgIH0KLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChfX0hQX2FDQywgPCA2MDcwMCkKLSNpZiAoTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sID49IDB4NTYwKSAmJiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTcwKSkpXAotICAgICAgfHwgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApIFwKLSAgICAgIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoX19NV0VSS1NfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4MzAwMykpIFwKLSAgICAgIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoX19IUF9hQ0MsIDwgNjA3MDApCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgIHJlZ2V4X3Rva2VuX2l0ZXJhdG9yKEJpZGlyZWN0aW9uYWxJdGVyYXRvciBhLCBCaWRpcmVjdGlvbmFsSXRlcmF0b3IgYiwgY29uc3QgcmVnZXhfdHlwZSYgcmUsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUJiBzdWJtYXRjaGVzLCBtYXRjaF9mbGFnX3R5cGUgbSA9IG1hdGNoX2RlZmF1bHQpCi0gICAgICAgICAgICAgICAgICAgICAgICA6IHBkYXRhKG5ldyBpbXBsKCZyZSwgYiwgc3VibWF0Y2hlcywgbSkpCi0gICB7Ci0gICAgICBpZighcGRhdGEtPmluaXQoYSkpCi0gICAgICAgICBwZGF0YS5yZXNldCgpOwotICAgfQotI2Vsc2UKLSAgIHRlbXBsYXRlIDxzdGQ6OnNpemVfdCBOPgotICAgcmVnZXhfdG9rZW5faXRlcmF0b3IoQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIGEsIEJpZGlyZWN0aW9uYWxJdGVyYXRvciBiLCBjb25zdCByZWdleF90eXBlJiByZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCAoJnN1Ym1hdGNoZXMpW05dLCBtYXRjaF9mbGFnX3R5cGUgbSA9IG1hdGNoX2RlZmF1bHQpCi0gICAgICAgICAgICAgICAgICAgICAgICA6IHBkYXRhKG5ldyBpbXBsKCZyZSwgYiwgc3VibWF0Y2hlcywgbSkpCi0gICB7Ci0gICAgICBpZighcGRhdGEtPmluaXQoYSkpCi0gICAgICAgICBwZGF0YS5yZXNldCgpOwotICAgfQotI2VuZGlmCi0jZW5kaWYKLSAgIHJlZ2V4X3Rva2VuX2l0ZXJhdG9yKGNvbnN0IHJlZ2V4X3Rva2VuX2l0ZXJhdG9yJiB0aGF0KQotICAgICAgOiBwZGF0YSh0aGF0LnBkYXRhKSB7fQotICAgcmVnZXhfdG9rZW5faXRlcmF0b3ImIG9wZXJhdG9yPShjb25zdCByZWdleF90b2tlbl9pdGVyYXRvciYgdGhhdCkKLSAgIHsKLSAgICAgIHBkYXRhID0gdGhhdC5wZGF0YTsKLSAgICAgIHJldHVybiAqdGhpczsKLSAgIH0KLSAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCByZWdleF90b2tlbl9pdGVyYXRvciYgdGhhdCljb25zdAotICAgeyAKLSAgICAgIGlmKChwZGF0YS5nZXQoKSA9PSAwKSB8fCAodGhhdC5wZGF0YS5nZXQoKSA9PSAwKSkKLSAgICAgICAgIHJldHVybiBwZGF0YS5nZXQoKSA9PSB0aGF0LnBkYXRhLmdldCgpOwotICAgICAgcmV0dXJuIHBkYXRhLT5jb21wYXJlKCoodGhhdC5wZGF0YS5nZXQoKSkpOyAKLSAgIH0KLSAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCByZWdleF90b2tlbl9pdGVyYXRvciYgdGhhdCljb25zdAotICAgeyByZXR1cm4gISgqdGhpcyA9PSB0aGF0KTsgfQotICAgY29uc3QgdmFsdWVfdHlwZSYgb3BlcmF0b3IqKCljb25zdAotICAgeyByZXR1cm4gcGRhdGEtPmdldCgpOyB9Ci0gICBjb25zdCB2YWx1ZV90eXBlKiBvcGVyYXRvci0+KCljb25zdAotICAgeyByZXR1cm4gJihwZGF0YS0+Z2V0KCkpOyB9Ci0gICByZWdleF90b2tlbl9pdGVyYXRvciYgb3BlcmF0b3IrKygpCi0gICB7Ci0gICAgICBjb3coKTsKLSAgICAgIGlmKDAgPT0gcGRhdGEtPm5leHQoKSkKLSAgICAgIHsKLSAgICAgICAgIHBkYXRhLnJlc2V0KCk7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gKnRoaXM7Ci0gICB9Ci0gICByZWdleF90b2tlbl9pdGVyYXRvciBvcGVyYXRvcisrKGludCkKLSAgIHsKLSAgICAgIHJlZ2V4X3Rva2VuX2l0ZXJhdG9yIHJlc3VsdCgqdGhpcyk7Ci0gICAgICArKygqdGhpcyk7Ci0gICAgICByZXR1cm4gcmVzdWx0OwotICAgfQotcHJpdmF0ZToKLQotICAgcGltcGwgcGRhdGE7Ci0KLSAgIHZvaWQgY293KCkKLSAgIHsKLSAgICAgIC8vIGNvcHktb24td3JpdGUKLSAgICAgIGlmKHBkYXRhLmdldCgpICYmICFwZGF0YS51bmlxdWUoKSkKLSAgICAgIHsKLSAgICAgICAgIHBkYXRhLnJlc2V0KG5ldyBpbXBsKCoocGRhdGEuZ2V0KCkpKSk7Ci0gICAgICB9Ci0gICB9Ci19OwotCi10eXBlZGVmIHJlZ2V4X3Rva2VuX2l0ZXJhdG9yPGNvbnN0IGNoYXIqPiBjcmVnZXhfdG9rZW5faXRlcmF0b3I7Ci10eXBlZGVmIHJlZ2V4X3Rva2VuX2l0ZXJhdG9yPHN0ZDo6c3RyaW5nOjpjb25zdF9pdGVyYXRvcj4gc3JlZ2V4X3Rva2VuX2l0ZXJhdG9yOwotI2lmbmRlZiBORE5CT09TVF9OT19XUkVHRVgKLXR5cGVkZWYgcmVnZXhfdG9rZW5faXRlcmF0b3I8Y29uc3Qgd2NoYXJfdCo+IHdjcmVnZXhfdG9rZW5faXRlcmF0b3I7Ci10eXBlZGVmIHJlZ2V4X3Rva2VuX2l0ZXJhdG9yPHN0ZDo6d3N0cmluZzo6Y29uc3RfaXRlcmF0b3I+IHdzcmVnZXhfdG9rZW5faXRlcmF0b3I7Ci0jZW5kaWYKLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci1pbmxpbmUgcmVnZXhfdG9rZW5faXRlcmF0b3I8Y29uc3QgY2hhclQqLCBjaGFyVCwgdHJhaXRzPiBtYWtlX3JlZ2V4X3Rva2VuX2l0ZXJhdG9yKGNvbnN0IGNoYXJUKiBwLCBjb25zdCBiYXNpY19yZWdleDxjaGFyVCwgdHJhaXRzPiYgZSwgaW50IHN1Ym1hdGNoID0gMCwgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9mbGFnX3R5cGUgbSA9IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZWdleF90b2tlbl9pdGVyYXRvcjxjb25zdCBjaGFyVCosIGNoYXJULCB0cmFpdHM+KHAsIHArdHJhaXRzOjpsZW5ndGgocCksIGUsIHN1Ym1hdGNoLCBtKTsKLX0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzLCBjbGFzcyBTVCwgY2xhc3MgU0E+Ci1pbmxpbmUgcmVnZXhfdG9rZW5faXRlcmF0b3I8dHlwZW5hbWUgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQsIFNULCBTQT46OmNvbnN0X2l0ZXJhdG9yLCBjaGFyVCwgdHJhaXRzPiBtYWtlX3JlZ2V4X3Rva2VuX2l0ZXJhdG9yKGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJULCBTVCwgU0E+JiBwLCBjb25zdCBiYXNpY19yZWdleDxjaGFyVCwgdHJhaXRzPiYgZSwgaW50IHN1Ym1hdGNoID0gMCwgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9mbGFnX3R5cGUgbSA9IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZWdleF90b2tlbl9pdGVyYXRvcjx0eXBlbmFtZSBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVCwgU1QsIFNBPjo6Y29uc3RfaXRlcmF0b3IsIGNoYXJULCB0cmFpdHM+KHAuYmVnaW4oKSwgcC5lbmQoKSwgZSwgc3VibWF0Y2gsIG0pOwotfQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkKLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzLCBzdGQ6OnNpemVfdCBOPgotaW5saW5lIHJlZ2V4X3Rva2VuX2l0ZXJhdG9yPGNvbnN0IGNoYXJUKiwgY2hhclQsIHRyYWl0cz4gbWFrZV9yZWdleF90b2tlbl9pdGVyYXRvcihjb25zdCBjaGFyVCogcCwgY29uc3QgYmFzaWNfcmVnZXg8Y2hhclQsIHRyYWl0cz4mIGUsIGNvbnN0IGludCAoJnN1Ym1hdGNoKVtOXSwgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9mbGFnX3R5cGUgbSA9IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZWdleF90b2tlbl9pdGVyYXRvcjxjb25zdCBjaGFyVCosIGNoYXJULCB0cmFpdHM+KHAsIHArdHJhaXRzOjpsZW5ndGgocCksIGUsIHN1Ym1hdGNoLCBtKTsKLX0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzLCBjbGFzcyBTVCwgY2xhc3MgU0EsIHN0ZDo6c2l6ZV90IE4+Ci1pbmxpbmUgcmVnZXhfdG9rZW5faXRlcmF0b3I8dHlwZW5hbWUgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQsIFNULCBTQT46OmNvbnN0X2l0ZXJhdG9yLCBjaGFyVCwgdHJhaXRzPiBtYWtlX3JlZ2V4X3Rva2VuX2l0ZXJhdG9yKGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJULCBTVCwgU0E+JiBwLCBjb25zdCBiYXNpY19yZWdleDxjaGFyVCwgdHJhaXRzPiYgZSwgY29uc3QgaW50ICgmc3VibWF0Y2gpW05dLCByZWdleF9jb25zdGFudHM6Om1hdGNoX2ZsYWdfdHlwZSBtID0gcmVnZXhfY29uc3RhbnRzOjptYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlZ2V4X3Rva2VuX2l0ZXJhdG9yPHR5cGVuYW1lIHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJULCBTVCwgU0E+Ojpjb25zdF9pdGVyYXRvciwgY2hhclQsIHRyYWl0cz4ocC5iZWdpbigpLCBwLmVuZCgpLCBlLCBzdWJtYXRjaCwgbSk7Ci19Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotaW5saW5lIHJlZ2V4X3Rva2VuX2l0ZXJhdG9yPGNvbnN0IGNoYXJUKiwgY2hhclQsIHRyYWl0cz4gbWFrZV9yZWdleF90b2tlbl9pdGVyYXRvcihjb25zdCBjaGFyVCogcCwgY29uc3QgYmFzaWNfcmVnZXg8Y2hhclQsIHRyYWl0cz4mIGUsIGNvbnN0IHN0ZDo6dmVjdG9yPGludD4mIHN1Ym1hdGNoLCByZWdleF9jb25zdGFudHM6Om1hdGNoX2ZsYWdfdHlwZSBtID0gcmVnZXhfY29uc3RhbnRzOjptYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHJlZ2V4X3Rva2VuX2l0ZXJhdG9yPGNvbnN0IGNoYXJUKiwgY2hhclQsIHRyYWl0cz4ocCwgcCt0cmFpdHM6Omxlbmd0aChwKSwgZSwgc3VibWF0Y2gsIG0pOwotfQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHMsIGNsYXNzIFNULCBjbGFzcyBTQT4KLWlubGluZSByZWdleF90b2tlbl9pdGVyYXRvcjx0eXBlbmFtZSBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVCwgU1QsIFNBPjo6Y29uc3RfaXRlcmF0b3IsIGNoYXJULCB0cmFpdHM+IG1ha2VfcmVnZXhfdG9rZW5faXRlcmF0b3IoY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQsIFNULCBTQT4mIHAsIGNvbnN0IGJhc2ljX3JlZ2V4PGNoYXJULCB0cmFpdHM+JiBlLCBjb25zdCBzdGQ6OnZlY3RvcjxpbnQ+JiBzdWJtYXRjaCwgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9mbGFnX3R5cGUgbSA9IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiByZWdleF90b2tlbl9pdGVyYXRvcjx0eXBlbmFtZSBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVCwgU1QsIFNBPjo6Y29uc3RfaXRlcmF0b3IsIGNoYXJULCB0cmFpdHM+KHAuYmVnaW4oKSwgcC5lbmQoKSwgZSwgc3VibWF0Y2gsIG0pOwotfQotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA+IDEzMDApCi0jICBwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9TVUZGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1JFR0VYX1Y0X1JFR0VYX1RPS0VOX0lURVJBVE9SX0hQUAotCi0KLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X3RyYWl0cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X3RyYWl0cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5OTFiYjYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9yZWdleF90cmFpdHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTg5ICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IChjKSAyMDAzCi0gKiBKb2huIE1hZGRvY2sKLSAqCi0gKiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLSAqIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotICogTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqLwotIAotIC8qCi0gICogICBMT0NBVElPTjogICAgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotICAqICAgRklMRSAgICAgICAgIHJlZ2V4X3RyYWl0cy5ocHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IERlY2xhcmVzIHJlZ3VsYXIgZXhwcmVzc2lvbiB0cmFpdHMgY2xhc3Nlcy4KLSAgKi8KLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9UUkFJVFNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1JFR0VYX1RSQUlUU19IUFBfSU5DTFVERUQKLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9DT05GSUdfSFBQCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvY29uZmlnLmhwcD4KLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9XT1JLQVJPVU5EX0hQUAotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X3dvcmthcm91bmQuaHBwPgotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1NZTlRBWF9UWVBFX0hQUAotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3Y0L3N5bnRheF90eXBlLmhwcD4KLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9FUlJPUl9UWVBFX0hQUAotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3Y0L2Vycm9yX3R5cGUuaHBwPgotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1RSQUlUU19ERUZBVUxUU19IUFBfSU5DTFVERUQKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC92NC9yZWdleF90cmFpdHNfZGVmYXVsdHMuaHBwPgotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX05PX1NURF9MT0NBTEUKLSMgIGlmbmRlZiBORE5CT09TVF9DUFBfUkVHRVhfVFJBSVRTX0hQUF9JTkNMVURFRAotIyAgICAgaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvdjQvY3BwX3JlZ2V4X3RyYWl0cy5ocHA+Ci0jICBlbmRpZgotI2VuZGlmCi0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCA8IDB4NTYwKQotIyAgaWZuZGVmIE5ETkJPT1NUX0NfUkVHRVhfVFJBSVRTX0hQUF9JTkNMVURFRAotIyAgICAgaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvdjQvY19yZWdleF90cmFpdHMuaHBwPgotIyAgZW5kaWYKLSNlbmRpZgotI2lmIGRlZmluZWQoX1dJTjMyKSAmJiAhZGVmaW5lZChORE5CT09TVF9SRUdFWF9OT19XMzIpCi0jICBpZm5kZWYgTkROQk9PU1RfVzMyX1JFR0VYX1RSQUlUU19IUFBfSU5DTFVERUQKLSMgICAgIGluY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3Y0L3czMl9yZWdleF90cmFpdHMuaHBwPgotIyAgZW5kaWYKLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9GV0RfSFBQX0lOQ0xVREVECi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXhfZndkLmhwcD4KLSNlbmRpZgotCi0jaW5jbHVkZSAibmRuYm9vc3QvbXBsL2hhc194eHguaHBwIgotI2luY2x1ZGUgPG5kbmJvb3N0L3N0YXRpY19hc3NlcnQuaHBwPgotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfUFJFRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdHsKLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyBpbXBsZW1lbnRhdGlvblQgPgotc3RydWN0IHJlZ2V4X3RyYWl0cyA6IHB1YmxpYyBpbXBsZW1lbnRhdGlvblQKLXsKLSAgIHJlZ2V4X3RyYWl0cygpIDogaW1wbGVtZW50YXRpb25UKCkge30KLX07Ci0KLS8vCi0vLyBjbGFzcyByZWdleF90cmFpdHNfd3JhcHBlci4KLS8vIHRoaXMgaXMgd2hhdCBvdXIgaW1wbGVtZW50YXRpb24gd2lsbCBhY3R1YWxseSBzdG9yZTsKLS8vIGl0IHByb3ZpZGVzIGRlZmF1bHQgaW1wbGVtZW50YXRpb25zIG9mIHRoZSAib3B0aW9uYWwiCi0vLyBpbnRlcmZhY2VzIHRoYXQgd2Ugc3VwcG9ydCwgaW4gYWRkaXRpb24gdG8gdGhlCi0vLyByZXF1aXJlZCAic3RhbmRhcmQiIG9uZXM6Ci0vLwotbmFtZXNwYWNlIHJlX2RldGFpbHsKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKSAmJiAhTkROQk9PU1RfV09SS0FST1VORChfX0hQX2FDQywgPCA2MDAwMCkKLU5ETkJPT1NUX01QTF9IQVNfWFhYX1RSQUlUX0RFRihib29zdF9leHRlbnNpb25zX3RhZykKLSNlbHNlCi10ZW1wbGF0ZTxjbGFzcyBUPgotc3RydWN0IGhhc19ib29zdF9leHRlbnNpb25zX3RhZwotewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gZmFsc2UpOwotfTsKLSNlbmRpZgotCi10ZW1wbGF0ZSA8Y2xhc3MgQmFzZVQ+Ci1zdHJ1Y3QgZGVmYXVsdF93cmFwcGVyIDogcHVibGljIEJhc2VUCi17Ci0gICB0eXBlZGVmIHR5cGVuYW1lIEJhc2VUOjpjaGFyX3R5cGUgY2hhcl90eXBlOwotICAgc3RkOjpzdHJpbmcgZXJyb3Jfc3RyaW5nKDo6bmRuYm9vc3Q6OnJlZ2V4X2NvbnN0YW50czo6ZXJyb3JfdHlwZSBlKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpnZXRfZGVmYXVsdF9lcnJvcl9zdHJpbmcoZSk7Ci0gICB9Ci0gICA6Om5kbmJvb3N0OjpyZWdleF9jb25zdGFudHM6OnN5bnRheF90eXBlIHN5bnRheF90eXBlKGNoYXJfdHlwZSBjKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gKChjICYgMHg3ZikgPT0gYykgPyBnZXRfZGVmYXVsdF9zeW50YXhfdHlwZShzdGF0aWNfY2FzdDxjaGFyPihjKSkgOiA6Om5kbmJvb3N0OjpyZWdleF9jb25zdGFudHM6OnN5bnRheF9jaGFyOwotICAgfQotICAgOjpuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjplc2NhcGVfc3ludGF4X3R5cGUgZXNjYXBlX3N5bnRheF90eXBlKGNoYXJfdHlwZSBjKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gKChjICYgMHg3ZikgPT0gYykgPyBnZXRfZGVmYXVsdF9lc2NhcGVfc3ludGF4X3R5cGUoc3RhdGljX2Nhc3Q8Y2hhcj4oYykpIDogOjpuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjplc2NhcGVfdHlwZV9pZGVudGl0eTsKLSAgIH0KLSAgIGludCB0b2koY29uc3QgY2hhcl90eXBlKiYgcDEsIGNvbnN0IGNoYXJfdHlwZSogcDIsIGludCByYWRpeCljb25zdAotICAgewotICAgICAgcmV0dXJuIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Z2xvYmFsX3RvaShwMSwgcDIsIHJhZGl4LCAqdGhpcyk7Ci0gICB9Ci0gICBjaGFyX3R5cGUgdHJhbnNsYXRlKGNoYXJfdHlwZSBjLCBib29sIGljYXNlKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gKGljYXNlID8gdGhpcy0+dHJhbnNsYXRlX25vY2FzZShjKSA6IHRoaXMtPnRyYW5zbGF0ZShjKSk7Ci0gICB9Ci0gICBjaGFyX3R5cGUgdHJhbnNsYXRlKGNoYXJfdHlwZSBjKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gQmFzZVQ6OnRyYW5zbGF0ZShjKTsKLSAgIH0KLSAgIGNoYXJfdHlwZSB0b2xvd2VyKGNoYXJfdHlwZSBjKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpnbG9iYWxfbG93ZXIoYyk7Ci0gICB9Ci0gICBjaGFyX3R5cGUgdG91cHBlcihjaGFyX3R5cGUgYyljb25zdAotICAgewotICAgICAgcmV0dXJuIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Z2xvYmFsX3VwcGVyKGMpOwotICAgfQotfTsKLQotdGVtcGxhdGUgPGNsYXNzIEJhc2VULCBib29sIGhhc19leHRlbnNpb25zPgotc3RydWN0IGNvbXB1dGVfd3JhcHBlcl9iYXNlCi17Ci0gICB0eXBlZGVmIEJhc2VUIHR5cGU7Ci19OwotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pICYmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fSFBfYUNDLCA8IDYwMDAwKQotdGVtcGxhdGUgPGNsYXNzIEJhc2VUPgotc3RydWN0IGNvbXB1dGVfd3JhcHBlcl9iYXNlPEJhc2VULCBmYWxzZT4KLXsKLSAgIHR5cGVkZWYgZGVmYXVsdF93cmFwcGVyPEJhc2VUPiB0eXBlOwotfTsKLSNlbHNlCi10ZW1wbGF0ZSA8Pgotc3RydWN0IGNvbXB1dGVfd3JhcHBlcl9iYXNlPGNfcmVnZXhfdHJhaXRzPGNoYXI+LCBmYWxzZT4KLXsKLSAgIHR5cGVkZWYgZGVmYXVsdF93cmFwcGVyPGNfcmVnZXhfdHJhaXRzPGNoYXI+ID4gdHlwZTsKLX07Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1dSRUdFWAotdGVtcGxhdGUgPD4KLXN0cnVjdCBjb21wdXRlX3dyYXBwZXJfYmFzZTxjX3JlZ2V4X3RyYWl0czx3Y2hhcl90PiwgZmFsc2U+Ci17Ci0gICB0eXBlZGVmIGRlZmF1bHRfd3JhcHBlcjxjX3JlZ2V4X3RyYWl0czx3Y2hhcl90PiA+IHR5cGU7Ci19OwotI2VuZGlmCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgcmVfZGV0YWlsCi0KLXRlbXBsYXRlIDxjbGFzcyBCYXNlVD4KLXN0cnVjdCByZWdleF90cmFpdHNfd3JhcHBlciAKLSAgIDogcHVibGljIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Y29tcHV0ZV93cmFwcGVyX2Jhc2U8Ci0gICAgICAgICAgICAgICBCYXNlVCwgCi0gICAgICAgICAgICAgICA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6Omhhc19ib29zdF9leHRlbnNpb25zX3RhZzxCYXNlVD46OnZhbHVlCi0gICAgICAgICAgICA+Ojp0eXBlCi17Ci0gICByZWdleF90cmFpdHNfd3JhcHBlcigpe30KLXByaXZhdGU6Ci0gICByZWdleF90cmFpdHNfd3JhcHBlcihjb25zdCByZWdleF90cmFpdHNfd3JhcHBlciYpOwotICAgcmVnZXhfdHJhaXRzX3dyYXBwZXImIG9wZXJhdG9yPShjb25zdCByZWdleF90cmFpdHNfd3JhcHBlciYpOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1NVRkZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0jZW5kaWYgLy8gaW5jbHVkZQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X3RyYWl0c19kZWZhdWx0cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X3RyYWl0c19kZWZhdWx0cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiNGZjMjguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9yZWdleF90cmFpdHNfZGVmYXVsdHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzcxICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IChjKSAyMDA0Ci0gKiBKb2huIE1hZGRvY2sKLSAqCi0gKiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZQotICogQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUKLSAqIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKi8KLQotIC8qCi0gICogICBMT0NBVElPTjogICAgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotICAqICAgRklMRSAgICAgICAgIHJlZ2V4X3RyYWl0c19kZWZhdWx0cy5ocHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IERlY2xhcmVzIEFQSSdzIGZvciBhY2Nlc3MgdG8gcmVnZXhfdHJhaXRzIGRlZmF1bHQgcHJvcGVydGllcy4KLSAgKi8KLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9UUkFJVFNfREVGQVVMVFNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1JFR0VYX1RSQUlUU19ERUZBVUxUU19IUFBfSU5DTFVERUQKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1BSRUZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1NZTlRBWF9UWVBFX0hQUAotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3Y0L3N5bnRheF90eXBlLmhwcD4KLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9FUlJPUl9UWVBFX0hQUAotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3Y0L2Vycm9yX3R5cGUuaHBwPgotI2VuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9OT19TVERDX05BTUVTUEFDRQotbmFtZXNwYWNlIHN0ZHsKLSAgIHVzaW5nIDo6c3RybGVuOwotfQotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdHsgbmFtZXNwYWNlIHJlX2RldGFpbHsKLQotCi0vLwotLy8gaGVscGVycyB0byBzdXBwcmVzcyB3YXJuaW5nczoKLS8vCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci1pbmxpbmUgYm9vbCBpc19leHRlbmRlZChjaGFyVCBjKQoteyByZXR1cm4gYyA+IDI1NjsgfQotaW5saW5lIGJvb2wgaXNfZXh0ZW5kZWQoY2hhcikKLXsgcmV0dXJuIGZhbHNlOyB9Ci0KLQotTkROQk9PU1RfUkVHRVhfREVDTCBjb25zdCBjaGFyKiBORE5CT09TVF9SRUdFWF9DQUxMIGdldF9kZWZhdWx0X3N5bnRheChyZWdleF9jb25zdGFudHM6OnN5bnRheF90eXBlIG4pOwotTkROQk9PU1RfUkVHRVhfREVDTCBjb25zdCBjaGFyKiBORE5CT09TVF9SRUdFWF9DQUxMIGdldF9kZWZhdWx0X2Vycm9yX3N0cmluZyhyZWdleF9jb25zdGFudHM6OmVycm9yX3R5cGUgbik7Ci1ORE5CT09TVF9SRUdFWF9ERUNMIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X3R5cGUgTkROQk9PU1RfUkVHRVhfQ0FMTCBnZXRfZGVmYXVsdF9zeW50YXhfdHlwZShjaGFyIGMpOwotTkROQk9PU1RfUkVHRVhfREVDTCByZWdleF9jb25zdGFudHM6OmVzY2FwZV9zeW50YXhfdHlwZSBORE5CT09TVF9SRUdFWF9DQUxMIGdldF9kZWZhdWx0X2VzY2FwZV9zeW50YXhfdHlwZShjaGFyIGMpOwotCi0vLyBpcyBjaGFyVCBjIGEgY29tYmluaW5nIGNoYXJhY3Rlcj8KLU5ETkJPT1NUX1JFR0VYX0RFQ0wgYm9vbCBORE5CT09TVF9SRUdFWF9DQUxMIGlzX2NvbWJpbmluZ19pbXBsZW1lbnRhdGlvbih1aW50X2xlYXN0MTZfdCBzKTsKLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotaW5saW5lIGJvb2wgaXNfY29tYmluaW5nKGNoYXJUIGMpCi17Ci0gICByZXR1cm4gKGMgPD0gc3RhdGljX2Nhc3Q8Y2hhclQ+KDApKSA/IGZhbHNlIDogKChjID49IHN0YXRpY19jYXN0PGNoYXJUPigoc3RkOjpudW1lcmljX2xpbWl0czx1aW50X2xlYXN0MTZfdD46Om1heCkoKSkpID8gZmFsc2UgOiBpc19jb21iaW5pbmdfaW1wbGVtZW50YXRpb24oc3RhdGljX2Nhc3Q8dW5zaWduZWQgc2hvcnQ+KGMpKSk7Ci19Ci10ZW1wbGF0ZSA8PgotaW5saW5lIGJvb2wgaXNfY29tYmluaW5nPGNoYXI+KGNoYXIpCi17Ci0gICByZXR1cm4gZmFsc2U7Ci19Ci10ZW1wbGF0ZSA8PgotaW5saW5lIGJvb2wgaXNfY29tYmluaW5nPHNpZ25lZCBjaGFyPihzaWduZWQgY2hhcikKLXsKLSAgIHJldHVybiBmYWxzZTsKLX0KLXRlbXBsYXRlIDw+Ci1pbmxpbmUgYm9vbCBpc19jb21iaW5pbmc8dW5zaWduZWQgY2hhcj4odW5zaWduZWQgY2hhcikKLXsKLSAgIHJldHVybiBmYWxzZTsKLX0KLSNpZiAhZGVmaW5lZChfX2hwdXgpICYmICFkZWZpbmVkKF9fV0lOU0NXX18pIC8vIGNhbid0IHVzZSBXQ0hBUl9NQVgvTUlOIGluIHBwLWRpcmVjdGl2ZXMKLSNpZmRlZiBfTVNDX1ZFUgotdGVtcGxhdGU8PgotaW5saW5lIGJvb2wgaXNfY29tYmluaW5nPHdjaGFyX3Q+KHdjaGFyX3QgYykKLXsKLSAgIHJldHVybiBpc19jb21iaW5pbmdfaW1wbGVtZW50YXRpb24oc3RhdGljX2Nhc3Q8dW5zaWduZWQgc2hvcnQ+KGMpKTsKLX0KLSNlbGlmICFkZWZpbmVkKF9fREVDQ1hYKSAmJiAhZGVmaW5lZChfX29zZl9fKSAmJiAhZGVmaW5lZChfX09TRl9fKSAmJiBkZWZpbmVkKFdDSEFSX01JTikgJiYgKFdDSEFSX01JTiA9PSAwKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19JTlRSSU5TSUNfV0NIQVJfVCkKLSNpZiBkZWZpbmVkKFdDSEFSX01BWCkgJiYgKFdDSEFSX01BWCA8PSBVU0hSVF9NQVgpCi10ZW1wbGF0ZTw+Ci1pbmxpbmUgYm9vbCBpc19jb21iaW5pbmc8d2NoYXJfdD4od2NoYXJfdCBjKQotewotICAgcmV0dXJuIGlzX2NvbWJpbmluZ19pbXBsZW1lbnRhdGlvbihzdGF0aWNfY2FzdDx1bnNpZ25lZCBzaG9ydD4oYykpOwotfQotI2Vsc2UKLXRlbXBsYXRlPD4KLWlubGluZSBib29sIGlzX2NvbWJpbmluZzx3Y2hhcl90Pih3Y2hhcl90IGMpCi17Ci0gICByZXR1cm4gKGMgPj0gKHN0ZDo6bnVtZXJpY19saW1pdHM8dWludF9sZWFzdDE2X3Q+OjptYXgpKCkpID8gZmFsc2UgOiBpc19jb21iaW5pbmdfaW1wbGVtZW50YXRpb24oc3RhdGljX2Nhc3Q8dW5zaWduZWQgc2hvcnQ+KGMpKTsKLX0KLSNlbmRpZgotI2VuZGlmCi0jZW5kaWYKLQotLy8KLS8vIGlzIGEgY2hhclQgYyBhIGxpbmUgc2VwYXJhdG9yPwotLy8KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLWlubGluZSBib29sIGlzX3NlcGFyYXRvcihjaGFyVCBjKQotewotICAgcmV0dXJuIE5ETkJPT1NUX1JFR0VYX01BS0VfQk9PTCgKLSAgICAgIChjID09IHN0YXRpY19jYXN0PGNoYXJUPignXG4nKSkKLSAgICAgIHx8IChjID09IHN0YXRpY19jYXN0PGNoYXJUPignXHInKSkKLSAgICAgIHx8IChjID09IHN0YXRpY19jYXN0PGNoYXJUPignXGYnKSkKLSAgICAgIHx8IChzdGF0aWNfY2FzdDxuZG5ib29zdDo6dWludDE2X3Q+KGMpID09IDB4MjAyOHUpCi0gICAgICB8fCAoc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OnVpbnQxNl90PihjKSA9PSAweDIwMjl1KQotICAgICAgfHwgKHN0YXRpY19jYXN0PG5kbmJvb3N0Ojp1aW50MTZfdD4oYykgPT0gMHg4NXUpKTsKLX0KLXRlbXBsYXRlIDw+Ci1pbmxpbmUgYm9vbCBpc19zZXBhcmF0b3I8Y2hhcj4oY2hhciBjKQotewotICAgcmV0dXJuIE5ETkJPT1NUX1JFR0VYX01BS0VfQk9PTCgoYyA9PSAnXG4nKSB8fCAoYyA9PSAnXHInKSB8fCAoYyA9PSAnXGYnKSk7Ci19Ci0KLS8vCi0vLyBnZXQgYSBkZWZhdWx0IGNvbGxhdGluZyBlbGVtZW50OgotLy8KLU5ETkJPT1NUX1JFR0VYX0RFQ0wgc3RkOjpzdHJpbmcgTkROQk9PU1RfUkVHRVhfQ0FMTCBsb29rdXBfZGVmYXVsdF9jb2xsYXRlX25hbWUoY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUpOwotCi0vLwotLy8gZ2V0IHRoZSBzdGF0ZV9pZCBvZiBhIGNoYXJhY3RlciBjbGFzaWZpY2F0aW9uLCB0aGUgaW5kaXZpZHVhbAotLy8gdHJhaXRzIGNsYXNzZXMgdGhlbiB0cmFuc2Zvcm0gdGhhdCBzdGF0ZV9pZCBpbnRvIGEgYml0bWFzazoKLS8vCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci1zdHJ1Y3QgY2hhcmFjdGVyX3BvaW50ZXJfcmFuZ2UKLXsKLSAgIGNvbnN0IGNoYXJUKiBwMTsKLSAgIGNvbnN0IGNoYXJUKiBwMjsKLQotICAgYm9vbCBvcGVyYXRvciA8IChjb25zdCBjaGFyYWN0ZXJfcG9pbnRlcl9yYW5nZSYgciljb25zdAotICAgewotICAgICAgcmV0dXJuIHN0ZDo6bGV4aWNvZ3JhcGhpY2FsX2NvbXBhcmUocDEsIHAyLCByLnAxLCByLnAyKTsKLSAgIH0KLSAgIGJvb2wgb3BlcmF0b3IgPT0gKGNvbnN0IGNoYXJhY3Rlcl9wb2ludGVyX3JhbmdlJiByKWNvbnN0Ci0gICB7Ci0gICAgICAvLyBOb3Qgb25seSBkbyB3ZSBjaGVjayB0aGF0IHRoZSByYW5nZXMgYXJlIG9mIGVxdWFsIHNpemUgYmVmb3JlCi0gICAgICAvLyBjYWxsaW5nIHN0ZDo6ZXF1YWwsIGJ1dCB0aGVyZSBpcyBubyBvdGhlciBhbGdvcml0aG0gYXZhaWxhYmxlOgotICAgICAgLy8gbm90IGV2ZW4gYSBub24tc3RhbmRhcmQgTVMgb25lLiAgU28gZm9yd2FyZCB0byB1bmNoZWNrZWRfZXF1YWwKLSAgICAgIC8vIGluIHRoZSBNUyBjYXNlLgotICAgICAgcmV0dXJuICgocDIgLSBwMSkgPT0gKHIucDIgLSByLnAxKSkgJiYgcmVfZGV0YWlsOjplcXVhbChwMSwgcDIsIHIucDEpOwotICAgfQotfTsKLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLWludCBnZXRfZGVmYXVsdF9jbGFzc19pZChjb25zdCBjaGFyVCogcDEsIGNvbnN0IGNoYXJUKiBwMikKLXsKLSAgIHN0YXRpYyBjb25zdCBjaGFyVCBkYXRhWzczXSA9IHsKLSAgICAgICdhJywgJ2wnLCAnbicsICd1JywgJ20nLAotICAgICAgJ2EnLCAnbCcsICdwJywgJ2gnLCAnYScsCi0gICAgICAnYicsICdsJywgJ2EnLCAnbicsICdrJywKLSAgICAgICdjJywgJ24nLCAndCcsICdyJywgJ2wnLAotICAgICAgJ2QnLCAnaScsICdnJywgJ2knLCAndCcsCi0gICAgICAnZycsICdyJywgJ2EnLCAncCcsICdoJywKLSAgICAgICdsJywgJ28nLCAndycsICdlJywgJ3InLAotICAgICAgJ3AnLCAncicsICdpJywgJ24nLCAndCcsCi0gICAgICAncCcsICd1JywgJ24nLCAnYycsICd0JywKLSAgICAgICdzJywgJ3AnLCAnYScsICdjJywgJ2UnLAotICAgICAgJ3UnLCAnbicsICdpJywgJ2MnLCAnbycsICdkJywgJ2UnLAotICAgICAgJ3UnLCAncCcsICdwJywgJ2UnLCAncicsCi0gICAgICAndicsCi0gICAgICAndycsICdvJywgJ3InLCAnZCcsCi0gICAgICAneCcsICdkJywgJ2knLCAnZycsICdpJywgJ3QnLAotICAgfTsKLQotICAgc3RhdGljIGNvbnN0IGNoYXJhY3Rlcl9wb2ludGVyX3JhbmdlPGNoYXJUPiByYW5nZXNbMjFdID0KLSAgIHsKLSAgICAgIHtkYXRhKzAsIGRhdGErNSx9LCAvLyBhbG51bQotICAgICAge2RhdGErNSwgZGF0YSsxMCx9LCAvLyBhbHBoYQotICAgICAge2RhdGErMTAsIGRhdGErMTUsfSwgLy8gYmxhbmsKLSAgICAgIHtkYXRhKzE1LCBkYXRhKzIwLH0sIC8vIGNudHJsCi0gICAgICB7ZGF0YSsyMCwgZGF0YSsyMSx9LCAvLyBkCi0gICAgICB7ZGF0YSsyMCwgZGF0YSsyNSx9LCAvLyBkaWdpdAotICAgICAge2RhdGErMjUsIGRhdGErMzAsfSwgLy8gZ3JhcGgKLSAgICAgIHtkYXRhKzI5LCBkYXRhKzMwLH0sIC8vIGgKLSAgICAgIHtkYXRhKzMwLCBkYXRhKzMxLH0sIC8vIGwKLSAgICAgIHtkYXRhKzMwLCBkYXRhKzM1LH0sIC8vIGxvd2VyCi0gICAgICB7ZGF0YSszNSwgZGF0YSs0MCx9LCAvLyBwcmludAotICAgICAge2RhdGErNDAsIGRhdGErNDUsfSwgLy8gcHVuY3QKLSAgICAgIHtkYXRhKzQ1LCBkYXRhKzQ2LH0sIC8vIHMKLSAgICAgIHtkYXRhKzQ1LCBkYXRhKzUwLH0sIC8vIHNwYWNlCi0gICAgICB7ZGF0YSs1NywgZGF0YSs1OCx9LCAvLyB1Ci0gICAgICB7ZGF0YSs1MCwgZGF0YSs1Nyx9LCAvLyB1bmljb2RlCi0gICAgICB7ZGF0YSs1NywgZGF0YSs2Mix9LCAvLyB1cHBlcgotICAgICAge2RhdGErNjIsIGRhdGErNjMsfSwgLy8gdgotICAgICAge2RhdGErNjMsIGRhdGErNjQsfSwgLy8gdwotICAgICAge2RhdGErNjMsIGRhdGErNjcsfSwgLy8gd29yZAotICAgICAge2RhdGErNjcsIGRhdGErNzMsfSwgLy8geGRpZ2l0Ci0gICB9OwotICAgc3RhdGljIGNvbnN0IGNoYXJhY3Rlcl9wb2ludGVyX3JhbmdlPGNoYXJUPiogcmFuZ2VzX2JlZ2luID0gcmFuZ2VzOwotICAgc3RhdGljIGNvbnN0IGNoYXJhY3Rlcl9wb2ludGVyX3JhbmdlPGNoYXJUPiogcmFuZ2VzX2VuZCA9IHJhbmdlcyArIChzaXplb2YocmFuZ2VzKS9zaXplb2YocmFuZ2VzWzBdKSk7Ci0KLSAgIGNoYXJhY3Rlcl9wb2ludGVyX3JhbmdlPGNoYXJUPiB0ID0geyBwMSwgcDIsIH07Ci0gICBjb25zdCBjaGFyYWN0ZXJfcG9pbnRlcl9yYW5nZTxjaGFyVD4qIHAgPSBzdGQ6Omxvd2VyX2JvdW5kKHJhbmdlc19iZWdpbiwgcmFuZ2VzX2VuZCwgdCk7Ci0gICBpZigocCAhPSByYW5nZXNfZW5kKSAmJiAodCA9PSAqcCkpCi0gICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihwIC0gcmFuZ2VzKTsKLSAgIHJldHVybiAtMTsKLX0KLQotLy8KLS8vIGhlbHBlciBmdW5jdGlvbnM6Ci0vLwotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotc3RkOjpwdHJkaWZmX3QgZ2xvYmFsX2xlbmd0aChjb25zdCBjaGFyVCogcCkKLXsKLSAgIHN0ZDo6cHRyZGlmZl90IG4gPSAwOwotICAgd2hpbGUoKnApCi0gICB7Ci0gICAgICArK3A7Ci0gICAgICArK247Ci0gICB9Ci0gICByZXR1cm4gbjsKLX0KLXRlbXBsYXRlPD4KLWlubGluZSBzdGQ6OnB0cmRpZmZfdCBnbG9iYWxfbGVuZ3RoPGNoYXI+KGNvbnN0IGNoYXIqIHApCi17Ci0gICByZXR1cm4gKHN0ZDo6c3RybGVuKShwKTsKLX0KLSNpZm5kZWYgTkROQk9PU1RfTk9fV1JFR0VYCi10ZW1wbGF0ZTw+Ci1pbmxpbmUgc3RkOjpwdHJkaWZmX3QgZ2xvYmFsX2xlbmd0aDx3Y2hhcl90Pihjb25zdCB3Y2hhcl90KiBwKQotewotICAgcmV0dXJuIChzdGQ6Ondjc2xlbikocCk7Ci19Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLWlubGluZSBjaGFyVCBORE5CT09TVF9SRUdFWF9DQUxMIGdsb2JhbF9sb3dlcihjaGFyVCBjKQotewotICAgcmV0dXJuIGM7Ci19Ci10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci1pbmxpbmUgY2hhclQgTkROQk9PU1RfUkVHRVhfQ0FMTCBnbG9iYWxfdXBwZXIoY2hhclQgYykKLXsKLSAgIHJldHVybiBjOwotfQotCi1ORE5CT09TVF9SRUdFWF9ERUNMIGNoYXIgTkROQk9PU1RfUkVHRVhfQ0FMTCBkb19nbG9iYWxfbG93ZXIoY2hhciBjKTsKLU5ETkJPT1NUX1JFR0VYX0RFQ0wgY2hhciBORE5CT09TVF9SRUdFWF9DQUxMIGRvX2dsb2JhbF91cHBlcihjaGFyIGMpOwotI2lmbmRlZiBORE5CT09TVF9OT19XUkVHRVgKLU5ETkJPT1NUX1JFR0VYX0RFQ0wgd2NoYXJfdCBORE5CT09TVF9SRUdFWF9DQUxMIGRvX2dsb2JhbF9sb3dlcih3Y2hhcl90IGMpOwotTkROQk9PU1RfUkVHRVhfREVDTCB3Y2hhcl90IE5ETkJPT1NUX1JFR0VYX0NBTEwgZG9fZ2xvYmFsX3VwcGVyKHdjaGFyX3QgYyk7Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9SRUdFWF9IQVNfT1RIRVJfV0NIQVJfVAotTkROQk9PU1RfUkVHRVhfREVDTCB1bnNpZ25lZCBzaG9ydCBORE5CT09TVF9SRUdFWF9DQUxMIGRvX2dsb2JhbF9sb3dlcih1bnNpZ25lZCBzaG9ydCBjKTsKLU5ETkJPT1NUX1JFR0VYX0RFQ0wgdW5zaWduZWQgc2hvcnQgTkROQk9PU1RfUkVHRVhfQ0FMTCBkb19nbG9iYWxfdXBwZXIodW5zaWduZWQgc2hvcnQgYyk7Ci0jZW5kaWYKLS8vCi0vLyBUaGlzIHN1Y2tzOiBkZWNsYXJlIHRlbXBsYXRlIHNwZWNpYWxpc2F0aW9ucyBvZiBnbG9iYWxfbG93ZXIvZ2xvYmFsX3VwcGVyCi0vLyB0aGF0IGp1c3QgZm9yd2FyZCB0byB0aGUgbm9uLXRlbXBsYXRlIGltcGxlbWVudGF0aW9uIGZ1bmN0aW9ucy4gIFdlIGRvCi0vLyB0aGlzIGJlY2F1c2UgdGhlcmUgaXMgb25lIGNvbXBpbGVyIChDb21wYXEgVHJ1NjQgQysrKSB0aGF0IGRvZXNuJ3Qgc2VlbQotLy8gdG8gZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIHRlbXBsYXRlcyBhbmQgbm9uLXRlbXBsYXRlIG92ZXJsb2Fkcy4uLi4KLS8vIHdoYXQncyBtb3JlLCB0aGUgcHJpbWFyeSB0ZW1wbGF0ZSwgcGx1cyBhbGwgb3ZlcmxvYWRzIGhhdmUgdG8gYmUKLS8vIGRlZmluZWQgaW4gdGhlIHNhbWUgdHJhbnNsYXRpb24gdW5pdCAoaWYgb25lIGlzIGlubGluZSB0aGV5IGFsbCBtdXN0IGJlKQotLy8gb3RoZXJ3aXNlIHRoZSAibG9jYWwgdGVtcGxhdGUgaW5zdGFudGlhdGlvbiIgY29tcGlsZXIgb3B0aW9uIGNhbiBwaWNrCi0vLyB0aGUgd3JvbmcgaW5zdGFudGlhdGlvbiB3aGVuIGxpbmtpbmc6Ci0vLwotdGVtcGxhdGU8PiBpbmxpbmUgY2hhciBORE5CT09TVF9SRUdFWF9DQUxMIGdsb2JhbF9sb3dlcjxjaGFyPihjaGFyIGMpeyByZXR1cm4gZG9fZ2xvYmFsX2xvd2VyKGMpOyB9Ci10ZW1wbGF0ZTw+IGlubGluZSBjaGFyIE5ETkJPT1NUX1JFR0VYX0NBTEwgZ2xvYmFsX3VwcGVyPGNoYXI+KGNoYXIgYyl7IHJldHVybiBkb19nbG9iYWxfdXBwZXIoYyk7IH0KLSNpZm5kZWYgTkROQk9PU1RfTk9fV1JFR0VYCi10ZW1wbGF0ZTw+IGlubGluZSB3Y2hhcl90IE5ETkJPT1NUX1JFR0VYX0NBTEwgZ2xvYmFsX2xvd2VyPHdjaGFyX3Q+KHdjaGFyX3QgYyl7IHJldHVybiBkb19nbG9iYWxfbG93ZXIoYyk7IH0KLXRlbXBsYXRlPD4gaW5saW5lIHdjaGFyX3QgTkROQk9PU1RfUkVHRVhfQ0FMTCBnbG9iYWxfdXBwZXI8d2NoYXJfdD4od2NoYXJfdCBjKXsgcmV0dXJuIGRvX2dsb2JhbF91cHBlcihjKTsgfQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfUkVHRVhfSEFTX09USEVSX1dDSEFSX1QKLXRlbXBsYXRlPD4gaW5saW5lIHVuc2lnbmVkIHNob3J0IE5ETkJPT1NUX1JFR0VYX0NBTEwgZ2xvYmFsX2xvd2VyPHVuc2lnbmVkIHNob3J0Pih1bnNpZ25lZCBzaG9ydCBjKXsgcmV0dXJuIGRvX2dsb2JhbF9sb3dlcihjKTsgfQotdGVtcGxhdGU8PiBpbmxpbmUgdW5zaWduZWQgc2hvcnQgTkROQk9PU1RfUkVHRVhfQ0FMTCBnbG9iYWxfdXBwZXI8dW5zaWduZWQgc2hvcnQ+KHVuc2lnbmVkIHNob3J0IGMpeyByZXR1cm4gZG9fZ2xvYmFsX3VwcGVyKGMpOyB9Ci0jZW5kaWYKLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotaW50IGdsb2JhbF92YWx1ZShjaGFyVCBjKQotewotICAgc3RhdGljIGNvbnN0IGNoYXJUIHplcm8gPSAnMCc7Ci0gICBzdGF0aWMgY29uc3QgY2hhclQgbmluZSA9ICc5JzsKLSAgIHN0YXRpYyBjb25zdCBjaGFyVCBhID0gJ2EnOwotICAgc3RhdGljIGNvbnN0IGNoYXJUIGYgPSAnZic7Ci0gICBzdGF0aWMgY29uc3QgY2hhclQgQSA9ICdBJzsKLSAgIHN0YXRpYyBjb25zdCBjaGFyVCBGID0gJ0YnOwotCi0gICBpZihjID4gZikgcmV0dXJuIC0xOwotICAgaWYoYyA+PSBhKSByZXR1cm4gMTAgKyAoYyAtIGEpOwotICAgaWYoYyA+IEYpIHJldHVybiAtMTsKLSAgIGlmKGMgPj0gQSkgcmV0dXJuIDEwICsgKGMgLSBBKTsKLSAgIGlmKGMgPiBuaW5lKSByZXR1cm4gLTE7Ci0gICBpZihjID49IHplcm8pIHJldHVybiBjIC0gemVybzsKLSAgIHJldHVybiAtMTsKLX0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotaW50IGdsb2JhbF90b2koY29uc3QgY2hhclQqJiBwMSwgY29uc3QgY2hhclQqIHAyLCBpbnQgcmFkaXgsIGNvbnN0IHRyYWl0cyYgdCkKLXsKLSAgICh2b2lkKXQ7IC8vIHdhcm5pbmcgc3VwcHJlc3Npb24KLSAgIGludCBuZXh0X3ZhbHVlID0gdC52YWx1ZSgqcDEsIHJhZGl4KTsKLSAgIGlmKChwMSA9PSBwMikgfHwgKG5leHRfdmFsdWUgPCAwKSB8fCAobmV4dF92YWx1ZSA+PSByYWRpeCkpCi0gICAgICByZXR1cm4gLTE7Ci0gICBpbnQgcmVzdWx0ID0gMDsKLSAgIHdoaWxlKHAxICE9IHAyKQotICAgewotICAgICAgbmV4dF92YWx1ZSA9IHQudmFsdWUoKnAxLCByYWRpeCk7Ci0gICAgICBpZigobmV4dF92YWx1ZSA8IDApIHx8IChuZXh0X3ZhbHVlID49IHJhZGl4KSkKLSAgICAgICAgIGJyZWFrOwotICAgICAgcmVzdWx0ICo9IHJhZGl4OwotICAgICAgcmVzdWx0ICs9IG5leHRfdmFsdWU7Ci0gICAgICArK3AxOwotICAgfQotICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotaW5saW5lIGNvbnN0IGNoYXJUKiBnZXRfZXNjYXBlX1Jfc3RyaW5nKCkKLXsKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jICBwcmFnbWEgd2FybmluZyhwdXNoKQotIyAgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MzA5IDQyNDUpCi0jZW5kaWYKLSAgIHN0YXRpYyBjb25zdCBjaGFyVCBlMVtdID0geyAnKCcsICc/JywgJz4nLCAnXHgwRCcsICdceDBBJywgJz8nLAotICAgICAgJ3wnLCAnWycsICdceDBBJywgJ1x4MEInLCAnXHgwQycsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KCdceDg1JyksICdcXCcsICd4JywgJ3snLCAnMicsICcwJywgJzInLCAnOCcsICd9JywKLSAgICAgICAgICAgICAgICAnXFwnLCAneCcsICd7JywgJzInLCAnMCcsICcyJywgJzknLCAnfScsICddJywgJyknLCAnXDAnIH07Ci0gICBzdGF0aWMgY29uc3QgY2hhclQgZTJbXSA9IHsgJygnLCAnPycsICc+JywgJ1x4MEQnLCAnXHgwQScsICc/JywKLSAgICAgICd8JywgJ1snLCAnXHgwQScsICdceDBCJywgJ1x4MEMnLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPignXHg4NScpLCAnXScsICcpJywgJ1wwJyB9OwotCi0gICBjaGFyVCBjID0gc3RhdGljX2Nhc3Q8Y2hhclQ+KDB4MjAyOXUpOwotICAgYm9vbCBiID0gKHN0YXRpY19jYXN0PHVuc2lnbmVkPihjKSA9PSAweDIwMjl1KTsKLQotICAgcmV0dXJuIChiID8gZTEgOiBlMik7Ci0jaWZkZWYgTkROQk9PU1RfTVNWQwotIyAgcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi19Ci0KLXRlbXBsYXRlIDw+Ci1pbmxpbmUgY29uc3QgY2hhciogZ2V0X2VzY2FwZV9SX3N0cmluZzxjaGFyPigpCi17Ci0jaWZkZWYgTkROQk9PU1RfTVNWQwotIyAgcHJhZ21hIHdhcm5pbmcocHVzaCkKLSMgIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDMwOSkKLSNlbmRpZgotICAgc3RhdGljIGNvbnN0IGNoYXIgZTJbXSA9IHsgJygnLCAnPycsICc+JywgJ1x4MEQnLCAnXHgwQScsICc/JywKLSAgICAgICd8JywgJ1snLCAnXHgwQScsICdceDBCJywgJ1x4MEMnLCAnXHg4NScsICddJywgJyknLCAnXDAnIH07Ci0gICByZXR1cm4gZTI7Ci0jaWZkZWYgTkROQk9PU1RfTVNWQwotIyAgcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi19Ci0KLX0gLy8gcmVfZGV0YWlsCi19IC8vIGJvb3N0Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9TVUZGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X3dvcmthcm91bmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9yZWdleF93b3JrYXJvdW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzlkNDM4NS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3JlZ2V4X3dvcmthcm91bmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjMyICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IChjKSAxOTk4LTIwMDUKLSAqIEpvaG4gTWFkZG9jawotICoKLSAqIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotICogQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0gKiBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICovCi0KLSAvKgotICAqICAgTE9DQVRJT046ICAgIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLSAgKiAgIEZJTEUgICAgICAgICByZWdleF93b3JrYXJvdW5kcy5jcHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IERlY2xhcmVzIE1pc2Mgd29ya2Fyb3VuZHMuCi0gICovCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVHRVhfV09SS0FST1VORF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfV09SS0FST1VORF9IUFAKLQotCi0jaW5jbHVkZSA8bmV3PgotI2luY2x1ZGUgPGNzdHJpbmc+Ci0jaW5jbHVkZSA8Y3N0ZGxpYj4KLSNpbmNsdWRlIDxjc3RkZGVmPgotI2luY2x1ZGUgPGNhc3NlcnQ+Ci0jaW5jbHVkZSA8Y3N0ZGlvPgotI2luY2x1ZGUgPGNsaW1pdHM+Ci0jaW5jbHVkZSA8c3RyaW5nPgotI2luY2x1ZGUgPHN0ZGV4Y2VwdD4KLSNpbmNsdWRlIDxpdGVyYXRvcj4KLSNpbmNsdWRlIDxhbGdvcml0aG0+Ci0jaW5jbHVkZSA8aW9zZndkPgotI2luY2x1ZGUgPHZlY3Rvcj4KLSNpbmNsdWRlIDxtYXA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbGltaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9hc3NlcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NzdGRpbnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rocm93X2V4Y2VwdGlvbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc2NvcGVkX3B0ci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc2NvcGVkX2FycmF5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zaGFyZWRfcHRyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYm9vbF9md2QuaHBwPgotI2lmbmRlZiBORE5CT09TVF9OT19TVERfTE9DQUxFCi0jICAgaW5jbHVkZSA8bG9jYWxlPgotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFKQotbmFtZXNwYWNlIHN0ZHsKLSAgIHVzaW5nIDo6c3ByaW50ZjsgdXNpbmcgOjpzdHJjcHk7IHVzaW5nIDo6c3RyY2F0OyB1c2luZyA6OnN0cmxlbjsKLX0KLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3R7IG5hbWVzcGFjZSByZV9kZXRhaWx7Ci0jaWZkZWYgTkROQk9PU1RfTk9fU1REX0RJU1RBTkNFCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0ZDo6cHRyZGlmZl90IGRpc3RhbmNlKGNvbnN0IFQmIHgsIGNvbnN0IFQmIHkpCi17IHJldHVybiB5IC0geDsgfQotI2Vsc2UKLXVzaW5nIHN0ZDo6ZGlzdGFuY2U7Ci0jZW5kaWYKLX19Ci0KLQotI2lmZGVmIE5ETkJPT1NUX1JFR0VYX05PX0JPT0wKLSMgIGRlZmluZSBORE5CT09TVF9SRUdFWF9NQUtFX0JPT0woeCkgc3RhdGljX2Nhc3Q8Ym9vbD4oKHgpID8gdHJ1ZSA6IGZhbHNlKQotI2Vsc2UKLSMgIGRlZmluZSBORE5CT09TVF9SRUdFWF9NQUtFX0JPT0woeCkgc3RhdGljX2Nhc3Q8Ym9vbD4oeCkKLSNlbmRpZgotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqCi0gKiAgRml4IGJyb2tlbiBicm9rZW4gbmFtZXNwYWNlIHN1cHBvcnQ6Ci0gKgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFKSAmJiBkZWZpbmVkKF9fY3BsdXNwbHVzKQotCi1uYW1lc3BhY2Ugc3RkewotICAgdXNpbmcgOjpwdHJkaWZmX3Q7Ci0gICB1c2luZyA6OnNpemVfdDsKLSAgIHVzaW5nIDo6YWJzOwotICAgdXNpbmcgOjptZW1zZXQ7Ci0gICB1c2luZyA6Om1lbWNweTsKLX0KLQotI2VuZGlmCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICoKLSAqICBoZWxwZXIgZnVuY3Rpb25zIHBvaW50ZXJfY29uc3RydWN0L3BvaW50ZXJfZGVzdHJveToKLSAqCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1uYW1lc3BhY2UgbmRuYm9vc3R7IG5hbWVzcGFjZSByZV9kZXRhaWx7Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcgKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcgKGRpc2FibGUgOiA0MTAwKQotI2VuZGlmCi0KLXRlbXBsYXRlIDxjbGFzcyBUPgotaW5saW5lIHZvaWQgcG9pbnRlcl9kZXN0cm95KFQqIHApCi17IHAtPn5UKCk7ICh2b2lkKXA7IH0KLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyAocG9wKQotI2VuZGlmCi0KLXRlbXBsYXRlIDxjbGFzcyBUPgotaW5saW5lIHZvaWQgcG9pbnRlcl9jb25zdHJ1Y3QoVCogcCwgY29uc3QgVCYgdCkKLXsgbmV3IChwKSBUKHQpOyB9Ci0KLX19IC8vIG5hbWVzcGFjZXMKLSNlbmRpZgotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqCi0gKiAgaGVscGVyIGZ1bmN0aW9uIGNvcHk6Ci0gKgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotbmFtZXNwYWNlIG5kbmJvb3N0eyBuYW1lc3BhY2UgcmVfZGV0YWlsewotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQyw+PTE0MDApICYmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPDE2MDApICYmIGRlZmluZWQoX0NQUExJQl9WRVIpICYmIGRlZmluZWQoTkROQk9PU1RfRElOS1VNV0FSRV9TVERMSUIpICYmICEoZGVmaW5lZChfX1NHSV9TVExfUE9SVCkgfHwgZGVmaW5lZChfU1RMUE9SVF9WRVJTSU9OKSkKLSAgIC8vCi0gICAvLyBNU1ZDIDggd2lsbCBlaXRoZXIgZW1pdCB3YXJuaW5ncyBvciBlbHNlIHJlZnVzZSB0byBjb21waWxlCi0gICAvLyBjb2RlIHRoYXQgbWFrZXMgcGVyZmVjdGx5IGxlZ2l0aW1hdGUgdXNlIG9mIHN0ZDo6Y29weSwgd2hlbgotICAgLy8gdGhlIE91dHB1dEl0ZXJhdG9yIHR5cGUgaXMgYSB1c2VyLWRlZmluZWQgY2xhc3MgKGFwcGFyZW50bHkgYWxsIHVzZXIgCi0gICAvLyBkZWZpbmVkIGl0ZXJhdG9ycyBhcmUgInVuc2FmZSIpLiAgVGhpcyBjb2RlIHdvcmtzIGFyb3VuZCB0aGF0OgotICAgLy8KLSAgIHRlbXBsYXRlPGNsYXNzIElucHV0SXRlcmF0b3IsIGNsYXNzIE91dHB1dEl0ZXJhdG9yPgotICAgaW5saW5lIE91dHB1dEl0ZXJhdG9yIGNvcHkoCi0gICAgICBJbnB1dEl0ZXJhdG9yIGZpcnN0LCAKLSAgICAgIElucHV0SXRlcmF0b3IgbGFzdCwgCi0gICAgICBPdXRwdXRJdGVyYXRvciBkZXN0Ci0gICApCi0gICB7Ci0gICAgICByZXR1cm4gc3RkZXh0Ojp1bmNoZWNrZWRfY29weShmaXJzdCwgbGFzdCwgZGVzdCk7Ci0gICB9Ci0gICB0ZW1wbGF0ZTxjbGFzcyBJbnB1dEl0ZXJhdG9yMSwgY2xhc3MgSW5wdXRJdGVyYXRvcjI+Ci0gICBpbmxpbmUgYm9vbCBlcXVhbCgKLSAgICAgIElucHV0SXRlcmF0b3IxIGZpcnN0LCAKLSAgICAgIElucHV0SXRlcmF0b3IxIGxhc3QsIAotICAgICAgSW5wdXRJdGVyYXRvcjIgd2l0aAotICAgKQotICAgewotICAgICAgcmV0dXJuIHN0ZGV4dDo6dW5jaGVja2VkX2VxdWFsKGZpcnN0LCBsYXN0LCB3aXRoKTsKLSAgIH0KLSNlbGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPiAxNTAwKQotICAgLy8KLSAgIC8vIE1TVkMgMTAgd2lsbCBlaXRoZXIgZW1pdCB3YXJuaW5ncyBvciBlbHNlIHJlZnVzZSB0byBjb21waWxlCi0gICAvLyBjb2RlIHRoYXQgbWFrZXMgcGVyZmVjdGx5IGxlZ2l0aW1hdGUgdXNlIG9mIHN0ZDo6Y29weSwgd2hlbgotICAgLy8gdGhlIE91dHB1dEl0ZXJhdG9yIHR5cGUgaXMgYSB1c2VyLWRlZmluZWQgY2xhc3MgKGFwcGFyZW50bHkgYWxsIHVzZXIgCi0gICAvLyBkZWZpbmVkIGl0ZXJhdG9ycyBhcmUgInVuc2FmZSIpLiAgV2hhdCdzIG1vcmUgTWljcm9zb2Z0IGhhdmUgcmVtb3ZlZCB0aGVpcgotICAgLy8gbm9uLXN0YW5kYXJkICJ1bmNoZWNrZWQiIHZlcnNpb25zLCBldmVuIHRob3VnaCB0aGVpciBzdGlsbCBpbiB0aGUgTVMKLSAgIC8vIGRvY3VtZW50YXRpb24hISBXb3JrIGFyb3VuZCB0aGlzIGFzIGJlc3Qgd2UgY2FuOiAKLSAgIC8vCi0gICB0ZW1wbGF0ZTxjbGFzcyBJbnB1dEl0ZXJhdG9yLCBjbGFzcyBPdXRwdXRJdGVyYXRvcj4KLSAgIGlubGluZSBPdXRwdXRJdGVyYXRvciBjb3B5KAotICAgICAgSW5wdXRJdGVyYXRvciBmaXJzdCwgCi0gICAgICBJbnB1dEl0ZXJhdG9yIGxhc3QsIAotICAgICAgT3V0cHV0SXRlcmF0b3IgZGVzdAotICAgKQotICAgewotICAgICAgd2hpbGUoZmlyc3QgIT0gbGFzdCkKLSAgICAgICAgICpkZXN0KysgPSAqZmlyc3QrKzsKLSAgICAgIHJldHVybiBkZXN0OwotICAgfQotICAgdGVtcGxhdGU8Y2xhc3MgSW5wdXRJdGVyYXRvcjEsIGNsYXNzIElucHV0SXRlcmF0b3IyPgotICAgaW5saW5lIGJvb2wgZXF1YWwoCi0gICAgICBJbnB1dEl0ZXJhdG9yMSBmaXJzdCwgCi0gICAgICBJbnB1dEl0ZXJhdG9yMSBsYXN0LCAKLSAgICAgIElucHV0SXRlcmF0b3IyIHdpdGgKLSAgICkKLSAgIHsKLSAgICAgIHdoaWxlKGZpcnN0ICE9IGxhc3QpCi0gICAgICAgICBpZigqZmlyc3QrKyAhPSAqd2l0aCsrKSByZXR1cm4gZmFsc2U7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgIH0KLSNlbHNlIAotICAgdXNpbmcgc3RkOjpjb3B5OyAKLSAgIHVzaW5nIHN0ZDo6ZXF1YWw7IAotI2VuZGlmIAotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQyw+PTE0MDApICYmIGRlZmluZWQoX19TVERDX1dBTlRfU0VDVVJFX0xJQl9fKSAmJiBfX1NURENfV0FOVF9TRUNVUkVfTElCX18gCi0KLSAgIC8vIHVzZSBzYWZlIHZlcnNpb25zIG9mIHN0cmNweSBldGM6Ci0gICB1c2luZyA6OnN0cmNweV9zOwotICAgdXNpbmcgOjpzdHJjYXRfczsKLSNlbHNlCi0gICBpbmxpbmUgc3RkOjpzaXplX3Qgc3RyY3B5X3MoCi0gICAgICBjaGFyICpzdHJEZXN0aW5hdGlvbiwKLSAgICAgIHN0ZDo6c2l6ZV90IHNpemVJbkJ5dGVzLAotICAgICAgY29uc3QgY2hhciAqc3RyU291cmNlIAotICAgKQotICAgewotICAgICAgaWYoc3RkOjpzdHJsZW4oc3RyU291cmNlKSsxID4gc2l6ZUluQnl0ZXMpCi0gICAgICAgICByZXR1cm4gMTsKLSAgICAgIHN0ZDo6c3RyY3B5KHN0ckRlc3RpbmF0aW9uLCBzdHJTb3VyY2UpOwotICAgICAgcmV0dXJuIDA7Ci0gICB9Ci0gICBpbmxpbmUgc3RkOjpzaXplX3Qgc3RyY2F0X3MoCi0gICAgICBjaGFyICpzdHJEZXN0aW5hdGlvbiwKLSAgICAgIHN0ZDo6c2l6ZV90IHNpemVJbkJ5dGVzLAotICAgICAgY29uc3QgY2hhciAqc3RyU291cmNlIAotICAgKQotICAgewotICAgICAgaWYoc3RkOjpzdHJsZW4oc3RyU291cmNlKSArIHN0ZDo6c3RybGVuKHN0ckRlc3RpbmF0aW9uKSArIDEgPiBzaXplSW5CeXRlcykKLSAgICAgICAgIHJldHVybiAxOwotICAgICAgc3RkOjpzdHJjYXQoc3RyRGVzdGluYXRpb24sIHN0clNvdXJjZSk7Ci0gICAgICByZXR1cm4gMDsKLSAgIH0KLQotI2VuZGlmCi0KLSAgIGlubGluZSB2b2lkIG92ZXJmbG93X2Vycm9yX2lmX25vdF96ZXJvKHN0ZDo6c2l6ZV90IGkpCi0gICB7Ci0gICAgICBpZihpKQotICAgICAgewotICAgICAgICAgc3RkOjpvdmVyZmxvd19lcnJvciBlKCJTdHJpbmcgYnVmZmVyIHRvbyBzbWFsbCIpOwotICAgICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihlKTsKLSAgICAgIH0KLSAgIH0KLQotfX0gLy8gbmFtZXNwYWNlcwotCi0jZW5kaWYgLy8gX19jcGx1c3BsdXMKLQotI2VuZGlmIC8vIGluY2x1ZGUgZ3VhcmQKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9zdGF0ZXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9zdGF0ZXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNjk4ZmEwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvc3RhdGVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMwMSArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAoYykgMTk5OC0yMDAyCi0gKiBKb2huIE1hZGRvY2sKLSAqCi0gKiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLSAqIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotICogTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqLwotCi0gLyoKLSAgKiAgIExPQ0FUSU9OOiAgICBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0gICogICBGSUxFICAgICAgICAgc3RhdGVzLmNwcAotICAqICAgVkVSU0lPTiAgICAgIHNlZSA8bmRuYm9vc3QvdmVyc2lvbi5ocHA+Ci0gICogICBERVNDUklQVElPTjogRGVjbGFyZXMgaW50ZXJuYWwgc3RhdGUgbWFjaGluZSBzdHJ1Y3R1cmVzLgotICAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1Y0X1NUQVRFU19IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfVjRfU1RBVEVTX0hQUAotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfUFJFRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdHsKLW5hbWVzcGFjZSByZV9kZXRhaWx7Ci0KLS8qKiogbWFza190eXBlICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLVdoZW5ldmVyIHdlIGhhdmUgYSBjaG9pY2Ugb2YgdHdvIGFsdGVybmF0aXZlcywgd2UgdXNlIGFuIGFycmF5IG9mIGJ5dGVzCi10byBpbmRpY2F0ZSB3aGljaCBvZiB0aGUgdHdvIGFsdGVybmF0aXZlcyBpdCBpcyBwb3NzaWJsZSB0byB0YWtlIGZvciBhbnkKLWdpdmVuIGlucHV0IGNoYXJhY3Rlci4gIElmIG1hc2tfdGFrZSBpcyBzZXQsIHRoZW4gd2UgY2FuIHRha2UgdGhlIG5leHQgCi1zdGF0ZSwgYW5kIGlmIG1hc2tfc2tpcCBpcyBzZXQgdGhlbiB3ZSBjYW4gdGFrZSB0aGUgYWx0ZXJuYXRpdmUuCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLWVudW0gbWFza190eXBlCi17Ci0gICBtYXNrX3Rha2UgPSAxLAotICAgbWFza19za2lwID0gMiwKLSAgIG1hc2tfaW5pdCA9IDQsCi0gICBtYXNrX2FueSA9IG1hc2tfc2tpcCB8IG1hc2tfdGFrZSwKLSAgIG1hc2tfYWxsID0gbWFza19hbnkKLX07Ci0KLS8qKiogaGVscGVycyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi1UaGVzZSBoZWxwZXJzIGxldCB1cyB1c2UgZnVuY3Rpb24gb3ZlcmxvYWQgcmVzb2x1dGlvbiB0byBkZXRlY3Qgd2hldGhlcgotd2UgaGF2ZSBuYXJyb3cgb3Igd2lkZSBjaGFyYWN0ZXIgc3RyaW5nczoKLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotc3RydWN0IF9uYXJyb3dfdHlwZXt9Owotc3RydWN0IF93aWRlX3R5cGV7fTsKLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4gc3RydWN0IGlzX2J5dGU7Ci10ZW1wbGF0ZTw+ICAgICAgICAgICAgIHN0cnVjdCBpc19ieXRlPGNoYXI+ICAgICAgICAgeyB0eXBlZGVmIF9uYXJyb3dfdHlwZSB3aWR0aF90eXBlOyB9OwotdGVtcGxhdGU8PiAgICAgICAgICAgICBzdHJ1Y3QgaXNfYnl0ZTx1bnNpZ25lZCBjaGFyPnsgdHlwZWRlZiBfbmFycm93X3R5cGUgd2lkdGhfdHlwZTsgfTsKLXRlbXBsYXRlPD4gICAgICAgICAgICAgc3RydWN0IGlzX2J5dGU8c2lnbmVkIGNoYXI+ICB7IHR5cGVkZWYgX25hcnJvd190eXBlIHdpZHRoX3R5cGU7IH07Ci10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+IHN0cnVjdCBpc19ieXRlICAgICAgICAgICAgICAgeyB0eXBlZGVmIF93aWRlX3R5cGUgd2lkdGhfdHlwZTsgfTsKLQotLyoqKiBlbnVtIHN5bnRheF9lbGVtZW50X3R5cGUgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi1FdmVyeSByZWNvcmQgaW4gdGhlIHN0YXRlIG1hY2hpbmUgZmFsbHMgaW50byBvbmUgb2YgdGhlIGZvbGxvd2luZyB0eXBlczoKLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotZW51bSBzeW50YXhfZWxlbWVudF90eXBlCi17Ci0gICAvLyBzdGFydCBvZiBhIG1hcmtlZCBzdWItZXhwcmVzc2lvbiwgb3IgcGVybC1zdHlsZSAoPy4uLikgZXh0ZW5zaW9uCi0gICBzeW50YXhfZWxlbWVudF9zdGFydG1hcmsgPSAwLAotICAgLy8gZW5kIG9mIGEgbWFya2VkIHN1Yi1leHByZXNzaW9uLCBvciBwZXJsLXN0eWxlICg/Li4uKSBleHRlbnNpb24KLSAgIHN5bnRheF9lbGVtZW50X2VuZG1hcmsgPSBzeW50YXhfZWxlbWVudF9zdGFydG1hcmsgKyAxLAotICAgLy8gYW55IHNlcXVlbmNlIG9mIGxpdGVyYWwgY2hhcmFjdGVycwotICAgc3ludGF4X2VsZW1lbnRfbGl0ZXJhbCA9IHN5bnRheF9lbGVtZW50X2VuZG1hcmsgKyAxLAotICAgLy8gc3RhcnQgb2YgbGluZSBhc3NlcnRpb246IF4KLSAgIHN5bnRheF9lbGVtZW50X3N0YXJ0X2xpbmUgPSBzeW50YXhfZWxlbWVudF9saXRlcmFsICsgMSwKLSAgIC8vIGVuZCBvZiBsaW5lIGFzc2VydGlvbiAkCi0gICBzeW50YXhfZWxlbWVudF9lbmRfbGluZSA9IHN5bnRheF9lbGVtZW50X3N0YXJ0X2xpbmUgKyAxLAotICAgLy8gbWF0Y2ggYW55IGNoYXJhY3RlcjogLgotICAgc3ludGF4X2VsZW1lbnRfd2lsZCA9IHN5bnRheF9lbGVtZW50X2VuZF9saW5lICsgMSwKLSAgIC8vIGVuZCBvZiBleHByZXNzaW9uOiB3ZSBoYXZlIGEgbWF0Y2ggd2hlbiB3ZSBnZXQgaGVyZQotICAgc3ludGF4X2VsZW1lbnRfbWF0Y2ggPSBzeW50YXhfZWxlbWVudF93aWxkICsgMSwKLSAgIC8vIHBlcmwgc3R5bGUgd29yZCBib3VuZGFyeTogXGIKLSAgIHN5bnRheF9lbGVtZW50X3dvcmRfYm91bmRhcnkgPSBzeW50YXhfZWxlbWVudF9tYXRjaCArIDEsCi0gICAvLyBwZXJsIHN0eWxlIHdpdGhpbiB3b3JkIGJvdW5kYXJ5OiBcQgotICAgc3ludGF4X2VsZW1lbnRfd2l0aGluX3dvcmQgPSBzeW50YXhfZWxlbWVudF93b3JkX2JvdW5kYXJ5ICsgMSwKLSAgIC8vIHN0YXJ0IG9mIHdvcmQgYXNzZXJ0aW9uOiBcPAotICAgc3ludGF4X2VsZW1lbnRfd29yZF9zdGFydCA9IHN5bnRheF9lbGVtZW50X3dpdGhpbl93b3JkICsgMSwKLSAgIC8vIGVuZCBvZiB3b3JkIGFzc2VydGlvbjogXD4KLSAgIHN5bnRheF9lbGVtZW50X3dvcmRfZW5kID0gc3ludGF4X2VsZW1lbnRfd29yZF9zdGFydCArIDEsCi0gICAvLyBzdGFydCBvZiBidWZmZXIgYXNzZXJ0aW9uOiBcYAotICAgc3ludGF4X2VsZW1lbnRfYnVmZmVyX3N0YXJ0ID0gc3ludGF4X2VsZW1lbnRfd29yZF9lbmQgKyAxLAotICAgLy8gZW5kIG9mIGJ1ZmZlciBhc3NlcnRpb246IFwnCi0gICBzeW50YXhfZWxlbWVudF9idWZmZXJfZW5kID0gc3ludGF4X2VsZW1lbnRfYnVmZmVyX3N0YXJ0ICsgMSwKLSAgIC8vIGJhY2tyZWZlcmVuY2UgdG8gcHJldmlvdXNseSBtYXRjaGVkIHN1Yi1leHByZXNzaW9uCi0gICBzeW50YXhfZWxlbWVudF9iYWNrcmVmID0gc3ludGF4X2VsZW1lbnRfYnVmZmVyX2VuZCArIDEsCi0gICAvLyBlaXRoZXIgYSB3aWRlIGNoYXJhY3RlciBzZXQgWy4uXSBvciBvbmUgd2l0aCBtdWx0aWNoYXJhY3RlciBjb2xsYXRpbmcgZWxlbWVudHM6Ci0gICBzeW50YXhfZWxlbWVudF9sb25nX3NldCA9IHN5bnRheF9lbGVtZW50X2JhY2tyZWYgKyAxLAotICAgLy8gbmFycm93IGNoYXJhY3RlciBzZXQ6IFsuLi5dCi0gICBzeW50YXhfZWxlbWVudF9zZXQgPSBzeW50YXhfZWxlbWVudF9sb25nX3NldCArIDEsCi0gICAvLyBqdW1wIHRvIGEgbmV3IHN0YXRlIGluIHRoZSBtYWNoaW5lOgotICAgc3ludGF4X2VsZW1lbnRfanVtcCA9IHN5bnRheF9lbGVtZW50X3NldCArIDEsCi0gICAvLyBjaG9vc2UgYmV0d2VlbiB0d28gcHJvZHVjdGlvbiBzdGF0ZXM6Ci0gICBzeW50YXhfZWxlbWVudF9hbHQgPSBzeW50YXhfZWxlbWVudF9qdW1wICsgMSwKLSAgIC8vIGEgcmVwZWF0Ci0gICBzeW50YXhfZWxlbWVudF9yZXAgPSBzeW50YXhfZWxlbWVudF9hbHQgKyAxLAotICAgLy8gbWF0Y2ggYSBjb21iaW5pbmcgY2hhcmFjdGVyIHNlcXVlbmNlCi0gICBzeW50YXhfZWxlbWVudF9jb21iaW5pbmcgPSBzeW50YXhfZWxlbWVudF9yZXAgKyAxLAotICAgLy8gcGVybCBzdHlsZSBzb2Z0IGJ1ZmZlciBlbmQ6IFx6Ci0gICBzeW50YXhfZWxlbWVudF9zb2Z0X2J1ZmZlcl9lbmQgPSBzeW50YXhfZWxlbWVudF9jb21iaW5pbmcgKyAxLAotICAgLy8gcGVybCBzdHlsZSBjb250aW51YXRpb246IFxHCi0gICBzeW50YXhfZWxlbWVudF9yZXN0YXJ0X2NvbnRpbnVlID0gc3ludGF4X2VsZW1lbnRfc29mdF9idWZmZXJfZW5kICsgMSwKLSAgIC8vIHNpbmdsZSBjaGFyYWN0ZXIgcmVwZWF0czoKLSAgIHN5bnRheF9lbGVtZW50X2RvdF9yZXAgPSBzeW50YXhfZWxlbWVudF9yZXN0YXJ0X2NvbnRpbnVlICsgMSwKLSAgIHN5bnRheF9lbGVtZW50X2NoYXJfcmVwID0gc3ludGF4X2VsZW1lbnRfZG90X3JlcCArIDEsCi0gICBzeW50YXhfZWxlbWVudF9zaG9ydF9zZXRfcmVwID0gc3ludGF4X2VsZW1lbnRfY2hhcl9yZXAgKyAxLAotICAgc3ludGF4X2VsZW1lbnRfbG9uZ19zZXRfcmVwID0gc3ludGF4X2VsZW1lbnRfc2hvcnRfc2V0X3JlcCArIDEsCi0gICAvLyBhIGJhY2tzdGVwIGZvciBsb29rYmVoaW5kIHJlcGVhdHM6Ci0gICBzeW50YXhfZWxlbWVudF9iYWNrc3RlcCA9IHN5bnRheF9lbGVtZW50X2xvbmdfc2V0X3JlcCArIDEsCi0gICAvLyBhbiBhc3NlcnRpb24gdGhhdCBhIG1hcmsgd2FzIG1hdGNoZWQ6Ci0gICBzeW50YXhfZWxlbWVudF9hc3NlcnRfYmFja3JlZiA9IHN5bnRheF9lbGVtZW50X2JhY2tzdGVwICsgMSwKLSAgIHN5bnRheF9lbGVtZW50X3RvZ2dsZV9jYXNlID0gc3ludGF4X2VsZW1lbnRfYXNzZXJ0X2JhY2tyZWYgKyAxLAotICAgLy8gYSByZWN1cnNpdmUgZXhwcmVzc2lvbjoKLSAgIHN5bnRheF9lbGVtZW50X3JlY3Vyc2UgPSBzeW50YXhfZWxlbWVudF90b2dnbGVfY2FzZSArIDEKLX07Ci0KLSNpZmRlZiBORE5CT09TVF9SRUdFWF9ERUJVRwotLy8gZHdhIDA5LzI2LzAwIC0gVGhpcyBpcyBuZWVkZWQgdG8gc3VwcHJlc3Mgd2FybmluZ3MgYWJvdXQgYW4gYW1iaWd1b3VzIGNvbnZlcnNpb24KLXN0ZDo6b3N0cmVhbSYgb3BlcmF0b3I8PChzdGQ6Om9zdHJlYW0mLCBzeW50YXhfZWxlbWVudF90eXBlKTsKLSNlbmRpZgotCi1zdHJ1Y3QgcmVfc3ludGF4X2Jhc2U7Ci0KLS8qKiogdW5pb24gb2Zmc2V0X3R5cGUgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi1Qb2ludHMgdG8gYW5vdGhlciBzdGF0ZSBpbiB0aGUgbWFjaGluZS4gIER1cmluZyBtYWNoaW5lIGNvbnN0cnVjdGlvbgotd2UgdXNlIGludGVncmFsIG9mZnNldHMsIGJ1dCB0aGVzZSBhcmUgY29udmVydGVkIHRvIHBvaW50ZXJzIGJlZm9yZQotZXhlY3V0aW9uIG9mIHRoZSBtYWNoaW5lLgotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi11bmlvbiBvZmZzZXRfdHlwZQotewotICAgcmVfc3ludGF4X2Jhc2UqICAgcDsKLSAgIHN0ZDo6cHRyZGlmZl90ICAgIGk7Ci19OwotCi0vKioqIHN0cnVjdCByZV9zeW50YXhfYmFzZSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotQmFzZSBjbGFzcyBmb3IgYWxsIHN0YXRlcyBpbiB0aGUgbWFjaGluZS4KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotc3RydWN0IHJlX3N5bnRheF9iYXNlCi17Ci0gICBzeW50YXhfZWxlbWVudF90eXBlICAgdHlwZTsgICAgICAgICAvLyB3aGF0IGtpbmQgb2Ygc3RhdGUgdGhpcyBpcwotICAgb2Zmc2V0X3R5cGUgICAgICAgICAgIG5leHQ7ICAgICAgICAgLy8gbmV4dCBzdGF0ZSBpbiB0aGUgbWFjaGluZQotfTsKLQotLyoqKiBzdHJ1Y3QgcmVfYnJhY2UgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLUEgbWFya2VkIHBhcmVudGhlc2lzLgotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1zdHJ1Y3QgcmVfYnJhY2UgOiBwdWJsaWMgcmVfc3ludGF4X2Jhc2UKLXsKLSAgIC8vIFRoZSBpbmRleCB0byBtYXRjaCwgY2FuIGJlIHplcm8gKGRvbid0IG1hcmsgdGhlIHN1Yi1leHByZXNzaW9uKQotICAgLy8gb3IgbmVnYXRpdmUgKGZvciBwZXJsIHN0eWxlICg/Li4uKSBleHRlbnRpb25zKToKLSAgIGludCBpbmRleDsKLSAgIGJvb2wgaWNhc2U7Ci19OwotCi0vKioqIHN0cnVjdCByZV9kb3QgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLU1hdGNoIGFueXRoaW5nLgotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1lbnVtCi17Ci0gICBkb250X2NhcmUgPSAxLAotICAgZm9yY2Vfbm90X25ld2xpbmUgPSAwLAotICAgZm9yY2VfbmV3bGluZSA9IDIsCi0KLSAgIHRlc3Rfbm90X25ld2xpbmUgPSAyLAotICAgdGVzdF9uZXdsaW5lID0gMwotfTsKLXN0cnVjdCByZV9kb3QgOiBwdWJsaWMgcmVfc3ludGF4X2Jhc2UKLXsKLSAgIHVuc2lnbmVkIGNoYXIgbWFzazsKLX07Ci0KLS8qKiogc3RydWN0IHJlX2xpdGVyYWwgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi1BIHN0cmluZyBvZiBsaXRlcmFscywgZm9sbG93aW5nIHRoaXMgc3RydWN0dXJlIHdpbGwgYmUgYW4gCi1hcnJheSBvZiBjaGFyYWN0ZXJzOiBjaGFyVFtsZW5ndGhdCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXN0cnVjdCByZV9saXRlcmFsIDogcHVibGljIHJlX3N5bnRheF9iYXNlCi17Ci0gICB1bnNpZ25lZCBpbnQgbGVuZ3RoOwotfTsKLQotLyoqKiBzdHJ1Y3QgcmVfY2FzZSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLUluZGljYXRlcyB3aGV0aGVyIHdlIGFyZSBtb3ZpbmcgdG8gYSBjYXNlIGluc2Vuc2l2ZSBibG9jayBvciBub3QKLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotc3RydWN0IHJlX2Nhc2UgOiBwdWJsaWMgcmVfc3ludGF4X2Jhc2UKLXsKLSAgIGJvb2wgaWNhc2U7Ci19OwotCi0vKioqIHN0cnVjdCByZV9zZXRfbG9uZyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotQSB3aWRlIGNoYXJhY3RlciBzZXQgb2YgY2hhcmFjdGVycywgZm9sbG93aW5nIHRoaXMgc3RydWN0dXJlIHdpbGwgYmUKLWFuIGFycmF5IG9mIHR5cGUgY2hhclQ6Ci1GaXJzdCBjc2luZ2xlcyBudWxsLXRlcm1pbmF0ZWQgc3RyaW5ncwotVGhlbiAyICogY3JhbmdlcyBOVUxMIHRlcm1pbmF0ZWQgc3RyaW5ncwotVGhlbiBjZXF1aXZhbGVudHMgTlVMTCB0ZXJtaW5hdGVkIHN0cmluZ3MKLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotdGVtcGxhdGUgPGNsYXNzIG1hc2tfdHlwZT4KLXN0cnVjdCByZV9zZXRfbG9uZyA6IHB1YmxpYyByZV9zeW50YXhfYmFzZQotewotICAgdW5zaWduZWQgaW50ICAgICAgICAgICAgY3NpbmdsZXMsIGNyYW5nZXMsIGNlcXVpdmFsZW50czsKLSAgIG1hc2tfdHlwZSAgICAgICAgICAgICAgIGNjbGFzc2VzOwotICAgbWFza190eXBlICAgICAgICAgICAgICAgY25jbGFzc2VzOwotICAgYm9vbCAgICAgICAgICAgICAgICAgICAgaXNub3Q7Ci0gICBib29sICAgICAgICAgICAgICAgICAgICBzaW5nbGV0b247Ci19OwotCi0vKioqIHN0cnVjdCByZV9zZXQgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotQSBzZXQgb2YgbmFycm93LWNoYXJhY3RlcnMsIG1hdGNoZXMgYW55IG9mIF9tYXAgd2hpY2ggaXMgbm9uZS16ZXJvCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXN0cnVjdCByZV9zZXQgOiBwdWJsaWMgcmVfc3ludGF4X2Jhc2UKLXsKLSAgIHVuc2lnbmVkIGNoYXIgX21hcFsxIDw8IENIQVJfQklUXTsKLX07Ci0KLS8qKiogc3RydWN0IHJlX2p1bXAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi1KdW1wIHRvIGEgbmV3IGxvY2F0aW9uIGluIHRoZSBtYWNoaW5lIChub3QgbmV4dCkuCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXN0cnVjdCByZV9qdW1wIDogcHVibGljIHJlX3N5bnRheF9iYXNlCi17Ci0gICBvZmZzZXRfdHlwZSAgICAgYWx0OyAgICAgICAgICAgICAgICAgLy8gbG9jYXRpb24gdG8ganVtcCB0bwotfTsKLQotLyoqKiBzdHJ1Y3QgcmVfYWx0ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotSnVtcCB0byBhIG5ldyBsb2NhdGlvbiBpbiB0aGUgbWFjaGluZSAocG9zc2libHkgbmV4dCkuCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXN0cnVjdCByZV9hbHQgOiBwdWJsaWMgcmVfanVtcAotewotICAgdW5zaWduZWQgY2hhciAgIF9tYXBbMSA8PCBDSEFSX0JJVF07IC8vIHdoaWNoIGNoYXJhY3RlcnMgY2FuIHRha2UgdGhlIGp1bXAKLSAgIHVuc2lnbmVkIGludCAgICBjYW5fYmVfbnVsbDsgICAgICAgICAvLyB0cnVlIGlmIHdlIG1hdGNoIGEgTlVMTCBzdHJpbmcKLX07Ci0KLS8qKiogc3RydWN0IHJlX3JlcGVhdCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi1SZXBlYXQgYSBzZWN0aW9uIG9mIHRoZSBtYWNoaW5lCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXN0cnVjdCByZV9yZXBlYXQgOiBwdWJsaWMgcmVfYWx0Ci17Ci0gICBzdGQ6OnNpemVfdCAgIG1pbiwgbWF4OyAgLy8gbWluIGFuZCBtYXggYWxsb3dhYmxlIHJlcGVhdHMKLSAgIGludCAgICAgICAgICAgc3RhdGVfaWQ7ICAgICAgICAvLyBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhpcyByZXBlYXQKLSAgIGJvb2wgICAgICAgICAgbGVhZGluZzsgICAvLyBUcnVlIGlmIHRoaXMgcmVwZWF0IGlzIGF0IHRoZSBzdGFydCBvZiB0aGUgbWFjaGluZSAobGV0cyB1cyBvcHRpbWl6ZSBzb21lIHNlYXJjaGVzKQotICAgYm9vbCAgICAgICAgICBncmVlZHk7ICAgIC8vIFRydWUgaWYgdGhpcyBpcyBhIGdyZWVkeSByZXBlYXQKLX07Ci0KLS8qKiogc3RydWN0IHJlX3JlY3Vyc2UgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi1SZWN1cnNlIHRvIGEgcGFydGljdWxhciBzdWJleHByZXNzaW9uLgotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLXN0cnVjdCByZV9yZWN1cnNlIDogcHVibGljIHJlX2p1bXAKLXsKLSAgIGludCBzdGF0ZV9pZDsgICAgICAgICAgICAgLy8gaWRlbnRpZmllciBvZiBmaXJzdCBuZXN0ZWQgcmVwZWF0IHdpdGhpbiB0aGUgcmVjdXJzaW9uLgotfTsKLQotLyoqKiBlbnVtIHJlX2p1bXBfc2l6ZV90eXBlICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLVByb3ZpZGVzIGNvbXBpbGVkIHNpemUgb2YgcmVfanVtcCBzdHJ1Y3R1cmUgKGFsbG93aW5nIGZvciB0cmFpbGluZyBhbGlnbm1lbnQpLgotV2UgcHJvdmlkZSB0aGlzIHNvIHdlIGtub3cgaG93IG1hbnlieXRlcyB0byBpbnNlcnQgd2hlbiBjb25zdHJ1Y3RpbmcgdGhlIG1hY2hpbmUKLShUaGUgdmFsdWUgb2YgcGFkZGluZ19tYXNrIGlzIGRlZmluZWQgaW4gcmVnZXhfcmF3X2J1ZmZlci5ocHApLgotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1lbnVtIHJlX2p1bXBfc2l6ZV90eXBlCi17Ci0gICByZV9qdW1wX3NpemUgPSAoc2l6ZW9mKHJlX2p1bXApICsgcGFkZGluZ19tYXNrKSAmIH4ocGFkZGluZ19tYXNrKSwKLSAgIHJlX3JlcGVhdGVyX3NpemUgPSAoc2l6ZW9mKHJlX3JlcGVhdCkgKyBwYWRkaW5nX21hc2spICYgfihwYWRkaW5nX21hc2spLAotICAgcmVfYWx0X3NpemUgPSAoc2l6ZW9mKHJlX2FsdCkgKyBwYWRkaW5nX21hc2spICYgfihwYWRkaW5nX21hc2spCi19OwotCi0vKioqIHByb2MgcmVfaXNfc2V0X21lbWJlciAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLUZvcndhcmQgZGVjbGFyYXRpb246IHdlJ2xsIG5lZWQgdGhpcyBvbmUgbGF0ZXIuLi4KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi10ZW1wbGF0ZTxjbGFzcyBjaGFyVCwgY2xhc3MgdHJhaXRzPgotc3RydWN0IHJlZ2V4X2RhdGE7Ci0KLXRlbXBsYXRlIDxjbGFzcyBpdGVyYXRvciwgY2xhc3MgY2hhclQsIGNsYXNzIHRyYWl0c190eXBlLCBjbGFzcyBjaGFyX2NsYXNzVD4KLWl0ZXJhdG9yIE5ETkJPT1NUX1JFR0VYX0NBTEwgcmVfaXNfc2V0X21lbWJlcihpdGVyYXRvciBuZXh0LCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlcmF0b3IgbGFzdCwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlX3NldF9sb25nPGNoYXJfY2xhc3NUPiogc2V0XywgCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZ2V4X2RhdGE8Y2hhclQsIHRyYWl0c190eXBlPiYgZSwgYm9vbCBpY2FzZSk7Ci0KLX0gLy8gbmFtZXNwYWNlIHJlX2RldGFpbAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMykKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfU1VGRklYCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLSNlbmRpZgotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvc3ViX21hdGNoLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvc3ViX21hdGNoLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjIxY2M4My4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3N1Yl9tYXRjaC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MTIgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMgotICogSm9obiBNYWRkb2NrCi0gKgotICogVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0gKiBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLSAqIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKi8KLQotIC8qCi0gICogICBMT0NBVElPTjogICAgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotICAqICAgRklMRSAgICAgICAgIHN1Yl9tYXRjaC5jcHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IERlY2xhcmVzIHRlbXBsYXRlIGNsYXNzIHN1Yl9tYXRjaC4KLSAgKi8KLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9WNF9TVUJfTUFUQ0hfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1JFR0VYX1Y0X1NVQl9NQVRDSF9IUFAKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1BSRUZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3I+Ci1zdHJ1Y3Qgc3ViX21hdGNoIDogcHVibGljIHN0ZDo6cGFpcjxCaWRpSXRlcmF0b3IsIEJpZGlJdGVyYXRvcj4KLXsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8QmlkaUl0ZXJhdG9yPjo6dmFsdWVfdHlwZSAgICAgICB2YWx1ZV90eXBlOwotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fU1REX0lURVJBVE9SX1RSQUlUUykgfHwgZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotICAgdHlwZWRlZiAgICAgICAgICBzdGQ6OnB0cmRpZmZfdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZmZlcmVuY2VfdHlwZTsKLSNlbHNlCi0gICB0eXBlZGVmIHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPEJpZGlJdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZSAgZGlmZmVyZW5jZV90eXBlOwotI2VuZGlmCi0gICB0eXBlZGVmICAgICAgICAgIEJpZGlJdGVyYXRvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlcmF0b3JfdHlwZTsKLSAgIHR5cGVkZWYgICAgICAgICAgQmlkaUl0ZXJhdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVyYXRvcjsKLSAgIHR5cGVkZWYgICAgICAgICAgQmlkaUl0ZXJhdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdF9pdGVyYXRvcjsKLQotICAgYm9vbCBtYXRjaGVkOwotCi0gICBzdWJfbWF0Y2goKSA6IHN0ZDo6cGFpcjxCaWRpSXRlcmF0b3IsIEJpZGlJdGVyYXRvcj4oKSwgbWF0Y2hlZChmYWxzZSkge30KLSAgIHN1Yl9tYXRjaChCaWRpSXRlcmF0b3IgaSkgOiBzdGQ6OnBhaXI8QmlkaUl0ZXJhdG9yLCBCaWRpSXRlcmF0b3I+KGksIGkpLCBtYXRjaGVkKGZhbHNlKSB7fQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFRF9JVEVSQVRPUl9DT05TVFJVQ1RPUlMpXAotICAgICAgICAgICAgICAgJiYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzEwKVwKLSAgICAgICAgICAgICAgICYmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgPD0gMHgwNTUxKVwKLSAgICAgICAgICAgICAgICYmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fREVDQ1hYX1ZFUiwgTkROQk9PU1RfVEVTVEVEX0FUKDYwNTkwMDQyKSkKLSAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBBPgotICAgb3BlcmF0b3Igc3RkOjpiYXNpY19zdHJpbmc8dmFsdWVfdHlwZSwgVCwgQT4gKCljb25zdAotICAgewotICAgICAgcmV0dXJuIG1hdGNoZWQgPyBzdGQ6OmJhc2ljX3N0cmluZzx2YWx1ZV90eXBlLCBULCBBPih0aGlzLT5maXJzdCwgdGhpcy0+c2Vjb25kKSA6IHN0ZDo6YmFzaWNfc3RyaW5nPHZhbHVlX3R5cGUsIFQsIEE+KCk7Ci0gICB9Ci0jZWxzZQotICAgb3BlcmF0b3Igc3RkOjpiYXNpY19zdHJpbmc8dmFsdWVfdHlwZT4gKCljb25zdAotICAgewotICAgICAgcmV0dXJuIHN0cigpOwotICAgfQotI2VuZGlmCi0gICBkaWZmZXJlbmNlX3R5cGUgTkROQk9PU1RfUkVHRVhfQ0FMTCBsZW5ndGgoKWNvbnN0Ci0gICB7Ci0gICAgICBkaWZmZXJlbmNlX3R5cGUgbiA9IG1hdGNoZWQgPyA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmRpc3RhbmNlKChCaWRpSXRlcmF0b3IpdGhpcy0+Zmlyc3QsIChCaWRpSXRlcmF0b3IpdGhpcy0+c2Vjb25kKSA6IDA7Ci0gICAgICByZXR1cm4gbjsKLSAgIH0KLSAgIHN0ZDo6YmFzaWNfc3RyaW5nPHZhbHVlX3R5cGU+IHN0cigpY29uc3QKLSAgIHsKLSAgICAgIHN0ZDo6YmFzaWNfc3RyaW5nPHZhbHVlX3R5cGU+IHJlc3VsdDsKLSAgICAgIGlmKG1hdGNoZWQpCi0gICAgICB7Ci0gICAgICAgICBzdGQ6OnNpemVfdCBsZW4gPSA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmRpc3RhbmNlKChCaWRpSXRlcmF0b3IpdGhpcy0+Zmlyc3QsIChCaWRpSXRlcmF0b3IpdGhpcy0+c2Vjb25kKTsKLSAgICAgICAgIHJlc3VsdC5yZXNlcnZlKGxlbik7Ci0gICAgICAgICBCaWRpSXRlcmF0b3IgaSA9IHRoaXMtPmZpcnN0OwotICAgICAgICAgd2hpbGUoaSAhPSB0aGlzLT5zZWNvbmQpCi0gICAgICAgICB7Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKDEsICppKTsKLSAgICAgICAgICAgICsraTsKLSAgICAgICAgIH0KLSAgICAgIH0KLSAgICAgIHJldHVybiByZXN1bHQ7Ci0gICB9Ci0gICBpbnQgY29tcGFyZShjb25zdCBzdWJfbWF0Y2gmIHMpY29uc3QKLSAgIHsKLSAgICAgIGlmKG1hdGNoZWQgIT0gcy5tYXRjaGVkKQotICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4obWF0Y2hlZCkgLSBzdGF0aWNfY2FzdDxpbnQ+KHMubWF0Y2hlZCk7Ci0gICAgICByZXR1cm4gc3RyKCkuY29tcGFyZShzLnN0cigpKTsKLSAgIH0KLSAgIGludCBjb21wYXJlKGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPHZhbHVlX3R5cGU+JiBzKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gc3RyKCkuY29tcGFyZShzKTsKLSAgIH0KLSAgIGludCBjb21wYXJlKGNvbnN0IHZhbHVlX3R5cGUqIHApY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBzdHIoKS5jb21wYXJlKHApOwotICAgfQotCi0gICBib29sIG9wZXJhdG9yPT0oY29uc3Qgc3ViX21hdGNoJiB0aGF0KWNvbnN0Ci0gICB7IHJldHVybiBjb21wYXJlKHRoYXQpID09IDA7IH0KLSAgIGJvb2wgTkROQk9PU1RfUkVHRVhfQ0FMTCBvcGVyYXRvciAhPShjb25zdCBzdWJfbWF0Y2gmIHRoYXQpY29uc3QKLSAgIHsgcmV0dXJuIGNvbXBhcmUodGhhdCkgIT0gMDsgfQotICAgYm9vbCBvcGVyYXRvcjwoY29uc3Qgc3ViX21hdGNoJiB0aGF0KWNvbnN0Ci0gICB7IHJldHVybiBjb21wYXJlKHRoYXQpIDwgMDsgfQotICAgYm9vbCBvcGVyYXRvcj4oY29uc3Qgc3ViX21hdGNoJiB0aGF0KWNvbnN0Ci0gICB7IHJldHVybiBjb21wYXJlKHRoYXQpID4gMDsgfQotICAgYm9vbCBvcGVyYXRvcjw9KGNvbnN0IHN1Yl9tYXRjaCYgdGhhdCljb25zdAotICAgeyByZXR1cm4gY29tcGFyZSh0aGF0KSA8PSAwOyB9Ci0gICBib29sIG9wZXJhdG9yPj0oY29uc3Qgc3ViX21hdGNoJiB0aGF0KWNvbnN0Ci0gICB7IHJldHVybiBjb21wYXJlKHRoYXQpID49IDA7IH0KLQotI2lmZGVmIE5ETkJPT1NUX1JFR0VYX01BVENIX0VYVFJBCi0gICB0eXBlZGVmIHN0ZDo6dmVjdG9yPHN1Yl9tYXRjaDxCaWRpSXRlcmF0b3I+ID4gY2FwdHVyZV9zZXF1ZW5jZV90eXBlOwotCi0gICBjb25zdCBjYXB0dXJlX3NlcXVlbmNlX3R5cGUmIGNhcHR1cmVzKCljb25zdAotICAgewotICAgICAgaWYoIW1fY2FwdHVyZXMpIAotICAgICAgICAgbV9jYXB0dXJlcy5yZXNldChuZXcgY2FwdHVyZV9zZXF1ZW5jZV90eXBlKCkpOwotICAgICAgcmV0dXJuICptX2NhcHR1cmVzOwotICAgfQotICAgLy8KLSAgIC8vIFByaXZhdGUgaW1wbGVtZW50YXRpb24gQVBJOiBETyBOT1QgVVNFIQotICAgLy8KLSAgIGNhcHR1cmVfc2VxdWVuY2VfdHlwZSYgZ2V0X2NhcHR1cmVzKCljb25zdAotICAgewotICAgICAgaWYoIW1fY2FwdHVyZXMpIAotICAgICAgICAgbV9jYXB0dXJlcy5yZXNldChuZXcgY2FwdHVyZV9zZXF1ZW5jZV90eXBlKCkpOwotICAgICAgcmV0dXJuICptX2NhcHR1cmVzOwotICAgfQotCi1wcml2YXRlOgotICAgbXV0YWJsZSBuZG5ib29zdDo6c2NvcGVkX3B0cjxjYXB0dXJlX3NlcXVlbmNlX3R5cGU+IG1fY2FwdHVyZXM7Ci1wdWJsaWM6Ci0KLSNlbmRpZgotICAgc3ViX21hdGNoKGNvbnN0IHN1Yl9tYXRjaCYgdGhhdCwgYm9vbCAKLSNpZmRlZiBORE5CT09TVF9SRUdFWF9NQVRDSF9FWFRSQQotICAgICAgZGVlcF9jb3B5Ci0jZW5kaWYKLSAgICAgID0gdHJ1ZQotICAgICAgKSAKLSAgICAgIDogc3RkOjpwYWlyPEJpZGlJdGVyYXRvciwgQmlkaUl0ZXJhdG9yPih0aGF0KSwgCi0gICAgICAgIG1hdGNoZWQodGhhdC5tYXRjaGVkKSAKLSAgIHsKLSNpZmRlZiBORE5CT09TVF9SRUdFWF9NQVRDSF9FWFRSQQotICAgICAgaWYodGhhdC5tX2NhcHR1cmVzKQotICAgICAgICAgaWYoZGVlcF9jb3B5KQotICAgICAgICAgICAgbV9jYXB0dXJlcy5yZXNldChuZXcgY2FwdHVyZV9zZXF1ZW5jZV90eXBlKCoodGhhdC5tX2NhcHR1cmVzKSkpOwotI2VuZGlmCi0gICB9Ci0gICBzdWJfbWF0Y2gmIG9wZXJhdG9yPShjb25zdCBzdWJfbWF0Y2gmIHRoYXQpCi0gICB7Ci0gICAgICB0aGlzLT5maXJzdCA9IHRoYXQuZmlyc3Q7Ci0gICAgICB0aGlzLT5zZWNvbmQgPSB0aGF0LnNlY29uZDsKLSAgICAgIG1hdGNoZWQgPSB0aGF0Lm1hdGNoZWQ7Ci0jaWZkZWYgTkROQk9PU1RfUkVHRVhfTUFUQ0hfRVhUUkEKLSAgICAgIGlmKHRoYXQubV9jYXB0dXJlcykKLSAgICAgICAgIGdldF9jYXB0dXJlcygpID0gKih0aGF0Lm1fY2FwdHVyZXMpOwotI2VuZGlmCi0gICAgICByZXR1cm4gKnRoaXM7Ci0gICB9Ci0KLQotI2lmZGVmIE5ETkJPT1NUX09MRF9SRUdFWF9ICi0gICAvLwotICAgLy8gdGhlIGZvbGxvd2luZyBhcmUgZGVwcmVjYXRlZCwgZG8gbm90IHVzZSEhCi0gICAvLwotICAgb3BlcmF0b3IgaW50KCljb25zdDsKLSAgIG9wZXJhdG9yIHVuc2lnbmVkIGludCgpY29uc3Q7Ci0gICBvcGVyYXRvciBzaG9ydCgpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiAoc2hvcnQpKGludCkoKnRoaXMpOwotICAgfQotICAgb3BlcmF0b3IgdW5zaWduZWQgc2hvcnQoKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gKHVuc2lnbmVkIHNob3J0KSh1bnNpZ25lZCBpbnQpKCp0aGlzKTsKLSAgIH0KLSNlbmRpZgotfTsKLQotdHlwZWRlZiBzdWJfbWF0Y2g8Y29uc3QgY2hhcio+IGNzdWJfbWF0Y2g7Ci10eXBlZGVmIHN1Yl9tYXRjaDxzdGQ6OnN0cmluZzo6Y29uc3RfaXRlcmF0b3I+IHNzdWJfbWF0Y2g7Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1dSRUdFWAotdHlwZWRlZiBzdWJfbWF0Y2g8Y29uc3Qgd2NoYXJfdCo+IHdjc3ViX21hdGNoOwotdHlwZWRlZiBzdWJfbWF0Y2g8c3RkOjp3c3RyaW5nOjpjb25zdF9pdGVyYXRvcj4gd3NzdWJfbWF0Y2g7Ci0jZW5kaWYKLQotLy8gY29tcGFyaXNvbiB0byBzdGQ6OmJhc2ljX3N0cmluZzw+IHBhcnQgMToKLXRlbXBsYXRlIDxjbGFzcyBSYW5kb21BY2Nlc3NJdGVyYXRvciwgY2xhc3MgdHJhaXRzLCBjbGFzcyBBbGxvY2F0b3I+Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciA9PSAoY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8dHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlLCB0cmFpdHMsIEFsbG9jYXRvcj4mIHMsCi0gICAgICAgICAgICAgICAgICBjb25zdCBzdWJfbWF0Y2g8UmFuZG9tQWNjZXNzSXRlcmF0b3I+JiBtKQoteyByZXR1cm4gcy5jb21wYXJlKG0uc3RyKCkpID09IDA7IH0KLXRlbXBsYXRlIDxjbGFzcyBSYW5kb21BY2Nlc3NJdGVyYXRvciwgY2xhc3MgdHJhaXRzLCBjbGFzcyBBbGxvY2F0b3I+Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciAhPSAoY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8dHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlLCB0cmFpdHMsIEFsbG9jYXRvcj4mIHMsCi0gICAgICAgICAgICAgICAgICBjb25zdCBzdWJfbWF0Y2g8UmFuZG9tQWNjZXNzSXRlcmF0b3I+JiBtKQoteyByZXR1cm4gcy5jb21wYXJlKG0uc3RyKCkpICE9IDA7IH0KLXRlbXBsYXRlIDxjbGFzcyBSYW5kb21BY2Nlc3NJdGVyYXRvciwgY2xhc3MgdHJhaXRzLCBjbGFzcyBBbGxvY2F0b3I+Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciA8IChjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzx0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUsIHRyYWl0cywgQWxsb2NhdG9yPiYgcywKLSAgICAgICAgICAgICAgICAgY29uc3Qgc3ViX21hdGNoPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPiYgbSkKLXsgcmV0dXJuIHMuY29tcGFyZShtLnN0cigpKSA8IDA7IH0KLXRlbXBsYXRlIDxjbGFzcyBSYW5kb21BY2Nlc3NJdGVyYXRvciwgY2xhc3MgdHJhaXRzLCBjbGFzcyBBbGxvY2F0b3I+Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciA8PSAoY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8dHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlLCB0cmFpdHMsIEFsbG9jYXRvcj4mIHMsCi0gICAgICAgICAgICAgICAgICBjb25zdCBzdWJfbWF0Y2g8UmFuZG9tQWNjZXNzSXRlcmF0b3I+JiBtKQoteyByZXR1cm4gcy5jb21wYXJlKG0uc3RyKCkpIDw9IDA7IH0KLXRlbXBsYXRlIDxjbGFzcyBSYW5kb21BY2Nlc3NJdGVyYXRvciwgY2xhc3MgdHJhaXRzLCBjbGFzcyBBbGxvY2F0b3I+Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciA+PSAoY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8dHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlLCB0cmFpdHMsIEFsbG9jYXRvcj4mIHMsCi0gICAgICAgICAgICAgICAgICBjb25zdCBzdWJfbWF0Y2g8UmFuZG9tQWNjZXNzSXRlcmF0b3I+JiBtKQoteyByZXR1cm4gcy5jb21wYXJlKG0uc3RyKCkpID49IDA7IH0KLXRlbXBsYXRlIDxjbGFzcyBSYW5kb21BY2Nlc3NJdGVyYXRvciwgY2xhc3MgdHJhaXRzLCBjbGFzcyBBbGxvY2F0b3I+Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciA+IChjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzx0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUsIHRyYWl0cywgQWxsb2NhdG9yPiYgcywKLSAgICAgICAgICAgICAgICAgY29uc3Qgc3ViX21hdGNoPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPiYgbSkKLXsgcmV0dXJuIHMuY29tcGFyZShtLnN0cigpKSA+IDA7IH0KLS8vIGNvbXBhcmlzb24gdG8gc3RkOjpiYXNpY19zdHJpbmc8PiBwYXJ0IDI6Ci10ZW1wbGF0ZSA8Y2xhc3MgUmFuZG9tQWNjZXNzSXRlcmF0b3IsIGNsYXNzIHRyYWl0cywgY2xhc3MgQWxsb2NhdG9yPgotaW5saW5lIGJvb2wgb3BlcmF0b3IgPT0gKGNvbnN0IHN1Yl9tYXRjaDxSYW5kb21BY2Nlc3NJdGVyYXRvcj4mIG0sCi0gICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzx0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUsIHRyYWl0cywgQWxsb2NhdG9yPiYgcykKLXsgcmV0dXJuIG0uc3RyKCkuY29tcGFyZShzKSA9PSAwOyB9Ci10ZW1wbGF0ZSA8Y2xhc3MgUmFuZG9tQWNjZXNzSXRlcmF0b3IsIGNsYXNzIHRyYWl0cywgY2xhc3MgQWxsb2NhdG9yPgotaW5saW5lIGJvb2wgb3BlcmF0b3IgIT0gKGNvbnN0IHN1Yl9tYXRjaDxSYW5kb21BY2Nlc3NJdGVyYXRvcj4mIG0sCi0gICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzx0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUsIHRyYWl0cywgQWxsb2NhdG9yPiYgcykKLXsgcmV0dXJuIG0uc3RyKCkuY29tcGFyZShzKSAhPSAwOyB9Ci10ZW1wbGF0ZSA8Y2xhc3MgUmFuZG9tQWNjZXNzSXRlcmF0b3IsIGNsYXNzIHRyYWl0cywgY2xhc3MgQWxsb2NhdG9yPgotaW5saW5lIGJvb2wgb3BlcmF0b3IgPCAoY29uc3Qgc3ViX21hdGNoPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPiYgbSwKLSAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZSwgdHJhaXRzLCBBbGxvY2F0b3I+JiBzKQoteyByZXR1cm4gbS5zdHIoKS5jb21wYXJlKHMpIDwgMDsgfQotdGVtcGxhdGUgPGNsYXNzIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yLCBjbGFzcyB0cmFpdHMsIGNsYXNzIEFsbG9jYXRvcj4KLWlubGluZSBib29sIG9wZXJhdG9yID4gKGNvbnN0IHN1Yl9tYXRjaDxSYW5kb21BY2Nlc3NJdGVyYXRvcj4mIG0sCi0gICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzx0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUsIHRyYWl0cywgQWxsb2NhdG9yPiYgcykKLXsgcmV0dXJuIG0uc3RyKCkuY29tcGFyZShzKSA+IDA7IH0KLXRlbXBsYXRlIDxjbGFzcyBSYW5kb21BY2Nlc3NJdGVyYXRvciwgY2xhc3MgdHJhaXRzLCBjbGFzcyBBbGxvY2F0b3I+Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciA8PSAoY29uc3Qgc3ViX21hdGNoPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPiYgbSwKLSAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZSwgdHJhaXRzLCBBbGxvY2F0b3I+JiBzKQoteyByZXR1cm4gbS5zdHIoKS5jb21wYXJlKHMpIDw9IDA7IH0KLXRlbXBsYXRlIDxjbGFzcyBSYW5kb21BY2Nlc3NJdGVyYXRvciwgY2xhc3MgdHJhaXRzLCBjbGFzcyBBbGxvY2F0b3I+Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciA+PSAoY29uc3Qgc3ViX21hdGNoPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPiYgbSwKLSAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZSwgdHJhaXRzLCBBbGxvY2F0b3I+JiBzKQoteyByZXR1cm4gbS5zdHIoKS5jb21wYXJlKHMpID49IDA7IH0KLS8vIGNvbXBhcmlzb24gdG8gY29uc3QgY2hhclQqIHBhcnQgMToKLXRlbXBsYXRlIDxjbGFzcyBSYW5kb21BY2Nlc3NJdGVyYXRvcj4KLWlubGluZSBib29sIG9wZXJhdG9yID09IChjb25zdCBzdWJfbWF0Y2g8UmFuZG9tQWNjZXNzSXRlcmF0b3I+JiBtLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlIGNvbnN0KiBzKQoteyByZXR1cm4gbS5zdHIoKS5jb21wYXJlKHMpID09IDA7IH0KLXRlbXBsYXRlIDxjbGFzcyBSYW5kb21BY2Nlc3NJdGVyYXRvcj4KLWlubGluZSBib29sIG9wZXJhdG9yICE9IChjb25zdCBzdWJfbWF0Y2g8UmFuZG9tQWNjZXNzSXRlcmF0b3I+JiBtLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlIGNvbnN0KiBzKQoteyByZXR1cm4gbS5zdHIoKS5jb21wYXJlKHMpICE9IDA7IH0KLXRlbXBsYXRlIDxjbGFzcyBSYW5kb21BY2Nlc3NJdGVyYXRvcj4KLWlubGluZSBib29sIG9wZXJhdG9yID4gKGNvbnN0IHN1Yl9tYXRjaDxSYW5kb21BY2Nlc3NJdGVyYXRvcj4mIG0sCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUgY29uc3QqIHMpCi17IHJldHVybiBtLnN0cigpLmNvbXBhcmUocykgPiAwOyB9Ci10ZW1wbGF0ZSA8Y2xhc3MgUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciA8IChjb25zdCBzdWJfbWF0Y2g8UmFuZG9tQWNjZXNzSXRlcmF0b3I+JiBtLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlIGNvbnN0KiBzKQoteyByZXR1cm4gbS5zdHIoKS5jb21wYXJlKHMpIDwgMDsgfQotdGVtcGxhdGUgPGNsYXNzIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPgotaW5saW5lIGJvb2wgb3BlcmF0b3IgPj0gKGNvbnN0IHN1Yl9tYXRjaDxSYW5kb21BY2Nlc3NJdGVyYXRvcj4mIG0sCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUgY29uc3QqIHMpCi17IHJldHVybiBtLnN0cigpLmNvbXBhcmUocykgPj0gMDsgfQotdGVtcGxhdGUgPGNsYXNzIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPgotaW5saW5lIGJvb2wgb3BlcmF0b3IgPD0gKGNvbnN0IHN1Yl9tYXRjaDxSYW5kb21BY2Nlc3NJdGVyYXRvcj4mIG0sCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUgY29uc3QqIHMpCi17IHJldHVybiBtLnN0cigpLmNvbXBhcmUocykgPD0gMDsgfQotLy8gY29tcGFyaXNvbiB0byBjb25zdCBjaGFyVCogcGFydCAyOgotdGVtcGxhdGUgPGNsYXNzIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPgotaW5saW5lIGJvb2wgb3BlcmF0b3IgPT0gKHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZSBjb25zdCogcywKLSAgICAgICAgICAgICAgICAgIGNvbnN0IHN1Yl9tYXRjaDxSYW5kb21BY2Nlc3NJdGVyYXRvcj4mIG0pCi17IHJldHVybiBtLnN0cigpLmNvbXBhcmUocykgPT0gMDsgfQotdGVtcGxhdGUgPGNsYXNzIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPgotaW5saW5lIGJvb2wgb3BlcmF0b3IgIT0gKHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZSBjb25zdCogcywKLSAgICAgICAgICAgICAgICAgIGNvbnN0IHN1Yl9tYXRjaDxSYW5kb21BY2Nlc3NJdGVyYXRvcj4mIG0pCi17IHJldHVybiBtLnN0cigpLmNvbXBhcmUocykgIT0gMDsgfQotdGVtcGxhdGUgPGNsYXNzIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPgotaW5saW5lIGJvb2wgb3BlcmF0b3IgPCAodHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlIGNvbnN0KiBzLAotICAgICAgICAgICAgICAgICAgY29uc3Qgc3ViX21hdGNoPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPiYgbSkKLXsgcmV0dXJuIG0uc3RyKCkuY29tcGFyZShzKSA+IDA7IH0KLXRlbXBsYXRlIDxjbGFzcyBSYW5kb21BY2Nlc3NJdGVyYXRvcj4KLWlubGluZSBib29sIG9wZXJhdG9yID4gKHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZSBjb25zdCogcywKLSAgICAgICAgICAgICAgICAgIGNvbnN0IHN1Yl9tYXRjaDxSYW5kb21BY2Nlc3NJdGVyYXRvcj4mIG0pCi17IHJldHVybiBtLnN0cigpLmNvbXBhcmUocykgPCAwOyB9Ci10ZW1wbGF0ZSA8Y2xhc3MgUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciA8PSAodHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlIGNvbnN0KiBzLAotICAgICAgICAgICAgICAgICAgY29uc3Qgc3ViX21hdGNoPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPiYgbSkKLXsgcmV0dXJuIG0uc3RyKCkuY29tcGFyZShzKSA+PSAwOyB9Ci10ZW1wbGF0ZSA8Y2xhc3MgUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciA+PSAodHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlIGNvbnN0KiBzLAotICAgICAgICAgICAgICAgICAgY29uc3Qgc3ViX21hdGNoPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPiYgbSkKLXsgcmV0dXJuIG0uc3RyKCkuY29tcGFyZShzKSA8PSAwOyB9Ci0KLS8vIGNvbXBhcmlzb24gdG8gY29uc3QgY2hhclQmIHBhcnQgMToKLXRlbXBsYXRlIDxjbGFzcyBSYW5kb21BY2Nlc3NJdGVyYXRvcj4KLWlubGluZSBib29sIG9wZXJhdG9yID09IChjb25zdCBzdWJfbWF0Y2g8UmFuZG9tQWNjZXNzSXRlcmF0b3I+JiBtLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlIGNvbnN0JiBzKQoteyByZXR1cm4gbS5zdHIoKS5jb21wYXJlKDAsIG0ubGVuZ3RoKCksICZzLCAxKSA9PSAwOyB9Ci10ZW1wbGF0ZSA8Y2xhc3MgUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciAhPSAoY29uc3Qgc3ViX21hdGNoPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPiYgbSwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZSBjb25zdCYgcykKLXsgcmV0dXJuIG0uc3RyKCkuY29tcGFyZSgwLCBtLmxlbmd0aCgpLCAmcywgMSkgIT0gMDsgfQotdGVtcGxhdGUgPGNsYXNzIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPgotaW5saW5lIGJvb2wgb3BlcmF0b3IgPiAoY29uc3Qgc3ViX21hdGNoPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPiYgbSwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZSBjb25zdCYgcykKLXsgcmV0dXJuIG0uc3RyKCkuY29tcGFyZSgwLCBtLmxlbmd0aCgpLCAmcywgMSkgPiAwOyB9Ci10ZW1wbGF0ZSA8Y2xhc3MgUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciA8IChjb25zdCBzdWJfbWF0Y2g8UmFuZG9tQWNjZXNzSXRlcmF0b3I+JiBtLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlIGNvbnN0JiBzKQoteyByZXR1cm4gbS5zdHIoKS5jb21wYXJlKDAsIG0ubGVuZ3RoKCksICZzLCAxKSA8IDA7IH0KLXRlbXBsYXRlIDxjbGFzcyBSYW5kb21BY2Nlc3NJdGVyYXRvcj4KLWlubGluZSBib29sIG9wZXJhdG9yID49IChjb25zdCBzdWJfbWF0Y2g8UmFuZG9tQWNjZXNzSXRlcmF0b3I+JiBtLAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlIGNvbnN0JiBzKQoteyByZXR1cm4gbS5zdHIoKS5jb21wYXJlKDAsIG0ubGVuZ3RoKCksICZzLCAxKSA+PSAwOyB9Ci10ZW1wbGF0ZSA8Y2xhc3MgUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciA8PSAoY29uc3Qgc3ViX21hdGNoPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPiYgbSwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZSBjb25zdCYgcykKLXsgcmV0dXJuIG0uc3RyKCkuY29tcGFyZSgwLCBtLmxlbmd0aCgpLCAmcywgMSkgPD0gMDsgfQotLy8gY29tcGFyaXNvbiB0byBjb25zdCBjaGFyVCogcGFydCAyOgotdGVtcGxhdGUgPGNsYXNzIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPgotaW5saW5lIGJvb2wgb3BlcmF0b3IgPT0gKHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZSBjb25zdCYgcywKLSAgICAgICAgICAgICAgICAgIGNvbnN0IHN1Yl9tYXRjaDxSYW5kb21BY2Nlc3NJdGVyYXRvcj4mIG0pCi17IHJldHVybiBtLnN0cigpLmNvbXBhcmUoMCwgbS5sZW5ndGgoKSwgJnMsIDEpID09IDA7IH0KLXRlbXBsYXRlIDxjbGFzcyBSYW5kb21BY2Nlc3NJdGVyYXRvcj4KLWlubGluZSBib29sIG9wZXJhdG9yICE9ICh0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUgY29uc3QmIHMsCi0gICAgICAgICAgICAgICAgICBjb25zdCBzdWJfbWF0Y2g8UmFuZG9tQWNjZXNzSXRlcmF0b3I+JiBtKQoteyByZXR1cm4gbS5zdHIoKS5jb21wYXJlKDAsIG0ubGVuZ3RoKCksICZzLCAxKSAhPSAwOyB9Ci10ZW1wbGF0ZSA8Y2xhc3MgUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciA8ICh0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUgY29uc3QmIHMsCi0gICAgICAgICAgICAgICAgICBjb25zdCBzdWJfbWF0Y2g8UmFuZG9tQWNjZXNzSXRlcmF0b3I+JiBtKQoteyByZXR1cm4gbS5zdHIoKS5jb21wYXJlKDAsIG0ubGVuZ3RoKCksICZzLCAxKSA+IDA7IH0KLXRlbXBsYXRlIDxjbGFzcyBSYW5kb21BY2Nlc3NJdGVyYXRvcj4KLWlubGluZSBib29sIG9wZXJhdG9yID4gKHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZSBjb25zdCYgcywKLSAgICAgICAgICAgICAgICAgIGNvbnN0IHN1Yl9tYXRjaDxSYW5kb21BY2Nlc3NJdGVyYXRvcj4mIG0pCi17IHJldHVybiBtLnN0cigpLmNvbXBhcmUoMCwgbS5sZW5ndGgoKSwgJnMsIDEpIDwgMDsgfQotdGVtcGxhdGUgPGNsYXNzIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPgotaW5saW5lIGJvb2wgb3BlcmF0b3IgPD0gKHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZSBjb25zdCYgcywKLSAgICAgICAgICAgICAgICAgIGNvbnN0IHN1Yl9tYXRjaDxSYW5kb21BY2Nlc3NJdGVyYXRvcj4mIG0pCi17IHJldHVybiBtLnN0cigpLmNvbXBhcmUoMCwgbS5sZW5ndGgoKSwgJnMsIDEpID49IDA7IH0KLXRlbXBsYXRlIDxjbGFzcyBSYW5kb21BY2Nlc3NJdGVyYXRvcj4KLWlubGluZSBib29sIG9wZXJhdG9yID49ICh0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUgY29uc3QmIHMsCi0gICAgICAgICAgICAgICAgICBjb25zdCBzdWJfbWF0Y2g8UmFuZG9tQWNjZXNzSXRlcmF0b3I+JiBtKQoteyByZXR1cm4gbS5zdHIoKS5jb21wYXJlKDAsIG0ubGVuZ3RoKCksICZzLCAxKSA8PSAwOyB9Ci0KLS8vIGFkZGl0aW9uIG9wZXJhdG9yczoKLXRlbXBsYXRlIDxjbGFzcyBSYW5kb21BY2Nlc3NJdGVyYXRvciwgY2xhc3MgdHJhaXRzLCBjbGFzcyBBbGxvY2F0b3I+Ci1pbmxpbmUgc3RkOjpiYXNpY19zdHJpbmc8dHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlLCB0cmFpdHMsIEFsbG9jYXRvcj4gCi1vcGVyYXRvciArIChjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzx0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUsIHRyYWl0cywgQWxsb2NhdG9yPiYgcywKLSAgICAgICAgICAgICAgICAgIGNvbnN0IHN1Yl9tYXRjaDxSYW5kb21BY2Nlc3NJdGVyYXRvcj4mIG0pCi17Ci0gICBzdGQ6OmJhc2ljX3N0cmluZzx0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUsIHRyYWl0cywgQWxsb2NhdG9yPiByZXN1bHQ7Ci0gICByZXN1bHQucmVzZXJ2ZShzLnNpemUoKSArIG0ubGVuZ3RoKCkgKyAxKTsKLSAgIHJldHVybiByZXN1bHQuYXBwZW5kKHMpLmFwcGVuZChtLmZpcnN0LCBtLnNlY29uZCk7Ci19Ci10ZW1wbGF0ZSA8Y2xhc3MgUmFuZG9tQWNjZXNzSXRlcmF0b3IsIGNsYXNzIHRyYWl0cywgY2xhc3MgQWxsb2NhdG9yPgotaW5saW5lIHN0ZDo6YmFzaWNfc3RyaW5nPHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZSwgdHJhaXRzLCBBbGxvY2F0b3I+IAotb3BlcmF0b3IgKyAoY29uc3Qgc3ViX21hdGNoPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPiYgbSwKLSAgICAgICAgICAgIGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZSwgdHJhaXRzLCBBbGxvY2F0b3I+JiBzKQotewotICAgc3RkOjpiYXNpY19zdHJpbmc8dHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlLCB0cmFpdHMsIEFsbG9jYXRvcj4gcmVzdWx0OwotICAgcmVzdWx0LnJlc2VydmUocy5zaXplKCkgKyBtLmxlbmd0aCgpICsgMSk7Ci0gICByZXR1cm4gcmVzdWx0LmFwcGVuZChtLmZpcnN0LCBtLnNlY29uZCkuYXBwZW5kKHMpOwotfQotI2lmICEoZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChORE5CT09TVF9OT19TVERfTE9DQUxFKSkKLXRlbXBsYXRlIDxjbGFzcyBSYW5kb21BY2Nlc3NJdGVyYXRvcj4KLWlubGluZSBzdGQ6OmJhc2ljX3N0cmluZzx0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGU+IAotb3BlcmF0b3IgKyAodHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlIGNvbnN0KiBzLAotICAgICAgICAgICAgICAgICAgY29uc3Qgc3ViX21hdGNoPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPiYgbSkKLXsKLSAgIHN0ZDo6YmFzaWNfc3RyaW5nPHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZT4gcmVzdWx0OwotICAgcmVzdWx0LnJlc2VydmUoc3RkOjpjaGFyX3RyYWl0czx0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGU+OjpsZW5ndGgocykgKyBtLmxlbmd0aCgpICsgMSk7Ci0gICByZXR1cm4gcmVzdWx0LmFwcGVuZChzKS5hcHBlbmQobS5maXJzdCwgbS5zZWNvbmQpOwotfQotdGVtcGxhdGUgPGNsYXNzIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPgotaW5saW5lIHN0ZDo6YmFzaWNfc3RyaW5nPHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZT4gCi1vcGVyYXRvciArIChjb25zdCBzdWJfbWF0Y2g8UmFuZG9tQWNjZXNzSXRlcmF0b3I+JiBtLAotICAgICAgICAgICAgdHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlIGNvbnN0ICogcykKLXsKLSAgIHN0ZDo6YmFzaWNfc3RyaW5nPHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZT4gcmVzdWx0OwotICAgcmVzdWx0LnJlc2VydmUoc3RkOjpjaGFyX3RyYWl0czx0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGU+OjpsZW5ndGgocykgKyBtLmxlbmd0aCgpICsgMSk7Ci0gICByZXR1cm4gcmVzdWx0LmFwcGVuZChtLmZpcnN0LCBtLnNlY29uZCkuYXBwZW5kKHMpOwotfQotI2Vsc2UKLS8vIHdvcndhcm91bmQgdmVyc2lvbnM6Ci10ZW1wbGF0ZSA8Y2xhc3MgUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ci1pbmxpbmUgc3RkOjpiYXNpY19zdHJpbmc8dHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlPiAKLW9wZXJhdG9yICsgKHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZSBjb25zdCogcywKLSAgICAgICAgICAgICAgICAgIGNvbnN0IHN1Yl9tYXRjaDxSYW5kb21BY2Nlc3NJdGVyYXRvcj4mIG0pCi17Ci0gICByZXR1cm4gcyArIG0uc3RyKCk7Ci19Ci10ZW1wbGF0ZSA8Y2xhc3MgUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ci1pbmxpbmUgc3RkOjpiYXNpY19zdHJpbmc8dHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlPiAKLW9wZXJhdG9yICsgKGNvbnN0IHN1Yl9tYXRjaDxSYW5kb21BY2Nlc3NJdGVyYXRvcj4mIG0sCi0gICAgICAgICAgICB0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUgY29uc3QgKiBzKQotewotICAgcmV0dXJuIG0uc3RyKCkgKyBzOwotfQotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ci1pbmxpbmUgc3RkOjpiYXNpY19zdHJpbmc8dHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlPiAKLW9wZXJhdG9yICsgKHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZSBjb25zdCYgcywKLSAgICAgICAgICAgICAgICAgIGNvbnN0IHN1Yl9tYXRjaDxSYW5kb21BY2Nlc3NJdGVyYXRvcj4mIG0pCi17Ci0gICBzdGQ6OmJhc2ljX3N0cmluZzx0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGU+IHJlc3VsdDsKLSAgIHJlc3VsdC5yZXNlcnZlKG0ubGVuZ3RoKCkgKyAyKTsKLSAgIHJldHVybiByZXN1bHQuYXBwZW5kKDEsIHMpLmFwcGVuZChtLmZpcnN0LCBtLnNlY29uZCk7Ci19Ci10ZW1wbGF0ZSA8Y2xhc3MgUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ci1pbmxpbmUgc3RkOjpiYXNpY19zdHJpbmc8dHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlPiAKLW9wZXJhdG9yICsgKGNvbnN0IHN1Yl9tYXRjaDxSYW5kb21BY2Nlc3NJdGVyYXRvcj4mIG0sCi0gICAgICAgICAgICB0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUgY29uc3QmIHMpCi17Ci0gICBzdGQ6OmJhc2ljX3N0cmluZzx0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGU+IHJlc3VsdDsKLSAgIHJlc3VsdC5yZXNlcnZlKG0ubGVuZ3RoKCkgKyAyKTsKLSAgIHJldHVybiByZXN1bHQuYXBwZW5kKG0uZmlyc3QsIG0uc2Vjb25kKS5hcHBlbmQoMSwgcyk7Ci19Ci10ZW1wbGF0ZSA8Y2xhc3MgUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ci1pbmxpbmUgc3RkOjpiYXNpY19zdHJpbmc8dHlwZW5hbWUgcmVfZGV0YWlsOjpyZWdleF9pdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlPiAKLW9wZXJhdG9yICsgKGNvbnN0IHN1Yl9tYXRjaDxSYW5kb21BY2Nlc3NJdGVyYXRvcj4mIG0xLAotICAgICAgICAgICAgY29uc3Qgc3ViX21hdGNoPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPiYgbTIpCi17Ci0gICBzdGQ6OmJhc2ljX3N0cmluZzx0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGU+IHJlc3VsdDsKLSAgIHJlc3VsdC5yZXNlcnZlKG0xLmxlbmd0aCgpICsgbTIubGVuZ3RoKCkgKyAxKTsKLSAgIHJldHVybiByZXN1bHQuYXBwZW5kKG0xLmZpcnN0LCBtMS5zZWNvbmQpLmFwcGVuZChtMi5maXJzdCwgbTIuc2Vjb25kKTsKLX0KLSNpZm5kZWYgTkROQk9PU1RfTk9fU1REX0xPQ0FMRQotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHMsIGNsYXNzIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPgotc3RkOjpiYXNpY19vc3RyZWFtPGNoYXJULCB0cmFpdHM+JgotICAgb3BlcmF0b3IgPDwgKHN0ZDo6YmFzaWNfb3N0cmVhbTxjaGFyVCwgdHJhaXRzPiYgb3MsCi0gICAgICAgICAgICAgICAgY29uc3Qgc3ViX21hdGNoPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPiYgcykKLXsKLSAgIHJldHVybiAob3MgPDwgcy5zdHIoKSk7Ci19Ci0jZWxzZQotdGVtcGxhdGUgPGNsYXNzIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPgotc3RkOjpvc3RyZWFtJiBvcGVyYXRvciA8PCAoc3RkOjpvc3RyZWFtJiBvcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN1Yl9tYXRjaDxSYW5kb21BY2Nlc3NJdGVyYXRvcj4mIHMpCi17Ci0gICByZXR1cm4gKG9zIDw8IHMuc3RyKCkpOwotfQotI2VuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9PTERfUkVHRVhfSAotbmFtZXNwYWNlIHJlX2RldGFpbHsKLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3IsIGNsYXNzIGNoYXJUPgotaW50IGRvX3RvaShCaWRpSXRlcmF0b3IgaSwgQmlkaUl0ZXJhdG9yIGosIGNoYXIgYywgaW50IHJhZGl4KQotewotICAgc3RkOjpzdHJpbmcgcyhpLCBqKTsKLSAgIGNoYXIqIHA7Ci0gICBpbnQgcmVzdWx0ID0gc3RkOjpzdHJ0b2wocy5jX3N0cigpLCAmcCwgcmFkaXgpOwotICAgaWYoKnApcmFpc2VfcmVnZXhfZXhjZXB0aW9uKCJCYWQgc3ViLWV4cHJlc3Npb24iKTsKLSAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8vCi0vLyBoZWxwZXI6Ci10ZW1wbGF0ZSA8Y2xhc3MgSSwgY2xhc3MgY2hhclQ+Ci1pbnQgZG9fdG9pKEkmIGksIEkgaiwgY2hhclQgYykKLXsKLSAgIGludCByZXN1bHQgPSAwOwotICAgd2hpbGUoKGkgIT0gaikgJiYgKGlzZGlnaXQoKmkpKSkKLSAgIHsKLSAgICAgIHJlc3VsdCA9IHJlc3VsdCoxMCArICgqaSAtICcwJyk7Ci0gICAgICArK2k7Ci0gICB9Ci0gICByZXR1cm4gcmVzdWx0OwotfQotfQotCi0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpSXRlcmF0b3I+Ci1zdWJfbWF0Y2g8QmlkaUl0ZXJhdG9yPjo6b3BlcmF0b3IgaW50KCljb25zdAotewotICAgQmlkaUl0ZXJhdG9yIGkgPSBmaXJzdDsKLSAgIEJpZGlJdGVyYXRvciBqID0gc2Vjb25kOwotICAgaWYoaSA9PSBqKXJhaXNlX3JlZ2V4X2V4Y2VwdGlvbigiQmFkIHN1Yi1leHByZXNzaW9uIik7Ci0gICBpbnQgbmVnID0gMTsKLSAgIGlmKChpICE9IGopICYmICgqaSA9PSAnLScpKQotICAgewotICAgICAgbmVnID0gLTE7Ci0gICAgICArK2k7Ci0gICB9Ci0gICBuZWcgKj0gcmVfZGV0YWlsOjpkb190b2koaSwgaiwgKmkpOwotICAgaWYoaSAhPSBqKXJhaXNlX3JlZ2V4X2V4Y2VwdGlvbigiQmFkIHN1Yi1leHByZXNzaW9uIik7Ci0gICByZXR1cm4gbmVnOwotfQotdGVtcGxhdGUgPGNsYXNzIEJpZGlJdGVyYXRvcj4KLXN1Yl9tYXRjaDxCaWRpSXRlcmF0b3I+OjpvcGVyYXRvciB1bnNpZ25lZCBpbnQoKWNvbnN0Ci17Ci0gICBCaWRpSXRlcmF0b3IgaSA9IGZpcnN0OwotICAgQmlkaUl0ZXJhdG9yIGogPSBzZWNvbmQ7Ci0gICBpZihpID09IGopCi0gICAgICByYWlzZV9yZWdleF9leGNlcHRpb24oIkJhZCBzdWItZXhwcmVzc2lvbiIpOwotICAgcmV0dXJuIHJlX2RldGFpbDo6ZG9fdG9pKGksIGosICpmaXJzdCk7Ci19Ci0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1NVRkZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC9zeW50YXhfdHlwZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3N5bnRheF90eXBlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZThjNTE3MC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3N5bnRheF90eXBlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwNSArMCwwIEBACi0vKgotICoKLSAqIENvcHlyaWdodCAoYykgMjAwMwotICogSm9obiBNYWRkb2NrCi0gKgotICogVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0gKiBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLSAqIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKi8KLSAKLSAvKgotICAqICAgTE9DQVRJT046ICAgIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLSAgKiAgIEZJTEUgICAgICAgICBzeW50YXhfdHlwZS5ocHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IERlY2xhcmVzIHJlZ3VsYXIgZXhwcmVzc2lvbiBzeW5hdHggdHlwZSBlbnVtZXJhdG9yLgotICAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1NZTlRBWF9UWVBFX0hQUAotI2RlZmluZSBORE5CT09TVF9SRUdFWF9TWU5UQVhfVFlQRV9IUFAKLQotbmFtZXNwYWNlIG5kbmJvb3N0ewotbmFtZXNwYWNlIHJlZ2V4X2NvbnN0YW50c3sKLQotdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHN5bnRheF90eXBlOwotCi0vLwotLy8gdmFsdWVzIGNob3NlbiBhcmUgYmluYXJ5IGNvbXBhdGlibGUgd2l0aCBwcmV2aW91cyB2ZXJzaW9uOgotLy8KLXN0YXRpYyBjb25zdCBzeW50YXhfdHlwZSBzeW50YXhfY2hhciA9IDA7Ci1zdGF0aWMgY29uc3Qgc3ludGF4X3R5cGUgc3ludGF4X29wZW5fbWFyayA9IDE7Ci1zdGF0aWMgY29uc3Qgc3ludGF4X3R5cGUgc3ludGF4X2Nsb3NlX21hcmsgPSAyOwotc3RhdGljIGNvbnN0IHN5bnRheF90eXBlIHN5bnRheF9kb2xsYXIgPSAzOwotc3RhdGljIGNvbnN0IHN5bnRheF90eXBlIHN5bnRheF9jYXJldCA9IDQ7Ci1zdGF0aWMgY29uc3Qgc3ludGF4X3R5cGUgc3ludGF4X2RvdCA9IDU7Ci1zdGF0aWMgY29uc3Qgc3ludGF4X3R5cGUgc3ludGF4X3N0YXIgPSA2Owotc3RhdGljIGNvbnN0IHN5bnRheF90eXBlIHN5bnRheF9wbHVzID0gNzsKLXN0YXRpYyBjb25zdCBzeW50YXhfdHlwZSBzeW50YXhfcXVlc3Rpb24gPSA4Owotc3RhdGljIGNvbnN0IHN5bnRheF90eXBlIHN5bnRheF9vcGVuX3NldCA9IDk7Ci1zdGF0aWMgY29uc3Qgc3ludGF4X3R5cGUgc3ludGF4X2Nsb3NlX3NldCA9IDEwOwotc3RhdGljIGNvbnN0IHN5bnRheF90eXBlIHN5bnRheF9vciA9IDExOwotc3RhdGljIGNvbnN0IHN5bnRheF90eXBlIHN5bnRheF9lc2NhcGUgPSAxMjsKLXN0YXRpYyBjb25zdCBzeW50YXhfdHlwZSBzeW50YXhfZGFzaCA9IDE0Owotc3RhdGljIGNvbnN0IHN5bnRheF90eXBlIHN5bnRheF9vcGVuX2JyYWNlID0gMTU7Ci1zdGF0aWMgY29uc3Qgc3ludGF4X3R5cGUgc3ludGF4X2Nsb3NlX2JyYWNlID0gMTY7Ci1zdGF0aWMgY29uc3Qgc3ludGF4X3R5cGUgc3ludGF4X2RpZ2l0ID0gMTc7Ci1zdGF0aWMgY29uc3Qgc3ludGF4X3R5cGUgc3ludGF4X2NvbW1hID0gMjc7Ci1zdGF0aWMgY29uc3Qgc3ludGF4X3R5cGUgc3ludGF4X2VxdWFsID0gMzc7Ci1zdGF0aWMgY29uc3Qgc3ludGF4X3R5cGUgc3ludGF4X2NvbG9uID0gMzY7Ci1zdGF0aWMgY29uc3Qgc3ludGF4X3R5cGUgc3ludGF4X25vdCA9IDUzOwotCi0vLyBleHRlbnNpb25zOgotCi1zdGF0aWMgY29uc3Qgc3ludGF4X3R5cGUgc3ludGF4X2hhc2ggPSAxMzsKLXN0YXRpYyBjb25zdCBzeW50YXhfdHlwZSBzeW50YXhfbmV3bGluZSA9IDI2OwotCi0vLyBlc2NhcGVzOgotCi10eXBlZGVmIHN5bnRheF90eXBlIGVzY2FwZV9zeW50YXhfdHlwZTsKLQotc3RhdGljIGNvbnN0IGVzY2FwZV9zeW50YXhfdHlwZSBlc2NhcGVfdHlwZV93b3JkX2Fzc2VydCA9IDE4Owotc3RhdGljIGNvbnN0IGVzY2FwZV9zeW50YXhfdHlwZSBlc2NhcGVfdHlwZV9ub3Rfd29yZF9hc3NlcnQgPSAxOTsKLXN0YXRpYyBjb25zdCBlc2NhcGVfc3ludGF4X3R5cGUgZXNjYXBlX3R5cGVfY29udHJvbF9mID0gMjk7Ci1zdGF0aWMgY29uc3QgZXNjYXBlX3N5bnRheF90eXBlIGVzY2FwZV90eXBlX2NvbnRyb2xfbiA9IDMwOwotc3RhdGljIGNvbnN0IGVzY2FwZV9zeW50YXhfdHlwZSBlc2NhcGVfdHlwZV9jb250cm9sX3IgPSAzMTsKLXN0YXRpYyBjb25zdCBlc2NhcGVfc3ludGF4X3R5cGUgZXNjYXBlX3R5cGVfY29udHJvbF90ID0gMzI7Ci1zdGF0aWMgY29uc3QgZXNjYXBlX3N5bnRheF90eXBlIGVzY2FwZV90eXBlX2NvbnRyb2xfdiA9IDMzOwotc3RhdGljIGNvbnN0IGVzY2FwZV9zeW50YXhfdHlwZSBlc2NhcGVfdHlwZV9hc2NpaV9jb250cm9sID0gMzU7Ci1zdGF0aWMgY29uc3QgZXNjYXBlX3N5bnRheF90eXBlIGVzY2FwZV90eXBlX2hleCA9IDM0Owotc3RhdGljIGNvbnN0IGVzY2FwZV9zeW50YXhfdHlwZSBlc2NhcGVfdHlwZV91bmljb2RlID0gMDsgLy8gbm90IHVzZWQKLXN0YXRpYyBjb25zdCBlc2NhcGVfc3ludGF4X3R5cGUgZXNjYXBlX3R5cGVfaWRlbnRpdHkgPSAwOyAvLyBub3QgdXNlZAotc3RhdGljIGNvbnN0IGVzY2FwZV9zeW50YXhfdHlwZSBlc2NhcGVfdHlwZV9iYWNrcmVmID0gc3ludGF4X2RpZ2l0Owotc3RhdGljIGNvbnN0IGVzY2FwZV9zeW50YXhfdHlwZSBlc2NhcGVfdHlwZV9kZWNpbWFsID0gc3ludGF4X2RpZ2l0OyAvLyBub3QgdXNlZAotc3RhdGljIGNvbnN0IGVzY2FwZV9zeW50YXhfdHlwZSBlc2NhcGVfdHlwZV9jbGFzcyA9IDIyOyAKLXN0YXRpYyBjb25zdCBlc2NhcGVfc3ludGF4X3R5cGUgZXNjYXBlX3R5cGVfbm90X2NsYXNzID0gMjM7IAotCi0vLyBleHRlbnNpb25zOgotCi1zdGF0aWMgY29uc3QgZXNjYXBlX3N5bnRheF90eXBlIGVzY2FwZV90eXBlX2xlZnRfd29yZCA9IDIwOwotc3RhdGljIGNvbnN0IGVzY2FwZV9zeW50YXhfdHlwZSBlc2NhcGVfdHlwZV9yaWdodF93b3JkID0gMjE7Ci1zdGF0aWMgY29uc3QgZXNjYXBlX3N5bnRheF90eXBlIGVzY2FwZV90eXBlX3N0YXJ0X2J1ZmZlciA9IDI0OyAgICAgICAgICAgICAgICAgLy8gZm9yIFxgCi1zdGF0aWMgY29uc3QgZXNjYXBlX3N5bnRheF90eXBlIGVzY2FwZV90eXBlX2VuZF9idWZmZXIgPSAyNTsgICAgICAgICAgICAgICAgICAgLy8gZm9yIFwnCi1zdGF0aWMgY29uc3QgZXNjYXBlX3N5bnRheF90eXBlIGVzY2FwZV90eXBlX2NvbnRyb2xfYSA9IDI4OyAgICAgICAgICAgICAgICAgICAgLy8gZm9yIFxhCi1zdGF0aWMgY29uc3QgZXNjYXBlX3N5bnRheF90eXBlIGVzY2FwZV90eXBlX2UgPSAzODsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIFxlCi1zdGF0aWMgY29uc3QgZXNjYXBlX3N5bnRheF90eXBlIGVzY2FwZV90eXBlX0UgPSA0NzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIFxRXEUKLXN0YXRpYyBjb25zdCBlc2NhcGVfc3ludGF4X3R5cGUgZXNjYXBlX3R5cGVfUSA9IDQ4OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3IgXFFcRQotc3RhdGljIGNvbnN0IGVzY2FwZV9zeW50YXhfdHlwZSBlc2NhcGVfdHlwZV9YID0gNDk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBcWAotc3RhdGljIGNvbnN0IGVzY2FwZV9zeW50YXhfdHlwZSBlc2NhcGVfdHlwZV9DID0gNTA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBcQwotc3RhdGljIGNvbnN0IGVzY2FwZV9zeW50YXhfdHlwZSBlc2NhcGVfdHlwZV9aID0gNTE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBcWgotc3RhdGljIGNvbnN0IGVzY2FwZV9zeW50YXhfdHlwZSBlc2NhcGVfdHlwZV9HID0gNTI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBcRwotCi1zdGF0aWMgY29uc3QgZXNjYXBlX3N5bnRheF90eXBlIGVzY2FwZV90eXBlX3Byb3BlcnR5ID0gNTQ7ICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIFxwCi1zdGF0aWMgY29uc3QgZXNjYXBlX3N5bnRheF90eXBlIGVzY2FwZV90eXBlX25vdF9wcm9wZXJ0eSA9IDU1OyAgICAgICAgICAgICAgICAgLy8gZm9yIFxQCi1zdGF0aWMgY29uc3QgZXNjYXBlX3N5bnRheF90eXBlIGVzY2FwZV90eXBlX25hbWVkX2NoYXIgPSA1NjsgICAgICAgICAgICAgICAgICAgLy8gZm9yIFxOCi1zdGF0aWMgY29uc3QgZXNjYXBlX3N5bnRheF90eXBlIGVzY2FwZV90eXBlX2V4dGVuZGVkX2JhY2tyZWYgPSA1NzsgICAgICAgICAgICAgLy8gZm9yIFxnCi1zdGF0aWMgY29uc3QgZXNjYXBlX3N5bnRheF90eXBlIGVzY2FwZV90eXBlX3Jlc2V0X3N0YXJ0X21hcmsgPSA1ODsgICAgICAgICAgICAgLy8gZm9yIFxLCi1zdGF0aWMgY29uc3QgZXNjYXBlX3N5bnRheF90eXBlIGVzY2FwZV90eXBlX2xpbmVfZW5kaW5nID0gNTk7ICAgICAgICAgICAgICAgICAgLy8gZm9yIFxSCi0KLXN0YXRpYyBjb25zdCBlc2NhcGVfc3ludGF4X3R5cGUgc3ludGF4X21heCA9IDYwOwotCi19Ci19Ci0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3UzMnJlZ2V4X2l0ZXJhdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvdTMycmVnZXhfaXRlcmF0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNzE0OWY2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvdTMycmVnZXhfaXRlcmF0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTkzICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IChjKSAyMDAzCi0gKiBKb2huIE1hZGRvY2sKLSAqCi0gKiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLSAqIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotICogTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqLwotCi0gLyoKLSAgKiAgIExPQ0FUSU9OOiAgICBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24uCi0gICogICBGSUxFICAgICAgICAgdTMycmVnZXhfaXRlcmF0b3IuaHBwCi0gICogICBWRVJTSU9OICAgICAgc2VlIDxuZG5ib29zdC92ZXJzaW9uLmhwcD4KLSAgKiAgIERFU0NSSVBUSU9OOiBQcm92aWRlcyB1MzJyZWdleF9pdGVyYXRvciBpbXBsZW1lbnRhdGlvbi4KLSAgKi8KLQotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9WNF9VMzJSRUdFWF9JVEVSQVRPUl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfVjRfVTMyUkVHRVhfSVRFUkFUT1JfSFBQCi0KLW5hbWVzcGFjZSBuZG5ib29zdHsKLQotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfUFJFRklYCi0jZW5kaWYKLQotdGVtcGxhdGUgPGNsYXNzIEJpZGlyZWN0aW9uYWxJdGVyYXRvcj4KLWNsYXNzIHUzMnJlZ2V4X2l0ZXJhdG9yX2ltcGxlbWVudGF0aW9uIAotewotICAgdHlwZWRlZiB1MzJyZWdleCByZWdleF90eXBlOwotCi0gICBtYXRjaF9yZXN1bHRzPEJpZGlyZWN0aW9uYWxJdGVyYXRvcj4gd2hhdDsgIC8vIGN1cnJlbnQgbWF0Y2gKLSAgIEJpZGlyZWN0aW9uYWxJdGVyYXRvciAgICAgICAgICAgICAgICBiYXNlOyAgLy8gc3RhcnQgb2Ygc2VxdWVuY2UKLSAgIEJpZGlyZWN0aW9uYWxJdGVyYXRvciAgICAgICAgICAgICAgICBlbmQ7ICAgLy8gZW5kIG9mIHNlcXVlbmNlCi0gICBjb25zdCByZWdleF90eXBlICAgICAgICAgICAgICAgICAgICAgcmU7ICAgLy8gdGhlIGV4cHJlc3Npb24KLSAgIG1hdGNoX2ZsYWdfdHlwZSAgICAgICAgICAgICAgICAgICAgICBmbGFnczsgLy8gZmxhZ3MgZm9yIG1hdGNoaW5nCi0KLXB1YmxpYzoKLSAgIHUzMnJlZ2V4X2l0ZXJhdG9yX2ltcGxlbWVudGF0aW9uKGNvbnN0IHJlZ2V4X3R5cGUqIHAsIEJpZGlyZWN0aW9uYWxJdGVyYXRvciBsYXN0LCBtYXRjaF9mbGFnX3R5cGUgZikKLSAgICAgIDogYmFzZSgpLCBlbmQobGFzdCksIHJlKCpwKSwgZmxhZ3MoZil7fQotICAgYm9vbCBpbml0KEJpZGlyZWN0aW9uYWxJdGVyYXRvciBmaXJzdCkKLSAgIHsKLSAgICAgIGJhc2UgPSBmaXJzdDsKLSAgICAgIHJldHVybiB1MzJyZWdleF9zZWFyY2goZmlyc3QsIGVuZCwgd2hhdCwgcmUsIGZsYWdzLCBiYXNlKTsKLSAgIH0KLSAgIGJvb2wgY29tcGFyZShjb25zdCB1MzJyZWdleF9pdGVyYXRvcl9pbXBsZW1lbnRhdGlvbiYgdGhhdCkKLSAgIHsKLSAgICAgIGlmKHRoaXMgPT0gJnRoYXQpIHJldHVybiB0cnVlOwotICAgICAgcmV0dXJuICgmcmUuZ2V0X2RhdGEoKSA9PSAmdGhhdC5yZS5nZXRfZGF0YSgpKSAmJiAoZW5kID09IHRoYXQuZW5kKSAmJiAoZmxhZ3MgPT0gdGhhdC5mbGFncykgJiYgKHdoYXRbMF0uZmlyc3QgPT0gdGhhdC53aGF0WzBdLmZpcnN0KSAmJiAod2hhdFswXS5zZWNvbmQgPT0gdGhhdC53aGF0WzBdLnNlY29uZCk7Ci0gICB9Ci0gICBjb25zdCBtYXRjaF9yZXN1bHRzPEJpZGlyZWN0aW9uYWxJdGVyYXRvcj4mIGdldCgpCi0gICB7IHJldHVybiB3aGF0OyB9Ci0gICBib29sIG5leHQoKQotICAgewotICAgICAgLy9pZih3aGF0LnByZWZpeCgpLmZpcnN0ICE9IHdoYXRbMF0uc2Vjb25kKQotICAgICAgLy8gICBmbGFncyB8PSBtYXRjaF9wcmV2X2F2YWlsOwotICAgICAgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIG5leHRfc3RhcnQgPSB3aGF0WzBdLnNlY29uZDsKLSAgICAgIG1hdGNoX2ZsYWdfdHlwZSBmKGZsYWdzKTsKLSAgICAgIGlmKCF3aGF0Lmxlbmd0aCgpKQotICAgICAgICAgZiB8PSByZWdleF9jb25zdGFudHM6Om1hdGNoX25vdF9pbml0aWFsX251bGw7Ci0gICAgICAvL2lmKGJhc2UgIT0gbmV4dF9zdGFydCkKLSAgICAgIC8vICAgZiB8PSByZWdleF9jb25zdGFudHM6Om1hdGNoX25vdF9ib2I7Ci0gICAgICBib29sIHJlc3VsdCA9IHUzMnJlZ2V4X3NlYXJjaChuZXh0X3N0YXJ0LCBlbmQsIHdoYXQsIHJlLCBmLCBiYXNlKTsKLSAgICAgIGlmKHJlc3VsdCkKLSAgICAgICAgIHdoYXQuc2V0X2Jhc2UoYmFzZSk7Ci0gICAgICByZXR1cm4gcmVzdWx0OwotICAgfQotcHJpdmF0ZToKLSAgIHUzMnJlZ2V4X2l0ZXJhdG9yX2ltcGxlbWVudGF0aW9uJiBvcGVyYXRvcj0oY29uc3QgdTMycmVnZXhfaXRlcmF0b3JfaW1wbGVtZW50YXRpb24mKTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBCaWRpcmVjdGlvbmFsSXRlcmF0b3I+Ci1jbGFzcyB1MzJyZWdleF9pdGVyYXRvciAKLSNpZm5kZWYgTkROQk9PU1RfTk9fU1REX0lURVJBVE9SCi0gICA6IHB1YmxpYyBzdGQ6Oml0ZXJhdG9yPAotICAgICAgICAgc3RkOjpmb3J3YXJkX2l0ZXJhdG9yX3RhZywgCi0gICAgICAgICBtYXRjaF9yZXN1bHRzPEJpZGlyZWN0aW9uYWxJdGVyYXRvcj4sCi0gICAgICAgICB0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxCaWRpcmVjdGlvbmFsSXRlcmF0b3I+OjpkaWZmZXJlbmNlX3R5cGUsCi0gICAgICAgICBjb25zdCBtYXRjaF9yZXN1bHRzPEJpZGlyZWN0aW9uYWxJdGVyYXRvcj4qLAotICAgICAgICAgY29uc3QgbWF0Y2hfcmVzdWx0czxCaWRpcmVjdGlvbmFsSXRlcmF0b3I+JiA+ICAgICAgICAgCi0jZW5kaWYKLXsKLXByaXZhdGU6Ci0gICB0eXBlZGVmIHUzMnJlZ2V4X2l0ZXJhdG9yX2ltcGxlbWVudGF0aW9uPEJpZGlyZWN0aW9uYWxJdGVyYXRvcj4gaW1wbDsKLSAgIHR5cGVkZWYgc2hhcmVkX3B0cjxpbXBsPiBwaW1wbDsKLXB1YmxpYzoKLSAgIHR5cGVkZWYgICAgICAgICAgdTMycmVnZXggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdleF90eXBlOwotICAgdHlwZWRlZiAgICAgICAgICBtYXRjaF9yZXN1bHRzPEJpZGlyZWN0aW9uYWxJdGVyYXRvcj4gICAgICAgICAgICAgICAgICAgIHZhbHVlX3R5cGU7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHJlX2RldGFpbDo6cmVnZXhfaXRlcmF0b3JfdHJhaXRzPEJpZGlyZWN0aW9uYWxJdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZSAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWZmZXJlbmNlX3R5cGU7Ci0gICB0eXBlZGVmICAgICAgICAgIGNvbnN0IHZhbHVlX3R5cGUqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRlcjsKLSAgIHR5cGVkZWYgICAgICAgICAgY29uc3QgdmFsdWVfdHlwZSYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2U7IAotICAgdHlwZWRlZiAgICAgICAgICBzdGQ6OmZvcndhcmRfaXRlcmF0b3JfdGFnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZXJhdG9yX2NhdGVnb3J5OwotICAgCi0gICB1MzJyZWdleF9pdGVyYXRvcigpe30KLSAgIHUzMnJlZ2V4X2l0ZXJhdG9yKEJpZGlyZWN0aW9uYWxJdGVyYXRvciBhLCBCaWRpcmVjdGlvbmFsSXRlcmF0b3IgYiwgCi0gICAgICAgICAgICAgICAgICBjb25zdCByZWdleF90eXBlJiByZSwgCi0gICAgICAgICAgICAgICAgICBtYXRjaF9mbGFnX3R5cGUgbSA9IG1hdGNoX2RlZmF1bHQpCi0gICAgICAgICAgICAgICAgICA6IHBkYXRhKG5ldyBpbXBsKCZyZSwgYiwgbSkpCi0gICB7Ci0gICAgICBpZighcGRhdGEtPmluaXQoYSkpCi0gICAgICB7Ci0gICAgICAgICBwZGF0YS5yZXNldCgpOwotICAgICAgfQotICAgfQotICAgdTMycmVnZXhfaXRlcmF0b3IoY29uc3QgdTMycmVnZXhfaXRlcmF0b3ImIHRoYXQpCi0gICAgICA6IHBkYXRhKHRoYXQucGRhdGEpIHt9Ci0gICB1MzJyZWdleF9pdGVyYXRvciYgb3BlcmF0b3I9KGNvbnN0IHUzMnJlZ2V4X2l0ZXJhdG9yJiB0aGF0KQotICAgewotICAgICAgcGRhdGEgPSB0aGF0LnBkYXRhOwotICAgICAgcmV0dXJuICp0aGlzOwotICAgfQotICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IHUzMnJlZ2V4X2l0ZXJhdG9yJiB0aGF0KWNvbnN0Ci0gICB7IAotICAgICAgaWYoKHBkYXRhLmdldCgpID09IDApIHx8ICh0aGF0LnBkYXRhLmdldCgpID09IDApKQotICAgICAgICAgcmV0dXJuIHBkYXRhLmdldCgpID09IHRoYXQucGRhdGEuZ2V0KCk7Ci0gICAgICByZXR1cm4gcGRhdGEtPmNvbXBhcmUoKih0aGF0LnBkYXRhLmdldCgpKSk7IAotICAgfQotICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IHUzMnJlZ2V4X2l0ZXJhdG9yJiB0aGF0KWNvbnN0Ci0gICB7IHJldHVybiAhKCp0aGlzID09IHRoYXQpOyB9Ci0gICBjb25zdCB2YWx1ZV90eXBlJiBvcGVyYXRvciooKWNvbnN0Ci0gICB7IHJldHVybiBwZGF0YS0+Z2V0KCk7IH0KLSAgIGNvbnN0IHZhbHVlX3R5cGUqIG9wZXJhdG9yLT4oKWNvbnN0Ci0gICB7IHJldHVybiAmKHBkYXRhLT5nZXQoKSk7IH0KLSAgIHUzMnJlZ2V4X2l0ZXJhdG9yJiBvcGVyYXRvcisrKCkKLSAgIHsKLSAgICAgIGNvdygpOwotICAgICAgaWYoMCA9PSBwZGF0YS0+bmV4dCgpKQotICAgICAgewotICAgICAgICAgcGRhdGEucmVzZXQoKTsKLSAgICAgIH0KLSAgICAgIHJldHVybiAqdGhpczsKLSAgIH0KLSAgIHUzMnJlZ2V4X2l0ZXJhdG9yIG9wZXJhdG9yKysoaW50KQotICAgewotICAgICAgdTMycmVnZXhfaXRlcmF0b3IgcmVzdWx0KCp0aGlzKTsKLSAgICAgICsrKCp0aGlzKTsKLSAgICAgIHJldHVybiByZXN1bHQ7Ci0gICB9Ci1wcml2YXRlOgotCi0gICBwaW1wbCBwZGF0YTsKLQotICAgdm9pZCBjb3coKQotICAgewotICAgICAgLy8gY29weS1vbi13cml0ZQotICAgICAgaWYocGRhdGEuZ2V0KCkgJiYgIXBkYXRhLnVuaXF1ZSgpKQotICAgICAgewotICAgICAgICAgcGRhdGEucmVzZXQobmV3IGltcGwoKihwZGF0YS5nZXQoKSkpKTsKLSAgICAgIH0KLSAgIH0KLX07Ci0KLXR5cGVkZWYgdTMycmVnZXhfaXRlcmF0b3I8Y29uc3QgY2hhcio+IHV0ZjhyZWdleF9pdGVyYXRvcjsKLXR5cGVkZWYgdTMycmVnZXhfaXRlcmF0b3I8Y29uc3QgVUNoYXIqPiB1dGYxNnJlZ2V4X2l0ZXJhdG9yOwotdHlwZWRlZiB1MzJyZWdleF9pdGVyYXRvcjxjb25zdCBVQ2hhcjMyKj4gdXRmMzJyZWdleF9pdGVyYXRvcjsKLQotaW5saW5lIHUzMnJlZ2V4X2l0ZXJhdG9yPGNvbnN0IGNoYXIqPiBtYWtlX3UzMnJlZ2V4X2l0ZXJhdG9yKGNvbnN0IGNoYXIqIHAsIGNvbnN0IHUzMnJlZ2V4JiBlLCByZWdleF9jb25zdGFudHM6Om1hdGNoX2ZsYWdfdHlwZSBtID0gcmVnZXhfY29uc3RhbnRzOjptYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHUzMnJlZ2V4X2l0ZXJhdG9yPGNvbnN0IGNoYXIqPihwLCBwK3N0ZDo6c3RybGVuKHApLCBlLCBtKTsKLX0KLSNpZm5kZWYgTkROQk9PU1RfTk9fV1JFR0VYCi1pbmxpbmUgdTMycmVnZXhfaXRlcmF0b3I8Y29uc3Qgd2NoYXJfdCo+IG1ha2VfdTMycmVnZXhfaXRlcmF0b3IoY29uc3Qgd2NoYXJfdCogcCwgY29uc3QgdTMycmVnZXgmIGUsIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZmxhZ190eXBlIG0gPSByZWdleF9jb25zdGFudHM6Om1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gdTMycmVnZXhfaXRlcmF0b3I8Y29uc3Qgd2NoYXJfdCo+KHAsIHArc3RkOjp3Y3NsZW4ocCksIGUsIG0pOwotfQotI2VuZGlmCi0jaWYgIWRlZmluZWQoVV9XQ0hBUl9JU19VVEYxNikgJiYgKFVfU0laRU9GX1dDSEFSX1QgIT0gMikKLWlubGluZSB1MzJyZWdleF9pdGVyYXRvcjxjb25zdCBVQ2hhcio+IG1ha2VfdTMycmVnZXhfaXRlcmF0b3IoY29uc3QgVUNoYXIqIHAsIGNvbnN0IHUzMnJlZ2V4JiBlLCByZWdleF9jb25zdGFudHM6Om1hdGNoX2ZsYWdfdHlwZSBtID0gcmVnZXhfY29uc3RhbnRzOjptYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHUzMnJlZ2V4X2l0ZXJhdG9yPGNvbnN0IFVDaGFyKj4ocCwgcCt1X3N0cmxlbihwKSwgZSwgbSk7Ci19Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBjaGFyVCwgY2xhc3MgVHJhaXRzLCBjbGFzcyBBbGxvYz4KLWlubGluZSB1MzJyZWdleF9pdGVyYXRvcjx0eXBlbmFtZSBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVCwgVHJhaXRzLCBBbGxvYz46OmNvbnN0X2l0ZXJhdG9yPiBtYWtlX3UzMnJlZ2V4X2l0ZXJhdG9yKGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJULCBUcmFpdHMsIEFsbG9jPiYgcCwgY29uc3QgdTMycmVnZXgmIGUsIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZmxhZ190eXBlIG0gPSByZWdleF9jb25zdGFudHM6Om1hdGNoX2RlZmF1bHQpCi17Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJULCBUcmFpdHMsIEFsbG9jPjo6Y29uc3RfaXRlcmF0b3IgaXRlcl90eXBlOwotICAgcmV0dXJuIHUzMnJlZ2V4X2l0ZXJhdG9yPGl0ZXJfdHlwZT4ocC5iZWdpbigpLCBwLmVuZCgpLCBlLCBtKTsKLX0KLWlubGluZSB1MzJyZWdleF9pdGVyYXRvcjxjb25zdCBVQ2hhcio+IG1ha2VfdTMycmVnZXhfaXRlcmF0b3IoY29uc3QgVV9OQU1FU1BBQ0VfUVVBTElGSUVSIFVuaWNvZGVTdHJpbmcmIHMsIGNvbnN0IHUzMnJlZ2V4JiBlLCByZWdleF9jb25zdGFudHM6Om1hdGNoX2ZsYWdfdHlwZSBtID0gcmVnZXhfY29uc3RhbnRzOjptYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHUzMnJlZ2V4X2l0ZXJhdG9yPGNvbnN0IFVDaGFyKj4ocy5nZXRCdWZmZXIoKSwgcy5nZXRCdWZmZXIoKSArIHMubGVuZ3RoKCksIGUsIG0pOwotfQotCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9TVUZGSVgKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfUkVHRVhfVjRfUkVHRVhfSVRFUkFUT1JfSFBQCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvcmVnZXgvdjQvdTMycmVnZXhfdG9rZW5faXRlcmF0b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC91MzJyZWdleF90b2tlbl9pdGVyYXRvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA4ZDQwY2YuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC91MzJyZWdleF90b2tlbl9pdGVyYXRvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNzcgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDMKLSAqIEpvaG4gTWFkZG9jawotICoKLSAqIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotICogQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0gKiBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICovCi0KLSAvKgotICAqICAgTE9DQVRJT046ICAgIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbi4KLSAgKiAgIEZJTEUgICAgICAgICB1MzJyZWdleF90b2tlbl9pdGVyYXRvci5ocHAKLSAgKiAgIFZFUlNJT04gICAgICBzZWUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotICAqICAgREVTQ1JJUFRJT046IFByb3ZpZGVzIHUzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yIGltcGxlbWVudGF0aW9uLgotICAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1Y0X1UzMlJFR0VYX1RPS0VOX0lURVJBVE9SX0hQUAotI2RlZmluZSBORE5CT09TVF9SRUdFWF9WNF9VMzJSRUdFWF9UT0tFTl9JVEVSQVRPUl9IUFAKLQotI2lmIChORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgPj0gMHg1NjApICYmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1NzApKSlcCi0gICAgICB8fCBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkgXAotICAgICAgfHwgTkROQk9PU1RfV09SS0FST1VORChfX01XRVJLU19fLCBORE5CT09TVF9URVNURURfQVQoMHgzMDAzKSkKLS8vCi0vLyBCb3JsYW5kIEMrKyBCdWlsZGVyIDYsIGFuZCBWaXN1YWwgQysrIDYsCi0vLyBjYW4ndCBjb3BlIHdpdGggdGhlIGFycmF5IHRlbXBsYXRlIGNvbnN0cnVjdG9yCi0vLyBzbyB3ZSBoYXZlIGEgdGVtcGxhdGUgbWVtYmVyIHRoYXQgd2lsbCBhY2NlcHQgYW55IHR5cGUgYXMgCi0vLyBhcmd1bWVudCwgYW5kIHRoZW4gYXNzZXJ0IHRoYXQgaXMgcmVhbGx5IGlzIGFuIGFycmF5OgotLy8KLSNpbmNsdWRlIDxuZG5ib29zdC9zdGF0aWNfYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19hcnJheS5ocHA+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0ewotCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9QUkVGSVgKLSNlbmRpZgotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPiAxMzAwKQotIyAgcHJhZ21hIHdhcm5pbmcocHVzaCkKLSMgIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDcwMCkKLSNlbmRpZgotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yPgotY2xhc3MgdTMycmVnZXhfdG9rZW5faXRlcmF0b3JfaW1wbGVtZW50YXRpb24gCi17Ci0gICB0eXBlZGVmIHUzMnJlZ2V4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnZXhfdHlwZTsKLSAgIHR5cGVkZWYgc3ViX21hdGNoPEJpZGlyZWN0aW9uYWxJdGVyYXRvcj4gICAgICB2YWx1ZV90eXBlOwotCi0gICBtYXRjaF9yZXN1bHRzPEJpZGlyZWN0aW9uYWxJdGVyYXRvcj4gd2hhdDsgICAvLyBjdXJyZW50IG1hdGNoCi0gICBCaWRpcmVjdGlvbmFsSXRlcmF0b3IgICAgICAgICAgICAgICAgZW5kOyAgICAvLyBlbmQgb2Ygc2VhcmNoIGFyZWEKLSAgIEJpZGlyZWN0aW9uYWxJdGVyYXRvciAgICAgICAgICAgICAgICBiYXNlOyAgIC8vIHN0YXJ0IG9mIHNlYXJjaCBhcmVhCi0gICBjb25zdCByZWdleF90eXBlICAgICAgICAgICAgICAgICAgICAgcmU7ICAgICAvLyB0aGUgZXhwcmVzc2lvbgotICAgbWF0Y2hfZmxhZ190eXBlICAgICAgICAgICAgICAgICAgICAgIGZsYWdzOyAgLy8gbWF0Y2ggZmxhZ3MKLSAgIHZhbHVlX3R5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQ7IC8vIHRoZSBjdXJyZW50IHN0cmluZyByZXN1bHQKLSAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOOyAgICAgIC8vIHRoZSBjdXJyZW50IHN1Yi1leHByZXNzaW9uIGJlaW5nIGVudW1lcmF0ZWQKLSAgIHN0ZDo6dmVjdG9yPGludD4gICAgICAgICAgICAgICAgICAgICBzdWJzOyAgIC8vIHRoZSBzdWItZXhwcmVzc2lvbnMgdG8gZW51bWVyYXRlCi0KLXB1YmxpYzoKLSAgIHUzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yX2ltcGxlbWVudGF0aW9uKGNvbnN0IHJlZ2V4X3R5cGUqIHAsIEJpZGlyZWN0aW9uYWxJdGVyYXRvciBsYXN0LCBpbnQgc3ViLCBtYXRjaF9mbGFnX3R5cGUgZikKLSAgICAgIDogZW5kKGxhc3QpLCByZSgqcCksIGZsYWdzKGYpeyBzdWJzLnB1c2hfYmFjayhzdWIpOyB9Ci0gICB1MzJyZWdleF90b2tlbl9pdGVyYXRvcl9pbXBsZW1lbnRhdGlvbihjb25zdCByZWdleF90eXBlKiBwLCBCaWRpcmVjdGlvbmFsSXRlcmF0b3IgbGFzdCwgY29uc3Qgc3RkOjp2ZWN0b3I8aW50PiYgdiwgbWF0Y2hfZmxhZ190eXBlIGYpCi0gICAgICA6IGVuZChsYXN0KSwgcmUoKnApLCBmbGFncyhmKSwgc3Vicyh2KXt9Ci0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApCi0gICAgICAvLyBjYW4ndCByZWxpYWJseSBnZXQgdGhpcyB0byB3b3JrLi4uLgotI2VsaWYgKE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCA+PSAweDU2MCkgJiYgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU3MCkpKVwKLSAgICAgIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKSBcCi0gICAgICB8fCBORE5CT09TVF9XT1JLQVJPVU5EKF9fTVdFUktTX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDMwMDMpKSBcCi0gICAgICB8fCBORE5CT09TVF9XT1JLQVJPVU5EKF9fSFBfYUNDLCA8IDYwNzAwKQotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICB1MzJyZWdleF90b2tlbl9pdGVyYXRvcl9pbXBsZW1lbnRhdGlvbihjb25zdCByZWdleF90eXBlKiBwLCBCaWRpcmVjdGlvbmFsSXRlcmF0b3IgbGFzdCwgY29uc3QgVCYgc3VibWF0Y2hlcywgbWF0Y2hfZmxhZ190eXBlIGYpCi0gICAgICA6IGVuZChsYXN0KSwgcmUoKnApLCBmbGFncyhmKQotICAgewotICAgICAgLy8gYXNzZXJ0IHRoYXQgVCByZWFsbHkgaXMgYW4gYXJyYXk6Ci0gICAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKDo6bmRuYm9vc3Q6OmlzX2FycmF5PFQ+Ojp2YWx1ZSk7Ci0gICAgICBjb25zdCBzdGQ6OnNpemVfdCBhcnJheV9zaXplID0gc2l6ZW9mKFQpIC8gc2l6ZW9mKHN1Ym1hdGNoZXNbMF0pOwotICAgICAgZm9yKHN0ZDo6c2l6ZV90IGkgPSAwOyBpIDwgYXJyYXlfc2l6ZTsgKytpKQotICAgICAgewotICAgICAgICAgc3Vicy5wdXNoX2JhY2soc3VibWF0Y2hlc1tpXSk7Ci0gICAgICB9Ci0gICB9Ci0jZWxzZQotICAgdGVtcGxhdGUgPHN0ZDo6c2l6ZV90IENOPgotICAgdTMycmVnZXhfdG9rZW5faXRlcmF0b3JfaW1wbGVtZW50YXRpb24oY29uc3QgcmVnZXhfdHlwZSogcCwgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIGxhc3QsIGNvbnN0IGludCAoJnN1Ym1hdGNoZXMpW0NOXSwgbWF0Y2hfZmxhZ190eXBlIGYpCi0gICAgICA6IGVuZChsYXN0KSwgcmUoKnApLCBmbGFncyhmKQotICAgewotICAgICAgZm9yKHN0ZDo6c2l6ZV90IGkgPSAwOyBpIDwgQ047ICsraSkKLSAgICAgIHsKLSAgICAgICAgIHN1YnMucHVzaF9iYWNrKHN1Ym1hdGNoZXNbaV0pOwotICAgICAgfQotICAgfQotI2VuZGlmCi0KLSAgIGJvb2wgaW5pdChCaWRpcmVjdGlvbmFsSXRlcmF0b3IgZmlyc3QpCi0gICB7Ci0gICAgICBiYXNlID0gZmlyc3Q7Ci0gICAgICBOID0gMDsKLSAgICAgIGlmKHUzMnJlZ2V4X3NlYXJjaChmaXJzdCwgZW5kLCB3aGF0LCByZSwgZmxhZ3MsIGJhc2UpID09IHRydWUpCi0gICAgICB7Ci0gICAgICAgICBOID0gMDsKLSAgICAgICAgIHJlc3VsdCA9ICgoc3Vic1tOXSA9PSAtMSkgPyB3aGF0LnByZWZpeCgpIDogd2hhdFsoaW50KXN1YnNbTl1dKTsKLSAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgfQotICAgICAgZWxzZSBpZigoc3Vic1tOXSA9PSAtMSkgJiYgKGZpcnN0ICE9IGVuZCkpCi0gICAgICB7Ci0gICAgICAgICByZXN1bHQuZmlyc3QgPSBmaXJzdDsKLSAgICAgICAgIHJlc3VsdC5zZWNvbmQgPSBlbmQ7Ci0gICAgICAgICByZXN1bHQubWF0Y2hlZCA9IChmaXJzdCAhPSBlbmQpOwotICAgICAgICAgTiA9IC0xOwotICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICB9Ci0gICBib29sIGNvbXBhcmUoY29uc3QgdTMycmVnZXhfdG9rZW5faXRlcmF0b3JfaW1wbGVtZW50YXRpb24mIHRoYXQpCi0gICB7Ci0gICAgICBpZih0aGlzID09ICZ0aGF0KSByZXR1cm4gdHJ1ZTsKLSAgICAgIHJldHVybiAoJnJlLmdldF9kYXRhKCkgPT0gJnRoYXQucmUuZ2V0X2RhdGEoKSkgCi0gICAgICAgICAmJiAoZW5kID09IHRoYXQuZW5kKSAKLSAgICAgICAgICYmIChmbGFncyA9PSB0aGF0LmZsYWdzKSAKLSAgICAgICAgICYmIChOID09IHRoYXQuTikgCi0gICAgICAgICAmJiAod2hhdFswXS5maXJzdCA9PSB0aGF0LndoYXRbMF0uZmlyc3QpIAotICAgICAgICAgJiYgKHdoYXRbMF0uc2Vjb25kID09IHRoYXQud2hhdFswXS5zZWNvbmQpOwotICAgfQotICAgY29uc3QgdmFsdWVfdHlwZSYgZ2V0KCkKLSAgIHsgcmV0dXJuIHJlc3VsdDsgfQotICAgYm9vbCBuZXh0KCkKLSAgIHsKLSAgICAgIGlmKE4gPT0gLTEpCi0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICBpZihOKzEgPCAoaW50KXN1YnMuc2l6ZSgpKQotICAgICAgewotICAgICAgICAgKytOOwotICAgICAgICAgcmVzdWx0ID0oKHN1YnNbTl0gPT0gLTEpID8gd2hhdC5wcmVmaXgoKSA6IHdoYXRbc3Vic1tOXV0pOwotICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICB9Ci0gICAgICAvL2lmKHdoYXQucHJlZml4KCkuZmlyc3QgIT0gd2hhdFswXS5zZWNvbmQpCi0gICAgICAvLyAgIGZsYWdzIHw9IG1hdGNoX3ByZXZfYXZhaWwgfCByZWdleF9jb25zdGFudHM6Om1hdGNoX25vdF9ib2I7Ci0gICAgICBCaWRpcmVjdGlvbmFsSXRlcmF0b3IgbGFzdF9lbmQod2hhdFswXS5zZWNvbmQpOwotICAgICAgaWYodTMycmVnZXhfc2VhcmNoKGxhc3RfZW5kLCBlbmQsIHdoYXQsIHJlLCAoKHdoYXRbMF0uZmlyc3QgPT0gd2hhdFswXS5zZWNvbmQpID8gZmxhZ3MgfCByZWdleF9jb25zdGFudHM6Om1hdGNoX25vdF9pbml0aWFsX251bGwgOiBmbGFncyksIGJhc2UpKQotICAgICAgewotICAgICAgICAgTiA9MDsKLSAgICAgICAgIHJlc3VsdCA9KChzdWJzW05dID09IC0xKSA/IHdoYXQucHJlZml4KCkgOiB3aGF0W3N1YnNbTl1dKTsKLSAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgfQotICAgICAgZWxzZSBpZigobGFzdF9lbmQgIT0gZW5kKSAmJiAoc3Vic1swXSA9PSAtMSkpCi0gICAgICB7Ci0gICAgICAgICBOID0tMTsKLSAgICAgICAgIHJlc3VsdC5maXJzdCA9IGxhc3RfZW5kOwotICAgICAgICAgcmVzdWx0LnNlY29uZCA9IGVuZDsKLSAgICAgICAgIHJlc3VsdC5tYXRjaGVkID0gKGxhc3RfZW5kICE9IGVuZCk7Ci0gICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0KLSAgICAgIHJldHVybiBmYWxzZTsKLSAgIH0KLXByaXZhdGU6Ci0gICB1MzJyZWdleF90b2tlbl9pdGVyYXRvcl9pbXBsZW1lbnRhdGlvbiYgb3BlcmF0b3I9KGNvbnN0IHUzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yX2ltcGxlbWVudGF0aW9uJik7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yPgotY2xhc3MgdTMycmVnZXhfdG9rZW5faXRlcmF0b3IgCi0jaWZuZGVmIE5ETkJPT1NUX05PX1NURF9JVEVSQVRPUgotICAgOiBwdWJsaWMgc3RkOjppdGVyYXRvcjwKLSAgICAgICAgIHN0ZDo6Zm9yd2FyZF9pdGVyYXRvcl90YWcsIAotICAgICAgICAgc3ViX21hdGNoPEJpZGlyZWN0aW9uYWxJdGVyYXRvcj4sCi0gICAgICAgICB0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxCaWRpcmVjdGlvbmFsSXRlcmF0b3I+OjpkaWZmZXJlbmNlX3R5cGUsCi0gICAgICAgICBjb25zdCBzdWJfbWF0Y2g8QmlkaXJlY3Rpb25hbEl0ZXJhdG9yPiosCi0gICAgICAgICBjb25zdCBzdWJfbWF0Y2g8QmlkaXJlY3Rpb25hbEl0ZXJhdG9yPiYgPiAgICAgICAgIAotI2VuZGlmCi17Ci1wcml2YXRlOgotICAgdHlwZWRlZiB1MzJyZWdleF90b2tlbl9pdGVyYXRvcl9pbXBsZW1lbnRhdGlvbjxCaWRpcmVjdGlvbmFsSXRlcmF0b3I+IGltcGw7Ci0gICB0eXBlZGVmIHNoYXJlZF9wdHI8aW1wbD4gcGltcGw7Ci1wdWJsaWM6Ci0gICB0eXBlZGVmICAgICAgICAgIHUzMnJlZ2V4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnZXhfdHlwZTsKLSAgIHR5cGVkZWYgICAgICAgICAgc3ViX21hdGNoPEJpZGlyZWN0aW9uYWxJdGVyYXRvcj4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZV90eXBlOwotICAgdHlwZWRlZiB0eXBlbmFtZSByZV9kZXRhaWw6OnJlZ2V4X2l0ZXJhdG9yX3RyYWl0czxCaWRpcmVjdGlvbmFsSXRlcmF0b3I+OjpkaWZmZXJlbmNlX3R5cGUgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlmZmVyZW5jZV90eXBlOwotICAgdHlwZWRlZiAgICAgICAgICBjb25zdCB2YWx1ZV90eXBlKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50ZXI7Ci0gICB0eXBlZGVmICAgICAgICAgIGNvbnN0IHZhbHVlX3R5cGUmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlOyAKLSAgIHR5cGVkZWYgICAgICAgICAgc3RkOjpmb3J3YXJkX2l0ZXJhdG9yX3RhZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVyYXRvcl9jYXRlZ29yeTsKLSAgIAotICAgdTMycmVnZXhfdG9rZW5faXRlcmF0b3IoKXt9Ci0gICB1MzJyZWdleF90b2tlbl9pdGVyYXRvcihCaWRpcmVjdGlvbmFsSXRlcmF0b3IgYSwgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIGIsIGNvbnN0IHJlZ2V4X3R5cGUmIHJlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdWJtYXRjaCA9IDAsIG1hdGNoX2ZsYWdfdHlwZSBtID0gbWF0Y2hfZGVmYXVsdCkKLSAgICAgICAgICAgICAgICAgICAgICAgIDogcGRhdGEobmV3IGltcGwoJnJlLCBiLCBzdWJtYXRjaCwgbSkpCi0gICB7Ci0gICAgICBpZighcGRhdGEtPmluaXQoYSkpCi0gICAgICAgICBwZGF0YS5yZXNldCgpOwotICAgfQotICAgdTMycmVnZXhfdG9rZW5faXRlcmF0b3IoQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIGEsIEJpZGlyZWN0aW9uYWxJdGVyYXRvciBiLCBjb25zdCByZWdleF90eXBlJiByZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxpbnQ+JiBzdWJtYXRjaGVzLCBtYXRjaF9mbGFnX3R5cGUgbSA9IG1hdGNoX2RlZmF1bHQpCi0gICAgICAgICAgICAgICAgICAgICAgICA6IHBkYXRhKG5ldyBpbXBsKCZyZSwgYiwgc3VibWF0Y2hlcywgbSkpCi0gICB7Ci0gICAgICBpZighcGRhdGEtPmluaXQoYSkpCi0gICAgICAgICBwZGF0YS5yZXNldCgpOwotICAgfQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKQotICAgICAgLy8gY2FuJ3QgcmVsaWFibHkgZ2V0IHRoaXMgdG8gd29yay4uLi4KLSNlbGlmIChORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgPj0gMHg1NjApICYmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1NzApKSlcCi0gICAgICB8fCBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkgXAotICAgICAgfHwgTkROQk9PU1RfV09SS0FST1VORChfX01XRVJLU19fLCBORE5CT09TVF9URVNURURfQVQoMHgzMDAzKSkgXAotICAgICAgfHwgTkROQk9PU1RfV09SS0FST1VORChfX0hQX2FDQywgPCA2MDcwMCkKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgdTMycmVnZXhfdG9rZW5faXRlcmF0b3IoQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIGEsIEJpZGlyZWN0aW9uYWxJdGVyYXRvciBiLCBjb25zdCByZWdleF90eXBlJiByZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFQmIHN1Ym1hdGNoZXMsIG1hdGNoX2ZsYWdfdHlwZSBtID0gbWF0Y2hfZGVmYXVsdCkKLSAgICAgICAgICAgICAgICAgICAgICAgIDogcGRhdGEobmV3IGltcGwoJnJlLCBiLCBzdWJtYXRjaGVzLCBtKSkKLSAgIHsKLSAgICAgIGlmKCFwZGF0YS0+aW5pdChhKSkKLSAgICAgICAgIHBkYXRhLnJlc2V0KCk7Ci0gICB9Ci0jZWxzZQotICAgdGVtcGxhdGUgPHN0ZDo6c2l6ZV90IE4+Ci0gICB1MzJyZWdleF90b2tlbl9pdGVyYXRvcihCaWRpcmVjdGlvbmFsSXRlcmF0b3IgYSwgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIGIsIGNvbnN0IHJlZ2V4X3R5cGUmIHJlLAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50ICgmc3VibWF0Y2hlcylbTl0sIG1hdGNoX2ZsYWdfdHlwZSBtID0gbWF0Y2hfZGVmYXVsdCkKLSAgICAgICAgICAgICAgICAgICAgICAgIDogcGRhdGEobmV3IGltcGwoJnJlLCBiLCBzdWJtYXRjaGVzLCBtKSkKLSAgIHsKLSAgICAgIGlmKCFwZGF0YS0+aW5pdChhKSkKLSAgICAgICAgIHBkYXRhLnJlc2V0KCk7Ci0gICB9Ci0jZW5kaWYKLSAgIHUzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yKGNvbnN0IHUzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yJiB0aGF0KQotICAgICAgOiBwZGF0YSh0aGF0LnBkYXRhKSB7fQotICAgdTMycmVnZXhfdG9rZW5faXRlcmF0b3ImIG9wZXJhdG9yPShjb25zdCB1MzJyZWdleF90b2tlbl9pdGVyYXRvciYgdGhhdCkKLSAgIHsKLSAgICAgIHBkYXRhID0gdGhhdC5wZGF0YTsKLSAgICAgIHJldHVybiAqdGhpczsKLSAgIH0KLSAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCB1MzJyZWdleF90b2tlbl9pdGVyYXRvciYgdGhhdCljb25zdAotICAgeyAKLSAgICAgIGlmKChwZGF0YS5nZXQoKSA9PSAwKSB8fCAodGhhdC5wZGF0YS5nZXQoKSA9PSAwKSkKLSAgICAgICAgIHJldHVybiBwZGF0YS5nZXQoKSA9PSB0aGF0LnBkYXRhLmdldCgpOwotICAgICAgcmV0dXJuIHBkYXRhLT5jb21wYXJlKCoodGhhdC5wZGF0YS5nZXQoKSkpOyAKLSAgIH0KLSAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCB1MzJyZWdleF90b2tlbl9pdGVyYXRvciYgdGhhdCljb25zdAotICAgeyByZXR1cm4gISgqdGhpcyA9PSB0aGF0KTsgfQotICAgY29uc3QgdmFsdWVfdHlwZSYgb3BlcmF0b3IqKCljb25zdAotICAgeyByZXR1cm4gcGRhdGEtPmdldCgpOyB9Ci0gICBjb25zdCB2YWx1ZV90eXBlKiBvcGVyYXRvci0+KCljb25zdAotICAgeyByZXR1cm4gJihwZGF0YS0+Z2V0KCkpOyB9Ci0gICB1MzJyZWdleF90b2tlbl9pdGVyYXRvciYgb3BlcmF0b3IrKygpCi0gICB7Ci0gICAgICBjb3coKTsKLSAgICAgIGlmKDAgPT0gcGRhdGEtPm5leHQoKSkKLSAgICAgIHsKLSAgICAgICAgIHBkYXRhLnJlc2V0KCk7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gKnRoaXM7Ci0gICB9Ci0gICB1MzJyZWdleF90b2tlbl9pdGVyYXRvciBvcGVyYXRvcisrKGludCkKLSAgIHsKLSAgICAgIHUzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yIHJlc3VsdCgqdGhpcyk7Ci0gICAgICArKygqdGhpcyk7Ci0gICAgICByZXR1cm4gcmVzdWx0OwotICAgfQotcHJpdmF0ZToKLQotICAgcGltcGwgcGRhdGE7Ci0KLSAgIHZvaWQgY293KCkKLSAgIHsKLSAgICAgIC8vIGNvcHktb24td3JpdGUKLSAgICAgIGlmKHBkYXRhLmdldCgpICYmICFwZGF0YS51bmlxdWUoKSkKLSAgICAgIHsKLSAgICAgICAgIHBkYXRhLnJlc2V0KG5ldyBpbXBsKCoocGRhdGEuZ2V0KCkpKSk7Ci0gICAgICB9Ci0gICB9Ci19OwotCi10eXBlZGVmIHUzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yPGNvbnN0IGNoYXIqPiB1dGY4cmVnZXhfdG9rZW5faXRlcmF0b3I7Ci10eXBlZGVmIHUzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yPGNvbnN0IFVDaGFyKj4gdXRmMTZyZWdleF90b2tlbl9pdGVyYXRvcjsKLXR5cGVkZWYgdTMycmVnZXhfdG9rZW5faXRlcmF0b3I8Y29uc3QgVUNoYXIzMio+IHV0ZjMycmVnZXhfdG9rZW5faXRlcmF0b3I7Ci0KLS8vIGNvbnN0cnVjdGlvbiBmcm9tIGFuIGludGVncmFsIHN1Yl9tYXRjaCBzdGF0ZV9pZDoKLWlubGluZSB1MzJyZWdleF90b2tlbl9pdGVyYXRvcjxjb25zdCBjaGFyKj4gbWFrZV91MzJyZWdleF90b2tlbl9pdGVyYXRvcihjb25zdCBjaGFyKiBwLCBjb25zdCB1MzJyZWdleCYgZSwgaW50IHN1Ym1hdGNoID0gMCwgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9mbGFnX3R5cGUgbSA9IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiB1MzJyZWdleF90b2tlbl9pdGVyYXRvcjxjb25zdCBjaGFyKj4ocCwgcCtzdGQ6OnN0cmxlbihwKSwgZSwgc3VibWF0Y2gsIG0pOwotfQotI2lmbmRlZiBORE5CT09TVF9OT19XUkVHRVgKLWlubGluZSB1MzJyZWdleF90b2tlbl9pdGVyYXRvcjxjb25zdCB3Y2hhcl90Kj4gbWFrZV91MzJyZWdleF90b2tlbl9pdGVyYXRvcihjb25zdCB3Y2hhcl90KiBwLCBjb25zdCB1MzJyZWdleCYgZSwgaW50IHN1Ym1hdGNoID0gMCwgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9mbGFnX3R5cGUgbSA9IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiB1MzJyZWdleF90b2tlbl9pdGVyYXRvcjxjb25zdCB3Y2hhcl90Kj4ocCwgcCtzdGQ6Ondjc2xlbihwKSwgZSwgc3VibWF0Y2gsIG0pOwotfQotI2VuZGlmCi0jaWYgIWRlZmluZWQoVV9XQ0hBUl9JU19VVEYxNikgJiYgKFVfU0laRU9GX1dDSEFSX1QgIT0gMikKLWlubGluZSB1MzJyZWdleF90b2tlbl9pdGVyYXRvcjxjb25zdCBVQ2hhcio+IG1ha2VfdTMycmVnZXhfdG9rZW5faXRlcmF0b3IoY29uc3QgVUNoYXIqIHAsIGNvbnN0IHUzMnJlZ2V4JiBlLCBpbnQgc3VibWF0Y2ggPSAwLCByZWdleF9jb25zdGFudHM6Om1hdGNoX2ZsYWdfdHlwZSBtID0gcmVnZXhfY29uc3RhbnRzOjptYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHUzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yPGNvbnN0IFVDaGFyKj4ocCwgcCt1X3N0cmxlbihwKSwgZSwgc3VibWF0Y2gsIG0pOwotfQotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIFRyYWl0cywgY2xhc3MgQWxsb2M+Ci1pbmxpbmUgdTMycmVnZXhfdG9rZW5faXRlcmF0b3I8dHlwZW5hbWUgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQsIFRyYWl0cywgQWxsb2M+Ojpjb25zdF9pdGVyYXRvcj4gbWFrZV91MzJyZWdleF90b2tlbl9pdGVyYXRvcihjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVCwgVHJhaXRzLCBBbGxvYz4mIHAsIGNvbnN0IHUzMnJlZ2V4JiBlLCBpbnQgc3VibWF0Y2ggPSAwLCByZWdleF9jb25zdGFudHM6Om1hdGNoX2ZsYWdfdHlwZSBtID0gcmVnZXhfY29uc3RhbnRzOjptYXRjaF9kZWZhdWx0KQotewotICAgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVCwgVHJhaXRzLCBBbGxvYz46OmNvbnN0X2l0ZXJhdG9yIGl0ZXJfdHlwZTsKLSAgIHJldHVybiB1MzJyZWdleF90b2tlbl9pdGVyYXRvcjxpdGVyX3R5cGU+KHAuYmVnaW4oKSwgcC5lbmQoKSwgZSwgc3VibWF0Y2gsIG0pOwotfQotaW5saW5lIHUzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yPGNvbnN0IFVDaGFyKj4gbWFrZV91MzJyZWdleF90b2tlbl9pdGVyYXRvcihjb25zdCBVX05BTUVTUEFDRV9RVUFMSUZJRVIgVW5pY29kZVN0cmluZyYgcywgY29uc3QgdTMycmVnZXgmIGUsIGludCBzdWJtYXRjaCA9IDAsIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZmxhZ190eXBlIG0gPSByZWdleF9jb25zdGFudHM6Om1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gdTMycmVnZXhfdG9rZW5faXRlcmF0b3I8Y29uc3QgVUNoYXIqPihzLmdldEJ1ZmZlcigpLCBzLmdldEJ1ZmZlcigpICsgcy5sZW5ndGgoKSwgZSwgc3VibWF0Y2gsIG0pOwotfQotCi0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKQotLy8gY29uc3RydWN0aW9uIGZyb20gYSByZWZlcmVuY2UgdG8gYW4gYXJyYXk6Ci10ZW1wbGF0ZSA8c3RkOjpzaXplX3QgTj4KLWlubGluZSB1MzJyZWdleF90b2tlbl9pdGVyYXRvcjxjb25zdCBjaGFyKj4gbWFrZV91MzJyZWdleF90b2tlbl9pdGVyYXRvcihjb25zdCBjaGFyKiBwLCBjb25zdCB1MzJyZWdleCYgZSwgY29uc3QgaW50ICgmc3VibWF0Y2gpW05dLCByZWdleF9jb25zdGFudHM6Om1hdGNoX2ZsYWdfdHlwZSBtID0gcmVnZXhfY29uc3RhbnRzOjptYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHUzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yPGNvbnN0IGNoYXIqPihwLCBwK3N0ZDo6c3RybGVuKHApLCBlLCBzdWJtYXRjaCwgbSk7Ci19Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1dSRUdFWAotdGVtcGxhdGUgPHN0ZDo6c2l6ZV90IE4+Ci1pbmxpbmUgdTMycmVnZXhfdG9rZW5faXRlcmF0b3I8Y29uc3Qgd2NoYXJfdCo+IG1ha2VfdTMycmVnZXhfdG9rZW5faXRlcmF0b3IoY29uc3Qgd2NoYXJfdCogcCwgY29uc3QgdTMycmVnZXgmIGUsIGNvbnN0IGludCAoJnN1Ym1hdGNoKVtOXSwgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9mbGFnX3R5cGUgbSA9IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiB1MzJyZWdleF90b2tlbl9pdGVyYXRvcjxjb25zdCB3Y2hhcl90Kj4ocCwgcCtzdGQ6Ondjc2xlbihwKSwgZSwgc3VibWF0Y2gsIG0pOwotfQotI2VuZGlmCi0jaWYgIWRlZmluZWQoVV9XQ0hBUl9JU19VVEYxNikgJiYgKFVfU0laRU9GX1dDSEFSX1QgIT0gMikKLXRlbXBsYXRlIDxzdGQ6OnNpemVfdCBOPgotaW5saW5lIHUzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yPGNvbnN0IFVDaGFyKj4gbWFrZV91MzJyZWdleF90b2tlbl9pdGVyYXRvcihjb25zdCBVQ2hhciogcCwgY29uc3QgdTMycmVnZXgmIGUsIGNvbnN0IGludCAoJnN1Ym1hdGNoKVtOXSwgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9mbGFnX3R5cGUgbSA9IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiB1MzJyZWdleF90b2tlbl9pdGVyYXRvcjxjb25zdCBVQ2hhcio+KHAsIHArdV9zdHJsZW4ocCksIGUsIHN1Ym1hdGNoLCBtKTsKLX0KLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyBUcmFpdHMsIGNsYXNzIEFsbG9jLCBzdGQ6OnNpemVfdCBOPgotaW5saW5lIHUzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yPHR5cGVuYW1lIHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJULCBUcmFpdHMsIEFsbG9jPjo6Y29uc3RfaXRlcmF0b3I+IG1ha2VfdTMycmVnZXhfdG9rZW5faXRlcmF0b3IoY29uc3Qgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQsIFRyYWl0cywgQWxsb2M+JiBwLCBjb25zdCB1MzJyZWdleCYgZSwgY29uc3QgaW50ICgmc3VibWF0Y2gpW05dLCByZWdleF9jb25zdGFudHM6Om1hdGNoX2ZsYWdfdHlwZSBtID0gcmVnZXhfY29uc3RhbnRzOjptYXRjaF9kZWZhdWx0KQotewotICAgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVCwgVHJhaXRzLCBBbGxvYz46OmNvbnN0X2l0ZXJhdG9yIGl0ZXJfdHlwZTsKLSAgIHJldHVybiB1MzJyZWdleF90b2tlbl9pdGVyYXRvcjxpdGVyX3R5cGU+KHAuYmVnaW4oKSwgcC5lbmQoKSwgZSwgc3VibWF0Y2gsIG0pOwotfQotdGVtcGxhdGUgPHN0ZDo6c2l6ZV90IE4+Ci1pbmxpbmUgdTMycmVnZXhfdG9rZW5faXRlcmF0b3I8Y29uc3QgVUNoYXIqPiBtYWtlX3UzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yKGNvbnN0IFVfTkFNRVNQQUNFX1FVQUxJRklFUiBVbmljb2RlU3RyaW5nJiBzLCBjb25zdCB1MzJyZWdleCYgZSwgY29uc3QgaW50ICgmc3VibWF0Y2gpW05dLCByZWdleF9jb25zdGFudHM6Om1hdGNoX2ZsYWdfdHlwZSBtID0gcmVnZXhfY29uc3RhbnRzOjptYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHUzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yPGNvbnN0IFVDaGFyKj4ocy5nZXRCdWZmZXIoKSwgcy5nZXRCdWZmZXIoKSArIHMubGVuZ3RoKCksIGUsIHN1Ym1hdGNoLCBtKTsKLX0KLSNlbmRpZiAvLyBORE5CT09TVF9NU1ZDIDwgMTMwMAotCi0vLyBjb25zdHJ1Y3Rpb24gZnJvbSBhIHZlY3RvciBvZiBzdWJfbWF0Y2ggc3RhdGVfaWQnczoKLWlubGluZSB1MzJyZWdleF90b2tlbl9pdGVyYXRvcjxjb25zdCBjaGFyKj4gbWFrZV91MzJyZWdleF90b2tlbl9pdGVyYXRvcihjb25zdCBjaGFyKiBwLCBjb25zdCB1MzJyZWdleCYgZSwgY29uc3Qgc3RkOjp2ZWN0b3I8aW50PiYgc3VibWF0Y2gsIHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZmxhZ190eXBlIG0gPSByZWdleF9jb25zdGFudHM6Om1hdGNoX2RlZmF1bHQpCi17Ci0gICByZXR1cm4gdTMycmVnZXhfdG9rZW5faXRlcmF0b3I8Y29uc3QgY2hhcio+KHAsIHArc3RkOjpzdHJsZW4ocCksIGUsIHN1Ym1hdGNoLCBtKTsKLX0KLSNpZm5kZWYgTkROQk9PU1RfTk9fV1JFR0VYCi1pbmxpbmUgdTMycmVnZXhfdG9rZW5faXRlcmF0b3I8Y29uc3Qgd2NoYXJfdCo+IG1ha2VfdTMycmVnZXhfdG9rZW5faXRlcmF0b3IoY29uc3Qgd2NoYXJfdCogcCwgY29uc3QgdTMycmVnZXgmIGUsIGNvbnN0IHN0ZDo6dmVjdG9yPGludD4mIHN1Ym1hdGNoLCByZWdleF9jb25zdGFudHM6Om1hdGNoX2ZsYWdfdHlwZSBtID0gcmVnZXhfY29uc3RhbnRzOjptYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHUzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yPGNvbnN0IHdjaGFyX3QqPihwLCBwK3N0ZDo6d2NzbGVuKHApLCBlLCBzdWJtYXRjaCwgbSk7Ci19Ci0jZW5kaWYKLSNpZiAhZGVmaW5lZChVX1dDSEFSX0lTX1VURjE2KSAmJiAoVV9TSVpFT0ZfV0NIQVJfVCAhPSAyKQotaW5saW5lIHUzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yPGNvbnN0IFVDaGFyKj4gbWFrZV91MzJyZWdleF90b2tlbl9pdGVyYXRvcihjb25zdCBVQ2hhciogcCwgY29uc3QgdTMycmVnZXgmIGUsIGNvbnN0IHN0ZDo6dmVjdG9yPGludD4mIHN1Ym1hdGNoLCByZWdleF9jb25zdGFudHM6Om1hdGNoX2ZsYWdfdHlwZSBtID0gcmVnZXhfY29uc3RhbnRzOjptYXRjaF9kZWZhdWx0KQotewotICAgcmV0dXJuIHUzMnJlZ2V4X3Rva2VuX2l0ZXJhdG9yPGNvbnN0IFVDaGFyKj4ocCwgcCt1X3N0cmxlbihwKSwgZSwgc3VibWF0Y2gsIG0pOwotfQotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQsIGNsYXNzIFRyYWl0cywgY2xhc3MgQWxsb2M+Ci1pbmxpbmUgdTMycmVnZXhfdG9rZW5faXRlcmF0b3I8dHlwZW5hbWUgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQsIFRyYWl0cywgQWxsb2M+Ojpjb25zdF9pdGVyYXRvcj4gbWFrZV91MzJyZWdleF90b2tlbl9pdGVyYXRvcihjb25zdCBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVCwgVHJhaXRzLCBBbGxvYz4mIHAsIGNvbnN0IHUzMnJlZ2V4JiBlLCBjb25zdCBzdGQ6OnZlY3RvcjxpbnQ+JiBzdWJtYXRjaCwgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9mbGFnX3R5cGUgbSA9IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgc3RkOjpiYXNpY19zdHJpbmc8Y2hhclQsIFRyYWl0cywgQWxsb2M+Ojpjb25zdF9pdGVyYXRvciBpdGVyX3R5cGU7Ci0gICByZXR1cm4gdTMycmVnZXhfdG9rZW5faXRlcmF0b3I8aXRlcl90eXBlPihwLmJlZ2luKCksIHAuZW5kKCksIGUsIHN1Ym1hdGNoLCBtKTsKLX0KLWlubGluZSB1MzJyZWdleF90b2tlbl9pdGVyYXRvcjxjb25zdCBVQ2hhcio+IG1ha2VfdTMycmVnZXhfdG9rZW5faXRlcmF0b3IoY29uc3QgVV9OQU1FU1BBQ0VfUVVBTElGSUVSIFVuaWNvZGVTdHJpbmcmIHMsIGNvbnN0IHUzMnJlZ2V4JiBlLCBjb25zdCBzdGQ6OnZlY3RvcjxpbnQ+JiBzdWJtYXRjaCwgcmVnZXhfY29uc3RhbnRzOjptYXRjaF9mbGFnX3R5cGUgbSA9IHJlZ2V4X2NvbnN0YW50czo6bWF0Y2hfZGVmYXVsdCkKLXsKLSAgIHJldHVybiB1MzJyZWdleF90b2tlbl9pdGVyYXRvcjxjb25zdCBVQ2hhcio+KHMuZ2V0QnVmZmVyKCksIHMuZ2V0QnVmZmVyKCkgKyBzLmxlbmd0aCgpLCBlLCBzdWJtYXRjaCwgbSk7Ci19Ci0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsID4gMTMwMCkKLSMgIHByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19BQklfSEVBREVSUwotIyAgaW5jbHVkZSBORE5CT09TVF9BQklfU1VGRklYCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1JFR0VYX1Y0X1JFR0VYX1RPS0VOX0lURVJBVE9SX0hQUAotCi0KLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3czMl9yZWdleF90cmFpdHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9yZWdleC92NC93MzJfcmVnZXhfdHJhaXRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGFmYjE4OS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4L3Y0L3czMl9yZWdleF90cmFpdHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzQxICswLDAgQEAKLS8qCi0gKgotICogQ29weXJpZ2h0IChjKSAyMDA0Ci0gKiBKb2huIE1hZGRvY2sKLSAqCi0gKiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLSAqIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotICogTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICoKLSAqLwotIAotIC8qCi0gICogICBMT0NBVElPTjogICAgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uLgotICAqICAgRklMRSAgICAgICAgIHczMl9yZWdleF90cmFpdHMuaHBwCi0gICogICBWRVJTSU9OICAgICAgc2VlIDxuZG5ib29zdC92ZXJzaW9uLmhwcD4KLSAgKiAgIERFU0NSSVBUSU9OOiBEZWNsYXJlcyByZWd1bGFyIGV4cHJlc3Npb24gdHJhaXRzIGNsYXNzIHczMl9yZWdleF90cmFpdHMuCi0gICovCi0KLSNpZm5kZWYgTkROQk9PU1RfVzMyX1JFR0VYX1RSQUlUU19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVzMyX1JFR0VYX1RSQUlUU19IUFBfSU5DTFVERUQKLQotI2lmbmRlZiBORE5CT09TVF9SRV9QQVRfRVhDRVBUX0hQUAotI2luY2x1ZGUgPG5kbmJvb3N0L3JlZ2V4L3BhdHRlcm5fZXhjZXB0LmhwcD4KLSNlbmRpZgotI2lmbmRlZiBORE5CT09TVF9SRUdFWF9UUkFJVFNfREVGQVVMVFNfSFBQX0lOQ0xVREVECi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvdjQvcmVnZXhfdHJhaXRzX2RlZmF1bHRzLmhwcD4KLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX0hBU19USFJFQURTCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvcGVuZGluZy9zdGF0aWNfbXV0ZXguaHBwPgotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX1BSSU1BUllfVFJBTlNGT1JNCi0jaW5jbHVkZSA8bmRuYm9vc3QvcmVnZXgvdjQvcHJpbWFyeV90cmFuc2Zvcm0uaHBwPgotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX09CSkVDVF9DQUNIRV9IUFAKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC9wZW5kaW5nL29iamVjdF9jYWNoZS5ocHA+Ci0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMDMpCi0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9IQVNfQUJJX0hFQURFUlMKLSMgIGluY2x1ZGUgTkROQk9PU1RfQUJJX1BSRUZJWAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0Nzg2KQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDgwMCkKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3R7IAotCi0vLwotLy8gZm9yd2FyZCBkZWNsYXJhdGlvbiBpcyBuZWVkZWQgYnkgc29tZSBjb21waWxlcnM6Ci0vLwotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotY2xhc3MgdzMyX3JlZ2V4X3RyYWl0czsKLSAgIAotbmFtZXNwYWNlIHJlX2RldGFpbHsKLQotLy8KLS8vIHN0YXJ0IGJ5IHR5cGVkZWZmaW5nIHRoZSB0eXBlcyB3ZSdsbCBuZWVkOgotLy8KLXR5cGVkZWYgOjpuZG5ib29zdDo6dWludDMyX3QgbGNpZF90eXBlOyAgIC8vIHBsYWNlaG9sZGVyIGZvciBMQ0lELgotdHlwZWRlZiA6Om5kbmJvb3N0OjpzaGFyZWRfcHRyPHZvaWQ+IGNhdF90eXBlOyAvLyBwbGFjZWhvbGRlciBmb3IgZGxsIEhBTkRMRS4KLQotLy8KLS8vIHRoZW4gYWRkIHdyYXBwZXJzIGFyb3VuZCB0aGUgYWN0dWFsIFdpbjMyIEFQSSdzIChpZSBpbXBsZW1lbnRhdGlvbiBoaWRpbmcpOgotLy8KLU5ETkJPT1NUX1JFR0VYX0RFQ0wgbGNpZF90eXBlIE5ETkJPT1NUX1JFR0VYX0NBTEwgdzMyX2dldF9kZWZhdWx0X2xvY2FsZSgpOwotTkROQk9PU1RfUkVHRVhfREVDTCBib29sIE5ETkJPT1NUX1JFR0VYX0NBTEwgdzMyX2lzX2xvd2VyKGNoYXIsIGxjaWRfdHlwZSk7Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1dSRUdFWAotTkROQk9PU1RfUkVHRVhfREVDTCBib29sIE5ETkJPT1NUX1JFR0VYX0NBTEwgdzMyX2lzX2xvd2VyKHdjaGFyX3QsIGxjaWRfdHlwZSk7Ci0jaWZkZWYgTkROQk9PU1RfUkVHRVhfSEFTX09USEVSX1dDSEFSX1QKLU5ETkJPT1NUX1JFR0VYX0RFQ0wgYm9vbCBORE5CT09TVF9SRUdFWF9DQUxMIHczMl9pc19sb3dlcih1bnNpZ25lZCBzaG9ydCBjYSwgbGNpZF90eXBlIHN0YXRlX2lkKTsKLSNlbmRpZgotI2VuZGlmCi1ORE5CT09TVF9SRUdFWF9ERUNMIGJvb2wgTkROQk9PU1RfUkVHRVhfQ0FMTCB3MzJfaXNfdXBwZXIoY2hhciwgbGNpZF90eXBlKTsKLSNpZm5kZWYgTkROQk9PU1RfTk9fV1JFR0VYCi1ORE5CT09TVF9SRUdFWF9ERUNMIGJvb2wgTkROQk9PU1RfUkVHRVhfQ0FMTCB3MzJfaXNfdXBwZXIod2NoYXJfdCwgbGNpZF90eXBlKTsKLSNpZmRlZiBORE5CT09TVF9SRUdFWF9IQVNfT1RIRVJfV0NIQVJfVAotTkROQk9PU1RfUkVHRVhfREVDTCBib29sIE5ETkJPT1NUX1JFR0VYX0NBTEwgdzMyX2lzX3VwcGVyKHVuc2lnbmVkIHNob3J0IGNhLCBsY2lkX3R5cGUgc3RhdGVfaWQpOwotI2VuZGlmCi0jZW5kaWYKLU5ETkJPT1NUX1JFR0VYX0RFQ0wgY2F0X3R5cGUgTkROQk9PU1RfUkVHRVhfQ0FMTCB3MzJfY2F0X29wZW4oY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUpOwotTkROQk9PU1RfUkVHRVhfREVDTCBzdGQ6OnN0cmluZyBORE5CT09TVF9SRUdFWF9DQUxMIHczMl9jYXRfZ2V0KGNvbnN0IGNhdF90eXBlJiBjYXQsIGxjaWRfdHlwZSBzdGF0ZV9pZCwgaW50IGksIGNvbnN0IHN0ZDo6c3RyaW5nJiBkZWYpOwotI2lmbmRlZiBORE5CT09TVF9OT19XUkVHRVgKLU5ETkJPT1NUX1JFR0VYX0RFQ0wgc3RkOjp3c3RyaW5nIE5ETkJPT1NUX1JFR0VYX0NBTEwgdzMyX2NhdF9nZXQoY29uc3QgY2F0X3R5cGUmIGNhdCwgbGNpZF90eXBlIHN0YXRlX2lkLCBpbnQgaSwgY29uc3Qgc3RkOjp3c3RyaW5nJiBkZWYpOwotI2lmZGVmIE5ETkJPT1NUX1JFR0VYX0hBU19PVEhFUl9XQ0hBUl9UCi1ORE5CT09TVF9SRUdFWF9ERUNMIHN0ZDo6YmFzaWNfc3RyaW5nPHVuc2lnbmVkIHNob3J0PiBORE5CT09TVF9SRUdFWF9DQUxMIHczMl9jYXRfZ2V0KGNvbnN0IGNhdF90eXBlJiBjYXQsIGxjaWRfdHlwZSwgaW50IGksIGNvbnN0IHN0ZDo6YmFzaWNfc3RyaW5nPHVuc2lnbmVkIHNob3J0PiYgZGVmKTsKLSNlbmRpZgotI2VuZGlmCi1ORE5CT09TVF9SRUdFWF9ERUNMIHN0ZDo6c3RyaW5nIE5ETkJPT1NUX1JFR0VYX0NBTEwgdzMyX3RyYW5zZm9ybShsY2lkX3R5cGUgc3RhdGVfaWQsIGNvbnN0IGNoYXIqIHAxLCBjb25zdCBjaGFyKiBwMik7Ci0jaWZuZGVmIE5ETkJPT1NUX05PX1dSRUdFWAotTkROQk9PU1RfUkVHRVhfREVDTCBzdGQ6OndzdHJpbmcgTkROQk9PU1RfUkVHRVhfQ0FMTCB3MzJfdHJhbnNmb3JtKGxjaWRfdHlwZSBzdGF0ZV9pZCwgY29uc3Qgd2NoYXJfdCogcDEsIGNvbnN0IHdjaGFyX3QqIHAyKTsKLSNpZmRlZiBORE5CT09TVF9SRUdFWF9IQVNfT1RIRVJfV0NIQVJfVAotTkROQk9PU1RfUkVHRVhfREVDTCBzdGQ6OmJhc2ljX3N0cmluZzx1bnNpZ25lZCBzaG9ydD4gTkROQk9PU1RfUkVHRVhfQ0FMTCB3MzJfdHJhbnNmb3JtKGxjaWRfdHlwZSBzdGF0ZV9pZCwgY29uc3QgdW5zaWduZWQgc2hvcnQqIHAxLCBjb25zdCB1bnNpZ25lZCBzaG9ydCogcDIpOwotI2VuZGlmCi0jZW5kaWYKLU5ETkJPT1NUX1JFR0VYX0RFQ0wgY2hhciBORE5CT09TVF9SRUdFWF9DQUxMIHczMl90b2xvd2VyKGNoYXIgYywgbGNpZF90eXBlKTsKLSNpZm5kZWYgTkROQk9PU1RfTk9fV1JFR0VYCi1ORE5CT09TVF9SRUdFWF9ERUNMIHdjaGFyX3QgTkROQk9PU1RfUkVHRVhfQ0FMTCB3MzJfdG9sb3dlcih3Y2hhcl90IGMsIGxjaWRfdHlwZSk7Ci0jaWZkZWYgTkROQk9PU1RfUkVHRVhfSEFTX09USEVSX1dDSEFSX1QKLU5ETkJPT1NUX1JFR0VYX0RFQ0wgdW5zaWduZWQgc2hvcnQgTkROQk9PU1RfUkVHRVhfQ0FMTCB3MzJfdG9sb3dlcih1bnNpZ25lZCBzaG9ydCBjLCBsY2lkX3R5cGUgc3RhdGVfaWQpOwotI2VuZGlmCi0jZW5kaWYKLU5ETkJPT1NUX1JFR0VYX0RFQ0wgY2hhciBORE5CT09TVF9SRUdFWF9DQUxMIHczMl90b3VwcGVyKGNoYXIgYywgbGNpZF90eXBlKTsKLSNpZm5kZWYgTkROQk9PU1RfTk9fV1JFR0VYCi1ORE5CT09TVF9SRUdFWF9ERUNMIHdjaGFyX3QgTkROQk9PU1RfUkVHRVhfQ0FMTCB3MzJfdG91cHBlcih3Y2hhcl90IGMsIGxjaWRfdHlwZSk7Ci0jZW5kaWYKLU5ETkJPT1NUX1JFR0VYX0RFQ0wgYm9vbCBORE5CT09TVF9SRUdFWF9DQUxMIHczMl9pcyhsY2lkX3R5cGUsIG5kbmJvb3N0Ojp1aW50MzJfdCBtYXNrLCBjaGFyIGMpOwotI2lmbmRlZiBORE5CT09TVF9OT19XUkVHRVgKLU5ETkJPT1NUX1JFR0VYX0RFQ0wgYm9vbCBORE5CT09TVF9SRUdFWF9DQUxMIHczMl9pcyhsY2lkX3R5cGUsIG5kbmJvb3N0Ojp1aW50MzJfdCBtYXNrLCB3Y2hhcl90IGMpOwotI2lmZGVmIE5ETkJPT1NUX1JFR0VYX0hBU19PVEhFUl9XQ0hBUl9UCi1ORE5CT09TVF9SRUdFWF9ERUNMIGJvb2wgTkROQk9PU1RfUkVHRVhfQ0FMTCB3MzJfaXMobGNpZF90eXBlIHN0YXRlX2lkLCBuZG5ib29zdDo6dWludDMyX3QgbSwgdW5zaWduZWQgc2hvcnQgYyk7Ci0jZW5kaWYKLSNlbmRpZgotLy8KLS8vIGNsYXNzIHczMl9yZWdleF90cmFpdHNfYmFzZToKLS8vIGFjdHMgYXMgYSBjb250YWluZXIgZm9yIGxvY2FsZSBhbmQgdGhlIGZhY2V0cyB3ZSBhcmUgdXNpbmcuCi0vLwotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotc3RydWN0IHczMl9yZWdleF90cmFpdHNfYmFzZQotewotICAgdzMyX3JlZ2V4X3RyYWl0c19iYXNlKGxjaWRfdHlwZSBsKQotICAgeyBpbWJ1ZShsKTsgfQotICAgbGNpZF90eXBlIGltYnVlKGxjaWRfdHlwZSBsKTsKLQotICAgbGNpZF90eXBlIG1fbG9jYWxlOwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotaW5saW5lIGxjaWRfdHlwZSB3MzJfcmVnZXhfdHJhaXRzX2Jhc2U8Y2hhclQ+OjppbWJ1ZShsY2lkX3R5cGUgbCkKLXsKLSAgIGxjaWRfdHlwZSByZXN1bHQobV9sb2NhbGUpOwotICAgbV9sb2NhbGUgPSBsOwotICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLy8KLS8vIGNsYXNzIHczMl9yZWdleF90cmFpdHNfY2hhcl9sYXllcjoKLS8vIGltcGxlbWVudHMgbWV0aG9kcyB0aGF0IHJlcXVpcmUgc3BlY2lhbGlzYXRpb24gZm9yIG5hcnJvdyBjaGFyYWN0ZXJzOgotLy8KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLWNsYXNzIHczMl9yZWdleF90cmFpdHNfY2hhcl9sYXllciA6IHB1YmxpYyB3MzJfcmVnZXhfdHJhaXRzX2Jhc2U8Y2hhclQ+Ci17Ci0gICB0eXBlZGVmIHN0ZDo6YmFzaWNfc3RyaW5nPGNoYXJUPiBzdHJpbmdfdHlwZTsKLSAgIHR5cGVkZWYgc3RkOjptYXA8Y2hhclQsIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X3R5cGU+IG1hcF90eXBlOwotICAgdHlwZWRlZiB0eXBlbmFtZSBtYXBfdHlwZTo6Y29uc3RfaXRlcmF0b3IgbWFwX2l0ZXJhdG9yX3R5cGU7Ci1wdWJsaWM6Ci0gICB3MzJfcmVnZXhfdHJhaXRzX2NoYXJfbGF5ZXIoY29uc3QgbGNpZF90eXBlIGwpOwotCi0gICByZWdleF9jb25zdGFudHM6OnN5bnRheF90eXBlIHN5bnRheF90eXBlKGNoYXJUIGMpY29uc3QKLSAgIHsKLSAgICAgIG1hcF9pdGVyYXRvcl90eXBlIGkgPSBtX2NoYXJfbWFwLmZpbmQoYyk7Ci0gICAgICByZXR1cm4gKChpID09IG1fY2hhcl9tYXAuZW5kKCkpID8gMCA6IGktPnNlY29uZCk7Ci0gICB9Ci0gICByZWdleF9jb25zdGFudHM6OmVzY2FwZV9zeW50YXhfdHlwZSBlc2NhcGVfc3ludGF4X3R5cGUoY2hhclQgYykgY29uc3QKLSAgIHsKLSAgICAgIG1hcF9pdGVyYXRvcl90eXBlIGkgPSBtX2NoYXJfbWFwLmZpbmQoYyk7Ci0gICAgICBpZihpID09IG1fY2hhcl9tYXAuZW5kKCkpCi0gICAgICB7Ci0gICAgICAgICBpZig6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OnczMl9pc19sb3dlcihjLCB0aGlzLT5tX2xvY2FsZSkpIHJldHVybiByZWdleF9jb25zdGFudHM6OmVzY2FwZV90eXBlX2NsYXNzOwotICAgICAgICAgaWYoOjpuZG5ib29zdDo6cmVfZGV0YWlsOjp3MzJfaXNfdXBwZXIoYywgdGhpcy0+bV9sb2NhbGUpKSByZXR1cm4gcmVnZXhfY29uc3RhbnRzOjplc2NhcGVfdHlwZV9ub3RfY2xhc3M7Ci0gICAgICAgICByZXR1cm4gMDsKLSAgICAgIH0KLSAgICAgIHJldHVybiBpLT5zZWNvbmQ7Ci0gICB9Ci0gICBjaGFyVCB0b2xvd2VyKGNoYXJUIGMpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OnczMl90b2xvd2VyKGMsIHRoaXMtPm1fbG9jYWxlKTsKLSAgIH0KLSAgIGJvb2wgaXNjdHlwZShuZG5ib29zdDo6dWludDMyX3QgbWFzaywgY2hhclQgYyljb25zdAotICAgewotICAgICAgcmV0dXJuIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6dzMyX2lzKHRoaXMtPm1fbG9jYWxlLCBtYXNrLCBjKTsKLSAgIH0KLQotcHJpdmF0ZToKLSAgIHN0cmluZ190eXBlIGdldF9kZWZhdWx0X21lc3NhZ2UocmVnZXhfY29uc3RhbnRzOjpzeW50YXhfdHlwZSk7Ci0gICAvLyBUT0RPOiB1c2UgYSBoYXNoIHRhYmxlIHdoZW4gYXZhaWxhYmxlIQotICAgbWFwX3R5cGUgbV9jaGFyX21hcDsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLXczMl9yZWdleF90cmFpdHNfY2hhcl9sYXllcjxjaGFyVD46OnczMl9yZWdleF90cmFpdHNfY2hhcl9sYXllcig6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmxjaWRfdHlwZSBsKSAKLSAgIDogdzMyX3JlZ2V4X3RyYWl0c19iYXNlPGNoYXJUPihsKQotewotICAgLy8gd2UgbmVlZCB0byBzdGFydCBieSBpbml0aWFsaXNpbmcgb3VyIHN5bnRheCBtYXAgc28gd2Uga25vdyB3aGljaAotICAgLy8gY2hhcmFjdGVyIGlzIHVzZWQgZm9yIHdoaWNoIHB1cnBvc2U6Ci0gICBjYXRfdHlwZSBjYXQ7Ci0gICBzdGQ6OnN0cmluZyBjYXRfbmFtZSh3MzJfcmVnZXhfdHJhaXRzPGNoYXJUPjo6Z2V0X2NhdGFsb2dfbmFtZSgpKTsKLSAgIGlmKGNhdF9uYW1lLnNpemUoKSkKLSAgIHsKLSAgICAgIGNhdCA9IDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6dzMyX2NhdF9vcGVuKGNhdF9uYW1lKTsKLSAgICAgIGlmKCFjYXQpCi0gICAgICB7Ci0gICAgICAgICBzdGQ6OnN0cmluZyBtKCJVbmFibGUgdG8gb3BlbiBtZXNzYWdlIGNhdGFsb2c6ICIpOwotICAgICAgICAgc3RkOjpydW50aW1lX2Vycm9yIGVycihtICsgY2F0X25hbWUpOwotICAgICAgICAgbmRuYm9vc3Q6OnJlX2RldGFpbDo6cmFpc2VfcnVudGltZV9lcnJvcihlcnIpOwotICAgICAgfQotICAgfQotICAgLy8KLSAgIC8vIGlmIHdlIGhhdmUgYSB2YWxpZCBjYXRhbG9nIHRoZW4gbG9hZCBvdXIgbWVzc2FnZXM6Ci0gICAvLwotICAgaWYoY2F0KQotICAgewotICAgICAgZm9yKHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X3R5cGUgaSA9IDE7IGkgPCByZWdleF9jb25zdGFudHM6OnN5bnRheF9tYXg7ICsraSkKLSAgICAgIHsKLSAgICAgICAgIHN0cmluZ190eXBlIG1zcyA9IDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6dzMyX2NhdF9nZXQoY2F0LCB0aGlzLT5tX2xvY2FsZSwgaSwgZ2V0X2RlZmF1bHRfbWVzc2FnZShpKSk7Ci0gICAgICAgICBmb3IodHlwZW5hbWUgc3RyaW5nX3R5cGU6OnNpemVfdHlwZSBqID0gMDsgaiA8IG1zcy5zaXplKCk7ICsraikKLSAgICAgICAgIHsKLSAgICAgICAgICAgIHRoaXMtPm1fY2hhcl9tYXBbbXNzW2pdXSA9IGk7Ci0gICAgICAgICB9Ci0gICAgICB9Ci0gICB9Ci0gICBlbHNlCi0gICB7Ci0gICAgICBmb3IocmVnZXhfY29uc3RhbnRzOjpzeW50YXhfdHlwZSBpID0gMTsgaSA8IHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X21heDsgKytpKQotICAgICAgewotICAgICAgICAgY29uc3QgY2hhciogcHRyID0gZ2V0X2RlZmF1bHRfc3ludGF4KGkpOwotICAgICAgICAgd2hpbGUocHRyICYmICpwdHIpCi0gICAgICAgICB7Ci0gICAgICAgICAgICB0aGlzLT5tX2NoYXJfbWFwW3N0YXRpY19jYXN0PGNoYXJUPigqcHRyKV0gPSBpOwotICAgICAgICAgICAgKytwdHI7Ci0gICAgICAgICB9Ci0gICAgICB9Ci0gICB9Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLXR5cGVuYW1lIHczMl9yZWdleF90cmFpdHNfY2hhcl9sYXllcjxjaGFyVD46OnN0cmluZ190eXBlIAotICAgdzMyX3JlZ2V4X3RyYWl0c19jaGFyX2xheWVyPGNoYXJUPjo6Z2V0X2RlZmF1bHRfbWVzc2FnZShyZWdleF9jb25zdGFudHM6OnN5bnRheF90eXBlIGkpCi17Ci0gICBjb25zdCBjaGFyKiBwdHIgPSBnZXRfZGVmYXVsdF9zeW50YXgoaSk7Ci0gICBzdHJpbmdfdHlwZSByZXN1bHQ7Ci0gICB3aGlsZShwdHIgJiYgKnB0cikKLSAgIHsKLSAgICAgIHJlc3VsdC5hcHBlbmQoMSwgc3RhdGljX2Nhc3Q8Y2hhclQ+KCpwdHIpKTsKLSAgICAgICsrcHRyOwotICAgfQotICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLy8KLS8vIHNwZWNpYWxpc2VkIHZlcnNpb24gZm9yIG5hcnJvdyBjaGFyYWN0ZXJzOgotLy8KLXRlbXBsYXRlIDw+Ci1jbGFzcyBORE5CT09TVF9SRUdFWF9ERUNMIHczMl9yZWdleF90cmFpdHNfY2hhcl9sYXllcjxjaGFyPiA6IHB1YmxpYyB3MzJfcmVnZXhfdHJhaXRzX2Jhc2U8Y2hhcj4KLXsKLSAgIHR5cGVkZWYgc3RkOjpzdHJpbmcgc3RyaW5nX3R5cGU7Ci1wdWJsaWM6Ci0gICB3MzJfcmVnZXhfdHJhaXRzX2NoYXJfbGF5ZXIoOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpsY2lkX3R5cGUgbCkKLSAgIDogdzMyX3JlZ2V4X3RyYWl0c19iYXNlPGNoYXI+KGwpCi0gICB7Ci0gICAgICBpbml0KCk7Ci0gICB9Ci0KLSAgIHJlZ2V4X2NvbnN0YW50czo6c3ludGF4X3R5cGUgc3ludGF4X3R5cGUoY2hhciBjKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gbV9jaGFyX21hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjKV07Ci0gICB9Ci0gICByZWdleF9jb25zdGFudHM6OmVzY2FwZV9zeW50YXhfdHlwZSBlc2NhcGVfc3ludGF4X3R5cGUoY2hhciBjKSBjb25zdAotICAgewotICAgICAgcmV0dXJuIG1fY2hhcl9tYXBbc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oYyldOwotICAgfQotICAgY2hhciB0b2xvd2VyKGNoYXIgYyljb25zdAotICAgewotICAgICAgcmV0dXJuIG1fbG93ZXJfbWFwW3N0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KGMpXTsKLSAgIH0KLSAgIGJvb2wgaXNjdHlwZShuZG5ib29zdDo6dWludDMyX3QgbWFzaywgY2hhciBjKWNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gbV90eXBlX21hcFtzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihjKV0gJiBtYXNrOwotICAgfQotCi1wcml2YXRlOgotICAgcmVnZXhfY29uc3RhbnRzOjpzeW50YXhfdHlwZSBtX2NoYXJfbWFwWzF1IDw8IENIQVJfQklUXTsKLSAgIGNoYXIgbV9sb3dlcl9tYXBbMXUgPDwgQ0hBUl9CSVRdOwotICAgbmRuYm9vc3Q6OnVpbnQxNl90IG1fdHlwZV9tYXBbMXUgPDwgQ0hBUl9CSVRdOwotICAgdm9pZCBpbml0KCk7Ci19OwotCi0vLwotLy8gY2xhc3MgdzMyX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjoKLS8vIHByb3ZpZGVzIHBpbXBsIGltcGxlbWVudGF0aW9uIGZvciB3MzJfcmVnZXhfdHJhaXRzLgotLy8KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLWNsYXNzIHczMl9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb24gOiBwdWJsaWMgdzMyX3JlZ2V4X3RyYWl0c19jaGFyX2xheWVyPGNoYXJUPgotewotcHVibGljOgotICAgdHlwZWRlZiB0eXBlbmFtZSB3MzJfcmVnZXhfdHJhaXRzPGNoYXJUPjo6Y2hhcl9jbGFzc190eXBlIGNoYXJfY2xhc3NfdHlwZTsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChjaGFyX2NsYXNzX3R5cGUsIG1hc2tfd29yZCA9IDB4MDQwMCk7IC8vIG11c3QgYmUgQzFfREVGSU5FRCA8PCAxCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoY2hhcl9jbGFzc190eXBlLCBtYXNrX3VuaWNvZGUgPSAweDA4MDApOyAvLyBtdXN0IGJlIEMxX0RFRklORUQgPDwgMgotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGNoYXJfY2xhc3NfdHlwZSwgbWFza19ob3Jpem9udGFsID0gMHgxMDAwKTsgLy8gbXVzdCBiZSBDMV9ERUZJTkVEIDw8IDMKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChjaGFyX2NsYXNzX3R5cGUsIG1hc2tfdmVydGljYWwgPSAweDIwMDApOyAvLyBtdXN0IGJlIEMxX0RFRklORUQgPDwgNAotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGNoYXJfY2xhc3NfdHlwZSwgbWFza19iYXNlID0gMHgzZmYpOyAgLy8gYWxsIHRoZSBtYXNrcyB1c2VkIGJ5IHRoZSBDVF9DVFlQRTEgZ3JvdXAKLQotICAgdHlwZWRlZiBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyVD4gc3RyaW5nX3R5cGU7Ci0gICB0eXBlZGVmIGNoYXJUIGNoYXJfdHlwZTsKLSAgIHczMl9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb24oOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpsY2lkX3R5cGUgbCk7Ci0gICBzdGQ6OnN0cmluZyBlcnJvcl9zdHJpbmcocmVnZXhfY29uc3RhbnRzOjplcnJvcl90eXBlIG4pIGNvbnN0Ci0gICB7Ci0gICAgICBpZighbV9lcnJvcl9zdHJpbmdzLmVtcHR5KCkpCi0gICAgICB7Ci0gICAgICAgICBzdGQ6Om1hcDxpbnQsIHN0ZDo6c3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgcCA9IG1fZXJyb3Jfc3RyaW5ncy5maW5kKG4pOwotICAgICAgICAgcmV0dXJuIChwID09IG1fZXJyb3Jfc3RyaW5ncy5lbmQoKSkgPyBzdGQ6OnN0cmluZyhnZXRfZGVmYXVsdF9lcnJvcl9zdHJpbmcobikpIDogcC0+c2Vjb25kOwotICAgICAgfQotICAgICAgcmV0dXJuIGdldF9kZWZhdWx0X2Vycm9yX3N0cmluZyhuKTsKLSAgIH0KLSAgIGNoYXJfY2xhc3NfdHlwZSBsb29rdXBfY2xhc3NuYW1lKGNvbnN0IGNoYXJUKiBwMSwgY29uc3QgY2hhclQqIHAyKSBjb25zdAotICAgewotICAgICAgY2hhcl9jbGFzc190eXBlIHJlc3VsdCA9IGxvb2t1cF9jbGFzc25hbWVfaW1wKHAxLCBwMik7Ci0gICAgICBpZihyZXN1bHQgPT0gMCkKLSAgICAgIHsKLSAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc3RyaW5nX3R5cGU6OnNpemVfdHlwZSBzaXplX3R5cGU7Ci0gICAgICAgICBzdHJpbmdfdHlwZSB0ZW1wKHAxLCBwMik7Ci0gICAgICAgICBmb3Ioc2l6ZV90eXBlIGkgPSAwOyBpIDwgdGVtcC5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIHRlbXBbaV0gPSB0aGlzLT50b2xvd2VyKHRlbXBbaV0pOwotICAgICAgICAgcmVzdWx0ID0gbG9va3VwX2NsYXNzbmFtZV9pbXAoJip0ZW1wLmJlZ2luKCksICYqdGVtcC5iZWdpbigpICsgdGVtcC5zaXplKCkpOwotICAgICAgfQotICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgIH0KLSAgIHN0cmluZ190eXBlIGxvb2t1cF9jb2xsYXRlbmFtZShjb25zdCBjaGFyVCogcDEsIGNvbnN0IGNoYXJUKiBwMikgY29uc3Q7Ci0gICBzdHJpbmdfdHlwZSB0cmFuc2Zvcm1fcHJpbWFyeShjb25zdCBjaGFyVCogcDEsIGNvbnN0IGNoYXJUKiBwMikgY29uc3Q7Ci0gICBzdHJpbmdfdHlwZSB0cmFuc2Zvcm0oY29uc3QgY2hhclQqIHAxLCBjb25zdCBjaGFyVCogcDIpIGNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gOjpuZG5ib29zdDo6cmVfZGV0YWlsOjp3MzJfdHJhbnNmb3JtKHRoaXMtPm1fbG9jYWxlLCBwMSwgcDIpOwotICAgfQotcHJpdmF0ZToKLSAgIHN0ZDo6bWFwPGludCwgc3RkOjpzdHJpbmc+ICAgICBtX2Vycm9yX3N0cmluZ3M7ICAgLy8gZXJyb3IgbWVzc2FnZXMgaW5kZXhlZCBieSBudW1iZXJpYyBJRAotICAgc3RkOjptYXA8c3RyaW5nX3R5cGUsIGNoYXJfY2xhc3NfdHlwZT4gIG1fY3VzdG9tX2NsYXNzX25hbWVzOyAvLyBjaGFyYWN0ZXIgY2xhc3MgbmFtZXMKLSAgIHN0ZDo6bWFwPHN0cmluZ190eXBlLCBzdHJpbmdfdHlwZT4gICAgICBtX2N1c3RvbV9jb2xsYXRlX25hbWVzOyAvLyBjb2xsYXRpbmcgZWxlbWVudCBuYW1lcwotICAgdW5zaWduZWQgICAgICAgICAgICAgICAgICAgICAgIG1fY29sbGF0ZV90eXBlOyAgICAvLyB0aGUgZm9ybSBvZiB0aGUgY29sbGF0aW9uIHN0cmluZwotICAgY2hhclQgICAgICAgICAgICAgICAgICAgICAgICAgIG1fY29sbGF0ZV9kZWxpbTsgICAvLyB0aGUgY29sbGF0aW9uIGdyb3VwIGRlbGltaXRlcgotICAgLy8KLSAgIC8vIGhlbHBlcnM6Ci0gICAvLwotICAgY2hhcl9jbGFzc190eXBlIGxvb2t1cF9jbGFzc25hbWVfaW1wKGNvbnN0IGNoYXJUKiBwMSwgY29uc3QgY2hhclQqIHAyKSBjb25zdDsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLXR5cGVuYW1lIHczMl9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+OjpzdHJpbmdfdHlwZSAKLSAgIHczMl9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+Ojp0cmFuc2Zvcm1fcHJpbWFyeShjb25zdCBjaGFyVCogcDEsIGNvbnN0IGNoYXJUKiBwMikgY29uc3QKLXsKLSAgIHN0cmluZ190eXBlIHJlc3VsdDsKLSAgIC8vCi0gICAvLyBXaGF0IHdlIGRvIGhlcmUgZGVwZW5kcyB1cG9uIHRoZSBmb3JtYXQgb2YgdGhlIHNvcnQga2V5IHJldHVybmVkIGJ5Ci0gICAvLyBzb3J0IGtleSByZXR1cm5lZCBieSB0aGlzLT50cmFuc2Zvcm06Ci0gICAvLwotICAgc3dpdGNoKG1fY29sbGF0ZV90eXBlKQotICAgewotICAgY2FzZSBzb3J0X0M6Ci0gICBjYXNlIHNvcnRfdW5rbm93bjoKLSAgICAgIC8vIHRoZSBiZXN0IHdlIGNhbiBkbyBpcyB0cmFuc2xhdGUgdG8gbG93ZXIgY2FzZSwgdGhlbiBnZXQgYSByZWd1bGFyIHNvcnQga2V5OgotICAgICAgewotICAgICAgICAgcmVzdWx0LmFzc2lnbihwMSwgcDIpOwotICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzdHJpbmdfdHlwZTo6c2l6ZV90eXBlIHNpemVfdHlwZTsKLSAgICAgICAgIGZvcihzaXplX3R5cGUgaSA9IDA7IGkgPCByZXN1bHQuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICByZXN1bHRbaV0gPSB0aGlzLT50b2xvd2VyKHJlc3VsdFtpXSk7Ci0gICAgICAgICByZXN1bHQgPSB0aGlzLT50cmFuc2Zvcm0oJipyZXN1bHQuYmVnaW4oKSwgJipyZXN1bHQuYmVnaW4oKSArIHJlc3VsdC5zaXplKCkpOwotICAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICBjYXNlIHNvcnRfZml4ZWQ6Ci0gICAgICB7Ci0gICAgICAgICAvLyBnZXQgYSByZWd1bGFyIHNvcnQga2V5LCBhbmQgdGhlbiB0cnVuY2F0ZSBpdDoKLSAgICAgICAgIHJlc3VsdC5hc3NpZ24odGhpcy0+dHJhbnNmb3JtKHAxLCBwMikpOwotICAgICAgICAgcmVzdWx0LmVyYXNlKHRoaXMtPm1fY29sbGF0ZV9kZWxpbSk7Ci0gICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgIGNhc2Ugc29ydF9kZWxpbToKLSAgICAgICAgIC8vIGdldCBhIHJlZ3VsYXIgc29ydCBrZXksIGFuZCB0aGVuIHRydW5jYXRlIGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIGRlbGltOgotICAgICAgICAgcmVzdWx0LmFzc2lnbih0aGlzLT50cmFuc2Zvcm0ocDEsIHAyKSk7Ci0gICAgICAgICBzdGQ6OnNpemVfdCBpOwotICAgICAgICAgZm9yKGkgPSAwOyBpIDwgcmVzdWx0LnNpemUoKTsgKytpKQotICAgICAgICAgewotICAgICAgICAgICAgaWYocmVzdWx0W2ldID09IG1fY29sbGF0ZV9kZWxpbSkKLSAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgfQotICAgICAgICAgcmVzdWx0LmVyYXNlKGkpOwotICAgICAgICAgYnJlYWs7Ci0gICB9Ci0gICBpZihyZXN1bHQuZW1wdHkoKSkKLSAgICAgIHJlc3VsdCA9IHN0cmluZ190eXBlKDEsIGNoYXJUKDApKTsKLSAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLXR5cGVuYW1lIHczMl9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+OjpzdHJpbmdfdHlwZSAKLSAgIHczMl9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+Ojpsb29rdXBfY29sbGF0ZW5hbWUoY29uc3QgY2hhclQqIHAxLCBjb25zdCBjaGFyVCogcDIpIGNvbnN0Ci17Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHN0ZDo6bWFwPHN0cmluZ190eXBlLCBzdHJpbmdfdHlwZT46OmNvbnN0X2l0ZXJhdG9yIGl0ZXJfdHlwZTsKLSAgIGlmKG1fY3VzdG9tX2NvbGxhdGVfbmFtZXMuc2l6ZSgpKQotICAgewotICAgICAgaXRlcl90eXBlIHBvcyA9IG1fY3VzdG9tX2NvbGxhdGVfbmFtZXMuZmluZChzdHJpbmdfdHlwZShwMSwgcDIpKTsKLSAgICAgIGlmKHBvcyAhPSBtX2N1c3RvbV9jb2xsYXRlX25hbWVzLmVuZCgpKQotICAgICAgICAgcmV0dXJuIHBvcy0+c2Vjb25kOwotICAgfQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFRF9JVEVSQVRPUl9DT05TVFJVQ1RPUlMpXAotICAgICAgICAgICAgICAgJiYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKVwKLSAgICAgICAgICAgICAgICYmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgPD0gMHgwNTUxKQotICAgc3RkOjpzdHJpbmcgbmFtZShwMSwgcDIpOwotI2Vsc2UKLSAgIHN0ZDo6c3RyaW5nIG5hbWU7Ci0gICBjb25zdCBjaGFyVCogcDAgPSBwMTsKLSAgIHdoaWxlKHAwICE9IHAyKQotICAgICAgbmFtZS5hcHBlbmQoMSwgY2hhcigqcDArKykpOwotI2VuZGlmCi0gICBuYW1lID0gbG9va3VwX2RlZmF1bHRfY29sbGF0ZV9uYW1lKG5hbWUpOwotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFRF9JVEVSQVRPUl9DT05TVFJVQ1RPUlMpXAotICAgICAgICAgICAgICAgJiYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKVwKLSAgICAgICAgICAgICAgICYmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgPD0gMHgwNTUxKQotICAgaWYobmFtZS5zaXplKCkpCi0gICAgICByZXR1cm4gc3RyaW5nX3R5cGUobmFtZS5iZWdpbigpLCBuYW1lLmVuZCgpKTsKLSNlbHNlCi0gICBpZihuYW1lLnNpemUoKSkKLSAgIHsKLSAgICAgIHN0cmluZ190eXBlIHJlc3VsdDsKLSAgICAgIHR5cGVkZWYgc3RkOjpzdHJpbmc6OmNvbnN0X2l0ZXJhdG9yIGl0ZXI7Ci0gICAgICBpdGVyIGIgPSBuYW1lLmJlZ2luKCk7Ci0gICAgICBpdGVyIGUgPSBuYW1lLmVuZCgpOwotICAgICAgd2hpbGUoYiAhPSBlKQotICAgICAgICAgcmVzdWx0LmFwcGVuZCgxLCBjaGFyVCgqYisrKSk7Ci0gICAgICByZXR1cm4gcmVzdWx0OwotICAgfQotI2VuZGlmCi0gICBpZihwMiAtIHAxID09IDEpCi0gICAgICByZXR1cm4gc3RyaW5nX3R5cGUoMSwgKnAxKTsKLSAgIHJldHVybiBzdHJpbmdfdHlwZSgpOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci13MzJfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6dzMyX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbig6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmxjaWRfdHlwZSBsKQotOiB3MzJfcmVnZXhfdHJhaXRzX2NoYXJfbGF5ZXI8Y2hhclQ+KGwpCi17Ci0gICBjYXRfdHlwZSBjYXQ7Ci0gICBzdGQ6OnN0cmluZyBjYXRfbmFtZSh3MzJfcmVnZXhfdHJhaXRzPGNoYXJUPjo6Z2V0X2NhdGFsb2dfbmFtZSgpKTsKLSAgIGlmKGNhdF9uYW1lLnNpemUoKSkKLSAgIHsKLSAgICAgIGNhdCA9IDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6dzMyX2NhdF9vcGVuKGNhdF9uYW1lKTsKLSAgICAgIGlmKCFjYXQpCi0gICAgICB7Ci0gICAgICAgICBzdGQ6OnN0cmluZyBtKCJVbmFibGUgdG8gb3BlbiBtZXNzYWdlIGNhdGFsb2c6ICIpOwotICAgICAgICAgc3RkOjpydW50aW1lX2Vycm9yIGVycihtICsgY2F0X25hbWUpOwotICAgICAgICAgbmRuYm9vc3Q6OnJlX2RldGFpbDo6cmFpc2VfcnVudGltZV9lcnJvcihlcnIpOwotICAgICAgfQotICAgfQotICAgLy8KLSAgIC8vIGlmIHdlIGhhdmUgYSB2YWxpZCBjYXRhbG9nIHRoZW4gbG9hZCBvdXIgbWVzc2FnZXM6Ci0gICAvLwotICAgaWYoY2F0KQotICAgewotICAgICAgLy8KLSAgICAgIC8vIEVycm9yIG1lc3NhZ2VzOgotICAgICAgLy8KLSAgICAgIGZvcihuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjplcnJvcl90eXBlIGkgPSBzdGF0aWNfY2FzdDxuZG5ib29zdDo6cmVnZXhfY29uc3RhbnRzOjplcnJvcl90eXBlPigwKTsgCi0gICAgICAgICBpIDw9IG5kbmJvb3N0OjpyZWdleF9jb25zdGFudHM6OmVycm9yX3Vua25vd247IAotICAgICAgICAgaSA9IHN0YXRpY19jYXN0PG5kbmJvb3N0OjpyZWdleF9jb25zdGFudHM6OmVycm9yX3R5cGU+KGkgKyAxKSkKLSAgICAgIHsKLSAgICAgICAgIGNvbnN0IGNoYXIqIHAgPSBnZXRfZGVmYXVsdF9lcnJvcl9zdHJpbmcoaSk7Ci0gICAgICAgICBzdHJpbmdfdHlwZSBkZWZhdWx0X21lc3NhZ2U7Ci0gICAgICAgICB3aGlsZSgqcCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgIGRlZmF1bHRfbWVzc2FnZS5hcHBlbmQoMSwgc3RhdGljX2Nhc3Q8Y2hhclQ+KCpwKSk7Ci0gICAgICAgICAgICArK3A7Ci0gICAgICAgICB9Ci0gICAgICAgICBzdHJpbmdfdHlwZSBzID0gOjpuZG5ib29zdDo6cmVfZGV0YWlsOjp3MzJfY2F0X2dldChjYXQsIHRoaXMtPm1fbG9jYWxlLCBpKzIwMCwgZGVmYXVsdF9tZXNzYWdlKTsKLSAgICAgICAgIHN0ZDo6c3RyaW5nIHJlc3VsdDsKLSAgICAgICAgIGZvcihzdGQ6OnN0cmluZzo6c2l6ZV90eXBlIGogPSAwOyBqIDwgcy5zaXplKCk7ICsraikKLSAgICAgICAgIHsKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoMSwgc3RhdGljX2Nhc3Q8Y2hhcj4oc1tqXSkpOwotICAgICAgICAgfQotICAgICAgICAgbV9lcnJvcl9zdHJpbmdzW2ldID0gcmVzdWx0OwotICAgICAgfQotICAgICAgLy8KLSAgICAgIC8vIEN1c3RvbSBjbGFzcyBuYW1lczoKLSAgICAgIC8vCi0gICAgICBzdGF0aWMgY29uc3QgY2hhcl9jbGFzc190eXBlIG1hc2tzWzE0XSA9IAotICAgICAgewotICAgICAgICAgMHgwMTA0dSwgLy8gQzFfQUxQSEEgfCBDMV9ESUdJVAotICAgICAgICAgMHgwMTAwdSwgLy8gQzFfQUxQSEEKLSAgICAgICAgIDB4MDAyMHUsIC8vIEMxX0NOVFJMCi0gICAgICAgICAweDAwMDR1LCAvLyBDMV9ESUdJVAotICAgICAgICAgKH4oMHgwMDIwdXwweDAwMDh1KSAmIDB4MDFmZnUpIHwgMHgwNDAwdSwgLy8gbm90IEMxX0NOVFJMIG9yIEMxX1NQQUNFCi0gICAgICAgICAweDAwMDJ1LCAvLyBDMV9MT1dFUgotICAgICAgICAgKH4weDAwMjB1ICYgMHgwMWZmdSkgfCAweDA0MDAsIC8vIG5vdCBDMV9DTlRSTAotICAgICAgICAgMHgwMDEwdSwgLy8gQzFfUFVOQ1QKLSAgICAgICAgIDB4MDAwOHUsIC8vIEMxX1NQQUNFCi0gICAgICAgICAweDAwMDF1LCAvLyBDMV9VUFBFUgotICAgICAgICAgMHgwMDgwdSwgLy8gQzFfWERJR0lUCi0gICAgICAgICAweDAwNDB1LCAvLyBDMV9CTEFOSwotICAgICAgICAgdzMyX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD46Om1hc2tfd29yZCwKLSAgICAgICAgIHczMl9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+OjptYXNrX3VuaWNvZGUsCi0gICAgICB9OwotICAgICAgc3RhdGljIGNvbnN0IHN0cmluZ190eXBlIG51bGxfc3RyaW5nOwotICAgICAgZm9yKHVuc2lnbmVkIGludCBqID0gMDsgaiA8PSAxMzsgKytqKQotICAgICAgewotICAgICAgICAgc3RyaW5nX3R5cGUgcyg6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OnczMl9jYXRfZ2V0KGNhdCwgdGhpcy0+bV9sb2NhbGUsIGorMzAwLCBudWxsX3N0cmluZykpOwotICAgICAgICAgaWYocy5zaXplKCkpCi0gICAgICAgICAgICB0aGlzLT5tX2N1c3RvbV9jbGFzc19uYW1lc1tzXSA9IG1hc2tzW2pdOwotICAgICAgfQotICAgfQotICAgLy8KLSAgIC8vIGdldCB0aGUgY29sbGF0aW9uIGZvcm1hdCB1c2VkIGJ5IG1fcGNvbGxhdGU6Ci0gICAvLwotICAgbV9jb2xsYXRlX3R5cGUgPSByZV9kZXRhaWw6OmZpbmRfc29ydF9zeW50YXgodGhpcywgJm1fY29sbGF0ZV9kZWxpbSk7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLXR5cGVuYW1lIHczMl9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+OjpjaGFyX2NsYXNzX3R5cGUgCi0gICB3MzJfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6bG9va3VwX2NsYXNzbmFtZV9pbXAoY29uc3QgY2hhclQqIHAxLCBjb25zdCBjaGFyVCogcDIpIGNvbnN0Ci17Ci0gICBzdGF0aWMgY29uc3QgY2hhcl9jbGFzc190eXBlIG1hc2tzWzIyXSA9IAotICAgewotICAgICAgMCwKLSAgICAgIDB4MDEwNHUsIC8vIEMxX0FMUEhBIHwgQzFfRElHSVQKLSAgICAgIDB4MDEwMHUsIC8vIEMxX0FMUEhBCi0gICAgICAweDAwNDB1LCAvLyBDMV9CTEFOSwotICAgICAgMHgwMDIwdSwgLy8gQzFfQ05UUkwKLSAgICAgIDB4MDAwNHUsIC8vIEMxX0RJR0lUCi0gICAgICAweDAwMDR1LCAvLyBDMV9ESUdJVAotICAgICAgKH4oMHgwMDIwdXwweDAwMDh1fDB4MDA0MCkgJiAweDAxZmZ1KSB8IDB4MDQwMHUsIC8vIG5vdCBDMV9DTlRSTCBvciBDMV9TUEFDRSBvciBDMV9CTEFOSwotICAgICAgdzMyX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD46Om1hc2tfaG9yaXpvbnRhbCwgCi0gICAgICAweDAwMDJ1LCAvLyBDMV9MT1dFUgotICAgICAgMHgwMDAydSwgLy8gQzFfTE9XRVIKLSAgICAgICh+MHgwMDIwdSAmIDB4MDFmZnUpIHwgMHgwNDAwLCAvLyBub3QgQzFfQ05UUkwKLSAgICAgIDB4MDAxMHUsIC8vIEMxX1BVTkNUCi0gICAgICAweDAwMDh1LCAvLyBDMV9TUEFDRQotICAgICAgMHgwMDA4dSwgLy8gQzFfU1BBQ0UKLSAgICAgIDB4MDAwMXUsIC8vIEMxX1VQUEVSCi0gICAgICB3MzJfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6bWFza191bmljb2RlLAotICAgICAgMHgwMDAxdSwgLy8gQzFfVVBQRVIKLSAgICAgIHczMl9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+OjptYXNrX3ZlcnRpY2FsLCAKLSAgICAgIDB4MDEwNHUgfCB3MzJfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6bWFza193b3JkLCAKLSAgICAgIDB4MDEwNHUgfCB3MzJfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6bWFza193b3JkLCAKLSAgICAgIDB4MDA4MHUsIC8vIEMxX1hESUdJVAotICAgfTsKLSAgIGlmKG1fY3VzdG9tX2NsYXNzX25hbWVzLnNpemUoKSkKLSAgIHsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc3RkOjptYXA8c3RkOjpiYXNpY19zdHJpbmc8Y2hhclQ+LCBjaGFyX2NsYXNzX3R5cGU+Ojpjb25zdF9pdGVyYXRvciBtYXBfaXRlcjsKLSAgICAgIG1hcF9pdGVyIHBvcyA9IG1fY3VzdG9tX2NsYXNzX25hbWVzLmZpbmQoc3RyaW5nX3R5cGUocDEsIHAyKSk7Ci0gICAgICBpZihwb3MgIT0gbV9jdXN0b21fY2xhc3NfbmFtZXMuZW5kKCkpCi0gICAgICAgICByZXR1cm4gcG9zLT5zZWNvbmQ7Ci0gICB9Ci0gICBzdGQ6OnNpemVfdCBzdGF0ZV9pZCA9IDEgKyByZV9kZXRhaWw6OmdldF9kZWZhdWx0X2NsYXNzX2lkKHAxLCBwMik7Ci0gICBpZihzdGF0ZV9pZCA8IHNpemVvZihtYXNrcykgLyBzaXplb2YobWFza3NbMF0pKQotICAgICAgcmV0dXJuIG1hc2tzW3N0YXRlX2lkXTsKLSAgIHJldHVybiBtYXNrc1swXTsKLX0KLQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci1uZG5ib29zdDo6c2hhcmVkX3B0cjxjb25zdCB3MzJfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPiA+IGNyZWF0ZV93MzJfcmVnZXhfdHJhaXRzKDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6bGNpZF90eXBlIGwgTkROQk9PU1RfQVBQRU5EX0VYUExJQ0lUX1RFTVBMQVRFX1RZUEUoY2hhclQpKQotewotICAgLy8gVE9ETzogY3JlYXRlIGEgY2FjaGUgZm9yIHByZXZpb3VzbHkgY29uc3RydWN0ZWQgb2JqZWN0cy4KLSAgIHJldHVybiBuZG5ib29zdDo6b2JqZWN0X2NhY2hlPCA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmxjaWRfdHlwZSwgdzMyX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD4gPjo6Z2V0KGwsIDUpOwotfQotCi19IC8vIHJlX2RldGFpbAotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci1jbGFzcyB3MzJfcmVnZXhfdHJhaXRzCi17Ci1wdWJsaWM6Ci0gICB0eXBlZGVmIGNoYXJUICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJfdHlwZTsKLSAgIHR5cGVkZWYgc3RkOjpzaXplX3QgICAgICAgICAgICAgICAgICAgc2l6ZV90eXBlOwotICAgdHlwZWRlZiBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyX3R5cGU+ICBzdHJpbmdfdHlwZTsKLSAgIHR5cGVkZWYgOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpsY2lkX3R5cGUgbG9jYWxlX3R5cGU7Ci0gICB0eXBlZGVmIG5kbmJvb3N0Ojp1aW50X2xlYXN0MzJfdCAgICAgICAgIGNoYXJfY2xhc3NfdHlwZTsKLQotICAgc3RydWN0IGJvb3N0X2V4dGVuc2lvbnNfdGFne307Ci0KLSAgIHczMl9yZWdleF90cmFpdHMoKQotICAgICAgOiBtX3BpbXBsKHJlX2RldGFpbDo6Y3JlYXRlX3czMl9yZWdleF90cmFpdHM8Y2hhclQ+KDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6dzMyX2dldF9kZWZhdWx0X2xvY2FsZSgpKSkKLSAgIHsgfQotICAgc3RhdGljIHNpemVfdHlwZSBsZW5ndGgoY29uc3QgY2hhcl90eXBlKiBwKQotICAgewotICAgICAgcmV0dXJuIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhclQ+OjpsZW5ndGgocCk7Ci0gICB9Ci0gICByZWdleF9jb25zdGFudHM6OnN5bnRheF90eXBlIHN5bnRheF90eXBlKGNoYXJUIGMpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBtX3BpbXBsLT5zeW50YXhfdHlwZShjKTsKLSAgIH0KLSAgIHJlZ2V4X2NvbnN0YW50czo6ZXNjYXBlX3N5bnRheF90eXBlIGVzY2FwZV9zeW50YXhfdHlwZShjaGFyVCBjKSBjb25zdAotICAgewotICAgICAgcmV0dXJuIG1fcGltcGwtPmVzY2FwZV9zeW50YXhfdHlwZShjKTsKLSAgIH0KLSAgIGNoYXJUIHRyYW5zbGF0ZShjaGFyVCBjKSBjb25zdAotICAgewotICAgICAgcmV0dXJuIGM7Ci0gICB9Ci0gICBjaGFyVCB0cmFuc2xhdGVfbm9jYXNlKGNoYXJUIGMpIGNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gdGhpcy0+bV9waW1wbC0+dG9sb3dlcihjKTsKLSAgIH0KLSAgIGNoYXJUIHRyYW5zbGF0ZShjaGFyVCBjLCBib29sIGljYXNlKSBjb25zdAotICAgewotICAgICAgcmV0dXJuIGljYXNlID8gdGhpcy0+bV9waW1wbC0+dG9sb3dlcihjKSA6IGM7Ci0gICB9Ci0gICBjaGFyVCB0b2xvd2VyKGNoYXJUIGMpIGNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gdGhpcy0+bV9waW1wbC0+dG9sb3dlcihjKTsKLSAgIH0KLSAgIGNoYXJUIHRvdXBwZXIoY2hhclQgYykgY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OnczMl90b3VwcGVyKGMsIHRoaXMtPm1fcGltcGwtPm1fbG9jYWxlKTsKLSAgIH0KLSAgIHN0cmluZ190eXBlIHRyYW5zZm9ybShjb25zdCBjaGFyVCogcDEsIGNvbnN0IGNoYXJUKiBwMikgY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OnczMl90cmFuc2Zvcm0odGhpcy0+bV9waW1wbC0+bV9sb2NhbGUsIHAxLCBwMik7Ci0gICB9Ci0gICBzdHJpbmdfdHlwZSB0cmFuc2Zvcm1fcHJpbWFyeShjb25zdCBjaGFyVCogcDEsIGNvbnN0IGNoYXJUKiBwMikgY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBtX3BpbXBsLT50cmFuc2Zvcm1fcHJpbWFyeShwMSwgcDIpOwotICAgfQotICAgY2hhcl9jbGFzc190eXBlIGxvb2t1cF9jbGFzc25hbWUoY29uc3QgY2hhclQqIHAxLCBjb25zdCBjaGFyVCogcDIpIGNvbnN0Ci0gICB7Ci0gICAgICByZXR1cm4gbV9waW1wbC0+bG9va3VwX2NsYXNzbmFtZShwMSwgcDIpOwotICAgfQotICAgc3RyaW5nX3R5cGUgbG9va3VwX2NvbGxhdGVuYW1lKGNvbnN0IGNoYXJUKiBwMSwgY29uc3QgY2hhclQqIHAyKSBjb25zdAotICAgewotICAgICAgcmV0dXJuIG1fcGltcGwtPmxvb2t1cF9jb2xsYXRlbmFtZShwMSwgcDIpOwotICAgfQotICAgYm9vbCBpc2N0eXBlKGNoYXJUIGMsIGNoYXJfY2xhc3NfdHlwZSBmKSBjb25zdAotICAgewotICAgICAgaWYoKGYgJiByZV9kZXRhaWw6OnczMl9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+OjptYXNrX2Jhc2UpIAotICAgICAgICAgJiYgKHRoaXMtPm1fcGltcGwtPmlzY3R5cGUoZiAmIHJlX2RldGFpbDo6dzMyX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD46Om1hc2tfYmFzZSwgYykpKQotICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICBlbHNlIGlmKChmICYgcmVfZGV0YWlsOjp3MzJfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6bWFza191bmljb2RlKSAmJiByZV9kZXRhaWw6OmlzX2V4dGVuZGVkKGMpKQotICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICBlbHNlIGlmKChmICYgcmVfZGV0YWlsOjp3MzJfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6bWFza193b3JkKSAmJiAoYyA9PSAnXycpKQotICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICBlbHNlIGlmKChmICYgcmVfZGV0YWlsOjp3MzJfcmVnZXhfdHJhaXRzX2ltcGxlbWVudGF0aW9uPGNoYXJUPjo6bWFza192ZXJ0aWNhbCkKLSAgICAgICAgICYmICg6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmlzX3NlcGFyYXRvcihjKSB8fCAoYyA9PSAnXHYnKSkpCi0gICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIGVsc2UgaWYoKGYgJiByZV9kZXRhaWw6OnczMl9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+OjptYXNrX2hvcml6b250YWwpIAotICAgICAgICAgJiYgdGhpcy0+aXNjdHlwZShjLCAweDAwMDh1KSAmJiAhdGhpcy0+aXNjdHlwZShjLCByZV9kZXRhaWw6OnczMl9yZWdleF90cmFpdHNfaW1wbGVtZW50YXRpb248Y2hhclQ+OjptYXNrX3ZlcnRpY2FsKSkKLSAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgcmV0dXJuIGZhbHNlOwotICAgfQotICAgaW50IHRvaShjb25zdCBjaGFyVComIHAxLCBjb25zdCBjaGFyVCogcDIsIGludCByYWRpeCljb25zdAotICAgewotICAgICAgcmV0dXJuIDo6bmRuYm9vc3Q6OnJlX2RldGFpbDo6Z2xvYmFsX3RvaShwMSwgcDIsIHJhZGl4LCAqdGhpcyk7Ci0gICB9Ci0gICBpbnQgdmFsdWUoY2hhclQgYywgaW50IHJhZGl4KWNvbnN0Ci0gICB7Ci0gICAgICBpbnQgcmVzdWx0ID0gOjpuZG5ib29zdDo6cmVfZGV0YWlsOjpnbG9iYWxfdmFsdWUoYyk7Ci0gICAgICByZXR1cm4gcmVzdWx0IDwgcmFkaXggPyByZXN1bHQgOiAtMTsKLSAgIH0KLSAgIGxvY2FsZV90eXBlIGltYnVlKGxvY2FsZV90eXBlIGwpCi0gICB7Ci0gICAgICA6Om5kbmJvb3N0OjpyZV9kZXRhaWw6OmxjaWRfdHlwZSByZXN1bHQoZ2V0bG9jKCkpOwotICAgICAgbV9waW1wbCA9IHJlX2RldGFpbDo6Y3JlYXRlX3czMl9yZWdleF90cmFpdHM8Y2hhclQ+KGwpOwotICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgIH0KLSAgIGxvY2FsZV90eXBlIGdldGxvYygpY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBtX3BpbXBsLT5tX2xvY2FsZTsKLSAgIH0KLSAgIHN0ZDo6c3RyaW5nIGVycm9yX3N0cmluZyhyZWdleF9jb25zdGFudHM6OmVycm9yX3R5cGUgbikgY29uc3QKLSAgIHsKLSAgICAgIHJldHVybiBtX3BpbXBsLT5lcnJvcl9zdHJpbmcobik7Ci0gICB9Ci0KLSAgIC8vCi0gICAvLyBleHRlbnNpb246Ci0gICAvLyBzZXQgdGhlIG5hbWUgb2YgdGhlIG1lc3NhZ2UgY2F0YWxvZyBpbiB1c2UgKGRlZmF1bHRzIHRvICJib29zdF9yZWdleCIpLgotICAgLy8KLSAgIHN0YXRpYyBzdGQ6OnN0cmluZyBjYXRhbG9nX25hbWUoY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUpOwotICAgc3RhdGljIHN0ZDo6c3RyaW5nIGdldF9jYXRhbG9nX25hbWUoKTsKLQotcHJpdmF0ZToKLSAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPGNvbnN0IHJlX2RldGFpbDo6dzMyX3JlZ2V4X3RyYWl0c19pbXBsZW1lbnRhdGlvbjxjaGFyVD4gPiBtX3BpbXBsOwotICAgLy8KLSAgIC8vIGNhdGFsb2cgbmFtZSBoYW5kbGVyOgotICAgLy8KLSAgIHN0YXRpYyBzdGQ6OnN0cmluZyYgZ2V0X2NhdGFsb2dfbmFtZV9pbnN0KCk7Ci0KLSNpZmRlZiBORE5CT09TVF9IQVNfVEhSRUFEUwotICAgc3RhdGljIHN0YXRpY19tdXRleCYgZ2V0X211dGV4X2luc3QoKTsKLSNlbmRpZgotfTsKLQotdGVtcGxhdGUgPGNsYXNzIGNoYXJUPgotc3RkOjpzdHJpbmcgdzMyX3JlZ2V4X3RyYWl0czxjaGFyVD46OmNhdGFsb2dfbmFtZShjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSkKLXsKLSNpZmRlZiBORE5CT09TVF9IQVNfVEhSRUFEUwotICAgc3RhdGljX211dGV4OjpzY29wZWRfbG9jayBsayhnZXRfbXV0ZXhfaW5zdCgpKTsKLSNlbmRpZgotICAgc3RkOjpzdHJpbmcgcmVzdWx0KGdldF9jYXRhbG9nX25hbWVfaW5zdCgpKTsKLSAgIGdldF9jYXRhbG9nX25hbWVfaW5zdCgpID0gbmFtZTsKLSAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLXN0ZDo6c3RyaW5nJiB3MzJfcmVnZXhfdHJhaXRzPGNoYXJUPjo6Z2V0X2NhdGFsb2dfbmFtZV9pbnN0KCkKLXsKLSAgIHN0YXRpYyBzdGQ6OnN0cmluZyBzX25hbWU7Ci0gICByZXR1cm4gc19uYW1lOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgY2hhclQ+Ci1zdGQ6OnN0cmluZyB3MzJfcmVnZXhfdHJhaXRzPGNoYXJUPjo6Z2V0X2NhdGFsb2dfbmFtZSgpCi17Ci0jaWZkZWYgTkROQk9PU1RfSEFTX1RIUkVBRFMKLSAgIHN0YXRpY19tdXRleDo6c2NvcGVkX2xvY2sgbGsoZ2V0X211dGV4X2luc3QoKSk7Ci0jZW5kaWYKLSAgIHN0ZDo6c3RyaW5nIHJlc3VsdChnZXRfY2F0YWxvZ19uYW1lX2luc3QoKSk7Ci0gICByZXR1cm4gcmVzdWx0OwotfQotCi0jaWZkZWYgTkROQk9PU1RfSEFTX1RIUkVBRFMKLXRlbXBsYXRlIDxjbGFzcyBjaGFyVD4KLXN0YXRpY19tdXRleCYgdzMyX3JlZ2V4X3RyYWl0czxjaGFyVD46OmdldF9tdXRleF9pbnN0KCkKLXsKLSAgIHN0YXRpYyBzdGF0aWNfbXV0ZXggc19tdXRleCA9IE5ETkJPT1NUX1NUQVRJQ19NVVRFWF9JTklUOwotICAgcmV0dXJuIHNfbXV0ZXg7Ci19Ci0jZW5kaWYKLQotCi19IC8vIGJvb3N0Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTAzKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfSEFTX0FCSV9IRUFERVJTCi0jICBpbmNsdWRlIE5ETkJPT1NUX0FCSV9TVUZGSVgKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4X2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3JlZ2V4X2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzZTRlZDUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9yZWdleF9md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotLyoKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMgotICogSm9obiBNYWRkb2NrCi0gKgotICogVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0gKiBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLSAqIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqCi0gKi8KLQotIC8qCi0gICogICBMT0NBVElPTjogICAgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvcmVnZXggZm9yIGRvY3VtZW50YXRpb24uCi0gICogICBGSUxFICAgICAgICAgcmVnZXhfZndkLmNwcAotICAqICAgVkVSU0lPTiAgICAgIHNlZSA8bmRuYm9vc3QvdmVyc2lvbi5ocHA+Ci0gICogICBERVNDUklQVElPTjogRm9yd2FyZCBkZWNsYXJlcyBuZG5ib29zdDo6YmFzaWNfcmVnZXg8PiBhbmQKLSAgKiAgICAgICAgICAgICAgICBhc3NvY2lhdGVkIHR5cGVkZWZzLgotICAqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX0ZXRF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfUkVHRVhfRldEX0hQUAotCi0jaWZuZGVmIE5ETkJPT1NUX1JFR0VYX0NPTkZJR19IUFAKLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC9jb25maWcuaHBwPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9yZWdleC92NC9yZWdleF9md2QuaHBwPgotCi0jZW5kaWYKLQotCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zY29wZWRfYXJyYXkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zY29wZWRfYXJyYXkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OWJmNjg2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc2NvcGVkX2FycmF5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfU0NPUEVEX0FSUkFZX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9TQ09QRURfQVJSQVlfSFBQX0lOQ0xVREVECi0KLS8vICAoQykgQ29weXJpZ2h0IEdyZWcgQ29sdmluIGFuZCBCZW1hbiBEYXdlcyAxOTk4LCAxOTk5LgotLy8gIENvcHlyaWdodCAoYykgMjAwMSwgMjAwMiBQZXRlciBEaW1vdgotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9zbWFydF9wdHIvc2NvcGVkX2FycmF5Lmh0bQotLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9zY29wZWRfYXJyYXkuaHBwPgotCi0jZW5kaWYgIC8vICNpZm5kZWYgTkROQk9PU1RfU0NPUEVEX0FSUkFZX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zY29wZWRfcHRyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc2NvcGVkX3B0ci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY0M2JiNDMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zY29wZWRfcHRyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfU0NPUEVEX1BUUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU0NPUEVEX1BUUl9IUFBfSU5DTFVERUQKLQotLy8gIChDKSBDb3B5cmlnaHQgR3JlZyBDb2x2aW4gYW5kIEJlbWFuIERhd2VzIDE5OTgsIDE5OTkuCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAxLCAyMDAyIFBldGVyIERpbW92Ci0vLwotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3NtYXJ0X3B0ci9zY29wZWRfcHRyLmh0bQotLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9zY29wZWRfcHRyLmhwcD4KLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfU0NPUEVEX1BUUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc2hhcmVkX2FycmF5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc2hhcmVkX2FycmF5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjRjZWMyMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NoYXJlZF9hcnJheS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1NIQVJFRF9BUlJBWV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU0hBUkVEX0FSUkFZX0hQUF9JTkNMVURFRAotCi0vLwotLy8gIHNoYXJlZF9hcnJheS5ocHAKLS8vCi0vLyAgKEMpIENvcHlyaWdodCBHcmVnIENvbHZpbiBhbmQgQmVtYW4gRGF3ZXMgMTk5OCwgMTk5OS4KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDIgUGV0ZXIgRGltb3YKLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3NtYXJ0X3B0ci9zaGFyZWRfYXJyYXkuaHRtIGZvciBkb2N1bWVudGF0aW9uLgotLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9zaGFyZWRfYXJyYXkuaHBwPgotCi0jZW5kaWYgIC8vICNpZm5kZWYgTkROQk9PU1RfU0hBUkVEX0FSUkFZX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zaGFyZWRfcHRyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc2hhcmVkX3B0ci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMzZmY4ZDcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zaGFyZWRfcHRyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfU0hBUkVEX1BUUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU0hBUkVEX1BUUl9IUFBfSU5DTFVERUQKLQotLy8KLS8vICBzaGFyZWRfcHRyLmhwcAotLy8KLS8vICAoQykgQ29weXJpZ2h0IEdyZWcgQ29sdmluIGFuZCBCZW1hbiBEYXdlcyAxOTk4LCAxOTk5LgotLy8gIENvcHlyaWdodCAoYykgMjAwMS0yMDA4IFBldGVyIERpbW92Ci0vLwotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9zbWFydF9wdHIvc2hhcmVkX3B0ci5odG0gZm9yIGRvY3VtZW50YXRpb24uCi0vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL3NoYXJlZF9wdHIuaHBwPgotCi0jZW5kaWYgIC8vICNpZm5kZWYgTkROQk9PU1RfU0hBUkVEX1BUUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2FsbG9jYXRlX3NoYXJlZF9hcnJheS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9hbGxvY2F0ZV9zaGFyZWRfYXJyYXkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZTkxYmY5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2FsbG9jYXRlX3NoYXJlZF9hcnJheS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoYykgMjAxMiBHbGVuIEpvc2VwaCBGZXJuYW5kZXMKLSAqIGdsZW5mZSBhdCBsaXZlIGRvdCBjb20KLSAqCi0gKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLSAqIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dAotICogb3IgY29weSBhdCBodHRwOi8vYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqLwotI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfQUxMT0NBVEVfU0hBUkVEX0FSUkFZX0hQUAotI2RlZmluZSBORE5CT09TVF9TTUFSVF9QVFJfQUxMT0NBVEVfU0hBUkVEX0FSUkFZX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL3NoYXJlZF9wdHIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvYWxsb2NhdGVfYXJyYXlfaGVscGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2FycmF5X2RlbGV0ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvYXJyYXlfdHJhaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2lmX2FycmF5LmhwcD4KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9IRFJfSU5JVElBTElaRVJfTElTVCkKLSNpbmNsdWRlIDxpbml0aWFsaXplcl9saXN0PgotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQT4KLSAgICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfYXJyYXk8VD46OnR5cGUKLSAgICBhbGxvY2F0ZV9zaGFyZWQoY29uc3QgQSYgYWxsb2NhdG9yLCBzdGQ6OnNpemVfdCBzaXplKSB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfaW5uZXI8VD46OnR5cGUgVDE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfYmFzZTxUMT46OnR5cGUgVDI7Ci0gICAgICAgIFQxKiBwMSA9IDA7Ci0gICAgICAgIFQyKiBwMiA9IDA7Ci0gICAgICAgIHN0ZDo6c2l6ZV90IG4xID0gc2l6ZSAqIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X3RvdGFsPFQxPjo6c2l6ZTsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6YWxsb2NhdGVfYXJyYXlfaGVscGVyPEEsIFQyW10+IGExKGFsbG9jYXRvciwgbjEsICZwMik7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2RlbGV0ZXI8VDJbXT4gZDEobjEpOwotICAgICAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjxUPiBzMShwMSwgZDEsIGExKTsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9kZWxldGVyPFQyW10+KiBEMjsKLSAgICAgICAgcDEgPSByZWludGVycHJldF9jYXN0PFQxKj4ocDIpOwotICAgICAgICBEMiBkMiA9IHN0YXRpY19jYXN0PEQyPihzMS5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpKTsKLSAgICAgICAgZDItPmluaXQocDIpOwotICAgICAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8VD4oczEsIHAxKTsKLSAgICB9Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfVEVNUExBVEVTKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUykKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBBLCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9hcnJheTxUPjo6dHlwZQotICAgIGFsbG9jYXRlX3NoYXJlZChjb25zdCBBJiBhbGxvY2F0b3IsIHN0ZDo6c2l6ZV90IHNpemUsIEFyZ3MmJi4uLiBhcmdzKSB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfaW5uZXI8VD46OnR5cGUgVDE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfYmFzZTxUMT46OnR5cGUgVDI7Ci0gICAgICAgIFQxKiBwMSA9IDA7Ci0gICAgICAgIFQyKiBwMiA9IDA7Ci0gICAgICAgIHN0ZDo6c2l6ZV90IG4xID0gc2l6ZSAqIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X3RvdGFsPFQxPjo6c2l6ZTsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6YWxsb2NhdGVfYXJyYXlfaGVscGVyPEEsIFQyW10+IGExKGFsbG9jYXRvciwgbjEsICZwMik7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2RlbGV0ZXI8VDJbXT4gZDEobjEpOwotICAgICAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjxUPiBzMShwMSwgZDEsIGExKTsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9kZWxldGVyPFQyW10+KiBEMjsKLSAgICAgICAgcDEgPSByZWludGVycHJldF9jYXN0PFQxKj4ocDIpOwotICAgICAgICBEMiBkMiA9IHN0YXRpY19jYXN0PEQyPihzMS5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpKTsKLSAgICAgICAgZDItPmluaXQocDIsIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QXJncz4oYXJncykuLi4pOwotICAgICAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8VD4oczEsIHAxKTsKLSAgICB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQSwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfc2l6ZV9hcnJheTxUPjo6dHlwZQotICAgIGFsbG9jYXRlX3NoYXJlZChjb25zdCBBJiBhbGxvY2F0b3IsIEFyZ3MmJi4uLiBhcmdzKSB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfaW5uZXI8VD46OnR5cGUgVDE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfYmFzZTxUMT46OnR5cGUgVDI7Ci0gICAgICAgIGVudW0gewotICAgICAgICAgICAgTiA9IG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X3RvdGFsPFQ+OjpzaXplCi0gICAgICAgIH07Ci0gICAgICAgIFQxKiBwMSA9IDA7Ci0gICAgICAgIFQyKiBwMiA9IDA7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmFsbG9jYXRlX2FycmF5X2hlbHBlcjxBLCBUMltOXT4gYTEoYWxsb2NhdG9yLCAmcDIpOwotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9kZWxldGVyPFQyW05dPiBkMTsKLSAgICAgICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8VD4gczEocDEsIGQxLCBhMSk7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfZGVsZXRlcjxUMltOXT4qIEQyOwotICAgICAgICBwMSA9IHJlaW50ZXJwcmV0X2Nhc3Q8VDEqPihwMik7Ci0gICAgICAgIEQyIGQyID0gc3RhdGljX2Nhc3Q8RDI+KHMxLl9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkpOwotICAgICAgICBkMi0+aW5pdChwMiwgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBcmdzPihhcmdzKS4uLik7Ci0gICAgICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjxUPihzMSwgcDEpOwotICAgIH0KLSNlbmRpZgotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1VOSUZJRURfSU5JVElBTElaQVRJT05fU1lOVEFYKQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEE+Ci0gICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX3NpemVfYXJyYXk8VD46OnR5cGUKLSAgICBhbGxvY2F0ZV9zaGFyZWQoY29uc3QgQSYgYWxsb2NhdG9yLCBjb25zdCBUJiBsaXN0KSB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfaW5uZXI8VD46OnR5cGUgVDE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfYmFzZTxUMT46OnR5cGUgVDI7Ci0gICAgICAgIHR5cGVkZWYgY29uc3QgVDIgVDM7Ci0gICAgICAgIGVudW0gewotICAgICAgICAgICAgTiA9IG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X3RvdGFsPFQ+OjpzaXplCi0gICAgICAgIH07Ci0gICAgICAgIFQxKiBwMSA9IDA7Ci0gICAgICAgIFQyKiBwMiA9IDA7Ci0gICAgICAgIFQzKiBwMyA9IDA7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmFsbG9jYXRlX2FycmF5X2hlbHBlcjxBLCBUMltOXT4gYTEoYWxsb2NhdG9yLCAmcDIpOwotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9kZWxldGVyPFQyW05dPiBkMTsKLSAgICAgICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8VD4gczEocDEsIGQxLCBhMSk7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfZGVsZXRlcjxUMltOXT4qIEQyOwotICAgICAgICBwMyA9IHJlaW50ZXJwcmV0X2Nhc3Q8VDMqPihsaXN0KTsKLSAgICAgICAgcDEgPSByZWludGVycHJldF9jYXN0PFQxKj4ocDIpOwotICAgICAgICBEMiBkMiA9IHN0YXRpY19jYXN0PEQyPihzMS5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpKTsKLSAgICAgICAgZDItPmluaXRfbGlzdChwMiwgcDMpOwotICAgICAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8VD4oczEsIHAxKTsKLSAgICB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQT4KLSAgICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfYXJyYXk8VD46OnR5cGUKLSAgICBhbGxvY2F0ZV9zaGFyZWQoY29uc3QgQSYgYWxsb2NhdG9yLCBzdGQ6OnNpemVfdCBzaXplLAotICAgICAgICBjb25zdCB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9pbm5lcjxUPjo6dHlwZSYgbGlzdCkgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2lubmVyPFQ+Ojp0eXBlIFQxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2Jhc2U8VDE+Ojp0eXBlIFQyOwotICAgICAgICB0eXBlZGVmIGNvbnN0IFQyIFQzOwotICAgICAgICBlbnVtIHsKLSAgICAgICAgICAgIE0gPSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV90b3RhbDxUMT46OnNpemUKLSAgICAgICAgfTsKLSAgICAgICAgVDEqIHAxID0gMDsKLSAgICAgICAgVDIqIHAyID0gMDsKLSAgICAgICAgVDMqIHAzID0gMDsKLSAgICAgICAgc3RkOjpzaXplX3QgbjEgPSBNICogc2l6ZTsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6YWxsb2NhdGVfYXJyYXlfaGVscGVyPEEsIFQyW10+IGExKGFsbG9jYXRvciwgbjEsICZwMik7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2RlbGV0ZXI8VDJbXT4gZDEobjEpOwotICAgICAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjxUPiBzMShwMSwgZDEsIGExKTsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9kZWxldGVyPFQyW10+KiBEMjsKLSAgICAgICAgcDMgPSByZWludGVycHJldF9jYXN0PFQzKj4obGlzdCk7Ci0gICAgICAgIHAxID0gcmVpbnRlcnByZXRfY2FzdDxUMSo+KHAyKTsKLSAgICAgICAgRDIgZDIgPSBzdGF0aWNfY2FzdDxEMj4oczEuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSk7Ci0gICAgICAgIGQyLT50ZW1wbGF0ZSBpbml0X2xpc3Q8TT4ocDIsIHAzKTsKLSAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPFQ+KHMxLCBwMSk7Ci0gICAgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEE+Ci0gICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX3NpemVfYXJyYXk8VD46OnR5cGUKLSAgICBhbGxvY2F0ZV9zaGFyZWQoY29uc3QgQSYgYWxsb2NhdG9yLAotICAgICAgICBjb25zdCB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9pbm5lcjxUPjo6dHlwZSYgbGlzdCkgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2lubmVyPFQ+Ojp0eXBlIFQxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2Jhc2U8VDE+Ojp0eXBlIFQyOwotICAgICAgICB0eXBlZGVmIGNvbnN0IFQyIFQzOwotICAgICAgICBlbnVtIHsKLSAgICAgICAgICAgIE0gPSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV90b3RhbDxUMT46OnNpemUsCi0gICAgICAgICAgICBOID0gbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfdG90YWw8VD46OnNpemUKLSAgICAgICAgfTsKLSAgICAgICAgVDEqIHAxID0gMDsKLSAgICAgICAgVDIqIHAyID0gMDsKLSAgICAgICAgVDMqIHAzID0gMDsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6YWxsb2NhdGVfYXJyYXlfaGVscGVyPEEsIFQyW05dPiBhMShhbGxvY2F0b3IsICZwMik7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2RlbGV0ZXI8VDJbTl0+IGQxOwotICAgICAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjxUPiBzMShwMSwgZDEsIGExKTsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9kZWxldGVyPFQyW05dPiogRDI7Ci0gICAgICAgIHAzID0gcmVpbnRlcnByZXRfY2FzdDxUMyo+KGxpc3QpOwotICAgICAgICBwMSA9IHJlaW50ZXJwcmV0X2Nhc3Q8VDEqPihwMik7Ci0gICAgICAgIEQyIGQyID0gc3RhdGljX2Nhc3Q8RDI+KHMxLl9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkpOwotICAgICAgICBkMi0+dGVtcGxhdGUgaW5pdF9saXN0PE0+KHAyLCBwMyk7Ci0gICAgICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjxUPihzMSwgcDEpOwotICAgIH0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9IRFJfSU5JVElBTElaRVJfTElTVCkKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBBPgotICAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9hcnJheTxUPjo6dHlwZQotICAgIGFsbG9jYXRlX3NoYXJlZChjb25zdCBBJiBhbGxvY2F0b3IsCi0gICAgICAgIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDx0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9pbm5lcjxUPjo6dHlwZT4gbGlzdCkgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2lubmVyPFQ+Ojp0eXBlIFQxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2Jhc2U8VDE+Ojp0eXBlIFQyOwotICAgICAgICB0eXBlZGVmIGNvbnN0IFQyIFQzOwotICAgICAgICBUMSogcDEgPSAwOwotICAgICAgICBUMiogcDIgPSAwOwotICAgICAgICBUMyogcDMgPSAwOwotICAgICAgICBzdGQ6OnNpemVfdCBuMSA9IGxpc3Quc2l6ZSgpICogbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfdG90YWw8VDE+OjpzaXplOwotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjphbGxvY2F0ZV9hcnJheV9oZWxwZXI8QSwgVDJbXT4gYTEoYWxsb2NhdG9yLCBuMSwgJnAyKTsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfZGVsZXRlcjxUMltdPiBkMShuMSk7Ci0gICAgICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPFQ+IHMxKHAxLCBkMSwgYTEpOwotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2RlbGV0ZXI8VDJbXT4qIEQyOwotICAgICAgICBwMyA9IHJlaW50ZXJwcmV0X2Nhc3Q8VDMqPihsaXN0LmJlZ2luKCkpOwotICAgICAgICBwMSA9IHJlaW50ZXJwcmV0X2Nhc3Q8VDEqPihwMik7Ci0gICAgICAgIEQyIGQyID0gc3RhdGljX2Nhc3Q8RDI+KHMxLl9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkpOwotICAgICAgICBkMi0+aW5pdF9saXN0KHAyLCBwMyk7Ci0gICAgICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjxUPihzMSwgcDEpOwotICAgIH0KLSNlbmRpZgotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTKQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEE+Ci0gICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX2FycmF5PFQ+Ojp0eXBlCi0gICAgYWxsb2NhdGVfc2hhcmVkKGNvbnN0IEEmIGFsbG9jYXRvciwgc3RkOjpzaXplX3Qgc2l6ZSwKLSAgICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfYmFzZTxUPjo6dHlwZSYmIHZhbHVlKSB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfaW5uZXI8VD46OnR5cGUgVDE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfYmFzZTxUMT46OnR5cGUgVDI7Ci0gICAgICAgIFQxKiBwMSA9IDA7Ci0gICAgICAgIFQyKiBwMiA9IDA7Ci0gICAgICAgIHN0ZDo6c2l6ZV90IG4xID0gc2l6ZSAqIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X3RvdGFsPFQxPjo6c2l6ZTsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6YWxsb2NhdGVfYXJyYXlfaGVscGVyPEEsIFQyW10+IGExKGFsbG9jYXRvciwgbjEsICZwMik7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2RlbGV0ZXI8VDJbXT4gZDEobjEpOwotICAgICAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjxUPiBzMShwMSwgZDEsIGExKTsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9kZWxldGVyPFQyW10+KiBEMjsKLSAgICAgICAgcDEgPSByZWludGVycHJldF9jYXN0PFQxKj4ocDIpOwotICAgICAgICBEMiBkMiA9IHN0YXRpY19jYXN0PEQyPihzMS5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpKTsKLSAgICAgICAgZDItPmluaXQocDIsIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8VDI+KHZhbHVlKSk7Ci0gICAgICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjxUPihzMSwgcDEpOwotICAgIH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBBPgotICAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9zaXplX2FycmF5PFQ+Ojp0eXBlCi0gICAgYWxsb2NhdGVfc2hhcmVkKGNvbnN0IEEmIGFsbG9jYXRvciwKLSAgICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfYmFzZTxUPjo6dHlwZSYmIHZhbHVlKSB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfaW5uZXI8VD46OnR5cGUgVDE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfYmFzZTxUMT46OnR5cGUgVDI7Ci0gICAgICAgIGVudW0gewotICAgICAgICAgICAgTiA9IG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X3RvdGFsPFQ+OjpzaXplCi0gICAgICAgIH07Ci0gICAgICAgIFQxKiBwMSA9IDA7Ci0gICAgICAgIFQyKiBwMiA9IDA7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmFsbG9jYXRlX2FycmF5X2hlbHBlcjxBLCBUMltOXT4gYTEoYWxsb2NhdG9yLCAmcDIpOwotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9kZWxldGVyPFQyW05dPiBkMTsKLSAgICAgICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8VD4gczEocDEsIGQxLCBhMSk7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfZGVsZXRlcjxUMltOXT4qIEQyOwotICAgICAgICBwMSA9IHJlaW50ZXJwcmV0X2Nhc3Q8VDEqPihwMik7Ci0gICAgICAgIEQyIGQyID0gc3RhdGljX2Nhc3Q8RDI+KHMxLl9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkpOwotICAgICAgICBkMi0+aW5pdChwMiwgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxUMj4odmFsdWUpKTsKLSAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPFQ+KHMxLCBwMSk7Ci0gICAgfQotI2VuZGlmCi0jZW5kaWYKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBBPgotICAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9hcnJheTxUPjo6dHlwZQotICAgIGFsbG9jYXRlX3NoYXJlZF9ub2luaXQoY29uc3QgQSYgYWxsb2NhdG9yLCBzdGQ6OnNpemVfdCBzaXplKSB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfaW5uZXI8VD46OnR5cGUgVDE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfYmFzZTxUMT46OnR5cGUgVDI7Ci0gICAgICAgIFQxKiBwMSA9IDA7Ci0gICAgICAgIFQyKiBwMiA9IDA7Ci0gICAgICAgIHN0ZDo6c2l6ZV90IG4xID0gc2l6ZSAqIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X3RvdGFsPFQxPjo6c2l6ZTsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6YWxsb2NhdGVfYXJyYXlfaGVscGVyPEEsIFQyW10+IGExKGFsbG9jYXRvciwgbjEsICZwMik7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2RlbGV0ZXI8VDJbXT4gZDEobjEpOwotICAgICAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjxUPiBzMShwMSwgZDEsIGExKTsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9kZWxldGVyPFQyW10+KiBEMjsKLSAgICAgICAgcDEgPSByZWludGVycHJldF9jYXN0PFQxKj4ocDIpOwotICAgICAgICBEMiBkMiA9IHN0YXRpY19jYXN0PEQyPihzMS5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpKTsKLSAgICAgICAgZDItPm5vaW5pdChwMik7Ci0gICAgICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjxUPihzMSwgcDEpOwotICAgIH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBBPgotICAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9zaXplX2FycmF5PFQ+Ojp0eXBlCi0gICAgYWxsb2NhdGVfc2hhcmVkX25vaW5pdChjb25zdCBBJiBhbGxvY2F0b3IpIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9pbm5lcjxUPjo6dHlwZSBUMTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9iYXNlPFQxPjo6dHlwZSBUMjsKLSAgICAgICAgZW51bSB7Ci0gICAgICAgICAgICBOID0gbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfdG90YWw8VD46OnNpemUKLSAgICAgICAgfTsKLSAgICAgICAgVDEqIHAxID0gMDsKLSAgICAgICAgVDIqIHAyID0gMDsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6YWxsb2NhdGVfYXJyYXlfaGVscGVyPEEsIFQyW05dPiBhMShhbGxvY2F0b3IsICZwMik7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2RlbGV0ZXI8VDJbTl0+IGQxOwotICAgICAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjxUPiBzMShwMSwgZDEsIGExKTsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9kZWxldGVyPFQyW05dPiogRDI7Ci0gICAgICAgIHAxID0gcmVpbnRlcnByZXRfY2FzdDxUMSo+KHAyKTsKLSAgICAgICAgRDIgZDIgPSBzdGF0aWNfY2FzdDxEMj4oczEuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSk7Ci0gICAgICAgIGQyLT5ub2luaXQocDIpOwotICAgICAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8VD4oczEsIHAxKTsKLSAgICB9Ci19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvYmFkX3dlYWtfcHRyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2JhZF93ZWFrX3B0ci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4MDgzYzQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvYmFkX3dlYWtfcHRyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0JBRF9XRUFLX1BUUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX0JBRF9XRUFLX1BUUl9IUFBfSU5DTFVERUQKLQotLy8gTVMgY29tcGF0aWJsZSBjb21waWxlcnMgc3VwcG9ydCAjcHJhZ21hIG9uY2UKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLS8vCi0vLyAgbmRuYm9vc3Qvc21hcnRfcHRyL2JhZF93ZWFrX3B0ci5ocHAKLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAxLCAyMDAyLCAyMDAzIFBldGVyIERpbW92IGFuZCBNdWx0aSBNZWRpYSBMdGQuCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotI2luY2x1ZGUgPGV4Y2VwdGlvbj4KLQotI2lmZGVmIF9fQk9STEFORENfXwotIyBwcmFnbWEgd2FybiAtODAyNiAgICAgLy8gRnVuY3Rpb25zIHdpdGggZXhjZXAuIHNwZWMuIGFyZSBub3QgZXhwYW5kZWQgaW5saW5lCi0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLS8vIFRoZSBzdGFuZGFyZCBsaWJyYXJ5IHRoYXQgY29tZXMgd2l0aCBCb3JsYW5kIEMrKyA1LjUuMSwgNS42LjQKLS8vIGRlZmluZXMgc3RkOjpleGNlcHRpb24gYW5kIGl0cyBtZW1iZXJzIGFzIGhhdmluZyBDIGNhbGxpbmcKLS8vIGNvbnZlbnRpb24gKC1wYykuIFdoZW4gdGhlIGRlZmluaXRpb24gb2YgYmFkX3dlYWtfcHRyCi0vLyBpcyBjb21waWxlZCB3aXRoIC1wcywgdGhlIGNvbXBpbGVyIGlzc3VlcyBhbiBlcnJvci4KLS8vIEhlbmNlLCB0aGUgdGVtcG9yYXJ5ICNwcmFnbWEgb3B0aW9uIC1wYyBiZWxvdy4KLQotI2lmIGRlZmluZWQoX19CT1JMQU5EQ19fKSAmJiBfX0JPUkxBTkRDX18gPD0gMHg1NjQKLSMgcHJhZ21hIG9wdGlvbiBwdXNoIC1wYwotI2VuZGlmCi0KLWNsYXNzIGJhZF93ZWFrX3B0cjogcHVibGljIHN0ZDo6ZXhjZXB0aW9uCi17Ci1wdWJsaWM6Ci0KLSAgICB2aXJ0dWFsIGNoYXIgY29uc3QgKiB3aGF0KCkgY29uc3QgdGhyb3coKQotICAgIHsKLSAgICAgICAgcmV0dXJuICJ0cjE6OmJhZF93ZWFrX3B0ciI7Ci0gICAgfQotfTsKLQotI2lmIGRlZmluZWQoX19CT1JMQU5EQ19fKSAmJiBfX0JPUkxBTkRDX18gPD0gMHg1NjQKLSMgcHJhZ21hIG9wdGlvbiBwb3AKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaWZkZWYgX19CT1JMQU5EQ19fCi0jIHByYWdtYSB3YXJuIC44MDI2ICAgICAvLyBGdW5jdGlvbnMgd2l0aCBleGNlcC4gc3BlYy4gYXJlIG5vdCBleHBhbmRlZCBpbmxpbmUKLSNlbmRpZgotCi0jZW5kaWYgIC8vICNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0JBRF9XRUFLX1BUUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9hbGxvY2F0ZV9hcnJheV9oZWxwZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2FsbG9jYXRlX2FycmF5X2hlbHBlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5ODAxZGMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2FsbG9jYXRlX2FycmF5X2hlbHBlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNjkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoYykgMjAxMiBHbGVuIEpvc2VwaCBGZXJuYW5kZXMgCi0gKiBnbGVuZmUgYXQgbGl2ZSBkb3QgY29tCi0gKgotICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIAotICogVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IAotICogb3IgY29weSBhdCBodHRwOi8vYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqLwotI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX0FMTE9DQVRFX0FSUkFZX0hFTFBFUl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9BTExPQ0FURV9BUlJBWV9IRUxQRVJfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9hbGlnbm1lbnRfb2YuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotICAgIG5hbWVzcGFjZSBkZXRhaWwgewotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBBLCB0eXBlbmFtZSBULCB0eXBlbmFtZSBZID0gY2hhcj4KLSAgICAgICAgY2xhc3MgYWxsb2NhdGVfYXJyYXlfaGVscGVyOwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBBLCB0eXBlbmFtZSBULCB0eXBlbmFtZSBZPgotICAgICAgICBjbGFzcyBhbGxvY2F0ZV9hcnJheV9oZWxwZXI8QSwgVFtdLCBZPiB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBBOSwgdHlwZW5hbWUgVDksIHR5cGVuYW1lIFk5PgotICAgICAgICAgICAgZnJpZW5kIGNsYXNzIGFsbG9jYXRlX2FycmF5X2hlbHBlcjsKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgQTo6dGVtcGxhdGUgcmViaW5kPFk+ICAgOjpvdGhlciBBMjsKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgQTo6dGVtcGxhdGUgcmViaW5kPGNoYXI+OjpvdGhlciBBMzsKLSAgICAgICAgcHVibGljOgotICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBBMjo6dmFsdWVfdHlwZSAgICAgIHZhbHVlX3R5cGU7Ci0gICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEEyOjpwb2ludGVyICAgICAgICAgcG9pbnRlcjsKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgQTI6OmNvbnN0X3BvaW50ZXIgICBjb25zdF9wb2ludGVyOwotICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBBMjo6cmVmZXJlbmNlICAgICAgIHJlZmVyZW5jZTsKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgQTI6OmNvbnN0X3JlZmVyZW5jZSBjb25zdF9yZWZlcmVuY2U7Ci0gICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEEyOjpzaXplX3R5cGUgICAgICAgc2l6ZV90eXBlOwotICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBBMjo6ZGlmZmVyZW5jZV90eXBlIGRpZmZlcmVuY2VfdHlwZTsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgICAgICAgICBzdHJ1Y3QgcmViaW5kIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIGFsbG9jYXRlX2FycmF5X2hlbHBlcjxBLCBUW10sIFU+IG90aGVyOwotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIGFsbG9jYXRlX2FycmF5X2hlbHBlcihjb25zdCBBJiBhbGxvY2F0b3JfLCBzdGQ6OnNpemVfdCBzaXplXywgVCoqIGRhdGFfKQotICAgICAgICAgICAgICAgIDogYWxsb2NhdG9yKGFsbG9jYXRvcl8pLAotICAgICAgICAgICAgICAgICAgc2l6ZShzaXplb2YoVCkgKiBzaXplXyksCi0gICAgICAgICAgICAgICAgICBkYXRhKGRhdGFfKSB7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBVPgotICAgICAgICAgICAgYWxsb2NhdGVfYXJyYXlfaGVscGVyKGNvbnN0IGFsbG9jYXRlX2FycmF5X2hlbHBlcjxBLCBUW10sIFU+JiBvdGhlcikgCi0gICAgICAgICAgICAgICAgOiBhbGxvY2F0b3Iob3RoZXIuYWxsb2NhdG9yKSwKLSAgICAgICAgICAgICAgICAgIHNpemUob3RoZXIuc2l6ZSksCi0gICAgICAgICAgICAgICAgICBkYXRhKG90aGVyLmRhdGEpIHsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHBvaW50ZXIgYWRkcmVzcyhyZWZlcmVuY2UgdmFsdWUpIGNvbnN0IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gYWxsb2NhdG9yLmFkZHJlc3ModmFsdWUpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgY29uc3RfcG9pbnRlciBhZGRyZXNzKGNvbnN0X3JlZmVyZW5jZSB2YWx1ZSkgY29uc3QgewotICAgICAgICAgICAgICAgIHJldHVybiBhbGxvY2F0b3IuYWRkcmVzcyh2YWx1ZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBzaXplX3R5cGUgbWF4X3NpemUoKSBjb25zdCB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGFsbG9jYXRvci5tYXhfc2l6ZSgpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcG9pbnRlciBhbGxvY2F0ZShzaXplX3R5cGUgY291bnQsIGNvbnN0IHZvaWQqIHZhbHVlID0gMCkgewotICAgICAgICAgICAgICAgIHN0ZDo6c2l6ZV90IGExID0gbmRuYm9vc3Q6OmFsaWdubWVudF9vZjxUPjo6dmFsdWU7Ci0gICAgICAgICAgICAgICAgc3RkOjpzaXplX3QgbjEgPSBjb3VudCAqIHNpemVvZihZKSArIGExIC0gMTsKLSAgICAgICAgICAgICAgICBjaGFyKiAgcDEgPSBBMyhhbGxvY2F0b3IpLmFsbG9jYXRlKG4xICsgc2l6ZSwgdmFsdWUpOwotICAgICAgICAgICAgICAgIGNoYXIqICBwMiA9IHAxICsgbjE7Ci0gICAgICAgICAgICAgICAgd2hpbGUgKHN0ZDo6c2l6ZV90KHAyKSAlIGExICE9IDApIHsKLSAgICAgICAgICAgICAgICAgICAgcDItLTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgKmRhdGEgPSByZWludGVycHJldF9jYXN0PFQqPihwMik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICByZWludGVycHJldF9jYXN0PFkqPihwMSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB2b2lkIGRlYWxsb2NhdGUocG9pbnRlciBtZW1vcnksIHNpemVfdHlwZSBjb3VudCkgewotICAgICAgICAgICAgICAgIHN0ZDo6c2l6ZV90IGExID0gbmRuYm9vc3Q6OmFsaWdubWVudF9vZjxUPjo6dmFsdWU7Ci0gICAgICAgICAgICAgICAgc3RkOjpzaXplX3QgbjEgPSBjb3VudCAqIHNpemVvZihZKSArIGExIC0gMTsKLSAgICAgICAgICAgICAgICBjaGFyKiAgcDEgPSByZWludGVycHJldF9jYXN0PGNoYXIqPihtZW1vcnkpOwotICAgICAgICAgICAgICAgIEEzKGFsbG9jYXRvcikuZGVhbGxvY2F0ZShwMSwgbjEgKyBzaXplKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHZvaWQgY29uc3RydWN0KHBvaW50ZXIgbWVtb3J5LCBjb25zdCBZJiB2YWx1ZSkgewotICAgICAgICAgICAgICAgIGFsbG9jYXRvci5jb25zdHJ1Y3QobWVtb3J5LCB2YWx1ZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB2b2lkIGRlc3Ryb3kocG9pbnRlciBtZW1vcnkpIHsKLSAgICAgICAgICAgICAgICBhbGxvY2F0b3IuZGVzdHJveShtZW1vcnkpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBhbGxvY2F0ZV9hcnJheV9oZWxwZXI8QSwgVFtdLCBVPiYgb3RoZXIpIGNvbnN0IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gYWxsb2NhdG9yID09IG90aGVyLmFsbG9jYXRvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgYWxsb2NhdGVfYXJyYXlfaGVscGVyPEEsIFRbXSwgVT4mIG90aGVyKSBjb25zdCB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyAKLSAgICAgICAgICAgIH0KLSAgICAgICAgcHJpdmF0ZToKLSAgICAgICAgICAgIEEyIGFsbG9jYXRvcjsKLSAgICAgICAgICAgIHN0ZDo6c2l6ZV90IHNpemU7Ci0gICAgICAgICAgICBUKiogZGF0YTsKLSAgICAgICAgfTsKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQSwgdHlwZW5hbWUgVCwgc3RkOjpzaXplX3QgTiwgdHlwZW5hbWUgWT4KLSAgICAgICAgY2xhc3MgYWxsb2NhdGVfYXJyYXlfaGVscGVyPEEsIFRbTl0sIFk+IHsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEE5LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgWTk+Ci0gICAgICAgICAgICBmcmllbmQgY2xhc3MgYWxsb2NhdGVfYXJyYXlfaGVscGVyOwotICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBBOjp0ZW1wbGF0ZSByZWJpbmQ8WT4gICA6Om90aGVyIEEyOwotICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBBOjp0ZW1wbGF0ZSByZWJpbmQ8Y2hhcj46Om90aGVyIEEzOwotICAgICAgICBwdWJsaWM6Ci0gICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEEyOjp2YWx1ZV90eXBlICAgICAgdmFsdWVfdHlwZTsKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgQTI6OnBvaW50ZXIgICAgICAgICBwb2ludGVyOwotICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBBMjo6Y29uc3RfcG9pbnRlciAgIGNvbnN0X3BvaW50ZXI7Ci0gICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEEyOjpyZWZlcmVuY2UgICAgICAgcmVmZXJlbmNlOwotICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBBMjo6Y29uc3RfcmVmZXJlbmNlIGNvbnN0X3JlZmVyZW5jZTsKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgQTI6OnNpemVfdHlwZSAgICAgICBzaXplX3R5cGU7Ci0gICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEEyOjpkaWZmZXJlbmNlX3R5cGUgZGlmZmVyZW5jZV90eXBlOwotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICAgICAgICAgIHN0cnVjdCByZWJpbmQgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgYWxsb2NhdGVfYXJyYXlfaGVscGVyPEEsIFRbTl0sIFU+IG90aGVyOwotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIGFsbG9jYXRlX2FycmF5X2hlbHBlcihjb25zdCBBJiBhbGxvY2F0b3JfLCBUKiogZGF0YV8pCi0gICAgICAgICAgICAgICAgOiBhbGxvY2F0b3IoYWxsb2NhdG9yXyksCi0gICAgICAgICAgICAgICAgICBkYXRhKGRhdGFfKSB7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBVPgotICAgICAgICAgICAgYWxsb2NhdGVfYXJyYXlfaGVscGVyKGNvbnN0IGFsbG9jYXRlX2FycmF5X2hlbHBlcjxBLCBUW05dLCBVPiYgb3RoZXIpIAotICAgICAgICAgICAgICAgIDogYWxsb2NhdG9yKG90aGVyLmFsbG9jYXRvciksCi0gICAgICAgICAgICAgICAgICBkYXRhKG90aGVyLmRhdGEpIHsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHBvaW50ZXIgYWRkcmVzcyhyZWZlcmVuY2UgdmFsdWUpIGNvbnN0IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gYWxsb2NhdG9yLmFkZHJlc3ModmFsdWUpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgY29uc3RfcG9pbnRlciBhZGRyZXNzKGNvbnN0X3JlZmVyZW5jZSB2YWx1ZSkgY29uc3QgewotICAgICAgICAgICAgICAgIHJldHVybiBhbGxvY2F0b3IuYWRkcmVzcyh2YWx1ZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBzaXplX3R5cGUgbWF4X3NpemUoKSBjb25zdCB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGFsbG9jYXRvci5tYXhfc2l6ZSgpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcG9pbnRlciBhbGxvY2F0ZShzaXplX3R5cGUgY291bnQsIGNvbnN0IHZvaWQqIHZhbHVlID0gMCkgewotICAgICAgICAgICAgICAgIHN0ZDo6c2l6ZV90IGExID0gbmRuYm9vc3Q6OmFsaWdubWVudF9vZjxUPjo6dmFsdWU7Ci0gICAgICAgICAgICAgICAgc3RkOjpzaXplX3QgbjEgPSBjb3VudCAqIHNpemVvZihZKSArIGExIC0gMTsKLSAgICAgICAgICAgICAgICBjaGFyKiAgcDEgPSBBMyhhbGxvY2F0b3IpLmFsbG9jYXRlKG4xICsgTjEsIHZhbHVlKTsKLSAgICAgICAgICAgICAgICBjaGFyKiAgcDIgPSBwMSArIG4xOwotICAgICAgICAgICAgICAgIHdoaWxlIChzdGQ6OnNpemVfdChwMikgJSBhMSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIHAyLS07Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICpkYXRhID0gcmVpbnRlcnByZXRfY2FzdDxUKj4ocDIpOwotICAgICAgICAgICAgICAgIHJldHVybiAgcmVpbnRlcnByZXRfY2FzdDxZKj4ocDEpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdm9pZCBkZWFsbG9jYXRlKHBvaW50ZXIgbWVtb3J5LCBzaXplX3R5cGUgY291bnQpIHsKLSAgICAgICAgICAgICAgICBzdGQ6OnNpemVfdCBhMSA9IG5kbmJvb3N0OjphbGlnbm1lbnRfb2Y8VD46OnZhbHVlOwotICAgICAgICAgICAgICAgIHN0ZDo6c2l6ZV90IG4xID0gY291bnQgKiBzaXplb2YoWSkgKyBhMSAtIDE7Ci0gICAgICAgICAgICAgICAgY2hhciogIHAxID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4obWVtb3J5KTsKLSAgICAgICAgICAgICAgICBBMyhhbGxvY2F0b3IpLmRlYWxsb2NhdGUocDEsIG4xICsgTjEpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdm9pZCBjb25zdHJ1Y3QocG9pbnRlciBtZW1vcnksIGNvbnN0IFkmIHZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgYWxsb2NhdG9yLmNvbnN0cnVjdChtZW1vcnksIHZhbHVlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHZvaWQgZGVzdHJveShwb2ludGVyIG1lbW9yeSkgewotICAgICAgICAgICAgICAgIGFsbG9jYXRvci5kZXN0cm95KG1lbW9yeSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGFsbG9jYXRlX2FycmF5X2hlbHBlcjxBLCBUW05dLCBVPiYgb3RoZXIpIGNvbnN0IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gYWxsb2NhdG9yID09IG90aGVyLmFsbG9jYXRvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgYWxsb2NhdGVfYXJyYXlfaGVscGVyPEEsIFRbTl0sIFU+JiBvdGhlcikgY29uc3QgewotICAgICAgICAgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgCi0gICAgICAgICAgICB9Ci0gICAgICAgIHByaXZhdGU6Ci0gICAgICAgICAgICBlbnVtIHsKLSAgICAgICAgICAgICAgICBOMSA9IE4gKiBzaXplb2YoVCkKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICBBMiBhbGxvY2F0b3I7Ci0gICAgICAgICAgICBUKiogZGF0YTsKLSAgICAgICAgfTsKLSAgICB9Ci19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2FycmF5X2RlbGV0ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2FycmF5X2RlbGV0ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2N2FlOWZkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9hcnJheV9kZWxldGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyNCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChjKSAyMDEyIEdsZW4gSm9zZXBoIEZlcm5hbmRlcwotICogZ2xlbmZlIGF0IGxpdmUgZG90IGNvbQotICoKLSAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotICogVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0Ci0gKiBvciBjb3B5IGF0IGh0dHA6Ly9ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICovCi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfQVJSQVlfREVMRVRFUl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9BUlJBWV9ERUxFVEVSX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9hcnJheV91dGlsaXR5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2ZvcndhcmQuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotICAgIG5hbWVzcGFjZSBkZXRhaWwgewotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICBjbGFzcyBhcnJheV9kZWxldGVyOwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICBjbGFzcyBhcnJheV9kZWxldGVyPFRbXT4gewotICAgICAgICBwdWJsaWM6Ci0gICAgICAgICAgICBhcnJheV9kZWxldGVyKHN0ZDo6c2l6ZV90IHNpemVfKQotICAgICAgICAgICAgICAgIDogc2l6ZShzaXplXyksCi0gICAgICAgICAgICAgICAgICBvYmplY3QoMCkgewotICAgICAgICAgICAgfQotICAgICAgICAgICAgfmFycmF5X2RlbGV0ZXIoKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG9iamVjdCkgewotICAgICAgICAgICAgICAgICAgICBhcnJheV9kZXN0cm95KG9iamVjdCwgc2l6ZSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgdm9pZCBpbml0KFQqIG1lbW9yeSkgewotICAgICAgICAgICAgICAgIGFycmF5X2luaXQobWVtb3J5LCBzaXplKTsKLSAgICAgICAgICAgICAgICBvYmplY3QgPSBtZW1vcnk7Ci0gICAgICAgICAgICB9Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMpCi0gICAgICAgICAgICB2b2lkIGluaXQoVCogbWVtb3J5LCBUJiYgdmFsdWUpIHsKLSAgICAgICAgICAgICAgICBhcnJheV9pbml0X3ZhbHVlKG1lbW9yeSwgc2l6ZSwgc3BfZm9yd2FyZDxUPih2YWx1ZSkpOwotICAgICAgICAgICAgICAgIG9iamVjdCA9IG1lbW9yeTsgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICB9Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfVEVNUExBVEVTKQotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4KLSAgICAgICAgICAgIHZvaWQgaW5pdChUKiBtZW1vcnksIEFyZ3MmJi4uLiBhcmdzKSB7Ci0gICAgICAgICAgICAgICAgYXJyYXlfaW5pdF9hcmdzKG1lbW9yeSwgc2l6ZSwgc3BfZm9yd2FyZDxBcmdzPihhcmdzKS4uLik7Ci0gICAgICAgICAgICAgICAgb2JqZWN0ID0gbWVtb3J5OwotICAgICAgICAgICAgfQotI2VuZGlmCi0jZW5kaWYKLSAgICAgICAgICAgIHZvaWQgaW5pdF9saXN0KFQqIG1lbW9yeSwgY29uc3QgVCogbGlzdCkgewotICAgICAgICAgICAgICAgIGFycmF5X2luaXRfbGlzdChtZW1vcnksIHNpemUsIGxpc3QpOwotICAgICAgICAgICAgICAgIG9iamVjdCA9IG1lbW9yeTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRlbXBsYXRlPHN0ZDo6c2l6ZV90IE0+Ci0gICAgICAgICAgICB2b2lkIGluaXRfbGlzdChUKiBtZW1vcnksIGNvbnN0IFQqIGxpc3QpIHsKLSAgICAgICAgICAgICAgICBhcnJheV9pbml0X2xpc3Q8VCwgTT4obWVtb3J5LCBzaXplLCBsaXN0KTsKLSAgICAgICAgICAgICAgICBvYmplY3QgPSBtZW1vcnk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB2b2lkIG5vaW5pdChUKiBtZW1vcnkpIHsKLSAgICAgICAgICAgICAgICBhcnJheV9ub2luaXQobWVtb3J5LCBzaXplKTsKLSAgICAgICAgICAgICAgICBvYmplY3QgPSBtZW1vcnk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB2b2lkIG9wZXJhdG9yKCkoY29uc3Qgdm9pZCopIHsKLSAgICAgICAgICAgICAgICBpZiAob2JqZWN0KSB7Ci0gICAgICAgICAgICAgICAgICAgIGFycmF5X2Rlc3Ryb3kob2JqZWN0LCBzaXplKTsKLSAgICAgICAgICAgICAgICAgICAgb2JqZWN0ID0gMDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIHByaXZhdGU6Ci0gICAgICAgICAgICBzdGQ6OnNpemVfdCBzaXplOwotICAgICAgICAgICAgVCogb2JqZWN0OwotICAgICAgICB9OwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzdGQ6OnNpemVfdCBOPgotICAgICAgICBjbGFzcyBhcnJheV9kZWxldGVyPFRbTl0+IHsKLSAgICAgICAgcHVibGljOgotICAgICAgICAgICAgYXJyYXlfZGVsZXRlcigpCi0gICAgICAgICAgICAgICAgOiBvYmplY3QoMCkgewotICAgICAgICAgICAgfQotICAgICAgICAgICAgfmFycmF5X2RlbGV0ZXIoKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG9iamVjdCkgewotICAgICAgICAgICAgICAgICAgICBhcnJheV9kZXN0cm95KG9iamVjdCwgTik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgdm9pZCBpbml0KFQqIG1lbW9yeSkgewotICAgICAgICAgICAgICAgIGFycmF5X2luaXQobWVtb3J5LCBOKTsKLSAgICAgICAgICAgICAgICBvYmplY3QgPSBtZW1vcnk7Ci0gICAgICAgICAgICB9Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMpCi0gICAgICAgICAgICB2b2lkIGluaXQoVCogbWVtb3J5LCBUJiYgdmFsdWUpIHsKLSAgICAgICAgICAgICAgICBhcnJheV9pbml0X3ZhbHVlKG1lbW9yeSwgTiwgc3BfZm9yd2FyZDxUPih2YWx1ZSkpOwotICAgICAgICAgICAgICAgIG9iamVjdCA9IG1lbW9yeTsgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICB9Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfVEVNUExBVEVTKQotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJncz4KLSAgICAgICAgICAgIHZvaWQgaW5pdChUKiBtZW1vcnksIEFyZ3MmJi4uLiBhcmdzKSB7Ci0gICAgICAgICAgICAgICAgYXJyYXlfaW5pdF9hcmdzKG1lbW9yeSwgTiwgc3BfZm9yd2FyZDxBcmdzPihhcmdzKS4uLik7Ci0gICAgICAgICAgICAgICAgb2JqZWN0ID0gbWVtb3J5OwotICAgICAgICAgICAgfQotI2VuZGlmCi0jZW5kaWYKLSAgICAgICAgICAgIHZvaWQgaW5pdF9saXN0KFQqIG1lbW9yeSwgY29uc3QgVCogbGlzdCkgewotICAgICAgICAgICAgICAgIGFycmF5X2luaXRfbGlzdChtZW1vcnksIE4sIGxpc3QpOwotICAgICAgICAgICAgICAgIG9iamVjdCA9IG1lbW9yeTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRlbXBsYXRlPHN0ZDo6c2l6ZV90IE0+Ci0gICAgICAgICAgICB2b2lkIGluaXRfbGlzdChUKiBtZW1vcnksIGNvbnN0IFQqIGxpc3QpIHsKLSAgICAgICAgICAgICAgICBhcnJheV9pbml0X2xpc3Q8VCwgTT4obWVtb3J5LCBOLCBsaXN0KTsKLSAgICAgICAgICAgICAgICBvYmplY3QgPSBtZW1vcnk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB2b2lkIG5vaW5pdChUKiBtZW1vcnkpIHsKLSAgICAgICAgICAgICAgICBhcnJheV9ub2luaXQobWVtb3J5LCBOKTsKLSAgICAgICAgICAgICAgICBvYmplY3QgPSBtZW1vcnk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB2b2lkIG9wZXJhdG9yKCkoY29uc3Qgdm9pZCopIHsKLSAgICAgICAgICAgICAgICBpZiAob2JqZWN0KSB7Ci0gICAgICAgICAgICAgICAgICAgIGFycmF5X2Rlc3Ryb3kob2JqZWN0LCBOKTsKLSAgICAgICAgICAgICAgICAgICAgb2JqZWN0ID0gMDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIHByaXZhdGU6Ci0gICAgICAgICAgICBUKiBvYmplY3Q7Ci0gICAgICAgIH07Ci0gICAgfQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9hcnJheV90cmFpdHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2FycmF5X3RyYWl0cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE3OWI3NzYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2FycmF5X3RyYWl0cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChjKSAyMDEyIEdsZW4gSm9zZXBoIEZlcm5hbmRlcyAKLSAqIGdsZW5mZSBhdCBsaXZlIGRvdCBjb20KLSAqCi0gKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgCi0gKiBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgCi0gKiBvciBjb3B5IGF0IGh0dHA6Ly9ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICovCi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfQVJSQVlfVFJBSVRTX0hQUAotI2RlZmluZSBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX0FSUkFZX1RSQUlUU19IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9jdi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0gICAgbmFtZXNwYWNlIGRldGFpbCB7Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgIHN0cnVjdCBhcnJheV9iYXNlIHsKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OnJlbW92ZV9jdjxUPjo6dHlwZSB0eXBlOwotICAgICAgICB9OwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICBzdHJ1Y3QgYXJyYXlfYmFzZTxUW10+IHsKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYXJyYXlfYmFzZTxUPjo6dHlwZSB0eXBlOwotICAgICAgICB9OwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzdGQ6OnNpemVfdCBOPgotICAgICAgICBzdHJ1Y3QgYXJyYXlfYmFzZTxUW05dPiB7Ci0gICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFycmF5X2Jhc2U8VD46OnR5cGUgdHlwZTsKLSAgICAgICAgfTsKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgc3RydWN0IGFycmF5X3RvdGFsIHsKLSAgICAgICAgICAgIGVudW0gewotICAgICAgICAgICAgICAgIHNpemUgPSAxCi0gICAgICAgICAgICB9OwotICAgICAgICB9OwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzdGQ6OnNpemVfdCBOPgotICAgICAgICBzdHJ1Y3QgYXJyYXlfdG90YWw8VFtOXT4gewotICAgICAgICAgICAgZW51bSB7Ci0gICAgICAgICAgICAgICAgc2l6ZSA9IE4gKiBhcnJheV90b3RhbDxUPjo6c2l6ZQotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gCi0gICAgICAgIHN0cnVjdCBhcnJheV9pbm5lcjsKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgc3RydWN0IGFycmF5X2lubmVyPFRbXT4gewotICAgICAgICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgICAgIH07Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHN0ZDo6c2l6ZV90IE4+Ci0gICAgICAgIHN0cnVjdCBhcnJheV9pbm5lcjxUW05dPiB7Ci0gICAgICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICAgICAgfTsKLSAgICB9Ci19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2FycmF5X3V0aWxpdHkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2FycmF5X3V0aWxpdHkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4Njk2MzY1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9hcnJheV91dGlsaXR5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE3OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChjKSAyMDEyIEdsZW4gSm9zZXBoIEZlcm5hbmRlcyAKLSAqIGdsZW5mZSBhdCBsaXZlIGRvdCBjb20KLSAqCi0gKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgCi0gKiBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgCi0gKiBvciBjb3B5IGF0IGh0dHA6Ly9ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotICovCi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfQVJSQVlfVVRJTElUWV9IUFAKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9BUlJBWV9VVElMSVRZX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfdHJpdmlhbF9jb25zdHJ1Y3Rvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3RyaXZpYWxfZGVzdHJ1Y3Rvci5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0gICAgbmFtZXNwYWNlIGRldGFpbCB7Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgIGlubGluZSB2b2lkIGFycmF5X2Rlc3Ryb3koVCosIHN0ZDo6c2l6ZV90LCBuZG5ib29zdDo6dHJ1ZV90eXBlKSB7Ci0gICAgICAgIH0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgaW5saW5lIHZvaWQgYXJyYXlfZGVzdHJveShUKiBtZW1vcnksIHN0ZDo6c2l6ZV90IHNpemUsIG5kbmJvb3N0OjpmYWxzZV90eXBlKSB7Ci0gICAgICAgICAgICBmb3IgKHN0ZDo6c2l6ZV90IGkgPSBzaXplOyBpID4gMDsgKSB7Ci0gICAgICAgICAgICAgICAgbWVtb3J5Wy0taV0uflQoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICBpbmxpbmUgdm9pZCBhcnJheV9kZXN0cm95KFQqIG1lbW9yeSwgc3RkOjpzaXplX3Qgc2l6ZSkgewotICAgICAgICAgICAgbmRuYm9vc3Q6Omhhc190cml2aWFsX2Rlc3RydWN0b3I8VD4gdHlwZTsKLSAgICAgICAgICAgIGFycmF5X2Rlc3Ryb3kobWVtb3J5LCBzaXplLCB0eXBlKTsKLSAgICAgICAgfQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICBpbmxpbmUgdm9pZCBhcnJheV9pbml0KFQqIG1lbW9yeSwgc3RkOjpzaXplX3Qgc2l6ZSwgbmRuYm9vc3Q6OnRydWVfdHlwZSkgewotICAgICAgICAgICAgZm9yIChzdGQ6OnNpemVfdCBpID0gMDsgaSA8IHNpemU7IGkrKykgewotICAgICAgICAgICAgICAgIG1lbW9yeVtpXSA9IFQoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICBpbmxpbmUgdm9pZCBhcnJheV9pbml0KFQqIG1lbW9yeSwgc3RkOjpzaXplX3Qgc2l6ZSwgbmRuYm9vc3Q6OmZhbHNlX3R5cGUpIHsKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19FWENFUFRJT05TKQotICAgICAgICAgICAgc3RkOjpzaXplX3QgaSA9IDA7Ci0gICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIGZvciAoOyBpIDwgc2l6ZTsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZvaWQqIHAxID0gbWVtb3J5ICsgaTsKLSAgICAgICAgICAgICAgICAgICAgOjpuZXcocDEpIFQoKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGNhdGNoICguLi4pIHsKLSAgICAgICAgICAgICAgICBhcnJheV9kZXN0cm95KG1lbW9yeSwgaSk7Ci0gICAgICAgICAgICAgICAgdGhyb3c7Ci0gICAgICAgICAgICB9Ci0jZWxzZQotICAgICAgICAgICAgZm9yIChzdGQ6OnNpemVfdCBpID0gMDsgaSA8IHNpemU7IGkrKykgewotICAgICAgICAgICAgICAgIHZvaWQqIHAxID0gbWVtb3J5ICsgaTsKLSAgICAgICAgICAgICAgICA6Om5ldyhwMSkgVCgpOwotICAgICAgICAgICAgfQotI2VuZGlmCi0gICAgICAgIH0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgaW5saW5lIHZvaWQgYXJyYXlfaW5pdChUKiBtZW1vcnksIHN0ZDo6c2l6ZV90IHNpemUpIHsKLSAgICAgICAgICAgIG5kbmJvb3N0OjpoYXNfdHJpdmlhbF9kZWZhdWx0X2NvbnN0cnVjdG9yPFQ+IHR5cGU7ICAgICAgICAgICAgCi0gICAgICAgICAgICBhcnJheV9pbml0KG1lbW9yeSwgc2l6ZSwgdHlwZSk7Ci0gICAgICAgIH0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUykKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgaW5saW5lIHZvaWQgYXJyYXlfaW5pdF92YWx1ZShUKiBtZW1vcnksIHN0ZDo6c2l6ZV90IHNpemUsIFQmJiB2YWx1ZSkgewotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0VYQ0VQVElPTlMpCi0gICAgICAgICAgICBzdGQ6OnNpemVfdCBpID0gMDsKLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgZm9yICg7IGkgPCBzaXplOyBpKyspIHsKLSAgICAgICAgICAgICAgICAgICAgdm9pZCogcDEgPSBtZW1vcnkgKyBpOwotICAgICAgICAgICAgICAgICAgICA6Om5ldyhwMSkgVCh2YWx1ZSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBjYXRjaCAoLi4uKSB7Ci0gICAgICAgICAgICAgICAgYXJyYXlfZGVzdHJveShtZW1vcnksIGkpOwotICAgICAgICAgICAgICAgIHRocm93OwotICAgICAgICAgICAgfQotI2Vsc2UKLSAgICAgICAgICAgIGZvciAoc3RkOjpzaXplX3QgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKLSAgICAgICAgICAgICAgICB2b2lkKiBwMSA9IG1lbW9yeSArIGk7Ci0gICAgICAgICAgICAgICAgOjpuZXcocDEpIFQodmFsdWUpOwotICAgICAgICAgICAgfQotI2VuZGlmCi0gICAgICAgIH0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19URU1QTEFURVMpCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgICAgIGlubGluZSB2b2lkIGFycmF5X2luaXRfYXJncyhUKiBtZW1vcnksIHN0ZDo6c2l6ZV90IHNpemUsIEFyZ3MmJi4uLiBhcmdzKSB7Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fRVhDRVBUSU9OUykKLSAgICAgICAgICAgIHN0ZDo6c2l6ZV90IGkgPSAwOwotICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICBmb3IgKDsgaSA8IHNpemU7IGkrKykgewotICAgICAgICAgICAgICAgICAgICB2b2lkKiBwMSA9IG1lbW9yeSArIGk7Ci0gICAgICAgICAgICAgICAgICAgIDo6bmV3KHAxKSBUKGFyZ3MuLi4pOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gY2F0Y2ggKC4uLikgewotICAgICAgICAgICAgICAgIGFycmF5X2Rlc3Ryb3kobWVtb3J5LCBpKTsKLSAgICAgICAgICAgICAgICB0aHJvdzsKLSAgICAgICAgICAgIH0KLSNlbHNlCi0gICAgICAgICAgICBmb3IgKHN0ZDo6c2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgdm9pZCogcDEgPSBtZW1vcnkgKyBpOwotICAgICAgICAgICAgICAgIDo6bmV3KHAxKSBUKGFyZ3MuLi4pOwotICAgICAgICAgICAgfQotI2VuZGlmCi0gICAgICAgIH0KLSNlbmRpZgotI2VuZGlmCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgIGlubGluZSB2b2lkIGFycmF5X2luaXRfbGlzdChUKiBtZW1vcnksIHN0ZDo6c2l6ZV90IHNpemUsIGNvbnN0IFQqIGxpc3QpIHsKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19FWENFUFRJT05TKQotICAgICAgICAgICAgc3RkOjpzaXplX3QgaSA9IDA7Ci0gICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIGZvciAoOyBpIDwgc2l6ZTsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZvaWQqIHAxID0gbWVtb3J5ICsgaTsKLSAgICAgICAgICAgICAgICAgICAgOjpuZXcocDEpIFQobGlzdFtpXSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBjYXRjaCAoLi4uKSB7Ci0gICAgICAgICAgICAgICAgYXJyYXlfZGVzdHJveShtZW1vcnksIGkpOwotICAgICAgICAgICAgICAgIHRocm93OwotICAgICAgICAgICAgfQotI2Vsc2UKLSAgICAgICAgICAgIGZvciAoc3RkOjpzaXplX3QgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKLSAgICAgICAgICAgICAgICB2b2lkKiBwMSA9IG1lbW9yeSArIGk7Ci0gICAgICAgICAgICAgICAgOjpuZXcocDEpIFQobGlzdFtpXSk7Ci0gICAgICAgICAgICB9Ci0jZW5kaWYKLSAgICAgICAgfQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzdGQ6OnNpemVfdCBOPgotICAgICAgICBpbmxpbmUgdm9pZCBhcnJheV9pbml0X2xpc3QoVCogbWVtb3J5LCBzdGQ6OnNpemVfdCBzaXplLCBjb25zdCBUKiBsaXN0KSB7Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fRVhDRVBUSU9OUykKLSAgICAgICAgICAgIHN0ZDo6c2l6ZV90IGkgPSAwOwotICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICBmb3IgKDsgaSA8IHNpemU7IGkrKykgewotICAgICAgICAgICAgICAgICAgICB2b2lkKiBwMSA9IG1lbW9yeSArIGk7Ci0gICAgICAgICAgICAgICAgICAgIDo6bmV3KHAxKSBUKGxpc3RbaSAlIE5dKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGNhdGNoICguLi4pIHsKLSAgICAgICAgICAgICAgICBhcnJheV9kZXN0cm95KG1lbW9yeSwgaSk7Ci0gICAgICAgICAgICAgICAgdGhyb3c7Ci0gICAgICAgICAgICB9Ci0jZWxzZQotICAgICAgICAgICAgZm9yIChzdGQ6OnNpemVfdCBpID0gMDsgaSA8IHNpemU7IGkrKykgewotICAgICAgICAgICAgICAgIHZvaWQqIHAxID0gbWVtb3J5ICsgaTsKLSAgICAgICAgICAgICAgICA6Om5ldyhwMSkgVChsaXN0W2kgJSBOXSk7Ci0gICAgICAgICAgICB9Ci0jZW5kaWYKLSAgICAgICAgfQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICBpbmxpbmUgdm9pZCBhcnJheV9ub2luaXQoVCosIHN0ZDo6c2l6ZV90LCBuZG5ib29zdDo6dHJ1ZV90eXBlKSB7Ci0gICAgICAgIH0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgaW5saW5lIHZvaWQgYXJyYXlfbm9pbml0KFQqIG1lbW9yeSwgc3RkOjpzaXplX3Qgc2l6ZSwgbmRuYm9vc3Q6OmZhbHNlX3R5cGUpIHsKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19FWENFUFRJT05TKQotICAgICAgICAgICAgc3RkOjpzaXplX3QgaSA9IDA7Ci0gICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIGZvciAoOyBpIDwgc2l6ZTsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZvaWQqIHAxID0gbWVtb3J5ICsgaTsKLSAgICAgICAgICAgICAgICAgICAgOjpuZXcocDEpIFQ7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBjYXRjaCAoLi4uKSB7Ci0gICAgICAgICAgICAgICAgYXJyYXlfZGVzdHJveShtZW1vcnksIGkpOwotICAgICAgICAgICAgICAgIHRocm93OwotICAgICAgICAgICAgfQotI2Vsc2UKLSAgICAgICAgICAgIGZvciAoc3RkOjpzaXplX3QgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKLSAgICAgICAgICAgICAgICB2b2lkKiBwMSA9IG1lbW9yeSArIGk7Ci0gICAgICAgICAgICAgICAgOjpuZXcocDEpIFQ7Ci0gICAgICAgICAgICB9Ci0jZW5kaWYKLSAgICAgICAgfQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICBpbmxpbmUgdm9pZCBhcnJheV9ub2luaXQoVCogbWVtb3J5LCBzdGQ6OnNpemVfdCBzaXplKSB7Ci0gICAgICAgICAgICBuZG5ib29zdDo6aGFzX3RyaXZpYWxfZGVmYXVsdF9jb25zdHJ1Y3RvcjxUPiB0eXBlOwotICAgICAgICAgICAgYXJyYXlfbm9pbml0KG1lbW9yeSwgc2l6ZSwgdHlwZSk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2F0b21pY19jb3VudC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvYXRvbWljX2NvdW50LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWQ1NWYyNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvYXRvbWljX2NvdW50LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExOSArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfQVRPTUlDX0NPVU5UX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX0FUT01JQ19DT1VOVF9IUFBfSU5DTFVERUQKLQotLy8gTVMgY29tcGF0aWJsZSBjb21waWxlcnMgc3VwcG9ydCAjcHJhZ21hIG9uY2UKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLS8vCi0vLyAgbmRuYm9vc3QvZGV0YWlsL2F0b21pY19jb3VudC5ocHAgLSB0aHJlYWQvU01QIHNhZmUgcmVmZXJlbmNlIGNvdW50ZXIKLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAxLCAyMDAyIFBldGVyIERpbW92IGFuZCBNdWx0aSBNZWRpYSBMdGQuCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vICB0eXBlZGVmIDxpbXBsZW1lbnRhdGlvbi1kZWZpbmVkPiBuZG5ib29zdDo6ZGV0YWlsOjphdG9taWNfY291bnQ7Ci0vLwotLy8gIGF0b21pY19jb3VudCBhKG4pOwotLy8KLS8vICAgIChuIGlzIGNvbnZlcnRpYmxlIHRvIGxvbmcpCi0vLwotLy8gICAgRWZmZWN0czogQ29uc3RydWN0cyBhbiBhdG9taWNfY291bnQgd2l0aCBhbiBpbml0aWFsIHZhbHVlIG9mIG4KLS8vCi0vLyAgYTsKLS8vCi0vLyAgICBSZXR1cm5zOiAobG9uZykgdGhlIGN1cnJlbnQgdmFsdWUgb2YgYQotLy8KLS8vICArK2E7Ci0vLwotLy8gICAgRWZmZWN0czogQXRvbWljYWxseSBpbmNyZW1lbnRzIHRoZSB2YWx1ZSBvZiBhCi0vLyAgICBSZXR1cm5zOiAobG9uZykgdGhlIG5ldyB2YWx1ZSBvZiBhCi0vLwotLy8gIC0tYTsKLS8vCi0vLyAgICBFZmZlY3RzOiBBdG9taWNhbGx5IGRlY3JlbWVudHMgdGhlIHZhbHVlIG9mIGEKLS8vICAgIFJldHVybnM6IChsb25nKSB0aGUgbmV3IHZhbHVlIG9mIGEKLS8vCi0vLyAgICBJbXBvcnRhbnQgbm90ZTogd2hlbiAtLWEgcmV0dXJucyB6ZXJvLCBpdCBtdXN0IGFjdCBhcyBhCi0vLyAgICAgIHJlYWQgbWVtb3J5IGJhcnJpZXIgKFJNQik7IGkuZS4gdGhlIGNhbGxpbmcgdGhyZWFkIG11c3QKLS8vICAgICAgaGF2ZSBhIHN5bmNocm9uaXplZCB2aWV3IG9mIHRoZSBtZW1vcnkKLS8vCi0vLyAgICBPbiBJbnRlbCBJQS0zMiAoeDg2KSBtZW1vcnkgaXMgYWx3YXlzIHN5bmNocm9uaXplZCwgc28gdGhpcwotLy8gICAgICBpcyBub3QgYSBwcm9ibGVtLgotLy8KLS8vICAgIE9uIG1hbnkgYXJjaGl0ZWN0dXJlcyB0aGUgYXRvbWljIGluc3RydWN0aW9ucyBhbHJlYWR5IGFjdCBhcwotLy8gICAgICBhIG1lbW9yeSBiYXJyaWVyLgotLy8KLS8vICAgIFRoaXMgcHJvcGVydHkgaXMgbmVjZXNzYXJ5IGZvciBwcm9wZXIgcmVmZXJlbmNlIGNvdW50aW5nLCBzaW5jZQotLy8gICAgICBhIHRocmVhZCBjYW4gdXBkYXRlIHRoZSBjb250ZW50cyBvZiBhIHNoYXJlZCBvYmplY3QsIHRoZW4KLS8vICAgICAgcmVsZWFzZSBpdHMgcmVmZXJlbmNlLCBhbmQgYW5vdGhlciB0aHJlYWQgbWF5IGltbWVkaWF0ZWx5Ci0vLyAgICAgIHJlbGVhc2UgdGhlIGxhc3QgcmVmZXJlbmNlIGNhdXNpbmcgb2JqZWN0IGRlc3RydWN0aW9uLgotLy8KLS8vICAgIFRoZSBkZXN0cnVjdG9yIG5lZWRzIHRvIGhhdmUgYSBzeW5jaHJvbml6ZWQgdmlldyBvZiB0aGUKLS8vICAgICAgb2JqZWN0IHRvIHBlcmZvcm0gcHJvcGVyIGNsZWFudXAuCi0vLwotLy8gICAgT3JpZ2luYWwgZXhhbXBsZSBieSBBbGV4YW5kZXIgVGVyZWtob3Y6Ci0vLwotLy8gICAgR2l2ZW46Ci0vLwotLy8gICAgLSBhIG11dGFibGUgc2hhcmVkIG9iamVjdCBPQko7Ci0vLyAgICAtIHR3byB0aHJlYWRzIFRIUkVBRDEgYW5kIFRIUkVBRDIgZWFjaCBob2xkaW5nIAotLy8gICAgICBhIHByaXZhdGUgc21hcnRfcHRyIG9iamVjdCBwb2ludGluZyB0byB0aGF0IE9CSi4KLS8vCi0vLyAgICB0MTogVEhSRUFEMSB1cGRhdGVzIE9CSiAodGhyZWFkLXNhZmUgdmlhIHNvbWUgc3luY2hyb25pemF0aW9uKQotLy8gICAgICBhbmQgYSBmZXcgY3ljbGVzIGxhdGVyIChhZnRlciAidW5sb2NrIikgZGVzdHJveXMgc21hcnRfcHRyOwotLy8KLS8vICAgIHQyOiBUSFJFQUQyIGRlc3Ryb3lzIHNtYXJ0X3B0ciBXSVRIT1VUIGRvaW5nIGFueSBzeW5jaHJvbml6YXRpb24gCi0vLyAgICAgIHdpdGggcmVzcGVjdCB0byBzaGFyZWQgbXV0YWJsZSBvYmplY3QgT0JKOyBPQkogZGVzdHJ1Y3RvcnMKLS8vICAgICAgYXJlIGNhbGxlZCBkcml2ZW4gYnkgc21hcnRfcHRyIGludGVyZmFjZS4uLgotLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9oYXNfc3luYy5ocHA+Ci0KLSNpZm5kZWYgTkROQk9PU1RfSEFTX1RIUkVBRFMKLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLW5hbWVzcGFjZSBkZXRhaWwKLXsKLQotdHlwZWRlZiBsb25nIGF0b21pY19jb3VudDsKLQotfQotCi19Ci0KLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfQUNfVVNFX1BUSFJFQURTKQotIyAgaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9hdG9taWNfY291bnRfcHRocmVhZHMuaHBwPgotCi0jZWxpZiBkZWZpbmVkKCBfX0dOVUNfXyApICYmICggZGVmaW5lZCggX19pMzg2X18gKSB8fCBkZWZpbmVkKCBfX3g4Nl82NF9fICkgKQotIyAgaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9hdG9taWNfY291bnRfZ2NjX3g4Ni5ocHA+Ci0KLSNlbGlmIGRlZmluZWQoV0lOMzIpIHx8IGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fV0lOMzJfXykgfHwgZGVmaW5lZChfX0NZR1dJTl9fKQotIyAgaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9hdG9taWNfY291bnRfd2luMzIuaHBwPgotCi0jZWxpZiBkZWZpbmVkKCBORE5CT09TVF9TUF9IQVNfU1lOQyApCi0jICBpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2F0b21pY19jb3VudF9zeW5jLmhwcD4KLQotI2VsaWYgZGVmaW5lZChfX0dMSUJDUFBfXykgfHwgZGVmaW5lZChfX0dMSUJDWFhfXykKLSMgIGluY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvYXRvbWljX2NvdW50X2djYy5ocHA+Ci0KLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfSEFTX1BUSFJFQURTKQotCi0jICBkZWZpbmUgTkROQk9PU1RfQUNfVVNFX1BUSFJFQURTCi0jICBpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2F0b21pY19jb3VudF9wdGhyZWFkcy5ocHA+Ci0KLSNlbHNlCi0KLS8vIFVzZSAjZGVmaW5lIE5ETkJPT1NUX0RJU0FCTEVfVEhSRUFEUyB0byBhdm9pZCB0aGUgZXJyb3IKLSNlcnJvciBVbnJlY29nbml6ZWQgdGhyZWFkaW5nIHBsYXRmb3JtCi0KLSNlbmRpZgotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX0FUT01JQ19DT1VOVF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9hdG9taWNfY291bnRfZ2NjLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9hdG9taWNfY291bnRfZ2NjLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzcyMGNkZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvYXRvbWljX2NvdW50X2djYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MiArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfQVRPTUlDX0NPVU5UX0dDQ19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9BVE9NSUNfQ09VTlRfR0NDX0hQUF9JTkNMVURFRAotCi0vLwotLy8gIG5kbmJvb3N0L2RldGFpbC9hdG9taWNfY291bnRfZ2NjLmhwcAotLy8KLS8vICBhdG9taWNfY291bnQgZm9yIEdOVSBsaWJzdGRjKysgdjMKLS8vCi0vLyAgaHR0cDovL2djYy5nbnUub3JnL29ubGluZWRvY3MvcG9ydGluZy9UaHJlYWQtc2FmZXR5Lmh0bWwKLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAxLCAyMDAyIFBldGVyIERpbW92IGFuZCBNdWx0aSBNZWRpYSBMdGQuCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAyIExhcnMgR3VsbGlrIEJq+G5uZXMgPGxhcnNiakBseXgub3JnPgotLy8gIENvcHlyaWdodCAyMDAzLTIwMDUgUGV0ZXIgRGltb3YKLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0jaWYgX19HTlVDX18gKiAxMDAgKyBfX0dOVUNfTUlOT1JfXyA+PSA0MDIKLSMgaW5jbHVkZSA8ZXh0L2F0b21pY2l0eS5oPiAKLSNlbHNlIAotIyBpbmNsdWRlIDxiaXRzL2F0b21pY2l0eS5oPgotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi1uYW1lc3BhY2UgZGV0YWlsCi17Ci0KLSNpZiBkZWZpbmVkKF9fR0xJQkNYWF9fKSAvLyBnKysgMy40KwotCi11c2luZyBfX2dudV9jeHg6Ol9fYXRvbWljX2FkZDsKLXVzaW5nIF9fZ251X2N4eDo6X19leGNoYW5nZV9hbmRfYWRkOwotCi0jZW5kaWYKLQotY2xhc3MgYXRvbWljX2NvdW50Ci17Ci1wdWJsaWM6Ci0KLSAgICBleHBsaWNpdCBhdG9taWNfY291bnQoIGxvbmcgdiApIDogdmFsdWVfKCB2ICkge30KLQotICAgIGxvbmcgb3BlcmF0b3IrKygpCi0gICAgewotICAgICAgICByZXR1cm4gX19leGNoYW5nZV9hbmRfYWRkKCAmdmFsdWVfLCArMSApICsgMTsKLSAgICB9Ci0KLSAgICBsb25nIG9wZXJhdG9yLS0oKQotICAgIHsKLSAgICAgICAgcmV0dXJuIF9fZXhjaGFuZ2VfYW5kX2FkZCggJnZhbHVlXywgLTEgKSAtIDE7Ci0gICAgfQotCi0gICAgb3BlcmF0b3IgbG9uZygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gX19leGNoYW5nZV9hbmRfYWRkKCAmdmFsdWVfLCAwICk7Ci0gICAgfQotCi1wcml2YXRlOgotCi0gICAgYXRvbWljX2NvdW50KGF0b21pY19jb3VudCBjb25zdCAmKTsKLSAgICBhdG9taWNfY291bnQgJiBvcGVyYXRvcj0oYXRvbWljX2NvdW50IGNvbnN0ICYpOwotCi0gICAgbXV0YWJsZSBfQXRvbWljX3dvcmQgdmFsdWVfOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfQVRPTUlDX0NPVU5UX0dDQ19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9hdG9taWNfY291bnRfZ2NjX3g4Ni5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvYXRvbWljX2NvdW50X2djY194ODYuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNGIxZTFkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9hdG9taWNfY291bnRfZ2NjX3g4Ni5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3NyArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfQVRPTUlDX0NPVU5UX0dDQ19YODZfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfQVRPTUlDX0NPVU5UX0dDQ19YODZfSFBQX0lOQ0xVREVECi0KLS8vCi0vLyAgbmRuYm9vc3QvZGV0YWlsL2F0b21pY19jb3VudF9nY2NfeDg2LmhwcAotLy8KLS8vICBhdG9taWNfY291bnQgZm9yIGcrKyBvbiA0ODYrL0FNRDY0Ci0vLwotLy8gIENvcHlyaWdodCAyMDA3IFBldGVyIERpbW92Ci0vLwotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLW5hbWVzcGFjZSBkZXRhaWwKLXsKLQotY2xhc3MgYXRvbWljX2NvdW50Ci17Ci1wdWJsaWM6Ci0KLSAgICBleHBsaWNpdCBhdG9taWNfY291bnQoIGxvbmcgdiApIDogdmFsdWVfKCBzdGF0aWNfY2FzdDwgaW50ID4oIHYgKSApIHt9Ci0KLSAgICBsb25nIG9wZXJhdG9yKysoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGF0b21pY19leGNoYW5nZV9hbmRfYWRkKCAmdmFsdWVfLCArMSApICsgMTsKLSAgICB9Ci0KLSAgICBsb25nIG9wZXJhdG9yLS0oKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGF0b21pY19leGNoYW5nZV9hbmRfYWRkKCAmdmFsdWVfLCAtMSApIC0gMTsKLSAgICB9Ci0KLSAgICBvcGVyYXRvciBsb25nKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBhdG9taWNfZXhjaGFuZ2VfYW5kX2FkZCggJnZhbHVlXywgMCApOwotICAgIH0KLQotcHJpdmF0ZToKLQotICAgIGF0b21pY19jb3VudChhdG9taWNfY291bnQgY29uc3QgJik7Ci0gICAgYXRvbWljX2NvdW50ICYgb3BlcmF0b3I9KGF0b21pY19jb3VudCBjb25zdCAmKTsKLQotICAgIG11dGFibGUgaW50IHZhbHVlXzsKLQotcHJpdmF0ZToKLQotICAgIHN0YXRpYyBpbnQgYXRvbWljX2V4Y2hhbmdlX2FuZF9hZGQoIGludCAqIHB3LCBpbnQgZHYgKQotICAgIHsKLSAgICAgICAgLy8gaW50IHIgPSAqcHc7Ci0gICAgICAgIC8vICpwdyArPSBkdjsKLSAgICAgICAgLy8gcmV0dXJuIHI7Ci0KLSAgICAgICAgaW50IHI7Ci0KLSAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18KLSAgICAgICAgKAotICAgICAgICAgICAgImxvY2tcblx0IgotICAgICAgICAgICAgInhhZGQgJTEsICUwIjoKLSAgICAgICAgICAgICIrbSIoICpwdyApLCAiPXIiKCByICk6IC8vIG91dHB1dHMgKCUwLCAlMSkKLSAgICAgICAgICAgICIxIiggZHYgKTogLy8gaW5wdXRzICglMiA9PSAlMSkKLSAgICAgICAgICAgICJtZW1vcnkiLCAiY2MiIC8vIGNsb2JiZXJzCi0gICAgICAgICk7Ci0KLSAgICAgICAgcmV0dXJuIHI7Ci0gICAgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfQVRPTUlDX0NPVU5UX0dDQ19YODZfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvYXRvbWljX2NvdW50X3B0aHJlYWRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9hdG9taWNfY291bnRfcHRocmVhZHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZjBjYmU4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9hdG9taWNfY291bnRfcHRocmVhZHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTYgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX0FUT01JQ19DT1VOVF9QVEhSRUFEU19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9BVE9NSUNfQ09VTlRfUFRIUkVBRFNfSFBQX0lOQ0xVREVECi0KLS8vCi0vLyAgbmRuYm9vc3QvZGV0YWlsL2F0b21pY19jb3VudF9wdGhyZWFkcy5ocHAKLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAxLCAyMDAyIFBldGVyIERpbW92IGFuZCBNdWx0aSBNZWRpYSBMdGQuCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotI2luY2x1ZGUgPHB0aHJlYWQuaD4KLQotLy8KLS8vICBUaGUgZ2VuZXJpYyBwdGhyZWFkX211dGV4LWJhc2VkIGltcGxlbWVudGF0aW9uIHNvbWV0aW1lcyBsZWFkcyB0bwotLy8gICAgaW5lZmZpY2llbmNpZXMuIEV4YW1wbGU6IGEgY2xhc3Mgd2l0aCB0d28gYXRvbWljX2NvdW50IG1lbWJlcnMKLS8vICAgIGNhbiBnZXQgYXdheSB3aXRoIGEgc2luZ2xlIG11dGV4LgotLy8KLS8vICBVc2VycyBjYW4gZGV0ZWN0IHRoaXMgc2l0dWF0aW9uIGJ5IGNoZWNraW5nIE5ETkJPT1NUX0FDX1VTRV9QVEhSRUFEUy4KLS8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi1uYW1lc3BhY2UgZGV0YWlsCi17Ci0KLWNsYXNzIGF0b21pY19jb3VudAotewotcHJpdmF0ZToKLQotICAgIGNsYXNzIHNjb3BlZF9sb2NrCi0gICAgewotICAgIHB1YmxpYzoKLQotICAgICAgICBzY29wZWRfbG9jayhwdGhyZWFkX211dGV4X3QgJiBtKTogbV8obSkKLSAgICAgICAgewotICAgICAgICAgICAgcHRocmVhZF9tdXRleF9sb2NrKCZtXyk7Ci0gICAgICAgIH0KLQotICAgICAgICB+c2NvcGVkX2xvY2soKQotICAgICAgICB7Ci0gICAgICAgICAgICBwdGhyZWFkX211dGV4X3VubG9jaygmbV8pOwotICAgICAgICB9Ci0KLSAgICBwcml2YXRlOgotCi0gICAgICAgIHB0aHJlYWRfbXV0ZXhfdCAmIG1fOwotICAgIH07Ci0KLXB1YmxpYzoKLQotICAgIGV4cGxpY2l0IGF0b21pY19jb3VudChsb25nIHYpOiB2YWx1ZV8odikKLSAgICB7Ci0gICAgICAgIHB0aHJlYWRfbXV0ZXhfaW5pdCgmbXV0ZXhfLCAwKTsKLSAgICB9Ci0KLSAgICB+YXRvbWljX2NvdW50KCkKLSAgICB7Ci0gICAgICAgIHB0aHJlYWRfbXV0ZXhfZGVzdHJveSgmbXV0ZXhfKTsKLSAgICB9Ci0KLSAgICBsb25nIG9wZXJhdG9yKysoKQotICAgIHsKLSAgICAgICAgc2NvcGVkX2xvY2sgbG9jayhtdXRleF8pOwotICAgICAgICByZXR1cm4gKyt2YWx1ZV87Ci0gICAgfQotCi0gICAgbG9uZyBvcGVyYXRvci0tKCkKLSAgICB7Ci0gICAgICAgIHNjb3BlZF9sb2NrIGxvY2sobXV0ZXhfKTsKLSAgICAgICAgcmV0dXJuIC0tdmFsdWVfOwotICAgIH0KLQotICAgIG9wZXJhdG9yIGxvbmcoKSBjb25zdAotICAgIHsKLSAgICAgICAgc2NvcGVkX2xvY2sgbG9jayhtdXRleF8pOwotICAgICAgICByZXR1cm4gdmFsdWVfOwotICAgIH0KLQotcHJpdmF0ZToKLQotICAgIGF0b21pY19jb3VudChhdG9taWNfY291bnQgY29uc3QgJik7Ci0gICAgYXRvbWljX2NvdW50ICYgb3BlcmF0b3I9KGF0b21pY19jb3VudCBjb25zdCAmKTsKLQotICAgIG11dGFibGUgcHRocmVhZF9tdXRleF90IG11dGV4XzsKLSAgICBsb25nIHZhbHVlXzsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX0FUT01JQ19DT1VOVF9QVEhSRUFEU19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9hdG9taWNfY291bnRfc3luYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvYXRvbWljX2NvdW50X3N5bmMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZTFmYTQ2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9hdG9taWNfY291bnRfc3luYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfQVRPTUlDX0NPVU5UX1NZTkNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfQVRPTUlDX0NPVU5UX1NZTkNfSFBQX0lOQ0xVREVECi0KLS8vCi0vLyAgbmRuYm9vc3QvZGV0YWlsL2F0b21pY19jb3VudF9zeW5jLmhwcAotLy8KLS8vICBhdG9taWNfY291bnQgZm9yIGcrKyA0LjErCi0vLwotLy8gIGh0dHA6Ly9nY2MuZ251Lm9yZy9vbmxpbmVkb2NzL2djYy00LjEuMS9nY2MvQXRvbWljLUJ1aWx0aW5zLmh0bWwKLS8vCi0vLyAgQ29weXJpZ2h0IDIwMDcgUGV0ZXIgRGltb3YKLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0jaWYgZGVmaW5lZCggX19pYTY0X18gKSAmJiBkZWZpbmVkKCBfX0lOVEVMX0NPTVBJTEVSICkKLSMgaW5jbHVkZSA8aWE2NGludHJpbi5oPgotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi1uYW1lc3BhY2UgZGV0YWlsCi17Ci0KLWNsYXNzIGF0b21pY19jb3VudAotewotcHVibGljOgotCi0gICAgZXhwbGljaXQgYXRvbWljX2NvdW50KCBsb25nIHYgKSA6IHZhbHVlXyggdiApIHt9Ci0KLSAgICBsb25nIG9wZXJhdG9yKysoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIF9fc3luY19hZGRfYW5kX2ZldGNoKCAmdmFsdWVfLCAxICk7Ci0gICAgfQotCi0gICAgbG9uZyBvcGVyYXRvci0tKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBfX3N5bmNfYWRkX2FuZF9mZXRjaCggJnZhbHVlXywgLTEgKTsKLSAgICB9Ci0KLSAgICBvcGVyYXRvciBsb25nKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBfX3N5bmNfZmV0Y2hfYW5kX2FkZCggJnZhbHVlXywgMCApOwotICAgIH0KLQotcHJpdmF0ZToKLQotICAgIGF0b21pY19jb3VudChhdG9taWNfY291bnQgY29uc3QgJik7Ci0gICAgYXRvbWljX2NvdW50ICYgb3BlcmF0b3I9KGF0b21pY19jb3VudCBjb25zdCAmKTsKLQotICAgIG11dGFibGUgbG9uZyB2YWx1ZV87Ci19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9BVE9NSUNfQ09VTlRfU1lOQ19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9hdG9taWNfY291bnRfd2luMzIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2F0b21pY19jb3VudF93aW4zMi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMxYzJiMTYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2F0b21pY19jb3VudF93aW4zMi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MyArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfQVRPTUlDX0NPVU5UX1dJTjMyX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX0FUT01JQ19DT1VOVF9XSU4zMl9IUFBfSU5DTFVERUQKLQotLy8gTVMgY29tcGF0aWJsZSBjb21waWxlcnMgc3VwcG9ydCAjcHJhZ21hIG9uY2UKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLS8vCi0vLyAgbmRuYm9vc3QvZGV0YWlsL2F0b21pY19jb3VudF93aW4zMi5ocHAKLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAxLTIwMDUgUGV0ZXIgRGltb3YKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL2ludGVybG9ja2VkLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLW5hbWVzcGFjZSBkZXRhaWwKLXsKLQotY2xhc3MgYXRvbWljX2NvdW50Ci17Ci1wdWJsaWM6Ci0KLSAgICBleHBsaWNpdCBhdG9taWNfY291bnQoIGxvbmcgdiApOiB2YWx1ZV8oIHYgKQotICAgIHsKLSAgICB9Ci0KLSAgICBsb25nIG9wZXJhdG9yKysoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIE5ETkJPT1NUX0lOVEVSTE9DS0VEX0lOQ1JFTUVOVCggJnZhbHVlXyApOwotICAgIH0KLQotICAgIGxvbmcgb3BlcmF0b3ItLSgpCi0gICAgewotICAgICAgICByZXR1cm4gTkROQk9PU1RfSU5URVJMT0NLRURfREVDUkVNRU5UKCAmdmFsdWVfICk7Ci0gICAgfQotCi0gICAgb3BlcmF0b3IgbG9uZygpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8bG9uZyBjb25zdCB2b2xhdGlsZSAmPiggdmFsdWVfICk7Ci0gICAgfQotCi1wcml2YXRlOgotCi0gICAgYXRvbWljX2NvdW50KCBhdG9taWNfY291bnQgY29uc3QgJiApOwotICAgIGF0b21pY19jb3VudCAmIG9wZXJhdG9yPSggYXRvbWljX2NvdW50IGNvbnN0ICYgKTsKLQotICAgIGxvbmcgdmFsdWVfOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfQVRPTUlDX0NPVU5UX1dJTjMyX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2xpZ2h0d2VpZ2h0X211dGV4LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9saWdodHdlaWdodF9tdXRleC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA3YWFjZjQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2xpZ2h0d2VpZ2h0X211dGV4LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9MSUdIVFdFSUdIVF9NVVRFWF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9MSUdIVFdFSUdIVF9NVVRFWF9IUFBfSU5DTFVERUQKLQotLy8gTVMgY29tcGF0aWJsZSBjb21waWxlcnMgc3VwcG9ydCAjcHJhZ21hIG9uY2UKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLS8vCi0vLyAgbmRuYm9vc3QvZGV0YWlsL2xpZ2h0d2VpZ2h0X211dGV4LmhwcCAtIGxpZ2h0d2VpZ2h0IG11dGV4Ci0vLwotLy8gIENvcHlyaWdodCAoYykgMjAwMiwgMjAwMyBQZXRlciBEaW1vdiBhbmQgTXVsdGkgTWVkaWEgTHRkLgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyAgdHlwZWRlZiA8dW5zcGVjaWZpZWQ+IG5kbmJvb3N0OjpkZXRhaWw6OmxpZ2h0d2VpZ2h0X211dGV4OwotLy8KLS8vICBuZG5ib29zdDo6ZGV0YWlsOjpsaWdodHdlaWdodF9tdXRleCBpcyBhIGhlYWRlci1vbmx5IGltcGxlbWVudGF0aW9uIG9mCi0vLyAgYSBzdWJzZXQgb2YgdGhlIE11dGV4IGNvbmNlcHQgcmVxdWlyZW1lbnRzOgotLy8KLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9kb2MvaHRtbC90aHJlYWRzL2NvbmNlcHRzLmh0bWwjdGhyZWFkcy5jb25jZXB0cy5NdXRleAotLy8KLS8vICBJdCBtYXBzIHRvIGEgQ1JJVElDQUxfU0VDVElPTiBvbiBXaW5kb3dzIG9yIGEgcHRocmVhZF9tdXRleCBvbiBQT1NJWC4KLS8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfSEFTX1RIUkVBRFMpCi0jICBpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2x3bV9ub3AuaHBwPgotI2VsaWYgZGVmaW5lZChORE5CT09TVF9IQVNfUFRIUkVBRFMpCi0jICBpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2x3bV9wdGhyZWFkcy5ocHA+Ci0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19XSU5USFJFQURTKSB8fCBkZWZpbmVkKFdJTjMyKSB8fCBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX1dJTjMyX18pIHx8IGRlZmluZWQoX19DWUdXSU5fXykKLSMgIGluY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvbHdtX3dpbjMyX2NzLmhwcD4KLSNlbHNlCi0vLyBVc2UgI2RlZmluZSBORE5CT09TVF9ESVNBQkxFX1RIUkVBRFMgdG8gYXZvaWQgdGhlIGVycm9yCi0jICBlcnJvciBVbnJlY29nbml6ZWQgdGhyZWFkaW5nIHBsYXRmb3JtCi0jZW5kaWYKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9MSUdIVFdFSUdIVF9NVVRFWF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9sd21fbm9wLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9sd21fbm9wLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWJmNTZjYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvbHdtX25vcC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfTFdNX05PUF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9MV01fTk9QX0hQUF9JTkNMVURFRAotCi0vLyBNUyBjb21wYXRpYmxlIGNvbXBpbGVycyBzdXBwb3J0ICNwcmFnbWEgb25jZQotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotLy8KLS8vICBuZG5ib29zdC9kZXRhaWwvbHdtX25vcC5ocHAKLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAyIFBldGVyIERpbW92IGFuZCBNdWx0aSBNZWRpYSBMdGQuCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLW5hbWVzcGFjZSBkZXRhaWwKLXsKLQotY2xhc3MgbGlnaHR3ZWlnaHRfbXV0ZXgKLXsKLXB1YmxpYzoKLQotICAgIHR5cGVkZWYgbGlnaHR3ZWlnaHRfbXV0ZXggc2NvcGVkX2xvY2s7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9MV01fTk9QX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2x3bV9wdGhyZWFkcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvbHdtX3B0aHJlYWRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTZhNjBjZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvbHdtX3B0aHJlYWRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDg3ICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9MV01fUFRIUkVBRFNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfTFdNX1BUSFJFQURTX0hQUF9JTkNMVURFRAotCi0vLyBNUyBjb21wYXRpYmxlIGNvbXBpbGVycyBzdXBwb3J0ICNwcmFnbWEgb25jZQotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotLy8KLS8vICBuZG5ib29zdC9kZXRhaWwvbHdtX3B0aHJlYWRzLmhwcAotLy8KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDIgUGV0ZXIgRGltb3YgYW5kIE11bHRpIE1lZGlhIEx0ZC4KLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxwdGhyZWFkLmg+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi1uYW1lc3BhY2UgZGV0YWlsCi17Ci0KLWNsYXNzIGxpZ2h0d2VpZ2h0X211dGV4Ci17Ci1wcml2YXRlOgotCi0gICAgcHRocmVhZF9tdXRleF90IG1fOwotCi0gICAgbGlnaHR3ZWlnaHRfbXV0ZXgobGlnaHR3ZWlnaHRfbXV0ZXggY29uc3QgJik7Ci0gICAgbGlnaHR3ZWlnaHRfbXV0ZXggJiBvcGVyYXRvcj0obGlnaHR3ZWlnaHRfbXV0ZXggY29uc3QgJik7Ci0KLXB1YmxpYzoKLQotICAgIGxpZ2h0d2VpZ2h0X211dGV4KCkKLSAgICB7Ci0KLS8vIEhQVVggMTAuMjAgLyBEQ0UgaGFzIGEgbm9uc3RhbmRhcmQgcHRocmVhZF9tdXRleF9pbml0Ci0KLSNpZiBkZWZpbmVkKF9faHB1eCkgJiYgZGVmaW5lZChfREVDVEhSRUFEU18pCi0gICAgICAgIE5ETkJPT1NUX1ZFUklGWSggcHRocmVhZF9tdXRleF9pbml0KCAmbV8sIHB0aHJlYWRfbXV0ZXhhdHRyX2RlZmF1bHQgKSA9PSAwICk7Ci0jZWxzZQotICAgICAgICBORE5CT09TVF9WRVJJRlkoIHB0aHJlYWRfbXV0ZXhfaW5pdCggJm1fLCAwICkgPT0gMCApOwotI2VuZGlmCi0gICAgfQotCi0gICAgfmxpZ2h0d2VpZ2h0X211dGV4KCkKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX1ZFUklGWSggcHRocmVhZF9tdXRleF9kZXN0cm95KCAmbV8gKSA9PSAwICk7Ci0gICAgfQotCi0gICAgY2xhc3Mgc2NvcGVkX2xvY2s7Ci0gICAgZnJpZW5kIGNsYXNzIHNjb3BlZF9sb2NrOwotCi0gICAgY2xhc3Mgc2NvcGVkX2xvY2sKLSAgICB7Ci0gICAgcHJpdmF0ZToKLQotICAgICAgICBwdGhyZWFkX211dGV4X3QgJiBtXzsKLQotICAgICAgICBzY29wZWRfbG9jayhzY29wZWRfbG9jayBjb25zdCAmKTsKLSAgICAgICAgc2NvcGVkX2xvY2sgJiBvcGVyYXRvcj0oc2NvcGVkX2xvY2sgY29uc3QgJik7Ci0KLSAgICBwdWJsaWM6Ci0KLSAgICAgICAgc2NvcGVkX2xvY2sobGlnaHR3ZWlnaHRfbXV0ZXggJiBtKTogbV8obS5tXykKLSAgICAgICAgewotICAgICAgICAgICAgTkROQk9PU1RfVkVSSUZZKCBwdGhyZWFkX211dGV4X2xvY2soICZtXyApID09IDAgKTsKLSAgICAgICAgfQotCi0gICAgICAgIH5zY29wZWRfbG9jaygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIE5ETkJPT1NUX1ZFUklGWSggcHRocmVhZF9tdXRleF91bmxvY2soICZtXyApID09IDAgKTsKLSAgICAgICAgfQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9MV01fUFRIUkVBRFNfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvbHdtX3dpbjMyX2NzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9sd21fd2luMzJfY3MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0N2RlZjk5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9sd21fd2luMzJfY3MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTA4ICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9MV01fV0lOMzJfQ1NfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfTFdNX1dJTjMyX0NTX0hQUF9JTkNMVURFRAotCi0vLyBNUyBjb21wYXRpYmxlIGNvbXBpbGVycyBzdXBwb3J0ICNwcmFnbWEgb25jZQotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotLy8KLS8vICBuZG5ib29zdC9kZXRhaWwvbHdtX3dpbjMyX2NzLmhwcAotLy8KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDIsIDIwMDMgUGV0ZXIgRGltb3YKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0jaWZkZWYgTkROQk9PU1RfVVNFX1dJTkRPV1NfSAotIyAgaW5jbHVkZSA8d2luZG93cy5oPgotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi1uYW1lc3BhY2UgZGV0YWlsCi17Ci0KLSNpZm5kZWYgTkROQk9PU1RfVVNFX1dJTkRPV1NfSAotCi1zdHJ1Y3QgY3JpdGljYWxfc2VjdGlvbgotewotICAgIHN0cnVjdCBjcml0aWNhbF9zZWN0aW9uX2RlYnVnICogRGVidWdJbmZvOwotICAgIGxvbmcgTG9ja0NvdW50OwotICAgIGxvbmcgUmVjdXJzaW9uQ291bnQ7Ci0gICAgdm9pZCAqIE93bmluZ1RocmVhZDsKLSAgICB2b2lkICogTG9ja1NlbWFwaG9yZTsKLSNpZiBkZWZpbmVkKF9XSU42NCkKLSAgICB1bnNpZ25lZCBfX2ludDY0IFNwaW5Db3VudDsKLSNlbHNlCi0gICAgdW5zaWduZWQgbG9uZyBTcGluQ291bnQ7Ci0jZW5kaWYKLX07Ci0KLWV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHZvaWQgX19zdGRjYWxsIEluaXRpYWxpemVDcml0aWNhbFNlY3Rpb24oY3JpdGljYWxfc2VjdGlvbiAqKTsKLWV4dGVybiAiQyIgX19kZWNsc3BlYyhkbGxpbXBvcnQpIHZvaWQgX19zdGRjYWxsIEVudGVyQ3JpdGljYWxTZWN0aW9uKGNyaXRpY2FsX3NlY3Rpb24gKik7Ci1leHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSB2b2lkIF9fc3RkY2FsbCBMZWF2ZUNyaXRpY2FsU2VjdGlvbihjcml0aWNhbF9zZWN0aW9uICopOwotZXh0ZXJuICJDIiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgdm9pZCBfX3N0ZGNhbGwgRGVsZXRlQ3JpdGljYWxTZWN0aW9uKGNyaXRpY2FsX3NlY3Rpb24gKik7Ci0KLSNlbHNlCi0KLXR5cGVkZWYgOjpDUklUSUNBTF9TRUNUSU9OIGNyaXRpY2FsX3NlY3Rpb247Ci0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX1VTRV9XSU5ET1dTX0gKLQotY2xhc3MgbGlnaHR3ZWlnaHRfbXV0ZXgKLXsKLXByaXZhdGU6Ci0KLSAgICBjcml0aWNhbF9zZWN0aW9uIGNzXzsKLQotICAgIGxpZ2h0d2VpZ2h0X211dGV4KGxpZ2h0d2VpZ2h0X211dGV4IGNvbnN0ICYpOwotICAgIGxpZ2h0d2VpZ2h0X211dGV4ICYgb3BlcmF0b3I9KGxpZ2h0d2VpZ2h0X211dGV4IGNvbnN0ICYpOwotCi1wdWJsaWM6Ci0KLSAgICBsaWdodHdlaWdodF9tdXRleCgpCi0gICAgewotICAgICAgICBJbml0aWFsaXplQ3JpdGljYWxTZWN0aW9uKCZjc18pOwotICAgIH0KLQotICAgIH5saWdodHdlaWdodF9tdXRleCgpCi0gICAgewotICAgICAgICBEZWxldGVDcml0aWNhbFNlY3Rpb24oJmNzXyk7Ci0gICAgfQotCi0gICAgY2xhc3Mgc2NvcGVkX2xvY2s7Ci0gICAgZnJpZW5kIGNsYXNzIHNjb3BlZF9sb2NrOwotCi0gICAgY2xhc3Mgc2NvcGVkX2xvY2sKLSAgICB7Ci0gICAgcHJpdmF0ZToKLQotICAgICAgICBsaWdodHdlaWdodF9tdXRleCAmIG1fOwotCi0gICAgICAgIHNjb3BlZF9sb2NrKHNjb3BlZF9sb2NrIGNvbnN0ICYpOwotICAgICAgICBzY29wZWRfbG9jayAmIG9wZXJhdG9yPShzY29wZWRfbG9jayBjb25zdCAmKTsKLQotICAgIHB1YmxpYzoKLQotICAgICAgICBleHBsaWNpdCBzY29wZWRfbG9jayhsaWdodHdlaWdodF9tdXRleCAmIG0pOiBtXyhtKQotICAgICAgICB7Ci0gICAgICAgICAgICBFbnRlckNyaXRpY2FsU2VjdGlvbigmbV8uY3NfKTsKLSAgICAgICAgfQotCi0gICAgICAgIH5zY29wZWRfbG9jaygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIExlYXZlQ3JpdGljYWxTZWN0aW9uKCZtXy5jc18pOwotICAgICAgICB9Ci0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX0xXTV9XSU4zMl9DU19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9tYWtlX2FycmF5X2hlbHBlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvbWFrZV9hcnJheV9oZWxwZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMDViNjAwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9tYWtlX2FycmF5X2hlbHBlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoYykgMjAxMiBHbGVuIEpvc2VwaCBGZXJuYW5kZXMgCi0gKiBnbGVuZmUgYXQgbGl2ZSBkb3QgY29tCi0gKgotICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIAotICogVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IAotICogb3IgY29weSBhdCBodHRwOi8vYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqLwotI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX01BS0VfQVJSQVlfSEVMUEVSX0hQUAotI2RlZmluZSBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX01BS0VfQVJSQVlfSEVMUEVSX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvYWxpZ25tZW50X29mLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLSAgICBuYW1lc3BhY2UgZGV0YWlsIHsKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgWSA9IGNoYXI+Ci0gICAgICAgIGNsYXNzIG1ha2VfYXJyYXlfaGVscGVyOwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBZPgotICAgICAgICBjbGFzcyBtYWtlX2FycmF5X2hlbHBlcjxUW10sIFk+IHsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBZMj4KLSAgICAgICAgICAgIGZyaWVuZCBjbGFzcyBtYWtlX2FycmF5X2hlbHBlcjsKLSAgICAgICAgcHVibGljOgotICAgICAgICAgICAgdHlwZWRlZiBZICAgICAgICAgICB2YWx1ZV90eXBlOwotICAgICAgICAgICAgdHlwZWRlZiBZKiAgICAgICAgICBwb2ludGVyOwotICAgICAgICAgICAgdHlwZWRlZiBjb25zdCBZKiAgICBjb25zdF9wb2ludGVyOwotICAgICAgICAgICAgdHlwZWRlZiBZJiAgICAgICAgICByZWZlcmVuY2U7Ci0gICAgICAgICAgICB0eXBlZGVmIGNvbnN0IFkmICAgIGNvbnN0X3JlZmVyZW5jZTsKLSAgICAgICAgICAgIHR5cGVkZWYgc3RkOjpzaXplX3Qgc2l6ZV90eXBlOwotICAgICAgICAgICAgdHlwZWRlZiBwdHJkaWZmX3QgICBkaWZmZXJlbmNlX3R5cGU7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotICAgICAgICAgICAgc3RydWN0IHJlYmluZCB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBtYWtlX2FycmF5X2hlbHBlcjxUW10sIFU+IG90aGVyOwotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIG1ha2VfYXJyYXlfaGVscGVyKHN0ZDo6c2l6ZV90IHNpemVfLCBUKiogZGF0YV8pCi0gICAgICAgICAgICAgICAgOiBzaXplKHNpemVvZihUKSAqIHNpemVfKSwKLSAgICAgICAgICAgICAgICAgIGRhdGEoZGF0YV8pIHsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRlbXBsYXRlPGNsYXNzIFU+Ci0gICAgICAgICAgICBtYWtlX2FycmF5X2hlbHBlcihjb25zdCBtYWtlX2FycmF5X2hlbHBlcjxUW10sIFU+JiBvdGhlcikgCi0gICAgICAgICAgICAgICAgOiBzaXplKG90aGVyLnNpemUpLAotICAgICAgICAgICAgICAgICAgZGF0YShvdGhlci5kYXRhKSB7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBwb2ludGVyIGFkZHJlc3MocmVmZXJlbmNlIHZhbHVlKSBjb25zdCB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICZ2YWx1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNvbnN0X3BvaW50ZXIgYWRkcmVzcyhjb25zdF9yZWZlcmVuY2UgdmFsdWUpIGNvbnN0IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gJnZhbHVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgc2l6ZV90eXBlIG1heF9zaXplKCkgY29uc3QgewotICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxzdGQ6OnNpemVfdD4oLTEpIC8gc2l6ZW9mKFkpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcG9pbnRlciBhbGxvY2F0ZShzaXplX3R5cGUgY291bnQsIGNvbnN0IHZvaWQqID0gMCkgewotICAgICAgICAgICAgICAgIHN0ZDo6c2l6ZV90IGExID0gbmRuYm9vc3Q6OmFsaWdubWVudF9vZjxUPjo6dmFsdWU7Ci0gICAgICAgICAgICAgICAgc3RkOjpzaXplX3QgbjEgPSBjb3VudCAqIHNpemVvZihZKSArIGExIC0gMTsKLSAgICAgICAgICAgICAgICB2b2lkKiAgcDEgPSA6Om9wZXJhdG9yIG5ldyhuMSArIHNpemUpOwotICAgICAgICAgICAgICAgIGNoYXIqICBwMiA9IHN0YXRpY19jYXN0PGNoYXIqPihwMSkgKyBuMTsKLSAgICAgICAgICAgICAgICB3aGlsZSAoc3RkOjpzaXplX3QocDIpICUgYTEgIT0gMCkgewotICAgICAgICAgICAgICAgICAgICBwMi0tOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAqZGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8VCo+KHAyKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gIHJlaW50ZXJwcmV0X2Nhc3Q8WSo+KHAxKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHZvaWQgZGVhbGxvY2F0ZShwb2ludGVyIG1lbW9yeSwgc2l6ZV90eXBlKSB7Ci0gICAgICAgICAgICAgICAgdm9pZCogcDEgPSBtZW1vcnk7Ci0gICAgICAgICAgICAgICAgOjpvcGVyYXRvciBkZWxldGUocDEpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdm9pZCBjb25zdHJ1Y3QocG9pbnRlciBtZW1vcnksIGNvbnN0IFkmIHZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgdm9pZCogcDEgPSBtZW1vcnk7Ci0gICAgICAgICAgICAgICAgOjpuZXcocDEpIFkodmFsdWUpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdm9pZCBkZXN0cm95KHBvaW50ZXIgbWVtb3J5KSB7Ci0gICAgICAgICAgICAgICAgbWVtb3J5LT5+WSgpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBtYWtlX2FycmF5X2hlbHBlcjxUW10sIFU+JikgY29uc3QgewotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBtYWtlX2FycmF5X2hlbHBlcjxUW10sIFU+JiBvdGhlcikgY29uc3QgewotICAgICAgICAgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgCi0gICAgICAgICAgICB9Ci0gICAgICAgIHByaXZhdGU6Ci0gICAgICAgICAgICBzdGQ6OnNpemVfdCBzaXplOwotICAgICAgICAgICAgVCoqIGRhdGE7Ci0gICAgICAgIH07Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHN0ZDo6c2l6ZV90IE4sIHR5cGVuYW1lIFk+Ci0gICAgICAgIGNsYXNzIG1ha2VfYXJyYXlfaGVscGVyPFRbTl0sIFk+IHsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBZMj4KLSAgICAgICAgICAgIGZyaWVuZCBjbGFzcyBtYWtlX2FycmF5X2hlbHBlcjsKLSAgICAgICAgcHVibGljOgotICAgICAgICAgICAgdHlwZWRlZiBZICAgICAgICAgICB2YWx1ZV90eXBlOwotICAgICAgICAgICAgdHlwZWRlZiBZKiAgICAgICAgICBwb2ludGVyOwotICAgICAgICAgICAgdHlwZWRlZiBjb25zdCBZKiAgICBjb25zdF9wb2ludGVyOwotICAgICAgICAgICAgdHlwZWRlZiBZJiAgICAgICAgICByZWZlcmVuY2U7Ci0gICAgICAgICAgICB0eXBlZGVmIGNvbnN0IFkmICAgIGNvbnN0X3JlZmVyZW5jZTsKLSAgICAgICAgICAgIHR5cGVkZWYgc3RkOjpzaXplX3Qgc2l6ZV90eXBlOwotICAgICAgICAgICAgdHlwZWRlZiBwdHJkaWZmX3QgICBkaWZmZXJlbmNlX3R5cGU7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotICAgICAgICAgICAgc3RydWN0IHJlYmluZCB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBtYWtlX2FycmF5X2hlbHBlcjxUW05dLCBVPiBvdGhlcjsKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICBtYWtlX2FycmF5X2hlbHBlcihUKiogZGF0YV8pCi0gICAgICAgICAgICAgICAgOiBkYXRhKGRhdGFfKSB7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBVPgotICAgICAgICAgICAgbWFrZV9hcnJheV9oZWxwZXIoY29uc3QgbWFrZV9hcnJheV9oZWxwZXI8VFtOXSwgVT4mIG90aGVyKSAKLSAgICAgICAgICAgICAgICA6IGRhdGEob3RoZXIuZGF0YSkgewotICAgICAgICAgICAgfQotICAgICAgICAgICAgcG9pbnRlciBhZGRyZXNzKHJlZmVyZW5jZSB2YWx1ZSkgY29uc3QgewotICAgICAgICAgICAgICAgIHJldHVybiAmdmFsdWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjb25zdF9wb2ludGVyIGFkZHJlc3MoY29uc3RfcmVmZXJlbmNlIHZhbHVlKSBjb25zdCB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICZ2YWx1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHNpemVfdHlwZSBtYXhfc2l6ZSgpIGNvbnN0IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8c3RkOjpzaXplX3Q+KC0xKSAvIHNpemVvZihZKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHBvaW50ZXIgYWxsb2NhdGUoc2l6ZV90eXBlIGNvdW50LCBjb25zdCB2b2lkKiA9IDApIHsKLSAgICAgICAgICAgICAgICBzdGQ6OnNpemVfdCBhMSA9IG5kbmJvb3N0OjphbGlnbm1lbnRfb2Y8VD46OnZhbHVlOwotICAgICAgICAgICAgICAgIHN0ZDo6c2l6ZV90IG4xID0gY291bnQgKiBzaXplb2YoWSkgKyBhMSAtIDE7Ci0gICAgICAgICAgICAgICAgdm9pZCogIHAxID0gOjpvcGVyYXRvciBuZXcobjEgKyBOMSk7Ci0gICAgICAgICAgICAgICAgY2hhciogIHAyID0gc3RhdGljX2Nhc3Q8Y2hhcio+KHAxKSArIG4xOwotICAgICAgICAgICAgICAgIHdoaWxlIChzdGQ6OnNpemVfdChwMikgJSBhMSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIHAyLS07Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICpkYXRhID0gcmVpbnRlcnByZXRfY2FzdDxUKj4ocDIpOwotICAgICAgICAgICAgICAgIHJldHVybiAgcmVpbnRlcnByZXRfY2FzdDxZKj4ocDEpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdm9pZCBkZWFsbG9jYXRlKHBvaW50ZXIgbWVtb3J5LCBzaXplX3R5cGUpIHsKLSAgICAgICAgICAgICAgICB2b2lkKiBwMSA9IG1lbW9yeTsKLSAgICAgICAgICAgICAgICA6Om9wZXJhdG9yIGRlbGV0ZShwMSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB2b2lkIGNvbnN0cnVjdChwb2ludGVyIG1lbW9yeSwgY29uc3QgWSYgdmFsdWUpIHsKLSAgICAgICAgICAgICAgICB2b2lkKiBwMSA9IG1lbW9yeTsKLSAgICAgICAgICAgICAgICA6Om5ldyhwMSkgWSh2YWx1ZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB2b2lkIGRlc3Ryb3kocG9pbnRlciBtZW1vcnkpIHsKLSAgICAgICAgICAgICAgICBtZW1vcnktPn5ZKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotICAgICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IG1ha2VfYXJyYXlfaGVscGVyPFRbTl0sIFU+JikgY29uc3QgewotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICAgICAgICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBtYWtlX2FycmF5X2hlbHBlcjxUW05dLCBVPiYgb3RoZXIpIGNvbnN0IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IAotICAgICAgICAgICAgfQotICAgICAgICBwcml2YXRlOgotICAgICAgICAgICAgZW51bSB7Ci0gICAgICAgICAgICAgICAgTjEgPSBOICogc2l6ZW9mKFQpCi0gICAgICAgICAgICB9OwotICAgICAgICAgICAgVCoqIGRhdGE7Ci0gICAgICAgIH07Ci0gICAgfQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9vcGVyYXRvcl9ib29sLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9vcGVyYXRvcl9ib29sLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODA5ZWZmNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvb3BlcmF0b3JfYm9vbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MyArMCwwIEBACi0vLyAgVGhpcyBoZWFkZXIgaW50ZW50aW9uYWxseSBoYXMgbm8gaW5jbHVkZSBndWFyZHMuCi0vLwotLy8gIENvcHlyaWdodCAoYykgMjAwMS0yMDA5LCAyMDEyIFBldGVyIERpbW92Ci0vLwotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICBTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQKLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19DWFgxMV9FWFBMSUNJVF9DT05WRVJTSU9OX09QRVJBVE9SUyApICYmICFkZWZpbmVkKCBORE5CT09TVF9OT19DWFgxMV9OVUxMUFRSICkKLQotICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2wgKCkgY29uc3QgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIHJldHVybiBweCAhPSAwOwotICAgIH0KLQotI2VsaWYgKCBkZWZpbmVkKF9fU1VOUFJPX0NDKSAmJiBORE5CT09TVF9XT1JLQVJPVU5EKF9fU1VOUFJPX0NDLCA8IDB4NTcwKSApIHx8IGRlZmluZWQoX19DSU5UX18pCi0KLSAgICBvcGVyYXRvciBib29sICgpIGNvbnN0IE5ETkJPT1NUX05PRVhDRVBUCi0gICAgewotICAgICAgICByZXR1cm4gcHggIT0gMDsKLSAgICB9Ci0KLSNlbGlmIGRlZmluZWQoIF9NQU5BR0VEICkKLQotICAgIHN0YXRpYyB2b2lkIHVuc3BlY2lmaWVkX2Jvb2woIHRoaXNfdHlwZSoqKiApCi0gICAgewotICAgIH0KLQotICAgIHR5cGVkZWYgdm9pZCAoKnVuc3BlY2lmaWVkX2Jvb2xfdHlwZSkoIHRoaXNfdHlwZSoqKiApOwotCi0gICAgb3BlcmF0b3IgdW5zcGVjaWZpZWRfYm9vbF90eXBlKCkgY29uc3QgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIHJldHVybiBweCA9PSAwPyAwOiB1bnNwZWNpZmllZF9ib29sOwotICAgIH0KLQotI2VsaWYgXAotICAgICggZGVmaW5lZChfX01XRVJLU19fKSAmJiBORE5CT09TVF9XT1JLQVJPVU5EKF9fTVdFUktTX18sIDwgMHgzMjAwKSApIHx8IFwKLSAgICAoIGRlZmluZWQoX19HTlVDX18pICYmIChfX0dOVUNfXyAqIDEwMCArIF9fR05VQ19NSU5PUl9fIDwgMzA0KSApIHx8IFwKLSAgICAoIGRlZmluZWQoX19TVU5QUk9fQ0MpICYmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19TVU5QUk9fQ0MsIDw9IDB4NTkwKSApCi0KLSAgICB0eXBlZGVmIGVsZW1lbnRfdHlwZSAqICh0aGlzX3R5cGU6Oip1bnNwZWNpZmllZF9ib29sX3R5cGUpKCkgY29uc3Q7Ci0KLSAgICBvcGVyYXRvciB1bnNwZWNpZmllZF9ib29sX3R5cGUoKSBjb25zdCBORE5CT09TVF9OT0VYQ0VQVAotICAgIHsKLSAgICAgICAgcmV0dXJuIHB4ID09IDA/IDA6ICZ0aGlzX3R5cGU6OmdldDsKLSAgICB9Ci0KLSNlbHNlCi0KLSAgICB0eXBlZGVmIGVsZW1lbnRfdHlwZSAqIHRoaXNfdHlwZTo6KnVuc3BlY2lmaWVkX2Jvb2xfdHlwZTsKLQotICAgIG9wZXJhdG9yIHVuc3BlY2lmaWVkX2Jvb2xfdHlwZSgpIGNvbnN0IE5ETkJPT1NUX05PRVhDRVBUCi0gICAgewotICAgICAgICByZXR1cm4gcHggPT0gMD8gMDogJnRoaXNfdHlwZTo6cHg7Ci0gICAgfQotCi0jZW5kaWYKLQotICAgIC8vIG9wZXJhdG9yISBpcyByZWR1bmRhbnQsIGJ1dCBzb21lIGNvbXBpbGVycyBuZWVkIGl0Ci0gICAgYm9vbCBvcGVyYXRvciEgKCkgY29uc3QgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIHJldHVybiBweCA9PSAwOwotICAgIH0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9xdWlja19hbGxvY2F0b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3F1aWNrX2FsbG9jYXRvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRmZjA2NjguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3F1aWNrX2FsbG9jYXRvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxOTkgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1FVSUNLX0FMTE9DQVRPUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9RVUlDS19BTExPQ0FUT1JfSFBQX0lOQ0xVREVECi0KLS8vIE1TIGNvbXBhdGlibGUgY29tcGlsZXJzIHN1cHBvcnQgI3ByYWdtYSBvbmNlCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0vLwotLy8gIGRldGFpbC9xdWlja19hbGxvY2F0b3IuaHBwCi0vLwotLy8gIENvcHlyaWdodCAoYykgMjAwMyBEYXZpZCBBYnJhaGFtcwotLy8gIENvcHlyaWdodCAoYykgMjAwMyBQZXRlciBEaW1vdgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9saWdodHdlaWdodF9tdXRleC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvdHlwZV93aXRoX2FsaWdubWVudC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvYWxpZ25tZW50X29mLmhwcD4KLQotI2luY2x1ZGUgPG5ldz4gICAgICAgICAgICAgIC8vIDo6b3BlcmF0b3IgbmV3LCA6Om9wZXJhdG9yIGRlbGV0ZQotI2luY2x1ZGUgPGNzdGRkZWY+ICAgICAgICAgIC8vIHN0ZDo6c2l6ZV90Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi1uYW1lc3BhY2UgZGV0YWlsCi17Ci0KLXRlbXBsYXRlPHVuc2lnbmVkIHNpemUsIHVuc2lnbmVkIGFsaWduXz4gdW5pb24gZnJlZWJsb2NrCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6dHlwZV93aXRoX2FsaWdubWVudDxhbGlnbl8+Ojp0eXBlIGFsaWduZXJfdHlwZTsKLSAgICBhbGlnbmVyX3R5cGUgYWxpZ25lcjsKLSAgICBjaGFyIGJ5dGVzW3NpemVdOwotICAgIGZyZWVibG9jayAqIG5leHQ7Ci19OwotCi10ZW1wbGF0ZTx1bnNpZ25lZCBzaXplLCB1bnNpZ25lZCBhbGlnbl8+IHN0cnVjdCBhbGxvY2F0b3JfaW1wbAotewotICAgIHR5cGVkZWYgZnJlZWJsb2NrPHNpemUsIGFsaWduXz4gYmxvY2s7Ci0KLSAgICAvLyBJdCBtYXkgc2VlbSBvZGQgdG8gdXNlIHN1Y2ggc21hbGwgcGFnZXMuCi0gICAgLy8KLSAgICAvLyBIb3dldmVyLCBvbiBhIHR5cGljYWwgV2luZG93cyBpbXBsZW1lbnRhdGlvbiB0aGF0IHVzZXMKLSAgICAvLyB0aGUgT1MgYWxsb2NhdG9yLCAibm9ybWFsIHNpemUiIHBhZ2VzIGludGVyYWN0IHdpdGggdGhlCi0gICAgLy8gIm9yZGluYXJ5IiBvcGVyYXRvciBuZXcsIHNsb3dpbmcgaXQgZG93biBkcmFtYXRpY2FsbHkuCi0gICAgLy8KLSAgICAvLyA1MTIgYnl0ZSBwYWdlcyBhcmUgaGFuZGxlZCBieSB0aGUgc21hbGwgb2JqZWN0IGFsbG9jYXRvciwKLSAgICAvLyBhbmQgZG9uJ3QgaW50ZXJmZXJlIHdpdGggOjpuZXcuCi0gICAgLy8KLSAgICAvLyBUaGUgb3RoZXIgYWx0ZXJuYXRpdmUgaXMgdG8gdXNlIG11Y2ggYmlnZ2VyIHBhZ2VzICgxTS4pCi0gICAgLy8KLSAgICAvLyBJdCBpcyBzdXJwcmlzaW5nbHkgZWFzeSB0byBoaXQgcGF0aG9sb2dpY2FsIGJlaGF2aW9yIGJ5Ci0gICAgLy8gdmFyeWluZyB0aGUgcGFnZSBzaXplLiBnKysgMi45NiBvbiBSZWQgSGF0IExpbnV4IDcuMiwKLSAgICAvLyBmb3IgZXhhbXBsZSwgcGFzc2lvbmF0ZWx5IGRpc2xpa2VzIDQ5Ni4gNTEyIHNlZW1zIE9LLgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9RQV9QQUdFX1NJWkUpCi0KLSAgICBlbnVtIHsgaXRlbXNfcGVyX3BhZ2UgPSBORE5CT09TVF9RQV9QQUdFX1NJWkUgLyBzaXplIH07Ci0KLSNlbHNlCi0KLSAgICBlbnVtIHsgaXRlbXNfcGVyX3BhZ2UgPSA1MTIgLyBzaXplIH07IC8vIDEwNDg1NjAgLyBzaXplCi0KLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfSEFTX1RIUkVBRFMKLQotICAgIHN0YXRpYyBsaWdodHdlaWdodF9tdXRleCAmIG11dGV4KCkKLSAgICB7Ci0gICAgICAgIHN0YXRpYyBmcmVlYmxvY2s8IHNpemVvZiggbGlnaHR3ZWlnaHRfbXV0ZXggKSwgbmRuYm9vc3Q6OmFsaWdubWVudF9vZjwgbGlnaHR3ZWlnaHRfbXV0ZXggPjo6dmFsdWUgPiBmYm07Ci0gICAgICAgIHN0YXRpYyBsaWdodHdlaWdodF9tdXRleCAqIHBtID0gbmV3KCAmZmJtICkgbGlnaHR3ZWlnaHRfbXV0ZXg7Ci0gICAgICAgIHJldHVybiAqcG07Ci0gICAgfQotCi0gICAgc3RhdGljIGxpZ2h0d2VpZ2h0X211dGV4ICogbXV0ZXhfaW5pdDsKLQotI2VuZGlmCi0KLSAgICBzdGF0aWMgYmxvY2sgKiBmcmVlOwotICAgIHN0YXRpYyBibG9jayAqIHBhZ2U7Ci0gICAgc3RhdGljIHVuc2lnbmVkIGxhc3Q7Ci0KLSAgICBzdGF0aWMgaW5saW5lIHZvaWQgKiBhbGxvYygpCi0gICAgewotI2lmZGVmIE5ETkJPT1NUX0hBU19USFJFQURTCi0gICAgICAgIGxpZ2h0d2VpZ2h0X211dGV4OjpzY29wZWRfbG9jayBsb2NrKCBtdXRleCgpICk7Ci0jZW5kaWYKLSAgICAgICAgaWYoYmxvY2sgKiB4ID0gZnJlZSkKLSAgICAgICAgewotICAgICAgICAgICAgZnJlZSA9IHgtPm5leHQ7Ci0gICAgICAgICAgICByZXR1cm4geDsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmKGxhc3QgPT0gaXRlbXNfcGVyX3BhZ2UpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgLy8gIkxpc3RlbiB0byBtZSBjYXJlZnVsbHk6IHRoZXJlIGlzIG5vIG1lbW9yeSBsZWFrIgotICAgICAgICAgICAgICAgIC8vIC0tIFNjb3R0IE1leWVycywgRWZmIEMrKyAybmQgRWQgSXRlbSAxMAotICAgICAgICAgICAgICAgIHBhZ2UgPSA6Om5ldyBibG9ja1tpdGVtc19wZXJfcGFnZV07Ci0gICAgICAgICAgICAgICAgbGFzdCA9IDA7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHJldHVybiAmcGFnZVtsYXN0KytdOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgc3RhdGljIGlubGluZSB2b2lkICogYWxsb2Moc3RkOjpzaXplX3QgbikKLSAgICB7Ci0gICAgICAgIGlmKG4gIT0gc2l6ZSkgLy8gY2xhc3Mtc3BlY2lmaWMgbmV3IGNhbGxlZCBmb3IgYSBkZXJpdmVkIG9iamVjdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gOjpvcGVyYXRvciBuZXcobik7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0jaWZkZWYgTkROQk9PU1RfSEFTX1RIUkVBRFMKLSAgICAgICAgICAgIGxpZ2h0d2VpZ2h0X211dGV4OjpzY29wZWRfbG9jayBsb2NrKCBtdXRleCgpICk7Ci0jZW5kaWYKLSAgICAgICAgICAgIGlmKGJsb2NrICogeCA9IGZyZWUpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZnJlZSA9IHgtPm5leHQ7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHg7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYobGFzdCA9PSBpdGVtc19wZXJfcGFnZSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHBhZ2UgPSA6Om5ldyBibG9ja1tpdGVtc19wZXJfcGFnZV07Ci0gICAgICAgICAgICAgICAgICAgIGxhc3QgPSAwOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIHJldHVybiAmcGFnZVtsYXN0KytdOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgc3RhdGljIGlubGluZSB2b2lkIGRlYWxsb2Modm9pZCAqIHB2KQotICAgIHsKLSAgICAgICAgaWYocHYgIT0gMCkgLy8gMTguNC4xLjEvMTMKLSAgICAgICAgewotI2lmZGVmIE5ETkJPT1NUX0hBU19USFJFQURTCi0gICAgICAgICAgICBsaWdodHdlaWdodF9tdXRleDo6c2NvcGVkX2xvY2sgbG9jayggbXV0ZXgoKSApOwotI2VuZGlmCi0gICAgICAgICAgICBibG9jayAqIHBiID0gc3RhdGljX2Nhc3Q8YmxvY2sgKj4ocHYpOwotICAgICAgICAgICAgcGItPm5leHQgPSBmcmVlOwotICAgICAgICAgICAgZnJlZSA9IHBiOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgc3RhdGljIGlubGluZSB2b2lkIGRlYWxsb2Modm9pZCAqIHB2LCBzdGQ6OnNpemVfdCBuKQotICAgIHsKLSAgICAgICAgaWYobiAhPSBzaXplKSAvLyBjbGFzcy1zcGVjaWZpYyBkZWxldGUgY2FsbGVkIGZvciBhIGRlcml2ZWQgb2JqZWN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIDo6b3BlcmF0b3IgZGVsZXRlKHB2KTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmKHB2ICE9IDApIC8vIDE4LjQuMS4xLzEzCi0gICAgICAgIHsKLSNpZmRlZiBORE5CT09TVF9IQVNfVEhSRUFEUwotICAgICAgICAgICAgbGlnaHR3ZWlnaHRfbXV0ZXg6OnNjb3BlZF9sb2NrIGxvY2soIG11dGV4KCkgKTsKLSNlbmRpZgotICAgICAgICAgICAgYmxvY2sgKiBwYiA9IHN0YXRpY19jYXN0PGJsb2NrICo+KHB2KTsKLSAgICAgICAgICAgIHBiLT5uZXh0ID0gZnJlZTsKLSAgICAgICAgICAgIGZyZWUgPSBwYjsKLSAgICAgICAgfQotICAgIH0KLX07Ci0KLSNpZmRlZiBORE5CT09TVF9IQVNfVEhSRUFEUwotCi10ZW1wbGF0ZTx1bnNpZ25lZCBzaXplLCB1bnNpZ25lZCBhbGlnbl8+Ci0gIGxpZ2h0d2VpZ2h0X211dGV4ICogYWxsb2NhdG9yX2ltcGw8c2l6ZSwgYWxpZ25fPjo6bXV0ZXhfaW5pdCA9ICZhbGxvY2F0b3JfaW1wbDxzaXplLCBhbGlnbl8+OjptdXRleCgpOwotCi0jZW5kaWYKLQotdGVtcGxhdGU8dW5zaWduZWQgc2l6ZSwgdW5zaWduZWQgYWxpZ25fPgotICBmcmVlYmxvY2s8c2l6ZSwgYWxpZ25fPiAqIGFsbG9jYXRvcl9pbXBsPHNpemUsIGFsaWduXz46OmZyZWUgPSAwOwotCi10ZW1wbGF0ZTx1bnNpZ25lZCBzaXplLCB1bnNpZ25lZCBhbGlnbl8+Ci0gIGZyZWVibG9jazxzaXplLCBhbGlnbl8+ICogYWxsb2NhdG9yX2ltcGw8c2l6ZSwgYWxpZ25fPjo6cGFnZSA9IDA7Ci0KLXRlbXBsYXRlPHVuc2lnbmVkIHNpemUsIHVuc2lnbmVkIGFsaWduXz4KLSAgdW5zaWduZWQgYWxsb2NhdG9yX2ltcGw8c2l6ZSwgYWxpZ25fPjo6bGFzdCA9IGFsbG9jYXRvcl9pbXBsPHNpemUsIGFsaWduXz46Oml0ZW1zX3Blcl9wYWdlOwotCi10ZW1wbGF0ZTxjbGFzcyBUPgotc3RydWN0IHF1aWNrX2FsbG9jYXRvcjogcHVibGljIGFsbG9jYXRvcl9pbXBsPCBzaXplb2YoVCksIG5kbmJvb3N0OjphbGlnbm1lbnRfb2Y8VD46OnZhbHVlID4KLXsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgIC8vICNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9RVUlDS19BTExPQ0FUT1JfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc2hhcmVkX2FycmF5X25tdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc2hhcmVkX2FycmF5X25tdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgxOTc2MzcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NoYXJlZF9hcnJheV9ubXQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTUxICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TSEFSRURfQVJSQVlfTk1UX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NIQVJFRF9BUlJBWV9OTVRfSFBQX0lOQ0xVREVECi0KLS8vCi0vLyAgZGV0YWlsL3NoYXJlZF9hcnJheV9ubXQuaHBwIC0gc2hhcmVkX2FycmF5LmhwcCB3aXRob3V0IG1lbWJlciB0ZW1wbGF0ZXMKLS8vCi0vLyAgKEMpIENvcHlyaWdodCBHcmVnIENvbHZpbiBhbmQgQmVtYW4gRGF3ZXMgMTk5OCwgMTk5OS4KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDIgUGV0ZXIgRGltb3YKLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3NtYXJ0X3B0ci9zaGFyZWRfYXJyYXkuaHRtIGZvciBkb2N1bWVudGF0aW9uLgotLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2Fzc2VydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY2hlY2tlZF9kZWxldGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rocm93X2V4Y2VwdGlvbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9hdG9taWNfY291bnQuaHBwPgotCi0jaW5jbHVkZSA8Y3N0ZGRlZj4gICAgICAgICAgLy8gZm9yIHN0ZDo6cHRyZGlmZl90Ci0jaW5jbHVkZSA8YWxnb3JpdGhtPiAgICAgICAgLy8gZm9yIHN0ZDo6c3dhcAotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+ICAgICAgIC8vIGZvciBzdGQ6Omxlc3MKLSNpbmNsdWRlIDxuZXc+ICAgICAgICAgICAgICAvLyBmb3Igc3RkOjpiYWRfYWxsb2MKLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IGNsYXNzIHNoYXJlZF9hcnJheQotewotcHJpdmF0ZToKLQotICAgIHR5cGVkZWYgZGV0YWlsOjphdG9taWNfY291bnQgY291bnRfdHlwZTsKLQotcHVibGljOgotCi0gICAgdHlwZWRlZiBUIGVsZW1lbnRfdHlwZTsKLSAgICAgIAotICAgIGV4cGxpY2l0IHNoYXJlZF9hcnJheShUICogcCA9IDApOiBweChwKQotICAgIHsKLSNpZm5kZWYgTkROQk9PU1RfTk9fRVhDRVBUSU9OUwotCi0gICAgICAgIHRyeSAgLy8gcHJldmVudCBsZWFrIGlmIG5ldyB0aHJvd3MKLSAgICAgICAgewotICAgICAgICAgICAgcG4gPSBuZXcgY291bnRfdHlwZSgxKTsKLSAgICAgICAgfQotICAgICAgICBjYXRjaCguLi4pCi0gICAgICAgIHsKLSAgICAgICAgICAgIG5kbmJvb3N0OjpjaGVja2VkX2FycmF5X2RlbGV0ZShwKTsKLSAgICAgICAgICAgIHRocm93OwotICAgICAgICB9Ci0KLSNlbHNlCi0KLSAgICAgICAgcG4gPSBuZXcgY291bnRfdHlwZSgxKTsKLQotICAgICAgICBpZihwbiA9PSAwKQotICAgICAgICB7Ci0gICAgICAgICAgICBuZG5ib29zdDo6Y2hlY2tlZF9hcnJheV9kZWxldGUocCk7Ci0gICAgICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKHN0ZDo6YmFkX2FsbG9jKCkpOwotICAgICAgICB9Ci0KLSNlbmRpZgotICAgIH0KLQotICAgIH5zaGFyZWRfYXJyYXkoKQotICAgIHsKLSAgICAgICAgaWYoLS0qcG4gPT0gMCkKLSAgICAgICAgewotICAgICAgICAgICAgbmRuYm9vc3Q6OmNoZWNrZWRfYXJyYXlfZGVsZXRlKHB4KTsKLSAgICAgICAgICAgIGRlbGV0ZSBwbjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHNoYXJlZF9hcnJheShzaGFyZWRfYXJyYXkgY29uc3QgJiByKSA6IHB4KHIucHgpICAvLyBuZXZlciB0aHJvd3MKLSAgICB7Ci0gICAgICAgIHBuID0gci5wbjsKLSAgICAgICAgKysqcG47Ci0gICAgfQotCi0gICAgc2hhcmVkX2FycmF5ICYgb3BlcmF0b3I9KHNoYXJlZF9hcnJheSBjb25zdCAmIHIpCi0gICAgewotICAgICAgICBzaGFyZWRfYXJyYXkocikuc3dhcCgqdGhpcyk7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICB2b2lkIHJlc2V0KFQgKiBwID0gMCkKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX0FTU0VSVChwID09IDAgfHwgcCAhPSBweCk7Ci0gICAgICAgIHNoYXJlZF9hcnJheShwKS5zd2FwKCp0aGlzKTsKLSAgICB9Ci0KLSAgICBUICogZ2V0KCkgY29uc3QgIC8vIG5ldmVyIHRocm93cwotICAgIHsKLSAgICAgICAgcmV0dXJuIHB4OwotICAgIH0KLQotICAgIFQgJiBvcGVyYXRvcltdKHN0ZDo6cHRyZGlmZl90IGkpIGNvbnN0ICAvLyBuZXZlciB0aHJvd3MKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX0FTU0VSVChweCAhPSAwKTsKLSAgICAgICAgTkROQk9PU1RfQVNTRVJUKGkgPj0gMCk7Ci0gICAgICAgIHJldHVybiBweFtpXTsKLSAgICB9Ci0KLSAgICBsb25nIHVzZV9jb3VudCgpIGNvbnN0ICAvLyBuZXZlciB0aHJvd3MKLSAgICB7Ci0gICAgICAgIHJldHVybiAqcG47Ci0gICAgfQotCi0gICAgYm9vbCB1bmlxdWUoKSBjb25zdCAgLy8gbmV2ZXIgdGhyb3dzCi0gICAgewotICAgICAgICByZXR1cm4gKnBuID09IDE7Ci0gICAgfQotCi0gICAgdm9pZCBzd2FwKHNoYXJlZF9hcnJheTxUPiAmIG90aGVyKSAgLy8gbmV2ZXIgdGhyb3dzCi0gICAgewotICAgICAgICBzdGQ6OnN3YXAocHgsIG90aGVyLnB4KTsKLSAgICAgICAgc3RkOjpzd2FwKHBuLCBvdGhlci5wbik7Ci0gICAgfQotCi1wcml2YXRlOgotCi0gICAgVCAqIHB4OyAgICAgICAgICAgIC8vIGNvbnRhaW5lZCBwb2ludGVyCi0gICAgY291bnRfdHlwZSAqIHBuOyAgIC8vIHB0ciB0byByZWZlcmVuY2UgY291bnRlcgotICAgICAgCi19OyAgLy8gc2hhcmVkX2FycmF5Ci0KLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFU+IGlubGluZSBib29sIG9wZXJhdG9yPT0oc2hhcmVkX2FycmF5PFQ+IGNvbnN0ICYgYSwgc2hhcmVkX2FycmF5PFU+IGNvbnN0ICYgYikKLXsKLSAgICByZXR1cm4gYS5nZXQoKSA9PSBiLmdldCgpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KHNoYXJlZF9hcnJheTxUPiBjb25zdCAmIGEsIHNoYXJlZF9hcnJheTxVPiBjb25zdCAmIGIpCi17Ci0gICAgcmV0dXJuIGEuZ2V0KCkgIT0gYi5nZXQoKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIGJvb2wgb3BlcmF0b3I8KHNoYXJlZF9hcnJheTxUPiBjb25zdCAmIGEsIHNoYXJlZF9hcnJheTxUPiBjb25zdCAmIGIpCi17Ci0gICAgcmV0dXJuIHN0ZDo6bGVzczxUKj4oKShhLmdldCgpLCBiLmdldCgpKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVD4gdm9pZCBzd2FwKHNoYXJlZF9hcnJheTxUPiAmIGEsIHNoYXJlZF9hcnJheTxUPiAmIGIpCi17Ci0gICAgYS5zd2FwKGIpOwotfQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgIC8vICNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TSEFSRURfQVJSQVlfTk1UX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NoYXJlZF9jb3VudC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc2hhcmVkX2NvdW50LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWJhNzE5MC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc2hhcmVkX2NvdW50LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDYwMyArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU0hBUkVEX0NPVU5UX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NIQVJFRF9DT1VOVF9IUFBfSU5DTFVERUQKLQotLy8gTVMgY29tcGF0aWJsZSBjb21waWxlcnMgc3VwcG9ydCAjcHJhZ21hIG9uY2UKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLS8vCi0vLyAgZGV0YWlsL3NoYXJlZF9jb3VudC5ocHAKLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAxLCAyMDAyLCAyMDAzIFBldGVyIERpbW92IGFuZCBNdWx0aSBNZWRpYSBMdGQuCi0vLyAgQ29weXJpZ2h0IDIwMDQtMjAwNSBQZXRlciBEaW1vdgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLSNpZmRlZiBfX0JPUkxBTkRDX18KLSMgcHJhZ21hIHdhcm4gLTgwMjcgICAgIC8vIEZ1bmN0aW9ucyBjb250YWluaW5nIHRyeSBhcmUgbm90IGV4cGFuZGVkIGlubGluZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NoZWNrZWRfZGVsZXRlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90aHJvd19leGNlcHRpb24uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9iYWRfd2Vha19wdHIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfaW1wbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotLy8gSW4gb3JkZXIgdG8gYXZvaWQgY2lyY3VsYXIgZGVwZW5kZW5jaWVzIHdpdGggQm9vc3QuVFIxCi0vLyB3ZSBtYWtlIHN1cmUgdGhhdCBvdXIgaW5jbHVkZSBvZiA8bWVtb3J5PiBkb2Vzbid0IHRyeSB0bwotLy8gcHVsbCBpbiB0aGUgVFIxIGhlYWRlcnM6IHRoYXQncyB3aHkgd2UgdXNlIHRoaXMgaGVhZGVyIAotLy8gcmF0aGVyIHRoYW4gaW5jbHVkaW5nIDxtZW1vcnk+IGRpcmVjdGx5OgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy9ub190cjEvbWVtb3J5LmhwcD4gIC8vIHN0ZDo6YXV0b19wdHIKLSNpbmNsdWRlIDxmdW5jdGlvbmFsPiAgICAgICAvLyBzdGQ6Omxlc3MKLQotI2lmZGVmIE5ETkJPT1NUX05PX0VYQ0VQVElPTlMKLSMgaW5jbHVkZSA8bmV3PiAgICAgICAgICAgICAgLy8gc3RkOjpiYWRfYWxsb2MKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX0NYWDExX1NNQVJUX1BUUiApCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3V0aWxpdHkvYWRkcmVzc29mLmhwcD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotbmFtZXNwYWNlIGRldGFpbAotewotCi0jaWYgZGVmaW5lZChORE5CT09TVF9TUF9FTkFCTEVfREVCVUdfSE9PS1MpCi0KLWludCBjb25zdCBzaGFyZWRfY291bnRfaWQgPSAweDJDMzVGMTAxOwotaW50IGNvbnN0ICAgd2Vha19jb3VudF9pZCA9IDB4Mjk4QzM4QTQ7Ci0KLSNlbmRpZgotCi1zdHJ1Y3Qgc3Bfbm90aHJvd190YWcge307Ci0KLXRlbXBsYXRlPCBjbGFzcyBEID4gc3RydWN0IHNwX2lucGxhY2VfdGFnCi17Ci19OwotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX0NYWDExX1NNQVJUX1BUUiApCi0KLXRlbXBsYXRlPCBjbGFzcyBUID4gY2xhc3Mgc3BfcmVmZXJlbmNlX3dyYXBwZXIKLXsgCi1wdWJsaWM6Ci0KLSAgICBleHBsaWNpdCBzcF9yZWZlcmVuY2Vfd3JhcHBlciggVCAmIHQpOiB0XyggbmRuYm9vc3Q6OmFkZHJlc3NvZiggdCApICkKLSAgICB7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8IGNsYXNzIFkgPiB2b2lkIG9wZXJhdG9yKCkoIFkgKiBwICkgY29uc3QKLSAgICB7Ci0gICAgICAgICgqdF8pKCBwICk7Ci0gICAgfQotCi1wcml2YXRlOgotCi0gICAgVCAqIHRfOwotfTsKLQotdGVtcGxhdGU8IGNsYXNzIEQgPiBzdHJ1Y3Qgc3BfY29udmVydF9yZWZlcmVuY2UKLXsKLSAgICB0eXBlZGVmIEQgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPCBjbGFzcyBEID4gc3RydWN0IHNwX2NvbnZlcnRfcmVmZXJlbmNlPCBEJiA+Ci17Ci0gICAgdHlwZWRlZiBzcF9yZWZlcmVuY2Vfd3JhcHBlcjwgRCA+IHR5cGU7Ci19OwotCi0jZW5kaWYKLQotY2xhc3Mgd2Vha19jb3VudDsKLQotY2xhc3Mgc2hhcmVkX2NvdW50Ci17Ci1wcml2YXRlOgotCi0gICAgc3BfY291bnRlZF9iYXNlICogcGlfOwotCi0jaWYgZGVmaW5lZChORE5CT09TVF9TUF9FTkFCTEVfREVCVUdfSE9PS1MpCi0gICAgaW50IGlkXzsKLSNlbmRpZgotCi0gICAgZnJpZW5kIGNsYXNzIHdlYWtfY291bnQ7Ci0KLXB1YmxpYzoKLQotICAgIHNoYXJlZF9jb3VudCgpOiBwaV8oMCkgLy8gbm90aHJvdwotI2lmIGRlZmluZWQoTkROQk9PU1RfU1BfRU5BQkxFX0RFQlVHX0hPT0tTKQotICAgICAgICAsIGlkXyhzaGFyZWRfY291bnRfaWQpCi0jZW5kaWYKLSAgICB7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgWT4gZXhwbGljaXQgc2hhcmVkX2NvdW50KCBZICogcCApOiBwaV8oIDAgKQotI2lmIGRlZmluZWQoTkROQk9PU1RfU1BfRU5BQkxFX0RFQlVHX0hPT0tTKQotICAgICAgICAsIGlkXyhzaGFyZWRfY291bnRfaWQpCi0jZW5kaWYKLSAgICB7Ci0jaWZuZGVmIE5ETkJPT1NUX05PX0VYQ0VQVElPTlMKLQotICAgICAgICB0cnkKLSAgICAgICAgewotICAgICAgICAgICAgcGlfID0gbmV3IHNwX2NvdW50ZWRfaW1wbF9wPFk+KCBwICk7Ci0gICAgICAgIH0KLSAgICAgICAgY2F0Y2goLi4uKQotICAgICAgICB7Ci0gICAgICAgICAgICBuZG5ib29zdDo6Y2hlY2tlZF9kZWxldGUoIHAgKTsKLSAgICAgICAgICAgIHRocm93OwotICAgICAgICB9Ci0KLSNlbHNlCi0KLSAgICAgICAgcGlfID0gbmV3IHNwX2NvdW50ZWRfaW1wbF9wPFk+KCBwICk7Ci0KLSAgICAgICAgaWYoIHBpXyA9PSAwICkKLSAgICAgICAgewotICAgICAgICAgICAgbmRuYm9vc3Q6OmNoZWNrZWRfZGVsZXRlKCBwICk7Ci0gICAgICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKCBzdGQ6OmJhZF9hbGxvYygpICk7Ci0gICAgICAgIH0KLQotI2VuZGlmCi0gICAgfQotCi0jaWYgZGVmaW5lZCggTkROQk9PU1RfTVNWQyApICYmIE5ETkJPT1NUX1dPUktBUk9VTkQoIE5ETkJPT1NUX01TVkMsIDw9IDEyMDAgKQotICAgIHRlbXBsYXRlPGNsYXNzIFksIGNsYXNzIEQ+IHNoYXJlZF9jb3VudCggWSAqIHAsIEQgZCApOiBwaV8oMCkKLSNlbHNlCi0gICAgdGVtcGxhdGU8Y2xhc3MgUCwgY2xhc3MgRD4gc2hhcmVkX2NvdW50KCBQIHAsIEQgZCApOiBwaV8oMCkKLSNlbmRpZgotI2lmIGRlZmluZWQoTkROQk9PU1RfU1BfRU5BQkxFX0RFQlVHX0hPT0tTKQotICAgICAgICAsIGlkXyhzaGFyZWRfY291bnRfaWQpCi0jZW5kaWYKLSAgICB7Ci0jaWYgZGVmaW5lZCggTkROQk9PU1RfTVNWQyApICYmIE5ETkJPT1NUX1dPUktBUk9VTkQoIE5ETkJPT1NUX01TVkMsIDw9IDEyMDAgKQotICAgICAgICB0eXBlZGVmIFkqIFA7Ci0jZW5kaWYKLSNpZm5kZWYgTkROQk9PU1RfTk9fRVhDRVBUSU9OUwotCi0gICAgICAgIHRyeQotICAgICAgICB7Ci0gICAgICAgICAgICBwaV8gPSBuZXcgc3BfY291bnRlZF9pbXBsX3BkPFAsIEQ+KHAsIGQpOwotICAgICAgICB9Ci0gICAgICAgIGNhdGNoKC4uLikKLSAgICAgICAgewotICAgICAgICAgICAgZChwKTsgLy8gZGVsZXRlIHAKLSAgICAgICAgICAgIHRocm93OwotICAgICAgICB9Ci0KLSNlbHNlCi0KLSAgICAgICAgcGlfID0gbmV3IHNwX2NvdW50ZWRfaW1wbF9wZDxQLCBEPihwLCBkKTsKLQotICAgICAgICBpZihwaV8gPT0gMCkKLSAgICAgICAgewotICAgICAgICAgICAgZChwKTsgLy8gZGVsZXRlIHAKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oc3RkOjpiYWRfYWxsb2MoKSk7Ci0gICAgICAgIH0KLQotI2VuZGlmCi0gICAgfQotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RFTVBMQVRFX09SREVSSU5HICkKLQotICAgIHRlbXBsYXRlPCBjbGFzcyBQLCBjbGFzcyBEID4gc2hhcmVkX2NvdW50KCBQIHAsIHNwX2lucGxhY2VfdGFnPEQ+ICk6IHBpXyggMCApCi0jaWYgZGVmaW5lZChORE5CT09TVF9TUF9FTkFCTEVfREVCVUdfSE9PS1MpCi0gICAgICAgICwgaWRfKHNoYXJlZF9jb3VudF9pZCkKLSNlbmRpZgotICAgIHsKLSNpZm5kZWYgTkROQk9PU1RfTk9fRVhDRVBUSU9OUwotCi0gICAgICAgIHRyeQotICAgICAgICB7Ci0gICAgICAgICAgICBwaV8gPSBuZXcgc3BfY291bnRlZF9pbXBsX3BkPCBQLCBEID4oIHAgKTsKLSAgICAgICAgfQotICAgICAgICBjYXRjaCggLi4uICkKLSAgICAgICAgewotICAgICAgICAgICAgRDo6b3BlcmF0b3JfZm4oIHAgKTsgLy8gZGVsZXRlIHAKLSAgICAgICAgICAgIHRocm93OwotICAgICAgICB9Ci0KLSNlbHNlCi0KLSAgICAgICAgcGlfID0gbmV3IHNwX2NvdW50ZWRfaW1wbF9wZDwgUCwgRCA+KCBwICk7Ci0KLSAgICAgICAgaWYoIHBpXyA9PSAwICkKLSAgICAgICAgewotICAgICAgICAgICAgRDo6b3BlcmF0b3JfZm4oIHAgKTsgLy8gZGVsZXRlIHAKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oIHN0ZDo6YmFkX2FsbG9jKCkgKTsKLSAgICAgICAgfQotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9OT19FWENFUFRJT05TCi0gICAgfQotCi0jZW5kaWYgLy8gIWRlZmluZWQoIE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RFTVBMQVRFX09SREVSSU5HICkKLQotICAgIHRlbXBsYXRlPGNsYXNzIFAsIGNsYXNzIEQsIGNsYXNzIEE+IHNoYXJlZF9jb3VudCggUCBwLCBEIGQsIEEgYSApOiBwaV8oIDAgKQotI2lmIGRlZmluZWQoTkROQk9PU1RfU1BfRU5BQkxFX0RFQlVHX0hPT0tTKQotICAgICAgICAsIGlkXyhzaGFyZWRfY291bnRfaWQpCi0jZW5kaWYKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgc3BfY291bnRlZF9pbXBsX3BkYTxQLCBELCBBPiBpbXBsX3R5cGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgQTo6dGVtcGxhdGUgcmViaW5kPCBpbXBsX3R5cGUgPjo6b3RoZXIgQTI7Ci0KLSAgICAgICAgQTIgYTIoIGEgKTsKLQotI2lmbmRlZiBORE5CT09TVF9OT19FWENFUFRJT05TCi0KLSAgICAgICAgdHJ5Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHBpXyA9IGEyLmFsbG9jYXRlKCAxLCBzdGF0aWNfY2FzdDwgaW1wbF90eXBlKiA+KCAwICkgKTsKLSAgICAgICAgICAgIG5ldyggc3RhdGljX2Nhc3Q8IHZvaWQqID4oIHBpXyApICkgaW1wbF90eXBlKCBwLCBkLCBhICk7Ci0gICAgICAgIH0KLSAgICAgICAgY2F0Y2goLi4uKQotICAgICAgICB7Ci0gICAgICAgICAgICBkKCBwICk7Ci0KLSAgICAgICAgICAgIGlmKCBwaV8gIT0gMCApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgYTIuZGVhbGxvY2F0ZSggc3RhdGljX2Nhc3Q8IGltcGxfdHlwZSogPiggcGlfICksIDEgKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdGhyb3c7Ci0gICAgICAgIH0KLQotI2Vsc2UKLQotICAgICAgICBwaV8gPSBhMi5hbGxvY2F0ZSggMSwgc3RhdGljX2Nhc3Q8IGltcGxfdHlwZSogPiggMCApICk7Ci0KLSAgICAgICAgaWYoIHBpXyAhPSAwICkKLSAgICAgICAgewotICAgICAgICAgICAgbmV3KCBzdGF0aWNfY2FzdDwgdm9pZCogPiggcGlfICkgKSBpbXBsX3R5cGUoIHAsIGQsIGEgKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGQoIHAgKTsKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oIHN0ZDo6YmFkX2FsbG9jKCkgKTsKLSAgICAgICAgfQotCi0jZW5kaWYKLSAgICB9Ci0KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfTk9fRlVOQ1RJT05fVEVNUExBVEVfT1JERVJJTkcgKQotCi0gICAgdGVtcGxhdGU8IGNsYXNzIFAsIGNsYXNzIEQsIGNsYXNzIEEgPiBzaGFyZWRfY291bnQoIFAgcCwgc3BfaW5wbGFjZV90YWc8IEQgPiwgQSBhICk6IHBpXyggMCApCi0jaWYgZGVmaW5lZChORE5CT09TVF9TUF9FTkFCTEVfREVCVUdfSE9PS1MpCi0gICAgICAgICwgaWRfKHNoYXJlZF9jb3VudF9pZCkKLSNlbmRpZgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBzcF9jb3VudGVkX2ltcGxfcGRhPCBQLCBELCBBID4gaW1wbF90eXBlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEE6OnRlbXBsYXRlIHJlYmluZDwgaW1wbF90eXBlID46Om90aGVyIEEyOwotCi0gICAgICAgIEEyIGEyKCBhICk7Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fRVhDRVBUSU9OUwotCi0gICAgICAgIHRyeQotICAgICAgICB7Ci0gICAgICAgICAgICBwaV8gPSBhMi5hbGxvY2F0ZSggMSwgc3RhdGljX2Nhc3Q8IGltcGxfdHlwZSogPiggMCApICk7Ci0gICAgICAgICAgICBuZXcoIHN0YXRpY19jYXN0PCB2b2lkKiA+KCBwaV8gKSApIGltcGxfdHlwZSggcCwgYSApOwotICAgICAgICB9Ci0gICAgICAgIGNhdGNoKC4uLikKLSAgICAgICAgewotICAgICAgICAgICAgRDo6b3BlcmF0b3JfZm4oIHAgKTsKLQotICAgICAgICAgICAgaWYoIHBpXyAhPSAwICkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBhMi5kZWFsbG9jYXRlKCBzdGF0aWNfY2FzdDwgaW1wbF90eXBlKiA+KCBwaV8gKSwgMSApOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB0aHJvdzsKLSAgICAgICAgfQotCi0jZWxzZQotCi0gICAgICAgIHBpXyA9IGEyLmFsbG9jYXRlKCAxLCBzdGF0aWNfY2FzdDwgaW1wbF90eXBlKiA+KCAwICkgKTsKLQotICAgICAgICBpZiggcGlfICE9IDAgKQotICAgICAgICB7Ci0gICAgICAgICAgICBuZXcoIHN0YXRpY19jYXN0PCB2b2lkKiA+KCBwaV8gKSApIGltcGxfdHlwZSggcCwgYSApOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgICAgRDo6b3BlcmF0b3JfZm4oIHAgKTsKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oIHN0ZDo6YmFkX2FsbG9jKCkgKTsKLSAgICAgICAgfQotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9OT19FWENFUFRJT05TCi0gICAgfQotCi0jZW5kaWYgLy8gIWRlZmluZWQoIE5ETkJPT1NUX05PX0ZVTkNUSU9OX1RFTVBMQVRFX09SREVSSU5HICkKLQotI2lmbmRlZiBORE5CT09TVF9OT19BVVRPX1BUUgotCi0gICAgLy8gYXV0b19wdHI8WT4gaXMgc3BlY2lhbCBjYXNlZCB0byBwcm92aWRlIHRoZSBzdHJvbmcgZ3VhcmFudGVlCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBZPgotICAgIGV4cGxpY2l0IHNoYXJlZF9jb3VudCggc3RkOjphdXRvX3B0cjxZPiAmIHIgKTogcGlfKCBuZXcgc3BfY291bnRlZF9pbXBsX3A8WT4oIHIuZ2V0KCkgKSApCi0jaWYgZGVmaW5lZChORE5CT09TVF9TUF9FTkFCTEVfREVCVUdfSE9PS1MpCi0gICAgICAgICwgaWRfKHNoYXJlZF9jb3VudF9pZCkKLSNlbmRpZgotICAgIHsKLSNpZmRlZiBORE5CT09TVF9OT19FWENFUFRJT05TCi0KLSAgICAgICAgaWYoIHBpXyA9PSAwICkKLSAgICAgICAgewotICAgICAgICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihzdGQ6OmJhZF9hbGxvYygpKTsKLSAgICAgICAgfQotCi0jZW5kaWYKLQotICAgICAgICByLnJlbGVhc2UoKTsKLSAgICB9Ci0KLSNlbmRpZiAKLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19DWFgxMV9TTUFSVF9QVFIgKQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgWSwgY2xhc3MgRD4KLSAgICBleHBsaWNpdCBzaGFyZWRfY291bnQoIHN0ZDo6dW5pcXVlX3B0cjxZLCBEPiAmIHIgKTogcGlfKCAwICkKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1NQX0VOQUJMRV9ERUJVR19IT09LUykKLSAgICAgICAgLCBpZF8oc2hhcmVkX2NvdW50X2lkKQotI2VuZGlmCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHNwX2NvbnZlcnRfcmVmZXJlbmNlPEQ+Ojp0eXBlIEQyOwotCi0gICAgICAgIEQyIGQyKCByLmdldF9kZWxldGVyKCkgKTsKLSAgICAgICAgcGlfID0gbmV3IHNwX2NvdW50ZWRfaW1wbF9wZDwgdHlwZW5hbWUgc3RkOjp1bmlxdWVfcHRyPFksIEQ+Ojpwb2ludGVyLCBEMiA+KCByLmdldCgpLCBkMiApOwotCi0jaWZkZWYgTkROQk9PU1RfTk9fRVhDRVBUSU9OUwotCi0gICAgICAgIGlmKCBwaV8gPT0gMCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oIHN0ZDo6YmFkX2FsbG9jKCkgKTsKLSAgICAgICAgfQotCi0jZW5kaWYKLQotICAgICAgICByLnJlbGVhc2UoKTsKLSAgICB9Ci0KLSNlbmRpZgotCi0gICAgfnNoYXJlZF9jb3VudCgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGlmKCBwaV8gIT0gMCApIHBpXy0+cmVsZWFzZSgpOwotI2lmIGRlZmluZWQoTkROQk9PU1RfU1BfRU5BQkxFX0RFQlVHX0hPT0tTKQotICAgICAgICBpZF8gPSAwOwotI2VuZGlmCi0gICAgfQotCi0gICAgc2hhcmVkX2NvdW50KHNoYXJlZF9jb3VudCBjb25zdCAmIHIpOiBwaV8oci5waV8pIC8vIG5vdGhyb3cKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1NQX0VOQUJMRV9ERUJVR19IT09LUykKLSAgICAgICAgLCBpZF8oc2hhcmVkX2NvdW50X2lkKQotI2VuZGlmCi0gICAgewotICAgICAgICBpZiggcGlfICE9IDAgKSBwaV8tPmFkZF9yZWZfY29weSgpOwotICAgIH0KLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUyApCi0KLSAgICBzaGFyZWRfY291bnQoc2hhcmVkX2NvdW50ICYmIHIpOiBwaV8oci5waV8pIC8vIG5vdGhyb3cKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1NQX0VOQUJMRV9ERUJVR19IT09LUykKLSAgICAgICAgLCBpZF8oc2hhcmVkX2NvdW50X2lkKQotI2VuZGlmCi0gICAgewotICAgICAgICByLnBpXyA9IDA7Ci0gICAgfQotCi0jZW5kaWYKLQotICAgIGV4cGxpY2l0IHNoYXJlZF9jb3VudCh3ZWFrX2NvdW50IGNvbnN0ICYgcik7IC8vIHRocm93cyBiYWRfd2Vha19wdHIgd2hlbiByLnVzZV9jb3VudCgpID09IDAKLSAgICBzaGFyZWRfY291bnQoIHdlYWtfY291bnQgY29uc3QgJiByLCBzcF9ub3Rocm93X3RhZyApOyAvLyBjb25zdHJ1Y3RzIGFuIGVtcHR5ICp0aGlzIHdoZW4gci51c2VfY291bnQoKSA9PSAwCi0KLSAgICBzaGFyZWRfY291bnQgJiBvcGVyYXRvcj0gKHNoYXJlZF9jb3VudCBjb25zdCAmIHIpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIHNwX2NvdW50ZWRfYmFzZSAqIHRtcCA9IHIucGlfOwotCi0gICAgICAgIGlmKCB0bXAgIT0gcGlfICkKLSAgICAgICAgewotICAgICAgICAgICAgaWYoIHRtcCAhPSAwICkgdG1wLT5hZGRfcmVmX2NvcHkoKTsKLSAgICAgICAgICAgIGlmKCBwaV8gIT0gMCApIHBpXy0+cmVsZWFzZSgpOwotICAgICAgICAgICAgcGlfID0gdG1wOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIHZvaWQgc3dhcChzaGFyZWRfY291bnQgJiByKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBzcF9jb3VudGVkX2Jhc2UgKiB0bXAgPSByLnBpXzsKLSAgICAgICAgci5waV8gPSBwaV87Ci0gICAgICAgIHBpXyA9IHRtcDsKLSAgICB9Ci0KLSAgICBsb25nIHVzZV9jb3VudCgpIGNvbnN0IC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIHJldHVybiBwaV8gIT0gMD8gcGlfLT51c2VfY291bnQoKTogMDsKLSAgICB9Ci0KLSAgICBib29sIHVuaXF1ZSgpIGNvbnN0IC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIHJldHVybiB1c2VfY291bnQoKSA9PSAxOwotICAgIH0KLQotICAgIGJvb2wgZW1wdHkoKSBjb25zdCAvLyBub3Rocm93Ci0gICAgewotICAgICAgICByZXR1cm4gcGlfID09IDA7Ci0gICAgfQotCi0gICAgZnJpZW5kIGlubGluZSBib29sIG9wZXJhdG9yPT0oc2hhcmVkX2NvdW50IGNvbnN0ICYgYSwgc2hhcmVkX2NvdW50IGNvbnN0ICYgYikKLSAgICB7Ci0gICAgICAgIHJldHVybiBhLnBpXyA9PSBiLnBpXzsKLSAgICB9Ci0KLSAgICBmcmllbmQgaW5saW5lIGJvb2wgb3BlcmF0b3I8KHNoYXJlZF9jb3VudCBjb25zdCAmIGEsIHNoYXJlZF9jb3VudCBjb25zdCAmIGIpCi0gICAgewotICAgICAgICByZXR1cm4gc3RkOjpsZXNzPHNwX2NvdW50ZWRfYmFzZSAqPigpKCBhLnBpXywgYi5waV8gKTsKLSAgICB9Ci0KLSAgICB2b2lkICogZ2V0X2RlbGV0ZXIoIHNwX3R5cGVpbmZvIGNvbnN0ICYgdGkgKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHBpXz8gcGlfLT5nZXRfZGVsZXRlciggdGkgKTogMDsKLSAgICB9Ci0KLSAgICB2b2lkICogZ2V0X3VudHlwZWRfZGVsZXRlcigpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gcGlfPyBwaV8tPmdldF91bnR5cGVkX2RlbGV0ZXIoKTogMDsKLSAgICB9Ci19OwotCi0KLWNsYXNzIHdlYWtfY291bnQKLXsKLXByaXZhdGU6Ci0KLSAgICBzcF9jb3VudGVkX2Jhc2UgKiBwaV87Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1NQX0VOQUJMRV9ERUJVR19IT09LUykKLSAgICBpbnQgaWRfOwotI2VuZGlmCi0KLSAgICBmcmllbmQgY2xhc3Mgc2hhcmVkX2NvdW50OwotCi1wdWJsaWM6Ci0KLSAgICB3ZWFrX2NvdW50KCk6IHBpXygwKSAvLyBub3Rocm93Ci0jaWYgZGVmaW5lZChORE5CT09TVF9TUF9FTkFCTEVfREVCVUdfSE9PS1MpCi0gICAgICAgICwgaWRfKHdlYWtfY291bnRfaWQpCi0jZW5kaWYKLSAgICB7Ci0gICAgfQotCi0gICAgd2Vha19jb3VudChzaGFyZWRfY291bnQgY29uc3QgJiByKTogcGlfKHIucGlfKSAvLyBub3Rocm93Ci0jaWYgZGVmaW5lZChORE5CT09TVF9TUF9FTkFCTEVfREVCVUdfSE9PS1MpCi0gICAgICAgICwgaWRfKHdlYWtfY291bnRfaWQpCi0jZW5kaWYKLSAgICB7Ci0gICAgICAgIGlmKHBpXyAhPSAwKSBwaV8tPndlYWtfYWRkX3JlZigpOwotICAgIH0KLQotICAgIHdlYWtfY291bnQod2Vha19jb3VudCBjb25zdCAmIHIpOiBwaV8oci5waV8pIC8vIG5vdGhyb3cKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1NQX0VOQUJMRV9ERUJVR19IT09LUykKLSAgICAgICAgLCBpZF8od2Vha19jb3VudF9pZCkKLSNlbmRpZgotICAgIHsKLSAgICAgICAgaWYocGlfICE9IDApIHBpXy0+d2Vha19hZGRfcmVmKCk7Ci0gICAgfQotCi0vLyBNb3ZlIHN1cHBvcnQKLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUyApCi0KLSAgICB3ZWFrX2NvdW50KHdlYWtfY291bnQgJiYgcik6IHBpXyhyLnBpXykgLy8gbm90aHJvdwotI2lmIGRlZmluZWQoTkROQk9PU1RfU1BfRU5BQkxFX0RFQlVHX0hPT0tTKQotICAgICAgICAsIGlkXyh3ZWFrX2NvdW50X2lkKQotI2VuZGlmCi0gICAgewotICAgICAgICByLnBpXyA9IDA7Ci0gICAgfQotCi0jZW5kaWYKLQotICAgIH53ZWFrX2NvdW50KCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgaWYocGlfICE9IDApIHBpXy0+d2Vha19yZWxlYXNlKCk7Ci0jaWYgZGVmaW5lZChORE5CT09TVF9TUF9FTkFCTEVfREVCVUdfSE9PS1MpCi0gICAgICAgIGlkXyA9IDA7Ci0jZW5kaWYKLSAgICB9Ci0KLSAgICB3ZWFrX2NvdW50ICYgb3BlcmF0b3I9IChzaGFyZWRfY291bnQgY29uc3QgJiByKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBzcF9jb3VudGVkX2Jhc2UgKiB0bXAgPSByLnBpXzsKLQotICAgICAgICBpZiggdG1wICE9IHBpXyApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmKHRtcCAhPSAwKSB0bXAtPndlYWtfYWRkX3JlZigpOwotICAgICAgICAgICAgaWYocGlfICE9IDApIHBpXy0+d2Vha19yZWxlYXNlKCk7Ci0gICAgICAgICAgICBwaV8gPSB0bXA7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgd2Vha19jb3VudCAmIG9wZXJhdG9yPSAod2Vha19jb3VudCBjb25zdCAmIHIpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIHNwX2NvdW50ZWRfYmFzZSAqIHRtcCA9IHIucGlfOwotCi0gICAgICAgIGlmKCB0bXAgIT0gcGlfICkKLSAgICAgICAgewotICAgICAgICAgICAgaWYodG1wICE9IDApIHRtcC0+d2Vha19hZGRfcmVmKCk7Ci0gICAgICAgICAgICBpZihwaV8gIT0gMCkgcGlfLT53ZWFrX3JlbGVhc2UoKTsKLSAgICAgICAgICAgIHBpXyA9IHRtcDsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICB2b2lkIHN3YXAod2Vha19jb3VudCAmIHIpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIHNwX2NvdW50ZWRfYmFzZSAqIHRtcCA9IHIucGlfOwotICAgICAgICByLnBpXyA9IHBpXzsKLSAgICAgICAgcGlfID0gdG1wOwotICAgIH0KLQotICAgIGxvbmcgdXNlX2NvdW50KCkgY29uc3QgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgcmV0dXJuIHBpXyAhPSAwPyBwaV8tPnVzZV9jb3VudCgpOiAwOwotICAgIH0KLQotICAgIGJvb2wgZW1wdHkoKSBjb25zdCAvLyBub3Rocm93Ci0gICAgewotICAgICAgICByZXR1cm4gcGlfID09IDA7Ci0gICAgfQotCi0gICAgZnJpZW5kIGlubGluZSBib29sIG9wZXJhdG9yPT0od2Vha19jb3VudCBjb25zdCAmIGEsIHdlYWtfY291bnQgY29uc3QgJiBiKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGEucGlfID09IGIucGlfOwotICAgIH0KLQotICAgIGZyaWVuZCBpbmxpbmUgYm9vbCBvcGVyYXRvcjwod2Vha19jb3VudCBjb25zdCAmIGEsIHdlYWtfY291bnQgY29uc3QgJiBiKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bGVzczxzcF9jb3VudGVkX2Jhc2UgKj4oKShhLnBpXywgYi5waV8pOwotICAgIH0KLX07Ci0KLWlubGluZSBzaGFyZWRfY291bnQ6OnNoYXJlZF9jb3VudCggd2Vha19jb3VudCBjb25zdCAmIHIgKTogcGlfKCByLnBpXyApCi0jaWYgZGVmaW5lZChORE5CT09TVF9TUF9FTkFCTEVfREVCVUdfSE9PS1MpCi0gICAgICAgICwgaWRfKHNoYXJlZF9jb3VudF9pZCkKLSNlbmRpZgotewotICAgIGlmKCBwaV8gPT0gMCB8fCAhcGlfLT5hZGRfcmVmX2xvY2soKSApCi0gICAgewotICAgICAgICBuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKCBuZG5ib29zdDo6YmFkX3dlYWtfcHRyKCkgKTsKLSAgICB9Ci19Ci0KLWlubGluZSBzaGFyZWRfY291bnQ6OnNoYXJlZF9jb3VudCggd2Vha19jb3VudCBjb25zdCAmIHIsIHNwX25vdGhyb3dfdGFnICk6IHBpXyggci5waV8gKQotI2lmIGRlZmluZWQoTkROQk9PU1RfU1BfRU5BQkxFX0RFQlVHX0hPT0tTKQotICAgICAgICAsIGlkXyhzaGFyZWRfY291bnRfaWQpCi0jZW5kaWYKLXsKLSAgICBpZiggcGlfICE9IDAgJiYgIXBpXy0+YWRkX3JlZl9sb2NrKCkgKQotICAgIHsKLSAgICAgICAgcGlfID0gMDsKLSAgICB9Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaWZkZWYgX19CT1JMQU5EQ19fCi0jIHByYWdtYSB3YXJuIC44MDI3ICAgICAvLyBGdW5jdGlvbnMgY29udGFpbmluZyB0cnkgYXJlIG5vdCBleHBhbmRlZCBpbmxpbmUKLSNlbmRpZgotCi0jZW5kaWYgIC8vICNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TSEFSRURfQ09VTlRfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc2hhcmVkX3B0cl9ubXQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NoYXJlZF9wdHJfbm10LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjczNjhiOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc2hhcmVkX3B0cl9ubXQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTgyICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TSEFSRURfUFRSX05NVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TSEFSRURfUFRSX05NVF9IUFBfSU5DTFVERUQKLQotLy8KLS8vICBkZXRhaWwvc2hhcmVkX3B0cl9ubXQuaHBwIC0gc2hhcmVkX3B0ci5ocHAgd2l0aG91dCBtZW1iZXIgdGVtcGxhdGVzCi0vLwotLy8gIChDKSBDb3B5cmlnaHQgR3JlZyBDb2x2aW4gYW5kIEJlbWFuIERhd2VzIDE5OTgsIDE5OTkuCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAxLCAyMDAyIFBldGVyIERpbW92Ci0vLwotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9zbWFydF9wdHIvc2hhcmVkX3B0ci5odG0gZm9yIGRvY3VtZW50YXRpb24uCi0vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9jaGVja2VkX2RlbGV0ZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGhyb3dfZXhjZXB0aW9uLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2F0b21pY19jb3VudC5ocHA+Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fQVVUT19QVFIKLSMgaW5jbHVkZSA8bWVtb3J5PiAgICAgICAgICAvLyBmb3Igc3RkOjphdXRvX3B0cgotI2VuZGlmCi0KLSNpbmNsdWRlIDxhbGdvcml0aG0+ICAgICAgICAvLyBmb3Igc3RkOjpzd2FwCi0jaW5jbHVkZSA8ZnVuY3Rpb25hbD4gICAgICAgLy8gZm9yIHN0ZDo6bGVzcwotI2luY2x1ZGUgPG5ldz4gICAgICAgICAgICAgIC8vIGZvciBzdGQ6OmJhZF9hbGxvYwotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotdGVtcGxhdGU8Y2xhc3MgVD4gY2xhc3Mgc2hhcmVkX3B0cgotewotcHJpdmF0ZToKLQotICAgIHR5cGVkZWYgZGV0YWlsOjphdG9taWNfY291bnQgY291bnRfdHlwZTsKLQotcHVibGljOgotCi0gICAgdHlwZWRlZiBUIGVsZW1lbnRfdHlwZTsKLSAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLQotICAgIGV4cGxpY2l0IHNoYXJlZF9wdHIoVCAqIHAgPSAwKTogcHgocCkKLSAgICB7Ci0jaWZuZGVmIE5ETkJPT1NUX05PX0VYQ0VQVElPTlMKLQotICAgICAgICB0cnkgIC8vIHByZXZlbnQgbGVhayBpZiBuZXcgdGhyb3dzCi0gICAgICAgIHsKLSAgICAgICAgICAgIHBuID0gbmV3IGNvdW50X3R5cGUoMSk7Ci0gICAgICAgIH0KLSAgICAgICAgY2F0Y2goLi4uKQotICAgICAgICB7Ci0gICAgICAgICAgICBuZG5ib29zdDo6Y2hlY2tlZF9kZWxldGUocCk7Ci0gICAgICAgICAgICB0aHJvdzsKLSAgICAgICAgfQotCi0jZWxzZQotCi0gICAgICAgIHBuID0gbmV3IGNvdW50X3R5cGUoMSk7Ci0KLSAgICAgICAgaWYocG4gPT0gMCkKLSAgICAgICAgewotICAgICAgICAgICAgbmRuYm9vc3Q6OmNoZWNrZWRfZGVsZXRlKHApOwotICAgICAgICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbihzdGQ6OmJhZF9hbGxvYygpKTsKLSAgICAgICAgfQotCi0jZW5kaWYKLSAgICB9Ci0KLSAgICB+c2hhcmVkX3B0cigpCi0gICAgewotICAgICAgICBpZigtLSpwbiA9PSAwKQotICAgICAgICB7Ci0gICAgICAgICAgICBuZG5ib29zdDo6Y2hlY2tlZF9kZWxldGUocHgpOwotICAgICAgICAgICAgZGVsZXRlIHBuOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgc2hhcmVkX3B0cihzaGFyZWRfcHRyIGNvbnN0ICYgcik6IHB4KHIucHgpICAvLyBuZXZlciB0aHJvd3MKLSAgICB7Ci0gICAgICAgIHBuID0gci5wbjsKLSAgICAgICAgKysqcG47Ci0gICAgfQotCi0gICAgc2hhcmVkX3B0ciAmIG9wZXJhdG9yPShzaGFyZWRfcHRyIGNvbnN0ICYgcikKLSAgICB7Ci0gICAgICAgIHNoYXJlZF9wdHIocikuc3dhcCgqdGhpcyk7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fQVVUT19QVFIKLQotICAgIGV4cGxpY2l0IHNoYXJlZF9wdHIoc3RkOjphdXRvX3B0cjxUPiAmIHIpCi0gICAgeyAKLSAgICAgICAgcG4gPSBuZXcgY291bnRfdHlwZSgxKTsgLy8gbWF5IHRocm93Ci0gICAgICAgIHB4ID0gci5yZWxlYXNlKCk7IC8vIGZpeDogbW92ZWQgaGVyZSB0byBzdG9wIGxlYWsgaWYgbmV3IHRocm93cwotICAgIH0gCi0KLSAgICBzaGFyZWRfcHRyICYgb3BlcmF0b3I9KHN0ZDo6YXV0b19wdHI8VD4gJiByKQotICAgIHsKLSAgICAgICAgc2hhcmVkX3B0cihyKS5zd2FwKCp0aGlzKTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotI2VuZGlmCi0KLSAgICB2b2lkIHJlc2V0KFQgKiBwID0gMCkKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX0FTU0VSVChwID09IDAgfHwgcCAhPSBweCk7Ci0gICAgICAgIHNoYXJlZF9wdHIocCkuc3dhcCgqdGhpcyk7Ci0gICAgfQotCi0gICAgVCAmIG9wZXJhdG9yKigpIGNvbnN0ICAvLyBuZXZlciB0aHJvd3MKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX0FTU0VSVChweCAhPSAwKTsKLSAgICAgICAgcmV0dXJuICpweDsKLSAgICB9Ci0KLSAgICBUICogb3BlcmF0b3ItPigpIGNvbnN0ICAvLyBuZXZlciB0aHJvd3MKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX0FTU0VSVChweCAhPSAwKTsKLSAgICAgICAgcmV0dXJuIHB4OwotICAgIH0KLQotICAgIFQgKiBnZXQoKSBjb25zdCAgLy8gbmV2ZXIgdGhyb3dzCi0gICAgewotICAgICAgICByZXR1cm4gcHg7Ci0gICAgfQotCi0gICAgbG9uZyB1c2VfY291bnQoKSBjb25zdCAgLy8gbmV2ZXIgdGhyb3dzCi0gICAgewotICAgICAgICByZXR1cm4gKnBuOwotICAgIH0KLQotICAgIGJvb2wgdW5pcXVlKCkgY29uc3QgIC8vIG5ldmVyIHRocm93cwotICAgIHsKLSAgICAgICAgcmV0dXJuICpwbiA9PSAxOwotICAgIH0KLSAgICAKLSAgICB2b2lkIHN3YXAoc2hhcmVkX3B0cjxUPiAmIG90aGVyKSAgLy8gbmV2ZXIgdGhyb3dzCi0gICAgewotICAgICAgICBzdGQ6OnN3YXAocHgsIG90aGVyLnB4KTsKLSAgICAgICAgc3RkOjpzd2FwKHBuLCBvdGhlci5wbik7Ci0gICAgfQotCi1wcml2YXRlOgotCi0gICAgVCAqIHB4OyAgICAgICAgICAgIC8vIGNvbnRhaW5lZCBwb2ludGVyCi0gICAgY291bnRfdHlwZSAqIHBuOyAgIC8vIHB0ciB0byByZWZlcmVuY2UgY291bnRlcgotfTsKLQotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShzaGFyZWRfcHRyPFQ+IGNvbnN0ICYgYSwgc2hhcmVkX3B0cjxVPiBjb25zdCAmIGIpCi17Ci0gICAgcmV0dXJuIGEuZ2V0KCkgPT0gYi5nZXQoKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVT4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPShzaGFyZWRfcHRyPFQ+IGNvbnN0ICYgYSwgc2hhcmVkX3B0cjxVPiBjb25zdCAmIGIpCi17Ci0gICAgcmV0dXJuIGEuZ2V0KCkgIT0gYi5nZXQoKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIGJvb2wgb3BlcmF0b3I8KHNoYXJlZF9wdHI8VD4gY29uc3QgJiBhLCBzaGFyZWRfcHRyPFQ+IGNvbnN0ICYgYikKLXsKLSAgICByZXR1cm4gc3RkOjpsZXNzPFQqPigpKGEuZ2V0KCksIGIuZ2V0KCkpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUPiB2b2lkIHN3YXAoc2hhcmVkX3B0cjxUPiAmIGEsIHNoYXJlZF9wdHI8VD4gJiBiKQotewotICAgIGEuc3dhcChiKTsKLX0KLQotLy8gZ2V0X3BvaW50ZXIoKSBlbmFibGVzIG5kbmJvb3N0OjptZW1fZm4gdG8gcmVjb2duaXplIHNoYXJlZF9wdHIKLQotdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIFQgKiBnZXRfcG9pbnRlcihzaGFyZWRfcHRyPFQ+IGNvbnN0ICYgcCkKLXsKLSAgICByZXR1cm4gcC5nZXQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmICAvLyAjaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU0hBUkVEX1BUUl9OTVRfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY29udmVydGlibGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvbnZlcnRpYmxlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmM4YjZiMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY29udmVydGlibGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTEgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0NPTlZFUlRJQkxFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0NPTlZFUlRJQkxFX0hQUF9JTkNMVURFRAotCi0vLyBNUyBjb21wYXRpYmxlIGNvbXBpbGVycyBzdXBwb3J0ICNwcmFnbWEgb25jZQotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotLy8gIGRldGFpbC9zcF9jb252ZXJ0aWJsZS5ocHAKLS8vCi0vLyAgQ29weXJpZ2h0IDIwMDggUGV0ZXIgRGltb3YKLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9TUF9OT19TUF9DT05WRVJUSUJMRSApICYmIGRlZmluZWQoIE5ETkJPT1NUX05PX1NGSU5BRSApCi0jIGRlZmluZSBORE5CT09TVF9TUF9OT19TUF9DT05WRVJUSUJMRQotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfU1BfTk9fU1BfQ09OVkVSVElCTEUgKSAmJiBkZWZpbmVkKCBfX0dOVUNfXyApICYmICggX19HTlVDX18gKiAxMDAgKyBfX0dOVUNfTUlOT1JfXyA8IDMwMyApCi0jIGRlZmluZSBORE5CT09TVF9TUF9OT19TUF9DT05WRVJUSUJMRQotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfU1BfTk9fU1BfQ09OVkVSVElCTEUgKSAmJiBkZWZpbmVkKCBfX0JPUkxBTkRDX18gKSAmJiAoIF9fQk9STEFORENfXyA8IDB4NjMwICkKLSMgZGVmaW5lIE5ETkJPT1NUX1NQX05PX1NQX0NPTlZFUlRJQkxFCi0jZW5kaWYKLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9TUF9OT19TUF9DT05WRVJUSUJMRSApCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi1uYW1lc3BhY2UgZGV0YWlsCi17Ci0KLXRlbXBsYXRlPCBjbGFzcyBZLCBjbGFzcyBUID4gc3RydWN0IHNwX2NvbnZlcnRpYmxlCi17Ci0gICAgdHlwZWRlZiBjaGFyICgmeWVzKSBbMV07Ci0gICAgdHlwZWRlZiBjaGFyICgmbm8pICBbMl07Ci0KLSAgICBzdGF0aWMgeWVzIGYoIFQqICk7Ci0gICAgc3RhdGljIG5vICBmKCAuLi4gKTsKLQotICAgIGVudW0gX3Z0IHsgdmFsdWUgPSBzaXplb2YoIChmKSggc3RhdGljX2Nhc3Q8WSo+KDApICkgKSA9PSBzaXplb2YoeWVzKSB9OwotfTsKLQotdGVtcGxhdGU8IGNsYXNzIFksIGNsYXNzIFQgPiBzdHJ1Y3Qgc3BfY29udmVydGlibGU8IFksIFRbXSA+Ci17Ci0gICAgZW51bSBfdnQgeyB2YWx1ZSA9IGZhbHNlIH07Ci19OwotCi10ZW1wbGF0ZTwgY2xhc3MgWSwgY2xhc3MgVCA+IHN0cnVjdCBzcF9jb252ZXJ0aWJsZTwgWVtdLCBUW10gPgotewotICAgIGVudW0gX3Z0IHsgdmFsdWUgPSBzcF9jb252ZXJ0aWJsZTwgWVsxXSwgVFsxXSA+Ojp2YWx1ZSB9OwotfTsKLQotdGVtcGxhdGU8IGNsYXNzIFksIHN0ZDo6c2l6ZV90IE4sIGNsYXNzIFQgPiBzdHJ1Y3Qgc3BfY29udmVydGlibGU8IFlbTl0sIFRbXSA+Ci17Ci0gICAgZW51bSBfdnQgeyB2YWx1ZSA9IHNwX2NvbnZlcnRpYmxlPCBZWzFdLCBUWzFdID46OnZhbHVlIH07Ci19OwotCi1zdHJ1Y3Qgc3BfZW1wdHkKLXsKLX07Ci0KLXRlbXBsYXRlPCBib29sID4gc3RydWN0IHNwX2VuYWJsZV9pZl9jb252ZXJ0aWJsZV9pbXBsOwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBzcF9lbmFibGVfaWZfY29udmVydGlibGVfaW1wbDx0cnVlPgotewotICAgIHR5cGVkZWYgc3BfZW1wdHkgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHNwX2VuYWJsZV9pZl9jb252ZXJ0aWJsZV9pbXBsPGZhbHNlPgotewotfTsKLQotdGVtcGxhdGU8IGNsYXNzIFksIGNsYXNzIFQgPiBzdHJ1Y3Qgc3BfZW5hYmxlX2lmX2NvbnZlcnRpYmxlOiBwdWJsaWMgc3BfZW5hYmxlX2lmX2NvbnZlcnRpYmxlX2ltcGw8IHNwX2NvbnZlcnRpYmxlPCBZLCBUID46OnZhbHVlID4KLXsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gIWRlZmluZWQoIE5ETkJPT1NUX1NQX05PX1NQX0NPTlZFUlRJQkxFICkKLQotI2VuZGlmICAvLyAjaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfQ09OVkVSVElCTEVfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2UuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZDdmODJhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2UuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzkgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0NPVU5URURfQkFTRV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9DT1VOVEVEX0JBU0VfSFBQX0lOQ0xVREVECi0KLS8vIE1TIGNvbXBhdGlibGUgY29tcGlsZXJzIHN1cHBvcnQgI3ByYWdtYSBvbmNlCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0vLwotLy8gIGRldGFpbC9zcF9jb3VudGVkX2Jhc2UuaHBwCi0vLwotLy8gIENvcHlyaWdodCAyMDA1LCAyMDA2IFBldGVyIERpbW92Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9oYXNfc3luYy5ocHA+Ci0KLSNpZiBkZWZpbmVkKCBORE5CT09TVF9TUF9ESVNBQkxFX1RIUkVBRFMgKQotIyBpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9udC5ocHA+Ci0KLSNlbGlmIGRlZmluZWQoIE5ETkJPT1NUX1NQX1VTRV9TUElOTE9DSyApCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlX3NwaW4uaHBwPgotCi0jZWxpZiBkZWZpbmVkKCBORE5CT09TVF9TUF9VU0VfUFRIUkVBRFMgKQotIyBpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9wdC5ocHA+Ci0KLSNlbGlmIGRlZmluZWQoIE5ETkJPT1NUX0RJU0FCTEVfVEhSRUFEUyApICYmICFkZWZpbmVkKCBORE5CT09TVF9TUF9FTkFCTEVfVEhSRUFEUyApICYmICFkZWZpbmVkKCBORE5CT09TVF9ESVNBQkxFX1dJTjMyICkKLSMgaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2VfbnQuaHBwPgotCi0jZWxpZiBkZWZpbmVkKCBfX1NOQ19fICkKLSMgaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2Vfc25jX3BzMy5ocHA+Ci0KLSNlbGlmIGRlZmluZWQoIF9fR05VQ19fICkgJiYgKCBkZWZpbmVkKCBfX2kzODZfXyApIHx8IGRlZmluZWQoIF9feDg2XzY0X18gKSApICYmICFkZWZpbmVkKF9fUEFUSFNDQUxFX18pCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlX2djY194ODYuaHBwPgotCi0jZWxpZiBkZWZpbmVkKF9fSFBfYUNDKSAmJiBkZWZpbmVkKF9faWE2NCkKLSMgaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2VfYWNjX2lhNjQuaHBwPgotCi0jZWxpZiBkZWZpbmVkKCBfX0dOVUNfXyApICYmIGRlZmluZWQoIF9faWE2NF9fICkgJiYgIWRlZmluZWQoIF9fSU5URUxfQ09NUElMRVIgKSAmJiAhZGVmaW5lZChfX1BBVEhTQ0FMRV9fKQotIyBpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9nY2NfaWE2NC5ocHA+Ci0KLSNlbGlmIGRlZmluZWQoIF9fSUJNQ1BQX18gKSAmJiBkZWZpbmVkKCBfX3Bvd2VycGMgKQotIyBpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV92YWNwcF9wcGMuaHBwPgotCi0jZWxpZiBkZWZpbmVkKCBfX01XRVJLU19fICkgJiYgZGVmaW5lZCggX19QT1dFUlBDX18gKQotIyBpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9jd19wcGMuaHBwPgotCi0jZWxpZiBkZWZpbmVkKCBfX0dOVUNfXyApICYmICggZGVmaW5lZCggX19wb3dlcnBjX18gKSB8fCBkZWZpbmVkKCBfX3BwY19fICkgfHwgZGVmaW5lZCggX19wcGMgKSApICYmICFkZWZpbmVkKF9fUEFUSFNDQUxFX18pICYmICFkZWZpbmVkKCBfQUlYICkKLSMgaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2VfZ2NjX3BwYy5ocHA+Ci0KLSNlbGlmIGRlZmluZWQoIF9fR05VQ19fICkgJiYgKCBkZWZpbmVkKCBfX21pcHNfXyApIHx8IGRlZmluZWQoIF9taXBzICkgKSAmJiAhZGVmaW5lZChfX1BBVEhTQ0FMRV9fKQotIyBpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9nY2NfbWlwcy5ocHA+Ci0KLSNlbGlmIGRlZmluZWQoIE5ETkJPT1NUX1NQX0hBU19TWU5DICkKLSMgaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2Vfc3luYy5ocHA+Ci0KLSNlbGlmIGRlZmluZWQoX19HTlVDX18pICYmICggZGVmaW5lZCggX19zcGFyY3Y5ICkgfHwgKCBkZWZpbmVkKCBfX3NwYXJjdjggKSAmJiAoIF9fR05VQ19fICogMTAwICsgX19HTlVDX01JTk9SX18gPj0gNDAyICkgKSApCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlX2djY19zcGFyYy5ocHA+Ci0KLSNlbGlmIGRlZmluZWQoIFdJTjMyICkgfHwgZGVmaW5lZCggX1dJTjMyICkgfHwgZGVmaW5lZCggX19XSU4zMl9fICkgfHwgZGVmaW5lZChfX0NZR1dJTl9fKQotIyBpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV93MzIuaHBwPgotCi0jZWxpZiBkZWZpbmVkKCBfQUlYICkKLSMgaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2VfYWl4LmhwcD4KLQotI2VsaWYgIWRlZmluZWQoIE5ETkJPT1NUX0hBU19USFJFQURTICkKLSMgaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2VfbnQuaHBwPgotCi0jZWxzZQotIyBpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9zcGluLmhwcD4KLQotI2VuZGlmCi0KLSNlbmRpZiAgLy8gI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0NPVU5URURfQkFTRV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2VfYWNjX2lhNjQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9hY2NfaWE2NC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjZmFjZTAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9hY2NfaWE2NC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTEgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0NPVU5URURfQkFTRV9BQ0NfSUE2NF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9DT1VOVEVEX0JBU0VfQUNDX0lBNjRfSFBQX0lOQ0xVREVECi0KLS8vCi0vLyAgZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9hY2NfaWE2NC5ocHAgLSBhQysrIG9uIEhQLVVYIElBNjQKLS8vCi0vLyAgQ29weXJpZ2h0IDIwMDcgQmFydWNoIFppbGJlcgotLy8gIENvcHlyaWdodCAyMDA3IEJvcmlzIEd1YmVua28KLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8KLS8vICBMb2NrLWZyZWUgYWxnb3JpdGhtIGJ5IEFsZXhhbmRlciBUZXJla2hvdgotLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC9zcF90eXBlaW5mby5ocHA+Ci0jaW5jbHVkZSA8bWFjaGluZS9zeXMvaW5saW5lLmg+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi1uYW1lc3BhY2UgZGV0YWlsCi17Ci0KLWlubGluZSB2b2lkIGF0b21pY19pbmNyZW1lbnQoIGludCAqIHB3ICkKLXsKLSAgICAvLyArKypwdzsKLQotICAgIF9Bc21fZmV0Y2hhZGQoX0ZBU1pfVywgX1NFTV9SRUwsIHB3LCArMSwgX0xESElOVF9OT05FKTsKLX0gCi0KLWlubGluZSBpbnQgYXRvbWljX2RlY3JlbWVudCggaW50ICogcHcgKQotewotICAgIC8vIHJldHVybiAtLSpwdzsKLQotICAgIGludCByID0gc3RhdGljX2Nhc3Q8aW50PihfQXNtX2ZldGNoYWRkKF9GQVNaX1csIF9TRU1fUkVMLCBwdywgLTEsIF9MREhJTlRfTk9ORSkpOwotICAgIGlmICgxID09IHIpCi0gICAgewotICAgICAgICBfQXNtX21mKCk7Ci0gICAgfQotICAgIAotICAgIHJldHVybiByIC0gMTsKLX0KLQotaW5saW5lIGludCBhdG9taWNfY29uZGl0aW9uYWxfaW5jcmVtZW50KCBpbnQgKiBwdyApCi17Ci0gICAgLy8gaWYoICpwdyAhPSAwICkgKysqcHc7Ci0gICAgLy8gcmV0dXJuICpwdzsKLQotICAgIGludCB2ID0gKnB3OwotICAgIAotICAgIGZvciAoOzspCi0gICAgewotICAgICAgICBpZiAoMCA9PSB2KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgX0FzbV9tb3ZfdG9fYXIoX0FSRUdfQ0NWLAotICAgICAgICAgICAgICAgICAgICAgICB2LAotICAgICAgICAgICAgICAgICAgICAgICAoX1VQX0NBTExfRkVOQ0UgfCBfVVBfU1lTX0ZFTkNFIHwgX0RPV05fQ0FMTF9GRU5DRSB8IF9ET1dOX1NZU19GRU5DRSkpOwotICAgICAgICBpbnQgciA9IHN0YXRpY19jYXN0PGludD4oX0FzbV9jbXB4Y2hnKF9TWl9XLCBfU0VNX0FDUSwgcHcsIHYgKyAxLCBfTERISU5UX05PTkUpKTsKLSAgICAgICAgaWYgKHIgPT0gdikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHIgKyAxOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICB2ID0gcjsKLSAgICB9Ci19Ci0KLWNsYXNzIHNwX2NvdW50ZWRfYmFzZQotewotcHJpdmF0ZToKLQotICAgIHNwX2NvdW50ZWRfYmFzZSggc3BfY291bnRlZF9iYXNlIGNvbnN0ICYgKTsKLSAgICBzcF9jb3VudGVkX2Jhc2UgJiBvcGVyYXRvcj0gKCBzcF9jb3VudGVkX2Jhc2UgY29uc3QgJiApOwotCi0gICAgaW50IHVzZV9jb3VudF87ICAgICAgICAvLyAjc2hhcmVkCi0gICAgaW50IHdlYWtfY291bnRfOyAgICAgICAvLyAjd2VhayArICgjc2hhcmVkICE9IDApCi0KLXB1YmxpYzoKLQotICAgIHNwX2NvdW50ZWRfYmFzZSgpOiB1c2VfY291bnRfKCAxICksIHdlYWtfY291bnRfKCAxICkKLSAgICB7Ci0gICAgfQotCi0gICAgdmlydHVhbCB+c3BfY291bnRlZF9iYXNlKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICB9Ci0KLSAgICAvLyBkaXNwb3NlKCkgaXMgY2FsbGVkIHdoZW4gdXNlX2NvdW50XyBkcm9wcyB0byB6ZXJvLCB0byByZWxlYXNlCi0gICAgLy8gdGhlIHJlc291cmNlcyBtYW5hZ2VkIGJ5ICp0aGlzLgotCi0gICAgdmlydHVhbCB2b2lkIGRpc3Bvc2UoKSA9IDA7IC8vIG5vdGhyb3cKLQotICAgIC8vIGRlc3Ryb3koKSBpcyBjYWxsZWQgd2hlbiB3ZWFrX2NvdW50XyBkcm9wcyB0byB6ZXJvLgotCi0gICAgdmlydHVhbCB2b2lkIGRlc3Ryb3koKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBkZWxldGUgdGhpczsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgKiBnZXRfZGVsZXRlciggc3BfdHlwZWluZm8gY29uc3QgJiB0aSApID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgKiBnZXRfdW50eXBlZF9kZWxldGVyKCkgPSAwOwotCi0gICAgdm9pZCBhZGRfcmVmX2NvcHkoKQotICAgIHsKLSAgICAgICAgYXRvbWljX2luY3JlbWVudCggJnVzZV9jb3VudF8gKTsKLSAgICB9Ci0KLSAgICBib29sIGFkZF9yZWZfbG9jaygpIC8vIHRydWUgb24gc3VjY2VzcwotICAgIHsKLSAgICAgICAgcmV0dXJuIGF0b21pY19jb25kaXRpb25hbF9pbmNyZW1lbnQoICZ1c2VfY291bnRfICkgIT0gMDsKLSAgICB9Ci0KLSAgICB2b2lkIHJlbGVhc2UoKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBpZiggYXRvbWljX2RlY3JlbWVudCggJnVzZV9jb3VudF8gKSA9PSAwICkKLSAgICAgICAgewotICAgICAgICAgICAgZGlzcG9zZSgpOwotICAgICAgICAgICAgd2Vha19yZWxlYXNlKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB2b2lkIHdlYWtfYWRkX3JlZigpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGF0b21pY19pbmNyZW1lbnQoICZ3ZWFrX2NvdW50XyApOwotICAgIH0KLQotICAgIHZvaWQgd2Vha19yZWxlYXNlKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgaWYoIGF0b21pY19kZWNyZW1lbnQoICZ3ZWFrX2NvdW50XyApID09IDAgKQotICAgICAgICB7Ci0gICAgICAgICAgICBkZXN0cm95KCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBsb25nIHVzZV9jb3VudCgpIGNvbnN0IC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQgY29uc3Qgdm9sYXRpbGUgJj4oIHVzZV9jb3VudF8gKTsgLy8gVE9ETyB1c2UgbGQuYWNxIGhlcmUKLSAgICB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmICAvLyAjaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfQ09VTlRFRF9CQVNFX0FDQ19JQTY0X0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9haXguaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9haXguaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiY2I3Y2ZlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2VfYWl4LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0MyArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfQ09VTlRFRF9CQVNFX0FJWF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9DT1VOVEVEX0JBU0VfQUlYX0hQUF9JTkNMVURFRAotCi0vLwotLy8gIGRldGFpbC9zcF9jb3VudGVkX2Jhc2VfYWl4LmhwcAotLy8gICBiYXNlZCBvbjogZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV93MzIuaHBwCi0vLwotLy8gIENvcHlyaWdodCAoYykgMjAwMSwgMjAwMiwgMjAwMyBQZXRlciBEaW1vdiBhbmQgTXVsdGkgTWVkaWEgTHRkLgotLy8gIENvcHlyaWdodCAyMDA0LTIwMDUgUGV0ZXIgRGltb3YKLS8vICBDb3B5cmlnaHQgMjAwNiBNaWNoYWVsIHZhbiBkZXIgV2VzdGh1aXplbgotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLwotLy8gIExvY2stZnJlZSBhbGdvcml0aG0gYnkgQWxleGFuZGVyIFRlcmVraG92Ci0vLwotLy8gIFRoYW5rcyB0byBCZW4gSGl0Y2hpbmdzIGZvciB0aGUgI3dlYWsgKyAoI3NoYXJlZCAhPSAwKQotLy8gIGZvcm11bGF0aW9uCi0vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3NwX3R5cGVpbmZvLmhwcD4KLSNpbmNsdWRlIDxidWlsdGlucy5oPgotI2luY2x1ZGUgPHN5cy9hdG9taWNfb3AuaD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLW5hbWVzcGFjZSBkZXRhaWwKLXsKLQotaW5saW5lIHZvaWQgYXRvbWljX2luY3JlbWVudCggaW50MzJfdCogcHcgKQotewotICAgIC8vICsrKnB3OwotCi0gICAgZmV0Y2hfYW5kX2FkZCggcHcsIDEgKTsKLX0KLQotaW5saW5lIGludDMyX3QgYXRvbWljX2RlY3JlbWVudCggaW50MzJfdCAqIHB3ICkKLXsKLSAgICAvLyByZXR1cm4gLS0qcHc7Ci0KLSAgICBpbnQzMl90IG9yaWdpbmFsVmFsdWU7Ci0KLSAgICBfX2x3c3luYygpOwotICAgIG9yaWdpbmFsVmFsdWUgPSBmZXRjaF9hbmRfYWRkKCBwdywgLTEgKTsKLSAgICBfX2lzeW5jKCk7Ci0KLSAgICByZXR1cm4gKG9yaWdpbmFsVmFsdWUgLSAxKTsKLX0KLQotaW5saW5lIGludDMyX3QgYXRvbWljX2NvbmRpdGlvbmFsX2luY3JlbWVudCggaW50MzJfdCAqIHB3ICkKLXsKLSAgICAvLyBpZiggKnB3ICE9IDAgKSArKypwdzsKLSAgICAvLyByZXR1cm4gKnB3OwotCi0gICAgaW50MzJfdCB0bXAgPSBmZXRjaF9hbmRfYWRkKCBwdywgMCApOwotICAgIGZvciggOzsgKQotICAgIHsKLSAgICAgICAgaWYoIHRtcCA9PSAwICkgcmV0dXJuIDA7Ci0gICAgICAgIGlmKCBjb21wYXJlX2FuZF9zd2FwKCBwdywgJnRtcCwgdG1wICsgMSApICkgcmV0dXJuICh0bXAgKyAxKTsKLSAgICB9Ci19Ci0KLWNsYXNzIHNwX2NvdW50ZWRfYmFzZQotewotcHJpdmF0ZToKLQotICAgIHNwX2NvdW50ZWRfYmFzZSggc3BfY291bnRlZF9iYXNlIGNvbnN0ICYgKTsKLSAgICBzcF9jb3VudGVkX2Jhc2UgJiBvcGVyYXRvcj0gKCBzcF9jb3VudGVkX2Jhc2UgY29uc3QgJiApOwotCi0gICAgaW50MzJfdCB1c2VfY291bnRfOyAgICAgICAgLy8gI3NoYXJlZAotICAgIGludDMyX3Qgd2Vha19jb3VudF87ICAgICAgIC8vICN3ZWFrICsgKCNzaGFyZWQgIT0gMCkKLQotcHVibGljOgotCi0gICAgc3BfY291bnRlZF9iYXNlKCk6IHVzZV9jb3VudF8oIDEgKSwgd2Vha19jb3VudF8oIDEgKQotICAgIHsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIH5zcF9jb3VudGVkX2Jhc2UoKSAvLyBub3Rocm93Ci0gICAgewotICAgIH0KLQotICAgIC8vIGRpc3Bvc2UoKSBpcyBjYWxsZWQgd2hlbiB1c2VfY291bnRfIGRyb3BzIHRvIHplcm8sIHRvIHJlbGVhc2UKLSAgICAvLyB0aGUgcmVzb3VyY2VzIG1hbmFnZWQgYnkgKnRoaXMuCi0KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcG9zZSgpID0gMDsgLy8gbm90aHJvdwotCi0gICAgLy8gZGVzdHJveSgpIGlzIGNhbGxlZCB3aGVuIHdlYWtfY291bnRfIGRyb3BzIHRvIHplcm8uCi0KLSAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGRlbGV0ZSB0aGlzOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCAqIGdldF9kZWxldGVyKCBzcF90eXBlaW5mbyBjb25zdCAmIHRpICkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCAqIGdldF91bnR5cGVkX2RlbGV0ZXIoKSA9IDA7Ci0KLSAgICB2b2lkIGFkZF9yZWZfY29weSgpCi0gICAgewotICAgICAgICBhdG9taWNfaW5jcmVtZW50KCAmdXNlX2NvdW50XyApOwotICAgIH0KLQotICAgIGJvb2wgYWRkX3JlZl9sb2NrKCkgLy8gdHJ1ZSBvbiBzdWNjZXNzCi0gICAgewotICAgICAgICByZXR1cm4gYXRvbWljX2NvbmRpdGlvbmFsX2luY3JlbWVudCggJnVzZV9jb3VudF8gKSAhPSAwOwotICAgIH0KLQotICAgIHZvaWQgcmVsZWFzZSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGlmKCBhdG9taWNfZGVjcmVtZW50KCAmdXNlX2NvdW50XyApID09IDAgKQotICAgICAgICB7Ci0gICAgICAgICAgICBkaXNwb3NlKCk7Ci0gICAgICAgICAgICB3ZWFrX3JlbGVhc2UoKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHZvaWQgd2Vha19hZGRfcmVmKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgYXRvbWljX2luY3JlbWVudCggJndlYWtfY291bnRfICk7Ci0gICAgfQotCi0gICAgdm9pZCB3ZWFrX3JlbGVhc2UoKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBpZiggYXRvbWljX2RlY3JlbWVudCggJndlYWtfY291bnRfICkgPT0gMCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRlc3Ryb3koKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGxvbmcgdXNlX2NvdW50KCkgY29uc3QgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgcmV0dXJuIGZldGNoX2FuZF9hZGQoIGNvbnN0X2Nhc3Q8aW50MzJfdCo+KCZ1c2VfY291bnRfKSwgMCApOwotICAgIH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgIC8vICNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9DT1VOVEVEX0JBU0VfQUlYX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9jd19wcGMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9jd19wcGMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZDE5NmJhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2VfY3dfcHBjLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE3MSArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfQ09VTlRFRF9CQVNFX0NXX1BQQ19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9DT1VOVEVEX0JBU0VfQ1dfUFBDX0hQUF9JTkNMVURFRAotCi0vLyBNUyBjb21wYXRpYmxlIGNvbXBpbGVycyBzdXBwb3J0ICNwcmFnbWEgb25jZQotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotLy8KLS8vICBkZXRhaWwvc3BfY291bnRlZF9iYXNlX2N3X3BwYy5ocHAgLSBDb2RlV2FycmlvciBvbiBQb3dlclBDCi0vLwotLy8gIENvcHlyaWdodCAoYykgMjAwMSwgMjAwMiwgMjAwMyBQZXRlciBEaW1vdiBhbmQgTXVsdGkgTWVkaWEgTHRkLgotLy8gIENvcHlyaWdodCAyMDA0LTIwMDUgUGV0ZXIgRGltb3YKLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8KLS8vICBMb2NrLWZyZWUgYWxnb3JpdGhtIGJ5IEFsZXhhbmRlciBUZXJla2hvdgotLy8KLS8vICBUaGFua3MgdG8gQmVuIEhpdGNoaW5ncyBmb3IgdGhlICN3ZWFrICsgKCNzaGFyZWQgIT0gMCkKLS8vICBmb3JtdWxhdGlvbgotLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC9zcF90eXBlaW5mby5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi1uYW1lc3BhY2UgZGV0YWlsCi17Ci0KLWlubGluZSB2b2lkIGF0b21pY19pbmNyZW1lbnQoIHJlZ2lzdGVyIGxvbmcgKiBwdyApCi17Ci0gICAgcmVnaXN0ZXIgaW50IGE7Ci0KLSAgICBhc20KLSAgICB7Ci1sb29wOgotCi0gICAgbHdhcnggICBhLCAwLCBwdwotICAgIGFkZGkgICAgYSwgYSwgMQotICAgIHN0d2N4LiAgYSwgMCwgcHcKLSAgICBibmUtICAgIGxvb3AKLSAgICB9Ci19Ci0KLWlubGluZSBsb25nIGF0b21pY19kZWNyZW1lbnQoIHJlZ2lzdGVyIGxvbmcgKiBwdyApCi17Ci0gICAgcmVnaXN0ZXIgaW50IGE7Ci0KLSAgICBhc20KLSAgICB7Ci0gICAgc3luYwotCi1sb29wOgotCi0gICAgbHdhcnggICBhLCAwLCBwdwotICAgIGFkZGkgICAgYSwgYSwgLTEKLSAgICBzdHdjeC4gIGEsIDAsIHB3Ci0gICAgYm5lLSAgICBsb29wCi0KLSAgICBpc3luYwotICAgIH0KLQotICAgIHJldHVybiBhOwotfQotCi1pbmxpbmUgbG9uZyBhdG9taWNfY29uZGl0aW9uYWxfaW5jcmVtZW50KCByZWdpc3RlciBsb25nICogcHcgKQotewotICAgIHJlZ2lzdGVyIGludCBhOwotCi0gICAgYXNtCi0gICAgewotbG9vcDoKLQotICAgIGx3YXJ4ICAgYSwgMCwgcHcKLSAgICBjbXB3aSAgIGEsIDAKLSAgICBiZXEgICAgIHN0b3JlCi0KLSAgICBhZGRpICAgIGEsIGEsIDEKLQotc3RvcmU6Ci0KLSAgICBzdHdjeC4gIGEsIDAsIHB3Ci0gICAgYm5lLSAgICBsb29wCi0gICAgfQotCi0gICAgcmV0dXJuIGE7Ci19Ci0KLWNsYXNzIHNwX2NvdW50ZWRfYmFzZQotewotcHJpdmF0ZToKLQotICAgIHNwX2NvdW50ZWRfYmFzZSggc3BfY291bnRlZF9iYXNlIGNvbnN0ICYgKTsKLSAgICBzcF9jb3VudGVkX2Jhc2UgJiBvcGVyYXRvcj0gKCBzcF9jb3VudGVkX2Jhc2UgY29uc3QgJiApOwotCi0gICAgbG9uZyB1c2VfY291bnRfOyAgICAgICAgLy8gI3NoYXJlZAotICAgIGxvbmcgd2Vha19jb3VudF87ICAgICAgIC8vICN3ZWFrICsgKCNzaGFyZWQgIT0gMCkKLQotcHVibGljOgotCi0gICAgc3BfY291bnRlZF9iYXNlKCk6IHVzZV9jb3VudF8oIDEgKSwgd2Vha19jb3VudF8oIDEgKQotICAgIHsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIH5zcF9jb3VudGVkX2Jhc2UoKSAvLyBub3Rocm93Ci0gICAgewotICAgIH0KLQotICAgIC8vIGRpc3Bvc2UoKSBpcyBjYWxsZWQgd2hlbiB1c2VfY291bnRfIGRyb3BzIHRvIHplcm8sIHRvIHJlbGVhc2UKLSAgICAvLyB0aGUgcmVzb3VyY2VzIG1hbmFnZWQgYnkgKnRoaXMuCi0KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcG9zZSgpID0gMDsgLy8gbm90aHJvdwotCi0gICAgLy8gZGVzdHJveSgpIGlzIGNhbGxlZCB3aGVuIHdlYWtfY291bnRfIGRyb3BzIHRvIHplcm8uCi0KLSAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGRlbGV0ZSB0aGlzOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCAqIGdldF9kZWxldGVyKCBzcF90eXBlaW5mbyBjb25zdCAmIHRpICkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCAqIGdldF91bnR5cGVkX2RlbGV0ZXIoKSA9IDA7Ci0KLSAgICB2b2lkIGFkZF9yZWZfY29weSgpCi0gICAgewotICAgICAgICBhdG9taWNfaW5jcmVtZW50KCAmdXNlX2NvdW50XyApOwotICAgIH0KLQotICAgIGJvb2wgYWRkX3JlZl9sb2NrKCkgLy8gdHJ1ZSBvbiBzdWNjZXNzCi0gICAgewotICAgICAgICByZXR1cm4gYXRvbWljX2NvbmRpdGlvbmFsX2luY3JlbWVudCggJnVzZV9jb3VudF8gKSAhPSAwOwotICAgIH0KLQotICAgIHZvaWQgcmVsZWFzZSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGlmKCBhdG9taWNfZGVjcmVtZW50KCAmdXNlX2NvdW50XyApID09IDAgKQotICAgICAgICB7Ci0gICAgICAgICAgICBkaXNwb3NlKCk7Ci0gICAgICAgICAgICB3ZWFrX3JlbGVhc2UoKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHZvaWQgd2Vha19hZGRfcmVmKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgYXRvbWljX2luY3JlbWVudCggJndlYWtfY291bnRfICk7Ci0gICAgfQotCi0gICAgdm9pZCB3ZWFrX3JlbGVhc2UoKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBpZiggYXRvbWljX2RlY3JlbWVudCggJndlYWtfY291bnRfICkgPT0gMCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRlc3Ryb3koKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGxvbmcgdXNlX2NvdW50KCkgY29uc3QgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGxvbmcgY29uc3Qgdm9sYXRpbGUgJj4oIHVzZV9jb3VudF8gKTsKLSAgICB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmICAvLyAjaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfQ09VTlRFRF9CQVNFX0NXX1BQQ19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2VfZ2NjX2lhNjQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9nY2NfaWE2NC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhZmMyOGIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9nY2NfaWE2NC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTggKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0NPVU5URURfQkFTRV9HQ0NfSUE2NF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9DT1VOVEVEX0JBU0VfR0NDX0lBNjRfSFBQX0lOQ0xVREVECi0KLS8vCi0vLyAgZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9nY2NfaWE2NC5ocHAgLSBnKysgb24gSUE2NAotLy8KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDIsIDIwMDMgUGV0ZXIgRGltb3YgYW5kIE11bHRpIE1lZGlhIEx0ZC4KLS8vICBDb3B5cmlnaHQgMjAwNC0yMDA2IFBldGVyIERpbW92Ci0vLyAgQ29weXJpZ2h0IDIwMDUgQmVuIEh1dGNoaW5ncwotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLwotLy8gIExvY2stZnJlZSBhbGdvcml0aG0gYnkgQWxleGFuZGVyIFRlcmVraG92Ci0vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3NwX3R5cGVpbmZvLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLW5hbWVzcGFjZSBkZXRhaWwKLXsKLQotaW5saW5lIHZvaWQgYXRvbWljX2luY3JlbWVudCggaW50ICogcHcgKQotewotICAgIC8vICsrKnB3OwotCi0gICAgaW50IHRtcDsKLQotICAgIC8vIE5vIGJhcnJpZXIgaXMgcmVxdWlyZWQgaGVyZSBidXQgZmV0Y2hhZGQgYWx3YXlzIGhhcyBhbiBhY3F1aXJlIG9yCi0gICAgLy8gcmVsZWFzZSBiYXJyaWVyIGFzc29jaWF0ZWQgd2l0aCBpdC4gIFdlIGNob29zZSByZWxlYXNlIGFzIGl0IHNob3VsZCBiZQotICAgIC8vIGNoZWFwZXIuCi0gICAgX19hc21fXyAoImZldGNoYWRkNC5yZWwgJTA9JTEsMSIgOgotICAgICAgICAgIj1yIih0bXApLCAiPW0iKCpwdykgOgotICAgICAgICAgIm0iKCAqcHcgKSk7Ci19Ci0KLWlubGluZSBpbnQgYXRvbWljX2RlY3JlbWVudCggaW50ICogcHcgKQotewotICAgIC8vIHJldHVybiAtLSpwdzsKLQotICAgIGludCBydjsKLQotICAgIF9fYXNtX18gKCIgICAgIGZldGNoYWRkNC5yZWwgJTA9JTEsLTEgOzsgXG4iCi0gICAgICAgICAgICAgIiAgICAgY21wLmVxICAgICAgICBwNyxwMD0xLCUwIDs7IFxuIgotICAgICAgICAgICAgICIocDcpIGxkNC5hY3EgICAgICAgJTA9JTEgICAgIiA6Ci0gICAgICAgICAgICAgIj0mciIocnYpLCAiPW0iKCpwdykgOgotICAgICAgICAgICAgICJtIiggKnB3ICkgOgotICAgICAgICAgICAgICJwNyIpOwotCi0gICAgcmV0dXJuIHJ2OwotfQotCi1pbmxpbmUgaW50IGF0b21pY19jb25kaXRpb25hbF9pbmNyZW1lbnQoIGludCAqIHB3ICkKLXsKLSAgICAvLyBpZiggKnB3ICE9IDAgKSArKypwdzsKLSAgICAvLyByZXR1cm4gKnB3OwotCi0gICAgaW50IHJ2LCB0bXAsIHRtcDI7Ci0KLSAgICBfX2FzbV9fICgiMDogICBsZDQgICAgICAgICAgJTA9JTMgICAgICAgICAgIDs7IFxuIgotICAgICAgICAgIiAgICAgY21wLmVxICAgICAgIHA3LHAwPTAsJTAgICAgICAgIDs7IFxuIgotICAgICAgICAgIihwNykgYnIuY29uZC5zcG50IDFmICAgICAgICAgICAgICAgIFxuIgotICAgICAgICAgIiAgICAgbW92ICAgICAgICAgIGFyLmNjdj0lMCAgICAgICAgIFxuIgotICAgICAgICAgIiAgICAgYWRkICAgICAgICAgICUxPTEsJTAgICAgICAgICAgIDs7IFxuIgotICAgICAgICAgIiAgICAgY21weGNoZzQuYWNxICUyPSUzLCUxLGFyLmNjdiA7OyBcbiIKLSAgICAgICAgICIgICAgIGNtcC5uZSAgICAgICBwNyxwMD0lMCwlMiAgICAgICA7OyBcbiIKLSAgICAgICAgICIocDcpIGJyLmNvbmQuc3BudCAwYiAgICAgICAgICAgICAgICBcbiIKLSAgICAgICAgICIgICAgIG1vdiAgICAgICAgICAlMD0lMSAgICAgICAgICAgICA7OyBcbiIKLSAgICAgICAgICIxOiIgOiAKLSAgICAgICAgICI9JnIiKHJ2KSwgIj0mciIodG1wKSwgIj0mciIodG1wMiksICI9bSIoKnB3KSA6Ci0gICAgICAgICAibSIoICpwdyApIDoKLSAgICAgICAgICJhci5jY3YiLCAicDciKTsKLQotICAgIHJldHVybiBydjsKLX0KLQotY2xhc3Mgc3BfY291bnRlZF9iYXNlCi17Ci1wcml2YXRlOgotCi0gICAgc3BfY291bnRlZF9iYXNlKCBzcF9jb3VudGVkX2Jhc2UgY29uc3QgJiApOwotICAgIHNwX2NvdW50ZWRfYmFzZSAmIG9wZXJhdG9yPSAoIHNwX2NvdW50ZWRfYmFzZSBjb25zdCAmICk7Ci0KLSAgICBpbnQgdXNlX2NvdW50XzsgICAgICAgIC8vICNzaGFyZWQKLSAgICBpbnQgd2Vha19jb3VudF87ICAgICAgIC8vICN3ZWFrICsgKCNzaGFyZWQgIT0gMCkKLQotcHVibGljOgotCi0gICAgc3BfY291bnRlZF9iYXNlKCk6IHVzZV9jb3VudF8oIDEgKSwgd2Vha19jb3VudF8oIDEgKQotICAgIHsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIH5zcF9jb3VudGVkX2Jhc2UoKSAvLyBub3Rocm93Ci0gICAgewotICAgIH0KLQotICAgIC8vIGRpc3Bvc2UoKSBpcyBjYWxsZWQgd2hlbiB1c2VfY291bnRfIGRyb3BzIHRvIHplcm8sIHRvIHJlbGVhc2UKLSAgICAvLyB0aGUgcmVzb3VyY2VzIG1hbmFnZWQgYnkgKnRoaXMuCi0KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcG9zZSgpID0gMDsgLy8gbm90aHJvdwotCi0gICAgLy8gZGVzdHJveSgpIGlzIGNhbGxlZCB3aGVuIHdlYWtfY291bnRfIGRyb3BzIHRvIHplcm8uCi0KLSAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGRlbGV0ZSB0aGlzOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCAqIGdldF9kZWxldGVyKCBzcF90eXBlaW5mbyBjb25zdCAmIHRpICkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCAqIGdldF91bnR5cGVkX2RlbGV0ZXIoKSA9IDA7Ci0KLSAgICB2b2lkIGFkZF9yZWZfY29weSgpCi0gICAgewotICAgICAgICBhdG9taWNfaW5jcmVtZW50KCAmdXNlX2NvdW50XyApOwotICAgIH0KLQotICAgIGJvb2wgYWRkX3JlZl9sb2NrKCkgLy8gdHJ1ZSBvbiBzdWNjZXNzCi0gICAgewotICAgICAgICByZXR1cm4gYXRvbWljX2NvbmRpdGlvbmFsX2luY3JlbWVudCggJnVzZV9jb3VudF8gKSAhPSAwOwotICAgIH0KLQotICAgIHZvaWQgcmVsZWFzZSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGlmKCBhdG9taWNfZGVjcmVtZW50KCAmdXNlX2NvdW50XyApID09IDAgKQotICAgICAgICB7Ci0gICAgICAgICAgICBkaXNwb3NlKCk7Ci0gICAgICAgICAgICB3ZWFrX3JlbGVhc2UoKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHZvaWQgd2Vha19hZGRfcmVmKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgYXRvbWljX2luY3JlbWVudCggJndlYWtfY291bnRfICk7Ci0gICAgfQotCi0gICAgdm9pZCB3ZWFrX3JlbGVhc2UoKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBpZiggYXRvbWljX2RlY3JlbWVudCggJndlYWtfY291bnRfICkgPT0gMCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRlc3Ryb3koKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGxvbmcgdXNlX2NvdW50KCkgY29uc3QgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludCBjb25zdCB2b2xhdGlsZSAmPiggdXNlX2NvdW50XyApOyAvLyBUT0RPIHVzZSBsZC5hY3EgaGVyZQotICAgIH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgIC8vICNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9DT1VOVEVEX0JBU0VfR0NDX0lBNjRfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlX2djY19taXBzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2VfZ2NjX21pcHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkM2JlMWRiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2VfZ2NjX21pcHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTgyICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfREVUQUlMX1NQX0NPVU5URURfQkFTRV9HQ0NfTUlQU19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX1NQX0NPVU5URURfQkFTRV9HQ0NfTUlQU19IUFBfSU5DTFVERUQKLQotLy8gTVMgY29tcGF0aWJsZSBjb21waWxlcnMgc3VwcG9ydCAjcHJhZ21hIG9uY2UKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLS8vCi0vLyAgZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9nY2NfbWlwcy5ocHAgLSBnKysgb24gTUlQUwotLy8KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDksIFNwaXJlbnQgQ29tbXVuaWNhdGlvbnMsIEluYy4KLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8KLS8vICBMb2NrLWZyZWUgYWxnb3JpdGhtIGJ5IEFsZXhhbmRlciBUZXJla2hvdgotLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC9zcF90eXBlaW5mby5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi1uYW1lc3BhY2UgZGV0YWlsCi17Ci0KLWlubGluZSB2b2lkIGF0b21pY19pbmNyZW1lbnQoIGludCAqIHB3ICkKLXsKLSAgICAvLyArKypwdzsKLQotICAgIGludCB0bXA7Ci0KLSAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXwotICAgICgKLSAgICAgICAgIjA6XG5cdCIKLSAgICAgICAgIi5zZXQgcHVzaFxuXHQiCi0gICAgICAgICIuc2V0IG1pcHMyXG5cdCIKLSAgICAgICAgImxsICUwLCAlMVxuXHQiCi0gICAgICAgICJhZGRpdSAlMCwgMVxuXHQiCi0gICAgICAgICJzYyAlMCwgJTFcblx0IgotICAgICAgICAiLnNldCBwb3Bcblx0IgotICAgICAgICAiYmVxeiAlMCwgMGIiOgotICAgICAgICAiPSZyIiggdG1wICksICI9bSIoICpwdyApOgotICAgICAgICAibSIoICpwdyApCi0gICAgKTsKLX0KLQotaW5saW5lIGludCBhdG9taWNfZGVjcmVtZW50KCBpbnQgKiBwdyApCi17Ci0gICAgLy8gcmV0dXJuIC0tKnB3OwotCi0gICAgaW50IHJ2LCB0bXA7Ci0KLSAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXwotICAgICgKLSAgICAgICAgIjA6XG5cdCIKLSAgICAgICAgIi5zZXQgcHVzaFxuXHQiCi0gICAgICAgICIuc2V0IG1pcHMyXG5cdCIKLSAgICAgICAgImxsICUxLCAlMlxuXHQiCi0gICAgICAgICJhZGRpdSAlMCwgJTEsIC0xXG5cdCIKLSAgICAgICAgInNjICUwLCAlMlxuXHQiCi0gICAgICAgICIuc2V0IHBvcFxuXHQiCi0gICAgICAgICJiZXF6ICUwLCAwYlxuXHQiCi0gICAgICAgICJhZGRpdSAlMCwgJTEsIC0xIjoKLSAgICAgICAgIj0mciIoIHJ2ICksICI9JnIiKCB0bXAgKSwgIj1tIiggKnB3ICk6Ci0gICAgICAgICJtIiggKnB3ICk6Ci0gICAgICAgICJtZW1vcnkiCi0gICAgKTsKLQotICAgIHJldHVybiBydjsKLX0KLQotaW5saW5lIGludCBhdG9taWNfY29uZGl0aW9uYWxfaW5jcmVtZW50KCBpbnQgKiBwdyApCi17Ci0gICAgLy8gaWYoICpwdyAhPSAwICkgKysqcHc7Ci0gICAgLy8gcmV0dXJuICpwdzsKLQotICAgIGludCBydiwgdG1wOwotCi0gICAgX19hc21fXyBfX3ZvbGF0aWxlX18KLSAgICAoCi0gICAgICAgICIwOlxuXHQiCi0gICAgICAgICIuc2V0IHB1c2hcblx0IgotICAgICAgICAiLnNldCBtaXBzMlxuXHQiCi0gICAgICAgICJsbCAlMCwgJTJcblx0IgotICAgICAgICAiYmVxeiAlMCwgMWZcblx0IgotICAgICAgICAiYWRkaXUgJTEsICUwLCAxXG5cdCIKLSAgICAgICAgInNjICUxLCAlMlxuXHQiCi0gICAgICAgICIuc2V0IHBvcFxuXHQiCi0gICAgICAgICJiZXF6ICUxLCAwYlxuXHQiCi0gICAgICAgICJhZGRpdSAlMCwgJTAsIDFcblx0IgotICAgICAgICAiMToiOgotICAgICAgICAiPSZyIiggcnYgKSwgIj0mciIoIHRtcCApLCAiPW0iKCAqcHcgKToKLSAgICAgICAgIm0iKCAqcHcgKToKLSAgICAgICAgIm1lbW9yeSIKLSAgICApOwotCi0gICAgcmV0dXJuIHJ2OwotfQotCi1jbGFzcyBzcF9jb3VudGVkX2Jhc2UKLXsKLXByaXZhdGU6Ci0KLSAgICBzcF9jb3VudGVkX2Jhc2UoIHNwX2NvdW50ZWRfYmFzZSBjb25zdCAmICk7Ci0gICAgc3BfY291bnRlZF9iYXNlICYgb3BlcmF0b3I9ICggc3BfY291bnRlZF9iYXNlIGNvbnN0ICYgKTsKLQotICAgIGludCB1c2VfY291bnRfOyAgICAgICAgLy8gI3NoYXJlZAotICAgIGludCB3ZWFrX2NvdW50XzsgICAgICAgLy8gI3dlYWsgKyAoI3NoYXJlZCAhPSAwKQotCi1wdWJsaWM6Ci0KLSAgICBzcF9jb3VudGVkX2Jhc2UoKTogdXNlX2NvdW50XyggMSApLCB3ZWFrX2NvdW50XyggMSApCi0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgfnNwX2NvdW50ZWRfYmFzZSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgfQotCi0gICAgLy8gZGlzcG9zZSgpIGlzIGNhbGxlZCB3aGVuIHVzZV9jb3VudF8gZHJvcHMgdG8gemVybywgdG8gcmVsZWFzZQotICAgIC8vIHRoZSByZXNvdXJjZXMgbWFuYWdlZCBieSAqdGhpcy4KLQotICAgIHZpcnR1YWwgdm9pZCBkaXNwb3NlKCkgPSAwOyAvLyBub3Rocm93Ci0KLSAgICAvLyBkZXN0cm95KCkgaXMgY2FsbGVkIHdoZW4gd2Vha19jb3VudF8gZHJvcHMgdG8gemVyby4KLQotICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95KCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgZGVsZXRlIHRoaXM7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkICogZ2V0X2RlbGV0ZXIoIHNwX3R5cGVpbmZvIGNvbnN0ICYgdGkgKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkICogZ2V0X3VudHlwZWRfZGVsZXRlcigpID0gMDsKLQotICAgIHZvaWQgYWRkX3JlZl9jb3B5KCkKLSAgICB7Ci0gICAgICAgIGF0b21pY19pbmNyZW1lbnQoICZ1c2VfY291bnRfICk7Ci0gICAgfQotCi0gICAgYm9vbCBhZGRfcmVmX2xvY2soKSAvLyB0cnVlIG9uIHN1Y2Nlc3MKLSAgICB7Ci0gICAgICAgIHJldHVybiBhdG9taWNfY29uZGl0aW9uYWxfaW5jcmVtZW50KCAmdXNlX2NvdW50XyApICE9IDA7Ci0gICAgfQotCi0gICAgdm9pZCByZWxlYXNlKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgaWYoIGF0b21pY19kZWNyZW1lbnQoICZ1c2VfY291bnRfICkgPT0gMCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRpc3Bvc2UoKTsKLSAgICAgICAgICAgIHdlYWtfcmVsZWFzZSgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdm9pZCB3ZWFrX2FkZF9yZWYoKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBhdG9taWNfaW5jcmVtZW50KCAmd2Vha19jb3VudF8gKTsKLSAgICB9Ci0KLSAgICB2b2lkIHdlYWtfcmVsZWFzZSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGlmKCBhdG9taWNfZGVjcmVtZW50KCAmd2Vha19jb3VudF8gKSA9PSAwICkKLSAgICAgICAgewotICAgICAgICAgICAgZGVzdHJveSgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgbG9uZyB1c2VfY291bnQoKSBjb25zdCAvLyBub3Rocm93Ci0gICAgewotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50IGNvbnN0IHZvbGF0aWxlICY+KCB1c2VfY291bnRfICk7Ci0gICAgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAgLy8gI2lmbmRlZiBORE5CT09TVF9ERVRBSUxfU1BfQ09VTlRFRF9CQVNFX0dDQ19NSVBTX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9nY2NfcHBjLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2VfZ2NjX3BwYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYxYjZlZGUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9nY2NfcHBjLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE4MiArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfQ09VTlRFRF9CQVNFX0dDQ19QUENfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfQ09VTlRFRF9CQVNFX0dDQ19QUENfSFBQX0lOQ0xVREVECi0KLS8vIE1TIGNvbXBhdGlibGUgY29tcGlsZXJzIHN1cHBvcnQgI3ByYWdtYSBvbmNlCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0vLwotLy8gIGRldGFpbC9zcF9jb3VudGVkX2Jhc2VfZ2NjX3BwYy5ocHAgLSBnKysgb24gUG93ZXJQQwotLy8KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDIsIDIwMDMgUGV0ZXIgRGltb3YgYW5kIE11bHRpIE1lZGlhIEx0ZC4KLS8vICBDb3B5cmlnaHQgMjAwNC0yMDA1IFBldGVyIERpbW92Ci0vLwotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vCi0vLyAgTG9jay1mcmVlIGFsZ29yaXRobSBieSBBbGV4YW5kZXIgVGVyZWtob3YKLS8vCi0vLyAgVGhhbmtzIHRvIEJlbiBIaXRjaGluZ3MgZm9yIHRoZSAjd2VhayArICgjc2hhcmVkICE9IDApCi0vLyAgZm9ybXVsYXRpb24KLS8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvc3BfdHlwZWluZm8uaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotbmFtZXNwYWNlIGRldGFpbAotewotCi1pbmxpbmUgdm9pZCBhdG9taWNfaW5jcmVtZW50KCBpbnQgKiBwdyApCi17Ci0gICAgLy8gKysqcHc7Ci0KLSAgICBpbnQgdG1wOwotCi0gICAgX19hc21fXwotICAgICgKLSAgICAgICAgIjA6XG5cdCIKLSAgICAgICAgImx3YXJ4ICUxLCAwLCAlMlxuXHQiCi0gICAgICAgICJhZGRpICUxLCAlMSwgMVxuXHQiCi0gICAgICAgICJzdHdjeC4gJTEsIDAsICUyXG5cdCIKLSAgICAgICAgImJuZS0gMGIiOgotCi0gICAgICAgICI9bSIoICpwdyApLCAiPSZiIiggdG1wICk6Ci0gICAgICAgICJyIiggcHcgKSwgIm0iKCAqcHcgKToKLSAgICAgICAgImNjIgotICAgICk7Ci19Ci0KLWlubGluZSBpbnQgYXRvbWljX2RlY3JlbWVudCggaW50ICogcHcgKQotewotICAgIC8vIHJldHVybiAtLSpwdzsKLQotICAgIGludCBydjsKLQotICAgIF9fYXNtX18gX192b2xhdGlsZV9fCi0gICAgKAotICAgICAgICAic3luY1xuXHQiCi0gICAgICAgICIwOlxuXHQiCi0gICAgICAgICJsd2FyeCAlMSwgMCwgJTJcblx0IgotICAgICAgICAiYWRkaSAlMSwgJTEsIC0xXG5cdCIKLSAgICAgICAgInN0d2N4LiAlMSwgMCwgJTJcblx0IgotICAgICAgICAiYm5lLSAwYlxuXHQiCi0gICAgICAgICJpc3luYyI6Ci0KLSAgICAgICAgIj1tIiggKnB3ICksICI9JmIiKCBydiApOgotICAgICAgICAiciIoIHB3ICksICJtIiggKnB3ICk6Ci0gICAgICAgICJtZW1vcnkiLCAiY2MiCi0gICAgKTsKLQotICAgIHJldHVybiBydjsKLX0KLQotaW5saW5lIGludCBhdG9taWNfY29uZGl0aW9uYWxfaW5jcmVtZW50KCBpbnQgKiBwdyApCi17Ci0gICAgLy8gaWYoICpwdyAhPSAwICkgKysqcHc7Ci0gICAgLy8gcmV0dXJuICpwdzsKLQotICAgIGludCBydjsKLQotICAgIF9fYXNtX18KLSAgICAoCi0gICAgICAgICIwOlxuXHQiCi0gICAgICAgICJsd2FyeCAlMSwgMCwgJTJcblx0IgotICAgICAgICAiY21wd2kgJTEsIDBcblx0IgotICAgICAgICAiYmVxIDFmXG5cdCIKLSAgICAgICAgImFkZGkgJTEsICUxLCAxXG5cdCIKLSAgICAgICAgIjE6XG5cdCIKLSAgICAgICAgInN0d2N4LiAlMSwgMCwgJTJcblx0IgotICAgICAgICAiYm5lLSAwYiI6Ci0KLSAgICAgICAgIj1tIiggKnB3ICksICI9JmIiKCBydiApOgotICAgICAgICAiciIoIHB3ICksICJtIiggKnB3ICk6Ci0gICAgICAgICJjYyIKLSAgICApOwotCi0gICAgcmV0dXJuIHJ2OwotfQotCi1jbGFzcyBzcF9jb3VudGVkX2Jhc2UKLXsKLXByaXZhdGU6Ci0KLSAgICBzcF9jb3VudGVkX2Jhc2UoIHNwX2NvdW50ZWRfYmFzZSBjb25zdCAmICk7Ci0gICAgc3BfY291bnRlZF9iYXNlICYgb3BlcmF0b3I9ICggc3BfY291bnRlZF9iYXNlIGNvbnN0ICYgKTsKLQotICAgIGludCB1c2VfY291bnRfOyAgICAgICAgLy8gI3NoYXJlZAotICAgIGludCB3ZWFrX2NvdW50XzsgICAgICAgLy8gI3dlYWsgKyAoI3NoYXJlZCAhPSAwKQotCi1wdWJsaWM6Ci0KLSAgICBzcF9jb3VudGVkX2Jhc2UoKTogdXNlX2NvdW50XyggMSApLCB3ZWFrX2NvdW50XyggMSApCi0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgfnNwX2NvdW50ZWRfYmFzZSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgfQotCi0gICAgLy8gZGlzcG9zZSgpIGlzIGNhbGxlZCB3aGVuIHVzZV9jb3VudF8gZHJvcHMgdG8gemVybywgdG8gcmVsZWFzZQotICAgIC8vIHRoZSByZXNvdXJjZXMgbWFuYWdlZCBieSAqdGhpcy4KLQotICAgIHZpcnR1YWwgdm9pZCBkaXNwb3NlKCkgPSAwOyAvLyBub3Rocm93Ci0KLSAgICAvLyBkZXN0cm95KCkgaXMgY2FsbGVkIHdoZW4gd2Vha19jb3VudF8gZHJvcHMgdG8gemVyby4KLQotICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95KCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgZGVsZXRlIHRoaXM7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkICogZ2V0X2RlbGV0ZXIoIHNwX3R5cGVpbmZvIGNvbnN0ICYgdGkgKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkICogZ2V0X3VudHlwZWRfZGVsZXRlcigpID0gMDsKLQotICAgIHZvaWQgYWRkX3JlZl9jb3B5KCkKLSAgICB7Ci0gICAgICAgIGF0b21pY19pbmNyZW1lbnQoICZ1c2VfY291bnRfICk7Ci0gICAgfQotCi0gICAgYm9vbCBhZGRfcmVmX2xvY2soKSAvLyB0cnVlIG9uIHN1Y2Nlc3MKLSAgICB7Ci0gICAgICAgIHJldHVybiBhdG9taWNfY29uZGl0aW9uYWxfaW5jcmVtZW50KCAmdXNlX2NvdW50XyApICE9IDA7Ci0gICAgfQotCi0gICAgdm9pZCByZWxlYXNlKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgaWYoIGF0b21pY19kZWNyZW1lbnQoICZ1c2VfY291bnRfICkgPT0gMCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRpc3Bvc2UoKTsKLSAgICAgICAgICAgIHdlYWtfcmVsZWFzZSgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdm9pZCB3ZWFrX2FkZF9yZWYoKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBhdG9taWNfaW5jcmVtZW50KCAmd2Vha19jb3VudF8gKTsKLSAgICB9Ci0KLSAgICB2b2lkIHdlYWtfcmVsZWFzZSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGlmKCBhdG9taWNfZGVjcmVtZW50KCAmd2Vha19jb3VudF8gKSA9PSAwICkKLSAgICAgICAgewotICAgICAgICAgICAgZGVzdHJveSgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgbG9uZyB1c2VfY291bnQoKSBjb25zdCAvLyBub3Rocm93Ci0gICAgewotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50IGNvbnN0IHZvbGF0aWxlICY+KCB1c2VfY291bnRfICk7Ci0gICAgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAgLy8gI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0NPVU5URURfQkFTRV9HQ0NfUFBDX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9nY2Nfc3BhcmMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9nY2Nfc3BhcmMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YmJhY2M3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2VfZ2NjX3NwYXJjLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE2NyArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfQ09VTlRFRF9CQVNFX0dDQ19TUEFSQ19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9DT1VOVEVEX0JBU0VfR0NDX1NQQVJDX0hQUF9JTkNMVURFRAotCi0vLyBNUyBjb21wYXRpYmxlIGNvbXBpbGVycyBzdXBwb3J0ICNwcmFnbWEgb25jZQotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotLy8gIGRldGFpbC9zcF9jb3VudGVkX2Jhc2VfZ2NjX3NwYXJjLmhwcCAtIGcrKyBvbiBTcGFyYyBWOCsKLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDA2IFBpb3RyIFd5ZGVyc2tpCi0vLyAgQ29weXJpZ2h0IChjKSAyMDA2IFRvbWFzIFB1dmVybGUKLS8vICBDb3B5cmlnaHQgKGMpIDIwMDYgUGV0ZXIgRGltb3YKLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dAotLy8KLS8vICBUaGFua3MgdG8gTWljaGFlbCB2YW4gZGVyIFdlc3RodWl6ZW4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC9zcF90eXBlaW5mby5ocHA+Ci0jaW5jbHVkZSA8aW50dHlwZXMuaD4gLy8gaW50MzJfdAotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotbmFtZXNwYWNlIGRldGFpbAotewotCi1pbmxpbmUgaW50MzJfdCBjb21wYXJlX2FuZF9zd2FwKCBpbnQzMl90ICogZGVzdF8sIGludDMyX3QgY29tcGFyZV8sIGludDMyX3Qgc3dhcF8gKQotewotICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCAiY2FzIFslMV0sICUyLCAlMCIKLSAgICAgICAgICAgICAgICAgICAgICAgIDogIityIiAoc3dhcF8pCi0gICAgICAgICAgICAgICAgICAgICAgICA6ICJyIiAoZGVzdF8pLCAiciIgKGNvbXBhcmVfKQotICAgICAgICAgICAgICAgICAgICAgICAgOiAibWVtb3J5IiApOwotCi0gICAgcmV0dXJuIHN3YXBfOwotfQotCi1pbmxpbmUgaW50MzJfdCBhdG9taWNfZmV0Y2hfYW5kX2FkZCggaW50MzJfdCAqIHB3LCBpbnQzMl90IGR2ICkKLXsKLSAgICAvLyBsb25nIHIgPSAqcHc7Ci0gICAgLy8gKnB3ICs9IGR2OwotICAgIC8vIHJldHVybiByOwotCi0gICAgZm9yKCA7OyApCi0gICAgewotICAgICAgICBpbnQzMl90IHIgPSAqcHc7Ci0KLSAgICAgICAgaWYoIF9fYnVpbHRpbl9leHBlY3QoKGNvbXBhcmVfYW5kX3N3YXAocHcsIHIsIHIgKyBkdikgPT0gciksIDEpICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHI7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLWlubGluZSB2b2lkIGF0b21pY19pbmNyZW1lbnQoIGludDMyX3QgKiBwdyApCi17Ci0gICAgYXRvbWljX2ZldGNoX2FuZF9hZGQoIHB3LCAxICk7Ci19Ci0KLWlubGluZSBpbnQzMl90IGF0b21pY19kZWNyZW1lbnQoIGludDMyX3QgKiBwdyApCi17Ci0gICAgcmV0dXJuIGF0b21pY19mZXRjaF9hbmRfYWRkKCBwdywgLTEgKTsKLX0KLQotaW5saW5lIGludDMyX3QgYXRvbWljX2NvbmRpdGlvbmFsX2luY3JlbWVudCggaW50MzJfdCAqIHB3ICkKLXsKLSAgICAvLyBsb25nIHIgPSAqcHc7Ci0gICAgLy8gaWYoIHIgIT0gMCApICsrKnB3OwotICAgIC8vIHJldHVybiByOwotCi0gICAgZm9yKCA7OyApCi0gICAgewotICAgICAgICBpbnQzMl90IHIgPSAqcHc7Ci0KLSAgICAgICAgaWYoIHIgPT0gMCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiByOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYoIF9fYnVpbHRpbl9leHBlY3QoICggY29tcGFyZV9hbmRfc3dhcCggcHcsIHIsIHIgKyAxICkgPT0gciApLCAxICkgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gcjsKLSAgICAgICAgfQotICAgIH0gICAgCi19Ci0KLWNsYXNzIHNwX2NvdW50ZWRfYmFzZQotewotcHJpdmF0ZToKLQotICAgIHNwX2NvdW50ZWRfYmFzZSggc3BfY291bnRlZF9iYXNlIGNvbnN0ICYgKTsKLSAgICBzcF9jb3VudGVkX2Jhc2UgJiBvcGVyYXRvcj0gKCBzcF9jb3VudGVkX2Jhc2UgY29uc3QgJiApOwotCi0gICAgaW50MzJfdCB1c2VfY291bnRfOyAgICAgICAgLy8gI3NoYXJlZAotICAgIGludDMyX3Qgd2Vha19jb3VudF87ICAgICAgIC8vICN3ZWFrICsgKCNzaGFyZWQgIT0gMCkKLQotcHVibGljOgotCi0gICAgc3BfY291bnRlZF9iYXNlKCk6IHVzZV9jb3VudF8oIDEgKSwgd2Vha19jb3VudF8oIDEgKQotICAgIHsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIH5zcF9jb3VudGVkX2Jhc2UoKSAvLyBub3Rocm93Ci0gICAgewotICAgIH0KLQotICAgIC8vIGRpc3Bvc2UoKSBpcyBjYWxsZWQgd2hlbiB1c2VfY291bnRfIGRyb3BzIHRvIHplcm8sIHRvIHJlbGVhc2UKLSAgICAvLyB0aGUgcmVzb3VyY2VzIG1hbmFnZWQgYnkgKnRoaXMuCi0KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcG9zZSgpID0gMDsgLy8gbm90aHJvdwotCi0gICAgLy8gZGVzdHJveSgpIGlzIGNhbGxlZCB3aGVuIHdlYWtfY291bnRfIGRyb3BzIHRvIHplcm8uCi0KLSAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGRlbGV0ZSB0aGlzOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCAqIGdldF9kZWxldGVyKCBzcF90eXBlaW5mbyBjb25zdCAmIHRpICkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCAqIGdldF91bnR5cGVkX2RlbGV0ZXIoKSA9IDA7Ci0KLSAgICB2b2lkIGFkZF9yZWZfY29weSgpCi0gICAgewotICAgICAgICBhdG9taWNfaW5jcmVtZW50KCAmdXNlX2NvdW50XyApOwotICAgIH0KLQotICAgIGJvb2wgYWRkX3JlZl9sb2NrKCkgLy8gdHJ1ZSBvbiBzdWNjZXNzCi0gICAgewotICAgICAgICByZXR1cm4gYXRvbWljX2NvbmRpdGlvbmFsX2luY3JlbWVudCggJnVzZV9jb3VudF8gKSAhPSAwOwotICAgIH0KLQotICAgIHZvaWQgcmVsZWFzZSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGlmKCBhdG9taWNfZGVjcmVtZW50KCAmdXNlX2NvdW50XyApID09IDEgKQotICAgICAgICB7Ci0gICAgICAgICAgICBkaXNwb3NlKCk7Ci0gICAgICAgICAgICB3ZWFrX3JlbGVhc2UoKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHZvaWQgd2Vha19hZGRfcmVmKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgYXRvbWljX2luY3JlbWVudCggJndlYWtfY291bnRfICk7Ci0gICAgfQotCi0gICAgdm9pZCB3ZWFrX3JlbGVhc2UoKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBpZiggYXRvbWljX2RlY3JlbWVudCggJndlYWtfY291bnRfICkgPT0gMSApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRlc3Ryb3koKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGxvbmcgdXNlX2NvdW50KCkgY29uc3QgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8IGludDMyX3QgY29uc3Qgdm9sYXRpbGUgJiA+KCB1c2VfY291bnRfICk7Ci0gICAgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAgLy8gI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0NPVU5URURfQkFTRV9HQ0NfU1BBUkNfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlX2djY194ODYuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9nY2NfeDg2LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWY3OWM1Ny4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlX2djY194ODYuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTc0ICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9DT1VOVEVEX0JBU0VfR0NDX1g4Nl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9DT1VOVEVEX0JBU0VfR0NDX1g4Nl9IUFBfSU5DTFVERUQKLQotLy8gTVMgY29tcGF0aWJsZSBjb21waWxlcnMgc3VwcG9ydCAjcHJhZ21hIG9uY2UKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLS8vCi0vLyAgZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9nY2NfeDg2LmhwcCAtIGcrKyBvbiA0ODYrIG9yIEFNRDY0Ci0vLwotLy8gIENvcHlyaWdodCAoYykgMjAwMSwgMjAwMiwgMjAwMyBQZXRlciBEaW1vdiBhbmQgTXVsdGkgTWVkaWEgTHRkLgotLy8gIENvcHlyaWdodCAyMDA0LTIwMDUgUGV0ZXIgRGltb3YKLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8KLS8vICBMb2NrLWZyZWUgYWxnb3JpdGhtIGJ5IEFsZXhhbmRlciBUZXJla2hvdgotLy8KLS8vICBUaGFua3MgdG8gQmVuIEhpdGNoaW5ncyBmb3IgdGhlICN3ZWFrICsgKCNzaGFyZWQgIT0gMCkKLS8vICBmb3JtdWxhdGlvbgotLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC9zcF90eXBlaW5mby5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi1uYW1lc3BhY2UgZGV0YWlsCi17Ci0KLWlubGluZSBpbnQgYXRvbWljX2V4Y2hhbmdlX2FuZF9hZGQoIGludCAqIHB3LCBpbnQgZHYgKQotewotICAgIC8vIGludCByID0gKnB3OwotICAgIC8vICpwdyArPSBkdjsKLSAgICAvLyByZXR1cm4gcjsKLQotICAgIGludCByOwotCi0gICAgX19hc21fXyBfX3ZvbGF0aWxlX18KLSAgICAoCi0gICAgICAgICJsb2NrXG5cdCIKLSAgICAgICAgInhhZGQgJTEsICUwIjoKLSAgICAgICAgIj1tIiggKnB3ICksICI9ciIoIHIgKTogLy8gb3V0cHV0cyAoJTAsICUxKQotICAgICAgICAibSIoICpwdyApLCAiMSIoIGR2ICk6IC8vIGlucHV0cyAoJTIsICUzID09ICUxKQotICAgICAgICAibWVtb3J5IiwgImNjIiAvLyBjbG9iYmVycwotICAgICk7Ci0KLSAgICByZXR1cm4gcjsKLX0KLQotaW5saW5lIHZvaWQgYXRvbWljX2luY3JlbWVudCggaW50ICogcHcgKQotewotICAgIC8vYXRvbWljX2V4Y2hhbmdlX2FuZF9hZGQoIHB3LCAxICk7Ci0KLSAgICBfX2FzbV9fCi0gICAgKAotICAgICAgICAibG9ja1xuXHQiCi0gICAgICAgICJpbmNsICUwIjoKLSAgICAgICAgIj1tIiggKnB3ICk6IC8vIG91dHB1dCAoJTApCi0gICAgICAgICJtIiggKnB3ICk6IC8vIGlucHV0ICglMSkKLSAgICAgICAgImNjIiAvLyBjbG9iYmVycwotICAgICk7Ci19Ci0KLWlubGluZSBpbnQgYXRvbWljX2NvbmRpdGlvbmFsX2luY3JlbWVudCggaW50ICogcHcgKQotewotICAgIC8vIGludCBydiA9ICpwdzsKLSAgICAvLyBpZiggcnYgIT0gMCApICsrKnB3OwotICAgIC8vIHJldHVybiBydjsKLQotICAgIGludCBydiwgdG1wOwotCi0gICAgX19hc21fXwotICAgICgKLSAgICAgICAgIm1vdmwgJTAsICUlZWF4XG5cdCIKLSAgICAgICAgIjA6XG5cdCIKLSAgICAgICAgInRlc3QgJSVlYXgsICUlZWF4XG5cdCIKLSAgICAgICAgImplIDFmXG5cdCIKLSAgICAgICAgIm1vdmwgJSVlYXgsICUyXG5cdCIKLSAgICAgICAgImluY2wgJTJcblx0IgotICAgICAgICAibG9ja1xuXHQiCi0gICAgICAgICJjbXB4Y2hnbCAlMiwgJTBcblx0IgotICAgICAgICAiam5lIDBiXG5cdCIKLSAgICAgICAgIjE6IjoKLSAgICAgICAgIj1tIiggKnB3ICksICI9JmEiKCBydiApLCAiPSZyIiggdG1wICk6IC8vIG91dHB1dHMgKCUwLCAlMSwgJTIpCi0gICAgICAgICJtIiggKnB3ICk6IC8vIGlucHV0ICglMykKLSAgICAgICAgImNjIiAvLyBjbG9iYmVycwotICAgICk7Ci0KLSAgICByZXR1cm4gcnY7Ci19Ci0KLWNsYXNzIHNwX2NvdW50ZWRfYmFzZQotewotcHJpdmF0ZToKLQotICAgIHNwX2NvdW50ZWRfYmFzZSggc3BfY291bnRlZF9iYXNlIGNvbnN0ICYgKTsKLSAgICBzcF9jb3VudGVkX2Jhc2UgJiBvcGVyYXRvcj0gKCBzcF9jb3VudGVkX2Jhc2UgY29uc3QgJiApOwotCi0gICAgaW50IHVzZV9jb3VudF87ICAgICAgICAvLyAjc2hhcmVkCi0gICAgaW50IHdlYWtfY291bnRfOyAgICAgICAvLyAjd2VhayArICgjc2hhcmVkICE9IDApCi0KLXB1YmxpYzoKLQotICAgIHNwX2NvdW50ZWRfYmFzZSgpOiB1c2VfY291bnRfKCAxICksIHdlYWtfY291bnRfKCAxICkKLSAgICB7Ci0gICAgfQotCi0gICAgdmlydHVhbCB+c3BfY291bnRlZF9iYXNlKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICB9Ci0KLSAgICAvLyBkaXNwb3NlKCkgaXMgY2FsbGVkIHdoZW4gdXNlX2NvdW50XyBkcm9wcyB0byB6ZXJvLCB0byByZWxlYXNlCi0gICAgLy8gdGhlIHJlc291cmNlcyBtYW5hZ2VkIGJ5ICp0aGlzLgotCi0gICAgdmlydHVhbCB2b2lkIGRpc3Bvc2UoKSA9IDA7IC8vIG5vdGhyb3cKLQotICAgIC8vIGRlc3Ryb3koKSBpcyBjYWxsZWQgd2hlbiB3ZWFrX2NvdW50XyBkcm9wcyB0byB6ZXJvLgotCi0gICAgdmlydHVhbCB2b2lkIGRlc3Ryb3koKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBkZWxldGUgdGhpczsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgKiBnZXRfZGVsZXRlciggc3BfdHlwZWluZm8gY29uc3QgJiB0aSApID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgKiBnZXRfdW50eXBlZF9kZWxldGVyKCkgPSAwOwotCi0gICAgdm9pZCBhZGRfcmVmX2NvcHkoKQotICAgIHsKLSAgICAgICAgYXRvbWljX2luY3JlbWVudCggJnVzZV9jb3VudF8gKTsKLSAgICB9Ci0KLSAgICBib29sIGFkZF9yZWZfbG9jaygpIC8vIHRydWUgb24gc3VjY2VzcwotICAgIHsKLSAgICAgICAgcmV0dXJuIGF0b21pY19jb25kaXRpb25hbF9pbmNyZW1lbnQoICZ1c2VfY291bnRfICkgIT0gMDsKLSAgICB9Ci0KLSAgICB2b2lkIHJlbGVhc2UoKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBpZiggYXRvbWljX2V4Y2hhbmdlX2FuZF9hZGQoICZ1c2VfY291bnRfLCAtMSApID09IDEgKQotICAgICAgICB7Ci0gICAgICAgICAgICBkaXNwb3NlKCk7Ci0gICAgICAgICAgICB3ZWFrX3JlbGVhc2UoKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHZvaWQgd2Vha19hZGRfcmVmKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgYXRvbWljX2luY3JlbWVudCggJndlYWtfY291bnRfICk7Ci0gICAgfQotCi0gICAgdm9pZCB3ZWFrX3JlbGVhc2UoKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBpZiggYXRvbWljX2V4Y2hhbmdlX2FuZF9hZGQoICZ3ZWFrX2NvdW50XywgLTEgKSA9PSAxICkKLSAgICAgICAgewotICAgICAgICAgICAgZGVzdHJveSgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgbG9uZyB1c2VfY291bnQoKSBjb25zdCAvLyBub3Rocm93Ci0gICAgewotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50IGNvbnN0IHZvbGF0aWxlICY+KCB1c2VfY291bnRfICk7Ci0gICAgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAgLy8gI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0NPVU5URURfQkFTRV9HQ0NfWDg2X0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9udC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlX250LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTA5NjdiYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlX250LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwOCArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfQ09VTlRFRF9CQVNFX05UX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0NPVU5URURfQkFTRV9OVF9IUFBfSU5DTFVERUQKLQotLy8gTVMgY29tcGF0aWJsZSBjb21waWxlcnMgc3VwcG9ydCAjcHJhZ21hIG9uY2UKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLS8vCi0vLyAgZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9udC5ocHAKLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAxLCAyMDAyLCAyMDAzIFBldGVyIERpbW92IGFuZCBNdWx0aSBNZWRpYSBMdGQuCi0vLyAgQ29weXJpZ2h0IDIwMDQtMjAwNSBQZXRlciBEaW1vdgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvc3BfdHlwZWluZm8uaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotbmFtZXNwYWNlIGRldGFpbAotewotCi1jbGFzcyBzcF9jb3VudGVkX2Jhc2UKLXsKLXByaXZhdGU6Ci0KLSAgICBzcF9jb3VudGVkX2Jhc2UoIHNwX2NvdW50ZWRfYmFzZSBjb25zdCAmICk7Ci0gICAgc3BfY291bnRlZF9iYXNlICYgb3BlcmF0b3I9ICggc3BfY291bnRlZF9iYXNlIGNvbnN0ICYgKTsKLQotICAgIGxvbmcgdXNlX2NvdW50XzsgICAgICAgIC8vICNzaGFyZWQKLSAgICBsb25nIHdlYWtfY291bnRfOyAgICAgICAvLyAjd2VhayArICgjc2hhcmVkICE9IDApCi0KLXB1YmxpYzoKLQotICAgIHNwX2NvdW50ZWRfYmFzZSgpOiB1c2VfY291bnRfKCAxICksIHdlYWtfY291bnRfKCAxICkKLSAgICB7Ci0gICAgfQotCi0gICAgdmlydHVhbCB+c3BfY291bnRlZF9iYXNlKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICB9Ci0KLSAgICAvLyBkaXNwb3NlKCkgaXMgY2FsbGVkIHdoZW4gdXNlX2NvdW50XyBkcm9wcyB0byB6ZXJvLCB0byByZWxlYXNlCi0gICAgLy8gdGhlIHJlc291cmNlcyBtYW5hZ2VkIGJ5ICp0aGlzLgotCi0gICAgdmlydHVhbCB2b2lkIGRpc3Bvc2UoKSA9IDA7IC8vIG5vdGhyb3cKLQotICAgIC8vIGRlc3Ryb3koKSBpcyBjYWxsZWQgd2hlbiB3ZWFrX2NvdW50XyBkcm9wcyB0byB6ZXJvLgotCi0gICAgdmlydHVhbCB2b2lkIGRlc3Ryb3koKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBkZWxldGUgdGhpczsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgKiBnZXRfZGVsZXRlciggc3BfdHlwZWluZm8gY29uc3QgJiB0aSApID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgKiBnZXRfdW50eXBlZF9kZWxldGVyKCkgPSAwOwotCi0gICAgdm9pZCBhZGRfcmVmX2NvcHkoKQotICAgIHsKLSAgICAgICAgKyt1c2VfY291bnRfOwotICAgIH0KLQotICAgIGJvb2wgYWRkX3JlZl9sb2NrKCkgLy8gdHJ1ZSBvbiBzdWNjZXNzCi0gICAgewotICAgICAgICBpZiggdXNlX2NvdW50XyA9PSAwICkgcmV0dXJuIGZhbHNlOwotICAgICAgICArK3VzZV9jb3VudF87Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIHZvaWQgcmVsZWFzZSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGlmKCAtLXVzZV9jb3VudF8gPT0gMCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRpc3Bvc2UoKTsKLSAgICAgICAgICAgIHdlYWtfcmVsZWFzZSgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdm9pZCB3ZWFrX2FkZF9yZWYoKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICArK3dlYWtfY291bnRfOwotICAgIH0KLQotICAgIHZvaWQgd2Vha19yZWxlYXNlKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgaWYoIC0td2Vha19jb3VudF8gPT0gMCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRlc3Ryb3koKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGxvbmcgdXNlX2NvdW50KCkgY29uc3QgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgcmV0dXJuIHVzZV9jb3VudF87Ci0gICAgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAgLy8gI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0NPVU5URURfQkFTRV9OVF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2VfcHQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9wdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQxMzM0ZDMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9wdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzYgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0NPVU5URURfQkFTRV9QVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9DT1VOVEVEX0JBU0VfUFRfSFBQX0lOQ0xVREVECi0KLS8vIE1TIGNvbXBhdGlibGUgY29tcGlsZXJzIHN1cHBvcnQgI3ByYWdtYSBvbmNlCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0vLwotLy8gIGRldGFpbC9zcF9jb3VudGVkX2Jhc2VfcHQuaHBwCi0vLwotLy8gIENvcHlyaWdodCAoYykgMjAwMSwgMjAwMiwgMjAwMyBQZXRlciBEaW1vdiBhbmQgTXVsdGkgTWVkaWEgTHRkLgotLy8gIENvcHlyaWdodCAyMDA0LTIwMDUgUGV0ZXIgRGltb3YKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3NwX3R5cGVpbmZvLmhwcD4KLSNpbmNsdWRlIDxwdGhyZWFkLmg+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi1uYW1lc3BhY2UgZGV0YWlsCi17Ci0KLWNsYXNzIHNwX2NvdW50ZWRfYmFzZQotewotcHJpdmF0ZToKLQotICAgIHNwX2NvdW50ZWRfYmFzZSggc3BfY291bnRlZF9iYXNlIGNvbnN0ICYgKTsKLSAgICBzcF9jb3VudGVkX2Jhc2UgJiBvcGVyYXRvcj0gKCBzcF9jb3VudGVkX2Jhc2UgY29uc3QgJiApOwotCi0gICAgbG9uZyB1c2VfY291bnRfOyAgICAgICAgLy8gI3NoYXJlZAotICAgIGxvbmcgd2Vha19jb3VudF87ICAgICAgIC8vICN3ZWFrICsgKCNzaGFyZWQgIT0gMCkKLQotICAgIG11dGFibGUgcHRocmVhZF9tdXRleF90IG1fOwotCi1wdWJsaWM6Ci0KLSAgICBzcF9jb3VudGVkX2Jhc2UoKTogdXNlX2NvdW50XyggMSApLCB3ZWFrX2NvdW50XyggMSApCi0gICAgewotLy8gSFBVWCAxMC4yMCAvIERDRSBoYXMgYSBub25zdGFuZGFyZCBwdGhyZWFkX211dGV4X2luaXQKLQotI2lmIGRlZmluZWQoX19ocHV4KSAmJiBkZWZpbmVkKF9ERUNUSFJFQURTXykKLSAgICAgICAgcHRocmVhZF9tdXRleF9pbml0KCAmbV8sIHB0aHJlYWRfbXV0ZXhhdHRyX2RlZmF1bHQgKTsKLSNlbHNlCi0gICAgICAgIHB0aHJlYWRfbXV0ZXhfaW5pdCggJm1fLCAwICk7Ci0jZW5kaWYKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIH5zcF9jb3VudGVkX2Jhc2UoKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBwdGhyZWFkX211dGV4X2Rlc3Ryb3koICZtXyApOwotICAgIH0KLQotICAgIC8vIGRpc3Bvc2UoKSBpcyBjYWxsZWQgd2hlbiB1c2VfY291bnRfIGRyb3BzIHRvIHplcm8sIHRvIHJlbGVhc2UKLSAgICAvLyB0aGUgcmVzb3VyY2VzIG1hbmFnZWQgYnkgKnRoaXMuCi0KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcG9zZSgpID0gMDsgLy8gbm90aHJvdwotCi0gICAgLy8gZGVzdHJveSgpIGlzIGNhbGxlZCB3aGVuIHdlYWtfY291bnRfIGRyb3BzIHRvIHplcm8uCi0KLSAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGRlbGV0ZSB0aGlzOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCAqIGdldF9kZWxldGVyKCBzcF90eXBlaW5mbyBjb25zdCAmIHRpICkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCAqIGdldF91bnR5cGVkX2RlbGV0ZXIoKSA9IDA7Ci0KLSAgICB2b2lkIGFkZF9yZWZfY29weSgpCi0gICAgewotICAgICAgICBwdGhyZWFkX211dGV4X2xvY2soICZtXyApOwotICAgICAgICArK3VzZV9jb3VudF87Ci0gICAgICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCAmbV8gKTsKLSAgICB9Ci0KLSAgICBib29sIGFkZF9yZWZfbG9jaygpIC8vIHRydWUgb24gc3VjY2VzcwotICAgIHsKLSAgICAgICAgcHRocmVhZF9tdXRleF9sb2NrKCAmbV8gKTsKLSAgICAgICAgYm9vbCByID0gdXNlX2NvdW50XyA9PSAwPyBmYWxzZTogKCArK3VzZV9jb3VudF8sIHRydWUgKTsKLSAgICAgICAgcHRocmVhZF9tdXRleF91bmxvY2soICZtXyApOwotICAgICAgICByZXR1cm4gcjsKLSAgICB9Ci0KLSAgICB2b2lkIHJlbGVhc2UoKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBwdGhyZWFkX211dGV4X2xvY2soICZtXyApOwotICAgICAgICBsb25nIG5ld191c2VfY291bnQgPSAtLXVzZV9jb3VudF87Ci0gICAgICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCAmbV8gKTsKLQotICAgICAgICBpZiggbmV3X3VzZV9jb3VudCA9PSAwICkKLSAgICAgICAgewotICAgICAgICAgICAgZGlzcG9zZSgpOwotICAgICAgICAgICAgd2Vha19yZWxlYXNlKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB2b2lkIHdlYWtfYWRkX3JlZigpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIHB0aHJlYWRfbXV0ZXhfbG9jayggJm1fICk7Ci0gICAgICAgICsrd2Vha19jb3VudF87Ci0gICAgICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCAmbV8gKTsKLSAgICB9Ci0KLSAgICB2b2lkIHdlYWtfcmVsZWFzZSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIHB0aHJlYWRfbXV0ZXhfbG9jayggJm1fICk7Ci0gICAgICAgIGxvbmcgbmV3X3dlYWtfY291bnQgPSAtLXdlYWtfY291bnRfOwotICAgICAgICBwdGhyZWFkX211dGV4X3VubG9jayggJm1fICk7Ci0KLSAgICAgICAgaWYoIG5ld193ZWFrX2NvdW50ID09IDAgKQotICAgICAgICB7Ci0gICAgICAgICAgICBkZXN0cm95KCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBsb25nIHVzZV9jb3VudCgpIGNvbnN0IC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIHB0aHJlYWRfbXV0ZXhfbG9jayggJm1fICk7Ci0gICAgICAgIGxvbmcgciA9IHVzZV9jb3VudF87Ci0gICAgICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCAmbV8gKTsKLQotICAgICAgICByZXR1cm4gcjsKLSAgICB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmICAvLyAjaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfQ09VTlRFRF9CQVNFX1BUX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9zbmNfcHMzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2Vfc25jX3BzMy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFmZThmZTYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV9zbmNfcHMzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE2MiArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfQ09VTlRFRF9CQVNFX1NOQ19QUzNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfQ09VTlRFRF9CQVNFX1NOQ19QUzNfSFBQX0lOQ0xVREVECi0KLS8vIE1TIGNvbXBhdGlibGUgY29tcGlsZXJzIHN1cHBvcnQgI3ByYWdtYSBvbmNlCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotLy8gIGRldGFpbC9zcF9jb3VudGVkX2Jhc2VfZ2NjX3NwYXJjLmhwcCAtIGcrKyBvbiBTcGFyYyBWOCsKLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDA2IFBpb3RyIFd5ZGVyc2tpCi0vLyAgQ29weXJpZ2h0IChjKSAyMDA2IFRvbWFzIFB1dmVybGUKLS8vICBDb3B5cmlnaHQgKGMpIDIwMDYgUGV0ZXIgRGltb3YKLS8vICBDb3B5cmlnaHQgKGMpIDIwMTEgRW1pbCBEb3RjaGV2c2tpCi0vLwotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICBTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQKLS8vCi0vLyAgVGhhbmtzIHRvIE1pY2hhZWwgdmFuIGRlciBXZXN0aHVpemVuCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvc3BfdHlwZWluZm8uaHBwPgotI2luY2x1ZGUgPGludHR5cGVzLmg+IC8vIHVpbnQzMl90Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi1uYW1lc3BhY2UgZGV0YWlsCi17Ci0KLWlubGluZSB1aW50MzJfdCBjb21wYXJlX2FuZF9zd2FwKCB1aW50MzJfdCAqIGRlc3RfLCB1aW50MzJfdCBjb21wYXJlXywgdWludDMyX3Qgc3dhcF8gKQotewotICAgIHJldHVybiBfX2J1aWx0aW5fY2VsbEF0b21pY0NvbXBhcmVBbmRTd2FwMzIoZGVzdF8sY29tcGFyZV8sc3dhcF8pOwotfQotCi1pbmxpbmUgdWludDMyX3QgYXRvbWljX2ZldGNoX2FuZF9hZGQoIHVpbnQzMl90ICogcHcsIHVpbnQzMl90IGR2ICkKLXsKLSAgICAvLyBsb25nIHIgPSAqcHc7Ci0gICAgLy8gKnB3ICs9IGR2OwotICAgIC8vIHJldHVybiByOwotCi0gICAgZm9yKCA7OyApCi0gICAgewotICAgICAgICB1aW50MzJfdCByID0gKnB3OwotCi0gICAgICAgIGlmKCBfX2J1aWx0aW5fZXhwZWN0KChjb21wYXJlX2FuZF9zd2FwKHB3LCByLCByICsgZHYpID09IHIpLCAxKSApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiByOwotICAgICAgICB9Ci0gICAgfQotfQotCi1pbmxpbmUgdm9pZCBhdG9taWNfaW5jcmVtZW50KCB1aW50MzJfdCAqIHB3ICkKLXsKLSAgICAodm9pZCkgX19idWlsdGluX2NlbGxBdG9taWNJbmNyMzIoIHB3ICk7Ci19Ci0KLWlubGluZSB1aW50MzJfdCBhdG9taWNfZGVjcmVtZW50KCB1aW50MzJfdCAqIHB3ICkKLXsKLSAgICByZXR1cm4gX19idWlsdGluX2NlbGxBdG9taWNEZWNyMzIoIHB3ICk7Ci19Ci0KLWlubGluZSB1aW50MzJfdCBhdG9taWNfY29uZGl0aW9uYWxfaW5jcmVtZW50KCB1aW50MzJfdCAqIHB3ICkKLXsKLSAgICAvLyBsb25nIHIgPSAqcHc7Ci0gICAgLy8gaWYoIHIgIT0gMCApICsrKnB3OwotICAgIC8vIHJldHVybiByOwotCi0gICAgZm9yKCA7OyApCi0gICAgewotICAgICAgICB1aW50MzJfdCByID0gKnB3OwotCi0gICAgICAgIGlmKCByID09IDAgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gcjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmKCBfX2J1aWx0aW5fZXhwZWN0KCAoIGNvbXBhcmVfYW5kX3N3YXAoIHB3LCByLCByICsgMSApID09IHIgKSwgMSApICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHI7Ci0gICAgICAgIH0KLSAgICB9ICAgIAotfQotCi1jbGFzcyBzcF9jb3VudGVkX2Jhc2UKLXsKLXByaXZhdGU6Ci0KLSAgICBzcF9jb3VudGVkX2Jhc2UoIHNwX2NvdW50ZWRfYmFzZSBjb25zdCAmICk7Ci0gICAgc3BfY291bnRlZF9iYXNlICYgb3BlcmF0b3I9ICggc3BfY291bnRlZF9iYXNlIGNvbnN0ICYgKTsKLQotICAgIHVpbnQzMl90IHVzZV9jb3VudF87ICAgICAgICAvLyAjc2hhcmVkCi0gICAgdWludDMyX3Qgd2Vha19jb3VudF87ICAgICAgIC8vICN3ZWFrICsgKCNzaGFyZWQgIT0gMCkKLQotcHVibGljOgotCi0gICAgc3BfY291bnRlZF9iYXNlKCk6IHVzZV9jb3VudF8oIDEgKSwgd2Vha19jb3VudF8oIDEgKQotICAgIHsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIH5zcF9jb3VudGVkX2Jhc2UoKSAvLyBub3Rocm93Ci0gICAgewotICAgIH0KLQotICAgIC8vIGRpc3Bvc2UoKSBpcyBjYWxsZWQgd2hlbiB1c2VfY291bnRfIGRyb3BzIHRvIHplcm8sIHRvIHJlbGVhc2UKLSAgICAvLyB0aGUgcmVzb3VyY2VzIG1hbmFnZWQgYnkgKnRoaXMuCi0KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcG9zZSgpID0gMDsgLy8gbm90aHJvdwotCi0gICAgLy8gZGVzdHJveSgpIGlzIGNhbGxlZCB3aGVuIHdlYWtfY291bnRfIGRyb3BzIHRvIHplcm8uCi0KLSAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGRlbGV0ZSB0aGlzOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCAqIGdldF9kZWxldGVyKCBzcF90eXBlaW5mbyBjb25zdCAmIHRpICkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCAqIGdldF91bnR5cGVkX2RlbGV0ZXIoKSA9IDA7Ci0KLSAgICB2b2lkIGFkZF9yZWZfY29weSgpCi0gICAgewotICAgICAgICBhdG9taWNfaW5jcmVtZW50KCAmdXNlX2NvdW50XyApOwotICAgIH0KLQotICAgIGJvb2wgYWRkX3JlZl9sb2NrKCkgLy8gdHJ1ZSBvbiBzdWNjZXNzCi0gICAgewotICAgICAgICByZXR1cm4gYXRvbWljX2NvbmRpdGlvbmFsX2luY3JlbWVudCggJnVzZV9jb3VudF8gKSAhPSAwOwotICAgIH0KLQotICAgIHZvaWQgcmVsZWFzZSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGlmKCBhdG9taWNfZGVjcmVtZW50KCAmdXNlX2NvdW50XyApID09IDEgKQotICAgICAgICB7Ci0gICAgICAgICAgICBkaXNwb3NlKCk7Ci0gICAgICAgICAgICB3ZWFrX3JlbGVhc2UoKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHZvaWQgd2Vha19hZGRfcmVmKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgYXRvbWljX2luY3JlbWVudCggJndlYWtfY291bnRfICk7Ci0gICAgfQotCi0gICAgdm9pZCB3ZWFrX3JlbGVhc2UoKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBpZiggYXRvbWljX2RlY3JlbWVudCggJndlYWtfY291bnRfICkgPT0gMSApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRlc3Ryb3koKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGxvbmcgdXNlX2NvdW50KCkgY29uc3QgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8IHVpbnQzMl90IGNvbnN0IHZvbGF0aWxlICYgPiggdXNlX2NvdW50XyApOwotICAgIH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgIC8vICNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9DT1VOVEVEX0JBU0VfU05DX1BTM19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2Vfc3Bpbi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlX3NwaW4uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNzY5MWNlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2Vfc3Bpbi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzIgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0NPVU5URURfQkFTRV9TUElOX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0NPVU5URURfQkFTRV9TUElOX0hQUF9JTkNMVURFRAotCi0vLyBNUyBjb21wYXRpYmxlIGNvbXBpbGVycyBzdXBwb3J0ICNwcmFnbWEgb25jZQotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotLy8KLS8vICBkZXRhaWwvc3BfY291bnRlZF9iYXNlX3NwaW4uaHBwIC0gc3BpbmxvY2sgcG9vbCBhdG9taWMgZW11bGF0aW9uCi0vLwotLy8gIENvcHlyaWdodCAoYykgMjAwMSwgMjAwMiwgMjAwMyBQZXRlciBEaW1vdiBhbmQgTXVsdGkgTWVkaWEgTHRkLgotLy8gIENvcHlyaWdodCAyMDA0LTIwMDggUGV0ZXIgRGltb3YKLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3NwX3R5cGVpbmZvLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwaW5sb2NrX3Bvb2wuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotbmFtZXNwYWNlIGRldGFpbAotewotCi1pbmxpbmUgaW50IGF0b21pY19leGNoYW5nZV9hbmRfYWRkKCBpbnQgKiBwdywgaW50IGR2ICkKLXsKLSAgICBzcGlubG9ja19wb29sPDE+OjpzY29wZWRfbG9jayBsb2NrKCBwdyApOwotCi0gICAgaW50IHIgPSAqcHc7Ci0gICAgKnB3ICs9IGR2OwotICAgIHJldHVybiByOwotfQotCi1pbmxpbmUgdm9pZCBhdG9taWNfaW5jcmVtZW50KCBpbnQgKiBwdyApCi17Ci0gICAgc3BpbmxvY2tfcG9vbDwxPjo6c2NvcGVkX2xvY2sgbG9jayggcHcgKTsKLSAgICArKypwdzsKLX0KLQotaW5saW5lIGludCBhdG9taWNfY29uZGl0aW9uYWxfaW5jcmVtZW50KCBpbnQgKiBwdyApCi17Ci0gICAgc3BpbmxvY2tfcG9vbDwxPjo6c2NvcGVkX2xvY2sgbG9jayggcHcgKTsKLQotICAgIGludCBydiA9ICpwdzsKLSAgICBpZiggcnYgIT0gMCApICsrKnB3OwotICAgIHJldHVybiBydjsKLX0KLQotY2xhc3Mgc3BfY291bnRlZF9iYXNlCi17Ci1wcml2YXRlOgotCi0gICAgc3BfY291bnRlZF9iYXNlKCBzcF9jb3VudGVkX2Jhc2UgY29uc3QgJiApOwotICAgIHNwX2NvdW50ZWRfYmFzZSAmIG9wZXJhdG9yPSAoIHNwX2NvdW50ZWRfYmFzZSBjb25zdCAmICk7Ci0KLSAgICBpbnQgdXNlX2NvdW50XzsgICAgICAgIC8vICNzaGFyZWQKLSAgICBpbnQgd2Vha19jb3VudF87ICAgICAgIC8vICN3ZWFrICsgKCNzaGFyZWQgIT0gMCkKLQotcHVibGljOgotCi0gICAgc3BfY291bnRlZF9iYXNlKCk6IHVzZV9jb3VudF8oIDEgKSwgd2Vha19jb3VudF8oIDEgKQotICAgIHsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIH5zcF9jb3VudGVkX2Jhc2UoKSAvLyBub3Rocm93Ci0gICAgewotICAgIH0KLQotICAgIC8vIGRpc3Bvc2UoKSBpcyBjYWxsZWQgd2hlbiB1c2VfY291bnRfIGRyb3BzIHRvIHplcm8sIHRvIHJlbGVhc2UKLSAgICAvLyB0aGUgcmVzb3VyY2VzIG1hbmFnZWQgYnkgKnRoaXMuCi0KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcG9zZSgpID0gMDsgLy8gbm90aHJvdwotCi0gICAgLy8gZGVzdHJveSgpIGlzIGNhbGxlZCB3aGVuIHdlYWtfY291bnRfIGRyb3BzIHRvIHplcm8uCi0KLSAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGRlbGV0ZSB0aGlzOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCAqIGdldF9kZWxldGVyKCBzcF90eXBlaW5mbyBjb25zdCAmIHRpICkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCAqIGdldF91bnR5cGVkX2RlbGV0ZXIoKSA9IDA7Ci0KLSAgICB2b2lkIGFkZF9yZWZfY29weSgpCi0gICAgewotICAgICAgICBhdG9taWNfaW5jcmVtZW50KCAmdXNlX2NvdW50XyApOwotICAgIH0KLQotICAgIGJvb2wgYWRkX3JlZl9sb2NrKCkgLy8gdHJ1ZSBvbiBzdWNjZXNzCi0gICAgewotICAgICAgICByZXR1cm4gYXRvbWljX2NvbmRpdGlvbmFsX2luY3JlbWVudCggJnVzZV9jb3VudF8gKSAhPSAwOwotICAgIH0KLQotICAgIHZvaWQgcmVsZWFzZSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGlmKCBhdG9taWNfZXhjaGFuZ2VfYW5kX2FkZCggJnVzZV9jb3VudF8sIC0xICkgPT0gMSApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRpc3Bvc2UoKTsKLSAgICAgICAgICAgIHdlYWtfcmVsZWFzZSgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdm9pZCB3ZWFrX2FkZF9yZWYoKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBhdG9taWNfaW5jcmVtZW50KCAmd2Vha19jb3VudF8gKTsKLSAgICB9Ci0KLSAgICB2b2lkIHdlYWtfcmVsZWFzZSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGlmKCBhdG9taWNfZXhjaGFuZ2VfYW5kX2FkZCggJndlYWtfY291bnRfLCAtMSApID09IDEgKQotICAgICAgICB7Ci0gICAgICAgICAgICBkZXN0cm95KCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBsb25nIHVzZV9jb3VudCgpIGNvbnN0IC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIHNwaW5sb2NrX3Bvb2w8MT46OnNjb3BlZF9sb2NrIGxvY2soICZ1c2VfY291bnRfICk7Ci0gICAgICAgIHJldHVybiB1c2VfY291bnRfOwotICAgIH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgIC8vICNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9DT1VOVEVEX0JBU0VfU1BJTl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2Vfc3luYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlX3N5bmMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYWEzNmU4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2Vfc3luYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTYgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0NPVU5URURfQkFTRV9TWU5DX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0NPVU5URURfQkFTRV9TWU5DX0hQUF9JTkNMVURFRAotCi0vLyBNUyBjb21wYXRpYmxlIGNvbXBpbGVycyBzdXBwb3J0ICNwcmFnbWEgb25jZQotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotLy8gIGRldGFpbC9zcF9jb3VudGVkX2Jhc2Vfc3luYy5ocHAgLSBnKysgNC4xKyBfX3N5bmMgaW50cmluc2ljcwotLy8KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDcgUGV0ZXIgRGltb3YKLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3NwX3R5cGVpbmZvLmhwcD4KLSNpbmNsdWRlIDxsaW1pdHMuaD4KLQotI2lmIGRlZmluZWQoIF9faWE2NF9fICkgJiYgZGVmaW5lZCggX19JTlRFTF9DT01QSUxFUiApCi0jIGluY2x1ZGUgPGlhNjRpbnRyaW4uaD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotbmFtZXNwYWNlIGRldGFpbAotewotCi0jaWYgSU5UX01BWCA+PSAyMTQ3NDgzNjQ3Ci0KLXR5cGVkZWYgaW50IHNwX2ludDMyX3Q7Ci0KLSNlbHNlCi0KLXR5cGVkZWYgbG9uZyBzcF9pbnQzMl90OwotCi0jZW5kaWYKLQotaW5saW5lIHZvaWQgYXRvbWljX2luY3JlbWVudCggc3BfaW50MzJfdCAqIHB3ICkKLXsKLSAgICBfX3N5bmNfZmV0Y2hfYW5kX2FkZCggcHcsIDEgKTsKLX0KLQotaW5saW5lIHNwX2ludDMyX3QgYXRvbWljX2RlY3JlbWVudCggc3BfaW50MzJfdCAqIHB3ICkKLXsKLSAgICByZXR1cm4gX19zeW5jX2ZldGNoX2FuZF9hZGQoIHB3LCAtMSApOwotfQotCi1pbmxpbmUgc3BfaW50MzJfdCBhdG9taWNfY29uZGl0aW9uYWxfaW5jcmVtZW50KCBzcF9pbnQzMl90ICogcHcgKQotewotICAgIC8vIGxvbmcgciA9ICpwdzsKLSAgICAvLyBpZiggciAhPSAwICkgKysqcHc7Ci0gICAgLy8gcmV0dXJuIHI7Ci0KLSAgICBzcF9pbnQzMl90IHIgPSAqcHc7Ci0KLSAgICBmb3IoIDs7ICkKLSAgICB7Ci0gICAgICAgIGlmKCByID09IDAgKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gcjsKLSAgICAgICAgfQotCi0gICAgICAgIHNwX2ludDMyX3QgcjIgPSBfX3N5bmNfdmFsX2NvbXBhcmVfYW5kX3N3YXAoIHB3LCByLCByICsgMSApOwotCi0gICAgICAgIGlmKCByMiA9PSByICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHI7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICByID0gcjI7Ci0gICAgICAgIH0KLSAgICB9ICAgIAotfQotCi1jbGFzcyBzcF9jb3VudGVkX2Jhc2UKLXsKLXByaXZhdGU6Ci0KLSAgICBzcF9jb3VudGVkX2Jhc2UoIHNwX2NvdW50ZWRfYmFzZSBjb25zdCAmICk7Ci0gICAgc3BfY291bnRlZF9iYXNlICYgb3BlcmF0b3I9ICggc3BfY291bnRlZF9iYXNlIGNvbnN0ICYgKTsKLQotICAgIHNwX2ludDMyX3QgdXNlX2NvdW50XzsgICAgICAgIC8vICNzaGFyZWQKLSAgICBzcF9pbnQzMl90IHdlYWtfY291bnRfOyAgICAgICAvLyAjd2VhayArICgjc2hhcmVkICE9IDApCi0KLXB1YmxpYzoKLQotICAgIHNwX2NvdW50ZWRfYmFzZSgpOiB1c2VfY291bnRfKCAxICksIHdlYWtfY291bnRfKCAxICkKLSAgICB7Ci0gICAgfQotCi0gICAgdmlydHVhbCB+c3BfY291bnRlZF9iYXNlKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICB9Ci0KLSAgICAvLyBkaXNwb3NlKCkgaXMgY2FsbGVkIHdoZW4gdXNlX2NvdW50XyBkcm9wcyB0byB6ZXJvLCB0byByZWxlYXNlCi0gICAgLy8gdGhlIHJlc291cmNlcyBtYW5hZ2VkIGJ5ICp0aGlzLgotCi0gICAgdmlydHVhbCB2b2lkIGRpc3Bvc2UoKSA9IDA7IC8vIG5vdGhyb3cKLQotICAgIC8vIGRlc3Ryb3koKSBpcyBjYWxsZWQgd2hlbiB3ZWFrX2NvdW50XyBkcm9wcyB0byB6ZXJvLgotCi0gICAgdmlydHVhbCB2b2lkIGRlc3Ryb3koKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBkZWxldGUgdGhpczsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgKiBnZXRfZGVsZXRlciggc3BfdHlwZWluZm8gY29uc3QgJiB0aSApID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgKiBnZXRfdW50eXBlZF9kZWxldGVyKCkgPSAwOwotCi0gICAgdm9pZCBhZGRfcmVmX2NvcHkoKQotICAgIHsKLSAgICAgICAgYXRvbWljX2luY3JlbWVudCggJnVzZV9jb3VudF8gKTsKLSAgICB9Ci0KLSAgICBib29sIGFkZF9yZWZfbG9jaygpIC8vIHRydWUgb24gc3VjY2VzcwotICAgIHsKLSAgICAgICAgcmV0dXJuIGF0b21pY19jb25kaXRpb25hbF9pbmNyZW1lbnQoICZ1c2VfY291bnRfICkgIT0gMDsKLSAgICB9Ci0KLSAgICB2b2lkIHJlbGVhc2UoKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBpZiggYXRvbWljX2RlY3JlbWVudCggJnVzZV9jb3VudF8gKSA9PSAxICkKLSAgICAgICAgewotICAgICAgICAgICAgZGlzcG9zZSgpOwotICAgICAgICAgICAgd2Vha19yZWxlYXNlKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB2b2lkIHdlYWtfYWRkX3JlZigpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGF0b21pY19pbmNyZW1lbnQoICZ3ZWFrX2NvdW50XyApOwotICAgIH0KLQotICAgIHZvaWQgd2Vha19yZWxlYXNlKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgaWYoIGF0b21pY19kZWNyZW1lbnQoICZ3ZWFrX2NvdW50XyApID09IDEgKQotICAgICAgICB7Ci0gICAgICAgICAgICBkZXN0cm95KCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBsb25nIHVzZV9jb3VudCgpIGNvbnN0IC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIHJldHVybiBjb25zdF9jYXN0PCBzcF9pbnQzMl90IGNvbnN0IHZvbGF0aWxlICYgPiggdXNlX2NvdW50XyApOwotICAgIH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgIC8vICNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9DT1VOVEVEX0JBU0VfU1lOQ19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2VfdmFjcHBfcHBjLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2VfdmFjcHBfcHBjLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjczZjQ2Mi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9iYXNlX3ZhY3BwX3BwYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTEgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0NPVU5URURfQkFTRV9WQUNQUF9QUENfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfQ09VTlRFRF9CQVNFX1ZBQ1BQX1BQQ19IUFBfSU5DTFVERUQKLQotLy8KLS8vICBkZXRhaWwvc3BfY291bnRlZF9iYXNlX3ZhY3BwX3BwYy5ocHAgLSB4bEModmFjcHApIG9uIFBPV0VSCi0vLyAgIGJhc2VkIG9uOiBkZXRhaWwvc3BfY291bnRlZF9iYXNlX3czMi5ocHAKLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAxLCAyMDAyLCAyMDAzIFBldGVyIERpbW92IGFuZCBNdWx0aSBNZWRpYSBMdGQuCi0vLyAgQ29weXJpZ2h0IDIwMDQtMjAwNSBQZXRlciBEaW1vdgotLy8gIENvcHlyaWdodCAyMDA2IE1pY2hhZWwgdmFuIGRlciBXZXN0aHVpemVuCi0vLyAgQ29weXJpZ2h0IDIwMTIgSUJNIENvcnAuCi0vLwotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vCi0vLyAgTG9jay1mcmVlIGFsZ29yaXRobSBieSBBbGV4YW5kZXIgVGVyZWtob3YKLS8vCi0vLyAgVGhhbmtzIHRvIEJlbiBIaXRjaGluZ3MgZm9yIHRoZSAjd2VhayArICgjc2hhcmVkICE9IDApCi0vLyAgZm9ybXVsYXRpb24KLS8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvc3BfdHlwZWluZm8uaHBwPgotCi1leHRlcm4gImJ1aWx0aW4iIHZvaWQgX19sd3N5bmModm9pZCk7Ci1leHRlcm4gImJ1aWx0aW4iIHZvaWQgX19pc3luYyh2b2lkKTsKLWV4dGVybiAiYnVpbHRpbiIgaW50IF9fZmV0Y2hfYW5kX2FkZCh2b2xhdGlsZSBpbnQqIGFkZHIsIGludCB2YWwpOwotZXh0ZXJuICJidWlsdGluIiBpbnQgX19jb21wYXJlX2FuZF9zd2FwKHZvbGF0aWxlIGludCosIGludCosIGludCk7Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi1uYW1lc3BhY2UgZGV0YWlsCi17Ci0KLWlubGluZSB2b2lkIGF0b21pY19pbmNyZW1lbnQoIGludCAqcHcgKQotewotICAgLy8gKysqcHc7Ci0gICBfX2x3c3luYygpOwotICAgX19mZXRjaF9hbmRfYWRkKHB3LCAxKTsKLSAgIF9faXN5bmMoKTsKLX0gCi0KLWlubGluZSBpbnQgYXRvbWljX2RlY3JlbWVudCggaW50ICpwdyApCi17Ci0gICAvLyByZXR1cm4gLS0qcHc7Ci0gICBfX2x3c3luYygpOwotICAgaW50IG9yaWdpbmFsVmFsdWUgPSBfX2ZldGNoX2FuZF9hZGQocHcsIC0xKTsKLSAgIF9faXN5bmMoKTsKLQotICAgcmV0dXJuIChvcmlnaW5hbFZhbHVlIC0gMSk7Ci19Ci0KLWlubGluZSBpbnQgYXRvbWljX2NvbmRpdGlvbmFsX2luY3JlbWVudCggaW50ICpwdyApCi17Ci0gICAvLyBpZiggKnB3ICE9IDAgKSArKypwdzsKLSAgIC8vIHJldHVybiAqcHc7Ci0KLSAgIF9fbHdzeW5jKCk7Ci0gICBpbnQgdiA9ICpjb25zdF9jYXN0PHZvbGF0aWxlIGludCo+KHB3KTsKLSAgIGZvciAoOzspCi0gICAvLyBsb29wIHVudGlsIHN0YXRlIGlzIGtub3duCi0gICB7Ci0gICAgICBpZiAodiA9PSAwKSByZXR1cm4gMDsKLSAgICAgIGlmIChfX2NvbXBhcmVfYW5kX3N3YXAocHcsICZ2LCB2ICsgMSkpCi0gICAgICB7Ci0gICAgICAgICBfX2lzeW5jKCk7IHJldHVybiAodiArIDEpOwotICAgICAgfQotICAgfQotfQotCi1jbGFzcyBzcF9jb3VudGVkX2Jhc2UKLXsKLXByaXZhdGU6Ci0KLSAgICBzcF9jb3VudGVkX2Jhc2UoIHNwX2NvdW50ZWRfYmFzZSBjb25zdCAmICk7Ci0gICAgc3BfY291bnRlZF9iYXNlICYgb3BlcmF0b3I9ICggc3BfY291bnRlZF9iYXNlIGNvbnN0ICYgKTsKLQotICAgIGludCB1c2VfY291bnRfOyAgICAgICAgLy8gI3NoYXJlZAotICAgIGludCB3ZWFrX2NvdW50XzsgICAgICAgLy8gI3dlYWsgKyAoI3NoYXJlZCAhPSAwKQotICAgIGNoYXIgcGFkWzY0XSBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXyg2NCkpKTsKLSAgICAgICAgICAgIC8vIHBhZCB0byBwcmV2ZW50IGZhbHNlIHNoYXJpbmcKLXB1YmxpYzoKLQotICAgIHNwX2NvdW50ZWRfYmFzZSgpOiB1c2VfY291bnRfKCAxICksIHdlYWtfY291bnRfKCAxICkKLSAgICB7Ci0gICAgfQotCi0gICAgdmlydHVhbCB+c3BfY291bnRlZF9iYXNlKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICB9Ci0KLSAgICAvLyBkaXNwb3NlKCkgaXMgY2FsbGVkIHdoZW4gdXNlX2NvdW50XyBkcm9wcyB0byB6ZXJvLCB0byByZWxlYXNlCi0gICAgLy8gdGhlIHJlc291cmNlcyBtYW5hZ2VkIGJ5ICp0aGlzLgotCi0gICAgdmlydHVhbCB2b2lkIGRpc3Bvc2UoKSA9IDA7IC8vIG5vdGhyb3cKLQotICAgIC8vIGRlc3Ryb3koKSBpcyBjYWxsZWQgd2hlbiB3ZWFrX2NvdW50XyBkcm9wcyB0byB6ZXJvLgotCi0gICAgdmlydHVhbCB2b2lkIGRlc3Ryb3koKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBkZWxldGUgdGhpczsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgKiBnZXRfZGVsZXRlciggc3BfdHlwZWluZm8gY29uc3QgJiB0aSApID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgKiBnZXRfdW50eXBlZF9kZWxldGVyKCkgPSAwOwotCi0gICAgdm9pZCBhZGRfcmVmX2NvcHkoKQotICAgIHsKLSAgICAgICAgYXRvbWljX2luY3JlbWVudCggJnVzZV9jb3VudF8gKTsKLSAgICB9Ci0KLSAgICBib29sIGFkZF9yZWZfbG9jaygpIC8vIHRydWUgb24gc3VjY2VzcwotICAgIHsKLSAgICAgICAgcmV0dXJuIGF0b21pY19jb25kaXRpb25hbF9pbmNyZW1lbnQoICZ1c2VfY291bnRfICkgIT0gMDsKLSAgICB9Ci0KLSAgICB2b2lkIHJlbGVhc2UoKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBpZiggYXRvbWljX2RlY3JlbWVudCggJnVzZV9jb3VudF8gKSA9PSAwICkKLSAgICAgICAgewotICAgICAgICAgICAgZGlzcG9zZSgpOwotICAgICAgICAgICAgd2Vha19yZWxlYXNlKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB2b2lkIHdlYWtfYWRkX3JlZigpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGF0b21pY19pbmNyZW1lbnQoICZ3ZWFrX2NvdW50XyApOwotICAgIH0KLQotICAgIHZvaWQgd2Vha19yZWxlYXNlKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgaWYoIGF0b21pY19kZWNyZW1lbnQoICZ3ZWFrX2NvdW50XyApID09IDAgKQotICAgICAgICB7Ci0gICAgICAgICAgICBkZXN0cm95KCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBsb25nIHVzZV9jb3VudCgpIGNvbnN0IC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIHJldHVybiAqY29uc3RfY2FzdDx2b2xhdGlsZSBpbnQqPigmdXNlX2NvdW50Xyk7IAotICAgIH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgIC8vICNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9DT1VOVEVEX0JBU0VfVkFDUFBfUFBDX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV93MzIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfYmFzZV93MzIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMDZkM2E3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2VfdzMyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEzMSArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfQ09VTlRFRF9CQVNFX1czMl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9DT1VOVEVEX0JBU0VfVzMyX0hQUF9JTkNMVURFRAotCi0vLyBNUyBjb21wYXRpYmxlIGNvbXBpbGVycyBzdXBwb3J0ICNwcmFnbWEgb25jZQotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotLy8KLS8vICBkZXRhaWwvc3BfY291bnRlZF9iYXNlX3czMi5ocHAKLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAxLCAyMDAyLCAyMDAzIFBldGVyIERpbW92IGFuZCBNdWx0aSBNZWRpYSBMdGQuCi0vLyAgQ29weXJpZ2h0IDIwMDQtMjAwNSBQZXRlciBEaW1vdgotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLwotLy8gIExvY2stZnJlZSBhbGdvcml0aG0gYnkgQWxleGFuZGVyIFRlcmVraG92Ci0vLwotLy8gIFRoYW5rcyB0byBCZW4gSGl0Y2hpbmdzIGZvciB0aGUgI3dlYWsgKyAoI3NoYXJlZCAhPSAwKQotLy8gIGZvcm11bGF0aW9uCi0vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL2ludGVybG9ja2VkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3NwX3R5cGVpbmZvLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLW5hbWVzcGFjZSBkZXRhaWwKLXsKLQotY2xhc3Mgc3BfY291bnRlZF9iYXNlCi17Ci1wcml2YXRlOgotCi0gICAgc3BfY291bnRlZF9iYXNlKCBzcF9jb3VudGVkX2Jhc2UgY29uc3QgJiApOwotICAgIHNwX2NvdW50ZWRfYmFzZSAmIG9wZXJhdG9yPSAoIHNwX2NvdW50ZWRfYmFzZSBjb25zdCAmICk7Ci0KLSAgICBsb25nIHVzZV9jb3VudF87ICAgICAgICAvLyAjc2hhcmVkCi0gICAgbG9uZyB3ZWFrX2NvdW50XzsgICAgICAgLy8gI3dlYWsgKyAoI3NoYXJlZCAhPSAwKQotCi1wdWJsaWM6Ci0KLSAgICBzcF9jb3VudGVkX2Jhc2UoKTogdXNlX2NvdW50XyggMSApLCB3ZWFrX2NvdW50XyggMSApCi0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgfnNwX2NvdW50ZWRfYmFzZSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgfQotCi0gICAgLy8gZGlzcG9zZSgpIGlzIGNhbGxlZCB3aGVuIHVzZV9jb3VudF8gZHJvcHMgdG8gemVybywgdG8gcmVsZWFzZQotICAgIC8vIHRoZSByZXNvdXJjZXMgbWFuYWdlZCBieSAqdGhpcy4KLQotICAgIHZpcnR1YWwgdm9pZCBkaXNwb3NlKCkgPSAwOyAvLyBub3Rocm93Ci0KLSAgICAvLyBkZXN0cm95KCkgaXMgY2FsbGVkIHdoZW4gd2Vha19jb3VudF8gZHJvcHMgdG8gemVyby4KLQotICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95KCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgZGVsZXRlIHRoaXM7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkICogZ2V0X2RlbGV0ZXIoIHNwX3R5cGVpbmZvIGNvbnN0ICYgdGkgKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkICogZ2V0X3VudHlwZWRfZGVsZXRlcigpID0gMDsKLQotICAgIHZvaWQgYWRkX3JlZl9jb3B5KCkKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX0lOVEVSTE9DS0VEX0lOQ1JFTUVOVCggJnVzZV9jb3VudF8gKTsKLSAgICB9Ci0KLSAgICBib29sIGFkZF9yZWZfbG9jaygpIC8vIHRydWUgb24gc3VjY2VzcwotICAgIHsKLSAgICAgICAgZm9yKCA7OyApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGxvbmcgdG1wID0gc3RhdGljX2Nhc3Q8IGxvbmcgY29uc3Qgdm9sYXRpbGUmID4oIHVzZV9jb3VudF8gKTsKLSAgICAgICAgICAgIGlmKCB0bXAgPT0gMCApIHJldHVybiBmYWxzZTsKLQotI2lmIGRlZmluZWQoIE5ETkJPT1NUX01TVkMgKSAmJiBORE5CT09TVF9XT1JLQVJPVU5EKCBORE5CT09TVF9NU1ZDLCA9PSAxMjAwICkKLQotICAgICAgICAgICAgLy8gd29yayBhcm91bmQgYSBjb2RlIGdlbmVyYXRpb24gYnVnCi0KLSAgICAgICAgICAgIGxvbmcgdG1wMiA9IHRtcCArIDE7Ci0gICAgICAgICAgICBpZiggTkROQk9PU1RfSU5URVJMT0NLRURfQ09NUEFSRV9FWENIQU5HRSggJnVzZV9jb3VudF8sIHRtcDIsIHRtcCApID09IHRtcDIgLSAxICkgcmV0dXJuIHRydWU7Ci0KLSNlbHNlCi0KLSAgICAgICAgICAgIGlmKCBORE5CT09TVF9JTlRFUkxPQ0tFRF9DT01QQVJFX0VYQ0hBTkdFKCAmdXNlX2NvdW50XywgdG1wICsgMSwgdG1wICkgPT0gdG1wICkgcmV0dXJuIHRydWU7Ci0KLSNlbmRpZgotICAgICAgICB9Ci0gICAgfQotCi0gICAgdm9pZCByZWxlYXNlKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgaWYoIE5ETkJPT1NUX0lOVEVSTE9DS0VEX0RFQ1JFTUVOVCggJnVzZV9jb3VudF8gKSA9PSAwICkKLSAgICAgICAgewotICAgICAgICAgICAgZGlzcG9zZSgpOwotICAgICAgICAgICAgd2Vha19yZWxlYXNlKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB2b2lkIHdlYWtfYWRkX3JlZigpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX0lOVEVSTE9DS0VEX0lOQ1JFTUVOVCggJndlYWtfY291bnRfICk7Ci0gICAgfQotCi0gICAgdm9pZCB3ZWFrX3JlbGVhc2UoKSAvLyBub3Rocm93Ci0gICAgewotICAgICAgICBpZiggTkROQk9PU1RfSU5URVJMT0NLRURfREVDUkVNRU5UKCAmd2Vha19jb3VudF8gKSA9PSAwICkKLSAgICAgICAgewotICAgICAgICAgICAgZGVzdHJveSgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgbG9uZyB1c2VfY291bnQoKSBjb25zdCAvLyBub3Rocm93Ci0gICAgewotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8bG9uZyBjb25zdCB2b2xhdGlsZSAmPiggdXNlX2NvdW50XyApOwotICAgIH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgIC8vICNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9DT1VOVEVEX0JBU0VfVzMyX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2NvdW50ZWRfaW1wbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzhhZjczYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfY291bnRlZF9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI1NCArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfQ09VTlRFRF9JTVBMX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0NPVU5URURfSU1QTF9IUFBfSU5DTFVERUQKLQotLy8gTVMgY29tcGF0aWJsZSBjb21waWxlcnMgc3VwcG9ydCAjcHJhZ21hIG9uY2UKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLS8vCi0vLyAgZGV0YWlsL3NwX2NvdW50ZWRfaW1wbC5ocHAKLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAxLCAyMDAyLCAyMDAzIFBldGVyIERpbW92IGFuZCBNdWx0aSBNZWRpYSBMdGQuCi0vLyAgQ29weXJpZ2h0IDIwMDQtMjAwNSBQZXRlciBEaW1vdgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9TUF9VU0VfU1REX0FMTE9DQVRPUikgJiYgZGVmaW5lZChORE5CT09TVF9TUF9VU0VfUVVJQ0tfQUxMT0NBVE9SKQotIyBlcnJvciBORE5CT09TVF9TUF9VU0VfU1REX0FMTE9DQVRPUiBhbmQgTkROQk9PU1RfU1BfVVNFX1FVSUNLX0FMTE9DQVRPUiBhcmUgaW5jb21wYXRpYmxlLgotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jaGVja2VkX2RlbGV0ZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb3VudGVkX2Jhc2UuaHBwPgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9TUF9VU0VfUVVJQ0tfQUxMT0NBVE9SKQotI2luY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvcXVpY2tfYWxsb2NhdG9yLmhwcD4KLSNlbmRpZgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9TUF9VU0VfU1REX0FMTE9DQVRPUikKLSNpbmNsdWRlIDxtZW1vcnk+ICAgICAgICAgICAvLyBzdGQ6OmFsbG9jYXRvcgotI2VuZGlmCi0KLSNpbmNsdWRlIDxjc3RkZGVmPiAgICAgICAgICAvLyBzdGQ6OnNpemVfdAotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfU1BfRU5BQkxFX0RFQlVHX0hPT0tTKQotCi12b2lkIHNwX3NjYWxhcl9jb25zdHJ1Y3Rvcl9ob29rKCB2b2lkICogcHgsIHN0ZDo6c2l6ZV90IHNpemUsIHZvaWQgKiBwbiApOwotdm9pZCBzcF9zY2FsYXJfZGVzdHJ1Y3Rvcl9ob29rKCB2b2lkICogcHgsIHN0ZDo6c2l6ZV90IHNpemUsIHZvaWQgKiBwbiApOwotCi0jZW5kaWYKLQotbmFtZXNwYWNlIGRldGFpbAotewotCi10ZW1wbGF0ZTxjbGFzcyBYPiBjbGFzcyBzcF9jb3VudGVkX2ltcGxfcDogcHVibGljIHNwX2NvdW50ZWRfYmFzZQotewotcHJpdmF0ZToKLQotICAgIFggKiBweF87Ci0KLSAgICBzcF9jb3VudGVkX2ltcGxfcCggc3BfY291bnRlZF9pbXBsX3AgY29uc3QgJiApOwotICAgIHNwX2NvdW50ZWRfaW1wbF9wICYgb3BlcmF0b3I9ICggc3BfY291bnRlZF9pbXBsX3AgY29uc3QgJiApOwotCi0gICAgdHlwZWRlZiBzcF9jb3VudGVkX2ltcGxfcDxYPiB0aGlzX3R5cGU7Ci0KLXB1YmxpYzoKLQotICAgIGV4cGxpY2l0IHNwX2NvdW50ZWRfaW1wbF9wKCBYICogcHggKTogcHhfKCBweCApCi0gICAgewotI2lmIGRlZmluZWQoTkROQk9PU1RfU1BfRU5BQkxFX0RFQlVHX0hPT0tTKQotICAgICAgICBuZG5ib29zdDo6c3Bfc2NhbGFyX2NvbnN0cnVjdG9yX2hvb2soIHB4LCBzaXplb2YoWCksIHRoaXMgKTsKLSNlbmRpZgotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBkaXNwb3NlKCkgLy8gbm90aHJvdwotICAgIHsKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1NQX0VOQUJMRV9ERUJVR19IT09LUykKLSAgICAgICAgbmRuYm9vc3Q6OnNwX3NjYWxhcl9kZXN0cnVjdG9yX2hvb2soIHB4Xywgc2l6ZW9mKFgpLCB0aGlzICk7Ci0jZW5kaWYKLSAgICAgICAgbmRuYm9vc3Q6OmNoZWNrZWRfZGVsZXRlKCBweF8gKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgKiBnZXRfZGVsZXRlciggZGV0YWlsOjpzcF90eXBlaW5mbyBjb25zdCAmICkKLSAgICB7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCAqIGdldF91bnR5cGVkX2RlbGV0ZXIoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0jaWYgZGVmaW5lZChORE5CT09TVF9TUF9VU0VfU1REX0FMTE9DQVRPUikKLQotICAgIHZvaWQgKiBvcGVyYXRvciBuZXcoIHN0ZDo6c2l6ZV90ICkKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6OmFsbG9jYXRvcjx0aGlzX3R5cGU+KCkuYWxsb2NhdGUoIDEsIHN0YXRpY19jYXN0PHRoaXNfdHlwZSAqPigwKSApOwotICAgIH0KLQotICAgIHZvaWQgb3BlcmF0b3IgZGVsZXRlKCB2b2lkICogcCApCi0gICAgewotICAgICAgICBzdGQ6OmFsbG9jYXRvcjx0aGlzX3R5cGU+KCkuZGVhbGxvY2F0ZSggc3RhdGljX2Nhc3Q8dGhpc190eXBlICo+KHApLCAxICk7Ci0gICAgfQotCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfU1BfVVNFX1FVSUNLX0FMTE9DQVRPUikKLQotICAgIHZvaWQgKiBvcGVyYXRvciBuZXcoIHN0ZDo6c2l6ZV90ICkKLSAgICB7Ci0gICAgICAgIHJldHVybiBxdWlja19hbGxvY2F0b3I8dGhpc190eXBlPjo6YWxsb2MoKTsKLSAgICB9Ci0KLSAgICB2b2lkIG9wZXJhdG9yIGRlbGV0ZSggdm9pZCAqIHAgKQotICAgIHsKLSAgICAgICAgcXVpY2tfYWxsb2NhdG9yPHRoaXNfdHlwZT46OmRlYWxsb2MoIHAgKTsKLSAgICB9Ci0KLSNlbmRpZgotfTsKLQotLy8KLS8vIEJvcmxhbmQncyBDb2RlZ3VhcmQgdHJpcHMgdXAgb3ZlciB0aGUgLVZ4LSBvcHRpb24gaGVyZToKLS8vCi0jaWZkZWYgX19DT0RFR1VBUkRfXwotIyBwcmFnbWEgb3B0aW9uIHB1c2ggLVZ4LQotI2VuZGlmCi0KLXRlbXBsYXRlPGNsYXNzIFAsIGNsYXNzIEQ+IGNsYXNzIHNwX2NvdW50ZWRfaW1wbF9wZDogcHVibGljIHNwX2NvdW50ZWRfYmFzZQotewotcHJpdmF0ZToKLQotICAgIFAgcHRyOyAvLyBjb3B5IGNvbnN0cnVjdG9yIG11c3Qgbm90IHRocm93Ci0gICAgRCBkZWw7IC8vIGNvcHkgY29uc3RydWN0b3IgbXVzdCBub3QgdGhyb3cKLQotICAgIHNwX2NvdW50ZWRfaW1wbF9wZCggc3BfY291bnRlZF9pbXBsX3BkIGNvbnN0ICYgKTsKLSAgICBzcF9jb3VudGVkX2ltcGxfcGQgJiBvcGVyYXRvcj0gKCBzcF9jb3VudGVkX2ltcGxfcGQgY29uc3QgJiApOwotCi0gICAgdHlwZWRlZiBzcF9jb3VudGVkX2ltcGxfcGQ8UCwgRD4gdGhpc190eXBlOwotCi1wdWJsaWM6Ci0KLSAgICAvLyBwcmU6IGQocCkgbXVzdCBub3QgdGhyb3cKLQotICAgIHNwX2NvdW50ZWRfaW1wbF9wZCggUCBwLCBEICYgZCApOiBwdHIoIHAgKSwgZGVsKCBkICkKLSAgICB7Ci0gICAgfQotCi0gICAgc3BfY291bnRlZF9pbXBsX3BkKCBQIHAgKTogcHRyKCBwICksIGRlbCgpCi0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBkaXNwb3NlKCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgZGVsKCBwdHIgKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgKiBnZXRfZGVsZXRlciggZGV0YWlsOjpzcF90eXBlaW5mbyBjb25zdCAmIHRpICkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aSA9PSBORE5CT09TVF9TUF9UWVBFSUQoRCk/ICZyZWludGVycHJldF9jYXN0PGNoYXImPiggZGVsICk6IDA7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkICogZ2V0X3VudHlwZWRfZGVsZXRlcigpCi0gICAgewotICAgICAgICByZXR1cm4gJnJlaW50ZXJwcmV0X2Nhc3Q8Y2hhciY+KCBkZWwgKTsKLSAgICB9Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1NQX1VTRV9TVERfQUxMT0NBVE9SKQotCi0gICAgdm9pZCAqIG9wZXJhdG9yIG5ldyggc3RkOjpzaXplX3QgKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6YWxsb2NhdG9yPHRoaXNfdHlwZT4oKS5hbGxvY2F0ZSggMSwgc3RhdGljX2Nhc3Q8dGhpc190eXBlICo+KDApICk7Ci0gICAgfQotCi0gICAgdm9pZCBvcGVyYXRvciBkZWxldGUoIHZvaWQgKiBwICkKLSAgICB7Ci0gICAgICAgIHN0ZDo6YWxsb2NhdG9yPHRoaXNfdHlwZT4oKS5kZWFsbG9jYXRlKCBzdGF0aWNfY2FzdDx0aGlzX3R5cGUgKj4ocCksIDEgKTsKLSAgICB9Ci0KLSNlbmRpZgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9TUF9VU0VfUVVJQ0tfQUxMT0NBVE9SKQotCi0gICAgdm9pZCAqIG9wZXJhdG9yIG5ldyggc3RkOjpzaXplX3QgKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHF1aWNrX2FsbG9jYXRvcjx0aGlzX3R5cGU+OjphbGxvYygpOwotICAgIH0KLQotICAgIHZvaWQgb3BlcmF0b3IgZGVsZXRlKCB2b2lkICogcCApCi0gICAgewotICAgICAgICBxdWlja19hbGxvY2F0b3I8dGhpc190eXBlPjo6ZGVhbGxvYyggcCApOwotICAgIH0KLQotI2VuZGlmCi19OwotCi10ZW1wbGF0ZTxjbGFzcyBQLCBjbGFzcyBELCBjbGFzcyBBPiBjbGFzcyBzcF9jb3VudGVkX2ltcGxfcGRhOiBwdWJsaWMgc3BfY291bnRlZF9iYXNlCi17Ci1wcml2YXRlOgotCi0gICAgUCBwXzsgLy8gY29weSBjb25zdHJ1Y3RvciBtdXN0IG5vdCB0aHJvdwotICAgIEQgZF87IC8vIGNvcHkgY29uc3RydWN0b3IgbXVzdCBub3QgdGhyb3cKLSAgICBBIGFfOyAvLyBjb3B5IGNvbnN0cnVjdG9yIG11c3Qgbm90IHRocm93Ci0KLSAgICBzcF9jb3VudGVkX2ltcGxfcGRhKCBzcF9jb3VudGVkX2ltcGxfcGRhIGNvbnN0ICYgKTsKLSAgICBzcF9jb3VudGVkX2ltcGxfcGRhICYgb3BlcmF0b3I9ICggc3BfY291bnRlZF9pbXBsX3BkYSBjb25zdCAmICk7Ci0KLSAgICB0eXBlZGVmIHNwX2NvdW50ZWRfaW1wbF9wZGE8UCwgRCwgQT4gdGhpc190eXBlOwotCi1wdWJsaWM6Ci0KLSAgICAvLyBwcmU6IGQoIHAgKSBtdXN0IG5vdCB0aHJvdwotCi0gICAgc3BfY291bnRlZF9pbXBsX3BkYSggUCBwLCBEICYgZCwgQSBhICk6IHBfKCBwICksIGRfKCBkICksIGFfKCBhICkKLSAgICB7Ci0gICAgfQotCi0gICAgc3BfY291bnRlZF9pbXBsX3BkYSggUCBwLCBBIGEgKTogcF8oIHAgKSwgZF8oKSwgYV8oIGEgKQotICAgIHsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcG9zZSgpIC8vIG5vdGhyb3cKLSAgICB7Ci0gICAgICAgIGRfKCBwXyApOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95KCkgLy8gbm90aHJvdwotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBBOjp0ZW1wbGF0ZSByZWJpbmQ8IHRoaXNfdHlwZSA+OjpvdGhlciBBMjsKLQotICAgICAgICBBMiBhMiggYV8gKTsKLQotICAgICAgICB0aGlzLT5+dGhpc190eXBlKCk7Ci0gICAgICAgIGEyLmRlYWxsb2NhdGUoIHRoaXMsIDEgKTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgKiBnZXRfZGVsZXRlciggZGV0YWlsOjpzcF90eXBlaW5mbyBjb25zdCAmIHRpICkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aSA9PSBORE5CT09TVF9TUF9UWVBFSUQoIEQgKT8gJnJlaW50ZXJwcmV0X2Nhc3Q8Y2hhciY+KCBkXyApOiAwOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCAqIGdldF91bnR5cGVkX2RlbGV0ZXIoKQotICAgIHsKLSAgICAgICAgcmV0dXJuICZyZWludGVycHJldF9jYXN0PGNoYXImPiggZF8gKTsKLSAgICB9Ci19OwotCi0jaWZkZWYgX19DT0RFR1VBUkRfXwotIyBwcmFnbWEgb3B0aW9uIHBvcAotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgIC8vICNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9DT1VOVEVEX0lNUExfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfZm9yd2FyZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfZm9yd2FyZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUxYjdiNzQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2ZvcndhcmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0ZPUldBUkRfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfRk9SV0FSRF9IUFBfSU5DTFVERUQKLQotLy8gTVMgY29tcGF0aWJsZSBjb21waWxlcnMgc3VwcG9ydCAjcHJhZ21hIG9uY2UKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLS8vICBkZXRhaWwvc3BfZm9yd2FyZC5ocHAKLS8vCi0vLyAgQ29weXJpZ2h0IDIwMDgsMjAxMiBQZXRlciBEaW1vdgotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotbmFtZXNwYWNlIGRldGFpbAotewotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTICkKLQotdGVtcGxhdGU8IGNsYXNzIFQgPiBUJiYgc3BfZm9yd2FyZCggVCAmIHQgKSBORE5CT09TVF9OT0VYQ0VQVAotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDwgVCYmID4oIHQgKTsKLX0KLQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgIC8vICNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9GT1JXQVJEX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2hhc19zeW5jLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9oYXNfc3luYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDViNWI0ZGYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2hhc19zeW5jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9IQVNfU1lOQ19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9IQVNfU1lOQ19IUFBfSU5DTFVERUQKLQotLy8gTVMgY29tcGF0aWJsZSBjb21waWxlcnMgc3VwcG9ydCAjcHJhZ21hIG9uY2UKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLS8vCi0vLyAgbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9oYXNfc3luYy5ocHAKLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDA4LCAyMDA5IFBldGVyIERpbW92Ci0vLwotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICBTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gIERlZmluZXMgdGhlIE5ETkJPT1NUX1NQX0hBU19TWU5DIG1hY3JvIGlmIHRoZSBfX3N5bmNfKiBpbnRyaW5zaWNzCi0vLyAgYXJlIGF2YWlsYWJsZS4KLS8vCi0KLSNpZm5kZWYgTkROQk9PU1RfU1BfTk9fU1lOQwotCi0jaWYgZGVmaW5lZCggX19HQ0NfSEFWRV9TWU5DX0NPTVBBUkVfQU5EX1NXQVBfNCApCi0KLSMgZGVmaW5lIE5ETkJPT1NUX1NQX0hBU19TWU5DCi0KLSNlbGlmIGRlZmluZWQoIF9fSUJNQ1BQX18gKSAmJiAoIF9fSUJNQ1BQX18gPj0gMTIxMCApCi0KLSMgZGVmaW5lIE5ETkJPT1NUX1NQX0hBU19TWU5DCi0KLSNlbGlmIGRlZmluZWQoIF9fR05VQ19fICkgJiYgKCBfX0dOVUNfXyAqIDEwMCArIF9fR05VQ19NSU5PUl9fID49IDQwMSApCi0KLSNkZWZpbmUgTkROQk9PU1RfU1BfSEFTX1NZTkMKLQotI2lmIGRlZmluZWQoIF9fYXJtX18gKSAgfHwgZGVmaW5lZCggX19hcm1lbF9fICkKLSN1bmRlZiBORE5CT09TVF9TUF9IQVNfU1lOQwotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKCBfX2hwcGEgKSB8fCBkZWZpbmVkKCBfX2hwcGFfXyApCi0jdW5kZWYgTkROQk9PU1RfU1BfSEFTX1NZTkMKLSNlbmRpZgotCi0jaWYgZGVmaW5lZCggX19tNjhrX18gKQotI3VuZGVmIE5ETkJPT1NUX1NQX0hBU19TWU5DCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoIF9fc2hfXyApCi0jdW5kZWYgTkROQk9PU1RfU1BfSEFTX1NZTkMKLSNlbmRpZgotCi0jaWYgZGVmaW5lZCggX19zcGFyY19fICkKLSN1bmRlZiBORE5CT09TVF9TUF9IQVNfU1lOQwotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKCBfX0lOVEVMX0NPTVBJTEVSICkgJiYgIWRlZmluZWQoIF9faWE2NF9fICkgJiYgKCBfX0lOVEVMX0NPTVBJTEVSIDwgMTExMCApCi0jdW5kZWYgTkROQk9PU1RfU1BfSEFTX1NZTkMKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChfX1BBVEhTQ0FMRV9fKSAmJiAoKF9fUEFUSENDX18gPT0gNCkgJiYgKF9fUEFUSENDX01JTk9SX18gPCA5KSkgCi0jdW5kZWYgTkROQk9PU1RfU1BfSEFTX1NZTkMKLSNlbmRpZgotCi0jZW5kaWYKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfU1BfTk9fU1lOQwotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX0hBU19TWU5DX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2lmX2FycmF5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9pZl9hcnJheS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMzYzg5MjUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2lmX2FycmF5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMTIgR2xlbiBKb3NlcGggRmVybmFuZGVzIAotICogZ2xlbmZlIGF0IGxpdmUgZG90IGNvbQotICoKLSAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCAKLSAqIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCAKLSAqIG9yIGNvcHkgYXQgaHR0cDovL2Jvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKi8KLSNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9JRl9BUlJBWV9IUFAKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUF9JRl9BUlJBWV9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9zaGFyZWRfcHRyLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLSAgICBuYW1lc3BhY2UgZGV0YWlsIHsKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gCi0gICAgICAgIHN0cnVjdCBzcF9pZl9hcnJheTsKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgc3RydWN0IHNwX2lmX2FycmF5PFRbXT4gewotICAgICAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6c2hhcmVkX3B0cjxUW10+IHR5cGU7Ci0gICAgICAgIH07Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgIHN0cnVjdCBzcF9pZl9zaXplX2FycmF5OwotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBzdGQ6OnNpemVfdCBOPgotICAgICAgICBzdHJ1Y3Qgc3BfaWZfc2l6ZV9hcnJheTxUW05dPiB7Ci0gICAgICAgICAgICB0eXBlZGVmIG5kbmJvb3N0OjpzaGFyZWRfcHRyPFRbTl0+IHR5cGU7Ci0gICAgICAgIH07Ci0gICAgfQotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9udWxscHRyX3QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX251bGxwdHJfdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzNDgwNjEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX251bGxwdHJfdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfTlVMTFBUUl9UX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQX05VTExQVFJfVF9IUFBfSU5DTFVERUQKLQotLy8gTVMgY29tcGF0aWJsZSBjb21waWxlcnMgc3VwcG9ydCAjcHJhZ21hIG9uY2UKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLS8vICBkZXRhaWwvc3BfbnVsbHB0cl90LmhwcAotLy8KLS8vICBDb3B5cmlnaHQgMjAxMyBQZXRlciBEaW1vdgotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPGNzdGRkZWY+Ci0KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfTk9fQ1hYMTFfTlVMTFBUUiApCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi1uYW1lc3BhY2UgZGV0YWlsCi17Ci0KLSNpZiBkZWZpbmVkKCBfX2NsYW5nX18gKSAmJiAhZGVmaW5lZCggX0xJQkNQUF9WRVJTSU9OICkgJiYgIWRlZmluZWQoIE5ETkJPT1NUX05PX0NYWDExX0RFQ0xUWVBFICkKLQotICAgIHR5cGVkZWYgZGVjbHR5cGUobnVsbHB0cikgc3BfbnVsbHB0cl90OwotCi0jZWxzZQotCi0gICAgdHlwZWRlZiBzdGQ6Om51bGxwdHJfdCBzcF9udWxscHRyX3Q7Ci0KLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vICFkZWZpbmVkKCBORE5CT09TVF9OT19DWFgxMV9OVUxMUFRSICkKLQotI2VuZGlmICAvLyAjaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BfTlVMTFBUUl9UX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwaW5sb2NrLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcGlubG9jay5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3ZDBkNTYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwaW5sb2NrLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUElOTE9DS19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUElOTE9DS19IUFBfSU5DTFVERUQKLQotLy8gTVMgY29tcGF0aWJsZSBjb21waWxlcnMgc3VwcG9ydCAjcHJhZ21hIG9uY2UKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLS8vCi0vLyAgbmRuYm9vc3QvZGV0YWlsL3NwaW5sb2NrLmhwcAotLy8KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDggUGV0ZXIgRGltb3YKLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyAgc3RydWN0IHNwaW5sb2NrCi0vLyAgewotLy8gICAgICB2b2lkIGxvY2soKTsKLS8vICAgICAgYm9vbCB0cnlfbG9jaygpOwotLy8gICAgICB2b2lkIHVubG9jaygpOwotLy8KLS8vICAgICAgY2xhc3Mgc2NvcGVkX2xvY2s7Ci0vLyAgfTsKLS8vCi0vLyAgI2RlZmluZSBORE5CT09TVF9ERVRBSUxfU1BJTkxPQ0tfSU5JVCA8dW5zcGVjaWZpZWQ+Ci0vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2hhc19zeW5jLmhwcD4KLQotI2lmIGRlZmluZWQoIE5ETkJPT1NUX1NQX1VTRV9QVEhSRUFEUyApCi0jICBpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwaW5sb2NrX3B0LmhwcD4KLQotI2VsaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZCggX19hcm1fXyApICYmICFkZWZpbmVkKCBfX3RodW1iX18gKQotIyAgaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcGlubG9ja19nY2NfYXJtLmhwcD4KLQotI2VsaWYgZGVmaW5lZCggTkROQk9PU1RfU1BfSEFTX1NZTkMgKQotIyAgaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcGlubG9ja19zeW5jLmhwcD4KLQotI2VsaWYgZGVmaW5lZChXSU4zMikgfHwgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19XSU4zMl9fKSB8fCBkZWZpbmVkKF9fQ1lHV0lOX18pCi0jICBpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwaW5sb2NrX3czMi5ocHA+Ci0KLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfSEFTX1BUSFJFQURTKQotIyAgaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcGlubG9ja19wdC5ocHA+Ci0KLSNlbGlmICFkZWZpbmVkKE5ETkJPT1NUX0hBU19USFJFQURTKQotIyAgaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcGlubG9ja19udC5ocHA+Ci0KLSNlbHNlCi0jICBlcnJvciBVbnJlY29nbml6ZWQgdGhyZWFkaW5nIHBsYXRmb3JtCi0jZW5kaWYKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUElOTE9DS19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcGlubG9ja19nY2NfYXJtLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcGlubG9ja19nY2NfYXJtLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmYwMTVhNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BpbmxvY2tfZ2NjX2FybS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjAgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQSU5MT0NLX0dDQ19BUk1fSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BJTkxPQ0tfR0NDX0FSTV9IUFBfSU5DTFVERUQKLQotLy8KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDgsIDIwMTEgUGV0ZXIgRGltb3YKLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3lpZWxkX2suaHBwPgotCi0jaWYgZGVmaW5lZChfX0FSTV9BUkNIXzdfXykgfHwgZGVmaW5lZChfX0FSTV9BUkNIXzdBX18pIHx8IGRlZmluZWQoX19BUk1fQVJDSF83Ul9fKSB8fCBkZWZpbmVkKF9fQVJNX0FSQ0hfN01fXykgfHwgZGVmaW5lZChfX0FSTV9BUkNIXzdFTV9fKSB8fCBkZWZpbmVkKF9fQVJNX0FSQ0hfN1NfXykKLQotIyBkZWZpbmUgTkROQk9PU1RfU1BfQVJNX0JBUlJJRVIgImRtYiIKLSMgZGVmaW5lIE5ETkJPT1NUX1NQX0FSTV9IQVNfTERSRVgKLQotI2VsaWYgZGVmaW5lZChfX0FSTV9BUkNIXzZfXykgfHwgZGVmaW5lZChfX0FSTV9BUkNIXzZKX18pIHx8IGRlZmluZWQoX19BUk1fQVJDSF82S19fKSB8fCBkZWZpbmVkKF9fQVJNX0FSQ0hfNlpfXykgfHwgZGVmaW5lZChfX0FSTV9BUkNIXzZaS19fKSB8fCBkZWZpbmVkKF9fQVJNX0FSQ0hfNlQyX18pCi0KLSMgZGVmaW5lIE5ETkJPT1NUX1NQX0FSTV9CQVJSSUVSICJtY3IgcDE1LCAwLCByMCwgYzcsIGMxMCwgNSIKLSMgZGVmaW5lIE5ETkJPT1NUX1NQX0FSTV9IQVNfTERSRVgKLQotI2Vsc2UKLQotIyBkZWZpbmUgTkROQk9PU1RfU1BfQVJNX0JBUlJJRVIgIiIKLQotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi1uYW1lc3BhY2UgZGV0YWlsCi17Ci0KLWNsYXNzIHNwaW5sb2NrCi17Ci1wdWJsaWM6Ci0KLSAgICBpbnQgdl87Ci0KLXB1YmxpYzoKLQotICAgIGJvb2wgdHJ5X2xvY2soKQotICAgIHsKLSAgICAgICAgaW50IHI7Ci0KLSNpZmRlZiBORE5CT09TVF9TUF9BUk1fSEFTX0xEUkVYCi0KLSAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCi0gICAgICAgICAgICAibGRyZXggJTAsIFslMl07IFxuIgotICAgICAgICAgICAgImNtcCAlMCwgJTE7IFxuIgotICAgICAgICAgICAgInN0cmV4bmUgJTAsICUxLCBbJTJdOyBcbiIKLSAgICAgICAgICAgIE5ETkJPT1NUX1NQX0FSTV9CQVJSSUVSIDoKLSAgICAgICAgICAgICI9JnIiKCByICk6IC8vIG91dHB1dHMKLSAgICAgICAgICAgICJyIiggMSApLCAiciIoICZ2XyApOiAvLyBpbnB1dHMKLSAgICAgICAgICAgICJtZW1vcnkiLCAiY2MiICk7Ci0KLSNlbHNlCi0KLSAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oCi0gICAgICAgICAgICAic3dwICUwLCAlMSwgWyUyXTtcbiIKLSAgICAgICAgICAgIE5ETkJPT1NUX1NQX0FSTV9CQVJSSUVSIDoKLSAgICAgICAgICAgICI9JnIiKCByICk6IC8vIG91dHB1dHMKLSAgICAgICAgICAgICJyIiggMSApLCAiciIoICZ2XyApOiAvLyBpbnB1dHMKLSAgICAgICAgICAgICJtZW1vcnkiLCAiY2MiICk7Ci0KLSNlbmRpZgotCi0gICAgICAgIHJldHVybiByID09IDA7Ci0gICAgfQotCi0gICAgdm9pZCBsb2NrKCkKLSAgICB7Ci0gICAgICAgIGZvciggdW5zaWduZWQgayA9IDA7ICF0cnlfbG9jaygpOyArK2sgKQotICAgICAgICB7Ci0gICAgICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjp5aWVsZCggayApOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdm9pZCB1bmxvY2soKQotICAgIHsKLSAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18oIE5ETkJPT1NUX1NQX0FSTV9CQVJSSUVSIDo6OiAibWVtb3J5IiApOwotICAgICAgICAqY29uc3RfY2FzdDwgaW50IHZvbGF0aWxlKiA+KCAmdl8gKSA9IDA7Ci0gICAgfQotCi1wdWJsaWM6Ci0KLSAgICBjbGFzcyBzY29wZWRfbG9jawotICAgIHsKLSAgICBwcml2YXRlOgotCi0gICAgICAgIHNwaW5sb2NrICYgc3BfOwotCi0gICAgICAgIHNjb3BlZF9sb2NrKCBzY29wZWRfbG9jayBjb25zdCAmICk7Ci0gICAgICAgIHNjb3BlZF9sb2NrICYgb3BlcmF0b3I9KCBzY29wZWRfbG9jayBjb25zdCAmICk7Ci0KLSAgICBwdWJsaWM6Ci0KLSAgICAgICAgZXhwbGljaXQgc2NvcGVkX2xvY2soIHNwaW5sb2NrICYgc3AgKTogc3BfKCBzcCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHNwLmxvY2soKTsKLSAgICAgICAgfQotCi0gICAgICAgIH5zY29wZWRfbG9jaygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHNwXy51bmxvY2soKTsKLSAgICAgICAgfQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX1NQSU5MT0NLX0lOSVQgezB9Ci0KLSN1bmRlZiBORE5CT09TVF9TUF9BUk1fQkFSUklFUgotI3VuZGVmIE5ETkJPT1NUX1NQX0FSTV9IQVNfTERSRVgKLQotI2VuZGlmIC8vICNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUElOTE9DS19HQ0NfQVJNX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwaW5sb2NrX250LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcGlubG9ja19udC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDViNTE0YzguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwaW5sb2NrX250LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDg5ICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUElOTE9DS19OVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUElOTE9DS19OVF9IUFBfSU5DTFVERUQKLQotLy8gTVMgY29tcGF0aWJsZSBjb21waWxlcnMgc3VwcG9ydCAjcHJhZ21hIG9uY2UKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDA4IFBldGVyIERpbW92Ci0vLwotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICBTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvYXNzZXJ0LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLW5hbWVzcGFjZSBkZXRhaWwKLXsKLQotY2xhc3Mgc3BpbmxvY2sKLXsKLXB1YmxpYzoKLQotICAgIGJvb2wgbG9ja2VkXzsKLQotcHVibGljOgotCi0gICAgaW5saW5lIGJvb2wgdHJ5X2xvY2soKQotICAgIHsKLSAgICAgICAgaWYoIGxvY2tlZF8gKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgICBsb2NrZWRfID0gdHJ1ZTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaW5saW5lIHZvaWQgbG9jaygpCi0gICAgewotICAgICAgICBORE5CT09TVF9BU1NFUlQoICFsb2NrZWRfICk7Ci0gICAgICAgIGxvY2tlZF8gPSB0cnVlOwotICAgIH0KLQotICAgIGlubGluZSB2b2lkIHVubG9jaygpCi0gICAgewotICAgICAgICBORE5CT09TVF9BU1NFUlQoIGxvY2tlZF8gKTsKLSAgICAgICAgbG9ja2VkXyA9IGZhbHNlOwotICAgIH0KLQotcHVibGljOgotCi0gICAgY2xhc3Mgc2NvcGVkX2xvY2sKLSAgICB7Ci0gICAgcHJpdmF0ZToKLQotICAgICAgICBzcGlubG9jayAmIHNwXzsKLQotICAgICAgICBzY29wZWRfbG9jayggc2NvcGVkX2xvY2sgY29uc3QgJiApOwotICAgICAgICBzY29wZWRfbG9jayAmIG9wZXJhdG9yPSggc2NvcGVkX2xvY2sgY29uc3QgJiApOwotCi0gICAgcHVibGljOgotCi0gICAgICAgIGV4cGxpY2l0IHNjb3BlZF9sb2NrKCBzcGlubG9jayAmIHNwICk6IHNwXyggc3AgKQotICAgICAgICB7Ci0gICAgICAgICAgICBzcC5sb2NrKCk7Ci0gICAgICAgIH0KLQotICAgICAgICB+c2NvcGVkX2xvY2soKQotICAgICAgICB7Ci0gICAgICAgICAgICBzcF8udW5sb2NrKCk7Ci0gICAgICAgIH0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9TUElOTE9DS19JTklUIHsgZmFsc2UgfQotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQSU5MT0NLX05UX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwaW5sb2NrX3Bvb2wuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwaW5sb2NrX3Bvb2wuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MDU0OWI3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcGlubG9ja19wb29sLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDkxICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUElOTE9DS19QT09MX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQSU5MT0NLX1BPT0xfSFBQX0lOQ0xVREVECi0KLS8vIE1TIGNvbXBhdGlibGUgY29tcGlsZXJzIHN1cHBvcnQgI3ByYWdtYSBvbmNlCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0vLwotLy8gIG5kbmJvb3N0L2RldGFpbC9zcGlubG9ja19wb29sLmhwcAotLy8KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDggUGV0ZXIgRGltb3YKLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyAgc3BpbmxvY2tfcG9vbDwwPiBpcyByZXNlcnZlZCBmb3IgYXRvbWljPD4sIHdoZW4vaWYgaXQgYXJyaXZlcwotLy8gIHNwaW5sb2NrX3Bvb2w8MT4gaXMgcmVzZXJ2ZWQgZm9yIHNoYXJlZF9wdHIgcmVmZXJlbmNlIGNvdW50cwotLy8gIHNwaW5sb2NrX3Bvb2w8Mj4gaXMgcmVzZXJ2ZWQgZm9yIHNoYXJlZF9wdHIgYXRvbWljIGFjY2VzcwotLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcGlubG9jay5ocHA+Ci0jaW5jbHVkZSA8Y3N0ZGRlZj4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLW5hbWVzcGFjZSBkZXRhaWwKLXsKLQotdGVtcGxhdGU8IGludCBJID4gY2xhc3Mgc3BpbmxvY2tfcG9vbAotewotcHJpdmF0ZToKLQotICAgIHN0YXRpYyBzcGlubG9jayBwb29sX1sgNDEgXTsKLQotcHVibGljOgotCi0gICAgc3RhdGljIHNwaW5sb2NrICYgc3BpbmxvY2tfZm9yKCB2b2lkIGNvbnN0ICogcHYgKQotICAgIHsKLSNpZiBkZWZpbmVkKF9fVk1TKSAmJiBfX0lOSVRJQUxfUE9JTlRFUl9TSVpFID09IDY0ICAKLSAgICAgICAgc3RkOjpzaXplX3QgaSA9IHJlaW50ZXJwcmV0X2Nhc3Q8IHVuc2lnbmVkIGxvbmcgbG9uZyA+KCBwdiApICUgNDE7Ci0jZWxzZSAgCi0gICAgICAgIHN0ZDo6c2l6ZV90IGkgPSByZWludGVycHJldF9jYXN0PCBzdGQ6OnNpemVfdCA+KCBwdiApICUgNDE7Ci0jZW5kaWYgIAotICAgICAgICByZXR1cm4gcG9vbF9bIGkgXTsKLSAgICB9Ci0KLSAgICBjbGFzcyBzY29wZWRfbG9jawotICAgIHsKLSAgICBwcml2YXRlOgotCi0gICAgICAgIHNwaW5sb2NrICYgc3BfOwotCi0gICAgICAgIHNjb3BlZF9sb2NrKCBzY29wZWRfbG9jayBjb25zdCAmICk7Ci0gICAgICAgIHNjb3BlZF9sb2NrICYgb3BlcmF0b3I9KCBzY29wZWRfbG9jayBjb25zdCAmICk7Ci0KLSAgICBwdWJsaWM6Ci0KLSAgICAgICAgZXhwbGljaXQgc2NvcGVkX2xvY2soIHZvaWQgY29uc3QgKiBwdiApOiBzcF8oIHNwaW5sb2NrX2ZvciggcHYgKSApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHNwXy5sb2NrKCk7Ci0gICAgICAgIH0KLQotICAgICAgICB+c2NvcGVkX2xvY2soKQotICAgICAgICB7Ci0gICAgICAgICAgICBzcF8udW5sb2NrKCk7Ci0gICAgICAgIH0KLSAgICB9OwotfTsKLQotdGVtcGxhdGU8IGludCBJID4gc3BpbmxvY2sgc3BpbmxvY2tfcG9vbDwgSSA+Ojpwb29sX1sgNDEgXSA9Ci17Ci0gICAgTkROQk9PU1RfREVUQUlMX1NQSU5MT0NLX0lOSVQsIE5ETkJPT1NUX0RFVEFJTF9TUElOTE9DS19JTklULCBORE5CT09TVF9ERVRBSUxfU1BJTkxPQ0tfSU5JVCwgTkROQk9PU1RfREVUQUlMX1NQSU5MT0NLX0lOSVQsIE5ETkJPT1NUX0RFVEFJTF9TUElOTE9DS19JTklULCAKLSAgICBORE5CT09TVF9ERVRBSUxfU1BJTkxPQ0tfSU5JVCwgTkROQk9PU1RfREVUQUlMX1NQSU5MT0NLX0lOSVQsIE5ETkJPT1NUX0RFVEFJTF9TUElOTE9DS19JTklULCBORE5CT09TVF9ERVRBSUxfU1BJTkxPQ0tfSU5JVCwgTkROQk9PU1RfREVUQUlMX1NQSU5MT0NLX0lOSVQsIAotICAgIE5ETkJPT1NUX0RFVEFJTF9TUElOTE9DS19JTklULCBORE5CT09TVF9ERVRBSUxfU1BJTkxPQ0tfSU5JVCwgTkROQk9PU1RfREVUQUlMX1NQSU5MT0NLX0lOSVQsIE5ETkJPT1NUX0RFVEFJTF9TUElOTE9DS19JTklULCBORE5CT09TVF9ERVRBSUxfU1BJTkxPQ0tfSU5JVCwgCi0gICAgTkROQk9PU1RfREVUQUlMX1NQSU5MT0NLX0lOSVQsIE5ETkJPT1NUX0RFVEFJTF9TUElOTE9DS19JTklULCBORE5CT09TVF9ERVRBSUxfU1BJTkxPQ0tfSU5JVCwgTkROQk9PU1RfREVUQUlMX1NQSU5MT0NLX0lOSVQsIE5ETkJPT1NUX0RFVEFJTF9TUElOTE9DS19JTklULCAKLSAgICBORE5CT09TVF9ERVRBSUxfU1BJTkxPQ0tfSU5JVCwgTkROQk9PU1RfREVUQUlMX1NQSU5MT0NLX0lOSVQsIE5ETkJPT1NUX0RFVEFJTF9TUElOTE9DS19JTklULCBORE5CT09TVF9ERVRBSUxfU1BJTkxPQ0tfSU5JVCwgTkROQk9PU1RfREVUQUlMX1NQSU5MT0NLX0lOSVQsIAotICAgIE5ETkJPT1NUX0RFVEFJTF9TUElOTE9DS19JTklULCBORE5CT09TVF9ERVRBSUxfU1BJTkxPQ0tfSU5JVCwgTkROQk9PU1RfREVUQUlMX1NQSU5MT0NLX0lOSVQsIE5ETkJPT1NUX0RFVEFJTF9TUElOTE9DS19JTklULCBORE5CT09TVF9ERVRBSUxfU1BJTkxPQ0tfSU5JVCwgCi0gICAgTkROQk9PU1RfREVUQUlMX1NQSU5MT0NLX0lOSVQsIE5ETkJPT1NUX0RFVEFJTF9TUElOTE9DS19JTklULCBORE5CT09TVF9ERVRBSUxfU1BJTkxPQ0tfSU5JVCwgTkROQk9PU1RfREVUQUlMX1NQSU5MT0NLX0lOSVQsIE5ETkJPT1NUX0RFVEFJTF9TUElOTE9DS19JTklULCAKLSAgICBORE5CT09TVF9ERVRBSUxfU1BJTkxPQ0tfSU5JVCwgTkROQk9PU1RfREVUQUlMX1NQSU5MT0NLX0lOSVQsIE5ETkJPT1NUX0RFVEFJTF9TUElOTE9DS19JTklULCBORE5CT09TVF9ERVRBSUxfU1BJTkxPQ0tfSU5JVCwgTkROQk9PU1RfREVUQUlMX1NQSU5MT0NLX0lOSVQsIAotICAgIE5ETkJPT1NUX0RFVEFJTF9TUElOTE9DS19JTklUCi19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BJTkxPQ0tfUE9PTF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcGlubG9ja19wdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BpbmxvY2tfcHQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMmYzMDAzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcGlubG9ja19wdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3OSArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BJTkxPQ0tfUFRfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BJTkxPQ0tfUFRfSFBQX0lOQ0xVREVECi0KLS8vIE1TIGNvbXBhdGlibGUgY29tcGlsZXJzIHN1cHBvcnQgI3ByYWdtYSBvbmNlCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0vLwotLy8gIENvcHlyaWdodCAoYykgMjAwOCBQZXRlciBEaW1vdgotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotI2luY2x1ZGUgPHB0aHJlYWQuaD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLW5hbWVzcGFjZSBkZXRhaWwKLXsKLQotY2xhc3Mgc3BpbmxvY2sKLXsKLXB1YmxpYzoKLQotICAgIHB0aHJlYWRfbXV0ZXhfdCB2XzsKLQotcHVibGljOgotCi0gICAgYm9vbCB0cnlfbG9jaygpCi0gICAgewotICAgICAgICByZXR1cm4gcHRocmVhZF9tdXRleF90cnlsb2NrKCAmdl8gKSA9PSAwOwotICAgIH0KLQotICAgIHZvaWQgbG9jaygpCi0gICAgewotICAgICAgICBwdGhyZWFkX211dGV4X2xvY2soICZ2XyApOwotICAgIH0KLQotICAgIHZvaWQgdW5sb2NrKCkKLSAgICB7Ci0gICAgICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCAmdl8gKTsKLSAgICB9Ci0KLXB1YmxpYzoKLQotICAgIGNsYXNzIHNjb3BlZF9sb2NrCi0gICAgewotICAgIHByaXZhdGU6Ci0KLSAgICAgICAgc3BpbmxvY2sgJiBzcF87Ci0KLSAgICAgICAgc2NvcGVkX2xvY2soIHNjb3BlZF9sb2NrIGNvbnN0ICYgKTsKLSAgICAgICAgc2NvcGVkX2xvY2sgJiBvcGVyYXRvcj0oIHNjb3BlZF9sb2NrIGNvbnN0ICYgKTsKLQotICAgIHB1YmxpYzoKLQotICAgICAgICBleHBsaWNpdCBzY29wZWRfbG9jayggc3BpbmxvY2sgJiBzcCApOiBzcF8oIHNwICkKLSAgICAgICAgewotICAgICAgICAgICAgc3AubG9jaygpOwotICAgICAgICB9Ci0KLSAgICAgICAgfnNjb3BlZF9sb2NrKCkKLSAgICAgICAgewotICAgICAgICAgICAgc3BfLnVubG9jaygpOwotICAgICAgICB9Ci0gICAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfU1BJTkxPQ0tfSU5JVCB7IFBUSFJFQURfTVVURVhfSU5JVElBTElaRVIgfQotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQSU5MT0NLX1BUX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwaW5sb2NrX3N5bmMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwaW5sb2NrX3N5bmMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MWYzMjFmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcGlubG9ja19zeW5jLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDg3ICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUElOTE9DS19TWU5DX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQSU5MT0NLX1NZTkNfSFBQX0lOQ0xVREVECi0KLS8vIE1TIGNvbXBhdGlibGUgY29tcGlsZXJzIHN1cHBvcnQgI3ByYWdtYSBvbmNlCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0vLwotLy8gIENvcHlyaWdodCAoYykgMjAwOCBQZXRlciBEaW1vdgotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwveWllbGRfay5ocHA+Ci0KLSNpZiBkZWZpbmVkKCBfX2lhNjRfXyApICYmIGRlZmluZWQoIF9fSU5URUxfQ09NUElMRVIgKQotIyBpbmNsdWRlIDxpYTY0aW50cmluLmg+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLW5hbWVzcGFjZSBkZXRhaWwKLXsKLQotY2xhc3Mgc3BpbmxvY2sKLXsKLXB1YmxpYzoKLQotICAgIGludCB2XzsKLQotcHVibGljOgotCi0gICAgYm9vbCB0cnlfbG9jaygpCi0gICAgewotICAgICAgICBpbnQgciA9IF9fc3luY19sb2NrX3Rlc3RfYW5kX3NldCggJnZfLCAxICk7Ci0gICAgICAgIHJldHVybiByID09IDA7Ci0gICAgfQotCi0gICAgdm9pZCBsb2NrKCkKLSAgICB7Ci0gICAgICAgIGZvciggdW5zaWduZWQgayA9IDA7ICF0cnlfbG9jaygpOyArK2sgKQotICAgICAgICB7Ci0gICAgICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjp5aWVsZCggayApOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdm9pZCB1bmxvY2soKQotICAgIHsKLSAgICAgICAgX19zeW5jX2xvY2tfcmVsZWFzZSggJnZfICk7Ci0gICAgfQotCi1wdWJsaWM6Ci0KLSAgICBjbGFzcyBzY29wZWRfbG9jawotICAgIHsKLSAgICBwcml2YXRlOgotCi0gICAgICAgIHNwaW5sb2NrICYgc3BfOwotCi0gICAgICAgIHNjb3BlZF9sb2NrKCBzY29wZWRfbG9jayBjb25zdCAmICk7Ci0gICAgICAgIHNjb3BlZF9sb2NrICYgb3BlcmF0b3I9KCBzY29wZWRfbG9jayBjb25zdCAmICk7Ci0KLSAgICBwdWJsaWM6Ci0KLSAgICAgICAgZXhwbGljaXQgc2NvcGVkX2xvY2soIHNwaW5sb2NrICYgc3AgKTogc3BfKCBzcCApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHNwLmxvY2soKTsKLSAgICAgICAgfQotCi0gICAgICAgIH5zY29wZWRfbG9jaygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHNwXy51bmxvY2soKTsKLSAgICAgICAgfQotICAgIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX1NQSU5MT0NLX0lOSVQgezB9Ci0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfU1BJTkxPQ0tfU1lOQ19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcGlubG9ja193MzIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwaW5sb2NrX3czMi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAyMWUzYjAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwaW5sb2NrX3czMi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTMgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQSU5MT0NLX1czMl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX0RFVEFJTF9TUElOTE9DS19XMzJfSFBQX0lOQ0xVREVECi0KLS8vIE1TIGNvbXBhdGlibGUgY29tcGlsZXJzIHN1cHBvcnQgI3ByYWdtYSBvbmNlCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0vLwotLy8gIENvcHlyaWdodCAoYykgMjAwOCBQZXRlciBEaW1vdgotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC9pbnRlcmxvY2tlZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC95aWVsZF9rLmhwcD4KLQotLy8gTkROQk9PU1RfQ09NUElMRVJfRkVOQ0UKLQotI2lmIGRlZmluZWQoX19JTlRFTF9DT01QSUxFUikKLQotI2RlZmluZSBORE5CT09TVF9DT01QSUxFUl9GRU5DRSBfX21lbW9yeV9iYXJyaWVyKCk7Ci0KLSNlbGlmIGRlZmluZWQoIF9NU0NfVkVSICkgJiYgX01TQ19WRVIgPj0gMTMxMAotCi1leHRlcm4gIkMiIHZvaWQgX1JlYWRXcml0ZUJhcnJpZXIoKTsKLSNwcmFnbWEgaW50cmluc2ljKCBfUmVhZFdyaXRlQmFycmllciApCi0KLSNkZWZpbmUgTkROQk9PU1RfQ09NUElMRVJfRkVOQ0UgX1JlYWRXcml0ZUJhcnJpZXIoKTsKLQotI2VsaWYgZGVmaW5lZChfX0dOVUNfXykKLQotI2RlZmluZSBORE5CT09TVF9DT01QSUxFUl9GRU5DRSBfX2FzbV9fIF9fdm9sYXRpbGVfXyggIiIgOiA6IDogIm1lbW9yeSIgKTsKLQotI2Vsc2UKLQotI2RlZmluZSBORE5CT09TVF9DT01QSUxFUl9GRU5DRQotCi0jZW5kaWYKLQotLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLW5hbWVzcGFjZSBkZXRhaWwKLXsKLQotY2xhc3Mgc3BpbmxvY2sKLXsKLXB1YmxpYzoKLQotICAgIGxvbmcgdl87Ci0KLXB1YmxpYzoKLQotICAgIGJvb2wgdHJ5X2xvY2soKQotICAgIHsKLSAgICAgICAgbG9uZyByID0gTkROQk9PU1RfSU5URVJMT0NLRURfRVhDSEFOR0UoICZ2XywgMSApOwotCi0gICAgICAgIE5ETkJPT1NUX0NPTVBJTEVSX0ZFTkNFCi0KLSAgICAgICAgcmV0dXJuIHIgPT0gMDsKLSAgICB9Ci0KLSAgICB2b2lkIGxvY2soKQotICAgIHsKLSAgICAgICAgZm9yKCB1bnNpZ25lZCBrID0gMDsgIXRyeV9sb2NrKCk7ICsrayApCi0gICAgICAgIHsKLSAgICAgICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnlpZWxkKCBrICk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB2b2lkIHVubG9jaygpCi0gICAgewotICAgICAgICBORE5CT09TVF9DT01QSUxFUl9GRU5DRQotICAgICAgICAqY29uc3RfY2FzdDwgbG9uZyB2b2xhdGlsZSogPiggJnZfICkgPSAwOwotICAgIH0KLQotcHVibGljOgotCi0gICAgY2xhc3Mgc2NvcGVkX2xvY2sKLSAgICB7Ci0gICAgcHJpdmF0ZToKLQotICAgICAgICBzcGlubG9jayAmIHNwXzsKLQotICAgICAgICBzY29wZWRfbG9jayggc2NvcGVkX2xvY2sgY29uc3QgJiApOwotICAgICAgICBzY29wZWRfbG9jayAmIG9wZXJhdG9yPSggc2NvcGVkX2xvY2sgY29uc3QgJiApOwotCi0gICAgcHVibGljOgotCi0gICAgICAgIGV4cGxpY2l0IHNjb3BlZF9sb2NrKCBzcGlubG9jayAmIHNwICk6IHNwXyggc3AgKQotICAgICAgICB7Ci0gICAgICAgICAgICBzcC5sb2NrKCk7Ci0gICAgICAgIH0KLQotICAgICAgICB+c2NvcGVkX2xvY2soKQotICAgICAgICB7Ci0gICAgICAgICAgICBzcF8udW5sb2NrKCk7Ci0gICAgICAgIH0KLSAgICB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9TUElOTE9DS19JTklUIHswfQotCi0jZW5kaWYgLy8gI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1NQSU5MT0NLX1czMl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC95aWVsZF9rLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC95aWVsZF9rLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmZjZDc5MC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwveWllbGRfay5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDkgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfREVUQUlMX1lJRUxEX0tfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfWUlFTERfS19IUFBfSU5DTFVERUQKLQotLy8gTVMgY29tcGF0aWJsZSBjb21waWxlcnMgc3VwcG9ydCAjcHJhZ21hIG9uY2UKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLS8vCi0vLyAgeWllbGRfay5ocHAKLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDA4IFBldGVyIERpbW92Ci0vLwotLy8gIHZvaWQgeWllbGQoIHVuc2lnbmVkIGsgKTsKLS8vCi0vLyAgVHlwaWNhbCB1c2U6Ci0vLwotLy8gIGZvciggdW5zaWduZWQgayA9IDA7ICF0cnlfbG9jaygpOyArK2sgKSB5aWVsZCggayApOwotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0Ci0vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotLy8gTkROQk9PU1RfU01UX1BBVVNFCi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiBfTVNDX1ZFUiA+PSAxMzEwICYmICggZGVmaW5lZChfTV9JWDg2KSB8fCBkZWZpbmVkKF9NX1g2NCkgKQotCi1leHRlcm4gIkMiIHZvaWQgX21tX3BhdXNlKCk7Ci0jcHJhZ21hIGludHJpbnNpYyggX21tX3BhdXNlICkKLQotI2RlZmluZSBORE5CT09TVF9TTVRfUEFVU0UgX21tX3BhdXNlKCk7Ci0KLSNlbGlmIGRlZmluZWQoX19HTlVDX18pICYmICggZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSApCi0KLSNkZWZpbmUgTkROQk9PU1RfU01UX1BBVVNFIF9fYXNtX18gX192b2xhdGlsZV9fKCAicmVwOyBub3AiIDogOiA6ICJtZW1vcnkiICk7Ci0KLSNlbmRpZgotCi0vLwotCi0jaWYgZGVmaW5lZCggV0lOMzIgKSB8fCBkZWZpbmVkKCBfV0lOMzIgKSB8fCBkZWZpbmVkKCBfX1dJTjMyX18gKSB8fCBkZWZpbmVkKCBfX0NZR1dJTl9fICkKLQotI2lmIGRlZmluZWQoIE5ETkJPT1NUX1VTRV9XSU5ET1dTX0ggKQotIyBpbmNsdWRlIDx3aW5kb3dzLmg+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLW5hbWVzcGFjZSBkZXRhaWwKLXsKLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9VU0VfV0lORE9XU19IICkKLSAgZXh0ZXJuICJDIiB2b2lkIF9fc3RkY2FsbCBTbGVlcCggdW5zaWduZWQgbG9uZyBtcyApOwotI2VuZGlmCi0KLWlubGluZSB2b2lkIHlpZWxkKCB1bnNpZ25lZCBrICkKLXsKLSAgICBpZiggayA8IDQgKQotICAgIHsKLSAgICB9Ci0jaWYgZGVmaW5lZCggTkROQk9PU1RfU01UX1BBVVNFICkKLSAgICBlbHNlIGlmKCBrIDwgMTYgKQotICAgIHsKLSAgICAgICAgTkROQk9PU1RfU01UX1BBVVNFCi0gICAgfQotI2VuZGlmCi0gICAgZWxzZSBpZiggayA8IDMyICkKLSAgICB7Ci0gICAgICAgIFNsZWVwKCAwICk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIFNsZWVwKCAxICk7Ci0gICAgfQotfQotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VsaWYgZGVmaW5lZCggTkROQk9PU1RfSEFTX1BUSFJFQURTICkKLQotI2luY2x1ZGUgPHNjaGVkLmg+Ci0jaW5jbHVkZSA8dGltZS5oPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotbmFtZXNwYWNlIGRldGFpbAotewotCi1pbmxpbmUgdm9pZCB5aWVsZCggdW5zaWduZWQgayApCi17Ci0gICAgaWYoIGsgPCA0ICkKLSAgICB7Ci0gICAgfQotI2lmIGRlZmluZWQoIE5ETkJPT1NUX1NNVF9QQVVTRSApCi0gICAgZWxzZSBpZiggayA8IDE2ICkKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX1NNVF9QQVVTRQotICAgIH0KLSNlbmRpZgotICAgIGVsc2UgaWYoIGsgPCAzMiB8fCBrICYgMSApCi0gICAgewotICAgICAgICBzY2hlZF95aWVsZCgpOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICAvLyBnKysgLVdleHRyYSB3YXJucyBvbiB7fSBvciB7MH0KLSAgICAgICAgc3RydWN0IHRpbWVzcGVjIHJxdHAgPSB7IDAsIDAgfTsKLQotICAgICAgICAvLyBQT1NJWCBzYXlzIHRoYXQgdGltZXNwZWMgaGFzIHR2X3NlYyBhbmQgdHZfbnNlYwotICAgICAgICAvLyBCdXQgaXQgZG9lc24ndCBndWFyYW50ZWUgb3JkZXIgb3IgcGxhY2VtZW50Ci0KLSAgICAgICAgcnF0cC50dl9zZWMgPSAwOwotICAgICAgICBycXRwLnR2X25zZWMgPSAxMDAwOwotCi0gICAgICAgIG5hbm9zbGVlcCggJnJxdHAsIDAgKTsKLSAgICB9Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZWxzZQotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotbmFtZXNwYWNlIGRldGFpbAotewotCi1pbmxpbmUgdm9pZCB5aWVsZCggdW5zaWduZWQgKQotewotfQotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9ERVRBSUxfWUlFTERfS19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL21ha2Vfc2hhcmVkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL21ha2Vfc2hhcmVkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTBhOTE5Ny4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9tYWtlX3NoYXJlZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9NQUtFX1NIQVJFRF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX01BS0VfU0hBUkVEX0hQUF9JTkNMVURFRAotCi0vLyAgbWFrZV9zaGFyZWQuaHBwCi0vLwotLy8gIENvcHlyaWdodCAoYykgMjAwNywgMjAwOCwgMjAxMiBQZXRlciBEaW1vdgotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0Ci0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3NtYXJ0X3B0ci9tYWtlX3NoYXJlZC5odG1sCi0vLyAgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvbWFrZV9zaGFyZWRfb2JqZWN0LmhwcD4KLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OICkgJiYgIWRlZmluZWQoIE5ETkJPT1NUX05PX1NGSU5BRSApCi0jIGluY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9tYWtlX3NoYXJlZF9hcnJheS5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9hbGxvY2F0ZV9zaGFyZWRfYXJyYXkuaHBwPgotI2VuZGlmCi0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9NQUtFX1NIQVJFRF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL21ha2Vfc2hhcmVkX2FycmF5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL21ha2Vfc2hhcmVkX2FycmF5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjM5OThlYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9tYWtlX3NoYXJlZF9hcnJheS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNDcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoYykgMjAxMiBHbGVuIEpvc2VwaCBGZXJuYW5kZXMKLSAqIGdsZW5mZSBhdCBsaXZlIGRvdCBjb20KLSAqCi0gKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLSAqIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dAotICogb3IgY29weSBhdCBodHRwOi8vYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLSAqLwotI2lmbmRlZiBORE5CT09TVF9TTUFSVF9QVFJfTUFLRV9TSEFSRURfQVJSQVlfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1NNQVJUX1BUUl9NQUtFX1NIQVJFRF9BUlJBWV9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9zaGFyZWRfcHRyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL2FycmF5X2RlbGV0ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvYXJyYXlfdHJhaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL21ha2VfYXJyYXlfaGVscGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2lmX2FycmF5LmhwcD4KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9IRFJfSU5JVElBTElaRVJfTElTVCkKLSNpbmNsdWRlIDxpbml0aWFsaXplcl9saXN0PgotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfYXJyYXk8VD46OnR5cGUKLSAgICBtYWtlX3NoYXJlZChzdGQ6OnNpemVfdCBzaXplKSB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfaW5uZXI8VD46OnR5cGUgVDE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfYmFzZTxUMT46OnR5cGUgVDI7Ci0gICAgICAgIFQxKiBwMSA9IDA7Ci0gICAgICAgIFQyKiBwMiA9IDA7Ci0gICAgICAgIHN0ZDo6c2l6ZV90IG4xID0gc2l6ZSAqIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X3RvdGFsPFQxPjo6c2l6ZTsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6bWFrZV9hcnJheV9oZWxwZXI8VDJbXT4gYTEobjEsICZwMik7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2RlbGV0ZXI8VDJbXT4gZDEobjEpOwotICAgICAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjxUPiBzMShwMSwgZDEsIGExKTsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9kZWxldGVyPFQyW10+KiBEMjsKLSAgICAgICAgcDEgPSByZWludGVycHJldF9jYXN0PFQxKj4ocDIpOwotICAgICAgICBEMiBkMiA9IHN0YXRpY19jYXN0PEQyPihzMS5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpKTsKLSAgICAgICAgZDItPmluaXQocDIpOwotICAgICAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8VD4oczEsIHAxKTsKLSAgICB9Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfVEVNUExBVEVTKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUykKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9hcnJheTxUPjo6dHlwZQotICAgIG1ha2Vfc2hhcmVkKHN0ZDo6c2l6ZV90IHNpemUsIEFyZ3MmJi4uLiBhcmdzKSB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfaW5uZXI8VD46OnR5cGUgVDE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfYmFzZTxUMT46OnR5cGUgVDI7Ci0gICAgICAgIFQxKiBwMSA9IDA7Ci0gICAgICAgIFQyKiBwMiA9IDA7Ci0gICAgICAgIHN0ZDo6c2l6ZV90IG4xID0gc2l6ZSAqIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X3RvdGFsPFQxPjo6c2l6ZTsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6bWFrZV9hcnJheV9oZWxwZXI8VDJbXT4gYTEobjEsICZwMik7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2RlbGV0ZXI8VDJbXT4gZDEobjEpOwotICAgICAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjxUPiBzMShwMSwgZDEsIGExKTsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9kZWxldGVyPFQyW10+KiBEMjsKLSAgICAgICAgcDEgPSByZWludGVycHJldF9jYXN0PFQxKj4ocDIpOwotICAgICAgICBEMiBkMiA9IHN0YXRpY19jYXN0PEQyPihzMS5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpKTsKLSAgICAgICAgZDItPmluaXQocDIsIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QXJncz4oYXJncykuLi4pOwotICAgICAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8VD4oczEsIHAxKTsKLSAgICB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfc2l6ZV9hcnJheTxUPjo6dHlwZQotICAgIG1ha2Vfc2hhcmVkKEFyZ3MmJi4uLiBhcmdzKSB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfaW5uZXI8VD46OnR5cGUgVDE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfYmFzZTxUMT46OnR5cGUgVDI7Ci0gICAgICAgIGVudW0gewotICAgICAgICAgICAgTiA9IG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X3RvdGFsPFQ+OjpzaXplCi0gICAgICAgIH07Ci0gICAgICAgIFQxKiBwMSA9IDA7Ci0gICAgICAgIFQyKiBwMiA9IDA7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6Om1ha2VfYXJyYXlfaGVscGVyPFQyW05dPiBhMSgmcDIpOwotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9kZWxldGVyPFQyW05dPiBkMTsKLSAgICAgICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8VD4gczEocDEsIGQxLCBhMSk7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfZGVsZXRlcjxUMltOXT4qIEQyOwotICAgICAgICBwMSA9IHJlaW50ZXJwcmV0X2Nhc3Q8VDEqPihwMik7Ci0gICAgICAgIEQyIGQyID0gc3RhdGljX2Nhc3Q8RDI+KHMxLl9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkpOwotICAgICAgICBkMi0+aW5pdChwMiwgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBcmdzPihhcmdzKS4uLik7Ci0gICAgICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjxUPihzMSwgcDEpOwotICAgIH0KLSNlbmRpZgotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1VOSUZJRURfSU5JVElBTElaQVRJT05fU1lOVEFYKQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX3NpemVfYXJyYXk8VD46OnR5cGUKLSAgICBtYWtlX3NoYXJlZChjb25zdCBUJiBsaXN0KSB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfaW5uZXI8VD46OnR5cGUgVDE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfYmFzZTxUMT46OnR5cGUgVDI7Ci0gICAgICAgIHR5cGVkZWYgY29uc3QgVDIgVDM7Ci0gICAgICAgIGVudW0gewotICAgICAgICAgICAgTiA9IG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X3RvdGFsPFQ+OjpzaXplCi0gICAgICAgIH07Ci0gICAgICAgIFQxKiBwMSA9IDA7Ci0gICAgICAgIFQyKiBwMiA9IDA7Ci0gICAgICAgIFQzKiBwMyA9IDA7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6Om1ha2VfYXJyYXlfaGVscGVyPFQyW05dPiBhMSgmcDIpOwotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9kZWxldGVyPFQyW05dPiBkMTsKLSAgICAgICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8VD4gczEocDEsIGQxLCBhMSk7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfZGVsZXRlcjxUMltOXT4qIEQyOwotICAgICAgICBwMyA9IHJlaW50ZXJwcmV0X2Nhc3Q8VDMqPihsaXN0KTsKLSAgICAgICAgcDEgPSByZWludGVycHJldF9jYXN0PFQxKj4ocDIpOwotICAgICAgICBEMiBkMiA9IHN0YXRpY19jYXN0PEQyPihzMS5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpKTsKLSAgICAgICAgZDItPmluaXRfbGlzdChwMiwgcDMpOwotICAgICAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8VD4oczEsIHAxKTsKLSAgICB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBpbmxpbmUgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfYXJyYXk8VD46OnR5cGUKLSAgICBtYWtlX3NoYXJlZChzdGQ6OnNpemVfdCBzaXplLAotICAgICAgICBjb25zdCB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9pbm5lcjxUPjo6dHlwZSYgbGlzdCkgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2lubmVyPFQ+Ojp0eXBlIFQxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2Jhc2U8VDE+Ojp0eXBlIFQyOwotICAgICAgICB0eXBlZGVmIGNvbnN0IFQyIFQzOwotICAgICAgICBlbnVtIHsKLSAgICAgICAgICAgIE0gPSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV90b3RhbDxUMT46OnNpemUKLSAgICAgICAgfTsKLSAgICAgICAgVDEqIHAxID0gMDsKLSAgICAgICAgVDIqIHAyID0gMDsKLSAgICAgICAgVDMqIHAzID0gMDsKLSAgICAgICAgc3RkOjpzaXplX3QgbjEgPSBNICogc2l6ZTsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6bWFrZV9hcnJheV9oZWxwZXI8VDJbXT4gYTEobjEsICZwMik7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2RlbGV0ZXI8VDJbXT4gZDEobjEpOwotICAgICAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjxUPiBzMShwMSwgZDEsIGExKTsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9kZWxldGVyPFQyW10+KiBEMjsKLSAgICAgICAgcDMgPSByZWludGVycHJldF9jYXN0PFQzKj4obGlzdCk7Ci0gICAgICAgIHAxID0gcmVpbnRlcnByZXRfY2FzdDxUMSo+KHAyKTsKLSAgICAgICAgRDIgZDIgPSBzdGF0aWNfY2FzdDxEMj4oczEuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSk7Ci0gICAgICAgIGQyLT50ZW1wbGF0ZSBpbml0X2xpc3Q8TT4ocDIsIHAzKTsKLSAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPFQ+KHMxLCBwMSk7Ci0gICAgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX3NpemVfYXJyYXk8VD46OnR5cGUKLSAgICBtYWtlX3NoYXJlZChjb25zdCB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9pbm5lcjxUPjo6dHlwZSYgbGlzdCkgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2lubmVyPFQ+Ojp0eXBlIFQxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2Jhc2U8VDE+Ojp0eXBlIFQyOwotICAgICAgICB0eXBlZGVmIGNvbnN0IFQyIFQzOwotICAgICAgICBlbnVtIHsKLSAgICAgICAgICAgIE0gPSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV90b3RhbDxUMT46OnNpemUsCi0gICAgICAgICAgICBOID0gbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfdG90YWw8VD46OnNpemUKLSAgICAgICAgfTsKLSAgICAgICAgVDEqIHAxID0gMDsKLSAgICAgICAgVDIqIHAyID0gMDsKLSAgICAgICAgVDMqIHAzID0gMDsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6bWFrZV9hcnJheV9oZWxwZXI8VDJbTl0+IGExKCZwMik7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2RlbGV0ZXI8VDJbTl0+IGQxOwotICAgICAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjxUPiBzMShwMSwgZDEsIGExKTsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9kZWxldGVyPFQyW05dPiogRDI7Ci0gICAgICAgIHAzID0gcmVpbnRlcnByZXRfY2FzdDxUMyo+KGxpc3QpOwotICAgICAgICBwMSA9IHJlaW50ZXJwcmV0X2Nhc3Q8VDEqPihwMik7Ci0gICAgICAgIEQyIGQyID0gc3RhdGljX2Nhc3Q8RDI+KHMxLl9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkpOwotICAgICAgICBkMi0+dGVtcGxhdGUgaW5pdF9saXN0PE0+KHAyLCBwMyk7Ci0gICAgICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjxUPihzMSwgcDEpOwotICAgIH0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9IRFJfSU5JVElBTElaRVJfTElTVCkKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9hcnJheTxUPjo6dHlwZQotICAgIG1ha2Vfc2hhcmVkKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDx0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9pbm5lcjxUPjo6dHlwZT4gbGlzdCkgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2lubmVyPFQ+Ojp0eXBlIFQxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2Jhc2U8VDE+Ojp0eXBlIFQyOwotICAgICAgICB0eXBlZGVmIGNvbnN0IFQyIFQzOwotICAgICAgICBUMSogcDEgPSAwOwotICAgICAgICBUMiogcDIgPSAwOwotICAgICAgICBUMyogcDMgPSAwOwotICAgICAgICBzdGQ6OnNpemVfdCBuMSA9IGxpc3Quc2l6ZSgpICogbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfdG90YWw8VDE+OjpzaXplOwotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjptYWtlX2FycmF5X2hlbHBlcjxUMltdPiBhMShuMSwgJnAyKTsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfZGVsZXRlcjxUMltdPiBkMShuMSk7Ci0gICAgICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPFQ+IHMxKHAxLCBkMSwgYTEpOwotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2RlbGV0ZXI8VDJbXT4qIEQyOwotICAgICAgICBwMyA9IHJlaW50ZXJwcmV0X2Nhc3Q8VDMqPihsaXN0LmJlZ2luKCkpOwotICAgICAgICBwMSA9IHJlaW50ZXJwcmV0X2Nhc3Q8VDEqPihwMik7Ci0gICAgICAgIEQyIGQyID0gc3RhdGljX2Nhc3Q8RDI+KHMxLl9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkpOwotICAgICAgICBkMi0+aW5pdF9saXN0KHAyLCBwMyk7Ci0gICAgICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjxUPihzMSwgcDEpOwotICAgIH0KLSNlbmRpZgotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTKQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgaW5saW5lIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX2FycmF5PFQ+Ojp0eXBlCi0gICAgbWFrZV9zaGFyZWQoc3RkOjpzaXplX3Qgc2l6ZSwKLSAgICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfYmFzZTxUPjo6dHlwZSYmIHZhbHVlKSB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfaW5uZXI8VD46OnR5cGUgVDE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfYmFzZTxUMT46OnR5cGUgVDI7Ci0gICAgICAgIFQxKiBwMSA9IDA7Ci0gICAgICAgIFQyKiBwMiA9IDA7Ci0gICAgICAgIHN0ZDo6c2l6ZV90IG4xID0gc2l6ZSAqIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X3RvdGFsPFQxPjo6c2l6ZTsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6bWFrZV9hcnJheV9oZWxwZXI8VDJbXT4gYTEobjEsICZwMik7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2RlbGV0ZXI8VDJbXT4gZDEobjEpOwotICAgICAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjxUPiBzMShwMSwgZDEsIGExKTsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9kZWxldGVyPFQyW10+KiBEMjsKLSAgICAgICAgcDEgPSByZWludGVycHJldF9jYXN0PFQxKj4ocDIpOwotICAgICAgICBEMiBkMiA9IHN0YXRpY19jYXN0PEQyPihzMS5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpKTsKLSAgICAgICAgZDItPmluaXQocDIsIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8VDI+KHZhbHVlKSk7Ci0gICAgICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjxUPihzMSwgcDEpOwotICAgIH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9zaXplX2FycmF5PFQ+Ojp0eXBlCi0gICAgbWFrZV9zaGFyZWQodHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfYmFzZTxUPjo6dHlwZSYmIHZhbHVlKSB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfaW5uZXI8VD46OnR5cGUgVDE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfYmFzZTxUMT46OnR5cGUgVDI7Ci0gICAgICAgIGVudW0gewotICAgICAgICAgICAgTiA9IG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X3RvdGFsPFQ+OjpzaXplCi0gICAgICAgIH07Ci0gICAgICAgIFQxKiBwMSA9IDA7Ci0gICAgICAgIFQyKiBwMiA9IDA7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6Om1ha2VfYXJyYXlfaGVscGVyPFQyW05dPiBhMSgmcDIpOwotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9kZWxldGVyPFQyW05dPiBkMTsKLSAgICAgICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8VD4gczEocDEsIGQxLCBhMSk7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfZGVsZXRlcjxUMltOXT4qIEQyOwotICAgICAgICBwMSA9IHJlaW50ZXJwcmV0X2Nhc3Q8VDEqPihwMik7Ci0gICAgICAgIEQyIGQyID0gc3RhdGljX2Nhc3Q8RDI+KHMxLl9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkpOwotICAgICAgICBkMi0+aW5pdChwMiwgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxUMj4odmFsdWUpKTsKLSAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPFQ+KHMxLCBwMSk7Ci0gICAgfQotI2VuZGlmCi0jZW5kaWYKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9hcnJheTxUPjo6dHlwZQotICAgIG1ha2Vfc2hhcmVkX25vaW5pdChzdGQ6OnNpemVfdCBzaXplKSB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfaW5uZXI8VD46OnR5cGUgVDE7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfYmFzZTxUMT46OnR5cGUgVDI7Ci0gICAgICAgIFQxKiBwMSA9IDA7Ci0gICAgICAgIFQyKiBwMiA9IDA7Ci0gICAgICAgIHN0ZDo6c2l6ZV90IG4xID0gc2l6ZSAqIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X3RvdGFsPFQxPjo6c2l6ZTsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6bWFrZV9hcnJheV9oZWxwZXI8VDJbXT4gYTEobjEsICZwMik7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2RlbGV0ZXI8VDJbXT4gZDEobjEpOwotICAgICAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjxUPiBzMShwMSwgZDEsIGExKTsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV9kZWxldGVyPFQyW10+KiBEMjsKLSAgICAgICAgcDEgPSByZWludGVycHJldF9jYXN0PFQxKj4ocDIpOwotICAgICAgICBEMiBkMiA9IHN0YXRpY19jYXN0PEQyPihzMS5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpKTsKLSAgICAgICAgZDItPm5vaW5pdChwMik7Ci0gICAgICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjxUPihzMSwgcDEpOwotICAgIH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIGlubGluZSB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9zaXplX2FycmF5PFQ+Ojp0eXBlCi0gICAgbWFrZV9zaGFyZWRfbm9pbml0KCkgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2lubmVyPFQ+Ojp0eXBlIFQxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2Jhc2U8VDE+Ojp0eXBlIFQyOwotICAgICAgICBlbnVtIHsKLSAgICAgICAgICAgIE4gPSBuZG5ib29zdDo6ZGV0YWlsOjphcnJheV90b3RhbDxUPjo6c2l6ZQotICAgICAgICB9OwotICAgICAgICBUMSogcDEgPSAwOwotICAgICAgICBUMiogcDIgPSAwOwotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjptYWtlX2FycmF5X2hlbHBlcjxUMltOXT4gYTEoJnAyKTsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6YXJyYXlfZGVsZXRlcjxUMltOXT4gZDE7Ci0gICAgICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPFQ+IHMxKHAxLCBkMSwgYTEpOwotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0OjpkZXRhaWw6OmFycmF5X2RlbGV0ZXI8VDJbTl0+KiBEMjsKLSAgICAgICAgcDEgPSByZWludGVycHJldF9jYXN0PFQxKj4ocDIpOwotICAgICAgICBEMiBkMiA9IHN0YXRpY19jYXN0PEQyPihzMS5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpKTsKLSAgICAgICAgZDItPm5vaW5pdChwMik7Ci0gICAgICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjxUPihzMSwgcDEpOwotICAgIH0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9tYWtlX3NoYXJlZF9vYmplY3QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvbWFrZV9zaGFyZWRfb2JqZWN0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTcwNGQ1Mi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9tYWtlX3NoYXJlZF9vYmplY3QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTAzMiArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9NQUtFX1NIQVJFRF9PQkpFQ1RfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1NNQVJUX1BUUl9NQUtFX1NIQVJFRF9PQkpFQ1RfSFBQX0lOQ0xVREVECi0KLS8vICBtYWtlX3NoYXJlZF9vYmplY3QuaHBwCi0vLwotLy8gIENvcHlyaWdodCAoYykgMjAwNywgMjAwOCwgMjAxMiBQZXRlciBEaW1vdgotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0Ci0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3NtYXJ0X3B0ci9tYWtlX3NoYXJlZC5odG1sCi0vLyAgZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9zaGFyZWRfcHRyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX2ZvcndhcmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3R5cGVfd2l0aF9hbGlnbm1lbnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2FsaWdubWVudF9vZi5ocHA+Ci0jaW5jbHVkZSA8Y3N0ZGRlZj4KLSNpbmNsdWRlIDxuZXc+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi1uYW1lc3BhY2UgZGV0YWlsCi17Ci0KLXRlbXBsYXRlPCBzdGQ6OnNpemVfdCBOLCBzdGQ6OnNpemVfdCBBID4gc3RydWN0IHNwX2FsaWduZWRfc3RvcmFnZQotewotICAgIHVuaW9uIHR5cGUKLSAgICB7Ci0gICAgICAgIGNoYXIgZGF0YV9bIE4gXTsKLSAgICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OnR5cGVfd2l0aF9hbGlnbm1lbnQ8IEEgPjo6dHlwZSBhbGlnbl87Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPCBjbGFzcyBUID4gY2xhc3Mgc3BfbXNfZGVsZXRlcgotewotcHJpdmF0ZToKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgc3BfYWxpZ25lZF9zdG9yYWdlPCBzaXplb2YoIFQgKSwgOjpuZG5ib29zdDo6YWxpZ25tZW50X29mPCBUID46OnZhbHVlID46OnR5cGUgc3RvcmFnZV90eXBlOwotCi0gICAgYm9vbCBpbml0aWFsaXplZF87Ci0gICAgc3RvcmFnZV90eXBlIHN0b3JhZ2VfOwotCi1wcml2YXRlOgotCi0gICAgdm9pZCBkZXN0cm95KCkKLSAgICB7Ci0gICAgICAgIGlmKCBpbml0aWFsaXplZF8gKQotICAgICAgICB7Ci0jaWYgZGVmaW5lZCggX19HTlVDX18gKQotCi0gICAgICAgICAgICAvLyBmaXhlcyBpbmNvcnJlY3QgYWxpYXNpbmcgd2FybmluZwotICAgICAgICAgICAgVCAqIHAgPSByZWludGVycHJldF9jYXN0PCBUKiA+KCBzdG9yYWdlXy5kYXRhXyApOwotICAgICAgICAgICAgcC0+flQoKTsKLQotI2Vsc2UKLQotICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDwgVCogPiggc3RvcmFnZV8uZGF0YV8gKS0+flQoKTsKLQotI2VuZGlmCi0KLSAgICAgICAgICAgIGluaXRpYWxpemVkXyA9IGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotCi1wdWJsaWM6Ci0KLSAgICBzcF9tc19kZWxldGVyKCkgTkROQk9PU1RfTk9FWENFUFQgOiBpbml0aWFsaXplZF8oIGZhbHNlICkKLSAgICB7Ci0gICAgfQotCi0gICAgLy8gb3B0aW1pemF0aW9uOiBkbyBub3QgY29weSBzdG9yYWdlXwotICAgIHNwX21zX2RlbGV0ZXIoIHNwX21zX2RlbGV0ZXIgY29uc3QgJiApIE5ETkJPT1NUX05PRVhDRVBUIDogaW5pdGlhbGl6ZWRfKCBmYWxzZSApCi0gICAgewotICAgIH0KLQotICAgIH5zcF9tc19kZWxldGVyKCkKLSAgICB7Ci0gICAgICAgIGRlc3Ryb3koKTsKLSAgICB9Ci0KLSAgICB2b2lkIG9wZXJhdG9yKCkoIFQgKiApCi0gICAgewotICAgICAgICBkZXN0cm95KCk7Ci0gICAgfQotCi0gICAgc3RhdGljIHZvaWQgb3BlcmF0b3JfZm4oIFQqICkgLy8gb3BlcmF0b3IoKSBjYW4ndCBiZSBzdGF0aWMKLSAgICB7Ci0gICAgfQotCi0gICAgdm9pZCAqIGFkZHJlc3MoKSBORE5CT09TVF9OT0VYQ0VQVAotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0b3JhZ2VfLmRhdGFfOwotICAgIH0KLQotICAgIHZvaWQgc2V0X2luaXRpYWxpemVkKCkgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIGluaXRpYWxpemVkXyA9IHRydWU7Ci0gICAgfQotfTsKLQotdGVtcGxhdGU8IGNsYXNzIFQgPiBzdHJ1Y3Qgc3BfaWZfbm90X2FycmF5Ci17Ci0gICAgdHlwZWRlZiBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+IHR5cGU7Ci19OwotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04gKQotCi10ZW1wbGF0ZTwgY2xhc3MgVCA+IHN0cnVjdCBzcF9pZl9ub3RfYXJyYXk8IFRbXSA+Ci17Ci19OwotCi0jaWYgIWRlZmluZWQoIF9fQk9STEFORENfXyApIHx8ICFORE5CT09TVF9XT1JLQVJPVU5EKCBfX0JPUkxBTkRDX18sIDwgMHg2MDAgKQotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgc3RkOjpzaXplX3QgTiA+IHN0cnVjdCBzcF9pZl9ub3RfYXJyYXk8IFRbTl0gPgotewotfTsKLQotI2VuZGlmCi0KLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19GVU5DVElPTl9URU1QTEFURV9PUkRFUklORyApCi0jIGRlZmluZSBORE5CT09TVF9TUF9NU0QoIFQgKSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pbnBsYWNlX3RhZzwgbmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ID4oKQotI2Vsc2UKLSMgZGVmaW5lIE5ETkJPT1NUX1NQX01TRCggVCApIG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPigpCi0jZW5kaWYKLQotLy8gWmVyby1hcmd1bWVudCB2ZXJzaW9ucwotLy8KLS8vIFVzZWQgZXZlbiB3aGVuIHZhcmlhZGljIHRlbXBsYXRlcyBhcmUgYXZhaWxhYmxlIGJlY2F1c2Ugb2YgdGhlIG5ldyBUKCkgdnMgbmV3IFQgaXNzdWUKLQotdGVtcGxhdGU8IGNsYXNzIFQgPiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9ub3RfYXJyYXk8IFQgPjo6dHlwZSBtYWtlX3NoYXJlZCgpCi17Ci0gICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiBwdCggc3RhdGljX2Nhc3Q8IFQqID4oIDAgKSwgTkROQk9PU1RfU1BfTVNEKCBUICkgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqIHBkID0gc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICo+KCBwdC5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpICk7Ci0KLSAgICB2b2lkICogcHYgPSBwZC0+YWRkcmVzcygpOwotCi0gICAgOjpuZXcoIHB2ICkgVCgpOwotICAgIHBkLT5zZXRfaW5pdGlhbGl6ZWQoKTsKLQotICAgIFQgKiBwdDIgPSBzdGF0aWNfY2FzdDwgVCogPiggcHYgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VuYWJsZV9zaGFyZWRfZnJvbV90aGlzKCAmcHQsIHB0MiwgcHQyICk7Ci0gICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4oIHB0LCBwdDIgKTsKLX0KLQotdGVtcGxhdGU8IGNsYXNzIFQgPiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9ub3RfYXJyYXk8IFQgPjo6dHlwZSBtYWtlX3NoYXJlZF9ub2luaXQoKQotewotICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4gcHQoIHN0YXRpY19jYXN0PCBUKiA+KCAwICksIE5ETkJPT1NUX1NQX01TRCggVCApICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKiBwZCA9IHN0YXRpY19jYXN0PG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqPiggcHQuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSApOwotCi0gICAgdm9pZCAqIHB2ID0gcGQtPmFkZHJlc3MoKTsKLQotICAgIDo6bmV3KCBwdiApIFQ7Ci0gICAgcGQtPnNldF9pbml0aWFsaXplZCgpOwotCi0gICAgVCAqIHB0MiA9IHN0YXRpY19jYXN0PCBUKiA+KCBwdiApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMoICZwdCwgcHQyLCBwdDIgKTsKLSAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiggcHQsIHB0MiApOwotfQotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgY2xhc3MgQSA+IHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX25vdF9hcnJheTwgVCA+Ojp0eXBlIGFsbG9jYXRlX3NoYXJlZCggQSBjb25zdCAmIGEgKQotewotICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4gcHQoIHN0YXRpY19jYXN0PCBUKiA+KCAwICksIE5ETkJPT1NUX1NQX01TRCggVCApLCBhICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKiBwZCA9IHN0YXRpY19jYXN0PG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqPiggcHQuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSApOwotCi0gICAgdm9pZCAqIHB2ID0gcGQtPmFkZHJlc3MoKTsKLQotICAgIDo6bmV3KCBwdiApIFQoKTsKLSAgICBwZC0+c2V0X2luaXRpYWxpemVkKCk7Ci0KLSAgICBUICogcHQyID0gc3RhdGljX2Nhc3Q8IFQqID4oIHB2ICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbmFibGVfc2hhcmVkX2Zyb21fdGhpcyggJnB0LCBwdDIsIHB0MiApOwotICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+KCBwdCwgcHQyICk7Ci19Ci0KLXRlbXBsYXRlPCBjbGFzcyBULCBjbGFzcyBBID4gdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfbm90X2FycmF5PCBUID46OnR5cGUgYWxsb2NhdGVfc2hhcmVkX25vaW5pdCggQSBjb25zdCAmIGEgKQotewotICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4gcHQoIHN0YXRpY19jYXN0PCBUKiA+KCAwICksIE5ETkJPT1NUX1NQX01TRCggVCApLCBhICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKiBwZCA9IHN0YXRpY19jYXN0PG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqPiggcHQuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSApOwotCi0gICAgdm9pZCAqIHB2ID0gcGQtPmFkZHJlc3MoKTsKLQotICAgIDo6bmV3KCBwdiApIFQ7Ci0gICAgcGQtPnNldF9pbml0aWFsaXplZCgpOwotCi0gICAgVCAqIHB0MiA9IHN0YXRpY19jYXN0PCBUKiA+KCBwdiApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMoICZwdCwgcHQyLCBwdDIgKTsKLSAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiggcHQsIHB0MiApOwotfQotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX1RFTVBMQVRFUyApICYmICFkZWZpbmVkKCBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUyApCi0KLS8vIFZhcmlhZGljIHRlbXBsYXRlcywgcnZhbHVlIHJlZmVyZW5jZQotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgY2xhc3MgQXJnMSwgY2xhc3MuLi4gQXJncyA+IHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX25vdF9hcnJheTwgVCA+Ojp0eXBlIG1ha2Vfc2hhcmVkKCBBcmcxICYmIGFyZzEsIEFyZ3MgJiYgLi4uIGFyZ3MgKQotewotICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4gcHQoIHN0YXRpY19jYXN0PCBUKiA+KCAwICksIE5ETkJPT1NUX1NQX01TRCggVCApICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKiBwZCA9IHN0YXRpY19jYXN0PG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqPiggcHQuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSApOwotCi0gICAgdm9pZCAqIHB2ID0gcGQtPmFkZHJlc3MoKTsKLQotICAgIDo6bmV3KCBwdiApIFQoIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QXJnMT4oIGFyZzEgKSwgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBcmdzPiggYXJncyApLi4uICk7Ci0gICAgcGQtPnNldF9pbml0aWFsaXplZCgpOwotCi0gICAgVCAqIHB0MiA9IHN0YXRpY19jYXN0PCBUKiA+KCBwdiApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMoICZwdCwgcHQyLCBwdDIgKTsKLSAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiggcHQsIHB0MiApOwotfQotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgY2xhc3MgQSwgY2xhc3MgQXJnMSwgY2xhc3MuLi4gQXJncyA+IHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX25vdF9hcnJheTwgVCA+Ojp0eXBlIGFsbG9jYXRlX3NoYXJlZCggQSBjb25zdCAmIGEsIEFyZzEgJiYgYXJnMSwgQXJncyAmJiAuLi4gYXJncyApCi17Ci0gICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiBwdCggc3RhdGljX2Nhc3Q8IFQqID4oIDAgKSwgTkROQk9PU1RfU1BfTVNEKCBUICksIGEgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqIHBkID0gc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICo+KCBwdC5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpICk7Ci0KLSAgICB2b2lkICogcHYgPSBwZC0+YWRkcmVzcygpOwotCi0gICAgOjpuZXcoIHB2ICkgVCggbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBcmcxPiggYXJnMSApLCBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEFyZ3M+KCBhcmdzICkuLi4gKTsKLSAgICBwZC0+c2V0X2luaXRpYWxpemVkKCk7Ci0KLSAgICBUICogcHQyID0gc3RhdGljX2Nhc3Q8IFQqID4oIHB2ICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbmFibGVfc2hhcmVkX2Zyb21fdGhpcyggJnB0LCBwdDIsIHB0MiApOwotICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+KCBwdCwgcHQyICk7Ci19Ci0KLSNlbGlmICFkZWZpbmVkKCBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUyApCi0KLS8vIEZvciBleGFtcGxlIE1TVkMgMTAuMAotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgY2xhc3MgQTEgPgotdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfbm90X2FycmF5PCBUID46OnR5cGUgbWFrZV9zaGFyZWQoIEExICYmIGExICkKLXsKLSAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+IHB0KCBzdGF0aWNfY2FzdDwgVCogPiggMCApLCBORE5CT09TVF9TUF9NU0QoIFQgKSApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICogcGQgPSBzdGF0aWNfY2FzdDxuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKj4oIHB0Ll9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkgKTsKLQotICAgIHZvaWQgKiBwdiA9IHBkLT5hZGRyZXNzKCk7Ci0KLSAgICA6Om5ldyggcHYgKSBUKAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEExPiggYTEgKQotICAgICAgICApOwotCi0gICAgcGQtPnNldF9pbml0aWFsaXplZCgpOwotCi0gICAgVCAqIHB0MiA9IHN0YXRpY19jYXN0PCBUKiA+KCBwdiApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMoICZwdCwgcHQyLCBwdDIgKTsKLSAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiggcHQsIHB0MiApOwotfQotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgY2xhc3MgQSwgY2xhc3MgQTEgPgotdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfbm90X2FycmF5PCBUID46OnR5cGUgYWxsb2NhdGVfc2hhcmVkKCBBIGNvbnN0ICYgYSwgQTEgJiYgYTEgKQotewotICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4gcHQoIHN0YXRpY19jYXN0PCBUKiA+KCAwICksIE5ETkJPT1NUX1NQX01TRCggVCApLCBhICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKiBwZCA9IHN0YXRpY19jYXN0PG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqPiggcHQuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSApOwotCi0gICAgdm9pZCAqIHB2ID0gcGQtPmFkZHJlc3MoKTsKLQotICAgIDo6bmV3KCBwdiApIFQoIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEExPiggYTEgKQotICAgICAgICApOwotCi0gICAgcGQtPnNldF9pbml0aWFsaXplZCgpOwotCi0gICAgVCAqIHB0MiA9IHN0YXRpY19jYXN0PCBUKiA+KCBwdiApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMoICZwdCwgcHQyLCBwdDIgKTsKLSAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiggcHQsIHB0MiApOwotfQotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgY2xhc3MgQTEsIGNsYXNzIEEyID4KLXR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX25vdF9hcnJheTwgVCA+Ojp0eXBlIG1ha2Vfc2hhcmVkKCBBMSAmJiBhMSwgQTIgJiYgYTIgKQotewotICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4gcHQoIHN0YXRpY19jYXN0PCBUKiA+KCAwICksIE5ETkJPT1NUX1NQX01TRCggVCApICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKiBwZCA9IHN0YXRpY19jYXN0PG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqPiggcHQuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSApOwotCi0gICAgdm9pZCAqIHB2ID0gcGQtPmFkZHJlc3MoKTsKLQotICAgIDo6bmV3KCBwdiApIFQoCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTE+KCBhMSApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBMj4oIGEyICkKLSAgICAgICAgKTsKLQotICAgIHBkLT5zZXRfaW5pdGlhbGl6ZWQoKTsKLQotICAgIFQgKiBwdDIgPSBzdGF0aWNfY2FzdDwgVCogPiggcHYgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VuYWJsZV9zaGFyZWRfZnJvbV90aGlzKCAmcHQsIHB0MiwgcHQyICk7Ci0gICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4oIHB0LCBwdDIgKTsKLX0KLQotdGVtcGxhdGU8IGNsYXNzIFQsIGNsYXNzIEEsIGNsYXNzIEExLCBjbGFzcyBBMiA+Ci10eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9ub3RfYXJyYXk8IFQgPjo6dHlwZSBhbGxvY2F0ZV9zaGFyZWQoIEEgY29uc3QgJiBhLCBBMSAmJiBhMSwgQTIgJiYgYTIgKQotewotICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4gcHQoIHN0YXRpY19jYXN0PCBUKiA+KCAwICksIE5ETkJPT1NUX1NQX01TRCggVCApLCBhICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKiBwZCA9IHN0YXRpY19jYXN0PG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqPiggcHQuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSApOwotCi0gICAgdm9pZCAqIHB2ID0gcGQtPmFkZHJlc3MoKTsKLQotICAgIDo6bmV3KCBwdiApIFQoIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEExPiggYTEgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTI+KCBhMiApCi0gICAgICAgICk7Ci0KLSAgICBwZC0+c2V0X2luaXRpYWxpemVkKCk7Ci0KLSAgICBUICogcHQyID0gc3RhdGljX2Nhc3Q8IFQqID4oIHB2ICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbmFibGVfc2hhcmVkX2Zyb21fdGhpcyggJnB0LCBwdDIsIHB0MiApOwotICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+KCBwdCwgcHQyICk7Ci19Ci0KLXRlbXBsYXRlPCBjbGFzcyBULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzID4KLXR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX25vdF9hcnJheTwgVCA+Ojp0eXBlIG1ha2Vfc2hhcmVkKCBBMSAmJiBhMSwgQTIgJiYgYTIsIEEzICYmIGEzICkKLXsKLSAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+IHB0KCBzdGF0aWNfY2FzdDwgVCogPiggMCApLCBORE5CT09TVF9TUF9NU0QoIFQgKSApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICogcGQgPSBzdGF0aWNfY2FzdDxuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKj4oIHB0Ll9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkgKTsKLQotICAgIHZvaWQgKiBwdiA9IHBkLT5hZGRyZXNzKCk7Ci0KLSAgICA6Om5ldyggcHYgKSBUKAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEExPiggYTEgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTI+KCBhMiApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBMz4oIGEzICkKLSAgICAgICAgKTsKLQotICAgIHBkLT5zZXRfaW5pdGlhbGl6ZWQoKTsKLQotICAgIFQgKiBwdDIgPSBzdGF0aWNfY2FzdDwgVCogPiggcHYgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VuYWJsZV9zaGFyZWRfZnJvbV90aGlzKCAmcHQsIHB0MiwgcHQyICk7Ci0gICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4oIHB0LCBwdDIgKTsKLX0KLQotdGVtcGxhdGU8IGNsYXNzIFQsIGNsYXNzIEEsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMgPgotdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfbm90X2FycmF5PCBUID46OnR5cGUgYWxsb2NhdGVfc2hhcmVkKCBBIGNvbnN0ICYgYSwgQTEgJiYgYTEsIEEyICYmIGEyLCBBMyAmJiBhMyApCi17Ci0gICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiBwdCggc3RhdGljX2Nhc3Q8IFQqID4oIDAgKSwgTkROQk9PU1RfU1BfTVNEKCBUICksIGEgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqIHBkID0gc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICo+KCBwdC5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpICk7Ci0KLSAgICB2b2lkICogcHYgPSBwZC0+YWRkcmVzcygpOwotCi0gICAgOjpuZXcoIHB2ICkgVCggCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTE+KCBhMSApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBMj4oIGEyICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEEzPiggYTMgKQotICAgICAgICApOwotCi0gICAgcGQtPnNldF9pbml0aWFsaXplZCgpOwotCi0gICAgVCAqIHB0MiA9IHN0YXRpY19jYXN0PCBUKiA+KCBwdiApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMoICZwdCwgcHQyLCBwdDIgKTsKLSAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiggcHQsIHB0MiApOwotfQotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQgPgotdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfbm90X2FycmF5PCBUID46OnR5cGUgbWFrZV9zaGFyZWQoIEExICYmIGExLCBBMiAmJiBhMiwgQTMgJiYgYTMsIEE0ICYmIGE0ICkKLXsKLSAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+IHB0KCBzdGF0aWNfY2FzdDwgVCogPiggMCApLCBORE5CT09TVF9TUF9NU0QoIFQgKSApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICogcGQgPSBzdGF0aWNfY2FzdDxuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKj4oIHB0Ll9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkgKTsKLQotICAgIHZvaWQgKiBwdiA9IHBkLT5hZGRyZXNzKCk7Ci0KLSAgICA6Om5ldyggcHYgKSBUKAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEExPiggYTEgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTI+KCBhMiApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBMz4oIGEzICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEE0PiggYTQgKQotICAgICAgICApOwotCi0gICAgcGQtPnNldF9pbml0aWFsaXplZCgpOwotCi0gICAgVCAqIHB0MiA9IHN0YXRpY19jYXN0PCBUKiA+KCBwdiApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMoICZwdCwgcHQyLCBwdDIgKTsKLSAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiggcHQsIHB0MiApOwotfQotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgY2xhc3MgQSwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQgPgotdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfbm90X2FycmF5PCBUID46OnR5cGUgYWxsb2NhdGVfc2hhcmVkKCBBIGNvbnN0ICYgYSwgQTEgJiYgYTEsIEEyICYmIGEyLCBBMyAmJiBhMywgQTQgJiYgYTQgKQotewotICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4gcHQoIHN0YXRpY19jYXN0PCBUKiA+KCAwICksIE5ETkJPT1NUX1NQX01TRCggVCApLCBhICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKiBwZCA9IHN0YXRpY19jYXN0PG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqPiggcHQuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSApOwotCi0gICAgdm9pZCAqIHB2ID0gcGQtPmFkZHJlc3MoKTsKLQotICAgIDo6bmV3KCBwdiApIFQoIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEExPiggYTEgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTI+KCBhMiApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBMz4oIGEzICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEE0PiggYTQgKQotICAgICAgICApOwotCi0gICAgcGQtPnNldF9pbml0aWFsaXplZCgpOwotCi0gICAgVCAqIHB0MiA9IHN0YXRpY19jYXN0PCBUKiA+KCBwdiApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMoICZwdCwgcHQyLCBwdDIgKTsKLSAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiggcHQsIHB0MiApOwotfQotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1ID4KLXR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX25vdF9hcnJheTwgVCA+Ojp0eXBlIG1ha2Vfc2hhcmVkKCBBMSAmJiBhMSwgQTIgJiYgYTIsIEEzICYmIGEzLCBBNCAmJiBhNCwgQTUgJiYgYTUgKQotewotICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4gcHQoIHN0YXRpY19jYXN0PCBUKiA+KCAwICksIE5ETkJPT1NUX1NQX01TRCggVCApICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKiBwZCA9IHN0YXRpY19jYXN0PG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqPiggcHQuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSApOwotCi0gICAgdm9pZCAqIHB2ID0gcGQtPmFkZHJlc3MoKTsKLQotICAgIDo6bmV3KCBwdiApIFQoCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTE+KCBhMSApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBMj4oIGEyICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEEzPiggYTMgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTQ+KCBhNCApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBNT4oIGE1ICkKLSAgICAgICAgKTsKLQotICAgIHBkLT5zZXRfaW5pdGlhbGl6ZWQoKTsKLQotICAgIFQgKiBwdDIgPSBzdGF0aWNfY2FzdDwgVCogPiggcHYgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VuYWJsZV9zaGFyZWRfZnJvbV90aGlzKCAmcHQsIHB0MiwgcHQyICk7Ci0gICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4oIHB0LCBwdDIgKTsKLX0KLQotdGVtcGxhdGU8IGNsYXNzIFQsIGNsYXNzIEEsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSA+Ci10eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9ub3RfYXJyYXk8IFQgPjo6dHlwZSBhbGxvY2F0ZV9zaGFyZWQoIEEgY29uc3QgJiBhLCBBMSAmJiBhMSwgQTIgJiYgYTIsIEEzICYmIGEzLCBBNCAmJiBhNCwgQTUgJiYgYTUgKQotewotICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4gcHQoIHN0YXRpY19jYXN0PCBUKiA+KCAwICksIE5ETkJPT1NUX1NQX01TRCggVCApLCBhICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKiBwZCA9IHN0YXRpY19jYXN0PG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqPiggcHQuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSApOwotCi0gICAgdm9pZCAqIHB2ID0gcGQtPmFkZHJlc3MoKTsKLQotICAgIDo6bmV3KCBwdiApIFQoIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEExPiggYTEgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTI+KCBhMiApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBMz4oIGEzICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEE0PiggYTQgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTU+KCBhNSApCi0gICAgICAgICk7Ci0KLSAgICBwZC0+c2V0X2luaXRpYWxpemVkKCk7Ci0KLSAgICBUICogcHQyID0gc3RhdGljX2Nhc3Q8IFQqID4oIHB2ICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbmFibGVfc2hhcmVkX2Zyb21fdGhpcyggJnB0LCBwdDIsIHB0MiApOwotICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+KCBwdCwgcHQyICk7Ci19Ci0KLXRlbXBsYXRlPCBjbGFzcyBULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2ID4KLXR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX25vdF9hcnJheTwgVCA+Ojp0eXBlIG1ha2Vfc2hhcmVkKCBBMSAmJiBhMSwgQTIgJiYgYTIsIEEzICYmIGEzLCBBNCAmJiBhNCwgQTUgJiYgYTUsIEE2ICYmIGE2ICkKLXsKLSAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+IHB0KCBzdGF0aWNfY2FzdDwgVCogPiggMCApLCBORE5CT09TVF9TUF9NU0QoIFQgKSApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICogcGQgPSBzdGF0aWNfY2FzdDxuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKj4oIHB0Ll9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkgKTsKLQotICAgIHZvaWQgKiBwdiA9IHBkLT5hZGRyZXNzKCk7Ci0KLSAgICA6Om5ldyggcHYgKSBUKAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEExPiggYTEgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTI+KCBhMiApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBMz4oIGEzICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEE0PiggYTQgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTU+KCBhNSApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBNj4oIGE2ICkKLSAgICAgICAgKTsKLQotICAgIHBkLT5zZXRfaW5pdGlhbGl6ZWQoKTsKLQotICAgIFQgKiBwdDIgPSBzdGF0aWNfY2FzdDwgVCogPiggcHYgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VuYWJsZV9zaGFyZWRfZnJvbV90aGlzKCAmcHQsIHB0MiwgcHQyICk7Ci0gICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4oIHB0LCBwdDIgKTsKLX0KLQotdGVtcGxhdGU8IGNsYXNzIFQsIGNsYXNzIEEsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYgPgotdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfbm90X2FycmF5PCBUID46OnR5cGUgYWxsb2NhdGVfc2hhcmVkKCBBIGNvbnN0ICYgYSwgQTEgJiYgYTEsIEEyICYmIGEyLCBBMyAmJiBhMywgQTQgJiYgYTQsIEE1ICYmIGE1LCBBNiAmJiBhNiApCi17Ci0gICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiBwdCggc3RhdGljX2Nhc3Q8IFQqID4oIDAgKSwgTkROQk9PU1RfU1BfTVNEKCBUICksIGEgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqIHBkID0gc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICo+KCBwdC5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpICk7Ci0KLSAgICB2b2lkICogcHYgPSBwZC0+YWRkcmVzcygpOwotCi0gICAgOjpuZXcoIHB2ICkgVCggCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTE+KCBhMSApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBMj4oIGEyICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEEzPiggYTMgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTQ+KCBhNCApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBNT4oIGE1ICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEE2PiggYTYgKQotICAgICAgICApOwotCi0gICAgcGQtPnNldF9pbml0aWFsaXplZCgpOwotCi0gICAgVCAqIHB0MiA9IHN0YXRpY19jYXN0PCBUKiA+KCBwdiApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMoICZwdCwgcHQyLCBwdDIgKTsKLSAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiggcHQsIHB0MiApOwotfQotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTcgPgotdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfbm90X2FycmF5PCBUID46OnR5cGUgbWFrZV9zaGFyZWQoIEExICYmIGExLCBBMiAmJiBhMiwgQTMgJiYgYTMsIEE0ICYmIGE0LCBBNSAmJiBhNSwgQTYgJiYgYTYsIEE3ICYmIGE3ICkKLXsKLSAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+IHB0KCBzdGF0aWNfY2FzdDwgVCogPiggMCApLCBORE5CT09TVF9TUF9NU0QoIFQgKSApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICogcGQgPSBzdGF0aWNfY2FzdDxuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKj4oIHB0Ll9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkgKTsKLQotICAgIHZvaWQgKiBwdiA9IHBkLT5hZGRyZXNzKCk7Ci0KLSAgICA6Om5ldyggcHYgKSBUKAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEExPiggYTEgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTI+KCBhMiApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBMz4oIGEzICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEE0PiggYTQgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTU+KCBhNSApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBNj4oIGE2ICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEE3PiggYTcgKQotICAgICAgICApOwotCi0gICAgcGQtPnNldF9pbml0aWFsaXplZCgpOwotCi0gICAgVCAqIHB0MiA9IHN0YXRpY19jYXN0PCBUKiA+KCBwdiApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMoICZwdCwgcHQyLCBwdDIgKTsKLSAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiggcHQsIHB0MiApOwotfQotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgY2xhc3MgQSwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTcgPgotdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfbm90X2FycmF5PCBUID46OnR5cGUgYWxsb2NhdGVfc2hhcmVkKCBBIGNvbnN0ICYgYSwgQTEgJiYgYTEsIEEyICYmIGEyLCBBMyAmJiBhMywgQTQgJiYgYTQsIEE1ICYmIGE1LCBBNiAmJiBhNiwgQTcgJiYgYTcgKQotewotICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4gcHQoIHN0YXRpY19jYXN0PCBUKiA+KCAwICksIE5ETkJPT1NUX1NQX01TRCggVCApLCBhICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKiBwZCA9IHN0YXRpY19jYXN0PG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqPiggcHQuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSApOwotCi0gICAgdm9pZCAqIHB2ID0gcGQtPmFkZHJlc3MoKTsKLQotICAgIDo6bmV3KCBwdiApIFQoIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEExPiggYTEgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTI+KCBhMiApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBMz4oIGEzICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEE0PiggYTQgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTU+KCBhNSApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBNj4oIGE2ICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEE3PiggYTcgKQotICAgICAgICApOwotCi0gICAgcGQtPnNldF9pbml0aWFsaXplZCgpOwotCi0gICAgVCAqIHB0MiA9IHN0YXRpY19jYXN0PCBUKiA+KCBwdiApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMoICZwdCwgcHQyLCBwdDIgKTsKLSAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiggcHQsIHB0MiApOwotfQotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4ID4KLXR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX25vdF9hcnJheTwgVCA+Ojp0eXBlIG1ha2Vfc2hhcmVkKCBBMSAmJiBhMSwgQTIgJiYgYTIsIEEzICYmIGEzLCBBNCAmJiBhNCwgQTUgJiYgYTUsIEE2ICYmIGE2LCBBNyAmJiBhNywgQTggJiYgYTggKQotewotICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4gcHQoIHN0YXRpY19jYXN0PCBUKiA+KCAwICksIE5ETkJPT1NUX1NQX01TRCggVCApICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKiBwZCA9IHN0YXRpY19jYXN0PG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqPiggcHQuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSApOwotCi0gICAgdm9pZCAqIHB2ID0gcGQtPmFkZHJlc3MoKTsKLQotICAgIDo6bmV3KCBwdiApIFQoCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTE+KCBhMSApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBMj4oIGEyICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEEzPiggYTMgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTQ+KCBhNCApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBNT4oIGE1ICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEE2PiggYTYgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTc+KCBhNyApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBOD4oIGE4ICkKLSAgICAgICAgKTsKLQotICAgIHBkLT5zZXRfaW5pdGlhbGl6ZWQoKTsKLQotICAgIFQgKiBwdDIgPSBzdGF0aWNfY2FzdDwgVCogPiggcHYgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VuYWJsZV9zaGFyZWRfZnJvbV90aGlzKCAmcHQsIHB0MiwgcHQyICk7Ci0gICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4oIHB0LCBwdDIgKTsKLX0KLQotdGVtcGxhdGU8IGNsYXNzIFQsIGNsYXNzIEEsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOCA+Ci10eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9ub3RfYXJyYXk8IFQgPjo6dHlwZSBhbGxvY2F0ZV9zaGFyZWQoIEEgY29uc3QgJiBhLCBBMSAmJiBhMSwgQTIgJiYgYTIsIEEzICYmIGEzLCBBNCAmJiBhNCwgQTUgJiYgYTUsIEE2ICYmIGE2LCBBNyAmJiBhNywgQTggJiYgYTggKQotewotICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4gcHQoIHN0YXRpY19jYXN0PCBUKiA+KCAwICksIE5ETkJPT1NUX1NQX01TRCggVCApLCBhICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKiBwZCA9IHN0YXRpY19jYXN0PG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqPiggcHQuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSApOwotCi0gICAgdm9pZCAqIHB2ID0gcGQtPmFkZHJlc3MoKTsKLQotICAgIDo6bmV3KCBwdiApIFQoIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEExPiggYTEgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTI+KCBhMiApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBMz4oIGEzICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEE0PiggYTQgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTU+KCBhNSApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBNj4oIGE2ICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEE3PiggYTcgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTg+KCBhOCApCi0gICAgICAgICk7Ci0KLSAgICBwZC0+c2V0X2luaXRpYWxpemVkKCk7Ci0KLSAgICBUICogcHQyID0gc3RhdGljX2Nhc3Q8IFQqID4oIHB2ICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbmFibGVfc2hhcmVkX2Zyb21fdGhpcyggJnB0LCBwdDIsIHB0MiApOwotICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+KCBwdCwgcHQyICk7Ci19Ci0KLXRlbXBsYXRlPCBjbGFzcyBULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTgsIGNsYXNzIEE5ID4KLXR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX25vdF9hcnJheTwgVCA+Ojp0eXBlIG1ha2Vfc2hhcmVkKCBBMSAmJiBhMSwgQTIgJiYgYTIsIEEzICYmIGEzLCBBNCAmJiBhNCwgQTUgJiYgYTUsIEE2ICYmIGE2LCBBNyAmJiBhNywgQTggJiYgYTgsIEE5ICYmIGE5ICkKLXsKLSAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+IHB0KCBzdGF0aWNfY2FzdDwgVCogPiggMCApLCBORE5CT09TVF9TUF9NU0QoIFQgKSApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICogcGQgPSBzdGF0aWNfY2FzdDxuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKj4oIHB0Ll9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkgKTsKLQotICAgIHZvaWQgKiBwdiA9IHBkLT5hZGRyZXNzKCk7Ci0KLSAgICA6Om5ldyggcHYgKSBUKAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEExPiggYTEgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTI+KCBhMiApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBMz4oIGEzICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEE0PiggYTQgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTU+KCBhNSApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBNj4oIGE2ICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEE3PiggYTcgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTg+KCBhOCApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBOT4oIGE5ICkKLSAgICAgICAgKTsKLQotICAgIHBkLT5zZXRfaW5pdGlhbGl6ZWQoKTsKLQotICAgIFQgKiBwdDIgPSBzdGF0aWNfY2FzdDwgVCogPiggcHYgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VuYWJsZV9zaGFyZWRfZnJvbV90aGlzKCAmcHQsIHB0MiwgcHQyICk7Ci0gICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4oIHB0LCBwdDIgKTsKLX0KLQotdGVtcGxhdGU8IGNsYXNzIFQsIGNsYXNzIEEsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOCwgY2xhc3MgQTkgPgotdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfbm90X2FycmF5PCBUID46OnR5cGUgYWxsb2NhdGVfc2hhcmVkKCBBIGNvbnN0ICYgYSwgQTEgJiYgYTEsIEEyICYmIGEyLCBBMyAmJiBhMywgQTQgJiYgYTQsIEE1ICYmIGE1LCBBNiAmJiBhNiwgQTcgJiYgYTcsIEE4ICYmIGE4LCBBOSAmJiBhOSApCi17Ci0gICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiBwdCggc3RhdGljX2Nhc3Q8IFQqID4oIDAgKSwgTkROQk9PU1RfU1BfTVNEKCBUICksIGEgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqIHBkID0gc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICo+KCBwdC5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpICk7Ci0KLSAgICB2b2lkICogcHYgPSBwZC0+YWRkcmVzcygpOwotCi0gICAgOjpuZXcoIHB2ICkgVCggCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTE+KCBhMSApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBMj4oIGEyICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEEzPiggYTMgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTQ+KCBhNCApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBNT4oIGE1ICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEE2PiggYTYgKSwgCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2ZvcndhcmQ8QTc+KCBhNyApLCAKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZm9yd2FyZDxBOD4oIGE4ICksIAotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9mb3J3YXJkPEE5PiggYTkgKQotICAgICAgICApOwotCi0gICAgcGQtPnNldF9pbml0aWFsaXplZCgpOwotCi0gICAgVCAqIHB0MiA9IHN0YXRpY19jYXN0PCBUKiA+KCBwdiApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMoICZwdCwgcHQyLCBwdDIgKTsKLSAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiggcHQsIHB0MiApOwotfQotCi0jZWxzZQotCi0vLyBDKyswMyB2ZXJzaW9uCi0KLXRlbXBsYXRlPCBjbGFzcyBULCBjbGFzcyBBMSA+Ci10eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9ub3RfYXJyYXk8IFQgPjo6dHlwZSBtYWtlX3NoYXJlZCggQTEgY29uc3QgJiBhMSApCi17Ci0gICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiBwdCggc3RhdGljX2Nhc3Q8IFQqID4oIDAgKSwgTkROQk9PU1RfU1BfTVNEKCBUICkgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqIHBkID0gc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICo+KCBwdC5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpICk7Ci0KLSAgICB2b2lkICogcHYgPSBwZC0+YWRkcmVzcygpOwotCi0gICAgOjpuZXcoIHB2ICkgVCggYTEgKTsKLSAgICBwZC0+c2V0X2luaXRpYWxpemVkKCk7Ci0KLSAgICBUICogcHQyID0gc3RhdGljX2Nhc3Q8IFQqID4oIHB2ICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbmFibGVfc2hhcmVkX2Zyb21fdGhpcyggJnB0LCBwdDIsIHB0MiApOwotICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+KCBwdCwgcHQyICk7Ci19Ci0KLXRlbXBsYXRlPCBjbGFzcyBULCBjbGFzcyBBLCBjbGFzcyBBMSA+Ci10eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9ub3RfYXJyYXk8IFQgPjo6dHlwZSBhbGxvY2F0ZV9zaGFyZWQoIEEgY29uc3QgJiBhLCBBMSBjb25zdCAmIGExICkKLXsKLSAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+IHB0KCBzdGF0aWNfY2FzdDwgVCogPiggMCApLCBORE5CT09TVF9TUF9NU0QoIFQgKSwgYSApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICogcGQgPSBzdGF0aWNfY2FzdDxuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKj4oIHB0Ll9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkgKTsKLQotICAgIHZvaWQgKiBwdiA9IHBkLT5hZGRyZXNzKCk7Ci0KLSAgICA6Om5ldyggcHYgKSBUKCBhMSApOwotICAgIHBkLT5zZXRfaW5pdGlhbGl6ZWQoKTsKLQotICAgIFQgKiBwdDIgPSBzdGF0aWNfY2FzdDwgVCogPiggcHYgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VuYWJsZV9zaGFyZWRfZnJvbV90aGlzKCAmcHQsIHB0MiwgcHQyICk7Ci0gICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4oIHB0LCBwdDIgKTsKLX0KLQotdGVtcGxhdGU8IGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMiA+Ci10eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9ub3RfYXJyYXk8IFQgPjo6dHlwZSBtYWtlX3NoYXJlZCggQTEgY29uc3QgJiBhMSwgQTIgY29uc3QgJiBhMiApCi17Ci0gICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiBwdCggc3RhdGljX2Nhc3Q8IFQqID4oIDAgKSwgTkROQk9PU1RfU1BfTVNEKCBUICkgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqIHBkID0gc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICo+KCBwdC5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpICk7Ci0KLSAgICB2b2lkICogcHYgPSBwZC0+YWRkcmVzcygpOwotCi0gICAgOjpuZXcoIHB2ICkgVCggYTEsIGEyICk7Ci0gICAgcGQtPnNldF9pbml0aWFsaXplZCgpOwotCi0gICAgVCAqIHB0MiA9IHN0YXRpY19jYXN0PCBUKiA+KCBwdiApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMoICZwdCwgcHQyLCBwdDIgKTsKLSAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiggcHQsIHB0MiApOwotfQotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgY2xhc3MgQSwgY2xhc3MgQTEsIGNsYXNzIEEyID4KLXR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX25vdF9hcnJheTwgVCA+Ojp0eXBlIGFsbG9jYXRlX3NoYXJlZCggQSBjb25zdCAmIGEsIEExIGNvbnN0ICYgYTEsIEEyIGNvbnN0ICYgYTIgKQotewotICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4gcHQoIHN0YXRpY19jYXN0PCBUKiA+KCAwICksIE5ETkJPT1NUX1NQX01TRCggVCApLCBhICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKiBwZCA9IHN0YXRpY19jYXN0PG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqPiggcHQuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSApOwotCi0gICAgdm9pZCAqIHB2ID0gcGQtPmFkZHJlc3MoKTsKLQotICAgIDo6bmV3KCBwdiApIFQoIGExLCBhMiApOwotICAgIHBkLT5zZXRfaW5pdGlhbGl6ZWQoKTsKLQotICAgIFQgKiBwdDIgPSBzdGF0aWNfY2FzdDwgVCogPiggcHYgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VuYWJsZV9zaGFyZWRfZnJvbV90aGlzKCAmcHQsIHB0MiwgcHQyICk7Ci0gICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4oIHB0LCBwdDIgKTsKLX0KLQotdGVtcGxhdGU8IGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMgPgotdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfbm90X2FycmF5PCBUID46OnR5cGUgbWFrZV9zaGFyZWQoIEExIGNvbnN0ICYgYTEsIEEyIGNvbnN0ICYgYTIsIEEzIGNvbnN0ICYgYTMgKQotewotICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4gcHQoIHN0YXRpY19jYXN0PCBUKiA+KCAwICksIE5ETkJPT1NUX1NQX01TRCggVCApICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKiBwZCA9IHN0YXRpY19jYXN0PG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqPiggcHQuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSApOwotCi0gICAgdm9pZCAqIHB2ID0gcGQtPmFkZHJlc3MoKTsKLQotICAgIDo6bmV3KCBwdiApIFQoIGExLCBhMiwgYTMgKTsKLSAgICBwZC0+c2V0X2luaXRpYWxpemVkKCk7Ci0KLSAgICBUICogcHQyID0gc3RhdGljX2Nhc3Q8IFQqID4oIHB2ICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbmFibGVfc2hhcmVkX2Zyb21fdGhpcyggJnB0LCBwdDIsIHB0MiApOwotICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+KCBwdCwgcHQyICk7Ci19Ci0KLXRlbXBsYXRlPCBjbGFzcyBULCBjbGFzcyBBLCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzID4KLXR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX25vdF9hcnJheTwgVCA+Ojp0eXBlIGFsbG9jYXRlX3NoYXJlZCggQSBjb25zdCAmIGEsIEExIGNvbnN0ICYgYTEsIEEyIGNvbnN0ICYgYTIsIEEzIGNvbnN0ICYgYTMgKQotewotICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4gcHQoIHN0YXRpY19jYXN0PCBUKiA+KCAwICksIE5ETkJPT1NUX1NQX01TRCggVCApLCBhICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKiBwZCA9IHN0YXRpY19jYXN0PG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqPiggcHQuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSApOwotCi0gICAgdm9pZCAqIHB2ID0gcGQtPmFkZHJlc3MoKTsKLQotICAgIDo6bmV3KCBwdiApIFQoIGExLCBhMiwgYTMgKTsKLSAgICBwZC0+c2V0X2luaXRpYWxpemVkKCk7Ci0KLSAgICBUICogcHQyID0gc3RhdGljX2Nhc3Q8IFQqID4oIHB2ICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbmFibGVfc2hhcmVkX2Zyb21fdGhpcyggJnB0LCBwdDIsIHB0MiApOwotICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+KCBwdCwgcHQyICk7Ci19Ci0KLXRlbXBsYXRlPCBjbGFzcyBULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCA+Ci10eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9ub3RfYXJyYXk8IFQgPjo6dHlwZSBtYWtlX3NoYXJlZCggQTEgY29uc3QgJiBhMSwgQTIgY29uc3QgJiBhMiwgQTMgY29uc3QgJiBhMywgQTQgY29uc3QgJiBhNCApCi17Ci0gICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiBwdCggc3RhdGljX2Nhc3Q8IFQqID4oIDAgKSwgTkROQk9PU1RfU1BfTVNEKCBUICkgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqIHBkID0gc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICo+KCBwdC5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpICk7Ci0KLSAgICB2b2lkICogcHYgPSBwZC0+YWRkcmVzcygpOwotCi0gICAgOjpuZXcoIHB2ICkgVCggYTEsIGEyLCBhMywgYTQgKTsKLSAgICBwZC0+c2V0X2luaXRpYWxpemVkKCk7Ci0KLSAgICBUICogcHQyID0gc3RhdGljX2Nhc3Q8IFQqID4oIHB2ICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbmFibGVfc2hhcmVkX2Zyb21fdGhpcyggJnB0LCBwdDIsIHB0MiApOwotICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+KCBwdCwgcHQyICk7Ci19Ci0KLXRlbXBsYXRlPCBjbGFzcyBULCBjbGFzcyBBLCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCA+Ci10eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9ub3RfYXJyYXk8IFQgPjo6dHlwZSBhbGxvY2F0ZV9zaGFyZWQoIEEgY29uc3QgJiBhLCBBMSBjb25zdCAmIGExLCBBMiBjb25zdCAmIGEyLCBBMyBjb25zdCAmIGEzLCBBNCBjb25zdCAmIGE0ICkKLXsKLSAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+IHB0KCBzdGF0aWNfY2FzdDwgVCogPiggMCApLCBORE5CT09TVF9TUF9NU0QoIFQgKSwgYSApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICogcGQgPSBzdGF0aWNfY2FzdDxuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKj4oIHB0Ll9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkgKTsKLQotICAgIHZvaWQgKiBwdiA9IHBkLT5hZGRyZXNzKCk7Ci0KLSAgICA6Om5ldyggcHYgKSBUKCBhMSwgYTIsIGEzLCBhNCApOwotICAgIHBkLT5zZXRfaW5pdGlhbGl6ZWQoKTsKLQotICAgIFQgKiBwdDIgPSBzdGF0aWNfY2FzdDwgVCogPiggcHYgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VuYWJsZV9zaGFyZWRfZnJvbV90aGlzKCAmcHQsIHB0MiwgcHQyICk7Ci0gICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4oIHB0LCBwdDIgKTsKLX0KLQotdGVtcGxhdGU8IGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSA+Ci10eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9ub3RfYXJyYXk8IFQgPjo6dHlwZSBtYWtlX3NoYXJlZCggQTEgY29uc3QgJiBhMSwgQTIgY29uc3QgJiBhMiwgQTMgY29uc3QgJiBhMywgQTQgY29uc3QgJiBhNCwgQTUgY29uc3QgJiBhNSApCi17Ci0gICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiBwdCggc3RhdGljX2Nhc3Q8IFQqID4oIDAgKSwgTkROQk9PU1RfU1BfTVNEKCBUICkgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqIHBkID0gc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICo+KCBwdC5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpICk7Ci0KLSAgICB2b2lkICogcHYgPSBwZC0+YWRkcmVzcygpOwotCi0gICAgOjpuZXcoIHB2ICkgVCggYTEsIGEyLCBhMywgYTQsIGE1ICk7Ci0gICAgcGQtPnNldF9pbml0aWFsaXplZCgpOwotCi0gICAgVCAqIHB0MiA9IHN0YXRpY19jYXN0PCBUKiA+KCBwdiApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMoICZwdCwgcHQyLCBwdDIgKTsKLSAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiggcHQsIHB0MiApOwotfQotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgY2xhc3MgQSwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1ID4KLXR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX25vdF9hcnJheTwgVCA+Ojp0eXBlIGFsbG9jYXRlX3NoYXJlZCggQSBjb25zdCAmIGEsIEExIGNvbnN0ICYgYTEsIEEyIGNvbnN0ICYgYTIsIEEzIGNvbnN0ICYgYTMsIEE0IGNvbnN0ICYgYTQsIEE1IGNvbnN0ICYgYTUgKQotewotICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4gcHQoIHN0YXRpY19jYXN0PCBUKiA+KCAwICksIE5ETkJPT1NUX1NQX01TRCggVCApLCBhICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKiBwZCA9IHN0YXRpY19jYXN0PG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqPiggcHQuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSApOwotCi0gICAgdm9pZCAqIHB2ID0gcGQtPmFkZHJlc3MoKTsKLQotICAgIDo6bmV3KCBwdiApIFQoIGExLCBhMiwgYTMsIGE0LCBhNSApOwotICAgIHBkLT5zZXRfaW5pdGlhbGl6ZWQoKTsKLQotICAgIFQgKiBwdDIgPSBzdGF0aWNfY2FzdDwgVCogPiggcHYgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VuYWJsZV9zaGFyZWRfZnJvbV90aGlzKCAmcHQsIHB0MiwgcHQyICk7Ci0gICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4oIHB0LCBwdDIgKTsKLX0KLQotdGVtcGxhdGU8IGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYgPgotdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfbm90X2FycmF5PCBUID46OnR5cGUgbWFrZV9zaGFyZWQoIEExIGNvbnN0ICYgYTEsIEEyIGNvbnN0ICYgYTIsIEEzIGNvbnN0ICYgYTMsIEE0IGNvbnN0ICYgYTQsIEE1IGNvbnN0ICYgYTUsIEE2IGNvbnN0ICYgYTYgKQotewotICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4gcHQoIHN0YXRpY19jYXN0PCBUKiA+KCAwICksIE5ETkJPT1NUX1NQX01TRCggVCApICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKiBwZCA9IHN0YXRpY19jYXN0PG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqPiggcHQuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSApOwotCi0gICAgdm9pZCAqIHB2ID0gcGQtPmFkZHJlc3MoKTsKLQotICAgIDo6bmV3KCBwdiApIFQoIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYgKTsKLSAgICBwZC0+c2V0X2luaXRpYWxpemVkKCk7Ci0KLSAgICBUICogcHQyID0gc3RhdGljX2Nhc3Q8IFQqID4oIHB2ICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbmFibGVfc2hhcmVkX2Zyb21fdGhpcyggJnB0LCBwdDIsIHB0MiApOwotICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+KCBwdCwgcHQyICk7Ci19Ci0KLXRlbXBsYXRlPCBjbGFzcyBULCBjbGFzcyBBLCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2ID4KLXR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX25vdF9hcnJheTwgVCA+Ojp0eXBlIGFsbG9jYXRlX3NoYXJlZCggQSBjb25zdCAmIGEsIEExIGNvbnN0ICYgYTEsIEEyIGNvbnN0ICYgYTIsIEEzIGNvbnN0ICYgYTMsIEE0IGNvbnN0ICYgYTQsIEE1IGNvbnN0ICYgYTUsIEE2IGNvbnN0ICYgYTYgKQotewotICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4gcHQoIHN0YXRpY19jYXN0PCBUKiA+KCAwICksIE5ETkJPT1NUX1NQX01TRCggVCApLCBhICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKiBwZCA9IHN0YXRpY19jYXN0PG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqPiggcHQuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSApOwotCi0gICAgdm9pZCAqIHB2ID0gcGQtPmFkZHJlc3MoKTsKLQotICAgIDo6bmV3KCBwdiApIFQoIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYgKTsKLSAgICBwZC0+c2V0X2luaXRpYWxpemVkKCk7Ci0KLSAgICBUICogcHQyID0gc3RhdGljX2Nhc3Q8IFQqID4oIHB2ICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbmFibGVfc2hhcmVkX2Zyb21fdGhpcyggJnB0LCBwdDIsIHB0MiApOwotICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+KCBwdCwgcHQyICk7Ci19Ci0KLXRlbXBsYXRlPCBjbGFzcyBULCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNyA+Ci10eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9ub3RfYXJyYXk8IFQgPjo6dHlwZSBtYWtlX3NoYXJlZCggQTEgY29uc3QgJiBhMSwgQTIgY29uc3QgJiBhMiwgQTMgY29uc3QgJiBhMywgQTQgY29uc3QgJiBhNCwgQTUgY29uc3QgJiBhNSwgQTYgY29uc3QgJiBhNiwgQTcgY29uc3QgJiBhNyApCi17Ci0gICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiBwdCggc3RhdGljX2Nhc3Q8IFQqID4oIDAgKSwgTkROQk9PU1RfU1BfTVNEKCBUICkgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqIHBkID0gc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICo+KCBwdC5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpICk7Ci0KLSAgICB2b2lkICogcHYgPSBwZC0+YWRkcmVzcygpOwotCi0gICAgOjpuZXcoIHB2ICkgVCggYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcgKTsKLSAgICBwZC0+c2V0X2luaXRpYWxpemVkKCk7Ci0KLSAgICBUICogcHQyID0gc3RhdGljX2Nhc3Q8IFQqID4oIHB2ICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbmFibGVfc2hhcmVkX2Zyb21fdGhpcyggJnB0LCBwdDIsIHB0MiApOwotICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+KCBwdCwgcHQyICk7Ci19Ci0KLXRlbXBsYXRlPCBjbGFzcyBULCBjbGFzcyBBLCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNyA+Ci10eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9ub3RfYXJyYXk8IFQgPjo6dHlwZSBhbGxvY2F0ZV9zaGFyZWQoIEEgY29uc3QgJiBhLCBBMSBjb25zdCAmIGExLCBBMiBjb25zdCAmIGEyLCBBMyBjb25zdCAmIGEzLCBBNCBjb25zdCAmIGE0LCBBNSBjb25zdCAmIGE1LCBBNiBjb25zdCAmIGE2LCBBNyBjb25zdCAmIGE3ICkKLXsKLSAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+IHB0KCBzdGF0aWNfY2FzdDwgVCogPiggMCApLCBORE5CT09TVF9TUF9NU0QoIFQgKSwgYSApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICogcGQgPSBzdGF0aWNfY2FzdDxuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKj4oIHB0Ll9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkgKTsKLQotICAgIHZvaWQgKiBwdiA9IHBkLT5hZGRyZXNzKCk7Ci0KLSAgICA6Om5ldyggcHYgKSBUKCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNyApOwotICAgIHBkLT5zZXRfaW5pdGlhbGl6ZWQoKTsKLQotICAgIFQgKiBwdDIgPSBzdGF0aWNfY2FzdDwgVCogPiggcHYgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VuYWJsZV9zaGFyZWRfZnJvbV90aGlzKCAmcHQsIHB0MiwgcHQyICk7Ci0gICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4oIHB0LCBwdDIgKTsKLX0KLQotdGVtcGxhdGU8IGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOCA+Ci10eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9pZl9ub3RfYXJyYXk8IFQgPjo6dHlwZSBtYWtlX3NoYXJlZCggQTEgY29uc3QgJiBhMSwgQTIgY29uc3QgJiBhMiwgQTMgY29uc3QgJiBhMywgQTQgY29uc3QgJiBhNCwgQTUgY29uc3QgJiBhNSwgQTYgY29uc3QgJiBhNiwgQTcgY29uc3QgJiBhNywgQTggY29uc3QgJiBhOCApCi17Ci0gICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiBwdCggc3RhdGljX2Nhc3Q8IFQqID4oIDAgKSwgTkROQk9PU1RfU1BfTVNEKCBUICkgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqIHBkID0gc3RhdGljX2Nhc3Q8bmRuYm9vc3Q6OmRldGFpbDo6c3BfbXNfZGVsZXRlcjwgVCA+ICo+KCBwdC5faW50ZXJuYWxfZ2V0X3VudHlwZWRfZGVsZXRlcigpICk7Ci0KLSAgICB2b2lkICogcHYgPSBwZC0+YWRkcmVzcygpOwotCi0gICAgOjpuZXcoIHB2ICkgVCggYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4ICk7Ci0gICAgcGQtPnNldF9pbml0aWFsaXplZCgpOwotCi0gICAgVCAqIHB0MiA9IHN0YXRpY19jYXN0PCBUKiA+KCBwdiApOwotCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMoICZwdCwgcHQyLCBwdDIgKTsKLSAgICByZXR1cm4gbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiggcHQsIHB0MiApOwotfQotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgY2xhc3MgQSwgY2xhc3MgQTEsIGNsYXNzIEEyLCBjbGFzcyBBMywgY2xhc3MgQTQsIGNsYXNzIEE1LCBjbGFzcyBBNiwgY2xhc3MgQTcsIGNsYXNzIEE4ID4KLXR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX25vdF9hcnJheTwgVCA+Ojp0eXBlIGFsbG9jYXRlX3NoYXJlZCggQSBjb25zdCAmIGEsIEExIGNvbnN0ICYgYTEsIEEyIGNvbnN0ICYgYTIsIEEzIGNvbnN0ICYgYTMsIEE0IGNvbnN0ICYgYTQsIEE1IGNvbnN0ICYgYTUsIEE2IGNvbnN0ICYgYTYsIEE3IGNvbnN0ICYgYTcsIEE4IGNvbnN0ICYgYTggKQotewotICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4gcHQoIHN0YXRpY19jYXN0PCBUKiA+KCAwICksIE5ETkJPT1NUX1NQX01TRCggVCApLCBhICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKiBwZCA9IHN0YXRpY19jYXN0PG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqPiggcHQuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSApOwotCi0gICAgdm9pZCAqIHB2ID0gcGQtPmFkZHJlc3MoKTsKLQotICAgIDo6bmV3KCBwdiApIFQoIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCApOwotICAgIHBkLT5zZXRfaW5pdGlhbGl6ZWQoKTsKLQotICAgIFQgKiBwdDIgPSBzdGF0aWNfY2FzdDwgVCogPiggcHYgKTsKLQotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VuYWJsZV9zaGFyZWRfZnJvbV90aGlzKCAmcHQsIHB0MiwgcHQyICk7Ci0gICAgcmV0dXJuIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4oIHB0LCBwdDIgKTsKLX0KLQotdGVtcGxhdGU8IGNsYXNzIFQsIGNsYXNzIEExLCBjbGFzcyBBMiwgY2xhc3MgQTMsIGNsYXNzIEE0LCBjbGFzcyBBNSwgY2xhc3MgQTYsIGNsYXNzIEE3LCBjbGFzcyBBOCwgY2xhc3MgQTkgPgotdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfaWZfbm90X2FycmF5PCBUID46OnR5cGUgbWFrZV9zaGFyZWQoIEExIGNvbnN0ICYgYTEsIEEyIGNvbnN0ICYgYTIsIEEzIGNvbnN0ICYgYTMsIEE0IGNvbnN0ICYgYTQsIEE1IGNvbnN0ICYgYTUsIEE2IGNvbnN0ICYgYTYsIEE3IGNvbnN0ICYgYTcsIEE4IGNvbnN0ICYgYTgsIEE5IGNvbnN0ICYgYTkgKQotewotICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4gcHQoIHN0YXRpY19jYXN0PCBUKiA+KCAwICksIE5ETkJPT1NUX1NQX01TRCggVCApICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKiBwZCA9IHN0YXRpY19jYXN0PG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqPiggcHQuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSApOwotCi0gICAgdm9pZCAqIHB2ID0gcGQtPmFkZHJlc3MoKTsKLQotICAgIDo6bmV3KCBwdiApIFQoIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCwgYTkgKTsKLSAgICBwZC0+c2V0X2luaXRpYWxpemVkKCk7Ci0KLSAgICBUICogcHQyID0gc3RhdGljX2Nhc3Q8IFQqID4oIHB2ICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbmFibGVfc2hhcmVkX2Zyb21fdGhpcyggJnB0LCBwdDIsIHB0MiApOwotICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+KCBwdCwgcHQyICk7Ci19Ci0KLXRlbXBsYXRlPCBjbGFzcyBULCBjbGFzcyBBLCBjbGFzcyBBMSwgY2xhc3MgQTIsIGNsYXNzIEEzLCBjbGFzcyBBNCwgY2xhc3MgQTUsIGNsYXNzIEE2LCBjbGFzcyBBNywgY2xhc3MgQTgsIGNsYXNzIEE5ID4KLXR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2lmX25vdF9hcnJheTwgVCA+Ojp0eXBlIGFsbG9jYXRlX3NoYXJlZCggQSBjb25zdCAmIGEsIEExIGNvbnN0ICYgYTEsIEEyIGNvbnN0ICYgYTIsIEEzIGNvbnN0ICYgYTMsIEE0IGNvbnN0ICYgYTQsIEE1IGNvbnN0ICYgYTUsIEE2IGNvbnN0ICYgYTYsIEE3IGNvbnN0ICYgYTcsIEE4IGNvbnN0ICYgYTgsIEE5IGNvbnN0ICYgYTkgKQotewotICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPCBUID4gcHQoIHN0YXRpY19jYXN0PCBUKiA+KCAwICksIE5ETkJPT1NUX1NQX01TRCggVCApLCBhICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9tc19kZWxldGVyPCBUID4gKiBwZCA9IHN0YXRpY19jYXN0PG5kbmJvb3N0OjpkZXRhaWw6OnNwX21zX2RlbGV0ZXI8IFQgPiAqPiggcHQuX2ludGVybmFsX2dldF91bnR5cGVkX2RlbGV0ZXIoKSApOwotCi0gICAgdm9pZCAqIHB2ID0gcGQtPmFkZHJlc3MoKTsKLQotICAgIDo6bmV3KCBwdiApIFQoIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCwgYTkgKTsKLSAgICBwZC0+c2V0X2luaXRpYWxpemVkKCk7Ci0KLSAgICBUICogcHQyID0gc3RhdGljX2Nhc3Q8IFQqID4oIHB2ICk7Ci0KLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbmFibGVfc2hhcmVkX2Zyb21fdGhpcyggJnB0LCBwdDIsIHB0MiApOwotICAgIHJldHVybiBuZG5ib29zdDo6c2hhcmVkX3B0cjwgVCA+KCBwdCwgcHQyICk7Ci19Ci0KLSNlbmRpZgotCi0jdW5kZWYgTkROQk9PU1RfU1BfTVNECi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9NQUtFX1NIQVJFRF9PQkpFQ1RfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9zY29wZWRfYXJyYXkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvc2NvcGVkX2FycmF5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODE4ZDRjMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9zY29wZWRfYXJyYXkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTMyICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX1NDT1BFRF9BUlJBWV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfU01BUlRfUFRSX1NDT1BFRF9BUlJBWV9IUFBfSU5DTFVERUQKLQotLy8gIChDKSBDb3B5cmlnaHQgR3JlZyBDb2x2aW4gYW5kIEJlbWFuIERhd2VzIDE5OTgsIDE5OTkuCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAxLCAyMDAyIFBldGVyIERpbW92Ci0vLwotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3NtYXJ0X3B0ci9zY29wZWRfYXJyYXkuaHRtCi0vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9hc3NlcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NoZWNrZWRfZGVsZXRlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX251bGxwdHJfdC5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpbmNsdWRlIDxjc3RkZGVmPiAgICAgICAgICAgIC8vIGZvciBzdGQ6OnB0cmRpZmZfdAotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotLy8gRGVidWcgaG9va3MKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfU1BfRU5BQkxFX0RFQlVHX0hPT0tTKQotCi12b2lkIHNwX2FycmF5X2NvbnN0cnVjdG9yX2hvb2sodm9pZCAqIHApOwotdm9pZCBzcF9hcnJheV9kZXN0cnVjdG9yX2hvb2sodm9pZCAqIHApOwotCi0jZW5kaWYKLQotLy8gIHNjb3BlZF9hcnJheSBleHRlbmRzIHNjb3BlZF9wdHIgdG8gYXJyYXlzLiBEZWxldGlvbiBvZiB0aGUgYXJyYXkgcG9pbnRlZCB0bwotLy8gIGlzIGd1YXJhbnRlZWQsIGVpdGhlciBvbiBkZXN0cnVjdGlvbiBvZiB0aGUgc2NvcGVkX2FycmF5IG9yIHZpYSBhbiBleHBsaWNpdAotLy8gIHJlc2V0KCkuIFVzZSBzaGFyZWRfYXJyYXkgb3Igc3RkOjp2ZWN0b3IgaWYgeW91ciBuZWVkcyBhcmUgbW9yZSBjb21wbGV4LgotCi10ZW1wbGF0ZTxjbGFzcyBUPiBjbGFzcyBzY29wZWRfYXJyYXkgLy8gbm9uY29weWFibGUKLXsKLXByaXZhdGU6Ci0KLSAgICBUICogcHg7Ci0KLSAgICBzY29wZWRfYXJyYXkoc2NvcGVkX2FycmF5IGNvbnN0ICYpOwotICAgIHNjb3BlZF9hcnJheSAmIG9wZXJhdG9yPShzY29wZWRfYXJyYXkgY29uc3QgJik7Ci0KLSAgICB0eXBlZGVmIHNjb3BlZF9hcnJheTxUPiB0aGlzX3R5cGU7Ci0KLSAgICB2b2lkIG9wZXJhdG9yPT0oIHNjb3BlZF9hcnJheSBjb25zdCYgKSBjb25zdDsKLSAgICB2b2lkIG9wZXJhdG9yIT0oIHNjb3BlZF9hcnJheSBjb25zdCYgKSBjb25zdDsKLQotcHVibGljOgotCi0gICAgdHlwZWRlZiBUIGVsZW1lbnRfdHlwZTsKLQotICAgIGV4cGxpY2l0IHNjb3BlZF9hcnJheSggVCAqIHAgPSAwICkgTkROQk9PU1RfTk9FWENFUFQgOiBweCggcCApCi0gICAgewotI2lmIGRlZmluZWQoTkROQk9PU1RfU1BfRU5BQkxFX0RFQlVHX0hPT0tTKQotICAgICAgICBuZG5ib29zdDo6c3BfYXJyYXlfY29uc3RydWN0b3JfaG9vayggcHggKTsKLSNlbmRpZgotICAgIH0KLQotICAgIH5zY29wZWRfYXJyYXkoKSAvLyBuZXZlciB0aHJvd3MKLSAgICB7Ci0jaWYgZGVmaW5lZChORE5CT09TVF9TUF9FTkFCTEVfREVCVUdfSE9PS1MpCi0gICAgICAgIG5kbmJvb3N0OjpzcF9hcnJheV9kZXN0cnVjdG9yX2hvb2soIHB4ICk7Ci0jZW5kaWYKLSAgICAgICAgbmRuYm9vc3Q6OmNoZWNrZWRfYXJyYXlfZGVsZXRlKCBweCApOwotICAgIH0KLQotICAgIHZvaWQgcmVzZXQoVCAqIHAgPSAwKSAvLyBuZXZlciB0aHJvd3MgKGJ1dCBoYXMgYSBORE5CT09TVF9BU1NFUlQgaW4gaXQsIHNvIG5vdCBtYXJrZWQgd2l0aCBORE5CT09TVF9OT0VYQ0VQVCkKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX0FTU0VSVCggcCA9PSAwIHx8IHAgIT0gcHggKTsgLy8gY2F0Y2ggc2VsZi1yZXNldCBlcnJvcnMKLSAgICAgICAgdGhpc190eXBlKHApLnN3YXAoKnRoaXMpOwotICAgIH0KLQotICAgIFQgJiBvcGVyYXRvcltdKHN0ZDo6cHRyZGlmZl90IGkpIGNvbnN0IC8vIG5ldmVyIHRocm93cyAoYnV0IGhhcyBhIE5ETkJPT1NUX0FTU0VSVCBpbiBpdCwgc28gbm90IG1hcmtlZCB3aXRoIE5ETkJPT1NUX05PRVhDRVBUKQotICAgIHsKLSAgICAgICAgTkROQk9PU1RfQVNTRVJUKCBweCAhPSAwICk7Ci0gICAgICAgIE5ETkJPT1NUX0FTU0VSVCggaSA+PSAwICk7Ci0gICAgICAgIHJldHVybiBweFtpXTsKLSAgICB9Ci0KLSAgICBUICogZ2V0KCkgY29uc3QgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIHJldHVybiBweDsKLSAgICB9Ci0KLS8vIGltcGxpY2l0IGNvbnZlcnNpb24gdG8gImJvb2wiCi0jaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9vcGVyYXRvcl9ib29sLmhwcD4KLQotICAgIHZvaWQgc3dhcChzY29wZWRfYXJyYXkgJiBiKSBORE5CT09TVF9OT0VYQ0VQVAotICAgIHsKLSAgICAgICAgVCAqIHRtcCA9IGIucHg7Ci0gICAgICAgIGIucHggPSBweDsKLSAgICAgICAgcHggPSB0bXA7Ci0gICAgfQotfTsKLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19DWFgxMV9OVUxMUFRSICkKLQotdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PSggc2NvcGVkX2FycmF5PFQ+IGNvbnN0ICYgcCwgbmRuYm9vc3Q6OmRldGFpbDo6c3BfbnVsbHB0cl90ICkgTkROQk9PU1RfTk9FWENFUFQKLXsKLSAgICByZXR1cm4gcC5nZXQoKSA9PSAwOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KCBuZG5ib29zdDo6ZGV0YWlsOjpzcF9udWxscHRyX3QsIHNjb3BlZF9hcnJheTxUPiBjb25zdCAmIHAgKSBORE5CT09TVF9OT0VYQ0VQVAotewotICAgIHJldHVybiBwLmdldCgpID09IDA7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSBib29sIG9wZXJhdG9yIT0oIHNjb3BlZF9hcnJheTxUPiBjb25zdCAmIHAsIG5kbmJvb3N0OjpkZXRhaWw6OnNwX251bGxwdHJfdCApIE5ETkJPT1NUX05PRVhDRVBUCi17Ci0gICAgcmV0dXJuIHAuZ2V0KCkgIT0gMDsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPSggbmRuYm9vc3Q6OmRldGFpbDo6c3BfbnVsbHB0cl90LCBzY29wZWRfYXJyYXk8VD4gY29uc3QgJiBwICkgTkROQk9PU1RfTk9FWENFUFQKLXsKLSAgICByZXR1cm4gcC5nZXQoKSAhPSAwOwotfQotCi0jZW5kaWYKLQotdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHZvaWQgc3dhcChzY29wZWRfYXJyYXk8VD4gJiBhLCBzY29wZWRfYXJyYXk8VD4gJiBiKSBORE5CT09TVF9OT0VYQ0VQVAotewotICAgIGEuc3dhcChiKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmICAvLyAjaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9TQ09QRURfQVJSQVlfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci9zY29wZWRfcHRyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL3Njb3BlZF9wdHIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNzliMzkzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL3Njb3BlZF9wdHIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTU3ICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX1NDT1BFRF9QVFJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1NNQVJUX1BUUl9TQ09QRURfUFRSX0hQUF9JTkNMVURFRAotCi0vLyAgKEMpIENvcHlyaWdodCBHcmVnIENvbHZpbiBhbmQgQmVtYW4gRGF3ZXMgMTk5OCwgMTk5OS4KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDIgUGV0ZXIgRGltb3YKLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvc21hcnRfcHRyL3Njb3BlZF9wdHIuaHRtCi0vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9hc3NlcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NoZWNrZWRfZGVsZXRlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwX251bGxwdHJfdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotCi0jaWZuZGVmIE5ETkJPT1NUX05PX0FVVE9fUFRSCi0jIGluY2x1ZGUgPG1lbW9yeT4gICAgICAgICAgLy8gZm9yIHN0ZDo6YXV0b19wdHIKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotLy8gRGVidWcgaG9va3MKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfU1BfRU5BQkxFX0RFQlVHX0hPT0tTKQotCi12b2lkIHNwX3NjYWxhcl9jb25zdHJ1Y3Rvcl9ob29rKHZvaWQgKiBwKTsKLXZvaWQgc3Bfc2NhbGFyX2Rlc3RydWN0b3JfaG9vayh2b2lkICogcCk7Ci0KLSNlbmRpZgotCi0vLyAgc2NvcGVkX3B0ciBtaW1pY3MgYSBidWlsdC1pbiBwb2ludGVyIGV4Y2VwdCB0aGF0IGl0IGd1YXJhbnRlZXMgZGVsZXRpb24KLS8vICBvZiB0aGUgb2JqZWN0IHBvaW50ZWQgdG8sIGVpdGhlciBvbiBkZXN0cnVjdGlvbiBvZiB0aGUgc2NvcGVkX3B0ciBvciB2aWEKLS8vICBhbiBleHBsaWNpdCByZXNldCgpLiBzY29wZWRfcHRyIGlzIGEgc2ltcGxlIHNvbHV0aW9uIGZvciBzaW1wbGUgbmVlZHM7Ci0vLyAgdXNlIHNoYXJlZF9wdHIgb3Igc3RkOjphdXRvX3B0ciBpZiB5b3VyIG5lZWRzIGFyZSBtb3JlIGNvbXBsZXguCi0KLXRlbXBsYXRlPGNsYXNzIFQ+IGNsYXNzIHNjb3BlZF9wdHIgLy8gbm9uY29weWFibGUKLXsKLXByaXZhdGU6Ci0KLSAgICBUICogcHg7Ci0KLSAgICBzY29wZWRfcHRyKHNjb3BlZF9wdHIgY29uc3QgJik7Ci0gICAgc2NvcGVkX3B0ciAmIG9wZXJhdG9yPShzY29wZWRfcHRyIGNvbnN0ICYpOwotCi0gICAgdHlwZWRlZiBzY29wZWRfcHRyPFQ+IHRoaXNfdHlwZTsKLQotICAgIHZvaWQgb3BlcmF0b3I9PSggc2NvcGVkX3B0ciBjb25zdCYgKSBjb25zdDsKLSAgICB2b2lkIG9wZXJhdG9yIT0oIHNjb3BlZF9wdHIgY29uc3QmICkgY29uc3Q7Ci0KLXB1YmxpYzoKLQotICAgIHR5cGVkZWYgVCBlbGVtZW50X3R5cGU7Ci0KLSAgICBleHBsaWNpdCBzY29wZWRfcHRyKCBUICogcCA9IDAgKTogcHgoIHAgKSAvLyBuZXZlciB0aHJvd3MKLSAgICB7Ci0jaWYgZGVmaW5lZChORE5CT09TVF9TUF9FTkFCTEVfREVCVUdfSE9PS1MpCi0gICAgICAgIG5kbmJvb3N0OjpzcF9zY2FsYXJfY29uc3RydWN0b3JfaG9vayggcHggKTsKLSNlbmRpZgotICAgIH0KLQotI2lmbmRlZiBORE5CT09TVF9OT19BVVRPX1BUUgotCi0gICAgZXhwbGljaXQgc2NvcGVkX3B0ciggc3RkOjphdXRvX3B0cjxUPiBwICkgTkROQk9PU1RfTk9FWENFUFQgOiBweCggcC5yZWxlYXNlKCkgKQotICAgIHsKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1NQX0VOQUJMRV9ERUJVR19IT09LUykKLSAgICAgICAgbmRuYm9vc3Q6OnNwX3NjYWxhcl9jb25zdHJ1Y3Rvcl9ob29rKCBweCApOwotI2VuZGlmCi0gICAgfQotCi0jZW5kaWYKLQotICAgIH5zY29wZWRfcHRyKCkgLy8gbmV2ZXIgdGhyb3dzCi0gICAgewotI2lmIGRlZmluZWQoTkROQk9PU1RfU1BfRU5BQkxFX0RFQlVHX0hPT0tTKQotICAgICAgICBuZG5ib29zdDo6c3Bfc2NhbGFyX2Rlc3RydWN0b3JfaG9vayggcHggKTsKLSNlbmRpZgotICAgICAgICBuZG5ib29zdDo6Y2hlY2tlZF9kZWxldGUoIHB4ICk7Ci0gICAgfQotCi0gICAgdm9pZCByZXNldChUICogcCA9IDApIC8vIG5ldmVyIHRocm93cwotICAgIHsKLSAgICAgICAgTkROQk9PU1RfQVNTRVJUKCBwID09IDAgfHwgcCAhPSBweCApOyAvLyBjYXRjaCBzZWxmLXJlc2V0IGVycm9ycwotICAgICAgICB0aGlzX3R5cGUocCkuc3dhcCgqdGhpcyk7Ci0gICAgfQotCi0gICAgVCAmIG9wZXJhdG9yKigpIGNvbnN0IC8vIG5ldmVyIHRocm93cwotICAgIHsKLSAgICAgICAgTkROQk9PU1RfQVNTRVJUKCBweCAhPSAwICk7Ci0gICAgICAgIHJldHVybiAqcHg7Ci0gICAgfQotCi0gICAgVCAqIG9wZXJhdG9yLT4oKSBjb25zdCAvLyBuZXZlciB0aHJvd3MKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX0FTU0VSVCggcHggIT0gMCApOwotICAgICAgICByZXR1cm4gcHg7Ci0gICAgfQotCi0gICAgVCAqIGdldCgpIGNvbnN0IE5ETkJPT1NUX05PRVhDRVBUCi0gICAgewotICAgICAgICByZXR1cm4gcHg7Ci0gICAgfQotCi0vLyBpbXBsaWNpdCBjb252ZXJzaW9uIHRvICJib29sIgotI2luY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvb3BlcmF0b3JfYm9vbC5ocHA+Ci0KLSAgICB2b2lkIHN3YXAoc2NvcGVkX3B0ciAmIGIpIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgewotICAgICAgICBUICogdG1wID0gYi5weDsKLSAgICAgICAgYi5weCA9IHB4OwotICAgICAgICBweCA9IHRtcDsKLSAgICB9Ci19OwotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX0NYWDExX05VTExQVFIgKQotCi10ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KCBzY29wZWRfcHRyPFQ+IGNvbnN0ICYgcCwgbmRuYm9vc3Q6OmRldGFpbDo6c3BfbnVsbHB0cl90ICkgTkROQk9PU1RfTk9FWENFUFQKLXsKLSAgICByZXR1cm4gcC5nZXQoKSA9PSAwOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KCBuZG5ib29zdDo6ZGV0YWlsOjpzcF9udWxscHRyX3QsIHNjb3BlZF9wdHI8VD4gY29uc3QgJiBwICkgTkROQk9PU1RfTk9FWENFUFQKLXsKLSAgICByZXR1cm4gcC5nZXQoKSA9PSAwOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KCBzY29wZWRfcHRyPFQ+IGNvbnN0ICYgcCwgbmRuYm9vc3Q6OmRldGFpbDo6c3BfbnVsbHB0cl90ICkgTkROQk9PU1RfTk9FWENFUFQKLXsKLSAgICByZXR1cm4gcC5nZXQoKSAhPSAwOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KCBuZG5ib29zdDo6ZGV0YWlsOjpzcF9udWxscHRyX3QsIHNjb3BlZF9wdHI8VD4gY29uc3QgJiBwICkgTkROQk9PU1RfTk9FWENFUFQKLXsKLSAgICByZXR1cm4gcC5nZXQoKSAhPSAwOwotfQotCi0jZW5kaWYKLQotdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHZvaWQgc3dhcChzY29wZWRfcHRyPFQ+ICYgYSwgc2NvcGVkX3B0cjxUPiAmIGIpIE5ETkJPT1NUX05PRVhDRVBUCi17Ci0gICAgYS5zd2FwKGIpOwotfQotCi0vLyBnZXRfcG9pbnRlcihwKSBpcyBhIGdlbmVyaWMgd2F5IHRvIHNheSBwLmdldCgpCi0KLXRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSBUICogZ2V0X3BvaW50ZXIoc2NvcGVkX3B0cjxUPiBjb25zdCAmIHApIE5ETkJPT1NUX05PRVhDRVBUCi17Ci0gICAgcmV0dXJuIHAuZ2V0KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyAjaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9TQ09QRURfUFRSX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvc2hhcmVkX2FycmF5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL3NoYXJlZF9hcnJheS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlZGVmMTIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvc2hhcmVkX2FycmF5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI5MCArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9TSEFSRURfQVJSQVlfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1NNQVJUX1BUUl9TSEFSRURfQVJSQVlfSFBQX0lOQ0xVREVECi0KLS8vCi0vLyAgc2hhcmVkX2FycmF5LmhwcAotLy8KLS8vICAoQykgQ29weXJpZ2h0IEdyZWcgQ29sdmluIGFuZCBCZW1hbiBEYXdlcyAxOTk4LCAxOTk5LgotLy8gIENvcHlyaWdodCAoYykgMjAwMSwgMjAwMiwgMjAxMiBQZXRlciBEaW1vdgotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvc21hcnRfcHRyL3NoYXJlZF9hcnJheS5odG0gZm9yIGRvY3VtZW50YXRpb24uCi0vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4gICAvLyBmb3IgYnJva2VuIGNvbXBpbGVyIHdvcmthcm91bmRzCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX01FTUJFUl9URU1QTEFURVMpICYmICFkZWZpbmVkKE5ETkJPT1NUX01TVkM2X01FTUJFUl9URU1QTEFURVMpCi0jaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zaGFyZWRfYXJyYXlfbm10LmhwcD4KLSNlbHNlCi0KLSNpbmNsdWRlIDxtZW1vcnk+ICAgICAgICAgICAgIC8vIFRSMSBjeWNsaWMgaW5jbHVzaW9uIGZpeAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9jaGVja2VkX2RlbGV0ZS5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvc2hhcmVkX3B0ci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zaGFyZWRfY291bnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc3BfbnVsbHB0cl90LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpbmNsdWRlIDxjc3RkZGVmPiAgICAgICAgICAgIC8vIGZvciBzdGQ6OnB0cmRpZmZfdAotI2luY2x1ZGUgPGFsZ29yaXRobT4gICAgICAgICAgLy8gZm9yIHN0ZDo6c3dhcAotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+ICAgICAgICAgLy8gZm9yIHN0ZDo6bGVzcwotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotLy8KLS8vICBzaGFyZWRfYXJyYXkKLS8vCi0vLyAgc2hhcmVkX2FycmF5IGV4dGVuZHMgc2hhcmVkX3B0ciB0byBhcnJheXMuCi0vLyAgVGhlIGFycmF5IHBvaW50ZWQgdG8gaXMgZGVsZXRlZCB3aGVuIHRoZSBsYXN0IHNoYXJlZF9hcnJheSBwb2ludGluZyB0byBpdAotLy8gIGlzIGRlc3Ryb3llZCBvciByZXNldC4KLS8vCi0KLXRlbXBsYXRlPGNsYXNzIFQ+IGNsYXNzIHNoYXJlZF9hcnJheQotewotcHJpdmF0ZToKLQotICAgIC8vIEJvcmxhbmQgNS41LjEgc3BlY2lmaWMgd29ya2Fyb3VuZHMKLSAgICB0eXBlZGVmIGNoZWNrZWRfYXJyYXlfZGVsZXRlcjxUPiBkZWxldGVyOwotICAgIHR5cGVkZWYgc2hhcmVkX2FycmF5PFQ+IHRoaXNfdHlwZTsKLQotcHVibGljOgotCi0gICAgdHlwZWRlZiBUIGVsZW1lbnRfdHlwZTsKLQotICAgIHNoYXJlZF9hcnJheSgpIE5ETkJPT1NUX05PRVhDRVBUIDogcHgoIDAgKSwgcG4oKQotICAgIHsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBZPgotICAgIGV4cGxpY2l0IHNoYXJlZF9hcnJheSggWSAqIHAgKTogcHgoIHAgKSwgcG4oIHAsIGNoZWNrZWRfYXJyYXlfZGVsZXRlcjxZPigpICkKLSAgICB7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2Fzc2VydF9jb252ZXJ0aWJsZTwgWVtdLCBUW10gPigpOwotICAgIH0KLQotICAgIC8vCi0gICAgLy8gUmVxdWlyZW1lbnRzOiBEJ3MgY29weSBjb25zdHJ1Y3RvciBtdXN0IG5vdCB0aHJvdwotICAgIC8vCi0gICAgLy8gc2hhcmVkX2FycmF5IHdpbGwgcmVsZWFzZSBwIGJ5IGNhbGxpbmcgZChwKQotICAgIC8vCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBZLCBjbGFzcyBEPiBzaGFyZWRfYXJyYXkoIFkgKiBwLCBEIGQgKTogcHgoIHAgKSwgcG4oIHAsIGQgKQotICAgIHsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfYXNzZXJ0X2NvbnZlcnRpYmxlPCBZW10sIFRbXSA+KCk7Ci0gICAgfQotCi0gICAgLy8gQXMgYWJvdmUsIGJ1dCB3aXRoIGFsbG9jYXRvci4gQSdzIGNvcHkgY29uc3RydWN0b3Igc2hhbGwgbm90IHRocm93LgotCi0gICAgdGVtcGxhdGU8Y2xhc3MgWSwgY2xhc3MgRCwgY2xhc3MgQT4gc2hhcmVkX2FycmF5KCBZICogcCwgRCBkLCBBIGEgKTogcHgoIHAgKSwgcG4oIHAsIGQsIGEgKQotICAgIHsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfYXNzZXJ0X2NvbnZlcnRpYmxlPCBZW10sIFRbXSA+KCk7Ci0gICAgfQotCi0vLyAgZ2VuZXJhdGVkIGNvcHkgY29uc3RydWN0b3IsIGRlc3RydWN0b3IgYXJlIGZpbmUuLi4KLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUyApCi0KLS8vIC4uLiBleGNlcHQgaW4gQysrMHgsIG1vdmUgZGlzYWJsZXMgdGhlIGltcGxpY2l0IGNvcHkKLQotICAgIHNoYXJlZF9hcnJheSggc2hhcmVkX2FycmF5IGNvbnN0ICYgciApIE5ETkJPT1NUX05PRVhDRVBUIDogcHgoIHIucHggKSwgcG4oIHIucG4gKQotICAgIHsKLSAgICB9Ci0KLSAgICBzaGFyZWRfYXJyYXkoIHNoYXJlZF9hcnJheSAmJiByICkgTkROQk9PU1RfTk9FWENFUFQgOiBweCggci5weCApLCBwbigpCi0gICAgewotICAgICAgICBwbi5zd2FwKCByLnBuICk7Ci0gICAgICAgIHIucHggPSAwOwotICAgIH0KLQotI2VuZGlmCi0KLSAgICAvLyBjb252ZXJzaW9uCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBZPgotI2lmICFkZWZpbmVkKCBORE5CT09TVF9TUF9OT19TUF9DT05WRVJUSUJMRSApCi0KLSAgICBzaGFyZWRfYXJyYXkoIHNoYXJlZF9hcnJheTxZPiBjb25zdCAmIHIsIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VuYWJsZV9pZl9jb252ZXJ0aWJsZTwgWVtdLCBUW10gPjo6dHlwZSA9IG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VtcHR5KCkgKQotCi0jZWxzZQotCi0gICAgc2hhcmVkX2FycmF5KCBzaGFyZWRfYXJyYXk8WT4gY29uc3QgJiByICkKLQotI2VuZGlmCi0gICAgTkROQk9PU1RfTk9FWENFUFQgOiBweCggci5weCApLCBwbiggci5wbiApIC8vIG5ldmVyIHRocm93cwotICAgIHsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfYXNzZXJ0X2NvbnZlcnRpYmxlPCBZW10sIFRbXSA+KCk7Ci0gICAgfQotCi0gICAgLy8gYWxpYXNpbmcKLQotICAgIHRlbXBsYXRlPCBjbGFzcyBZID4KLSAgICBzaGFyZWRfYXJyYXkoIHNoYXJlZF9hcnJheTxZPiBjb25zdCAmIHIsIGVsZW1lbnRfdHlwZSAqIHAgKSBORE5CT09TVF9OT0VYQ0VQVCA6IHB4KCBwICksIHBuKCByLnBuICkKLSAgICB7Ci0gICAgfQotCi0gICAgLy8gYXNzaWdubWVudAotCi0gICAgc2hhcmVkX2FycmF5ICYgb3BlcmF0b3I9KCBzaGFyZWRfYXJyYXkgY29uc3QgJiByICkgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIHRoaXNfdHlwZSggciApLnN3YXAoICp0aGlzICk7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9NU1ZDKSB8fCAoTkROQk9PU1RfTVNWQyA+PSAxNDAwKQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgWT4KLSAgICBzaGFyZWRfYXJyYXkgJiBvcGVyYXRvcj0oIHNoYXJlZF9hcnJheTxZPiBjb25zdCAmIHIgKSBORE5CT09TVF9OT0VYQ0VQVAotICAgIHsKLSAgICAgICAgdGhpc190eXBlKCByICkuc3dhcCggKnRoaXMgKTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMgKQotCi0gICAgc2hhcmVkX2FycmF5ICYgb3BlcmF0b3I9KCBzaGFyZWRfYXJyYXkgJiYgciApIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgewotICAgICAgICB0aGlzX3R5cGUoIHN0YXRpY19jYXN0PCBzaGFyZWRfYXJyYXkgJiYgPiggciApICkuc3dhcCggKnRoaXMgKTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFk+Ci0gICAgc2hhcmVkX2FycmF5ICYgb3BlcmF0b3I9KCBzaGFyZWRfYXJyYXk8WT4gJiYgciApIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgewotICAgICAgICB0aGlzX3R5cGUoIHN0YXRpY19jYXN0PCBzaGFyZWRfYXJyYXk8WT4gJiYgPiggciApICkuc3dhcCggKnRoaXMgKTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotI2VuZGlmCi0KLSAgICB2b2lkIHJlc2V0KCkgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIHRoaXNfdHlwZSgpLnN3YXAoICp0aGlzICk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgWT4gdm9pZCByZXNldCggWSAqIHAgKSAvLyBZIG11c3QgYmUgY29tcGxldGUKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX0FTU0VSVCggcCA9PSAwIHx8IHAgIT0gcHggKTsgLy8gY2F0Y2ggc2VsZi1yZXNldCBlcnJvcnMKLSAgICAgICAgdGhpc190eXBlKCBwICkuc3dhcCggKnRoaXMgKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBZLCBjbGFzcyBEPiB2b2lkIHJlc2V0KCBZICogcCwgRCBkICkKLSAgICB7Ci0gICAgICAgIHRoaXNfdHlwZSggcCwgZCApLnN3YXAoICp0aGlzICk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgWSwgY2xhc3MgRCwgY2xhc3MgQT4gdm9pZCByZXNldCggWSAqIHAsIEQgZCwgQSBhICkKLSAgICB7Ci0gICAgICAgIHRoaXNfdHlwZSggcCwgZCwgYSApLnN3YXAoICp0aGlzICk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgWT4gdm9pZCByZXNldCggc2hhcmVkX2FycmF5PFk+IGNvbnN0ICYgciwgZWxlbWVudF90eXBlICogcCApCi0gICAgewotICAgICAgICB0aGlzX3R5cGUoIHIsIHAgKS5zd2FwKCAqdGhpcyApOwotICAgIH0KLQotICAgIFQgJiBvcGVyYXRvcltdIChzdGQ6OnB0cmRpZmZfdCBpKSBjb25zdCAvLyBuZXZlciB0aHJvd3MgKGJ1dCBoYXMgYSBORE5CT09TVF9BU1NFUlQgaW4gaXQsIHNvIG5vdCBtYXJrZWQgd2l0aCBORE5CT09TVF9OT0VYQ0VQVCkKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX0FTU0VSVChweCAhPSAwKTsKLSAgICAgICAgTkROQk9PU1RfQVNTRVJUKGkgPj0gMCk7Ci0gICAgICAgIHJldHVybiBweFtpXTsKLSAgICB9Ci0gICAgCi0gICAgVCAqIGdldCgpIGNvbnN0IE5ETkJPT1NUX05PRVhDRVBUCi0gICAgewotICAgICAgICByZXR1cm4gcHg7Ci0gICAgfQotCi0vLyBpbXBsaWNpdCBjb252ZXJzaW9uIHRvICJib29sIgotI2luY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvb3BlcmF0b3JfYm9vbC5ocHA+Ci0KLSAgICBib29sIHVuaXF1ZSgpIGNvbnN0IE5ETkJPT1NUX05PRVhDRVBUCi0gICAgewotICAgICAgICByZXR1cm4gcG4udW5pcXVlKCk7Ci0gICAgfQotCi0gICAgbG9uZyB1c2VfY291bnQoKSBjb25zdCBORE5CT09TVF9OT0VYQ0VQVAotICAgIHsKLSAgICAgICAgcmV0dXJuIHBuLnVzZV9jb3VudCgpOwotICAgIH0KLQotICAgIHZvaWQgc3dhcChzaGFyZWRfYXJyYXk8VD4gJiBvdGhlcikgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIHN0ZDo6c3dhcChweCwgb3RoZXIucHgpOwotICAgICAgICBwbi5zd2FwKG90aGVyLnBuKTsKLSAgICB9Ci0KLSAgICB2b2lkICogX2ludGVybmFsX2dldF9kZWxldGVyKCBuZG5ib29zdDo6ZGV0YWlsOjpzcF90eXBlaW5mbyBjb25zdCAmIHRpICkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBwbi5nZXRfZGVsZXRlciggdGkgKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBZPiBmcmllbmQgY2xhc3Mgc2hhcmVkX2FycmF5OwotCi0gICAgVCAqIHB4OyAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnRhaW5lZCBwb2ludGVyCi0gICAgZGV0YWlsOjpzaGFyZWRfY291bnQgcG47ICAgIC8vIHJlZmVyZW5jZSBjb3VudGVyCi0KLX07ICAvLyBzaGFyZWRfYXJyYXkKLQotdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIGJvb2wgb3BlcmF0b3I9PShzaGFyZWRfYXJyYXk8VD4gY29uc3QgJiBhLCBzaGFyZWRfYXJyYXk8VD4gY29uc3QgJiBiKSBORE5CT09TVF9OT0VYQ0VQVAotewotICAgIHJldHVybiBhLmdldCgpID09IGIuZ2V0KCk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSBib29sIG9wZXJhdG9yIT0oc2hhcmVkX2FycmF5PFQ+IGNvbnN0ICYgYSwgc2hhcmVkX2FycmF5PFQ+IGNvbnN0ICYgYikgTkROQk9PU1RfTk9FWENFUFQKLXsKLSAgICByZXR1cm4gYS5nZXQoKSAhPSBiLmdldCgpOwotfQotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX0NYWDExX05VTExQVFIgKQotCi10ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KCBzaGFyZWRfYXJyYXk8VD4gY29uc3QgJiBwLCBuZG5ib29zdDo6ZGV0YWlsOjpzcF9udWxscHRyX3QgKSBORE5CT09TVF9OT0VYQ0VQVAotewotICAgIHJldHVybiBwLmdldCgpID09IDA7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSBib29sIG9wZXJhdG9yPT0oIG5kbmJvb3N0OjpkZXRhaWw6OnNwX251bGxwdHJfdCwgc2hhcmVkX2FycmF5PFQ+IGNvbnN0ICYgcCApIE5ETkJPT1NUX05PRVhDRVBUCi17Ci0gICAgcmV0dXJuIHAuZ2V0KCkgPT0gMDsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPSggc2hhcmVkX2FycmF5PFQ+IGNvbnN0ICYgcCwgbmRuYm9vc3Q6OmRldGFpbDo6c3BfbnVsbHB0cl90ICkgTkROQk9PU1RfTk9FWENFUFQKLXsKLSAgICByZXR1cm4gcC5nZXQoKSAhPSAwOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KCBuZG5ib29zdDo6ZGV0YWlsOjpzcF9udWxscHRyX3QsIHNoYXJlZF9hcnJheTxUPiBjb25zdCAmIHAgKSBORE5CT09TVF9OT0VYQ0VQVAotewotICAgIHJldHVybiBwLmdldCgpICE9IDA7Ci19Ci0KLSNlbmRpZgotCi10ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgYm9vbCBvcGVyYXRvcjwoc2hhcmVkX2FycmF5PFQ+IGNvbnN0ICYgYSwgc2hhcmVkX2FycmF5PFQ+IGNvbnN0ICYgYikgTkROQk9PU1RfTk9FWENFUFQKLXsKLSAgICByZXR1cm4gc3RkOjpsZXNzPFQqPigpKGEuZ2V0KCksIGIuZ2V0KCkpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUPiB2b2lkIHN3YXAoc2hhcmVkX2FycmF5PFQ+ICYgYSwgc2hhcmVkX2FycmF5PFQ+ICYgYikgTkROQk9PU1RfTk9FWENFUFQKLXsKLSAgICBhLnN3YXAoYik7Ci19Ci0KLXRlbXBsYXRlPCBjbGFzcyBELCBjbGFzcyBUID4gRCAqIGdldF9kZWxldGVyKCBzaGFyZWRfYXJyYXk8VD4gY29uc3QgJiBwICkKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8IEQgKiA+KCBwLl9pbnRlcm5hbF9nZXRfZGVsZXRlciggTkROQk9PU1RfU1BfVFlQRUlEKEQpICkgKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmICAvLyAjaWYgZGVmaW5lZChORE5CT09TVF9OT19NRU1CRVJfVEVNUExBVEVTKSAmJiAhZGVmaW5lZChORE5CT09TVF9NU1ZDNl9NRU1CRVJfVEVNUExBVEVTKQotCi0jZW5kaWYgIC8vICNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX1NIQVJFRF9BUlJBWV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc21hcnRfcHRyL3NoYXJlZF9wdHIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvc2hhcmVkX3B0ci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUwZmE0N2UuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvc2hhcmVkX3B0ci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDM1ICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX1NIQVJFRF9QVFJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1NNQVJUX1BUUl9TSEFSRURfUFRSX0hQUF9JTkNMVURFRAotCi0vLwotLy8gIHNoYXJlZF9wdHIuaHBwCi0vLwotLy8gIChDKSBDb3B5cmlnaHQgR3JlZyBDb2x2aW4gYW5kIEJlbWFuIERhd2VzIDE5OTgsIDE5OTkuCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAxLTIwMDggUGV0ZXIgRGltb3YKLS8vCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyAgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3NtYXJ0X3B0ci9zaGFyZWRfcHRyLmh0bSBmb3IgZG9jdW1lbnRhdGlvbi4KLS8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiAgIC8vIGZvciBicm9rZW4gY29tcGlsZXIgd29ya2Fyb3VuZHMKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fTUVNQkVSX1RFTVBMQVRFUykgJiYgIWRlZmluZWQoTkROQk9PU1RfTVNWQzZfTUVNQkVSX1RFTVBMQVRFUykKLSNpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NoYXJlZF9wdHJfbm10LmhwcD4KLSNlbHNlCi0KLS8vIEluIG9yZGVyIHRvIGF2b2lkIGNpcmN1bGFyIGRlcGVuZGVuY2llcyB3aXRoIEJvb3N0LlRSMQotLy8gd2UgbWFrZSBzdXJlIHRoYXQgb3VyIGluY2x1ZGUgb2YgPG1lbW9yeT4gZG9lc24ndCB0cnkgdG8KLS8vIHB1bGwgaW4gdGhlIFRSMSBoZWFkZXJzOiB0aGF0J3Mgd2h5IHdlIHVzZSB0aGlzIGhlYWRlciAKLS8vIHJhdGhlciB0aGFuIGluY2x1ZGluZyA8bWVtb3J5PiBkaXJlY3RseToKLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcvbm9fdHIxL21lbW9yeS5ocHA+ICAvLyBzdGQ6OmF1dG9fcHRyCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9hc3NlcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NoZWNrZWRfZGVsZXRlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90aHJvd19leGNlcHRpb24uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc2hhcmVkX2NvdW50LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9jb252ZXJ0aWJsZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc21hcnRfcHRyL2RldGFpbC9zcF9udWxscHRyX3QuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfU1BfTk9fQVRPTUlDX0FDQ0VTUykKLSNpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL3NwaW5sb2NrX3Bvb2wuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21lbW9yeV9vcmRlci5ocHA+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPGFsZ29yaXRobT4gICAgICAgICAgICAvLyBmb3Igc3RkOjpzd2FwCi0jaW5jbHVkZSA8ZnVuY3Rpb25hbD4gICAgICAgICAgIC8vIGZvciBzdGQ6Omxlc3MKLSNpbmNsdWRlIDx0eXBlaW5mbz4gICAgICAgICAgICAgLy8gZm9yIHN0ZDo6YmFkX2Nhc3QKLSNpbmNsdWRlIDxjc3RkZGVmPiAgICAgICAgICAgICAgLy8gZm9yIHN0ZDo6c2l6ZV90Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19JT1NUUkVBTSkKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19JT1NGV0QpCi0jaW5jbHVkZSA8aW9zZndkPiAgICAgICAgICAgICAgIC8vIGZvciBzdGQ6OmJhc2ljX29zdHJlYW0KLSNlbHNlCi0jaW5jbHVkZSA8b3N0cmVhbT4KLSNlbmRpZgotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi10ZW1wbGF0ZTxjbGFzcyBUPiBjbGFzcyBzaGFyZWRfcHRyOwotdGVtcGxhdGU8Y2xhc3MgVD4gY2xhc3Mgd2Vha19wdHI7Ci10ZW1wbGF0ZTxjbGFzcyBUPiBjbGFzcyBlbmFibGVfc2hhcmVkX2Zyb21fdGhpczsKLWNsYXNzIGVuYWJsZV9zaGFyZWRfZnJvbV9yYXc7Ci0KLW5hbWVzcGFjZSBkZXRhaWwKLXsKLQotLy8gc3BfZWxlbWVudCwgZWxlbWVudF90eXBlCi0KLXRlbXBsYXRlPCBjbGFzcyBUID4gc3RydWN0IHNwX2VsZW1lbnQKLXsKLSAgICB0eXBlZGVmIFQgdHlwZTsKLX07Ci0KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTiApCi0KLXRlbXBsYXRlPCBjbGFzcyBUID4gc3RydWN0IHNwX2VsZW1lbnQ8IFRbXSA+Ci17Ci0gICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotCi0jaWYgIWRlZmluZWQoIF9fQk9STEFORENfXyApIHx8ICFORE5CT09TVF9XT1JLQVJPVU5EKCBfX0JPUkxBTkRDX18sIDwgMHg2MDAgKQotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgc3RkOjpzaXplX3QgTiA+IHN0cnVjdCBzcF9lbGVtZW50PCBUW05dID4KLXsKLSAgICB0eXBlZGVmIFQgdHlwZTsKLX07Ci0KLSNlbmRpZgotCi0jZW5kaWYgLy8gIWRlZmluZWQoIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04gKQotCi0vLyBzcF9kZXJlZmVyZW5jZSwgcmV0dXJuIHR5cGUgb2Ygb3BlcmF0b3IqCi0KLXRlbXBsYXRlPCBjbGFzcyBUID4gc3RydWN0IHNwX2RlcmVmZXJlbmNlCi17Ci0gICAgdHlwZWRlZiBUICYgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IHNwX2RlcmVmZXJlbmNlPCB2b2lkID4KLXsKLSAgICB0eXBlZGVmIHZvaWQgdHlwZTsKLX07Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DVl9WT0lEX1NQRUNJQUxJWkFUSU9OUykKLQotdGVtcGxhdGU8PiBzdHJ1Y3Qgc3BfZGVyZWZlcmVuY2U8IHZvaWQgY29uc3QgPgotewotICAgIHR5cGVkZWYgdm9pZCB0eXBlOwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3Qgc3BfZGVyZWZlcmVuY2U8IHZvaWQgdm9sYXRpbGUgPgotewotICAgIHR5cGVkZWYgdm9pZCB0eXBlOwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3Qgc3BfZGVyZWZlcmVuY2U8IHZvaWQgY29uc3Qgdm9sYXRpbGUgPgotewotICAgIHR5cGVkZWYgdm9pZCB0eXBlOwotfTsKLQotI2VuZGlmIC8vICFkZWZpbmVkKE5ETkJPT1NUX05PX0NWX1ZPSURfU1BFQ0lBTElaQVRJT05TKQotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04gKQotCi10ZW1wbGF0ZTwgY2xhc3MgVCA+IHN0cnVjdCBzcF9kZXJlZmVyZW5jZTwgVFtdID4KLXsKLSAgICB0eXBlZGVmIHZvaWQgdHlwZTsKLX07Ci0KLSNpZiAhZGVmaW5lZCggX19CT1JMQU5EQ19fICkgfHwgIU5ETkJPT1NUX1dPUktBUk9VTkQoIF9fQk9STEFORENfXywgPCAweDYwMCApCi0KLXRlbXBsYXRlPCBjbGFzcyBULCBzdGQ6OnNpemVfdCBOID4gc3RydWN0IHNwX2RlcmVmZXJlbmNlPCBUW05dID4KLXsKLSAgICB0eXBlZGVmIHZvaWQgdHlwZTsKLX07Ci0KLSNlbmRpZgotCi0jZW5kaWYgLy8gIWRlZmluZWQoIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04gKQotCi0vLyBzcF9tZW1iZXJfYWNjZXNzLCByZXR1cm4gdHlwZSBvZiBvcGVyYXRvci0+Ci0KLXRlbXBsYXRlPCBjbGFzcyBUID4gc3RydWN0IHNwX21lbWJlcl9hY2Nlc3MKLXsKLSAgICB0eXBlZGVmIFQgKiB0eXBlOwotfTsKLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OICkKLQotdGVtcGxhdGU8IGNsYXNzIFQgPiBzdHJ1Y3Qgc3BfbWVtYmVyX2FjY2VzczwgVFtdID4KLXsKLSAgICB0eXBlZGVmIHZvaWQgdHlwZTsKLX07Ci0KLSNpZiAhZGVmaW5lZCggX19CT1JMQU5EQ19fICkgfHwgIU5ETkJPT1NUX1dPUktBUk9VTkQoIF9fQk9STEFORENfXywgPCAweDYwMCApCi0KLXRlbXBsYXRlPCBjbGFzcyBULCBzdGQ6OnNpemVfdCBOID4gc3RydWN0IHNwX21lbWJlcl9hY2Nlc3M8IFRbTl0gPgotewotICAgIHR5cGVkZWYgdm9pZCB0eXBlOwotfTsKLQotI2VuZGlmCi0KLSNlbmRpZiAvLyAhZGVmaW5lZCggTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTiApCi0KLS8vIHNwX2FycmF5X2FjY2VzcywgcmV0dXJuIHR5cGUgb2Ygb3BlcmF0b3JbXQotCi10ZW1wbGF0ZTwgY2xhc3MgVCA+IHN0cnVjdCBzcF9hcnJheV9hY2Nlc3MKLXsKLSAgICB0eXBlZGVmIHZvaWQgdHlwZTsKLX07Ci0KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTiApCi0KLXRlbXBsYXRlPCBjbGFzcyBUID4gc3RydWN0IHNwX2FycmF5X2FjY2VzczwgVFtdID4KLXsKLSAgICB0eXBlZGVmIFQgJiB0eXBlOwotfTsKLQotI2lmICFkZWZpbmVkKCBfX0JPUkxBTkRDX18gKSB8fCAhTkROQk9PU1RfV09SS0FST1VORCggX19CT1JMQU5EQ19fLCA8IDB4NjAwICkKLQotdGVtcGxhdGU8IGNsYXNzIFQsIHN0ZDo6c2l6ZV90IE4gPiBzdHJ1Y3Qgc3BfYXJyYXlfYWNjZXNzPCBUW05dID4KLXsKLSAgICB0eXBlZGVmIFQgJiB0eXBlOwotfTsKLQotI2VuZGlmCi0KLSNlbmRpZiAvLyAhZGVmaW5lZCggTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTiApCi0KLS8vIHNwX2V4dGVudCwgZm9yIG9wZXJhdG9yW10gaW5kZXggY2hlY2sKLQotdGVtcGxhdGU8IGNsYXNzIFQgPiBzdHJ1Y3Qgc3BfZXh0ZW50Ci17Ci0gICAgZW51bSBfdnQgeyB2YWx1ZSA9IDAgfTsKLX07Ci0KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTiApCi0KLXRlbXBsYXRlPCBjbGFzcyBULCBzdGQ6OnNpemVfdCBOID4gc3RydWN0IHNwX2V4dGVudDwgVFtOXSA+Ci17Ci0gICAgZW51bSBfdnQgeyB2YWx1ZSA9IE4gfTsKLX07Ci0KLSNlbmRpZiAvLyAhZGVmaW5lZCggTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTiApCi0KLS8vIGVuYWJsZV9zaGFyZWRfZnJvbV90aGlzIHN1cHBvcnQKLQotdGVtcGxhdGU8IGNsYXNzIFgsIGNsYXNzIFksIGNsYXNzIFQgPiBpbmxpbmUgdm9pZCBzcF9lbmFibGVfc2hhcmVkX2Zyb21fdGhpcyggbmRuYm9vc3Q6OnNoYXJlZF9wdHI8WD4gY29uc3QgKiBwcHgsIFkgY29uc3QgKiBweSwgbmRuYm9vc3Q6OmVuYWJsZV9zaGFyZWRfZnJvbV90aGlzPCBUID4gY29uc3QgKiBwZSApCi17Ci0gICAgaWYoIHBlICE9IDAgKQotICAgIHsKLSAgICAgICAgcGUtPl9pbnRlcm5hbF9hY2NlcHRfb3duZXIoIHBweCwgY29uc3RfY2FzdDwgWSogPiggcHkgKSApOwotICAgIH0KLX0KLQotdGVtcGxhdGU8IGNsYXNzIFgsIGNsYXNzIFkgPiBpbmxpbmUgdm9pZCBzcF9lbmFibGVfc2hhcmVkX2Zyb21fdGhpcyggbmRuYm9vc3Q6OnNoYXJlZF9wdHI8WD4gKiBwcHgsIFkgY29uc3QgKiBweSwgbmRuYm9vc3Q6OmVuYWJsZV9zaGFyZWRfZnJvbV9yYXcgY29uc3QgKiBwZSApOwotCi0jaWZkZWYgX01BTkFHRUQKLQotLy8gQXZvaWQgQzQ3OTMsIC4uLiBjYXVzZXMgbmF0aXZlIGNvZGUgZ2VuZXJhdGlvbgotCi1zdHJ1Y3Qgc3BfYW55X3BvaW50ZXIKLXsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPiBzcF9hbnlfcG9pbnRlciggVCogKSB7fQotfTsKLQotaW5saW5lIHZvaWQgc3BfZW5hYmxlX3NoYXJlZF9mcm9tX3RoaXMoIHNwX2FueV9wb2ludGVyLCBzcF9hbnlfcG9pbnRlciwgc3BfYW55X3BvaW50ZXIgKQotewotfQotCi0jZWxzZSAvLyBfTUFOQUdFRAotCi1pbmxpbmUgdm9pZCBzcF9lbmFibGVfc2hhcmVkX2Zyb21fdGhpcyggLi4uICkKLXsKLX0KLQotI2VuZGlmIC8vIF9NQU5BR0VECi0KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfTk9fU0ZJTkFFICkgJiYgIWRlZmluZWQoIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04gKSAmJiAhZGVmaW5lZCggTkROQk9PU1RfTk9fQVVUT19QVFIgKQotCi0vLyBydmFsdWUgYXV0b19wdHIgc3VwcG9ydCBiYXNlZCBvbiBhIHRlY2huaXF1ZSBieSBEYXZlIEFicmFoYW1zCi0KLXRlbXBsYXRlPCBjbGFzcyBULCBjbGFzcyBSID4gc3RydWN0IHNwX2VuYWJsZV9pZl9hdXRvX3B0cgotewotfTsKLQotdGVtcGxhdGU8IGNsYXNzIFQsIGNsYXNzIFIgPiBzdHJ1Y3Qgc3BfZW5hYmxlX2lmX2F1dG9fcHRyPCBzdGQ6OmF1dG9fcHRyPCBUID4sIFIgPgotewotICAgIHR5cGVkZWYgUiB0eXBlOwotfTsgCi0KLSNlbmRpZgotCi0vLyBzcF9hc3NlcnRfY29udmVydGlibGUKLQotdGVtcGxhdGU8IGNsYXNzIFksIGNsYXNzIFQgPiBpbmxpbmUgdm9pZCBzcF9hc3NlcnRfY29udmVydGlibGUoKQotewotI2lmICFkZWZpbmVkKCBORE5CT09TVF9TUF9OT19TUF9DT05WRVJUSUJMRSApCi0KLSAgICAvLyBzdGF0aWNfYXNzZXJ0KCBzcF9jb252ZXJ0aWJsZTwgWSwgVCA+Ojp2YWx1ZSApOwotICAgIHR5cGVkZWYgY2hhciB0bXBbIHNwX2NvbnZlcnRpYmxlPCBZLCBUID46OnZhbHVlPyAxOiAtMSBdOwotICAgICh2b2lkKXNpemVvZiggdG1wICk7Ci0KLSNlbHNlCi0KLSAgICBUKiBwID0gc3RhdGljX2Nhc3Q8IFkqID4oIDAgKTsKLSAgICAodm9pZClwOwotCi0jZW5kaWYKLX0KLQotLy8gcG9pbnRlciBjb25zdHJ1Y3RvciBoZWxwZXIKLQotdGVtcGxhdGU8IGNsYXNzIFQsIGNsYXNzIFkgPiBpbmxpbmUgdm9pZCBzcF9wb2ludGVyX2NvbnN0cnVjdCggbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiAqIHBweCwgWSAqIHAsIG5kbmJvb3N0OjpkZXRhaWw6OnNoYXJlZF9jb3VudCAmIHBuICkKLXsKLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzaGFyZWRfY291bnQoIHAgKS5zd2FwKCBwbiApOwotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VuYWJsZV9zaGFyZWRfZnJvbV90aGlzKCBwcHgsIHAsIHAgKTsKLX0KLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OICkKLQotdGVtcGxhdGU8IGNsYXNzIFQsIGNsYXNzIFkgPiBpbmxpbmUgdm9pZCBzcF9wb2ludGVyX2NvbnN0cnVjdCggbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFRbXSA+ICogLypwcHgqLywgWSAqIHAsIG5kbmJvb3N0OjpkZXRhaWw6OnNoYXJlZF9jb3VudCAmIHBuICkKLXsKLSAgICBzcF9hc3NlcnRfY29udmVydGlibGU8IFlbXSwgVFtdID4oKTsKLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzaGFyZWRfY291bnQoIHAsIG5kbmJvb3N0OjpjaGVja2VkX2FycmF5X2RlbGV0ZXI8IFQgPigpICkuc3dhcCggcG4gKTsKLX0KLQotdGVtcGxhdGU8IGNsYXNzIFQsIHN0ZDo6c2l6ZV90IE4sIGNsYXNzIFkgPiBpbmxpbmUgdm9pZCBzcF9wb2ludGVyX2NvbnN0cnVjdCggbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFRbTl0gPiAqIC8qcHB4Ki8sIFkgKiBwLCBuZG5ib29zdDo6ZGV0YWlsOjpzaGFyZWRfY291bnQgJiBwbiApCi17Ci0gICAgc3BfYXNzZXJ0X2NvbnZlcnRpYmxlPCBZW05dLCBUW05dID4oKTsKLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzaGFyZWRfY291bnQoIHAsIG5kbmJvb3N0OjpjaGVja2VkX2FycmF5X2RlbGV0ZXI8IFQgPigpICkuc3dhcCggcG4gKTsKLX0KLQotI2VuZGlmIC8vICFkZWZpbmVkKCBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OICkKLQotLy8gZGVsZXRlciBjb25zdHJ1Y3RvciBoZWxwZXIKLQotdGVtcGxhdGU8IGNsYXNzIFQsIGNsYXNzIFkgPiBpbmxpbmUgdm9pZCBzcF9kZWxldGVyX2NvbnN0cnVjdCggbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFQgPiAqIHBweCwgWSAqIHAgKQotewotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VuYWJsZV9zaGFyZWRfZnJvbV90aGlzKCBwcHgsIHAsIHAgKTsKLX0KLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OICkKLQotdGVtcGxhdGU8IGNsYXNzIFQsIGNsYXNzIFkgPiBpbmxpbmUgdm9pZCBzcF9kZWxldGVyX2NvbnN0cnVjdCggbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFRbXSA+ICogLypwcHgqLywgWSAqIC8qcCovICkKLXsKLSAgICBzcF9hc3NlcnRfY29udmVydGlibGU8IFlbXSwgVFtdID4oKTsKLX0KLQotdGVtcGxhdGU8IGNsYXNzIFQsIHN0ZDo6c2l6ZV90IE4sIGNsYXNzIFkgPiBpbmxpbmUgdm9pZCBzcF9kZWxldGVyX2NvbnN0cnVjdCggbmRuYm9vc3Q6OnNoYXJlZF9wdHI8IFRbTl0gPiAqIC8qcHB4Ki8sIFkgKiAvKnAqLyApCi17Ci0gICAgc3BfYXNzZXJ0X2NvbnZlcnRpYmxlPCBZW05dLCBUW05dID4oKTsKLX0KLQotI2VuZGlmIC8vICFkZWZpbmVkKCBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OICkKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLQotLy8KLS8vICBzaGFyZWRfcHRyCi0vLwotLy8gIEFuIGVuaGFuY2VkIHJlbGF0aXZlIG9mIHNjb3BlZF9wdHIgd2l0aCByZWZlcmVuY2UgY291bnRlZCBjb3B5IHNlbWFudGljcy4KLS8vICBUaGUgb2JqZWN0IHBvaW50ZWQgdG8gaXMgZGVsZXRlZCB3aGVuIHRoZSBsYXN0IHNoYXJlZF9wdHIgcG9pbnRpbmcgdG8gaXQKLS8vICBpcyBkZXN0cm95ZWQgb3IgcmVzZXQuCi0vLwotCi10ZW1wbGF0ZTxjbGFzcyBUPiBjbGFzcyBzaGFyZWRfcHRyCi17Ci1wcml2YXRlOgotCi0gICAgLy8gQm9ybGFuZCA1LjUuMSBzcGVjaWZpYyB3b3JrYXJvdW5kCi0gICAgdHlwZWRlZiBzaGFyZWRfcHRyPFQ+IHRoaXNfdHlwZTsKLQotcHVibGljOgotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbGVtZW50PCBUID46OnR5cGUgZWxlbWVudF90eXBlOwotCi0gICAgc2hhcmVkX3B0cigpIE5ETkJPT1NUX05PRVhDRVBUIDogcHgoIDAgKSwgcG4oKSAvLyBuZXZlciB0aHJvd3MgaW4gMS4zMCsKLSAgICB7Ci0gICAgfQotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX0NYWDExX05VTExQVFIgKQotCi0gICAgc2hhcmVkX3B0ciggbmRuYm9vc3Q6OmRldGFpbDo6c3BfbnVsbHB0cl90ICkgTkROQk9PU1RfTk9FWENFUFQgOiBweCggMCApLCBwbigpIC8vIG5ldmVyIHRocm93cwotICAgIHsKLSAgICB9Ci0KLSNlbmRpZgotCi0gICAgdGVtcGxhdGU8Y2xhc3MgWT4KLSAgICBleHBsaWNpdCBzaGFyZWRfcHRyKCBZICogcCApOiBweCggcCApLCBwbigpIC8vIFkgbXVzdCBiZSBjb21wbGV0ZQotICAgIHsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfcG9pbnRlcl9jb25zdHJ1Y3QoIHRoaXMsIHAsIHBuICk7Ci0gICAgfQotCi0gICAgLy8KLSAgICAvLyBSZXF1aXJlbWVudHM6IEQncyBjb3B5IGNvbnN0cnVjdG9yIG11c3Qgbm90IHRocm93Ci0gICAgLy8KLSAgICAvLyBzaGFyZWRfcHRyIHdpbGwgcmVsZWFzZSBwIGJ5IGNhbGxpbmcgZChwKQotICAgIC8vCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBZLCBjbGFzcyBEPiBzaGFyZWRfcHRyKCBZICogcCwgRCBkICk6IHB4KCBwICksIHBuKCBwLCBkICkKLSAgICB7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2RlbGV0ZXJfY29uc3RydWN0KCB0aGlzLCBwICk7Ci0gICAgfQotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX0NYWDExX05VTExQVFIgKQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgRD4gc2hhcmVkX3B0ciggbmRuYm9vc3Q6OmRldGFpbDo6c3BfbnVsbHB0cl90IHAsIEQgZCApOiBweCggcCApLCBwbiggcCwgZCApCi0gICAgewotICAgIH0KLQotI2VuZGlmCi0KLSAgICAvLyBBcyBhYm92ZSwgYnV0IHdpdGggYWxsb2NhdG9yLiBBJ3MgY29weSBjb25zdHJ1Y3RvciBzaGFsbCBub3QgdGhyb3cuCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBZLCBjbGFzcyBELCBjbGFzcyBBPiBzaGFyZWRfcHRyKCBZICogcCwgRCBkLCBBIGEgKTogcHgoIHAgKSwgcG4oIHAsIGQsIGEgKQotICAgIHsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZGVsZXRlcl9jb25zdHJ1Y3QoIHRoaXMsIHAgKTsKLSAgICB9Ci0KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfTk9fQ1hYMTFfTlVMTFBUUiApCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBELCBjbGFzcyBBPiBzaGFyZWRfcHRyKCBuZG5ib29zdDo6ZGV0YWlsOjpzcF9udWxscHRyX3QgcCwgRCBkLCBBIGEgKTogcHgoIHAgKSwgcG4oIHAsIGQsIGEgKQotICAgIHsKLSAgICB9Ci0KLSNlbmRpZgotCi0vLyAgZ2VuZXJhdGVkIGNvcHkgY29uc3RydWN0b3IsIGRlc3RydWN0b3IgYXJlIGZpbmUuLi4KLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUyApCi0KLS8vIC4uLiBleGNlcHQgaW4gQysrMHgsIG1vdmUgZGlzYWJsZXMgdGhlIGltcGxpY2l0IGNvcHkKLQotICAgIHNoYXJlZF9wdHIoIHNoYXJlZF9wdHIgY29uc3QgJiByICkgTkROQk9PU1RfTk9FWENFUFQgOiBweCggci5weCApLCBwbiggci5wbiApCi0gICAgewotICAgIH0KLQotI2VuZGlmCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBZPgotICAgIGV4cGxpY2l0IHNoYXJlZF9wdHIoIHdlYWtfcHRyPFk+IGNvbnN0ICYgciApOiBwbiggci5wbiApIC8vIG1heSB0aHJvdwotICAgIHsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfYXNzZXJ0X2NvbnZlcnRpYmxlPCBZLCBUID4oKTsKLQotICAgICAgICAvLyBpdCBpcyBub3cgc2FmZSB0byBjb3B5IHIucHgsIGFzIHBuKHIucG4pIGRpZCBub3QgdGhyb3cKLSAgICAgICAgcHggPSByLnB4OwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFk+Ci0gICAgc2hhcmVkX3B0ciggd2Vha19wdHI8WT4gY29uc3QgJiByLCBuZG5ib29zdDo6ZGV0YWlsOjpzcF9ub3Rocm93X3RhZyApCi0gICAgTkROQk9PU1RfTk9FWENFUFQgOiBweCggMCApLCBwbiggci5wbiwgbmRuYm9vc3Q6OmRldGFpbDo6c3Bfbm90aHJvd190YWcoKSApCi0gICAgewotICAgICAgICBpZiggIXBuLmVtcHR5KCkgKQotICAgICAgICB7Ci0gICAgICAgICAgICBweCA9IHIucHg7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBZPgotI2lmICFkZWZpbmVkKCBORE5CT09TVF9TUF9OT19TUF9DT05WRVJUSUJMRSApCi0KLSAgICBzaGFyZWRfcHRyKCBzaGFyZWRfcHRyPFk+IGNvbnN0ICYgciwgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZW5hYmxlX2lmX2NvbnZlcnRpYmxlPFksVD46OnR5cGUgPSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbXB0eSgpICkKLQotI2Vsc2UKLQotICAgIHNoYXJlZF9wdHIoIHNoYXJlZF9wdHI8WT4gY29uc3QgJiByICkKLQotI2VuZGlmCi0gICAgTkROQk9PU1RfTk9FWENFUFQgOiBweCggci5weCApLCBwbiggci5wbiApCi0gICAgewotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9hc3NlcnRfY29udmVydGlibGU8IFksIFQgPigpOwotICAgIH0KLQotICAgIC8vIGFsaWFzaW5nCi0gICAgdGVtcGxhdGU8IGNsYXNzIFkgPgotICAgIHNoYXJlZF9wdHIoIHNoYXJlZF9wdHI8WT4gY29uc3QgJiByLCBlbGVtZW50X3R5cGUgKiBwICkgTkROQk9PU1RfTk9FWENFUFQgOiBweCggcCApLCBwbiggci5wbiApCi0gICAgewotICAgIH0KLQotI2lmbmRlZiBORE5CT09TVF9OT19BVVRPX1BUUgotCi0gICAgdGVtcGxhdGU8Y2xhc3MgWT4KLSAgICBleHBsaWNpdCBzaGFyZWRfcHRyKCBzdGQ6OmF1dG9fcHRyPFk+ICYgciApOiBweChyLmdldCgpKSwgcG4oKQotICAgIHsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfYXNzZXJ0X2NvbnZlcnRpYmxlPCBZLCBUID4oKTsKLQotICAgICAgICBZICogdG1wID0gci5nZXQoKTsKLSAgICAgICAgcG4gPSBuZG5ib29zdDo6ZGV0YWlsOjpzaGFyZWRfY291bnQoIHIgKTsKLQotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9kZWxldGVyX2NvbnN0cnVjdCggdGhpcywgdG1wICk7Ci0gICAgfQotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTICkKLQotICAgIHRlbXBsYXRlPGNsYXNzIFk+Ci0gICAgc2hhcmVkX3B0ciggc3RkOjphdXRvX3B0cjxZPiAmJiByICk6IHB4KHIuZ2V0KCkpLCBwbigpCi0gICAgewotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9hc3NlcnRfY29udmVydGlibGU8IFksIFQgPigpOwotCi0gICAgICAgIFkgKiB0bXAgPSByLmdldCgpOwotICAgICAgICBwbiA9IG5kbmJvb3N0OjpkZXRhaWw6OnNoYXJlZF9jb3VudCggciApOwotCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2RlbGV0ZXJfY29uc3RydWN0KCB0aGlzLCB0bXAgKTsKLSAgICB9Ci0KLSNlbGlmICFkZWZpbmVkKCBORE5CT09TVF9OT19TRklOQUUgKSAmJiAhZGVmaW5lZCggTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTiApCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBcD4KLSAgICBleHBsaWNpdCBzaGFyZWRfcHRyKCBBcCByLCB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbmFibGVfaWZfYXV0b19wdHI8QXAsIGludD46OnR5cGUgPSAwICk6IHB4KCByLmdldCgpICksIHBuKCkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgQXA6OmVsZW1lbnRfdHlwZSBZOwotCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2Fzc2VydF9jb252ZXJ0aWJsZTwgWSwgVCA+KCk7Ci0KLSAgICAgICAgWSAqIHRtcCA9IHIuZ2V0KCk7Ci0gICAgICAgIHBuID0gbmRuYm9vc3Q6OmRldGFpbDo6c2hhcmVkX2NvdW50KCByICk7Ci0KLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZGVsZXRlcl9jb25zdHJ1Y3QoIHRoaXMsIHRtcCApOwotICAgIH0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1NGSU5BRSwgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fQVVUT19QVFIKLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19DWFgxMV9TTUFSVF9QVFIgKSAmJiAhZGVmaW5lZCggTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMgKQotCi0gICAgdGVtcGxhdGU8IGNsYXNzIFksIGNsYXNzIEQgPgotICAgIHNoYXJlZF9wdHIoIHN0ZDo6dW5pcXVlX3B0cjwgWSwgRCA+ICYmIHIgKTogcHgoIHIuZ2V0KCkgKSwgcG4oKQotICAgIHsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfYXNzZXJ0X2NvbnZlcnRpYmxlPCBZLCBUID4oKTsKLQotICAgICAgICB0eXBlbmFtZSBzdGQ6OnVuaXF1ZV9wdHI8IFksIEQgPjo6cG9pbnRlciB0bXAgPSByLmdldCgpOwotICAgICAgICBwbiA9IG5kbmJvb3N0OjpkZXRhaWw6OnNoYXJlZF9jb3VudCggciApOwotCi0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2RlbGV0ZXJfY29uc3RydWN0KCB0aGlzLCB0bXAgKTsKLSAgICB9Ci0KLSNlbmRpZgotCi0gICAgLy8gYXNzaWdubWVudAotCi0gICAgc2hhcmVkX3B0ciAmIG9wZXJhdG9yPSggc2hhcmVkX3B0ciBjb25zdCAmIHIgKSBORE5CT09TVF9OT0VYQ0VQVAotICAgIHsKLSAgICAgICAgdGhpc190eXBlKHIpLnN3YXAoKnRoaXMpOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTVNWQykgfHwgKE5ETkJPT1NUX01TVkMgPj0gMTQwMCkKLQotICAgIHRlbXBsYXRlPGNsYXNzIFk+Ci0gICAgc2hhcmVkX3B0ciAmIG9wZXJhdG9yPShzaGFyZWRfcHRyPFk+IGNvbnN0ICYgcikgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIHRoaXNfdHlwZShyKS5zd2FwKCp0aGlzKTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotI2VuZGlmCi0KLSNpZm5kZWYgTkROQk9PU1RfTk9fQVVUT19QVFIKLQotICAgIHRlbXBsYXRlPGNsYXNzIFk+Ci0gICAgc2hhcmVkX3B0ciAmIG9wZXJhdG9yPSggc3RkOjphdXRvX3B0cjxZPiAmIHIgKQotICAgIHsKLSAgICAgICAgdGhpc190eXBlKCByICkuc3dhcCggKnRoaXMgKTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUyApCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBZPgotICAgIHNoYXJlZF9wdHIgJiBvcGVyYXRvcj0oIHN0ZDo6YXV0b19wdHI8WT4gJiYgciApCi0gICAgewotICAgICAgICB0aGlzX3R5cGUoIHN0YXRpY19jYXN0PCBzdGQ6OmF1dG9fcHRyPFk+ICYmID4oIHIgKSApLnN3YXAoICp0aGlzICk7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSNlbGlmICFkZWZpbmVkKCBORE5CT09TVF9OT19TRklOQUUgKSAmJiAhZGVmaW5lZCggTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTiApCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBBcD4KLSAgICB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbmFibGVfaWZfYXV0b19wdHI8IEFwLCBzaGFyZWRfcHRyICYgPjo6dHlwZSBvcGVyYXRvcj0oIEFwIHIgKQotICAgIHsKLSAgICAgICAgdGhpc190eXBlKCByICkuc3dhcCggKnRoaXMgKTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1NGSU5BRSwgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fQVVUT19QVFIKLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19DWFgxMV9TTUFSVF9QVFIgKSAmJiAhZGVmaW5lZCggTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMgKQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgWSwgY2xhc3MgRD4KLSAgICBzaGFyZWRfcHRyICYgb3BlcmF0b3I9KCBzdGQ6OnVuaXF1ZV9wdHI8WSwgRD4gJiYgciApCi0gICAgewotICAgICAgICB0aGlzX3R5cGUoIHN0YXRpY19jYXN0PCBzdGQ6OnVuaXF1ZV9wdHI8WSwgRD4gJiYgPiggciApICkuc3dhcCgqdGhpcyk7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSNlbmRpZgotCi0vLyBNb3ZlIHN1cHBvcnQKLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUyApCi0KLSAgICBzaGFyZWRfcHRyKCBzaGFyZWRfcHRyICYmIHIgKSBORE5CT09TVF9OT0VYQ0VQVCA6IHB4KCByLnB4ICksIHBuKCkKLSAgICB7Ci0gICAgICAgIHBuLnN3YXAoIHIucG4gKTsKLSAgICAgICAgci5weCA9IDA7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgWT4KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfU1BfTk9fU1BfQ09OVkVSVElCTEUgKQotCi0gICAgc2hhcmVkX3B0ciggc2hhcmVkX3B0cjxZPiAmJiByLCB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbmFibGVfaWZfY29udmVydGlibGU8WSxUPjo6dHlwZSA9IG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VtcHR5KCkgKQotCi0jZWxzZQotCi0gICAgc2hhcmVkX3B0ciggc2hhcmVkX3B0cjxZPiAmJiByICkKLQotI2VuZGlmCi0gICAgTkROQk9PU1RfTk9FWENFUFQgOiBweCggci5weCApLCBwbigpCi0gICAgewotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9hc3NlcnRfY29udmVydGlibGU8IFksIFQgPigpOwotCi0gICAgICAgIHBuLnN3YXAoIHIucG4gKTsKLSAgICAgICAgci5weCA9IDA7Ci0gICAgfQotCi0gICAgc2hhcmVkX3B0ciAmIG9wZXJhdG9yPSggc2hhcmVkX3B0ciAmJiByICkgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIHRoaXNfdHlwZSggc3RhdGljX2Nhc3Q8IHNoYXJlZF9wdHIgJiYgPiggciApICkuc3dhcCggKnRoaXMgKTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFk+Ci0gICAgc2hhcmVkX3B0ciAmIG9wZXJhdG9yPSggc2hhcmVkX3B0cjxZPiAmJiByICkgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIHRoaXNfdHlwZSggc3RhdGljX2Nhc3Q8IHNoYXJlZF9wdHI8WT4gJiYgPiggciApICkuc3dhcCggKnRoaXMgKTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfTk9fQ1hYMTFfTlVMTFBUUiApCi0KLSAgICBzaGFyZWRfcHRyICYgb3BlcmF0b3I9KCBuZG5ib29zdDo6ZGV0YWlsOjpzcF9udWxscHRyX3QgKSBORE5CT09TVF9OT0VYQ0VQVCAvLyBuZXZlciB0aHJvd3MKLSAgICB7Ci0gICAgICAgIHRoaXNfdHlwZSgpLnN3YXAoKnRoaXMpOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0jZW5kaWYKLQotICAgIHZvaWQgcmVzZXQoKSBORE5CT09TVF9OT0VYQ0VQVCAvLyBuZXZlciB0aHJvd3MgaW4gMS4zMCsKLSAgICB7Ci0gICAgICAgIHRoaXNfdHlwZSgpLnN3YXAoKnRoaXMpOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFk+IHZvaWQgcmVzZXQoIFkgKiBwICkgLy8gWSBtdXN0IGJlIGNvbXBsZXRlCi0gICAgewotICAgICAgICBORE5CT09TVF9BU1NFUlQoIHAgPT0gMCB8fCBwICE9IHB4ICk7IC8vIGNhdGNoIHNlbGYtcmVzZXQgZXJyb3JzCi0gICAgICAgIHRoaXNfdHlwZSggcCApLnN3YXAoICp0aGlzICk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgWSwgY2xhc3MgRD4gdm9pZCByZXNldCggWSAqIHAsIEQgZCApCi0gICAgewotICAgICAgICB0aGlzX3R5cGUoIHAsIGQgKS5zd2FwKCAqdGhpcyApOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFksIGNsYXNzIEQsIGNsYXNzIEE+IHZvaWQgcmVzZXQoIFkgKiBwLCBEIGQsIEEgYSApCi0gICAgewotICAgICAgICB0aGlzX3R5cGUoIHAsIGQsIGEgKS5zd2FwKCAqdGhpcyApOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFk+IHZvaWQgcmVzZXQoIHNoYXJlZF9wdHI8WT4gY29uc3QgJiByLCBlbGVtZW50X3R5cGUgKiBwICkKLSAgICB7Ci0gICAgICAgIHRoaXNfdHlwZSggciwgcCApLnN3YXAoICp0aGlzICk7Ci0gICAgfQotICAgIAotICAgIC8vIG5ldmVyIHRocm93cyAoYnV0IGhhcyBhIE5ETkJPT1NUX0FTU0VSVCBpbiBpdCwgc28gbm90IG1hcmtlZCB3aXRoIE5ETkJPT1NUX05PRVhDRVBUKQotICAgIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2RlcmVmZXJlbmNlPCBUID46OnR5cGUgb3BlcmF0b3IqICgpIGNvbnN0Ci0gICAgewotICAgICAgICBORE5CT09TVF9BU1NFUlQoIHB4ICE9IDAgKTsKLSAgICAgICAgcmV0dXJuICpweDsKLSAgICB9Ci0gICAgCi0gICAgLy8gbmV2ZXIgdGhyb3dzIChidXQgaGFzIGEgTkROQk9PU1RfQVNTRVJUIGluIGl0LCBzbyBub3QgbWFya2VkIHdpdGggTkROQk9PU1RfTk9FWENFUFQpCi0gICAgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfbWVtYmVyX2FjY2VzczwgVCA+Ojp0eXBlIG9wZXJhdG9yLT4gKCkgY29uc3QgCi0gICAgewotICAgICAgICBORE5CT09TVF9BU1NFUlQoIHB4ICE9IDAgKTsKLSAgICAgICAgcmV0dXJuIHB4OwotICAgIH0KLSAgICAKLSAgICAvLyBuZXZlciB0aHJvd3MgKGJ1dCBoYXMgYSBORE5CT09TVF9BU1NFUlQgaW4gaXQsIHNvIG5vdCBtYXJrZWQgd2l0aCBORE5CT09TVF9OT0VYQ0VQVCkKLSAgICB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9hcnJheV9hY2Nlc3M8IFQgPjo6dHlwZSBvcGVyYXRvcltdICggc3RkOjpwdHJkaWZmX3QgaSApIGNvbnN0Ci0gICAgewotICAgICAgICBORE5CT09TVF9BU1NFUlQoIHB4ICE9IDAgKTsKLSAgICAgICAgTkROQk9PU1RfQVNTRVJUKCBpID49IDAgJiYgKCBpIDwgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZXh0ZW50PCBUID46OnZhbHVlIHx8IG5kbmJvb3N0OjpkZXRhaWw6OnNwX2V4dGVudDwgVCA+Ojp2YWx1ZSA9PSAwICkgKTsKLQotICAgICAgICByZXR1cm4gcHhbIGkgXTsKLSAgICB9Ci0KLSAgICBlbGVtZW50X3R5cGUgKiBnZXQoKSBjb25zdCBORE5CT09TVF9OT0VYQ0VQVAotICAgIHsKLSAgICAgICAgcmV0dXJuIHB4OwotICAgIH0KLQotLy8gaW1wbGljaXQgY29udmVyc2lvbiB0byAiYm9vbCIKLSNpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvZGV0YWlsL29wZXJhdG9yX2Jvb2wuaHBwPgotCi0gICAgYm9vbCB1bmlxdWUoKSBjb25zdCBORE5CT09TVF9OT0VYQ0VQVAotICAgIHsKLSAgICAgICAgcmV0dXJuIHBuLnVuaXF1ZSgpOwotICAgIH0KLQotICAgIGxvbmcgdXNlX2NvdW50KCkgY29uc3QgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIHJldHVybiBwbi51c2VfY291bnQoKTsKLSAgICB9Ci0KLSAgICB2b2lkIHN3YXAoIHNoYXJlZF9wdHIgJiBvdGhlciApIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgewotICAgICAgICBzdGQ6OnN3YXAocHgsIG90aGVyLnB4KTsKLSAgICAgICAgcG4uc3dhcChvdGhlci5wbik7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgWT4gYm9vbCBvd25lcl9iZWZvcmUoIHNoYXJlZF9wdHI8WT4gY29uc3QgJiByaHMgKSBjb25zdCBORE5CT09TVF9OT0VYQ0VQVAotICAgIHsKLSAgICAgICAgcmV0dXJuIHBuIDwgcmhzLnBuOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFk+IGJvb2wgb3duZXJfYmVmb3JlKCB3ZWFrX3B0cjxZPiBjb25zdCAmIHJocyApIGNvbnN0IE5ETkJPT1NUX05PRVhDRVBUCi0gICAgewotICAgICAgICByZXR1cm4gcG4gPCByaHMucG47Ci0gICAgfQotCi0gICAgdm9pZCAqIF9pbnRlcm5hbF9nZXRfZGVsZXRlciggbmRuYm9vc3Q6OmRldGFpbDo6c3BfdHlwZWluZm8gY29uc3QgJiB0aSApIGNvbnN0IE5ETkJPT1NUX05PRVhDRVBUCi0gICAgewotICAgICAgICByZXR1cm4gcG4uZ2V0X2RlbGV0ZXIoIHRpICk7Ci0gICAgfQotCi0gICAgdm9pZCAqIF9pbnRlcm5hbF9nZXRfdW50eXBlZF9kZWxldGVyKCkgY29uc3QgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIHJldHVybiBwbi5nZXRfdW50eXBlZF9kZWxldGVyKCk7Ci0gICAgfQotCi0gICAgYm9vbCBfaW50ZXJuYWxfZXF1aXYoIHNoYXJlZF9wdHIgY29uc3QgJiByICkgY29uc3QgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIHJldHVybiBweCA9PSByLnB4ICYmIHBuID09IHIucG47Ci0gICAgfQotCi0vLyBUYXN0ZWxlc3MgYXMgdGhpcyBtYXkgc2VlbSwgbWFraW5nIGFsbCBtZW1iZXJzIHB1YmxpYyBhbGxvd3MgbWVtYmVyIHRlbXBsYXRlcwotLy8gdG8gd29yayBpbiB0aGUgYWJzZW5jZSBvZiBtZW1iZXIgdGVtcGxhdGUgZnJpZW5kcy4gKE1hdHRoZXcgTGFuZ3N0b24pCi0KLSNpZm5kZWYgTkROQk9PU1RfTk9fTUVNQkVSX1RFTVBMQVRFX0ZSSUVORFMKLQotcHJpdmF0ZToKLQotICAgIHRlbXBsYXRlPGNsYXNzIFk+IGZyaWVuZCBjbGFzcyBzaGFyZWRfcHRyOwotICAgIHRlbXBsYXRlPGNsYXNzIFk+IGZyaWVuZCBjbGFzcyB3ZWFrX3B0cjsKLQotCi0jZW5kaWYKLQotICAgIGVsZW1lbnRfdHlwZSAqIHB4OyAgICAgICAgICAgICAgICAgLy8gY29udGFpbmVkIHBvaW50ZXIKLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzaGFyZWRfY291bnQgcG47ICAgIC8vIHJlZmVyZW5jZSBjb3VudGVyCi0KLX07ICAvLyBzaGFyZWRfcHRyCi0KLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFU+IGlubGluZSBib29sIG9wZXJhdG9yPT0oc2hhcmVkX3B0cjxUPiBjb25zdCAmIGEsIHNoYXJlZF9wdHI8VT4gY29uc3QgJiBiKSBORE5CT09TVF9OT0VYQ0VQVAotewotICAgIHJldHVybiBhLmdldCgpID09IGIuZ2V0KCk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFU+IGlubGluZSBib29sIG9wZXJhdG9yIT0oc2hhcmVkX3B0cjxUPiBjb25zdCAmIGEsIHNoYXJlZF9wdHI8VT4gY29uc3QgJiBiKSBORE5CT09TVF9OT0VYQ0VQVAotewotICAgIHJldHVybiBhLmdldCgpICE9IGIuZ2V0KCk7Ci19Ci0KLSNpZiBfX0dOVUNfXyA9PSAyICYmIF9fR05VQ19NSU5PUl9fIDw9IDk2Ci0KLS8vIFJlc29sdmUgdGhlIGFtYmlndWl0eSBiZXR3ZWVuIG91ciBvcCE9IGFuZCB0aGUgb25lIGluIHJlbF9vcHMKLQotdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPShzaGFyZWRfcHRyPFQ+IGNvbnN0ICYgYSwgc2hhcmVkX3B0cjxUPiBjb25zdCAmIGIpIE5ETkJPT1NUX05PRVhDRVBUCi17Ci0gICAgcmV0dXJuIGEuZ2V0KCkgIT0gYi5nZXQoKTsKLX0KLQotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfTk9fQ1hYMTFfTlVMTFBUUiApCi0KLXRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSBib29sIG9wZXJhdG9yPT0oIHNoYXJlZF9wdHI8VD4gY29uc3QgJiBwLCBuZG5ib29zdDo6ZGV0YWlsOjpzcF9udWxscHRyX3QgKSBORE5CT09TVF9OT0VYQ0VQVAotewotICAgIHJldHVybiBwLmdldCgpID09IDA7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSBib29sIG9wZXJhdG9yPT0oIG5kbmJvb3N0OjpkZXRhaWw6OnNwX251bGxwdHJfdCwgc2hhcmVkX3B0cjxUPiBjb25zdCAmIHAgKSBORE5CT09TVF9OT0VYQ0VQVAotewotICAgIHJldHVybiBwLmdldCgpID09IDA7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSBib29sIG9wZXJhdG9yIT0oIHNoYXJlZF9wdHI8VD4gY29uc3QgJiBwLCBuZG5ib29zdDo6ZGV0YWlsOjpzcF9udWxscHRyX3QgKSBORE5CT09TVF9OT0VYQ0VQVAotewotICAgIHJldHVybiBwLmdldCgpICE9IDA7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSBib29sIG9wZXJhdG9yIT0oIG5kbmJvb3N0OjpkZXRhaWw6OnNwX251bGxwdHJfdCwgc2hhcmVkX3B0cjxUPiBjb25zdCAmIHAgKSBORE5CT09TVF9OT0VYQ0VQVAotewotICAgIHJldHVybiBwLmdldCgpICE9IDA7Ci19Ci0KLSNlbmRpZgotCi10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBVPiBpbmxpbmUgYm9vbCBvcGVyYXRvcjwoc2hhcmVkX3B0cjxUPiBjb25zdCAmIGEsIHNoYXJlZF9wdHI8VT4gY29uc3QgJiBiKSBORE5CT09TVF9OT0VYQ0VQVAotewotICAgIHJldHVybiBhLm93bmVyX2JlZm9yZSggYiApOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgdm9pZCBzd2FwKHNoYXJlZF9wdHI8VD4gJiBhLCBzaGFyZWRfcHRyPFQ+ICYgYikgTkROQk9PU1RfTk9FWENFUFQKLXsKLSAgICBhLnN3YXAoYik7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFU+IHNoYXJlZF9wdHI8VD4gc3RhdGljX3BvaW50ZXJfY2FzdCggc2hhcmVkX3B0cjxVPiBjb25zdCAmIHIgKSBORE5CT09TVF9OT0VYQ0VQVAotewotICAgICh2b2lkKSBzdGF0aWNfY2FzdDwgVCogPiggc3RhdGljX2Nhc3Q8IFUqID4oIDAgKSApOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBzaGFyZWRfcHRyPFQ+OjplbGVtZW50X3R5cGUgRTsKLQotICAgIEUgKiBwID0gc3RhdGljX2Nhc3Q8IEUqID4oIHIuZ2V0KCkgKTsKLSAgICByZXR1cm4gc2hhcmVkX3B0cjxUPiggciwgcCApOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBVPiBzaGFyZWRfcHRyPFQ+IGNvbnN0X3BvaW50ZXJfY2FzdCggc2hhcmVkX3B0cjxVPiBjb25zdCAmIHIgKSBORE5CT09TVF9OT0VYQ0VQVAotewotICAgICh2b2lkKSBjb25zdF9jYXN0PCBUKiA+KCBzdGF0aWNfY2FzdDwgVSogPiggMCApICk7Ci0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNoYXJlZF9wdHI8VD46OmVsZW1lbnRfdHlwZSBFOwotCi0gICAgRSAqIHAgPSBjb25zdF9jYXN0PCBFKiA+KCByLmdldCgpICk7Ci0gICAgcmV0dXJuIHNoYXJlZF9wdHI8VD4oIHIsIHAgKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVT4gc2hhcmVkX3B0cjxUPiBkeW5hbWljX3BvaW50ZXJfY2FzdCggc2hhcmVkX3B0cjxVPiBjb25zdCAmIHIgKSBORE5CT09TVF9OT0VYQ0VQVAotewotICAgICh2b2lkKSBkeW5hbWljX2Nhc3Q8IFQqID4oIHN0YXRpY19jYXN0PCBVKiA+KCAwICkgKTsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgc2hhcmVkX3B0cjxUPjo6ZWxlbWVudF90eXBlIEU7Ci0KLSAgICBFICogcCA9IGR5bmFtaWNfY2FzdDwgRSogPiggci5nZXQoKSApOwotICAgIHJldHVybiBwPyBzaGFyZWRfcHRyPFQ+KCByLCBwICk6IHNoYXJlZF9wdHI8VD4oKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVT4gc2hhcmVkX3B0cjxUPiByZWludGVycHJldF9wb2ludGVyX2Nhc3QoIHNoYXJlZF9wdHI8VT4gY29uc3QgJiByICkgTkROQk9PU1RfTk9FWENFUFQKLXsKLSAgICAodm9pZCkgcmVpbnRlcnByZXRfY2FzdDwgVCogPiggc3RhdGljX2Nhc3Q8IFUqID4oIDAgKSApOwotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBzaGFyZWRfcHRyPFQ+OjplbGVtZW50X3R5cGUgRTsKLQotICAgIEUgKiBwID0gcmVpbnRlcnByZXRfY2FzdDwgRSogPiggci5nZXQoKSApOwotICAgIHJldHVybiBzaGFyZWRfcHRyPFQ+KCByLCBwICk7Ci19Ci0KLS8vIGdldF9wb2ludGVyKCkgZW5hYmxlcyBuZG5ib29zdDo6bWVtX2ZuIHRvIHJlY29nbml6ZSBzaGFyZWRfcHRyCi0KLXRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSB0eXBlbmFtZSBzaGFyZWRfcHRyPFQ+OjplbGVtZW50X3R5cGUgKiBnZXRfcG9pbnRlcihzaGFyZWRfcHRyPFQ+IGNvbnN0ICYgcCkgTkROQk9PU1RfTk9FWENFUFQKLXsKLSAgICByZXR1cm4gcC5nZXQoKTsKLX0KLQotLy8gb3BlcmF0b3I8PAotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fSU9TVFJFQU0pCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFRF9JT1NUUkVBTVMpIHx8ICggZGVmaW5lZChfX0dOVUNfXykgJiYgIChfX0dOVUNfXyA8IDMpICkKLQotdGVtcGxhdGU8Y2xhc3MgWT4gc3RkOjpvc3RyZWFtICYgb3BlcmF0b3I8PCAoc3RkOjpvc3RyZWFtICYgb3MsIHNoYXJlZF9wdHI8WT4gY29uc3QgJiBwKQotewotICAgIG9zIDw8IHAuZ2V0KCk7Ci0gICAgcmV0dXJuIG9zOwotfQotCi0jZWxzZQotCi0vLyBpbiBTVExwb3J0J3Mgbm8taW9zdHJlYW1zIG1vZGUgbm8gaW9zdHJlYW0gc3ltYm9scyBjYW4gYmUgdXNlZAotI2lmbmRlZiBfU1RMUF9OT19JT1NUUkVBTVMKLQotIyBpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpICYmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwICYmIF9fU0dJX1NUTF9QT1JUKQotLy8gTVNWQzYgaGFzIHByb2JsZW1zIGZpbmRpbmcgc3RkOjpiYXNpY19vc3RyZWFtIHRocm91Z2ggdGhlIHVzaW5nIGRlY2xhcmF0aW9uIGluIG5hbWVzcGFjZSBfU1RMCi11c2luZyBzdGQ6OmJhc2ljX29zdHJlYW07Ci10ZW1wbGF0ZTxjbGFzcyBFLCBjbGFzcyBULCBjbGFzcyBZPiBiYXNpY19vc3RyZWFtPEUsIFQ+ICYgb3BlcmF0b3I8PCAoYmFzaWNfb3N0cmVhbTxFLCBUPiAmIG9zLCBzaGFyZWRfcHRyPFk+IGNvbnN0ICYgcCkKLSMgZWxzZQotdGVtcGxhdGU8Y2xhc3MgRSwgY2xhc3MgVCwgY2xhc3MgWT4gc3RkOjpiYXNpY19vc3RyZWFtPEUsIFQ+ICYgb3BlcmF0b3I8PCAoc3RkOjpiYXNpY19vc3RyZWFtPEUsIFQ+ICYgb3MsIHNoYXJlZF9wdHI8WT4gY29uc3QgJiBwKQotIyBlbmRpZgotewotICAgIG9zIDw8IHAuZ2V0KCk7Ci0gICAgcmV0dXJuIG9zOwotfQotCi0jZW5kaWYgLy8gX1NUTFBfTk9fSU9TVFJFQU1TCi0KLSNlbmRpZiAvLyBfX0dOVUNfXyA8IDMKLQotI2VuZGlmIC8vICFkZWZpbmVkKE5ETkJPT1NUX05PX0lPU1RSRUFNKQotCi0vLyBnZXRfZGVsZXRlcgotCi1uYW1lc3BhY2UgZGV0YWlsCi17Ci0KLSNpZiAoIGRlZmluZWQoX19HTlVDX18pICYmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19HTlVDX18sIDwgMykgKSB8fCBcCi0gICAgKCBkZWZpbmVkKF9fRURHX1ZFUlNJT05fXykgJiYgTkROQk9PU1RfV09SS0FST1VORChfX0VER19WRVJTSU9OX18sIDw9IDIzOCkgKSB8fCBcCi0gICAgKCBkZWZpbmVkKF9fSFBfYUNDKSAmJiBORE5CT09TVF9XT1JLQVJPVU5EKF9fSFBfYUNDLCA8PSAzMzUwMCkgKQotCi0vLyBnKysgMi45eCBkb2Vzbid0IGFsbG93IHN0YXRpY19jYXN0PFggY29uc3QgKj4odm9pZCAqKQotLy8gYXBwYXJlbnRseSBFREcgMi4zOCBhbmQgSFAgYUNDIEEuMDMuMzUgYWxzbyBkb24ndCBhY2NlcHQgaXQKLQotdGVtcGxhdGU8Y2xhc3MgRCwgY2xhc3MgVD4gRCAqIGJhc2ljX2dldF9kZWxldGVyKHNoYXJlZF9wdHI8VD4gY29uc3QgJiBwKQotewotICAgIHZvaWQgY29uc3QgKiBxID0gcC5faW50ZXJuYWxfZ2V0X2RlbGV0ZXIoTkROQk9PU1RfU1BfVFlQRUlEKEQpKTsKLSAgICByZXR1cm4gY29uc3RfY2FzdDxEICo+KHN0YXRpY19jYXN0PEQgY29uc3QgKj4ocSkpOwotfQotCi0jZWxzZQotCi10ZW1wbGF0ZTxjbGFzcyBELCBjbGFzcyBUPiBEICogYmFzaWNfZ2V0X2RlbGV0ZXIoIHNoYXJlZF9wdHI8VD4gY29uc3QgJiBwICkgTkROQk9PU1RfTk9FWENFUFQKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RCAqPiggcC5faW50ZXJuYWxfZ2V0X2RlbGV0ZXIoTkROQk9PU1RfU1BfVFlQRUlEKEQpKSApOwotfQotCi0jZW5kaWYKLQotY2xhc3MgZXNmdDJfZGVsZXRlcl93cmFwcGVyCi17Ci1wcml2YXRlOgotCi0gICAgc2hhcmVkX3B0cjx2b2lkPiBkZWxldGVyXzsKLQotcHVibGljOgotCi0gICAgZXNmdDJfZGVsZXRlcl93cmFwcGVyKCkKLSAgICB7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8IGNsYXNzIFQgPiB2b2lkIHNldF9kZWxldGVyKCBzaGFyZWRfcHRyPFQ+IGNvbnN0ICYgZGVsZXRlciApCi0gICAgewotICAgICAgICBkZWxldGVyXyA9IGRlbGV0ZXI7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRD4gRCogZ2V0X2RlbGV0ZXIoKSBjb25zdCBORE5CT09TVF9OT0VYQ0VQVAotICAgIHsKLSAgICAgICAgcmV0dXJuIG5kbmJvb3N0OjpkZXRhaWw6OmJhc2ljX2dldF9kZWxldGVyPEQ+KCBkZWxldGVyXyApOwotICAgIH0KLQotICAgIHRlbXBsYXRlPCBjbGFzcyBUPiB2b2lkIG9wZXJhdG9yKCkoIFQqICkKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX0FTU0VSVCggZGVsZXRlcl8udXNlX2NvdW50KCkgPD0gMSApOwotICAgICAgICBkZWxldGVyXy5yZXNldCgpOwotICAgIH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi10ZW1wbGF0ZTxjbGFzcyBELCBjbGFzcyBUPiBEICogZ2V0X2RlbGV0ZXIoIHNoYXJlZF9wdHI8VD4gY29uc3QgJiBwICkgTkROQk9PU1RfTk9FWENFUFQKLXsKLSAgICBEICpkZWwgPSBuZG5ib29zdDo6ZGV0YWlsOjpiYXNpY19nZXRfZGVsZXRlcjxEPihwKTsKLQotICAgIGlmKGRlbCA9PSAwKQotICAgIHsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6ZXNmdDJfZGVsZXRlcl93cmFwcGVyICpkZWxfd3JhcHBlciA9IG5kbmJvb3N0OjpkZXRhaWw6OmJhc2ljX2dldF9kZWxldGVyPG5kbmJvb3N0OjpkZXRhaWw6OmVzZnQyX2RlbGV0ZXJfd3JhcHBlcj4ocCk7Ci0vLyBUaGUgZm9sbG93aW5nIGdldF9kZWxldGVyIG1ldGhvZCBjYWxsIGlzIGZ1bGx5IHF1YWxpZmllZCBiZWNhdXNlCi0vLyBvbGRlciB2ZXJzaW9ucyBvZiBnY2MgKDIuOTUsIDMuMi4zKSBmYWlsIHRvIGNvbXBpbGUgaXQgd2hlbiB3cml0dGVuIGRlbF93cmFwcGVyLT5nZXRfZGVsZXRlcjxEPigpCi0gICAgICAgIGlmKGRlbF93cmFwcGVyKSBkZWwgPSBkZWxfd3JhcHBlci0+OjpuZG5ib29zdDo6ZGV0YWlsOjplc2Z0Ml9kZWxldGVyX3dyYXBwZXI6OmdldF9kZWxldGVyPEQ+KCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGRlbDsKLX0KLQotLy8gYXRvbWljIGFjY2VzcwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfU1BfTk9fQVRPTUlDX0FDQ0VTUykKLQotdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIGJvb2wgYXRvbWljX2lzX2xvY2tfZnJlZSggc2hhcmVkX3B0cjxUPiBjb25zdCAqIC8qcCovICkgTkROQk9PU1RfTk9FWENFUFQKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IHNoYXJlZF9wdHI8VD4gYXRvbWljX2xvYWQoIHNoYXJlZF9wdHI8VD4gY29uc3QgKiBwICkKLXsKLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcGlubG9ja19wb29sPDI+OjpzY29wZWRfbG9jayBsb2NrKCBwICk7Ci0gICAgcmV0dXJuICpwOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgc2hhcmVkX3B0cjxUPiBhdG9taWNfbG9hZF9leHBsaWNpdCggc2hhcmVkX3B0cjxUPiBjb25zdCAqIHAsIG1lbW9yeV9vcmRlciAvKm1vKi8gKQotewotICAgIHJldHVybiBhdG9taWNfbG9hZCggcCApOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUPiB2b2lkIGF0b21pY19zdG9yZSggc2hhcmVkX3B0cjxUPiAqIHAsIHNoYXJlZF9wdHI8VD4gciApCi17Ci0gICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BpbmxvY2tfcG9vbDwyPjo6c2NvcGVkX2xvY2sgbG9jayggcCApOwotICAgIHAtPnN3YXAoIHIgKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVD4gaW5saW5lIHZvaWQgYXRvbWljX3N0b3JlX2V4cGxpY2l0KCBzaGFyZWRfcHRyPFQ+ICogcCwgc2hhcmVkX3B0cjxUPiByLCBtZW1vcnlfb3JkZXIgLyptbyovICkKLXsKLSAgICBhdG9taWNfc3RvcmUoIHAsIHIgKTsgLy8gc3RkOjptb3ZlKCByICkKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVD4gc2hhcmVkX3B0cjxUPiBhdG9taWNfZXhjaGFuZ2UoIHNoYXJlZF9wdHI8VD4gKiBwLCBzaGFyZWRfcHRyPFQ+IHIgKQotewotICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwaW5sb2NrICYgc3AgPSBuZG5ib29zdDo6ZGV0YWlsOjpzcGlubG9ja19wb29sPDI+OjpzcGlubG9ja19mb3IoIHAgKTsKLQotICAgIHNwLmxvY2soKTsKLSAgICBwLT5zd2FwKCByICk7Ci0gICAgc3AudW5sb2NrKCk7Ci0KLSAgICByZXR1cm4gcjsgLy8gcmV0dXJuIHN0ZDo6bW92ZSggciApCi19Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IHNoYXJlZF9wdHI8VD4gYXRvbWljX2V4Y2hhbmdlX2V4cGxpY2l0KCBzaGFyZWRfcHRyPFQ+ICogcCwgc2hhcmVkX3B0cjxUPiByLCBtZW1vcnlfb3JkZXIgLyptbyovICkKLXsKLSAgICByZXR1cm4gYXRvbWljX2V4Y2hhbmdlKCBwLCByICk7IC8vIHN0ZDo6bW92ZSggciApCi19Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IGJvb2wgYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2UoIHNoYXJlZF9wdHI8VD4gKiBwLCBzaGFyZWRfcHRyPFQ+ICogdiwgc2hhcmVkX3B0cjxUPiB3ICkKLXsKLSAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcGlubG9jayAmIHNwID0gbmRuYm9vc3Q6OmRldGFpbDo6c3BpbmxvY2tfcG9vbDwyPjo6c3BpbmxvY2tfZm9yKCBwICk7Ci0KLSAgICBzcC5sb2NrKCk7Ci0KLSAgICBpZiggcC0+X2ludGVybmFsX2VxdWl2KCAqdiApICkKLSAgICB7Ci0gICAgICAgIHAtPnN3YXAoIHcgKTsKLQotICAgICAgICBzcC51bmxvY2soKTsKLQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgc2hhcmVkX3B0cjxUPiB0bXAoICpwICk7Ci0KLSAgICAgICAgc3AudW5sb2NrKCk7Ci0KLSAgICAgICAgdG1wLnN3YXAoICp2ICk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSBib29sIGF0b21pY19jb21wYXJlX2V4Y2hhbmdlX2V4cGxpY2l0KCBzaGFyZWRfcHRyPFQ+ICogcCwgc2hhcmVkX3B0cjxUPiAqIHYsIHNoYXJlZF9wdHI8VD4gdywgbWVtb3J5X29yZGVyIC8qc3VjY2VzcyovLCBtZW1vcnlfb3JkZXIgLypmYWlsdXJlKi8gKQotewotICAgIHJldHVybiBhdG9taWNfY29tcGFyZV9leGNoYW5nZSggcCwgdiwgdyApOyAvLyBzdGQ6Om1vdmUoIHcgKQotfQotCi0jZW5kaWYgLy8gIWRlZmluZWQoTkROQk9PU1RfU1BfTk9fQVRPTUlDX0FDQ0VTUykKLQotLy8gaGFzaF92YWx1ZQotCi10ZW1wbGF0ZTwgY2xhc3MgVCA+IHN0cnVjdCBoYXNoOwotCi10ZW1wbGF0ZTwgY2xhc3MgVCA+IHN0ZDo6c2l6ZV90IGhhc2hfdmFsdWUoIG5kbmJvb3N0OjpzaGFyZWRfcHRyPFQ+IGNvbnN0ICYgcCApIE5ETkJPT1NUX05PRVhDRVBUCi17Ci0gICAgcmV0dXJuIG5kbmJvb3N0OjpoYXNoPCBUKiA+KCkoIHAuZ2V0KCkgKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmICAvLyAjaWYgZGVmaW5lZChORE5CT09TVF9OT19NRU1CRVJfVEVNUExBVEVTKSAmJiAhZGVmaW5lZChORE5CT09TVF9NU1ZDNl9NRU1CRVJfVEVNUExBVEVTKQotCi0jZW5kaWYgIC8vICNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX1NIQVJFRF9QVFJfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci93ZWFrX3B0ci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3NtYXJ0X3B0ci93ZWFrX3B0ci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA4ZmM0YmQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zbWFydF9wdHIvd2Vha19wdHIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjUzICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfU01BUlRfUFRSX1dFQUtfUFRSX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9TTUFSVF9QVFJfV0VBS19QVFJfSFBQX0lOQ0xVREVECi0KLS8vCi0vLyAgd2Vha19wdHIuaHBwCi0vLwotLy8gIENvcHlyaWdodCAoYykgMjAwMSwgMjAwMiwgMjAwMyBQZXRlciBEaW1vdgotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvc21hcnRfcHRyL3dlYWtfcHRyLmh0bSBmb3IgZG9jdW1lbnRhdGlvbi4KLS8vCi0KLSNpbmNsdWRlIDxtZW1vcnk+IC8vIGJvb3N0LlRSMSBpbmNsdWRlIG9yZGVyIGZpeAotI2luY2x1ZGUgPG5kbmJvb3N0L3NtYXJ0X3B0ci9kZXRhaWwvc2hhcmVkX2NvdW50LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvc2hhcmVkX3B0ci5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi10ZW1wbGF0ZTxjbGFzcyBUPiBjbGFzcyB3ZWFrX3B0cgotewotcHJpdmF0ZToKLQotICAgIC8vIEJvcmxhbmQgNS41LjEgc3BlY2lmaWMgd29ya2Fyb3VuZHMKLSAgICB0eXBlZGVmIHdlYWtfcHRyPFQ+IHRoaXNfdHlwZTsKLQotcHVibGljOgotCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbGVtZW50PCBUID46OnR5cGUgZWxlbWVudF90eXBlOwotCi0gICAgd2Vha19wdHIoKSBORE5CT09TVF9OT0VYQ0VQVCA6IHB4KDApLCBwbigpIC8vIG5ldmVyIHRocm93cyBpbiAxLjMwKwotICAgIHsKLSAgICB9Ci0KLS8vICBnZW5lcmF0ZWQgY29weSBjb25zdHJ1Y3RvciwgYXNzaWdubWVudCwgZGVzdHJ1Y3RvciBhcmUgZmluZS4uLgotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTICkKLQotLy8gLi4uIGV4Y2VwdCBpbiBDKysweCwgbW92ZSBkaXNhYmxlcyB0aGUgaW1wbGljaXQgY29weQotCi0gICAgd2Vha19wdHIoIHdlYWtfcHRyIGNvbnN0ICYgciApIE5ETkJPT1NUX05PRVhDRVBUIDogcHgoIHIucHggKSwgcG4oIHIucG4gKQotICAgIHsKLSAgICB9Ci0KLSAgICB3ZWFrX3B0ciAmIG9wZXJhdG9yPSggd2Vha19wdHIgY29uc3QgJiByICkgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIHB4ID0gci5weDsKLSAgICAgICAgcG4gPSByLnBuOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0jZW5kaWYKLQotLy8KLS8vICBUaGUgIm9idmlvdXMiIGNvbnZlcnRpbmcgY29uc3RydWN0b3IgaW1wbGVtZW50YXRpb246Ci0vLwotLy8gIHRlbXBsYXRlPGNsYXNzIFk+Ci0vLyAgd2Vha19wdHIod2Vha19wdHI8WT4gY29uc3QgJiByKTogcHgoci5weCksIHBuKHIucG4pIC8vIG5ldmVyIHRocm93cwotLy8gIHsKLS8vICB9Ci0vLwotLy8gIGhhcyBhIHNlcmlvdXMgcHJvYmxlbS4KLS8vCi0vLyAgci5weCBtYXkgYWxyZWFkeSBoYXZlIGJlZW4gaW52YWxpZGF0ZWQuIFRoZSBweChyLnB4KQotLy8gIGNvbnZlcnNpb24gbWF5IHJlcXVpcmUgYWNjZXNzIHRvICpyLnB4ICh2aXJ0dWFsIGluaGVyaXRhbmNlKS4KLS8vCi0vLyAgSXQgaXMgbm90IHBvc3NpYmxlIHRvIGF2b2lkIHNwdXJpb3VzIGFjY2VzcyB2aW9sYXRpb25zIHNpbmNlCi0vLyAgaW4gbXVsdGl0aHJlYWRlZCBwcm9ncmFtcyByLnB4IG1heSBiZSBpbnZhbGlkYXRlZCBhdCBhbnkgcG9pbnQuCi0vLwotCi0gICAgdGVtcGxhdGU8Y2xhc3MgWT4KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfU1BfTk9fU1BfQ09OVkVSVElCTEUgKQotCi0gICAgd2Vha19wdHIoIHdlYWtfcHRyPFk+IGNvbnN0ICYgciwgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6c3BfZW5hYmxlX2lmX2NvbnZlcnRpYmxlPFksVD46OnR5cGUgPSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbXB0eSgpICkKLQotI2Vsc2UKLQotICAgIHdlYWtfcHRyKCB3ZWFrX3B0cjxZPiBjb25zdCAmIHIgKQotCi0jZW5kaWYKLSAgICBORE5CT09TVF9OT0VYQ0VQVCA6IHB4KHIubG9jaygpLmdldCgpKSwgcG4oci5wbikKLSAgICB7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2Fzc2VydF9jb252ZXJ0aWJsZTwgWSwgVCA+KCk7Ci0gICAgfQotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTICkKLQotICAgIHRlbXBsYXRlPGNsYXNzIFk+Ci0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX1NQX05PX1NQX0NPTlZFUlRJQkxFICkKLQotICAgIHdlYWtfcHRyKCB3ZWFrX3B0cjxZPiAmJiByLCB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbmFibGVfaWZfY29udmVydGlibGU8WSxUPjo6dHlwZSA9IG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VtcHR5KCkgKQotCi0jZWxzZQotCi0gICAgd2Vha19wdHIoIHdlYWtfcHRyPFk+ICYmIHIgKQotCi0jZW5kaWYKLSAgICBORE5CT09TVF9OT0VYQ0VQVCA6IHB4KCByLmxvY2soKS5nZXQoKSApLCBwbiggc3RhdGljX2Nhc3Q8IG5kbmJvb3N0OjpkZXRhaWw6OndlYWtfY291bnQgJiYgPiggci5wbiApICkKLSAgICB7Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnNwX2Fzc2VydF9jb252ZXJ0aWJsZTwgWSwgVCA+KCk7Ci0gICAgICAgIHIucHggPSAwOwotICAgIH0KLQotICAgIC8vIGZvciBiZXR0ZXIgZWZmaWNpZW5jeSBpbiB0aGUgVCA9PSBZIGNhc2UKLSAgICB3ZWFrX3B0ciggd2Vha19wdHIgJiYgciApCi0gICAgTkROQk9PU1RfTk9FWENFUFQgOiBweCggci5weCApLCBwbiggc3RhdGljX2Nhc3Q8IG5kbmJvb3N0OjpkZXRhaWw6OndlYWtfY291bnQgJiYgPiggci5wbiApICkKLSAgICB7Ci0gICAgICAgIHIucHggPSAwOwotICAgIH0KLQotICAgIC8vIGZvciBiZXR0ZXIgZWZmaWNpZW5jeSBpbiB0aGUgVCA9PSBZIGNhc2UKLSAgICB3ZWFrX3B0ciAmIG9wZXJhdG9yPSggd2Vha19wdHIgJiYgciApIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgewotICAgICAgICB0aGlzX3R5cGUoIHN0YXRpY19jYXN0PCB3ZWFrX3B0ciAmJiA+KCByICkgKS5zd2FwKCAqdGhpcyApOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0KLSNlbmRpZgotCi0gICAgdGVtcGxhdGU8Y2xhc3MgWT4KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfU1BfTk9fU1BfQ09OVkVSVElCTEUgKQotCi0gICAgd2Vha19wdHIoIHNoYXJlZF9wdHI8WT4gY29uc3QgJiByLCB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpzcF9lbmFibGVfaWZfY29udmVydGlibGU8WSxUPjo6dHlwZSA9IG5kbmJvb3N0OjpkZXRhaWw6OnNwX2VtcHR5KCkgKQotCi0jZWxzZQotCi0gICAgd2Vha19wdHIoIHNoYXJlZF9wdHI8WT4gY29uc3QgJiByICkKLQotI2VuZGlmCi0gICAgTkROQk9PU1RfTk9FWENFUFQgOiBweCggci5weCApLCBwbiggci5wbiApCi0gICAgewotICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzcF9hc3NlcnRfY29udmVydGlibGU8IFksIFQgPigpOwotICAgIH0KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01TVkMpIHx8IChORE5CT09TVF9NU1ZDID49IDEzMDApCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBZPgotICAgIHdlYWtfcHRyICYgb3BlcmF0b3I9KCB3ZWFrX3B0cjxZPiBjb25zdCAmIHIgKSBORE5CT09TVF9OT0VYQ0VQVAotICAgIHsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfYXNzZXJ0X2NvbnZlcnRpYmxlPCBZLCBUID4oKTsKLQotICAgICAgICBweCA9IHIubG9jaygpLmdldCgpOwotICAgICAgICBwbiA9IHIucG47Ci0KLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUyApCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBZPgotICAgIHdlYWtfcHRyICYgb3BlcmF0b3I9KCB3ZWFrX3B0cjxZPiAmJiByICkgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIHRoaXNfdHlwZSggc3RhdGljX2Nhc3Q8IHdlYWtfcHRyPFk+ICYmID4oIHIgKSApLnN3YXAoICp0aGlzICk7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSNlbmRpZgotCi0gICAgdGVtcGxhdGU8Y2xhc3MgWT4KLSAgICB3ZWFrX3B0ciAmIG9wZXJhdG9yPSggc2hhcmVkX3B0cjxZPiBjb25zdCAmIHIgKSBORE5CT09TVF9OT0VYQ0VQVAotICAgIHsKLSAgICAgICAgbmRuYm9vc3Q6OmRldGFpbDo6c3BfYXNzZXJ0X2NvbnZlcnRpYmxlPCBZLCBUID4oKTsKLQotICAgICAgICBweCA9IHIucHg7Ci0gICAgICAgIHBuID0gci5wbjsKLQotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0jZW5kaWYKLQotICAgIHNoYXJlZF9wdHI8VD4gbG9jaygpIGNvbnN0IE5ETkJPT1NUX05PRVhDRVBUCi0gICAgewotICAgICAgICByZXR1cm4gc2hhcmVkX3B0cjxUPiggKnRoaXMsIG5kbmJvb3N0OjpkZXRhaWw6OnNwX25vdGhyb3dfdGFnKCkgKTsKLSAgICB9Ci0KLSAgICBsb25nIHVzZV9jb3VudCgpIGNvbnN0IE5ETkJPT1NUX05PRVhDRVBUCi0gICAgewotICAgICAgICByZXR1cm4gcG4udXNlX2NvdW50KCk7Ci0gICAgfQotCi0gICAgYm9vbCBleHBpcmVkKCkgY29uc3QgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIHJldHVybiBwbi51c2VfY291bnQoKSA9PSAwOwotICAgIH0KLQotICAgIGJvb2wgX2VtcHR5KCkgY29uc3QgLy8gZXh0ZW5zaW9uLCBub3QgaW4gc3RkOjp3ZWFrX3B0cgotICAgIHsKLSAgICAgICAgcmV0dXJuIHBuLmVtcHR5KCk7Ci0gICAgfQotCi0gICAgdm9pZCByZXNldCgpIE5ETkJPT1NUX05PRVhDRVBUIC8vIG5ldmVyIHRocm93cyBpbiAxLjMwKwotICAgIHsKLSAgICAgICAgdGhpc190eXBlKCkuc3dhcCgqdGhpcyk7Ci0gICAgfQotCi0gICAgdm9pZCBzd2FwKHRoaXNfdHlwZSAmIG90aGVyKSBORE5CT09TVF9OT0VYQ0VQVAotICAgIHsKLSAgICAgICAgc3RkOjpzd2FwKHB4LCBvdGhlci5weCk7Ci0gICAgICAgIHBuLnN3YXAob3RoZXIucG4pOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFk+Ci0gICAgdm9pZCBfaW50ZXJuYWxfYWxpYXNpbmdfYXNzaWduKHdlYWtfcHRyPFk+IGNvbnN0ICYgciwgZWxlbWVudF90eXBlICogcHgyKQotICAgIHsKLSAgICAgICAgcHggPSBweDI7Ci0gICAgICAgIHBuID0gci5wbjsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBZPiBib29sIG93bmVyX2JlZm9yZSggd2Vha19wdHI8WT4gY29uc3QgJiByaHMgKSBjb25zdCBORE5CT09TVF9OT0VYQ0VQVAotICAgIHsKLSAgICAgICAgcmV0dXJuIHBuIDwgcmhzLnBuOwotICAgIH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIFk+IGJvb2wgb3duZXJfYmVmb3JlKCBzaGFyZWRfcHRyPFk+IGNvbnN0ICYgcmhzICkgY29uc3QgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIHJldHVybiBwbiA8IHJocy5wbjsKLSAgICB9Ci0KLS8vIFRhc3RlbGVzcyBhcyB0aGlzIG1heSBzZWVtLCBtYWtpbmcgYWxsIG1lbWJlcnMgcHVibGljIGFsbG93cyBtZW1iZXIgdGVtcGxhdGVzCi0vLyB0byB3b3JrIGluIHRoZSBhYnNlbmNlIG9mIG1lbWJlciB0ZW1wbGF0ZSBmcmllbmRzLiAoTWF0dGhldyBMYW5nc3RvbikKLQotI2lmbmRlZiBORE5CT09TVF9OT19NRU1CRVJfVEVNUExBVEVfRlJJRU5EUwotCi1wcml2YXRlOgotCi0gICAgdGVtcGxhdGU8Y2xhc3MgWT4gZnJpZW5kIGNsYXNzIHdlYWtfcHRyOwotICAgIHRlbXBsYXRlPGNsYXNzIFk+IGZyaWVuZCBjbGFzcyBzaGFyZWRfcHRyOwotCi0jZW5kaWYKLQotICAgIGVsZW1lbnRfdHlwZSAqIHB4OyAgICAgICAgICAgIC8vIGNvbnRhaW5lZCBwb2ludGVyCi0gICAgbmRuYm9vc3Q6OmRldGFpbDo6d2Vha19jb3VudCBwbjsgLy8gcmVmZXJlbmNlIGNvdW50ZXIKLQotfTsgIC8vIHdlYWtfcHRyCi0KLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIFU+IGlubGluZSBib29sIG9wZXJhdG9yPCh3ZWFrX3B0cjxUPiBjb25zdCAmIGEsIHdlYWtfcHRyPFU+IGNvbnN0ICYgYikgTkROQk9PU1RfTk9FWENFUFQKLXsKLSAgICByZXR1cm4gYS5vd25lcl9iZWZvcmUoIGIgKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVD4gdm9pZCBzd2FwKHdlYWtfcHRyPFQ+ICYgYSwgd2Vha19wdHI8VD4gJiBiKSBORE5CT09TVF9OT0VYQ0VQVAotewotICAgIGEuc3dhcChiKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmICAvLyAjaWZuZGVmIE5ETkJPT1NUX1NNQVJUX1BUUl9XRUFLX1BUUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc3RhdGljX2Fzc2VydC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3N0YXRpY19hc3NlcnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmODE1MDI4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc3RhdGljX2Fzc2VydC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxOTUgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDAuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvc3RhdGljX2Fzc2VydCBmb3IgZG9jdW1lbnRhdGlvbi4KLQotLyoKLSBSZXZpc2lvbiBoaXN0b3J5OgotICAgMDIgQXVndXN0IDIwMDAKLSAgICAgIEluaXRpYWwgdmVyc2lvbi4KLSovCi0KLSNpZm5kZWYgTkROQk9PU1RfU1RBVElDX0FTU0VSVF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfU1RBVElDX0FTU0VSVF9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotCi0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgIWRlZmluZWQoX19HWFhfRVhQRVJJTUVOVEFMX0NYWDBYX18pCi0vLwotLy8gVGhpcyBpcyBob3JyaWJsZSwgYnV0IGl0IHNlZW1zIHRvIGJlIHRoZSBvbmx5IHdlIGNhbiBzaHV0IHVwIHRoZQotLy8gImFub255bW91cyB2YXJpYWRpYyBtYWNyb3Mgd2VyZSBpbnRyb2R1Y2VkIGluIEM5OSBbLVd2YXJpYWRpYy1tYWNyb3NdIgotLy8gd2FybmluZyB0aGF0IGdldCBzcGV3ZWQgb3V0IG90aGVyd2lzZSBpbiBub24tQysrMTEgbW9kZS4KLS8vCi0jcHJhZ21hIEdDQyBzeXN0ZW1faGVhZGVyCi0jZW5kaWYKLQotI2lmbmRlZiBORE5CT09TVF9OT19DWFgxMV9TVEFUSUNfQVNTRVJUCi0jICBpZm5kZWYgTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfTUFDUk9TCi0jICAgICBkZWZpbmUgTkROQk9PU1RfU1RBVElDX0FTU0VSVF9NU0coIC4uLiApIHN0YXRpY19hc3NlcnQoX19WQV9BUkdTX18pCi0jICBlbHNlCi0jICAgICBkZWZpbmUgTkROQk9PU1RfU1RBVElDX0FTU0VSVF9NU0coIEIsIE1zZyApIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoIEIgKQotIyAgZW5kaWYKLSNlbHNlCi0jICAgICBkZWZpbmUgTkROQk9PU1RfU1RBVElDX0FTU0VSVF9NU0coIEIsIE1zZyApIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoIEIgKQotI2VuZGlmCi0KLSNpZmRlZiBfX0JPUkxBTkRDX18KLS8vCi0vLyB3b3JrYXJvdW5kIGZvciBidWdneSBpbnRlZ3JhbC1jb25zdGFudCBleHByZXNzaW9uIHN1cHBvcnQ6Ci0jZGVmaW5lIE5ETkJPT1NUX0JVR0dZX0lOVEVHUkFMX0NPTlNUQU5UX0VYUFJFU1NJT05TCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoX19HTlVDX18pICYmIChfX0dOVUNfXyA9PSAzKSAmJiAoKF9fR05VQ19NSU5PUl9fID09IDMpIHx8IChfX0dOVUNfTUlOT1JfXyA9PSA0KSkKLS8vIGdjYyAzLjMgYW5kIDMuNCBkb24ndCBwcm9kdWNlIGdvb2QgZXJyb3IgbWVzc2FnZXMgd2l0aCB0aGUgZGVmYXVsdCB2ZXJzaW9uOgotIyAgZGVmaW5lIE5ETkJPT1NUX1NBX0dDQ19XT1JLQVJPVU5ECi0jZW5kaWYKLQotLy8KLS8vIElmIHRoZSBjb21waWxlciBpc3N1ZXMgd2FybmluZ3MgYWJvdXQgb2xkIEMgc3R5bGUgY2FzdHMsCi0vLyB0aGVuIGVuYWJsZSB0aGlzOgotLy8KLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKF9fR05VQ19fID4gMykgfHwgKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gNCkpKQotIyAgaWZuZGVmIE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX01BQ1JPUwotIyAgICAgZGVmaW5lIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlRfQk9PTF9DQVNUKCAuLi4gKSAoKF9fVkFfQVJHU19fKSA9PSAwID8gZmFsc2UgOiB0cnVlKQotIyAgZWxzZQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlRfQk9PTF9DQVNUKCB4ICkgKCh4KSA9PSAwID8gZmFsc2UgOiB0cnVlKQotIyAgZW5kaWYKLSNlbHNlCi0jICBpZm5kZWYgTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfTUFDUk9TCi0jICAgICBkZWZpbmUgTkROQk9PU1RfU1RBVElDX0FTU0VSVF9CT09MX0NBU1QoIC4uLiApIChib29sKShfX1ZBX0FSR1NfXykKLSMgIGVsc2UKLSMgICAgIGRlZmluZSBORE5CT09TVF9TVEFUSUNfQVNTRVJUX0JPT0xfQ0FTVCh4KSAoYm9vbCkoeCkKLSMgIGVuZGlmCi0jZW5kaWYKLS8vCi0vLyBJZiB0aGUgY29tcGlsZXIgd2FybnMgYWJvdXQgdW51c2VkIHR5cGVkZWZzIHRoZW4gZW5hYmxlIHRoaXM6Ci0vLwotI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoX19HTlVDX18gPiA0KSB8fCAoKF9fR05VQ19fID09IDQpICYmIChfX0dOVUNfTUlOT1JfXyA+PSA3KSkpCi0jICBkZWZpbmUgTkROQk9PU1RfU1RBVElDX0FTU0VSVF9VTlVTRURfQVRUUklCVVRFIF9fYXR0cmlidXRlX18oKHVudXNlZCkpCi0jZWxzZQotIyAgZGVmaW5lIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlRfVU5VU0VEX0FUVFJJQlVURQotI2VuZGlmCi0KLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1hYMTFfU1RBVElDX0FTU0VSVAotIyAgaWZuZGVmIE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX01BQ1JPUwotIyAgICAgZGVmaW5lIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoIC4uLiApIHN0YXRpY19hc3NlcnQoX19WQV9BUkdTX18sICNfX1ZBX0FSR1NfXykKLSMgIGVsc2UKLSMgICAgIGRlZmluZSBORE5CT09TVF9TVEFUSUNfQVNTRVJUKCBCICkgc3RhdGljX2Fzc2VydChCLCAjQikKLSMgIGVuZGlmCi0jZWxzZQotCi1uYW1lc3BhY2UgbmRuYm9vc3R7Ci0KLS8vIEhQIGFDQyBjYW5ub3QgZGVhbCB3aXRoIG1pc3NpbmcgbmFtZXMgZm9yIHRlbXBsYXRlIHZhbHVlIHBhcmFtZXRlcnMKLXRlbXBsYXRlIDxib29sIHg+IHN0cnVjdCBTVEFUSUNfQVNTRVJUSU9OX0ZBSUxVUkU7Ci0KLXRlbXBsYXRlIDw+IHN0cnVjdCBTVEFUSUNfQVNTRVJUSU9OX0ZBSUxVUkU8dHJ1ZT4geyBlbnVtIHsgdmFsdWUgPSAxIH07IH07Ci0KLS8vIEhQIGFDQyBjYW5ub3QgZGVhbCB3aXRoIG1pc3NpbmcgbmFtZXMgZm9yIHRlbXBsYXRlIHZhbHVlIHBhcmFtZXRlcnMKLXRlbXBsYXRlPGludCB4PiBzdHJ1Y3Qgc3RhdGljX2Fzc2VydF90ZXN0e307Ci0KLX0KLQotLy8KLS8vIEltcGxpY2l0IGluc3RhbnRpYXRpb24gcmVxdWlyZXMgdGhhdCBhbGwgbWVtYmVyIGRlY2xhcmF0aW9ucyBiZQotLy8gaW5zdGFudGlhdGVkLCBidXQgdGhhdCB0aGUgZGVmaW5pdGlvbnMgYXJlICpub3QqIGluc3RhbnRpYXRlZC4KLS8vCi0vLyBJdCdzIG5vdCBwYXJ0aWN1bGFybHkgY2xlYXIgaG93IHRoaXMgYXBwbGllcyB0byBlbnVtJ3Mgb3IgdHlwZWRlZnM7Ci0vLyBib3RoIGFyZSBkZXNjcmliZWQgYXMgZGVjbGFyYXRpb25zIFs3LjEuM10gYW5kIFs3LjJdIGluIHRoZSBzdGFuZGFyZCwKLS8vIGhvd2V2ZXIgc29tZSBjb21waWxlcnMgdXNlICJkZWxheWVkIGV2YWx1YXRpb24iIG9mIG9uZSBvciBtb3JlIG9mCi0vLyB0aGVzZSB3aGVuIGltcGxpY2l0bHkgaW5zdGFudGlhdGluZyB0ZW1wbGF0ZXMuICBXZSB1c2UgdHlwZWRlZiBkZWNsYXJhdGlvbnMKLS8vIGJ5IGRlZmF1bHQsIGJ1dCB0cnkgZGVmaW5pbmcgTkROQk9PU1RfVVNFX0VOVU1fU1RBVElDX0FTU0VSVCBpZiB0aGUgZW51bQotLy8gdmVyc2lvbiBnZXRzIGJldHRlciByZXN1bHRzIGZyb20geW91ciBjb21waWxlci4uLgotLy8KLS8vIEltcGxlbWVudGF0aW9uOgotLy8gQm90aCBvZiB0aGVzZSB2ZXJzaW9ucyByZWx5IG9uIHNpemVvZihpbmNvbXBsZXRlX3R5cGUpIGdlbmVyYXRpbmcgYW4gZXJyb3IKLS8vIG1lc3NhZ2UgY29udGFpbmluZyB0aGUgbmFtZSBvZiB0aGUgaW5jb21wbGV0ZSB0eXBlLiAgV2UgdXNlCi0vLyAiU1RBVElDX0FTU0VSVElPTl9GQUlMVVJFIiBhcyB0aGUgdHlwZSBuYW1lIGhlcmUgdG8gZ2VuZXJhdGUKLS8vIGFuIGV5ZSBjYXRjaGluZyBlcnJvciBtZXNzYWdlLiAgVGhlIHJlc3VsdCBvZiB0aGUgc2l6ZW9mIGV4cHJlc3Npb24gaXMgZWl0aGVyCi0vLyB1c2VkIGFzIGFuIGVudW0gaW5pdGlhbGlzZXIsIG9yIGFzIGEgdGVtcGxhdGUgYXJndW1lbnQgZGVwZW5kaW5nIHdoaWNoIHZlcnNpb24KLS8vIGlzIGluIHVzZS4uLgotLy8gTm90ZSB0aGF0IHRoZSBhcmd1bWVudCB0byB0aGUgYXNzZXJ0IGlzIGV4cGxpY2l0bHkgY2FzdCB0byBib29sIHVzaW5nIG9sZC0KLS8vIHN0eWxlIGNhc3RzOiB0b28gbWFueSBjb21waWxlcnMgY3VycmVudGx5IGhhdmUgcHJvYmxlbXMgd2l0aCBzdGF0aWNfY2FzdAotLy8gd2hlbiB1c2VkIGluc2lkZSBpbnRlZ3JhbCBjb25zdGFudCBleHByZXNzaW9ucy4KLS8vCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfQlVHR1lfSU5URUdSQUxfQ09OU1RBTlRfRVhQUkVTU0lPTlMpCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpICYmIChORE5CT09TVF9NU1ZDIDwgMTMwMCkKLS8vIF9fTElORV9fIG1hY3JvIGJyb2tlbiB3aGVuIC1aSSBpcyB1c2VkIHNlZSBRMTk5MDU3Ci0vLyBmb3J0dW5hdGVseSBNU1ZDIGlnbm9yZXMgZHVwbGljYXRlIHR5cGVkZWYncy4KLSNkZWZpbmUgTkROQk9PU1RfU1RBVElDX0FTU0VSVCggQiApIFwKLSAgIHR5cGVkZWYgOjpuZG5ib29zdDo6c3RhdGljX2Fzc2VydF90ZXN0PFwKLSAgICAgIHNpemVvZig6Om5kbmJvb3N0OjpTVEFUSUNfQVNTRVJUSU9OX0ZBSUxVUkU8IChib29sKSggQiApID4pXAotICAgICAgPiBib29zdF9zdGF0aWNfYXNzZXJ0X3R5cGVkZWZfCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpICYmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfTUFDUk9TKQotI2RlZmluZSBORE5CT09TVF9TVEFUSUNfQVNTRVJUKCBCICkgXAotICAgdHlwZWRlZiA6Om5kbmJvb3N0OjpzdGF0aWNfYXNzZXJ0X3Rlc3Q8XAotICAgICAgc2l6ZW9mKDo6bmRuYm9vc3Q6OlNUQVRJQ19BU1NFUlRJT05fRkFJTFVSRTwgTkROQk9PU1RfU1RBVElDX0FTU0VSVF9CT09MX0NBU1QgKCBCICkgPik+XAotICAgICAgICAgTkROQk9PU1RfSk9JTihib29zdF9zdGF0aWNfYXNzZXJ0X3R5cGVkZWZfLCBfX0NPVU5URVJfXykKLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfTVNWQykKLSNkZWZpbmUgTkROQk9PU1RfU1RBVElDX0FTU0VSVCguLi4pIFwKLSAgIHR5cGVkZWYgOjpuZG5ib29zdDo6c3RhdGljX2Fzc2VydF90ZXN0PFwKLSAgICAgIHNpemVvZig6Om5kbmJvb3N0OjpTVEFUSUNfQVNTRVJUSU9OX0ZBSUxVUkU8IE5ETkJPT1NUX1NUQVRJQ19BU1NFUlRfQk9PTF9DQVNUIChfX1ZBX0FSR1NfXykgPik+XAotICAgICAgICAgTkROQk9PU1RfSk9JTihib29zdF9zdGF0aWNfYXNzZXJ0X3R5cGVkZWZfLCBfX0NPVU5URVJfXykKLSNlbGlmIChkZWZpbmVkKE5ETkJPT1NUX0lOVEVMX0NYWF9WRVJTSU9OKSB8fCBkZWZpbmVkKE5ETkJPT1NUX1NBX0dDQ19XT1JLQVJPVU5EKSkgICYmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfTUFDUk9TKQotLy8gYWd1cnQgMTUvc2VwLzAyOiBhIHNwZWNpYWwgY2FyZSBpcyBuZWVkZWQgdG8gZm9yY2UgSW50ZWwgQysrIGlzc3VlIGFuIGVycm9yIAotLy8gaW5zdGVhZCBvZiB3YXJuaW5nIGluIGNhc2Ugb2YgZmFpbHVyZQotIyBkZWZpbmUgTkROQk9PU1RfU1RBVElDX0FTU0VSVCggQiApIFwKLSAgICB0eXBlZGVmIGNoYXIgTkROQk9PU1RfSk9JTihib29zdF9zdGF0aWNfYXNzZXJ0X3R5cGVkZWZfLCBfX0xJTkVfXykgXAotICAgICAgICBbIDo6bmRuYm9vc3Q6OlNUQVRJQ19BU1NFUlRJT05fRkFJTFVSRTwgTkROQk9PU1RfU1RBVElDX0FTU0VSVF9CT09MX0NBU1QoIEIgKSA+Ojp2YWx1ZSBdCi0jZWxpZiAoZGVmaW5lZChORE5CT09TVF9JTlRFTF9DWFhfVkVSU0lPTikgfHwgZGVmaW5lZChORE5CT09TVF9TQV9HQ0NfV09SS0FST1VORCkpICAmJiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19NQUNST1MpCi0vLyBhZ3VydCAxNS9zZXAvMDI6IGEgc3BlY2lhbCBjYXJlIGlzIG5lZWRlZCB0byBmb3JjZSBJbnRlbCBDKysgaXNzdWUgYW4gZXJyb3IgCi0vLyBpbnN0ZWFkIG9mIHdhcm5pbmcgaW4gY2FzZSBvZiBmYWlsdXJlCi0jIGRlZmluZSBORE5CT09TVF9TVEFUSUNfQVNTRVJUKC4uLikgXAotICAgIHR5cGVkZWYgY2hhciBORE5CT09TVF9KT0lOKGJvb3N0X3N0YXRpY19hc3NlcnRfdHlwZWRlZl8sIF9fTElORV9fKSBcCi0gICAgICAgIFsgOjpuZG5ib29zdDo6U1RBVElDX0FTU0VSVElPTl9GQUlMVVJFPCBORE5CT09TVF9TVEFUSUNfQVNTRVJUX0JPT0xfQ0FTVCggX19WQV9BUkdTX18gKSA+Ojp2YWx1ZSBdCi0jZWxpZiBkZWZpbmVkKF9fc2dpKQotLy8gc3BlY2lhbCB2ZXJzaW9uIGZvciBTR0kgTUlQU3BybyBjb21waWxlcgotI2RlZmluZSBORE5CT09TVF9TVEFUSUNfQVNTRVJUKCBCICkgXAotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIFwKLSAgICAgTkROQk9PU1RfSk9JTihib29zdF9zdGF0aWNfYXNzZXJ0X3Rlc3RfLCBfX0xJTkVfXykgPSAoIEIgKSk7IFwKLSAgIHR5cGVkZWYgOjpuZG5ib29zdDo6c3RhdGljX2Fzc2VydF90ZXN0PFwKLSAgICAgc2l6ZW9mKDo6bmRuYm9vc3Q6OlNUQVRJQ19BU1NFUlRJT05fRkFJTFVSRTwgXAotICAgICAgIE5ETkJPT1NUX0pPSU4oYm9vc3Rfc3RhdGljX2Fzc2VydF90ZXN0XywgX19MSU5FX18pID4pPlwKLSAgICAgICAgIE5ETkJPT1NUX0pPSU4oYm9vc3Rfc3RhdGljX2Fzc2VydF90eXBlZGVmXywgX19MSU5FX18pCi0jZWxpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fTVdFUktTX18sIDw9IDB4MzAwMykKLS8vIHNwZWNpYWwgdmVyc2lvbiBmb3IgQ29kZVdhcnJpb3IgPD0gOC54Ci0jZGVmaW5lIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoIEIgKSBcCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCBcCi0gICAgIE5ETkJPT1NUX0pPSU4oYm9vc3Rfc3RhdGljX2Fzc2VydF90ZXN0XywgX19MSU5FX18pID0gXAotICAgICAgIHNpemVvZig6Om5kbmJvb3N0OjpTVEFUSUNfQVNTRVJUSU9OX0ZBSUxVUkU8IE5ETkJPT1NUX1NUQVRJQ19BU1NFUlRfQk9PTF9DQVNUKCBCICkgPikgKQotI2Vsc2UKLS8vIGdlbmVyaWMgdmVyc2lvbgotIyAgaWZuZGVmIE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX01BQ1JPUwotIyAgICAgZGVmaW5lIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoIC4uLiApIFwKLSAgICAgICAgIHR5cGVkZWYgOjpuZG5ib29zdDo6c3RhdGljX2Fzc2VydF90ZXN0PFwKLSAgICAgICAgICAgIHNpemVvZig6Om5kbmJvb3N0OjpTVEFUSUNfQVNTRVJUSU9OX0ZBSUxVUkU8IE5ETkJPT1NUX1NUQVRJQ19BU1NFUlRfQk9PTF9DQVNUKCBfX1ZBX0FSR1NfXyApID4pPlwKLSAgICAgICAgICAgICAgIE5ETkJPT1NUX0pPSU4oYm9vc3Rfc3RhdGljX2Fzc2VydF90eXBlZGVmXywgX19MSU5FX18pIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlRfVU5VU0VEX0FUVFJJQlVURQotIyAgZWxzZQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoIEIgKSBcCi0gICAgICAgICB0eXBlZGVmIDo6bmRuYm9vc3Q6OnN0YXRpY19hc3NlcnRfdGVzdDxcCi0gICAgICAgICAgICBzaXplb2YoOjpuZG5ib29zdDo6U1RBVElDX0FTU0VSVElPTl9GQUlMVVJFPCBORE5CT09TVF9TVEFUSUNfQVNTRVJUX0JPT0xfQ0FTVCggQiApID4pPlwKLSAgICAgICAgICAgICAgIE5ETkJPT1NUX0pPSU4oYm9vc3Rfc3RhdGljX2Fzc2VydF90eXBlZGVmXywgX19MSU5FX18pIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlRfVU5VU0VEX0FUVFJJQlVURQotIyAgZW5kaWYKLSNlbmRpZgotCi0jZWxzZQotLy8gYWx0ZXJuYXRpdmUgZW51bSBiYXNlZCBpbXBsZW1lbnRhdGlvbjoKLSMgIGlmbmRlZiBORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19NQUNST1MKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoIC4uLiApIFwKLSAgICAgICAgIGVudW0geyBORE5CT09TVF9KT0lOKGJvb3N0X3N0YXRpY19hc3NlcnRfZW51bV8sIF9fTElORV9fKSBcCi0gICAgICAgICAgICA9IHNpemVvZig6Om5kbmJvb3N0OjpTVEFUSUNfQVNTRVJUSU9OX0ZBSUxVUkU8IChib29sKSggX19WQV9BUkdTX18gKSA+KSB9Ci0jICBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9TVEFUSUNfQVNTRVJUKEIpIFwKLSAgICAgICAgIGVudW0geyBORE5CT09TVF9KT0lOKGJvb3N0X3N0YXRpY19hc3NlcnRfZW51bV8sIF9fTElORV9fKSBcCi0gICAgICAgICAgICA9IHNpemVvZig6Om5kbmJvb3N0OjpTVEFUSUNfQVNTRVJUSU9OX0ZBSUxVUkU8IChib29sKSggQiApID4pIH0KLSMgIGVuZGlmCi0jZW5kaWYKLSNlbmRpZiAvLyBkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1NUQVRJQ19BU1NFUlQpCi0KLSNlbmRpZiAvLyBORE5CT09TVF9TVEFUSUNfQVNTRVJUX0hQUAotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc3dhcC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3N3YXAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjM2QzNzkwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc3dhcC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi0vLyBDb3B5cmlnaHQgKEMpIDIwMDcgSm9zZXBoIEdhdXRlcmluCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWZuZGVmIE5ETkJPT1NUX1NXQVBfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1NXQVBfSFBQCi0KLSNpbmNsdWRlICJuZG5ib29zdC91dGlsaXR5L3N3YXAuaHBwIgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc3lzdGVtL2FwaV9jb25maWcuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC9zeXN0ZW0vYXBpX2NvbmZpZy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3MWQxMzAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC9zeXN0ZW0vYXBpX2NvbmZpZy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0vLyAgbmRuYm9vc3Qvc3lzdGVtL2FwaV9jb25maWcuaHBwICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gIENvcHlyaWdodCBCZW1hbiBEYXdlcyAyMDAzLCAyMDA2LCAyMDEwCi0KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dAotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvc3lzdGVtIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gIEJvb3N0LlN5c3RlbSBjYWxscyBvcGVyYXRpbmcgc3lzdGVtIEFQSSBmdW5jdGlvbnMgdG8gaW1wbGVtZW50IHN5c3RlbSBlcnJvciBjYXRlZ29yeQotLy8gIGZ1bmN0aW9ucy4gVXN1YWxseSB0aGVyZSBpcyBubyBxdWVzdGlvbiBhcyB0byB3aGljaCBBUEkgaXMgdG8gYmUgdXNlZC4KLS8vCi0vLyAgSW4gdGhlIGNhc2Ugb2YgTWluR1cgb3IgQ3lnd2luL01pbkdXLCBob3dldmVyLCBib3RoIFBPU0lYIGFuZCBXaW5kb3dzIEFQSSdzIGFyZQotLy8gIGF2YWlsYWJsZS4gQ2hhb3MgZW5zdWVzIGlmIG90aGVyIGNvZGUgdGhpbmtzIG9uZSBpcyBpbiB1c2Ugd2hlbiBCb29zdC5TeXN0ZW0gd2FzCi0vLyAgYWN0dWFsbHkgYnVpbHQgd2l0aCB0aGUgb3RoZXIuIFRoaXMgaGVhZGVyIGNlbnRyYWxpemVzIHRoZSBBUEkgY2hvaWNlIGFuZCBwcmV2ZW50cwotLy8gIHVzZXIgZGVmaW5pdGlvbiBvZiBBUEkgbWFjcm9zLCB0aHVzIGVsbWluYXRpbmcgdGhlIHBvc3NpYmlsaXR5IG9mIG1pc21hdGNoZXMgYW5kIHRoZQotLy8gIG5lZWQgdG8gdGVzdCBjb25maWd1cmF0aW9ucyB3aXRoIGxpdHRsZSBvciBubyBwcmFjdGljYWwgdmFsdWUuCi0vLwotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotI2lmbmRlZiBORE5CT09TVF9TWVNURU1fQVBJX0NPTkZJR19IUFAgICAgICAgICAgICAgICAgICAKLSNkZWZpbmUgTkROQk9PU1RfU1lTVEVNX0FQSV9DT05GSUdfSFBQCi0KLSMgaWYgZGVmaW5lZChORE5CT09TVF9QT1NJWF9BUEkpIHx8IGRlZmluZWQoTkROQk9PU1RfV0lORE9XU19BUEkpCi0jICAgZXJyb3IgdXNlciBkZWZpbmVkIE5ETkJPT1NUX1BPU0lYX0FQSSBvciBORE5CT09TVF9XSU5ET1dTX0FQSSBub3Qgc3VwcG9ydGVkCi0jIGVuZGlmCi0KLS8vICBORE5CT09TVF9QT1NJWF9BUEkgb3IgTkROQk9PU1RfV0lORE9XU19BUEkgc3BlY2lmeSB3aGljaCBBUEkgdG8gdXNlCi0vLyAgICBDeWd3aW4vTWluR1cgZG9lcyBub3QgcHJlZGVmaW5lIF9XSU4zMi4KLS8vICAgIFN0YW5kYWxvbmUgTWluR1cgYW5kIGFsbCBvdGhlciBrbm93biBXaW5kb3dzIGNvbXBpbGVycyBkbyBwcmVkZWZpbmUgX1dJTjMyCi0vLyAgICBDb21waWxlcnMgdGhhdCBwcmVkZWZpbmUgX1dJTjMyIG9yIF9fTUlOR1czMl9fIGRvIHNvIGZvciBXaW5kb3dzIDY0LWJpdCBidWlsZHMgdG9vLgotCi0jIGlmIGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fQ1lHV0lOX18pIC8vIFdpbmRvd3MgZGVmYXVsdCwgaW5jbHVkaW5nIE1pbkdXIGFuZCBDeWd3aW4KLSMgICBkZWZpbmUgTkROQk9PU1RfV0lORE9XU19BUEkKLSMgZWxzZQotIyAgIGRlZmluZSBORE5CT09TVF9QT1NJWF9BUEkgCi0jIGVuZGlmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0jZW5kaWYgIC8vIE5ETkJPT1NUX1NZU1RFTV9BUElfQ09ORklHX0hQUCAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc3lzdGVtL2NvbmZpZy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3N5c3RlbS9jb25maWcuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMTgwZGU0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc3lzdGVtL2NvbmZpZy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi0vLyAgbmRuYm9vc3Qvc3lzdGVtL2NvbmZpZy5ocHAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gIENvcHlyaWdodCBCZW1hbiBEYXdlcyAyMDAzLCAyMDA2Ci0KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyAgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9zeXN0ZW0gZm9yIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfU1lTVEVNX0NPTkZJR19IUFAgICAgICAgICAgICAgICAgICAKLSNkZWZpbmUgTkROQk9PU1RfU1lTVEVNX0NPTkZJR19IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc3lzdGVtL2FwaV9jb25maWcuaHBwPiAgLy8gZm9yIE5ETkJPT1NUX1BPU0lYX0FQSSBvciBORE5CT09TVF9XSU5ET1dTX0FQSQotCi0vLyBUaGlzIGhlYWRlciBpbXBsZW1lbnRzIHNlcGFyYXRlIGNvbXBpbGF0aW9uIGZlYXR1cmVzIGFzIGRlc2NyaWJlZCBpbgotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvbW9yZS9zZXBhcmF0ZV9jb21waWxhdGlvbi5odG1sCi0KLS8vICBub3JtYWxpemUgbWFjcm9zICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfU1lTVEVNX0RZTl9MSU5LKSAmJiAhZGVmaW5lZChORE5CT09TVF9TWVNURU1fU1RBVElDX0xJTkspIFwKLSAgJiYgIWRlZmluZWQoTkROQk9PU1RfQUxMX0RZTl9MSU5LKSAmJiAhZGVmaW5lZChORE5CT09TVF9BTExfU1RBVElDX0xJTkspCi0jIGRlZmluZSBORE5CT09TVF9TWVNURU1fU1RBVElDX0xJTksKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9BTExfRFlOX0xJTkspICYmICFkZWZpbmVkKE5ETkJPT1NUX1NZU1RFTV9EWU5fTElOSykKLSMgZGVmaW5lIE5ETkJPT1NUX1NZU1RFTV9EWU5fTElOSyAKLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfQUxMX1NUQVRJQ19MSU5LKSAmJiAhZGVmaW5lZChORE5CT09TVF9TWVNURU1fU1RBVElDX0xJTkspCi0jIGRlZmluZSBORE5CT09TVF9TWVNURU1fU1RBVElDX0xJTksgCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfU1lTVEVNX0RZTl9MSU5LKSAmJiBkZWZpbmVkKE5ETkJPT1NUX1NZU1RFTV9TVEFUSUNfTElOSykKLSMgZXJyb3IgTXVzdCBub3QgZGVmaW5lIGJvdGggTkROQk9PU1RfU1lTVEVNX0RZTl9MSU5LIGFuZCBORE5CT09TVF9TWVNURU1fU1RBVElDX0xJTksKLSNlbmRpZgotCi0vLyAgZW5hYmxlIGR5bmFtaWMgb3Igc3RhdGljIGxpbmtpbmcgYXMgcmVxdWVzdGVkIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfQUxMX0RZTl9MSU5LKSB8fCBkZWZpbmVkKE5ETkJPT1NUX1NZU1RFTV9EWU5fTElOSykKLSMgaWYgZGVmaW5lZChORE5CT09TVF9TWVNURU1fU09VUkNFKQotIyAgIGRlZmluZSBORE5CT09TVF9TWVNURU1fREVDTCBORE5CT09TVF9TWU1CT0xfRVhQT1JUCi0jIGVsc2UgCi0jICAgZGVmaW5lIE5ETkJPT1NUX1NZU1RFTV9ERUNMIE5ETkJPT1NUX1NZTUJPTF9JTVBPUlQKLSMgZW5kaWYKLSNlbHNlCi0jIGRlZmluZSBORE5CT09TVF9TWVNURU1fREVDTAotI2VuZGlmCi0KLS8vICBlbmFibGUgYXV0b21hdGljIGxpYnJhcnkgdmFyaWFudCBzZWxlY3Rpb24gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLyAKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1NZU1RFTV9TT1VSQ0UpICYmICFkZWZpbmVkKE5ETkJPT1NUX0FMTF9OT19MSUIpICYmICFkZWZpbmVkKE5ETkJPT1NUX1NZU1RFTV9OT19MSUIpCi0vLwotLy8gU2V0IHRoZSBuYW1lIG9mIG91ciBsaWJyYXJ5LCB0aGlzIHdpbGwgZ2V0IHVuZGVmJ2VkIGJ5IGF1dG9fbGluay5ocHAKLS8vIG9uY2UgaXQncyBkb25lIHdpdGggaXQ6Ci0vLwotI2RlZmluZSBORE5CT09TVF9MSUJfTkFNRSBuZG5ib29zdF9zeXN0ZW0KLS8vCi0vLyBJZiB3ZSdyZSBpbXBvcnRpbmcgY29kZSBmcm9tIGEgZGxsLCB0aGVuIHRlbGwgYXV0b19saW5rLmhwcCBhYm91dCBpdDoKLS8vCi0jaWYgZGVmaW5lZChORE5CT09TVF9BTExfRFlOX0xJTkspIHx8IGRlZmluZWQoTkROQk9PU1RfU1lTVEVNX0RZTl9MSU5LKQotIyAgZGVmaW5lIE5ETkJPT1NUX0RZTl9MSU5LCi0jZW5kaWYKLS8vCi0vLyBBbmQgaW5jbHVkZSB0aGUgaGVhZGVyIHRoYXQgZG9lcyB0aGUgd29yazoKLS8vCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL2F1dG9fbGluay5ocHA+Ci0jZW5kaWYgIC8vIGF1dG8tbGlua2luZyBkaXNhYmxlZAotCi0jZW5kaWYgLy8gTkROQk9PU1RfU1lTVEVNX0NPTkZJR19IUFAKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC9zeXN0ZW0vZXJyb3JfY29kZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3N5c3RlbS9lcnJvcl9jb2RlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWQ5MmM4NS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3N5c3RlbS9lcnJvcl9jb2RlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUyMSArMCwwIEBACi0vLyAgbmRuYm9vc3Qvc3lzdGVtL2Vycm9yX2NvZGUuaHBwICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgQ29weXJpZ2h0IEJlbWFuIERhd2VzIDIwMDYsIDIwMDcKLS8vICBDb3B5cmlnaHQgQ2hyaXN0b3BlciBLb2hsaG9mZiAyMDA3Ci0KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyAgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgbGlicmFyeSBob21lIHBhZ2UgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9zeXN0ZW0KLQotI2lmbmRlZiBORE5CT09TVF9FUlJPUl9DT0RFX0hQUAotI2RlZmluZSBORE5CT09TVF9FUlJPUl9DT0RFX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3Qvc3lzdGVtL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY3N0ZGludC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9vcGVyYXRvcnMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L25vbmNvcHlhYmxlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC91dGlsaXR5L2VuYWJsZV9pZi5ocHA+Ci0jaW5jbHVkZSA8b3N0cmVhbT4KLSNpbmNsdWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSA8c3RkZXhjZXB0PgotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+Ci0KLS8vIFRPRE86IHVuZGVmIHRoZXNlIG1hY3JvcyBpZiBub3QgYWxyZWFkeSBkZWZpbmVkCi0jaW5jbHVkZSA8bmRuYm9vc3QvY2Vycm5vLmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1BPU0lYX0FQSSkgJiYgIWRlZmluZWQoTkROQk9PU1RfV0lORE9XU19BUEkpCi0jICBlcnJvciBORE5CT09TVF9QT1NJWF9BUEkgb3IgTkROQk9PU1RfV0lORE9XU19BUEkgbXVzdCBiZSBkZWZpbmVkCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy9hYmlfcHJlZml4LmhwcD4gLy8gbXVzdCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotCi0jaWZuZGVmIE5ETkJPT1NUX1NZU1RFTV9OT0VYQ0VQVAotI2RlZmluZSBORE5CT09TVF9TWVNURU1fTk9FWENFUFQgTkROQk9PU1RfTk9FWENFUFQKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLSAgbmFtZXNwYWNlIHN5c3RlbQotICB7Ci0KLSAgICBjbGFzcyBlcnJvcl9jb2RlOwotICAgIGNsYXNzIGVycm9yX2NvbmRpdGlvbjsKLQotICAgIC8vICAiQ29uY2VwdCIgaGVscGVycyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgIHRlbXBsYXRlPCBjbGFzcyBUID4KLSAgICBzdHJ1Y3QgaXNfZXJyb3JfY29kZV9lbnVtIHsgc3RhdGljIGNvbnN0IGJvb2wgdmFsdWUgPSBmYWxzZTsgfTsKLQotICAgIHRlbXBsYXRlPCBjbGFzcyBUID4KLSAgICBzdHJ1Y3QgaXNfZXJyb3JfY29uZGl0aW9uX2VudW0geyBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9IGZhbHNlOyB9OwotCi0gICAgLy8gIGdlbmVyaWMgZXJyb3JfY29uZGl0aW9ucyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gICAgbmFtZXNwYWNlIGVycmMKLSAgICB7Ci0gICAgICBlbnVtIGVycmNfdAotICAgICAgewotICAgICAgICBzdWNjZXNzID0gMCwKLSAgICAgICAgYWRkcmVzc19mYW1pbHlfbm90X3N1cHBvcnRlZCA9IEVBRk5PU1VQUE9SVCwKLSAgICAgICAgYWRkcmVzc19pbl91c2UgPSBFQUREUklOVVNFLAotICAgICAgICBhZGRyZXNzX25vdF9hdmFpbGFibGUgPSBFQUREUk5PVEFWQUlMLAotICAgICAgICBhbHJlYWR5X2Nvbm5lY3RlZCA9IEVJU0NPTk4sCi0gICAgICAgIGFyZ3VtZW50X2xpc3RfdG9vX2xvbmcgPSBFMkJJRywKLSAgICAgICAgYXJndW1lbnRfb3V0X29mX2RvbWFpbiA9IEVET00sCi0gICAgICAgIGJhZF9hZGRyZXNzID0gRUZBVUxULAotICAgICAgICBiYWRfZmlsZV9kZXNjcmlwdG9yID0gRUJBREYsCi0gICAgICAgIGJhZF9tZXNzYWdlID0gRUJBRE1TRywKLSAgICAgICAgYnJva2VuX3BpcGUgPSBFUElQRSwKLSAgICAgICAgY29ubmVjdGlvbl9hYm9ydGVkID0gRUNPTk5BQk9SVEVELAotICAgICAgICBjb25uZWN0aW9uX2FscmVhZHlfaW5fcHJvZ3Jlc3MgPSBFQUxSRUFEWSwKLSAgICAgICAgY29ubmVjdGlvbl9yZWZ1c2VkID0gRUNPTk5SRUZVU0VELAotICAgICAgICBjb25uZWN0aW9uX3Jlc2V0ID0gRUNPTk5SRVNFVCwKLSAgICAgICAgY3Jvc3NfZGV2aWNlX2xpbmsgPSBFWERFViwKLSAgICAgICAgZGVzdGluYXRpb25fYWRkcmVzc19yZXF1aXJlZCA9IEVERVNUQUREUlJFUSwKLSAgICAgICAgZGV2aWNlX29yX3Jlc291cmNlX2J1c3kgPSBFQlVTWSwKLSAgICAgICAgZGlyZWN0b3J5X25vdF9lbXB0eSA9IEVOT1RFTVBUWSwKLSAgICAgICAgZXhlY3V0YWJsZV9mb3JtYXRfZXJyb3IgPSBFTk9FWEVDLAotICAgICAgICBmaWxlX2V4aXN0cyA9IEVFWElTVCwKLSAgICAgICAgZmlsZV90b29fbGFyZ2UgPSBFRkJJRywKLSAgICAgICAgZmlsZW5hbWVfdG9vX2xvbmcgPSBFTkFNRVRPT0xPTkcsCi0gICAgICAgIGZ1bmN0aW9uX25vdF9zdXBwb3J0ZWQgPSBFTk9TWVMsCi0gICAgICAgIGhvc3RfdW5yZWFjaGFibGUgPSBFSE9TVFVOUkVBQ0gsCi0gICAgICAgIGlkZW50aWZpZXJfcmVtb3ZlZCA9IEVJRFJNLAotICAgICAgICBpbGxlZ2FsX2J5dGVfc2VxdWVuY2UgPSBFSUxTRVEsCi0gICAgICAgIGluYXBwcm9wcmlhdGVfaW9fY29udHJvbF9vcGVyYXRpb24gPSBFTk9UVFksCi0gICAgICAgIGludGVycnVwdGVkID0gRUlOVFIsCi0gICAgICAgIGludmFsaWRfYXJndW1lbnQgPSBFSU5WQUwsCi0gICAgICAgIGludmFsaWRfc2VlayA9IEVTUElQRSwKLSAgICAgICAgaW9fZXJyb3IgPSBFSU8sCi0gICAgICAgIGlzX2FfZGlyZWN0b3J5ID0gRUlTRElSLAotICAgICAgICBtZXNzYWdlX3NpemUgPSBFTVNHU0laRSwKLSAgICAgICAgbmV0d29ya19kb3duID0gRU5FVERPV04sCi0gICAgICAgIG5ldHdvcmtfcmVzZXQgPSBFTkVUUkVTRVQsCi0gICAgICAgIG5ldHdvcmtfdW5yZWFjaGFibGUgPSBFTkVUVU5SRUFDSCwKLSAgICAgICAgbm9fYnVmZmVyX3NwYWNlID0gRU5PQlVGUywKLSAgICAgICAgbm9fY2hpbGRfcHJvY2VzcyA9IEVDSElMRCwKLSAgICAgICAgbm9fbGluayA9IEVOT0xJTkssCi0gICAgICAgIG5vX2xvY2tfYXZhaWxhYmxlID0gRU5PTENLLAotICAgICAgICBub19tZXNzYWdlX2F2YWlsYWJsZSA9IEVOT0RBVEEsCi0gICAgICAgIG5vX21lc3NhZ2UgPSBFTk9NU0csCi0gICAgICAgIG5vX3Byb3RvY29sX29wdGlvbiA9IEVOT1BST1RPT1BULAotICAgICAgICBub19zcGFjZV9vbl9kZXZpY2UgPSBFTk9TUEMsCi0gICAgICAgIG5vX3N0cmVhbV9yZXNvdXJjZXMgPSBFTk9TUiwKLSAgICAgICAgbm9fc3VjaF9kZXZpY2Vfb3JfYWRkcmVzcyA9IEVOWElPLAotICAgICAgICBub19zdWNoX2RldmljZSA9IEVOT0RFViwKLSAgICAgICAgbm9fc3VjaF9maWxlX29yX2RpcmVjdG9yeSA9IEVOT0VOVCwKLSAgICAgICAgbm9fc3VjaF9wcm9jZXNzID0gRVNSQ0gsCi0gICAgICAgIG5vdF9hX2RpcmVjdG9yeSA9IEVOT1RESVIsCi0gICAgICAgIG5vdF9hX3NvY2tldCA9IEVOT1RTT0NLLAotICAgICAgICBub3RfYV9zdHJlYW0gPSBFTk9TVFIsCi0gICAgICAgIG5vdF9jb25uZWN0ZWQgPSBFTk9UQ09OTiwKLSAgICAgICAgbm90X2Vub3VnaF9tZW1vcnkgPSBFTk9NRU0sCi0gICAgICAgIG5vdF9zdXBwb3J0ZWQgPSBFTk9UU1VQLAotICAgICAgICBvcGVyYXRpb25fY2FuY2VsZWQgPSBFQ0FOQ0VMRUQsCi0gICAgICAgIG9wZXJhdGlvbl9pbl9wcm9ncmVzcyA9IEVJTlBST0dSRVNTLAotICAgICAgICBvcGVyYXRpb25fbm90X3Blcm1pdHRlZCA9IEVQRVJNLAotICAgICAgICBvcGVyYXRpb25fbm90X3N1cHBvcnRlZCA9IEVPUE5PVFNVUFAsCi0gICAgICAgIG9wZXJhdGlvbl93b3VsZF9ibG9jayA9IEVXT1VMREJMT0NLLAotICAgICAgICBvd25lcl9kZWFkID0gRU9XTkVSREVBRCwKLSAgICAgICAgcGVybWlzc2lvbl9kZW5pZWQgPSBFQUNDRVMsCi0gICAgICAgIHByb3RvY29sX2Vycm9yID0gRVBST1RPLAotICAgICAgICBwcm90b2NvbF9ub3Rfc3VwcG9ydGVkID0gRVBST1RPTk9TVVBQT1JULAotICAgICAgICByZWFkX29ubHlfZmlsZV9zeXN0ZW0gPSBFUk9GUywKLSAgICAgICAgcmVzb3VyY2VfZGVhZGxvY2tfd291bGRfb2NjdXIgPSBFREVBRExLLAotICAgICAgICByZXNvdXJjZV91bmF2YWlsYWJsZV90cnlfYWdhaW4gPSBFQUdBSU4sCi0gICAgICAgIHJlc3VsdF9vdXRfb2ZfcmFuZ2UgPSBFUkFOR0UsCi0gICAgICAgIHN0YXRlX25vdF9yZWNvdmVyYWJsZSA9IEVOT1RSRUNPVkVSQUJMRSwKLSAgICAgICAgc3RyZWFtX3RpbWVvdXQgPSBFVElNRSwKLSAgICAgICAgdGV4dF9maWxlX2J1c3kgPSBFVFhUQlNZLAotICAgICAgICB0aW1lZF9vdXQgPSBFVElNRURPVVQsCi0gICAgICAgIHRvb19tYW55X2ZpbGVzX29wZW5faW5fc3lzdGVtID0gRU5GSUxFLAotICAgICAgICB0b29fbWFueV9maWxlc19vcGVuID0gRU1GSUxFLAotICAgICAgICB0b29fbWFueV9saW5rcyA9IEVNTElOSywKLSAgICAgICAgdG9vX21hbnlfc3ltYm9saWNfbGlua19sZXZlbHMgPSBFTE9PUCwKLSAgICAgICAgdmFsdWVfdG9vX2xhcmdlID0gRU9WRVJGTE9XLAotICAgICAgICB3cm9uZ19wcm90b2NvbF90eXBlID0gRVBST1RPVFlQRQotICAgICAgfTsKLQotICAgIH0gLy8gbmFtZXNwYWNlIGVycmMKLQotIyBpZm5kZWYgTkROQk9PU1RfU1lTVEVNX05PX0RFUFJFQ0FURUQKLSAgICBuYW1lc3BhY2UgcG9zaXggPSBlcnJjOwotICAgIG5hbWVzcGFjZSBwb3NpeF9lcnJvciA9IGVycmM7Ci0jIGVuZGlmCi0KLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBpc19lcnJvcl9jb25kaXRpb25fZW51bTxlcnJjOjplcnJjX3Q+Ci0gICAgICB7IHN0YXRpYyBjb25zdCBib29sIHZhbHVlID0gdHJ1ZTsgfTsKLQotCi0gICAgLy8gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gICAgLy8gIE9wZXJhdGluZyBzeXN0ZW0gc3BlY2lmaWMgaW50ZXJmYWNlcyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0KLSAgICAvLyAgVGhlIGludGVyZmFjZSBpcyBkaXZpZGVkIGludG8gZ2VuZXJhbCBhbmQgc3lzdGVtLXNwZWNpZmljIHBvcnRpb25zIHRvCi0gICAgLy8gIG1lZXQgdGhlc2UgcmVxdWlyZW1lbnRzOgotICAgIC8vCi0gICAgLy8gICogQ29kZSBjYWxsaW5nIGFuIG9wZXJhdGluZyBzeXN0ZW0gQVBJIGNhbiBjcmVhdGUgYW4gZXJyb3JfY29kZSB3aXRoCi0gICAgLy8gICAgYSBzaW5nbGUgY2F0ZWdvcnkgKHN5c3RlbV9jYXRlZ29yeSksIGV2ZW4gZm9yIFBPU0lYLWxpa2Ugb3BlcmF0aW5nCi0gICAgLy8gICAgc3lzdGVtcyB0aGF0IHJldHVybiBzb21lIFBPU0lYIGVycm5vIHZhbHVlcyBhbmQgc29tZSBuYXRpdmUgZXJybm8KLSAgICAvLyAgICB2YWx1ZXMuIFRoaXMgY29kZSBzaG91bGQgbm90IGhhdmUgdG8gcGF5IHRoZSBjb3N0IG9mIGRpc3Rpbmd1aXNoaW5nCi0gICAgLy8gICAgYmV0d2VlbiBjYXRlZ29yaWVzLCBzaW5jZSBpdCBpcyBub3QgeWV0IGtub3duIGlmIHRoYXQgaXMgbmVlZGVkLgotICAgIC8vCi0gICAgLy8gICogVXNlcnMgd2lzaGluZyB0byB3cml0ZSBzeXN0ZW0tc3BlY2lmaWMgY29kZSBzaG91bGQgYmUgZ2l2ZW4gZW51bXMgZm9yCi0gICAgLy8gICAgYXQgbGVhc3QgdGhlIGNvbW1vbiBlcnJvciBjYXNlcy4KLSAgICAvLwotICAgIC8vICAqIFN5c3RlbSBzcGVjaWZpYyBjb2RlIHNob3VsZCBmYWlsIGF0IGNvbXBpbGUgdGltZSBpZiBtb3ZlZCB0byBhbm90aGVyCi0gICAgLy8gICAgb3BlcmF0aW5nIHN5c3RlbS4KLQotICAgIC8vICBUaGUgc3lzdGVtIHNwZWNpZmljIHBvcnRpb25zIG9mIHRoZSBpbnRlcmZhY2UgYXJlIGxvY2F0ZWQgaW4gaGVhZGVycwotICAgIC8vICB3aXRoIG5hbWVzIHJlZmxlY3RpbmcgdGhlIG9wZXJhdGluZyBzeXN0ZW0uIEZvciBleGFtcGxlLAotICAgIC8vCi0gICAgLy8gICAgICAgPG5kbmJvb3N0L3N5c3RlbS9jeWd3aW5fZXJyb3IuaHBwPgotICAgIC8vICAgICAgIDxuZG5ib29zdC9zeXN0ZW0vbGludXhfZXJyb3IuaHBwPgotICAgIC8vICAgICAgIDxuZG5ib29zdC9zeXN0ZW0vd2luZG93c19lcnJvci5ocHA+Ci0gICAgLy8KLSAgICAvLyAgVGhlc2UgaGVhZGVycyBhcmUgZWZmZWN0aXZlbHkgZW1wdHkgZm9yIGNvbXBpbGVzIG9uIG9wZXJhdGluZyBzeXN0ZW1zCi0gICAgLy8gIHdoZXJlIHRoZXkgYXJlIG5vdCBhcHBsaWNhYmxlLgotCi0gICAgLy8gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gICAgLy8gIGNsYXNzIGVycm9yX2NhdGVnb3J5ICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gICAgY2xhc3MgZXJyb3JfY2F0ZWdvcnkgOiBwdWJsaWMgbm9uY29weWFibGUKLSAgICB7Ci0gICAgcHVibGljOgotICAgICAgdmlydHVhbCB+ZXJyb3JfY2F0ZWdvcnkoKXt9Ci0KLSAgICAgIHZpcnR1YWwgY29uc3QgY2hhciAqICAgICBuYW1lKCkgY29uc3QgTkROQk9PU1RfU1lTVEVNX05PRVhDRVBUID0gMDsKLSAgICAgIHZpcnR1YWwgc3RkOjpzdHJpbmcgICAgICBtZXNzYWdlKCBpbnQgZXYgKSBjb25zdCA9IDA7Ci0gICAgICBpbmxpbmUgdmlydHVhbCBlcnJvcl9jb25kaXRpb24gIGRlZmF1bHRfZXJyb3JfY29uZGl0aW9uKCBpbnQgZXYgKSBjb25zdCAgTkROQk9PU1RfU1lTVEVNX05PRVhDRVBUOwotICAgICAgaW5saW5lIHZpcnR1YWwgYm9vbCAgICAgICAgICAgICBlcXVpdmFsZW50KCBpbnQgY29kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnJvcl9jb25kaXRpb24gJiBjb25kaXRpb24gKSBjb25zdCAgTkROQk9PU1RfU1lTVEVNX05PRVhDRVBUOwotICAgICAgaW5saW5lIHZpcnR1YWwgYm9vbCAgICAgICAgICAgICBlcXVpdmFsZW50KCBjb25zdCBlcnJvcl9jb2RlICYgY29kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY29uZGl0aW9uICkgY29uc3QgIE5ETkJPT1NUX1NZU1RFTV9OT0VYQ0VQVDsKLQotICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGVycm9yX2NhdGVnb3J5ICYgcmhzKSBjb25zdCBORE5CT09TVF9TWVNURU1fTk9FWENFUFQgeyByZXR1cm4gdGhpcyA9PSAmcmhzOyB9Ci0gICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgZXJyb3JfY2F0ZWdvcnkgJiByaHMpIGNvbnN0IE5ETkJPT1NUX1NZU1RFTV9OT0VYQ0VQVCB7IHJldHVybiB0aGlzICE9ICZyaHM7IH0KLSAgICAgIGJvb2wgb3BlcmF0b3I8KCBjb25zdCBlcnJvcl9jYXRlZ29yeSAmIHJocyApIGNvbnN0IE5ETkJPT1NUX1NZU1RFTV9OT0VYQ0VQVAotICAgICAgewotICAgICAgICByZXR1cm4gc3RkOjpsZXNzPGNvbnN0IGVycm9yX2NhdGVnb3J5Kj4oKSggdGhpcywgJnJocyApOwotICAgICAgfQotICAgIH07Ci0KLSAgICAvLyAgcHJlZGVmaW5lZCBlcnJvciBjYXRlZ29yaWVzICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSMgaWZkZWYgTkROQk9PU1RfRVJST1JfQ09ERV9IRUFERVJfT05MWQotICAgIGlubGluZSBjb25zdCBlcnJvcl9jYXRlZ29yeSAmICBzeXN0ZW1fY2F0ZWdvcnkoKSBORE5CT09TVF9TWVNURU1fTk9FWENFUFQ7Ci0gICAgaW5saW5lIGNvbnN0IGVycm9yX2NhdGVnb3J5ICYgIGdlbmVyaWNfY2F0ZWdvcnkoKSBORE5CT09TVF9TWVNURU1fTk9FWENFUFQ7Ci0jZWxzZQotICAgIE5ETkJPT1NUX1NZU1RFTV9ERUNMIGNvbnN0IGVycm9yX2NhdGVnb3J5ICYgIHN5c3RlbV9jYXRlZ29yeSgpIE5ETkJPT1NUX1NZU1RFTV9OT0VYQ0VQVDsKLSAgICBORE5CT09TVF9TWVNURU1fREVDTCBjb25zdCBlcnJvcl9jYXRlZ29yeSAmICBnZW5lcmljX2NhdGVnb3J5KCkgTkROQk9PU1RfU1lTVEVNX05PRVhDRVBUOwotI2VuZGlmCi0gICAgLy8gIGRlcHJlY2F0ZWQgc3lub255bXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0jIGlmbmRlZiBORE5CT09TVF9TWVNURU1fTk9fREVQUkVDQVRFRAotICAgIGlubGluZSBjb25zdCBlcnJvcl9jYXRlZ29yeSAmICBnZXRfc3lzdGVtX2NhdGVnb3J5KCkgeyByZXR1cm4gc3lzdGVtX2NhdGVnb3J5KCk7IH0KLSAgICBpbmxpbmUgY29uc3QgZXJyb3JfY2F0ZWdvcnkgJiAgZ2V0X2dlbmVyaWNfY2F0ZWdvcnkoKSB7IHJldHVybiBnZW5lcmljX2NhdGVnb3J5KCk7IH0KLSAgICBpbmxpbmUgY29uc3QgZXJyb3JfY2F0ZWdvcnkgJiAgZ2V0X3Bvc2l4X2NhdGVnb3J5KCkgeyByZXR1cm4gZ2VuZXJpY19jYXRlZ29yeSgpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGVycm9yX2NhdGVnb3J5ICYgIHBvc2l4X2NhdGVnb3J5ID0gZ2VuZXJpY19jYXRlZ29yeSgpOwotICAgIHN0YXRpYyBjb25zdCBlcnJvcl9jYXRlZ29yeSAmICBlcnJub19lY2F0ICAgICA9IGdlbmVyaWNfY2F0ZWdvcnkoKTsKLSAgICBzdGF0aWMgY29uc3QgZXJyb3JfY2F0ZWdvcnkgJiAgbmF0aXZlX2VjYXQgICAgPSBzeXN0ZW1fY2F0ZWdvcnkoKTsKLSMgZW5kaWYKLQotICAgIC8vICBjbGFzcyBlcnJvcl9jb25kaXRpb24gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgIC8vICBlcnJvcl9jb25kaXRpb25zIGFyZSBwb3J0YWJsZSwgZXJyb3JfY29kZXMgYXJlIHN5c3RlbSBvciBsaWJyYXJ5IHNwZWNpZmljCi0KLSAgICBjbGFzcyBlcnJvcl9jb25kaXRpb24KLSAgICB7Ci0gICAgcHVibGljOgotCi0gICAgICAvLyBjb25zdHJ1Y3RvcnM6Ci0gICAgICBlcnJvcl9jb25kaXRpb24oKSBORE5CT09TVF9TWVNURU1fTk9FWENFUFQgOiBtX3ZhbCgwKSwgbV9jYXQoJmdlbmVyaWNfY2F0ZWdvcnkoKSkge30KLSAgICAgIGVycm9yX2NvbmRpdGlvbiggaW50IHZhbCwgY29uc3QgZXJyb3JfY2F0ZWdvcnkgJiBjYXQgKSBORE5CT09TVF9TWVNURU1fTk9FWENFUFQgOiBtX3ZhbCh2YWwpLCBtX2NhdCgmY2F0KSB7fQotCi0gICAgICB0ZW1wbGF0ZSA8Y2xhc3MgRXJyb3JDb25kaXRpb25FbnVtPgotICAgICAgICBlcnJvcl9jb25kaXRpb24oRXJyb3JDb25kaXRpb25FbnVtIGUsCi0gICAgICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OmVuYWJsZV9pZjxpc19lcnJvcl9jb25kaXRpb25fZW51bTxFcnJvckNvbmRpdGlvbkVudW0+ID46OnR5cGUqID0gMCkgTkROQk9PU1RfU1lTVEVNX05PRVhDRVBUCi0gICAgICB7Ci0gICAgICAgICp0aGlzID0gbWFrZV9lcnJvcl9jb25kaXRpb24oZSk7Ci0gICAgICB9Ci0KLSAgICAgIC8vIG1vZGlmaWVyczoKLQotICAgICAgdm9pZCBhc3NpZ24oIGludCB2YWwsIGNvbnN0IGVycm9yX2NhdGVnb3J5ICYgY2F0ICkgTkROQk9PU1RfU1lTVEVNX05PRVhDRVBUCi0gICAgICB7Ci0gICAgICAgIG1fdmFsID0gdmFsOwotICAgICAgICBtX2NhdCA9ICZjYXQ7Ci0gICAgICB9Ci0KLSAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVycm9yQ29uZGl0aW9uRW51bT4KLSAgICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OmVuYWJsZV9pZjxpc19lcnJvcl9jb25kaXRpb25fZW51bTxFcnJvckNvbmRpdGlvbkVudW0+LCBlcnJvcl9jb25kaXRpb24+Ojp0eXBlICYKLSAgICAgICAgICBvcGVyYXRvcj0oIEVycm9yQ29uZGl0aW9uRW51bSB2YWwgKSBORE5CT09TVF9TWVNURU1fTk9FWENFUFQKLSAgICAgIHsKLSAgICAgICAgKnRoaXMgPSBtYWtlX2Vycm9yX2NvbmRpdGlvbih2YWwpOwotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgICB9Ci0KLSAgICAgIHZvaWQgY2xlYXIoKSBORE5CT09TVF9TWVNURU1fTk9FWENFUFQKLSAgICAgIHsKLSAgICAgICAgbV92YWwgPSAwOwotICAgICAgICBtX2NhdCA9ICZnZW5lcmljX2NhdGVnb3J5KCk7Ci0gICAgICB9Ci0KLSAgICAgIC8vIG9ic2VydmVyczoKLSAgICAgIGludCAgICAgICAgICAgICAgICAgICAgIHZhbHVlKCkgY29uc3QgTkROQk9PU1RfU1lTVEVNX05PRVhDRVBUICAgIHsgcmV0dXJuIG1fdmFsOyB9Ci0gICAgICBjb25zdCBlcnJvcl9jYXRlZ29yeSAmICBjYXRlZ29yeSgpIGNvbnN0IE5ETkJPT1NUX1NZU1RFTV9OT0VYQ0VQVCB7IHJldHVybiAqbV9jYXQ7IH0KLSAgICAgIHN0ZDo6c3RyaW5nICAgICAgICAgICAgIG1lc3NhZ2UoKSBjb25zdCAgeyByZXR1cm4gbV9jYXQtPm1lc3NhZ2UodmFsdWUoKSk7IH0KLQotICAgICAgdHlwZWRlZiB2b2lkICgqdW5zcGVjaWZpZWRfYm9vbF90eXBlKSgpOwotICAgICAgc3RhdGljIHZvaWQgdW5zcGVjaWZpZWRfYm9vbF90cnVlKCkge30KLQotICAgICAgb3BlcmF0b3IgdW5zcGVjaWZpZWRfYm9vbF90eXBlKCkgY29uc3QgTkROQk9PU1RfU1lTVEVNX05PRVhDRVBUICAvLyB0cnVlIGlmIGVycm9yCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBtX3ZhbCA9PSAwID8gMCA6IHVuc3BlY2lmaWVkX2Jvb2xfdHJ1ZTsKLSAgICAgIH0KLQotICAgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCBORE5CT09TVF9TWVNURU1fTk9FWENFUFQgIC8vIHRydWUgaWYgbm8gZXJyb3IKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIG1fdmFsID09IDA7Ci0gICAgICB9Ci0KLSAgICAgIC8vIHJlbGF0aW9uYWxzOgotICAgICAgLy8gIHRoZSBtb3JlIHN5bW1ldHJpY2FsIG5vbi1tZW1iZXIgc3ludGF4IGFsbG93cyBlbnVtCi0gICAgICAvLyAgY29udmVyc2lvbnMgd29yayBmb3IgYm90aCByaHMgYW5kIGxocy4KLSAgICAgIGlubGluZSBmcmllbmQgYm9vbCBvcGVyYXRvcj09KCBjb25zdCBlcnJvcl9jb25kaXRpb24gJiBsaHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXJyb3JfY29uZGl0aW9uICYgcmhzICkgTkROQk9PU1RfU1lTVEVNX05PRVhDRVBUCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBsaHMubV9jYXQgPT0gcmhzLm1fY2F0ICYmIGxocy5tX3ZhbCA9PSByaHMubV92YWw7Ci0gICAgICB9Ci0KLSAgICAgIGlubGluZSBmcmllbmQgYm9vbCBvcGVyYXRvcjwoIGNvbnN0IGVycm9yX2NvbmRpdGlvbiAmIGxocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yX2NvbmRpdGlvbiAmIHJocyApIE5ETkJPT1NUX1NZU1RFTV9OT0VYQ0VQVAotICAgICAgICAvLyAgdGhlIG1vcmUgc3ltbWV0cmljYWwgbm9uLW1lbWJlciBzeW50YXggYWxsb3dzIGVudW0KLSAgICAgICAgLy8gIGNvbnZlcnNpb25zIHdvcmsgZm9yIGJvdGggcmhzIGFuZCBsaHMuCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBsaHMubV9jYXQgPCByaHMubV9jYXQKLSAgICAgICAgICB8fCAobGhzLm1fY2F0ID09IHJocy5tX2NhdCAmJiBsaHMubV92YWwgPCByaHMubV92YWwpOwotICAgICAgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgIGludCAgICAgICAgICAgICAgICAgICAgIG1fdmFsOwotICAgICAgY29uc3QgZXJyb3JfY2F0ZWdvcnkgKiAgbV9jYXQ7Ci0KLSAgICB9OwotCi0gICAgLy8gIGNsYXNzIGVycm9yX2NvZGUgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gICAgLy8gIFdlIHdhbnQgZXJyb3JfY29kZSB0byBiZSBhIHZhbHVlIHR5cGUgdGhhdCBjYW4gYmUgY29waWVkIHdpdGhvdXQgc2xpY2luZwotICAgIC8vICBhbmQgd2l0aG91dCByZXF1aXJpbmcgaGVhcCBhbGxvY2F0aW9uLCBidXQgd2UgYWxzbyB3YW50IGl0IHRvIGhhdmUKLSAgICAvLyAgcG9seW1vcnBoaWMgYmVoYXZpb3IgYmFzZWQgb24gdGhlIGVycm9yIGNhdGVnb3J5LiBUaGlzIGlzIGFjaGlldmVkIGJ5Ci0gICAgLy8gIGFic3RyYWN0IGJhc2UgY2xhc3MgZXJyb3JfY2F0ZWdvcnkgc3VwcGx5aW5nIHRoZSBwb2x5bW9ycGhpYyBiZWhhdmlvciwKLSAgICAvLyAgYW5kIGVycm9yX2NvZGUgY29udGFpbmluZyBhIHBvaW50ZXIgdG8gYW4gb2JqZWN0IG9mIGEgdHlwZSBkZXJpdmVkCi0gICAgLy8gIGZyb20gZXJyb3JfY2F0ZWdvcnkuCi0gICAgY2xhc3MgZXJyb3JfY29kZQotICAgIHsKLSAgICBwdWJsaWM6Ci0KLSAgICAgIC8vIGNvbnN0cnVjdG9yczoKLSAgICAgIGVycm9yX2NvZGUoKSBORE5CT09TVF9TWVNURU1fTk9FWENFUFQgOiBtX3ZhbCgwKSwgbV9jYXQoJnN5c3RlbV9jYXRlZ29yeSgpKSB7fQotICAgICAgZXJyb3JfY29kZSggaW50IHZhbCwgY29uc3QgZXJyb3JfY2F0ZWdvcnkgJiBjYXQgKSBORE5CT09TVF9TWVNURU1fTk9FWENFUFQgOiBtX3ZhbCh2YWwpLCBtX2NhdCgmY2F0KSB7fQotCi0gICAgICB0ZW1wbGF0ZSA8Y2xhc3MgRXJyb3JDb2RlRW51bT4KLSAgICAgICAgZXJyb3JfY29kZShFcnJvckNvZGVFbnVtIGUsCi0gICAgICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OmVuYWJsZV9pZjxpc19lcnJvcl9jb2RlX2VudW08RXJyb3JDb2RlRW51bT4gPjo6dHlwZSogPSAwKSBORE5CT09TVF9TWVNURU1fTk9FWENFUFQKLSAgICAgIHsKLSAgICAgICAgKnRoaXMgPSBtYWtlX2Vycm9yX2NvZGUoZSk7Ci0gICAgICB9Ci0KLSAgICAgIC8vIG1vZGlmaWVyczoKLSAgICAgIHZvaWQgYXNzaWduKCBpbnQgdmFsLCBjb25zdCBlcnJvcl9jYXRlZ29yeSAmIGNhdCApIE5ETkJPT1NUX1NZU1RFTV9OT0VYQ0VQVAotICAgICAgewotICAgICAgICBtX3ZhbCA9IHZhbDsKLSAgICAgICAgbV9jYXQgPSAmY2F0OwotICAgICAgfQotCi0gICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFcnJvckNvZGVFbnVtPgotICAgICAgICB0eXBlbmFtZSBuZG5ib29zdDo6ZW5hYmxlX2lmPGlzX2Vycm9yX2NvZGVfZW51bTxFcnJvckNvZGVFbnVtPiwgZXJyb3JfY29kZT46OnR5cGUgJgotICAgICAgICAgIG9wZXJhdG9yPSggRXJyb3JDb2RlRW51bSB2YWwgKSBORE5CT09TVF9TWVNURU1fTk9FWENFUFQKLSAgICAgIHsKLSAgICAgICAgKnRoaXMgPSBtYWtlX2Vycm9yX2NvZGUodmFsKTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgICAgfQotCi0gICAgICB2b2lkIGNsZWFyKCkgTkROQk9PU1RfU1lTVEVNX05PRVhDRVBUCi0gICAgICB7Ci0gICAgICAgIG1fdmFsID0gMDsKLSAgICAgICAgbV9jYXQgPSAmc3lzdGVtX2NhdGVnb3J5KCk7Ci0gICAgICB9Ci0KLSAgICAgIC8vIG9ic2VydmVyczoKLSAgICAgIGludCAgICAgICAgICAgICAgICAgICAgIHZhbHVlKCkgY29uc3QgIE5ETkJPT1NUX1NZU1RFTV9OT0VYQ0VQVCAgIHsgcmV0dXJuIG1fdmFsOyB9Ci0gICAgICBjb25zdCBlcnJvcl9jYXRlZ29yeSAmICBjYXRlZ29yeSgpIGNvbnN0IE5ETkJPT1NUX1NZU1RFTV9OT0VYQ0VQVCB7IHJldHVybiAqbV9jYXQ7IH0KLSAgICAgIGVycm9yX2NvbmRpdGlvbiAgICAgICAgIGRlZmF1bHRfZXJyb3JfY29uZGl0aW9uKCkgY29uc3QgTkROQk9PU1RfU1lTVEVNX05PRVhDRVBUICB7IHJldHVybiBtX2NhdC0+ZGVmYXVsdF9lcnJvcl9jb25kaXRpb24odmFsdWUoKSk7IH0KLSAgICAgIHN0ZDo6c3RyaW5nICAgICAgICAgICAgIG1lc3NhZ2UoKSBjb25zdCAgeyByZXR1cm4gbV9jYXQtPm1lc3NhZ2UodmFsdWUoKSk7IH0KLQotICAgICAgdHlwZWRlZiB2b2lkICgqdW5zcGVjaWZpZWRfYm9vbF90eXBlKSgpOwotICAgICAgc3RhdGljIHZvaWQgdW5zcGVjaWZpZWRfYm9vbF90cnVlKCkge30KLQotICAgICAgb3BlcmF0b3IgdW5zcGVjaWZpZWRfYm9vbF90eXBlKCkgY29uc3QgIE5ETkJPT1NUX1NZU1RFTV9OT0VYQ0VQVCAvLyB0cnVlIGlmIGVycm9yCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBtX3ZhbCA9PSAwID8gMCA6IHVuc3BlY2lmaWVkX2Jvb2xfdHJ1ZTsKLSAgICAgIH0KLQotICAgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCAgTkROQk9PU1RfU1lTVEVNX05PRVhDRVBUIC8vIHRydWUgaWYgbm8gZXJyb3IKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIG1fdmFsID09IDA7Ci0gICAgICB9Ci0KLSAgICAgIC8vIHJlbGF0aW9uYWxzOgotICAgICAgaW5saW5lIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oIGNvbnN0IGVycm9yX2NvZGUgJiBsaHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXJyb3JfY29kZSAmIHJocyApIE5ETkJPT1NUX1NZU1RFTV9OT0VYQ0VQVAotICAgICAgICAvLyAgdGhlIG1vcmUgc3ltbWV0cmljYWwgbm9uLW1lbWJlciBzeW50YXggYWxsb3dzIGVudW0KLSAgICAgICAgLy8gIGNvbnZlcnNpb25zIHdvcmsgZm9yIGJvdGggcmhzIGFuZCBsaHMuCi0gICAgICB7Ci0gICAgICAgIHJldHVybiBsaHMubV9jYXQgPT0gcmhzLm1fY2F0ICYmIGxocy5tX3ZhbCA9PSByaHMubV92YWw7Ci0gICAgICB9Ci0KLSAgICAgIGlubGluZSBmcmllbmQgYm9vbCBvcGVyYXRvcjwoIGNvbnN0IGVycm9yX2NvZGUgJiBsaHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnJvcl9jb2RlICYgcmhzICkgTkROQk9PU1RfU1lTVEVNX05PRVhDRVBUCi0gICAgICAgIC8vICB0aGUgbW9yZSBzeW1tZXRyaWNhbCBub24tbWVtYmVyIHN5bnRheCBhbGxvd3MgZW51bQotICAgICAgICAvLyAgY29udmVyc2lvbnMgd29yayBmb3IgYm90aCByaHMgYW5kIGxocy4KLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIGxocy5tX2NhdCA8IHJocy5tX2NhdAotICAgICAgICAgIHx8IChsaHMubV9jYXQgPT0gcmhzLm1fY2F0ICYmIGxocy5tX3ZhbCA8IHJocy5tX3ZhbCk7Ci0gICAgICB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgbV92YWw7Ci0gICAgICBjb25zdCBlcnJvcl9jYXRlZ29yeSAqICBtX2NhdDsKLQotICAgIH07Ci0KLSAgICAvLyAgcHJlZGVmaW5lZCBlcnJvcl9jb2RlIG9iamVjdCB1c2VkIGFzICJ0aHJvdyBvbiBlcnJvciIgdGFnCi0jIGlmbmRlZiBORE5CT09TVF9TWVNURU1fTk9fREVQUkVDQVRFRAotICAgIE5ETkJPT1NUX1NZU1RFTV9ERUNMIGV4dGVybiBlcnJvcl9jb2RlIHRocm93czsKLSMgZW5kaWYKLQotICAgIC8vICBNb3ZpbmcgZnJvbSBhICJ0aHJvd3MiIG9iamVjdCB0byBhICJ0aHJvd3MiIGZ1bmN0aW9uIHdpdGhvdXQgYnJlYWtpbmcKLSAgICAvLyAgZXhpc3RpbmcgY29kZSBpcyBhIGJpdCBvZiBhIHByb2JsZW0uIFRoZSB3b3JrYXJvdW5kIGlzIHRvIHBsYWNlIHRoZQotICAgIC8vICAidGhyb3dzIiBmdW5jdGlvbiBpbiBuYW1lc3BhY2UgbmRuYm9vc3QgcmF0aGVyIHRoYW4gbmFtZXNwYWNlIG5kbmJvb3N0OjpzeXN0ZW0uCi0KLSAgfSAgLy8gbmFtZXNwYWNlIHN5c3RlbQotCi0gIG5hbWVzcGFjZSBkZXRhaWwgeyBpbmxpbmUgc3lzdGVtOjplcnJvcl9jb2RlICogdGhyb3dzKCkgeyByZXR1cm4gMDsgfSB9Ci0gICAgLy8gIE1pc3VzZSBvZiB0aGUgZXJyb3JfY29kZSBvYmplY3QgaXMgdHVybmVkIGludG8gYSBub2lzeSBmYWlsdXJlIGJ5Ci0gICAgLy8gIHBvaXNvbmluZyB0aGUgcmVmZXJlbmNlLiBUaGlzIHBhcnRpY3VsYXIgaW1wbGVtZW50YXRpb24gZG9lc24ndAotICAgIC8vICBwcm9kdWNlIHdhcm5pbmdzIG9yIGVycm9ycyBmcm9tIHBvcHVsYXIgY29tcGlsZXJzLCBpcyB2ZXJ5IGVmZmljaWVudAotICAgIC8vICAoYXMgZGV0ZXJtaW5lZCBieSBpbnNwZWN0aW5nIGdlbmVyYXRlZCBjb2RlKSwgYW5kIGRvZXMgbm90IHN1ZmZlcgotICAgIC8vICBmcm9tIG9yZGVyIG9mIGluaXRpYWxpemF0aW9uIHByb2JsZW1zLiBJbiBwcmFjdGljZSwgaXQgYWxzbyBzZWVtcwotICAgIC8vICBjYXVzZSB1c2VyIGZ1bmN0aW9uIGVycm9yIGhhbmRsaW5nIGltcGxlbWVudGF0aW9uIGVycm9ycyB0byBiZSBkZXRlY3RlZAotICAgIC8vICB2ZXJ5IGVhcmx5IGluIHRoZSBkZXZlbG9wbWVudCBjeWNsZS4KLQotICBpbmxpbmUgc3lzdGVtOjplcnJvcl9jb2RlICYgdGhyb3dzKCkKLSAgICB7IHJldHVybiAqZGV0YWlsOjp0aHJvd3MoKTsgfQotCi0gIG5hbWVzcGFjZSBzeXN0ZW0KLSAgewotICAgIC8vICBub24tbWVtYmVyIGZ1bmN0aW9ucyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotICAgIGlubGluZSBib29sIG9wZXJhdG9yIT0oIGNvbnN0IGVycm9yX2NvZGUgJiBsaHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXJyb3JfY29kZSAmIHJocyApIE5ETkJPT1NUX1NZU1RFTV9OT0VYQ0VQVAotICAgIHsKLSAgICAgIHJldHVybiAhKGxocyA9PSByaHMpOwotICAgIH0KLQotICAgIGlubGluZSBib29sIG9wZXJhdG9yIT0oIGNvbnN0IGVycm9yX2NvbmRpdGlvbiAmIGxocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnJvcl9jb25kaXRpb24gJiByaHMgKSBORE5CT09TVF9TWVNURU1fTk9FWENFUFQKLSAgICB7Ci0gICAgICByZXR1cm4gIShsaHMgPT0gcmhzKTsKLSAgICB9Ci0KLSAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KCBjb25zdCBlcnJvcl9jb2RlICYgY29kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnJvcl9jb25kaXRpb24gJiBjb25kaXRpb24gKSBORE5CT09TVF9TWVNURU1fTk9FWENFUFQKLSAgICB7Ci0gICAgICByZXR1cm4gY29kZS5jYXRlZ29yeSgpLmVxdWl2YWxlbnQoIGNvZGUudmFsdWUoKSwgY29uZGl0aW9uICkKLSAgICAgICAgfHwgY29uZGl0aW9uLmNhdGVnb3J5KCkuZXF1aXZhbGVudCggY29kZSwgY29uZGl0aW9uLnZhbHVlKCkgKTsKLSAgICB9Ci0KLSAgICBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KCBjb25zdCBlcnJvcl9jb2RlICYgbGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yX2NvbmRpdGlvbiAmIHJocyApIE5ETkJPT1NUX1NZU1RFTV9OT0VYQ0VQVAotICAgIHsKLSAgICAgIHJldHVybiAhKGxocyA9PSByaHMpOwotICAgIH0KLQotICAgIGlubGluZSBib29sIG9wZXJhdG9yPT0oIGNvbnN0IGVycm9yX2NvbmRpdGlvbiAmIGNvbmRpdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnJvcl9jb2RlICYgY29kZSApIE5ETkJPT1NUX1NZU1RFTV9OT0VYQ0VQVAotICAgIHsKLSAgICAgIHJldHVybiBjb25kaXRpb24uY2F0ZWdvcnkoKS5lcXVpdmFsZW50KCBjb2RlLCBjb25kaXRpb24udmFsdWUoKSApCi0gICAgICAgIHx8IGNvZGUuY2F0ZWdvcnkoKS5lcXVpdmFsZW50KCBjb2RlLnZhbHVlKCksIGNvbmRpdGlvbiApOwotICAgIH0KLQotICAgIGlubGluZSBib29sIG9wZXJhdG9yIT0oIGNvbnN0IGVycm9yX2NvbmRpdGlvbiAmIGxocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnJvcl9jb2RlICYgcmhzICkgTkROQk9PU1RfU1lTVEVNX05PRVhDRVBUCi0gICAgewotICAgICAgcmV0dXJuICEobGhzID09IHJocyk7Ci0gICAgfQotCi0gICAgLy8gVE9ETzogYm90aCBvZiB0aGVzZSBtYXkgbW92ZSBlbHNld2hlcmUsIGJ1dCB0aGUgTFdHIGhhc24ndCBzcG9rZW4geWV0LgotCi0gICAgdGVtcGxhdGUgPGNsYXNzIGNoYXJULCBjbGFzcyB0cmFpdHM+Ci0gICAgaW5saW5lIHN0ZDo6YmFzaWNfb3N0cmVhbTxjaGFyVCx0cmFpdHM+JgotICAgICAgb3BlcmF0b3I8PCAoc3RkOjpiYXNpY19vc3RyZWFtPGNoYXJULHRyYWl0cz4mIG9zLCBlcnJvcl9jb2RlIGVjKQotICAgIHsKLSAgICAgIG9zIDw8IGVjLmNhdGVnb3J5KCkubmFtZSgpIDw8ICc6JyA8PCBlYy52YWx1ZSgpOwotICAgICAgcmV0dXJuIG9zOwotICAgIH0KLQotICAgIGlubGluZSBzdGQ6OnNpemVfdCBoYXNoX3ZhbHVlKCBjb25zdCBlcnJvcl9jb2RlICYgZWMgKQotICAgIHsKLSAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxzdGQ6OnNpemVfdD4oZWMudmFsdWUoKSkKLSAgICAgICAgKyByZWludGVycHJldF9jYXN0PHN0ZDo6c2l6ZV90PigmZWMuY2F0ZWdvcnkoKSk7Ci0gICAgfQotCi0gICAgLy8gIG1ha2VfKiBmdW5jdGlvbnMgZm9yIGVycmM6OmVycmNfdCAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gICAgbmFtZXNwYWNlIGVycmMKLSAgICB7Ci0gICAgICAvLyAgZXhwbGljaXQgY29udmVyc2lvbjoKLSAgICAgIGlubGluZSBlcnJvcl9jb2RlIG1ha2VfZXJyb3JfY29kZSggZXJyY190IGUgKSBORE5CT09TVF9TWVNURU1fTk9FWENFUFQKLSAgICAgICAgeyByZXR1cm4gZXJyb3JfY29kZSggZSwgZ2VuZXJpY19jYXRlZ29yeSgpICk7IH0KLQotICAgICAgLy8gIGltcGxpY2l0IGNvbnZlcnNpb246Ci0gICAgICBpbmxpbmUgZXJyb3JfY29uZGl0aW9uIG1ha2VfZXJyb3JfY29uZGl0aW9uKCBlcnJjX3QgZSApIE5ETkJPT1NUX1NZU1RFTV9OT0VYQ0VQVAotICAgICAgICB7IHJldHVybiBlcnJvcl9jb25kaXRpb24oIGUsIGdlbmVyaWNfY2F0ZWdvcnkoKSApOyB9Ci0gICAgfQotCi0gICAgLy8gIGVycm9yX2NhdGVnb3J5IGRlZmF1bHQgaW1wbGVtZW50YXRpb24gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gICAgZXJyb3JfY29uZGl0aW9uIGVycm9yX2NhdGVnb3J5OjpkZWZhdWx0X2Vycm9yX2NvbmRpdGlvbiggaW50IGV2ICkgY29uc3QgTkROQk9PU1RfU1lTVEVNX05PRVhDRVBUCi0gICAgewotICAgICAgcmV0dXJuIGVycm9yX2NvbmRpdGlvbiggZXYsICp0aGlzICk7Ci0gICAgfQotCi0gICAgYm9vbCBlcnJvcl9jYXRlZ29yeTo6ZXF1aXZhbGVudCggaW50IGNvZGUsCi0gICAgICBjb25zdCBlcnJvcl9jb25kaXRpb24gJiBjb25kaXRpb24gKSBjb25zdCBORE5CT09TVF9TWVNURU1fTk9FWENFUFQKLSAgICB7Ci0gICAgICByZXR1cm4gZGVmYXVsdF9lcnJvcl9jb25kaXRpb24oIGNvZGUgKSA9PSBjb25kaXRpb247Ci0gICAgfQotCi0gICAgYm9vbCBlcnJvcl9jYXRlZ29yeTo6ZXF1aXZhbGVudCggY29uc3QgZXJyb3JfY29kZSAmIGNvZGUsCi0gICAgICBpbnQgY29uZGl0aW9uICkgY29uc3QgTkROQk9PU1RfU1lTVEVNX05PRVhDRVBUCi0gICAgewotICAgICAgcmV0dXJuICp0aGlzID09IGNvZGUuY2F0ZWdvcnkoKSAmJiBjb2RlLnZhbHVlKCkgPT0gY29uZGl0aW9uOwotICAgIH0KLQotICB9IC8vIG5hbWVzcGFjZSBzeXN0ZW0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcvYWJpX3N1ZmZpeC5ocHA+IC8vIHBvcHMgYWJpX3ByZWZpeC5ocHAgcHJhZ21hcwotCi0jIGlmZGVmIE5ETkJPT1NUX0VSUk9SX0NPREVfSEVBREVSX09OTFkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC8uLi9saWJzL3N5c3RlbS9zcmMvZXJyb3JfY29kZS5jcHA+Ci0jIGVuZGlmCi0KLSNlbmRpZiAvLyBORE5CT09TVF9FUlJPUl9DT0RFX0hQUAotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvc3lzdGVtL3N5c3RlbV9lcnJvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3N5c3RlbS9zeXN0ZW1fZXJyb3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZmE3MzJkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3Qvc3lzdGVtL3N5c3RlbV9lcnJvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw4NCArMCwwIEBACi0vLyAgQm9vc3Qgc3lzdGVtX2Vycm9yLmhwcCAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgQ29weXJpZ2h0IEJlbWFuIERhd2VzIDIwMDYKLQotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vICBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9TWVNURU1fRVJST1JfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1NZU1RFTV9FUlJPUl9IUFAKLQotI2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRlIDxzdGRleGNlcHQ+Ci0jaW5jbHVkZSA8Y2Fzc2VydD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zeXN0ZW0vZXJyb3JfY29kZS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotICBuYW1lc3BhY2Ugc3lzdGVtCi0gIHsKLSAgICAvLyAgY2xhc3Mgc3lzdGVtX2Vycm9yICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gICAgY2xhc3MgTkROQk9PU1RfU1lNQk9MX1ZJU0lCTEUgc3lzdGVtX2Vycm9yIDogcHVibGljIHN0ZDo6cnVudGltZV9lcnJvcgotICAgIC8vIE5ETkJPT1NUX1NZTUJPTF9WSVNJQkxFIGlzIG5lZWRlZCBieSBHQ0MgdG8gZW5zdXJlIHN5c3RlbV9lcnJvciB0aHJvd24gZnJvbSBhIHNoYXJlZAotICAgIC8vIGxpYnJhcnkgY2FuIGJlIGNhdWdodC4gU2VlIHN2bi5ib29zdC5vcmcvdHJhYy9ib29zdC90aWNrZXQvMzY5NwotICAgIHsKLSAgICBwdWJsaWM6Ci0gICAgICBzeXN0ZW1fZXJyb3IoIGVycm9yX2NvZGUgZWMgKQotICAgICAgICAgIDogc3RkOjpydW50aW1lX2Vycm9yKCIiKSwgbV9lcnJvcl9jb2RlKGVjKSB7fQotCi0gICAgICBzeXN0ZW1fZXJyb3IoIGVycm9yX2NvZGUgZWMsIGNvbnN0IHN0ZDo6c3RyaW5nICYgd2hhdF9hcmcgKQotICAgICAgICAgIDogc3RkOjpydW50aW1lX2Vycm9yKHdoYXRfYXJnKSwgbV9lcnJvcl9jb2RlKGVjKSB7fQotCi0gICAgICBzeXN0ZW1fZXJyb3IoIGVycm9yX2NvZGUgZWMsIGNvbnN0IGNoYXIqIHdoYXRfYXJnICkKLSAgICAgICAgICA6IHN0ZDo6cnVudGltZV9lcnJvcih3aGF0X2FyZyksIG1fZXJyb3JfY29kZShlYykge30KLQotICAgICAgc3lzdGVtX2Vycm9yKCBpbnQgZXYsIGNvbnN0IGVycm9yX2NhdGVnb3J5ICYgZWNhdCApCi0gICAgICAgICAgOiBzdGQ6OnJ1bnRpbWVfZXJyb3IoIiIpLCBtX2Vycm9yX2NvZGUoZXYsZWNhdCkge30KLQotICAgICAgc3lzdGVtX2Vycm9yKCBpbnQgZXYsIGNvbnN0IGVycm9yX2NhdGVnb3J5ICYgZWNhdCwKLSAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgJiB3aGF0X2FyZyApCi0gICAgICAgICAgOiBzdGQ6OnJ1bnRpbWVfZXJyb3Iod2hhdF9hcmcpLCBtX2Vycm9yX2NvZGUoZXYsZWNhdCkge30KLQotICAgICAgc3lzdGVtX2Vycm9yKCBpbnQgZXYsIGNvbnN0IGVycm9yX2NhdGVnb3J5ICYgZWNhdCwKLSAgICAgICAgY29uc3QgY2hhciAqIHdoYXRfYXJnICkKLSAgICAgICAgICA6IHN0ZDo6cnVudGltZV9lcnJvcih3aGF0X2FyZyksIG1fZXJyb3JfY29kZShldixlY2F0KSB7fQotCi0gICAgICB2aXJ0dWFsIH5zeXN0ZW1fZXJyb3IoKSB0aHJvdygpIHt9Ci0KLSAgICAgIGNvbnN0IGVycm9yX2NvZGUgJiAgY29kZSgpIGNvbnN0IHRocm93KCkgeyByZXR1cm4gbV9lcnJvcl9jb2RlOyB9Ci0gICAgICBjb25zdCBjaGFyICogICAgICAgIHdoYXQoKSBjb25zdCB0aHJvdygpOwotCi0gICAgcHJpdmF0ZToKLSAgICAgIGVycm9yX2NvZGUgICAgICAgICAgIG1fZXJyb3JfY29kZTsKLSAgICAgIG11dGFibGUgc3RkOjpzdHJpbmcgIG1fd2hhdDsKLSAgICB9OwotCi0gICAgLy8gIGltcGxlbWVudGF0aW9uICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0gICAgaW5saW5lIGNvbnN0IGNoYXIgKiBzeXN0ZW1fZXJyb3I6OndoYXQoKSBjb25zdCB0aHJvdygpCi0gICAgLy8gc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL21vcmUvZXJyb3JfaGFuZGxpbmcuaHRtbCBmb3IgbGF6eSBidWlsZCByYXRpb25hbGUKLSAgICB7Ci0gICAgICBpZiAoIG1fd2hhdC5lbXB0eSgpICkKLSAgICAgIHsKLSNpZm5kZWYgTkROQk9PU1RfTk9fRVhDRVBUSU9OUwotICAgICAgICB0cnkKLSNlbmRpZgotICAgICAgICB7Ci0gICAgICAgICAgbV93aGF0ID0gdGhpcy0+c3RkOjpydW50aW1lX2Vycm9yOjp3aGF0KCk7Ci0gICAgICAgICAgaWYgKCAhbV93aGF0LmVtcHR5KCkgKSBtX3doYXQgKz0gIjogIjsKLSAgICAgICAgICBtX3doYXQgKz0gbV9lcnJvcl9jb2RlLm1lc3NhZ2UoKTsKLSAgICAgICAgfQotI2lmbmRlZiBORE5CT09TVF9OT19FWENFUFRJT05TCi0gICAgICAgIGNhdGNoICguLi4pIHsgcmV0dXJuIHN0ZDo6cnVudGltZV9lcnJvcjo6d2hhdCgpOyB9Ci0jZW5kaWYKLSAgICAgIH0KLSAgICAgIHJldHVybiBtX3doYXQuY19zdHIoKTsKLSAgICB9Ci0KLSAgfSAvLyBuYW1lc3BhY2Ugc3lzdGVtCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfU1lTVEVNX0VSUk9SX0hQUAotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9kZWJ1Zy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvZGVidWcuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NTM2OTYxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9kZWJ1Zy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDEgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNi0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDQ5MzEyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBkZWZpbmVzIHBvcnRhYmxlIGRlYnVnIGludGVyZmFjZXMKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfREVCVUdfQVBJX0hQUF8xMTIwMDZHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9ERUJVR19BUElfSFBQXzExMjAwNkdFUgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2NhbGxiYWNrLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2Jhc2ljX2NzdHJpbmcvYmFzaWNfY3N0cmluZy5ocHA+Ci0KLS8vIFNUTAotI2luY2x1ZGUgPHN0cmluZz4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIGRlYnVnIHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICBjaGVjayBpZiBwcm9ncmFtIGlzIHJ1bm5pbmcgdW5kZXIgZGVidWdnZXIgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1ib29sIE5ETkJPT1NUX1RFU1RfREVDTCB1bmRlcl9kZWJ1Z2dlcigpOwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgY2F1c2UgcHJvZ3JhbSB0byBicmVhayBleGVjdXRpb24gICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICBpbiBkZWJ1Z2dlciBhdCBjYWxsIHBvaW50ICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi12b2lkIE5ETkJPT1NUX1RFU1RfREVDTCBkZWJ1Z2dlcl9icmVhaygpOwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgIGd1aSBkZWJ1Z2dlciBzZXR1cCAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXN0cnVjdCBkYmdfc3RhcnR1cF9pbmZvIHsKLSAgICBsb25nICAgICAgICAgICAgICAgICAgICBwaWQ7Ci0gICAgYm9vbCAgICAgICAgICAgICAgICAgICAgYnJlYWtfb3JfY29udGludWU7Ci0gICAgdW5pdF90ZXN0Ojpjb25zdF9zdHJpbmcgYmluYXJ5X3BhdGg7Ci0gICAgdW5pdF90ZXN0Ojpjb25zdF9zdHJpbmcgZGlzcGxheTsKLSAgICB1bml0X3Rlc3Q6OmNvbnN0X3N0cmluZyBpbml0X2RvbmVfbG9jazsKLX07Ci0KLXR5cGVkZWYgdW5pdF90ZXN0OjpjYWxsYmFjazE8ZGJnX3N0YXJ0dXBfaW5mbyBjb25zdCY+IGRiZ19zdGFydGVyOwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgZGVidWdnZXIgc2V0dXAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKCBORE5CT09TVF9NU1ZDLCA8MTMwMCkKLQotc3RkOjpzdHJpbmcgTkROQk9PU1RfVEVTVF9ERUNMIHNldF9kZWJ1Z2dlciggdW5pdF90ZXN0Ojpjb25zdF9zdHJpbmcgZGJnX2lkICk7Ci0KLSNlbHNlIAotCi1zdGQ6OnN0cmluZyBORE5CT09TVF9URVNUX0RFQ0wgc2V0X2RlYnVnZ2VyKCB1bml0X3Rlc3Q6OmNvbnN0X3N0cmluZyBkYmdfaWQsIGRiZ19zdGFydGVyIHMgPSBkYmdfc3RhcnRlcigpICk7Ci0KLSNlbmRpZgotCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICBhdHRhY2ggZGVidWdnZXIgdG8gdGhlIGN1cnJlbnQgcHJvY2VzcyAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotYm9vbCBORE5CT09TVF9URVNUX0RFQ0wgYXR0YWNoX2RlYnVnZ2VyKCBib29sIGJyZWFrX29yX2NvbnRpbnVlID0gdHJ1ZSApOwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICBzd2l0Y2ggb24vb2ZmIGRldGVjdCBtZW1vcnkgbGVha3MgZmVhdHVyZSAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXZvaWQgTkROQk9PU1RfVEVTVF9ERUNMIGRldGVjdF9tZW1vcnlfbGVha3MoIGJvb2wgb25fb2ZmICk7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgIGNhdXNlIHByb2dyYW0gdG8gYnJlYWsgZXhlY3V0aW9uIGluICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgIGRlYnVnZ2VyIGF0IHNwZWNpZmljIGFsbG9jYXRpb24gcG9pbnQgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXZvaWQgTkROQk9PU1RfVEVTVF9ERUNMIGJyZWFrX21lbW9yeV9hbGxvYyggbG9uZyBtZW1fYWxsb2Nfb3JkZXJfbnVtICk7Ci0KLX0gLy8gbmFtZXNwYWNlIGRlYnVnCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9kZWJ1Z19jb25maWcuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2RlYnVnX2NvbmZpZy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1NGVmYTguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2RlYnVnX2NvbmZpZy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA2LTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNDkzMTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IHVzZXIncyBjb25maWcgZm9yIEJvb3N0LlRlc3QgZGVidWdnaW5nIHN1cHBvcnQKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfREVCVUdfQ09ORklHX0hQUF8xMTIwMDZHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9ERUJVR19DT05GSUdfSFBQXzExMjAwNkdFUgotCi0vLyAnOycgc2VwYXJhdGVkIGxpc3Qgb2Ygc3VwcG9ydGVkIGRlYnVnZ2VycwotLy8gI2RlZmluZSBORE5CT09TVF9URVNUX0RCR19MSVNUIGdkYjtkYngKLQotLy8gbWF4aW11bSBzaXplIG9mIC9wcm9jL3BpZC9zdGF0IGZpbGUKLS8vICNkZWZpbmUgTkROQk9PU1RfVEVTVF9TVEFUX0xJTkVfTUFYCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2RldGFpbC9jb25maWcuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2RldGFpbC9jb25maWcuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ODE2OGIyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9kZXRhaWwvY29uZmlnLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwNCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDAxLTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNjM0NDEgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGFzIGEgY2VudHJhbCBwbGFjZSBmb3IgZ2xvYmFsIGNvbmZpZ3VyYXRpb24gc3dpdGNoZXMKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfQ09ORklHX0hQUF8wNzE4OTRHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9DT05GSUdfSFBQXzA3MTg5NEdFUgotCi0vLyBCb29zdAotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+IC8vIGNvbXBpbGVycyB3b3JrYXJvdW5kcwotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg1NzApKSB8fCBcCi0gICAgTkROQk9PU1RfV09SS0FST1VORChfX0lCTUNQUF9fLCBORE5CT09TVF9URVNURURfQVQoNjAwKSkgICAgIHx8IFwKLSAgICAoZGVmaW5lZCBfX3NnaSAmJiBORE5CT09TVF9XT1JLQVJPVU5EKF9DT01QSUxFUl9WRVJTSU9OLCBORE5CT09TVF9URVNURURfQVQoNzMwKSkpCi0jICBkZWZpbmUgTkROQk9PU1RfVEVTVF9TSElGVEVEX0xJTkUKLSNlbmRpZgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKSB8fCAoZGVmaW5lZChfX0JPUkxBTkRDX18pICYmICFkZWZpbmVkKE5ETkJPT1NUX0RJU0FCTEVfV0lOMzIpKQotIyAgZGVmaW5lIE5ETkJPT1NUX1RFU1RfQ0FMTF9ERUNMIF9fY2RlY2wKLSNlbHNlCi0jICBkZWZpbmUgTkROQk9PU1RfVEVTVF9DQUxMX0RFQ0wgLyoqLwotI2VuZGlmCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19TVERfTE9DQUxFKSAmJiAgICAgICAgICAgIFwKLSAgICAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMTApICAmJiAgIFwKLSAgICAhZGVmaW5lZChfX01XRVJLU19fKSAKLSMgIGRlZmluZSBORE5CT09TVF9URVNUX1VTRV9TVERfTE9DQUxFIDEKLSNlbmRpZgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIDw9IDB4NTcwKSAgICAgICAgICAgIHx8IFwKLSAgICBORE5CT09TVF9XT1JLQVJPVU5EKCBfX0NPTU9fXywgPD0gMHg0MzMgKSAgICAgICAgICAgICAgfHwgXAotICAgIE5ETkJPT1NUX1dPUktBUk9VTkQoIF9fSU5URUxfQ09NUElMRVIsIDw9IDgwMCApICAgICAgICB8fCBcCi0gICAgZGVmaW5lZChfX3NnaSkgJiYgX0NPTVBJTEVSX1ZFUlNJT04gPD0gNzMwICAgICAgICAgIHx8IFwKLSAgICBORE5CT09TVF9XT1JLQVJPVU5EKF9fSUJNQ1BQX18sIE5ETkJPT1NUX1RFU1RFRF9BVCg2MDApKSAgfHwgXAotICAgIGRlZmluZWQoX19ERUNDWFgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBcCi0gICAgZGVmaW5lZChfX0RNQ19fKQotIyAgZGVmaW5lIE5ETkJPT1NUX1RFU1RfTk9fUFJPVEVDVEVEX1VTSU5HCi0jZW5kaWYKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2lmIGRlZmluZWQoX19HTlVDX18pIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPT0gMTQwMCkKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9QUk9URUNURURfVklSVFVBTCB2aXJ0dWFsCi0jZWxzZQotI2RlZmluZSBORE5CT09TVF9URVNUX1BST1RFQ1RFRF9WSVJUVUFMCi0jZW5kaWYKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTY0KSkgJiYgXAotICAgICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwxMzEwKSAmJiBcCi0gICAgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19TVU5QUk9fQ0MsIE5ETkJPT1NUX1RFU1RFRF9BVCgweDUzMCkpCi0jICBkZWZpbmUgTkROQk9PU1RfVEVTVF9TVVBQT1JUX0lOVEVSQUNUSU9OX1RFU1RJTkcgMQotI2VuZGlmCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0FMTF9EWU5fTElOSykgJiYgIWRlZmluZWQoTkROQk9PU1RfVEVTVF9EWU5fTElOSykKLSMgIGRlZmluZSBORE5CT09TVF9URVNUX0RZTl9MSU5LCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfVEVTVF9JTkNMVURFRCkKLSMgIHVuZGVmIE5ETkJPT1NUX1RFU1RfRFlOX0xJTksKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9URVNUX0RZTl9MSU5LKQotIyAgZGVmaW5lIE5ETkJPT1NUX1RFU1RfQUxURVJOQVRJVkVfSU5JVF9BUEkKLQotIyAgaWZkZWYgTkROQk9PU1RfVEVTVF9TT1VSQ0UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1RFU1RfREVDTCBORE5CT09TVF9TWU1CT0xfRVhQT1JUCi0jICBlbHNlCi0jICAgIGRlZmluZSBORE5CT09TVF9URVNUX0RFQ0wgTkROQk9PU1RfU1lNQk9MX0lNUE9SVAotIyAgZW5kaWYgIC8vIE5ETkJPT1NUX1RFU1RfU09VUkNFCi0jZWxzZQotIyAgZGVmaW5lIE5ETkJPT1NUX1RFU1RfREVDTAotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9URVNUX01BSU4pICYmIGRlZmluZWQoTkROQk9PU1RfQVVUT19URVNUX01BSU4pCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfTUFJTiBORE5CT09TVF9BVVRPX1RFU1RfTUFJTgotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9URVNUX01BSU4pICYmIGRlZmluZWQoTkROQk9PU1RfVEVTVF9NT0RVTEUpCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfTUFJTiBORE5CT09TVF9URVNUX01PRFVMRQotI2VuZGlmCi0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX0NPTkZJR19IUFBfMDcxODk0R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM2MThlOTEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNC0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDU0NjMzICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBlbmFibGUgcHJldmlvc2x5IHN1cHByZXNzZWQgd2FybmluZ3MKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotIyBwcmFnbWEgd2FybmluZyhkZWZhdWx0OiA0NTExKSAvLyBjb3B5IGNvbnN0cnVjdG9yIGNhbid0IG5vdCBiZSBnZW5lcmF0ZWQKLSMgcHJhZ21hIHdhcm5pbmcoZGVmYXVsdDogNDUxMikgLy8gYXNzaWdubWVudCBvcGVyYXRvciBjYW4ndCBub3QgYmUgZ2VuZXJhdGVkCi0jIHByYWdtYSB3YXJuaW5nKGRlZmF1bHQ6IDQxMDApIC8vIHVucmVmZXJlbmNlZCBmb3JtYWwgcGFyYW1ldGVyIAotIyBwcmFnbWEgd2FybmluZyhkZWZhdWx0OiA0OTk2KSAvLyA8c3ltYm9sPiB3YXMgZGVjbGFyZWQgZGVwcmVjYXRlZCAKLSMgcHJhZ21hIHdhcm5pbmcoZGVmYXVsdDogNDM1NSkgLy8gJ3RoaXMnIDogdXNlZCBpbiBiYXNlIG1lbWJlciBpbml0aWFsaXplciBsaXN0Ci0jIHByYWdtYSB3YXJuaW5nKGRlZmF1bHQ6IDQ3MDYpIC8vIGFzc2lnbm1lbnQgd2l0aGluIGNvbmRpdGlvbmFsIGV4cHJlc3Npb24KLSMgcHJhZ21hIHdhcm5pbmcoZGVmYXVsdDogNDI1MSkgLy8gY2xhc3MgJ0E8VD4nIG5lZWRzIHRvIGhhdmUgZGxsLWludGVyZmFjZSB0byBiZSB1c2VkIGJ5IGNsaWVudHMgb2YgY2xhc3MgJ0InCi0jIHByYWdtYSB3YXJuaW5nKGRlZmF1bHQ6IDQxMjcpIC8vIGNvbmRpdGlvbmFsIGV4cHJlc3Npb24gaXMgY29uc3RhbnQKLSMgcHJhZ21hIHdhcm5pbmcoZGVmYXVsdDogNDI5MCkgLy8gQysrIGV4Y2VwdGlvbiBzcGVjaWZpY2F0aW9uIGlnbm9yZWQgZXhjZXB0IHRvIC4uLgotIyBwcmFnbWEgd2FybmluZyhkZWZhdWx0OiA0MTgwKSAvLyBxdWFsaWZpZXIgYXBwbGllZCB0byBmdW5jdGlvbiB0eXBlIGhhcyBubyBtZWFuaW5nOyBpZ25vcmVkCi0jIHByYWdtYSB3YXJuaW5nKGRlZmF1bHQ6IDQyNzUpIC8vIG5vbiBkbGwtaW50ZXJmYWNlIGNsYXNzIC4uLiB1c2VkIGFzIGJhc2UgZm9yIGRsbC1pbnRlcmZhY2UgY2xhc3MgLi4uCi0jIHByYWdtYSB3YXJuaW5nKGRlZmF1bHQ6IDQyNjcpIC8vICd2YXInIDogY29udmVyc2lvbiBmcm9tICdzaXplX3QnIHRvICd0eXBlJywgcG9zc2libGUgbG9zcyBvZiBkYXRhCi0jIHByYWdtYSB3YXJuaW5nKGRlZmF1bHQ6IDQ1MTEpIC8vICdjbGFzcycgOiBjb3B5IGNvbnN0cnVjdG9yIGNvdWxkIG5vdCBiZSBnZW5lcmF0ZWQKLSMgcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvZGV0YWlsL2Z3ZF9kZWNsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9kZXRhaWwvZndkX2RlY2wuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYjAyOWZlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9kZXRhaWwvZndkX2RlY2wuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDQ5MzEyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBjb250YWlucyBmb3J3YXJkIGVjbGFyYXRpb25zIGZvciBCb29zdC5UZXN0IGRhdGEgdHlwZXMKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfRldEX0RFQ0xfSFBQXzAxMTYwNUdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX0ZXRF9ERUNMX0hQUF8wMTE2MDVHRVIKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotY2xhc3MgIGV4ZWN1dGlvbl9tb25pdG9yOwotY2xhc3MgIGV4ZWN1dGlvbl9leGNlcHRpb247Ci0KLW5hbWVzcGFjZSB1bml0X3Rlc3QgewotCi1jbGFzcyAgdGVzdF91bml0OwotY2xhc3MgIHRlc3RfY2FzZTsKLWNsYXNzICB0ZXN0X3N1aXRlOwotY2xhc3MgIG1hc3Rlcl90ZXN0X3N1aXRlX3Q7Ci0KLWNsYXNzICB0ZXN0X3RyZWVfdmlzaXRvcjsKLWNsYXNzICB0ZXN0X29ic2VydmVyOwotCi0vLyBzaW5nbGV0b25zCi1jbGFzcyAgdW5pdF90ZXN0X21vbml0b3JfdDsKLWNsYXNzICB1bml0X3Rlc3RfbG9nX3Q7Ci0KLWNsYXNzICB1bml0X3Rlc3RfbG9nX2Zvcm1hdHRlcjsKLXN0cnVjdCBsb2dfZW50cnlfZGF0YTsKLXN0cnVjdCBsb2dfY2hlY2twb2ludF9kYXRhOwotCi1jbGFzcyBsYXp5X29zdHJlYW07Ci0KLX0gLy8gbmFtZXNwYWNlIHVuaXRfdGVzdAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9GV0RfREVDTF9IUFBfMDExNjA1R0VSCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9kZXRhaWwvZ2xvYmFsX3R5cGVkZWYuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2RldGFpbC9nbG9iYWxfdHlwZWRlZi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIwNzk0MGQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2RldGFpbC9nbG9iYWxfdHlwZWRlZi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw4OCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDAxLTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTQ2MzMgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IHNvbWUgdHJpdmlhbCBnbG9iYWwgdHlwZWRlZnMKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfR0xPQkFMX1RZUEVERUZfSFBQXzAyMTAwNUdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX0dMT0JBTF9UWVBFREVGX0hQUF8wMjEwMDVHRVIKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvYmFzaWNfY3N0cmluZy9iYXNpY19jc3RyaW5nLmhwcD4KLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9MKCBzICkgICAgICAgICBuZG5ib29zdDo6dW5pdF90ZXN0Ojpjb25zdF9zdHJpbmcoIHMsIHNpemVvZiggcyApIC0gMSApCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfU1RSSU5HSVpFKCBzICkgTkROQk9PU1RfVEVTVF9MKCBORE5CT09TVF9TVFJJTkdJWkUoIHMgKSApCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfRU1QVFlfU1RSSU5HICAgTkROQk9PU1RfVEVTVF9MKCAiIiApCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSB1bml0X3Rlc3QgewotCi10eXBlZGVmIHVuc2lnbmVkIGxvbmcgICBjb3VudGVyX3Q7Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLWVudW0gcmVwb3J0X2xldmVsICB7IElOVl9SRVBPUlRfTEVWRUwsIENPTkZJUk1BVElPTl9SRVBPUlQsIFNIT1JUX1JFUE9SVCwgREVUQUlMRURfUkVQT1JULCBOT19SRVBPUlQgfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotZW51bSBvdXRwdXRfZm9ybWF0IHsgSU5WX09GLCBDTEYgLyogY29tcGlsZXIgbG9nIGZvcm1hdCAqLywgWE1MIC8qIFhNTCAqLyB9OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1lbnVtIHRlc3RfdW5pdF90eXBlIHsgdHV0X2Nhc2UgPSAweDAxLCB0dXRfc3VpdGUgPSAweDEwLCB0dXRfYW55ID0gMHgxMSB9OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10eXBlZGVmIHVuc2lnbmVkIGxvbmcgICB0ZXN0X3VuaXRfaWQ7Ci0KLWNvbnN0IHRlc3RfdW5pdF9pZCBJTlZfVEVTVF9VTklUX0lEICA9IDB4RkZGRkZGRkY7Ci1jb25zdCB0ZXN0X3VuaXRfaWQgTUFYX1RFU1RfQ0FTRV9JRCAgPSAweEZGRkZGRkZFOwotY29uc3QgdGVzdF91bml0X2lkIE1JTl9URVNUX0NBU0VfSUQgID0gMHgwMDAxMDAwMDsKLWNvbnN0IHRlc3RfdW5pdF9pZCBNQVhfVEVTVF9TVUlURV9JRCA9IDB4MDAwMEZGMDA7Ci1jb25zdCB0ZXN0X3VuaXRfaWQgTUlOX1RFU1RfU1VJVEVfSUQgPSAweDAwMDAwMDAxOwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgdXRfZGV0YWlsIHsKLQotaW5saW5lIHRlc3RfdW5pdF90eXBlCi10ZXN0X2lkXzJfdW5pdF90eXBlKCB0ZXN0X3VuaXRfaWQgaWQgKQotewotICAgIHJldHVybiAoaWQgJiAweEZGRkYwMDAwKSAhPSAwID8gdHV0X2Nhc2UgOiB0dXRfc3VpdGU7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vIGhlbHBlciB0ZW1wbGF0ZXMgdG8gcHJldmVudCBPRFIgdmlvbGF0aW9ucyAKLXRlbXBsYXRlPGNsYXNzIFQ+IAotc3RydWN0IHN0YXRpY19jb25zdGFudCB7IAotICAgIHN0YXRpYyBUIHZhbHVlOyAKLX07IAotCi10ZW1wbGF0ZTxjbGFzcyBUPiAKLVQgc3RhdGljX2NvbnN0YW50PFQ+Ojp2YWx1ZTsgCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vIAotCi19IC8vIG5hbWVzcGFjZSB1dF9kZXRhaWwKLQotfSAvLyBuYW1lc3BhY2UgdW5pdF90ZXN0Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9HTE9CQUxfVFlQRURFRl9IUFBfMDIxMDA1R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvZGV0YWlsL2xvZ19sZXZlbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvZGV0YWlsL2xvZ19sZXZlbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0OWRiMGMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2RldGFpbC9sb2dfbGV2ZWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDQ5MzEyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBzaGFyZWQgZGVmaW5pdGlvbiBmb3IgdW5pdCB0ZXN0IGxvZyBsZXZlbHMKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfTE9HX0xFVkVMX0hQUF8wMTE2MDVHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9MT0dfTEVWRUxfSFBQXzAxMTYwNUdFUgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotbmFtZXNwYWNlIHVuaXRfdGVzdCB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgICBsb2cgbGV2ZWxzICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotLy8gIGVhY2ggbG9nIGxldmVsIGluY2x1ZGVzIGFsbCBzdWJzZXF1ZW50IGhpZ2hlciBsb2dpbmcgbGV2ZWxzCi1lbnVtICAgICAgICAgICAgbG9nX2xldmVsIHsKLSAgICBpbnZhbGlkX2xvZ19sZXZlbCAgICAgICAgPSAtMSwKLSAgICBsb2dfc3VjY2Vzc2Z1bF90ZXN0cyAgICAgPSAwLAotICAgIGxvZ190ZXN0X3VuaXRzICAgICAgICAgICA9IDEsCi0gICAgbG9nX21lc3NhZ2VzICAgICAgICAgICAgID0gMiwKLSAgICBsb2dfd2FybmluZ3MgICAgICAgICAgICAgPSAzLAotICAgIGxvZ19hbGxfZXJyb3JzICAgICAgICAgICA9IDQsIC8vIHJlcG9ydGVkIGJ5IHVuaXQgdGVzdCBtYWNyb3MKLSAgICBsb2dfY3BwX2V4Y2VwdGlvbl9lcnJvcnMgPSA1LCAvLyB1bmNhdWdodCBDKysgZXhjZXB0aW9ucwotICAgIGxvZ19zeXN0ZW1fZXJyb3JzICAgICAgICA9IDYsIC8vIGluY2x1ZGluZyB0aW1lb3V0cywgc2lnbmFscywgdHJhcHMKLSAgICBsb2dfZmF0YWxfZXJyb3JzICAgICAgICAgPSA3LCAvLyBpbmNsdWRpbmcgdW5pdCB0ZXN0IG1hY3JvcyBvcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZhdGFsIHN5c3RlbSBlcnJvcnMKLSAgICBsb2dfbm90aGluZyAgICAgICAgICAgICAgPSA4Ci19OwotCi19IC8vIG5hbWVzcGFjZSB1bml0X3Rlc3QKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX0xPR19MRVZFTF9IUFBfMDExNjA1R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YjkzZGI3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNC0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDU0NjMzICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBzdXBwcmVzcyBzb21lIHdhcm5pbmdzIAotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jIHByYWdtYSB3YXJuaW5nKHB1c2gpCi0jIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ1MTEpIC8vIGNvcHkgY29uc3RydWN0b3IgY2FuJ3Qgbm90IGJlIGdlbmVyYXRlZAotIyBwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0NTEyKSAvLyBhc3NpZ25tZW50IG9wZXJhdG9yIGNhbid0IG5vdCBiZSBnZW5lcmF0ZWQKLSMgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEwMCkgLy8gdW5yZWZlcmVuY2VkIGZvcm1hbCBwYXJhbWV0ZXIgCi0jIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ5OTYpIC8vIDxzeW1ib2w+IHdhcyBkZWNsYXJlZCBkZXByZWNhdGVkIAotIyBwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MzU1KSAvLyAndGhpcycgOiB1c2VkIGluIGJhc2UgbWVtYmVyIGluaXRpYWxpemVyIGxpc3QKLSMgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDcwNikgLy8gYXNzaWdubWVudCB3aXRoaW4gY29uZGl0aW9uYWwgZXhwcmVzc2lvbgotIyBwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MjUxKSAvLyBjbGFzcyAnQTxUPicgbmVlZHMgdG8gaGF2ZSBkbGwtaW50ZXJmYWNlIHRvIGJlIHVzZWQgYnkgY2xpZW50cyBvZiBjbGFzcyAnQicKLSMgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDEyNykgLy8gY29uZGl0aW9uYWwgZXhwcmVzc2lvbiBpcyBjb25zdGFudAotIyBwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MjkwKSAvLyBDKysgZXhjZXB0aW9uIHNwZWNpZmljYXRpb24gaWdub3JlZCBleGNlcHQgdG8gLi4uCi0jIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxODApIC8vIHF1YWxpZmllciBhcHBsaWVkIHRvIGZ1bmN0aW9uIHR5cGUgaGFzIG5vIG1lYW5pbmc7IGlnbm9yZWQKLSMgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDI3NSkgLy8gbm9uIGRsbC1pbnRlcmZhY2UgY2xhc3MgLi4uIHVzZWQgYXMgYmFzZSBmb3IgZGxsLWludGVyZmFjZSBjbGFzcyAuLi4KLSMgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDI2NykgLy8gJ3ZhcicgOiBjb252ZXJzaW9uIGZyb20gJ3NpemVfdCcgdG8gJ3R5cGUnLCBwb3NzaWJsZSBsb3NzIG9mIGRhdGEKLSMgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDUxMSkgLy8gJ2NsYXNzJyA6IGNvcHkgY29uc3RydWN0b3IgY291bGQgbm90IGJlIGdlbmVyYXRlZAotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9kZXRhaWwvdW5pdF90ZXN0X3BhcmFtZXRlcnMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2RldGFpbC91bml0X3Rlc3RfcGFyYW1ldGVycy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNhN2EyNGYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2RldGFpbC91bml0X3Rlc3RfcGFyYW1ldGVycy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDAxLTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTc5OTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IHN0b3JhZ2UgZm9yIHVuaXQgdGVzdCBmcmFtZXdvcmsgcGFyYW1ldGVycyBpbmZvcm1hdGlvbgotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9VTklUX1RFU1RfUEFSQU1FVEVSU19IUFBfMDcxODk0R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfVU5JVF9URVNUX1BBUkFNRVRFUlNfSFBQXzA3MTg5NEdFUgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZ2xvYmFsX3R5cGVkZWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2xvZ19sZXZlbC5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vIFNUTAotI2luY2x1ZGUgPGlvc2Z3ZD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIHVuaXRfdGVzdCB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgcnVudGltZV9jb25maWcgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotbmFtZXNwYWNlIHJ1bnRpbWVfY29uZmlnIHsKLQotTkROQk9PU1RfVEVTVF9ERUNMIHZvaWQgICAgICAgICAgICAgICAgICAgICBpbml0KCBpbnQmIGFyZ2MsIGNoYXIqKiBhcmd2ICk7Ci0KLU5ETkJPT1NUX1RFU1RfREVDTCB1bml0X3Rlc3Q6OmxvZ19sZXZlbCAgICAgbG9nX2xldmVsKCk7Ci1ORE5CT09TVF9URVNUX0RFQ0wgYm9vbCAgICAgICAgICAgICAgICAgICAgIG5vX3Jlc3VsdF9jb2RlKCk7Ci1ORE5CT09TVF9URVNUX0RFQ0wgdW5pdF90ZXN0OjpyZXBvcnRfbGV2ZWwgIHJlcG9ydF9sZXZlbCgpOwotTkROQk9PU1RfVEVTVF9ERUNMIGNvbnN0X3N0cmluZyAgICAgICAgICAgICB0ZXN0X3RvX3J1bigpOwotTkROQk9PU1RfVEVTVF9ERUNMIGNvbnN0X3N0cmluZyAgICAgICAgICAgICBicmVha19leGVjX3BhdGgoKTsKLU5ETkJPT1NUX1RFU1RfREVDTCBib29sICAgICAgICAgICAgICAgICAgICAgc2F2ZV9wYXR0ZXJuKCk7Ci1ORE5CT09TVF9URVNUX0RFQ0wgYm9vbCAgICAgICAgICAgICAgICAgICAgIHNob3dfYnVpbGRfaW5mbygpOwotTkROQk9PU1RfVEVTVF9ERUNMIGJvb2wgICAgICAgICAgICAgICAgICAgICBzaG93X3Byb2dyZXNzKCk7Ci1ORE5CT09TVF9URVNUX0RFQ0wgYm9vbCAgICAgICAgICAgICAgICAgICAgIGNhdGNoX3N5c19lcnJvcnMoKTsKLU5ETkJPT1NUX1RFU1RfREVDTCBib29sICAgICAgICAgICAgICAgICAgICAgYXV0b19zdGFydF9kYmcoKTsKLU5ETkJPT1NUX1RFU1RfREVDTCBib29sICAgICAgICAgICAgICAgICAgICAgdXNlX2FsdF9zdGFjaygpOwotTkROQk9PU1RfVEVTVF9ERUNMIGJvb2wgICAgICAgICAgICAgICAgICAgICBkZXRlY3RfZnBfZXhjZXB0aW9ucygpOwotTkROQk9PU1RfVEVTVF9ERUNMIG91dHB1dF9mb3JtYXQgICAgICAgICAgICByZXBvcnRfZm9ybWF0KCk7Ci1ORE5CT09TVF9URVNUX0RFQ0wgb3V0cHV0X2Zvcm1hdCAgICAgICAgICAgIGxvZ19mb3JtYXQoKTsKLU5ETkJPT1NUX1RFU1RfREVDTCBzdGQ6Om9zdHJlYW0qICAgICAgICAgICAgcmVwb3J0X3NpbmsoKTsKLU5ETkJPT1NUX1RFU1RfREVDTCBzdGQ6Om9zdHJlYW0qICAgICAgICAgICAgbG9nX3NpbmsoKTsKLU5ETkJPT1NUX1RFU1RfREVDTCBsb25nICAgICAgICAgICAgICAgICAgICAgZGV0ZWN0X21lbW9yeV9sZWFrcygpOwotTkROQk9PU1RfVEVTVF9ERUNMIGludCAgICAgICAgICAgICAgICAgICAgICByYW5kb21fc2VlZCgpOwotCi19IC8vIG5hbWVzcGFjZSBydW50aW1lX2NvbmZpZwotCi19IC8vIG5hbWVzcGFjZSB1bml0X3Rlc3QKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX1VOSVRfVEVTVF9QQVJBTUVURVJTX0hQUF8wNzE4OTRHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNTk1ZmZiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2NSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTQ2MzMgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGNvbnRhaW5zIG1pY3MuIHdvcmthcm91bmRzIAotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9XT1JLQVJPVU5EX0hQUF8wMjEwMDVHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9XT1JLQVJPVU5EX0hQUF8wMjEwMDVHRVIKLQotLy8gQm9vc3QKLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiAvLyBjb21waWxlcnMgd29ya2Fyb3VuZHMgYW5kIHN0ZDo6cHRyZGlmZl90Ci0KLS8vIFNUTAotI2luY2x1ZGUgPGl0ZXJhdG9yPiAgICAgLy8gZm9yIHN0ZDo6ZGlzdGFuY2UKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIHVuaXRfdGVzdCB7Ci0KLW5hbWVzcGFjZSB1dF9kZXRhaWwgewotCi0jaWZkZWYgTkROQk9PU1RfTk9fU1REX0RJU1RBTkNFCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0ZDo6cHRyZGlmZl90IGRpc3RhbmNlKCBUIGNvbnN0JiB4XywgVCBjb25zdCYgeV8gKQoteyAKLSAgICBzdGQ6OnB0cmRpZmZfdCByZXMgPSAwOwotCi0gICAgc3RkOjpkaXN0YW5jZSggeF8sIHlfLCByZXMgKTsKLQotICAgIHJldHVybiByZXM7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNlbHNlCi11c2luZyBzdGQ6OmRpc3RhbmNlOwotI2VuZGlmCi0KLXRlbXBsYXRlIDxjbGFzcyBUPiBpbmxpbmUgdm9pZCBpZ25vcmVfdW51c2VkX3ZhcmlhYmxlX3dhcm5pbmcoY29uc3QgVCYpIHt9Ci0KLX0gLy8gbmFtZXNwYWNlIHV0X2RldGFpbAotCi19IC8vIG5hbWVzcGFjZSB1bml0X3Rlc3QKLQotbmFtZXNwYWNlIHVuaXRfdGVzdF9mcmFtZXdvcmsgPSB1bml0X3Rlc3Q7Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9XT1JLQVJPVU5EX0hQUF8wMjEwMDVHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9leGVjdXRpb25fbW9uaXRvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvZXhlY3V0aW9uX21vbml0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMWFiYzhiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9leGVjdXRpb25fbW9uaXRvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNjMgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwMS0yMDA4LgotLy8gIChDKSBDb3B5cmlnaHQgQmVtYW4gRGF3ZXMgMjAwMS4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1Nzk5MiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogZGVmaW5lcyBhYnN0cmFjdCBtb25pdG9yIGludGVyZmFjZXMgYW5kIGltcGxlbWVudHMgZXhlY3V0aW9uIGV4Y2VwdGlvbgotLy8gIFRoZSBvcmlnaW5hbCBCb29zdCBUZXN0IExpYnJhcnkgaW5jbHVkZWQgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsIGZ1bmN0aW9uCi0vLyAgbmFtZWQgY2F0Y2hfZXhjZXB0aW9ucygpIHdoaWNoIGNhdWdodCBvdGhlcndpc2UgdW5jYXVnaHQgQysrIGV4Y2VwdGlvbnMuCi0vLyAgSXQgd2FzIGRlcml2ZWQgZnJvbSBhbiBleGlzdGluZyB0ZXN0IGZyYW1ld29yayBieSBCZW1hbiBEYXdlcy4gIFRoZQotLy8gIGludGVudCB3YXMgdG8gZXhwYW5kIGxhdGVyIHRvIGNhdGNoIG90aGVyIGRldGVjdGFibGUgYnV0IHBsYXRmb3JtIGRlcGVuZGVudAotLy8gIGVycm9yIGV2ZW50cyBsaWtlIFVuaXggc2lnbmFscyBvciBXaW5kb3dzIHN0cnVjdHVyZWQgQyBleGNlcHRpb25zLgotLy8KLS8vICBSZXF1ZXN0cyBmcm9tIGVhcmx5IGFkb3B0ZXJzIG9mIHRoZSBCb29zdCBUZXN0IExpYnJhcnkgaW5jbHVkZWQKLS8vICBjb25maWd1cmFibGUgbGV2ZWxzIG9mIGVycm9yIG1lc3NhZ2UgZGV0YWlsLCBlbGltaW5hdGlvbiBvZiB0ZW1wbGF0ZXMsCi0vLyAgc2VwYXJhdGlvbiBvZiBlcnJvciByZXBvcnRpbmcsIGFuZCBtYWtpbmcgdGhlIGNhdGNoX2V4Y2VwdGlvbnMoKSBmYWNpbGl0aWVzCi0vLyAgYXZhaWxhYmxlIGFzIGEgcHVibGljIGludGVyZmFjZS4gIFN1cHBvcnQgZm9yIHVuaXQgdGVzdGluZyBhbHNvIHN0cmV0Y2hlZAotLy8gIHRoZSBmdW5jdGlvbiBiYXNlZCBkZXNpZ24uICBJbXBsZW1lbnRhdGlvbiB3aXRoaW4gdGhlIGhlYWRlciBiZWNhbWUgbGVzcwotLy8gIGF0dHJhY3RpdmUgZHVlIHRvIHRoZSBuZWVkIHRvIGluY2x1ZGUgbWFueSBodWdlIHN5c3RlbSBkZXBlbmRlbnQgaGVhZGVycywKLS8vICBhbHRob3VnaCBzdGlsbCBwcmVmZXJhYmxlIGluIGNlcnRhaW4gY2FzZXMuCi0vLwotLy8gIEFsbCB0aG9zZSBpc3N1ZXMgaGF2ZSBiZWVuIGFkZHJlc3NlZCBieSBpbnRyb2R1Y2luZyB0aGUgY2xhc3MtYmFzZWQKLS8vICBkZXNpZ24gcHJlc2VudGVkIGhlcmUuCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX0VYRUNVVElPTl9NT05JVE9SX0hQUF8wNzE4OTRHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9FWEVDVVRJT05fTU9OSVRPUl9IUFBfMDcxODk0R0VSCi0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9nbG9iYWxfdHlwZWRlZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZndkX2RlY2wuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvY2FsbGJhY2suaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvY2xhc3NfcHJvcGVydGllcy5ocHA+Ci0KLS8vIEJvb3N0Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc2NvcGVkX3B0ci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc2NvcGVkX2FycmF5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9jc3RkbGliLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICBkZXRhaWw6OnRyYW5zbGF0ZV9leGNlcHRpb25fYmFzZSAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotY2xhc3MgTkROQk9PU1RfVEVTVF9ERUNMIHRyYW5zbGF0ZV9leGNlcHRpb25fYmFzZSB7Ci1wdWJsaWM6Ci0gICAgLy8gQ29uc3RydWN0b3IKLSAgICBleHBsaWNpdCAgICB0cmFuc2xhdGVfZXhjZXB0aW9uX2Jhc2UoIG5kbmJvb3N0OjpzY29wZWRfcHRyPHRyYW5zbGF0ZV9leGNlcHRpb25fYmFzZT4mIG5leHQgKQotICAgIHsKLSAgICAgICAgbmV4dC5zd2FwKCBtX25leHQgKTsKLSAgICB9Ci0KLSAgICAvLyBEZXN0cnVjdG9yCi0gICAgdmlydHVhbCAgICAgfnRyYW5zbGF0ZV9leGNlcHRpb25fYmFzZSgpIHt9Ci0KLSAgICB2aXJ0dWFsIGludCBvcGVyYXRvcigpKCB1bml0X3Rlc3Q6OmNhbGxiYWNrMDxpbnQ+IGNvbnN0JiBGICkgPSAwOwotCi1wcm90ZWN0ZWQ6Ci0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgbmRuYm9vc3Q6OnNjb3BlZF9wdHI8dHJhbnNsYXRlX2V4Y2VwdGlvbl9iYXNlPiBtX25leHQ7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICBleGVjdXRpb25fZXhjZXB0aW9uICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotICAgIAotLy8gIGRlc2lnbiByYXRpb25hbGU6IGZlYXIgb2YgYmVpbmcgb3V0IChvciBuZWFybHkgb3V0KSBvZiBtZW1vcnkuCi0gICAgCi1jbGFzcyBORE5CT09TVF9URVNUX0RFQ0wgZXhlY3V0aW9uX2V4Y2VwdGlvbiB7Ci0gICAgdHlwZWRlZiBuZG5ib29zdDo6dW5pdF90ZXN0Ojpjb25zdF9zdHJpbmcgY29uc3Rfc3RyaW5nOwotcHVibGljOgotICAgIGVudW0gZXJyb3JfY29kZSB7Ci0gICAgICAgIC8vICBUaGVzZSB2YWx1ZXMgYXJlIHNvbWV0aW1lcyB1c2VkIGFzIHByb2dyYW0gcmV0dXJuIGNvZGVzLgotICAgICAgICAvLyAgVGhlIHBhcnRpY3VsYXIgdmFsdWVzIGhhdmUgYmVlbiBjaG9zZW4gdG8gYXZvaWQgY29uZmxpY3RzIHdpdGgKLSAgICAgICAgLy8gIGNvbW1vbmx5IHVzZWQgcHJvZ3JhbSByZXR1cm4gY29kZXM6IHZhbHVlcyA8IDEwMCBhcmUgb2Z0ZW4gdXNlcgotICAgICAgICAvLyAgYXNzaWduZWQsIHZhbHVlcyA+IDI1NSBhcmUgc29tZXRpbWVzIHVzZWQgdG8gcmVwb3J0IHN5c3RlbSBlcnJvcnMuCi0gICAgICAgIC8vICBHYXBzIGluIHZhbHVlcyBhbGxvdyBmb3Igb3JkZXJseSBleHBhbnNpb24uCi0gICAgICAgIAotICAgICAgICBub19lcnJvciAgICAgICAgICAgICAgID0gMCwgICAvLyBmb3IgY29tcGxldGVuZXNzIG9ubHk7IG5ldmVyIHJldHVybmVkCi0gICAgICAgIHVzZXJfZXJyb3IgICAgICAgICAgICAgPSAyMDAsIC8vIHVzZXIgcmVwb3J0ZWQgbm9uLWZhdGFsIGVycm9yCi0gICAgICAgIGNwcF9leGNlcHRpb25fZXJyb3IgICAgPSAyMDUsIC8vIHNlZSBub3RlICgxKSBiZWxvdwotICAgICAgICBzeXN0ZW1fZXJyb3IgICAgICAgICAgID0gMjEwLCAvLyBzZWUgbm90ZSAoMikgYmVsb3cKLSAgICAgICAgdGltZW91dF9lcnJvciAgICAgICAgICA9IDIxNSwgLy8gb25seSBkZXRlY3RhYmxlIG9uIGNlcnRhaW4gcGxhdGZvcm1zCi0gICAgICAgIHVzZXJfZmF0YWxfZXJyb3IgICAgICAgPSAyMjAsIC8vIHVzZXIgcmVwb3J0ZWQgZmF0YWwgZXJyb3IKLSAgICAgICAgc3lzdGVtX2ZhdGFsX2Vycm9yICAgICA9IDIyNSAgLy8gc2VlIG5vdGUgKDIpIGJlbG93Ci0gICAgICAgIAotICAgICAgICAvLyAgTm90ZSAxOiBPbmx5IHVuY2F1Z2h0IEMrKyBleGNlcHRpb25zIGFyZSB0cmVhdGVkIGFzIGVycm9ycy4KLSAgICAgICAgLy8gIElmIHRoZSBhcHBsaWNhdGlvbiBjYXRjaGVzIGEgQysrIGV4Y2VwdGlvbiwgaXQgd2lsbCBuZXZlciByZWFjaAotICAgICAgICAvLyAgdGhlIGV4ZWN1dGlvbl9tb25pdG9yLgotICAgICAgICAKLSAgICAgICAgLy8gIE5vdGUgMjogVGhlc2UgZXJyb3JzIGluY2x1ZGUgVW5peCBzaWduYWxzIGFuZCBXaW5kb3dzIHN0cnVjdHVyZWQKLSAgICAgICAgLy8gIGV4Y2VwdGlvbnMuICBUaGV5IGFyZSBvZnRlbiBpbml0aWF0ZWQgYnkgaGFyZHdhcmUgdHJhcHMuCi0gICAgICAgIC8vCi0gICAgICAgIC8vICBUaGUgaW1wbGVtZW50YXRpb24gZGVjaWRlcyB3aGF0IGlzIGEgZmF0YWxfc3lzdGVtX2V4Y2VwdGlvbiBhbmQgd2hhdCBpcwotICAgICAgICAvLyAganVzdCBhIHN5c3RlbV9leGNlcHRpb24uICBGYXRhbCBlcnJvcnMgYXJlIHNvIGxpa2VseSB0byBoYXZlIGNvcnJ1cHRlZAotICAgICAgICAvLyAgbWFjaGluZSBzdGF0ZSAobGlrZSBhIHN0YWNrIG92ZXJmbG93IG9yIGFkZHJlc3NpbmcgZXhjZXB0aW9uKSB0aGF0IGl0Ci0gICAgICAgIC8vICBpcyB1bnJlYXNvbmFibGUgdG8gY29udGludWUgZXhlY3V0aW9uLgotICAgIH07Ci0gICAgCi0gICAgc3RydWN0IE5ETkJPT1NUX1RFU1RfREVDTCBsb2NhdGlvbiB7Ci0gICAgICAgIGV4cGxpY2l0ICAgIGxvY2F0aW9uKCBjaGFyIGNvbnN0KiBmaWxlX25hbWUgPSAwLCBzaXplX3QgbGluZV9udW0gPSAwLCBjaGFyIGNvbnN0KiBmdW5jID0gMCApOwotCi0gICAgICAgIGNvbnN0X3N0cmluZyAgICBtX2ZpbGVfbmFtZTsKLSAgICAgICAgc2l6ZV90ICAgICAgICAgIG1fbGluZV9udW07Ci0gICAgICAgIGNvbnN0X3N0cmluZyAgICBtX2Z1bmN0aW9uOwotICAgIH07Ci0KLSAgICAvLyBDb25zdHJ1Y3RvcgotICAgIGV4ZWN1dGlvbl9leGNlcHRpb24oIGVycm9yX2NvZGUgZWNfLCBjb25zdF9zdHJpbmcgd2hhdF9tc2dfLCBsb2NhdGlvbiBjb25zdCYgbG9jYXRpb25fICk7IC8vIG1heCBsZW5ndGggMjU2IGluYyAnXDAnCi0KLSAgICAvLyBBY2Nlc3MgbWV0aG9kcwotICAgIGVycm9yX2NvZGUgICAgICBjb2RlKCkgY29uc3QgICAgeyByZXR1cm4gbV9lcnJvcl9jb2RlOyB9Ci0gICAgY29uc3Rfc3RyaW5nICAgIHdoYXQoKSBjb25zdCAgICB7IHJldHVybiBtX3doYXQ7IH0KLSAgICBsb2NhdGlvbiBjb25zdCYgd2hlcmUoKSBjb25zdCAgIHsgcmV0dXJuIG1fbG9jYXRpb247IH0KLQotcHJpdmF0ZToKLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICBlcnJvcl9jb2RlICAgICAgbV9lcnJvcl9jb2RlOwotICAgIGNvbnN0X3N0cmluZyAgICBtX3doYXQ7Ci0gICAgbG9jYXRpb24gICAgICAgIG1fbG9jYXRpb247Ci19OyAvLyBleGVjdXRpb25fZXhjZXB0aW9uCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgIGV4ZWN1dGlvbl9tb25pdG9yICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotY2xhc3MgTkROQk9PU1RfVEVTVF9ERUNMIGV4ZWN1dGlvbl9tb25pdG9yIHsKLXB1YmxpYzoKLSAgICAvLyBDb25zdHJ1Y3RvcgotICAgIGV4ZWN1dGlvbl9tb25pdG9yKCkKLSAgICA6IHBfY2F0Y2hfc3lzdGVtX2Vycm9ycyggdHJ1ZSApCi0gICAgLCBwX2F1dG9fc3RhcnRfZGJnKCBmYWxzZSApCi0gICAgLCBwX3RpbWVvdXQoIDAgKQotICAgICwgcF91c2VfYWx0X3N0YWNrKCB0cnVlICkKLSAgICAsIHBfZGV0ZWN0X2ZwX2V4Y2VwdGlvbnMoIGZhbHNlICkKLSAgICB7fQotCi0gICAgLy8gUHVibGljIHByb3BlcnRpZXMKLSAgICAKLSAgICAvLyAgVGhlIHBfY2F0Y2hfc3lzdGVtX2Vycm9ycyBwYXJhbWV0ZXIgc3BlY2lmaWVzIHdoZXRoZXIgdGhlIG1vbml0b3Igc2hvdWxkIAotICAgIC8vICB0cnkgdG8gY2F0Y2ggc3lzdGVtIGVycm9ycy9leGNlcHRpb25zIHRoYXQgd291bGQgY2F1c2UgcHJvZ3JhbSB0byBjcmFzaCAKLSAgICAvLyAgaW4gcmVndWxhciBjYXNlCi0gICAgdW5pdF90ZXN0OjpyZWFkd3JpdGVfcHJvcGVydHk8Ym9vbD4gcF9jYXRjaF9zeXN0ZW1fZXJyb3JzOyAKLSAgICAvLyAgVGhlIHBfYXV0b19zdGFydF9kYmcgcGFyYW1ldGVyIHNwZWNpZmllcyB3aGV0aGVyIHRoZSBtb25pdG9yIHNob3VsZCAKLSAgICAvLyAgdHJ5IHRvIGF0dGFjaCBkZWJ1Z2dlciBpbiBjYXNlIG9mIGNhdWdodCBzeXN0ZW0gZXJyb3IKLSAgICB1bml0X3Rlc3Q6OnJlYWR3cml0ZV9wcm9wZXJ0eTxib29sPiBwX2F1dG9fc3RhcnRfZGJnOwotICAgIC8vICBUaGUgcF90aW1lb3V0IHBhcmFtZXRlciBzcGVjaWZpZXMgdGhlIHNlY29uZHMgdGhhdCBlbGFwc2UgYmVmb3JlCi0gICAgLy8gIGEgdGltZXJfZXJyb3Igb2NjdXJzLiAgTWF5IGJlIGlnbm9yZWQgb24gc29tZSBwbGF0Zm9ybXMuCi0gICAgdW5pdF90ZXN0OjpyZWFkd3JpdGVfcHJvcGVydHk8aW50PiAgcF90aW1lb3V0OwotICAgIC8vICBUaGUgcF91c2VfYWx0X3N0YWNrIHBhcmFtZXRlciBzcGVjaWZpZXMgd2hldGhlciB0aGUgbW9uaXRvciBzaG91bGQKLSAgICAvLyAgdXNlIGFsdGVybmF0aXZlIHN0YWNrIGZvciB0aGUgc2lnbmFsIGNhdGNoaW5nCi0gICAgdW5pdF90ZXN0OjpyZWFkd3JpdGVfcHJvcGVydHk8Ym9vbD4gcF91c2VfYWx0X3N0YWNrOwotICAgIC8vICBUaGUgcF9kZXRlY3RfZnBfZXhjZXB0aW9ucyBwYXJhbWV0ZXIgc3BlY2lmaWVzIHdoZXRoZXIgdGhlIG1vbml0b3Igc2hvdWxkCi0gICAgLy8gIHRyeSB0byBkZXRlY3QgaGFyZHdhcmUgZmxvYXRpbmcgcG9pbnQgZXhjZXB0aW9ucwotICAgIHVuaXRfdGVzdDo6cmVhZHdyaXRlX3Byb3BlcnR5PGJvb2w+IHBfZGV0ZWN0X2ZwX2V4Y2VwdGlvbnM7Ci0KLSAgICBpbnQgICAgICAgICBleGVjdXRlKCB1bml0X3Rlc3Q6OmNhbGxiYWNrMDxpbnQ+IGNvbnN0JiBGICk7IAotICAgIC8vICBSZXR1cm5zOiAgVmFsdWUgcmV0dXJuZWQgYnkgZnVuY3Rpb24gY2FsbCBGKCkuCi0gICAgLy8KLSAgICAvLyAgRWZmZWN0czogIENhbGxzIGV4ZWN1dGVzIHN1cHBsaWVkIGZ1bmN0aW9uIEYgaW5zaWRlIGEgdHJ5L2NhdGNoIGJsb2NrIHdoaWNoIGFsc28gbWF5Ci0gICAgLy8gIGluY2x1ZGUgb3RoZXIgdW5zcGVjaWZpZWQgcGxhdGZvcm0gZGVwZW5kZW50IGVycm9yIGRldGVjdGlvbiBjb2RlLgotICAgIC8vCi0gICAgLy8gIFRocm93czogZXhlY3V0aW9uX2V4Y2VwdGlvbiBvbiBhbiB1bmNhdWdodCBDKysgZXhjZXB0aW9uLAotICAgIC8vICBhIGhhcmR3YXJlIG9yIHNvZnR3YXJlIHNpZ25hbCwgdHJhcCwgb3Igb3RoZXIgZXhjZXB0aW9uLgotICAgIC8vCi0gICAgLy8gIE5vdGU6IGV4ZWN1dGUoKSBkb2Vzbid0IGNvbnNpZGVyIGl0IGFuIGVycm9yIGZvciBGIHRvIHJldHVybiBhIG5vbi16ZXJvIHZhbHVlLgotICAgIAotICAgIC8vIHJlZ2lzdGVyIGN1c3RvbSAodXNlciBzdXBwbGllZCkgZXhjZXB0aW9uIHRyYW5zbGF0b3IKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFeGNlcHRpb24sIHR5cGVuYW1lIEV4Y2VwdGlvblRyYW5zbGF0b3I+Ci0gICAgdm9pZCAgICAgICAgcmVnaXN0ZXJfZXhjZXB0aW9uX3RyYW5zbGF0b3IoIEV4Y2VwdGlvblRyYW5zbGF0b3IgY29uc3QmIHRyLCBuZG5ib29zdDo6dHlwZTxFeGNlcHRpb24+KiA9IDAgKTsKLQotcHJpdmF0ZToKLSAgICAvLyBpbXBsZW1lbnRhdGlvbiBoZWxwZXJzCi0gICAgaW50ICAgICAgICAgY2F0Y2hfc2lnbmFscyggdW5pdF90ZXN0OjpjYWxsYmFjazA8aW50PiBjb25zdCYgRiApOwotCi0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgbmRuYm9vc3Q6OnNjb3BlZF9wdHI8ZGV0YWlsOjp0cmFuc2xhdGVfZXhjZXB0aW9uX2Jhc2U+IG1fY3VzdG9tX3RyYW5zbGF0b3JzOwotICAgIG5kbmJvb3N0OjpzY29wZWRfYXJyYXk8Y2hhcj4gICAgICAgICAgICAgICAgICAgICAgICAgICBtX2FsdF9zdGFjazsKLX07IC8vIGV4ZWN1dGlvbl9tb25pdG9yCi0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICBkZXRhaWw6OnRyYW5zbGF0ZV9leGNlcHRpb24gICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIEV4Y2VwdGlvbiwgdHlwZW5hbWUgRXhjZXB0aW9uVHJhbnNsYXRvcj4KLWNsYXNzIHRyYW5zbGF0ZV9leGNlcHRpb24gOiBwdWJsaWMgdHJhbnNsYXRlX2V4Y2VwdGlvbl9iYXNlCi17Ci0gICAgdHlwZWRlZiBuZG5ib29zdDo6c2NvcGVkX3B0cjx0cmFuc2xhdGVfZXhjZXB0aW9uX2Jhc2U+IGJhc2VfcHRyOwotcHVibGljOgotICAgIGV4cGxpY2l0ICAgIHRyYW5zbGF0ZV9leGNlcHRpb24oIEV4Y2VwdGlvblRyYW5zbGF0b3IgY29uc3QmIHRyLCBiYXNlX3B0ciYgbmV4dCApCi0gICAgOiB0cmFuc2xhdGVfZXhjZXB0aW9uX2Jhc2UoIG5leHQgKSwgbV90cmFuc2xhdG9yKCB0ciApIHt9Ci0KLSAgICBpbnQgb3BlcmF0b3IoKSggdW5pdF90ZXN0OjpjYWxsYmFjazA8aW50PiBjb25zdCYgRiApCi0gICAgewotICAgICAgICB0cnkgewotICAgICAgICAgICAgcmV0dXJuIG1fbmV4dCA/ICgqbV9uZXh0KSggRiApIDogRigpOwotICAgICAgICB9IGNhdGNoKCBFeGNlcHRpb24gY29uc3QmIGUgKSB7Ci0gICAgICAgICAgICBtX3RyYW5zbGF0b3IoIGUgKTsKLSAgICAgICAgICAgIHJldHVybiBuZG5ib29zdDo6ZXhpdF9leGNlcHRpb25fZmFpbHVyZTsKLSAgICAgICAgfQotICAgIH0KLQotcHJpdmF0ZToKLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICBFeGNlcHRpb25UcmFuc2xhdG9yIG1fdHJhbnNsYXRvcjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi10ZW1wbGF0ZTx0eXBlbmFtZSBFeGNlcHRpb24sIHR5cGVuYW1lIEV4Y2VwdGlvblRyYW5zbGF0b3I+Ci12b2lkCi1leGVjdXRpb25fbW9uaXRvcjo6cmVnaXN0ZXJfZXhjZXB0aW9uX3RyYW5zbGF0b3IoIEV4Y2VwdGlvblRyYW5zbGF0b3IgY29uc3QmIHRyLCBuZG5ib29zdDo6dHlwZTxFeGNlcHRpb24+KiApCi17Ci0gICAgbV9jdXN0b21fdHJhbnNsYXRvcnMucmVzZXQoIAotICAgICAgICBuZXcgZGV0YWlsOjp0cmFuc2xhdGVfZXhjZXB0aW9uPEV4Y2VwdGlvbixFeGNlcHRpb25UcmFuc2xhdG9yPiggdHIsbV9jdXN0b21fdHJhbnNsYXRvcnMgKSApOwotfQotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICBleGVjdXRpb25fYWJvcnRlZCAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXN0cnVjdCBleGVjdXRpb25fYWJvcnRlZCB7fTsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICAgc3lzdGVtX2Vycm9yICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1jbGFzcyBzeXN0ZW1fZXJyb3IgewotcHVibGljOgotICAgIC8vIENvbnN0cnVjdG9yCi0gICAgZXhwbGljaXQgICAgc3lzdGVtX2Vycm9yKCBjaGFyIGNvbnN0KiBleHAgKTsKLQotICAgIHVuaXRfdGVzdDo6cmVhZG9ubHlfcHJvcGVydHk8bG9uZz4gICAgICAgICAgcF9lcnJubzsgCi0gICAgdW5pdF90ZXN0OjpyZWFkb25seV9wcm9wZXJ0eTxjaGFyIGNvbnN0Kj4gICBwX2ZhaWxlZF9leHA7IAotfTsKLQotI2RlZmluZSBORE5CT09TVF9URVNUX1NZU19BU1NFUlQoIGV4cCApIGlmKCAoZXhwKSApIDsgZWxzZSB0aHJvdyA6Om5kbmJvb3N0OjpzeXN0ZW1fZXJyb3IoIE5ETkJPT1NUX1NUUklOR0laRSggZXhwICkgKQotCi19ICAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2Zsb2F0aW5nX3BvaW50X2NvbXBhcmlzb24uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2Zsb2F0aW5nX3BvaW50X2NvbXBhcmlzb24uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYTBhNjBlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9mbG9hdGluZ19wb2ludF9jb21wYXJpc29uLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI4NiArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDAxLTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTc5OTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGRlZmluZXMgYWxnb2lydGhtcyBmb3IgY29tcGFyaW5nIDIgZmxvYXRpbmcgcG9pbnQgdmFsdWVzCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX0ZMT0FUSU5HX1BPSU5UX0NPTVBBUklTT05fSFBQXzA3MTg5NEdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX0ZMT0FUSU5HX1BPSU5UX0NPTVBBUklTT05fSFBQXzA3MTg5NEdFUgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZ2xvYmFsX3R5cGVkZWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvY2xhc3NfcHJvcGVydGllcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9wcmVkaWNhdGVfcmVzdWx0LmhwcD4KLQotLy8gQm9vc3QKLSNpbmNsdWRlIDxuZG5ib29zdC9saW1pdHMuaHBwPiAgLy8gZm9yIHN0ZDo6bnVtZXJpY19saW1pdHMKLSNpbmNsdWRlIDxuZG5ib29zdC9udW1lcmljL2NvbnZlcnNpb24vY29udmVyc2lvbl90cmFpdHMuaHBwPiAvLyBmb3IgbnVtZXJpYzo6Y29udmVyc2lvbl90cmFpdHMKLSNpbmNsdWRlIDxuZG5ib29zdC9zdGF0aWNfYXNzZXJ0LmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIHRlc3RfdG9vbHMgewotCi11c2luZyB1bml0X3Rlc3Q6OnJlYWRvbmx5X3Byb3BlcnR5OwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgIGZsb2F0aW5nX3BvaW50X2NvbXBhcmlzb25fdHlwZSAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWVudW0gZmxvYXRpbmdfcG9pbnRfY29tcGFyaXNvbl90eXBlIHsKLSAgICBGUENfU1RST05HLCAvLyAiVmVyeSBjbG9zZSIgICAtIGVxdWF0aW9uIDEnIGluIGRvY3MsIHRoZSBkZWZhdWx0Ci0gICAgRlBDX1dFQUsgICAgLy8gIkNsb3NlIGVub3VnaCIgLSBlcXVhdGlvbiAyJyBpbiBkb2NzLgotCi19OwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgICAgIGRldGFpbHMgICAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLW5hbWVzcGFjZSB0dF9kZXRhaWwgewotCi0vLyBGUFQgaXMgRmxvYXRpbmctUG9pbnQgVHlwZTogZmxvYXQsIGRvdWJsZSwgbG9uZyBkb3VibGUgb3IgVXNlci1EZWZpbmVkLgotdGVtcGxhdGU8dHlwZW5hbWUgRlBUPgotaW5saW5lIEZQVAotZnB0X2FicyggRlBUIGZwdiApIAotewotICAgIHJldHVybiBmcHYgPCBzdGF0aWNfY2FzdDxGUFQ+KDApID8gLWZwdiA6IGZwdjsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgRlBUPgotc3RydWN0IGZwdF9saW1pdHMgewotICAgIHN0YXRpYyBGUFQgICAgbWluX3ZhbHVlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPEZQVD46OmlzX3NwZWNpYWxpemVkCi0gICAgICAgICAgICAgICAgICAgID8gKHN0ZDo6bnVtZXJpY19saW1pdHM8RlBUPjo6bWluKSgpCi0gICAgICAgICAgICAgICAgICAgIDogMDsKLSAgICB9Ci0gICAgc3RhdGljIEZQVCAgICBtYXhfdmFsdWUoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8RlBUPjo6aXNfc3BlY2lhbGl6ZWQKLSAgICAgICAgICAgICAgICAgICAgPyAoc3RkOjpudW1lcmljX2xpbWl0czxGUFQ+OjptYXgpKCkKLSAgICAgICAgICAgICAgICAgICAgOiBzdGF0aWNfY2FzdDxGUFQ+KDEwMDAwMDApOyAvLyBmb3IgdGhlIG91ciBwdXJwdXNlcyBpdCBkb2Vzbid0IHJlYWxseSBtYXR0ZXIgd2hhdCB2YWx1ZSBpcyByZXR1cm5lZCBoZXJlCi0gICAgfQotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gYm90aCBmMSBhbmQgZjIgYXJlIHVuc2lnbmVkIGhlcmUKLXRlbXBsYXRlPHR5cGVuYW1lIEZQVD4KLWlubGluZSBGUFQKLXNhZmVfZnB0X2RpdmlzaW9uKCBGUFQgZjEsIEZQVCBmMiApCi17Ci0gICAgLy8gQXZvaWQgb3ZlcmZsb3cuCi0gICAgaWYoIChmMiA8IHN0YXRpY19jYXN0PEZQVD4oMSkpICAmJiAoZjEgPiBmMipmcHRfbGltaXRzPEZQVD46Om1heF92YWx1ZSgpKSApCi0gICAgICAgIHJldHVybiBmcHRfbGltaXRzPEZQVD46Om1heF92YWx1ZSgpOwotCi0gICAgLy8gQXZvaWQgdW5kZXJmbG93LgotICAgIGlmKCAoZjEgPT0gc3RhdGljX2Nhc3Q8RlBUPigwKSkgfHwKLSAgICAgICAgKChmMiA+IHN0YXRpY19jYXN0PEZQVD4oMSkpICYmIChmMSA8IGYyKmZwdF9saW1pdHM8RlBUPjo6bWluX3ZhbHVlKCkpKSApCi0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxGUFQ+KDApOwotCi0gICAgcmV0dXJuIGYxL2YyOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSB0dF9kZXRhaWwKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgdG9sZXJhbmNlIHByZXNlbnRhdGlvbiB0eXBlcyAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGUFQ+Ci1zdHJ1Y3QgcGVyY2VudF90b2xlcmFuY2VfdCB7Ci0gICAgZXhwbGljaXQgICAgcGVyY2VudF90b2xlcmFuY2VfdCggRlBUIHYgKSA6IG1fdmFsdWUoIHYgKSB7fQotCi0gICAgRlBUIG1fdmFsdWU7Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBPdXQsdHlwZW5hbWUgRlBUPgotT3V0JiBvcGVyYXRvcjw8KCBPdXQmIG91dCwgcGVyY2VudF90b2xlcmFuY2VfdDxGUFQ+IHQgKQotewotICAgIHJldHVybiBvdXQgPDwgdC5tX3ZhbHVlOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGUFQ+Ci1pbmxpbmUgcGVyY2VudF90b2xlcmFuY2VfdDxGUFQ+Ci1wZXJjZW50X3RvbGVyYW5jZSggRlBUIHYgKQotewotICAgIHJldHVybiBwZXJjZW50X3RvbGVyYW5jZV90PEZQVD4oIHYgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgRlBUPgotc3RydWN0IGZyYWN0aW9uX3RvbGVyYW5jZV90IHsKLSAgICBleHBsaWNpdCBmcmFjdGlvbl90b2xlcmFuY2VfdCggRlBUIHYgKSA6IG1fdmFsdWUoIHYgKSB7fQotCi0gICAgRlBUIG1fdmFsdWU7Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBPdXQsdHlwZW5hbWUgRlBUPgotT3V0JiBvcGVyYXRvcjw8KCBPdXQmIG91dCwgZnJhY3Rpb25fdG9sZXJhbmNlX3Q8RlBUPiB0ICkKLXsKLSAgICByZXR1cm4gb3V0IDw8IHQubV92YWx1ZTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgRlBUPgotaW5saW5lIGZyYWN0aW9uX3RvbGVyYW5jZV90PEZQVD4KLWZyYWN0aW9uX3RvbGVyYW5jZSggRlBUIHYgKQotewotICAgIHJldHVybiBmcmFjdGlvbl90b2xlcmFuY2VfdDxGUFQ+KCB2ICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICBjbG9zZV9hdF90b2xlcmFuY2UgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgRlBUPgotY2xhc3MgY2xvc2VfYXRfdG9sZXJhbmNlIHsKLXB1YmxpYzoKLSAgICAvLyBQdWJsaWMgdHlwZWRlZnMKLSAgICB0eXBlZGVmIGJvb2wgcmVzdWx0X3R5cGU7Ci0KLSAgICAvLyBDb25zdHJ1Y3RvcgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRvbGVyYW5jZUJhc2VUeXBlPgotICAgIGV4cGxpY2l0ICAgIGNsb3NlX2F0X3RvbGVyYW5jZSggcGVyY2VudF90b2xlcmFuY2VfdDxUb2xlcmFuY2VCYXNlVHlwZT4gIHRvbGVyYW5jZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdGluZ19wb2ludF9jb21wYXJpc29uX3R5cGUgICAgICAgICAgZnBjX3R5cGUgPSBGUENfU1RST05HICkgCi0gICAgOiBwX2ZyYWN0aW9uX3RvbGVyYW5jZSggdHRfZGV0YWlsOjpmcHRfYWJzKCBzdGF0aWNfY2FzdDxGUFQ+KDAuMDEpKnRvbGVyYW5jZS5tX3ZhbHVlICkgKQotICAgICwgcF9zdHJvbmdfb3Jfd2VhayggZnBjX3R5cGUgPT0gIEZQQ19TVFJPTkcgKQotICAgICwgbV9yZXBvcnRfbW9kaWZpZXIoIDEwMC4gKQotICAgIHt9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVG9sZXJhbmNlQmFzZVR5cGU+Ci0gICAgZXhwbGljaXQgICAgY2xvc2VfYXRfdG9sZXJhbmNlKCBmcmFjdGlvbl90b2xlcmFuY2VfdDxUb2xlcmFuY2VCYXNlVHlwZT4gdG9sZXJhbmNlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0aW5nX3BvaW50X2NvbXBhcmlzb25fdHlwZSAgICAgICAgICBmcGNfdHlwZSA9IEZQQ19TVFJPTkcgKSAKLSAgICA6IHBfZnJhY3Rpb25fdG9sZXJhbmNlKCB0dF9kZXRhaWw6OmZwdF9hYnMoIHRvbGVyYW5jZS5tX3ZhbHVlICkgKQotICAgICwgcF9zdHJvbmdfb3Jfd2VhayggZnBjX3R5cGUgPT0gIEZQQ19TVFJPTkcgKQotICAgICwgbV9yZXBvcnRfbW9kaWZpZXIoIDEuICkKLSAgICB7fQotCi0gICAgcHJlZGljYXRlX3Jlc3VsdCAgICAgICAgb3BlcmF0b3IoKSggRlBUIGxlZnQsIEZQVCByaWdodCApIGNvbnN0Ci0gICAgewotICAgICAgICBGUFQgZGlmZiA9IHR0X2RldGFpbDo6ZnB0X2FicyggbGVmdCAtIHJpZ2h0ICk7Ci0gICAgICAgIEZQVCBkMSAgID0gdHRfZGV0YWlsOjpzYWZlX2ZwdF9kaXZpc2lvbiggZGlmZiwgdHRfZGV0YWlsOjpmcHRfYWJzKCByaWdodCApICk7Ci0gICAgICAgIEZQVCBkMiAgID0gdHRfZGV0YWlsOjpzYWZlX2ZwdF9kaXZpc2lvbiggZGlmZiwgdHRfZGV0YWlsOjpmcHRfYWJzKCBsZWZ0ICkgKTsKLSAgICAgICAgCi0gICAgICAgIHByZWRpY2F0ZV9yZXN1bHQgcmVzKCBwX3N0cm9uZ19vcl93ZWFrIAotICAgICAgICAgICAgPyAoZDEgPD0gcF9mcmFjdGlvbl90b2xlcmFuY2UuZ2V0KCkgJiYgZDIgPD0gcF9mcmFjdGlvbl90b2xlcmFuY2UuZ2V0KCkpIAotICAgICAgICAgICAgOiAoZDEgPD0gcF9mcmFjdGlvbl90b2xlcmFuY2UuZ2V0KCkgfHwgZDIgPD0gcF9mcmFjdGlvbl90b2xlcmFuY2UuZ2V0KCkpICk7Ci0KLSAgICAgICAgaWYoICFyZXMgKQotICAgICAgICAgICAgcmVzLm1lc3NhZ2UoKSA8PCAoKCBkMSA8PSBwX2ZyYWN0aW9uX3RvbGVyYW5jZS5nZXQoKSA/IGQyIDogZDEgKSAqIG1fcmVwb3J0X21vZGlmaWVyKTsKLQotICAgICAgICByZXR1cm4gcmVzOwotICAgIH0KLQotICAgIC8vIFB1YmxpYyBwcm9wZXJ0aWVzCi0gICAgcmVhZG9ubHlfcHJvcGVydHk8RlBUPiAgcF9mcmFjdGlvbl90b2xlcmFuY2U7Ci0gICAgcmVhZG9ubHlfcHJvcGVydHk8Ym9vbD4gcF9zdHJvbmdfb3Jfd2VhazsKLXByaXZhdGU6Ci0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgRlBUICAgICAgICAgICAgICAgICAgICAgbV9yZXBvcnRfbW9kaWZpZXI7Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICBjaGVja19pc19jbG9zZSAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXN0cnVjdCBORE5CT09TVF9URVNUX0RFQ0wgY2hlY2tfaXNfY2xvc2VfdCB7Ci0gICAgLy8gUHVibGljIHR5cGVkZWZzCi0gICAgdHlwZWRlZiBib29sIHJlc3VsdF90eXBlOwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRlBUMSwgdHlwZW5hbWUgRlBUMiwgdHlwZW5hbWUgVG9sZXJhbmNlQmFzZVR5cGU+Ci0gICAgcHJlZGljYXRlX3Jlc3VsdAotICAgIG9wZXJhdG9yKCkoIEZQVDEgbGVmdCwgRlBUMiByaWdodCwgcGVyY2VudF90b2xlcmFuY2VfdDxUb2xlcmFuY2VCYXNlVHlwZT4gdG9sZXJhbmNlLCAKLSAgICAgICAgICAgICAgICBmbG9hdGluZ19wb2ludF9jb21wYXJpc29uX3R5cGUgZnBjX3R5cGUgPSBGUENfU1RST05HICkgY29uc3QKLSAgICB7Ci0gICAgICAgIC8vIGRlZHVjZSAiYmV0dGVyIiB0eXBlIGZyb20gdHlwZXMgb2YgYXJndW1lbnRzIGJlaW5nIGNvbXBhcmVkCi0gICAgICAgIC8vIGlmIG9uZSB0eXBlIGlzIGZsb2F0aW5nIGFuZCB0aGUgc2Vjb25kIGludGVncmFsIHdlIHVzZSBmbG9hdGluZyB0eXBlIGFuZCAKLSAgICAgICAgLy8gdmFsdWUgb2YgaW50ZWdyYWwgdHlwZSBpcyBwcm9tb3RlZCB0byB0aGUgZmxvYXRpbmcuIFRoZSBzYW1lIGZvciBmbG9hdCBhbmQgZG91YmxlCi0gICAgICAgIC8vIEJ1dCB3ZSBkb24ndCB3YW50IHRvIGNvbXBhcmUgdHdvIHZhbHVlcyBvZiBpbnRlZ3JhbCB0eXBlcyB1c2luZyB0aGlzIHRvb2wuCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbnVtZXJpYzo6Y29udmVyc2lvbl90cmFpdHM8RlBUMSxGUFQyPjo6c3VwZXJ0eXBlIEZQVDsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCggIWlzX2ludGVncmFsPEZQVD46OnZhbHVlICk7Ci0KLSAgICAgICAgY2xvc2VfYXRfdG9sZXJhbmNlPEZQVD4gcHJlZCggdG9sZXJhbmNlLCBmcGNfdHlwZSApOwotCi0gICAgICAgIHJldHVybiBwcmVkKCBsZWZ0LCByaWdodCApOwotICAgIH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGUFQxLCB0eXBlbmFtZSBGUFQyLCB0eXBlbmFtZSBUb2xlcmFuY2VCYXNlVHlwZT4KLSAgICBwcmVkaWNhdGVfcmVzdWx0Ci0gICAgb3BlcmF0b3IoKSggRlBUMSBsZWZ0LCBGUFQyIHJpZ2h0LCBmcmFjdGlvbl90b2xlcmFuY2VfdDxUb2xlcmFuY2VCYXNlVHlwZT4gdG9sZXJhbmNlLCAKLSAgICAgICAgICAgICAgICBmbG9hdGluZ19wb2ludF9jb21wYXJpc29uX3R5cGUgZnBjX3R5cGUgPSBGUENfU1RST05HICkgY29uc3QKLSAgICB7Ci0gICAgICAgIC8vIHNhbWUgYXMgaW4gYSBjb21tZW50IGFib3ZlCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbnVtZXJpYzo6Y29udmVyc2lvbl90cmFpdHM8RlBUMSxGUFQyPjo6c3VwZXJ0eXBlIEZQVDsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCggIWlzX2ludGVncmFsPEZQVD46OnZhbHVlICk7Ci0KLSAgICAgICAgY2xvc2VfYXRfdG9sZXJhbmNlPEZQVD4gcHJlZCggdG9sZXJhbmNlLCBmcGNfdHlwZSApOwotCi0gICAgICAgIHJldHVybiBwcmVkKCBsZWZ0LCByaWdodCApOwotICAgIH0KLX07Ci0KLW5hbWVzcGFjZSB7Ci1jaGVja19pc19jbG9zZV90IGNvbnN0JiBjaGVja19pc19jbG9zZSA9IHVuaXRfdGVzdDo6dXRfZGV0YWlsOjpzdGF0aWNfY29uc3RhbnQ8Y2hlY2tfaXNfY2xvc2VfdD46OnZhbHVlOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICBjaGVja19pc19zbWFsbCAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXN0cnVjdCBORE5CT09TVF9URVNUX0RFQ0wgY2hlY2tfaXNfc21hbGxfdCB7Ci0gICAgLy8gUHVibGljIHR5cGVkZWZzCi0gICAgdHlwZWRlZiBib29sIHJlc3VsdF90eXBlOwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRlBUPgotICAgIGJvb2wKLSAgICBvcGVyYXRvcigpKCBGUFQgZnB2LCBGUFQgdG9sZXJhbmNlICkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiB0dF9kZXRhaWw6OmZwdF9hYnMoIGZwdiApIDwgdHRfZGV0YWlsOjpmcHRfYWJzKCB0b2xlcmFuY2UgKTsKLSAgICB9Ci19OwotCi1uYW1lc3BhY2UgewotY2hlY2tfaXNfc21hbGxfdCBjb25zdCYgY2hlY2tfaXNfc21hbGwgPSB1bml0X3Rlc3Q6OnV0X2RldGFpbDo6c3RhdGljX2NvbnN0YW50PGNoZWNrX2lzX3NtYWxsX3Q+Ojp2YWx1ZTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2UgdGVzdF90b29scwotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX0ZMT0FUSU5HX1BPSU5UX0NPTUFQQVJJU09OX0hQUF8wNzE4OTRHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9mcmFtZXdvcmsuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ZyYW1ld29yay5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNmMzE2ZjguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ZyYW1ld29yay5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTIgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDU0NjMzICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBkZWZpbmVzIGZyYW1ld29yayBpbnRlcmZhY2UKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfRlJBTUVXT1JLX0hQUF8wMjA4MDVHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9GUkFNRVdPUktfSFBQXzAyMDgwNUdFUgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZ2xvYmFsX3R5cGVkZWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2Z3ZF9kZWNsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3RyaXZpYWxfc2luZ2xldG9uLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy8gU1RMCi0jaW5jbHVkZSA8c3RkZXhjZXB0PgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgdW5pdF90ZXN0IHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICBpbml0X3VuaXRfdGVzdF9mdW5jICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi0jaWZkZWYgTkROQk9PU1RfVEVTVF9BTFRFUk5BVElWRV9JTklUX0FQSQotdHlwZWRlZiBib29sICAgICAgICAoKmluaXRfdW5pdF90ZXN0X2Z1bmMpKCk7Ci0jZWxzZQotdHlwZWRlZiB0ZXN0X3N1aXRlKiAoKmluaXRfdW5pdF90ZXN0X2Z1bmMpKCBpbnQsIGNoYXIqIFtdICk7Ci0jZW5kaWYKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICAgIGZyYW1ld29yayAgICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1uYW1lc3BhY2UgZnJhbWV3b3JrIHsKLQotLy8gaW5pdGlhbGl6YXRpb24KLU5ETkJPT1NUX1RFU1RfREVDTCB2b2lkICAgIGluaXQoIGluaXRfdW5pdF90ZXN0X2Z1bmMgaW5pdF9mdW5jLCBpbnQgYXJnYywgY2hhciogYXJndltdICk7Ci1ORE5CT09TVF9URVNUX0RFQ0wgYm9vbCAgICBpc19pbml0aWFsaXplZCgpOwotCi0vLyBtdXRhdGlvbiBhY2Nlc3MgbWV0aG9kcwotTkROQk9PU1RfVEVTVF9ERUNMIHZvaWQgICAgcmVnaXN0ZXJfdGVzdF91bml0KCB0ZXN0X2Nhc2UqIHRjICk7Ci1ORE5CT09TVF9URVNUX0RFQ0wgdm9pZCAgICByZWdpc3Rlcl90ZXN0X3VuaXQoIHRlc3Rfc3VpdGUqIHRzICk7Ci1ORE5CT09TVF9URVNUX0RFQ0wgdm9pZCAgICBkZXJlZ2lzdGVyX3Rlc3RfdW5pdCggdGVzdF91bml0KiB0dSApOwotTkROQk9PU1RfVEVTVF9ERUNMIHZvaWQgICAgY2xlYXIoKTsKLQotTkROQk9PU1RfVEVTVF9ERUNMIHZvaWQgICAgcmVnaXN0ZXJfb2JzZXJ2ZXIoIHRlc3Rfb2JzZXJ2ZXImICk7Ci1ORE5CT09TVF9URVNUX0RFQ0wgdm9pZCAgICBkZXJlZ2lzdGVyX29ic2VydmVyKCB0ZXN0X29ic2VydmVyJiApOwotTkROQk9PU1RfVEVTVF9ERUNMIHZvaWQgICAgcmVzZXRfb2JzZXJ2ZXJzKCk7Ci0KLU5ETkJPT1NUX1RFU1RfREVDTCBtYXN0ZXJfdGVzdF9zdWl0ZV90JiBtYXN0ZXJfdGVzdF9zdWl0ZSgpOwotCi0vLyBjb25zdGFudCBhY2Nlc3MgbWV0aG9kcwotTkROQk9PU1RfVEVTVF9ERUNMIHRlc3RfY2FzZSBjb25zdCYgICAgY3VycmVudF90ZXN0X2Nhc2UoKTsKLQotTkROQk9PU1RfVEVTVF9ERUNMIHRlc3RfdW5pdCYgIGdldCggdGVzdF91bml0X2lkLCB0ZXN0X3VuaXRfdHlwZSApOwotdGVtcGxhdGU8dHlwZW5hbWUgVW5pdFR5cGU+Ci1Vbml0VHlwZSYgICAgICAgICAgICAgICBnZXQoIHRlc3RfdW5pdF9pZCBpZCApCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFVuaXRUeXBlJj4oIGdldCggaWQsIHN0YXRpY19jYXN0PHRlc3RfdW5pdF90eXBlPihVbml0VHlwZTo6dHlwZSkgKSApOwotfQotCi0vLyB0ZXN0IGluaXRpYXRpb24KLU5ETkJPT1NUX1RFU1RfREVDTCB2b2lkICAgIHJ1biggdGVzdF91bml0X2lkID0gSU5WX1RFU1RfVU5JVF9JRCwgYm9vbCBjb250aW51ZV90ZXN0ID0gdHJ1ZSApOwotTkROQk9PU1RfVEVTVF9ERUNMIHZvaWQgICAgcnVuKCB0ZXN0X3VuaXQgY29uc3QqLCBib29sIGNvbnRpbnVlX3Rlc3QgPSB0cnVlICk7Ci0KLS8vIHB1YmxpYyB0ZXN0IGV2ZW50cyBkaXNwYXRjaGVycwotTkROQk9PU1RfVEVTVF9ERUNMIHZvaWQgICAgYXNzZXJ0aW9uX3Jlc3VsdCggYm9vbCBwYXNzZWQgKTsKLU5ETkJPT1NUX1RFU1RfREVDTCB2b2lkICAgIGV4Y2VwdGlvbl9jYXVnaHQoIGV4ZWN1dGlvbl9leGNlcHRpb24gY29uc3QmICk7Ci1ORE5CT09TVF9URVNUX0RFQ0wgdm9pZCAgICB0ZXN0X3VuaXRfYWJvcnRlZCggdGVzdF91bml0IGNvbnN0JiApOwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgZnJhbWV3b3JrIGVycm9ycyAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXN0cnVjdCBpbnRlcm5hbF9lcnJvciA6IHN0ZDo6cnVudGltZV9lcnJvciB7Ci0gICAgaW50ZXJuYWxfZXJyb3IoIGNvbnN0X3N0cmluZyBtICkgOiBzdGQ6OnJ1bnRpbWVfZXJyb3IoIHN0ZDo6c3RyaW5nKCBtLmJlZ2luKCksIG0uc2l6ZSgpICkgKSB7fQotfTsKLQotc3RydWN0IHNldHVwX2Vycm9yIDogc3RkOjpydW50aW1lX2Vycm9yIHsKLSAgICBzZXR1cF9lcnJvciggY29uc3Rfc3RyaW5nIG0gKSA6IHN0ZDo6cnVudGltZV9lcnJvciggc3RkOjpzdHJpbmcoIG0uYmVnaW4oKSwgbS5zaXplKCkgKSApIHt9Ci19OwotCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfU0VUVVBfQVNTRVJUKCBjb25kLCBtc2cgKSBpZiggY29uZCApIHt9IGVsc2UgdGhyb3cgdW5pdF90ZXN0OjpmcmFtZXdvcms6OnNldHVwX2Vycm9yKCBtc2cgKQotCi1zdHJ1Y3Qgbm90aGluZ190b190ZXN0IHt9OyAvLyBub3QgcmVhbGx5IGFuIGVycm9yCi0KLX0gLy8gbmFtZXNwYWNlIGZyYW1ld29yawotCi19IC8vIHVuaXRfdGVzdAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RFU1RfRlJBTUVXT1JLX0hQUF8wMjA4MDVHRVIKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwvY29tcGlsZXJfbG9nX2Zvcm1hdHRlci5pcHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC9jb21waWxlcl9sb2dfZm9ybWF0dGVyLmlwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWQ4M2Y2MC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC9jb21waWxlcl9sb2dfZm9ybWF0dGVyLmlwcAorKysgL2Rldi9udWxsCkBAIC0xLDIyMiArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTc5OTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGltcGxlbWVudHMgY29tcGlsZXIgbGlrZSBMb2cgZm9ybWF0dGVyCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX0NPTVBJTEVSX0xPR19GT1JNQVRURVJfSVBQXzAyMDEwNUdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX0NPTVBJTEVSX0xPR19GT1JNQVRURVJfSVBQXzAyMDEwNUdFUgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9vdXRwdXQvY29tcGlsZXJfbG9nX2Zvcm1hdHRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91bml0X3Rlc3Rfc3VpdGVfaW1wbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9mcmFtZXdvcmsuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvYmFzaWNfY3N0cmluZy9pby5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9sYXp5X29zdHJlYW0uaHBwPgotCi0vLyBCb29zdAotI2luY2x1ZGUgPG5kbmJvb3N0L3ZlcnNpb24uaHBwPgotCi0vLyBTVEwKLSNpbmNsdWRlIDxpb3N0cmVhbT4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIHVuaXRfdGVzdCB7Ci0KLW5hbWVzcGFjZSBvdXRwdXQgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICBjb21waWxlcl9sb2dfZm9ybWF0dGVyICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLW5hbWVzcGFjZSB7Ci0KLWNvbnN0X3N0cmluZwotdGVzdF9waGFzZV9pZGVudGlmaWVyKCkKLXsKLSAgICByZXR1cm4gZnJhbWV3b3JrOjppc19pbml0aWFsaXplZCgpIAotICAgICAgICAgICAgPyBjb25zdF9zdHJpbmcoIGZyYW1ld29yazo6Y3VycmVudF90ZXN0X2Nhc2UoKS5wX25hbWUuZ2V0KCkgKQotICAgICAgICAgICAgOiBORE5CT09TVF9URVNUX0woICJUZXN0IHNldHVwIiApOwotfQotCi19IC8vIGxvY2FsIG5hbWVzcGFjZQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1jb21waWxlcl9sb2dfZm9ybWF0dGVyOjpsb2dfc3RhcnQoIHN0ZDo6b3N0cmVhbSYgb3V0cHV0LCBjb3VudGVyX3QgdGVzdF9jYXNlc19hbW91bnQgKQotewotICAgIGlmKCB0ZXN0X2Nhc2VzX2Ftb3VudCA+IDAgKQotICAgICAgICBvdXRwdXQgIDw8ICJSdW5uaW5nICIgPDwgdGVzdF9jYXNlc19hbW91bnQgPDwgIiB0ZXN0ICIKLSAgICAgICAgICAgICAgICA8PCAodGVzdF9jYXNlc19hbW91bnQgPiAxID8gImNhc2VzIiA6ICJjYXNlIikgPDwgIi4uLlxuIjsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotY29tcGlsZXJfbG9nX2Zvcm1hdHRlcjo6bG9nX2ZpbmlzaCggc3RkOjpvc3RyZWFtJiBvc3RyICkKLXsKLSAgICBvc3RyLmZsdXNoKCk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLWNvbXBpbGVyX2xvZ19mb3JtYXR0ZXI6OmxvZ19idWlsZF9pbmZvKCBzdGQ6Om9zdHJlYW0mIG91dHB1dCApCi17Ci0gICAgb3V0cHV0ICA8PCAiUGxhdGZvcm06ICIgPDwgTkROQk9PU1RfUExBVEZPUk0gICAgICAgICAgICA8PCAnXG4nCi0gICAgICAgICAgICA8PCAiQ29tcGlsZXI6ICIgPDwgTkROQk9PU1RfQ09NUElMRVIgICAgICAgICAgICA8PCAnXG4nCi0gICAgICAgICAgICA8PCAiU1RMICAgICA6ICIgPDwgTkROQk9PU1RfU1RETElCICAgICAgICAgICAgICA8PCAnXG4nCi0gICAgICAgICAgICA8PCAiQm9vc3QgICA6ICIgPDwgTkROQk9PU1RfVkVSU0lPTi8xMDAwMDAgICAgICA8PCAiLiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBORE5CT09TVF9WRVJTSU9OLzEwMCAlIDEwMDAgIDw8ICIuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IE5ETkJPT1NUX1ZFUlNJT04gJSAxMDAgICAgICAgPDwgc3RkOjplbmRsOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1jb21waWxlcl9sb2dfZm9ybWF0dGVyOjp0ZXN0X3VuaXRfc3RhcnQoIHN0ZDo6b3N0cmVhbSYgb3V0cHV0LCB0ZXN0X3VuaXQgY29uc3QmIHR1ICkKLXsKLSAgICBvdXRwdXQgPDwgIkVudGVyaW5nIHRlc3QgIiA8PCB0dS5wX3R5cGVfbmFtZSA8PCAiIFwiIiA8PCB0dS5wX25hbWUgPDwgIlwiIiA8PCBzdGQ6OmVuZGw7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLWNvbXBpbGVyX2xvZ19mb3JtYXR0ZXI6OnRlc3RfdW5pdF9maW5pc2goIHN0ZDo6b3N0cmVhbSYgb3V0cHV0LCB0ZXN0X3VuaXQgY29uc3QmIHR1LCB1bnNpZ25lZCBsb25nIGVsYXBzZWQgKQotewotICAgIG91dHB1dCA8PCAiTGVhdmluZyB0ZXN0ICIgPDwgdHUucF90eXBlX25hbWUgPDwgIiBcIiIgPDwgdHUucF9uYW1lIDw8ICJcIiI7Ci0KLSAgICBpZiggZWxhcHNlZCA+IDAgKSB7Ci0gICAgICAgIG91dHB1dCA8PCAiOyB0ZXN0aW5nIHRpbWU6ICI7Ci0gICAgICAgIGlmKCBlbGFwc2VkICUgMTAwMCA9PSAwICkKLSAgICAgICAgICAgIG91dHB1dCA8PCBlbGFwc2VkLzEwMDAgPDwgIm1zIjsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgb3V0cHV0IDw8IGVsYXBzZWQgPDwgIm1rcyI7Ci0gICAgfQotCi0gICAgb3V0cHV0IDw8IHN0ZDo6ZW5kbDsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotY29tcGlsZXJfbG9nX2Zvcm1hdHRlcjo6dGVzdF91bml0X3NraXBwZWQoIHN0ZDo6b3N0cmVhbSYgb3V0cHV0LCB0ZXN0X3VuaXQgY29uc3QmIHR1ICkKLXsKLSAgICBvdXRwdXQgIDw8ICJUZXN0ICIgPDwgdHUucF90eXBlX25hbWUgPDwgIiBcIiIgPDwgdHUucF9uYW1lIDw8ICJcIiIgPDwgImlzIHNraXBwZWQiIDw8IHN0ZDo6ZW5kbDsKLX0KLSAgICAKLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLWNvbXBpbGVyX2xvZ19mb3JtYXR0ZXI6OmxvZ19leGNlcHRpb24oIHN0ZDo6b3N0cmVhbSYgb3V0cHV0LCBsb2dfY2hlY2twb2ludF9kYXRhIGNvbnN0JiBjaGVja3BvaW50X2RhdGEsIGV4ZWN1dGlvbl9leGNlcHRpb24gY29uc3QmIGV4ICkKLXsKLSAgICBleGVjdXRpb25fZXhjZXB0aW9uOjpsb2NhdGlvbiBjb25zdCYgbG9jID0gZXgud2hlcmUoKTsKLSAgICBwcmludF9wcmVmaXgoIG91dHB1dCwgbG9jLm1fZmlsZV9uYW1lLCBsb2MubV9saW5lX251bSApOwotCi0gICAgb3V0cHV0IDw8ICJmYXRhbCBlcnJvciBpbiBcIiIgPDwgKGxvYy5tX2Z1bmN0aW9uLmlzX2VtcHR5KCkgPyB0ZXN0X3BoYXNlX2lkZW50aWZpZXIoKSA6IGxvYy5tX2Z1bmN0aW9uICkgPDwgIlwiOiAiOwotCi0gICAgb3V0cHV0IDw8IGV4LndoYXQoKTsKLQotICAgIGlmKCAhY2hlY2twb2ludF9kYXRhLm1fZmlsZV9uYW1lLmlzX2VtcHR5KCkgKSB7Ci0gICAgICAgIG91dHB1dCA8PCAnXG4nOwotICAgICAgICBwcmludF9wcmVmaXgoIG91dHB1dCwgY2hlY2twb2ludF9kYXRhLm1fZmlsZV9uYW1lLCBjaGVja3BvaW50X2RhdGEubV9saW5lX251bSApOwotICAgICAgICBvdXRwdXQgPDwgImxhc3QgY2hlY2twb2ludCI7Ci0gICAgICAgIGlmKCAhY2hlY2twb2ludF9kYXRhLm1fbWVzc2FnZS5lbXB0eSgpICkKLSAgICAgICAgICAgIG91dHB1dCA8PCAiOiAiIDw8IGNoZWNrcG9pbnRfZGF0YS5tX21lc3NhZ2U7Ci0gICAgfQotICAgIAotICAgIG91dHB1dCA8PCBzdGQ6OmVuZGw7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLWNvbXBpbGVyX2xvZ19mb3JtYXR0ZXI6OmxvZ19lbnRyeV9zdGFydCggc3RkOjpvc3RyZWFtJiBvdXRwdXQsIGxvZ19lbnRyeV9kYXRhIGNvbnN0JiBlbnRyeV9kYXRhLCBsb2dfZW50cnlfdHlwZXMgbGV0ICkKLXsKLSAgICBzd2l0Y2goIGxldCApIHsKLSAgICAgICAgY2FzZSBORE5CT09TVF9VVExfRVRfSU5GTzoKLSAgICAgICAgICAgIHByaW50X3ByZWZpeCggb3V0cHV0LCBlbnRyeV9kYXRhLm1fZmlsZV9uYW1lLCBlbnRyeV9kYXRhLm1fbGluZV9udW0gKTsKLSAgICAgICAgICAgIG91dHB1dCA8PCAiaW5mbzogIjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE5ETkJPT1NUX1VUTF9FVF9NRVNTQUdFOgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTkROQk9PU1RfVVRMX0VUX1dBUk5JTkc6Ci0gICAgICAgICAgICBwcmludF9wcmVmaXgoIG91dHB1dCwgZW50cnlfZGF0YS5tX2ZpbGVfbmFtZSwgZW50cnlfZGF0YS5tX2xpbmVfbnVtICk7Ci0gICAgICAgICAgICBvdXRwdXQgPDwgIndhcm5pbmcgaW4gXCIiIDw8IHRlc3RfcGhhc2VfaWRlbnRpZmllcigpIDw8ICJcIjogIjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE5ETkJPT1NUX1VUTF9FVF9FUlJPUjoKLSAgICAgICAgICAgIHByaW50X3ByZWZpeCggb3V0cHV0LCBlbnRyeV9kYXRhLm1fZmlsZV9uYW1lLCBlbnRyeV9kYXRhLm1fbGluZV9udW0gKTsKLSAgICAgICAgICAgIG91dHB1dCA8PCAiZXJyb3IgaW4gXCIiIDw8IHRlc3RfcGhhc2VfaWRlbnRpZmllcigpIDw8ICJcIjogIjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE5ETkJPT1NUX1VUTF9FVF9GQVRBTF9FUlJPUjoKLSAgICAgICAgICAgIHByaW50X3ByZWZpeCggb3V0cHV0LCBlbnRyeV9kYXRhLm1fZmlsZV9uYW1lLCBlbnRyeV9kYXRhLm1fbGluZV9udW0gKTsKLSAgICAgICAgICAgIG91dHB1dCA8PCAiZmF0YWwgZXJyb3IgaW4gXCIiIDw8IHRlc3RfcGhhc2VfaWRlbnRpZmllcigpIDw8ICJcIjogIjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH0KLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotY29tcGlsZXJfbG9nX2Zvcm1hdHRlcjo6bG9nX2VudHJ5X3ZhbHVlKCBzdGQ6Om9zdHJlYW0mIG91dHB1dCwgY29uc3Rfc3RyaW5nIHZhbHVlICkKLXsKLSAgICBvdXRwdXQgPDwgdmFsdWU7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLWNvbXBpbGVyX2xvZ19mb3JtYXR0ZXI6OmxvZ19lbnRyeV92YWx1ZSggc3RkOjpvc3RyZWFtJiBvdXRwdXQsIGxhenlfb3N0cmVhbSBjb25zdCYgdmFsdWUgKQotewotICAgIG91dHB1dCA8PCB2YWx1ZTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotY29tcGlsZXJfbG9nX2Zvcm1hdHRlcjo6bG9nX2VudHJ5X2ZpbmlzaCggc3RkOjpvc3RyZWFtJiBvdXRwdXQgKQotewotICAgIG91dHB1dCA8PCBzdGQ6OmVuZGw7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLWNvbXBpbGVyX2xvZ19mb3JtYXR0ZXI6OnByaW50X3ByZWZpeCggc3RkOjpvc3RyZWFtJiBvdXRwdXQsIGNvbnN0X3N0cmluZyBmaWxlLCBzdGQ6OnNpemVfdCBsaW5lICkKLXsKLSNpZmRlZiBfX0FQUExFX0NDX18KLSAgICAvLyBYY29kZS1jb21wYXRpYmxlIGxvZ2dpbmcgZm9ybWF0LCBpZGVhIGJ5IFJpY2hhcmQgRGluZ3dhbGwgYXQgCi0gICAgLy8gPGh0dHA6Ly9yaWNoYXJkZGluZ3dhbGwubmFtZS8yMDA4LzA2LzAxL3VzaW5nLXRoZS1ib29zdC11bml0LXRlc3QtZnJhbWV3b3JrLXdpdGgteGNvZGUtMy8+LiAKLSAgICBvdXRwdXQgPDwgZmlsZSA8PCAnOicgPDwgbGluZSA8PCAiOiAiOwotI2Vsc2UKLSAgICBvdXRwdXQgPDwgZmlsZSA8PCAnKCcgPDwgbGluZSA8PCAiKTogIjsKLSNlbmRpZgotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSBvdXRwdXQKLQotfSAvLyBuYW1lc3BhY2UgdW5pdF90ZXN0Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9DT01QSUxFUl9MT0dfRk9STUFUVEVSX0lQUF8wMjAxMDVHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL2NwcF9tYWluLmlwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL2NwcF9tYWluLmlwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzM3YTc4MS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC9jcHBfbWFpbi5pcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzkgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwMS0yMDA4LgotLy8gIChDKSBDb3B5cmlnaHQgQmVtYW4gRGF3ZXMgMTk5NS0yMDAxLgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDQ5MzEyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBtYWluIGZ1bmN0aW9uIGltcGxlbWVudGF0aW9uIGZvciBQcm9ncmFtIEV4ZWN1dG9uIE1vbml0b3IKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfQ1BQX01BSU5fSVBQXzAxMjIwNUdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX0NQUF9NQUlOX0lQUF8wMTIyMDVHRVIKLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZXhlY3V0aW9uX21vbml0b3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9iYXNpY19jc3RyaW5nL2lvLmhwcD4KLQotLy8gQm9vc3QKLSNpbmNsdWRlIDxuZG5ib29zdC9jc3RkbGliLmhwcD4gICAgLy8gZm9yIGV4aXQgY29kZXMKLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPiAgICAgLy8gZm9yIHdvcmthcm91bmRzCi0KLS8vIFNUTAotI2luY2x1ZGUgPGlvc3RyZWFtPgotI2luY2x1ZGUgPGNzdGRsaWI+ICAgICAgLy8gc3RkOjpnZXRlbnYKLSNpbmNsdWRlIDxjc3RyaW5nPiAgICAgIC8vIHN0ZDo6c3RyZXJyb3IKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2lmZGVmIE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFCi1uYW1lc3BhY2Ugc3RkIHsgdXNpbmcgOjpnZXRlbnY7IHVzaW5nIDo6c3RyZXJyb3I7IH0KLSNlbmRpZgotCi1uYW1lc3BhY2UgewotCi1zdHJ1Y3QgY3BwX21haW5fY2FsbGVyIHsKLSAgICBjcHBfbWFpbl9jYWxsZXIoIGludCAoKmNwcF9tYWluX2Z1bmMpKCBpbnQgYXJnYywgY2hhciogYXJndltdICksIGludCBhcmdjLCBjaGFyKiogYXJndiApIAotICAgIDogbV9jcHBfbWFpbl9mdW5jKCBjcHBfbWFpbl9mdW5jICkKLSAgICAsIG1fYXJnYyggYXJnYyApCi0gICAgLCBtX2FyZ3YoIGFyZ3YgKSB7fQotICAgIAotICAgIGludCBvcGVyYXRvcigpKCkgeyByZXR1cm4gKCptX2NwcF9tYWluX2Z1bmMpKCBtX2FyZ2MsIG1fYXJndiApOyB9Ci0gIAotcHJpdmF0ZToKLSAgICAvLyBEYXRhIG1lbWJlcnMgICAgCi0gICAgaW50ICgqbV9jcHBfbWFpbl9mdW5jKSggaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSApOwotICAgIGludCAgICAgIG1fYXJnYzsKLSAgICBjaGFyKiogICBtX2FyZ3Y7Ci19OwotCi19IC8vIGxvY2FsIG5hbWVzcGFjZQotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgcHJnX2V4ZWNfbW9uaXRvcl9tYWluICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLWludCBORE5CT09TVF9URVNUX0RFQ0wKLXByZ19leGVjX21vbml0b3JfbWFpbiggaW50ICgqY3BwX21haW4pKCBpbnQgYXJnYywgY2hhciogYXJndltdICksIGludCBhcmdjLCBjaGFyKiBhcmd2W10gKQotewotICAgIGludCByZXN1bHQgPSAwOwotCi0gICAgdHJ5IHsKLSAgICAgICAgbmRuYm9vc3Q6OnVuaXRfdGVzdDo6Y29uc3Rfc3RyaW5nIHAoIHN0ZDo6Z2V0ZW52KCAiTkROQk9PU1RfVEVTVF9DQVRDSF9TWVNURU1fRVJST1JTIiApICk7Ci0gICAgICAgIDo6bmRuYm9vc3Q6OmV4ZWN1dGlvbl9tb25pdG9yIGV4X21vbjsKLQotICAgICAgICBleF9tb24ucF9jYXRjaF9zeXN0ZW1fZXJyb3JzLnZhbHVlID0gcCAhPSAibm8iOwotICAgICAgICAKLSAgICAgICAgcmVzdWx0ID0gZXhfbW9uLmV4ZWN1dGUoIAotICAgICAgICAgICAgOjpuZG5ib29zdDo6dW5pdF90ZXN0OjpjYWxsYmFjazA8aW50PiggY3BwX21haW5fY2FsbGVyKCBjcHBfbWFpbiwgYXJnYywgYXJndiApICkgKTsKLSAgICAgICAgCi0gICAgICAgIGlmKCByZXN1bHQgPT0gMCApCi0gICAgICAgICAgICByZXN1bHQgPSA6Om5kbmJvb3N0OjpleGl0X3N1Y2Nlc3M7Ci0gICAgICAgIGVsc2UgaWYoIHJlc3VsdCAhPSA6Om5kbmJvb3N0OjpleGl0X3N1Y2Nlc3MgKSB7Ci0gICAgICAgICAgICBzdGQ6OmNvdXQgPDwgIlxuKioqKiBlcnJvciByZXR1cm4gY29kZTogIiA8PCByZXN1bHQgPDwgc3RkOjplbmRsOwotICAgICAgICAgICAgcmVzdWx0ID0gOjpuZG5ib29zdDo6ZXhpdF9mYWlsdXJlOwotICAgICAgICB9Ci0gICAgfQotICAgIGNhdGNoKCA6Om5kbmJvb3N0OjpleGVjdXRpb25fZXhjZXB0aW9uIGNvbnN0JiBleGV4ICkgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIlxuKioqKiBleGNlcHRpb24oIiA8PCBleGV4LmNvZGUoKSA8PCAiKTogIiA8PCBleGV4LndoYXQoKSA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHJlc3VsdCA9IDo6bmRuYm9vc3Q6OmV4aXRfZXhjZXB0aW9uX2ZhaWx1cmU7Ci0gICAgfQotICAgIGNhdGNoKCA6Om5kbmJvb3N0OjpzeXN0ZW1fZXJyb3IgY29uc3QmIGV4ICkgewotICAgICAgICBzdGQ6OmNvdXQgPDwgIlxuKioqKiBmYWlsZWQgdG8gaW5pdGlhbGl6ZSBleGVjdXRpb24gbW9uaXRvci4iCi0gICAgICAgICAgICAgICAgICA8PCAiXG4qKioqIGV4cHJlc3Npb24gYXQgZmF1bHQ6ICIgPDwgZXgucF9mYWlsZWRfZXhwIAotICAgICAgICAgICAgICAgICAgPDwgIlxuKioqKiBlcnJvcigiIDw8IGV4LnBfZXJybm8gPDwgIik6ICIgPDwgc3RkOjpzdHJlcnJvciggZXgucF9lcnJubyApIDw8IHN0ZDo6ZW5kbDsKLSAgICAgICAgcmVzdWx0ID0gOjpuZG5ib29zdDo6ZXhpdF9leGNlcHRpb25fZmFpbHVyZTsKLSAgICB9Ci0KLSAgICBpZiggcmVzdWx0ICE9IDo6bmRuYm9vc3Q6OmV4aXRfc3VjY2VzcyApIHsKLSAgICAgICAgc3RkOjpjZXJyIDw8ICIqKioqKioqKiBlcnJvcnMgZGV0ZWN0ZWQ7IHNlZSBzdGFuZGFyZCBvdXRwdXQgZm9yIGRldGFpbHMgKioqKioqKioiIDw8IHN0ZDo6ZW5kbDsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIC8vICBTb21lIHByZWZlciBhIGNvbmZpcm1pbmcgbWVzc2FnZSB3aGVuIGFsbCBpcyB3ZWxsLCB3aGlsZSBvdGhlcnMgZG9uJ3QKLSAgICAgICAgLy8gIGxpa2UgdGhlIGNsdXR0ZXIuICBVc2UgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gYXZvaWQgY29tbWFuZAotICAgICAgICAvLyAgbGluZSBhcmd1bWVudCBtb2RpZmljYXRpb25zOyBmb3IgdXNlIGluIHByb2R1Y3Rpb24gcHJvZ3JhbXMKLSAgICAgICAgLy8gIHRoYXQncyBhIG5vLW5vIGluIHNvbWUgb3JnYW5pemF0aW9ucy4KLSAgICAgICAgOjpuZG5ib29zdDo6dW5pdF90ZXN0Ojpjb25zdF9zdHJpbmcgcCggc3RkOjpnZXRlbnYoICJORE5CT09TVF9QUkdfTU9OX0NPTkZJUk0iICkgKTsKLSAgICAgICAgaWYoIHAgIT0gIm5vIiApIHsgCi0gICAgICAgICAgICBzdGQ6OmNlcnIgPDwgc3RkOjpmbHVzaCA8PCAibm8gZXJyb3JzIGRldGVjdGVkIiA8PCBzdGQ6OmVuZGw7IAotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1RFU1RfRFlOX0xJTkspICYmICFkZWZpbmVkKE5ETkJPT1NUX1RFU1RfTk9fTUFJTikKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICBtYWluIGZ1bmN0aW9uIGZvciB0ZXN0cyB1c2luZyBsaWIgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1pbnQgY3BwX21haW4oIGludCBhcmdjLCBjaGFyKiBhcmd2W10gKTsgIC8vIHByb3RvdHlwZSBmb3IgdXNlcidzIGNwcF9tYWluKCkKLQotaW50IE5ETkJPT1NUX1RFU1RfQ0FMTF9ERUNMCi1tYWluKCBpbnQgYXJnYywgY2hhciogYXJndltdICkKLXsKLSAgICByZXR1cm4gOjpuZG5ib29zdDo6cHJnX2V4ZWNfbW9uaXRvcl9tYWluKCAmY3BwX21haW4sIGFyZ2MsIGFyZ3YgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2VuZGlmIC8vICFORE5CT09TVF9URVNUX0RZTl9MSU5LICYmICFORE5CT09TVF9URVNUX05PX01BSU4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX0NQUF9NQUlOX0lQUF8wMTIyMDVHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL2RlYnVnLmlwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL2RlYnVnLmlwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODIzMzE0OS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC9kZWJ1Zy5pcHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NzAgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNi0yMDA4LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZQotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTc5OTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGRlYnVnIGludGVyZmFjZXMgaW1wbGVtZW50YXRpb24KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfREVCVUdfQVBJX0lQUF8xMTIwMDZHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9ERUJVR19BUElfSVBQXzExMjAwNkdFUgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9nbG9iYWxfdHlwZWRlZi5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RlYnVnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RlYnVnX2NvbmZpZy5ocHA+Ci0KLS8vIEltcGxlbWVudGF0aW9uIG9uIFdpbmRvd3MKLSNpZiBkZWZpbmVkKF9XSU4zMikgJiYgIWRlZmluZWQoVU5ERVJfQ0UpICYmICFkZWZpbmVkKE5ETkJPT1NUX0RJU0FCTEVfV0lOMzIpIC8vICoqKioqKiogV0lOMzIKLQotIyAgZGVmaW5lIE5ETkJPT1NUX1dJTjMyX0JBU0VEX0RFQlVHCi0KLS8vIFNZU1RFTSBBUEkKLSMgIGluY2x1ZGUgPHdpbmRvd3MuaD4KLSMgIGluY2x1ZGUgPHdpbnJlZy5oPgotIyAgaW5jbHVkZSA8Y3N0ZGlvPgotIyAgaW5jbHVkZSA8Y3N0cmluZz4KLQotIyAgaWYgIWRlZmluZWQoTkRFQlVHKSAmJiBkZWZpbmVkKF9NU0NfVkVSKQotIyAgICBkZWZpbmUgTkROQk9PU1RfTVNfQ1JUX0JBU0VEX0RFQlVHCi0jICAgIGluY2x1ZGUgPGNydGRiZy5oPgotIyAgZW5kaWYKLQotCi0jICBpZiBORE5CT09TVF9XT1JLQVJPVU5EKCBORE5CT09TVF9NU1ZDLCA8MTMwMCkKLSMgICAgZGVmaW5lIHNucHJpbnRmIF9zbnByaW50ZgotIyAgZW5kaWYKLQotIyAgaWZkZWYgTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UKLW5hbWVzcGFjZSBzdGQgeyB1c2luZyA6Om1lbXNldDsgdXNpbmcgOjpzcHJpbnRmOyB9Ci0jICBlbmRpZgotCi0jZWxpZiBkZWZpbmVkKHVuaXgpIHx8IGRlZmluZWQoX191bml4KSAvLyAqKioqKioqKioqKioqKioqKioqKiogVU5JWAotCi0jICBkZWZpbmUgTkROQk9PU1RfVU5JWF9CQVNFRF9ERUJVRwotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9jbGFzc19wcm9wZXJ0aWVzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2FsZ29yaXRobS5ocHA+Ci0KLS8vIFNUTAotI2luY2x1ZGUgPGNzdHJpbmc+ICAvLyBzdGQ6Om1lbWNweQotI2luY2x1ZGUgPG1hcD4KLSNpbmNsdWRlIDxjc3RkaW8+Ci0jaW5jbHVkZSA8c3RkYXJnLmg+IC8vICEhID8/IGNzdGRhcmcKLQotLy8gU1lTVEVNIEFQSQotIyAgaW5jbHVkZSA8dW5pc3RkLmg+Ci0jICBpbmNsdWRlIDxzaWduYWwuaD4KLSMgIGluY2x1ZGUgPGZjbnRsLmg+Ci0KLSMgIGluY2x1ZGUgPHN5cy90eXBlcy5oPgotIyAgaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSMgIGluY2x1ZGUgPHN5cy93YWl0Lmg+Ci0jICBpbmNsdWRlIDxzeXMvdGltZS5oPgotIyAgaW5jbHVkZSA8c3RkaW8uaD4KLSMgIGluY2x1ZGUgPHN0ZGxpYi5oPgotCi0jICBpZiBkZWZpbmVkKHN1bikgfHwgZGVmaW5lZChfX3N1bikKLQotIyAgICBkZWZpbmUgTkROQk9PU1RfU1VOX0JBU0VEX0RFQlVHCi0KLSMgICAgaWZuZGVmIE5ETkJPT1NUX1RFU1RfREJHX0xJU1QKLSMgICAgICBkZWZpbmUgTkROQk9PU1RfVEVTVF9EQkdfTElTVCBkYng7Z2RiCi0jICAgIGVuZGlmCi0KLSMgICAgZGVmaW5lIE5ETkJPT1NUX1RFU1RfQ05MX0RCRyAgZGJ4Ci0jICAgIGRlZmluZSBORE5CT09TVF9URVNUX0dVSV9EQkcgIGRieC1kZGQKLQotIyAgICBpbmNsdWRlIDxwcm9jZnMuaD4KLQotIyAgZWxpZiBkZWZpbmVkKGxpbnV4KSB8fCBkZWZpbmVkKF9fbGludXgpCi0KLSMgICAgZGVmaW5lIE5ETkJPT1NUX0xJTlVYX0JBU0VEX0RFQlVHCi0KLSMgICAgaW5jbHVkZSA8c3lzL3B0cmFjZS5oPgotCi0jICAgIGlmbmRlZiBORE5CT09TVF9URVNUX1NUQVRfTElORV9NQVgKLSMgICAgICBkZWZpbmUgTkROQk9PU1RfVEVTVF9TVEFUX0xJTkVfTUFYIDUwMAotIyAgICBlbmRpZgotCi0jICAgIGlmbmRlZiBORE5CT09TVF9URVNUX0RCR19MSVNUCi0jICAgICAgZGVmaW5lIE5ETkJPT1NUX1RFU1RfREJHX0xJU1QgZ2RiCi0jICAgIGVuZGlmCi0KLSMgICAgZGVmaW5lIE5ETkJPT1NUX1RFU1RfQ05MX0RCRyAgZ2RiCi0jICAgIGRlZmluZSBORE5CT09TVF9URVNUX0dVSV9EQkcgIGdkYi14dGVybQotCi0jICBlbmRpZgotCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIGRlYnVnIHsKLQotdXNpbmcgdW5pdF90ZXN0Ojpjb25zdF9zdHJpbmc7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICBkZWJ1Zzo6aW5mb190ICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotbmFtZXNwYWNlIHsKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfV0lOMzJfQkFTRURfREVCVUcpIC8vICoqKioqKioqKioqKioqKioqKioqKioqIFdJTjMyCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgdm9pZAotZHluX3N5bWJvbCggVCYgcmVzLCBjaGFyIGNvbnN0KiBtb2R1bGVfbmFtZSwgY2hhciBjb25zdCogc3ltYm9sX25hbWUgKQotewotICAgIEhNT0RVTEUgbSA9IDo6R2V0TW9kdWxlSGFuZGxlQSggbW9kdWxlX25hbWUgKTsKLQotICAgIGlmKCAhbSApCi0gICAgICAgIG0gPSA6OkxvYWRMaWJyYXJ5QSggbW9kdWxlX25hbWUgKTsKLQotICAgIHJlcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8VD4oIDo6R2V0UHJvY0FkZHJlc3MoIG0sIHN5bWJvbF9uYW1lICkgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotc3RhdGljIHN0cnVjdCBpbmZvX3QgewotICAgIHR5cGVkZWYgQk9PTCAoV0lOQVBJKiBJc0RlYnVnZ2VyUHJlc2VudFQpKCk7Ci0gICAgdHlwZWRlZiBMT05HIChXSU5BUEkqIFJlZ1F1ZXJ5VmFsdWVFeFQpKCBIS0VZLCBjaGFyIGNvbnN0KiAvKkxQVFNUUiovLCBMUERXT1JELCBMUERXT1JELCBMUEJZVEUsIExQRFdPUkQgKTsKLSAgICB0eXBlZGVmIExPTkcgKFdJTkFQSSogUmVnT3BlbktleVQpKCBIS0VZLCBjaGFyIGNvbnN0KiAvKkxQQ1RTVFIqLywgUEhLRVkgKTsKLSAgICB0eXBlZGVmIExPTkcgKFdJTkFQSSogUmVnQ2xvc2VLZXlUKSggSEtFWSApOwotCi0gICAgaW5mb190KCk7Ci0KLSAgICBJc0RlYnVnZ2VyUHJlc2VudFQgIG1faXNfZGVidWdnZXJfcHJlc2VudDsKLSAgICBSZWdPcGVuS2V5VCAgICAgICAgIG1fcmVnX29wZW5fa2V5OwotICAgIFJlZ1F1ZXJ5VmFsdWVFeFQgICAgbV9yZWdfcXVlcnlfdmFsdWU7Ci0gICAgUmVnQ2xvc2VLZXlUICAgICAgICBtX3JlZ19jbG9zZV9rZXk7Ci0KLX0gc19pbmZvOwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1pbmZvX3Q6OmluZm9fdCgpCi17Ci0gICAgZHluX3N5bWJvbCggbV9pc19kZWJ1Z2dlcl9wcmVzZW50LCAia2VybmVsMzIiLCAiSXNEZWJ1Z2dlclByZXNlbnQiICk7Ci0gICAgZHluX3N5bWJvbCggbV9yZWdfb3Blbl9rZXksICJhZHZhcGkzMiIsICJSZWdPcGVuS2V5QSIgKTsKLSAgICBkeW5fc3ltYm9sKCBtX3JlZ19xdWVyeV92YWx1ZSwgImFkdmFwaTMyIiwgIlJlZ1F1ZXJ5VmFsdWVFeEEiICk7Ci0gICAgZHluX3N5bWJvbCggbV9yZWdfY2xvc2Vfa2V5LCAiYWR2YXBpMzIiLCAiUmVnQ2xvc2VLZXkiICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfVU5JWF9CQVNFRF9ERUJVRykKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICAgIGZkX2hvbGRlciAgICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1zdHJ1Y3QgZmRfaG9sZGVyIHsKLSAgICBleHBsaWNpdCBmZF9ob2xkZXIoIGludCBmZCApIDogbV9mZCggZmQgKSB7fQotICAgIH5mZF9ob2xkZXIoKQotICAgIHsKLSAgICAgICAgaWYoIG1fZmQgIT0gLTEgKQotICAgICAgICAgICAgOjpjbG9zZSggbV9mZCApOwotICAgIH0KLQotICAgIG9wZXJhdG9yIGludCgpIHsgcmV0dXJuIG1fZmQ7IH0KLQotcHJpdmF0ZToKLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICBpbnQgbV9mZDsKLX07Ci0KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICBwcm9jZXNzX2luZm8gICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1zdHJ1Y3QgcHJvY2Vzc19pbmZvIHsKLSAgICAvLyBDb25zdHJ1Y3RvcgotICAgIGV4cGxpY2l0ICAgICAgICBwcm9jZXNzX2luZm8oIGludCBwaWQgKTsKLQotICAgIC8vIGFjY2VzcyBtZXRob2RzCi0gICAgaW50ICAgICAgICAgICAgIHBhcmVudF9waWQoKSBjb25zdCAgeyByZXR1cm4gbV9wYXJlbnRfcGlkOyB9Ci0gICAgY29uc3Rfc3RyaW5nICAgIGJpbmFyeV9uYW1lKCkgY29uc3QgeyByZXR1cm4gbV9iaW5hcnlfbmFtZTsgfQotICAgIGNvbnN0X3N0cmluZyAgICBiaW5hcnlfcGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fYmluYXJ5X3BhdGg7IH0KLQotcHJpdmF0ZToKLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICBpbnQgICAgICAgICAgICAgbV9wYXJlbnRfcGlkOwotICAgIGNvbnN0X3N0cmluZyAgICBtX2JpbmFyeV9uYW1lOwotICAgIGNvbnN0X3N0cmluZyAgICBtX2JpbmFyeV9wYXRoOwotCi0jaWYgZGVmaW5lZChORE5CT09TVF9TVU5fQkFTRURfREVCVUcpCi0gICAgc3RydWN0IHBzaW5mbyAgIG1fcHNpOwotI2VsaWYgZGVmaW5lZChORE5CT09TVF9MSU5VWF9CQVNFRF9ERUJVRykKLSAgICBjaGFyICAgICAgICAgICAgbV9zdGF0X2xpbmVbTkROQk9PU1RfVEVTVF9TVEFUX0xJTkVfTUFYKzFdOwotI2VuZGlmCi0gICAgY2hhciAgICAgICAgICAgIG1fYmluYXJ5X3BhdGhfYnVmZls1MDArMV07IC8vICEhID8/Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1wcm9jZXNzX2luZm86OnByb2Nlc3NfaW5mbyggaW50IHBpZCApCi06IG1fcGFyZW50X3BpZCggMCApCi17Ci0jaWYgZGVmaW5lZChORE5CT09TVF9TVU5fQkFTRURfREVCVUcpCi0gICAgY2hhciBmbmFtZV9idWZmWzMwXTsKLQotICAgIDo6c25wcmludGYoIGZuYW1lX2J1ZmYsIHNpemVvZihmbmFtZV9idWZmKSwgIi9wcm9jLyVkL3BzaW5mbyIsIHBpZCApOwotCi0gICAgZmRfaG9sZGVyIHBzaW5mb19mZCggOjpvcGVuKCBmbmFtZV9idWZmLCBPX1JET05MWSApICk7Ci0KLSAgICBpZiggcHNpbmZvX2ZkID09IC0xICkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYoIDo6cmVhZCggcHNpbmZvX2ZkLCAmbV9wc2ksIHNpemVvZihtX3BzaSkgKSA9PSAtMSApCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fcGFyZW50X3BpZCA9IG1fcHNpLnByX3BwaWQ7Ci0KLSAgICBtX2JpbmFyeV9uYW1lLmFzc2lnbiggbV9wc2kucHJfZm5hbWUgKTsKLQotICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLy8KLSAgICAKLSAgICA6OnNucHJpbnRmKCBmbmFtZV9idWZmLCBzaXplb2YoZm5hbWVfYnVmZiksICIvcHJvYy8lZC9hcyIsIHBpZCApOwotCi0gICAgZmRfaG9sZGVyIGFzX2ZkKCA6Om9wZW4oIGZuYW1lX2J1ZmYsIE9fUkRPTkxZICkgKTsKLSAgICB1aW50cHRyX3QgICBiaW5hcnlfbmFtZV9wb3M7Ci0gIAotICAgIC8vICEhID8/IGNvdWxkIHdlIGF2b2lkIHJlYWRpbmcgd2hvbGUgbV9iaW5hcnlfcGF0aF9idWZmPwotICAgIGlmKCBhc19mZCA9PSAtMSB8fAotICAgICAgICA6OmxzZWVrKCBhc19mZCwgbV9wc2kucHJfYXJndiwgU0VFS19TRVQgKSA9PSAtMSB8fAotICAgICAgICA6OnJlYWQgKCBhc19mZCwgJmJpbmFyeV9uYW1lX3Bvcywgc2l6ZW9mKGJpbmFyeV9uYW1lX3BvcykgKSA9PSAtMSB8fAotICAgICAgICA6OmxzZWVrKCBhc19mZCwgYmluYXJ5X25hbWVfcG9zLCBTRUVLX1NFVCApID09IC0xIHx8Ci0gICAgICAgIDo6cmVhZCAoIGFzX2ZkLCBtX2JpbmFyeV9wYXRoX2J1ZmYsIHNpemVvZihtX2JpbmFyeV9wYXRoX2J1ZmYpICkgPT0gLTEgKQotICAgICAgICByZXR1cm47Ci0gICAgICAgIAotICAgIG1fYmluYXJ5X3BhdGguYXNzaWduKCBtX2JpbmFyeV9wYXRoX2J1ZmYgKTsKLSAgICAgICAgCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX0xJTlVYX0JBU0VEX0RFQlVHKQotICAgIGNoYXIgZm5hbWVfYnVmZlszMF07Ci0KLSAgICA6OnNucHJpbnRmKCBmbmFtZV9idWZmLCBzaXplb2YoZm5hbWVfYnVmZiksICIvcHJvYy8lZC9zdGF0IiwgcGlkICk7Ci0KLSAgICBmZF9ob2xkZXIgcHNpbmZvX2ZkKCA6Om9wZW4oIGZuYW1lX2J1ZmYsIE9fUkRPTkxZICkgKTsKLQotICAgIGlmKCBwc2luZm9fZmQgPT0gLTEgKQotICAgICAgICByZXR1cm47Ci0KLSAgICBzc2l6ZV90IG51bV9yZWFkID0gOjpyZWFkKCBwc2luZm9fZmQsIG1fc3RhdF9saW5lLCBzaXplb2YobV9zdGF0X2xpbmUpLTEgKTsKLSAgICBpZiggbnVtX3JlYWQgPT0gLTEgKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3N0YXRfbGluZVtudW1fcmVhZF0gPSAwOwotCi0gICAgY2hhciBjb25zdCogbmFtZV9iZWcgPSBtX3N0YXRfbGluZTsKLSAgICB3aGlsZSggKm5hbWVfYmVnICYmICpuYW1lX2JlZyAhPSAnKCcgKQotICAgICAgICArK25hbWVfYmVnOwotCi0gICAgY2hhciBjb25zdCogbmFtZV9lbmQgPSBuYW1lX2JlZysxOwotICAgIHdoaWxlKCAqbmFtZV9lbmQgJiYgKm5hbWVfZW5kICE9ICcpJyApCi0gICAgICAgICsrbmFtZV9lbmQ7Ci0KLSAgICBzdGQ6OnNzY2FuZiggbmFtZV9lbmQrMSwgIiUqcyVkIiwgJm1fcGFyZW50X3BpZCApOwotCi0gICAgbV9iaW5hcnlfbmFtZS5hc3NpZ24oIG5hbWVfYmVnKzEsIG5hbWVfZW5kICk7Ci0KLSAgICA6OnNucHJpbnRmKCBmbmFtZV9idWZmLCBzaXplb2YoZm5hbWVfYnVmZiksICIvcHJvYy8lZC9leGUiLCBwaWQgKTsKLSAgICBudW1fcmVhZCA9IDo6cmVhZGxpbmsoIGZuYW1lX2J1ZmYsIG1fYmluYXJ5X3BhdGhfYnVmZiwgc2l6ZW9mKG1fYmluYXJ5X3BhdGhfYnVmZiktMSApOwotCi0gICAgaWYoIG51bV9yZWFkID09IC0xICkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9iaW5hcnlfcGF0aF9idWZmW251bV9yZWFkXSA9IDA7Ci0gICAgbV9iaW5hcnlfcGF0aC5hc3NpZ24oIG1fYmluYXJ5X3BhdGhfYnVmZiwgbnVtX3JlYWQgKTsKLSNlbmRpZgotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgcHJlcGFyZV93aW5kb3dfdGl0bGUgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXN0YXRpYyBjaGFyKgotcHJlcGFyZV93aW5kb3dfdGl0bGUoIGRiZ19zdGFydHVwX2luZm8gY29uc3QmIGRzaSApCi17Ci0gICAgdHlwZWRlZiB1bml0X3Rlc3Q6OmNvbnN0X3N0cmluZyBzdHJfdDsKLQotICAgIHN0YXRpYyBjaGFyIHRpdGxlX3N0cls1MF07Ci0KLSAgICBzdHJfdCBwYXRoX3NlcCggIlxcLyIgKTsKLQotICAgIHN0cl90OjppdGVyYXRvciAgaXQgPSB1bml0X3Rlc3Q6OmZpbmRfbGFzdF9vZiggZHNpLmJpbmFyeV9wYXRoLmJlZ2luKCksIGRzaS5iaW5hcnlfcGF0aC5lbmQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhfc2VwLmJlZ2luKCksIHBhdGhfc2VwLmVuZCgpICk7Ci0KLSAgICBpZiggaXQgPT0gZHNpLmJpbmFyeV9wYXRoLmVuZCgpICkKLSAgICAgICAgaXQgPSBkc2kuYmluYXJ5X3BhdGguYmVnaW4oKTsKLSAgICBlbHNlCi0gICAgICAgICsraXQ7Ci0KLSAgICA6OnNucHJpbnRmKCB0aXRsZV9zdHIsIHNpemVvZih0aXRsZV9zdHIpLCAiJSpzICVsZCIsIChpbnQpKGRzaS5iaW5hcnlfcGF0aC5lbmQoKS1pdCksIGl0LCBkc2kucGlkICk7Ci0KLSAgICByZXR1cm4gdGl0bGVfc3RyOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgICBzYXZlX2V4ZWNscCAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXR5cGVkZWYgdW5pdF90ZXN0OjpiYXNpY19jc3RyaW5nPGNoYXI+IG1idWZmZXI7Ci0KLWlubGluZSBjaGFyKgotY29weV9hcmcoIG1idWZmZXImIGRlc3QsIGNvbnN0X3N0cmluZyBhcmcgKQotewotICAgIGlmKCBkZXN0LnNpemUoKSA8IGFyZy5zaXplKCkrMSApCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgY2hhciogcmVzID0gZGVzdC5iZWdpbigpOwotCi0gICAgc3RkOjptZW1jcHkoIHJlcywgYXJnLmJlZ2luKCksIGFyZy5zaXplKCkrMSApOwotCi0gICAgZGVzdC50cmltX2xlZnQoIGFyZy5zaXplKCkrMSApOwotCi0gICAgcmV0dXJuIHJlczsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotYm9vbAotc2FmZV9leGVjbHAoIGNoYXIgY29uc3QqIGZpbGUsIC4uLiApCi17Ci0gICAgc3RhdGljIGNoYXIqIGFyZ3ZfYnVmZlsyMDBdOwotCi0gICAgdmFfbGlzdCAgICAgYXJnczsKLSAgICBjaGFyIGNvbnN0KiBhcmc7Ci0KLSAgICAvLyBmaXJzdCBjYWxjdWxhdGUgYWN0dWFsIG51bWJlciBvZiBhcmd1bWVudHMKLSAgICBpbnQgICAgICAgICBudW1fYXJncyA9IDI7IC8vIGZpbGUgbmFtZSBhbmQgMCBhdCBsZWFzdAotCi0gICAgdmFfc3RhcnQoIGFyZ3MsIGZpbGUgKTsKLSAgICB3aGlsZSggISEoYXJnID0gdmFfYXJnKCBhcmdzLCBjaGFyIGNvbnN0KiApKSApCi0gICAgICAgIG51bV9hcmdzKys7Ci0gICAgdmFfZW5kKCBhcmdzICk7Ci0KLSAgICAvLyByZXNlcnZlIHNwYWNlIGZvciB0aGUgYXJndW1lbnQgcG9pbnRlcnMgYXJyYXkKLSAgICBjaGFyKiogICAgICBhcmd2X2l0ICA9IGFyZ3ZfYnVmZjsKLSAgICBtYnVmZmVyICAgICB3b3JrX2J1ZmYoIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGFyZ3ZfYnVmZiksIHNpemVvZihhcmd2X2J1ZmYpICk7Ci0gICAgd29ya19idWZmLnRyaW1fbGVmdCggbnVtX2FyZ3MgKiBzaXplb2YoY2hhciopICk7Ci0KLSAgICAvLyBjb3B5IGFsbCB0aGUgYXJndW1lbnQgdmFsdWVzIGludG8gbG9jYWwgc3RvcmFnZQotICAgIGlmKCAhKCphcmd2X2l0KysgPSBjb3B5X2FyZyggd29ya19idWZmLCBmaWxlICkpICkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcHJpbnRmKCAiISEgJXNcbiIsIGZpbGUgKTsKLQotICAgIHZhX3N0YXJ0KCBhcmdzLCBmaWxlICk7Ci0gICAgd2hpbGUoICEhKGFyZyA9IHZhX2FyZyggYXJncywgY2hhciBjb25zdCogKSkgKSB7Ci0gICAgICAgIHByaW50ZiggIiEhICVzXG4iLCBhcmcgKTsKLSAgICAgICAgaWYoICEoKmFyZ3ZfaXQrKyA9IGNvcHlfYXJnKCB3b3JrX2J1ZmYsIGFyZyApKSApCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHZhX2VuZCggYXJncyApOwotCi0gICAgKmFyZ3ZfaXQgPSAwOwotCi0gICAgcmV0dXJuIDo6ZXhlY3ZwKCBmaWxlLCBhcmd2X2J1ZmYgKSAhPSAtMTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgc3RhcnRfZGVidWdnZXJfaW5fZW1hY3MgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1zdGF0aWMgdm9pZAotc3RhcnRfZGVidWdnZXJfaW5fZW1hY3MoIGRiZ19zdGFydHVwX2luZm8gY29uc3QmIGRzaSwgY2hhciBjb25zdCogZW1hY3NfbmFtZSwgY2hhciBjb25zdCogZGJnX2NvbW1hbmQgKQotewotICAgIGNoYXIgY29uc3QqIHRpdGxlID0gcHJlcGFyZV93aW5kb3dfdGl0bGUoIGRzaSApOwotCi0gICAgaWYoICF0aXRsZSApCi0gICAgICAgIHJldHVybjsKLQotICAgIGRzaS5kaXNwbGF5LmlzX2VtcHR5KCkKLSAgICAgICAgPyBzYWZlX2V4ZWNscCggZW1hY3NfbmFtZSwgIi10aXRsZSIsIHRpdGxlLCAiLS1ldmFsIiwgZGJnX2NvbW1hbmQsIDAgKQotICAgICAgICA6IHNhZmVfZXhlY2xwKCBlbWFjc19uYW1lLCAiLXRpdGxlIiwgdGl0bGUsICItZGlzcGxheSIsIGRzaS5kaXNwbGF5LmJlZ2luKCksICItLWV2YWwiLCBkYmdfY29tbWFuZCwgMCApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgIGdkYiBzdGFydGVycyAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXN0YXRpYyBjaGFyIGNvbnN0KgotcHJlcGFyZV9nZGJfY21uZF9maWxlKCBkYmdfc3RhcnR1cF9pbmZvIGNvbnN0JiBkc2kgKQotewotICAgIC8vIHByZXBhcmUgcGlkIHZhbHVlCi0gICAgY2hhciBwaWRfYnVmZlsxNl07Ci0gICAgOjpzbnByaW50ZiggcGlkX2J1ZmYsIHNpemVvZihwaWRfYnVmZiksICIlbGQiLCBkc2kucGlkICk7Ci0gICAgdW5pdF90ZXN0Ojpjb25zdF9zdHJpbmcgcGlkX3N0ciggcGlkX2J1ZmYgKTsKLQotICAgIHN0YXRpYyBjaGFyIGNtZF9maWxlX25hbWVbXSA9ICIvdG1wL2J0bF9nZGJfY21kX1hYWFhYWCI7IC8vICEhID8/Ci0KLSAgICAvLyBwcmVwYXJlIGNvbW1hbmRzCi0gICAgZmRfaG9sZGVyIGNtZF9mZCggOjpta3N0ZW1wKCBjbWRfZmlsZV9uYW1lICkgKTsKLQotICAgIGlmKCBjbWRfZmQgPT0gLTEgKQotICAgICAgICByZXR1cm4gMDsKLQotI2RlZmluZSBXUklURV9TVFIoIHN0ciApICBpZiggOjp3cml0ZSggY21kX2ZkLCBzdHIuYmVnaW4oKSwgc3RyLnNpemUoKSApID09IC0xICkgcmV0dXJuIDA7Ci0jZGVmaW5lIFdSSVRFX0NTVFIoIHN0ciApIGlmKCA6OndyaXRlKCBjbWRfZmQsIHN0ciwgc2l6ZW9mKCBzdHIgKS0xICkgPT0gLTEgKSByZXR1cm4gMDsKLQotICAgIFdSSVRFX0NTVFIoICJmaWxlICIgKTsKLSAgICBXUklURV9TVFIoIGRzaS5iaW5hcnlfcGF0aCApOwotICAgIFdSSVRFX0NTVFIoICJcbmF0dGFjaCAiICk7Ci0gICAgV1JJVEVfU1RSKCBwaWRfc3RyICk7Ci0gICAgV1JJVEVfQ1NUUiggIlxuc2hlbGwgdW5saW5rICIgKTsKLSAgICBXUklURV9TVFIoIGRzaS5pbml0X2RvbmVfbG9jayApOwotICAgIFdSSVRFX0NTVFIoICJcbmNvbnQiICk7Ci0gICAgaWYoIGRzaS5icmVha19vcl9jb250aW51ZSApCi0gICAgICAgIFdSSVRFX0NTVFIoICJcbnVwIDQiICk7Ci0gICAgICAgICAgICAKLSAgICBXUklURV9DU1RSKCAiXG5lY2hvIFxcbiIgKTsgLy8gISEgPz8KLSAgICBXUklURV9DU1RSKCAiXG5saXN0IC0iICk7Ci0gICAgV1JJVEVfQ1NUUiggIlxubGlzdCIgKTsKLSAgICBXUklURV9DU1RSKCAiXG5zaGVsbCB1bmxpbmsgIiApOwotICAgIFdSSVRFX0NTVFIoIGNtZF9maWxlX25hbWUgKTsKLQotICAgIHJldHVybiBjbWRfZmlsZV9uYW1lOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1zdGF0aWMgdm9pZAotc3RhcnRfZ2RiX2luX2NvbnNvbGUoIGRiZ19zdGFydHVwX2luZm8gY29uc3QmIGRzaSApCi17Ci0gICAgY2hhciBjb25zdCogY21uZF9maWxlX25hbWUgPSBwcmVwYXJlX2dkYl9jbW5kX2ZpbGUoIGRzaSApOwotCi0gICAgaWYoICFjbW5kX2ZpbGVfbmFtZSApCi0gICAgICAgIHJldHVybjsKLQotICAgIHNhZmVfZXhlY2xwKCAiZ2RiIiwgIi1xIiwgIi14IiwgY21uZF9maWxlX25hbWUsIDAgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotc3RhdGljIHZvaWQKLXN0YXJ0X2dkYl9pbl94dGVybSggZGJnX3N0YXJ0dXBfaW5mbyBjb25zdCYgZHNpICkKLXsKLSAgICBjaGFyIGNvbnN0KiB0aXRsZSAgICAgICAgICAgPSBwcmVwYXJlX3dpbmRvd190aXRsZSggZHNpICk7Ci0gICAgY2hhciBjb25zdCogY21uZF9maWxlX25hbWUgID0gcHJlcGFyZV9nZGJfY21uZF9maWxlKCBkc2kgKTsKLQotICAgIGlmKCAhdGl0bGUgfHwgIWNtbmRfZmlsZV9uYW1lICkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgc2FmZV9leGVjbHAoICJ4dGVybSIsICItVCIsIHRpdGxlLCAiLWRpc3BsYXkiLCBkc2kuZGlzcGxheS5iZWdpbigpLAotICAgICAgICAgICAgICAgICAgICAiLWJnIiwgImJsYWNrIiwgIi1mZyIsICJ3aGl0ZSIsICItZ2VvbWV0cnkiLCAiODh4MzArMTArMTAiLCAiLWZuIiwgIjl4MTUiLCAiLWUiLAotICAgICAgICAgICAgICAgICAiZ2RiIiwgIi1xIiwgIi14IiwgY21uZF9maWxlX25hbWUsIDAgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotc3RhdGljIHZvaWQKLXN0YXJ0X2dkYl9pbl9lbWFjcyggZGJnX3N0YXJ0dXBfaW5mbyBjb25zdCYgZHNpICkKLXsKLSAgICBjaGFyIGNvbnN0KiBjbW5kX2ZpbGVfbmFtZSAgPSBwcmVwYXJlX2dkYl9jbW5kX2ZpbGUoIGRzaSApOwotICAgIGlmKCAhY21uZF9maWxlX25hbWUgKQotICAgICAgICByZXR1cm47Ci0KLSAgICBjaGFyIGRiZ19jbWRfYnVmZls1MDBdOyAvLyAhISA/PwotICAgIDo6c25wcmludGYoIGRiZ19jbWRfYnVmZiwgc2l6ZW9mKGRiZ19jbWRfYnVmZiksICIocHJvZ24gKGdkYiBcImdkYiAtcSAteCAlc1wiKSkiLCBjbW5kX2ZpbGVfbmFtZSApOwotCi0gICAgc3RhcnRfZGVidWdnZXJfaW5fZW1hY3MoIGRzaSwgImVtYWNzIiwgZGJnX2NtZF9idWZmICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXN0YXRpYyB2b2lkCi1zdGFydF9nZGJfaW5feGVtYWNzKCBkYmdfc3RhcnR1cF9pbmZvIGNvbnN0JiApCi17Ci0gICAgLy8gISEgPz8KLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICBkYnggc3RhcnRlcnMgICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1zdGF0aWMgY2hhciBjb25zdCoKLXByZXBhcmVfZGJ4X2NtZF9saW5lKCBkYmdfc3RhcnR1cF9pbmZvIGNvbnN0JiBkc2ksIGJvb2wgbGlzdF9zb3VyY2UgPSB0cnVlICkKLXsKLSAgICBzdGF0aWMgY2hhciBjbWRfbGluZV9idWZmWzUwMF07IC8vICEhID8/Ci0KLSAgICA6OnNucHJpbnRmKCBjbWRfbGluZV9idWZmLCBzaXplb2YoY21kX2xpbmVfYnVmZiksICJ1bmxpbmsgJXM7Y29udDslcyVzIiwgCi0gICAgICAgICAgICAgICAgICAgZHNpLmluaXRfZG9uZV9sb2NrLmJlZ2luKCksIAotICAgICAgICAgICAgICAgICAgIGRzaS5icmVha19vcl9jb250aW51ZSA/ICJ1cCAyOyI6ICIiLCAKLSAgICAgICAgICAgICAgICAgICBsaXN0X3NvdXJjZSA/ICJlY2hvIFwiIFwiO2xpc3QgLXczOyIgOiAiIiApOwotCi0gICAgcmV0dXJuIGNtZF9saW5lX2J1ZmY7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXN0YXRpYyB2b2lkCi1zdGFydF9kYnhfaW5fY29uc29sZSggZGJnX3N0YXJ0dXBfaW5mbyBjb25zdCYgZHNpICkKLXsKLSAgICBjaGFyIHBpZF9idWZmWzE2XTsKLSAgICA6OnNucHJpbnRmKCBwaWRfYnVmZiwgc2l6ZW9mKHBpZF9idWZmKSwgIiVsZCIsIGRzaS5waWQgKTsKLQotICAgIHNhZmVfZXhlY2xwKCAiZGJ4IiwgIi1xIiwgIi1jIiwgcHJlcGFyZV9kYnhfY21kX2xpbmUoIGRzaSApLCBkc2kuYmluYXJ5X3BhdGguYmVnaW4oKSwgcGlkX2J1ZmYsIDAgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotc3RhdGljIHZvaWQKLXN0YXJ0X2RieF9pbl94dGVybSggZGJnX3N0YXJ0dXBfaW5mbyBjb25zdCYgZHNpICkKLXsKLSAgICBjaGFyIGNvbnN0KiB0aXRsZSA9IHByZXBhcmVfd2luZG93X3RpdGxlKCBkc2kgKTsKLSAgICBpZiggIXRpdGxlICkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgY2hhciBwaWRfYnVmZlsxNl07IC8vICEhID8/Ci0gICAgOjpzbnByaW50ZiggcGlkX2J1ZmYsIHNpemVvZihwaWRfYnVmZiksICIlbGQiLCBkc2kucGlkICk7Ci0gICAgCi0gICAgc2FmZV9leGVjbHAoICJ4dGVybSIsICItVCIsIHRpdGxlLCAiLWRpc3BsYXkiLCBkc2kuZGlzcGxheS5iZWdpbigpLCAKLSAgICAgICAgICAgICAgICAgICAgIi1iZyIsICJibGFjayIsICItZmciLCAid2hpdGUiLCAiLWdlb21ldHJ5IiwgIjg4eDMwKzEwKzEwIiwgIi1mbiIsICI5eDE1IiwgIi1lIiwKLSAgICAgICAgICAgICAgICAgImRieCIsICItcSIsICItYyIsIHByZXBhcmVfZGJ4X2NtZF9saW5lKCBkc2kgKSwgZHNpLmJpbmFyeV9wYXRoLmJlZ2luKCksIHBpZF9idWZmLCAwICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXN0YXRpYyB2b2lkCi1zdGFydF9kYnhfaW5fZW1hY3MoIGRiZ19zdGFydHVwX2luZm8gY29uc3QmIC8qZHNpKi8gKQotewotLy8gICAgY2hhciBkYmdfY21kX2J1ZmZbNTAwXTsgLy8gISEgPz8KLS8vCi0vLyAgICA6OnNucHJpbnRmKCBkYmdfY21kX2J1ZmYsIHNpemVvZihkYmdfY21kX2J1ZmYpLCAiKHByb2duIChkYnggXCJkYnggLXEgLWMgY29udCAlcyAlbGRcIikpIiwgZHNpLmJpbmFyeV9wYXRoLmJlZ2luKCksIGRzaS5waWQgKTsKLQotLy8gICAgc3RhcnRfZGVidWdnZXJfaW5fZW1hY3MoIGRzaSwgImVtYWNzIiwgZGJnX2NtZF9idWZmICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXN0YXRpYyB2b2lkCi1zdGFydF9kYnhfaW5feGVtYWNzKCBkYmdfc3RhcnR1cF9pbmZvIGNvbnN0JiApCi17Ci0gICAgLy8gISEgPz8KLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotc3RhdGljIHZvaWQKLXN0YXJ0X2RieF9pbl9kZGQoIGRiZ19zdGFydHVwX2luZm8gY29uc3QmIGRzaSApCi17Ci0gICAgY2hhciBjb25zdCogdGl0bGUgPSBwcmVwYXJlX3dpbmRvd190aXRsZSggZHNpICk7Ci0gICAgaWYoICF0aXRsZSApCi0gICAgICAgIHJldHVybjsKLQotICAgIGNoYXIgcGlkX2J1ZmZbMTZdOyAvLyAhISA/PwotICAgIDo6c25wcmludGYoIHBpZF9idWZmLCBzaXplb2YocGlkX2J1ZmYpLCAiJWxkIiwgZHNpLnBpZCApOwotICAgIAotICAgIHNhZmVfZXhlY2xwKCAiZGRkIiwgIi1kaXNwbGF5IiwgZHNpLmRpc3BsYXkuYmVnaW4oKSwKLSAgICAgICAgICAgICAgICAgIi0tZGJ4IiwgIi1xIiwgIi1jIiwgcHJlcGFyZV9kYnhfY21kX2xpbmUoIGRzaSwgZmFsc2UgKSwgZHNpLmJpbmFyeV9wYXRoLmJlZ2luKCksIHBpZF9idWZmLCAwICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICBkZWJ1Zzo6aW5mb190ICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotc3RhdGljIHN0cnVjdCBpbmZvX3QgewotICAgIC8vIENvbnN0cnVjdG9yCi0gICAgaW5mb190KCk7Ci0KLSAgICAvLyBQdWJsaWMgcHJvcGVydGllcwotICAgIHVuaXRfdGVzdDo6cmVhZHdyaXRlX3Byb3BlcnR5PHN0ZDo6c3RyaW5nPiAgcF9kYmc7Ci0gICAgCi0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgc3RkOjptYXA8c3RkOjpzdHJpbmcsZGJnX3N0YXJ0ZXI+ICAgICAgICAgICBtX2RiZ19zdGFydGVyX3JlZzsKLX0gc19pbmZvOwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1pbmZvX3Q6OmluZm9fdCgpCi17Ci0gICAgcF9kYmcudmFsdWUgPSA6OmdldGVudiggIkRJU1BMQVkiICkKLSAgICAgICAgPyBzdGQ6OnN0cmluZyggTkROQk9PU1RfU1RSSU5HSVpFKCBORE5CT09TVF9URVNUX0dVSV9EQkcgKSApCi0gICAgICAgIDogc3RkOjpzdHJpbmcoIE5ETkJPT1NUX1NUUklOR0laRSggTkROQk9PU1RfVEVTVF9DTkxfREJHICkgKTsKLSAgICAgICAgCi0gICAgbV9kYmdfc3RhcnRlcl9yZWdbc3RkOjpzdHJpbmcoImdkYiIpXSAgICAgICAgICAgPSAmc3RhcnRfZ2RiX2luX2NvbnNvbGU7Ci0gICAgbV9kYmdfc3RhcnRlcl9yZWdbc3RkOjpzdHJpbmcoImdkYi1lbWFjcyIpXSAgICAgPSAmc3RhcnRfZ2RiX2luX2VtYWNzOwotICAgIG1fZGJnX3N0YXJ0ZXJfcmVnW3N0ZDo6c3RyaW5nKCJnZGIteHRlcm0iKV0gICAgID0gJnN0YXJ0X2dkYl9pbl94dGVybTsKLSAgICBtX2RiZ19zdGFydGVyX3JlZ1tzdGQ6OnN0cmluZygiZ2RiLXhlbWFjcyIpXSAgICA9ICZzdGFydF9nZGJfaW5feGVtYWNzOwotCi0gICAgbV9kYmdfc3RhcnRlcl9yZWdbc3RkOjpzdHJpbmcoImRieCIpXSAgICAgICAgICAgPSAmc3RhcnRfZGJ4X2luX2NvbnNvbGU7Ci0gICAgbV9kYmdfc3RhcnRlcl9yZWdbc3RkOjpzdHJpbmcoImRieC1lbWFjcyIpXSAgICAgPSAmc3RhcnRfZGJ4X2luX2VtYWNzOwotICAgIG1fZGJnX3N0YXJ0ZXJfcmVnW3N0ZDo6c3RyaW5nKCJkYngteHRlcm0iKV0gICAgID0gJnN0YXJ0X2RieF9pbl94dGVybTsKLSAgICBtX2RiZ19zdGFydGVyX3JlZ1tzdGQ6OnN0cmluZygiZGJ4LXhlbWFjcyIpXSAgICA9ICZzdGFydF9kYnhfaW5feGVtYWNzOwotICAgIG1fZGJnX3N0YXJ0ZXJfcmVnW3N0ZDo6c3RyaW5nKCJkYngtZGRkIildICAgICAgID0gJnN0YXJ0X2RieF9pbl9kZGQ7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNlbmRpZgotCi19IC8vIGxvY2FsIG5hbWVzcGFjZQotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogIGNoZWNrIGlmIHByb2dyYW0gaXMgcnVubmluZyB1bmRlciBkZWJ1Z2dlciAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWJvb2wKLXVuZGVyX2RlYnVnZ2VyKCkKLXsKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1dJTjMyX0JBU0VEX0RFQlVHKSAvLyAqKioqKioqKioqKioqKioqKioqKioqKiBXSU4zMgotCi0gICAgcmV0dXJuICEhc19pbmZvLm1faXNfZGVidWdnZXJfcHJlc2VudCAmJiBzX2luZm8ubV9pc19kZWJ1Z2dlcl9wcmVzZW50KCk7Ci0KLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfVU5JWF9CQVNFRF9ERUJVRykgLy8gKioqKioqKioqKioqKioqKioqKioqKiBVTklYCi0KLSAgICAvLyAhISA/PyBjb3VsZC9zaG91bGQgd2UgY2FjaGUgdGhlIHJlc3VsdCBzb21laG93PwotICAgIGNvbnN0X3N0cmluZyAgICBkYmdfbGlzdCA9IE5ETkJPT1NUX1RFU1RfU1RSSU5HSVpFKCBORE5CT09TVF9URVNUX0RCR19MSVNUICk7Ci0KLSAgICBwaWRfdCBwaWQgPSA6OmdldHBpZCgpOwotCi0gICAgd2hpbGUoIHBpZCAhPSAwICkgewotICAgICAgICBwcm9jZXNzX2luZm8gcGkoIHBpZCApOwotCi0gICAgICAgIC8vICEhID8/IHNob3VsZCB3ZSB1c2UgdG9rZW5pemVyIGhlcmUgaW5zdGVhZD8KLSAgICAgICAgaWYoIGRiZ19saXN0LmZpbmQoIHBpLmJpbmFyeV9uYW1lKCkgKSAhPSBjb25zdF9zdHJpbmc6Om5wb3MgKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAgcGlkID0gKHBpLnBhcmVudF9waWQoKSA9PSBwaWQgPyAwIDogcGkucGFyZW50X3BpZCgpKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci0KLSNlbHNlIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBkZWZhdWx0Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci0KLSNlbmRpZgotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgY2F1c2UgcHJvZ3JhbSB0byBicmVhayBleGVjdXRpb24gICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICBpbiBkZWJ1Z2dlciBhdCBjYWxsIHBvaW50ICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi12b2lkCi1kZWJ1Z2dlcl9icmVhaygpCi17Ci0gICAgLy8gISEgPz8gYXV0by1zdGFydCBkZWJ1Z2dlcj8KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfV0lOMzJfQkFTRURfREVCVUcpIC8vICoqKioqKioqKioqKioqKioqKioqKioqIFdJTjMyCi0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsID49IDEzMDApICAgICAgICAgICAgICAgICAgICAgICB8fCAgXAotICAgIE5ETkJPT1NUX1dPUktBUk9VTkQoX19HTlVDX18sID49IDMpICYmICFkZWZpbmVkKF9fTUlOR1czMl9fKSAgIHx8ICBcCi0gICAgZGVmaW5lZChfX0lOVEVMX0NPTVBJTEVSKQotIyAgIGRlZmluZSBORE5CT09TVF9ERUJVR19CUkVBSyAgICBfX2RlYnVnYnJlYWsKLSNlbHNlCi0jICAgZGVmaW5lIE5ETkJPT1NUX0RFQlVHX0JSRUFLICAgIERlYnVnQnJlYWsKLSNlbmRpZgotCi0jaWZuZGVmIF9fTUlOR1czMl9fCi0gICAgaWYoICF1bmRlcl9kZWJ1Z2dlcigpICkgewotICAgICAgICBfX3RyeSB7Ci0gICAgICAgICAgICBfX3RyeSB7Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfREVCVUdfQlJFQUsoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIF9fZXhjZXB0KCBVbmhhbmRsZWRFeGNlcHRpb25GaWx0ZXIoR2V0RXhjZXB0aW9uSW5mb3JtYXRpb24oKSkgKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIC8vIFVzZXIgb3B0ZWQgdG8gaWdub3JlIHRoZSBicmVha3BvaW50Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIF9fZXhjZXB0IChFWENFUFRJT05fRVhFQ1VURV9IQU5ETEVSKQotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBJZiB3ZSBnb3QgaGVyZSwgdGhlIHVzZXIgaGFzIHB1c2hlZCBEZWJ1Zy4gRGVidWdnZXIgaXMgYWxyZWFkeSBhdHRhY2hlZCB0byBvdXIgcHJvY2VzcyBhbmQgd2UKLSAgICAgICAgICAgIC8vIGNvbnRpbnVlIHRvIGxldCB0aGUgYW5vdGhlciBORE5CT09TVF9ERUJVR19CUkVBSyB0byBiZSBjYWxsZWQuCi0gICAgICAgIH0KLSAgICB9Ci0jZW5kaWYKLQotICAgIE5ETkJPT1NUX0RFQlVHX0JSRUFLKCk7Ci0KLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfVU5JWF9CQVNFRF9ERUJVRykgLy8gKioqKioqKioqKioqKioqKioqKioqKiBVTklYCi0KLSAgICA6OmtpbGwoIDo6Z2V0cGlkKCksIFNJR1RSQVAgKTsKLQotI2Vsc2UgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIGRlZmF1bHQKLQotI2VuZGlmCi19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgIGNvbnNvbGUgZGVidWdnZXIgc2V0dXAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfVU5JWF9CQVNFRF9ERUJVRykgLy8gKioqKioqKioqKioqKioqKioqKioqKioqIFVOSVgKLQotc3RkOjpzdHJpbmcKLXNldF9kZWJ1Z2dlciggdW5pdF90ZXN0Ojpjb25zdF9zdHJpbmcgZGJnX2lkLCBkYmdfc3RhcnRlciBzICkKLXsKLSAgICBzdGQ6OnN0cmluZyBvbGQgPSBzX2luZm8ucF9kYmc7Ci0KLSAgICBhc3NpZ25fb3AoIHNfaW5mby5wX2RiZy52YWx1ZSwgZGJnX2lkLCAwICk7Ci0KLSAgICBpZiggISFzICkKLSAgICAgICAgc19pbmZvLm1fZGJnX3N0YXJ0ZXJfcmVnW3NfaW5mby5wX2RiZ10gPSBzOwotCi0gICAgcmV0dXJuIG9sZDsKLX0KLQotI2Vsc2UgIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIGRlZmF1bHQKLQotc3RkOjpzdHJpbmcKLXNldF9kZWJ1Z2dlciggdW5pdF90ZXN0Ojpjb25zdF9zdHJpbmcsIGRiZ19zdGFydGVyICkKLXsKLSAgICByZXR1cm4gc3RkOjpzdHJpbmcoKTsKLX0KLQotI2VuZGlmCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICBhdHRhY2ggZGVidWdnZXIgdG8gdGhlIGN1cnJlbnQgcHJvY2VzcyAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotYm9vbAotYXR0YWNoX2RlYnVnZ2VyKCBib29sIGJyZWFrX29yX2NvbnRpbnVlICkKLXsKLSAgICBpZiggdW5kZXJfZGVidWdnZXIoKSApCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfV0lOMzJfQkFTRURfREVCVUcpIC8vICoqKioqKioqKioqKioqKioqKioqKioqIFdJTjMyCi0KLSAgICBjb25zdCBpbnQgTUFYX0NNRF9MSU5FID0gMjAwOwotCi0gICAgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0gICAgLy8gRGVidWdnZXIgInJlYWR5IiBldmVudAotCi0gICAgU0VDVVJJVFlfQVRUUklCVVRFUyBhdHRyOwotICAgIGF0dHIubkxlbmd0aCAgICAgICAgICAgICAgICA9IHNpemVvZihhdHRyKTsKLSAgICBhdHRyLmxwU2VjdXJpdHlEZXNjcmlwdG9yICAgPSBOVUxMOwotICAgIGF0dHIuYkluaGVyaXRIYW5kbGUgICAgICAgICA9IHRydWU7Ci0KLSAgICAvLyBtYW51YWwgcmVzZXR0YWJsZSwgaW5pdGlhbGx5IG5vbiBzaWduYWxlZCwgdW5uYW1lZCBldmVudCwKLSAgICAvLyB0aGF0IHdpbGwgc2lnbmFsIG1lIHRoYXQgZGVidWdnZXIgaW5pdGlhbGl6YXRpb24gaXMgZG9uZQotICAgIEhBTkRMRSBkYmdfaW5pdF9kb25lX2V2ID0gOjpDcmVhdGVFdmVudCgKLSAgICAgICAgJmF0dHIsICAgICAgICAgIC8vIHBvaW50ZXIgdG8gc2VjdXJpdHkgYXR0cmlidXRlcwotICAgICAgICB0cnVlLCAgICAgICAgICAgLy8gZmxhZyBmb3IgbWFudWFsLXJlc2V0IGV2ZW50Ci0gICAgICAgIGZhbHNlLCAgICAgICAgICAvLyBmbGFnIGZvciBpbml0aWFsIHN0YXRlCi0gICAgICAgIE5VTEwgICAgICAgICAgICAvLyBwb2ludGVyIHRvIGV2ZW50LW9iamVjdCBuYW1lCi0gICAgKTsKLQotICAgIGlmKCAhZGJnX2luaXRfZG9uZV9ldiApCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotICAgIC8vIERlYnVnZ2VyIGNvbW1hbmQgbGluZSBmb3JtYXQKLQotICAgIEhLRVkgcmVnX2tleTsKLQotICAgIGlmKCAhc19pbmZvLm1fcmVnX29wZW5fa2V5IHx8ICgqc19pbmZvLm1fcmVnX29wZW5fa2V5KSgKLSAgICAgICAgICAgIEhLRVlfTE9DQUxfTUFDSElORSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhhbmRsZSBvZiBvcGVuIGtleQotICAgICAgICAgICAgIlNvZnR3YXJlXFxNaWNyb3NvZnRcXFdpbmRvd3MgTlRcXEN1cnJlbnRWZXJzaW9uXFxBZURlYnVnIiwgLy8gbmFtZSBvZiBzdWJrZXkgdG8gb3BlbgotICAgICAgICAgICAgJnJlZ19rZXkgKSAhPSBFUlJPUl9TVUNDRVNTICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWRkcmVzcyBvZiBoYW5kbGUgb2Ygb3BlbiBrZXkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgY2hhciAgZm9ybWF0W01BWF9DTURfTElORV07Ci0gICAgRFdPUkQgZm9ybWF0X3NpemUgPSBNQVhfQ01EX0xJTkU7Ci0gICAgRFdPUkQgdHlwZSA9IFJFR19TWjsKLQotICAgIGlmKCAhc19pbmZvLm1fcmVnX3F1ZXJ5X3ZhbHVlIHx8ICgqc19pbmZvLm1fcmVnX3F1ZXJ5X3ZhbHVlKSgKLSAgICAgICAgICAgIHJlZ19rZXksICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhhbmRsZSBvZiBvcGVuIGtleQotICAgICAgICAgICAgIkRlYnVnZ2VyIiwgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbmFtZSBvZiBzdWJrZXkgdG8gcXVlcnkKLSAgICAgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlc2VydmVkCi0gICAgICAgICAgICAmdHlwZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB2YWx1ZSB0eXBlCi0gICAgICAgICAgICAoTFBCWVRFKWZvcm1hdCwgICAgICAgICAgICAgICAgICAgICAvLyBidWZmZXIgZm9yIHJldHVybmVkIHN0cmluZwotICAgICAgICAgICAgJmZvcm1hdF9zaXplICkgIT0gRVJST1JfU1VDQ0VTUyApICAgLy8gaW46IGJ1ZmZlciBzaXplOyBvdXQ6IGFjdHVhbCBzaXplIG9mIHJldHVybmVkIHN0cmluZwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiggIXNfaW5mby5tX3JlZ19jbG9zZV9rZXkgfHwgKCpzX2luZm8ubV9yZWdfY2xvc2Vfa2V5KSggcmVnX2tleSApICE9IEVSUk9SX1NVQ0NFU1MgKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLSAgICAvLyBEZWJ1Z2dlciBjb21tYW5kIGxpbmUKLQotICAgIGNoYXIgY21kX2xpbmVbTUFYX0NNRF9MSU5FXTsKLSAgICBzdGQ6OnNwcmludGYoIGNtZF9saW5lLCBmb3JtYXQsIDo6R2V0Q3VycmVudFByb2Nlc3NJZCgpLCBkYmdfaW5pdF9kb25lX2V2ICk7Ci0KLSAgICAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLSAgICAvLyBEZWJ1Z2dlciB3aW5kb3cgcGFyYW1ldGVycwotCi0gICAgU1RBUlRVUElORk9BICAgIHN0YXJ0dXBfaW5mbzsKLSAgICBzdGQ6Om1lbXNldCggJnN0YXJ0dXBfaW5mbywgMCwgc2l6ZW9mKHN0YXJ0dXBfaW5mbykgKTsKLQotICAgIHN0YXJ0dXBfaW5mby5jYiAgICAgICAgICAgICA9IHNpemVvZihzdGFydHVwX2luZm8pOwotICAgIHN0YXJ0dXBfaW5mby5kd0ZsYWdzICAgICAgICA9IFNUQVJURl9VU0VTSE9XV0lORE9XOwotICAgIHN0YXJ0dXBfaW5mby53U2hvd1dpbmRvdyAgICA9IFNXX1NIT1dOT1JNQUw7Ci0KLSAgICAvLyBkZWJ1Z2dlciBwcm9jZXNzIHNfaW5mbwotICAgIFBST0NFU1NfSU5GT1JNQVRJT04gZGVidWdnZXJfaW5mbzsKLQotICAgIGJvb2wgY3JlYXRlZCA9ICEhOjpDcmVhdGVQcm9jZXNzQSgKLSAgICAgICAgTlVMTCwgICAgICAgICAgIC8vIHBvaW50ZXIgdG8gbmFtZSBvZiBleGVjdXRhYmxlIG1vZHVsZTsgTlVMTCAtIHVzZSB0aGUgb25lIGluIGNvbW1hbmQgbGluZQotICAgICAgICBjbWRfbGluZSwgICAgICAgLy8gcG9pbnRlciB0byBjb21tYW5kIGxpbmUgc3RyaW5nCi0gICAgICAgIE5VTEwsICAgICAgICAgICAvLyBwb2ludGVyIHRvIHByb2Nlc3Mgc2VjdXJpdHkgYXR0cmlidXRlczsgTlVMTCAtIGRlYnVnZ2VyJ3MgaGFuZGxlIGNhbid0IGJlIGluaGVyaXRlZAotICAgICAgICBOVUxMLCAgICAgICAgICAgLy8gcG9pbnRlciB0byB0aHJlYWQgc2VjdXJpdHkgYXR0cmlidXRlczsgTlVMTCAtIGRlYnVnZ2VyJ3MgaGFuZGxlIGNhbid0IGJlIGluaGVyaXRlZAotICAgICAgICB0cnVlLCAgICAgICAgICAgLy8gZGVidWdnZXIgaW5oZXJpdCBvcGVuZWQgaGFuZGxlcwotICAgICAgICAwLCAgICAgICAgICAgICAgLy8gcHJpb3JpdHkgZmxhZ3M7IDAgLSBub3JtYWwgcHJpb3JpdHkKLSAgICAgICAgTlVMTCwgICAgICAgICAgIC8vIHBvaW50ZXIgdG8gbmV3IGVudmlyb25tZW50IGJsb2NrOyBOVUxMIC0gdXNlIHRoaXMgcHJvY2VzcyBlbnZpcm9ubWVudAotICAgICAgICBOVUxMLCAgICAgICAgICAgLy8gcG9pbnRlciB0byBjdXJyZW50IGRpcmVjdG9yeSBuYW1lOyBOVUxMIC0gdXNlIHRoaXMgcHJvY2VzcyBjb3JyZWN0IGRpcmVjdG9yeQotICAgICAgICAmc3RhcnR1cF9pbmZvLCAgLy8gcG9pbnRlciB0byBTVEFSVFVQSU5GTyB0aGF0IHNwZWNpZmllcyBtYWluIHdpbmRvdyBhcHBlYXJhbmNlCi0gICAgICAgICZkZWJ1Z2dlcl9pbmZvICAvLyBwb2ludGVyIHRvIFBST0NFU1NfSU5GT1JNQVRJT04gdGhhdCB3aWxsIGNvbnRhaW4gdGhlIG5ldyBwcm9jZXNzIGlkZW50aWZpY2F0aW9uCi0gICAgKTsKLQotICAgIGlmKCBjcmVhdGVkICkKLSAgICAgICAgOjpXYWl0Rm9yU2luZ2xlT2JqZWN0KCBkYmdfaW5pdF9kb25lX2V2LCBJTkZJTklURSApOwotCi0gICAgOjpDbG9zZUhhbmRsZSggZGJnX2luaXRfZG9uZV9ldiApOwotCi0gICAgaWYoICFjcmVhdGVkICkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYoIGJyZWFrX29yX2NvbnRpbnVlICkKLSAgICAgICAgZGVidWdnZXJfYnJlYWsoKTsKLQotICAgIHJldHVybiB0cnVlOwotCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX1VOSVhfQkFTRURfREVCVUcpIC8vICoqKioqKioqKioqKioqKioqKioqKiogVU5JWAotCi0gICAgY2hhciBpbml0X2RvbmVfbG9ja19mbltdID0gIi90bXAvYnRsX2RiZ19pbml0X2RvbmVfWFhYWFhYIjsKLSAgICBmZF9ob2xkZXIgaW5pdF9kb25lX2xvY2tfZmQoIDo6bWtzdGVtcCggaW5pdF9kb25lX2xvY2tfZm4gKSApOwotCi0gICAgaWYoIGluaXRfZG9uZV9sb2NrX2ZkID09IC0xICkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAotICAgIHBpZF90IGNoaWxkX3BpZCA9IGZvcmsoKTsKLQotICAgIGlmKCBjaGlsZF9waWQgPT0gLTEgKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiggY2hpbGRfcGlkICE9IDAgKSB7IC8vIHBhcmVudCBwcm9jZXNzIC0gaGVyZSB3ZSB3aWxsIHN0YXJ0IHRoZSBkZWJ1Z2dlcgotICAgICAgICBkYmdfc3RhcnR1cF9pbmZvIGRzaTsKLSAgICAKLSAgICAgICAgcHJvY2Vzc19pbmZvIHBpKCBjaGlsZF9waWQgKTsKLSAgICAgICAgaWYoIHBpLmJpbmFyeV9wYXRoKCkuaXNfZW1wdHkoKSApCi0gICAgICAgICAgICA6OmV4aXQoIC0xICk7Ci0KLSAgICAgICAgZHNpLnBpZCAgICAgICAgICAgICAgICAgPSBjaGlsZF9waWQ7Ci0gICAgICAgIGRzaS5icmVha19vcl9jb250aW51ZSAgID0gYnJlYWtfb3JfY29udGludWU7Ci0gICAgICAgIGRzaS5iaW5hcnlfcGF0aCAgICAgICAgID0gcGkuYmluYXJ5X3BhdGgoKTsKLSAgICAgICAgZHNpLmRpc3BsYXkgICAgICAgICAgICAgPSA6OmdldGVudiggIkRJU1BMQVkiICk7Ci0gICAgICAgIGRzaS5pbml0X2RvbmVfbG9jayAgICAgID0gaW5pdF9kb25lX2xvY2tfZm47Ci0gICAgICAgIAotICAgICAgICBkYmdfc3RhcnRlciBzdGFydGVyID0gc19pbmZvLm1fZGJnX3N0YXJ0ZXJfcmVnW3NfaW5mby5wX2RiZ107Ci0gICAgICAgIGlmKCAhIXN0YXJ0ZXIgKQotICAgICAgICAgICAgc3RhcnRlciggZHNpICk7Ci0KLSAgICAgICAgOjpwZXJyb3IoICJCb29zdC5UZXN0IGV4ZWN1dGlvbiBtb25pdG9yIGZhaWxlZCB0byBzdGFydCBhIGRlYnVnZ2VyOiIgKTsKLQotICAgICAgICA6OmV4aXQoIC0xICk7Ci0gICAgfQotCi0gICAgLy8gY2hpbGQgcHJvY2VzcyAtIGhlcmUgd2Ugd2lsbCBjb250aW51ZSBvdXIgdGVzdCBtb2R1bGUgZXhlY3V0aW9uIDsgLy8gISEgPz8gc2hvdWxkIGl0IGJlIHZpY2UgdmVyc2EKLQotICAgIHdoaWxlKCA6OmFjY2VzcyggaW5pdF9kb25lX2xvY2tfZm4sIEZfT0sgKSA9PSAwICkgewotICAgICAgICBzdHJ1Y3QgdGltZXZhbCB0byA9IHsgMCwgMTAwIH07Ci0KLSAgICAgICAgOjpzZWxlY3QoIDAsIDAsIDAsIDAsICZ0byApOwotICAgIH0KLQotLy8gICAgY2hhciBkdW1teTsKLS8vICAgIHdoaWxlKCA6OnJlYWQoIGluaXRfZG9uZV9sb2NrX2ZkLCAmZHVtbXksIHNpemVvZihjaGFyKSApID09IDAgKTsKLQotICAgIGlmKCBicmVha19vcl9jb250aW51ZSApCi0gICAgICAgIGRlYnVnZ2VyX2JyZWFrKCk7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLQotI2Vsc2UgLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIGRlZmF1bHQKLQotICAgIHJldHVybiBmYWxzZTsKLQotI2VuZGlmCi19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgIHN3aXRjaCBvbi9vZmYgZGV0ZWN0IG1lbW9yeSBsZWFrcyBmZWF0dXJlICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdm9pZAotZGV0ZWN0X21lbW9yeV9sZWFrcyggYm9vbCBvbl9vZmYgKQotewotICAgIHVuaXRfdGVzdDo6dXRfZGV0YWlsOjppZ25vcmVfdW51c2VkX3ZhcmlhYmxlX3dhcm5pbmcoIG9uX29mZiApOwotCi0jaWZkZWYgTkROQk9PU1RfTVNfQ1JUX0JBU0VEX0RFQlVHCi0gICAgaW50IGZsYWdzID0gX0NydFNldERiZ0ZsYWcoIF9DUlREQkdfUkVQT1JUX0ZMQUcgKTsKLQotICAgIGlmKCAhb25fb2ZmICkKLSAgICAgICAgZmxhZ3MgJj0gfl9DUlREQkdfTEVBS19DSEVDS19ERjsKLSAgICBlbHNlICB7Ci0gICAgICAgIGZsYWdzIHw9IF9DUlREQkdfTEVBS19DSEVDS19ERjsKLSAgICAgICAgX0NydFNldFJlcG9ydE1vZGUoX0NSVF9XQVJOLCBfQ1JUREJHX01PREVfRklMRSk7Ci0gICAgICAgIF9DcnRTZXRSZXBvcnRGaWxlKF9DUlRfV0FSTiwgX0NSVERCR19GSUxFX1NURE9VVCk7Ci0gICAgfQotCi0gICAgX0NydFNldERiZ0ZsYWcgKCBmbGFncyApOwotI2VuZGlmIC8vIE5ETkJPT1NUX01TX0NSVF9CQVNFRF9ERUJVRwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICBjYXVzZSBwcm9ncmFtIHRvIGJyZWFrIGV4ZWN1dGlvbiBpbiAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICBkZWJ1Z2dlciBhdCBzcGVjaWZpYyBhbGxvY2F0aW9uIHBvaW50ICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi12b2lkCi1icmVha19tZW1vcnlfYWxsb2MoIGxvbmcgbWVtX2FsbG9jX29yZGVyX251bSApCi17Ci0gICAgdW5pdF90ZXN0Ojp1dF9kZXRhaWw6Omlnbm9yZV91bnVzZWRfdmFyaWFibGVfd2FybmluZyggbWVtX2FsbG9jX29yZGVyX251bSApOwotCi0jaWZkZWYgTkROQk9PU1RfTVNfQ1JUX0JBU0VEX0RFQlVHCi0gICAgX0NydFNldEJyZWFrQWxsb2MoIG1lbV9hbGxvY19vcmRlcl9udW0gKTsKLSNlbmRpZiAvLyBORE5CT09TVF9NU19DUlRfQkFTRURfREVCVUcKLX0KLQotfSAvLyBuYW1lc3BhY2UgZGVidWcKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX0RFQlVHX0FQSV9JUFBfMTEyMDA2R0VSCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL2V4Y2VwdGlvbl9zYWZldHkuaXBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwvZXhjZXB0aW9uX3NhZmV0eS5pcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFjMzYzODUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwvZXhjZXB0aW9uX3NhZmV0eS5pcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MzcgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZQotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTQ2MzMgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IEZhY2lsaXRpZXMgdG8gcGVyZm9ybSBleGNlcHRpb24gc2FmZXR5IHRlc3RzCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX0VYRUNVVElPTl9TQUZFVFlfSVBQXzExMjAwNUdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX0VYRUNVVElPTl9TQUZFVFlfSVBQXzExMjAwNUdFUgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvY29uZmlnLmhwcD4KLQotI2lmIE5ETkJPT1NUX1RFU1RfU1VQUE9SVF9JTlRFUkFDVElPTl9URVNUSU5HCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9nbG9iYWxfdHlwZWRlZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvdW5pdF90ZXN0X3BhcmFtZXRlcnMuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9jYWxsYmFjay5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy93cmFwX3N0cmluZ3N0cmVhbS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9pdGVyYXRvci90b2tlbl9pdGVyYXRvci5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2ludGVyYWN0aW9uX2Jhc2VkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3Rlc3RfdG9vbHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdW5pdF90ZXN0X2xvZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9mcmFtZXdvcmsuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdGVzdF9vYnNlcnZlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZWJ1Zy5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vIEJvb3N0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbGV4aWNhbF9jYXN0LmhwcD4KLQotLy8gU1RMCi0jaW5jbHVkZSA8dmVjdG9yPgotI2luY2x1ZGUgPGNzdGRsaWI+Ci0jaW5jbHVkZSA8bWFwPgotI2luY2x1ZGUgPGlvbWFuaXA+Ci0jaW5jbHVkZSA8Y2N0eXBlPgotI2luY2x1ZGUgPG5kbmJvb3N0L2xpbWl0cy5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLXVzaW5nIG5hbWVzcGFjZSA6Om5kbmJvb3N0Ojp1bml0X3Rlc3Q7Ci0gCi1uYW1lc3BhY2UgaXRlc3QgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgZXhlY3V0aW9uX3BhdGhfcG9pbnQgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWVudW0gZXhlY19wYXRoX3BvaW50X3R5cGUgeyBFUFBfU0NPUEUsIEVQUF9FWENFUFQsIEVQUF9ERUNJU0lPTiwgRVBQX0FMTE9DIH07Ci0KLXN0cnVjdCBleGVjdXRpb25fcGF0aF9wb2ludCB7Ci0gICAgZXhlY3V0aW9uX3BhdGhfcG9pbnQoIGV4ZWNfcGF0aF9wb2ludF90eXBlIHQsIGNvbnN0X3N0cmluZyBmaWxlLCBzdGQ6OnNpemVfdCBsaW5lX251bSApCi0gICAgOiBtX3R5cGUoIHQgKQotICAgICwgbV9maWxlX25hbWUoIGZpbGUgKQotICAgICwgbV9saW5lX251bSggbGluZV9udW0gKQotICAgIHt9Ci0KLSAgICBleGVjX3BhdGhfcG9pbnRfdHlwZSAgICBtX3R5cGU7Ci0gICAgY29uc3Rfc3RyaW5nICAgICAgICAgICAgIG1fZmlsZV9uYW1lOwotICAgIHN0ZDo6c2l6ZV90ICAgICAgICAgICAgIG1fbGluZV9udW07Ci0KLSAgICAvLyBFeGVjdXRpb24gcGF0aCBwb2ludCBzcGVjaWZpYwotICAgIHN0cnVjdCBkZWNpc2lvbl9kYXRhIHsKLSAgICAgICAgYm9vbCAgICAgICAgICAgIHZhbHVlOwotICAgICAgICB1bnNpZ25lZCAgICAgICAgZm9yY2VkX2V4Y2VwdGlvbl9wb2ludDsKLSAgICB9OwotICAgIHN0cnVjdCBzY29wZV9kYXRhIHsKLSAgICAgICAgdW5zaWduZWQgICAgICAgIHNpemU7Ci0gICAgICAgIGNoYXIgY29uc3QqICAgICBuYW1lOwotICAgIH07Ci0gICAgc3RydWN0IGV4Y2VwdF9kYXRhIHsKLSAgICAgICAgY2hhciBjb25zdCogICAgIGRlc2NyaXB0aW9uOwotICAgIH07Ci0gICAgc3RydWN0IGFsbG9jX2RhdGEgewotICAgICAgICB2b2lkKiAgICAgICAgICAgcHRyOwotICAgICAgICBzdGQ6OnNpemVfdCAgICAgc2l6ZTsKLSAgICB9OwotCi0gICAgdW5pb24gewotICAgICAgICBzdHJ1Y3QgZGVjaXNpb25fZGF0YSAgICBtX2RlY2lzaW9uOwotICAgICAgICBzdHJ1Y3Qgc2NvcGVfZGF0YSAgICAgICBtX3Njb3BlOwotICAgICAgICBzdHJ1Y3QgZXhjZXB0X2RhdGEgICAgICBtX2V4Y2VwdDsKLSAgICAgICAgc3RydWN0IGFsbG9jX2RhdGEgICAgICAgbV9hbGxvYzsKLSAgICB9OwotfTsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICBleGNlcHRpb24gc2FmZXR5IHRlc3QgaW1wbGVtZW50YXRpb24gICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1zdHJ1Y3QgZXhjZXB0aW9uX3NhZmV0eV90ZXN0ZXIgOiBpdGVzdDo6bWFuYWdlciwgdGVzdF9vYnNlcnZlciB7Ci0gICAgLy8gaGVscGVycyB0eXBlcwotICAgIHN0cnVjdCB1bmlxdWVfZXhjZXB0aW9uIHt9OwotCi0gICAgLy8gQ29uc3RydWN0b3IKLSAgICBleHBsaWNpdCAgICAgICAgICAgIGV4Y2VwdGlvbl9zYWZldHlfdGVzdGVyKCBjb25zdF9zdHJpbmcgdGVzdF9uYW1lICk7Ci0gICAgfmV4Y2VwdGlvbl9zYWZldHlfdGVzdGVyKCk7Ci0KLSAgICAvLyBjaGVjayBsYXN0IHJ1biBhbmQgcHJlcGFyZSBmb3IgbmV4dAotICAgIGJvb2wgICAgICAgICAgICAgICAgbmV4dF9leGVjdXRpb25fcGF0aCgpOwotCi0gICAgLy8gbWVtb3J5IHRyYWNraW5nCi0KLSAgICAvLyBtYW5hZ2VyIGludGVyZmFjZSBpbXBsZW1lbnRhdGlvbgotICAgIHZpcnR1YWwgdm9pZCAgICAgICAgZXhjZXB0aW9uX3BvaW50KCBjb25zdF9zdHJpbmcgZmlsZSwgc3RkOjpzaXplX3QgbGluZV9udW0sIGNvbnN0X3N0cmluZyBkZXNjcmlwdGlvbiApOwotICAgIHZpcnR1YWwgYm9vbCAgICAgICAgZGVjaXNpb25fcG9pbnQoIGNvbnN0X3N0cmluZyBmaWxlLCBzdGQ6OnNpemVfdCBsaW5lX251bSApOwotICAgIHZpcnR1YWwgdW5zaWduZWQgICAgZW50ZXJfc2NvcGUoIGNvbnN0X3N0cmluZyBmaWxlLCBzdGQ6OnNpemVfdCBsaW5lX251bSwgY29uc3Rfc3RyaW5nIHNjb3BlX25hbWUgKTsKLSAgICB2aXJ0dWFsIHZvaWQgICAgICAgIGxlYXZlX3Njb3BlKCB1bnNpZ25lZCBlbnRlcl9zY29wZV9wb2ludCApOwotICAgIHZpcnR1YWwgdm9pZCAgICAgICAgYWxsb2NhdGVkKCBjb25zdF9zdHJpbmcgZmlsZSwgc3RkOjpzaXplX3QgbGluZV9udW0sIHZvaWQqIHAsIHN0ZDo6c2l6ZV90IHMgKTsKLSAgICB2aXJ0dWFsIHZvaWQgICAgICAgIGZyZWVkKCB2b2lkKiBwICk7Ci0KLSAgICAvLyB0ZXN0IG9ic2VydmVyIGludGVyZmFjZQotICAgIHZpcnR1YWwgdm9pZCAgICAgICAgYXNzZXJ0aW9uX3Jlc3VsdCggYm9vbCBwYXNzZWQgKTsKLSAgICB2aXJ0dWFsIGludCAgICAgICAgIHByaW9yaXR5KCkgeyByZXR1cm4gKHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KSgpOyB9IC8vIHdlIHdhbnQgdGhpcyBvYnNlcnZlciB0byBydW4gdGhlIGxhc3QKLQotcHJpdmF0ZToKLSAgICB2b2lkICAgICAgICAgICAgICAgIGZhaWx1cmVfcG9pbnQoKTsKLSAgICB2b2lkICAgICAgICAgICAgICAgIHJlcG9ydF9lcnJvcigpOwotCi0gICAgdHlwZWRlZiBzdGQ6OnZlY3RvcjxleGVjdXRpb25fcGF0aF9wb2ludD4gICBleGVjX3BhdGg7Ci0gICAgdHlwZWRlZiBzdGQ6Om1hcDx2b2lkKix1bnNpZ25lZD4gICAgICAgICAgICByZWdpc3RyeTsKLQotICAgIC8vIERhdGEgbWVtYmVycwotICAgIGJvb2wgICAgICAgIG1faW50ZXJuYWxfYWN0aXZpdHk7Ci0gICAgCi0gICAgdW5zaWduZWQgICAgbV9leGNlcHRpb25fcG9pbnRfY291bnRlcjsKLSAgICB1bnNpZ25lZCAgICBtX2ZvcmNlZF9leGNlcHRpb25fcG9pbnQ7Ci0KLSAgICB1bnNpZ25lZCAgICBtX2V4ZWNfcGF0aF9wb2ludDsKLSAgICBleGVjX3BhdGggICBtX2V4ZWN1dGlvbl9wYXRoOwotCi0gICAgdW5zaWduZWQgICAgbV9leGVjX3BhdGhfY291bnRlcjsKLSAgICB1bnNpZ25lZCAgICBtX2JyZWFrX2V4ZWNfcGF0aDsKLSAgICAKLSAgICBib29sICAgICAgICBtX2ludmFpcmFudF9mYWlsZWQ7Ci0gICAgcmVnaXN0cnkgICAgbV9tZW1vcnlfaW5fdXNlOwotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotc3RydWN0IGFjdGl2aXR5X2d1YXJkIHsKLSAgICBib29sJiBtX3Y7Ci0KLSAgICBhY3Rpdml0eV9ndWFyZCggYm9vbCYgdiApIDogbV92KCB2ICkgICAgeyBtX3YgPSB0cnVlOyB9Ci0gICAgfmFjdGl2aXR5X2d1YXJkKCkgICAgICAgICAgICAgICAgICAgICAgIHsgbV92ID0gZmFsc2U7IH0KLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLWV4Y2VwdGlvbl9zYWZldHlfdGVzdGVyOjpleGNlcHRpb25fc2FmZXR5X3Rlc3RlciggY29uc3Rfc3RyaW5nIHRlc3RfbmFtZSApCi06IG1faW50ZXJuYWxfYWN0aXZpdHkoIHRydWUgKQotLCBtX2V4Y2VwdGlvbl9wb2ludF9jb3VudGVyKCAwICkKLSwgbV9mb3JjZWRfZXhjZXB0aW9uX3BvaW50KCAxICkKLSwgbV9leGVjX3BhdGhfcG9pbnQoIDAgKQotLCBtX2V4ZWNfcGF0aF9jb3VudGVyKCAxICkKLSwgbV9icmVha19leGVjX3BhdGgoIHN0YXRpY19jYXN0PHVuc2lnbmVkPigtMSkgKQotLCBtX2ludmFpcmFudF9mYWlsZWQoIGZhbHNlICkKLXsKLSAgICBmcmFtZXdvcms6OnJlZ2lzdGVyX29ic2VydmVyKCAqdGhpcyApOwotCi0gICAgaWYoICFydW50aW1lX2NvbmZpZzo6YnJlYWtfZXhlY19wYXRoKCkuaXNfZW1wdHkoKSApIHsKLSAgICAgICAgdXNpbmcgbmFtZXNwYWNlIHVuaXRfdGVzdDsKLSAgICAgICAgCi0gICAgICAgIHN0cmluZ190b2tlbl9pdGVyYXRvciB0aXQoIHJ1bnRpbWVfY29uZmlnOjpicmVha19leGVjX3BhdGgoKSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkcm9wcGVkX2RlbGltZXRlcnMgPSAiOiIsa2VwdF9kZWxpbWV0ZXJzID0gIiAiKSApOwotICAgICAgICAKLSAgICAgICAgY29uc3Rfc3RyaW5nIHRlc3RfdG9fYnJlYWsgPSAqdGl0OwotICAgICAgICAKLSAgICAgICAgaWYoIHRlc3RfdG9fYnJlYWsgPT0gdGVzdF9uYW1lICkgewotICAgICAgICAgICAgKyt0aXQ7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIG1fYnJlYWtfZXhlY19wYXRoID0gbGV4aWNhbF9jYXN0PHVuc2lnbmVkPiggKnRpdCApOwotICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIG1faW50ZXJuYWxfYWN0aXZpdHkgPSBmYWxzZTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotZXhjZXB0aW9uX3NhZmV0eV90ZXN0ZXI6On5leGNlcHRpb25fc2FmZXR5X3Rlc3RlcigpCi17Ci0gICAgbV9pbnRlcm5hbF9hY3Rpdml0eSA9IHRydWU7Ci0gICAgCi0gICAgZnJhbWV3b3JrOjpkZXJlZ2lzdGVyX29ic2VydmVyKCAqdGhpcyApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1ib29sCi1leGNlcHRpb25fc2FmZXR5X3Rlc3Rlcjo6bmV4dF9leGVjdXRpb25fcGF0aCgpCi17Ci0gICAgYWN0aXZpdHlfZ3VhcmQgYWcoIG1faW50ZXJuYWxfYWN0aXZpdHkgKTsKLQotICAgIC8vIGNoZWNrIG1lbW9yeSB1c2FnZQotICAgIGlmKCBtX2V4ZWN1dGlvbl9wYXRoLnNpemUoKSA+IDAgKSB7Ci0gICAgICAgIGJvb2wgZXJyb3JzX2RldGVjdGVkID0gbV9pbnZhaXJhbnRfZmFpbGVkIHx8IChtX21lbW9yeV9pbl91c2Uuc2l6ZSgpICE9IDApOwotICAgICAgICBmcmFtZXdvcms6OmFzc2VydGlvbl9yZXN1bHQoICFlcnJvcnNfZGV0ZWN0ZWQgKTsKLQotICAgICAgICBpZiggZXJyb3JzX2RldGVjdGVkICkKLSAgICAgICAgICAgIHJlcG9ydF9lcnJvcigpOwotCi0gICAgICAgIG1fbWVtb3J5X2luX3VzZS5jbGVhcigpOwotICAgIH0KLQotICAgIG1fZXhlY19wYXRoX3BvaW50ICAgICAgICAgICA9IDA7Ci0gICAgbV9leGNlcHRpb25fcG9pbnRfY291bnRlciAgID0gMDsKLSAgICBtX2ludmFpcmFudF9mYWlsZWQgICAgICAgICAgPSBmYWxzZTsKLSAgICArK21fZXhlY19wYXRoX2NvdW50ZXI7Ci0KLSAgICB3aGlsZSggbV9leGVjdXRpb25fcGF0aC5zaXplKCkgPiAwICkgewotICAgICAgICBzd2l0Y2goIG1fZXhlY3V0aW9uX3BhdGguYmFjaygpLm1fdHlwZSApIHsKLSAgICAgICAgY2FzZSBFUFBfU0NPUEU6Ci0gICAgICAgIGNhc2UgRVBQX0FMTE9DOgotICAgICAgICAgICAgbV9leGVjdXRpb25fcGF0aC5wb3BfYmFjaygpOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBFUFBfREVDSVNJT046Ci0gICAgICAgICAgICBpZiggIW1fZXhlY3V0aW9uX3BhdGguYmFjaygpLm1fZGVjaXNpb24udmFsdWUgKSB7Ci0gICAgICAgICAgICAgICAgbV9leGVjdXRpb25fcGF0aC5wb3BfYmFjaygpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBtX2V4ZWN1dGlvbl9wYXRoLmJhY2soKS5tX2RlY2lzaW9uLnZhbHVlID0gZmFsc2U7Ci0gICAgICAgICAgICBtX2ZvcmNlZF9leGNlcHRpb25fcG9pbnQgPSBtX2V4ZWN1dGlvbl9wYXRoLmJhY2soKS5tX2RlY2lzaW9uLmZvcmNlZF9leGNlcHRpb25fcG9pbnQ7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgICBjYXNlIEVQUF9FWENFUFQ6Ci0gICAgICAgICAgICBtX2V4ZWN1dGlvbl9wYXRoLnBvcF9iYWNrKCk7Ci0gICAgICAgICAgICArK21fZm9yY2VkX2V4Y2VwdGlvbl9wb2ludDsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgTkROQk9PU1RfVEVTVF9NRVNTQUdFKCAiVG90YWwgdGVzdGVkICIgPDwgLS1tX2V4ZWNfcGF0aF9jb3VudGVyIDw8ICIgZXhlY3V0aW9uIHBhdGgiICk7Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLWV4Y2VwdGlvbl9zYWZldHlfdGVzdGVyOjpleGNlcHRpb25fcG9pbnQoIGNvbnN0X3N0cmluZyBmaWxlLCBzdGQ6OnNpemVfdCBsaW5lX251bSwgY29uc3Rfc3RyaW5nIGRlc2NyaXB0aW9uICkKLXsKLSAgICBhY3Rpdml0eV9ndWFyZCBhZyggbV9pbnRlcm5hbF9hY3Rpdml0eSApOwotCi0gICAgaWYoICsrbV9leGNlcHRpb25fcG9pbnRfY291bnRlciA9PSBtX2ZvcmNlZF9leGNlcHRpb25fcG9pbnQgKSB7Ci0gICAgICAgIG1fZXhlY3V0aW9uX3BhdGgucHVzaF9iYWNrKAotICAgICAgICAgICAgZXhlY3V0aW9uX3BhdGhfcG9pbnQoIEVQUF9FWENFUFQsIGZpbGUsIGxpbmVfbnVtICkgKTsKLQotICAgICAgICBtX2V4ZWN1dGlvbl9wYXRoLmJhY2soKS5tX2V4Y2VwdC5kZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uLmJlZ2luKCk7Ci0KLSAgICAgICAgKyttX2V4ZWNfcGF0aF9wb2ludDsKLQotICAgICAgICBmYWlsdXJlX3BvaW50KCk7Ci0gICAgfQotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1ib29sCi1leGNlcHRpb25fc2FmZXR5X3Rlc3Rlcjo6ZGVjaXNpb25fcG9pbnQoIGNvbnN0X3N0cmluZyBmaWxlLCBzdGQ6OnNpemVfdCBsaW5lX251bSApCi17Ci0gICAgYWN0aXZpdHlfZ3VhcmQgYWcoIG1faW50ZXJuYWxfYWN0aXZpdHkgKTsKLQotICAgIGlmKCBtX2V4ZWNfcGF0aF9wb2ludCA8IG1fZXhlY3V0aW9uX3BhdGguc2l6ZSgpICkgewotICAgICAgICBORE5CT09TVF9SRVFVSVJFX01FU1NBR0UoIG1fZXhlY3V0aW9uX3BhdGhbbV9leGVjX3BhdGhfcG9pbnRdLm1fdHlwZSA9PSBFUFBfREVDSVNJT04gJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2V4ZWN1dGlvbl9wYXRoW21fZXhlY19wYXRoX3BvaW50XS5tX2ZpbGVfbmFtZSA9PSBmaWxlICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9leGVjdXRpb25fcGF0aFttX2V4ZWNfcGF0aF9wb2ludF0ubV9saW5lX251bSA9PSBsaW5lX251bSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRnVuY3Rpb24gdW5kZXIgdGVzdCBleGliaXQgbm9uLWRldGVybWluaXN0aWMgYmVoYXZpb3IiICk7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBtX2V4ZWN1dGlvbl9wYXRoLnB1c2hfYmFjaygKLSAgICAgICAgICAgIGV4ZWN1dGlvbl9wYXRoX3BvaW50KCBFUFBfREVDSVNJT04sIGZpbGUsIGxpbmVfbnVtICkgKTsKLQotICAgICAgICBtX2V4ZWN1dGlvbl9wYXRoLmJhY2soKS5tX2RlY2lzaW9uLnZhbHVlID0gdHJ1ZTsKLSAgICAgICAgbV9leGVjdXRpb25fcGF0aC5iYWNrKCkubV9kZWNpc2lvbi5mb3JjZWRfZXhjZXB0aW9uX3BvaW50ID0gbV9mb3JjZWRfZXhjZXB0aW9uX3BvaW50OwotICAgIH0KLQotICAgIHJldHVybiBtX2V4ZWN1dGlvbl9wYXRoW21fZXhlY19wYXRoX3BvaW50KytdLm1fZGVjaXNpb24udmFsdWU7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXVuc2lnbmVkCi1leGNlcHRpb25fc2FmZXR5X3Rlc3Rlcjo6ZW50ZXJfc2NvcGUoIGNvbnN0X3N0cmluZyBmaWxlLCBzdGQ6OnNpemVfdCBsaW5lX251bSwgY29uc3Rfc3RyaW5nIHNjb3BlX25hbWUgKQotewotICAgIGFjdGl2aXR5X2d1YXJkIGFnKCBtX2ludGVybmFsX2FjdGl2aXR5ICk7Ci0KLSAgICBpZiggbV9leGVjX3BhdGhfcG9pbnQgPCBtX2V4ZWN1dGlvbl9wYXRoLnNpemUoKSApIHsKLSAgICAgICAgTkROQk9PU1RfUkVRVUlSRV9NRVNTQUdFKCBtX2V4ZWN1dGlvbl9wYXRoW21fZXhlY19wYXRoX3BvaW50XS5tX3R5cGUgPT0gRVBQX1NDT1BFICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9leGVjdXRpb25fcGF0aFttX2V4ZWNfcGF0aF9wb2ludF0ubV9maWxlX25hbWUgPT0gZmlsZSAmJgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZXhlY3V0aW9uX3BhdGhbbV9leGVjX3BhdGhfcG9pbnRdLm1fbGluZV9udW0gPT0gbGluZV9udW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZ1bmN0aW9uIHVuZGVyIHRlc3QgZXhpYml0IG5vbi1kZXRlcm1pbmlzdGljIGJlaGF2aW9yIiApOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgbV9leGVjdXRpb25fcGF0aC5wdXNoX2JhY2soCi0gICAgICAgICAgICBleGVjdXRpb25fcGF0aF9wb2ludCggRVBQX1NDT1BFLCBmaWxlLCBsaW5lX251bSApICk7Ci0gICAgfQotCi0gICAgbV9leGVjdXRpb25fcGF0aFttX2V4ZWNfcGF0aF9wb2ludF0ubV9zY29wZS5zaXplID0gMDsKLSAgICBtX2V4ZWN1dGlvbl9wYXRoW21fZXhlY19wYXRoX3BvaW50XS5tX3Njb3BlLm5hbWUgPSBzY29wZV9uYW1lLmJlZ2luKCk7Ci0KLSAgICByZXR1cm4gbV9leGVjX3BhdGhfcG9pbnQrKzsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotZXhjZXB0aW9uX3NhZmV0eV90ZXN0ZXI6OmxlYXZlX3Njb3BlKCB1bnNpZ25lZCBlbnRlcl9zY29wZV9wb2ludCApCi17Ci0gICAgYWN0aXZpdHlfZ3VhcmQgYWcoIG1faW50ZXJuYWxfYWN0aXZpdHkgKTsKLQotICAgIE5ETkJPT1NUX1JFUVVJUkVfTUVTU0FHRSggbV9leGVjdXRpb25fcGF0aFtlbnRlcl9zY29wZV9wb2ludF0ubV90eXBlID09IEVQUF9TQ09QRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJGdW5jdGlvbiB1bmRlciB0ZXN0IGV4aWJpdCBub24tZGV0ZXJtaW5pc3RpYyBiZWhhdmlvciIgKTsKLQotICAgIG1fZXhlY3V0aW9uX3BhdGhbZW50ZXJfc2NvcGVfcG9pbnRdLm1fc2NvcGUuc2l6ZSA9IG1fZXhlY19wYXRoX3BvaW50IC0gZW50ZXJfc2NvcGVfcG9pbnQ7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLWV4Y2VwdGlvbl9zYWZldHlfdGVzdGVyOjphbGxvY2F0ZWQoIGNvbnN0X3N0cmluZyBmaWxlLCBzdGQ6OnNpemVfdCBsaW5lX251bSwgdm9pZCogcCwgc3RkOjpzaXplX3QgcyApCi17Ci0gICAgaWYoIG1faW50ZXJuYWxfYWN0aXZpdHkgKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhY3Rpdml0eV9ndWFyZCBhZyggbV9pbnRlcm5hbF9hY3Rpdml0eSApOwotCi0gICAgaWYoIG1fZXhlY19wYXRoX3BvaW50IDwgbV9leGVjdXRpb25fcGF0aC5zaXplKCkgKQotICAgICAgICBORE5CT09TVF9SRVFVSVJFX01FU1NBR0UoIG1fZXhlY3V0aW9uX3BhdGhbbV9leGVjX3BhdGhfcG9pbnRdLm1fdHlwZSA9PSBFUFBfQUxMT0MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZ1bmN0aW9uIHVuZGVyIHRlc3QgZXhpYml0IG5vbi1kZXRlcm1pbmlzdGljIGJlaGF2aW9yIiApOwotICAgIGVsc2UKLSAgICAgICAgbV9leGVjdXRpb25fcGF0aC5wdXNoX2JhY2soCi0gICAgICAgICAgICBleGVjdXRpb25fcGF0aF9wb2ludCggRVBQX0FMTE9DLCBmaWxlLCBsaW5lX251bSApICk7Ci0KLSAgICBtX2V4ZWN1dGlvbl9wYXRoW21fZXhlY19wYXRoX3BvaW50XS5tX2FsbG9jLnB0ciAgPSBwOwotICAgIG1fZXhlY3V0aW9uX3BhdGhbbV9leGVjX3BhdGhfcG9pbnRdLm1fYWxsb2Muc2l6ZSA9IHM7Ci0KLSAgICBtX21lbW9yeV9pbl91c2UuaW5zZXJ0KCBzdGQ6Om1ha2VfcGFpciggcCwgbV9leGVjX3BhdGhfcG9pbnQrKyApICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLWV4Y2VwdGlvbl9zYWZldHlfdGVzdGVyOjpmcmVlZCggdm9pZCogcCApCi17Ci0gICAgaWYoIG1faW50ZXJuYWxfYWN0aXZpdHkgKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhY3Rpdml0eV9ndWFyZCBhZyggbV9pbnRlcm5hbF9hY3Rpdml0eSApOwotCi0gICAgcmVnaXN0cnk6Oml0ZXJhdG9yIGl0ID0gbV9tZW1vcnlfaW5fdXNlLmZpbmQoIHAgKTsKLSAgICBpZiggaXQgIT0gbV9tZW1vcnlfaW5fdXNlLmVuZCgpICkgewotICAgICAgICBtX2V4ZWN1dGlvbl9wYXRoW2l0LT5zZWNvbmRdLm1fYWxsb2MucHRyID0gMDsKLSAgICAgICAgbV9tZW1vcnlfaW5fdXNlLmVyYXNlKCBpdCApOwotICAgIH0KLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotZXhjZXB0aW9uX3NhZmV0eV90ZXN0ZXI6OmFzc2VydGlvbl9yZXN1bHQoIGJvb2wgcGFzc2VkICkKLXsKLSAgICBpZiggIW1faW50ZXJuYWxfYWN0aXZpdHkgJiYgIXBhc3NlZCApIHsKLSAgICAgICAgbV9pbnZhaXJhbnRfZmFpbGVkID0gdHJ1ZTsKLQotICAgICAgICBmYWlsdXJlX3BvaW50KCk7Ci0gICAgfQotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1leGNlcHRpb25fc2FmZXR5X3Rlc3Rlcjo6ZmFpbHVyZV9wb2ludCgpCi17Ci0gICAgaWYoIG1fZXhlY19wYXRoX2NvdW50ZXIgPT0gbV9icmVha19leGVjX3BhdGggKQotICAgICAgICBkZWJ1Zzo6ZGVidWdnZXJfYnJlYWsoKTsKLSAgICAKLSAgICB0aHJvdyB1bmlxdWVfZXhjZXB0aW9uKCk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0gICAgCi1uYW1lc3BhY2UgewotCi1pbmxpbmUgdm9pZAotZm9ybWF0X2xvY2F0aW9uKCB3cmFwX3N0cmluZ3N0cmVhbSYgZm9ybWF0dGVyLCBleGVjdXRpb25fcGF0aF9wb2ludCBjb25zdCYgLypwKi8sIHVuc2lnbmVkIGluZGVudCApCi17Ci0gICAgaWYoIGluZGVudCApCi0gICAgICAgIGZvcm1hdHRlciA8PCBzdGQ6OmxlZnQgPDwgc3RkOjpzZXR3KCBpbmRlbnQgKSA8PCAiIjsKLQotLy8gISEgPz8gb3B0aW9uYWwgICBpZiggcC5tX2ZpbGVfbmFtZSApCi0vLyAgICAgICAgZm9ybWF0dGVyIDw8IHAubV9maWxlX25hbWUgPDwgJygnIDw8IHAubV9saW5lX251bSA8PCAiKTogIjsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgRXhlY1BhdGhJdD4KLWlubGluZSB2b2lkCi1mb3JtYXRfZXhlY3V0aW9uX3BhdGgoIHdyYXBfc3RyaW5nc3RyZWFtJiBmb3JtYXR0ZXIsIEV4ZWNQYXRoSXQgaXQsIEV4ZWNQYXRoSXQgZW5kLCB1bnNpZ25lZCBpbmRlbnQgPSAwICkKLXsKLSAgICB3aGlsZSggaXQgIT0gZW5kICkgewotICAgICAgICBzd2l0Y2goIGl0LT5tX3R5cGUgKSB7Ci0gICAgICAgIGNhc2UgRVBQX1NDT1BFOgotICAgICAgICAgICAgZm9ybWF0X2xvY2F0aW9uKCBmb3JtYXR0ZXIsICppdCwgaW5kZW50ICk7Ci0gICAgICAgICAgICBmb3JtYXR0ZXIgPDwgIj4gXCIiIDw8IGl0LT5tX3Njb3BlLm5hbWUgPDwgIlwiXG4iOwotICAgICAgICAgICAgZm9ybWF0X2V4ZWN1dGlvbl9wYXRoKCBmb3JtYXR0ZXIsIGl0KzEsIGl0ICsgaXQtPm1fc2NvcGUuc2l6ZSwgaW5kZW50ICsgMiApOwotICAgICAgICAgICAgZm9ybWF0X2xvY2F0aW9uKCBmb3JtYXR0ZXIsICppdCwgaW5kZW50ICk7Ci0gICAgICAgICAgICBmb3JtYXR0ZXIgPDwgIjwgXCIiIDw8IGl0LT5tX3Njb3BlLm5hbWUgPDwgIlwiXG4iOwotICAgICAgICAgICAgaXQgKz0gaXQtPm1fc2NvcGUuc2l6ZTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgRVBQX0RFQ0lTSU9OOgotICAgICAgICAgICAgZm9ybWF0X2xvY2F0aW9uKCBmb3JtYXR0ZXIsICppdCwgaW5kZW50ICk7Ci0gICAgICAgICAgICBmb3JtYXR0ZXIgPDwgIkRlY2lzaW9uIG1hZGUgYXMgIiA8PCBzdGQ6OmJvb2xhbHBoYSA8PCBpdC0+bV9kZWNpc2lvbi52YWx1ZSA8PCAnXG4nOwotICAgICAgICAgICAgKytpdDsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgRVBQX0VYQ0VQVDoKLSAgICAgICAgICAgIGZvcm1hdF9sb2NhdGlvbiggZm9ybWF0dGVyLCAqaXQsIGluZGVudCApOwotICAgICAgICAgICAgZm9ybWF0dGVyIDw8ICJGb3JjZWQgZmFpbHVyZSI7Ci0gICAgICAgICAgICBpZiggaXQtPm1fZXhjZXB0LmRlc2NyaXB0aW9uICkKLSAgICAgICAgICAgICAgICBmb3JtYXR0ZXIgPDwgIjogIiA8PCBpdC0+bV9leGNlcHQuZGVzY3JpcHRpb247Ci0gICAgICAgICAgICBmb3JtYXR0ZXIgPDwgIlxuIjsKLSAgICAgICAgICAgICsraXQ7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIEVQUF9BTExPQzoKLSAgICAgICAgICAgIGlmKCBpdC0+bV9hbGxvYy5wdHIgKSB7Ci0gICAgICAgICAgICAgICAgZm9ybWF0X2xvY2F0aW9uKCBmb3JtYXR0ZXIsICppdCwgaW5kZW50ICk7Ci0gICAgICAgICAgICAgICAgZm9ybWF0dGVyIDw8ICJBbGxvY2F0ZWQgbWVtb3J5IGJsb2NrIDB4IiA8PCBzdGQ6OnVwcGVyY2FzZSA8PCBpdC0+bV9hbGxvYy5wdHIgCi0gICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICIsICIgPDwgaXQtPm1fYWxsb2Muc2l6ZSA8PCAiIGJ5dGVzIGxvbmc6IDwiOwotCi0gICAgICAgICAgICAgICAgdW5zaWduZWQgaTsKLSAgICAgICAgICAgICAgICBmb3IoIGkgPSAwOyBpIDwgc3RkOjptaW48c3RkOjpzaXplX3Q+KCBpdC0+bV9hbGxvYy5zaXplLCA4ICk7IGkrKyApIHsKLSAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBjID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KGl0LT5tX2FsbG9jLnB0cilbaV07Ci0gICAgICAgICAgICAgICAgICAgIGlmKCAoc3RkOjppc3ByaW50KSggYyApICkKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlciA8PCBjOwotICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZXIgPDwgJy4nOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGZvcm1hdHRlciA8PCAiPiAiOwotCi0gICAgICAgICAgICAgICAgZm9yKCBpID0gMDsgaSA8IHN0ZDo6bWluPHN0ZDo6c2l6ZV90PiggaXQtPm1fYWxsb2Muc2l6ZSwgOCApOyBpKysgKSB7Ci0gICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGMgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4oaXQtPm1fYWxsb2MucHRyKVtpXTsKLSAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVyIDw8IHN0ZDo6aGV4IDw8IHN0ZDo6dXBwZXJjYXNlIDw8IGMgPDwgJyAnOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGZvcm1hdHRlciA8PCAiXG4iOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgKytpdDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIGxvY2FsIG5hbWVzcGFjZQotCi12b2lkCi1leGNlcHRpb25fc2FmZXR5X3Rlc3Rlcjo6cmVwb3J0X2Vycm9yKCkKLXsKLSAgICBhY3Rpdml0eV9ndWFyZCBhZyggbV9pbnRlcm5hbF9hY3Rpdml0eSApOwotCi0gICAgdW5pdF90ZXN0X2xvZyA8PCB1bml0X3Rlc3Q6OmxvZzo6YmVnaW4oIG1fZXhlY3V0aW9uX3BhdGguYmFjaygpLm1fZmlsZV9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2V4ZWN1dGlvbl9wYXRoLmJhY2soKS5tX2xpbmVfbnVtICkKLSAgICAgICAgICAgICAgICAgIDw8IGxvZ19hbGxfZXJyb3JzOwotCi0gICAgd3JhcF9zdHJpbmdzdHJlYW0gZm9ybWF0dGVyOwotCi0gICAgaWYoIG1faW52YWlyYW50X2ZhaWxlZCApCi0gICAgICAgIGZvcm1hdHRlciA8PCAiRmFpbGVkIGludmFyaWFudCI7Ci0KLSAgICBpZiggbV9tZW1vcnlfaW5fdXNlLnNpemUoKSAhPSAwICkgewotICAgICAgICBpZiggbV9pbnZhaXJhbnRfZmFpbGVkICkKLSAgICAgICAgICAgIGZvcm1hdHRlciA8PCAiIGFuZCAiOwotCi0gICAgICAgIGZvcm1hdHRlciA8PCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KG1fbWVtb3J5X2luX3VzZS5zaXplKCkpIDw8ICIgbWVtb3J5IGxlYWsiOwotICAgICAgICBpZiggbV9tZW1vcnlfaW5fdXNlLnNpemUoKSA+IDEgKQotICAgICAgICAgICAgZm9ybWF0dGVyIDw8ICdzJzsKLSAgICB9Ci0gICAgZm9ybWF0dGVyIDw8ICIgZGV0ZWN0ZWQgaW4gdGhlIGV4ZWN1dGlvbiBwYXRoICIgPDwgbV9leGVjX3BhdGhfY291bnRlciA8PCAiOlxuIjsKLQotICAgIGZvcm1hdF9leGVjdXRpb25fcGF0aCggZm9ybWF0dGVyLCBtX2V4ZWN1dGlvbl9wYXRoLmJlZ2luKCksIG1fZXhlY3V0aW9uX3BhdGguZW5kKCkgKTsKLQotICAgIHVuaXRfdGVzdF9sb2cgPDwgY29uc3Rfc3RyaW5nKCBmb3JtYXR0ZXIuc3RyKCkgKSA8PCB1bml0X3Rlc3Q6OmxvZzo6ZW5kKCk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICBleGNlcHRpb24gc2FmZXR5IHRlc3QgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdm9pZCBORE5CT09TVF9URVNUX0RFQ0wKLWV4Y2VwdGlvbl9zYWZldHkoIGNhbGxiYWNrMDw+IGNvbnN0JiBGLCBjb25zdF9zdHJpbmcgdGVzdF9uYW1lICkKLXsKLSAgICBleGNlcHRpb25fc2FmZXR5X3Rlc3RlciBlc3QoIHRlc3RfbmFtZSApOwotCi0gICAgZG8gewotICAgICAgICB0cnkgewotICAgICAgICAgICAgRigpOwotICAgICAgICB9Ci0gICAgICAgIGNhdGNoKCBleGNlcHRpb25fc2FmZXR5X3Rlc3Rlcjo6dW5pcXVlX2V4Y2VwdGlvbiBjb25zdCYgKSB7fQotCi0gICAgfSB3aGlsZSggZXN0Lm5leHRfZXhlY3V0aW9uX3BhdGgoKSApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19ICAvLyBuYW1lc3BhY2UgaXRlc3QKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBub24tYW5jaWVudCBjb21waWxlcgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9FWEVDVVRJT05fU0FGRVRZX0lQUF8xMTIwMDVHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL2V4ZWN1dGlvbl9tb25pdG9yLmlwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL2V4ZWN1dGlvbl9tb25pdG9yLmlwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzE1OTkzZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC9leGVjdXRpb25fbW9uaXRvci5pcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzY3ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDEtMjAwOC4KLS8vICAoQykgQ29weXJpZ2h0IEJlbWFuIERhd2VzIGFuZCBVbGxyaWNoIEtvZXRoZSAxOTk1LTIwMDEuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1Nzk5MiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogcHJvdmlkZXMgZXhlY3V0aW9uIG1vbml0b3IgaW1wbGVtZW50YXRpb24gZm9yIGFsbCBzdXBwb3J0ZWQKLS8vICBjb25maWd1cmF0aW9ucywgaW5jbHVkaW5nIE1pY3Jvc29mdCBzdHJ1Y3R1cmVkIGV4Y2VwdGlvbiBiYXNlZCwgdW5peCBzaWduYWxzCi0vLyAgYmFzZWQgYW5kIHNwZWNpYWwgd29ya2Fyb3VuZHMgZm9yIGJvcmxhbmQKLS8vCi0vLyAgTm90ZSB0aGF0IHdoZW4gdGVzdGluZyByZXF1aXJlbWVudHMgb3IgdXNlciB3aXNoZXMgcHJlY2x1ZGUgdXNlIG9mIHRoaXMKLS8vICBmaWxlIGFzIGEgc2VwYXJhdGUgY29tcGlsYXRpb24gdW5pdCwgaXQgbWF5IGJlIGluY2x1ZGVkIGFzIGEgaGVhZGVyIGZpbGUuCi0vLwotLy8gIEhlYWRlciBkZXBlbmRlbmNpZXMgYXJlIGRlbGliZXJhdGVseSByZXN0cmljdGVkIHRvIHJlZHVjZSBjb3VwbGluZyB0byBvdGhlcgotLy8gIGJvb3N0IGxpYnJhcmllcy4KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfRVhFQ1VUSU9OX01PTklUT1JfSVBQXzAxMjIwNUdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX0VYRUNVVElPTl9NT05JVE9SX0lQUF8wMTIyMDVHRVIKLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9leGVjdXRpb25fbW9uaXRvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZWJ1Zy5ocHA+Ci0KLS8vIEJvb3N0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY3N0ZGxpYi5ocHA+ICAgIC8vIGZvciBleGl0IGNvZGVzCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4gICAgIC8vIGZvciB3b3JrYXJvdW5kcwotI2luY2x1ZGUgPG5kbmJvb3N0L2V4Y2VwdGlvbi9nZXRfZXJyb3JfaW5mby5ocHA+IC8vIGZvciBnZXRfZXJyb3JfaW5mbwotI2luY2x1ZGUgPG5kbmJvb3N0L2V4Y2VwdGlvbi9jdXJyZW50X2V4Y2VwdGlvbl9jYXN0LmhwcD4gLy8gZm9yIGN1cnJlbnRfZXhjZXB0aW9uX2Nhc3QKLQotLy8gU1RMCi0jaW5jbHVkZSA8c3RyaW5nPiAgICAgICAgICAgICAgIC8vIGZvciBzdGQ6OnN0cmluZwotI2luY2x1ZGUgPG5ldz4gICAgICAgICAgICAgICAgICAvLyBmb3Igc3RkOjpiYWRfYWxsb2MKLSNpbmNsdWRlIDx0eXBlaW5mbz4gICAgICAgICAgICAgLy8gZm9yIHN0ZDo6YmFkX2Nhc3QsIHN0ZDo6YmFkX3R5cGVpZAotI2luY2x1ZGUgPGV4Y2VwdGlvbj4gICAgICAgICAgICAvLyBmb3Igc3RkOjpleGNlcHRpb24sIHN0ZDo6YmFkX2V4Y2VwdGlvbgotI2luY2x1ZGUgPHN0ZGV4Y2VwdD4gICAgICAgICAgICAvLyBmb3Igc3RkIGV4Y2VwdGlvbiBoaWVyYXJjaHkKLSNpbmNsdWRlIDxjc3RyaW5nPiAgICAgICAgICAgICAgLy8gZm9yIEMgc3RyaW5nIEFQSQotI2luY2x1ZGUgPGNhc3NlcnQ+ICAgICAgICAgICAgICAvLyBmb3IgYXNzZXJ0Ci0jaW5jbHVkZSA8Y3N0ZGRlZj4gICAgICAgICAgICAgIC8vIGZvciBOVUxMCi0jaW5jbHVkZSA8Y3N0ZGlvPiAgICAgICAgICAgICAgIC8vIGZvciB2c25wcmludGYKLSNpbmNsdWRlIDxjc3RkYXJnPiAgICAgICAgICAgICAgLy8gZm9yIHZhcmFyZ3MKLQotI2lmZGVmIE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFCi1uYW1lc3BhY2Ugc3RkIHsgdXNpbmcgOjpzdHJlcnJvcjsgdXNpbmcgOjpzdHJsZW47IHVzaW5nIDo6c3RybmNhdDsgfQotI2VuZGlmCi0KLS8vIHRvIHVzZSB2c25wcmludGYKLSNpZiBkZWZpbmVkKF9fU1VOUFJPX0NDKSB8fCBkZWZpbmVkKF9fU3VuT1MpCi0jICBpbmNsdWRlIDxzdGRpby5oPgotIyAgaW5jbHVkZSA8c3RkYXJnLmg+Ci11c2luZyBzdGQ6OnZhX2xpc3Q7Ci0jZW5kaWYKLQotLy8gdG8gdXNlIHZzbnByaW50ZiAKLSNpZiBkZWZpbmVkKF9fUU5YTlRPX18pIAotIyAgaW5jbHVkZSA8c3RkaW8uaD4gCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoX1dJTjMyKSAmJiAhZGVmaW5lZChORE5CT09TVF9ESVNBQkxFX1dJTjMyKSAmJiAgICAgICAgICAgICAgICAgIFwKLSAgICAoIWRlZmluZWQoX19DT01PX18pICYmICFkZWZpbmVkKF9fTVdFUktTX18pICYmICFkZWZpbmVkKF9fR05VQ19fKSB8fCBcCi0gICAgIE5ETkJPT1NUX1dPUktBUk9VTkQoX19NV0VSS1NfXywgPj0gMHgzMDAwKSkKLQotIyAgZGVmaW5lIE5ETkJPT1NUX1NFSF9CQVNFRF9TSUdOQUxfSEFORExJTkcKLQotIyAgaW5jbHVkZSA8d2luZG93cy5oPgotCi0jICBpZiBkZWZpbmVkKF9fTVdFUktTX18pIHx8IChkZWZpbmVkKF9NU0NfVkVSKSAmJiAhZGVmaW5lZChVTkRFUl9DRSkpCi0jICAgIGluY2x1ZGUgPGVoLmg+Ci0jICBlbmRpZgotCi0jICBpZiBkZWZpbmVkKF9fQk9STEFORENfXykgJiYgX19CT1JMQU5EQ19fID49IDB4NTYwIHx8IGRlZmluZWQoX19NV0VSS1NfXykKLSMgICAgaW5jbHVkZSA8c3RkaW50Lmg+Ci0jICBlbmRpZgotCi0jICBpZiBkZWZpbmVkKF9fQk9STEFORENfXykgJiYgX19CT1JMQU5EQ19fIDwgMHg1NjAKLSAgICB0eXBlZGVmIHVuc2lnbmVkIHVpbnRwdHJfdDsKLSMgIGVuZGlmCi0KLSMgIGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoX01TQ19WRVIsICA8IDEzMDAgKSB8fCBkZWZpbmVkKFVOREVSX0NFKQotdHlwZWRlZiB2b2lkKiB1aW50cHRyX3Q7Ci0jICBlbmRpZgotCi0vLyBmb3IgdGhlIEZQIGNvbnRyb2wgcm91dGluZXMKLSNpbmNsdWRlIDxmbG9hdC5oPgotCi0jaWZuZGVmIEVNX0lOVkFMSUQKLSNkZWZpbmUgRU1fSU5WQUxJRCBfRU1fSU5WQUxJRAotI2VuZGlmCi0KLSNpZm5kZWYgRU1fREVOT1JNQUwKLSNkZWZpbmUgRU1fREVOT1JNQUwgX0VNX0RFTk9STUFMCi0jZW5kaWYKLQotI2lmbmRlZiBFTV9aRVJPRElWSURFCi0jZGVmaW5lIEVNX1pFUk9ESVZJREUgX0VNX1pFUk9ESVZJREUKLSNlbmRpZgotCi0jaWZuZGVmIEVNX09WRVJGTE9XCi0jZGVmaW5lIEVNX09WRVJGTE9XIF9FTV9PVkVSRkxPVwotI2VuZGlmCi0KLSNpZm5kZWYgRU1fVU5ERVJGTE9XCi0jZGVmaW5lIEVNX1VOREVSRkxPVyBfRU1fVU5ERVJGTE9XCi0jZW5kaWYKLQotI2lmbmRlZiBNQ1dfRU0KLSNkZWZpbmUgTUNXX0VNIF9NQ1dfRU0KLSNlbmRpZgotCi0jICBpZiAhZGVmaW5lZChOREVCVUcpICYmIGRlZmluZWQoX01TQ19WRVIpICYmICFkZWZpbmVkKFVOREVSX0NFKQotIyAgICBpbmNsdWRlIDxjcnRkYmcuaD4KLSMgICAgZGVmaW5lIE5ETkJPT1NUX1RFU1RfQ1JUX0hPT0tfVFlQRSAgICBfQ1JUX1JFUE9SVF9IT09LCi0jICAgIGRlZmluZSBORE5CT09TVF9URVNUX0NSVF9BU1NFUlQgICAgICAgX0NSVF9BU1NFUlQKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1RFU1RfQ1JUX0VSUk9SICAgICAgICBfQ1JUX0VSUk9SCi0jICAgIGRlZmluZSBORE5CT09TVF9URVNUX0NSVF9TRVRfSE9PSyhIKSAgX0NydFNldFJlcG9ydEhvb2soSCkKLSMgIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1RFU1RfQ1JUX0hPT0tfVFlQRSAgICB2b2lkKgotIyAgICBkZWZpbmUgTkROQk9PU1RfVEVTVF9DUlRfQVNTRVJUICAgICAgIDIKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1RFU1RfQ1JUX0VSUk9SICAgICAgICAxCi0jICAgIGRlZmluZSBORE5CT09TVF9URVNUX0NSVF9TRVRfSE9PSyhIKSAgKHZvaWQqKShIKQotIyAgZW5kaWYKLQotIyAgaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX01TQ19WRVIsICA+PSAxNDAwICkgfHwgZGVmaW5lZChVTkRFUl9DRSkKLQotdHlwZWRlZiB2b2lkKiBfaW52YWxpZF9wYXJhbWV0ZXJfaGFuZGxlcjsKLQotaW5saW5lIF9pbnZhbGlkX3BhcmFtZXRlcl9oYW5kbGVyCi1fc2V0X2ludmFsaWRfcGFyYW1ldGVyX2hhbmRsZXIoIF9pbnZhbGlkX3BhcmFtZXRlcl9oYW5kbGVyIGFyZyApCi17Ci0gICAgcmV0dXJuIGFyZzsKLX0KLQotIyAgZW5kaWYKLQotIyAgaWYgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDA1NjQpKSB8fCBkZWZpbmVkKFVOREVSX0NFKQotCi1uYW1lc3BhY2UgeyB2b2lkIF9zZXRfc2VfdHJhbnNsYXRvciggdm9pZCogKSB7fSB9Ci0KLSMgIGVuZGlmCi0KLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfSEFTX1NJR0FDVElPTikKLQotIyAgZGVmaW5lIE5ETkJPT1NUX1NJR0FDVElPTl9CQVNFRF9TSUdOQUxfSEFORExJTkcKLQotIyAgaW5jbHVkZSA8dW5pc3RkLmg+Ci0jICBpbmNsdWRlIDxzaWduYWwuaD4KLSMgIGluY2x1ZGUgPHNldGptcC5oPgotCi0jICBpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSAgCi0KLSMgICAgaWZuZGVmIFNJR1BPTEwKLSMgICAgICBkZWZpbmUgU0lHUE9MTCBTSUdJTwotIyAgICBlbmRpZgotCi0jICAgIGlmIChfX0ZyZWVCU0RfdmVyc2lvbiA8IDcwMTAwKQotCi0jICAgICAgZGVmaW5lIElMTF9JTExBRFIgMCAvLyBJTExfUkVTQURfRkFVTFQKLSMgICAgICBkZWZpbmUgSUxMX1BSVk9QQyBJTExfUFJJVklOX0ZBVUxUCi0jICAgICAgZGVmaW5lIElMTF9JTExPUE4gMiAvLyBJTExfUkVTT1BfRkFVTFQKLSMgICAgICBkZWZpbmUgSUxMX0NPUFJPQyBJTExfRlBPUF9GQVVMVAotCi0jICAgICAgZGVmaW5lIE5ETkJPT1NUX1RFU1RfTElNSVRFRF9TSUdOQUxfREVUQUlMUwotIyAgICAgIGRlZmluZSBORE5CT09TVF9URVNUX0lHTk9SRV9TSUdDSExECi0KLSMgICAgZW5kaWYgCi0jICBlbmRpZiAKLQotIyAgaWYgIWRlZmluZWQoX19DWUdXSU5fXykgJiYgIWRlZmluZWQoX19RTlhOVE9fXykKLSMgICBkZWZpbmUgTkROQk9PU1RfVEVTVF9VU0VfQUxUX1NUQUNLCi0jICBlbmRpZgotCi0jICBpZiBkZWZpbmVkKFNJR1BPTEwpICYmICFkZWZpbmVkKF9fQ1lHV0lOX18pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgXAotICAgICAgIShkZWZpbmVkKG1hY2ludG9zaCkgfHwgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoX19BUFBMRV9DQ19fKSkgICYmIFwKLSAgICAgICFkZWZpbmVkKF9fTmV0QlNEX18pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBcCi0gICAgICAhZGVmaW5lZChfX1FOWE5UT19fKQotIyAgICBkZWZpbmUgTkROQk9PU1RfVEVTVF9DQVRDSF9TSUdQT0xMCi0jICBlbmRpZgotCi0jICBpZmRlZiBORE5CT09TVF9URVNUX1VTRV9BTFRfU1RBQ0sKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1RFU1RfQUxUX1NUQUNLX1NJWkUgU0lHU1RLU1oKLSMgIGVuZGlmCi0KLSNlbHNlCi0KLSMgIGRlZmluZSBORE5CT09TVF9OT19TSUdOQUxfSEFORExJTkcKLQotI2VuZGlmCi0KLSNpZm5kZWYgVU5ERVJfQ0UKLSNpbmNsdWRlIDxlcnJuby5oPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgIHJlcG9ydF9lcnJvciAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLSNpZmRlZiBfX0JPUkxBTkRDX18KLSMgIGRlZmluZSBORE5CT09TVF9URVNUX1ZTTlBSSU5URiggYTEsIGEyLCBhMywgYTQgKSBzdGQ6OnZzbnByaW50ZiggKGExKSwgKGEyKSwgKGEzKSwgKGE0KSApCi0jZWxpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9NU0NfVkVSLCA8PSAxMzEwKSB8fCBcCi0gICAgICBORE5CT09TVF9XT1JLQVJPVU5EKF9fTVdFUktTX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDMwMDApKSB8fCBcCi0gICAgICBkZWZpbmVkKFVOREVSX0NFKQotIyAgZGVmaW5lIE5ETkJPT1NUX1RFU1RfVlNOUFJJTlRGKCBhMSwgYTIsIGEzLCBhNCApIF92c25wcmludGYoIChhMSksIChhMiksIChhMyksIChhNCkgKQotI2Vsc2UKLSMgIGRlZmluZSBORE5CT09TVF9URVNUX1ZTTlBSSU5URiggYTEsIGEyLCBhMywgYTQgKSB2c25wcmludGYoIChhMSksIChhMiksIChhMyksIChhNCkgKQotI2VuZGlmCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBFcnJvckluZm8+Ci10eXBlbmFtZSBFcnJvckluZm86OnZhbHVlX3R5cGUKLWV4dHJhY3QoIG5kbmJvb3N0OjpleGNlcHRpb24gY29uc3QqIGV4ICkKLXsKLSAgICBpZiggIWV4ICkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICB0eXBlbmFtZSBFcnJvckluZm86OnZhbHVlX3R5cGUgY29uc3QgKiB2YWwgPSBuZG5ib29zdDo6Z2V0X2Vycm9yX2luZm88RXJyb3JJbmZvPiggKmV4ICk7Ci0KLSAgICByZXR1cm4gdmFsID8gKnZhbCA6IDA7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXN0YXRpYyB2b2lkCi1yZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OmVycm9yX2NvZGUgZWMsIG5kbmJvb3N0OjpleGNlcHRpb24gY29uc3QqIGJlLCBjaGFyIGNvbnN0KiBmb3JtYXQsIHZhX2xpc3QqIGFyZ3MgKQotewotICAgIHN0YXRpYyBjb25zdCBpbnQgUkVQT1JUX0VSUk9SX0JVRkZFUl9TSVpFID0gNTEyOwotICAgIHN0YXRpYyBjaGFyIGJ1ZltSRVBPUlRfRVJST1JfQlVGRkVSX1NJWkVdOwotCi0gICAgTkROQk9PU1RfVEVTVF9WU05QUklOVEYoIGJ1Ziwgc2l6ZW9mKGJ1ZiktMSwgZm9ybWF0LCAqYXJncyApOyAKLSAgICBidWZbc2l6ZW9mKGJ1ZiktMV0gPSAwOwotCi0gICAgdmFfZW5kKCAqYXJncyApOwotCi0gICAgdGhyb3cgZXhlY3V0aW9uX2V4Y2VwdGlvbiggZWMsIGJ1ZiwgZXhlY3V0aW9uX2V4Y2VwdGlvbjo6bG9jYXRpb24oIGV4dHJhY3Q8dGhyb3dfZmlsZT4oIGJlICksIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYWN0PHRocm93X2xpbmU+KCBiZSApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYWN0PHRocm93X2Z1bmN0aW9uPiggYmUgKSApICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXN0YXRpYyB2b2lkCi1yZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OmVycm9yX2NvZGUgZWMsIGNoYXIgY29uc3QqIGZvcm1hdCwgLi4uICkKLXsKLSAgICB2YV9saXN0IGFyZ3M7Ci0gICAgdmFfc3RhcnQoIGFyZ3MsIGZvcm1hdCApOwotCi0gICAgcmVwb3J0X2Vycm9yKCBlYywgMCwgZm9ybWF0LCAmYXJncyApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1zdGF0aWMgdm9pZAotcmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjplcnJvcl9jb2RlIGVjLCBuZG5ib29zdDo6ZXhjZXB0aW9uIGNvbnN0KiBiZSwgY2hhciBjb25zdCogZm9ybWF0LCAuLi4gKQotewotICAgIHZhX2xpc3QgYXJnczsKLSAgICB2YV9zdGFydCggYXJncywgZm9ybWF0ICk7Ci0KLSAgICByZXBvcnRfZXJyb3IoIGVjLCBiZSwgZm9ybWF0LCAmYXJncyApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUcix0eXBlbmFtZSBGdW5jdG9yPgotaW5saW5lIGludAotZG9faW52b2tlKCBUciBjb25zdCYgdHIsIEZ1bmN0b3IgY29uc3QmIEYgKQotewotICAgIHJldHVybiB0ciA/ICgqdHIpKCBGICkgOiBGKCk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi0jaWYgZGVmaW5lZChORE5CT09TVF9TSUdBQ1RJT05fQkFTRURfU0lHTkFMX0hBTkRMSU5HKQotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgU2lnYWN0aW9uIGJhc2VkIHNpZ25hbCBoYW5kbGluZyAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgbmRuYm9vc3Q6OmRldGFpbDo6c3lzdGVtX3NpZ25hbF9leGNlcHRpb24gICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWNsYXNzIHN5c3RlbV9zaWduYWxfZXhjZXB0aW9uIHsKLXB1YmxpYzoKLSAgICAvLyBDb25zdHJ1Y3RvcgotICAgIHN5c3RlbV9zaWduYWxfZXhjZXB0aW9uKCkKLSAgICA6IG1fc2lnX2luZm8oIDAgKQotICAgICwgbV9jb250ZXh0KCAwICkKLSAgICB7fQotCi0gICAgLy8gQWNjZXNzIG1ldGhvZHMKLSAgICB2b2lkICAgICAgICBvcGVyYXRvcigpKCBzaWdpbmZvX3QqIGksIHZvaWQqIGMgKQotICAgIHsKLSAgICAgICAgbV9zaWdfaW5mbyAgPSBpOwotICAgICAgICBtX2NvbnRleHQgICA9IGM7Ci0gICAgfQotICAgIHZvaWQgICAgICAgIHJlcG9ydCgpIGNvbnN0OwotCi1wcml2YXRlOgotICAgIC8vIERhdGEgbWVtYmVycwotICAgIHNpZ2luZm9fdCogIG1fc2lnX2luZm87IC8vIHN5c3RlbSBzaWduYWwgZGV0YWlsZWQgaW5mbwotICAgIHZvaWQqICAgICAgIG1fY29udGV4dDsgIC8vIHNpZ25hbCBjb250ZXh0Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1zeXN0ZW1fc2lnbmFsX2V4Y2VwdGlvbjo6cmVwb3J0KCkgY29uc3QKLXsKLSAgICBpZiggIW1fc2lnX2luZm8gKQotICAgICAgICByZXR1cm47IC8vIG5vIGVycm9yIGFjdHVhbGx5IG9jY3VyPwotCi0gICAgc3dpdGNoKCBtX3NpZ19pbmZvLT5zaV9jb2RlICkgewotICAgIGNhc2UgU0lfVVNFUjoKLSAgICAgICAgcmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgInNpZ25hbDogZ2VuZXJhdGVkIGJ5IGtpbGwoKSAob3IgZmFtaWx5KTsgdWlkPSVkOyBwaWQ9JWQiLAotICAgICAgICAgICAgICAgICAgICAgIChpbnQpbV9zaWdfaW5mby0+c2lfdWlkLCAoaW50KW1fc2lnX2luZm8tPnNpX3BpZCApOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFNJX1FVRVVFOgotICAgICAgICByZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAic2lnbmFsOiBzZW50IGJ5IHNpZ3F1ZXVlKCkiICk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgU0lfVElNRVI6Ci0gICAgICAgIHJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICJzaWduYWw6IHRoZSBleHBpcmF0aW9uIG9mIGEgdGltZXIgc2V0IGJ5IHRpbWVyX3NldHRpbWVyKCkiICk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgU0lfQVNZTkNJTzoKLSAgICAgICAgcmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgInNpZ25hbDogZ2VuZXJhdGVkIGJ5IHRoZSBjb21wbGV0aW9uIG9mIGFuIGFzeW5jaHJvbm91cyBJL08gcmVxdWVzdCIgKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTSV9NRVNHUToKLSAgICAgICAgcmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgInNpZ25hbDogZ2VuZXJhdGVkIGJ5IHRoZSB0aGUgYXJyaXZhbCBvZiBhIG1lc3NhZ2Ugb24gYW4gZW1wdHkgbWVzc2FnZSBxdWV1ZSIgKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgc3dpdGNoKCBtX3NpZ19pbmZvLT5zaV9zaWdubyApIHsKLSAgICBjYXNlIFNJR0lMTDoKLSAgICAgICAgc3dpdGNoKCBtX3NpZ19pbmZvLT5zaV9jb2RlICkgewotI2lmbmRlZiBORE5CT09TVF9URVNUX0xJTUlURURfU0lHTkFMX0RFVEFJTFMKLSAgICAgICAgY2FzZSBJTExfSUxMT1BDOgotICAgICAgICAgICAgcmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZmF0YWxfZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJzaWduYWw6IGlsbGVnYWwgb3Bjb2RlOyBhZGRyZXNzIG9mIGZhaWxpbmcgaW5zdHJ1Y3Rpb246IDB4JTA4bHgiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBtX3NpZ19pbmZvLT5zaV9hZGRyICk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBJTExfSUxMVFJQOgotICAgICAgICAgICAgcmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZmF0YWxfZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJzaWduYWw6IGlsbGVnYWwgdHJhcDsgYWRkcmVzcyBvZiBmYWlsaW5nIGluc3RydWN0aW9uOiAweCUwOGx4IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbV9zaWdfaW5mby0+c2lfYWRkciApOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgSUxMX1BSVlJFRzoKLSAgICAgICAgICAgIHJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2ZhdGFsX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAic2lnbmFsOiBwcml2aWxlZ2VkIHJlZ2lzdGVyOyBhZGRyZXNzIG9mIGZhaWxpbmcgaW5zdHJ1Y3Rpb246IDB4JTA4bHgiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBtX3NpZ19pbmZvLT5zaV9hZGRyICk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBJTExfQkFEU1RLOgotICAgICAgICAgICAgcmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZmF0YWxfZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJzaWduYWw6IGludGVybmFsIHN0YWNrIGVycm9yOyBhZGRyZXNzIG9mIGZhaWxpbmcgaW5zdHJ1Y3Rpb246IDB4JTA4bHgiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBtX3NpZ19pbmZvLT5zaV9hZGRyICk7Ci0gICAgICAgICAgICBicmVhazsKLSNlbmRpZgotICAgICAgICBjYXNlIElMTF9JTExPUE46Ci0gICAgICAgICAgICByZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9mYXRhbF9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgInNpZ25hbDogaWxsZWdhbCBvcGVyYW5kOyBhZGRyZXNzIG9mIGZhaWxpbmcgaW5zdHJ1Y3Rpb246IDB4JTA4bHgiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBtX3NpZ19pbmZvLT5zaV9hZGRyICk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBJTExfSUxMQURSOgotICAgICAgICAgICAgcmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZmF0YWxfZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJzaWduYWw6IGlsbGVnYWwgYWRkcmVzc2luZyBtb2RlOyBhZGRyZXNzIG9mIGZhaWxpbmcgaW5zdHJ1Y3Rpb246IDB4JTA4bHgiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBtX3NpZ19pbmZvLT5zaV9hZGRyICk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBJTExfUFJWT1BDOgotICAgICAgICAgICAgcmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZmF0YWxfZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJzaWduYWw6IHByaXZpbGVnZWQgb3Bjb2RlOyBhZGRyZXNzIG9mIGZhaWxpbmcgaW5zdHJ1Y3Rpb246IDB4JTA4bHgiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBtX3NpZ19pbmZvLT5zaV9hZGRyICk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBJTExfQ09QUk9DOgotICAgICAgICAgICAgcmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZmF0YWxfZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJzaWduYWw6IGNvLXByb2Nlc3NvciBlcnJvcjsgYWRkcmVzcyBvZiBmYWlsaW5nIGluc3RydWN0aW9uOiAweCUwOGx4IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbV9zaWdfaW5mby0+c2lfYWRkciApOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6IAotICAgICAgICAgICAgcmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZmF0YWxfZXJyb3IsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAic2lnbmFsOiBTSUdJTEwsIHNpX2NvZGU6ICVkIChpbGxlZ2FsIGluc3RydWN0aW9uOyBhZGRyZXNzIG9mIGZhaWxpbmcgaW5zdHJ1Y3Rpb246IDB4JTA4bHgpIiwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG1fc2lnX2luZm8tPnNpX2FkZHIsIG1fc2lnX2luZm8tPnNpX2NvZGUgKTsgCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgU0lHRlBFOgotICAgICAgICBzd2l0Y2goIG1fc2lnX2luZm8tPnNpX2NvZGUgKSB7Ci0gICAgICAgIGNhc2UgRlBFX0lOVERJVjoKLSAgICAgICAgICAgIHJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAic2lnbmFsOiBpbnRlZ2VyIGRpdmlkZSBieSB6ZXJvOyBhZGRyZXNzIG9mIGZhaWxpbmcgaW5zdHJ1Y3Rpb246IDB4JTA4bHgiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBtX3NpZ19pbmZvLT5zaV9hZGRyICk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBGUEVfSU5UT1ZGOgotICAgICAgICAgICAgcmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJzaWduYWw6IGludGVnZXIgb3ZlcmZsb3c7IGFkZHJlc3Mgb2YgZmFpbGluZyBpbnN0cnVjdGlvbjogMHglMDhseCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG1fc2lnX2luZm8tPnNpX2FkZHIgKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEZQRV9GTFRESVY6Ci0gICAgICAgICAgICByZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgInNpZ25hbDogZmxvYXRpbmcgcG9pbnQgZGl2aWRlIGJ5IHplcm87IGFkZHJlc3Mgb2YgZmFpbGluZyBpbnN0cnVjdGlvbjogMHglMDhseCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG1fc2lnX2luZm8tPnNpX2FkZHIgKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEZQRV9GTFRPVkY6Ci0gICAgICAgICAgICByZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgInNpZ25hbDogZmxvYXRpbmcgcG9pbnQgb3ZlcmZsb3c7IGFkZHJlc3Mgb2YgZmFpbGluZyBpbnN0cnVjdGlvbjogMHglMDhseCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG1fc2lnX2luZm8tPnNpX2FkZHIgKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEZQRV9GTFRVTkQ6Ci0gICAgICAgICAgICByZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgInNpZ25hbDogZmxvYXRpbmcgcG9pbnQgdW5kZXJmbG93OyBhZGRyZXNzIG9mIGZhaWxpbmcgaW5zdHJ1Y3Rpb246IDB4JTA4bHgiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBtX3NpZ19pbmZvLT5zaV9hZGRyICk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBGUEVfRkxUUkVTOgotICAgICAgICAgICAgcmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJzaWduYWw6IGZsb2F0aW5nIHBvaW50IGluZXhhY3QgcmVzdWx0OyBhZGRyZXNzIG9mIGZhaWxpbmcgaW5zdHJ1Y3Rpb246IDB4JTA4bHgiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBtX3NpZ19pbmZvLT5zaV9hZGRyICk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBGUEVfRkxUSU5WOgotICAgICAgICAgICAgcmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJzaWduYWw6IGludmFsaWQgZmxvYXRpbmcgcG9pbnQgb3BlcmF0aW9uOyBhZGRyZXNzIG9mIGZhaWxpbmcgaW5zdHJ1Y3Rpb246IDB4JTA4bHgiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBtX3NpZ19pbmZvLT5zaV9hZGRyICk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBGUEVfRkxUU1VCOgotICAgICAgICAgICAgcmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJzaWduYWw6IHN1YnNjcmlwdCBvdXQgb2YgcmFuZ2U7IGFkZHJlc3Mgb2YgZmFpbGluZyBpbnN0cnVjdGlvbjogMHglMDhseCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG1fc2lnX2luZm8tPnNpX2FkZHIgKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJzaWduYWw6IFNJR0ZQRSwgc2lfY29kZTogJWQgKGVycm5vbmVvdXMgYXJpdGhtZXRpYyBvcGVyYXRpb25zOyBhZGRyZXNzIG9mIGZhaWxpbmcgaW5zdHJ1Y3Rpb246IDB4JTA4bHgpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbV9zaWdfaW5mby0+c2lfYWRkciwgbV9zaWdfaW5mby0+c2lfY29kZSApOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFNJR1NFR1Y6Ci0gICAgICAgIHN3aXRjaCggbV9zaWdfaW5mby0+c2lfY29kZSApIHsKLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9MSU1JVEVEX1NJR05BTF9ERVRBSUxTCi0gICAgICAgIGNhc2UgU0VHVl9NQVBFUlI6Ci0gICAgICAgICAgICByZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9mYXRhbF9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIm1lbW9yeSBhY2Nlc3MgdmlvbGF0aW9uIGF0IGFkZHJlc3M6IDB4JTA4bHg6IG5vIG1hcHBpbmcgYXQgZmF1bHQgYWRkcmVzcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG1fc2lnX2luZm8tPnNpX2FkZHIgKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFNFR1ZfQUNDRVJSOgotICAgICAgICAgICAgcmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZmF0YWxfZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJtZW1vcnkgYWNjZXNzIHZpb2xhdGlvbiBhdCBhZGRyZXNzOiAweCUwOGx4OiBpbnZhbGlkIHBlcm1pc3Npb25zIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbV9zaWdfaW5mby0+c2lfYWRkciApOwotICAgICAgICAgICAgYnJlYWs7Ci0jZW5kaWYKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2ZhdGFsX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAic2lnbmFsOiBTSUdTRUdWLCBzaV9jb2RlOiAlZCAobWVtb3J5IGFjY2VzcyB2aW9sYXRpb24gYXQgYWRkcmVzczogMHglMDhseCkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBtX3NpZ19pbmZvLT5zaV9hZGRyLCBtX3NpZ19pbmZvLT5zaV9jb2RlICk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgU0lHQlVTOgotICAgICAgICBzd2l0Y2goIG1fc2lnX2luZm8tPnNpX2NvZGUgKSB7Ci0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfTElNSVRFRF9TSUdOQUxfREVUQUlMUwotICAgICAgICBjYXNlIEJVU19BRFJBTE46Ci0gICAgICAgICAgICByZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9mYXRhbF9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIm1lbW9yeSBhY2Nlc3MgdmlvbGF0aW9uIGF0IGFkZHJlc3M6IDB4JTA4bHg6IGludmFsaWQgYWRkcmVzcyBhbGlnbm1lbnQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBtX3NpZ19pbmZvLT5zaV9hZGRyICk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBCVVNfQURSRVJSOgotICAgICAgICAgICAgcmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZmF0YWxfZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJtZW1vcnkgYWNjZXNzIHZpb2xhdGlvbiBhdCBhZGRyZXNzOiAweCUwOGx4OiBub24tZXhpc3RlbnQgcGh5c2ljYWwgYWRkcmVzcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG1fc2lnX2luZm8tPnNpX2FkZHIgKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEJVU19PQkpFUlI6Ci0gICAgICAgICAgICByZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9mYXRhbF9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIm1lbW9yeSBhY2Nlc3MgdmlvbGF0aW9uIGF0IGFkZHJlc3M6IDB4JTA4bHg6IG9iamVjdCBzcGVjaWZpYyBoYXJkd2FyZSBlcnJvciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG1fc2lnX2luZm8tPnNpX2FkZHIgKTsKLSAgICAgICAgICAgIGJyZWFrOwotI2VuZGlmCi0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9mYXRhbF9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgInNpZ25hbDogU0lHU0VHViwgc2lfY29kZTogJWQgKG1lbW9yeSBhY2Nlc3MgdmlvbGF0aW9uIGF0IGFkZHJlc3M6IDB4JTA4bHgpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbV9zaWdfaW5mby0+c2lfYWRkciwgbV9zaWdfaW5mby0+c2lfY29kZSApOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFNJR0NITEQ6Ci0gICAgICAgIHN3aXRjaCggbV9zaWdfaW5mby0+c2lfY29kZSApIHsKLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9MSU1JVEVEX1NJR05BTF9ERVRBSUxTCi0gICAgICAgIGNhc2UgQ0xEX0VYSVRFRDoKLSAgICAgICAgICAgIHJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiY2hpbGQgaGFzIGV4aXRlZDsgcGlkOiAlZDsgdWlkOiAlZDsgZXhpdCB2YWx1ZTogJWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KW1fc2lnX2luZm8tPnNpX3BpZCwgKGludCltX3NpZ19pbmZvLT5zaV91aWQsIChpbnQpbV9zaWdfaW5mby0+c2lfc3RhdHVzICk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDTERfS0lMTEVEOgotICAgICAgICAgICAgcmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJjaGlsZCB3YXMga2lsbGVkOyBwaWQ6ICVkOyB1aWQ6ICVkOyBleGl0IHZhbHVlOiAlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpbV9zaWdfaW5mby0+c2lfcGlkLCAoaW50KW1fc2lnX2luZm8tPnNpX3VpZCwgKGludCltX3NpZ19pbmZvLT5zaV9zdGF0dXMgKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENMRF9EVU1QRUQ6Ci0gICAgICAgICAgICByZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgImNoaWxkIHRlcm1pbmF0ZWQgYWJub3JtYWxseTsgcGlkOiAlZDsgdWlkOiAlZDsgZXhpdCB2YWx1ZTogJWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KW1fc2lnX2luZm8tPnNpX3BpZCwgKGludCltX3NpZ19pbmZvLT5zaV91aWQsIChpbnQpbV9zaWdfaW5mby0+c2lfc3RhdHVzICk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDTERfVFJBUFBFRDoKLSAgICAgICAgICAgIHJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAidHJhY2VkIGNoaWxkIGhhcyB0cmFwcGVkOyBwaWQ6ICVkOyB1aWQ6ICVkOyBleGl0IHZhbHVlOiAlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpbV9zaWdfaW5mby0+c2lfcGlkLCAoaW50KW1fc2lnX2luZm8tPnNpX3VpZCwgKGludCltX3NpZ19pbmZvLT5zaV9zdGF0dXMgKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENMRF9TVE9QUEVEOgotICAgICAgICAgICAgcmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJjaGlsZCBoYXMgc3RvcHBlZDsgcGlkOiAlZDsgdWlkOiAlZDsgZXhpdCB2YWx1ZTogJWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KW1fc2lnX2luZm8tPnNpX3BpZCwgKGludCltX3NpZ19pbmZvLT5zaV91aWQsIChpbnQpbV9zaWdfaW5mby0+c2lfc3RhdHVzICk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDTERfQ09OVElOVUVEOgotICAgICAgICAgICAgcmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJzdG9wcGVkIGNoaWxkIGhhZCBjb250aW51ZWQ7IHBpZDogJWQ7IHVpZDogJWQ7IGV4aXQgdmFsdWU6ICVkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCltX3NpZ19pbmZvLT5zaV9waWQsIChpbnQpbV9zaWdfaW5mby0+c2lfdWlkLCAoaW50KW1fc2lnX2luZm8tPnNpX3N0YXR1cyApOwotICAgICAgICAgICAgYnJlYWs7Ci0jZW5kaWYKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAic2lnbmFsOiBTSUdDSExELCBzaV9jb2RlOiAlZCAoY2hpbGQgcHJvY2VzcyBoYXMgdGVybWluYXRlZDsgcGlkOiAlZDsgdWlkOiAlZDsgZXhpdCB2YWx1ZTogJWQpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCltX3NpZ19pbmZvLT5zaV9waWQsIChpbnQpbV9zaWdfaW5mby0+c2lfdWlkLCAoaW50KW1fc2lnX2luZm8tPnNpX3N0YXR1cywgbV9zaWdfaW5mby0+c2lfY29kZSApOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1RFU1RfQ0FUQ0hfU0lHUE9MTCkKLQotICAgIGNhc2UgU0lHUE9MTDoKLSAgICAgICAgc3dpdGNoKCBtX3NpZ19pbmZvLT5zaV9jb2RlICkgewotI2lmbmRlZiBORE5CT09TVF9URVNUX0xJTUlURURfU0lHTkFMX0RFVEFJTFMKLSAgICAgICAgY2FzZSBQT0xMX0lOOgotICAgICAgICAgICAgcmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJkYXRhIGlucHV0IGF2YWlsYWJsZTsgYmFuZCBldmVudCAlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpbV9zaWdfaW5mby0+c2lfYmFuZCApOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgUE9MTF9PVVQ6Ci0gICAgICAgICAgICByZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIm91dHB1dCBidWZmZXJzIGF2YWlsYWJsZTsgYmFuZCBldmVudCAlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpbV9zaWdfaW5mby0+c2lfYmFuZCApOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgUE9MTF9NU0c6Ci0gICAgICAgICAgICByZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgImlucHV0IG1lc3NhZ2UgYXZhaWxhYmxlOyBiYW5kIGV2ZW50ICVkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCltX3NpZ19pbmZvLT5zaV9iYW5kICk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBQT0xMX0VSUjoKLSAgICAgICAgICAgIHJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiaS9vIGVycm9yOyBiYW5kIGV2ZW50ICVkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCltX3NpZ19pbmZvLT5zaV9iYW5kICk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBQT0xMX1BSSToKLSAgICAgICAgICAgIHJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAiaGlnaCBwcmlvcml0eSBpbnB1dCBhdmFpbGFibGU7IGJhbmQgZXZlbnQgJWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KW1fc2lnX2luZm8tPnNpX2JhbmQgKTsKLSAgICAgICAgICAgIGJyZWFrOwotI2lmIGRlZmluZWQoUE9MTF9FUlIpICYmIGRlZmluZWQoUE9MTF9IVVApICYmIChQT0xMX0VSUiAtIFBPTExfSFVQKQotICAgICAgICBjYXNlIFBPTExfSFVQOgotICAgICAgICAgICAgcmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJkZXZpY2UgZGlzY29ubmVjdGVkOyBiYW5kIGV2ZW50ICVkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCltX3NpZ19pbmZvLT5zaV9iYW5kICk7Ci0gICAgICAgICAgICBicmVhazsKLSNlbmRpZgotI2VuZGlmCi0gICAgICAgIGRlZmF1bHQ6IAotICAgICAgICAgICAgcmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZXJyb3IsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAic2lnbmFsOiBTSUdQT0xMLCBzaV9jb2RlOiAlZCAoYXN5bmNocm9ub3VzIEkvTyBldmVudCBvY2N1cmVkOyBiYW5kIGV2ZW50ICVkKSIsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KW1fc2lnX2luZm8tPnNpX2JhbmQsIG1fc2lnX2luZm8tPnNpX2NvZGUgKTsgCi0gICAgICAgICAgICBicmVhazsgCi0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0KLSNlbmRpZgotCi0gICAgY2FzZSBTSUdBQlJUOgotICAgICAgICByZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAic2lnbmFsOiBTSUdBQlJUIChhcHBsaWNhdGlvbiBhYm9ydCByZXF1ZXN0ZWQpIiApOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgU0lHQUxSTToKLSAgICAgICAgcmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjp0aW1lb3V0X2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICJzaWduYWw6IFNJR0FMUk0gKHRpbWVvdXQgd2hpbGUgZXhlY3V0aW5nIGZ1bmN0aW9uKSIgKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBkZWZhdWx0OgotICAgICAgICByZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9lcnJvciwgInVucmVjb2duaXplZCBzaWduYWwiICk7Ci0gICAgfQotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzaWduYWxfYWN0aW9uICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLS8vIEZvcndhcmQgZGVjbGFyYXRpb24KLWV4dGVybiAiQyIgewotc3RhdGljIHZvaWQgZXhlY3V0aW9uX21vbml0b3JfanVtcGluZ19zaWduYWxfaGFuZGxlciggaW50IHNpZywgc2lnaW5mb190KiBpbmZvLCB2b2lkKiBjb250ZXh0ICk7Ci1zdGF0aWMgdm9pZCBleGVjdXRpb25fbW9uaXRvcl9hdHRhY2hpbmdfc2lnbmFsX2hhbmRsZXIoIGludCBzaWcsIHNpZ2luZm9fdCogaW5mbywgdm9pZCogY29udGV4dCApOwotfQotCi1jbGFzcyBzaWduYWxfYWN0aW9uIHsKLSAgICB0eXBlZGVmIHN0cnVjdCBzaWdhY3Rpb24qIHNpZ2FjdGlvbl9wdHI7Ci1wdWJsaWM6Ci0gICAgLy9Db25zdHJ1Y3RvcgotICAgIHNpZ25hbF9hY3Rpb24oKTsKLSAgICBzaWduYWxfYWN0aW9uKCBpbnQgc2lnLCBib29sIGluc3RhbGwsIGJvb2wgYXR0YWNoX2RiZywgY2hhciogYWx0X3N0YWNrICk7Ci0gICAgfnNpZ25hbF9hY3Rpb24oKTsKLQotcHJpdmF0ZToKLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICBpbnQgICAgICAgICAgICAgICAgIG1fc2lnOwotICAgIGJvb2wgICAgICAgICAgICAgICAgbV9pbnN0YWxsZWQ7Ci0gICAgc3RydWN0IHNpZ2FjdGlvbiAgICBtX25ld19hY3Rpb247Ci0gICAgc3RydWN0IHNpZ2FjdGlvbiAgICBtX29sZF9hY3Rpb247Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1zaWduYWxfYWN0aW9uOjpzaWduYWxfYWN0aW9uKCkKLTogbV9pbnN0YWxsZWQoIGZhbHNlICkKLXt9Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXNpZ25hbF9hY3Rpb246OnNpZ25hbF9hY3Rpb24oIGludCBzaWcsIGJvb2wgaW5zdGFsbCwgYm9vbCBhdHRhY2hfZGJnLCBjaGFyKiBhbHRfc3RhY2sgKQotOiBtX3NpZyggc2lnICkKLSwgbV9pbnN0YWxsZWQoIGluc3RhbGwgKQotewotICAgIGlmKCAhaW5zdGFsbCApCi0gICAgICAgIHJldHVybjsKLQotICAgIHN0ZDo6bWVtc2V0KCAmbV9uZXdfYWN0aW9uLCAwLCBzaXplb2Yoc3RydWN0IHNpZ2FjdGlvbikgKTsKLQotICAgIE5ETkJPT1NUX1RFU1RfU1lTX0FTU0VSVCggOjpzaWdhY3Rpb24oIG1fc2lnICwgc2lnYWN0aW9uX3B0cigpLCAmbV9uZXdfYWN0aW9uICkgIT0gLTEgKTsKLQotICAgIGlmKCBtX25ld19hY3Rpb24uc2Ffc2lnYWN0aW9uIHx8IG1fbmV3X2FjdGlvbi5zYV9oYW5kbGVyICkgewotICAgICAgICBtX2luc3RhbGxlZCA9IGZhbHNlOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbV9uZXdfYWN0aW9uLnNhX2ZsYWdzICAgICB8PSBTQV9TSUdJTkZPOwotICAgIG1fbmV3X2FjdGlvbi5zYV9zaWdhY3Rpb24gID0gYXR0YWNoX2RiZyA/ICZleGVjdXRpb25fbW9uaXRvcl9hdHRhY2hpbmdfc2lnbmFsX2hhbmRsZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAmZXhlY3V0aW9uX21vbml0b3JfanVtcGluZ19zaWduYWxfaGFuZGxlcjsKLSAgICBORE5CT09TVF9URVNUX1NZU19BU1NFUlQoIHNpZ2VtcHR5c2V0KCAmbV9uZXdfYWN0aW9uLnNhX21hc2sgKSAhPSAtMSApOwotCi0jaWZkZWYgTkROQk9PU1RfVEVTVF9VU0VfQUxUX1NUQUNLCi0gICAgaWYoIGFsdF9zdGFjayApCi0gICAgICAgIG1fbmV3X2FjdGlvbi5zYV9mbGFncyB8PSBTQV9PTlNUQUNLOwotI2VuZGlmCi0KLSAgICBORE5CT09TVF9URVNUX1NZU19BU1NFUlQoIDo6c2lnYWN0aW9uKCBtX3NpZywgJm1fbmV3X2FjdGlvbiwgJm1fb2xkX2FjdGlvbiApICE9IC0xICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXNpZ25hbF9hY3Rpb246On5zaWduYWxfYWN0aW9uKCkKLXsKLSAgICBpZiggbV9pbnN0YWxsZWQgKQotICAgICAgICA6OnNpZ2FjdGlvbiggbV9zaWcsICZtX29sZF9hY3Rpb24gLCBzaWdhY3Rpb25fcHRyKCkgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICBuZG5ib29zdDo6ZGV0YWlsOjpzaWduYWxfaGFuZGxlciAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1jbGFzcyBzaWduYWxfaGFuZGxlciB7Ci1wdWJsaWM6Ci0gICAgLy8gQ29uc3RydWN0b3IKLSAgICBleHBsaWNpdCBzaWduYWxfaGFuZGxlciggYm9vbCBjYXRjaF9zeXN0ZW1fZXJyb3JzLCBpbnQgdGltZW91dCwgYm9vbCBhdHRhY2hfZGJnLCBjaGFyKiBhbHRfc3RhY2sgKTsKLQotICAgIC8vIERlc3RydWN0b3IKLSAgICB+c2lnbmFsX2hhbmRsZXIoKTsKLQotICAgIC8vIGFjY2VzcyBtZXRob2RzCi0gICAgc3RhdGljIHNpZ2ptcF9idWYmICAgICAganVtcF9idWZmZXIoKQotICAgIHsKLSAgICAgICAgYXNzZXJ0KCAhIXNfYWN0aXZlX2hhbmRsZXIgKTsKLQotICAgICAgICByZXR1cm4gc19hY3RpdmVfaGFuZGxlci0+bV9zaWdqbXBfYnVmOwotICAgIH0KLQotICAgIHN0YXRpYyBzeXN0ZW1fc2lnbmFsX2V4Y2VwdGlvbiYgIHN5c19zaWcoKQotICAgIHsKLSAgICAgICAgYXNzZXJ0KCAhIXNfYWN0aXZlX2hhbmRsZXIgKTsKLQotICAgICAgICByZXR1cm4gc19hY3RpdmVfaGFuZGxlci0+bV9zeXNfc2lnOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICBzaWduYWxfaGFuZGxlciogICAgICAgICBtX3ByZXZfaGFuZGxlcjsKLSAgICBpbnQgICAgICAgICAgICAgICAgICAgICBtX3RpbWVvdXQ7Ci0KLSAgICBzaWduYWxfYWN0aW9uICAgICAgICAgICBtX0lMTF9hY3Rpb247Ci0gICAgc2lnbmFsX2FjdGlvbiAgICAgICAgICAgbV9GUEVfYWN0aW9uOwotICAgIHNpZ25hbF9hY3Rpb24gICAgICAgICAgIG1fU0VHVl9hY3Rpb247Ci0gICAgc2lnbmFsX2FjdGlvbiAgICAgICAgICAgbV9CVVNfYWN0aW9uOwotICAgIHNpZ25hbF9hY3Rpb24gICAgICAgICAgIG1fQ0hMRF9hY3Rpb247Ci0gICAgc2lnbmFsX2FjdGlvbiAgICAgICAgICAgbV9QT0xMX2FjdGlvbjsKLSAgICBzaWduYWxfYWN0aW9uICAgICAgICAgICBtX0FCUlRfYWN0aW9uOwotICAgIHNpZ25hbF9hY3Rpb24gICAgICAgICAgIG1fQUxSTV9hY3Rpb247Ci0KLSAgICBzaWdqbXBfYnVmICAgICAgICAgICAgICBtX3NpZ2ptcF9idWY7Ci0gICAgc3lzdGVtX3NpZ25hbF9leGNlcHRpb24gbV9zeXNfc2lnOwotCi0gICAgc3RhdGljIHNpZ25hbF9oYW5kbGVyKiAgc19hY3RpdmVfaGFuZGxlcjsKLX07Ci0KLS8vICEhIG5lZWQgdG8gYmUgcGxhY2VkIGluIHRocmVhZCBzcGVjaWZpYyBzdG9yYWdlCi10eXBlZGVmIHNpZ25hbF9oYW5kbGVyKiBzaWduYWxfaGFuZGxlcl9wdHI7Ci1zaWduYWxfaGFuZGxlciogc2lnbmFsX2hhbmRsZXI6OnNfYWN0aXZlX2hhbmRsZXIgPSBzaWduYWxfaGFuZGxlcl9wdHIoKTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotc2lnbmFsX2hhbmRsZXI6OnNpZ25hbF9oYW5kbGVyKCBib29sIGNhdGNoX3N5c3RlbV9lcnJvcnMsIGludCB0aW1lb3V0LCBib29sIGF0dGFjaF9kYmcsIGNoYXIqIGFsdF9zdGFjayApCi06IG1fcHJldl9oYW5kbGVyKCBzX2FjdGl2ZV9oYW5kbGVyICkKLSwgbV90aW1lb3V0KCB0aW1lb3V0ICkKLSwgbV9JTExfYWN0aW9uICggU0lHSUxMICwgY2F0Y2hfc3lzdGVtX2Vycm9ycywgYXR0YWNoX2RiZywgYWx0X3N0YWNrICkKLSwgbV9GUEVfYWN0aW9uICggU0lHRlBFICwgY2F0Y2hfc3lzdGVtX2Vycm9ycywgYXR0YWNoX2RiZywgYWx0X3N0YWNrICkKLSwgbV9TRUdWX2FjdGlvbiggU0lHU0VHViwgY2F0Y2hfc3lzdGVtX2Vycm9ycywgYXR0YWNoX2RiZywgYWx0X3N0YWNrICkKLSwgbV9CVVNfYWN0aW9uICggU0lHQlVTICwgY2F0Y2hfc3lzdGVtX2Vycm9ycywgYXR0YWNoX2RiZywgYWx0X3N0YWNrICkKLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9JR05PUkVfU0lHQ0hMRAotLCBtX0NITERfYWN0aW9uKCBTSUdDSExELCBjYXRjaF9zeXN0ZW1fZXJyb3JzLCBhdHRhY2hfZGJnLCBhbHRfc3RhY2sgKQotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVEVTVF9DQVRDSF9TSUdQT0xMCi0sIG1fUE9MTF9hY3Rpb24oIFNJR1BPTEwsIGNhdGNoX3N5c3RlbV9lcnJvcnMsIGF0dGFjaF9kYmcsIGFsdF9zdGFjayApCi0jZW5kaWYKLSwgbV9BQlJUX2FjdGlvbiggU0lHQUJSVCwgY2F0Y2hfc3lzdGVtX2Vycm9ycywgYXR0YWNoX2RiZywgYWx0X3N0YWNrICkKLSwgbV9BTFJNX2FjdGlvbiggU0lHQUxSTSwgdGltZW91dCA+IDAgICAgICAgICwgYXR0YWNoX2RiZywgYWx0X3N0YWNrICkKLXsKLSAgICBzX2FjdGl2ZV9oYW5kbGVyID0gdGhpczsKLQotICAgIGlmKCBtX3RpbWVvdXQgPiAwICkgewotICAgICAgICA6OmFsYXJtKCAwICk7Ci0gICAgICAgIDo6YWxhcm0oIHRpbWVvdXQgKTsKLSAgICB9Ci0KLSNpZmRlZiBORE5CT09TVF9URVNUX1VTRV9BTFRfU1RBQ0sKLSAgICBpZiggYWx0X3N0YWNrICkgewotICAgICAgICBzdGFja190IHNpZ3N0azsKLSAgICAgICAgc3RkOjptZW1zZXQoICZzaWdzdGssIDAsIHNpemVvZihzdGFja190KSApOwotCi0gICAgICAgIE5ETkJPT1NUX1RFU1RfU1lTX0FTU0VSVCggOjpzaWdhbHRzdGFjayggMCwgJnNpZ3N0ayApICE9IC0xICk7Ci0KLSAgICAgICAgaWYoIHNpZ3N0ay5zc19mbGFncyAmIFNTX0RJU0FCTEUgKSB7Ci0gICAgICAgICAgICBzaWdzdGsuc3Nfc3AgICAgPSBhbHRfc3RhY2s7Ci0gICAgICAgICAgICBzaWdzdGsuc3Nfc2l6ZSAgPSBORE5CT09TVF9URVNUX0FMVF9TVEFDS19TSVpFOwotICAgICAgICAgICAgc2lnc3RrLnNzX2ZsYWdzID0gMDsKLSAgICAgICAgICAgIE5ETkJPT1NUX1RFU1RfU1lTX0FTU0VSVCggOjpzaWdhbHRzdGFjayggJnNpZ3N0aywgMCApICE9IC0xICk7Ci0gICAgICAgIH0KLSAgICB9Ci0jZW5kaWYKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotc2lnbmFsX2hhbmRsZXI6On5zaWduYWxfaGFuZGxlcigpCi17Ci0gICAgYXNzZXJ0KCBzX2FjdGl2ZV9oYW5kbGVyID09IHRoaXMgKTsKLQotICAgIGlmKCBtX3RpbWVvdXQgPiAwICkKLSAgICAgICAgOjphbGFybSggMCApOwotCi0jaWZkZWYgTkROQk9PU1RfVEVTVF9VU0VfQUxUX1NUQUNLCi0jaWZkZWYgX19HTlVDX18KLSAgICAvLyBXZSBzaG91bGRuJ3QgbmVlZCB0byBleHBsaWNpdGx5IGluaXRpYWxpemUgYWxsIHRoZSBtZW1iZXJzIGhlcmUsCi0gICAgLy8gYnV0IGdjYyB3YXJucyBpZiB3ZSBkb24ndCwgc28gYWRkIGluaXRpYWxpemVycyBmb3IgZWFjaCBvZiB0aGUKLSAgICAvLyBtZW1iZXJzIHNwZWNpZmllZCBpbiB0aGUgUE9TSVggc3RkOgotICAgIHN0YWNrX3Qgc2lnc3RrID0geyAwLCAwLCAwIH07Ci0jZWxzZQotICAgIHN0YWNrX3Qgc2lnc3RrID0geyB9OwotI2VuZGlmCi0KLSAgICBzaWdzdGsuc3Nfc2l6ZSAgPSBNSU5TSUdTVEtTWjsKLSAgICBzaWdzdGsuc3NfZmxhZ3MgPSBTU19ESVNBQkxFOwotICAgIE5ETkJPT1NUX1RFU1RfU1lTX0FTU0VSVCggOjpzaWdhbHRzdGFjayggJnNpZ3N0aywgMCApICE9IC0xICk7Ci0jZW5kaWYKLQotICAgIHNfYWN0aXZlX2hhbmRsZXIgPSBtX3ByZXZfaGFuZGxlcjsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgIGV4ZWN1dGlvbl9tb25pdG9yX3NpZ25hbF9oYW5kbGVyICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1leHRlcm4gIkMiIHsKLQotc3RhdGljIGJvb2wgaWdub3JlX3NpZ2NoaWxkKCBzaWdpbmZvX3QqIGluZm8gKQotewotICAgIHJldHVybiBpbmZvLT5zaV9zaWdubyA9PSBTSUdDSExECi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfTElNSVRFRF9TSUdOQUxfREVUQUlMUwotICAgICAgICAgICAgJiYgaW5mby0+c2lfY29kZSA9PSBDTERfRVhJVEVEIAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVEVTVF9JR05PUkVfTk9OX1pFUk9fQ0hJTERfQ09ERQotICAgICAgICAgICAgOwotI2Vsc2UKLSAgICAgICAgICAgICYmIChpbnQpaW5mby0+c2lfc3RhdHVzID09IDA7Ci0jZW5kaWYKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotc3RhdGljIHZvaWQgZXhlY3V0aW9uX21vbml0b3JfanVtcGluZ19zaWduYWxfaGFuZGxlciggaW50IHNpZywgc2lnaW5mb190KiBpbmZvLCB2b2lkKiBjb250ZXh0ICkKLXsKLSAgICBpZiggaWdub3JlX3NpZ2NoaWxkKCBpbmZvICkgKQotICAgICAgICByZXR1cm47Ci0KLSAgICBzaWduYWxfaGFuZGxlcjo6c3lzX3NpZygpKCBpbmZvLCBjb250ZXh0ICk7Ci0KLSAgICBzaWdsb25nam1wKCBzaWduYWxfaGFuZGxlcjo6anVtcF9idWZmZXIoKSwgc2lnICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXN0YXRpYyB2b2lkIGV4ZWN1dGlvbl9tb25pdG9yX2F0dGFjaGluZ19zaWduYWxfaGFuZGxlciggaW50IHNpZywgc2lnaW5mb190KiBpbmZvLCB2b2lkKiBjb250ZXh0ICkKLXsKLSAgICBpZiggaWdub3JlX3NpZ2NoaWxkKCBpbmZvICkgKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiggIWRlYnVnOjphdHRhY2hfZGVidWdnZXIoIGZhbHNlICkgKQotICAgICAgICBleGVjdXRpb25fbW9uaXRvcl9qdW1waW5nX3NpZ25hbF9oYW5kbGVyKCBzaWcsIGluZm8sIGNvbnRleHQgKTsKLQotICAgIC8vIGRlYnVnZ2VyIGF0dGFjaGVkOyBpdCB3aWxsIGhhbmRsZSB0aGUgc2lnbmFsCi0gICAgTkROQk9PU1RfVEVTVF9TWVNfQVNTRVJUKCA6OnNpZ25hbCggc2lnLCBTSUdfREZMICkgIT0gU0lHX0VSUiApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgIGV4ZWN1dGlvbl9tb25pdG9yOjpjYXRjaF9zaWduYWxzICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWludAotZXhlY3V0aW9uX21vbml0b3I6OmNhdGNoX3NpZ25hbHMoIHVuaXRfdGVzdDo6Y2FsbGJhY2swPGludD4gY29uc3QmIEYgKQotewotICAgIHVzaW5nIG5hbWVzcGFjZSBkZXRhaWw7Ci0KLSNpZiBkZWZpbmVkKF9fQ1lHV0lOX18pCi0gICAgcF9jYXRjaF9zeXN0ZW1fZXJyb3JzLnZhbHVlID0gZmFsc2U7Ci0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX1RFU1RfVVNFX0FMVF9TVEFDSwotICAgIGlmKCAhIXBfdXNlX2FsdF9zdGFjayAmJiAhbV9hbHRfc3RhY2sgKQotICAgICAgICBtX2FsdF9zdGFjay5yZXNldCggbmV3IGNoYXJbTkROQk9PU1RfVEVTVF9BTFRfU1RBQ0tfU0laRV0gKTsKLSNlbHNlCi0gICAgcF91c2VfYWx0X3N0YWNrLnZhbHVlID0gZmFsc2U7Ci0jZW5kaWYKLQotICAgIHNpZ25hbF9oYW5kbGVyIGxvY2FsX3NpZ25hbF9oYW5kbGVyKCBwX2NhdGNoX3N5c3RlbV9lcnJvcnMsIHBfdGltZW91dCwgcF9hdXRvX3N0YXJ0X2RiZywgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFwX3VzZV9hbHRfc3RhY2sgPyAwIDogbV9hbHRfc3RhY2suZ2V0KCkgKTsKLQotICAgIGlmKCAhc2lnc2V0am1wKCBzaWduYWxfaGFuZGxlcjo6anVtcF9idWZmZXIoKSwgMSApICkKLSAgICAgICAgcmV0dXJuIGRldGFpbDo6ZG9faW52b2tlKCBtX2N1c3RvbV90cmFuc2xhdG9ycyAsIEYgKTsKLSAgICBlbHNlCi0gICAgICAgIHRocm93IGxvY2FsX3NpZ25hbF9oYW5kbGVyLnN5c19zaWcoKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2VsaWYgZGVmaW5lZChORE5CT09TVF9TRUhfQkFTRURfU0lHTkFMX0hBTkRMSU5HKQotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICBNaWNyb3NvZnQgc3RydWN0dXJlZCBleGNlcHRpb24gaGFuZGxpbmcgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4MDU2NCkpCi1uYW1lc3BhY2UgeyB2b2lkIF9zZXRfc2VfdHJhbnNsYXRvciggdm9pZCogKSB7fSB9Ci0jZW5kaWYKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICBuZG5ib29zdDo6ZGV0YWlsOjpzeXN0ZW1fc2lnbmFsX2V4Y2VwdGlvbiAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotY2xhc3Mgc3lzdGVtX3NpZ25hbF9leGNlcHRpb24gewotcHVibGljOgotICAgIC8vIENvbnN0cnVjdG9yCi0gICAgZXhwbGljaXQgICAgICAgICAgICBzeXN0ZW1fc2lnbmFsX2V4Y2VwdGlvbiggZXhlY3V0aW9uX21vbml0b3IqIGVtICkKLSAgICA6IG1fZW0oIGVtICkKLSAgICAsIG1fc2VfaWQoIDAgKQotICAgICwgbV9mYXVsdF9hZGRyZXNzKCAwICkKLSAgICAsIG1fZGlyKCBmYWxzZSApCi0gICAge30KLQotICAgIHZvaWQgICAgICAgICAgICAgICAgcmVwb3J0KCkgY29uc3Q7Ci0gICAgaW50ICAgICAgICAgICAgICAgICBvcGVyYXRvcigpKCB1bnNpZ25lZCBpbnQgaWQsIF9FWENFUFRJT05fUE9JTlRFUlMqIGV4cHMgKTsKLQotcHJpdmF0ZToKLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICBleGVjdXRpb25fbW9uaXRvciogIG1fZW07Ci0KLSAgICB1bnNpZ25lZCBpbnQgICAgICAgIG1fc2VfaWQ7Ci0gICAgdm9pZCogICAgICAgICAgICAgICBtX2ZhdWx0X2FkZHJlc3M7Ci0gICAgYm9vbCAgICAgICAgICAgICAgICBtX2RpcjsKLX07Ci0KLXN0YXRpYyB2b2lkCi1zZWhfY2F0Y2hfcHJldmVudGVyKCB1bnNpZ25lZCBpbnQgLyogaWQgKi8sIF9FWENFUFRJT05fUE9JTlRFUlMqIC8qIGV4cHMgKi8gKQotewotICAgIHRocm93OwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1pbnQKLXN5c3RlbV9zaWduYWxfZXhjZXB0aW9uOjpvcGVyYXRvcigpKCB1bnNpZ25lZCBpbnQgaWQsIF9FWENFUFRJT05fUE9JTlRFUlMqIGV4cHMgKQotewotICAgIGNvbnN0IHVuc2lnbmVkIGludCBNU0ZUX0NQUF9FWENFUFQgPSAweEUwNmQ3MzYzOyAvLyBFTVNDCi0KLSAgICBpZiggIW1fZW0tPnBfY2F0Y2hfc3lzdGVtX2Vycm9ycyB8fCAoaWQgPT0gTVNGVF9DUFBfRVhDRVBUKSApCi0gICAgICAgIHJldHVybiBFWENFUFRJT05fQ09OVElOVUVfU0VBUkNIOwotCi0gICAgaWYoICEhbV9lbS0+cF9hdXRvX3N0YXJ0X2RiZyAmJiBkZWJ1Zzo6YXR0YWNoX2RlYnVnZ2VyKCBmYWxzZSApICkgewotICAgICAgICBtX2VtLT5wX2NhdGNoX3N5c3RlbV9lcnJvcnMudmFsdWUgPSBmYWxzZTsKLSAgICAgICAgX3NldF9zZV90cmFuc2xhdG9yKCAmc2VoX2NhdGNoX3ByZXZlbnRlciApOwotCi0gICAgICAgIHJldHVybiBFWENFUFRJT05fQ09OVElOVUVfRVhFQ1VUSU9OOwotICAgIH0KLQotICAgIG1fc2VfaWQgPSBpZDsKLSAgICBpZiggbV9zZV9pZCA9PSBFWENFUFRJT05fQUNDRVNTX1ZJT0xBVElPTiAmJiBleHBzLT5FeGNlcHRpb25SZWNvcmQtPk51bWJlclBhcmFtZXRlcnMgPT0gMiApIHsKLSAgICAgICAgbV9mYXVsdF9hZGRyZXNzID0gKHZvaWQqKWV4cHMtPkV4Y2VwdGlvblJlY29yZC0+RXhjZXB0aW9uSW5mb3JtYXRpb25bMV07Ci0gICAgICAgIG1fZGlyICAgICAgICAgICA9IGV4cHMtPkV4Y2VwdGlvblJlY29yZC0+RXhjZXB0aW9uSW5mb3JtYXRpb25bMF0gPT0gMDsKLSAgICB9Ci0KLSAgICByZXR1cm4gRVhDRVBUSU9OX0VYRUNVVEVfSEFORExFUjsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotc3lzdGVtX3NpZ25hbF9leGNlcHRpb246OnJlcG9ydCgpIGNvbnN0Ci17Ci0gICAgc3dpdGNoKCBtX3NlX2lkICkgewotICAgIC8vIGNhc2VzIGNsYXNzaWZpZWQgYXMgc3lzdGVtX2ZhdGFsX2Vycm9yCi0gICAgY2FzZSBFWENFUFRJT05fQUNDRVNTX1ZJT0xBVElPTjogewotICAgICAgICBpZiggIW1fZmF1bHRfYWRkcmVzcyApCi0gICAgICAgICAgICBkZXRhaWw6OnJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2ZhdGFsX2Vycm9yLCAibWVtb3J5IGFjY2VzcyB2aW9sYXRpb24iICk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGRldGFpbDo6cmVwb3J0X2Vycm9yKAotICAgICAgICAgICAgICAgIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9mYXRhbF9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgIm1lbW9yeSBhY2Nlc3MgdmlvbGF0aW9uIG9jY3VycmVkIGF0IGFkZHJlc3MgMHglMDhseCwgd2hpbGUgYXR0ZW1wdGluZyB0byAlcyIsCi0gICAgICAgICAgICAgICAgICAgIG1fZmF1bHRfYWRkcmVzcywKLSAgICAgICAgICAgICAgICAgICAgbV9kaXIgPyAiIHJlYWQgaW5hY2Nlc3NpYmxlIGRhdGEiCi0gICAgICAgICAgICAgICAgICAgICAgICAgIDogIiB3cml0ZSB0byBhbiBpbmFjY2Vzc2libGUgKG9yIHByb3RlY3RlZCkgYWRkcmVzcyIKLSAgICAgICAgICAgICAgICAgICAgKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgY2FzZSBFWENFUFRJT05fSUxMRUdBTF9JTlNUUlVDVElPTjoKLSAgICAgICAgZGV0YWlsOjpyZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9mYXRhbF9lcnJvciwgImlsbGVnYWwgaW5zdHJ1Y3Rpb24iICk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBFWENFUFRJT05fUFJJVl9JTlNUUlVDVElPTjoKLSAgICAgICAgZGV0YWlsOjpyZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9mYXRhbF9lcnJvciwgInRyaWVkIHRvIGV4ZWN1dGUgYW4gaW5zdHJ1Y3Rpb24gd2hvc2Ugb3BlcmF0aW9uIGlzIG5vdCBhbGxvd2VkIGluIHRoZSBjdXJyZW50IG1hY2hpbmUgbW9kZSIgKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIEVYQ0VQVElPTl9JTl9QQUdFX0VSUk9SOgotICAgICAgICBkZXRhaWw6OnJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2ZhdGFsX2Vycm9yLCAiYWNjZXNzIHRvIGEgbWVtb3J5IHBhZ2UgdGhhdCBpcyBub3QgcHJlc2VudCIgKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIEVYQ0VQVElPTl9TVEFDS19PVkVSRkxPVzoKLSAgICAgICAgZGV0YWlsOjpyZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9mYXRhbF9lcnJvciwgInN0YWNrIG92ZXJmbG93IiApOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgRVhDRVBUSU9OX05PTkNPTlRJTlVBQkxFX0VYQ0VQVElPTjoKLSAgICAgICAgZGV0YWlsOjpyZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9mYXRhbF9lcnJvciwgInRyaWVkIHRvIGNvbnRpbnVlIGV4ZWN1dGlvbiBhZnRlciBhIG5vbiBjb250aW51YWJsZSBleGNlcHRpb24gb2NjdXJyZWQiICk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgLy8gY2FzZXMgY2xhc3NpZmllZCBhcyAobm9uLWZhdGFsKSBzeXN0ZW1fdHJhcAotICAgIGNhc2UgRVhDRVBUSU9OX0RBVEFUWVBFX01JU0FMSUdOTUVOVDoKLSAgICAgICAgZGV0YWlsOjpyZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9lcnJvciwgImRhdGEgbWlzYWxpZ25tZW50IiApOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgRVhDRVBUSU9OX0lOVF9ESVZJREVfQllfWkVSTzoKLSAgICAgICAgZGV0YWlsOjpyZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9lcnJvciwgImludGVnZXIgZGl2aWRlIGJ5IHplcm8iICk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBFWENFUFRJT05fSU5UX09WRVJGTE9XOgotICAgICAgICBkZXRhaWw6OnJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2Vycm9yLCAiaW50ZWdlciBvdmVyZmxvdyIgKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIEVYQ0VQVElPTl9BUlJBWV9CT1VORFNfRVhDRUVERUQ6Ci0gICAgICAgIGRldGFpbDo6cmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZXJyb3IsICJhcnJheSBib3VuZHMgZXhjZWVkZWQiICk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBFWENFUFRJT05fRkxUX0RJVklERV9CWV9aRVJPOgotICAgICAgICBkZXRhaWw6OnJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2Vycm9yLCAiZmxvYXRpbmcgcG9pbnQgZGl2aWRlIGJ5IHplcm8iICk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBFWENFUFRJT05fRkxUX1NUQUNLX0NIRUNLOgotICAgICAgICBkZXRhaWw6OnJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0YWNrIG92ZXJmbG93ZWQgb3IgdW5kZXJmbG93ZWQgYXMgdGhlIHJlc3VsdCBvZiBhIGZsb2F0aW5nLXBvaW50IG9wZXJhdGlvbiIgKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIEVYQ0VQVElPTl9GTFRfREVOT1JNQUxfT1BFUkFORDoKLSAgICAgICAgZGV0YWlsOjpyZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvcGVyYW5kIG9mIGZsb2F0aW5nIHBvaW50IG9wZXJhdGlvbiBpcyBkZW5vcm1hbCIgKTsKLSAgICAgICAgYnJlYWs7Ci0KLSMgaWYgMCAvLyAhISA/PyAKLSAgICBjYXNlIEVYQ0VQVElPTl9GTFRfSU5FWEFDVF9SRVNVTFQ6Ci0gICAgICAgIGRldGFpbDo6cmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVzdWx0IG9mIGEgZmxvYXRpbmctcG9pbnQgb3BlcmF0aW9uIGNhbm5vdCBiZSByZXByZXNlbnRlZCBleGFjdGx5IiApOwotICAgICAgICBicmVhazsKLSNlbmRpZgotCi0gICAgY2FzZSBFWENFUFRJT05fRkxUX09WRVJGTE9XOgotICAgICAgICBkZXRhaWw6OnJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4cG9uZW50IG9mIGEgZmxvYXRpbmctcG9pbnQgb3BlcmF0aW9uIGlzIGdyZWF0ZXIgdGhhbiB0aGUgbWFnbml0dWRlIGFsbG93ZWQgYnkgdGhlIGNvcnJlc3BvbmRpbmcgdHlwZSIgKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIEVYQ0VQVElPTl9GTFRfVU5ERVJGTE9XOgotICAgICAgICBkZXRhaWw6OnJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4cG9uZW50IG9mIGEgZmxvYXRpbmctcG9pbnQgb3BlcmF0aW9uIGlzIGxlc3MgdGhhbiB0aGUgbWFnbml0dWRlIGFsbG93ZWQgYnkgdGhlIGNvcnJlc3BvbmRpbmcgdHlwZSIgKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIEVYQ0VQVElPTl9GTFRfSU5WQUxJRF9PUEVSQVRJT046Ci0gICAgICAgIGRldGFpbDo6cmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpzeXN0ZW1fZXJyb3IsICJmbG9hdGluZyBwb2ludCBlcnJvciIgKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIEVYQ0VQVElPTl9CUkVBS1BPSU5UOgotICAgICAgICBkZXRhaWw6OnJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2Vycm9yLCAiYnJlYWtwb2ludCBlbmNvdW50ZXJlZCIgKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBkZWZhdWx0OgotICAgICAgICBkZXRhaWw6OnJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6c3lzdGVtX2Vycm9yLCAidW5yZWNvZ25pemVkIGV4Y2VwdGlvbi4gSWQ6IDB4JTA4bHgiLCBtX3NlX2lkICk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgIGFzc2VydF9yZXBvcnRpbmdfZnVuY3Rpb24gICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1pbnQgTkROQk9PU1RfVEVTVF9DQUxMX0RFQ0wKLWFzc2VydF9yZXBvcnRpbmdfZnVuY3Rpb24oIGludCByZXBvcnRUeXBlLCBjaGFyKiB1c2VyTWVzc2FnZSwgaW50KiApCi17Ci0gICAgc3dpdGNoKCByZXBvcnRUeXBlICkgewotICAgIGNhc2UgTkROQk9PU1RfVEVTVF9DUlRfQVNTRVJUOgotICAgICAgICBkZXRhaWw6OnJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6dXNlcl9lcnJvciwgdXNlck1lc3NhZ2UgKTsKLQotICAgICAgICByZXR1cm4gMTsgLy8gcmV0dXJuIHZhbHVlIGFuZCByZXRWYWwgYXJlIG5vdCBpbXBvcnRhbnQgc2luY2Ugd2UgbmV2ZXIgcmVhY2ggdGhpcyBsaW5lCi0gICAgY2FzZSBORE5CT09TVF9URVNUX0NSVF9FUlJPUjoKLSAgICAgICAgZGV0YWlsOjpyZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9lcnJvciwgdXNlck1lc3NhZ2UgKTsKLQotICAgICAgICByZXR1cm4gMTsgLy8gcmV0dXJuIHZhbHVlIGFuZCByZXRWYWwgYXJlIG5vdCBpbXBvcnRhbnQgc2luY2Ugd2UgbmV2ZXIgcmVhY2ggdGhpcyBsaW5lCi0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIDA7IC8vIHVzZSB1c3VhbCByZXBvcnRpbmcgbWV0aG9kCi0gICAgfQotfSAvLyBhc3NlcnRfcmVwb3J0aW5nX2Z1bmN0aW9uCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQgTkROQk9PU1RfVEVTVF9DQUxMX0RFQ0wKLWludmFsaWRfcGFyYW1faGFuZGxlciggd2NoYXJfdCBjb25zdCogLyogZXhwciAqLywgCi0gICAgICAgICAgICAgICAgICAgICAgIHdjaGFyX3QgY29uc3QqIC8qIGZ1bmMgKi8sIAotICAgICAgICAgICAgICAgICAgICAgICB3Y2hhcl90IGNvbnN0KiAvKiBmaWxlICovLCAKLSAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50ICAgLyogbGluZSAqLywKLSAgICAgICAgICAgICAgICAgICAgICAgdWludHB0cl90ICAgICAgLyogcmVzZXJ2ZWQgKi8pCi17Ci0gICAgZGV0YWlsOjpyZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OnVzZXJfZXJyb3IsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAiSW52YWxpZCBwYXJhbWV0ZXIgZGV0ZWN0ZWQgYnkgQyBydW50aW1lIGxpYnJhcnkiICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQgTkROQk9PU1RfVEVTVF9DQUxMX0RFQ0wKLXN3aXRjaF9mcF9leGNlcHRpb25zKCBib29sIG9uX29mZiApCi17Ci0gICAgaWYoICFvbl9vZmYgKQotICAgICAgICBfY2xlYXJmcCgpOwotCi0gICAgaW50IGN3ID0gOjpfY29udHJvbGZwKCAwLCAwICk7Ci0KLSAgICBpbnQgZXhjZXB0aW9uc19tYXNrID0gRU1fSU5WQUxJRHxFTV9ERU5PUk1BTHxFTV9aRVJPRElWSURFfEVNX09WRVJGTE9XfEVNX1VOREVSRkxPVzsKLQotICAgIGlmKCBvbl9vZmYgKQotICAgICAgICBjdyAmPSB+ZXhjZXB0aW9uc19tYXNrOyAvLyBTZXQgdGhlIGV4Y2VwdGlvbiBtYXNrcyBvbiwgdHVybiBleGNlcHRpb25zIG9mZgotICAgIGVsc2UKLSAgICAgICAgY3cgfD0gZXhjZXB0aW9uc19tYXNrOyAgLy8gU2V0IHRoZSBleGNlcHRpb24gbWFza3Mgb2ZmLCB0dXJuIGV4Y2VwdGlvbnMgb24KLQotICAgIGlmKCBvbl9vZmYgKQotICAgICAgICBfY2xlYXJmcCgpOwotICAgICAgICAKLSAgICAvLyBTZXQgdGhlIGNvbnRyb2wgd29yZAotICAgIDo6X2NvbnRyb2xmcCggY3csIE1DV19FTSApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICBleGVjdXRpb25fbW9uaXRvcjo6Y2F0Y2hfc2lnbmFscyAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1pbnQKLWV4ZWN1dGlvbl9tb25pdG9yOjpjYXRjaF9zaWduYWxzKCB1bml0X3Rlc3Q6OmNhbGxiYWNrMDxpbnQ+IGNvbnN0JiBGICkKLXsKLSAgICBfaW52YWxpZF9wYXJhbWV0ZXJfaGFuZGxlciBvbGRfaXBoID0gX2ludmFsaWRfcGFyYW1ldGVyX2hhbmRsZXIoKTsKLSAgICBORE5CT09TVF9URVNUX0NSVF9IT09LX1RZUEUgb2xkX2NydF9ob29rID0gMDsKLQotICAgIGlmKCAhcF9jYXRjaF9zeXN0ZW1fZXJyb3JzICkKLSAgICAgICAgX3NldF9zZV90cmFuc2xhdG9yKCAmZGV0YWlsOjpzZWhfY2F0Y2hfcHJldmVudGVyICk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGlmKCAhIXBfZGV0ZWN0X2ZwX2V4Y2VwdGlvbnMgKQotICAgICAgICAgICAgZGV0YWlsOjpzd2l0Y2hfZnBfZXhjZXB0aW9ucyggdHJ1ZSApOwotCi0gICAgICAgb2xkX2NydF9ob29rID0gTkROQk9PU1RfVEVTVF9DUlRfU0VUX0hPT0soICZkZXRhaWw6OmFzc2VydF9yZXBvcnRpbmdfZnVuY3Rpb24gKTsKLQotICAgICAgIG9sZF9pcGggPSBfc2V0X2ludmFsaWRfcGFyYW1ldGVyX2hhbmRsZXIoIAotICAgICAgICAgICByZWludGVycHJldF9jYXN0PF9pbnZhbGlkX3BhcmFtZXRlcl9oYW5kbGVyPiggJmRldGFpbDo6aW52YWxpZF9wYXJhbV9oYW5kbGVyICkgKTsKLSAgICB9Ci0KLSAgICBkZXRhaWw6OnN5c3RlbV9zaWduYWxfZXhjZXB0aW9uIFNTRSggdGhpcyApOwotICAgIAotICAgIGludCByZXRfdmFsID0gMDsKLQotICAgIF9fdHJ5IHsKLSAgICAgICAgX190cnkgewotICAgICAgICAgICAgcmV0X3ZhbCA9IGRldGFpbDo6ZG9faW52b2tlKCBtX2N1c3RvbV90cmFuc2xhdG9ycywgRiApOwotICAgICAgICB9Ci0gICAgICAgIF9fZXhjZXB0KCBTU0UoIEdldEV4Y2VwdGlvbkNvZGUoKSwgR2V0RXhjZXB0aW9uSW5mb3JtYXRpb24oKSApICkgewotICAgICAgICAgICAgdGhyb3cgU1NFOwotICAgICAgICB9Ci0gICAgfQotICAgIF9fZmluYWxseSB7Ci0gICAgICAgIGlmKCAhIXBfY2F0Y2hfc3lzdGVtX2Vycm9ycyApIHsKLSAgICAgICAgICAgIGlmKCAhIXBfZGV0ZWN0X2ZwX2V4Y2VwdGlvbnMgKQotICAgICAgICAgICAgICAgIGRldGFpbDo6c3dpdGNoX2ZwX2V4Y2VwdGlvbnMoIGZhbHNlICk7Ci0KLSAgICAgICAgICAgIE5ETkJPT1NUX1RFU1RfQ1JUX1NFVF9IT09LKCBvbGRfY3J0X2hvb2sgKTsKLQotICAgICAgICAgICBfc2V0X2ludmFsaWRfcGFyYW1ldGVyX2hhbmRsZXIoIG9sZF9pcGggKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiByZXRfdmFsOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jZWxzZSAgLy8gZGVmYXVsdCBzaWduYWwgaGFuZGxlcgotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotY2xhc3Mgc3lzdGVtX3NpZ25hbF9leGNlcHRpb24gewotcHVibGljOgotICAgIHZvaWQgICByZXBvcnQoKSBjb25zdCB7fQotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLWludAotZXhlY3V0aW9uX21vbml0b3I6OmNhdGNoX3NpZ25hbHMoIHVuaXRfdGVzdDo6Y2FsbGJhY2swPGludD4gY29uc3QmIEYgKQotewotICAgIHJldHVybiBkZXRhaWw6OmRvX2ludm9rZSggbV9jdXN0b21fdHJhbnNsYXRvcnMgLCBGICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNlbmRpZiAgLy8gY2hvb3NlIHNpZ25hbCBoYW5kbGVyCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICBleGVjdXRpb25fbW9uaXRvcjo6ZXhlY3V0ZSAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotaW50Ci1leGVjdXRpb25fbW9uaXRvcjo6ZXhlY3V0ZSggdW5pdF90ZXN0OjpjYWxsYmFjazA8aW50PiBjb25zdCYgRiApCi17Ci0gICAgaWYoIGRlYnVnOjp1bmRlcl9kZWJ1Z2dlcigpICkKLSAgICAgICAgcF9jYXRjaF9zeXN0ZW1fZXJyb3JzLnZhbHVlID0gZmFsc2U7Ci0KLSAgICB0cnkgewotICAgICAgICByZXR1cm4gY2F0Y2hfc2lnbmFscyggRiApOwotICAgIH0KLQotICAgIC8vICBDYXRjaC1jbGF1c2UgcmVmZXJlbmNlIGFyZ3VtZW50cyBhcmUgYSBiaXQgZGlmZmVyZW50IGZyb20gZnVuY3Rpb24KLSAgICAvLyAgYXJndW1lbnRzIChJU08gMTUuMyBwYXJhZ3JhcGhzIDE4ICYgMTkpLiAgQXBwYXJlbnRseSBjb25zdCBpc24ndAotICAgIC8vICByZXF1aXJlZC4gIFByb2dyYW1tZXJzIGFzayBmb3IgY29uc3QgYW55aG93LCBzbyB3ZSBzdXBwbHkgaXQuICBUaGF0J3MKLSAgICAvLyAgZWFzaWVyIHRoYW4gYW5zd2VyaW5nIHF1ZXN0aW9ucyBhYm91dCBub24tY29uc3QgdXNhZ2UuCi0KLSAgICBjYXRjaCggY2hhciBjb25zdCogZXggKQotICAgICAgeyBkZXRhaWw6OnJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6Y3BwX2V4Y2VwdGlvbl9lcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDIHN0cmluZzogJXMiLCBleCApOyB9Ci0gICAgY2F0Y2goIHN0ZDo6c3RyaW5nIGNvbnN0JiBleCApCi0gICAgICB7IGRldGFpbDo6cmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpjcHBfZXhjZXB0aW9uX2Vycm9yLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdGQ6OnN0cmluZzogJXMiLCBleC5jX3N0cigpICk7IH0KLQotICAgIC8vICBzdGQ6OiBleGNlcHRpb25zCi0KLSAgICBjYXRjaCggc3RkOjpiYWRfYWxsb2MgY29uc3QmIGV4ICkKLSAgICAgIHsgZGV0YWlsOjpyZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OmNwcF9leGNlcHRpb25fZXJyb3IsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudF9leGNlcHRpb25fY2FzdDxuZG5ib29zdDo6ZXhjZXB0aW9uIGNvbnN0PigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0ZDo6YmFkX2FsbG9jOiAlcyIsIGV4LndoYXQoKSApOyB9Ci0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgPD0gMHgwNTUxKQotICAgIGNhdGNoKCBzdGQ6OmJhZF9jYXN0IGNvbnN0JiBleCApCi0gICAgICB7IGRldGFpbDo6cmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpjcHBfZXhjZXB0aW9uX2Vycm9yLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfZXhjZXB0aW9uX2Nhc3Q8bmRuYm9vc3Q6OmV4Y2VwdGlvbiBjb25zdD4oKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdGQ6OmJhZF9jYXN0IiApOyB9Ci0gICAgY2F0Y2goIHN0ZDo6YmFkX3R5cGVpZCBjb25zdCYgZXggKQotICAgICAgeyBkZXRhaWw6OnJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6Y3BwX2V4Y2VwdGlvbl9lcnJvciwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50X2V4Y2VwdGlvbl9jYXN0PG5kbmJvb3N0OjpleGNlcHRpb24gY29uc3Q+KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RkOjpiYWRfdHlwZWlkIiApOyB9Ci0jZWxzZQotICAgIGNhdGNoKCBzdGQ6OmJhZF9jYXN0IGNvbnN0JiBleCApCi0gICAgICB7IGRldGFpbDo6cmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpjcHBfZXhjZXB0aW9uX2Vycm9yLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfZXhjZXB0aW9uX2Nhc3Q8bmRuYm9vc3Q6OmV4Y2VwdGlvbiBjb25zdD4oKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdGQ6OmJhZF9jYXN0OiAlcyIsIGV4LndoYXQoKSApOyB9Ci0gICAgY2F0Y2goIHN0ZDo6YmFkX3R5cGVpZCBjb25zdCYgZXggKQotICAgICAgeyBkZXRhaWw6OnJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6Y3BwX2V4Y2VwdGlvbl9lcnJvciwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50X2V4Y2VwdGlvbl9jYXN0PG5kbmJvb3N0OjpleGNlcHRpb24gY29uc3Q+KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RkOjpiYWRfdHlwZWlkOiAlcyIsIGV4LndoYXQoKSApOyB9Ci0jZW5kaWYKLQotICAgIGNhdGNoKCBzdGQ6OmJhZF9leGNlcHRpb24gY29uc3QmIGV4ICkKLSAgICAgIHsgZGV0YWlsOjpyZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OmNwcF9leGNlcHRpb25fZXJyb3IsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudF9leGNlcHRpb25fY2FzdDxuZG5ib29zdDo6ZXhjZXB0aW9uIGNvbnN0PigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0ZDo6YmFkX2V4Y2VwdGlvbjogJXMiLCBleC53aGF0KCkgKTsgfQotICAgIGNhdGNoKCBzdGQ6OmRvbWFpbl9lcnJvciBjb25zdCYgZXggKQotICAgICAgeyBkZXRhaWw6OnJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6Y3BwX2V4Y2VwdGlvbl9lcnJvciwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50X2V4Y2VwdGlvbl9jYXN0PG5kbmJvb3N0OjpleGNlcHRpb24gY29uc3Q+KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RkOjpkb21haW5fZXJyb3I6ICVzIiwgZXgud2hhdCgpICk7IH0KLSAgICBjYXRjaCggc3RkOjppbnZhbGlkX2FyZ3VtZW50IGNvbnN0JiBleCApCi0gICAgICB7IGRldGFpbDo6cmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpjcHBfZXhjZXB0aW9uX2Vycm9yLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfZXhjZXB0aW9uX2Nhc3Q8bmRuYm9vc3Q6OmV4Y2VwdGlvbiBjb25zdD4oKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdGQ6OmludmFsaWRfYXJndW1lbnQ6ICVzIiwgZXgud2hhdCgpICk7IH0KLSAgICBjYXRjaCggc3RkOjpsZW5ndGhfZXJyb3IgY29uc3QmIGV4ICkKLSAgICAgIHsgZGV0YWlsOjpyZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OmNwcF9leGNlcHRpb25fZXJyb3IsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudF9leGNlcHRpb25fY2FzdDxuZG5ib29zdDo6ZXhjZXB0aW9uIGNvbnN0PigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0ZDo6bGVuZ3RoX2Vycm9yOiAlcyIsIGV4LndoYXQoKSApOyB9Ci0gICAgY2F0Y2goIHN0ZDo6b3V0X29mX3JhbmdlIGNvbnN0JiBleCApCi0gICAgICB7IGRldGFpbDo6cmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpjcHBfZXhjZXB0aW9uX2Vycm9yLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfZXhjZXB0aW9uX2Nhc3Q8bmRuYm9vc3Q6OmV4Y2VwdGlvbiBjb25zdD4oKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdGQ6Om91dF9vZl9yYW5nZTogJXMiLCBleC53aGF0KCkgKTsgfQotICAgIGNhdGNoKCBzdGQ6OnJhbmdlX2Vycm9yIGNvbnN0JiBleCApCi0gICAgICB7IGRldGFpbDo6cmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpjcHBfZXhjZXB0aW9uX2Vycm9yLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfZXhjZXB0aW9uX2Nhc3Q8bmRuYm9vc3Q6OmV4Y2VwdGlvbiBjb25zdD4oKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdGQ6OnJhbmdlX2Vycm9yOiAlcyIsIGV4LndoYXQoKSApOyB9Ci0gICAgY2F0Y2goIHN0ZDo6b3ZlcmZsb3dfZXJyb3IgY29uc3QmIGV4ICkKLSAgICAgIHsgZGV0YWlsOjpyZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OmNwcF9leGNlcHRpb25fZXJyb3IsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudF9leGNlcHRpb25fY2FzdDxuZG5ib29zdDo6ZXhjZXB0aW9uIGNvbnN0PigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0ZDo6b3ZlcmZsb3dfZXJyb3I6ICVzIiwgZXgud2hhdCgpICk7IH0KLSAgICBjYXRjaCggc3RkOjp1bmRlcmZsb3dfZXJyb3IgY29uc3QmIGV4ICkKLSAgICAgIHsgZGV0YWlsOjpyZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OmNwcF9leGNlcHRpb25fZXJyb3IsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudF9leGNlcHRpb25fY2FzdDxuZG5ib29zdDo6ZXhjZXB0aW9uIGNvbnN0PigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0ZDo6dW5kZXJmbG93X2Vycm9yOiAlcyIsIGV4LndoYXQoKSApOyB9Ci0gICAgY2F0Y2goIHN0ZDo6bG9naWNfZXJyb3IgY29uc3QmIGV4ICkKLSAgICAgIHsgZGV0YWlsOjpyZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OmNwcF9leGNlcHRpb25fZXJyb3IsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudF9leGNlcHRpb25fY2FzdDxuZG5ib29zdDo6ZXhjZXB0aW9uIGNvbnN0PigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0ZDo6bG9naWNfZXJyb3I6ICVzIiwgZXgud2hhdCgpICk7IH0KLSAgICBjYXRjaCggc3RkOjpydW50aW1lX2Vycm9yIGNvbnN0JiBleCApCi0gICAgICB7IGRldGFpbDo6cmVwb3J0X2Vycm9yKCBleGVjdXRpb25fZXhjZXB0aW9uOjpjcHBfZXhjZXB0aW9uX2Vycm9yLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfZXhjZXB0aW9uX2Nhc3Q8bmRuYm9vc3Q6OmV4Y2VwdGlvbiBjb25zdD4oKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdGQ6OnJ1bnRpbWVfZXJyb3I6ICVzIiwgZXgud2hhdCgpICk7IH0KLSAgICBjYXRjaCggc3RkOjpleGNlcHRpb24gY29uc3QmIGV4ICkKLSAgICAgIHsgZGV0YWlsOjpyZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OmNwcF9leGNlcHRpb25fZXJyb3IsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudF9leGNlcHRpb25fY2FzdDxuZG5ib29zdDo6ZXhjZXB0aW9uIGNvbnN0PigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0ZDo6ZXhjZXB0aW9uOiAlcyIsIGV4LndoYXQoKSApOyB9Ci0KLSAgICBjYXRjaCggbmRuYm9vc3Q6OmV4Y2VwdGlvbiBjb25zdCYgZXggKQotICAgIHsgZGV0YWlsOjpyZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OmNwcF9leGNlcHRpb25fZXJyb3IsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICZleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5rbm93biBuZG5ib29zdDo6ZXhjZXB0aW9uIiApOyB9Ci0KLSAgICAvLyBzeXN0ZW0gZXJyb3JzCi0gICAgY2F0Y2goIHN5c3RlbV9lcnJvciBjb25zdCYgZXggKQotICAgICAgeyBkZXRhaWw6OnJlcG9ydF9lcnJvciggZXhlY3V0aW9uX2V4Y2VwdGlvbjo6Y3BwX2V4Y2VwdGlvbl9lcnJvciwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3lzdGVtX2Vycm9yIHByb2R1Y2VkIGJ5OiAlczogJXMiLCBleC5wX2ZhaWxlZF9leHAuZ2V0KCksIHN0ZDo6c3RyZXJyb3IoIGV4LnBfZXJybm8gKSApOyB9Ci0gICAgY2F0Y2goIGRldGFpbDo6c3lzdGVtX3NpZ25hbF9leGNlcHRpb24gY29uc3QmIGV4ICkKLSAgICAgIHsgZXgucmVwb3J0KCk7IH0KLQotICAgIC8vIG5vdCBhbiBlcnJvcgotICAgIGNhdGNoKCBleGVjdXRpb25fYWJvcnRlZCBjb25zdCYgKQotICAgICAgeyByZXR1cm4gMDsgfQotCi0gICAgLy8ganVzdCBmb3J3YXJkCi0gICAgY2F0Y2goIGV4ZWN1dGlvbl9leGNlcHRpb24gY29uc3QmICkKLSAgICAgIHsgdGhyb3c7IH0KLQotICAgIC8vIHVua25vd24gZXJyb3IKLSAgICBjYXRjaCggLi4uICkKLSAgICAgIHsgZGV0YWlsOjpyZXBvcnRfZXJyb3IoIGV4ZWN1dGlvbl9leGNlcHRpb246OmNwcF9leGNlcHRpb25fZXJyb3IsICJ1bmtub3duIHR5cGUiICk7IH0KLQotICAgIHJldHVybiAwOyAgLy8gbmV2ZXIgcmVhY2hlZDsgc3VwcGxpZWQgdG8gcXVpZXQgY29tcGlsZXIgd2FybmluZ3MKLX0gLy8gZXhlY3V0ZQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgICBzeXN0ZW1fZXJyb3IgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXN5c3RlbV9lcnJvcjo6c3lzdGVtX2Vycm9yKCBjaGFyIGNvbnN0KiBleHAgKQotI2lmZGVmIFVOREVSX0NFCi06IHBfZXJybm8oIEdldExhc3RFcnJvcigpICkKLSNlbHNlCi06IHBfZXJybm8oIGVycm5vICkKLSNlbmRpZgotLCBwX2ZhaWxlZF9leHAoIGV4cCApCi17fQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgIGV4ZWN1dGlvbl9leGNlcHRpb24gICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWV4ZWN1dGlvbl9leGNlcHRpb246OmV4ZWN1dGlvbl9leGNlcHRpb24oIGVycm9yX2NvZGUgZWNfLCBjb25zdF9zdHJpbmcgd2hhdF9tc2dfLCBsb2NhdGlvbiBjb25zdCYgbG9jYXRpb25fICkKLTogbV9lcnJvcl9jb2RlKCBlY18gKQotLCBtX3doYXQoIHdoYXRfbXNnXy5lbXB0eSgpID8gTkROQk9PU1RfVEVTVF9MKCAidW5jYXVnaHQgZXhjZXB0aW9uLCBzeXN0ZW0gZXJyb3Igb3IgYWJvcnQgcmVxdWVzdGVkIiApIDogd2hhdF9tc2dfICkKLSwgbV9sb2NhdGlvbiggbG9jYXRpb25fICkKLXt9Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLWV4ZWN1dGlvbl9leGNlcHRpb246OmxvY2F0aW9uOjpsb2NhdGlvbiggY2hhciBjb25zdCogZmlsZV9uYW1lLCBzaXplX3QgbGluZV9udW0sIGNoYXIgY29uc3QqIGZ1bmMgKQotOiBtX2ZpbGVfbmFtZSggZmlsZV9uYW1lID8gZmlsZV9uYW1lIDogInVua25vd24gbG9jYXRpb24iICkKLSwgbV9saW5lX251bSggbGluZV9udW0gKQotLCBtX2Z1bmN0aW9uKCBmdW5jICkKLXt9Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9FWEVDVVRJT05fTU9OSVRPUl9JUFBfMDEyMjA1R0VSCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL2ZyYW1ld29yay5pcHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC9mcmFtZXdvcmsuaXBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZGE5MGM2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL2ZyYW1ld29yay5pcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MDMgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTc5OTEgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGltcGxlbWVudHMgZnJhbWV3b3JrIEFQSSAtIG1haW4gZHJpdmVyIGZvciB0aGUgdGVzdAotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9GUkFNRVdPUktfSVBQXzAyMTAwNUdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX0ZSQU1FV09SS19JUFBfMDIxMDA1R0VSCi0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2ZyYW1ld29yay5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9leGVjdXRpb25fbW9uaXRvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZWJ1Zy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91bml0X3Rlc3Rfc3VpdGVfaW1wbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91bml0X3Rlc3RfbG9nLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3VuaXRfdGVzdF9tb25pdG9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3Rlc3Rfb2JzZXJ2ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvcmVzdWx0c19jb2xsZWN0b3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvcHJvZ3Jlc3NfbW9uaXRvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9yZXN1bHRzX3JlcG9ydGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3Rlc3RfdG9vbHMuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvdW5pdF90ZXN0X3BhcmFtZXRlcnMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2dsb2JhbF90eXBlZGVmLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvZm9yZWFjaC5ocHA+Ci0KLS8vIEJvb3N0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGltZXIuaHBwPgotCi0vLyBTVEwKLSNpbmNsdWRlIDxtYXA+Ci0jaW5jbHVkZSA8c2V0PgotI2luY2x1ZGUgPGNzdGRsaWI+Ci0jaW5jbHVkZSA8Y3RpbWU+Ci0KLSNpZmRlZiBORE5CT09TVF9OT19TVERDX05BTUVTUEFDRQotbmFtZXNwYWNlIHN0ZCB7IHVzaW5nIDo6dGltZTsgdXNpbmcgOjpzcmFuZDsgfQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSB1bml0X3Rlc3QgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICB0ZXN0X3N0YXJ0IGNhbGxzIHdyYXBwZXIgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLW5hbWVzcGFjZSB1dF9kZXRhaWwgewotCi1zdHJ1Y3QgdGVzdF9zdGFydF9jYWxsZXIgewotICAgIHRlc3Rfc3RhcnRfY2FsbGVyKCB0ZXN0X29ic2VydmVyKiB0bywgY291bnRlcl90IHRjX2Ftb3VudCApCi0gICAgOiBtX3RvKCB0byApCi0gICAgLCBtX3RjX2Ftb3VudCggdGNfYW1vdW50ICkKLSAgICB7fQotCi0gICAgaW50IG9wZXJhdG9yKCkoKQotICAgIHsKLSAgICAgICAgbV90by0+dGVzdF9zdGFydCggbV90Y19hbW91bnQgKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIC8vIERhdGEgbWVtYmVycwotICAgIHRlc3Rfb2JzZXJ2ZXIqICBtX3RvOwotICAgIGNvdW50ZXJfdCAgICAgICBtX3RjX2Ftb3VudDsKLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXN0cnVjdCB0ZXN0X2luaXRfY2FsbGVyIHsKLSAgICBleHBsaWNpdCAgICB0ZXN0X2luaXRfY2FsbGVyKCBpbml0X3VuaXRfdGVzdF9mdW5jIGluaXRfZnVuYyApIAotICAgIDogbV9pbml0X2Z1bmMoIGluaXRfZnVuYyApCi0gICAge30KLSAgICBpbnQgICAgICAgICBvcGVyYXRvcigpKCkKLSAgICB7Ci0jaWZkZWYgTkROQk9PU1RfVEVTVF9BTFRFUk5BVElWRV9JTklUX0FQSQotICAgICAgICBpZiggISgqbV9pbml0X2Z1bmMpKCkgKQotICAgICAgICAgICAgdGhyb3cgc3RkOjpydW50aW1lX2Vycm9yKCAidGVzdCBtb2R1bGUgaW5pdGlhbGl6YXRpb24gZmFpbGVkIiApOwotI2Vsc2UKLSAgICAgICAgdGVzdF9zdWl0ZSogIG1hbnVhbF90ZXN0X3VuaXRzID0gKCptX2luaXRfZnVuYykoIGZyYW1ld29yazo6bWFzdGVyX3Rlc3Rfc3VpdGUoKS5hcmdjLCBmcmFtZXdvcms6Om1hc3Rlcl90ZXN0X3N1aXRlKCkuYXJndiApOwotCi0gICAgICAgIGlmKCBtYW51YWxfdGVzdF91bml0cyApCi0gICAgICAgICAgICBmcmFtZXdvcms6Om1hc3Rlcl90ZXN0X3N1aXRlKCkuYWRkKCBtYW51YWxfdGVzdF91bml0cyApOwotI2VuZGlmCi0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIC8vIERhdGEgbWVtYmVycwotICAgIGluaXRfdW5pdF90ZXN0X2Z1bmMgbV9pbml0X2Z1bmM7Ci19OwotCi19Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgICBmcmFtZXdvcmsgICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotY2xhc3MgZnJhbWV3b3JrX2ltcGwgOiBwdWJsaWMgdGVzdF90cmVlX3Zpc2l0b3IgewotcHVibGljOgotICAgIGZyYW1ld29ya19pbXBsKCkKLSAgICA6IG1fbWFzdGVyX3Rlc3Rfc3VpdGUoIDAgKQotICAgICwgbV9jdXJyX3Rlc3RfY2FzZSggSU5WX1RFU1RfVU5JVF9JRCApCi0gICAgLCBtX25leHRfdGVzdF9jYXNlX2lkKCBNSU5fVEVTVF9DQVNFX0lEICkKLSAgICAsIG1fbmV4dF90ZXN0X3N1aXRlX2lkKCBNSU5fVEVTVF9TVUlURV9JRCApCi0gICAgLCBtX2lzX2luaXRpYWxpemVkKCBmYWxzZSApCi0gICAgLCBtX3Rlc3RfaW5fcHJvZ3Jlc3MoIGZhbHNlICkKLSAgICB7fQotCi0gICAgfmZyYW1ld29ya19pbXBsKCkgeyBjbGVhcigpOyB9Ci0KLSAgICB2b2lkICAgICAgICAgICAgY2xlYXIoKQotICAgIHsKLSAgICAgICAgd2hpbGUoICFtX3Rlc3RfdW5pdHMuZW1wdHkoKSApIHsKLSAgICAgICAgICAgIHRlc3RfdW5pdF9zdG9yZTo6dmFsdWVfdHlwZSBjb25zdCYgdHUgICAgID0gKm1fdGVzdF91bml0cy5iZWdpbigpOwotICAgICAgICAgICAgdGVzdF91bml0KiAgICAgICAgICAgICAgICAgICAgICAgICB0dV9wdHIgPSB0dS5zZWNvbmQ7Ci0KLSAgICAgICAgICAgIC8vIHRoZSBkZWxldGUgd2lsbCBlcmFzZSB0aGlzIGVsZW1lbnQgZnJvbSBtYXAKLSAgICAgICAgICAgIGlmKCB1dF9kZXRhaWw6OnRlc3RfaWRfMl91bml0X3R5cGUoIHR1LnNlY29uZC0+cF9pZCApID09IHR1dF9zdWl0ZSApCi0gICAgICAgICAgICAgICAgZGVsZXRlICAodGVzdF9zdWl0ZSBjb25zdCopdHVfcHRyOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGRlbGV0ZSAgKHRlc3RfY2FzZSBjb25zdCopdHVfcHRyOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdm9pZCAgICAgICAgICAgIHNldF90dV9pZCggdGVzdF91bml0JiB0dSwgdGVzdF91bml0X2lkIGlkICkgeyB0dS5wX2lkLnZhbHVlID0gaWQ7IH0KLQotICAgIC8vIHRlc3RfdHJlZV92aXNpdG9yIGludGVyZmFjZSBpbXBsZW1lbnRhdGlvbgotICAgIHZvaWQgICAgICAgICAgICB2aXNpdCggdGVzdF9jYXNlIGNvbnN0JiB0YyApCi0gICAgewotICAgICAgICBpZiggIXRjLmNoZWNrX2RlcGVuZGVuY2llcygpICkgewotICAgICAgICAgICAgTkROQk9PU1RfVEVTVF9GT1JFQUNIKCB0ZXN0X29ic2VydmVyKiwgdG8sIG1fb2JzZXJ2ZXJzICkKLSAgICAgICAgICAgICAgICB0by0+dGVzdF91bml0X3NraXBwZWQoIHRjICk7Ci0KLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIE5ETkJPT1NUX1RFU1RfRk9SRUFDSCggdGVzdF9vYnNlcnZlciosIHRvLCBtX29ic2VydmVycyApCi0gICAgICAgICAgICB0by0+dGVzdF91bml0X3N0YXJ0KCB0YyApOwotCi0gICAgICAgIG5kbmJvb3N0Ojp0aW1lciB0Y190aW1lcjsKLSAgICAgICAgdGVzdF91bml0X2lkIGJrdXAgPSBtX2N1cnJfdGVzdF9jYXNlOwotICAgICAgICBtX2N1cnJfdGVzdF9jYXNlID0gdGMucF9pZDsKLSAgICAgICAgdW5pdF90ZXN0X21vbml0b3JfdDo6ZXJyb3JfbGV2ZWwgcnVuX3Jlc3VsdCA9IHVuaXRfdGVzdF9tb25pdG9yLmV4ZWN1dGVfYW5kX3RyYW5zbGF0ZSggdGMgKTsKLQotICAgICAgICB1bnNpZ25lZCBsb25nIGVsYXBzZWQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPiggdGNfdGltZXIuZWxhcHNlZCgpICogMWU2ICk7Ci0KLSAgICAgICAgaWYoIHVuaXRfdGVzdF9tb25pdG9yLmlzX2NyaXRpY2FsX2Vycm9yKCBydW5fcmVzdWx0ICkgKSB7Ci0gICAgICAgICAgICBORE5CT09TVF9URVNUX0ZPUkVBQ0goIHRlc3Rfb2JzZXJ2ZXIqLCB0bywgbV9vYnNlcnZlcnMgKQotICAgICAgICAgICAgICAgIHRvLT50ZXN0X2Fib3J0ZWQoKTsKLSAgICAgICAgfQotCi0gICAgICAgIE5ETkJPT1NUX1RFU1RfRk9SRUFDSCggdGVzdF9vYnNlcnZlciosIHRvLCBtX29ic2VydmVycyApCi0gICAgICAgICAgICB0by0+dGVzdF91bml0X2ZpbmlzaCggdGMsIGVsYXBzZWQgKTsKLQotICAgICAgICBtX2N1cnJfdGVzdF9jYXNlID0gYmt1cDsKLQotICAgICAgICBpZiggdW5pdF90ZXN0X21vbml0b3IuaXNfY3JpdGljYWxfZXJyb3IoIHJ1bl9yZXN1bHQgKSApCi0gICAgICAgICAgICB0aHJvdyB0ZXN0X2JlaW5nX2Fib3J0ZWQoKTsKLSAgICB9Ci0KLSAgICBib29sICAgICAgICAgICAgdGVzdF9zdWl0ZV9zdGFydCggdGVzdF9zdWl0ZSBjb25zdCYgdHMgKQotICAgIHsKLSAgICAgICAgaWYoICF0cy5jaGVja19kZXBlbmRlbmNpZXMoKSApIHsKLSAgICAgICAgICAgIE5ETkJPT1NUX1RFU1RfRk9SRUFDSCggdGVzdF9vYnNlcnZlciosIHRvLCBtX29ic2VydmVycyApCi0gICAgICAgICAgICAgICAgdG8tPnRlc3RfdW5pdF9za2lwcGVkKCB0cyApOwotCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgICBORE5CT09TVF9URVNUX0ZPUkVBQ0goIHRlc3Rfb2JzZXJ2ZXIqLCB0bywgbV9vYnNlcnZlcnMgKQotICAgICAgICAgICAgdG8tPnRlc3RfdW5pdF9zdGFydCggdHMgKTsKLQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICB2b2lkICAgICAgICAgICAgdGVzdF9zdWl0ZV9maW5pc2goIHRlc3Rfc3VpdGUgY29uc3QmIHRzICkKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX1RFU1RfRk9SRUFDSCggdGVzdF9vYnNlcnZlciosIHRvLCBtX29ic2VydmVycyApCi0gICAgICAgICAgICB0by0+dGVzdF91bml0X2ZpbmlzaCggdHMsIDAgKTsKLSAgICB9Ci0KLSAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICBzdHJ1Y3QgcHJpb3JpdHlfb3JkZXIgewotICAgICAgICBib29sIG9wZXJhdG9yKCkoIHRlc3Rfb2JzZXJ2ZXIqIGxocywgdGVzdF9vYnNlcnZlciogcmhzICkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIChsaHMtPnByaW9yaXR5KCkgPCByaHMtPnByaW9yaXR5KCkpIHx8ICgobGhzLT5wcmlvcml0eSgpID09IHJocy0+cHJpb3JpdHkoKSkgJiYgKGxocyA8IHJocykpOwotICAgICAgICB9Ci0gICAgfTsKLQotICAgIHR5cGVkZWYgc3RkOjptYXA8dGVzdF91bml0X2lkLHRlc3RfdW5pdCo+ICAgICAgIHRlc3RfdW5pdF9zdG9yZTsKLSAgICB0eXBlZGVmIHN0ZDo6c2V0PHRlc3Rfb2JzZXJ2ZXIqLHByaW9yaXR5X29yZGVyPiBvYnNlcnZlcl9zdG9yZTsKLQotICAgIG1hc3Rlcl90ZXN0X3N1aXRlX3QqIG1fbWFzdGVyX3Rlc3Rfc3VpdGU7Ci0gICAgdGVzdF91bml0X2lkICAgIG1fY3Vycl90ZXN0X2Nhc2U7Ci0gICAgdGVzdF91bml0X3N0b3JlIG1fdGVzdF91bml0czsKLQotICAgIHRlc3RfdW5pdF9pZCAgICBtX25leHRfdGVzdF9jYXNlX2lkOwotICAgIHRlc3RfdW5pdF9pZCAgICBtX25leHRfdGVzdF9zdWl0ZV9pZDsKLQotICAgIGJvb2wgICAgICAgICAgICBtX2lzX2luaXRpYWxpemVkOwotICAgIGJvb2wgICAgICAgICAgICBtX3Rlc3RfaW5fcHJvZ3Jlc3M7Ci0KLSAgICBvYnNlcnZlcl9zdG9yZSAgbV9vYnNlcnZlcnM7Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgewotCi0jaWYgZGVmaW5lZChfX0NZR1dJTl9fKQotZnJhbWV3b3JrX2ltcGwmIHNfZnJrX2ltcGwoKSB7IHN0YXRpYyBmcmFtZXdvcmtfaW1wbCogdGhlX2luc3QgPSAwOyBpZighdGhlX2luc3QpIHRoZV9pbnN0ID0gbmV3IGZyYW1ld29ya19pbXBsOyByZXR1cm4gKnRoZV9pbnN0OyB9Ci0jZWxzZQotZnJhbWV3b3JrX2ltcGwmIHNfZnJrX2ltcGwoKSB7IHN0YXRpYyBmcmFtZXdvcmtfaW1wbCB0aGVfaW5zdDsgcmV0dXJuIHRoZV9pbnN0OyB9Ci0jZW5kaWYKLQotfSAvLyBsb2NhbCBuYW1lc3BhY2UKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIGZyYW1ld29yayB7Ci0KLXZvaWQKLWluaXQoIGluaXRfdW5pdF90ZXN0X2Z1bmMgaW5pdF9mdW5jLCBpbnQgYXJnYywgY2hhciogYXJndltdICkKLXsKLSAgICBydW50aW1lX2NvbmZpZzo6aW5pdCggYXJnYywgYXJndiApOwotCi0gICAgLy8gc2V0IHRoZSBsb2cgbGV2ZWwgYW5kIGZvcm1hdAotICAgIHVuaXRfdGVzdF9sb2cuc2V0X3RocmVzaG9sZF9sZXZlbCggcnVudGltZV9jb25maWc6OmxvZ19sZXZlbCgpICk7Ci0gICAgdW5pdF90ZXN0X2xvZy5zZXRfZm9ybWF0KCBydW50aW1lX2NvbmZpZzo6bG9nX2Zvcm1hdCgpICk7Ci0KLSAgICAvLyBzZXQgdGhlIHJlcG9ydCBsZXZlbCBhbmQgZm9ybWF0Ci0gICAgcmVzdWx0c19yZXBvcnRlcjo6c2V0X2xldmVsKCBydW50aW1lX2NvbmZpZzo6cmVwb3J0X2xldmVsKCkgKTsKLSAgICByZXN1bHRzX3JlcG9ydGVyOjpzZXRfZm9ybWF0KCBydW50aW1lX2NvbmZpZzo6cmVwb3J0X2Zvcm1hdCgpICk7Ci0KLSAgICByZWdpc3Rlcl9vYnNlcnZlciggcmVzdWx0c19jb2xsZWN0b3IgKTsKLSAgICByZWdpc3Rlcl9vYnNlcnZlciggdW5pdF90ZXN0X2xvZyApOwotCi0gICAgaWYoIHJ1bnRpbWVfY29uZmlnOjpzaG93X3Byb2dyZXNzKCkgKQotICAgICAgICByZWdpc3Rlcl9vYnNlcnZlciggcHJvZ3Jlc3NfbW9uaXRvciApOwotCi0gICAgaWYoIHJ1bnRpbWVfY29uZmlnOjpkZXRlY3RfbWVtb3J5X2xlYWtzKCkgPiAwICkgewotICAgICAgICBkZWJ1Zzo6ZGV0ZWN0X21lbW9yeV9sZWFrcyggdHJ1ZSApOwotICAgICAgICBkZWJ1Zzo6YnJlYWtfbWVtb3J5X2FsbG9jKCBydW50aW1lX2NvbmZpZzo6ZGV0ZWN0X21lbW9yeV9sZWFrcygpICk7Ci0gICAgfQotCi0gICAgLy8gaW5pdCBtYXN0ZXIgdW5pdCB0ZXN0IHN1aXRlCi0gICAgbWFzdGVyX3Rlc3Rfc3VpdGUoKS5hcmdjID0gYXJnYzsKLSAgICBtYXN0ZXJfdGVzdF9zdWl0ZSgpLmFyZ3YgPSBhcmd2OwotCi0gICAgdHJ5IHsKLSAgICAgICAgbmRuYm9vc3Q6OmV4ZWN1dGlvbl9tb25pdG9yIGVtOwotCi0gICAgICAgIHV0X2RldGFpbDo6dGVzdF9pbml0X2NhbGxlciB0aWMoIGluaXRfZnVuYyApOwotCi0gICAgICAgIGVtLmV4ZWN1dGUoIHRpYyApOwotICAgIH0KLSAgICBjYXRjaCggZXhlY3V0aW9uX2V4Y2VwdGlvbiBjb25zdCYgZXggKSAgewotICAgICAgICB0aHJvdyBzZXR1cF9lcnJvciggZXgud2hhdCgpICk7Ci0gICAgfQotCi0gICAgc19mcmtfaW1wbCgpLm1faXNfaW5pdGlhbGl6ZWQgPSB0cnVlOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1ib29sCi1pc19pbml0aWFsaXplZCgpCi17Ci0gICAgcmV0dXJuICBzX2Zya19pbXBsKCkubV9pc19pbml0aWFsaXplZDsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotcmVnaXN0ZXJfdGVzdF91bml0KCB0ZXN0X2Nhc2UqIHRjICkKLXsKLSAgICBORE5CT09TVF9URVNUX1NFVFVQX0FTU0VSVCggdGMtPnBfaWQgPT0gSU5WX1RFU1RfVU5JVF9JRCwgTkROQk9PU1RfVEVTVF9MKCAidGVzdCBjYXNlIGFscmVhZHkgcmVnaXN0ZXJlZCIgKSApOwotCi0gICAgdGVzdF91bml0X2lkIG5ld19pZCA9IHNfZnJrX2ltcGwoKS5tX25leHRfdGVzdF9jYXNlX2lkOwotCi0gICAgTkROQk9PU1RfVEVTVF9TRVRVUF9BU1NFUlQoIG5ld19pZCAhPSBNQVhfVEVTVF9DQVNFX0lELCBORE5CT09TVF9URVNUX0woICJ0b28gbWFueSB0ZXN0IGNhc2VzIiApICk7Ci0KLSAgICB0eXBlZGVmIGZyYW1ld29ya19pbXBsOjp0ZXN0X3VuaXRfc3RvcmU6OnZhbHVlX3R5cGUgbWFwX3ZhbHVlX3R5cGU7Ci0KLSAgICBzX2Zya19pbXBsKCkubV90ZXN0X3VuaXRzLmluc2VydCggbWFwX3ZhbHVlX3R5cGUoIG5ld19pZCwgdGMgKSApOwotICAgIHNfZnJrX2ltcGwoKS5tX25leHRfdGVzdF9jYXNlX2lkKys7Ci0KLSAgICBzX2Zya19pbXBsKCkuc2V0X3R1X2lkKCAqdGMsIG5ld19pZCApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1yZWdpc3Rlcl90ZXN0X3VuaXQoIHRlc3Rfc3VpdGUqIHRzICkKLXsKLSAgICBORE5CT09TVF9URVNUX1NFVFVQX0FTU0VSVCggdHMtPnBfaWQgPT0gSU5WX1RFU1RfVU5JVF9JRCwgTkROQk9PU1RfVEVTVF9MKCAidGVzdCBzdWl0ZSBhbHJlYWR5IHJlZ2lzdGVyZWQiICkgKTsKLQotICAgIHRlc3RfdW5pdF9pZCBuZXdfaWQgPSBzX2Zya19pbXBsKCkubV9uZXh0X3Rlc3Rfc3VpdGVfaWQ7Ci0KLSAgICBORE5CT09TVF9URVNUX1NFVFVQX0FTU0VSVCggbmV3X2lkICE9IE1BWF9URVNUX1NVSVRFX0lELCBORE5CT09TVF9URVNUX0woICJ0b28gbWFueSB0ZXN0IHN1aXRlcyIgKSApOwotCi0gICAgdHlwZWRlZiBmcmFtZXdvcmtfaW1wbDo6dGVzdF91bml0X3N0b3JlOjp2YWx1ZV90eXBlIG1hcF92YWx1ZV90eXBlOwotICAgIHNfZnJrX2ltcGwoKS5tX3Rlc3RfdW5pdHMuaW5zZXJ0KCBtYXBfdmFsdWVfdHlwZSggbmV3X2lkLCB0cyApICk7Ci0gICAgc19mcmtfaW1wbCgpLm1fbmV4dF90ZXN0X3N1aXRlX2lkKys7Ci0KLSAgICBzX2Zya19pbXBsKCkuc2V0X3R1X2lkKCAqdHMsIG5ld19pZCApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1kZXJlZ2lzdGVyX3Rlc3RfdW5pdCggdGVzdF91bml0KiB0dSApCi17Ci0gICAgc19mcmtfaW1wbCgpLm1fdGVzdF91bml0cy5lcmFzZSggdHUtPnBfaWQgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotY2xlYXIoKQotewotICAgIHNfZnJrX2ltcGwoKS5jbGVhcigpOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1yZWdpc3Rlcl9vYnNlcnZlciggdGVzdF9vYnNlcnZlciYgdG8gKQotewotICAgIHNfZnJrX2ltcGwoKS5tX29ic2VydmVycy5pbnNlcnQoICZ0byApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1kZXJlZ2lzdGVyX29ic2VydmVyKCB0ZXN0X29ic2VydmVyJiB0byApCi17Ci0gICAgc19mcmtfaW1wbCgpLm1fb2JzZXJ2ZXJzLmVyYXNlKCAmdG8gKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotcmVzZXRfb2JzZXJ2ZXJzKCkKLXsKLSAgICBzX2Zya19pbXBsKCkubV9vYnNlcnZlcnMuY2xlYXIoKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbWFzdGVyX3Rlc3Rfc3VpdGVfdCYKLW1hc3Rlcl90ZXN0X3N1aXRlKCkKLXsKLSAgICBpZiggIXNfZnJrX2ltcGwoKS5tX21hc3Rlcl90ZXN0X3N1aXRlICkKLSAgICAgICAgc19mcmtfaW1wbCgpLm1fbWFzdGVyX3Rlc3Rfc3VpdGUgPSBuZXcgbWFzdGVyX3Rlc3Rfc3VpdGVfdDsKLQotICAgIHJldHVybiAqc19mcmtfaW1wbCgpLm1fbWFzdGVyX3Rlc3Rfc3VpdGU7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlc3RfY2FzZSBjb25zdCYKLWN1cnJlbnRfdGVzdF9jYXNlKCkKLXsKLSAgICByZXR1cm4gZ2V0PHRlc3RfY2FzZT4oIHNfZnJrX2ltcGwoKS5tX2N1cnJfdGVzdF9jYXNlICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlc3RfdW5pdCYKLWdldCggdGVzdF91bml0X2lkIGlkLCB0ZXN0X3VuaXRfdHlwZSB0ICkKLXsKLSAgICB0ZXN0X3VuaXQqIHJlcyA9IHNfZnJrX2ltcGwoKS5tX3Rlc3RfdW5pdHNbaWRdOwotCi0gICAgaWYoIChyZXMtPnBfdHlwZSAmIHQpID09IDAgKQotICAgICAgICB0aHJvdyBpbnRlcm5hbF9lcnJvciggIkludmFsaWQgdGVzdCB1bml0IHR5cGUiICk7Ci0KLSAgICByZXR1cm4gKnJlczsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotcnVuKCB0ZXN0X3VuaXRfaWQgaWQsIGJvb2wgY29udGludWVfdGVzdCApCi17Ci0gICAgaWYoIGlkID09IElOVl9URVNUX1VOSVRfSUQgKQotICAgICAgICBpZCA9IG1hc3Rlcl90ZXN0X3N1aXRlKCkucF9pZDsKLQotICAgIHRlc3RfY2FzZV9jb3VudGVyIHRjYzsKLSAgICB0cmF2ZXJzZV90ZXN0X3RyZWUoIGlkLCB0Y2MgKTsKLQotICAgIE5ETkJPT1NUX1RFU1RfU0VUVVBfQVNTRVJUKCB0Y2MucF9jb3VudCAhPSAwICwgcnVudGltZV9jb25maWc6OnRlc3RfdG9fcnVuKCkuaXNfZW1wdHkoKSAKLSAgICAgICAgPyBORE5CT09TVF9URVNUX0woICJ0ZXN0IHRyZWUgaXMgZW1wdHkiICkgCi0gICAgICAgIDogTkROQk9PU1RfVEVTVF9MKCAibm8gdGVzdCBjYXNlcyBtYXRjaGluZyBmaWx0ZXIiICkgKTsKLQotICAgIGJvb2wgICAgY2FsbF9zdGFydF9maW5pc2ggICA9ICFjb250aW51ZV90ZXN0IHx8ICFzX2Zya19pbXBsKCkubV90ZXN0X2luX3Byb2dyZXNzOwotICAgIGJvb2wgICAgd2FzX2luX3Byb2dyZXNzICAgICA9IHNfZnJrX2ltcGwoKS5tX3Rlc3RfaW5fcHJvZ3Jlc3M7Ci0KLSAgICBzX2Zya19pbXBsKCkubV90ZXN0X2luX3Byb2dyZXNzID0gdHJ1ZTsKLQotICAgIGlmKCBjYWxsX3N0YXJ0X2ZpbmlzaCApIHsKLSAgICAgICAgTkROQk9PU1RfVEVTVF9GT1JFQUNIKCB0ZXN0X29ic2VydmVyKiwgdG8sIHNfZnJrX2ltcGwoKS5tX29ic2VydmVycyApIHsKLSAgICAgICAgICAgIG5kbmJvb3N0OjpleGVjdXRpb25fbW9uaXRvciBlbTsKLQotICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICBlbS5leGVjdXRlKCB1dF9kZXRhaWw6OnRlc3Rfc3RhcnRfY2FsbGVyKCB0bywgdGNjLnBfY291bnQgKSApOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgY2F0Y2goIGV4ZWN1dGlvbl9leGNlcHRpb24gY29uc3QmIGV4ICkgIHsKLSAgICAgICAgICAgICAgICB0aHJvdyBzZXR1cF9lcnJvciggZXgud2hhdCgpICk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBzd2l0Y2goIHJ1bnRpbWVfY29uZmlnOjpyYW5kb21fc2VlZCgpICkgewotICAgIGNhc2UgMDoKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSAxOiB7Ci0gICAgICAgIHVuc2lnbmVkIGludCBzZWVkID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Piggc3RkOjp0aW1lKCAwICkgKTsKLSAgICAgICAgTkROQk9PU1RfVEVTVF9NRVNTQUdFKCAiVGVzdCBjYXNlcyBvcmRlciBpcyBzaHVmZmxlZCB1c2luZyBzZWVkOiAiIDw8IHNlZWQgKTsKLSAgICAgICAgc3RkOjpzcmFuZCggc2VlZCApOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgTkROQk9PU1RfVEVTVF9NRVNTQUdFKCAiVGVzdCBjYXNlcyBvcmRlciBpcyBzaHVmZmxlZCB1c2luZyBzZWVkOiAiIDw8IHJ1bnRpbWVfY29uZmlnOjpyYW5kb21fc2VlZCgpICk7Ci0gICAgICAgIHN0ZDo6c3JhbmQoIHJ1bnRpbWVfY29uZmlnOjpyYW5kb21fc2VlZCgpICk7Ci0gICAgfQotCi0gICAgdHJ5IHsKLSAgICAgICAgdHJhdmVyc2VfdGVzdF90cmVlKCBpZCwgc19mcmtfaW1wbCgpICk7Ci0gICAgfQotICAgIGNhdGNoKCB0ZXN0X2JlaW5nX2Fib3J0ZWQgY29uc3QmICkgewotICAgICAgICAvLyBhYm9ydCBhbHJlYWR5IHJlcG9ydGVkCi0gICAgfQotCi0gICAgaWYoIGNhbGxfc3RhcnRfZmluaXNoICkgewotICAgICAgICBORE5CT09TVF9URVNUX0ZPUkVBQ0goIHRlc3Rfb2JzZXJ2ZXIqLCB0bywgc19mcmtfaW1wbCgpLm1fb2JzZXJ2ZXJzICkKLSAgICAgICAgICAgIHRvLT50ZXN0X2ZpbmlzaCgpOwotICAgIH0KLQotICAgIHNfZnJrX2ltcGwoKS5tX3Rlc3RfaW5fcHJvZ3Jlc3MgPSB3YXNfaW5fcHJvZ3Jlc3M7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXJ1biggdGVzdF91bml0IGNvbnN0KiB0dSwgYm9vbCBjb250aW51ZV90ZXN0ICkKLXsKLSAgICBydW4oIHR1LT5wX2lkLCBjb250aW51ZV90ZXN0ICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLWFzc2VydGlvbl9yZXN1bHQoIGJvb2wgcGFzc2VkICkKLXsKLSAgICBORE5CT09TVF9URVNUX0ZPUkVBQ0goIHRlc3Rfb2JzZXJ2ZXIqLCB0bywgc19mcmtfaW1wbCgpLm1fb2JzZXJ2ZXJzICkKLSAgICAgICAgdG8tPmFzc2VydGlvbl9yZXN1bHQoIHBhc3NlZCApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1leGNlcHRpb25fY2F1Z2h0KCBleGVjdXRpb25fZXhjZXB0aW9uIGNvbnN0JiBleCApCi17Ci0gICAgTkROQk9PU1RfVEVTVF9GT1JFQUNIKCB0ZXN0X29ic2VydmVyKiwgdG8sIHNfZnJrX2ltcGwoKS5tX29ic2VydmVycyApCi0gICAgICAgIHRvLT5leGNlcHRpb25fY2F1Z2h0KCBleCApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi10ZXN0X3VuaXRfYWJvcnRlZCggdGVzdF91bml0IGNvbnN0JiB0dSApCi17Ci0gICAgTkROQk9PU1RfVEVTVF9GT1JFQUNIKCB0ZXN0X29ic2VydmVyKiwgdG8sIHNfZnJrX2ltcGwoKS5tX29ic2VydmVycyApCi0gICAgICAgIHRvLT50ZXN0X3VuaXRfYWJvcnRlZCggdHUgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2UgZnJhbWV3b3JrCi0KLX0gLy8gbmFtZXNwYWNlIHVuaXRfdGVzdAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RFU1RfRlJBTUVXT1JLX0lQUF8wMjEwMDVHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL2ludGVyYWN0aW9uX2Jhc2VkLmlwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL2ludGVyYWN0aW9uX2Jhc2VkLmlwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmQxMmZhZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC9pbnRlcmFjdGlvbl9iYXNlZC5pcHAKKysrIC9kZXYvbnVsbApAQCAtMSw5MCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1NDYzMyAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogRmFjaWxpdGllcyB0byBwZXJmb3JtIGludGVyYWN0aW9uLWJhc2VkIHRlc3RpbmcKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfSU5URVJBQ1RJT05fQkFTRURfSVBQXzExMjEwNUdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX0lOVEVSQUNUSU9OX0JBU0VEX0lQUF8xMTIxMDVHRVIKLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2NvbmZpZy5ocHA+Ci0KLSNpZiBORE5CT09TVF9URVNUX1NVUFBPUlRfSU5URVJBQ1RJT05fVEVTVElORwotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2NhbGxiYWNrLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2ludGVyYWN0aW9uX2Jhc2VkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L21vY2tfb2JqZWN0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2ZyYW1ld29yay5ocHA+ICAgICAvLyBmb3Igc2V0dXBfZXJyb3IKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy8gU1RMCi0jaW5jbHVkZSA8c3RkZXhjZXB0PgotI2luY2x1ZGUgPHN0cmluZz4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIGl0ZXN0IHsgLy8gaW50ZXJhY3Rpb24tYmFzZWQgdGVzdGluZwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgICAgIG1hbmFnZXIgICAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLW1hbmFnZXI6Om1hbmFnZXIoKQotewotICAgIGluc3RhbmNlX3B0ciggdHJ1ZSwgdGhpcyApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1tYW5hZ2VyOjp+bWFuYWdlcigpCi17Ci0gICAgaW5zdGFuY2VfcHRyKCB0cnVlICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0gICAgCi1tYW5hZ2VyKgotbWFuYWdlcjo6aW5zdGFuY2VfcHRyKCBib29sIHJlc2V0LCBtYW5hZ2VyKiBuZXdfcHRyICkKLXsKLSAgICBzdGF0aWMgbWFuYWdlciBkdW1teSggMCApOwotICAgIAotICAgIHN0YXRpYyBtYW5hZ2VyKiBwdHIgPSAmZHVtbXk7Ci0gICAgCi0gICAgaWYoIHJlc2V0ICkgewotICAgICAgICBpZiggbmV3X3B0ciApIHsKLSAgICAgICAgICAgIE5ETkJPT1NUX1RFU1RfU0VUVVBfQVNTRVJUKCBwdHIgPT0gJmR1bW15LCBORE5CT09TVF9URVNUX0woICJDYW4ndCBydW4gdHdvIGludGVyYXRpb24gYmFzZWQgdGVzdCB0aGUgc2FtZSB0aW1lIiApICk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICBwdHIgPSBuZXdfcHRyOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHB0ciA9ICZkdW1teTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIHB0cjsKLX0KLSAgICAKLX0gIC8vIG5hbWVzcGFjZSBpdGVzdAotCi19ICAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBub3QgYW5jaWVudCBjb21waWxlcgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9JTlRFUkFDVElPTl9CQVNFRF9JUFBfMTEyMTA1R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC9sb2dnZWRfZXhwZWN0YXRpb25zLmlwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL2xvZ2dlZF9leHBlY3RhdGlvbnMuaXBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZmU5NjFhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL2xvZ2dlZF9leHBlY3RhdGlvbnMuaXBwCisrKyAvZGV2L251bGwKQEAgLTEsMjQ2ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBFTE9HX1ZFUiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1NDYzMyAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogRmFjaWxpdGllcyB0byBwZXJmb3JtIGludGVyYWN0aW9uIGJhc2VkIHRlc3RuZyBvZiBsb2dnZWQgZXhwZWN0YXRpb25zCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX0xPR0dFRF9FWFBFQ1RBVElPTlNfSVBQXzEyMDkwNUdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX0xPR0dFRF9FWFBFQ1RBVElPTlNfSVBQXzEyMDkwNUdFUgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvY29uZmlnLmhwcD4KLQotI2lmIE5ETkJPT1NUX1RFU1RfU1VQUE9SVF9JTlRFUkFDVElPTl9URVNUSU5HCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9nbG9iYWxfdHlwZWRlZi5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2NhbGxiYWNrLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2l0ZXJhdG9yL3Rva2VuX2l0ZXJhdG9yLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvaW50ZXJhY3Rpb25fYmFzZWQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdGVzdF90b29scy5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vIEJvb3N0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbGV4aWNhbF9jYXN0LmhwcD4KLQotLy8gU1RMCi0jaW5jbHVkZSA8ZnN0cmVhbT4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotdXNpbmcgbmFtZXNwYWNlIDo6bmRuYm9vc3Q6OnVuaXRfdGVzdDsKLQotbmFtZXNwYWNlIGl0ZXN0IHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgIGxvZ2dlZCBleHBlY3RhdGlvbiB0ZXN0IGltcGxlbWVudGF0aW9uICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1zdHJ1Y3QgZXhwZWN0YXRpb25zX2xvZ2dlciA6IGl0ZXN0OjptYW5hZ2VyIHsKLSAgICAvLyBDb25zdHJ1Y3RvcgotICAgIGV4cGVjdGF0aW9uc19sb2dnZXIoIGNvbnN0X3N0cmluZyBsb2dfZmlsZV9uYW1lLCBib29sIHRlc3Rfb3JfbG9nICk7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgICAgICAgIGRlY2lzaW9uX3BvaW50KCBjb25zdF9zdHJpbmcsIHN0ZDo6c2l6ZV90ICk7Ci0gICAgdmlydHVhbCB1bnNpZ25lZCAgICBlbnRlcl9zY29wZSggY29uc3Rfc3RyaW5nLCBzdGQ6OnNpemVfdCwgY29uc3Rfc3RyaW5nIHNjb3BlX25hbWUgKTsKLSAgICB2aXJ0dWFsIHZvaWQgICAgICAgIGFsbG9jYXRlZCggY29uc3Rfc3RyaW5nLCBzdGQ6OnNpemVfdCwgdm9pZCosIHN0ZDo6c2l6ZV90IHMgKTsKLSAgICB2aXJ0dWFsIHZvaWQgICAgICAgIGRhdGFfZmxvdyggY29uc3Rfc3RyaW5nIGQgKTsKLSAgICB2aXJ0dWFsIHN0ZDo6c3RyaW5nIHJldHVybl92YWx1ZSggY29uc3Rfc3RyaW5nIGRlZmF1bHRfdmFsdWUgKTsKLSAgICAKLXByaXZhdGU6Ci0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgYm9vbCAgICAgICAgICAgIG1fdGVzdF9vcl9sb2c7Ci0gICAgc3RkOjpmc3RyZWFtICAgIG1fbG9nX2ZpbGU7Ci19OwotCi1saXRlcmFsX3N0cmluZyBFTE9HX1ZFUiAgICAgPSAiMS4wIjsKLWxpdGVyYWxfc3RyaW5nIENMTU5fU0VQICAgICA9ICJ8IjsKLXN0YXRpYyBjb25zdCBjaGFyIExJTkVfU0VQICA9ICdcbic7Ci0KLWxpdGVyYWxfc3RyaW5nIEZJTEVfU0lHICAgICA9ICJFTE9HIjsKLWxpdGVyYWxfc3RyaW5nIFNDT1BFX1NJRyAgICA9ICJTQ09QRSI7Ci1saXRlcmFsX3N0cmluZyBBTExPQ19TSUcgICAgPSAiQUxMT0MiOwotbGl0ZXJhbF9zdHJpbmcgRFBfU0lHICAgICAgID0gIlNXSVRDSCI7Ci1saXRlcmFsX3N0cmluZyBEQVRBX1NJRyAgICAgPSAiREFUQSI7Ci1saXRlcmFsX3N0cmluZyBSRVRVUk5fU0lHICAgPSAiUkVUVVJOIjsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotZXhwZWN0YXRpb25zX2xvZ2dlcjo6ZXhwZWN0YXRpb25zX2xvZ2dlciggY29uc3Rfc3RyaW5nIGxvZ19maWxlX25hbWUsIGJvb2wgdGVzdF9vcl9sb2cgKQotOiBtX3Rlc3Rfb3JfbG9nKCB0ZXN0X29yX2xvZyApCi17Ci0gICAgTkROQk9PU1RfUkVRVUlSRV9NRVNTQUdFKCAhbG9nX2ZpbGVfbmFtZS5pc19lbXB0eSgpLCAiRW1wdHkgZXhwZWN0YXRpb25zIGxvZyBmaWxlIG5hbWUiICk7Ci0KLSAgICBtX2xvZ19maWxlLm9wZW4oIGxvZ19maWxlX25hbWUuYmVnaW4oKSwgdGVzdF9vcl9sb2cgPyBzdGQ6Omlvczo6aW4gOiBzdGQ6Omlvczo6b3V0ICk7Ci0KLSAgICBORE5CT09TVF9SRVFVSVJFX01FU1NBR0UoIG1fbG9nX2ZpbGUuaXNfb3BlbigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNhbid0IG9wZW4gZXhwZWN0YXRpb25zIGxvZyBmaWxlICIgPDwgbG9nX2ZpbGVfbmFtZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiIGZvciAiIDw8ICggbV90ZXN0X29yX2xvZyA/ICJyZWFkaW5nIiA6ICJ3cml0aW5nIikgKTsKLQotICAgIGlmKCBtX3Rlc3Rfb3JfbG9nICkgewotICAgICAgICBzdGQ6OnN0cmluZyBsaW5lOwotICAgICAgICAKLSAgICAgICAgc3RkOjpnZXRsaW5lKCBtX2xvZ19maWxlLCBsaW5lLCBMSU5FX1NFUCApOwotICAgICAgICAKLSAgICAgICAgY29uc3Rfc3RyaW5nIGNsaW5lKCBsaW5lICk7Ci0gICAgICAgIHN0cmluZ190b2tlbl9pdGVyYXRvciB0aXQoIGNsaW5lLCAoZHJvcHBlZF9kZWxpbWV0ZXJzID0gQ0xNTl9TRVAsIGtlcHRfZGVsaW1ldGVycyA9IGR0X25vbmUpKTsKLQotICAgICAgICBORE5CT09TVF9DSEVDS19FUVVBTCggKnRpdCwgRklMRV9TSUcgKTsgCi0gICAgICAgICsrdGl0OwotICAgICAgICBORE5CT09TVF9DSEVDS19FUVVBTCggKnRpdCwgRUxPR19WRVIgKTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIG1fbG9nX2ZpbGUgPDwgRklMRV9TSUcgPDwgQ0xNTl9TRVAgPDwgRUxPR19WRVIgPDwgTElORV9TRVA7Ci0gICAgfQotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1ib29sCi1leHBlY3RhdGlvbnNfbG9nZ2VyOjpkZWNpc2lvbl9wb2ludCggY29uc3Rfc3RyaW5nLCBzdGQ6OnNpemVfdCApCi17Ci0gICAgaWYoIG1fdGVzdF9vcl9sb2cgKSB7Ci0gICAgICAgIHN0ZDo6c3RyaW5nIGxpbmU7Ci0gICAgICAgIAotICAgICAgICBzdGQ6OmdldGxpbmUoIG1fbG9nX2ZpbGUsIGxpbmUsIExJTkVfU0VQICk7Ci0gICAgICAgIAotICAgICAgICBjb25zdF9zdHJpbmcgY2xpbmUoIGxpbmUgKTsKLSAgICAgICAgc3RyaW5nX3Rva2VuX2l0ZXJhdG9yIHRpdCggY2xpbmUsIChkcm9wcGVkX2RlbGltZXRlcnMgPSBDTE1OX1NFUCwga2VwdF9kZWxpbWV0ZXJzID0gZHRfbm9uZSkpOwotICAgICAgICAKLSAgICAgICAgTkROQk9PU1RfQ0hFQ0tfRVFVQUwoICp0aXQsIERQX1NJRyApOyArK3RpdDsKLSAgICAgICAgcmV0dXJuIGxleGljYWxfY2FzdDxib29sPiggKnRpdCApOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgbV9sb2dfZmlsZSA8PCBEUF9TSUcgPDwgQ0xNTl9TRVAgPDwgc3RkOjpib29sYWxwaGEgPDwgdHJ1ZSA8PCBMSU5FX1NFUDsKLSAgICAgICAgCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLSAgICAKLXVuc2lnbmVkCi1leHBlY3RhdGlvbnNfbG9nZ2VyOjplbnRlcl9zY29wZSggY29uc3Rfc3RyaW5nLCBzdGQ6OnNpemVfdCwgY29uc3Rfc3RyaW5nIHNjb3BlX25hbWUgKQotewotICAgIGlmKCBtX3Rlc3Rfb3JfbG9nICkgewotICAgICAgICBzdGQ6OnN0cmluZyBsaW5lOwotICAgICAgICAKLSAgICAgICAgc3RkOjpnZXRsaW5lKCBtX2xvZ19maWxlLCBsaW5lLCBMSU5FX1NFUCApOwotICAgICAgICAKLSAgICAgICAgY29uc3Rfc3RyaW5nIGNsaW5lKCBsaW5lICk7Ci0gICAgICAgIHN0cmluZ190b2tlbl9pdGVyYXRvciB0aXQoIGNsaW5lLCAoZHJvcHBlZF9kZWxpbWV0ZXJzID0gQ0xNTl9TRVAsIGtlcHRfZGVsaW1ldGVycyA9IGR0X25vbmUpKTsKLSAgICAgICAgCi0gICAgICAgIE5ETkJPT1NUX0NIRUNLX0VRVUFMKCAqdGl0LCBTQ09QRV9TSUcgKTsgKyt0aXQ7Ci0gICAgICAgIE5ETkJPT1NUX0NIRUNLX0VRVUFMKCAqdGl0LCBzY29wZV9uYW1lICk7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBtX2xvZ19maWxlIDw8IFNDT1BFX1NJRyA8PCBDTE1OX1NFUCA8PCBzY29wZV9uYW1lIDw8IExJTkVfU0VQOwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gMDsKLX0KLSAgICAKLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLWV4cGVjdGF0aW9uc19sb2dnZXI6OmFsbG9jYXRlZCggY29uc3Rfc3RyaW5nLCBzdGQ6OnNpemVfdCwgdm9pZCosIHN0ZDo6c2l6ZV90IHMgKQotewotICAgIGlmKCBtX3Rlc3Rfb3JfbG9nICkgewotICAgICAgICBzdGQ6OnN0cmluZyBsaW5lOwotICAgICAgICAKLSAgICAgICAgc3RkOjpnZXRsaW5lKCBtX2xvZ19maWxlLCBsaW5lLCBMSU5FX1NFUCApOwotICAgICAgICAKLSAgICAgICAgY29uc3Rfc3RyaW5nIGNsaW5lKCBsaW5lICk7Ci0gICAgICAgIHN0cmluZ190b2tlbl9pdGVyYXRvciB0aXQoIGNsaW5lLCAoZHJvcHBlZF9kZWxpbWV0ZXJzID0gQ0xNTl9TRVAsIGtlcHRfZGVsaW1ldGVycyA9IGR0X25vbmUpKTsKLSAgICAgICAgCi0gICAgICAgIE5ETkJPT1NUX0NIRUNLX0VRVUFMKCAqdGl0LCBBTExPQ19TSUcgKTsgKyt0aXQ7Ci0gICAgICAgIE5ETkJPT1NUX0NIRUNLX0VRVUFMKCBsZXhpY2FsX2Nhc3Q8c3RkOjpzaXplX3Q+KCAqdGl0ICksIHMgKTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIG1fbG9nX2ZpbGUgPDwgQUxMT0NfU0lHIDw8IENMTU5fU0VQIDw8IHMgPDwgTElORV9TRVA7Ci0gICAgfQotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1leHBlY3RhdGlvbnNfbG9nZ2VyOjpkYXRhX2Zsb3coIGNvbnN0X3N0cmluZyBkICkKLXsKLSAgICBpZiggbV90ZXN0X29yX2xvZyApIHsKLSAgICAgICAgc3RkOjpzdHJpbmcgbGluZTsKLSAgICAgICAgCi0gICAgICAgIHN0ZDo6Z2V0bGluZSggbV9sb2dfZmlsZSwgbGluZSwgTElORV9TRVAgKTsKLSAgICAgICAgCi0gICAgICAgIGNvbnN0X3N0cmluZyBjbGluZSggbGluZSApOwotICAgICAgICBzdHJpbmdfdG9rZW5faXRlcmF0b3IgdGl0KCBjbGluZSwgKGRyb3BwZWRfZGVsaW1ldGVycyA9IENMTU5fU0VQLCBrZXB0X2RlbGltZXRlcnMgPSBkdF9ub25lKSk7Ci0gICAgICAgIAotICAgICAgICBORE5CT09TVF9DSEVDS19FUVVBTCggKnRpdCwgREFUQV9TSUcgKTsgKyt0aXQ7Ci0gICAgICAgIE5ETkJPT1NUX0NIRUNLX0VRVUFMKCAqdGl0LCBkICk7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBtX2xvZ19maWxlIDw8IERBVEFfU0lHIDw8IENMTU5fU0VQIDw8IGQgPDwgTElORV9TRVA7Ci0gICAgfQotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1zdGQ6OnN0cmluZwotZXhwZWN0YXRpb25zX2xvZ2dlcjo6cmV0dXJuX3ZhbHVlKCBjb25zdF9zdHJpbmcgZGVmYXVsdF92YWx1ZSApCi17Ci0gICAgaWYoIG1fdGVzdF9vcl9sb2cgKSB7Ci0gICAgICAgIHN0ZDo6c3RyaW5nIGxpbmU7Ci0gICAgICAgIAotICAgICAgICBzdGQ6OmdldGxpbmUoIG1fbG9nX2ZpbGUsIGxpbmUsIExJTkVfU0VQICk7Ci0gICAgICAgIAotICAgICAgICBjb25zdF9zdHJpbmcgY2xpbmUoIGxpbmUgKTsKLSAgICAgICAgc3RyaW5nX3Rva2VuX2l0ZXJhdG9yIHRpdCggY2xpbmUsIChkcm9wcGVkX2RlbGltZXRlcnMgPSBDTE1OX1NFUCwga2VwdF9kZWxpbWV0ZXJzID0gZHRfbm9uZSkpOwotICAgICAgICAKLSAgICAgICAgTkROQk9PU1RfQ0hFQ0tfRVFVQUwoICp0aXQsIFJFVFVSTl9TSUcgKTsgKyt0aXQ7Ci0gICAgICAgIAotICAgICAgICByZXR1cm4gc3RkOjpzdHJpbmcoIHRpdC0+YmVnaW4oKSwgdGl0LT5zaXplKCkgKTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIG1fbG9nX2ZpbGUgPDwgUkVUVVJOX1NJRyA8PCBDTE1OX1NFUCA8PCBkZWZhdWx0X3ZhbHVlIDw8IExJTkVfU0VQOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgIHJldHVybiBzdGQ6OnN0cmluZygpOwotICAgIH0KLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLSAgICAKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgbG9nZ2VkIGV4cGVjdGF0aW9ucyB0ZXN0ICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdm9pZCBORE5CT09TVF9URVNUX0RFQ0wKLWxvZ2dlZF9leHBlY3RhdGlvbnMoIGNhbGxiYWNrMDw+IGNvbnN0JiBGLCBjb25zdF9zdHJpbmcgbG9nX2ZpbGVfbmFtZSwgYm9vbCB0ZXN0X29yX2xvZyApCi17Ci0gICAgZXhwZWN0YXRpb25zX2xvZ2dlciBlbCggbG9nX2ZpbGVfbmFtZSwgdGVzdF9vcl9sb2cgKTsKLQotICAgIEYoKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAgLy8gbmFtZXNwYWNlIGl0ZXN0Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gbm90IGFuY2llbnQgY29tcGlsZXIKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RFU1RfTE9HR0VEX0VYUEVDVEFUSU9OU19JUFBfMTIwOTA1R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC9wbGFpbl9yZXBvcnRfZm9ybWF0dGVyLmlwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL3BsYWluX3JlcG9ydF9mb3JtYXR0ZXIuaXBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5N2JmZDFkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL3BsYWluX3JlcG9ydF9mb3JtYXR0ZXIuaXBwCisrKyAvZGV2L251bGwKQEAgLTEsMTk4ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDQ5MzEyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBwbGFpbiByZXBvcnQgZm9ybWF0dGVyIGRlZmluaXRpb24KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfUExBSU5fUkVQT1JUX0ZPUk1BVFRFUl9JUFBfMDIwMTA1R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfUExBSU5fUkVQT1JUX0ZPUk1BVFRFUl9JUFBfMDIwMTA1R0VSCi0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L291dHB1dC9wbGFpbl9yZXBvcnRfZm9ybWF0dGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2N1c3RvbV9tYW5pcC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9yZXN1bHRzX2NvbGxlY3Rvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91bml0X3Rlc3Rfc3VpdGVfaW1wbC5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2Jhc2ljX2NzdHJpbmcvaW8uaHBwPgotCi0vLyBTVEwKLSNpbmNsdWRlIDxpb21hbmlwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy9ub190cjEvY21hdGguaHBwPgotI2luY2x1ZGUgPGlvc3RyZWFtPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0jIGlmZGVmIE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFCi1uYW1lc3BhY2Ugc3RkIHsgdXNpbmcgOjpsb2cxMDsgfQotIyBlbmRpZgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgdW5pdF90ZXN0IHsKLQotbmFtZXNwYWNlIG91dHB1dCB7Ci0KLW5hbWVzcGFjZSB7Ci0KLXR5cGVkZWYgY3VzdG9tX21hbmlwPHN0cnVjdCBxdW90ZV90PiBxdW90ZTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWlubGluZSBzdGQ6Om9zdHJlYW0mCi1vcGVyYXRvcjw8KCBjdXN0b21fcHJpbnRlcjxxdW90ZT4gY29uc3QmIHAsIFQgY29uc3QmIHZhbHVlICkKLXsKLSAgICAqcCA8PCAnIicgPDwgdmFsdWUgPDwgJyInOwotCi0gICAgcmV0dXJuICpwOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1wcmludF9zdGF0X3ZhbHVlKCBzdGQ6Om9zdHJlYW0mIG9zdHIsIGNvdW50ZXJfdCB2LCBjb3VudGVyX3QgaW5kZW50LCBjb3VudGVyX3QgdG90YWwsCi0gICAgICAgICAgICAgICAgICBjb25zdF9zdHJpbmcgbmFtZSwgY29uc3Rfc3RyaW5nIHJlcyApCi17Ci0gICAgaWYoIHYgPiAwICkgewotICAgICAgICBvc3RyIDw8IHN0ZDo6c2V0dyggaW5kZW50ICkgPDwgIiIKLSAgICAgICAgICAgICA8PCB2IDw8ICcgJyA8PCBuYW1lIDw8ICggdiAhPSAxID8gInMiIDogIiIgKTsKLSAgICAgICAgaWYoIHRvdGFsID4gMCApCi0gICAgICAgICAgICBvc3RyIDw8ICIgb3V0IG9mICIgPDwgdG90YWw7Ci0KLSAgICAgICAgb3N0ciA8PCAnICcgPDwgcmVzIDw8ICdcbic7Ci0gICAgfQotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIGxvY2FsIG5hbWVzcGFjZQotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgcGxhaW5fcmVwb3J0X2Zvcm1hdHRlciAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXZvaWQKLXBsYWluX3JlcG9ydF9mb3JtYXR0ZXI6OnJlc3VsdHNfcmVwb3J0X3N0YXJ0KCBzdGQ6Om9zdHJlYW0mIG9zdHIgKQotewotICAgIG1faW5kZW50ID0gMDsKLSAgICBvc3RyIDw8ICdcbic7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXBsYWluX3JlcG9ydF9mb3JtYXR0ZXI6OnJlc3VsdHNfcmVwb3J0X2ZpbmlzaCggc3RkOjpvc3RyZWFtJiBvc3RyICkKLXsKLSAgICBvc3RyLmZsdXNoKCk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXBsYWluX3JlcG9ydF9mb3JtYXR0ZXI6OnRlc3RfdW5pdF9yZXBvcnRfc3RhcnQoIHRlc3RfdW5pdCBjb25zdCYgdHUsIHN0ZDo6b3N0cmVhbSYgb3N0ciApCi17Ci0gICAgdGVzdF9yZXN1bHRzIGNvbnN0JiB0ciA9IHJlc3VsdHNfY29sbGVjdG9yLnJlc3VsdHMoIHR1LnBfaWQgKTsKLQotICAgIGNvbnN0X3N0cmluZyBkZXNjcjsKLQotICAgIGlmKCB0ci5wYXNzZWQoKSApCi0gICAgICAgIGRlc2NyID0gInBhc3NlZCI7Ci0gICAgZWxzZSBpZiggdHIucF9za2lwcGVkICkKLSAgICAgICAgZGVzY3IgPSAic2tpcHBlZCI7Ci0gICAgZWxzZSBpZiggdHIucF9hYm9ydGVkICkKLSAgICAgICAgZGVzY3IgPSAiYWJvcnRlZCI7Ci0gICAgZWxzZQotICAgICAgICBkZXNjciA9ICJmYWlsZWQiOwotCi0gICAgb3N0ciA8PCBzdGQ6OnNldHcoIG1faW5kZW50ICkgPDwgIiIKLSAgICAgICAgIDw8ICJUZXN0ICIgPDwgKHR1LnBfdHlwZSA9PSB0dXRfY2FzZSA/ICJjYXNlICIgOiAic3VpdGUgIiApIDw8IHF1b3RlKCkgPDwgdHUucF9uYW1lIDw8ICcgJyA8PCBkZXNjcjsKLQotICAgIGlmKCB0ci5wX3NraXBwZWQgKSB7Ci0gICAgICAgIG9zdHIgPDwgIiBkdWUgdG8gIiA8PCAodHUuY2hlY2tfZGVwZW5kZW5jaWVzKCkgPyAidGVzdCBhYm9ydGluZ1xuIiA6ICJmYWlsZWQgZGVwZW5kYW5jeVxuIiApOwotICAgICAgICBtX2luZGVudCArPSAyOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIGNvdW50ZXJfdCB0b3RhbF9hc3NlcnRpb25zICA9IHRyLnBfYXNzZXJ0aW9uc19wYXNzZWQgKyB0ci5wX2Fzc2VydGlvbnNfZmFpbGVkOwotICAgIGNvdW50ZXJfdCB0b3RhbF90YyAgICAgICAgICA9IHRyLnBfdGVzdF9jYXNlc19wYXNzZWQgKyB0ci5wX3Rlc3RfY2FzZXNfZmFpbGVkICsgdHIucF90ZXN0X2Nhc2VzX3NraXBwZWQ7Ci0KLSAgICBpZiggdG90YWxfYXNzZXJ0aW9ucyA+IDAgfHwgdG90YWxfdGMgPiAwICkKLSAgICAgICAgb3N0ciA8PCAiIHdpdGg6IjsKLQotICAgIG9zdHIgPDwgJ1xuJzsKLSAgICBtX2luZGVudCArPSAyOwotCi0gICAgcHJpbnRfc3RhdF92YWx1ZSggb3N0ciwgdHIucF9hc3NlcnRpb25zX3Bhc3NlZCwgbV9pbmRlbnQsIHRvdGFsX2Fzc2VydGlvbnMsICJhc3NlcnRpb24iLCAicGFzc2VkIiApOwotICAgIHByaW50X3N0YXRfdmFsdWUoIG9zdHIsIHRyLnBfYXNzZXJ0aW9uc19mYWlsZWQsIG1faW5kZW50LCB0b3RhbF9hc3NlcnRpb25zLCAiYXNzZXJ0aW9uIiwgImZhaWxlZCIgKTsKLSAgICBwcmludF9zdGF0X3ZhbHVlKCBvc3RyLCB0ci5wX2V4cGVjdGVkX2ZhaWx1cmVzLCBtX2luZGVudCwgMCAgICAgICAgICAgICAgICwgImZhaWx1cmUiICAsICJleHBlY3RlZCIgKTsKLSAgICBwcmludF9zdGF0X3ZhbHVlKCBvc3RyLCB0ci5wX3Rlc3RfY2FzZXNfcGFzc2VkLCBtX2luZGVudCwgdG90YWxfdGMgICAgICAgICwgInRlc3QgY2FzZSIsICJwYXNzZWQiICk7Ci0gICAgcHJpbnRfc3RhdF92YWx1ZSggb3N0ciwgdHIucF90ZXN0X2Nhc2VzX2ZhaWxlZCwgbV9pbmRlbnQsIHRvdGFsX3RjICAgICAgICAsICJ0ZXN0IGNhc2UiLCAiZmFpbGVkIiApOwotICAgIHByaW50X3N0YXRfdmFsdWUoIG9zdHIsIHRyLnBfdGVzdF9jYXNlc19za2lwcGVkLCBtX2luZGVudCwgdG90YWxfdGMgICAgICAgLCAidGVzdCBjYXNlIiwgInNraXBwZWQiICk7Ci0gICAgcHJpbnRfc3RhdF92YWx1ZSggb3N0ciwgdHIucF90ZXN0X2Nhc2VzX2Fib3J0ZWQsIG1faW5kZW50LCB0b3RhbF90YyAgICAgICAsICJ0ZXN0IGNhc2UiLCAiYWJvcnRlZCIgKTsKLSAgICAKLSAgICBvc3RyIDw8ICdcbic7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXBsYWluX3JlcG9ydF9mb3JtYXR0ZXI6OnRlc3RfdW5pdF9yZXBvcnRfZmluaXNoKCB0ZXN0X3VuaXQgY29uc3QmLCBzdGQ6Om9zdHJlYW0mICkKLXsKLSAgICBtX2luZGVudCAtPSAyOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1wbGFpbl9yZXBvcnRfZm9ybWF0dGVyOjpkb19jb25maXJtYXRpb25fcmVwb3J0KCB0ZXN0X3VuaXQgY29uc3QmIHR1LCBzdGQ6Om9zdHJlYW0mIG9zdHIgKQotewotICAgIHRlc3RfcmVzdWx0cyBjb25zdCYgdHIgPSByZXN1bHRzX2NvbGxlY3Rvci5yZXN1bHRzKCB0dS5wX2lkICk7Ci0gICAgCi0gICAgaWYoIHRyLnBhc3NlZCgpICkgewotICAgICAgICBvc3RyIDw8ICIqKiogTm8gZXJyb3JzIGRldGVjdGVkXG4iOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgICAgICAKLSAgICBpZiggdHIucF9za2lwcGVkICkgewotICAgICAgICBvc3RyIDw8ICIqKiogVGVzdCAiIDw8IHR1LnBfdHlwZV9uYW1lIDw8ICIgc2tpcHBlZCBkdWUgdG8gIiAKLSAgICAgICAgICAgICA8PCAodHUuY2hlY2tfZGVwZW5kZW5jaWVzKCkgPyAidGVzdCBhYm9ydGluZ1xuIiA6ICJmYWlsZWQgZGVwZW5kYW5jeVxuIiApOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYoIHRyLnBfYXNzZXJ0aW9uc19mYWlsZWQgPT0gMCApIHsKLSAgICAgICAgb3N0ciA8PCAiKioqIGVycm9ycyBkZXRlY3RlZCBpbiB0ZXN0ICIgPDwgdHUucF90eXBlX25hbWUgPDwgIiAiIDw8IHF1b3RlKCkgPDwgdHUucF9uYW1lCi0gICAgICAgICAgICAgPDwgIjsgc2VlIHN0YW5kYXJkIG91dHB1dCBmb3IgZGV0YWlsc1xuIjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGNvdW50ZXJfdCBudW1fZmFpbHVyZXMgPSB0ci5wX2Fzc2VydGlvbnNfZmFpbGVkOwotICAgIAotICAgIG9zdHIgPDwgIioqKiAiIDw8IG51bV9mYWlsdXJlcyA8PCAiIGZhaWx1cmUiIDw8ICggbnVtX2ZhaWx1cmVzICE9IDEgPyAicyIgOiAiIiApIDw8ICIgZGV0ZWN0ZWQiOwotICAgIAotICAgIGlmKCB0ci5wX2V4cGVjdGVkX2ZhaWx1cmVzID4gMCApCi0gICAgICAgIG9zdHIgPDwgIiAoIiA8PCB0ci5wX2V4cGVjdGVkX2ZhaWx1cmVzIDw8ICIgZmFpbHVyZSIgPDwgKCB0ci5wX2V4cGVjdGVkX2ZhaWx1cmVzICE9IDEgPyAicyIgOiAiIiApIDw8ICIgZXhwZWN0ZWQpIjsKLSAgICAKLSAgICBvc3RyIDw8ICIgaW4gdGVzdCAiIDw8IHR1LnBfdHlwZV9uYW1lIDw8ICIgIiA8PCBxdW90ZSgpIDw8IHR1LnBfbmFtZSA8PCAiXG4iOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSBvdXRwdXQKLQotfSAvLyBuYW1lc3BhY2UgdW5pdF90ZXN0Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9QTEFJTl9SRVBPUlRfRk9STUFUVEVSX0lQUF8wMjAxMDVHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL3Byb2dyZXNzX21vbml0b3IuaXBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwvcHJvZ3Jlc3NfbW9uaXRvci5pcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDljNGVlODguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwvcHJvZ3Jlc3NfbW9uaXRvci5pcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTAgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTc5OTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGltcGxlbWVudHMgc2ltcGxlIHRleHQgYmFzZWQgcHJvZ3Jlc3MgbW9uaXRvcgotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9QUk9HUkVTU19NT05JVE9SX0lQUF8wMjAxMDVHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9QUk9HUkVTU19NT05JVE9SX0lQUF8wMjAxMDVHRVIKLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvcHJvZ3Jlc3NfbW9uaXRvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91bml0X3Rlc3Rfc3VpdGVfaW1wbC5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC91bml0X3Rlc3RfcGFyYW1ldGVycy5ocHA+Ci0KLS8vIEJvb3N0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJvZ3Jlc3MuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Njb3BlZF9wdHIuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgdW5pdF90ZXN0IHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgIHByb2dyZXNzX21vbml0b3IgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1uYW1lc3BhY2UgewotCi1zdHJ1Y3QgcHJvZ3Jlc3NfbW9uaXRvcl9pbXBsIHsKLSAgICAvLyBDb25zdHJ1Y3RvcgotICAgIHByb2dyZXNzX21vbml0b3JfaW1wbCgpCi0gICAgICAgIDogbV9zdHJlYW0oIHJ1bnRpbWVfY29uZmlnOjpsb2dfc2luaygpICkKLSAgICB7fQotCi0gICAgc3RkOjpvc3RyZWFtKiAgICAgICAgICAgICAgICBtX3N0cmVhbTsKLSAgICBzY29wZWRfcHRyPHByb2dyZXNzX2Rpc3BsYXk+IG1fcHJvZ3Jlc3NfZGlzcGxheTsKLX07Ci0KLXByb2dyZXNzX21vbml0b3JfaW1wbCYgc19wbV9pbXBsKCkgeyBzdGF0aWMgcHJvZ3Jlc3NfbW9uaXRvcl9pbXBsIHRoZV9pbnN0OyByZXR1cm4gdGhlX2luc3Q7IH0KLQotfSAvLyBsb2NhbCBuYW1lc3BhY2UKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotcHJvZ3Jlc3NfbW9uaXRvcl90Ojp0ZXN0X3N0YXJ0KCBjb3VudGVyX3QgdGVzdF9jYXNlc19hbW91bnQgKQotewotICAgIHNfcG1faW1wbCgpLm1fcHJvZ3Jlc3NfZGlzcGxheS5yZXNldCggbmV3IHByb2dyZXNzX2Rpc3BsYXkoIHRlc3RfY2FzZXNfYW1vdW50LCAqc19wbV9pbXBsKCkubV9zdHJlYW0gKSApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1wcm9ncmVzc19tb25pdG9yX3Q6OnRlc3RfYWJvcnRlZCgpCi17Ci0gICAgKCpzX3BtX2ltcGwoKS5tX3Byb2dyZXNzX2Rpc3BsYXkpICs9IHNfcG1faW1wbCgpLm1fcHJvZ3Jlc3NfZGlzcGxheS0+Y291bnQoKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotcHJvZ3Jlc3NfbW9uaXRvcl90Ojp0ZXN0X3VuaXRfZmluaXNoKCB0ZXN0X3VuaXQgY29uc3QmIHR1LCB1bnNpZ25lZCBsb25nICkKLXsKLSAgICBpZiggdHUucF90eXBlID09IHR1dF9jYXNlICkKLSAgICAgICAgKysoKnNfcG1faW1wbCgpLm1fcHJvZ3Jlc3NfZGlzcGxheSk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXByb2dyZXNzX21vbml0b3JfdDo6dGVzdF91bml0X3NraXBwZWQoIHRlc3RfdW5pdCBjb25zdCYgdHUgKQotewotICAgIHRlc3RfY2FzZV9jb3VudGVyIHRjYzsKLSAgICB0cmF2ZXJzZV90ZXN0X3RyZWUoIHR1LCB0Y2MgKTsKLSAgICAKLSAgICAoKnNfcG1faW1wbCgpLm1fcHJvZ3Jlc3NfZGlzcGxheSkgKz0gdGNjLnBfY291bnQ7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXByb2dyZXNzX21vbml0b3JfdDo6c2V0X3N0cmVhbSggc3RkOjpvc3RyZWFtJiBvc3RyICkKLXsKLSAgICBzX3BtX2ltcGwoKS5tX3N0cmVhbSA9ICZvc3RyOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotICAgIAotfSAvLyBuYW1lc3BhY2UgdW5pdF90ZXN0Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9QUk9HUkVTU19NT05JVE9SX0lQUF8wMjAxMDVHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL3Jlc3VsdHNfY29sbGVjdG9yLmlwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL3Jlc3VsdHNfY29sbGVjdG9yLmlwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDg2MmY2OC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC9yZXN1bHRzX2NvbGxlY3Rvci5pcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyOTQgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTc5OTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGltcGxlbWVudHMgVW5pdCBUZXN0IHJlc3VsdHMgY29sbGVjdGluZyBmYWNpbGl0eS4KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfUkVTVUxUU19DT0xMRUNUT1JfSVBQXzAyMTEwNUdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX1JFU1VMVFNfQ09MTEVDVE9SX0lQUF8wMjExMDVHRVIKLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdW5pdF90ZXN0X3N1aXRlX2ltcGwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdW5pdF90ZXN0X2xvZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9yZXN1bHRzX2NvbGxlY3Rvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9mcmFtZXdvcmsuaHBwPgotCi0vLyBCb29zdAotI2luY2x1ZGUgPG5kbmJvb3N0L2NzdGRsaWIuaHBwPgotCi0vLyBTVEwKLSNpbmNsdWRlIDxtYXA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSB1bml0X3Rlc3QgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgIHRlc3RfcmVzdWx0cyAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlc3RfcmVzdWx0czo6dGVzdF9yZXN1bHRzKCkKLXsKLSAgICBjbGVhcigpOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1ib29sCi10ZXN0X3Jlc3VsdHM6OnBhc3NlZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICAhcF9za2lwcGVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmCi0gICAgICAgICAgICBwX3Rlc3RfY2FzZXNfZmFpbGVkID09IDAgICAgICAgICAgICAgICAgICAgICYmCi0gICAgICAgICAgICBwX2Fzc2VydGlvbnNfZmFpbGVkIDw9IHBfZXhwZWN0ZWRfZmFpbHVyZXMgICYmCi0gICAgICAgICAgICAhcF9hYm9ydGVkOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1pbnQKLXRlc3RfcmVzdWx0czo6cmVzdWx0X2NvZGUoKSBjb25zdAotewotICAgIHJldHVybiBwYXNzZWQoKSA/IGV4aXRfc3VjY2VzcwotICAgICAgICAgICA6ICggKHBfYXNzZXJ0aW9uc19mYWlsZWQgPiBwX2V4cGVjdGVkX2ZhaWx1cmVzIHx8IHBfc2tpcHBlZCApCi0gICAgICAgICAgICAgICAgICAgID8gZXhpdF90ZXN0X2ZhaWx1cmUKLSAgICAgICAgICAgICAgICAgICAgOiBleGl0X2V4Y2VwdGlvbl9mYWlsdXJlICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXRlc3RfcmVzdWx0czo6b3BlcmF0b3IrPSggdGVzdF9yZXN1bHRzIGNvbnN0JiB0ciApCi17Ci0gICAgcF9hc3NlcnRpb25zX3Bhc3NlZC52YWx1ZSAgICs9IHRyLnBfYXNzZXJ0aW9uc19wYXNzZWQ7Ci0gICAgcF9hc3NlcnRpb25zX2ZhaWxlZC52YWx1ZSAgICs9IHRyLnBfYXNzZXJ0aW9uc19mYWlsZWQ7Ci0gICAgcF90ZXN0X2Nhc2VzX3Bhc3NlZC52YWx1ZSAgICs9IHRyLnBfdGVzdF9jYXNlc19wYXNzZWQ7Ci0gICAgcF90ZXN0X2Nhc2VzX2ZhaWxlZC52YWx1ZSAgICs9IHRyLnBfdGVzdF9jYXNlc19mYWlsZWQ7Ci0gICAgcF90ZXN0X2Nhc2VzX3NraXBwZWQudmFsdWUgICs9IHRyLnBfdGVzdF9jYXNlc19za2lwcGVkOwotICAgIHBfdGVzdF9jYXNlc19hYm9ydGVkLnZhbHVlICArPSB0ci5wX3Rlc3RfY2FzZXNfYWJvcnRlZDsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotdGVzdF9yZXN1bHRzOjpjbGVhcigpCi17Ci0gICAgcF9hc3NlcnRpb25zX3Bhc3NlZC52YWx1ZSAgICA9IDA7Ci0gICAgcF9hc3NlcnRpb25zX2ZhaWxlZC52YWx1ZSAgICA9IDA7Ci0gICAgcF9leHBlY3RlZF9mYWlsdXJlcy52YWx1ZSAgICA9IDA7Ci0gICAgcF90ZXN0X2Nhc2VzX3Bhc3NlZC52YWx1ZSAgICA9IDA7Ci0gICAgcF90ZXN0X2Nhc2VzX2ZhaWxlZC52YWx1ZSAgICA9IDA7Ci0gICAgcF90ZXN0X2Nhc2VzX3NraXBwZWQudmFsdWUgICA9IDA7Ci0gICAgcF90ZXN0X2Nhc2VzX2Fib3J0ZWQudmFsdWUgICA9IDA7Ci0gICAgcF9hYm9ydGVkLnZhbHVlICAgICAgICAgICAgICA9IGZhbHNlOwotICAgIHBfc2tpcHBlZC52YWx1ZSAgICAgICAgICAgICAgPSB0cnVlOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotICAgIAotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgcmVzdWx0c19jb2xsZWN0b3IgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPDEzMDApCi0KLW5hbWVzcGFjZSB7Ci0KLXN0cnVjdCByZXN1bHRzX2NvbGxlY3Rvcl9pbXBsIHsKLSAgICBzdGQ6Om1hcDx0ZXN0X3VuaXRfaWQsdGVzdF9yZXN1bHRzPiBtX3Jlc3VsdHNfc3RvcmU7Ci19OwotCi1yZXN1bHRzX2NvbGxlY3Rvcl9pbXBsJiBzX3JjX2ltcGwoKSB7IHN0YXRpYyByZXN1bHRzX2NvbGxlY3Rvcl9pbXBsIHRoZV9pbnN0OyByZXR1cm4gdGhlX2luc3Q7IH0KLQotfSAvLyBsb2NhbCBuYW1lc3BhY2UKLQotI2Vsc2UKLQotc3RydWN0IHJlc3VsdHNfY29sbGVjdG9yX2ltcGwgewotICAgIHN0ZDo6bWFwPHRlc3RfdW5pdF9pZCx0ZXN0X3Jlc3VsdHM+IG1fcmVzdWx0c19zdG9yZTsKLX07Ci0KLXN0YXRpYyByZXN1bHRzX2NvbGxlY3Rvcl9pbXBsJiBzX3JjX2ltcGwoKSB7IHN0YXRpYyByZXN1bHRzX2NvbGxlY3Rvcl9pbXBsIHRoZV9pbnN0OyByZXR1cm4gdGhlX2luc3Q7IH0KLQotI2VuZGlmCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXJlc3VsdHNfY29sbGVjdG9yX3Q6OnRlc3Rfc3RhcnQoIGNvdW50ZXJfdCApCi17Ci0gICAgc19yY19pbXBsKCkubV9yZXN1bHRzX3N0b3JlLmNsZWFyKCk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXJlc3VsdHNfY29sbGVjdG9yX3Q6OnRlc3RfZmluaXNoKCkKLXsKLSAgICAvLyBkbyBub3RoaW5nCi19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXJlc3VsdHNfY29sbGVjdG9yX3Q6OnRlc3RfYWJvcnRlZCgpCi17Ci0gICAgLy8gZG8gbm90aGluZwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1yZXN1bHRzX2NvbGxlY3Rvcl90Ojp0ZXN0X3VuaXRfc3RhcnQoIHRlc3RfdW5pdCBjb25zdCYgdHUgKQotewotICAgIC8vIGluaXQgdGVzdF9yZXN1bHRzIGVudHJ5Ci0gICAgdGVzdF9yZXN1bHRzJiB0ciA9IHNfcmNfaW1wbCgpLm1fcmVzdWx0c19zdG9yZVt0dS5wX2lkXTsKLQotICAgIHRyLmNsZWFyKCk7Ci0gICAgCi0gICAgdHIucF9leHBlY3RlZF9mYWlsdXJlcy52YWx1ZSAgICA9IHR1LnBfZXhwZWN0ZWRfZmFpbHVyZXM7Ci0gICAgdHIucF9za2lwcGVkLnZhbHVlICAgICAgICAgICAgICA9IGZhbHNlOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1jbGFzcyByZXN1bHRzX2NvbGxlY3RfaGVscGVyIDogcHVibGljIHRlc3RfdHJlZV92aXNpdG9yIHsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCByZXN1bHRzX2NvbGxlY3RfaGVscGVyKCB0ZXN0X3Jlc3VsdHMmIHRyLCB0ZXN0X3VuaXQgY29uc3QmIHRzICkgOiBtX3RyKCB0ciApLCBtX3RzKCB0cyApIHt9Ci0KLSAgICB2b2lkICAgIHZpc2l0KCB0ZXN0X2Nhc2UgY29uc3QmIHRjICkKLSAgICB7Ci0gICAgICAgIHRlc3RfcmVzdWx0cyBjb25zdCYgdHIgPSByZXN1bHRzX2NvbGxlY3Rvci5yZXN1bHRzKCB0Yy5wX2lkICk7Ci0gICAgICAgIG1fdHIgKz0gdHI7Ci0KLSAgICAgICAgaWYoIHRyLnBhc3NlZCgpICkKLSAgICAgICAgICAgIG1fdHIucF90ZXN0X2Nhc2VzX3Bhc3NlZC52YWx1ZSsrOwotICAgICAgICBlbHNlIGlmKCB0ci5wX3NraXBwZWQgKQotICAgICAgICAgICAgbV90ci5wX3Rlc3RfY2FzZXNfc2tpcHBlZC52YWx1ZSsrOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGlmKCB0ci5wX2Fib3J0ZWQgKQotICAgICAgICAgICAgICAgIG1fdHIucF90ZXN0X2Nhc2VzX2Fib3J0ZWQudmFsdWUrKzsKLSAgICAgICAgICAgIG1fdHIucF90ZXN0X2Nhc2VzX2ZhaWxlZC52YWx1ZSsrOwotICAgICAgICB9Ci0gICAgfQotICAgIGJvb2wgICAgdGVzdF9zdWl0ZV9zdGFydCggdGVzdF9zdWl0ZSBjb25zdCYgdHMgKQotICAgIHsKLSAgICAgICAgaWYoIG1fdHMucF9pZCA9PSB0cy5wX2lkICkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIG1fdHIgKz0gcmVzdWx0c19jb2xsZWN0b3IucmVzdWx0cyggdHMucF9pZCApOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotCi1wcml2YXRlOgotICAgIC8vIERhdGEgbWVtYmVycwotICAgIHRlc3RfcmVzdWx0cyYgICAgICAgbV90cjsKLSAgICB0ZXN0X3VuaXQgY29uc3QmICAgIG1fdHM7Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1yZXN1bHRzX2NvbGxlY3Rvcl90Ojp0ZXN0X3VuaXRfZmluaXNoKCB0ZXN0X3VuaXQgY29uc3QmIHR1LCB1bnNpZ25lZCBsb25nICkKLXsKLSAgICBpZiggdHUucF90eXBlID09IHR1dF9zdWl0ZSApIHsKLSAgICAgICAgcmVzdWx0c19jb2xsZWN0X2hlbHBlciBjaCggc19yY19pbXBsKCkubV9yZXN1bHRzX3N0b3JlW3R1LnBfaWRdLCB0dSApOwotCi0gICAgICAgIHRyYXZlcnNlX3Rlc3RfdHJlZSggdHUsIGNoICk7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICB0ZXN0X3Jlc3VsdHMgY29uc3QmIHRyID0gc19yY19pbXBsKCkubV9yZXN1bHRzX3N0b3JlW3R1LnBfaWRdOwotICAgICAgICAKLSAgICAgICAgYm9vbCBudW1fZmFpbHVyZXNfbWF0Y2ggPSB0ci5wX2Fib3J0ZWQgfHwgdHIucF9hc3NlcnRpb25zX2ZhaWxlZCA+PSB0ci5wX2V4cGVjdGVkX2ZhaWx1cmVzOwotICAgICAgICBpZiggIW51bV9mYWlsdXJlc19tYXRjaCApCi0gICAgICAgICAgICBORE5CT09TVF9URVNUX01FU1NBR0UoICJUZXN0IGNhc2UgIiA8PCB0dS5wX25hbWUgPDwgIiBoYXMgZmV3ZXIgZmFpbHVyZXMgdGhhbiBleHBlY3RlZCIgKTsKLQotICAgICAgICBib29sIGNoZWNrX2FueV9hc3NlcnRpb25zID0gdHIucF9hYm9ydGVkIHx8ICh0ci5wX2Fzc2VydGlvbnNfZmFpbGVkICE9IDApIHx8ICh0ci5wX2Fzc2VydGlvbnNfcGFzc2VkICE9IDApOwotICAgICAgICBpZiggIWNoZWNrX2FueV9hc3NlcnRpb25zICkKLSAgICAgICAgICAgIE5ETkJPT1NUX1RFU1RfTUVTU0FHRSggIlRlc3QgY2FzZSAiIDw8IHR1LnBfbmFtZSA8PCAiIGRpZCBub3QgY2hlY2sgYW55IGFzc2VydGlvbnMiICk7Ci0gICAgfQotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1yZXN1bHRzX2NvbGxlY3Rvcl90Ojp0ZXN0X3VuaXRfc2tpcHBlZCggdGVzdF91bml0IGNvbnN0JiB0dSApCi17Ci0gICAgaWYoIHR1LnBfdHlwZSA9PSB0dXRfc3VpdGUgKSB7Ci0gICAgICAgIHRlc3RfY2FzZV9jb3VudGVyIHRjYzsKLSAgICAgICAgdHJhdmVyc2VfdGVzdF90cmVlKCB0dSwgdGNjICk7Ci0KLSAgICAgICAgdGVzdF9yZXN1bHRzJiB0ciA9IHNfcmNfaW1wbCgpLm1fcmVzdWx0c19zdG9yZVt0dS5wX2lkXTsKLQotICAgICAgICB0ci5jbGVhcigpOwotICAgIAotICAgICAgICB0ci5wX3NraXBwZWQudmFsdWUgICAgICAgICAgICAgID0gdHJ1ZTsKLSAgICAgICAgdHIucF90ZXN0X2Nhc2VzX3NraXBwZWQudmFsdWUgICA9IHRjYy5wX2NvdW50OwotICAgIH0KLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotcmVzdWx0c19jb2xsZWN0b3JfdDo6YXNzZXJ0aW9uX3Jlc3VsdCggYm9vbCBwYXNzZWQgKQotewotICAgIHRlc3RfcmVzdWx0cyYgdHIgPSBzX3JjX2ltcGwoKS5tX3Jlc3VsdHNfc3RvcmVbZnJhbWV3b3JrOjpjdXJyZW50X3Rlc3RfY2FzZSgpLnBfaWRdOwotCi0gICAgaWYoIHBhc3NlZCApCi0gICAgICAgIHRyLnBfYXNzZXJ0aW9uc19wYXNzZWQudmFsdWUrKzsKLSAgICBlbHNlCi0gICAgICAgIHRyLnBfYXNzZXJ0aW9uc19mYWlsZWQudmFsdWUrKzsKLQotICAgIGlmKCB0ci5wX2Fzc2VydGlvbnNfZmFpbGVkID09IDEgKQotICAgICAgICBmaXJzdF9mYWlsZWRfYXNzZXJ0aW9uKCk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXJlc3VsdHNfY29sbGVjdG9yX3Q6OmV4Y2VwdGlvbl9jYXVnaHQoIGV4ZWN1dGlvbl9leGNlcHRpb24gY29uc3QmICkKLXsKLSAgICB0ZXN0X3Jlc3VsdHMmIHRyID0gc19yY19pbXBsKCkubV9yZXN1bHRzX3N0b3JlW2ZyYW1ld29yazo6Y3VycmVudF90ZXN0X2Nhc2UoKS5wX2lkXTsKLQotICAgIHRyLnBfYXNzZXJ0aW9uc19mYWlsZWQudmFsdWUrKzsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotcmVzdWx0c19jb2xsZWN0b3JfdDo6dGVzdF91bml0X2Fib3J0ZWQoIHRlc3RfdW5pdCBjb25zdCYgdHUgKQotewotICAgIHNfcmNfaW1wbCgpLm1fcmVzdWx0c19zdG9yZVt0dS5wX2lkXS5wX2Fib3J0ZWQudmFsdWUgPSB0cnVlOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZXN0X3Jlc3VsdHMgY29uc3QmCi1yZXN1bHRzX2NvbGxlY3Rvcl90OjpyZXN1bHRzKCB0ZXN0X3VuaXRfaWQgaWQgKSBjb25zdAotewotICAgIHJldHVybiBzX3JjX2ltcGwoKS5tX3Jlc3VsdHNfc3RvcmVbaWRdOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSB1bml0X3Rlc3QKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX1JFU1VMVFNfQ09MTEVDVE9SX0lQUF8wMjExMDVHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL3Jlc3VsdHNfcmVwb3J0ZXIuaXBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwvcmVzdWx0c19yZXBvcnRlci5pcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ2NmZhODQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwvcmVzdWx0c19yZXBvcnRlci5pcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMDIgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTc5OTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IHJlc3VsdCByZXBvcnRpbmcgZmFjaWx0aWVzCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX1JFU1VMVFNfUkVQT1JURVJfSVBQXzAyMDEwNUdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX1JFU1VMVFNfUkVQT1JURVJfSVBQXzAyMDEwNUdFUgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9yZXN1bHRzX3JlcG9ydGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3VuaXRfdGVzdF9zdWl0ZV9pbXBsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3Jlc3VsdHNfY29sbGVjdG9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2ZyYW1ld29yay5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9vdXRwdXQvcGxhaW5fcmVwb3J0X2Zvcm1hdHRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9vdXRwdXQveG1sX3JlcG9ydF9mb3JtYXR0ZXIuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvdW5pdF90ZXN0X3BhcmFtZXRlcnMuaHBwPgotCi0vLyBCb29zdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Njb3BlZF9wdHIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2lvL2lvc19zdGF0ZS5ocHA+Ci10eXBlZGVmIDo6bmRuYm9vc3Q6OmlvOjppb3NfYmFzZV9hbGxfc2F2ZXIgaW9fc2F2ZXJfdHlwZTsKLQotLy8gU1RMCi0jaW5jbHVkZSA8aW9zdHJlYW0+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSB1bml0X3Rlc3QgewotCi1uYW1lc3BhY2UgcmVzdWx0c19yZXBvcnRlciB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgcmVzdWx0IHJlcG9ydGVyIGltcGxlbWVudGF0aW9uICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotbmFtZXNwYWNlIHsKLQotc3RydWN0IHJlc3VsdHNfcmVwb3J0ZXJfaW1wbCA6IHRlc3RfdHJlZV92aXNpdG9yIHsKLSAgICAvLyBDb25zdHJ1Y3RvcgotICAgIHJlc3VsdHNfcmVwb3J0ZXJfaW1wbCgpCi0gICAgOiBtX291dHB1dCggcnVudGltZV9jb25maWc6OnJlcG9ydF9zaW5rKCkgKQotICAgICwgbV9zdHJlYW1fc3RhdGVfc2F2ZXIoIG5ldyBpb19zYXZlcl90eXBlKCAqbV9vdXRwdXQgKSApCi0gICAgLCBtX3JlcG9ydF9sZXZlbCggQ09ORklSTUFUSU9OX1JFUE9SVCApCi0gICAgLCBtX2Zvcm1hdHRlciggbmV3IG91dHB1dDo6cGxhaW5fcmVwb3J0X2Zvcm1hdHRlciApCi0gICAge30KLQotICAgIC8vIHRlc3QgdHJlZSB2aXNpdG9yIGludGVyZmFjZSBpbXBsZW1lbnRhdGlvbgotICAgIHZvaWQgICAgdmlzaXQoIHRlc3RfY2FzZSBjb25zdCYgdGMgKQotICAgIHsKLSAgICAgICAgbV9mb3JtYXR0ZXItPnRlc3RfdW5pdF9yZXBvcnRfc3RhcnQoIHRjLCAqbV9vdXRwdXQgKTsKLSAgICAgICAgbV9mb3JtYXR0ZXItPnRlc3RfdW5pdF9yZXBvcnRfZmluaXNoKCB0YywgKm1fb3V0cHV0ICk7Ci0gICAgfQotICAgIGJvb2wgICAgdGVzdF9zdWl0ZV9zdGFydCggdGVzdF9zdWl0ZSBjb25zdCYgdHMgKQotICAgIHsKLSAgICAgICAgbV9mb3JtYXR0ZXItPnRlc3RfdW5pdF9yZXBvcnRfc3RhcnQoIHRzLCAqbV9vdXRwdXQgKTsKLQotICAgICAgICBpZiggbV9yZXBvcnRfbGV2ZWwgPT0gREVUQUlMRURfUkVQT1JUICYmICFyZXN1bHRzX2NvbGxlY3Rvci5yZXN1bHRzKCB0cy5wX2lkICkucF9za2lwcGVkICkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgIG1fZm9ybWF0dGVyLT50ZXN0X3VuaXRfcmVwb3J0X2ZpbmlzaCggdHMsICptX291dHB1dCApOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHZvaWQgICAgdGVzdF9zdWl0ZV9maW5pc2goIHRlc3Rfc3VpdGUgY29uc3QmIHRzICkKLSAgICB7Ci0gICAgICAgIG1fZm9ybWF0dGVyLT50ZXN0X3VuaXRfcmVwb3J0X2ZpbmlzaCggdHMsICptX291dHB1dCApOwotICAgIH0KLQotICAgIHR5cGVkZWYgc2NvcGVkX3B0cjxpb19zYXZlcl90eXBlPiBzYXZlcl9wdHI7Ci0KLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICBzdGQ6Om9zdHJlYW0qICAgICAgIG1fb3V0cHV0OwotICAgIHNhdmVyX3B0ciAgICAgICAgICAgbV9zdHJlYW1fc3RhdGVfc2F2ZXI7Ci0gICAgcmVwb3J0X2xldmVsICAgICAgICBtX3JlcG9ydF9sZXZlbDsKLSAgICBzY29wZWRfcHRyPGZvcm1hdD4gIG1fZm9ybWF0dGVyOwotfTsKLQotcmVzdWx0c19yZXBvcnRlcl9pbXBsJiBzX3JyX2ltcGwoKSB7IHN0YXRpYyByZXN1bHRzX3JlcG9ydGVyX2ltcGwgdGhlX2luc3Q7IHJldHVybiB0aGVfaW5zdDsgfQotCi19IC8vIGxvY2FsIG5hbWVzcGFjZQotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgIHJlcG9ydCBjb25maWd1cmF0aW9uICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXZvaWQKLXNldF9sZXZlbCggcmVwb3J0X2xldmVsIGwgKQotewotICAgIGlmKCBsICE9IElOVl9SRVBPUlRfTEVWRUwgKQotICAgICAgICBzX3JyX2ltcGwoKS5tX3JlcG9ydF9sZXZlbCA9IGw7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXNldF9zdHJlYW0oIHN0ZDo6b3N0cmVhbSYgb3N0ciApCi17Ci0gICAgc19ycl9pbXBsKCkubV9vdXRwdXQgPSAmb3N0cjsKLSAgICBzX3JyX2ltcGwoKS5tX3N0cmVhbV9zdGF0ZV9zYXZlci5yZXNldCggbmV3IGlvX3NhdmVyX3R5cGUoIG9zdHIgKSApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1zdGQ6Om9zdHJlYW0mCi1nZXRfc3RyZWFtKCkKLXsKLSAgICByZXR1cm4gKnNfcnJfaW1wbCgpLm1fb3V0cHV0OwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1zZXRfZm9ybWF0KCBvdXRwdXRfZm9ybWF0IHJmICkKLXsKLSAgICBzd2l0Y2goIHJmICkgewotICAgIGNhc2UgQ0xGOgotICAgICAgICBzZXRfZm9ybWF0KCBuZXcgb3V0cHV0OjpwbGFpbl9yZXBvcnRfZm9ybWF0dGVyICk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgWE1MOgotICAgICAgICBzZXRfZm9ybWF0KCBuZXcgb3V0cHV0Ojp4bWxfcmVwb3J0X2Zvcm1hdHRlciApOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBicmVhazsKLSAgICB9Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXNldF9mb3JtYXQoIHJlc3VsdHNfcmVwb3J0ZXI6OmZvcm1hdCogZiApCi17Ci0gICAgaWYoIGYgKQotICAgICAgICBzX3JyX2ltcGwoKS5tX2Zvcm1hdHRlci5yZXNldCggZiApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICByZXBvcnQgaW5pdGlhdGlvbiAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXZvaWQKLW1ha2VfcmVwb3J0KCByZXBvcnRfbGV2ZWwgbCwgdGVzdF91bml0X2lkIGlkICkKLXsKLSAgICBpZiggbCA9PSBJTlZfUkVQT1JUX0xFVkVMICkKLSAgICAgICAgbCA9IHNfcnJfaW1wbCgpLm1fcmVwb3J0X2xldmVsOwotCi0gICAgaWYoIGwgPT0gTk9fUkVQT1JUICkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYoIGlkID09IElOVl9URVNUX1VOSVRfSUQgKQotICAgICAgICBpZCA9IGZyYW1ld29yazo6bWFzdGVyX3Rlc3Rfc3VpdGUoKS5wX2lkOwotCi0gICAgc19ycl9pbXBsKCkubV9zdHJlYW1fc3RhdGVfc2F2ZXItPnJlc3RvcmUoKTsKLQotICAgIHJlcG9ydF9sZXZlbCBia3VwID0gc19ycl9pbXBsKCkubV9yZXBvcnRfbGV2ZWw7Ci0gICAgc19ycl9pbXBsKCkubV9yZXBvcnRfbGV2ZWwgPSBsOwotCi0gICAgc19ycl9pbXBsKCkubV9mb3JtYXR0ZXItPnJlc3VsdHNfcmVwb3J0X3N0YXJ0KCAqc19ycl9pbXBsKCkubV9vdXRwdXQgKTsKLQotICAgIHN3aXRjaCggbCApIHsKLSAgICBjYXNlIENPTkZJUk1BVElPTl9SRVBPUlQ6Ci0gICAgICAgIHNfcnJfaW1wbCgpLm1fZm9ybWF0dGVyLT5kb19jb25maXJtYXRpb25fcmVwb3J0KCBmcmFtZXdvcms6OmdldDx0ZXN0X3VuaXQ+KCBpZCApLCAqc19ycl9pbXBsKCkubV9vdXRwdXQgKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTSE9SVF9SRVBPUlQ6Ci0gICAgY2FzZSBERVRBSUxFRF9SRVBPUlQ6Ci0gICAgICAgIHRyYXZlcnNlX3Rlc3RfdHJlZSggaWQsIHNfcnJfaW1wbCgpICk7Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIHNfcnJfaW1wbCgpLm1fZm9ybWF0dGVyLT5yZXN1bHRzX3JlcG9ydF9maW5pc2goICpzX3JyX2ltcGwoKS5tX291dHB1dCApOwotICAgIHNfcnJfaW1wbCgpLm1fcmVwb3J0X2xldmVsID0gYmt1cDsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2UgcmVzdWx0c19yZXBvcnRlcgotCi19IC8vIG5hbWVzcGFjZSB1bml0X3Rlc3QKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX1JFU1VMVFNfUkVQT1JURVJfSVBQXzAyMDEwNUdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwvdGVzdF9tYWluLmlwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL3Rlc3RfbWFpbi5pcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkzMzE4M2UuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwvdGVzdF9tYWluLmlwcAorKysgL2Rldi9udWxsCkBAIC0xLDY4ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDEtMjAwOC4KLS8vICAoQykgQ29weXJpZ2h0IEJlbWFuIERhd2VzIDE5OTUtMjAwMS4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkJFJldmlzaW9uOiA0OTMxMiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogaW1wbGVtZW50cyBtYWluIGZ1bmN0aW9uIGZvciBUZXN0IEV4ZWN1dGlvbiBNb25pdG9yLgotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9URVNUX01BSU5fSVBQXzAxMjIwNUdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX1RFU1RfTUFJTl9JUFBfMDEyMjA1R0VSCi0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2ZyYW1ld29yay5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC90ZXN0X3Rvb2xzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3VuaXRfdGVzdF9zdWl0ZS5ocHA+Ci0KLS8vIEJvb3N0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY3N0ZGxpYi5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLWV4dGVybiBpbnQgdGVzdF9tYWluKCBpbnQgYXJnYywgY2hhciogYXJndltdICk7ICAgIC8vIHByb3RvdHlwZSBmb3IgdXNlcidzIHRlc3RfbWFpbigpCi0KLXN0cnVjdCB0ZXN0X21haW5fY2FsbGVyIHsKLSAgICB0ZXN0X21haW5fY2FsbGVyKCBpbnQgYXJnYywgY2hhcioqIGFyZ3YgKSA6IG1fYXJnYyggYXJnYyApLCBtX2FyZ3YoIGFyZ3YgKSB7fQotICAgIAotICAgIHZvaWQgb3BlcmF0b3IoKSgpIHsKLSAgICAgICAgaW50IHRlc3RfbWFpbl9yZXN1bHQgPSB0ZXN0X21haW4oIG1fYXJnYywgbV9hcmd2ICk7Ci0KLSAgICAgICAgLy8gdHJhbnNsYXRlIGEgdGVzdF9tYWluIG5vbi1zdWNjZXNzIHJldHVybiBpbnRvIGEgdGVzdCBlcnJvcgotICAgICAgICBORE5CT09TVF9DSEVDSyggdGVzdF9tYWluX3Jlc3VsdCA9PSAwIHx8IHRlc3RfbWFpbl9yZXN1bHQgPT0gbmRuYm9vc3Q6OmV4aXRfc3VjY2VzcyApOwotICAgIH0KLSAgCi1wcml2YXRlOgotICAgIC8vIERhdGEgbWVtYmVycyAgICAKLSAgICBpbnQgICAgICBtX2FyZ2M7Ci0gICAgY2hhcioqICAgbV9hcmd2OwotfTsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICAgIHRlc3QgbWFpbiAgICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi06Om5kbmJvb3N0Ojp1bml0X3Rlc3Q6OnRlc3Rfc3VpdGUqCi1pbml0X3VuaXRfdGVzdF9zdWl0ZSggaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSApIHsKLSAgICB1c2luZyBuYW1lc3BhY2UgOjpuZG5ib29zdDo6dW5pdF90ZXN0OwotICAgIAotICAgIGZyYW1ld29yazo6bWFzdGVyX3Rlc3Rfc3VpdGUoKS5wX25hbWUudmFsdWUgPSAiVGVzdCBQcm9ncmFtIjsKLSAgICAKLSAgICBmcmFtZXdvcms6Om1hc3Rlcl90ZXN0X3N1aXRlKCkuYWRkKCBORE5CT09TVF9URVNUX0NBU0UoIHRlc3RfbWFpbl9jYWxsZXIoIGFyZ2MsIGFyZ3YgKSApICk7Ci0gICAgCi0gICAgcmV0dXJuIDA7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9URVNUX01BSU5fSVBQXzAxMjIwNUdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwvdGVzdF90b29scy5pcHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC90ZXN0X3Rvb2xzLmlwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDg4YWYzMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC90ZXN0X3Rvb2xzLmlwcAorKysgL2Rldi9udWxsCkBAIC0xLDYyOCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1NDYzMyAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogc3VwcGxpZXMgb2ZmbGluZSBpbXBsZW1lbnRhdGlvbiBmb3IgdGhlIFRlc3QgVG9vbHMKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfVEVTVF9UT09MU19JUFBfMDEyMjA1R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfVEVTVF9UT09MU19JUFBfMDEyMjA1R0VSCi0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3Rlc3RfdG9vbHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdW5pdF90ZXN0X2xvZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9vdXRwdXRfdGVzdF9zdHJlYW0uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZnJhbWV3b3JrLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2V4ZWN1dGlvbl9tb25pdG9yLmhwcD4gLy8gZXhlY3V0aW9uX2Fib3J0ZWQKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3VuaXRfdGVzdF9zdWl0ZV9pbXBsLmhwcD4KLQotLy8gQm9vc3QKLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi0vLyBTVEwKLSNpbmNsdWRlIDxmc3RyZWFtPgotI2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRlIDxjc3RyaW5nPgotI2luY2x1ZGUgPGNjdHlwZT4KLSNpbmNsdWRlIDxjd2NoYXI+Ci0jaW5jbHVkZSA8c3RkZXhjZXB0PgotI2luY2x1ZGUgPGlvcz4KLQotLy8gISEgc2hvdWxkIHdlIHVzZSAjaW5jbHVkZSA8Y3N0ZGFyZz4KLSNpbmNsdWRlIDxzdGRhcmcuaD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotIyBpZmRlZiBORE5CT09TVF9OT19TVERDX05BTUVTUEFDRQotbmFtZXNwYWNlIHN0ZCB7IHVzaW5nIDo6c3RyY21wOyB1c2luZyA6OnN0cmxlbjsgdXNpbmcgOjppc3ByaW50OyB9Ci0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX0NXQ0hBUiApCi1uYW1lc3BhY2Ugc3RkIHsgdXNpbmcgOjp3Y3NjbXA7IH0KLSNlbmRpZgotIyBlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgdGVzdF90b29scyB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICBwcmludF9sb2dfdmFsdWUgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdm9pZAotcHJpbnRfbG9nX3ZhbHVlPGNoYXI+OjpvcGVyYXRvcigpKCBzdGQ6Om9zdHJlYW0mIG9zdHIsIGNoYXIgdCApCi17Ci0gICAgaWYoIChzdGQ6OmlzcHJpbnQpKCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPih0KSApICkKLSAgICAgICAgb3N0ciA8PCAnXCcnIDw8IHQgPDwgJ1wnJzsKLSAgICBlbHNlCi0gICAgICAgIG9zdHIgPDwgc3RkOjpoZXgKLSNpZiBORE5CT09TVF9URVNUX1VTRV9TVERfTE9DQUxFCi0gICAgICAgIDw8IHN0ZDo6c2hvd2Jhc2UKLSNlbHNlCi0gICAgICAgIDw8ICIweCIKLSNlbmRpZgotICAgICAgICA8PCBzdGF0aWNfY2FzdDxpbnQ+KHQpOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1wcmludF9sb2dfdmFsdWU8dW5zaWduZWQgY2hhcj46Om9wZXJhdG9yKCkoIHN0ZDo6b3N0cmVhbSYgb3N0ciwgdW5zaWduZWQgY2hhciB0ICkKLXsKLSAgICBvc3RyIDw8IHN0ZDo6aGV4Ci0gICAgICAgIC8vIHNob3diYXNlIGlzIG9ubHkgYXZhaWxhYmxlIGZvciBuZXcgc3R5bGUgc3RyZWFtczoKLSNpZiBORE5CT09TVF9URVNUX1VTRV9TVERfTE9DQUxFCi0gICAgICAgIDw8IHN0ZDo6c2hvd2Jhc2UKLSNlbHNlCi0gICAgICAgIDw8ICIweCIKLSNlbmRpZgotICAgICAgICA8PCBzdGF0aWNfY2FzdDxpbnQ+KHQpOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1wcmludF9sb2dfdmFsdWU8Y2hhciBjb25zdCo+OjpvcGVyYXRvcigpKCBzdGQ6Om9zdHJlYW0mIG9zdHIsIGNoYXIgY29uc3QqIHQgKQotewotICAgIG9zdHIgPDwgKCB0ID8gdCA6ICJudWxsIHN0cmluZyIgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotcHJpbnRfbG9nX3ZhbHVlPHdjaGFyX3QgY29uc3QqPjo6b3BlcmF0b3IoKSggc3RkOjpvc3RyZWFtJiBvc3RyLCB3Y2hhcl90IGNvbnN0KiB0ICkKLXsKLSAgICBvc3RyIDw8ICggdCA/IHQgOiBMIm51bGwgc3RyaW5nIiApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgdHRfZGV0YWlsIHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgVE9PTCBCT1ggSW1wbGVtZW50YXRpb24gICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi11c2luZyA6Om5kbmJvb3N0Ojp1bml0X3Rlc3Q6Omxhenlfb3N0cmVhbTsKLQotYm9vbAotY2hlY2tfaW1wbCggcHJlZGljYXRlX3Jlc3VsdCBjb25zdCYgcHIsIGxhenlfb3N0cmVhbSBjb25zdCYgY2hlY2tfZGVzY3IsCi0gICAgICAgICAgICBjb25zdF9zdHJpbmcgZmlsZV9uYW1lLCBzdGQ6OnNpemVfdCBsaW5lX251bSwKLSAgICAgICAgICAgIHRvb2xfbGV2ZWwgdGwsIGNoZWNrX3R5cGUgY3QsCi0gICAgICAgICAgICBzdGQ6OnNpemVfdCBudW1fb2ZfYXJncywgLi4uICkKLXsKLSAgICB1c2luZyBuYW1lc3BhY2UgdW5pdF90ZXN0OwotCi0gICAgaWYoICFmcmFtZXdvcms6OmlzX2luaXRpYWxpemVkKCkgKQotICAgICAgICB0aHJvdyBzdGQ6OnJ1bnRpbWVfZXJyb3IoICJjYW4ndCB1c2UgdGVzdGluZyB0b29scyBiZWZvcmUgZnJhbWV3b3JrIGlzIGluaXRpYWxpemVkIiApOwotCi0gICAgaWYoICEhcHIgKQotICAgICAgICB0bCA9IFBBU1M7Ci0KLSAgICBsb2dfbGV2ZWwgICAgbGw7Ci0gICAgY2hhciBjb25zdCogIHByZWZpeDsKLSAgICBjaGFyIGNvbnN0KiAgc3VmZml4OwotICAgICAgIAotICAgIHN3aXRjaCggdGwgKSB7Ci0gICAgY2FzZSBQQVNTOgotICAgICAgICBsbCAgICAgID0gbG9nX3N1Y2Nlc3NmdWxfdGVzdHM7Ci0gICAgICAgIHByZWZpeCAgPSAiY2hlY2sgIjsKLSAgICAgICAgc3VmZml4ICA9ICIgcGFzc2VkIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBXQVJOOgotICAgICAgICBsbCAgICAgID0gbG9nX3dhcm5pbmdzOwotICAgICAgICBwcmVmaXggID0gImNvbmRpdGlvbiAiOwotICAgICAgICBzdWZmaXggID0gIiBpcyBub3Qgc2F0aXNmaWVkIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDSEVDSzoKLSAgICAgICAgbGwgICAgICA9IGxvZ19hbGxfZXJyb3JzOwotICAgICAgICBwcmVmaXggID0gImNoZWNrICI7Ci0gICAgICAgIHN1ZmZpeCAgPSAiIGZhaWxlZCI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUkVRVUlSRToKLSAgICAgICAgbGwgICAgICA9IGxvZ19mYXRhbF9lcnJvcnM7Ci0gICAgICAgIHByZWZpeCAgPSAiY3JpdGljYWwgY2hlY2sgIjsKLSAgICAgICAgc3VmZml4ICA9ICIgZmFpbGVkIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgc3dpdGNoKCBjdCApIHsKLSAgICBjYXNlIENIRUNLX1BSRUQ6Ci0gICAgICAgIHVuaXRfdGVzdF9sb2cgPDwgdW5pdF90ZXN0Ojpsb2c6OmJlZ2luKCBmaWxlX25hbWUsIGxpbmVfbnVtICkgCi0gICAgICAgICAgICAgICAgICAgICAgPDwgbGwgPDwgcHJlZml4IDw8IGNoZWNrX2Rlc2NyIDw8IHN1ZmZpeDsKLSAgICAgICAgCi0gICAgICAgIGlmKCAhcHIuaGFzX2VtcHR5X21lc3NhZ2UoKSApCi0gICAgICAgICAgICB1bml0X3Rlc3RfbG9nIDw8ICIuICIgPDwgcHIubWVzc2FnZSgpOwotICAgICAgICAKLSAgICAgICAgdW5pdF90ZXN0X2xvZyA8PCB1bml0X3Rlc3Q6OmxvZzo6ZW5kKCk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBDSEVDS19NU0c6Ci0gICAgICAgIHVuaXRfdGVzdF9sb2cgPDwgdW5pdF90ZXN0Ojpsb2c6OmJlZ2luKCBmaWxlX25hbWUsIGxpbmVfbnVtICkgPDwgbGw7Ci0gICAgICAgIAotICAgICAgICBpZiggdGwgPT0gUEFTUyApCi0gICAgICAgICAgICB1bml0X3Rlc3RfbG9nIDw8IHByZWZpeCA8PCAiJyIgPDwgY2hlY2tfZGVzY3IgPDwgIiciIDw8IHN1ZmZpeDsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdW5pdF90ZXN0X2xvZyA8PCBjaGVja19kZXNjcjsKLSAgICAgICAgCi0gICAgICAgIGlmKCAhcHIuaGFzX2VtcHR5X21lc3NhZ2UoKSApCi0gICAgICAgICAgICB1bml0X3Rlc3RfbG9nIDw8ICIuICIgPDwgcHIubWVzc2FnZSgpOwotCi0gICAgICAgIHVuaXRfdGVzdF9sb2cgPDwgdW5pdF90ZXN0Ojpsb2c6OmVuZCgpOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgQ0hFQ0tfRVFVQUw6IAotICAgIGNhc2UgQ0hFQ0tfTkU6IAotICAgIGNhc2UgQ0hFQ0tfTFQ6IAotICAgIGNhc2UgQ0hFQ0tfTEU6IAotICAgIGNhc2UgQ0hFQ0tfR1Q6IAotICAgIGNhc2UgQ0hFQ0tfR0U6IHsKLSAgICAgICAgc3RhdGljIGNoYXIgY29uc3QqIGNoZWNrX3N0ciBbXSA9IHsgIiA9PSAiLCAiICE9ICIsICIgPCAiICwgIiA8PSAiLCAiID4gIiAsICIgPj0gIiB9OwotICAgICAgICBzdGF0aWMgY2hhciBjb25zdCogcmV2ZXJfc3RyIFtdID0geyAiICE9ICIsICIgPT0gIiwgIiA+PSAiLCAiID4gIiAsICIgPD0gIiwgIiA8ICIgIH07Ci0KLSAgICAgICAgdmFfbGlzdCBhcmdzOwotCi0gICAgICAgIHZhX3N0YXJ0KCBhcmdzLCBudW1fb2ZfYXJncyApOwotICAgICAgICBjaGFyIGNvbnN0KiAgICAgICAgIGFyZzFfZGVzY3IgID0gdmFfYXJnKCBhcmdzLCBjaGFyIGNvbnN0KiApOwotICAgICAgICBsYXp5X29zdHJlYW0gY29uc3QqIGFyZzFfdmFsICAgID0gdmFfYXJnKCBhcmdzLCBsYXp5X29zdHJlYW0gY29uc3QqICk7Ci0gICAgICAgIGNoYXIgY29uc3QqICAgICAgICAgYXJnMl9kZXNjciAgPSB2YV9hcmcoIGFyZ3MsIGNoYXIgY29uc3QqICk7Ci0gICAgICAgIGxhenlfb3N0cmVhbSBjb25zdCogYXJnMl92YWwgICAgPSB2YV9hcmcoIGFyZ3MsIGxhenlfb3N0cmVhbSBjb25zdCogKTsKLQotICAgICAgICB1bml0X3Rlc3RfbG9nIDw8IHVuaXRfdGVzdDo6bG9nOjpiZWdpbiggZmlsZV9uYW1lLCBsaW5lX251bSApIAotICAgICAgICAgICAgICAgICAgICAgIDw8IGxsIDw8IHByZWZpeCA8PCBhcmcxX2Rlc2NyIDw8IGNoZWNrX3N0cltjdC1DSEVDS19FUVVBTF0gPDwgYXJnMl9kZXNjciA8PCBzdWZmaXg7Ci0KLSAgICAgICAgaWYoIHRsICE9IFBBU1MgKQotICAgICAgICAgICAgdW5pdF90ZXN0X2xvZyA8PCAiIFsiIDw8ICphcmcxX3ZhbCA8PCByZXZlcl9zdHJbY3QtQ0hFQ0tfRVFVQUxdIDw8ICphcmcyX3ZhbCA8PCAiXSIgOwotCi0gICAgICAgIHZhX2VuZCggYXJncyApOwotICAgICAgICAKLSAgICAgICAgaWYoICFwci5oYXNfZW1wdHlfbWVzc2FnZSgpICkKLSAgICAgICAgICAgIHVuaXRfdGVzdF9sb2cgPDwgIi4gIiA8PCBwci5tZXNzYWdlKCk7Ci0KLSAgICAgICAgdW5pdF90ZXN0X2xvZyA8PCB1bml0X3Rlc3Q6OmxvZzo6ZW5kKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIGNhc2UgQ0hFQ0tfQ0xPU0U6Ci0gICAgY2FzZSBDSEVDS19DTE9TRV9GUkFDVElPTjogewotICAgICAgICB2YV9saXN0IGFyZ3M7Ci0KLSAgICAgICAgdmFfc3RhcnQoIGFyZ3MsIG51bV9vZl9hcmdzICk7Ci0gICAgICAgIGNoYXIgY29uc3QqICAgICAgICAgYXJnMV9kZXNjciAgPSB2YV9hcmcoIGFyZ3MsIGNoYXIgY29uc3QqICk7Ci0gICAgICAgIGxhenlfb3N0cmVhbSBjb25zdCogYXJnMV92YWwgICAgPSB2YV9hcmcoIGFyZ3MsIGxhenlfb3N0cmVhbSBjb25zdCogKTsKLSAgICAgICAgY2hhciBjb25zdCogICAgICAgICBhcmcyX2Rlc2NyICA9IHZhX2FyZyggYXJncywgY2hhciBjb25zdCogKTsKLSAgICAgICAgbGF6eV9vc3RyZWFtIGNvbnN0KiBhcmcyX3ZhbCAgICA9IHZhX2FyZyggYXJncywgbGF6eV9vc3RyZWFtIGNvbnN0KiApOwotICAgICAgICAvKiB0b2xlcl9kZXNjciA9ICovICAgICAgICAgICAgICAgdmFfYXJnKCBhcmdzLCBjaGFyIGNvbnN0KiApOwotICAgICAgICBsYXp5X29zdHJlYW0gY29uc3QqIHRvbGVyX3ZhbCAgID0gdmFfYXJnKCBhcmdzLCBsYXp5X29zdHJlYW0gY29uc3QqICk7Ci0KLSAgICAgICAgdW5pdF90ZXN0X2xvZyA8PCB1bml0X3Rlc3Q6OmxvZzo6YmVnaW4oIGZpbGVfbmFtZSwgbGluZV9udW0gKSA8PCBsbDsKLQotICAgICAgICB1bml0X3Rlc3RfbG9nIDw8ICJkaWZmZXJlbmNleyIgPDwgcHIubWVzc2FnZSgpIDw8IChjdCA9PSBDSEVDS19DTE9TRSA/ICIlIiA6ICIiKQotICAgICAgICAgICAgICAgICAgICAgIDw8ICJ9IGJldHdlZW4gIiA8PCBhcmcxX2Rlc2NyIDw8ICJ7IiA8PCAqYXJnMV92YWwKLSAgICAgICAgICAgICAgICAgICAgICA8PCAifSBhbmQgIiAgICAgICAgICAgICAgIDw8IGFyZzJfZGVzY3IgPDwgInsiIDw8ICphcmcyX3ZhbAotICAgICAgICAgICAgICAgICAgICAgIDw8ICggdGwgPT0gUEFTUyA/ICJ9IGRvZXNuJ3QgZXhjZWVkICIgOiAifSBleGNlZWRzICIgKQotICAgICAgICAgICAgICAgICAgICAgIDw8ICp0b2xlcl92YWw7Ci0gICAgICAgIGlmKCBjdCA9PSBDSEVDS19DTE9TRSApCi0gICAgICAgICAgICB1bml0X3Rlc3RfbG9nIDw8ICIlIjsKLQotICAgICAgICB2YV9lbmQoIGFyZ3MgKTsKLSAgICAgICAgCi0gICAgICAgIHVuaXRfdGVzdF9sb2cgPDwgdW5pdF90ZXN0Ojpsb2c6OmVuZCgpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBDSEVDS19TTUFMTDogewotICAgICAgICB2YV9saXN0IGFyZ3M7Ci0KLSAgICAgICAgdmFfc3RhcnQoIGFyZ3MsIG51bV9vZl9hcmdzICk7Ci0gICAgICAgIGNoYXIgY29uc3QqICAgICAgICAgYXJnMV9kZXNjciAgPSB2YV9hcmcoIGFyZ3MsIGNoYXIgY29uc3QqICk7Ci0gICAgICAgIGxhenlfb3N0cmVhbSBjb25zdCogYXJnMV92YWwgICAgPSB2YV9hcmcoIGFyZ3MsIGxhenlfb3N0cmVhbSBjb25zdCogKTsKLSAgICAgICAgLyogdG9sZXJfZGVzY3IgPSAqLyAgICAgICAgICAgICAgIHZhX2FyZyggYXJncywgY2hhciBjb25zdCogKTsKLSAgICAgICAgbGF6eV9vc3RyZWFtIGNvbnN0KiB0b2xlcl92YWwgICA9IHZhX2FyZyggYXJncywgbGF6eV9vc3RyZWFtIGNvbnN0KiApOwotCi0gICAgICAgIHVuaXRfdGVzdF9sb2cgPDwgdW5pdF90ZXN0Ojpsb2c6OmJlZ2luKCBmaWxlX25hbWUsIGxpbmVfbnVtICkgPDwgbGw7Ci0KLSAgICAgICAgdW5pdF90ZXN0X2xvZyA8PCAiYWJzb2x1dGUgdmFsdWUgb2YgIiA8PCBhcmcxX2Rlc2NyIDw8ICJ7IiA8PCAqYXJnMV92YWwgPDwgIn0iIAotICAgICAgICAgICAgICAgICAgICAgIDw8ICggdGwgPT0gUEFTUyA/ICIgZG9lc24ndCBleGNlZWQgIiA6ICIgZXhjZWVkcyAiICkKLSAgICAgICAgICAgICAgICAgICAgICA8PCAqdG9sZXJfdmFsOwotCi0gICAgICAgIHZhX2VuZCggYXJncyApOwotICAgICAgICAKLSAgICAgICAgaWYoICFwci5oYXNfZW1wdHlfbWVzc2FnZSgpICkKLSAgICAgICAgICAgIHVuaXRfdGVzdF9sb2cgPDwgIi4gIiA8PCBwci5tZXNzYWdlKCk7Ci0KLSAgICAgICAgdW5pdF90ZXN0X2xvZyA8PCB1bml0X3Rlc3Q6OmxvZzo6ZW5kKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIGNhc2UgQ0hFQ0tfUFJFRF9XSVRIX0FSR1M6IHsKLSAgICAgICAgdW5pdF90ZXN0X2xvZyA8PCB1bml0X3Rlc3Q6OmxvZzo6YmVnaW4oIGZpbGVfbmFtZSwgbGluZV9udW0gKSAKLSAgICAgICAgICAgICAgICAgICAgICA8PCBsbCA8PCBwcmVmaXggPDwgY2hlY2tfZGVzY3I7Ci0KLSAgICAgICAgLy8gcHJpbnQgcHJlZGljYXRlIGNhbGwgZGVzY3JpcHRpb24KLSAgICAgICAgewotICAgICAgICAgICAgdmFfbGlzdCBhcmdzOwotICAgICAgICAgICAgdmFfc3RhcnQoIGFyZ3MsIG51bV9vZl9hcmdzICk7Ci0KLSAgICAgICAgICAgIHVuaXRfdGVzdF9sb2cgPDwgIiggIjsKLSAgICAgICAgICAgIGZvciggc3RkOjpzaXplX3QgaSA9IDA7IGkgPCBudW1fb2ZfYXJnczsgKytpICkgewotICAgICAgICAgICAgICAgIHVuaXRfdGVzdF9sb2cgPDwgdmFfYXJnKCBhcmdzLCBjaGFyIGNvbnN0KiApOwotICAgICAgICAgICAgICAgIHZhX2FyZyggYXJncywgbGF6eV9vc3RyZWFtIGNvbnN0KiApOyAvLyBza2lwIGFyZ3VtZW50IHZhbHVlOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGlmKCBpICE9IG51bV9vZl9hcmdzLTEgKQotICAgICAgICAgICAgICAgICAgICB1bml0X3Rlc3RfbG9nIDw8ICIsICI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB1bml0X3Rlc3RfbG9nIDw8ICIgKSIgPDwgc3VmZml4OwotICAgICAgICAgICAgdmFfZW5kKCBhcmdzICk7Ci0gICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICBpZiggdGwgIT0gUEFTUyApIHsKLSAgICAgICAgICAgIHZhX2xpc3QgYXJnczsKLSAgICAgICAgICAgIHZhX3N0YXJ0KCBhcmdzLCBudW1fb2ZfYXJncyApOwotCi0gICAgICAgICAgICB1bml0X3Rlc3RfbG9nIDw8ICIgZm9yICggIjsKLSAgICAgICAgICAgIGZvciggc3RkOjpzaXplX3QgaSA9IDA7IGkgPCBudW1fb2ZfYXJnczsgKytpICkgewotICAgICAgICAgICAgICAgIHZhX2FyZyggYXJncywgY2hhciBjb25zdCogKTsgLy8gc2tpcCBhcmd1bWVudCBkZXNjcmlwdGlvbjsgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICB1bml0X3Rlc3RfbG9nIDw8ICp2YV9hcmcoIGFyZ3MsIGxhenlfb3N0cmVhbSBjb25zdCogKTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBpZiggaSAhPSBudW1fb2ZfYXJncy0xICkKLSAgICAgICAgICAgICAgICAgICAgdW5pdF90ZXN0X2xvZyA8PCAiLCAiOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdW5pdF90ZXN0X2xvZyA8PCAiICkiOwotICAgICAgICAgICAgdmFfZW5kKCBhcmdzICk7Ci0gICAgICAgIH0KLSAgICAgICAKLSAgICAgICAgaWYoICFwci5oYXNfZW1wdHlfbWVzc2FnZSgpICkKLSAgICAgICAgICAgIHVuaXRfdGVzdF9sb2cgPDwgIi4gIiA8PCBwci5tZXNzYWdlKCk7Ci0KLSAgICAgICAgdW5pdF90ZXN0X2xvZyA8PCB1bml0X3Rlc3Q6OmxvZzo6ZW5kKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIGNhc2UgQ0hFQ0tfRVFVQUxfQ09MTDogewotICAgICAgICB2YV9saXN0IGFyZ3M7Ci0KLSAgICAgICAgdmFfc3RhcnQoIGFyZ3MsIG51bV9vZl9hcmdzICk7Ci0gICAgICAgIGNoYXIgY29uc3QqIGxlZnRfYmVnaW5fZGVzY3IgICAgPSB2YV9hcmcoIGFyZ3MsIGNoYXIgY29uc3QqICk7Ci0gICAgICAgIGNoYXIgY29uc3QqIGxlZnRfZW5kX2Rlc2NyICAgICAgPSB2YV9hcmcoIGFyZ3MsIGNoYXIgY29uc3QqICk7Ci0gICAgICAgIGNoYXIgY29uc3QqIHJpZ2h0X2JlZ2luX2Rlc2NyICAgPSB2YV9hcmcoIGFyZ3MsIGNoYXIgY29uc3QqICk7Ci0gICAgICAgIGNoYXIgY29uc3QqIHJpZ2h0X2VuZF9kZXNjciAgICAgPSB2YV9hcmcoIGFyZ3MsIGNoYXIgY29uc3QqICk7Ci0KLSAgICAgICAgdW5pdF90ZXN0X2xvZyA8PCB1bml0X3Rlc3Q6OmxvZzo6YmVnaW4oIGZpbGVfbmFtZSwgbGluZV9udW0gKSAKLSAgICAgICAgICAgICAgICAgICAgICA8PCBsbCA8PCBwcmVmaXggCi0gICAgICAgICAgICAgICAgICAgICAgPDwgInsgIiA8PCBsZWZ0X2JlZ2luX2Rlc2NyICA8PCAiLCAiIDw8IGxlZnRfZW5kX2Rlc2NyICA8PCAiIH0gPT0geyAiIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgcmlnaHRfYmVnaW5fZGVzY3IgPDwgIiwgIiA8PCByaWdodF9lbmRfZGVzY3IgPDwgIiB9IgotICAgICAgICAgICAgICAgICAgICAgIDw8IHN1ZmZpeDsKLQotICAgICAgICB2YV9lbmQoIGFyZ3MgKTsKLSAgICAgICAgCi0gICAgICAgIGlmKCAhcHIuaGFzX2VtcHR5X21lc3NhZ2UoKSApCi0gICAgICAgICAgICB1bml0X3Rlc3RfbG9nIDw8ICIuICIgPDwgcHIubWVzc2FnZSgpOwotCi0gICAgICAgIHVuaXRfdGVzdF9sb2cgPDwgdW5pdF90ZXN0Ojpsb2c6OmVuZCgpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBjYXNlIENIRUNLX0JJVFdJU0VfRVFVQUw6IHsKLSAgICAgICAgdmFfbGlzdCBhcmdzOwotCi0gICAgICAgIHZhX3N0YXJ0KCBhcmdzLCBudW1fb2ZfYXJncyApOwotICAgICAgICBjaGFyIGNvbnN0KiBsZWZ0X2Rlc2NyICAgID0gdmFfYXJnKCBhcmdzLCBjaGFyIGNvbnN0KiApOwotICAgICAgICBjaGFyIGNvbnN0KiByaWdodF9kZXNjciAgID0gdmFfYXJnKCBhcmdzLCBjaGFyIGNvbnN0KiApOwotCi0gICAgICAgIHVuaXRfdGVzdF9sb2cgPDwgdW5pdF90ZXN0Ojpsb2c6OmJlZ2luKCBmaWxlX25hbWUsIGxpbmVfbnVtICkKLSAgICAgICAgICAgICAgICAgICAgICA8PCBsbCA8PCBwcmVmaXggPDwgbGVmdF9kZXNjciAgPDwgIiA9Lj0gIiA8PCByaWdodF9kZXNjciA8PCBzdWZmaXg7Ci0KLSAgICAgICAgdmFfZW5kKCBhcmdzICk7Ci0gICAgICAgIAotICAgICAgICBpZiggIXByLmhhc19lbXB0eV9tZXNzYWdlKCkgKQotICAgICAgICAgICAgdW5pdF90ZXN0X2xvZyA8PCAiLiAiIDw8IHByLm1lc3NhZ2UoKTsKLQotICAgICAgICB1bml0X3Rlc3RfbG9nIDw8IHVuaXRfdGVzdDo6bG9nOjplbmQoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIH0KLQotICAgIHN3aXRjaCggdGwgKSB7Ci0gICAgY2FzZSBQQVNTOgotICAgICAgICBmcmFtZXdvcms6OmFzc2VydGlvbl9yZXN1bHQoIHRydWUgKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBjYXNlIFdBUk46Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGNhc2UgQ0hFQ0s6Ci0gICAgICAgIGZyYW1ld29yazo6YXNzZXJ0aW9uX3Jlc3VsdCggZmFsc2UgKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAKLSAgICBjYXNlIFJFUVVJUkU6Ci0gICAgICAgIGZyYW1ld29yazo6YXNzZXJ0aW9uX3Jlc3VsdCggZmFsc2UgKTsKLQotICAgICAgICBmcmFtZXdvcms6OnRlc3RfdW5pdF9hYm9ydGVkKCBmcmFtZXdvcms6OmN1cnJlbnRfdGVzdF9jYXNlKCkgKTsKLQotICAgICAgICB0aHJvdyBleGVjdXRpb25fYWJvcnRlZCgpOwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1wcmVkaWNhdGVfcmVzdWx0Ci1lcXVhbF9pbXBsKCBjaGFyIGNvbnN0KiBsZWZ0LCBjaGFyIGNvbnN0KiByaWdodCApCi17Ci0gICAgcmV0dXJuIChsZWZ0ICYmIHJpZ2h0KSA/IHN0ZDo6c3RyY21wKCBsZWZ0LCByaWdodCApID09IDAgOiAobGVmdCA9PSByaWdodCk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfTk9fQ1dDSEFSICkKLQotcHJlZGljYXRlX3Jlc3VsdAotZXF1YWxfaW1wbCggd2NoYXJfdCBjb25zdCogbGVmdCwgd2NoYXJfdCBjb25zdCogcmlnaHQgKQotewotICAgIHJldHVybiAobGVmdCAmJiByaWdodCkgPyBzdGQ6Ondjc2NtcCggbGVmdCwgcmlnaHQgKSA9PSAwIDogKGxlZnQgPT0gcmlnaHQpOwotfQotCi0jZW5kaWYgLy8gIWRlZmluZWQoIE5ETkJPT1NUX05PX0NXQ0hBUiApCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLWJvb2wKLWlzX2RlZmluZWRfaW1wbCggY29uc3Rfc3RyaW5nIHN5bWJvbF9uYW1lLCBjb25zdF9zdHJpbmcgc3ltYm9sX3ZhbHVlICkKLXsKLSAgICBzeW1ib2xfdmFsdWUudHJpbV9sZWZ0KCAyICk7Ci0gICAgcmV0dXJuIHN5bWJvbF9uYW1lICE9IHN5bWJvbF92YWx1ZTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2UgdHRfZGV0YWlsCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgIG91dHB1dF90ZXN0X3N0cmVhbSAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotc3RydWN0IG91dHB1dF90ZXN0X3N0cmVhbTo6SW1wbAotewotICAgIHN0ZDo6ZnN0cmVhbSAgICBtX3BhdHRlcm47Ci0gICAgYm9vbCAgICAgICAgICAgIG1fbWF0Y2hfb3Jfc2F2ZTsKLSAgICBib29sICAgICAgICAgICAgbV90ZXh0X29yX2JpbmFyeTsKLSAgICBzdGQ6OnN0cmluZyAgICAgbV9zeW5jZWRfc3RyaW5nOwotCi0gICAgY2hhciAgICAgICAgICAgIGdldF9jaGFyKCkKLSAgICB7Ci0gICAgICAgIGNoYXIgcmVzOwotICAgICAgICBkbyB7Ci0gICAgICAgICAgICBtX3BhdHRlcm4uZ2V0KCByZXMgKTsKLSAgICAgICAgfSB3aGlsZSggbV90ZXh0X29yX2JpbmFyeSAmJiByZXMgPT0gJ1xyJyAmJiAhbV9wYXR0ZXJuLmZhaWwoKSAmJiAhbV9wYXR0ZXJuLmVvZigpICk7Ci0KLSAgICAgICAgcmV0dXJuIHJlczsKLSAgICB9Ci0KLSAgICB2b2lkICAgICAgICAgICAgY2hlY2tfYW5kX2ZpbGwoIHByZWRpY2F0ZV9yZXN1bHQmIHJlcyApCi0gICAgewotICAgICAgICBpZiggIXJlcy5wX3ByZWRpY2F0ZV92YWx1ZSApCi0gICAgICAgICAgICByZXMubWVzc2FnZSgpIDw8ICJPdXRwdXQgY29udGVudDogXCIiIDw8IG1fc3luY2VkX3N0cmluZyA8PCAnXCInOwotICAgIH0KLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW91dHB1dF90ZXN0X3N0cmVhbTo6b3V0cHV0X3Rlc3Rfc3RyZWFtKCBjb25zdF9zdHJpbmcgcGF0dGVybl9maWxlX25hbWUsIGJvb2wgbWF0Y2hfb3Jfc2F2ZSwgYm9vbCB0ZXh0X29yX2JpbmFyeSApCi06IG1fcGltcGwoIG5ldyBJbXBsICkKLXsKLSAgICBpZiggIXBhdHRlcm5fZmlsZV9uYW1lLmlzX2VtcHR5KCkgKSB7Ci0gICAgICAgIHN0ZDo6aW9zOjpvcGVubW9kZSBtID0gbWF0Y2hfb3Jfc2F2ZSA/IHN0ZDo6aW9zOjppbiA6IHN0ZDo6aW9zOjpvdXQ7Ci0gICAgICAgIGlmKCAhdGV4dF9vcl9iaW5hcnkgKQotICAgICAgICAgICAgbSB8PSBzdGQ6Omlvczo6YmluYXJ5OwotCi0gICAgICAgIG1fcGltcGwtPm1fcGF0dGVybi5vcGVuKCBwYXR0ZXJuX2ZpbGVfbmFtZS5iZWdpbigpLCBtICk7Ci0KLSAgICAgICAgTkROQk9PU1RfV0FSTl9NRVNTQUdFKCBtX3BpbXBsLT5tX3BhdHRlcm4uaXNfb3BlbigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2FuJ3Qgb3BlbiBwYXR0ZXJuIGZpbGUgIiA8PCBwYXR0ZXJuX2ZpbGVfbmFtZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiIGZvciAiIDw8IChtYXRjaF9vcl9zYXZlID8gInJlYWRpbmciIDogIndyaXRpbmciKSApOwotICAgIH0KLQotICAgIG1fcGltcGwtPm1fbWF0Y2hfb3Jfc2F2ZSAgICA9IG1hdGNoX29yX3NhdmU7Ci0gICAgbV9waW1wbC0+bV90ZXh0X29yX2JpbmFyeSAgID0gdGV4dF9vcl9iaW5hcnk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW91dHB1dF90ZXN0X3N0cmVhbTo6fm91dHB1dF90ZXN0X3N0cmVhbSgpCi17Ci0gICAgZGVsZXRlIG1fcGltcGw7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXByZWRpY2F0ZV9yZXN1bHQKLW91dHB1dF90ZXN0X3N0cmVhbTo6aXNfZW1wdHkoIGJvb2wgZmx1c2hfc3RyZWFtICkKLXsKLSAgICBzeW5jKCk7Ci0KLSAgICByZXN1bHRfdHlwZSByZXMoIG1fcGltcGwtPm1fc3luY2VkX3N0cmluZy5lbXB0eSgpICk7Ci0KLSAgICBtX3BpbXBsLT5jaGVja19hbmRfZmlsbCggcmVzICk7Ci0KLSAgICBpZiggZmx1c2hfc3RyZWFtICkKLSAgICAgICAgZmx1c2goKTsKLQotICAgIHJldHVybiByZXM7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXByZWRpY2F0ZV9yZXN1bHQKLW91dHB1dF90ZXN0X3N0cmVhbTo6Y2hlY2tfbGVuZ3RoKCBzdGQ6OnNpemVfdCBsZW5ndGhfLCBib29sIGZsdXNoX3N0cmVhbSApCi17Ci0gICAgc3luYygpOwotCi0gICAgcmVzdWx0X3R5cGUgcmVzKCBtX3BpbXBsLT5tX3N5bmNlZF9zdHJpbmcubGVuZ3RoKCkgPT0gbGVuZ3RoXyApOwotCi0gICAgbV9waW1wbC0+Y2hlY2tfYW5kX2ZpbGwoIHJlcyApOwotCi0gICAgaWYoIGZsdXNoX3N0cmVhbSApCi0gICAgICAgIGZsdXNoKCk7Ci0KLSAgICByZXR1cm4gcmVzOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1wcmVkaWNhdGVfcmVzdWx0Ci1vdXRwdXRfdGVzdF9zdHJlYW06OmlzX2VxdWFsKCBjb25zdF9zdHJpbmcgYXJnLCBib29sIGZsdXNoX3N0cmVhbSApCi17Ci0gICAgc3luYygpOwotCi0gICAgcmVzdWx0X3R5cGUgcmVzKCBjb25zdF9zdHJpbmcoIG1fcGltcGwtPm1fc3luY2VkX3N0cmluZyApID09IGFyZyApOwotCi0gICAgbV9waW1wbC0+Y2hlY2tfYW5kX2ZpbGwoIHJlcyApOwotCi0gICAgaWYoIGZsdXNoX3N0cmVhbSApCi0gICAgICAgIGZsdXNoKCk7Ci0KLSAgICByZXR1cm4gcmVzOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1wcmVkaWNhdGVfcmVzdWx0Ci1vdXRwdXRfdGVzdF9zdHJlYW06Om1hdGNoX3BhdHRlcm4oIGJvb2wgZmx1c2hfc3RyZWFtICkKLXsKLSAgICBzeW5jKCk7Ci0KLSAgICByZXN1bHRfdHlwZSByZXN1bHQoIHRydWUgKTsKLQotICAgIGlmKCAhbV9waW1wbC0+bV9wYXR0ZXJuLmlzX29wZW4oKSApIHsKLSAgICAgICAgcmVzdWx0ID0gZmFsc2U7Ci0gICAgICAgIHJlc3VsdC5tZXNzYWdlKCkgPDwgIlBhdHRlcm4gZmlsZSBjYW4ndCBiZSBvcGVuZWQhIjsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIGlmKCBtX3BpbXBsLT5tX21hdGNoX29yX3NhdmUgKSB7Ci0gICAgICAgICAgICBmb3IgKCBzdGQ6OnN0cmluZzo6c2l6ZV90eXBlIGkgPSAwOyBpIDwgbV9waW1wbC0+bV9zeW5jZWRfc3RyaW5nLmxlbmd0aCgpOyArK2kgKSB7Ci0gICAgICAgICAgICAgICAgY2hhciBjID0gbV9waW1wbC0+Z2V0X2NoYXIoKTsKLQotICAgICAgICAgICAgICAgIHJlc3VsdCA9ICFtX3BpbXBsLT5tX3BhdHRlcm4uZmFpbCgpICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAgIW1fcGltcGwtPm1fcGF0dGVybi5lb2YoKSAgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAobV9waW1wbC0+bV9zeW5jZWRfc3RyaW5nW2ldID09IGMpOwotCi0gICAgICAgICAgICAgICAgaWYoICFyZXN1bHQgKSB7Ci0gICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nOjpzaXplX3R5cGUgc3VmZml4X3NpemUgID0gKHN0ZDo6bWluKSggbV9waW1wbC0+bV9zeW5jZWRfc3RyaW5nLmxlbmd0aCgpIC0gaSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8c3RkOjpzdHJpbmc6OnNpemVfdHlwZT4oNSkgKTsKLQotICAgICAgICAgICAgICAgICAgICAvLyB0cnkgdG8gbG9nIGFyZWEgYXJvdW5kIHRoZSBtaXNtYXRjaAotICAgICAgICAgICAgICAgICAgICByZXN1bHQubWVzc2FnZSgpIDw8ICJNaXNtYXRjaCBhdCBwb3NpdGlvbiAiIDw8IGkgPDwgJ1xuJwotICAgICAgICAgICAgICAgICAgICAgICAgPDwgIi4uLiIgPDwgbV9waW1wbC0+bV9zeW5jZWRfc3RyaW5nLnN1YnN0ciggaSwgc3VmZml4X3NpemUgKSA8PCAiLi4uIiA8PCAnXG4nCi0gICAgICAgICAgICAgICAgICAgICAgICA8PCAiLi4uIiA8PCBjOwotCi0gICAgICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nOjpzaXplX3R5cGUgY291bnRlciA9IHN1ZmZpeF9zaXplOwotICAgICAgICAgICAgICAgICAgICB3aGlsZSggLS1jb3VudGVyICkgewotICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBjID0gbV9waW1wbC0+Z2V0X2NoYXIoKTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgaWYoIG1fcGltcGwtPm1fcGF0dGVybi5mYWlsKCkgfHwgbV9waW1wbC0+bV9wYXR0ZXJuLmVvZigpICkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lm1lc3NhZ2UoKSA8PCBjOwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lm1lc3NhZ2UoKSA8PCAiLi4uIjsKLQotICAgICAgICAgICAgICAgICAgICAvLyBza2lwIHJlc3Qgb2YgdGhlIGJ5dGVzLiBNYXkgaGVscCBmb3IgZnVydGhlciBtYXRjaGluZwotICAgICAgICAgICAgICAgICAgICBtX3BpbXBsLT5tX3BhdHRlcm4uaWdub3JlKCAKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHN0ZDo6c3RyZWFtc2l6ZT4oIG1fcGltcGwtPm1fc3luY2VkX3N0cmluZy5sZW5ndGgoKSAtIGkgLSBzdWZmaXhfc2l6ZSkgKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgbV9waW1wbC0+bV9wYXR0ZXJuLndyaXRlKCBtX3BpbXBsLT5tX3N5bmNlZF9zdHJpbmcuY19zdHIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8c3RkOjpzdHJlYW1zaXplPiggbV9waW1wbC0+bV9zeW5jZWRfc3RyaW5nLmxlbmd0aCgpICkgKTsKLSAgICAgICAgICAgIG1fcGltcGwtPm1fcGF0dGVybi5mbHVzaCgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYoIGZsdXNoX3N0cmVhbSApCi0gICAgICAgIGZsdXNoKCk7Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi1vdXRwdXRfdGVzdF9zdHJlYW06OmZsdXNoKCkKLXsKLSAgICBtX3BpbXBsLT5tX3N5bmNlZF9zdHJpbmcuZXJhc2UoKTsKLQotI2lmbmRlZiBORE5CT09TVF9OT19TVFJJTkdTVFJFQU0KLSAgICBzdHIoIHN0ZDo6c3RyaW5nKCkgKTsKLSNlbHNlCi0gICAgc2Vla3AoIDAsIHN0ZDo6aW9zOjpiZWcgKTsKLSNlbmRpZgotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1zdGQ6OnNpemVfdAotb3V0cHV0X3Rlc3Rfc3RyZWFtOjpsZW5ndGgoKQotewotICAgIHN5bmMoKTsKLQotICAgIHJldHVybiBtX3BpbXBsLT5tX3N5bmNlZF9zdHJpbmcubGVuZ3RoKCk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLW91dHB1dF90ZXN0X3N0cmVhbTo6c3luYygpCi17Ci0jaWZkZWYgTkROQk9PU1RfTk9fU1RSSU5HU1RSRUFNCi0gICAgbV9waW1wbC0+bV9zeW5jZWRfc3RyaW5nLmFzc2lnbiggc3RyKCksIHBjb3VudCgpICk7Ci0gICAgZnJlZXplKCBmYWxzZSApOwotI2Vsc2UKLSAgICBtX3BpbXBsLT5tX3N5bmNlZF9zdHJpbmcgPSBzdHIoKTsKLSNlbmRpZgotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSB0ZXN0X3Rvb2xzCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9URVNUX1RPT0xTX0lQUF8wMTIyMDVHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL3VuaXRfdGVzdF9sb2cuaXBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwvdW5pdF90ZXN0X2xvZy5pcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM1YjdjMTIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwvdW5pdF90ZXN0X2xvZy5pcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NDQgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTc5OTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGltcGxlbWV0cyBVbml0IFRlc3QgTG9nCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX1VOSVRfVEVTVF9MT0dfSVBQXzAxMjIwNUdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX1VOSVRfVEVTVF9MT0dfSVBQXzAxMjIwNUdFUgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91bml0X3Rlc3RfbG9nLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3VuaXRfdGVzdF9sb2dfZm9ybWF0dGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3VuaXRfdGVzdF9zdWl0ZV9pbXBsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2V4ZWN1dGlvbl9tb25pdG9yLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3VuaXRfdGVzdF9wYXJhbWV0ZXJzLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvYmFzaWNfY3N0cmluZy9jb21wYXJlLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3Qvb3V0cHV0L2NvbXBpbGVyX2xvZ19mb3JtYXR0ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3Qvb3V0cHV0L3htbF9sb2dfZm9ybWF0dGVyLmhwcD4KLQotLy8gQm9vc3QKLSNpbmNsdWRlIDxuZG5ib29zdC9zY29wZWRfcHRyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pby9pb3Nfc3RhdGUuaHBwPgotdHlwZWRlZiA6Om5kbmJvb3N0Ojppbzo6aW9zX2Jhc2VfYWxsX3NhdmVyIGlvX3NhdmVyX3R5cGU7Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSB1bml0X3Rlc3QgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgZW50cnlfdmFsdWVfY29sbGVjdG9yICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLW5hbWVzcGFjZSB1dF9kZXRhaWwgewotCi1lbnRyeV92YWx1ZV9jb2xsZWN0b3IgY29uc3QmCi1lbnRyeV92YWx1ZV9jb2xsZWN0b3I6Om9wZXJhdG9yPDwoIGxhenlfb3N0cmVhbSBjb25zdCYgdiApIGNvbnN0Ci17Ci0gICAgdW5pdF90ZXN0X2xvZyA8PCB2OwotCi0gICAgcmV0dXJuICp0aGlzOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1lbnRyeV92YWx1ZV9jb2xsZWN0b3IgY29uc3QmIAotZW50cnlfdmFsdWVfY29sbGVjdG9yOjpvcGVyYXRvcjw8KCBjb25zdF9zdHJpbmcgdiApIGNvbnN0Ci17Ci0gICAgdW5pdF90ZXN0X2xvZyA8PCB2OwotCi0gICAgcmV0dXJuICp0aGlzOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1lbnRyeV92YWx1ZV9jb2xsZWN0b3I6On5lbnRyeV92YWx1ZV9jb2xsZWN0b3IoKQotewotICAgIGlmKCBtX2xhc3QgKQotICAgICAgICB1bml0X3Rlc3RfbG9nIDw8IGxvZzo6ZW5kKCk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIHV0X2RldGFpbAotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgIHVuaXRfdGVzdF9sb2cgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLW5hbWVzcGFjZSB7Ci0KLXN0cnVjdCB1bml0X3Rlc3RfbG9nX2ltcGwgewotICAgIC8vIENvbnN0cnVjdG9yCi0gICAgdW5pdF90ZXN0X2xvZ19pbXBsKCkKLSAgICA6IG1fc3RyZWFtKCBydW50aW1lX2NvbmZpZzo6bG9nX3NpbmsoKSApCi0gICAgLCBtX3N0cmVhbV9zdGF0ZV9zYXZlciggbmV3IGlvX3NhdmVyX3R5cGUoICptX3N0cmVhbSApICkKLSAgICAsIG1fdGhyZXNob2xkX2xldmVsKCBsb2dfYWxsX2Vycm9ycyApCi0gICAgLCBtX2xvZ19mb3JtYXR0ZXIoIG5ldyBvdXRwdXQ6OmNvbXBpbGVyX2xvZ19mb3JtYXR0ZXIgKQotICAgIHsKLSAgICB9Ci0KLSAgICAvLyBsb2cgZGF0YQotICAgIHR5cGVkZWYgc2NvcGVkX3B0cjx1bml0X3Rlc3RfbG9nX2Zvcm1hdHRlcj4gZm9ybWF0dGVyX3B0cjsKLSAgICB0eXBlZGVmIHNjb3BlZF9wdHI8aW9fc2F2ZXJfdHlwZT4gICAgICAgICAgIHNhdmVyX3B0cjsKLQotICAgIHN0ZDo6b3N0cmVhbSogICAgICAgbV9zdHJlYW07Ci0gICAgc2F2ZXJfcHRyICAgICAgICAgICBtX3N0cmVhbV9zdGF0ZV9zYXZlcjsKLSAgICBsb2dfbGV2ZWwgICAgICAgICAgIG1fdGhyZXNob2xkX2xldmVsOwotICAgIGZvcm1hdHRlcl9wdHIgICAgICAgbV9sb2dfZm9ybWF0dGVyOwotCi0gICAgLy8gZW50cnkgZGF0YQotICAgIGJvb2wgICAgICAgICAgICAgICAgbV9lbnRyeV9pbl9wcm9ncmVzczsKLSAgICBib29sICAgICAgICAgICAgICAgIG1fZW50cnlfc3RhcnRlZDsKLSAgICBsb2dfZW50cnlfZGF0YSAgICAgIG1fZW50cnlfZGF0YTsKLQotICAgIC8vIGNoZWNrIHBvaW50IGRhdGEKLSAgICBsb2dfY2hlY2twb2ludF9kYXRhIG1fY2hlY2twb2ludF9kYXRhOwotCi0gICAgLy8gaGVscGVyIGZ1bmN0aW9ucwotICAgIHN0ZDo6b3N0cmVhbSYgICAgICAgc3RyZWFtKCkgICAgICAgICAgICB7IHJldHVybiAqbV9zdHJlYW07IH0KLSAgICB2b2lkICAgICAgICAgICAgICAgIHNldF9jaGVja3BvaW50KCBjb25zdF9zdHJpbmcgZmlsZSwgc3RkOjpzaXplX3QgbGluZV9udW0sIGNvbnN0X3N0cmluZyBtc2cgKQotICAgIHsKLSAgICAgICAgYXNzaWduX29wKCBtX2NoZWNrcG9pbnRfZGF0YS5tX21lc3NhZ2UsIG1zZywgMCApOwotICAgICAgICBtX2NoZWNrcG9pbnRfZGF0YS5tX2ZpbGVfbmFtZSAgICA9IGZpbGU7Ci0gICAgICAgIG1fY2hlY2twb2ludF9kYXRhLm1fbGluZV9udW0gICAgPSBsaW5lX251bTsKLSAgICB9Ci19OwotCi11bml0X3Rlc3RfbG9nX2ltcGwmIHNfbG9nX2ltcGwoKSB7IHN0YXRpYyB1bml0X3Rlc3RfbG9nX2ltcGwgdGhlX2luc3Q7IHJldHVybiB0aGVfaW5zdDsgfQotCi19IC8vIGxvY2FsIG5hbWVzcGFjZQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi11bml0X3Rlc3RfbG9nX3Q6OnRlc3Rfc3RhcnQoIGNvdW50ZXJfdCB0ZXN0X2Nhc2VzX2Ftb3VudCApCi17Ci0gICAgaWYoIHNfbG9nX2ltcGwoKS5tX3RocmVzaG9sZF9sZXZlbCA9PSBsb2dfbm90aGluZyApCi0gICAgICAgIHJldHVybjsKLQotICAgIHNfbG9nX2ltcGwoKS5tX2xvZ19mb3JtYXR0ZXItPmxvZ19zdGFydCggc19sb2dfaW1wbCgpLnN0cmVhbSgpLCB0ZXN0X2Nhc2VzX2Ftb3VudCApOwotCi0gICAgaWYoIHJ1bnRpbWVfY29uZmlnOjpzaG93X2J1aWxkX2luZm8oKSApCi0gICAgICAgIHNfbG9nX2ltcGwoKS5tX2xvZ19mb3JtYXR0ZXItPmxvZ19idWlsZF9pbmZvKCBzX2xvZ19pbXBsKCkuc3RyZWFtKCkgKTsKLQotICAgIHNfbG9nX2ltcGwoKS5tX2VudHJ5X2luX3Byb2dyZXNzID0gZmFsc2U7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXVuaXRfdGVzdF9sb2dfdDo6dGVzdF9maW5pc2goKQotewotICAgIGlmKCBzX2xvZ19pbXBsKCkubV90aHJlc2hvbGRfbGV2ZWwgPT0gbG9nX25vdGhpbmcgKQotICAgICAgICByZXR1cm47Ci0KLSAgICBzX2xvZ19pbXBsKCkubV9sb2dfZm9ybWF0dGVyLT5sb2dfZmluaXNoKCBzX2xvZ19pbXBsKCkuc3RyZWFtKCkgKTsKLQotICAgIHNfbG9nX2ltcGwoKS5zdHJlYW0oKS5mbHVzaCgpOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi11bml0X3Rlc3RfbG9nX3Q6OnRlc3RfYWJvcnRlZCgpCi17Ci0gICAgTkROQk9PU1RfVEVTVF9MT0dfRU5UUlkoIGxvZ19tZXNzYWdlcyApIDw8ICJUZXN0IGlzIGFib3J0ZWQiOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi11bml0X3Rlc3RfbG9nX3Q6OnRlc3RfdW5pdF9zdGFydCggdGVzdF91bml0IGNvbnN0JiB0dSApCi17Ci0gICAgaWYoIHNfbG9nX2ltcGwoKS5tX3RocmVzaG9sZF9sZXZlbCA+IGxvZ190ZXN0X3VuaXRzICkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYoIHNfbG9nX2ltcGwoKS5tX2VudHJ5X2luX3Byb2dyZXNzICkKLSAgICAgICAgKnRoaXMgPDwgbG9nOjplbmQoKTsKLQotICAgIHNfbG9nX2ltcGwoKS5tX2xvZ19mb3JtYXR0ZXItPnRlc3RfdW5pdF9zdGFydCggc19sb2dfaW1wbCgpLnN0cmVhbSgpLCB0dSApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi11bml0X3Rlc3RfbG9nX3Q6OnRlc3RfdW5pdF9maW5pc2goIHRlc3RfdW5pdCBjb25zdCYgdHUsIHVuc2lnbmVkIGxvbmcgZWxhcHNlZCApCi17Ci0gICAgaWYoIHNfbG9nX2ltcGwoKS5tX3RocmVzaG9sZF9sZXZlbCA+IGxvZ190ZXN0X3VuaXRzICkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgc19sb2dfaW1wbCgpLm1fY2hlY2twb2ludF9kYXRhLmNsZWFyKCk7Ci0KLSAgICBpZiggc19sb2dfaW1wbCgpLm1fZW50cnlfaW5fcHJvZ3Jlc3MgKQotICAgICAgICAqdGhpcyA8PCBsb2c6OmVuZCgpOwotCi0gICAgc19sb2dfaW1wbCgpLm1fbG9nX2Zvcm1hdHRlci0+dGVzdF91bml0X2ZpbmlzaCggc19sb2dfaW1wbCgpLnN0cmVhbSgpLCB0dSwgZWxhcHNlZCApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi11bml0X3Rlc3RfbG9nX3Q6OnRlc3RfdW5pdF9za2lwcGVkKCB0ZXN0X3VuaXQgY29uc3QmIHR1ICkKLXsKLSAgICBpZiggc19sb2dfaW1wbCgpLm1fdGhyZXNob2xkX2xldmVsID4gbG9nX3Rlc3RfdW5pdHMgKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiggc19sb2dfaW1wbCgpLm1fZW50cnlfaW5fcHJvZ3Jlc3MgKQotICAgICAgICAqdGhpcyA8PCBsb2c6OmVuZCgpOwotCi0gICAgc19sb2dfaW1wbCgpLm1fbG9nX2Zvcm1hdHRlci0+dGVzdF91bml0X3NraXBwZWQoIHNfbG9nX2ltcGwoKS5zdHJlYW0oKSwgdHUgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotdW5pdF90ZXN0X2xvZ190Ojp0ZXN0X3VuaXRfYWJvcnRlZCggdGVzdF91bml0IGNvbnN0JiApCi17Ci0gICAgLy8gZG8gbm90aGluZwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi11bml0X3Rlc3RfbG9nX3Q6OmFzc2VydGlvbl9yZXN1bHQoIGJvb2wgKQotewotICAgIC8vIGRvIG5vdGhpbmcKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotdW5pdF90ZXN0X2xvZ190OjpleGNlcHRpb25fY2F1Z2h0KCBleGVjdXRpb25fZXhjZXB0aW9uIGNvbnN0JiBleCApCi17Ci0gICAgbG9nX2xldmVsIGwgPQotICAgICAgICBleC5jb2RlKCkgPD0gZXhlY3V0aW9uX2V4Y2VwdGlvbjo6Y3BwX2V4Y2VwdGlvbl9lcnJvciAgID8gbG9nX2NwcF9leGNlcHRpb25fZXJyb3JzIDoKLSAgICAgICAgKGV4LmNvZGUoKSA8PSBleGVjdXRpb25fZXhjZXB0aW9uOjp0aW1lb3V0X2Vycm9yICAgICAgICA/IGxvZ19zeXN0ZW1fZXJyb3JzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBsb2dfZmF0YWxfZXJyb3JzICk7Ci0KLSAgICBpZiggbCA+PSBzX2xvZ19pbXBsKCkubV90aHJlc2hvbGRfbGV2ZWwgKSB7Ci0gICAgICAgIGlmKCBzX2xvZ19pbXBsKCkubV9lbnRyeV9pbl9wcm9ncmVzcyApCi0gICAgICAgICAgICAqdGhpcyA8PCBsb2c6OmVuZCgpOwotCi0gICAgICAgIHNfbG9nX2ltcGwoKS5tX2xvZ19mb3JtYXR0ZXItPmxvZ19leGNlcHRpb24oIHNfbG9nX2ltcGwoKS5zdHJlYW0oKSwgc19sb2dfaW1wbCgpLm1fY2hlY2twb2ludF9kYXRhLCBleCApOwotICAgIH0KLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotdW5pdF90ZXN0X2xvZ190OjpzZXRfY2hlY2twb2ludCggY29uc3Rfc3RyaW5nIGZpbGUsIHN0ZDo6c2l6ZV90IGxpbmVfbnVtLCBjb25zdF9zdHJpbmcgbXNnICkKLXsKLSAgICBzX2xvZ19pbXBsKCkuc2V0X2NoZWNrcG9pbnQoIGZpbGUsIGxpbmVfbnVtLCBtc2cgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotY2hhcgotc2V0X3VuaXhfc2xhc2goIGNoYXIgaW4gKQotewotICAgIHJldHVybiBpbiA9PSAnXFwnID8gJy8nIDogaW47Ci19Ci0gICAgCi11bml0X3Rlc3RfbG9nX3QmCi11bml0X3Rlc3RfbG9nX3Q6Om9wZXJhdG9yPDwoIGxvZzo6YmVnaW4gY29uc3QmIGIgKQotewotICAgIGlmKCBzX2xvZ19pbXBsKCkubV9lbnRyeV9pbl9wcm9ncmVzcyApCi0gICAgICAgICp0aGlzIDw8IGxvZzo6ZW5kKCk7Ci0KLSAgICBzX2xvZ19pbXBsKCkubV9zdHJlYW1fc3RhdGVfc2F2ZXItPnJlc3RvcmUoKTsKLQotICAgIHNfbG9nX2ltcGwoKS5tX2VudHJ5X2RhdGEuY2xlYXIoKTsKLQotICAgIGFzc2lnbl9vcCggc19sb2dfaW1wbCgpLm1fZW50cnlfZGF0YS5tX2ZpbGVfbmFtZSwgYi5tX2ZpbGVfbmFtZSwgMCApOwotCi0gICAgLy8gbm9ybWFsaXplIGZpbGUgbmFtZQotICAgIHN0ZDo6dHJhbnNmb3JtKCBzX2xvZ19pbXBsKCkubV9lbnRyeV9kYXRhLm1fZmlsZV9uYW1lLmJlZ2luKCksIHNfbG9nX2ltcGwoKS5tX2VudHJ5X2RhdGEubV9maWxlX25hbWUuZW5kKCksCi0gICAgICAgICAgICAgICAgICAgIHNfbG9nX2ltcGwoKS5tX2VudHJ5X2RhdGEubV9maWxlX25hbWUuYmVnaW4oKSwKLSAgICAgICAgICAgICAgICAgICAgJnNldF91bml4X3NsYXNoICk7Ci0KLSAgICBzX2xvZ19pbXBsKCkubV9lbnRyeV9kYXRhLm1fbGluZV9udW0gPSBiLm1fbGluZV9udW07Ci0KLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXVuaXRfdGVzdF9sb2dfdCYKLXVuaXRfdGVzdF9sb2dfdDo6b3BlcmF0b3I8PCggbG9nOjplbmQgY29uc3QmICkKLXsKLSAgICBpZiggc19sb2dfaW1wbCgpLm1fZW50cnlfaW5fcHJvZ3Jlc3MgKQotICAgICAgICBzX2xvZ19pbXBsKCkubV9sb2dfZm9ybWF0dGVyLT5sb2dfZW50cnlfZmluaXNoKCBzX2xvZ19pbXBsKCkuc3RyZWFtKCkgKTsKLQotICAgIHNfbG9nX2ltcGwoKS5tX2VudHJ5X2luX3Byb2dyZXNzID0gZmFsc2U7Ci0KLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXVuaXRfdGVzdF9sb2dfdCYKLXVuaXRfdGVzdF9sb2dfdDo6b3BlcmF0b3I8PCggbG9nX2xldmVsIGwgKQotewotICAgIHNfbG9nX2ltcGwoKS5tX2VudHJ5X2RhdGEubV9sZXZlbCA9IGw7Ci0KLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXV0X2RldGFpbDo6ZW50cnlfdmFsdWVfY29sbGVjdG9yCi11bml0X3Rlc3RfbG9nX3Q6Om9wZXJhdG9yKCkoIGxvZ19sZXZlbCBsICkKLXsKLSAgICAqdGhpcyA8PCBsOwotCi0gICAgcmV0dXJuIHV0X2RldGFpbDo6ZW50cnlfdmFsdWVfY29sbGVjdG9yKCk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLWJvb2wKLXVuaXRfdGVzdF9sb2dfdDo6bG9nX2VudHJ5X3N0YXJ0KCkKLXsKLSAgICBpZiggc19sb2dfaW1wbCgpLm1fZW50cnlfaW5fcHJvZ3Jlc3MgKSAKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBzd2l0Y2goIHNfbG9nX2ltcGwoKS5tX2VudHJ5X2RhdGEubV9sZXZlbCApIHsKLSAgICBjYXNlIGxvZ19zdWNjZXNzZnVsX3Rlc3RzOgotICAgICAgICBzX2xvZ19pbXBsKCkubV9sb2dfZm9ybWF0dGVyLT5sb2dfZW50cnlfc3RhcnQoIHNfbG9nX2ltcGwoKS5zdHJlYW0oKSwgc19sb2dfaW1wbCgpLm1fZW50cnlfZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml0X3Rlc3RfbG9nX2Zvcm1hdHRlcjo6TkROQk9PU1RfVVRMX0VUX0lORk8gKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBsb2dfbWVzc2FnZXM6Ci0gICAgICAgIHNfbG9nX2ltcGwoKS5tX2xvZ19mb3JtYXR0ZXItPmxvZ19lbnRyeV9zdGFydCggc19sb2dfaW1wbCgpLnN0cmVhbSgpLCBzX2xvZ19pbXBsKCkubV9lbnRyeV9kYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXRfdGVzdF9sb2dfZm9ybWF0dGVyOjpORE5CT09TVF9VVExfRVRfTUVTU0FHRSApOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIGxvZ193YXJuaW5nczoKLSAgICAgICAgc19sb2dfaW1wbCgpLm1fbG9nX2Zvcm1hdHRlci0+bG9nX2VudHJ5X3N0YXJ0KCBzX2xvZ19pbXBsKCkuc3RyZWFtKCksIHNfbG9nX2ltcGwoKS5tX2VudHJ5X2RhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdF90ZXN0X2xvZ19mb3JtYXR0ZXI6Ok5ETkJPT1NUX1VUTF9FVF9XQVJOSU5HICk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgbG9nX2FsbF9lcnJvcnM6Ci0gICAgY2FzZSBsb2dfY3BwX2V4Y2VwdGlvbl9lcnJvcnM6Ci0gICAgY2FzZSBsb2dfc3lzdGVtX2Vycm9yczoKLSAgICAgICAgc19sb2dfaW1wbCgpLm1fbG9nX2Zvcm1hdHRlci0+bG9nX2VudHJ5X3N0YXJ0KCBzX2xvZ19pbXBsKCkuc3RyZWFtKCksIHNfbG9nX2ltcGwoKS5tX2VudHJ5X2RhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdF90ZXN0X2xvZ19mb3JtYXR0ZXI6Ok5ETkJPT1NUX1VUTF9FVF9FUlJPUiApOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIGxvZ19mYXRhbF9lcnJvcnM6Ci0gICAgICAgIHNfbG9nX2ltcGwoKS5tX2xvZ19mb3JtYXR0ZXItPmxvZ19lbnRyeV9zdGFydCggc19sb2dfaW1wbCgpLnN0cmVhbSgpLCBzX2xvZ19pbXBsKCkubV9lbnRyeV9kYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXRfdGVzdF9sb2dfZm9ybWF0dGVyOjpORE5CT09TVF9VVExfRVRfRkFUQUxfRVJST1IgKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBsb2dfbm90aGluZzoKLSAgICBjYXNlIGxvZ190ZXN0X3VuaXRzOgotICAgIGNhc2UgaW52YWxpZF9sb2dfbGV2ZWw6Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBzX2xvZ19pbXBsKCkubV9lbnRyeV9pbl9wcm9ncmVzcyA9IHRydWU7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdW5pdF90ZXN0X2xvZ190JgotdW5pdF90ZXN0X2xvZ190OjpvcGVyYXRvcjw8KCBjb25zdF9zdHJpbmcgdmFsdWUgKQotewotICAgIGlmKCBzX2xvZ19pbXBsKCkubV9lbnRyeV9kYXRhLm1fbGV2ZWwgPj0gc19sb2dfaW1wbCgpLm1fdGhyZXNob2xkX2xldmVsICYmICF2YWx1ZS5lbXB0eSgpICYmIGxvZ19lbnRyeV9zdGFydCgpICkKLSAgICAgICAgc19sb2dfaW1wbCgpLm1fbG9nX2Zvcm1hdHRlci0+bG9nX2VudHJ5X3ZhbHVlKCBzX2xvZ19pbXBsKCkuc3RyZWFtKCksIHZhbHVlICk7Ci0KLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXVuaXRfdGVzdF9sb2dfdCYKLXVuaXRfdGVzdF9sb2dfdDo6b3BlcmF0b3I8PCggbGF6eV9vc3RyZWFtIGNvbnN0JiB2YWx1ZSApCi17Ci0gICAgaWYoIHNfbG9nX2ltcGwoKS5tX2VudHJ5X2RhdGEubV9sZXZlbCA+PSBzX2xvZ19pbXBsKCkubV90aHJlc2hvbGRfbGV2ZWwgJiYgIXZhbHVlLmVtcHR5KCkgJiYgbG9nX2VudHJ5X3N0YXJ0KCkgKQotICAgICAgICBzX2xvZ19pbXBsKCkubV9sb2dfZm9ybWF0dGVyLT5sb2dfZW50cnlfdmFsdWUoIHNfbG9nX2ltcGwoKS5zdHJlYW0oKSwgdmFsdWUgKTsKLQotICAgIHJldHVybiAqdGhpczsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotdW5pdF90ZXN0X2xvZ190OjpzZXRfc3RyZWFtKCBzdGQ6Om9zdHJlYW0mIHN0ciApCi17Ci0gICAgaWYoIHNfbG9nX2ltcGwoKS5tX2VudHJ5X2luX3Byb2dyZXNzICkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgc19sb2dfaW1wbCgpLm1fc3RyZWFtID0gJnN0cjsKLSAgICBzX2xvZ19pbXBsKCkubV9zdHJlYW1fc3RhdGVfc2F2ZXIucmVzZXQoIG5ldyBpb19zYXZlcl90eXBlKCBzdHIgKSApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi11bml0X3Rlc3RfbG9nX3Q6OnNldF90aHJlc2hvbGRfbGV2ZWwoIGxvZ19sZXZlbCBsZXYgKQotewotICAgIGlmKCBzX2xvZ19pbXBsKCkubV9lbnRyeV9pbl9wcm9ncmVzcyB8fCBsZXYgPT0gaW52YWxpZF9sb2dfbGV2ZWwgKQotICAgICAgICByZXR1cm47Ci0KLSAgICBzX2xvZ19pbXBsKCkubV90aHJlc2hvbGRfbGV2ZWwgPSBsZXY7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXVuaXRfdGVzdF9sb2dfdDo6c2V0X2Zvcm1hdCggb3V0cHV0X2Zvcm1hdCBsb2dfZm9ybWF0ICkKLXsKLSAgICBpZiggc19sb2dfaW1wbCgpLm1fZW50cnlfaW5fcHJvZ3Jlc3MgKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiggbG9nX2Zvcm1hdCA9PSBDTEYgKQotICAgICAgICBzZXRfZm9ybWF0dGVyKCBuZXcgb3V0cHV0Ojpjb21waWxlcl9sb2dfZm9ybWF0dGVyICk7Ci0gICAgZWxzZQotICAgICAgICBzZXRfZm9ybWF0dGVyKCBuZXcgb3V0cHV0Ojp4bWxfbG9nX2Zvcm1hdHRlciApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi11bml0X3Rlc3RfbG9nX3Q6OnNldF9mb3JtYXR0ZXIoIHVuaXRfdGVzdF9sb2dfZm9ybWF0dGVyKiB0aGVfZm9ybWF0dGVyICkKLXsKLSAgICBzX2xvZ19pbXBsKCkubV9sb2dfZm9ybWF0dGVyLnJlc2V0KCB0aGVfZm9ybWF0dGVyICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgIHVuaXRfdGVzdF9sb2dfZm9ybWF0dGVyICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdm9pZAotdW5pdF90ZXN0X2xvZ19mb3JtYXR0ZXI6OmxvZ19lbnRyeV92YWx1ZSggc3RkOjpvc3RyZWFtJiBvc3RyLCBsYXp5X29zdHJlYW0gY29uc3QmIHZhbHVlICkKLXsKLSAgICBsb2dfZW50cnlfdmFsdWUoIG9zdHIsICh3cmFwX3N0cmluZ3N0cmVhbSgpLnJlZigpIDw8IHZhbHVlKS5zdHIoKSApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSB1bml0X3Rlc3QKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX1VOSVRfVEVTVF9MT0dfSVBQXzAxMjIwNUdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwvdW5pdF90ZXN0X21haW4uaXBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwvdW5pdF90ZXN0X21haW4uaXBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMjY5MWY1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL3VuaXRfdGVzdF9tYWluLmlwcAorKysgL2Rldi9udWxsCkBAIC0xLDI0NiArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDAxLTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1NDYzMyAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogbWFpbiBmdW5jdGlvbiBpbXBsZW1lbnRhdGlvbiBmb3IgVW5pdCBUZXN0IEZyYW1ld29yawotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9VTklUX1RFU1RfTUFJTl9JUFBfMDEyMjA1R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfVU5JVF9URVNUX01BSU5fSVBQXzAxMjIwNUdFUgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9mcmFtZXdvcmsuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvcmVzdWx0c19jb2xsZWN0b3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdW5pdF90ZXN0X3N1aXRlX2ltcGwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvcmVzdWx0c19yZXBvcnRlci5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC91bml0X3Rlc3RfcGFyYW1ldGVycy5ocHA+Ci0KLSNpZiAhZGVmaW5lZChfX0JPUkxBTkRDX18pICYmICFORE5CT09TVF9XT1JLQVJPVU5EKCBORE5CT09TVF9NU1ZDLCA8IDEzMDAgKSAmJiAhTkROQk9PU1RfV09SS0FST1VORCggX19TVU5QUk9fQ0MsIDwgMHg1MTAwICkKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9TVVBQT1JUX1JVTl9CWV9OQU1FCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9pdGVyYXRvci90b2tlbl9pdGVyYXRvci5ocHA+Ci0jZW5kaWYKLQotLy8gQm9vc3QKLSNpbmNsdWRlIDxuZG5ib29zdC9jc3RkbGliLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9iaW5kLmhwcD4KLQotLy8gU1RMCi0jaW5jbHVkZSA8c3RkZXhjZXB0PgotI2luY2x1ZGUgPGlvc3RyZWFtPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgdW5pdF90ZXN0IHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICB0ZXN0X2Nhc2VfZmlsdGVyICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1jbGFzcyB0ZXN0X2Nhc2VfZmlsdGVyIDogcHVibGljIHRlc3RfdHJlZV92aXNpdG9yIHsKLXB1YmxpYzoKLSAgICBzdHJ1Y3Qgc2luZ2xlX2ZpbHRlciB7Ci0gICAgICAgIHNpbmdsZV9maWx0ZXIoIGNvbnN0X3N0cmluZyBpbiApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmKCBpbiA9PSAiKiIgKQotICAgICAgICAgICAgICAgIG1fa2luZCAgPSBTRktfQUxMOwotICAgICAgICAgICAgZWxzZSBpZiggZmlyc3RfY2hhciggaW4gKSA9PSAnKicgJiYgbGFzdF9jaGFyKCBpbiApID09ICcqJyApIHsKLSAgICAgICAgICAgICAgICBtX2tpbmQgID0gU0ZLX1NVQlNUUjsKLSAgICAgICAgICAgICAgICBtX3ZhbHVlID0gaW4uc3Vic3RyKCAxLCBpbi5zaXplKCktMSApOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiggZmlyc3RfY2hhciggaW4gKSA9PSAnKicgKSB7Ci0gICAgICAgICAgICAgICAgbV9raW5kICA9IFNGS19UUkFJTElORzsKLSAgICAgICAgICAgICAgICBtX3ZhbHVlID0gaW4uc3Vic3RyKCAxICk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmKCBsYXN0X2NoYXIoIGluICkgPT0gJyonICkgewotICAgICAgICAgICAgICAgIG1fa2luZCAgPSBTRktfTEVBRElORzsKLSAgICAgICAgICAgICAgICBtX3ZhbHVlID0gaW4uc3Vic3RyKCAwLCBpbi5zaXplKCktMSApOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgbV9raW5kICA9IFNGS19NQVRDSDsKLSAgICAgICAgICAgICAgICBtX3ZhbHVlID0gaW47Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0KLSAgICAgICAgYm9vbCAgICAgICAgICAgIHBhc3MoIHRlc3RfdW5pdCBjb25zdCYgdHUgKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICBjb25zdF9zdHJpbmcgbmFtZSggdHUucF9uYW1lICk7Ci0gICAgCi0gICAgICAgICAgICBzd2l0Y2goIG1fa2luZCApIHsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBjYXNlIFNGS19BTEw6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAgICAgIGNhc2UgU0ZLX0xFQURJTkc6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5hbWUuc3Vic3RyKCAwLCBtX3ZhbHVlLnNpemUoKSApID09IG1fdmFsdWU7Ci0KLSAgICAgICAgICAgIGNhc2UgU0ZLX1RSQUlMSU5HOgotICAgICAgICAgICAgICAgIHJldHVybiBuYW1lLnNpemUoKSA+PSBtX3ZhbHVlLnNpemUoKSAmJiBuYW1lLnN1YnN0ciggbmFtZS5zaXplKCkgLSBtX3ZhbHVlLnNpemUoKSApID09IG1fdmFsdWU7Ci0KLSAgICAgICAgICAgIGNhc2UgU0ZLX1NVQlNUUjoKLSAgICAgICAgICAgICAgICByZXR1cm4gbmFtZS5maW5kKCBtX3ZhbHVlICkgIT0gY29uc3Rfc3RyaW5nOjpucG9zOwotCi0gICAgICAgICAgICBjYXNlIFNGS19NQVRDSDoKLSAgICAgICAgICAgICAgICByZXR1cm4gbV92YWx1ZSA9PSB0dS5wX25hbWUuZ2V0KCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZW51bSBraW5kIHsgU0ZLX0FMTCwgU0ZLX0xFQURJTkcsIFNGS19UUkFJTElORywgU0ZLX1NVQlNUUiwgU0ZLX01BVENIIH07Ci0KLSAgICAgICAga2luZCAgICAgICAgICAgIG1fa2luZDsKLSAgICAgICAgY29uc3Rfc3RyaW5nICAgIG1fdmFsdWU7Ci0gICAgfTsKLSAgICAvLyBDb25zdHJ1Y3RvcgotI2lmbmRlZiBORE5CT09TVF9URVNUX1NVUFBPUlRfUlVOX0JZX05BTUUKLSAgICBleHBsaWNpdCAgICAgICAgdGVzdF9jYXNlX2ZpbHRlciggY29uc3Rfc3RyaW5nICkgOiBtX2RlcHRoKCAwICkge30KLSNlbHNlCi0gICAgZXhwbGljaXQgICAgICAgIHRlc3RfY2FzZV9maWx0ZXIoIGNvbnN0X3N0cmluZyB0Y190b19ydW4gKSAKLSAgICA6IG1fZGVwdGgoIDAgKQotICAgIHsKLSAgICAgICAgc3RyaW5nX3Rva2VuX2l0ZXJhdG9yIHRpdCggdGNfdG9fcnVuLCAoZHJvcHBlZF9kZWxpbWV0ZXJzID0gIi8iLCBrZXB0X2RlbGltZXRlcnMgPSBkdF9ub25lKSApOwotCi0gICAgICAgIHdoaWxlKCB0aXQgIT0gc3RyaW5nX3Rva2VuX2l0ZXJhdG9yKCkgKSB7Ci0gICAgICAgICAgICBtX2ZpbHRlcnMucHVzaF9iYWNrKCAKLSAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxzaW5nbGVfZmlsdGVyPiggc3RyaW5nX3Rva2VuX2l0ZXJhdG9yKCAqdGl0LCAoZHJvcHBlZF9kZWxpbWV0ZXJzID0gIiwiLCBrZXB0X2RlbGltZXRlcnMgPSBkdF9ub25lKSAgKSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ190b2tlbl9pdGVyYXRvcigpICkgKTsKLQotICAgICAgICAgICAgKyt0aXQ7ICAgICAgICAgICAKLSAgICAgICAgfQotICAgIH0KLSNlbmRpZgotICAgIAotICAgIHZvaWQgICAgICAgICAgICBmaWx0ZXJfdW5pdCggdGVzdF91bml0IGNvbnN0JiB0dSApCi0gICAgewotICAgICAgICBpZiggKCsrbV9kZXB0aCAtIDEpID4gbV9maWx0ZXJzLnNpemUoKSApIHsKLSAgICAgICAgICAgIHR1LnBfZW5hYmxlZC52YWx1ZSA9IHRydWU7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiggbV9kZXB0aCA9PSAxICkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBzdGQ6OnZlY3RvcjxzaW5nbGVfZmlsdGVyPiBjb25zdCYgZmlsdGVycyA9IG1fZmlsdGVyc1ttX2RlcHRoLTJdOwotCi0gICAgICAgIHR1LnBfZW5hYmxlZC52YWx1ZSA9Ci0gICAgICAgICAgICBzdGQ6OmZpbmRfaWYoIGZpbHRlcnMuYmVnaW4oKSwgZmlsdGVycy5lbmQoKSwgYmluZCggJnNpbmdsZV9maWx0ZXI6OnBhc3MsIF8xLCBuZG5ib29zdDo6cmVmKHR1KSApICkgIT0gZmlsdGVycy5lbmQoKTsKLSAgICB9Ci0KLSAgICAvLyB0ZXN0IHRyZWUgdmlzaXRvciBpbnRlcmZhY2UKLSAgICB2aXJ0dWFsIHZvaWQgICAgdmlzaXQoIHRlc3RfY2FzZSBjb25zdCYgdGMgKQotICAgIHsKLSAgICAgICAgaWYoIG1fZGVwdGggPCBtX2ZpbHRlcnMuc2l6ZSgpICkgewotICAgICAgICAgICAgdGMucF9lbmFibGVkLnZhbHVlID0gZmFsc2U7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBmaWx0ZXJfdW5pdCggdGMgKTsKLQotICAgICAgICAtLW1fZGVwdGg7Ci0gICAgfQotCi0gICAgdmlydHVhbCBib29sICAgIHRlc3Rfc3VpdGVfc3RhcnQoIHRlc3Rfc3VpdGUgY29uc3QmIHRzICkKLSAgICB7IAotICAgICAgICBmaWx0ZXJfdW5pdCggdHMgKTsKLQotICAgICAgICBpZiggIXRzLnBfZW5hYmxlZCApCi0gICAgICAgICAgICAtLW1fZGVwdGg7Ci0KLSAgICAgICAgcmV0dXJuIHRzLnBfZW5hYmxlZDsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgICAgdGVzdF9zdWl0ZV9maW5pc2goIHRlc3Rfc3VpdGUgY29uc3QmICkgIHsgLS1tX2RlcHRoOyB9Ci0KLXByaXZhdGU6Ci0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgc3RkOjp2ZWN0b3I8c3RkOjp2ZWN0b3I8c2luZ2xlX2ZpbHRlcj4gPiAgICBtX2ZpbHRlcnM7Ci0gICAgdW5zaWduZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2RlcHRoOwotfTsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICAgdW5pdF90ZXN0X21haW4gICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1pbnQgTkROQk9PU1RfVEVTVF9ERUNMCi11bml0X3Rlc3RfbWFpbiggaW5pdF91bml0X3Rlc3RfZnVuYyBpbml0X2Z1bmMsIGludCBhcmdjLCBjaGFyKiBhcmd2W10gKQotewotICAgIHRyeSB7Ci0gICAgICAgIGZyYW1ld29yazo6aW5pdCggaW5pdF9mdW5jLCBhcmdjLCBhcmd2ICk7Ci0KLSAgICAgICAgaWYoICFydW50aW1lX2NvbmZpZzo6dGVzdF90b19ydW4oKS5pc19lbXB0eSgpICkgewotICAgICAgICAgICAgdGVzdF9jYXNlX2ZpbHRlciBmaWx0ZXIoIHJ1bnRpbWVfY29uZmlnOjp0ZXN0X3RvX3J1bigpICk7Ci0KLSAgICAgICAgICAgIHRyYXZlcnNlX3Rlc3RfdHJlZSggZnJhbWV3b3JrOjptYXN0ZXJfdGVzdF9zdWl0ZSgpLnBfaWQsIGZpbHRlciApOwotICAgICAgICB9Ci0KLSAgICAgICAgZnJhbWV3b3JrOjpydW4oKTsKLQotICAgICAgICByZXN1bHRzX3JlcG9ydGVyOjptYWtlX3JlcG9ydCgpOwotCi0gICAgICAgIHJldHVybiBydW50aW1lX2NvbmZpZzo6bm9fcmVzdWx0X2NvZGUoKSAKLSAgICAgICAgICAgICAgICAgICAgPyBuZG5ib29zdDo6ZXhpdF9zdWNjZXNzCi0gICAgICAgICAgICAgICAgICAgIDogcmVzdWx0c19jb2xsZWN0b3IucmVzdWx0cyggZnJhbWV3b3JrOjptYXN0ZXJfdGVzdF9zdWl0ZSgpLnBfaWQgKS5yZXN1bHRfY29kZSgpOwotICAgIH0KLSAgICBjYXRjaCggZnJhbWV3b3JrOjpub3RoaW5nX3RvX3Rlc3QgY29uc3QmICkgewotICAgICAgICByZXR1cm4gbmRuYm9vc3Q6OmV4aXRfc3VjY2VzczsKLSAgICB9Ci0gICAgY2F0Y2goIGZyYW1ld29yazo6aW50ZXJuYWxfZXJyb3IgY29uc3QmIGV4ICkgewotICAgICAgICByZXN1bHRzX3JlcG9ydGVyOjpnZXRfc3RyZWFtKCkgPDwgIkJvb3N0LlRlc3QgZnJhbWV3b3JrIGludGVybmFsIGVycm9yOiAiIDw8IGV4LndoYXQoKSA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIAotICAgICAgICByZXR1cm4gbmRuYm9vc3Q6OmV4aXRfZXhjZXB0aW9uX2ZhaWx1cmU7Ci0gICAgfQotICAgIGNhdGNoKCBmcmFtZXdvcms6OnNldHVwX2Vycm9yIGNvbnN0JiBleCApIHsKLSAgICAgICAgcmVzdWx0c19yZXBvcnRlcjo6Z2V0X3N0cmVhbSgpIDw8ICJUZXN0IHNldHVwIGVycm9yOiAiIDw8IGV4LndoYXQoKSA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIAotICAgICAgICByZXR1cm4gbmRuYm9vc3Q6OmV4aXRfZXhjZXB0aW9uX2ZhaWx1cmU7Ci0gICAgfQotICAgIGNhdGNoKCAuLi4gKSB7Ci0gICAgICAgIHJlc3VsdHNfcmVwb3J0ZXI6OmdldF9zdHJlYW0oKSA8PCAiQm9vc3QuVGVzdCBmcmFtZXdvcmsgaW50ZXJuYWwgZXJyb3I6IHVua25vd24gcmVhc29uIiA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIAotICAgICAgICByZXR1cm4gbmRuYm9vc3Q6OmV4aXRfZXhjZXB0aW9uX2ZhaWx1cmU7Ci0gICAgfQotfQotCi19IC8vIG5hbWVzcGFjZSB1bml0X3Rlc3QKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1RFU1RfRFlOX0xJTkspICYmICFkZWZpbmVkKE5ETkJPT1NUX1RFU1RfTk9fTUFJTikKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICBtYWluIGZ1bmN0aW9uIGZvciB0ZXN0cyB1c2luZyBsaWIgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1pbnQgTkROQk9PU1RfVEVTVF9DQUxMX0RFQ0wKLW1haW4oIGludCBhcmdjLCBjaGFyKiBhcmd2W10gKQotewotICAgIC8vIHByb3RvdHlwZSBmb3IgdXNlcidzIHVuaXQgdGVzdCBpbml0IGZ1bmN0aW9uCi0jaWZkZWYgTkROQk9PU1RfVEVTVF9BTFRFUk5BVElWRV9JTklUX0FQSQotICAgIGV4dGVybiBib29sIGluaXRfdW5pdF90ZXN0KCk7Ci0KLSAgICBuZG5ib29zdDo6dW5pdF90ZXN0Ojppbml0X3VuaXRfdGVzdF9mdW5jIGluaXRfZnVuYyA9ICZpbml0X3VuaXRfdGVzdDsKLSNlbHNlCi0gICAgZXh0ZXJuIDo6bmRuYm9vc3Q6OnVuaXRfdGVzdDo6dGVzdF9zdWl0ZSogaW5pdF91bml0X3Rlc3Rfc3VpdGUoIGludCBhcmdjLCBjaGFyKiBhcmd2W10gKTsKLQotICAgIG5kbmJvb3N0Ojp1bml0X3Rlc3Q6OmluaXRfdW5pdF90ZXN0X2Z1bmMgaW5pdF9mdW5jID0gJmluaXRfdW5pdF90ZXN0X3N1aXRlOwotI2VuZGlmCi0KLSAgICByZXR1cm4gOjpuZG5ib29zdDo6dW5pdF90ZXN0Ojp1bml0X3Rlc3RfbWFpbiggaW5pdF9mdW5jLCBhcmdjLCBhcmd2ICk7Ci19Ci0KLSNlbmRpZiAvLyAhTkROQk9PU1RfVEVTVF9EWU5fTElOSyAmJiAhTkROQk9PU1RfVEVTVF9OT19NQUlOCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9VTklUX1RFU1RfTUFJTl9JUFBfMDEyMjA1R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC91bml0X3Rlc3RfbW9uaXRvci5pcHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC91bml0X3Rlc3RfbW9uaXRvci5pcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3NDcwMWQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwvdW5pdF90ZXN0X21vbml0b3IuaXBwCisrKyAvZGV2L251bGwKQEAgLTEsMTAxICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDQ5MzEyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBpbXBsZW1lbnRzIHNwZWNpZmljIHN1YmNsYXNzIG9mIEV4ZWN1dG9uIE1vbml0b3IgdXNlZCBieSBVbml0Ci0vLyAgVGVzdCBGcmFtZXdvcmsgdG8gbW9uaXRvciB0ZXN0IGNhc2VzIHJ1bi4KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfVU5JVF9URVNUX01PTklUT1JfSVBQXzAxMjIwNUdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX1VOSVRfVEVTVF9NT05JVE9SX0lQUF8wMTIyMDVHRVIKLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdW5pdF90ZXN0X21vbml0b3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdW5pdF90ZXN0X3N1aXRlX2ltcGwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdGVzdF90b29scy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9mcmFtZXdvcmsuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvdW5pdF90ZXN0X3BhcmFtZXRlcnMuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgdW5pdF90ZXN0IHsKLQotbmFtZXNwYWNlIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgRj4KLXN0cnVjdCB6ZXJvX3JldHVybl93cmFwcGVyX3QgewotICAgIGV4cGxpY2l0IHplcm9fcmV0dXJuX3dyYXBwZXJfdCggRiBjb25zdCYgZiApIDogbV9mKCBmICkge30KLSAgICAKLSAgICBpbnQgb3BlcmF0b3IoKSgpIHsgbV9mKCk7IHJldHVybiAwOyB9Ci0gICAgCi0gICAgRiBjb25zdCYgbV9mOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgRj4KLXplcm9fcmV0dXJuX3dyYXBwZXJfdDxGPgotemVyb19yZXR1cm5fd3JhcHBlciggRiBjb25zdCYgZiApCi17Ci0gICAgcmV0dXJuIHplcm9fcmV0dXJuX3dyYXBwZXJfdDxGPiggZiApOwotfQotCi19Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgIHVuaXRfdGVzdF9tb25pdG9yICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdW5pdF90ZXN0X21vbml0b3JfdDo6ZXJyb3JfbGV2ZWwKLXVuaXRfdGVzdF9tb25pdG9yX3Q6OmV4ZWN1dGVfYW5kX3RyYW5zbGF0ZSggdGVzdF9jYXNlIGNvbnN0JiB0YyApCi17Ci0gICAgdHJ5IHsKLSAgICAgICAgcF9jYXRjaF9zeXN0ZW1fZXJyb3JzLnZhbHVlICAgICA9IHJ1bnRpbWVfY29uZmlnOjpjYXRjaF9zeXNfZXJyb3JzKCk7Ci0gICAgICAgIHBfdGltZW91dC52YWx1ZSAgICAgICAgICAgICAgICAgPSB0Yy5wX3RpbWVvdXQuZ2V0KCk7Ci0gICAgICAgIHBfYXV0b19zdGFydF9kYmcudmFsdWUgICAgICAgICAgPSBydW50aW1lX2NvbmZpZzo6YXV0b19zdGFydF9kYmcoKTsKLSAgICAgICAgcF91c2VfYWx0X3N0YWNrLnZhbHVlICAgICAgICAgICA9IHJ1bnRpbWVfY29uZmlnOjp1c2VfYWx0X3N0YWNrKCk7Ci0gICAgICAgIHBfZGV0ZWN0X2ZwX2V4Y2VwdGlvbnMudmFsdWUgICAgPSBydW50aW1lX2NvbmZpZzo6ZGV0ZWN0X2ZwX2V4Y2VwdGlvbnMoKTsKLQotICAgICAgICBleGVjdXRlKCBjYWxsYmFjazA8aW50PiggemVyb19yZXR1cm5fd3JhcHBlciggdGMudGVzdF9mdW5jKCkgKSApICk7Ci0gICAgfQotICAgIGNhdGNoKCBleGVjdXRpb25fZXhjZXB0aW9uIGNvbnN0JiBleCApIHsKLSAgICAgICAgZnJhbWV3b3JrOjpleGNlcHRpb25fY2F1Z2h0KCBleCApOwotICAgICAgICBmcmFtZXdvcms6OnRlc3RfdW5pdF9hYm9ydGVkKCBmcmFtZXdvcms6OmN1cnJlbnRfdGVzdF9jYXNlKCkgKTsKLQotICAgICAgICAvLyB0cmFuc2xhdGUgZXhlY3V0aW9uX2V4Y2VwdGlvbjo6ZXJyb3JfY29kZSB0byBlcnJvcl9sZXZlbAotICAgICAgICBzd2l0Y2goIGV4LmNvZGUoKSApIHsKLSAgICAgICAgY2FzZSBleGVjdXRpb25fZXhjZXB0aW9uOjpub19lcnJvcjogICAgICAgICAgICAgcmV0dXJuIHRlc3Rfb2s7Ci0gICAgICAgIGNhc2UgZXhlY3V0aW9uX2V4Y2VwdGlvbjo6dXNlcl9lcnJvcjogICAgICAgICAgIHJldHVybiB1bmV4cGVjdGVkX2V4Y2VwdGlvbjsKLSAgICAgICAgY2FzZSBleGVjdXRpb25fZXhjZXB0aW9uOjpjcHBfZXhjZXB0aW9uX2Vycm9yOiAgcmV0dXJuIHVuZXhwZWN0ZWRfZXhjZXB0aW9uOwotICAgICAgICBjYXNlIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9lcnJvcjogICAgICAgICByZXR1cm4gb3NfZXhjZXB0aW9uOwotICAgICAgICBjYXNlIGV4ZWN1dGlvbl9leGNlcHRpb246OnRpbWVvdXRfZXJyb3I6ICAgICAgICByZXR1cm4gb3NfdGltZW91dDsKLSAgICAgICAgY2FzZSBleGVjdXRpb25fZXhjZXB0aW9uOjp1c2VyX2ZhdGFsX2Vycm9yOgotICAgICAgICBjYXNlIGV4ZWN1dGlvbl9leGNlcHRpb246OnN5c3RlbV9mYXRhbF9lcnJvcjogICByZXR1cm4gZmF0YWxfZXJyb3I7Ci0gICAgICAgIGRlZmF1bHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1bmV4cGVjdGVkX2V4Y2VwdGlvbjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiB0ZXN0X29rOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSB1bml0X3Rlc3QKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX1VOSVRfVEVTVF9NT05JVE9SX0lQUF8wMTIyMDVHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL3VuaXRfdGVzdF9wYXJhbWV0ZXJzLmlwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL3VuaXRfdGVzdF9wYXJhbWV0ZXJzLmlwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjVmM2ZhNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC91bml0X3Rlc3RfcGFyYW1ldGVycy5pcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MjcgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwMS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNjM2NDAgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IHNpbXBsZSBpbXBsZW1lbnRhdGlvbiBmb3IgVW5pdCBUZXN0IEZyYW1ld29yayBwYXJhbWV0ZXIKLS8vICBoYW5kbGluZyByb3V0aW5lcy4gTWF5IGJlIHJld3JpdHRlbiBpbiBmdXR1cmUgdG8gdXNlIHNvbWUga2luZCBvZgotLy8gIGNvbW1hbmQtbGluZSBhcmd1bWVudHMgcGFyc2luZyBmYWNpbGl0eSBhbmQgZW52aXJvbm1lbnQgdmFyaWFibGUgaGFuZGxpbmcKLS8vICBmYWNpbGl0eQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9VTklUX1RFU1RfUEFSQU1FVEVSU19JUFBfMDEyMjA1R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfVU5JVF9URVNUX1BBUkFNRVRFUlNfSVBQXzAxMjIwNUdFUgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvdW5pdF90ZXN0X3BhcmFtZXRlcnMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvYmFzaWNfY3N0cmluZy9iYXNpY19jc3RyaW5nLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2Jhc2ljX2NzdHJpbmcvY29tcGFyZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9iYXNpY19jc3RyaW5nL2lvLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2ZpeGVkX21hcHBpbmcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGVidWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZnJhbWV3b3JrLmhwcD4KLQotLy8gQm9vc3QuUnVudGltZS5QYXJhbQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvZHVhbF9uYW1lX3BhcmFtZXRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9wYXJzZXIuaHBwPgotCi1uYW1lc3BhY2UgcnQgID0gbmRuYm9vc3Q6OnJ1bnRpbWU7Ci1uYW1lc3BhY2UgY2xhID0gcnQ6OmNsYTsKLQotCi0jaWZuZGVmIFVOREVSX0NFCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2Vudi92YXJpYWJsZS5ocHA+Ci0KLW5hbWVzcGFjZSBlbnYgPSBydDo6ZW52OwotI2VuZGlmCi0KLQotLy8gQm9vc3QKLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9sZXhpY2FsX2Nhc3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLS8vIFNUTAotI2luY2x1ZGUgPG1hcD4KLSNpbmNsdWRlIDxjc3RkbGliPgotI2luY2x1ZGUgPGlvc3RyZWFtPgotI2luY2x1ZGUgPGZzdHJlYW0+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSMgaWZkZWYgTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UKLW5hbWVzcGFjZSBzdGQgeyB1c2luZyA6OmdldGVudjsgdXNpbmcgOjpzdHJuY21wOyB1c2luZyA6OnN0cmNtcDsgfQotIyBlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgdW5pdF90ZXN0IHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgIGlucHV0IG9wZXJhdGlvbnMgZm9yIHVuaXRfdGVzdCdzIGVudW1zICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1zdGQ6OmlzdHJlYW0mCi1vcGVyYXRvcj4+KCBzdGQ6OmlzdHJlYW0mIGluLCB1bml0X3Rlc3Q6OmxvZ19sZXZlbCYgbGwgKQotewotICAgIHN0YXRpYyBmaXhlZF9tYXBwaW5nPGNvbnN0X3N0cmluZyx1bml0X3Rlc3Q6OmxvZ19sZXZlbCxjYXNlX2luc19sZXNzPGNoYXIgY29uc3Q+ID4gbG9nX2xldmVsX25hbWUoCi0gICAgICAgICJhbGwiICAgICAgICAgICAsIGxvZ19zdWNjZXNzZnVsX3Rlc3RzLAotICAgICAgICAic3VjY2VzcyIgICAgICAgLCBsb2dfc3VjY2Vzc2Z1bF90ZXN0cywKLSAgICAgICAgInRlc3Rfc3VpdGUiICAgICwgbG9nX3Rlc3RfdW5pdHMsCi0gICAgICAgICJ1bml0X3Njb3BlIiAgICAsIGxvZ190ZXN0X3VuaXRzLAotICAgICAgICAibWVzc2FnZSIgICAgICAgLCBsb2dfbWVzc2FnZXMsCi0gICAgICAgICJ3YXJuaW5nIiAgICAgICAsIGxvZ193YXJuaW5ncywKLSAgICAgICAgImVycm9yIiAgICAgICAgICwgbG9nX2FsbF9lcnJvcnMsCi0gICAgICAgICJjcHBfZXhjZXB0aW9uIiAsIGxvZ19jcHBfZXhjZXB0aW9uX2Vycm9ycywKLSAgICAgICAgInN5c3RlbV9lcnJvciIgICwgbG9nX3N5c3RlbV9lcnJvcnMsCi0gICAgICAgICJmYXRhbF9lcnJvciIgICAsIGxvZ19mYXRhbF9lcnJvcnMsCi0gICAgICAgICJub3RoaW5nIiAgICAgICAsIGxvZ19ub3RoaW5nLAotCi0gICAgICAgIGludmFsaWRfbG9nX2xldmVsCi0gICAgICAgICk7Ci0KLSAgICBzdGQ6OnN0cmluZyB2YWw7Ci0gICAgaW4gPj4gdmFsOwotCi0gICAgbGwgPSBsb2dfbGV2ZWxfbmFtZVt2YWxdOwotICAgIE5ETkJPT1NUX1RFU1RfU0VUVVBfQVNTRVJUKCBsbCAhPSB1bml0X3Rlc3Q6OmludmFsaWRfbG9nX2xldmVsLCAiaW52YWxpZCBsb2cgbGV2ZWwgIiArIHZhbCApOwotCi0gICAgcmV0dXJuIGluOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1zdGQ6OmlzdHJlYW0mCi1vcGVyYXRvcj4+KCBzdGQ6OmlzdHJlYW0mIGluLCB1bml0X3Rlc3Q6OnJlcG9ydF9sZXZlbCYgcmwgKQotewotICAgIGZpeGVkX21hcHBpbmc8Y29uc3Rfc3RyaW5nLHVuaXRfdGVzdDo6cmVwb3J0X2xldmVsLGNhc2VfaW5zX2xlc3M8Y2hhciBjb25zdD4gPiByZXBvcnRfbGV2ZWxfbmFtZSAoCi0gICAgICAgICJjb25maXJtIiwgIENPTkZJUk1BVElPTl9SRVBPUlQsCi0gICAgICAgICJzaG9ydCIsICAgIFNIT1JUX1JFUE9SVCwKLSAgICAgICAgImRldGFpbGVkIiwgREVUQUlMRURfUkVQT1JULAotICAgICAgICAibm8iLCAgICAgICBOT19SRVBPUlQsCi0KLSAgICAgICAgSU5WX1JFUE9SVF9MRVZFTAotICAgICAgICApOwotCi0gICAgc3RkOjpzdHJpbmcgdmFsOwotICAgIGluID4+IHZhbDsKLQotICAgIHJsID0gcmVwb3J0X2xldmVsX25hbWVbdmFsXTsKLSAgICBORE5CT09TVF9URVNUX1NFVFVQX0FTU0VSVCggcmwgIT0gSU5WX1JFUE9SVF9MRVZFTCwgImludmFsaWQgcmVwb3J0IGxldmVsICIgKyB2YWwgKTsKLQotICAgIHJldHVybiBpbjsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotc3RkOjppc3RyZWFtJgotb3BlcmF0b3I+Piggc3RkOjppc3RyZWFtJiBpbiwgdW5pdF90ZXN0OjpvdXRwdXRfZm9ybWF0JiBvZiApCi17Ci0gICAgZml4ZWRfbWFwcGluZzxjb25zdF9zdHJpbmcsdW5pdF90ZXN0OjpvdXRwdXRfZm9ybWF0LGNhc2VfaW5zX2xlc3M8Y2hhciBjb25zdD4gPiBvdXRwdXRfZm9ybWF0X25hbWUgKAotICAgICAgICAiSFJGIiwgdW5pdF90ZXN0OjpDTEYsCi0gICAgICAgICJDTEYiLCB1bml0X3Rlc3Q6OkNMRiwKLSAgICAgICAgIlhNTCIsIHVuaXRfdGVzdDo6WE1MLAotCi0gICAgICAgIHVuaXRfdGVzdDo6SU5WX09GCi0gICAgICAgICk7Ci0KLSAgICBzdGQ6OnN0cmluZyB2YWw7Ci0gICAgaW4gPj4gdmFsOwotCi0gICAgb2YgPSBvdXRwdXRfZm9ybWF0X25hbWVbdmFsXTsKLSAgICBORE5CT09TVF9URVNUX1NFVFVQX0FTU0VSVCggb2YgIT0gdW5pdF90ZXN0OjpJTlZfT0YsICJpbnZhbGlkIG91dHB1dCBmb3JtYXQgIiArIHZhbCApOwotCi0gICAgcmV0dXJuIGluOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgIHJ1bnRpbWVfY29uZmlnICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLW5hbWVzcGFjZSBydW50aW1lX2NvbmZpZyB7Ci0KLW5hbWVzcGFjZSB7Ci0KLS8vIGZyYW1ld29yayBwYXJhbWV0ZXJzIGFuZCBjb3JyZXNwb25kaW5nIGNvbW1hbmQtbGluZSBhcmd1bWVudHMKLXN0ZDo6c3RyaW5nIEFVVE9fU1RBUlRfREJHICAgID0gImF1dG9fc3RhcnRfZGJnIjsKLXN0ZDo6c3RyaW5nIEJSRUFLX0VYRUNfUEFUSCAgID0gImJyZWFrX2V4ZWNfcGF0aCI7Ci1zdGQ6OnN0cmluZyBCVUlMRF9JTkZPICAgICAgICA9ICJidWlsZF9pbmZvIjsKLXN0ZDo6c3RyaW5nIENBVENIX1NZU19FUlJPUlMgID0gImNhdGNoX3N5c3RlbV9lcnJvcnMiOwotc3RkOjpzdHJpbmcgREVURUNUX0ZQX0VYQ0VQVCAgPSAiZGV0ZWN0X2ZwX2V4Y2VwdGlvbnMiOwotc3RkOjpzdHJpbmcgREVURUNUX01FTV9MRUFLUyAgPSAiZGV0ZWN0X21lbW9yeV9sZWFrcyI7Ci1zdGQ6OnN0cmluZyBMT0dfRk9STUFUICAgICAgICA9ICJsb2dfZm9ybWF0IjsKLXN0ZDo6c3RyaW5nIExPR19MRVZFTCAgICAgICAgID0gImxvZ19sZXZlbCI7Ci1zdGQ6OnN0cmluZyBMT0dfU0lOSyAgICAgICAgICA9ICJsb2dfc2luayI7Ci1zdGQ6OnN0cmluZyBPVVRQVVRfRk9STUFUICAgICA9ICJvdXRwdXRfZm9ybWF0IjsKLXN0ZDo6c3RyaW5nIFJBTkRPTV9TRUVEICAgICAgID0gInJhbmRvbSI7Ci1zdGQ6OnN0cmluZyBSRVBPUlRfRk9STUFUICAgICA9ICJyZXBvcnRfZm9ybWF0IjsKLXN0ZDo6c3RyaW5nIFJFUE9SVF9MRVZFTCAgICAgID0gInJlcG9ydF9sZXZlbCI7Ci1zdGQ6OnN0cmluZyBSRVBPUlRfU0lOSyAgICAgICA9ICJyZXBvcnRfc2luayI7Ci1zdGQ6OnN0cmluZyBSRVNVTFRfQ09ERSAgICAgICA9ICJyZXN1bHRfY29kZSI7Ci1zdGQ6OnN0cmluZyBURVNUU19UT19SVU4gICAgICA9ICJydW5fdGVzdCI7Ci1zdGQ6OnN0cmluZyBTQVZFX1RFU1RfUEFUVEVSTiA9ICJzYXZlX3BhdHRlcm4iOwotc3RkOjpzdHJpbmcgU0hPV19QUk9HUkVTUyAgICAgPSAic2hvd19wcm9ncmVzcyI7Ci1zdGQ6OnN0cmluZyBVU0VfQUxUX1NUQUNLICAgICA9ICJ1c2VfYWx0X3N0YWNrIjsKLQotZml4ZWRfbWFwcGluZzxjb25zdF9zdHJpbmcsY29uc3Rfc3RyaW5nPiBwYXJhbWV0ZXJfMl9lbnZfdmFyKAotICAgIEFVVE9fU1RBUlRfREJHICAgICwgIk5ETkJPT1NUX1RFU1RfQVVUT19TVEFSVF9EQkciLAotICAgIEJSRUFLX0VYRUNfUEFUSCAgICwgIk5ETkJPT1NUX1RFU1RfQlJFQUtfRVhFQ19QQVRIIiwKLSAgICBCVUlMRF9JTkZPICAgICAgICAsICJORE5CT09TVF9URVNUX0JVSUxEX0lORk8iLAotICAgIENBVENIX1NZU19FUlJPUlMgICwgIk5ETkJPT1NUX1RFU1RfQ0FUQ0hfU1lTVEVNX0VSUk9SUyIsCi0gICAgREVURUNUX0ZQX0VYQ0VQVCAgLCAiTkROQk9PU1RfVEVTVF9ERVRFQ1RfRlBfRVhDRVBUSU9OUyIsCi0gICAgREVURUNUX01FTV9MRUFLUyAgLCAiTkROQk9PU1RfVEVTVF9ERVRFQ1RfTUVNT1JZX0xFQUsiLAotICAgIExPR19GT1JNQVQgICAgICAgICwgIk5ETkJPT1NUX1RFU1RfTE9HX0ZPUk1BVCIsCi0gICAgTE9HX0xFVkVMICAgICAgICAgLCAiTkROQk9PU1RfVEVTVF9MT0dfTEVWRUwiLAotICAgIExPR19TSU5LICAgICAgICAgICwgIk5ETkJPT1NUX1RFU1RfTE9HX1NJTksiLAotICAgIE9VVFBVVF9GT1JNQVQgICAgICwgIk5ETkJPT1NUX1RFU1RfT1VUUFVUX0ZPUk1BVCIsCi0gICAgUkFORE9NX1NFRUQgICAgICAgLCAiTkROQk9PU1RfVEVTVF9SQU5ET00iLAotICAgIFJFUE9SVF9GT1JNQVQgICAgICwgIk5ETkJPT1NUX1RFU1RfUkVQT1JUX0ZPUk1BVCIsCi0gICAgUkVQT1JUX0xFVkVMICAgICAgLCAiTkROQk9PU1RfVEVTVF9SRVBPUlRfTEVWRUwiLAotICAgIFJFUE9SVF9TSU5LICAgICAgICwgIk5ETkJPT1NUX1RFU1RfUkVQT1JUX1NJTksiLAotICAgIFJFU1VMVF9DT0RFICAgICAgICwgIk5ETkJPT1NUX1RFU1RfUkVTVUxUX0NPREUiLAotICAgIFRFU1RTX1RPX1JVTiAgICAgICwgIk5ETkJPT1NUX1RFU1RTX1RPX1JVTiIsCi0gICAgU0FWRV9URVNUX1BBVFRFUk4gLCAiTkROQk9PU1RfVEVTVF9TQVZFX1BBVFRFUk4iLAotICAgIFNIT1dfUFJPR1JFU1MgICAgICwgIk5ETkJPT1NUX1RFU1RfU0hPV19QUk9HUkVTUyIsCi0gICAgVVNFX0FMVF9TVEFDSyAgICAgLCAiTkROQk9PU1RfVEVTVF9VU0VfQUxUX1NUQUNLIiwKLQotICAgICIiCi0pOwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyBzdG9yYWdlIGZvciB0aGUgQ0xBcwotY2xhOjpwYXJzZXIgICAgIHNfY2xhX3BhcnNlcjsKLXN0ZDo6c3RyaW5nICAgICBzX2VtcHR5OwotCi1vdXRwdXRfZm9ybWF0ICAgc19yZXBvcnRfZm9ybWF0Owotb3V0cHV0X2Zvcm1hdCAgIHNfbG9nX2Zvcm1hdDsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLVQKLXJldHJpZXZlX3BhcmFtZXRlciggY29uc3Rfc3RyaW5nIHBhcmFtZXRlcl9uYW1lLCBjbGE6OnBhcnNlciBjb25zdCYgc19jbGFfcGFyc2VyLCBUIGNvbnN0JiBkZWZhdWx0X3ZhbHVlID0gVCgpLCBUIGNvbnN0JiBvcHRpb25hbF92YWx1ZSA9IFQoKSApCi17Ci0gICAgcnQ6OmNvbnN0X2FyZ3VtZW50X3B0ciBhcmcgPSBzX2NsYV9wYXJzZXJbcGFyYW1ldGVyX25hbWVdOwotICAgIGlmKCBhcmcgKSB7Ci0gICAgICAgIGlmKCBydHRpOjp0eXBlX2lkPFQ+KCkgPT0gcnR0aTo6dHlwZV9pZDxib29sPigpIHx8Ci0gICAgICAgICAgICAhc3RhdGljX2Nhc3Q8Y2xhOjpwYXJhbWV0ZXIgY29uc3QmPiggYXJnLT5wX2Zvcm1hbF9wYXJhbWV0ZXIuZ2V0KCkgKS5wX29wdGlvbmFsX3ZhbHVlICkKLSAgICAgICAgICAgIHJldHVybiBzX2NsYV9wYXJzZXIuZ2V0PFQ+KCBwYXJhbWV0ZXJfbmFtZSApOwotCi0gICAgICAgIG9wdGlvbmFsPFQ+IHZhbCA9IHNfY2xhX3BhcnNlci5nZXQ8b3B0aW9uYWw8VD4gPiggcGFyYW1ldGVyX25hbWUgKTsKLSAgICAgICAgaWYoIHZhbCApCi0gICAgICAgICAgICByZXR1cm4gKnZhbDsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIG9wdGlvbmFsX3ZhbHVlOwotICAgIH0KLQotICAgIG5kbmJvb3N0OjpvcHRpb25hbDxUPiB2OwotCi0jaWZuZGVmIFVOREVSX0NFCi0gICAgZW52OjpnZXQoIHBhcmFtZXRlcl8yX2Vudl92YXJbcGFyYW1ldGVyX25hbWVdLCB2ICk7Ci0jZW5kaWYKLQotICAgIGlmKCB2ICkKLSAgICAgICAgcmV0dXJuICp2OwotICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIGRlZmF1bHRfdmFsdWU7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbG9jYWwgbmFtZXNwYWNlIAotCi12b2lkCi1pbml0KCBpbnQmIGFyZ2MsIGNoYXIqKiBhcmd2ICkKLXsKLSAgICB1c2luZyBuYW1lc3BhY2UgY2xhOwotCi0gICAgdHJ5IHsKLSAgICAgICAgc19jbGFfcGFyc2VyIC0gY2xhOjppZ25vcmVfbWlzbWF0Y2gKLSAgICAgICAgICA8PCBjbGE6OmR1YWxfbmFtZV9wYXJhbWV0ZXI8Ym9vbD4oIEFVVE9fU1RBUlRfREJHICsgInxkIiApCi0gICAgICAgICAgICAtIChjbGE6OnByZWZpeCA9ICItLXwtIixjbGE6OnNlcGFyYXRvciA9ICI9fCAiLGNsYTo6Z3Vlc3NfbmFtZSxjbGE6Om9wdGlvbmFsLAotICAgICAgICAgICAgICAgY2xhOjpkZXNjcmlwdGlvbiA9ICJBdXRvbWF0aWNhbGx5IHN0YXJ0cyBkZWJ1Z2dlciBpZiBzeXN0ZW0gbGV2ZWwgZXJyb3IgKHNpZ25hbCkgb2NjdXJzIikKLSAgICAgICAgICA8PCBjbGE6Om5hbWVkX3BhcmFtZXRlcjxzdGQ6OnN0cmluZz4oIEJSRUFLX0VYRUNfUEFUSCApCi0gICAgICAgICAgICAtIChjbGE6OnByZWZpeCA9ICItLSIsY2xhOjpzZXBhcmF0b3IgPSAiPSIsY2xhOjpndWVzc19uYW1lLGNsYTo6b3B0aW9uYWwsCi0gICAgICAgICAgICAgICBjbGE6OmRlc2NyaXB0aW9uID0gIkZvciB0aGUgZXhjZXB0aW9uIHNhZmV0eSB0ZXN0aW5nIGFsbG93cyB0byBicmVhayBhdCBzcGVjaWZpYyBleGVjdXRpb24gcGF0aCIpCi0gICAgICAgICAgPDwgY2xhOjpkdWFsX25hbWVfcGFyYW1ldGVyPGJvb2w+KCBCVUlMRF9JTkZPICsgInxpIiApCi0gICAgICAgICAgICAtIChjbGE6OnByZWZpeCA9ICItLXwtIixjbGE6OnNlcGFyYXRvciA9ICI9fCAiLGNsYTo6Z3Vlc3NfbmFtZSxjbGE6Om9wdGlvbmFsLAotICAgICAgICAgICAgICAgY2xhOjpkZXNjcmlwdGlvbiA9ICJTaG93cyBsaWJyYXJ5IGJ1aWxkIGluZm9ybWF0aW9uIiApCi0gICAgICAgICAgPDwgY2xhOjpkdWFsX25hbWVfcGFyYW1ldGVyPGJvb2w+KCBDQVRDSF9TWVNfRVJST1JTICsgInxzIiApCi0gICAgICAgICAgICAtIChjbGE6OnByZWZpeCA9ICItLXwtIixjbGE6OnNlcGFyYXRvciA9ICI9fCAiLGNsYTo6Z3Vlc3NfbmFtZSxjbGE6Om9wdGlvbmFsLAotICAgICAgICAgICAgICAgY2xhOjpkZXNjcmlwdGlvbiA9ICJBbGxvd3MgdG8gc3dpdGNoIGJldHdlZW4gY2F0Y2hpbmcgYW5kIGlnbm9yaW5nIHN5c3RlbSBlcnJvcnMgKHNpZ25hbHMpIikKLSAgICAgICAgICA8PCBjbGE6Om5hbWVkX3BhcmFtZXRlcjxib29sPiggREVURUNUX0ZQX0VYQ0VQVCApCi0gICAgICAgICAgICAtIChjbGE6OnByZWZpeCA9ICItLSIsY2xhOjpzZXBhcmF0b3IgPSAiPSIsY2xhOjpndWVzc19uYW1lLGNsYTo6b3B0aW9uYWwsCi0gICAgICAgICAgICAgICBjbGE6OmRlc2NyaXB0aW9uID0gIkFsbG93cyB0byBzd2l0Y2ggYmV0d2VlbiBjYXRjaGluZyBhbmQgaWdub3JpbmcgZmxvYXRpbmcgcG9pbnQgZXhjZXB0aW9ucyIpCi0gICAgICAgICAgPDwgY2xhOjpuYW1lZF9wYXJhbWV0ZXI8bG9uZz4oIERFVEVDVF9NRU1fTEVBS1MgKQotICAgICAgICAgICAgLSAoY2xhOjpwcmVmaXggPSAiLS0iLGNsYTo6c2VwYXJhdG9yID0gIj0iLGNsYTo6Z3Vlc3NfbmFtZSxjbGE6Om9wdGlvbmFsLAotICAgICAgICAgICAgICAgY2xhOjpkZXNjcmlwdGlvbiA9ICJBbGxvd3MgdG8gc3dpdGNoIGJldHdlZW4gY2F0Y2hpbmcgYW5kIGlnbm9yaW5nIG1lbW9yeSBsZWFrcyIpCi0gICAgICAgICAgPDwgY2xhOjpkdWFsX25hbWVfcGFyYW1ldGVyPHVuaXRfdGVzdDo6b3V0cHV0X2Zvcm1hdD4oIExPR19GT1JNQVQgKyAifGYiICkKLSAgICAgICAgICAgIC0gKGNsYTo6cHJlZml4ID0gIi0tfC0iLGNsYTo6c2VwYXJhdG9yID0gIj18ICIsY2xhOjpndWVzc19uYW1lLGNsYTo6b3B0aW9uYWwsCi0gICAgICAgICAgICAgICBjbGE6OmRlc2NyaXB0aW9uID0gIlNwZWNpZmllcyBsb2cgZm9ybWF0IikKLSAgICAgICAgICA8PCBjbGE6OmR1YWxfbmFtZV9wYXJhbWV0ZXI8dW5pdF90ZXN0Ojpsb2dfbGV2ZWw+KCBMT0dfTEVWRUwgKyAifGwiICkKLSAgICAgICAgICAgIC0gKGNsYTo6cHJlZml4ID0gIi0tfC0iLGNsYTo6c2VwYXJhdG9yID0gIj18ICIsY2xhOjpndWVzc19uYW1lLGNsYTo6b3B0aW9uYWwsCi0gICAgICAgICAgICAgICBjbGE6OmRlc2NyaXB0aW9uID0gIlNwZWNpZmllcyBsb2cgbGV2ZWwiKQotICAgICAgICAgIDw8IGNsYTo6ZHVhbF9uYW1lX3BhcmFtZXRlcjxzdGQ6OnN0cmluZz4oIExPR19TSU5LICsgInxrIiApCi0gICAgICAgICAgICAtIChjbGE6OnByZWZpeCA9ICItLXwtIixjbGE6OnNlcGFyYXRvciA9ICI9fCAiLGNsYTo6Z3Vlc3NfbmFtZSxjbGE6Om9wdGlvbmFsLAotICAgICAgICAgICAgICAgY2xhOjpkZXNjcmlwdGlvbiA9ICJTcGVjaWZpZXMgbG9nIHNpbms6c3Rkb3V0KGRlZmF1bHQpLHN0ZGVyciBvciBmaWxlIG5hbWUiKQotICAgICAgICAgIDw8IGNsYTo6ZHVhbF9uYW1lX3BhcmFtZXRlcjx1bml0X3Rlc3Q6Om91dHB1dF9mb3JtYXQ+KCBPVVRQVVRfRk9STUFUICsgInxvIiApCi0gICAgICAgICAgICAtIChjbGE6OnByZWZpeCA9ICItLXwtIixjbGE6OnNlcGFyYXRvciA9ICI9fCAiLGNsYTo6Z3Vlc3NfbmFtZSxjbGE6Om9wdGlvbmFsLAotICAgICAgICAgICAgICAgY2xhOjpkZXNjcmlwdGlvbiA9ICJTcGVjaWZpZXMgb3V0cHV0IGZvcm1hdCAoYm90aCBsb2cgYW5kIHJlcG9ydCkiKQotICAgICAgICAgIDw8IGNsYTo6ZHVhbF9uYW1lX3BhcmFtZXRlcjxpbnQ+KCBSQU5ET01fU0VFRCArICJ8YSIgKQotICAgICAgICAgICAgLSAoY2xhOjpwcmVmaXggPSAiLS18LSIsY2xhOjpzZXBhcmF0b3IgPSAiPXwgIixjbGE6Omd1ZXNzX25hbWUsY2xhOjpvcHRpb25hbCxjbGE6Om9wdGlvbmFsX3ZhbHVlLAotICAgICAgICAgICAgICAgY2xhOjpkZXNjcmlwdGlvbiA9ICJBbGxvd3MgdG8gc3dpdGNoIGJldHdlZW4gc2VxdWVudGlhbCBhbmQgcmFuZG9tIG9yZGVyIG9mIHRlc3QgdW5pdHMgZXhlY3V0aW9uLlxuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPcHRpb25hbGx5IGFsbG93cyB0byBzcGVjaWZ5IGNvbmNyZXRlIHNlZWQgZm9yIHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yIikKLSAgICAgICAgICA8PCBjbGE6OmR1YWxfbmFtZV9wYXJhbWV0ZXI8dW5pdF90ZXN0OjpvdXRwdXRfZm9ybWF0PiggUkVQT1JUX0ZPUk1BVCArICJ8bSIgKQotICAgICAgICAgICAgLSAoY2xhOjpwcmVmaXggPSAiLS18LSIsY2xhOjpzZXBhcmF0b3IgPSAiPXwgIixjbGE6Omd1ZXNzX25hbWUsY2xhOjpvcHRpb25hbCwKLSAgICAgICAgICAgICAgIGNsYTo6ZGVzY3JpcHRpb24gPSAiU3BlY2lmaWVzIHJlcG9ydCBmb3JtYXQiKQotICAgICAgICAgIDw8IGNsYTo6ZHVhbF9uYW1lX3BhcmFtZXRlcjx1bml0X3Rlc3Q6OnJlcG9ydF9sZXZlbD4oUkVQT1JUX0xFVkVMICsgInxyIikKLSAgICAgICAgICAgIC0gKGNsYTo6cHJlZml4ID0gIi0tfC0iLGNsYTo6c2VwYXJhdG9yID0gIj18ICIsY2xhOjpndWVzc19uYW1lLGNsYTo6b3B0aW9uYWwsCi0gICAgICAgICAgICAgICBjbGE6OmRlc2NyaXB0aW9uID0gIlNwZWNpZmllcyByZXBvcnQgbGV2ZWwiKQotICAgICAgICAgIDw8IGNsYTo6ZHVhbF9uYW1lX3BhcmFtZXRlcjxzdGQ6OnN0cmluZz4oIFJFUE9SVF9TSU5LICsgInxlIiApCi0gICAgICAgICAgICAtIChjbGE6OnByZWZpeCA9ICItLXwtIixjbGE6OnNlcGFyYXRvciA9ICI9fCAiLGNsYTo6Z3Vlc3NfbmFtZSxjbGE6Om9wdGlvbmFsLAotICAgICAgICAgICAgICAgY2xhOjpkZXNjcmlwdGlvbiA9ICJTcGVjaWZpZXMgcmVwb3J0IHNpbms6c3RkZXJyKGRlZmF1bHQpLHN0ZG91dCBvciBmaWxlIG5hbWUiKQotICAgICAgICAgIDw8IGNsYTo6ZHVhbF9uYW1lX3BhcmFtZXRlcjxib29sPiggUkVTVUxUX0NPREUgKyAifGMiICkKLSAgICAgICAgICAgIC0gKGNsYTo6cHJlZml4ID0gIi0tfC0iLGNsYTo6c2VwYXJhdG9yID0gIj18ICIsY2xhOjpndWVzc19uYW1lLGNsYTo6b3B0aW9uYWwsCi0gICAgICAgICAgICAgICBjbGE6OmRlc2NyaXB0aW9uID0gIkFsbG93cyB0byBkaXNhYmxlIHRlc3QgbW9kdWxlcydzIHJlc3VsdCBjb2RlIGdlbmVyYXRpb24iKQotICAgICAgICAgIDw8IGNsYTo6ZHVhbF9uYW1lX3BhcmFtZXRlcjxzdGQ6OnN0cmluZz4oIFRFU1RTX1RPX1JVTiArICJ8dCIgKQotICAgICAgICAgICAgLSAoY2xhOjpwcmVmaXggPSAiLS18LSIsY2xhOjpzZXBhcmF0b3IgPSAiPXwgIixjbGE6Omd1ZXNzX25hbWUsY2xhOjpvcHRpb25hbCwKLSAgICAgICAgICAgICAgIGNsYTo6ZGVzY3JpcHRpb24gPSAiQWxsb3dzIHRvIGZpbHRlciB3aGljaCB0ZXN0IHVuaXRzIHRvIHJ1biIpCi0gICAgICAgICAgPDwgY2xhOjpuYW1lZF9wYXJhbWV0ZXI8Ym9vbD4oIFNBVkVfVEVTVF9QQVRURVJOICkKLSAgICAgICAgICAgIC0gKGNsYTo6cHJlZml4ID0gIi0tIixjbGE6OnNlcGFyYXRvciA9ICI9IixjbGE6Omd1ZXNzX25hbWUsY2xhOjpvcHRpb25hbCwKLSAgICAgICAgICAgICAgIGNsYTo6ZGVzY3JpcHRpb24gPSAiQWxsb3dzIHRvIHN3aXRjaCBiZXR3ZWVuIHNhdmluZyBhbmQgbWF0Y2hpbmcgYWdhaW5zdCB0ZXN0IHBhdHRlcm4gZmlsZSIpCi0gICAgICAgICAgPDwgY2xhOjpkdWFsX25hbWVfcGFyYW1ldGVyPGJvb2w+KCBTSE9XX1BST0dSRVNTICsgInxwIiApCi0gICAgICAgICAgICAtIChjbGE6OnByZWZpeCA9ICItLXwtIixjbGE6OnNlcGFyYXRvciA9ICI9fCAiLGNsYTo6Z3Vlc3NfbmFtZSxjbGE6Om9wdGlvbmFsLAotICAgICAgICAgICAgICAgY2xhOjpkZXNjcmlwdGlvbiA9ICJUdXJucyBvbiBwcm9ncmVzcyBkaXNwbGF5IikKLSAgICAgICAgICA8PCBjbGE6Om5hbWVkX3BhcmFtZXRlcjxib29sPiggVVNFX0FMVF9TVEFDSyApCi0gICAgICAgICAgICAtIChjbGE6OnByZWZpeCA9ICItLSIsY2xhOjpzZXBhcmF0b3IgPSAiPSIsY2xhOjpndWVzc19uYW1lLGNsYTo6b3B0aW9uYWwsCi0gICAgICAgICAgICAgICBjbGE6OmRlc2NyaXB0aW9uID0gIlR1cm5zIG9uL29mZiB1c2FnZSBvZiBhbiBhbHRlcm5hdGl2ZSBzdGFjayBmb3Igc2lnbmFsIGhhbmRsaW5nIikKLQotICAgICAgICAgIDw8IGNsYTo6ZHVhbF9uYW1lX3BhcmFtZXRlcjxib29sPiggImhlbHB8PyIgKQotICAgICAgICAgICAgLSAoY2xhOjpwcmVmaXggPSAiLS18LSIsY2xhOjpzZXBhcmF0b3IgPSAiPSIsY2xhOjpndWVzc19uYW1lLGNsYTo6b3B0aW9uYWwsCi0gICAgICAgICAgICAgICBjbGE6OmRlc2NyaXB0aW9uID0gInRoaXMgaGVscCBtZXNzYWdlIikKLSAgICAgICAgICAgIDsKLQotICAgICAgICBzX2NsYV9wYXJzZXIucGFyc2UoIGFyZ2MsIGFyZ3YgKTsKLQotICAgICAgICBpZiggc19jbGFfcGFyc2VyWyJoZWxwIl0gKSB7Ci0gICAgICAgICAgICBzX2NsYV9wYXJzZXIuaGVscCggc3RkOjpjb3V0ICk7Ci0gICAgICAgICAgICB0aHJvdyBmcmFtZXdvcms6Om5vdGhpbmdfdG9fdGVzdCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgc19yZXBvcnRfZm9ybWF0ICAgICA9IHJldHJpZXZlX3BhcmFtZXRlciggUkVQT1JUX0ZPUk1BVCwgc19jbGFfcGFyc2VyLCB1bml0X3Rlc3Q6OkNMRiApOwotICAgICAgICBzX2xvZ19mb3JtYXQgICAgICAgID0gcmV0cmlldmVfcGFyYW1ldGVyKCBMT0dfRk9STUFULCBzX2NsYV9wYXJzZXIsIHVuaXRfdGVzdDo6Q0xGICk7Ci0KLSAgICAgICAgdW5pdF90ZXN0OjpvdXRwdXRfZm9ybWF0IG9mID0gcmV0cmlldmVfcGFyYW1ldGVyKCBPVVRQVVRfRk9STUFULCBzX2NsYV9wYXJzZXIsIHVuaXRfdGVzdDo6SU5WX09GICk7Ci0KLSAgICAgICAgaWYoIG9mICE9IHVuaXRfdGVzdDo6SU5WX09GICkKLSAgICAgICAgICAgIHNfcmVwb3J0X2Zvcm1hdCA9IHNfbG9nX2Zvcm1hdCA9IG9mOwotICAgIH0KLSAgICBjYXRjaCggcnQ6OmxvZ2ljX2Vycm9yIGNvbnN0JiBleCApIHsKLSAgICAgICAgc3RkOjpvc3RyaW5nc3RyZWFtIGVycjsKLSAgICAgICAgCi0gICAgICAgIGVyciA8PCAiRmFpbCB0byBwcm9jZXNzIHJ1bnRpbWUgcGFyYW1ldGVyczogIiA8PCBleC5tc2coKSA8PCBzdGQ6OmVuZGw7Ci0gICAgICAgIHNfY2xhX3BhcnNlci51c2FnZSggZXJyICk7Ci0KLSAgICAgICAgdGhyb3cgZnJhbWV3b3JrOjpzZXR1cF9lcnJvciggZXJyLnN0cigpICk7Ci0gICAgfQotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi11bml0X3Rlc3Q6OmxvZ19sZXZlbAotbG9nX2xldmVsKCkKLXsKLSAgICByZXR1cm4gcmV0cmlldmVfcGFyYW1ldGVyKCBMT0dfTEVWRUwsIHNfY2xhX3BhcnNlciwgdW5pdF90ZXN0Ojpsb2dfYWxsX2Vycm9ycyApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1ib29sCi1ub19yZXN1bHRfY29kZSgpCi17Ci0gICAgcmV0dXJuICFyZXRyaWV2ZV9wYXJhbWV0ZXIoIFJFU1VMVF9DT0RFLCBzX2NsYV9wYXJzZXIsIHRydWUgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdW5pdF90ZXN0OjpyZXBvcnRfbGV2ZWwKLXJlcG9ydF9sZXZlbCgpCi17Ci0gICAgcmV0dXJuIHJldHJpZXZlX3BhcmFtZXRlciggUkVQT1JUX0xFVkVMLCBzX2NsYV9wYXJzZXIsIHVuaXRfdGVzdDo6Q09ORklSTUFUSU9OX1JFUE9SVCApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1jb25zdF9zdHJpbmcKLXRlc3RfdG9fcnVuKCkKLXsKLSAgICBzdGF0aWMgc3RkOjpzdHJpbmcgc190ZXN0X3RvX3J1biA9IHJldHJpZXZlX3BhcmFtZXRlciggVEVTVFNfVE9fUlVOLCBzX2NsYV9wYXJzZXIsIHNfZW1wdHkgKTsKLQotICAgIHJldHVybiBzX3Rlc3RfdG9fcnVuOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1jb25zdF9zdHJpbmcKLWJyZWFrX2V4ZWNfcGF0aCgpCi17Ci0gICAgc3RhdGljIHN0ZDo6c3RyaW5nIHNfYnJlYWtfZXhlY19wYXRoID0gcmV0cmlldmVfcGFyYW1ldGVyKCBCUkVBS19FWEVDX1BBVEgsIHNfY2xhX3BhcnNlciwgc19lbXB0eSApOwotCi0gICAgcmV0dXJuIHNfYnJlYWtfZXhlY19wYXRoOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1ib29sCi1zYXZlX3BhdHRlcm4oKQotewotICAgIHJldHVybiByZXRyaWV2ZV9wYXJhbWV0ZXIoIFNBVkVfVEVTVF9QQVRURVJOLCBzX2NsYV9wYXJzZXIsIGZhbHNlICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLWJvb2wKLXNob3dfcHJvZ3Jlc3MoKQotewotICAgIHJldHVybiByZXRyaWV2ZV9wYXJhbWV0ZXIoIFNIT1dfUFJPR1JFU1MsIHNfY2xhX3BhcnNlciwgZmFsc2UgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotYm9vbAotc2hvd19idWlsZF9pbmZvKCkKLXsKLSAgICByZXR1cm4gcmV0cmlldmVfcGFyYW1ldGVyKCBCVUlMRF9JTkZPLCBzX2NsYV9wYXJzZXIsIGZhbHNlICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLWJvb2wKLWNhdGNoX3N5c19lcnJvcnMoKQotewotICAgIHJldHVybiByZXRyaWV2ZV9wYXJhbWV0ZXIoIENBVENIX1NZU19FUlJPUlMsIHNfY2xhX3BhcnNlciwgCi0jaWZkZWYgTkROQk9PU1RfVEVTVF9ERUZBVUxUU19UT19DT1JFX0RVTVAKLSAgICAgICAgZmFsc2UKLSNlbHNlCi0gICAgICAgIHRydWUgCi0jZW5kaWYKLSAgICAgICAgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotYm9vbAotYXV0b19zdGFydF9kYmcoKQotewotICAgIC8vICEhIHNldCBkZWJ1Z2dlciBhcyBhbiBvcHRpb24KLSAgICByZXR1cm4gcmV0cmlldmVfcGFyYW1ldGVyKCBBVVRPX1NUQVJUX0RCRywgc19jbGFfcGFyc2VyLCBmYWxzZSApOwotOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1ib29sCi11c2VfYWx0X3N0YWNrKCkKLXsKLSAgICByZXR1cm4gcmV0cmlldmVfcGFyYW1ldGVyKCBVU0VfQUxUX1NUQUNLLCBzX2NsYV9wYXJzZXIsIHRydWUgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotYm9vbAotZGV0ZWN0X2ZwX2V4Y2VwdGlvbnMoKQotewotICAgIHJldHVybiByZXRyaWV2ZV9wYXJhbWV0ZXIoIERFVEVDVF9GUF9FWENFUFQsIHNfY2xhX3BhcnNlciwgZmFsc2UgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotb3V0cHV0X2Zvcm1hdAotcmVwb3J0X2Zvcm1hdCgpCi17Ci0gICAgcmV0dXJuIHNfcmVwb3J0X2Zvcm1hdDsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotb3V0cHV0X2Zvcm1hdAotbG9nX2Zvcm1hdCgpCi17Ci0gICAgcmV0dXJuIHNfbG9nX2Zvcm1hdDsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotc3RkOjpvc3RyZWFtKgotcmVwb3J0X3NpbmsoKQotewotICAgIHN0ZDo6c3RyaW5nIHNpbmtfbmFtZSA9IHJldHJpZXZlX3BhcmFtZXRlciggUkVQT1JUX1NJTkssIHNfY2xhX3BhcnNlciwgc19lbXB0eSApOwotCi0gICAgaWYoIHNpbmtfbmFtZS5lbXB0eSgpIHx8IHNpbmtfbmFtZSA9PSAic3RkZXJyIiApCi0gICAgICAgIHJldHVybiAmc3RkOjpjZXJyOyAgICAKLSAgICAKLSAgICBpZiggc2lua19uYW1lID09ICJzdGRvdXQiICkKLSAgICAgICAgcmV0dXJuICZzdGQ6OmNvdXQ7Ci0KLSAgICBzdGF0aWMgc3RkOjpvZnN0cmVhbSBsb2dfZmlsZSggc2lua19uYW1lLmNfc3RyKCkgKTsKLSAgICByZXR1cm4gJmxvZ19maWxlOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1zdGQ6Om9zdHJlYW0qCi1sb2dfc2luaygpCi17Ci0gICAgc3RkOjpzdHJpbmcgc2lua19uYW1lID0gcmV0cmlldmVfcGFyYW1ldGVyKCBMT0dfU0lOSywgc19jbGFfcGFyc2VyLCBzX2VtcHR5ICk7Ci0KLSAgICBpZiggc2lua19uYW1lLmVtcHR5KCkgfHwgc2lua19uYW1lID09ICJzdGRvdXQiICkKLSAgICAgICAgcmV0dXJuICZzdGQ6OmNvdXQ7ICAgIAotCi0gICAgaWYoIHNpbmtfbmFtZSA9PSAic3RkZXJyIiApCi0gICAgICAgIHJldHVybiAmc3RkOjpjZXJyOyAgICAKLQotICAgIHN0YXRpYyBzdGQ6Om9mc3RyZWFtIHJlcG9ydF9maWxlKCBzaW5rX25hbWUuY19zdHIoKSApOwotICAgIHJldHVybiAmcmVwb3J0X2ZpbGU7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLWxvbmcKLWRldGVjdF9tZW1vcnlfbGVha3MoKQotewotICAgIHJldHVybiByZXRyaWV2ZV9wYXJhbWV0ZXIoIERFVEVDVF9NRU1fTEVBS1MsIHNfY2xhX3BhcnNlciwgc3RhdGljX2Nhc3Q8bG9uZz4oMSkgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotaW50Ci1yYW5kb21fc2VlZCgpCi17Ci0gICAgcmV0dXJuIHJldHJpZXZlX3BhcmFtZXRlciggUkFORE9NX1NFRUQsIHNfY2xhX3BhcnNlciwgMCwgMSApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSBydW50aW1lX2NvbmZpZwotCi19IC8vIG5hbWVzcGFjZSB1bml0X3Rlc3QKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX1VOSVRfVEVTVF9QQVJBTUVURVJTX0lQUF8wMTIyMDVHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL3VuaXRfdGVzdF9zdWl0ZS5pcHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC91bml0X3Rlc3Rfc3VpdGUuaXBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZWEzOTZlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL3VuaXRfdGVzdF9zdWl0ZS5pcHAKKysrIC9kZXYvbnVsbApAQCAtMSwzNDYgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTQ2MzMgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IHByaXZpZGVzIGNvcmUgaW1wbGVtZW50YXRpb24gZm9yIFVuaXQgVGVzdCBGcmFtZXdvcmsuCi0vLyAgICAgICAgICAgICAgICBFeHRlbnNpb25zIGNhbiBiZSBwcm92aWRlZCBpbiBzZXBhcmF0ZSBmaWxlcwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9VTklUX1RFU1RfU1VJVEVfSVBQXzAxMjIwNUdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX1VOSVRfVEVTVF9TVUlURV9JUFBfMDEyMjA1R0VSCi0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91bml0X3Rlc3Rfc3VpdGVfaW1wbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9mcmFtZXdvcmsuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvZm9yZWFjaC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9yZXN1bHRzX2NvbGxlY3Rvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvdW5pdF90ZXN0X3BhcmFtZXRlcnMuaHBwPgotCi0vLyBCb29zdAotI2luY2x1ZGUgPG5kbmJvb3N0L3RpbWVyLmhwcD4KLQotLy8gU1RMCi0jaW5jbHVkZSA8YWxnb3JpdGhtPgotI2luY2x1ZGUgPHZlY3Rvcj4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCA8IDB4NjAwKSAmJiBcCi0gICAgTkROQk9PU1RfV09SS0FST1VORChfU1RMUE9SVF9WRVJTSU9OLCA8PSAweDQ1MCkgXAotICAgIC8qKi8KLSAgICB1c2luZyBzdGQ6OnJhbmQ7IC8vIHJhbmQgaXMgaW4gc3RkIGFuZCByYW5kb21fc2h1ZmZsZSBpcyBpbiBfU1RMCi0jZW5kaWYKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIHVuaXRfdGVzdCB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgICB0ZXN0X3VuaXQgICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVzdF91bml0Ojp0ZXN0X3VuaXQoIGNvbnN0X3N0cmluZyBuYW1lLCB0ZXN0X3VuaXRfdHlwZSB0ICkKLTogcF90eXBlKCB0ICkKLSwgcF90eXBlX25hbWUoIHQgPT0gdHV0X2Nhc2UgPyAiY2FzZSIgOiAic3VpdGUiICkKLSwgcF9pZCggSU5WX1RFU1RfVU5JVF9JRCApCi0sIHBfbmFtZSggc3RkOjpzdHJpbmcoIG5hbWUuYmVnaW4oKSwgbmFtZS5zaXplKCkgKSApCi0sIHBfZW5hYmxlZCggdHJ1ZSApCi17Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlc3RfdW5pdDo6fnRlc3RfdW5pdCgpCi17Ci0gICAgZnJhbWV3b3JrOjpkZXJlZ2lzdGVyX3Rlc3RfdW5pdCggdGhpcyApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi10ZXN0X3VuaXQ6OmRlcGVuZHNfb24oIHRlc3RfdW5pdCogdHUgKQotewotICAgIG1fZGVwZW5kZW5jaWVzLnB1c2hfYmFjayggdHUtPnBfaWQgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotYm9vbAotdGVzdF91bml0OjpjaGVja19kZXBlbmRlbmNpZXMoKSBjb25zdAotewotICAgIE5ETkJPT1NUX1RFU1RfRk9SRUFDSCggdGVzdF91bml0X2lkLCB0dV9pZCwgbV9kZXBlbmRlbmNpZXMgKSB7Ci0gICAgICAgIGlmKCAhdW5pdF90ZXN0OjpyZXN1bHRzX2NvbGxlY3Rvci5yZXN1bHRzKCB0dV9pZCApLnBhc3NlZCgpICkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotdGVzdF91bml0OjppbmNyZWFzZV9leHBfZmFpbCggdW5zaWduZWQgbnVtICkKLXsKLSAgICBwX2V4cGVjdGVkX2ZhaWx1cmVzLnZhbHVlICs9IG51bTsKLQotICAgIGlmKCBwX3BhcmVudF9pZCAhPSAwICkKLSAgICAgICAgZnJhbWV3b3JrOjpnZXQ8dGVzdF9zdWl0ZT4oIHBfcGFyZW50X2lkICkuaW5jcmVhc2VfZXhwX2ZhaWwoIG51bSApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgICAgdGVzdF9jYXNlICAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlc3RfY2FzZTo6dGVzdF9jYXNlKCBjb25zdF9zdHJpbmcgbmFtZSwgY2FsbGJhY2swPD4gY29uc3QmIHRlc3RfZnVuYyApCi06IHRlc3RfdW5pdCggbmFtZSwgc3RhdGljX2Nhc3Q8dGVzdF91bml0X3R5cGU+KHR5cGUpICkKLSwgbV90ZXN0X2Z1bmMoIHRlc3RfZnVuYyApCi17Ci0gICAgIC8vICEhIHdlaXJkZXN0IE1TVkMgQlVHOyB0cnkgdG8gcmVtb3ZlIHRoaXMgc3RhdGVtZW50OyBsb29rcyBsaWtlIGl0IGVhdHMgZmlyc3QgdG9rZW4gb2YgbmV4dCBzdGF0ZW1lbnQgICAKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsPDEzMDApICAgCi0gICAgIDA7ICAgCi0jZW5kaWYgCi0gICAgZnJhbWV3b3JrOjpyZWdpc3Rlcl90ZXN0X3VuaXQoIHRoaXMgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICAgdGVzdF9zdWl0ZSAgICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZXN0X3N1aXRlOjp0ZXN0X3N1aXRlKCBjb25zdF9zdHJpbmcgbmFtZSApCi06IHRlc3RfdW5pdCggbmFtZSwgc3RhdGljX2Nhc3Q8dGVzdF91bml0X3R5cGU+KHR5cGUpICkKLXsKLSAgICBmcmFtZXdvcms6OnJlZ2lzdGVyX3Rlc3RfdW5pdCggdGhpcyApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi10ZXN0X3N1aXRlOjphZGQoIHRlc3RfdW5pdCogdHUsIGNvdW50ZXJfdCBleHBlY3RlZF9mYWlsdXJlcywgdW5zaWduZWQgdGltZW91dCApCi17Ci0gICAgaWYoIHRpbWVvdXQgIT0gMCApCi0gICAgICAgIHR1LT5wX3RpbWVvdXQudmFsdWUgPSB0aW1lb3V0OwotCi0gICAgbV9tZW1iZXJzLnB1c2hfYmFjayggdHUtPnBfaWQgKTsKLSAgICB0dS0+cF9wYXJlbnRfaWQudmFsdWUgPSBwX2lkOwotCi0gICAgaWYoIHR1LT5wX2V4cGVjdGVkX2ZhaWx1cmVzICkKLSAgICAgICAgaW5jcmVhc2VfZXhwX2ZhaWwoIHR1LT5wX2V4cGVjdGVkX2ZhaWx1cmVzICk7Ci0KLSAgICBpZiggZXhwZWN0ZWRfZmFpbHVyZXMgKQotICAgICAgICB0dS0+aW5jcmVhc2VfZXhwX2ZhaWwoIGV4cGVjdGVkX2ZhaWx1cmVzICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXRlc3Rfc3VpdGU6OmFkZCggdGVzdF91bml0X2dlbmVyYXRvciBjb25zdCYgZ2VuLCB1bnNpZ25lZCB0aW1lb3V0ICkKLXsKLSAgICB0ZXN0X3VuaXQqIHR1OwotICAgIHdoaWxlKCh0dSA9IGdlbi5uZXh0KCksIHR1KSkKLSAgICAgICAgYWRkKCB0dSwgMCwgdGltZW91dCApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi10ZXN0X3N1aXRlOjpyZW1vdmUoIHRlc3RfdW5pdF9pZCBpZCApCi17Ci0gICAgc3RkOjp2ZWN0b3I8dGVzdF91bml0X2lkPjo6aXRlcmF0b3IgaXQgPSBzdGQ6OmZpbmQoIG1fbWVtYmVycy5iZWdpbigpLCBtX21lbWJlcnMuZW5kKCksIGlkICk7Ci0KLSAgICBpZiggaXQgIT0gbV9tZW1iZXJzLmVuZCgpICkKLSAgICAgICAgbV9tZW1iZXJzLmVyYXNlKCBpdCApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZXN0X3VuaXRfaWQKLXRlc3Rfc3VpdGU6OmdldCggY29uc3Rfc3RyaW5nIHR1X25hbWUgKSBjb25zdAotewotICAgIE5ETkJPT1NUX1RFU1RfRk9SRUFDSCggdGVzdF91bml0X2lkLCBpZCwgbV9tZW1iZXJzICkgewotICAgICAgICBpZiggdHVfbmFtZSA9PSBmcmFtZXdvcms6OmdldCggaWQsIHV0X2RldGFpbDo6dGVzdF9pZF8yX3VuaXRfdHlwZSggaWQgKSApLnBfbmFtZS5nZXQoKSApCi0gICAgICAgICAgICByZXR1cm4gaWQ7Ci0gICAgfQotCi0gICAgcmV0dXJuIElOVl9URVNUX1VOSVRfSUQ7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgIHRyYXZlcnNlX3Rlc3RfdHJlZSAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdm9pZAotdHJhdmVyc2VfdGVzdF90cmVlKCB0ZXN0X2Nhc2UgY29uc3QmIHRjLCB0ZXN0X3RyZWVfdmlzaXRvciYgViApCi17Ci0gICAgaWYoIHRjLnBfZW5hYmxlZCApCi0gICAgVi52aXNpdCggdGMgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAotdHJhdmVyc2VfdGVzdF90cmVlKCB0ZXN0X3N1aXRlIGNvbnN0JiBzdWl0ZSwgdGVzdF90cmVlX3Zpc2l0b3ImIFYgKQotewotICAgIGlmKCAhc3VpdGUucF9lbmFibGVkIHx8ICFWLnRlc3Rfc3VpdGVfc3RhcnQoIHN1aXRlICkgKQotICAgICAgICByZXR1cm47Ci0KLSAgICB0cnkgewotICAgICAgICBpZiggcnVudGltZV9jb25maWc6OnJhbmRvbV9zZWVkKCkgPT0gMCApIHsKLSAgICAgICAgICAgIE5ETkJPT1NUX1RFU1RfRk9SRUFDSCggdGVzdF91bml0X2lkLCBpZCwgc3VpdGUubV9tZW1iZXJzICkKLSAgICAgICAgICAgICAgICB0cmF2ZXJzZV90ZXN0X3RyZWUoIGlkLCBWICk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBzdGQ6OnZlY3Rvcjx0ZXN0X3VuaXRfaWQ+IG1lbWJlcnMoIHN1aXRlLm1fbWVtYmVycyApOwotICAgICAgICAgICAgc3RkOjpyYW5kb21fc2h1ZmZsZSggbWVtYmVycy5iZWdpbigpLCBtZW1iZXJzLmVuZCgpICk7Ci0gICAgICAgICAgICBORE5CT09TVF9URVNUX0ZPUkVBQ0goIHRlc3RfdW5pdF9pZCwgaWQsIG1lbWJlcnMgKQotICAgICAgICAgICAgICAgIHRyYXZlcnNlX3Rlc3RfdHJlZSggaWQsIFYgKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICB9IGNhdGNoKCB0ZXN0X2JlaW5nX2Fib3J0ZWQgY29uc3QmICkgewotICAgICAgICBWLnRlc3Rfc3VpdGVfZmluaXNoKCBzdWl0ZSApOwotICAgICAgICBmcmFtZXdvcms6OnRlc3RfdW5pdF9hYm9ydGVkKCBzdWl0ZSApOwotCi0gICAgICAgIHRocm93OwotICAgIH0KLQotICAgIFYudGVzdF9zdWl0ZV9maW5pc2goIHN1aXRlICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXRyYXZlcnNlX3Rlc3RfdHJlZSggdGVzdF91bml0X2lkIGlkLCB0ZXN0X3RyZWVfdmlzaXRvciYgViApCi17Ci0gICAgaWYoIHV0X2RldGFpbDo6dGVzdF9pZF8yX3VuaXRfdHlwZSggaWQgKSA9PSB0dXRfY2FzZSApCi0gICAgICAgIHRyYXZlcnNlX3Rlc3RfdHJlZSggZnJhbWV3b3JrOjpnZXQ8dGVzdF9jYXNlPiggaWQgKSwgViApOwotICAgIGVsc2UKLSAgICAgICAgdHJhdmVyc2VfdGVzdF90cmVlKCBmcmFtZXdvcms6OmdldDx0ZXN0X3N1aXRlPiggaWQgKSwgViApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgdGVzdF9jYXNlX2NvdW50ZXIgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXZvaWQKLXRlc3RfY2FzZV9jb3VudGVyOjp2aXNpdCggdGVzdF9jYXNlIGNvbnN0JiB0YyApCi17Ci0gICAgaWYoIHRjLnBfZW5hYmxlZCApCi0gICAgICAgICsrcF9jb3VudC52YWx1ZTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgb2JqZWN0IGdlbmVyYXRvcnMgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1uYW1lc3BhY2UgdXRfZGV0YWlsIHsKLQotc3RkOjpzdHJpbmcKLW5vcm1hbGl6ZV90ZXN0X2Nhc2VfbmFtZSggY29uc3Rfc3RyaW5nIG5hbWUgKQotewotICAgIHJldHVybiAoIG5hbWVbMF0gPT0gJyYnCi0gICAgICAgICAgICAgICAgPyBzdGQ6OnN0cmluZyggbmFtZS5iZWdpbigpKzEsIG5hbWUuc2l6ZSgpLTEgKQotICAgICAgICAgICAgICAgIDogc3RkOjpzdHJpbmcoIG5hbWUuYmVnaW4oKSwgbmFtZS5zaXplKCkgKSApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgIGF1dG9fdGVzdF91bml0X3JlZ2lzdHJhciAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWF1dG9fdGVzdF91bml0X3JlZ2lzdHJhcjo6YXV0b190ZXN0X3VuaXRfcmVnaXN0cmFyKCB0ZXN0X2Nhc2UqIHRjLCBjb3VudGVyX3QgZXhwX2ZhaWwgKQotewotICAgIGN1cnJfdHNfc3RvcmUoKS5iYWNrKCktPmFkZCggdGMsIGV4cF9mYWlsICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLWF1dG9fdGVzdF91bml0X3JlZ2lzdHJhcjo6YXV0b190ZXN0X3VuaXRfcmVnaXN0cmFyKCBjb25zdF9zdHJpbmcgdHNfbmFtZSApCi17Ci0gICAgdGVzdF91bml0X2lkIGlkID0gY3Vycl90c19zdG9yZSgpLmJhY2soKS0+Z2V0KCB0c19uYW1lICk7Ci0KLSAgICB0ZXN0X3N1aXRlKiB0czsKLQotICAgIGlmKCBpZCAhPSBJTlZfVEVTVF9VTklUX0lEICkgewotICAgICAgICB0cyA9ICZmcmFtZXdvcms6OmdldDx0ZXN0X3N1aXRlPiggaWQgKTsgLy8gISEgdGVzdCBmb3IgaW52YWxpZCB0dSB0eXBlCi0gICAgICAgIE5ETkJPT1NUX0FTU0VSVCggdHMtPnBfcGFyZW50X2lkID09IGN1cnJfdHNfc3RvcmUoKS5iYWNrKCktPnBfaWQgKTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIHRzID0gbmV3IHRlc3Rfc3VpdGUoIHRzX25hbWUgKTsKLSAgICAgICAgY3Vycl90c19zdG9yZSgpLmJhY2soKS0+YWRkKCB0cyApOwotICAgIH0KLQotICAgIGN1cnJfdHNfc3RvcmUoKS5wdXNoX2JhY2soIHRzICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLWF1dG9fdGVzdF91bml0X3JlZ2lzdHJhcjo6YXV0b190ZXN0X3VuaXRfcmVnaXN0cmFyKCB0ZXN0X3VuaXRfZ2VuZXJhdG9yIGNvbnN0JiB0Y19nZW4gKQotewotICAgIGN1cnJfdHNfc3RvcmUoKS5iYWNrKCktPmFkZCggdGNfZ2VuICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLWF1dG9fdGVzdF91bml0X3JlZ2lzdHJhcjo6YXV0b190ZXN0X3VuaXRfcmVnaXN0cmFyKCBpbnQgKQotewotICAgIGlmKCBjdXJyX3RzX3N0b3JlKCkuc2l6ZSgpID09IDAgKQotICAgICAgICByZXR1cm47IC8vIHJlcG9ydCBlcnJvcj8KLQotICAgIGN1cnJfdHNfc3RvcmUoKS5wb3BfYmFjaygpOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1zdGQ6Omxpc3Q8dGVzdF9zdWl0ZSo+JgotYXV0b190ZXN0X3VuaXRfcmVnaXN0cmFyOjpjdXJyX3RzX3N0b3JlKCkKLXsKLSAgICBzdGF0aWMgc3RkOjpsaXN0PHRlc3Rfc3VpdGUqPiBpbnN0KCAxLCAmZnJhbWV3b3JrOjptYXN0ZXJfdGVzdF9zdWl0ZSgpICk7Ci0gICAgcmV0dXJuIGluc3Q7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIHV0X2RldGFpbAotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgZ2xvYmFsX2ZpeHR1cmUgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWdsb2JhbF9maXh0dXJlOjpnbG9iYWxfZml4dHVyZSgpCi17Ci0gICAgZnJhbWV3b3JrOjpyZWdpc3Rlcl9vYnNlcnZlciggKnRoaXMgKTsKLX0gCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIHVuaXRfdGVzdAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RFU1RfVU5JVF9URVNUX1NVSVRFX0lQUF8wMTIyMDVHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL3htbF9sb2dfZm9ybWF0dGVyLmlwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbXBsL3htbF9sb2dfZm9ybWF0dGVyLmlwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDkzMjFjMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC94bWxfbG9nX2Zvcm1hdHRlci5pcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxODAgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDU3OTkyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBpbXBsZW1lbnRzIFhNTCBMb2cgZm9ybWF0dGVyCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX1hNTF9MT0dfRk9STUFUVEVSX0lQUF8wMjAxMDVHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9YTUxfTE9HX0ZPUk1BVFRFUl9JUFBfMDIwMTA1R0VSCi0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L291dHB1dC94bWxfbG9nX2Zvcm1hdHRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91bml0X3Rlc3Rfc3VpdGVfaW1wbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9mcmFtZXdvcmsuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvYmFzaWNfY3N0cmluZy9pby5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3htbF9wcmludGVyLmhwcD4KLQotLy8gQm9vc3QKLSNpbmNsdWRlIDxuZG5ib29zdC92ZXJzaW9uLmhwcD4KLQotLy8gU1RMCi0jaW5jbHVkZSA8aW9zdHJlYW0+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSB1bml0X3Rlc3QgewotCi1uYW1lc3BhY2Ugb3V0cHV0IHsKLQotc3RhdGljIGNvbnN0X3N0cmluZyB0dV90eXBlX25hbWUoIHRlc3RfdW5pdCBjb25zdCYgdHUgKQotewotICAgIHJldHVybiB0dS5wX3R5cGUgPT0gdHV0X2Nhc2UgPyAiVGVzdENhc2UiIDogIlRlc3RTdWl0ZSI7Ci19Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgIHhtbF9sb2dfZm9ybWF0dGVyICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdm9pZAoteG1sX2xvZ19mb3JtYXR0ZXI6OmxvZ19zdGFydCggc3RkOjpvc3RyZWFtJiBvc3RyLCBjb3VudGVyX3QgKQotewotICAgIG9zdHIgIDw8ICI8VGVzdExvZz4iOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi14bWxfbG9nX2Zvcm1hdHRlcjo6bG9nX2ZpbmlzaCggc3RkOjpvc3RyZWFtJiBvc3RyICkKLXsKLSAgICBvc3RyICA8PCAiPC9UZXN0TG9nPiI7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXhtbF9sb2dfZm9ybWF0dGVyOjpsb2dfYnVpbGRfaW5mbyggc3RkOjpvc3RyZWFtJiBvc3RyICkKLXsKLSAgICBvc3RyICA8PCAiPEJ1aWxkSW5mbyIKLSAgICAgICAgICAgIDw8ICIgcGxhdGZvcm0iICA8PCBhdHRyX3ZhbHVlKCkgPDwgTkROQk9PU1RfUExBVEZPUk0KLSAgICAgICAgICAgIDw8ICIgY29tcGlsZXIiICA8PCBhdHRyX3ZhbHVlKCkgPDwgTkROQk9PU1RfQ09NUElMRVIKLSAgICAgICAgICAgIDw8ICIgc3RsIiAgICAgICA8PCBhdHRyX3ZhbHVlKCkgPDwgTkROQk9PU1RfU1RETElCCi0gICAgICAgICAgICA8PCAiIGJvb3N0PVwiIiAgPDwgTkROQk9PU1RfVkVSU0lPTi8xMDAwMDAgICAgIDw8ICIuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IE5ETkJPT1NUX1ZFUlNJT04vMTAwICUgMTAwMCA8PCAiLiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCBORE5CT09TVF9WRVJTSU9OICUgMTAwICAgICAgPDwgJ1wiJwotICAgICAgICAgICAgPDwgIi8+IjsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAoteG1sX2xvZ19mb3JtYXR0ZXI6OnRlc3RfdW5pdF9zdGFydCggc3RkOjpvc3RyZWFtJiBvc3RyLCB0ZXN0X3VuaXQgY29uc3QmIHR1ICkKLXsKLSAgICBvc3RyIDw8ICI8IiA8PCB0dV90eXBlX25hbWUoIHR1ICkgPDwgIiBuYW1lIiA8PCBhdHRyX3ZhbHVlKCkgPDwgdHUucF9uYW1lLmdldCgpIDw8ICI+IjsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAoteG1sX2xvZ19mb3JtYXR0ZXI6OnRlc3RfdW5pdF9maW5pc2goIHN0ZDo6b3N0cmVhbSYgb3N0ciwgdGVzdF91bml0IGNvbnN0JiB0dSwgdW5zaWduZWQgbG9uZyBlbGFwc2VkICkKLXsKLSAgICBpZiggdHUucF90eXBlID09IHR1dF9jYXNlICkKLSAgICAgICAgb3N0ciA8PCAiPFRlc3RpbmdUaW1lPiIgPDwgZWxhcHNlZCA8PCAiPC9UZXN0aW5nVGltZT4iOwotICAgICAgICAKLSAgICBvc3RyIDw8ICI8LyIgPDwgdHVfdHlwZV9uYW1lKCB0dSApIDw8ICI+IjsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAoteG1sX2xvZ19mb3JtYXR0ZXI6OnRlc3RfdW5pdF9za2lwcGVkKCBzdGQ6Om9zdHJlYW0mIG9zdHIsIHRlc3RfdW5pdCBjb25zdCYgdHUgKQotewotICAgIG9zdHIgPDwgIjwiIDw8IHR1X3R5cGVfbmFtZSggdHUgKQotICAgICAgICAgPDwgIiBuYW1lIiAgICA8PCBhdHRyX3ZhbHVlKCkgPDwgdHUucF9uYW1lLmdldCgpCi0gICAgICAgICA8PCAiIHNraXBwZWQiIDw8IGF0dHJfdmFsdWUoKSA8PCAieWVzIgotICAgICAgICAgPDwgIi8+IjsKLX0KLSAgICAKLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXhtbF9sb2dfZm9ybWF0dGVyOjpsb2dfZXhjZXB0aW9uKCBzdGQ6Om9zdHJlYW0mIG9zdHIsIGxvZ19jaGVja3BvaW50X2RhdGEgY29uc3QmIGNoZWNrcG9pbnRfZGF0YSwgZXhlY3V0aW9uX2V4Y2VwdGlvbiBjb25zdCYgZXggKQotewotICAgIGV4ZWN1dGlvbl9leGNlcHRpb246OmxvY2F0aW9uIGNvbnN0JiBsb2MgPSBleC53aGVyZSgpOwotCi0gICAgb3N0ciA8PCAiPEV4Y2VwdGlvbiBmaWxlIiA8PCBhdHRyX3ZhbHVlKCkgPDwgbG9jLm1fZmlsZV9uYW1lCi0gICAgICAgICA8PCAiIGxpbmUiICAgICAgICAgICA8PCBhdHRyX3ZhbHVlKCkgPDwgbG9jLm1fbGluZV9udW07Ci0KLSAgICBpZiggIWxvYy5tX2Z1bmN0aW9uLmlzX2VtcHR5KCkgKQotICAgICAgICBvc3RyIDw8ICIgZnVuY3Rpb24iICAgPDwgYXR0cl92YWx1ZSgpIDw8IGxvYy5tX2Z1bmN0aW9uOwotCi0gICAgb3N0ciA8PCAiPiIgPDwgY2RhdGEoKSA8PCBleC53aGF0KCk7Ci0KLSAgICBpZiggIWNoZWNrcG9pbnRfZGF0YS5tX2ZpbGVfbmFtZS5pc19lbXB0eSgpICkgewotICAgICAgICBvc3RyIDw8ICI8TGFzdENoZWNrcG9pbnQgZmlsZSIgPDwgYXR0cl92YWx1ZSgpIDw8IGNoZWNrcG9pbnRfZGF0YS5tX2ZpbGVfbmFtZQotICAgICAgICAgICAgIDw8ICIgbGluZSIgICAgICAgICAgICAgICAgPDwgYXR0cl92YWx1ZSgpIDw8IGNoZWNrcG9pbnRfZGF0YS5tX2xpbmVfbnVtCi0gICAgICAgICAgICAgPDwgIj4iCi0gICAgICAgICAgICAgPDwgY2RhdGEoKSA8PCBjaGVja3BvaW50X2RhdGEubV9tZXNzYWdlCi0gICAgICAgICAgICAgPDwgIjwvTGFzdENoZWNrcG9pbnQ+IjsKLSAgICB9Ci0KLSAgICBvc3RyIDw8ICI8L0V4Y2VwdGlvbj4iOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi14bWxfbG9nX2Zvcm1hdHRlcjo6bG9nX2VudHJ5X3N0YXJ0KCBzdGQ6Om9zdHJlYW0mIG9zdHIsIGxvZ19lbnRyeV9kYXRhIGNvbnN0JiBlbnRyeV9kYXRhLCBsb2dfZW50cnlfdHlwZXMgbGV0ICkKLXsKLSAgICBzdGF0aWMgbGl0ZXJhbF9zdHJpbmcgeG1sX3RhZ3NbXSA9IHsgIkluZm8iLCAiTWVzc2FnZSIsICJXYXJuaW5nIiwgIkVycm9yIiwgIkZhdGFsRXJyb3IiIH07Ci0KLSAgICBtX2N1cnJfdGFnID0geG1sX3RhZ3NbbGV0XTsKLSAgICBvc3RyIDw8ICc8JyA8PCBtX2N1cnJfdGFnCi0gICAgICAgICA8PCBORE5CT09TVF9URVNUX0woICIgZmlsZSIgKSA8PCBhdHRyX3ZhbHVlKCkgPDwgZW50cnlfZGF0YS5tX2ZpbGVfbmFtZQotICAgICAgICAgPDwgTkROQk9PU1RfVEVTVF9MKCAiIGxpbmUiICkgPDwgYXR0cl92YWx1ZSgpIDw8IGVudHJ5X2RhdGEubV9saW5lX251bQotICAgICAgICAgPDwgTkROQk9PU1RfVEVTVF9MKCAiPjwhW0NEQVRBWyIgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAoteG1sX2xvZ19mb3JtYXR0ZXI6OmxvZ19lbnRyeV92YWx1ZSggc3RkOjpvc3RyZWFtJiBvc3RyLCBjb25zdF9zdHJpbmcgdmFsdWUgKQotewotICAgIG9zdHIgPDwgdmFsdWU7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXhtbF9sb2dfZm9ybWF0dGVyOjpsb2dfZW50cnlfZmluaXNoKCBzdGQ6Om9zdHJlYW0mIG9zdHIgKQotewotICAgIG9zdHIgPDwgTkROQk9PU1RfVEVTVF9MKCAiXV0+PC8iICkgPDwgbV9jdXJyX3RhZyA8PCBORE5CT09TVF9URVNUX0woICI+IiApOwotCi0gICAgbV9jdXJyX3RhZy5jbGVhcigpOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSBvdXRwdXQKLQotfSAvLyBuYW1lc3BhY2UgdW5pdF90ZXN0Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9YTUxfTE9HX0ZPUk1BVFRFUl9JUFBfMDIwMTA1R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC94bWxfcmVwb3J0X2Zvcm1hdHRlci5pcHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvaW1wbC94bWxfcmVwb3J0X2Zvcm1hdHRlci5pcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQyYjI4YTcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ltcGwveG1sX3JlcG9ydF9mb3JtYXR0ZXIuaXBwCisrKyAvZGV2L251bGwKQEAgLTEsMTE1ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA0OTMxMiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogWE1MIHJlcG9ydCBmb3JtYXR0ZXIKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfWE1MX1JFUE9SVF9GT1JNQVRURVJfSVBQXzAyMDEwNUdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX1hNTF9SRVBPUlRfRk9STUFUVEVSX0lQUF8wMjAxMDVHRVIKLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvcmVzdWx0c19jb2xsZWN0b3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdW5pdF90ZXN0X3N1aXRlX2ltcGwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3Qvb3V0cHV0L3htbF9yZXBvcnRfZm9ybWF0dGVyLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMveG1sX3ByaW50ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvYmFzaWNfY3N0cmluZy9pby5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSB1bml0X3Rlc3QgewotCi1uYW1lc3BhY2Ugb3V0cHV0IHsKLQotdm9pZAoteG1sX3JlcG9ydF9mb3JtYXR0ZXI6OnJlc3VsdHNfcmVwb3J0X3N0YXJ0KCBzdGQ6Om9zdHJlYW0mIG9zdHIgKQotewotICAgIG9zdHIgPDwgIjxUZXN0UmVzdWx0PiI7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXZvaWQKLXhtbF9yZXBvcnRfZm9ybWF0dGVyOjpyZXN1bHRzX3JlcG9ydF9maW5pc2goIHN0ZDo6b3N0cmVhbSYgb3N0ciApCi17Ci0gICAgb3N0ciA8PCAiPC9UZXN0UmVzdWx0PiI7Ci19Ci0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdm9pZAoteG1sX3JlcG9ydF9mb3JtYXR0ZXI6OnRlc3RfdW5pdF9yZXBvcnRfc3RhcnQoIHRlc3RfdW5pdCBjb25zdCYgdHUsIHN0ZDo6b3N0cmVhbSYgb3N0ciApCi17Ci0gICAgdGVzdF9yZXN1bHRzIGNvbnN0JiB0ciA9IHJlc3VsdHNfY29sbGVjdG9yLnJlc3VsdHMoIHR1LnBfaWQgKTsKLQotICAgIGNvbnN0X3N0cmluZyBkZXNjcjsKLQotICAgIGlmKCB0ci5wYXNzZWQoKSApCi0gICAgICAgIGRlc2NyID0gInBhc3NlZCI7Ci0gICAgZWxzZSBpZiggdHIucF9za2lwcGVkICkKLSAgICAgICAgZGVzY3IgPSAic2tpcHBlZCI7Ci0gICAgZWxzZSBpZiggdHIucF9hYm9ydGVkICkKLSAgICAgICAgZGVzY3IgPSAiYWJvcnRlZCI7Ci0gICAgZWxzZQotICAgICAgICBkZXNjciA9ICJmYWlsZWQiOwotCi0gICAgb3N0ciA8PCAnPCcgPDwgKCB0dS5wX3R5cGUgPT0gdHV0X2Nhc2UgPyAiVGVzdENhc2UiIDogIlRlc3RTdWl0ZSIgKSAKLSAgICAgICAgIDw8ICIgbmFtZSIgICAgIDw8IGF0dHJfdmFsdWUoKSA8PCB0dS5wX25hbWUuZ2V0KCkKLSAgICAgICAgIDw8ICIgcmVzdWx0IiAgIDw8IGF0dHJfdmFsdWUoKSA8PCBkZXNjcgotICAgICAgICAgPDwgIiBhc3NlcnRpb25zX3Bhc3NlZCIgICAgICAgIDw8IGF0dHJfdmFsdWUoKSA8PCB0ci5wX2Fzc2VydGlvbnNfcGFzc2VkCi0gICAgICAgICA8PCAiIGFzc2VydGlvbnNfZmFpbGVkIiAgICAgICAgPDwgYXR0cl92YWx1ZSgpIDw8IHRyLnBfYXNzZXJ0aW9uc19mYWlsZWQKLSAgICAgICAgIDw8ICIgZXhwZWN0ZWRfZmFpbHVyZXMiICAgICAgICA8PCBhdHRyX3ZhbHVlKCkgPDwgdHIucF9leHBlY3RlZF9mYWlsdXJlczsKLQotICAgIGlmKCB0dS5wX3R5cGUgPT0gdHV0X3N1aXRlICkKLSAgICAgICAgb3N0ciA8PCAiIHRlc3RfY2FzZXNfcGFzc2VkIiAgICA8PCBhdHRyX3ZhbHVlKCkgPDwgdHIucF90ZXN0X2Nhc2VzX3Bhc3NlZAotICAgICAgICAgICAgIDw8ICIgdGVzdF9jYXNlc19mYWlsZWQiICAgIDw8IGF0dHJfdmFsdWUoKSA8PCB0ci5wX3Rlc3RfY2FzZXNfZmFpbGVkCi0gICAgICAgICAgICAgPDwgIiB0ZXN0X2Nhc2VzX3NraXBwZWQiICAgPDwgYXR0cl92YWx1ZSgpIDw8IHRyLnBfdGVzdF9jYXNlc19za2lwcGVkCi0gICAgICAgICAgICAgPDwgIiB0ZXN0X2Nhc2VzX2Fib3J0ZWQiICAgPDwgYXR0cl92YWx1ZSgpIDw8IHRyLnBfdGVzdF9jYXNlc19hYm9ydGVkOwotICAgICAgICAgICAgIAotICAgIAotICAgIG9zdHIgPDwgJz4nOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi14bWxfcmVwb3J0X2Zvcm1hdHRlcjo6dGVzdF91bml0X3JlcG9ydF9maW5pc2goIHRlc3RfdW5pdCBjb25zdCYgdHUsIHN0ZDo6b3N0cmVhbSYgb3N0ciApCi17Ci0gICAgb3N0ciA8PCAiPC8iIDw8ICggdHUucF90eXBlID09IHR1dF9jYXNlID8gIlRlc3RDYXNlIiA6ICJUZXN0U3VpdGUiICkgPDwgJz4nOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi12b2lkCi14bWxfcmVwb3J0X2Zvcm1hdHRlcjo6ZG9fY29uZmlybWF0aW9uX3JlcG9ydCggdGVzdF91bml0IGNvbnN0JiB0dSwgc3RkOjpvc3RyZWFtJiBvc3RyICkKLXsKLSAgICB0ZXN0X3VuaXRfcmVwb3J0X3N0YXJ0KCB0dSwgb3N0ciApOwotICAgIHRlc3RfdW5pdF9yZXBvcnRfZmluaXNoKCB0dSwgb3N0ciApOyAgICAKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2Ugb3V0cHV0Ci0KLX0gLy8gbmFtZXNwYWNlIHVuaXRfdGVzdAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RFU1RfWE1MX1JFUE9SVF9GT1JNQVRURVJfSVBQXzAyMDEwNUdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ludGVyYWN0aW9uX2Jhc2VkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9pbnRlcmFjdGlvbl9iYXNlZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmMTU4YzMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L2ludGVyYWN0aW9uX2Jhc2VkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI2MiArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNDkzMTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IEZhY2lsaXRpZXMgdG8gcGVyZm9ybSBpbnRlcmFjdGlvbi1iYXNlZCB0ZXN0aW5nCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX0lOVEVSQUNUSU9OX0JBU0VEX0hQUF8xMTIxMDVHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9JTlRFUkFDVElPTl9CQVNFRF9IUFBfMTEyMTA1R0VSCi0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2dsb2JhbF90eXBlZGVmLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvd3JhcF9zdHJpbmdzdHJlYW0uaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0vLyBCb29zdAotI2luY2x1ZGUgPG5kbmJvb3N0L2xleGljYWxfY2FzdC5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgIE5ETkJPT1NUX0lURVNUX0VQT0lOVCAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotI2RlZmluZSBORE5CT09TVF9JVEVTVF9FUE9JTlQoIGRlc2NyaXB0aW9uICkgXAotICAgIDo6bmRuYm9vc3Q6Oml0ZXN0OjptYW5hZ2VyOjppbnN0YW5jZSgpLmV4Y2VwdGlvbl9wb2ludCggTkROQk9PU1RfVEVTVF9MKF9fRklMRV9fKSwgX19MSU5FX18sIGRlc2NyaXB0aW9uICkKLS8qKi8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgTkROQk9PU1RfSVRFU1RfRFBPSU5UICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi0jZGVmaW5lIE5ETkJPT1NUX0lURVNUX0RQT0lOVCgpIFwKLSAgICA6Om5kbmJvb3N0OjppdGVzdDo6bWFuYWdlcjo6aW5zdGFuY2UoKS5kZWNpc2lvbl9wb2ludCggTkROQk9PU1RfVEVTVF9MKF9fRklMRV9fKSwgX19MSU5FX18gKQotLyoqLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgTkROQk9PU1RfSVRFU1RfU0NPUEUgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLSNkZWZpbmUgTkROQk9PU1RfSVRFU1RfU0NPUEUoIHNjb3BlX25hbWUgKSBcCi0gICAgOjpuZG5ib29zdDo6aXRlc3Q6OnNjb3BlX2d1YXJkIGl0ZXN0X3Njb3BlX2d1YXJkICMjIF9fTElORV9fKCBORE5CT09TVF9URVNUX0woX19GSUxFX18pLCBfX0xJTkVfXywgTkROQk9PU1RfU1RSSU5HSVpFKHNjb3BlX25hbWUpICkKLS8qKi8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICBORE5CT09TVF9JVEVTVF9ORVcgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi0jZGVmaW5lIE5ETkJPT1NUX0lURVNUX05FVyggdHlwZV9uYW1lICkgXAotICAgIG5ldyAoIDo6bmRuYm9vc3Q6Oml0ZXN0Ojpsb2NhdGlvbiggTkROQk9PU1RfVEVTVF9MKF9fRklMRV9fKSwgX19MSU5FX18gKSApIHR5cGVfbmFtZQotLyoqLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgIE5ETkJPT1NUX0lURVNUX0RBVEFfRkxPVyAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLSNkZWZpbmUgTkROQk9PU1RfSVRFU1RfREFUQV9GTE9XKCB2ICkgXAotICAgIDo6bmRuYm9vc3Q6Oml0ZXN0OjptYW5hZ2VyOjppbnN0YW5jZSgpLmdlbmVyaWNfZGF0YV9mbG93KCB2ICkKLS8qKi8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgTkROQk9PU1RfSVRFU1RfUkVUVVJOICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi0jZGVmaW5lIE5ETkJPT1NUX0lURVNUX1JFVFVSTiggdHlwZSwgZGVmYXVsdF92YWx1ZSApIFwKLSAgICA6Om5kbmJvb3N0OjppdGVzdDo6bWFuYWdlcjo6aW5zdGFuY2UoKS5nZW5lcmljX3JldHVybjx0eXBlPiggZGVmYXVsdF92YWx1ZSApCi0vKiovCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgTkROQk9PU1RfSVRFU1RfTU9DS19GVU5DICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotI2RlZmluZSBORE5CT09TVF9JVEVTVF9NT0NLX0ZVTkMoIGZ1bmN0aW9uX25hbWUgKSAgICAgICAgICBcCi0gICAgTkROQk9PU1RfSVRFU1RfU0NPUEUoIGZ1bmN0aW9uX25hbWUgKTsgICAgICAgICAgICAgICAgIFwKLSAgICBORE5CT09TVF9JVEVTVF9FUE9JTlQoIDAgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHJldHVybiA6Om5kbmJvb3N0OjppdGVzdDo6bW9ja19vYmplY3Q8Pjo6cHJvdG90eXBlKCk7ICBcCi0vKiovCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBpdGVzdCB7IC8vIGludGVyYWN0aW9uLWJhc2VkIHRlc3RpbmcKLQotdXNpbmcgdW5pdF90ZXN0Ojpjb25zdF9zdHJpbmc7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgICAgbWFuYWdlciAgICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotY2xhc3MgTkROQk9PU1RfVEVTVF9ERUNMIG1hbmFnZXIgewotcHVibGljOgotICAgIC8vIGluc3RhbmNlIGFjY2VzcwotICAgIHN0YXRpYyBtYW5hZ2VyJiAgICAgaW5zdGFuY2UoKSB7IHJldHVybiAqaW5zdGFuY2VfcHRyKCk7IH0KLQotICAgIC8vIE1vY2sgb2JqZWN0cyBpbnRlcmZhY2UgaG9va3MKLSAgICB2aXJ0dWFsIHZvaWQgICAgICAgIGV4Y2VwdGlvbl9wb2ludCggY29uc3Rfc3RyaW5nIC8qZmlsZSovLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpzaXplX3QgLypsaW5lX251bSovLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Rfc3RyaW5nIC8qZGVzY3IqLyApe30KLSAgICB2aXJ0dWFsIGJvb2wgICAgICAgIGRlY2lzaW9uX3BvaW50KCBjb25zdF9zdHJpbmcgLypmaWxlKi8sIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c2l6ZV90IC8qbGluZV9udW0qLyApICAgICAgICAgIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIHVuc2lnbmVkICAgIGVudGVyX3Njb3BlKCBjb25zdF9zdHJpbmcgLypmaWxlKi8sIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c2l6ZV90IC8qbGluZV9udW0qLywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdF9zdHJpbmcgLypzY29wZV9uYW1lKi8peyByZXR1cm4gMDsgfQotICAgIHZpcnR1YWwgdm9pZCAgICAgICAgbGVhdmVfc2NvcGUoIHVuc2lnbmVkICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt9Ci0gICAgdmlydHVhbCB2b2lkICAgICAgICBhbGxvY2F0ZWQoIGNvbnN0X3N0cmluZyAvKmZpbGUqLywgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6c2l6ZV90IC8qbGluZV9udW0qLywgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQqIC8qcCovLCBzdGQ6OnNpemVfdCAvKnMqLyApICAgICAgICAge30KLSAgICB2aXJ0dWFsIHZvaWQgICAgICAgIGZyZWVkKCB2b2lkKiAvKnAqLyApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7fQotICAgIHZpcnR1YWwgdm9pZCAgICAgICAgZGF0YV9mbG93KCBjb25zdF9zdHJpbmcgLypkKi8gKSAgICAgICAgICAgICAgICAgICAgIHt9Ci0gICAgdmlydHVhbCBzdGQ6OnN0cmluZyByZXR1cm5fdmFsdWUoIGNvbnN0X3N0cmluZyAvKmRlZmF1bHRfdmFsdWUgKi8gKSAgICAgeyByZXR1cm4gIiI7IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgdm9pZCAgICAgICAgICAgICAgICBnZW5lcmljX2RhdGFfZmxvdyggVCBjb25zdCYgdCApCi0gICAgewotICAgICAgICB3cmFwX3N0cmluZ3N0cmVhbSB3czsKLQotICAgICAgICBkYXRhX2Zsb3coICh3cyA8PCB0KS5zdHIoKSApOwotICAgIH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBEZWZhdWx0VmFsdWVUeXBlPgotICAgIFQgICAgICAgICAgICAgICAgICAgZ2VuZXJpY19yZXR1cm4oIERlZmF1bHRWYWx1ZVR5cGUgY29uc3QmIGR2ICkKLSAgICB7Ci0gICAgICAgIHdyYXBfc3RyaW5nc3RyZWFtIHdzOwotCi0gICAgICAgIHN0ZDo6c3RyaW5nIGNvbnN0JiByZXMgPSByZXR1cm5fdmFsdWUoICh3cyA8PCBkdikuc3RyKCkgKTsKLQotICAgICAgICBpZiggcmVzLmVtcHR5KCkgKQotICAgICAgICAgICAgcmV0dXJuIGR2OwotCi0gICAgICAgIHJldHVybiBsZXhpY2FsX2Nhc3Q8VD4oIHJlcyApOwotICAgIH0KLQotcHJvdGVjdGVkOgotICAgIG1hbmFnZXIoKTsKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTY0KSkgCi1wdWJsaWM6Ci0jZW5kaWYKLSAgICBORE5CT09TVF9URVNUX1BST1RFQ1RFRF9WSVJUVUFMIH5tYW5hZ2VyKCk7Ci0KLXByaXZhdGU6Ci0gICAgc3RydWN0IGR1bW15X2NvbnN0cnt9OwotICAgIGV4cGxpY2l0IG1hbmFnZXIoIGR1bW15X2NvbnN0ciogKSB7fQotCi0gICAgc3RhdGljIG1hbmFnZXIqICAgICBpbnN0YW5jZV9wdHIoIGJvb2wgcmVzZXQgPSBmYWxzZSwgbWFuYWdlciogcHRyID0gMCApOwotfTsgLy8gbWFuYWdlcgotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgICBzY29wZV9ndWFyZCAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWNsYXNzIHNjb3BlX2d1YXJkIHsKLXB1YmxpYzoKLSAgICAvLyBDb25zdHJ1Y3RvcgotICAgIHNjb3BlX2d1YXJkKCBjb25zdF9zdHJpbmcgZmlsZSwgc3RkOjpzaXplX3QgbGluZV9udW0sIGNvbnN0X3N0cmluZyBzY29wZV9uYW1lICkKLSAgICB7Ci0gICAgICAgIG1fc2NvcGVfaW5kZXggPSBtYW5hZ2VyOjppbnN0YW5jZSgpLmVudGVyX3Njb3BlKCBmaWxlLCBsaW5lX251bSwgc2NvcGVfbmFtZSApOwotICAgIH0KLSAgICB+c2NvcGVfZ3VhcmQoKQotICAgIHsKLSAgICAgICAgbWFuYWdlcjo6aW5zdGFuY2UoKS5sZWF2ZV9zY29wZSggbV9zY29wZV9pbmRleCApOwotICAgIH0KLQotICAgIHVuc2lnbmVkIG1fc2NvcGVfaW5kZXg7Ci19OwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uICAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXN0cnVjdCBsb2NhdGlvbiB7Ci0gICAgbG9jYXRpb24oIGNvbnN0X3N0cmluZyBmaWxlLCBzdGQ6OnNpemVfdCBsaW5lICkgCi0gICAgOiBtX2ZpbGVfbmFtZSggZmlsZSApCi0gICAgLCBtX2xpbmVfbnVtKCBsaW5lICkKLSAgICB7fQotCi0gICAgY29uc3Rfc3RyaW5nICAgIG1fZmlsZV9uYW1lOwotICAgIHN0ZDo6c2l6ZV90ICAgICBtX2xpbmVfbnVtOwotfTsKLQotfSAgLy8gbmFtZXNwYWNlIGl0ZXN0Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgb3BlcmF0b3IgbmV3IG92ZXJsb2FkICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX0lURVNUX05PX05FV19PVkVSTE9BRFMpCi0KLS8vIFNUTAotI2luY2x1ZGUgPGNzdGRsaWI+Ci0KLSMgaWZkZWYgTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UKLW5hbWVzcGFjZSBzdGQgeyB1c2luZyA6Om1hbGxvYzsgdXNpbmcgOjpmcmVlOyB9Ci0jIGVuZGlmCi0jIGlmZGVmIF9DUlREQkdfTUFQX0FMTE9DCi1uYW1lc3BhY2Ugc3RkIHsgdXNpbmcgOjpfbWFsbG9jX2RiZzsgdXNpbmcgOjpfZnJlZV9kYmc7IH0KLSMgZW5kaWYKLQotaW5saW5lIHZvaWQqCi1vcGVyYXRvciBuZXcoIHN0ZDo6c2l6ZV90IHMsIDo6bmRuYm9vc3Q6Oml0ZXN0Ojpsb2NhdGlvbiBjb25zdCYgbCApCi17Ci0gICAgdm9pZCogcmVzID0gc3RkOjptYWxsb2MocyA/IHMgOiAxKTsKLQotICAgIGlmKCByZXMgKQotICAgICAgICA6Om5kbmJvb3N0OjppdGVzdDo6bWFuYWdlcjo6aW5zdGFuY2UoKS5hbGxvY2F0ZWQoIGwubV9maWxlX25hbWUsIGwubV9saW5lX251bSwgcmVzLCBzICk7Ci0gICAgZWxzZQotICAgICAgICB0aHJvdyBzdGQ6OmJhZF9hbGxvYygpOwotICAgICAgICAKLSAgICByZXR1cm4gcmVzOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1pbmxpbmUgdm9pZCoKLW9wZXJhdG9yIG5ld1tdKCBzdGQ6OnNpemVfdCBzLCA6Om5kbmJvb3N0OjppdGVzdDo6bG9jYXRpb24gY29uc3QmIGwgKQotewotICAgIHZvaWQqIHJlcyA9IHN0ZDo6bWFsbG9jKHMgPyBzIDogMSk7Ci0KLSAgICBpZiggcmVzICkKLSAgICAgICAgOjpuZG5ib29zdDo6aXRlc3Q6Om1hbmFnZXI6Omluc3RhbmNlKCkuYWxsb2NhdGVkKCBsLm1fZmlsZV9uYW1lLCBsLm1fbGluZV9udW0sIHJlcywgcyApOwotICAgIGVsc2UKLSAgICAgICAgdGhyb3cgc3RkOjpiYWRfYWxsb2MoKTsKLSAgICAgICAgCi0gICAgcmV0dXJuIHJlczsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotaW5saW5lIHZvaWQKLW9wZXJhdG9yIGRlbGV0ZSggdm9pZCogcCwgOjpuZG5ib29zdDo6aXRlc3Q6OmxvY2F0aW9uIGNvbnN0JiApCi17Ci0gICAgOjpuZG5ib29zdDo6aXRlc3Q6Om1hbmFnZXI6Omluc3RhbmNlKCkuZnJlZWQoIHAgKTsKLQotICAgIHN0ZDo6ZnJlZSggcCApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1pbmxpbmUgdm9pZAotb3BlcmF0b3IgZGVsZXRlW10oIHZvaWQqIHAsIDo6bmRuYm9vc3Q6Oml0ZXN0Ojpsb2NhdGlvbiBjb25zdCYgKQotewotICAgIDo6bmRuYm9vc3Q6Oml0ZXN0OjptYW5hZ2VyOjppbnN0YW5jZSgpLmZyZWVkKCBwICk7Ci0KLSAgICBzdGQ6OmZyZWUoIHAgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9JTlRFUkFDVElPTl9CQVNFRF9IUFBfMTEyMTA1R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvbWluaW1hbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvbWluaW1hbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIyMDU5ZjguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L21pbmltYWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQzICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDItMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA0OTMxMiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogc2ltcGxlIG1pbmltYWwgdGVzdGluZyBkZWZpbml0aW9ucyBhbmQgaW1wbGVtZW50YXRpb24KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfTUlOSU1BTF9IUFBfMDcxODk0R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfTUlOSU1BTF9IUFBfMDcxODk0R0VSCi0KLSNkZWZpbmUgTkROQk9PU1RfQ0hFQ0soZXhwKSAgICAgICBcCi0gICggKGV4cCkgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgPyBzdGF0aWNfY2FzdDx2b2lkPigwKSAgIFwKLSAgICAgIDogbmRuYm9vc3Q6Om1pbmltYWxfdGVzdDo6cmVwb3J0X2Vycm9yKCNleHAsX19GSUxFX18sX19MSU5FX18sIE5ETkJPT1NUX0NVUlJFTlRfRlVOQ1RJT04pICkKLQotI2RlZmluZSBORE5CT09TVF9SRVFVSVJFKGV4cCkgICAgIFwKLSAgKCAoZXhwKSAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICA/IHN0YXRpY19jYXN0PHZvaWQ+KDApICAgXAotICAgICAgOiBuZG5ib29zdDo6bWluaW1hbF90ZXN0OjpyZXBvcnRfY3JpdGljYWxfZXJyb3IoI2V4cCxfX0ZJTEVfXyxfX0xJTkVfXyxORE5CT09TVF9DVVJSRU5UX0ZVTkNUSU9OKSkKLQotI2RlZmluZSBORE5CT09TVF9FUlJPUiggbXNnXyApICAgIFwKLSAgICAgICAgbmRuYm9vc3Q6Om1pbmltYWxfdGVzdDo6cmVwb3J0X2Vycm9yKCAobXNnXyksX19GSUxFX18sX19MSU5FX18sIE5ETkJPT1NUX0NVUlJFTlRfRlVOQ1RJT04sIHRydWUgKQotI2RlZmluZSBORE5CT09TVF9GQUlMKCBtc2dfICkgICAgIFwKLSAgICAgICAgbmRuYm9vc3Q6Om1pbmltYWxfdGVzdDo6cmVwb3J0X2NyaXRpY2FsX2Vycm9yKCAobXNnXyksX19GSUxFX18sX19MSU5FX18sIE5ETkJPT1NUX0NVUlJFTlRfRlVOQ1RJT04sIHRydWUgKQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZ2xvYmFsX3R5cGVkZWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvaW1wbC9leGVjdXRpb25fbW9uaXRvci5pcHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9pbXBsL2RlYnVnLmlwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2NsYXNzX3Byb3BlcnRpZXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvYmFzaWNfY3N0cmluZy9pby5ocHA+Ci0KLS8vIEJvb3N0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY3N0ZGxpYi5ocHA+ICAgICAgICAgICAgLy8gZm9yIGV4aXQgY29kZXMjaW5jbHVkZSA8bmRuYm9vc3QvY3N0ZGxpYi5ocHA+ICAgICAgICAgICAgLy8gZm9yIGV4aXQgY29kZXMKLSNpbmNsdWRlIDxuZG5ib29zdC9jdXJyZW50X2Z1bmN0aW9uLmhwcD4gICAvLyBmb3IgTkROQk9PU1RfQ1VSUkVOVF9GVU5DVElPTgotCi0vLyBTVEwKLSNpbmNsdWRlIDxpb3N0cmVhbT4gICAgICAgICAgICAgICAgICAgICAvLyBzdGQ6OmNlcnIsIHN0ZDo6ZW5kbAotI2luY2x1ZGUgPHN0cmluZz4gICAgICAgICAgICAgICAgICAgICAgIC8vIHN0ZDo6c3RyaW5nCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLWludCB0ZXN0X21haW4oIGludCBhcmdjLCBjaGFyKiBhcmd2W10gKTsgIC8vIHByb3RvdHlwZSBmb3IgdXNlcnMgdGVzdF9tYWluKCkKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLW5hbWVzcGFjZSBtaW5pbWFsX3Rlc3QgewotCi10eXBlZGVmIG5kbmJvb3N0Ojp1bml0X3Rlc3Q6OmNvbnN0X3N0cmluZyBjb25zdF9zdHJpbmc7Ci0KLWlubGluZSB1bml0X3Rlc3Q6OmNvdW50ZXJfdCYgZXJyb3JzX2NvdW50ZXIoKSB7IHN0YXRpYyB1bml0X3Rlc3Q6OmNvdW50ZXJfdCBlYyA9IDA7IHJldHVybiBlYzsgfQotCi1pbmxpbmUgdm9pZAotcmVwb3J0X2Vycm9yKCBjb25zdCBjaGFyKiBtc2csIGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBjb25zdF9zdHJpbmcgZnVuY19uYW1lLCBib29sIGlzX21zZyA9IGZhbHNlICkKLXsKLSAgICArK2Vycm9yc19jb3VudGVyKCk7Ci0gICAgc3RkOjpjZXJyIDw8IGZpbGUgPDwgIigiIDw8IGxpbmUgPDwgIik6ICI7Ci0KLSAgICBpZiggaXNfbXNnICkKLSAgICAgICAgc3RkOjpjZXJyIDw8IG1zZzsKLSAgICBlbHNlCi0gICAgICAgIHN0ZDo6Y2VyciA8PCAidGVzdCAiIDw8IG1zZyA8PCAiIGZhaWxlZCI7Ci0KLSAgICBpZiggZnVuY19uYW1lICE9ICIodW5rbm93bikiICkKLSAgICAgICAgc3RkOjpjZXJyIDw8ICIgaW4gZnVuY3Rpb246ICciIDw8IGZ1bmNfbmFtZSA8PCAiJyI7Ci0KLSAgICBzdGQ6OmNlcnIgPDwgc3RkOjplbmRsOwotfQotCi1pbmxpbmUgdm9pZAotcmVwb3J0X2NyaXRpY2FsX2Vycm9yKCBjb25zdCBjaGFyKiBtc2csIGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBjb25zdF9zdHJpbmcgZnVuY19uYW1lLCBib29sIGlzX21zZyA9IGZhbHNlICkKLXsKLSAgICByZXBvcnRfZXJyb3IoIG1zZywgZmlsZSwgbGluZSwgZnVuY19uYW1lLCBpc19tc2cgKTsKLQotICAgIHRocm93IG5kbmJvb3N0OjpleGVjdXRpb25fYWJvcnRlZCgpOwotfQotCi1jbGFzcyBjYWxsZXIgewotcHVibGljOgotICAgIC8vIGNvbnN0cnVjdG9yCi0gICAgY2FsbGVyKCBpbnQgYXJnYywgY2hhcioqIGFyZ3YgKQotICAgIDogbV9hcmdjKCBhcmdjICksIG1fYXJndiggYXJndiApIHt9Ci0KLSAgICAvLyBleGVjdXRpb24gbW9uaXRvciBob29rIGltcGxlbWVudGF0aW9uCi0gICAgaW50IG9wZXJhdG9yKCkoKSB7IHJldHVybiB0ZXN0X21haW4oIG1fYXJnYywgbV9hcmd2ICk7IH0KLQotcHJpdmF0ZToKLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICBpbnQgICAgICAgICBtX2FyZ2M7Ci0gICAgY2hhcioqICAgICAgbV9hcmd2OwotfTsgLy8gbW9uaXRvcgotCi19IC8vIG5hbWVzcGFjZSBtaW5pbWFsX3Rlc3QKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotaW50IE5ETkJPT1NUX1RFU1RfQ0FMTF9ERUNMIG1haW4oIGludCBhcmdjLCBjaGFyKiBhcmd2W10gKQotewotICAgIHVzaW5nIG5hbWVzcGFjZSBuZG5ib29zdDo6bWluaW1hbF90ZXN0OwotCi0gICAgdHJ5IHsKLSAgICAgICAgOjpuZG5ib29zdDo6ZXhlY3V0aW9uX21vbml0b3IgZXhfbW9uOwotICAgICAgICBpbnQgcnVuX3Jlc3VsdCA9IGV4X21vbi5leGVjdXRlKCBjYWxsZXIoIGFyZ2MsIGFyZ3YgKSApOwotCi0gICAgICAgIE5ETkJPT1NUX0NIRUNLKCBydW5fcmVzdWx0ID09IDAgfHwgcnVuX3Jlc3VsdCA9PSBuZG5ib29zdDo6ZXhpdF9zdWNjZXNzICk7Ci0gICAgfQotICAgIGNhdGNoKCBuZG5ib29zdDo6ZXhlY3V0aW9uX2V4Y2VwdGlvbiBjb25zdCYgZXhleCApIHsKLSAgICAgICAgaWYoIGV4ZXguY29kZSgpICE9IG5kbmJvb3N0OjpleGVjdXRpb25fZXhjZXB0aW9uOjpub19lcnJvciApCi0gICAgICAgICAgICBORE5CT09TVF9FUlJPUiggKHN0ZDo6c3RyaW5nKCAiZXhjZXB0aW9uIFwiIiApLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZCggZXhleC53aGF0KCkuYmVnaW4oKSwgZXhleC53aGF0KCkuZW5kKCkgKS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmQoICJcIiBjYXVnaHQiICkgKS5jX3N0cigpICk7Ci0gICAgICAgIHN0ZDo6Y2VyciA8PCAiXG4qKioqIFRlc3RpbmcgYWJvcnRlZC4iOwotICAgIH0KLQotICAgIGlmKCBuZG5ib29zdDo6bWluaW1hbF90ZXN0OjplcnJvcnNfY291bnRlcigpICE9IDAgKSB7Ci0gICAgICAgIHN0ZDo6Y2VyciA8PCAiXG4qKioqICIgPDwgZXJyb3JzX2NvdW50ZXIoKQotICAgICAgICAgICAgICAgICAgPDwgIiBlcnJvciIgPDwgKGVycm9yc19jb3VudGVyKCkgPiAxID8gInMiIDogIiIgKSA8PCAiIGRldGVjdGVkXG4iOwotCi0gICAgICAgIHJldHVybiBuZG5ib29zdDo6ZXhpdF90ZXN0X2ZhaWx1cmU7Ci0gICAgfQotCi0gICAgc3RkOjpjb3V0IDw8ICJcbioqKiogbm8gZXJyb3JzIGRldGVjdGVkXG4iOwotICAgIAotICAgIHJldHVybiBuZG5ib29zdDo6ZXhpdF9zdWNjZXNzOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RFU1RfTUlOSU1BTF9IUFBfMDcxODk0R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvbW9ja19vYmplY3QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L21vY2tfb2JqZWN0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTg1ZDk0ZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvbW9ja19vYmplY3QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzI4ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDU0NjMzICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBGYWNpbGl0aWVzIHRvIHBlcmZvcm0gZXhjZXB0aW9uIHNhZmV0eV90ZXN0cwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9NT0NLX09CSkVDVF9IUFBfMTEyMjA1R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfTU9DS19PQkpFQ1RfSFBQXzExMjIwNUdFUgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2ludGVyYWN0aW9uX2Jhc2VkLmhwcD4KLQotLy8gQm9vc3QKLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcHVuY3R1YXRpb24vY29tbWEuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgaXRlc3QgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgbW9ja19vYmplY3RfYmFzZSAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWNsYXNzIG1vY2tfb2JqZWN0X2Jhc2UgewotcHVibGljOgotICAgIG1vY2tfb2JqZWN0X2Jhc2UoKSB7fQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVDE+Ci0gICAgbW9ja19vYmplY3RfYmFzZSggVDEgY29uc3QmICkge30KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KLSAgICBtb2NrX29iamVjdF9iYXNlKCBUMSBjb25zdCYsIFQyIGNvbnN0JiApIHt9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzPgotICAgIG1vY2tfb2JqZWN0X2Jhc2UoIFQxIGNvbnN0JiwgVDIgY29uc3QmLCBUMyBjb25zdCYgKSB7fQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQ+Ci0gICAgbW9ja19vYmplY3RfYmFzZSggVDEgY29uc3QmLCBUMiBjb25zdCYsIFQzIGNvbnN0JiwgVDQgY29uc3QmICkge30KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNT4KLSAgICBtb2NrX29iamVjdF9iYXNlKCBUMSBjb25zdCYsIFQyIGNvbnN0JiwgVDMgY29uc3QmLCBUNCBjb25zdCYsIFQ1IGNvbnN0JiApIHt9Ci19OwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICBtb2NrX29iamVjdCBpbXBsZW1lbnRhdGlvbiBoZWxwZXJzICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLSNkZWZpbmUgTU9fT1BfSU1QTCggb3AsIGRlc2NyLCByZXQgKSAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBORE5CT09TVF9JVEVTVF9TQ09QRSggbW9ja19vYmplY3Q6Om9wZXJhdG9yIG9wICk7ICAgICAgICAgIFwKLSAgICBORE5CT09TVF9JVEVTVF9FUE9JTlQoIGRlc2NyICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICByZXR1cm4gcmV0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS8qKi8KLQotI2RlZmluZSBNT19VTkFSWV9PUCggb3AsIGRlc2NyICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotc2VsZl90eXBlIGNvbnN0JiBvcGVyYXRvciBvcCgpIGNvbnN0ICAgICAgICAgICAgICAgICAgICAgICAgXAoteyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIE1PX09QX0lNUEwoIG9wLCBkZXNjciwgcHJvdG90eXBlKCkgKTsgICAgICAgICAgICAgICAgICAgXAotfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLyoqLwotCi0jZGVmaW5lIE1PX1VOQVJZX0JPT0xfT1AoIG9wLCBkZXNjciApICAgICAgICAgICAgICAgICAgICAgICBcCi1ib29sIG9wZXJhdG9yIG9wKCkgY29uc3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi17ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgTU9fT1BfSU1QTCggb3AsIGRlc2NyLCAoISFORE5CT09TVF9JVEVTVF9EUE9JTlQoKSkgKTsgICAgICBcCi19ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0vKiovCi0KLSNkZWZpbmUgTU9fQklOQVJZX09QKCBvcCwgZGVzY3IgKSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXRlbXBsYXRlPGludCBpMSwgdHlwZW5hbWUgQmFzZTEsaW50IGkyLCB0eXBlbmFtZSBCYXNlMj4gICAgIFwKLWlubGluZSBtb2NrX29iamVjdDxpMSxCYXNlMT4gY29uc3QmICAgICAgICAgICAgICAgICAgICAgICAgIFwKLW9wZXJhdG9yIG9wKCBtb2NrX29iamVjdDxpMSxCYXNlMT4gY29uc3QmIG1vLCAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICBtb2NrX29iamVjdDxpMixCYXNlMj4gY29uc3QmICkgICAgICAgICAgICAgICAgIFwKLXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBNT19PUF9JTVBMKCBvcCwgZGVzY3IsIG1vICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXRlbXBsYXRlPGludCBpLCB0eXBlbmFtZSBCYXNlLCB0eXBlbmFtZSBUPiAgICAgICAgICAgICAgICAgIFwKLWlubGluZSBtb2NrX29iamVjdDxpLEJhc2U+IGNvbnN0JiAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLW9wZXJhdG9yIG9wKCBtb2NrX29iamVjdDxpLEJhc2U+IGNvbnN0JiBtbywgVCBjb25zdCYgKSAgICAgIFwKLXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBNT19PUF9JTVBMKCBvcCwgZGVzY3IsIG1vICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXRlbXBsYXRlPGludCBpLCB0eXBlbmFtZSBCYXNlLCB0eXBlbmFtZSBUPiAgICAgICAgICAgICAgICAgIFwKLWlubGluZSBtb2NrX29iamVjdDxpLEJhc2U+IGNvbnN0JiAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLW9wZXJhdG9yIG9wKCBUIGNvbnN0JiwgbW9ja19vYmplY3Q8aSxCYXNlPiBjb25zdCYgbW8gKSAgICAgIFwKLXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBNT19PUF9JTVBMKCBvcCwgZGVzY3IsIG1vICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS8qKi8KLQotI2RlZmluZSBNT19CSU5BUllfQk9PTF9PUCggb3AsIGRlc2NyICkgICAgICAgICAgICAgICAgICAgICAgXAotdGVtcGxhdGU8aW50IGkxLCB0eXBlbmFtZSBCYXNlMSxpbnQgaTIsIHR5cGVuYW1lIEJhc2UyPiAgICAgXAotaW5saW5lIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotb3BlcmF0b3Igb3AoIG1vY2tfb2JqZWN0PGkxLEJhc2UxPiBjb25zdCYsICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgIG1vY2tfb2JqZWN0PGkyLEJhc2UyPiBjb25zdCYgKSAgICAgICAgICAgICAgICAgXAoteyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIE1PX09QX0lNUEwoIG9wLCBkZXNjciwgTkROQk9PU1RfSVRFU1RfRFBPSU5UKCkgKTsgICAgICAgICAgXAotfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotdGVtcGxhdGU8aW50IGksIHR5cGVuYW1lIEJhc2UsIHR5cGVuYW1lIFQ+ICAgICAgICAgICAgICAgICAgXAotaW5saW5lIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotb3BlcmF0b3Igb3AoIG1vY2tfb2JqZWN0PGksQmFzZT4gY29uc3QmLCBUIGNvbnN0JiApICAgICAgICAgXAoteyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIE1PX09QX0lNUEwoIG9wLCBkZXNjciwgTkROQk9PU1RfSVRFU1RfRFBPSU5UKCkgKTsgICAgICAgICAgXAotfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotdGVtcGxhdGU8aW50IGksIHR5cGVuYW1lIEJhc2UsIHR5cGVuYW1lIFQ+ICAgICAgICAgICAgICAgICAgXAotaW5saW5lIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotb3BlcmF0b3Igb3AoIFQgY29uc3QmLCBtb2NrX29iamVjdDxpLEJhc2U+IGNvbnN0JiApICAgICAgICAgXAoteyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIE1PX09QX0lNUEwoIG9wLCBkZXNjciwgTkROQk9PU1RfSVRFU1RfRFBPSU5UKCkgKTsgICAgICAgICAgXAotfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLyoqLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgICBtb2NrX29iamVjdCAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlbXBsYXRlPGludCBpID0gMCwgdHlwZW5hbWUgQmFzZT1tb2NrX29iamVjdF9iYXNlPgotY2xhc3MgbW9ja19vYmplY3Q7Ci0KLXRlbXBsYXRlPGludCBpLCB0eXBlbmFtZSBCYXNlPgotY2xhc3MgbW9ja19vYmplY3QgOiBwdWJsaWMgQmFzZSB7Ci0gICAgLy8gUHJpdmF0ZSB0eXBlZWZzCi0gICAgdHlwZWRlZiBtb2NrX29iamVjdDxpLEJhc2U+IHNlbGZfdHlwZTsKLSAgICBzdHJ1Y3QgZHVtbXkgeyB2b2lkIG5vbm51bGwoKSB7fTsgfTsKLSAgICB0eXBlZGVmIHZvaWQgKGR1bW15Ojoqc2FmZV9ib29sKSgpOwotCi0gICAgLy8gcHJvdG90eXBlIGNvbnN0cnVjdG9yCi0gICAgbW9ja19vYmplY3QoIGR1bW15KiApIHt9Ci0KLXB1YmxpYzoKLSAgICBzdGF0aWMgbW9ja19vYmplY3QmIHByb3RvdHlwZSgpCi0gICAgewotICAgICAgICBzdGF0aWMgbW9ja19vYmplY3QgcCggcmVpbnRlcnByZXRfY2FzdDxkdW1teSo+KDApICk7IAotICAgICAgICByZXR1cm4gcDsKLSAgICB9Ci0KLSAgICAvLyBDb25zdHJ1Y3RvcnMKLSAgICBtb2NrX29iamVjdCgpCi0gICAgewotICAgICAgICBORE5CT09TVF9JVEVTVF9TQ09QRSggbW9ja19vYmplY3Q6Om1vY2tfb2JqZWN0ICk7Ci0gICAgICAgIE5ETkJPT1NUX0lURVNUX0VQT0lOVCggIk1vY2sgb2JqZWN0IGRlZmF1bHQgY29uc3RydWN0b3IiICk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVDE+Ci0gICAgbW9ja19vYmplY3QoIFQxIGNvbnN0JiBhcmcxICkKLSAgICA6IG1vY2tfb2JqZWN0X2Jhc2UoIGFyZzEgKQotICAgIHsKLSAgICAgICAgTkROQk9PU1RfSVRFU1RfU0NPUEUoIG1vY2tfb2JqZWN0Ojptb2NrX29iamVjdCApOwotICAgICAgICBORE5CT09TVF9JVEVTVF9FUE9JTlQoICJNb2NrIG9iamVjdCBjb25zdHJ1Y3RvciIgKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Ci0gICAgbW9ja19vYmplY3QoIFQxIGNvbnN0JiBhcmcxLCBUMiBjb25zdCYgYXJnMiApCi0gICAgOiBtb2NrX29iamVjdF9iYXNlKCBhcmcxLCBhcmcyICkKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX0lURVNUX1NDT1BFKCBtb2NrX29iamVjdDo6bW9ja19vYmplY3QgKTsKLSAgICAgICAgTkROQk9PU1RfSVRFU1RfRVBPSU5UKCAiTW9jayBvYmplY3QgY29uc3RydWN0b3IiICk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMz4KLSAgICBtb2NrX29iamVjdCggVDEgY29uc3QmIGFyZzEsIFQyIGNvbnN0JiBhcmcyLCBUMyBjb25zdCYgYXJnMyApCi0gICAgOiBtb2NrX29iamVjdF9iYXNlKCBhcmcxLCBhcmcyLCBhcmczICkKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX0lURVNUX1NDT1BFKCBtb2NrX29iamVjdDo6bW9ja19vYmplY3QgKTsKLSAgICAgICAgTkROQk9PU1RfSVRFU1RfRVBPSU5UKCAiTW9jayBvYmplY3QgY29uc3RydWN0b3IiICk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQ+Ci0gICAgbW9ja19vYmplY3QoIFQxIGNvbnN0JiBhcmcxLCBUMiBjb25zdCYgYXJnMiwgVDMgY29uc3QmIGFyZzMsIFQ0IGNvbnN0JiBhcmc0ICkKLSAgICA6IG1vY2tfb2JqZWN0X2Jhc2UoIGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQgKQotICAgIHsKLSAgICAgICAgTkROQk9PU1RfSVRFU1RfU0NPUEUoIG1vY2tfb2JqZWN0Ojptb2NrX29iamVjdCApOwotICAgICAgICBORE5CT09TVF9JVEVTVF9FUE9JTlQoICJNb2NrIG9iamVjdCBjb25zdHJ1Y3RvciIgKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDU+Ci0gICAgbW9ja19vYmplY3QoIFQxIGNvbnN0JiBhcmcxLCBUMiBjb25zdCYgYXJnMiwgVDMgY29uc3QmIGFyZzMsIFQ0IGNvbnN0JiBhcmc0LCBUNSBjb25zdCYgYXJnNSApCi0gICAgOiBtb2NrX29iamVjdF9iYXNlKCBhcmcxLCBhcmcyLCBhcmczLCBhcmc0LCBhcmc1ICkKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX0lURVNUX1NDT1BFKCBtb2NrX29iamVjdDo6bW9ja19vYmplY3QgKTsKLSAgICAgICAgTkROQk9PU1RfSVRFU1RfRVBPSU5UKCAiTW9jayBvYmplY3QgY29uc3RydWN0b3IiICk7Ci0gICAgfQotCi0gICAgbW9ja19vYmplY3QoIG1vY2tfb2JqZWN0IGNvbnN0JiApCi0gICAgewotICAgICAgICBORE5CT09TVF9JVEVTVF9TQ09QRSggbW9ja19vYmplY3Q6Om1vY2tfb2JqZWN0ICk7Ci0gICAgICAgIE5ETkJPT1NUX0lURVNUX0VQT0lOVCggIk1vY2sgb2JqZWN0IGNvcHkgY29uc3RydWN0b3IiICk7Ci0gICAgfQotCi0gICAgLy8gYXNzaWdubWVudAotICAgIHNlbGZfdHlwZSBjb25zdCYgICAgb3BlcmF0b3IgPSggbW9ja19vYmplY3QgY29uc3QmICkgY29uc3QKLSAgICB7Ci0gICAgICAgIE1PX09QX0lNUEwoID0sICJDb3B5IGFzc2lnbm1lbnQiLCBwcm90b3R5cGUoKSApOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIHNlbGZfdHlwZSBjb25zdCYgICAgb3BlcmF0b3IgPSggVCBjb25zdCYgKSBjb25zdAotICAgIHsKLSAgICAgICAgTU9fT1BfSU1QTCggPSwgIkNvcHkgYXNzaWdubWVudCIsIHByb3RvdHlwZSgpICk7Ci0gICAgfQotCi0gICAgLy8gVW5hcnkgb3BlcmF0b3JzCi0gICAgTU9fVU5BUllfQk9PTF9PUCggISwgIkxvZ2ljYWwgTk9UIG9wZXJhdG9yIiApCi0gICAgTU9fVU5BUllfT1AoICYsICJBZGRyZXNzLW9mIG9wZXJhdG9yIiApCi0gICAgTU9fVU5BUllfT1AoIH4sICJPbmUncyBjb21wbGVtZW50IG9wZXJhdG9yIiApCi0gICAgTU9fVU5BUllfT1AoICosICJQb2ludGVyIGRlcmVmZXJlbmNlIiApCi0gICAgTU9fVU5BUllfT1AoICssICJVbmFyeSBwbHVzIiApCi0KLSAgICAvLyBJbmNyZW1lbnQgYW5kIERlY3JlbWVudAotICAgIE1PX1VOQVJZX09QKCArKywgIlByZWZpeCBpbmNyZW1lbnQiICkKLSAgICBNT19VTkFSWV9PUCggLS0sICJQcmVmaXggZGVjcmVtZW50IiApCi0gICAgc2VsZl90eXBlIGNvbnN0JiAgICBvcGVyYXRvciArKyhpbnQpIGNvbnN0Ci0gICAgewotICAgICAgICBNT19PUF9JTVBMKCArKywgIlBvc3RmaXggaW5jcmVtZW50IiwgcHJvdG90eXBlKCkgKTsKLSAgICB9Ci0gICAgc2VsZl90eXBlIGNvbnN0JiAgICBvcGVyYXRvciAtLShpbnQpIGNvbnN0Ci0gICAgewotICAgICAgICBNT19PUF9JTVBMKCAtLSwgIlBvc3RmaXggZGVjcmVtZW50IiwgcHJvdG90eXBlKCkgKTsKLSAgICB9Ci0KLSAgICAvLyBCb29sIGNvbnRleHQgY29udmVydGlvbgotICAgIG9wZXJhdG9yIHNhZmVfYm9vbCgpIGNvbnN0Ci0gICAgewotICAgICAgICBNT19PUF9JTVBMKCBzYWZlX2Jvb2wsICJCb29sIGNvbnRleHQgY29udmVyc2lvbiIsCi0gICAgICAgICAgICAgICAgICAgIChORE5CT09TVF9JVEVTVF9EUE9JTlQoKSA/IDAgOiAmZHVtbXk6Om5vbm51bGwpICk7Ci0gICAgfQotCi0gICAgLy8gRnVuY3Rpb24tY2FsbCBvcGVyYXRvcnMKLSAgICBzZWxmX3R5cGUgY29uc3QmICAgIG9wZXJhdG9yICgpKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIE1PX09QX0lNUEwoICgpLCAiMC1hcml0eSBmdW5jdGlvbi1jYWxsIiwgcHJvdG90eXBlKCkgKTsKLSAgICB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVDE+Ci0gICAgc2VsZl90eXBlIGNvbnN0JiAgICBvcGVyYXRvciAoKSggVDEgY29uc3QmIGFyZzEgKSBjb25zdAotICAgIHsKLSAgICAgICAgTU9fT1BfSU1QTCggKCksICIxLWFyaXR5IGZ1bmN0aW9uLWNhbGwiLCBwcm90b3R5cGUoKSApOwotICAgIH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Ci0gICAgc2VsZl90eXBlIGNvbnN0JiAgICBvcGVyYXRvciAoKSggVDEgY29uc3QmLCBUMiBjb25zdCYgKSBjb25zdAotICAgIHsKLSAgICAgICAgTU9fT1BfSU1QTCggKCksICIyLWFyaXR5IGZ1bmN0aW9uLWNhbGwiLCBwcm90b3R5cGUoKSApOwotICAgIH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzPgotICAgIHNlbGZfdHlwZSBjb25zdCYgICAgb3BlcmF0b3IgKCkoIFQxIGNvbnN0JiwgVDIgY29uc3QmLCBUMyBjb25zdCYgKSBjb25zdAotICAgIHsKLSAgICAgICAgTU9fT1BfSU1QTCggKCksICIzLWFyaXR5IGZ1bmN0aW9uLWNhbGwiLCBwcm90b3R5cGUoKSApOwotICAgIH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUND4KLSAgICBzZWxmX3R5cGUgY29uc3QmICAgIG9wZXJhdG9yICgpKCBUMSBjb25zdCYsIFQyIGNvbnN0JiwgVDMgY29uc3QmLCBUNCBjb25zdCYgKSBjb25zdAotICAgIHsKLSAgICAgICAgTU9fT1BfSU1QTCggKCksICI0LWFyaXR5IGZ1bmN0aW9uLWNhbGwiLCBwcm90b3R5cGUoKSApOwotICAgIH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDU+Ci0gICAgc2VsZl90eXBlIGNvbnN0JiAgICBvcGVyYXRvciAoKSggVDEgY29uc3QmLCBUMiBjb25zdCYsIFQzIGNvbnN0JiwgVDQgY29uc3QmLCBUNSBjb25zdCYgKSBjb25zdAotICAgIHsKLSAgICAgICAgTU9fT1BfSU1QTCggKCksICI1LWFyaXR5IGZ1bmN0aW9uLWNhbGwiLCBwcm90b3R5cGUoKSApOwotICAgIH0KLQotICAgIC8vIFN1YnN0cmlwdGluZwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc2VsZl90eXBlIGNvbnN0JiAgICBvcGVyYXRvciBbXSggVCBjb25zdCYgKSBjb25zdAotICAgIHsKLSAgICAgICAgTU9fT1BfSU1QTCggW10sICJTdWJzdHJpcHRpbmciLCBwcm90b3R5cGUoKSApOwotICAgIH0KLQotICAgIC8vIENsYXNzIG1lbWJlciBhY2Nlc3MKLSAgICBzZWxmX3R5cGUgY29uc3QqICAgIG9wZXJhdG9yLT4oKSBjb25zdAotICAgIHsKLSAgICAgICAgTU9fT1BfSU1QTCggLT4sICJDbGFzcyBtZW1iZXIgYWNjZXNzIiwgdGhpcyApOwotICAgIH0KLX07Ci0KLS8vICEhIE1PX0JJTkFSWV9PUCggTkROQk9PU1RfUFBfQ09NTUEoKSwgIkNvbW1hIG9wZXJhdG9yIiApCi0KLU1PX0JJTkFSWV9CT09MX09QKCAhPSwgIkluZXF1YWxpdHkiICkKLU1PX0JJTkFSWV9PUCggJSwgIk1vZHVsdXMiICkKLU1PX0JJTkFSWV9PUCggJT0sICJNb2R1bHVzL2Fzc2lnbm1lbnQiICkKLU1PX0JJTkFSWV9PUCggJiwgIkJpdHdpc2UgQU5EIiApCi1NT19CSU5BUllfQk9PTF9PUCggJiYsICJMb2dpY2FsIEFORCIgKQotTU9fQklOQVJZX09QKCAmPSwgIkJpdHdpc2UgQU5EL2Fzc2lnbm1lbnQiICkKLU1PX0JJTkFSWV9PUCggKiwgIk11bHRpcGxpY2F0aW9uIiApCi1NT19CSU5BUllfT1AoICo9LCAiTXVsdGlwbGljYXRpb24vYXNzaWdubWVudCIgKQotTU9fQklOQVJZX09QKCArLCAiQWRkaXRpb24iICkKLU1PX0JJTkFSWV9PUCggKz0sICJBZGRpdGlvbi9hc3NpZ25tZW50IiApCi0vL01PX0JJTkFSWV9PUCggLSwgIlN1YnRyYWN0aW9uIiApCi1NT19CSU5BUllfT1AoIC09LCAiU3VidHJhY3Rpb24vYXNzaWdubWVudCIgKQotTU9fQklOQVJZX09QKCAtPiosICJQb2ludGVyLXRvLW1lbWJlciBzZWxlY3Rpb24iICkKLU1PX0JJTkFSWV9PUCggLywgIkRpdmlzaW9uIiApCi1NT19CSU5BUllfT1AoIC89LCAiRGl2aXNpb24vYXNzaWdubWVudCIgKQotTU9fQklOQVJZX0JPT0xfT1AoIDwsICJMZXNzIHRoYW4iICkKLU1PX0JJTkFSWV9PUCggPDw9LCAiTGVmdCBzaGlmdC9hc3NpZ25tZW50IiApCi1NT19CSU5BUllfQk9PTF9PUCggPD0sICJMZXNzIHRoYW4gb3IgZXF1YWwgdG8iICkKLU1PX0JJTkFSWV9CT09MX09QKCA9PSwgIkVxdWFsaXR5IiApCi1NT19CSU5BUllfQk9PTF9PUCggPiwgIkdyZWF0ZXIgdGhhbiIgKQotTU9fQklOQVJZX0JPT0xfT1AoID49LCAiR3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIiApCi1NT19CSU5BUllfT1AoID4+PSwgIlJpZ2h0IHNoaWZ0L2Fzc2lnbm1lbnQiICkKLU1PX0JJTkFSWV9PUCggXiwgIkV4Y2x1c2l2ZSBPUiIgKQotTU9fQklOQVJZX09QKCBePSwgIkV4Y2x1c2l2ZSBPUi9hc3NpZ25tZW50IiApCi1NT19CSU5BUllfT1AoIHwsICJCaXR3aXNlIGluY2x1c2l2ZSBPUiIgKQotTU9fQklOQVJZX09QKCB8PSwgIkJpdHdpc2UgaW5jbHVzaXZlIE9SL2Fzc2lnbm1lbnQiICkKLU1PX0JJTkFSWV9CT09MX09QKCB8fCwgIkxvZ2ljYWwgT1IiICkKLQotTU9fQklOQVJZX09QKCA8PCwgIkxlZnQgc2hpZnQiICkKLU1PX0JJTkFSWV9PUCggPj4sICJSaWdodCBzaGlmdCIgKQotCi19IC8vIG5hbWVzcGFjZSBpdGVzdAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RFU1RfTU9DS19PQkpFQ1RfSFBQXzExMjIwNUdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L291dHB1dC9jb21waWxlcl9sb2dfZm9ybWF0dGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9vdXRwdXQvY29tcGlsZXJfbG9nX2Zvcm1hdHRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY0MWRmMDcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L291dHB1dC9jb21waWxlcl9sb2dfZm9ybWF0dGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY4ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1Nzk5MiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogY29udGFpbnMgY29tcGlsZXIgbGlrZSBMb2cgZm9ybWF0dGVyIGRlZmluaXRpb24KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfQ09NUElMRVJfTE9HX0ZPUk1BVFRFUl9IUFBfMDIwMTA1R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfQ09NUElMRVJfTE9HX0ZPUk1BVFRFUl9IUFBfMDIwMTA1R0VSCi0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9nbG9iYWxfdHlwZWRlZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91bml0X3Rlc3RfbG9nX2Zvcm1hdHRlci5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSB1bml0X3Rlc3QgewotCi1uYW1lc3BhY2Ugb3V0cHV0IHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgIGNvbXBpbGVyX2xvZ19mb3JtYXR0ZXIgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1jbGFzcyBORE5CT09TVF9URVNUX0RFQ0wgY29tcGlsZXJfbG9nX2Zvcm1hdHRlciA6IHB1YmxpYyB1bml0X3Rlc3RfbG9nX2Zvcm1hdHRlciB7Ci1wdWJsaWM6Ci0gICAgLy8gRm9ybWF0dGVyIGludGVyZmFjZQotICAgIHZvaWQgICAgbG9nX3N0YXJ0KCBzdGQ6Om9zdHJlYW0mLCBjb3VudGVyX3QgdGVzdF9jYXNlc19hbW91bnQgKTsKLSAgICB2b2lkICAgIGxvZ19maW5pc2goIHN0ZDo6b3N0cmVhbSYgKTsKLSAgICB2b2lkICAgIGxvZ19idWlsZF9pbmZvKCBzdGQ6Om9zdHJlYW0mICk7Ci0KLSAgICB2b2lkICAgIHRlc3RfdW5pdF9zdGFydCggc3RkOjpvc3RyZWFtJiwgdGVzdF91bml0IGNvbnN0JiB0dSApOwotICAgIHZvaWQgICAgdGVzdF91bml0X2ZpbmlzaCggc3RkOjpvc3RyZWFtJiwgdGVzdF91bml0IGNvbnN0JiB0dSwgdW5zaWduZWQgbG9uZyBlbGFwc2VkICk7Ci0gICAgdm9pZCAgICB0ZXN0X3VuaXRfc2tpcHBlZCggc3RkOjpvc3RyZWFtJiwgdGVzdF91bml0IGNvbnN0JiB0dSApOwotCi0gICAgdm9pZCAgICBsb2dfZXhjZXB0aW9uKCBzdGQ6Om9zdHJlYW0mLCBsb2dfY2hlY2twb2ludF9kYXRhIGNvbnN0JiwgZXhlY3V0aW9uX2V4Y2VwdGlvbiBjb25zdCYgZXggKTsKLQotICAgIHZvaWQgICAgbG9nX2VudHJ5X3N0YXJ0KCBzdGQ6Om9zdHJlYW0mLCBsb2dfZW50cnlfZGF0YSBjb25zdCYsIGxvZ19lbnRyeV90eXBlcyBsZXQgKTsKLSAgICB2b2lkICAgIGxvZ19lbnRyeV92YWx1ZSggc3RkOjpvc3RyZWFtJiwgY29uc3Rfc3RyaW5nIHZhbHVlICk7Ci0gICAgdm9pZCAgICBsb2dfZW50cnlfdmFsdWUoIHN0ZDo6b3N0cmVhbSYsIGxhenlfb3N0cmVhbSBjb25zdCYgdmFsdWUgKTsKLSAgICB2b2lkICAgIGxvZ19lbnRyeV9maW5pc2goIHN0ZDo6b3N0cmVhbSYgKTsKLQotcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCAgICBwcmludF9wcmVmaXgoIHN0ZDo6b3N0cmVhbSYsIGNvbnN0X3N0cmluZyBmaWxlLCBzdGQ6OnNpemVfdCBsaW5lICk7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBvdXRwdXQKLQotfSAvLyBuYW1lc3BhY2UgdW5pdF90ZXN0Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9DT01QSUxFUl9MT0dfRk9STUFUVEVSX0hQUF8wMjAxMDVHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9vdXRwdXQvcGxhaW5fcmVwb3J0X2Zvcm1hdHRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3Qvb3V0cHV0L3BsYWluX3JlcG9ydF9mb3JtYXR0ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOTA3YzNmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9vdXRwdXQvcGxhaW5fcmVwb3J0X2Zvcm1hdHRlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNDkzMTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IHBsYWluIHJlcG9ydCBmb3JtYXR0ZXIgaW1wbGVtZW50YXRpb24KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfUExBSU5fUkVQT1JUX0ZPUk1BVFRFUl9IUFBfMDIwMTA1R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfUExBSU5fUkVQT1JUX0ZPUk1BVFRFUl9IUFBfMDIwMTA1R0VSCi0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9nbG9iYWxfdHlwZWRlZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9yZXN1bHRzX3JlcG9ydGVyLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIHVuaXRfdGVzdCB7Ci0KLW5hbWVzcGFjZSBvdXRwdXQgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgcGxhaW5fcmVwb3J0X2Zvcm1hdHRlciAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWNsYXNzIHBsYWluX3JlcG9ydF9mb3JtYXR0ZXIgOiBwdWJsaWMgcmVzdWx0c19yZXBvcnRlcjo6Zm9ybWF0IHsKLXB1YmxpYzoKLSAgICAvLyBGb3JtYXR0ZXIgaW50ZXJmYWNlCi0gICAgdm9pZCAgICByZXN1bHRzX3JlcG9ydF9zdGFydCggc3RkOjpvc3RyZWFtJiBvc3RyICk7Ci0gICAgdm9pZCAgICByZXN1bHRzX3JlcG9ydF9maW5pc2goIHN0ZDo6b3N0cmVhbSYgb3N0ciApOwotCi0gICAgdm9pZCAgICB0ZXN0X3VuaXRfcmVwb3J0X3N0YXJ0KCB0ZXN0X3VuaXQgY29uc3QmLCBzdGQ6Om9zdHJlYW0mIG9zdHIgKTsKLSAgICB2b2lkICAgIHRlc3RfdW5pdF9yZXBvcnRfZmluaXNoKCB0ZXN0X3VuaXQgY29uc3QmLCBzdGQ6Om9zdHJlYW0mIG9zdHIgKTsKLQotICAgIHZvaWQgICAgZG9fY29uZmlybWF0aW9uX3JlcG9ydCggdGVzdF91bml0IGNvbnN0Jiwgc3RkOjpvc3RyZWFtJiBvc3RyICk7Ci0KLXByaXZhdGU6Ci0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgY291bnRlcl90IG1faW5kZW50OwotfTsKLQotfSAvLyBuYW1lc3BhY2Ugb3V0cHV0Ci0KLX0gLy8gbmFtZXNwYWNlIHVuaXRfdGVzdAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RFU1RfUExBSU5fUkVQT1JUX0ZPUk1BVFRFUl9IUFBfMDIwMTA1R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3Qvb3V0cHV0L3htbF9sb2dfZm9ybWF0dGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9vdXRwdXQveG1sX2xvZ19mb3JtYXR0ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZTU0OGFkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9vdXRwdXQveG1sX2xvZ19mb3JtYXR0ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzIgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDU3OTkyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBjb250YWlucyBYTUwgTG9nIGZvcm1hdHRlciBkZWZpbml0aW9uCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX1hNTF9MT0dfRk9STUFUVEVSXzAyMDEwNUdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX1hNTF9MT0dfRk9STUFUVEVSXzAyMDEwNUdFUgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZ2xvYmFsX3R5cGVkZWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdW5pdF90ZXN0X2xvZ19mb3JtYXR0ZXIuaHBwPgotCi0vLyBTVEwKLSNpbmNsdWRlIDxjc3RkZGVmPiAvLyBzdGQ6OnNpemVfdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgdW5pdF90ZXN0IHsKLQotbmFtZXNwYWNlIG91dHB1dCB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgIHhtbF9sb2dfZm9ybWF0dGVyICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotY2xhc3MgeG1sX2xvZ19mb3JtYXR0ZXIgOiBwdWJsaWMgdW5pdF90ZXN0X2xvZ19mb3JtYXR0ZXIgewotcHVibGljOgotICAgIC8vIEZvcm1hdHRlciBpbnRlcmZhY2UKLSAgICB2b2lkICAgIGxvZ19zdGFydCggc3RkOjpvc3RyZWFtJiwgY291bnRlcl90IHRlc3RfY2FzZXNfYW1vdW50ICk7Ci0gICAgdm9pZCAgICBsb2dfZmluaXNoKCBzdGQ6Om9zdHJlYW0mICk7Ci0gICAgdm9pZCAgICBsb2dfYnVpbGRfaW5mbyggc3RkOjpvc3RyZWFtJiApOwotCi0gICAgdm9pZCAgICB0ZXN0X3VuaXRfc3RhcnQoIHN0ZDo6b3N0cmVhbSYsIHRlc3RfdW5pdCBjb25zdCYgdHUgKTsKLSAgICB2b2lkICAgIHRlc3RfdW5pdF9maW5pc2goIHN0ZDo6b3N0cmVhbSYsIHRlc3RfdW5pdCBjb25zdCYgdHUsIHVuc2lnbmVkIGxvbmcgZWxhcHNlZCApOwotICAgIHZvaWQgICAgdGVzdF91bml0X3NraXBwZWQoIHN0ZDo6b3N0cmVhbSYsIHRlc3RfdW5pdCBjb25zdCYgdHUgKTsKLQotICAgIHZvaWQgICAgbG9nX2V4Y2VwdGlvbiggc3RkOjpvc3RyZWFtJiwgbG9nX2NoZWNrcG9pbnRfZGF0YSBjb25zdCYsIGV4ZWN1dGlvbl9leGNlcHRpb24gY29uc3QmIGV4ICk7Ci0KLSAgICB2b2lkICAgIGxvZ19lbnRyeV9zdGFydCggc3RkOjpvc3RyZWFtJiwgbG9nX2VudHJ5X2RhdGEgY29uc3QmLCBsb2dfZW50cnlfdHlwZXMgbGV0ICk7Ci0gICAgdXNpbmcgICB1bml0X3Rlc3RfbG9nX2Zvcm1hdHRlcjo6bG9nX2VudHJ5X3ZhbHVlOyAvLyBicmluZyBiYXNlIGNsYXNzIGZ1bmN0aW9ucyBpbnRvIG92ZXJsb2FkIHNldAotICAgIHZvaWQgICAgbG9nX2VudHJ5X3ZhbHVlKCBzdGQ6Om9zdHJlYW0mLCBjb25zdF9zdHJpbmcgdmFsdWUgKTsKLSAgICB2b2lkICAgIGxvZ19lbnRyeV9maW5pc2goIHN0ZDo6b3N0cmVhbSYgKTsKLQotcHJpdmF0ZToKLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICBjb25zdF9zdHJpbmcgICAgbV9jdXJyX3RhZzsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIG91dHB1dAotCi19IC8vIG5hbWVzcGFjZSB1bml0X3Rlc3QKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX1hNTF9MT0dfRk9STUFUVEVSXzAyMDEwNUdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L291dHB1dC94bWxfcmVwb3J0X2Zvcm1hdHRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3Qvb3V0cHV0L3htbF9yZXBvcnRfZm9ybWF0dGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTdmMDJjMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3Qvb3V0cHV0L3htbF9yZXBvcnRfZm9ybWF0dGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU4ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA0OTMxMiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogWE1MIHJlcG9ydCBmb3JtYXR0ZXIgaW1wbGVtZW50YXRpb24KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfWE1MX1JFUE9SVF9GT1JNQVRURVJfSFBQXzAyMDEwNUdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX1hNTF9SRVBPUlRfRk9STUFUVEVSX0hQUF8wMjAxMDVHRVIKLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2dsb2JhbF90eXBlZGVmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3Jlc3VsdHNfcmVwb3J0ZXIuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgdW5pdF90ZXN0IHsKLQotbmFtZXNwYWNlIG91dHB1dCB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgeG1sX3JlcG9ydF9mb3JtYXR0ZXIgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotY2xhc3MgeG1sX3JlcG9ydF9mb3JtYXR0ZXIgOiBwdWJsaWMgcmVzdWx0c19yZXBvcnRlcjo6Zm9ybWF0IHsKLXB1YmxpYzoKLSAgICAvLyBGb3JtYXR0ZXIgaW50ZXJmYWNlCi0gICAgdm9pZCAgICByZXN1bHRzX3JlcG9ydF9zdGFydCggc3RkOjpvc3RyZWFtJiBvc3RyICk7Ci0gICAgdm9pZCAgICByZXN1bHRzX3JlcG9ydF9maW5pc2goIHN0ZDo6b3N0cmVhbSYgb3N0ciApOwotCi0gICAgdm9pZCAgICB0ZXN0X3VuaXRfcmVwb3J0X3N0YXJ0KCB0ZXN0X3VuaXQgY29uc3QmLCBzdGQ6Om9zdHJlYW0mIG9zdHIgKTsKLSAgICB2b2lkICAgIHRlc3RfdW5pdF9yZXBvcnRfZmluaXNoKCB0ZXN0X3VuaXQgY29uc3QmLCBzdGQ6Om9zdHJlYW0mIG9zdHIgKTsKLQotICAgIHZvaWQgICAgZG9fY29uZmlybWF0aW9uX3JlcG9ydCggdGVzdF91bml0IGNvbnN0Jiwgc3RkOjpvc3RyZWFtJiBvc3RyICk7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBvdXRwdXQKLQotfSAvLyBuYW1lc3BhY2UgdW5pdF90ZXN0Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9YTUxfUkVQT1JUX0ZPUk1BVFRFUl9IUFBfMDIwMTA1R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3Qvb3V0cHV0X3Rlc3Rfc3RyZWFtLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9vdXRwdXRfdGVzdF9zdHJlYW0uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZjBhYjAyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9vdXRwdXRfdGVzdF9zdHJlYW0uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzggKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwMS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDQ5MzEyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBvdXRwdXRfdGVzdF9zdHJlYW0gY2xhc3MgZGVmaW5pdGlvbgotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9PVVRQVVRfVEVTVF9TVFJFQU1fSFBQXzAxMjcwNUdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX09VVFBVVF9URVNUX1NUUkVBTV9IUFBfMDEyNzA1R0VSCi0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9nbG9iYWxfdHlwZWRlZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy93cmFwX3N0cmluZ3N0cmVhbS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9wcmVkaWNhdGVfcmVzdWx0LmhwcD4KLQotLy8gU1RMCi0jaW5jbHVkZSA8Y3N0ZGRlZj4gICAgICAgICAgLy8gZm9yIHN0ZDo6c2l6ZV90Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgIG91dHB1dF90ZXN0X3N0cmVhbSAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotLy8gY2xhc3MgdG8gYmUgdXNlZCB0byBzaW1wbGlmeSB0ZXN0aW5nIG9mIG9zdHJlYW0tYmFzZWQgb3V0cHV0IG9wZXJhdGlvbnMKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIHRlc3RfdG9vbHMgewotCi1jbGFzcyBORE5CT09TVF9URVNUX0RFQ0wgb3V0cHV0X3Rlc3Rfc3RyZWFtIDogcHVibGljIHdyYXBfc3RyaW5nc3RyZWFtOjp3cmFwcGVkX3N0cmVhbSB7Ci0gICAgdHlwZWRlZiB1bml0X3Rlc3Q6OmNvbnN0X3N0cmluZyBjb25zdF9zdHJpbmc7Ci0gICAgdHlwZWRlZiBwcmVkaWNhdGVfcmVzdWx0ICAgICAgICByZXN1bHRfdHlwZTsKLXB1YmxpYzoKLSAgICAvLyBDb25zdHJ1Y3RvcgotICAgIGV4cGxpY2l0ICAgICAgICBvdXRwdXRfdGVzdF9zdHJlYW0oIGNvbnN0X3N0cmluZyAgICBwYXR0ZXJuX2ZpbGVfbmFtZSA9IGNvbnN0X3N0cmluZygpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgICAgICAgICAgICBtYXRjaF9vcl9zYXZlICAgICA9IHRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCAgICAgICAgICAgIHRleHRfb3JfYmluYXJ5ICAgID0gdHJ1ZSApOwotCi0gICAgLy8gRGVzdHJ1Y3RvcgotICAgIH5vdXRwdXRfdGVzdF9zdHJlYW0oKTsKLQotICAgIC8vIGNoZWNraW5nIGZ1bmN0aW9uCi0gICAgcmVzdWx0X3R5cGUgICAgIGlzX2VtcHR5KCBib29sIGZsdXNoX3N0cmVhbSA9IHRydWUgKTsKLSAgICByZXN1bHRfdHlwZSAgICAgY2hlY2tfbGVuZ3RoKCBzdGQ6OnNpemVfdCBsZW5ndGgsIGJvb2wgZmx1c2hfc3RyZWFtID0gdHJ1ZSApOwotICAgIHJlc3VsdF90eXBlICAgICBpc19lcXVhbCggY29uc3Rfc3RyaW5nIGFyZ18sIGJvb2wgZmx1c2hfc3RyZWFtID0gdHJ1ZSApOwotICAgIHJlc3VsdF90eXBlICAgICBtYXRjaF9wYXR0ZXJuKCBib29sIGZsdXNoX3N0cmVhbSA9IHRydWUgKTsKLQotICAgIC8vIGV4cGxpY2l0IGZsdXNoCi0gICAgdm9pZCAgICAgICAgICAgIGZsdXNoKCk7Ci0KLXByaXZhdGU6Ci0gICAgLy8gaGVscGVyIGZ1bmN0aW9ucwotICAgIHN0ZDo6c2l6ZV90ICAgICBsZW5ndGgoKTsKLSAgICB2b2lkICAgICAgICAgICAgc3luYygpOwotCi0gICAgc3RydWN0IEltcGw7Ci0gICAgSW1wbCogICAgICAgICAgIG1fcGltcGw7Ci19OwotCi19IC8vIG5hbWVzcGFjZSB0ZXN0X3Rvb2xzCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9PVVRQVVRfVEVTVF9TVFJFQU1fSFBQXzAxMjcwNUdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3ByZWRpY2F0ZV9yZXN1bHQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3ByZWRpY2F0ZV9yZXN1bHQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MzJiNjg5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9wcmVkaWNhdGVfcmVzdWx0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDg4ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDEtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1NDYzMyAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogZW5oYW5jZWQgcmVzdWx0IGZvciB0ZXN0IHByZWRpY2F0ZSB0aGF0IGluY2x1ZGUgbWVzc2FnZSBleHBsYWluaW5nIGZhaWx1cmUKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfUFJFRElDQVRFX1JFU1VMVF9IUFBfMDEyNzA1R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfUFJFRElDQVRFX1JFU1VMVF9IUFBfMDEyNzA1R0VSCi0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2NsYXNzX3Byb3BlcnRpZXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvd3JhcF9zdHJpbmdzdHJlYW0uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvYmFzaWNfY3N0cmluZy9iYXNpY19jc3RyaW5nLmhwcD4KLQotLy8gQm9vc3QKLSNpbmNsdWRlIDxuZG5ib29zdC9zaGFyZWRfcHRyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLS8vIFNUTAotI2luY2x1ZGUgPGNzdGRkZWY+ICAgICAgICAgIC8vIGZvciBzdGQ6OnNpemVfdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgdGVzdF90b29scyB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICBwcmVkaWNhdGVfcmVzdWx0ICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotY2xhc3MgTkROQk9PU1RfVEVTVF9ERUNMIHByZWRpY2F0ZV9yZXN1bHQgewotICAgIHR5cGVkZWYgdW5pdF90ZXN0Ojpjb25zdF9zdHJpbmcgICAgICBjb25zdF9zdHJpbmc7Ci0gICAgc3RydWN0IGR1bW15IHsgdm9pZCBub25udWxsKCkge307IH07Ci0gICAgdHlwZWRlZiB2b2lkIChkdW1teTo6KnNhZmVfYm9vbCkoKTsKLQotcHVibGljOgotICAgIC8vIENvbnN0cnVjdG9yCi0gICAgcHJlZGljYXRlX3Jlc3VsdCggYm9vbCBwdl8gKSAKLSAgICA6IHBfcHJlZGljYXRlX3ZhbHVlKCBwdl8gKQotICAgIHt9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBCb29sQ29udmVydGFibGU+Ci0gICAgcHJlZGljYXRlX3Jlc3VsdCggQm9vbENvbnZlcnRhYmxlIGNvbnN0JiBwdl8gKSA6IHBfcHJlZGljYXRlX3ZhbHVlKCAhIXB2XyApIHt9Ci0KLSAgICAvLyBBY2Nlc3MgbWV0aG9kcwotICAgIGJvb2wgICAgICAgICAgICAgICAgb3BlcmF0b3IhKCkgY29uc3QgICAgICAgICAgIHsgcmV0dXJuICFwX3ByZWRpY2F0ZV92YWx1ZTsgfQotICAgIHZvaWQgICAgICAgICAgICAgICAgb3BlcmF0b3I9KCBib29sIHB2XyApICAgICAgIHsgcF9wcmVkaWNhdGVfdmFsdWUudmFsdWUgPSBwdl87IH0KLSAgICBvcGVyYXRvciAgICAgICAgICAgIHNhZmVfYm9vbCgpIGNvbnN0ICAgICAgICAgICB7IHJldHVybiAhIXBfcHJlZGljYXRlX3ZhbHVlID8gJmR1bW15Ojpub25udWxsIDogMDsgfQotCi0gICAgLy8gUHVibGljIHByb3BlcnRpZXMKLSAgICBORE5CT09TVF9SRUFET05MWV9QUk9QRVJUWSggYm9vbCwgKHByZWRpY2F0ZV9yZXN1bHQpICkgcF9wcmVkaWNhdGVfdmFsdWU7Ci0KLSAgICAvLyBBY2Nlc3MgbWV0aG9kcwotICAgIGJvb2wgICAgICAgICAgICAgICAgaGFzX2VtcHR5X21lc3NhZ2UoKSBjb25zdCAgIHsgcmV0dXJuICFtX21lc3NhZ2U7IH0KLSAgICB3cmFwX3N0cmluZ3N0cmVhbSYgIG1lc3NhZ2UoKQotICAgIHsKLSAgICAgICAgaWYoICFtX21lc3NhZ2UgKQotICAgICAgICAgICAgbV9tZXNzYWdlLnJlc2V0KCBuZXcgd3JhcF9zdHJpbmdzdHJlYW0gKTsKLQotICAgICAgICByZXR1cm4gKm1fbWVzc2FnZTsKLSAgICB9Ci0gICAgY29uc3Rfc3RyaW5nICAgICAgICBtZXNzYWdlKCkgY29uc3QgICAgICAgICAgICAgICAgICAgeyByZXR1cm4gIW1fbWVzc2FnZSA/IGNvbnN0X3N0cmluZygpIDogY29uc3Rfc3RyaW5nKCBtX21lc3NhZ2UtPnN0cigpICk7IH0KLQotcHJpdmF0ZToKLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICBzaGFyZWRfcHRyPHdyYXBfc3RyaW5nc3RyZWFtPiBtX21lc3NhZ2U7Ci19OwotCi19IC8vIG5hbWVzcGFjZSB0ZXN0X3Rvb2xzCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9QUkVESUNBVEVfUkVTVUxUX0hQUF8wMTI3MDVHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9wcm9ncmVzc19tb25pdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9wcm9ncmVzc19tb25pdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmYyYzQ4OS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvcHJvZ3Jlc3NfbW9uaXRvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNDkzMTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGRlZmluZXMgc2ltcGxlIHRleHQgYmFzZWQgcHJvZ3Jlc3MgbW9uaXRvcgotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9QUk9HUkVTU19NT05JVE9SX0hQUF8wMjAxMDVHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9QUk9HUkVTU19NT05JVE9SX0hQUF8wMjAxMDVHRVIKLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdGVzdF9vYnNlcnZlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy90cml2aWFsX3NpbmdsZXRvbi5ocHA+Ci0KLS8vIFNUTAotI2luY2x1ZGUgPGlvc2Z3ZD4gICAvLyBmb3Igc3RkOjpvc3RyZWFtJgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgdW5pdF90ZXN0IHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgIHByb2dyZXNzX21vbml0b3IgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1jbGFzcyBORE5CT09TVF9URVNUX0RFQ0wgcHJvZ3Jlc3NfbW9uaXRvcl90IDogcHVibGljIHRlc3Rfb2JzZXJ2ZXIsIHB1YmxpYyBzaW5nbGV0b248cHJvZ3Jlc3NfbW9uaXRvcl90PiB7Ci1wdWJsaWM6Ci0gICAgLy8gdGVzdCBvYnNlcnZlciBpbnRlcmZhY2UKLSAgICB2b2lkICAgIHRlc3Rfc3RhcnQoIGNvdW50ZXJfdCB0ZXN0X2Nhc2VzX2Ftb3VudCApOwotICAgIHZvaWQgICAgdGVzdF9maW5pc2goKSB7fQotICAgIHZvaWQgICAgdGVzdF9hYm9ydGVkKCk7Ci0KLSAgICB2b2lkICAgIHRlc3RfdW5pdF9zdGFydCggdGVzdF91bml0IGNvbnN0JiApIHt9Ci0gICAgdm9pZCAgICB0ZXN0X3VuaXRfZmluaXNoKCB0ZXN0X3VuaXQgY29uc3QmLCB1bnNpZ25lZCBsb25nICk7Ci0gICAgdm9pZCAgICB0ZXN0X3VuaXRfc2tpcHBlZCggdGVzdF91bml0IGNvbnN0JiApOwotICAgIHZvaWQgICAgdGVzdF91bml0X2Fib3J0ZWQoIHRlc3RfdW5pdCBjb25zdCYgKSB7fQotCi0gICAgdm9pZCAgICBhc3NlcnRpb25fcmVzdWx0KCBib29sICkge30KLSAgICB2b2lkICAgIGV4Y2VwdGlvbl9jYXVnaHQoIGV4ZWN1dGlvbl9leGNlcHRpb24gY29uc3QmICkge30KLQotICAgIC8vIGNvbmZpZ3VyYXRpb24KLSAgICB2b2lkICAgIHNldF9zdHJlYW0oIHN0ZDo6b3N0cmVhbSYgKTsKLQotcHJpdmF0ZToKLSAgICBORE5CT09TVF9URVNUX1NJTkdMRVRPTl9DT05TKCBwcm9ncmVzc19tb25pdG9yX3QgKTsKLX07IC8vIHByb2dyZXNzX21vbml0b3JfdAotCi1ORE5CT09TVF9URVNUX1NJTkdMRVRPTl9JTlNUKCBwcm9ncmVzc19tb25pdG9yICkKLQotfSAvLyBuYW1lc3BhY2UgdW5pdF90ZXN0Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9QUk9HUkVTU19NT05JVE9SX0hQUF8wMjAxMDVHRVIKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3Jlc3VsdHNfY29sbGVjdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9yZXN1bHRzX2NvbGxlY3Rvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNmZGNjZmEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3Jlc3VsdHNfY29sbGVjdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExMiArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDAxLTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNDkzMTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGRlZmluZXMgY2xhc3MgdW5pdF90ZXN0X3Jlc3VsdCB0aGF0IGlzIHJlc3BvbnNpYmxlIGZvciAKLS8vICBnYXRoZXJpbmcgdGVzdCByZXN1bHRzIGFuZCBwcmVzZW50aW5nIHRoaXMgaW5mb3JtYXRpb24gdG8gZW5kLXVzZXIKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfUkVTVUxUU19DT0xMRUNUT1JfSFBQXzA3MTg5NEdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX1JFU1VMVFNfQ09MTEVDVE9SX0hQUF8wNzE4OTRHRVIKLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdGVzdF9vYnNlcnZlci5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9nbG9iYWxfdHlwZWRlZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZndkX2RlY2wuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy90cml2aWFsX3NpbmdsZXRvbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9jbGFzc19wcm9wZXJ0aWVzLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIHVuaXRfdGVzdCB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgIGZpcnN0IGZhaWxlZCBhc3NlcnRpb24gZGVidWdnZXIgaG9vayAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotbmFtZXNwYWNlIHsKLWlubGluZSB2b2lkIGZpcnN0X2ZhaWxlZF9hc3NlcnRpb24oKSB7fQotfQotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgIHRlc3RfcmVzdWx0cyAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWNsYXNzIE5ETkJPT1NUX1RFU1RfREVDTCB0ZXN0X3Jlc3VsdHMgewotcHVibGljOgotICAgIHRlc3RfcmVzdWx0cygpOwotCi0gICAgdHlwZWRlZiBORE5CT09TVF9SRUFET05MWV9QUk9QRVJUWSggY291bnRlcl90LCAocmVzdWx0c19jb2xsZWN0b3JfdCkodGVzdF9yZXN1bHRzKShyZXN1bHRzX2NvbGxlY3RfaGVscGVyKSApIGNvdW50ZXJfcHJvcDsKLSAgICB0eXBlZGVmIE5ETkJPT1NUX1JFQURPTkxZX1BST1BFUlRZKCBib29sLCAgICAgIChyZXN1bHRzX2NvbGxlY3Rvcl90KSh0ZXN0X3Jlc3VsdHMpKHJlc3VsdHNfY29sbGVjdF9oZWxwZXIpICkgYm9vbF9wcm9wOwotCi0gICAgY291bnRlcl9wcm9wICAgIHBfYXNzZXJ0aW9uc19wYXNzZWQ7Ci0gICAgY291bnRlcl9wcm9wICAgIHBfYXNzZXJ0aW9uc19mYWlsZWQ7Ci0gICAgY291bnRlcl9wcm9wICAgIHBfZXhwZWN0ZWRfZmFpbHVyZXM7Ci0gICAgY291bnRlcl9wcm9wICAgIHBfdGVzdF9jYXNlc19wYXNzZWQ7Ci0gICAgY291bnRlcl9wcm9wICAgIHBfdGVzdF9jYXNlc19mYWlsZWQ7Ci0gICAgY291bnRlcl9wcm9wICAgIHBfdGVzdF9jYXNlc19za2lwcGVkOwotICAgIGNvdW50ZXJfcHJvcCAgICBwX3Rlc3RfY2FzZXNfYWJvcnRlZDsKLSAgICBib29sX3Byb3AgICAgICAgcF9hYm9ydGVkOwotICAgIGJvb2xfcHJvcCAgICAgICBwX3NraXBwZWQ7Ci0KLSAgICAvLyAiY29uY2x1c2lvbiIgbWV0aG9kcwotICAgIGJvb2wgICAgICAgICAgICBwYXNzZWQoKSBjb25zdDsKLSAgICBpbnQgICAgICAgICAgICAgcmVzdWx0X2NvZGUoKSBjb25zdDsKLQotICAgIC8vIGNvbGxlY3Rpb24gaGVscGVyCi0gICAgdm9pZCAgICAgICAgICAgIG9wZXJhdG9yKz0oIHRlc3RfcmVzdWx0cyBjb25zdCYgKTsKLQotICAgIHZvaWQgICAgICAgICAgICBjbGVhcigpOwotfTsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgcmVzdWx0c19jb2xsZWN0b3IgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1jbGFzcyBORE5CT09TVF9URVNUX0RFQ0wgcmVzdWx0c19jb2xsZWN0b3JfdCA6IHB1YmxpYyB0ZXN0X29ic2VydmVyLCBwdWJsaWMgc2luZ2xldG9uPHJlc3VsdHNfY29sbGVjdG9yX3Q+IHsKLXB1YmxpYzoKLSAgICAvLyB0ZXN0X29ic2VydmVyIGludGVyZmFjZSBpbXBsZW1lbnRhdGlvbgotICAgIHZvaWQgICAgICAgICAgICAgICAgdGVzdF9zdGFydCggY291bnRlcl90IHRlc3RfY2FzZXNfYW1vdW50ICk7Ci0gICAgdm9pZCAgICAgICAgICAgICAgICB0ZXN0X2ZpbmlzaCgpOwotICAgIHZvaWQgICAgICAgICAgICAgICAgdGVzdF9hYm9ydGVkKCk7Ci0KLSAgICB2b2lkICAgICAgICAgICAgICAgIHRlc3RfdW5pdF9zdGFydCggdGVzdF91bml0IGNvbnN0JiApOwotICAgIHZvaWQgICAgICAgICAgICAgICAgdGVzdF91bml0X2ZpbmlzaCggdGVzdF91bml0IGNvbnN0JiwgdW5zaWduZWQgbG9uZyBlbGFwc2VkICk7Ci0gICAgdm9pZCAgICAgICAgICAgICAgICB0ZXN0X3VuaXRfc2tpcHBlZCggdGVzdF91bml0IGNvbnN0JiApOwotICAgIHZvaWQgICAgICAgICAgICAgICAgdGVzdF91bml0X2Fib3J0ZWQoIHRlc3RfdW5pdCBjb25zdCYgKTsKLQotICAgIHZvaWQgICAgICAgICAgICAgICAgYXNzZXJ0aW9uX3Jlc3VsdCggYm9vbCBwYXNzZWQgKTsKLSAgICB2b2lkICAgICAgICAgICAgICAgIGV4Y2VwdGlvbl9jYXVnaHQoIGV4ZWN1dGlvbl9leGNlcHRpb24gY29uc3QmICk7Ci0KLSAgICAvLyByZXN1bHRzIGFjY2VzcwotICAgIHRlc3RfcmVzdWx0cyBjb25zdCYgcmVzdWx0cyggdGVzdF91bml0X2lkICkgY29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgTkROQk9PU1RfVEVTVF9TSU5HTEVUT05fQ09OUyggcmVzdWx0c19jb2xsZWN0b3JfdCApOwotfTsKLQotTkROQk9PU1RfVEVTVF9TSU5HTEVUT05fSU5TVCggcmVzdWx0c19jb2xsZWN0b3IgKQotCi19IC8vIG5hbWVzcGFjZSB1bml0X3Rlc3QKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX1JFU1VMVFNfQ09MTEVDVE9SX0hQUF8wNzE4OTRHRVIKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3Jlc3VsdHNfcmVwb3J0ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3Jlc3VsdHNfcmVwb3J0ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNmI5ZWMzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC9yZXN1bHRzX3JlcG9ydGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDg4ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDEtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA0OTMxMiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogZGVmaW5lcyBjbGFzcyB1bml0X3Rlc3RfcmVzdWx0IHRoYXQgaXMgcmVzcG9uc2libGUgZm9yIAotLy8gIGdhdGhlcmluZyB0ZXN0IHJlc3VsdHMgYW5kIHByZXNlbnRpbmcgdGhpcyBpbmZvcm1hdGlvbiB0byBlbmQtdXNlcgotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9SRVNVTFRTX1JFUE9SVEVSX0hQUF8wMjEyMDVHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9SRVNVTFRTX1JFUE9SVEVSX0hQUF8wMjEyMDVHRVIKLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2dsb2JhbF90eXBlZGVmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9md2RfZGVjbC5ocHA+Ci0KLS8vIFNUTAotI2luY2x1ZGUgPGlvc2Z3ZD4gICAvLyBmb3Igc3RkOjpvc3RyZWFtJgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgdW5pdF90ZXN0IHsKLQotbmFtZXNwYWNlIHJlc3VsdHNfcmVwb3J0ZXIgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgIGZvcm1hdHRlciBpbnRlcmZhY2UgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWNsYXNzIE5ETkJPT1NUX1RFU1RfREVDTCBmb3JtYXQgewotcHVibGljOgotICAgIC8vIERlc3RydWN0b3IKLSAgICB2aXJ0dWFsIH5mb3JtYXQoKSB7fQotCi0gICAgdmlydHVhbCB2b2lkICAgIHJlc3VsdHNfcmVwb3J0X3N0YXJ0KCBzdGQ6Om9zdHJlYW0mIG9zdHIgKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkICAgIHJlc3VsdHNfcmVwb3J0X2ZpbmlzaCggc3RkOjpvc3RyZWFtJiBvc3RyICkgPSAwOwotCi0gICAgdmlydHVhbCB2b2lkICAgIHRlc3RfdW5pdF9yZXBvcnRfc3RhcnQoIHRlc3RfdW5pdCBjb25zdCYsIHN0ZDo6b3N0cmVhbSYgb3N0ciApID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgICAgdGVzdF91bml0X3JlcG9ydF9maW5pc2goIHRlc3RfdW5pdCBjb25zdCYsIHN0ZDo6b3N0cmVhbSYgb3N0ciApID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCAgICBkb19jb25maXJtYXRpb25fcmVwb3J0KCB0ZXN0X3VuaXQgY29uc3QmLCBzdGQ6Om9zdHJlYW0mIG9zdHIgKSA9IDA7Ci19OwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgIHJlcG9ydCBjb25maWd1cmF0aW9uICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLU5ETkJPT1NUX1RFU1RfREVDTCB2b2lkICAgIHNldF9sZXZlbCggcmVwb3J0X2xldmVsICk7Ci1ORE5CT09TVF9URVNUX0RFQ0wgdm9pZCAgICBzZXRfc3RyZWFtKCBzdGQ6Om9zdHJlYW0mICk7Ci1ORE5CT09TVF9URVNUX0RFQ0wgdm9pZCAgICBzZXRfZm9ybWF0KCBvdXRwdXRfZm9ybWF0ICk7Ci1ORE5CT09TVF9URVNUX0RFQ0wgdm9pZCAgICBzZXRfZm9ybWF0KCByZXN1bHRzX3JlcG9ydGVyOjpmb3JtYXQqICk7Ci0KLU5ETkJPT1NUX1RFU1RfREVDTCBzdGQ6Om9zdHJlYW0mIGdldF9zdHJlYW0oKTsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgcmVwb3J0IGluaXRpYXRpb24gICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1ORE5CT09TVF9URVNUX0RFQ0wgdm9pZCAgICBtYWtlX3JlcG9ydCggcmVwb3J0X2xldmVsIGwgPSBJTlZfUkVQT1JUX0xFVkVMLCB0ZXN0X3VuaXRfaWQgPSBJTlZfVEVTVF9VTklUX0lEICk7Ci1pbmxpbmUgdm9pZCAgICAgICAgICAgICBjb25maXJtYXRpb25fcmVwb3J0KCB0ZXN0X3VuaXRfaWQgaWQgPSBJTlZfVEVTVF9VTklUX0lEICkgICAKLXsgbWFrZV9yZXBvcnQoIENPTkZJUk1BVElPTl9SRVBPUlQsIGlkICk7IH0KLWlubGluZSB2b2lkICAgICAgICAgICAgIHNob3J0X3JlcG9ydCggdGVzdF91bml0X2lkIGlkID0gSU5WX1RFU1RfVU5JVF9JRCApCi17IG1ha2VfcmVwb3J0KCBTSE9SVF9SRVBPUlQsIGlkICk7IH0KLWlubGluZSB2b2lkICAgICAgICAgICAgIGRldGFpbGVkX3JlcG9ydCggdGVzdF91bml0X2lkIGlkID0gSU5WX1RFU1RfVU5JVF9JRCApCi17IG1ha2VfcmVwb3J0KCBERVRBSUxFRF9SRVBPUlQsIGlkICk7IH0KLQotfSAvLyBuYW1lc3BhY2UgcmVzdWx0c19yZXBvcnRlcgotCi19IC8vIG5hbWVzcGFjZSB1bml0X3Rlc3QKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX1JFU1VMVFNfUkVQT1JURVJfSFBQXzAyMTIwNUdFUgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdGVzdF9vYnNlcnZlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdGVzdF9vYnNlcnZlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc3NTdhOTIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3Rlc3Rfb2JzZXJ2ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjUgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDQ5MzEyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBkZWZpbmVzIGFic3RyYWN0IGludGVyZmFjZSBmb3IgdGVzdCBvYnNlcnZlcgotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9URVNUX09CU0VSVkVSX0hQUF8wMjEwMDVHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9URVNUX09CU0VSVkVSX0hQUF8wMjEwMDVHRVIKLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2Z3ZF9kZWNsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9nbG9iYWxfdHlwZWRlZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvY29uZmlnLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIHVuaXRfdGVzdCB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgdGVzdF9vYnNlcnZlciAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotY2xhc3MgTkROQk9PU1RfVEVTVF9ERUNMIHRlc3Rfb2JzZXJ2ZXIgewotcHVibGljOgotICAgIC8vIHRlc3Qgb2JzZXJ2ZXIgaW50ZXJmYWNlCi0gICAgdmlydHVhbCB2b2lkICAgIHRlc3Rfc3RhcnQoIGNvdW50ZXJfdCAvKiB0ZXN0X2Nhc2VzX2Ftb3VudCAqLyApIHt9Ci0gICAgdmlydHVhbCB2b2lkICAgIHRlc3RfZmluaXNoKCkge30KLSAgICB2aXJ0dWFsIHZvaWQgICAgdGVzdF9hYm9ydGVkKCkge30KLQotICAgIHZpcnR1YWwgdm9pZCAgICB0ZXN0X3VuaXRfc3RhcnQoIHRlc3RfdW5pdCBjb25zdCYgKSB7fQotICAgIHZpcnR1YWwgdm9pZCAgICB0ZXN0X3VuaXRfZmluaXNoKCB0ZXN0X3VuaXQgY29uc3QmLCB1bnNpZ25lZCBsb25nIC8qIGVsYXBzZWQgKi8gKSB7fQotICAgIHZpcnR1YWwgdm9pZCAgICB0ZXN0X3VuaXRfc2tpcHBlZCggdGVzdF91bml0IGNvbnN0JiApIHt9Ci0gICAgdmlydHVhbCB2b2lkICAgIHRlc3RfdW5pdF9hYm9ydGVkKCB0ZXN0X3VuaXQgY29uc3QmICkge30KLQotICAgIHZpcnR1YWwgdm9pZCAgICBhc3NlcnRpb25fcmVzdWx0KCBib29sIC8qIHBhc3NlZCAqLyApIHt9Ci0gICAgdmlydHVhbCB2b2lkICAgIGV4Y2VwdGlvbl9jYXVnaHQoIGV4ZWN1dGlvbl9leGNlcHRpb24gY29uc3QmICkge30KLQotICAgIHZpcnR1YWwgaW50ICAgICBwcmlvcml0eSgpIHsgcmV0dXJuIDA7IH0KLQotcHJvdGVjdGVkOgotICAgIE5ETkJPT1NUX1RFU1RfUFJPVEVDVEVEX1ZJUlRVQUwgfnRlc3Rfb2JzZXJ2ZXIoKSB7fQotfTsKLQotfSAvLyB1bml0X3Rlc3QKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX1RFU1RfT0JTRVJWRVJfSFBQXzAyMTAwNUdFUgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdGVzdF90b29scy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdGVzdF90b29scy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhlNzFjMDIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3Rlc3RfdG9vbHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzE5ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDEtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1NDYzMyAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogY29udGFpbnMgZGVmaW5pdGlvbiBmb3IgYWxsIHRlc3QgdG9vbHMgaW4gdGVzdCB0b29sYm94Ci0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX1RFU1RfVE9PTFNfSFBQXzAxMjcwNUdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX1RFU1RfVE9PTFNfSFBQXzAxMjcwNUdFUgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9wcmVkaWNhdGVfcmVzdWx0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3VuaXRfdGVzdF9sb2cuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZmxvYXRpbmdfcG9pbnRfY29tcGFyaXNvbi5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2dsb2JhbF90eXBlZGVmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvd3JhcF9zdHJpbmdzdHJlYW0uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvYmFzaWNfY3N0cmluZy9pby5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9sYXp5X29zdHJlYW0uaHBwPgotCi0vLyBCb29zdAotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvZm9yX2VhY2guaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvc2l6ZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9lbnVtLmhwcD4gCi0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vcmVwZWF0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcHVuY3R1YXRpb24vY29tbWFfaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL2FkZC5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9saW1pdHMuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYXJyYXkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Z1bmN0aW9uLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19hYnN0cmFjdC5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvb3IuaHBwPgotCi0vLyBTVEwKLSNpbmNsdWRlIDxjc3RkZGVmPiAgICAgICAgICAvLyBmb3Igc3RkOjpzaXplX3QKLSNpbmNsdWRlIDxpb3Nmd2Q+Ci0jaW5jbHVkZSA8aW9zPiAgICAgICAgICAgICAgLy8gZm9yIHN0ZDo6Ym9vbGFscGhhCi0jaW5jbHVkZSA8Y2xpbWl0cz4gICAgICAgICAgLy8gZm9yIENIQVJfQklUCi0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMjcpIC8vIGNvbmRpdGlvbmFsIGV4cHJlc3Npb24gaXMgY29uc3RhbnQKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgICAgIFRPT0wgQk9YICAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLS8vIEluIG1hY3JvcyBiZWxvdyBmb2xsb3dpbmcgYXJndW1lbnQgYWJicmV2aWF0aW9ucyBhcmUgdXNlZDoKLS8vIFAgLSBwcmVkaWNhdGUKLS8vIE0gLSBtZXNzYWdlCi0vLyBTIC0gc3RhdGVtZW50Ci0vLyBFIC0gZXhjZXB0aW9uCi0vLyBMIC0gbGVmdCBhcmd1bWVudAotLy8gUiAtIHJpZ2h0IGFyZ3VtZW50Ci0vLyBUTCAtIHRvb2wgbGV2ZWwKLS8vIENUIC0gY2hlY2sgdHlwZQotLy8gQVJHUyAtIGFyZ3VtZW50cyBsaXN0Ci0KLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9UT09MX0lNUEwoIGZ1bmMsIFAsIGNoZWNrX2Rlc2NyLCBUTCwgQ1QgKSAgICAgICAgICAgIFwKLSAgICA6Om5kbmJvb3N0Ojp0ZXN0X3Rvb2xzOjp0dF9kZXRhaWw6OmZ1bmMoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgUCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgOjpuZG5ib29zdDo6dW5pdF90ZXN0OjpsYXp5X29zdHJlYW06Omluc3RhbmNlKCkgPDwgY2hlY2tfZGVzY3IsICAgIFwKLSAgICAgICAgTkROQk9PU1RfVEVTVF9MKF9fRklMRV9fKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgc3RhdGljX2Nhc3Q8c3RkOjpzaXplX3Q+KF9fTElORV9fKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgOjpuZG5ib29zdDo6dGVzdF90b29sczo6dHRfZGV0YWlsOjpUTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgOjpuZG5ib29zdDo6dGVzdF90b29sczo6dHRfZGV0YWlsOjpDVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS8qKi8KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2RlZmluZSBORE5CT09TVF9DSEVDS19JTVBMKCBQLCBjaGVja19kZXNjciwgVEwsIENUICkgICAgICAgICAgICAgICAgICBcCi1kbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBORE5CT09TVF9URVNUX1BBU1NQT0lOVCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIE5ETkJPT1NUX1RFU1RfVE9PTF9JTVBMKCBjaGVja19pbXBsLCBQLCBjaGVja19kZXNjciwgVEwsIENUICksIDAgKTtcCi19IHdoaWxlKCA6Om5kbmJvb3N0Ojp0ZXN0X3Rvb2xzOjpkdW1teV9jb25kICkgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS8qKi8KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2RlZmluZSBORE5CT09TVF9URVNUX1BBU1NfQVJHX0lORk8oIHIsIGRhdGEsIGFyZyApICwgYXJnLCBORE5CT09TVF9TVFJJTkdJWkUoIGFyZyApCi0KLSNkZWZpbmUgTkROQk9PU1RfQ0hFQ0tfV0lUSF9BUkdTX0lNUEwoIFAsIGNoZWNrX2Rlc2NyLCBUTCwgQ1QsIEFSR1MgKSAgXAotZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgTkROQk9PU1RfVEVTVF9QQVNTUE9JTlQoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBORE5CT09TVF9URVNUX1RPT0xfSU1QTCggY2hlY2tfZnJ3ZCwgUCwgY2hlY2tfZGVzY3IsIFRMLCBDVCApICAgICAgXAotICAgIE5ETkJPT1NUX1BQX1NFUV9GT1JfRUFDSCggTkROQk9PU1RfVEVTVF9QQVNTX0FSR19JTkZPLCAnXycsIEFSR1MgKSApOyBcCi19IHdoaWxlKCA6Om5kbmJvb3N0Ojp0ZXN0X3Rvb2xzOjpkdW1teV9jb25kICkgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS8qKi8KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2RlZmluZSBORE5CT09TVF9XQVJOKCBQICkgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9DSEVDS19JTVBMKCAoUCksIE5ETkJPT1NUX1RFU1RfU1RSSU5HSVpFKCBQICksIFdBUk4sIENIRUNLX1BSRUQgKQotI2RlZmluZSBORE5CT09TVF9DSEVDSyggUCApICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9DSEVDS19JTVBMKCAoUCksIE5ETkJPT1NUX1RFU1RfU1RSSU5HSVpFKCBQICksIENIRUNLLCBDSEVDS19QUkVEICkKLSNkZWZpbmUgTkROQk9PU1RfUkVRVUlSRSggUCApICAgICAgICAgICAgICAgICAgTkROQk9PU1RfQ0hFQ0tfSU1QTCggKFApLCBORE5CT09TVF9URVNUX1NUUklOR0laRSggUCApLCBSRVFVSVJFLCBDSEVDS19QUkVEICkKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2RlZmluZSBORE5CT09TVF9XQVJOX01FU1NBR0UoIFAsIE0gKSAgICAgICAgICBORE5CT09TVF9DSEVDS19JTVBMKCAoUCksIE0sIFdBUk4sIENIRUNLX01TRyApCi0jZGVmaW5lIE5ETkJPT1NUX0NIRUNLX01FU1NBR0UoIFAsIE0gKSAgICAgICAgIE5ETkJPT1NUX0NIRUNLX0lNUEwoIChQKSwgTSwgQ0hFQ0ssIENIRUNLX01TRyApCi0jZGVmaW5lIE5ETkJPT1NUX1JFUVVJUkVfTUVTU0FHRSggUCwgTSApICAgICAgIE5ETkJPT1NUX0NIRUNLX0lNUEwoIChQKSwgTSwgUkVRVUlSRSwgQ0hFQ0tfTVNHICkKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2RlZmluZSBORE5CT09TVF9FUlJPUiggTSApICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9DSEVDS19NRVNTQUdFKCBmYWxzZSwgTSApCi0jZGVmaW5lIE5ETkJPT1NUX0ZBSUwoIE0gKSAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX1JFUVVJUkVfTUVTU0FHRSggZmFsc2UsIE0gKQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jZGVmaW5lIE5ETkJPT1NUX0NIRUNLX1RIUk9XX0lNUEwoIFMsIEUsIFAsIHByZWZpeCwgVEwgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB0cnkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBORE5CT09TVF9URVNUX1BBU1NQT0lOVCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIFM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgTkROQk9PU1RfQ0hFQ0tfSU1QTCggZmFsc2UsICJleGNlcHRpb24gIiBORE5CT09TVF9TVFJJTkdJWkUoIEUgKSAiIGlzIGV4cGVjdGVkIiwgVEwsIENIRUNLX01TRyApOyB9ICAgXAotICAgIGNhdGNoKCBFIGNvbnN0JiBleCApIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIDo6bmRuYm9vc3Q6OnVuaXRfdGVzdDo6dXRfZGV0YWlsOjppZ25vcmVfdW51c2VkX3ZhcmlhYmxlX3dhcm5pbmcoIGV4ICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgTkROQk9PU1RfQ0hFQ0tfSU1QTCggUCwgcHJlZml4IE5ETkJPT1NUX1NUUklOR0laRSggRSApICIgaXMgY2F1Z2h0IiwgVEwsIENIRUNLX01TRyApOyAgICAgICAgICAgICAgICAgXAotICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0vKiovCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNkZWZpbmUgTkROQk9PU1RfV0FSTl9USFJPVyggUywgRSApICAgICAgICAgICAgTkROQk9PU1RfQ0hFQ0tfVEhST1dfSU1QTCggUywgRSwgdHJ1ZSwgImV4Y2VwdGlvbiAiLCBXQVJOICkKLSNkZWZpbmUgTkROQk9PU1RfQ0hFQ0tfVEhST1coIFMsIEUgKSAgICAgICAgICAgTkROQk9PU1RfQ0hFQ0tfVEhST1dfSU1QTCggUywgRSwgdHJ1ZSwgImV4Y2VwdGlvbiAiLCBDSEVDSyApCi0jZGVmaW5lIE5ETkJPT1NUX1JFUVVJUkVfVEhST1coIFMsIEUgKSAgICAgICAgIE5ETkJPT1NUX0NIRUNLX1RIUk9XX0lNUEwoIFMsIEUsIHRydWUsICJleGNlcHRpb24gIiwgUkVRVUlSRSApCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNkZWZpbmUgTkROQk9PU1RfV0FSTl9FWENFUFRJT04oIFMsIEUsIFAgKSAgICAgTkROQk9PU1RfQ0hFQ0tfVEhST1dfSU1QTCggUywgRSwgUCggZXggKSwgImluY29ycmVjdCBleGNlcHRpb24gIiwgV0FSTiApCi0jZGVmaW5lIE5ETkJPT1NUX0NIRUNLX0VYQ0VQVElPTiggUywgRSwgUCApICAgIE5ETkJPT1NUX0NIRUNLX1RIUk9XX0lNUEwoIFMsIEUsIFAoIGV4ICksICJpbmNvcnJlY3QgZXhjZXB0aW9uICIsIENIRUNLICkKLSNkZWZpbmUgTkROQk9PU1RfUkVRVUlSRV9FWENFUFRJT04oIFMsIEUsIFAgKSAgTkROQk9PU1RfQ0hFQ0tfVEhST1dfSU1QTCggUywgRSwgUCggZXggKSwgImluY29ycmVjdCBleGNlcHRpb24gIiwgUkVRVUlSRSApCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNkZWZpbmUgTkROQk9PU1RfQ0hFQ0tfTk9fVEhST1dfSU1QTCggUywgVEwgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdHJ5IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBTOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgTkROQk9PU1RfQ0hFQ0tfSU1QTCggdHJ1ZSwgIm5vIGV4Y2VwdGlvbnMgdGhyb3duIGJ5ICIgTkROQk9PU1RfU1RSSU5HSVpFKCBTICksIFRMLCBDSEVDS19NU0cgKTsgfSBcCi0gICAgY2F0Y2goIC4uLiApIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBORE5CT09TVF9DSEVDS19JTVBMKCBmYWxzZSwgImV4Y2VwdGlvbiB0aHJvd24gYnkgIiBORE5CT09TVF9TVFJJTkdJWkUoIFMgKSwgVEwsIENIRUNLX01TRyApOyAgICAgIFwKLSAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0vKiovCi0KLSNkZWZpbmUgTkROQk9PU1RfV0FSTl9OT19USFJPVyggUyApICAgICAgICAgICAgTkROQk9PU1RfQ0hFQ0tfTk9fVEhST1dfSU1QTCggUywgV0FSTiApCi0jZGVmaW5lIE5ETkJPT1NUX0NIRUNLX05PX1RIUk9XKCBTICkgICAgICAgICAgIE5ETkJPT1NUX0NIRUNLX05PX1RIUk9XX0lNUEwoIFMsIENIRUNLICkKLSNkZWZpbmUgTkROQk9PU1RfUkVRVUlSRV9OT19USFJPVyggUyApICAgICAgICAgTkROQk9PU1RfQ0hFQ0tfTk9fVEhST1dfSU1QTCggUywgUkVRVUlSRSApCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNkZWZpbmUgTkROQk9PU1RfV0FSTl9FUVVBTCggTCwgUiApIFwKLSAgICBORE5CT09TVF9DSEVDS19XSVRIX0FSR1NfSU1QTCggOjpuZG5ib29zdDo6dGVzdF90b29sczo6dHRfZGV0YWlsOjplcXVhbF9pbXBsX2Zyd2QoKSwgIiIsIFdBUk4sIENIRUNLX0VRVUFMLCAoTCkoUikgKQotI2RlZmluZSBORE5CT09TVF9DSEVDS19FUVVBTCggTCwgUiApIFwKLSAgICBORE5CT09TVF9DSEVDS19XSVRIX0FSR1NfSU1QTCggOjpuZG5ib29zdDo6dGVzdF90b29sczo6dHRfZGV0YWlsOjplcXVhbF9pbXBsX2Zyd2QoKSwgIiIsIENIRUNLLCBDSEVDS19FUVVBTCwgKEwpKFIpICkKLSNkZWZpbmUgTkROQk9PU1RfUkVRVUlSRV9FUVVBTCggTCwgUiApIFwKLSAgICBORE5CT09TVF9DSEVDS19XSVRIX0FSR1NfSU1QTCggOjpuZG5ib29zdDo6dGVzdF90b29sczo6dHRfZGV0YWlsOjplcXVhbF9pbXBsX2Zyd2QoKSwgIiIsIFJFUVVJUkUsIENIRUNLX0VRVUFMLCAoTCkoUikgKQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jZGVmaW5lIE5ETkJPT1NUX1dBUk5fTkUoIEwsIFIgKSBcCi0gICAgTkROQk9PU1RfQ0hFQ0tfV0lUSF9BUkdTX0lNUEwoIDo6bmRuYm9vc3Q6OnRlc3RfdG9vbHM6OnR0X2RldGFpbDo6bmVfaW1wbCgpLCAiIiwgV0FSTiwgQ0hFQ0tfTkUsIChMKShSKSApCi0jZGVmaW5lIE5ETkJPT1NUX0NIRUNLX05FKCBMLCBSICkgXAotICAgIE5ETkJPT1NUX0NIRUNLX1dJVEhfQVJHU19JTVBMKCA6Om5kbmJvb3N0Ojp0ZXN0X3Rvb2xzOjp0dF9kZXRhaWw6Om5lX2ltcGwoKSwgIiIsIENIRUNLLCBDSEVDS19ORSwgKEwpKFIpICkKLSNkZWZpbmUgTkROQk9PU1RfUkVRVUlSRV9ORSggTCwgUiApIFwKLSAgICBORE5CT09TVF9DSEVDS19XSVRIX0FSR1NfSU1QTCggOjpuZG5ib29zdDo6dGVzdF90b29sczo6dHRfZGV0YWlsOjpuZV9pbXBsKCksICIiLCBSRVFVSVJFLCBDSEVDS19ORSwgKEwpKFIpICkKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2RlZmluZSBORE5CT09TVF9XQVJOX0xUKCBMLCBSICkgXAotICAgIE5ETkJPT1NUX0NIRUNLX1dJVEhfQVJHU19JTVBMKCA6Om5kbmJvb3N0Ojp0ZXN0X3Rvb2xzOjp0dF9kZXRhaWw6Omx0X2ltcGwoKSwgIiIsIFdBUk4sIENIRUNLX0xULCAoTCkoUikgKQotI2RlZmluZSBORE5CT09TVF9DSEVDS19MVCggTCwgUiApIFwKLSAgICBORE5CT09TVF9DSEVDS19XSVRIX0FSR1NfSU1QTCggOjpuZG5ib29zdDo6dGVzdF90b29sczo6dHRfZGV0YWlsOjpsdF9pbXBsKCksICIiLCBDSEVDSywgQ0hFQ0tfTFQsIChMKShSKSApCi0jZGVmaW5lIE5ETkJPT1NUX1JFUVVJUkVfTFQoIEwsIFIgKSBcCi0gICAgTkROQk9PU1RfQ0hFQ0tfV0lUSF9BUkdTX0lNUEwoIDo6bmRuYm9vc3Q6OnRlc3RfdG9vbHM6OnR0X2RldGFpbDo6bHRfaW1wbCgpLCAiIiwgUkVRVUlSRSwgQ0hFQ0tfTFQsIChMKShSKSApCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNkZWZpbmUgTkROQk9PU1RfV0FSTl9MRSggTCwgUiApIFwKLSAgICBORE5CT09TVF9DSEVDS19XSVRIX0FSR1NfSU1QTCggOjpuZG5ib29zdDo6dGVzdF90b29sczo6dHRfZGV0YWlsOjpsZV9pbXBsKCksICIiLCBXQVJOLCBDSEVDS19MRSwgKEwpKFIpICkKLSNkZWZpbmUgTkROQk9PU1RfQ0hFQ0tfTEUoIEwsIFIgKSBcCi0gICAgTkROQk9PU1RfQ0hFQ0tfV0lUSF9BUkdTX0lNUEwoIDo6bmRuYm9vc3Q6OnRlc3RfdG9vbHM6OnR0X2RldGFpbDo6bGVfaW1wbCgpLCAiIiwgQ0hFQ0ssIENIRUNLX0xFLCAoTCkoUikgKQotI2RlZmluZSBORE5CT09TVF9SRVFVSVJFX0xFKCBMLCBSICkgXAotICAgIE5ETkJPT1NUX0NIRUNLX1dJVEhfQVJHU19JTVBMKCA6Om5kbmJvb3N0Ojp0ZXN0X3Rvb2xzOjp0dF9kZXRhaWw6OmxlX2ltcGwoKSwgIiIsIFJFUVVJUkUsIENIRUNLX0xFLCAoTCkoUikgKQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jZGVmaW5lIE5ETkJPT1NUX1dBUk5fR1QoIEwsIFIgKSBcCi0gICAgTkROQk9PU1RfQ0hFQ0tfV0lUSF9BUkdTX0lNUEwoIDo6bmRuYm9vc3Q6OnRlc3RfdG9vbHM6OnR0X2RldGFpbDo6Z3RfaW1wbCgpLCAiIiwgV0FSTiwgQ0hFQ0tfR1QsIChMKShSKSApCi0jZGVmaW5lIE5ETkJPT1NUX0NIRUNLX0dUKCBMLCBSICkgXAotICAgIE5ETkJPT1NUX0NIRUNLX1dJVEhfQVJHU19JTVBMKCA6Om5kbmJvb3N0Ojp0ZXN0X3Rvb2xzOjp0dF9kZXRhaWw6Omd0X2ltcGwoKSwgIiIsIENIRUNLLCBDSEVDS19HVCwgKEwpKFIpICkKLSNkZWZpbmUgTkROQk9PU1RfUkVRVUlSRV9HVCggTCwgUiApIFwKLSAgICBORE5CT09TVF9DSEVDS19XSVRIX0FSR1NfSU1QTCggOjpuZG5ib29zdDo6dGVzdF90b29sczo6dHRfZGV0YWlsOjpndF9pbXBsKCksICIiLCBSRVFVSVJFLCBDSEVDS19HVCwgKEwpKFIpICkKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2RlZmluZSBORE5CT09TVF9XQVJOX0dFKCBMLCBSICkgXAotICAgIE5ETkJPT1NUX0NIRUNLX1dJVEhfQVJHU19JTVBMKCA6Om5kbmJvb3N0Ojp0ZXN0X3Rvb2xzOjp0dF9kZXRhaWw6OmdlX2ltcGwoKSwgIiIsIFdBUk4sIENIRUNLX0dFLCAoTCkoUikgKQotI2RlZmluZSBORE5CT09TVF9DSEVDS19HRSggTCwgUiApIFwKLSAgICBORE5CT09TVF9DSEVDS19XSVRIX0FSR1NfSU1QTCggOjpuZG5ib29zdDo6dGVzdF90b29sczo6dHRfZGV0YWlsOjpnZV9pbXBsKCksICIiLCBDSEVDSywgQ0hFQ0tfR0UsIChMKShSKSApCi0jZGVmaW5lIE5ETkJPT1NUX1JFUVVJUkVfR0UoIEwsIFIgKSBcCi0gICAgTkROQk9PU1RfQ0hFQ0tfV0lUSF9BUkdTX0lNUEwoIDo6bmRuYm9vc3Q6OnRlc3RfdG9vbHM6OnR0X2RldGFpbDo6Z2VfaW1wbCgpLCAiIiwgUkVRVUlSRSwgQ0hFQ0tfR0UsIChMKShSKSApCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNkZWZpbmUgTkROQk9PU1RfV0FSTl9DTE9TRSggTCwgUiwgVCApIFwKLSAgICBORE5CT09TVF9DSEVDS19XSVRIX0FSR1NfSU1QTCggOjpuZG5ib29zdDo6dGVzdF90b29sczo6Y2hlY2tfaXNfY2xvc2UsICIiLCBXQVJOLCBDSEVDS19DTE9TRSwgXAotICAgICAgICAoTCkoUikoOjpuZG5ib29zdDo6dGVzdF90b29sczo6cGVyY2VudF90b2xlcmFuY2UoVCkpICkKLSNkZWZpbmUgTkROQk9PU1RfQ0hFQ0tfQ0xPU0UoIEwsIFIsIFQgKSBcCi0gICAgTkROQk9PU1RfQ0hFQ0tfV0lUSF9BUkdTX0lNUEwoIDo6bmRuYm9vc3Q6OnRlc3RfdG9vbHM6OmNoZWNrX2lzX2Nsb3NlLCAiIiwgQ0hFQ0ssIENIRUNLX0NMT1NFLCBcCi0gICAgICAgIChMKShSKSg6Om5kbmJvb3N0Ojp0ZXN0X3Rvb2xzOjpwZXJjZW50X3RvbGVyYW5jZShUKSkgKQotI2RlZmluZSBORE5CT09TVF9SRVFVSVJFX0NMT1NFKCBMLCBSLCBUICkgXAotICAgIE5ETkJPT1NUX0NIRUNLX1dJVEhfQVJHU19JTVBMKCA6Om5kbmJvb3N0Ojp0ZXN0X3Rvb2xzOjpjaGVja19pc19jbG9zZSwgIiIsIFJFUVVJUkUsIENIRUNLX0NMT1NFLCBcCi0gICAgICAgIChMKShSKSg6Om5kbmJvb3N0Ojp0ZXN0X3Rvb2xzOjpwZXJjZW50X3RvbGVyYW5jZShUKSkgKQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jZGVmaW5lIE5ETkJPT1NUX1dBUk5fQ0xPU0VfRlJBQ1RJT04oIEwsIFIsIFQgKSBcCi0gICAgTkROQk9PU1RfQ0hFQ0tfV0lUSF9BUkdTX0lNUEwoIDo6bmRuYm9vc3Q6OnRlc3RfdG9vbHM6OmNoZWNrX2lzX2Nsb3NlLCAiIiwgV0FSTiwgQ0hFQ0tfQ0xPU0VfRlJBQ1RJT04sIFwKLSAgICAoTCkoUikoOjpuZG5ib29zdDo6dGVzdF90b29sczo6ZnJhY3Rpb25fdG9sZXJhbmNlKFQpKSApCi0jZGVmaW5lIE5ETkJPT1NUX0NIRUNLX0NMT1NFX0ZSQUNUSU9OKCBMLCBSLCBUICkgXAotICAgIE5ETkJPT1NUX0NIRUNLX1dJVEhfQVJHU19JTVBMKCA6Om5kbmJvb3N0Ojp0ZXN0X3Rvb2xzOjpjaGVja19pc19jbG9zZSwgIiIsIENIRUNLLCBDSEVDS19DTE9TRV9GUkFDVElPTiwgXAotICAgIChMKShSKSg6Om5kbmJvb3N0Ojp0ZXN0X3Rvb2xzOjpmcmFjdGlvbl90b2xlcmFuY2UoVCkpICkKLSNkZWZpbmUgTkROQk9PU1RfUkVRVUlSRV9DTE9TRV9GUkFDVElPTiggTCwgUiwgVCApIFwKLSAgICBORE5CT09TVF9DSEVDS19XSVRIX0FSR1NfSU1QTCggOjpuZG5ib29zdDo6dGVzdF90b29sczo6Y2hlY2tfaXNfY2xvc2UsICIiLCBSRVFVSVJFLCBDSEVDS19DTE9TRV9GUkFDVElPTiwgXAotICAgIChMKShSKSg6Om5kbmJvb3N0Ojp0ZXN0X3Rvb2xzOjpmcmFjdGlvbl90b2xlcmFuY2UoVCkpICkKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2RlZmluZSBORE5CT09TVF9XQVJOX1NNQUxMKCBGUFYsIFQgKSBcCi0gICAgTkROQk9PU1RfQ0hFQ0tfV0lUSF9BUkdTX0lNUEwoIDo6bmRuYm9vc3Q6OnRlc3RfdG9vbHM6OmNoZWNrX2lzX3NtYWxsLCAiIiwgV0FSTiwgQ0hFQ0tfU01BTEwsIChGUFYpKFQpICkKLSNkZWZpbmUgTkROQk9PU1RfQ0hFQ0tfU01BTEwoIEZQViwgVCApIFwKLSAgICBORE5CT09TVF9DSEVDS19XSVRIX0FSR1NfSU1QTCggOjpuZG5ib29zdDo6dGVzdF90b29sczo6Y2hlY2tfaXNfc21hbGwsICIiLCBDSEVDSywgQ0hFQ0tfU01BTEwsIChGUFYpKFQpICkKLSNkZWZpbmUgTkROQk9PU1RfUkVRVUlSRV9TTUFMTCggRlBWLCBUICkgXAotICAgIE5ETkJPT1NUX0NIRUNLX1dJVEhfQVJHU19JTVBMKCA6Om5kbmJvb3N0Ojp0ZXN0X3Rvb2xzOjpjaGVja19pc19zbWFsbCwgIiIsIFJFUVVJUkUsIENIRUNLX1NNQUxMLCAoRlBWKShUKSApCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNkZWZpbmUgTkROQk9PU1RfV0FSTl9QUkVESUNBVEUoIFAsIEFSR1MgKSBcCi0gICAgTkROQk9PU1RfQ0hFQ0tfV0lUSF9BUkdTX0lNUEwoIFAsIE5ETkJPT1NUX1RFU1RfU1RSSU5HSVpFKCBQICksIFdBUk4sIENIRUNLX1BSRURfV0lUSF9BUkdTLCBBUkdTICkKLSNkZWZpbmUgTkROQk9PU1RfQ0hFQ0tfUFJFRElDQVRFKCBQLCBBUkdTICkgXAotICAgIE5ETkJPT1NUX0NIRUNLX1dJVEhfQVJHU19JTVBMKCBQLCBORE5CT09TVF9URVNUX1NUUklOR0laRSggUCApLCBDSEVDSywgQ0hFQ0tfUFJFRF9XSVRIX0FSR1MsIEFSR1MgKQotI2RlZmluZSBORE5CT09TVF9SRVFVSVJFX1BSRURJQ0FURSggUCwgQVJHUyApIFwKLSAgICBORE5CT09TVF9DSEVDS19XSVRIX0FSR1NfSU1QTCggUCwgTkROQk9PU1RfVEVTVF9TVFJJTkdJWkUoIFAgKSwgUkVRVUlSRSwgQ0hFQ0tfUFJFRF9XSVRIX0FSR1MsIEFSR1MgKQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jZGVmaW5lIE5ETkJPT1NUX0VRVUFMX0NPTExFQ1RJT05TX0lNUEwoIExfYmVnaW4sIExfZW5kLCBSX2JlZ2luLCBSX2VuZCwgVEwgKSAgICAgIFwKLSAgICBORE5CT09TVF9URVNUX1RPT0xfSU1QTCggY2hlY2tfaW1wbCwgOjpuZG5ib29zdDo6dGVzdF90b29sczo6dHRfZGV0YWlsOjplcXVhbF9jb2xsX2ltcGwoIFwKLSAgICAgICAgKExfYmVnaW4pLCAoTF9lbmQpLCAoUl9iZWdpbiksIChSX2VuZCkgKSwgIiIsIFRMLCBDSEVDS19FUVVBTF9DT0xMICksICAgXAotICAgIDQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgTkROQk9PU1RfU1RSSU5HSVpFKCBMX2JlZ2luICksIE5ETkJPT1NUX1NUUklOR0laRSggTF9lbmQgKSwgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBORE5CT09TVF9TVFJJTkdJWkUoIFJfYmVnaW4gKSwgTkROQk9PU1RfU1RSSU5HSVpFKCBSX2VuZCApICkgICAgICAgICAgICAgICAgICAgICAgXAotLyoqLwotCi0jZGVmaW5lIE5ETkJPT1NUX1dBUk5fRVFVQUxfQ09MTEVDVElPTlMoIExfYmVnaW4sIExfZW5kLCBSX2JlZ2luLCBSX2VuZCApICAgICAgICAgIFwKLSAgICBORE5CT09TVF9FUVVBTF9DT0xMRUNUSU9OU19JTVBMKCBMX2JlZ2luLCBMX2VuZCwgUl9iZWdpbiwgUl9lbmQsIFdBUk4gKQotI2RlZmluZSBORE5CT09TVF9DSEVDS19FUVVBTF9DT0xMRUNUSU9OUyggTF9iZWdpbiwgTF9lbmQsIFJfYmVnaW4sIFJfZW5kICkgICAgICAgICBcCi0gICAgTkROQk9PU1RfRVFVQUxfQ09MTEVDVElPTlNfSU1QTCggTF9iZWdpbiwgTF9lbmQsIFJfYmVnaW4sIFJfZW5kLCBDSEVDSyApCi0jZGVmaW5lIE5ETkJPT1NUX1JFUVVJUkVfRVFVQUxfQ09MTEVDVElPTlMoIExfYmVnaW4sIExfZW5kLCBSX2JlZ2luLCBSX2VuZCApICAgICAgIFwKLSAgICBORE5CT09TVF9FUVVBTF9DT0xMRUNUSU9OU19JTVBMKCBMX2JlZ2luLCBMX2VuZCwgUl9iZWdpbiwgUl9lbmQsIFJFUVVJUkUgKQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jZGVmaW5lIE5ETkJPT1NUX0JJVFdJU0VfRVFVQUxfSU1QTCggTCwgUiwgVEwgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBORE5CT09TVF9URVNUX1RPT0xfSU1QTCggY2hlY2tfaW1wbCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgOjpuZG5ib29zdDo6dGVzdF90b29sczo6dHRfZGV0YWlsOjpiaXR3aXNlX2VxdWFsX2ltcGwoIChMKSwgKFIpICksICAgICAgICAgICBcCi0gICAgICAiIiwgVEwsIENIRUNLX0JJVFdJU0VfRVFVQUwgKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAyLCBORE5CT09TVF9TVFJJTkdJWkUoIEwgKSwgTkROQk9PU1RfU1RSSU5HSVpFKCBSICkgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLyoqLwotCi0jZGVmaW5lIE5ETkJPT1NUX1dBUk5fQklUV0lTRV9FUVVBTCggTCwgUiApICAgIE5ETkJPT1NUX0JJVFdJU0VfRVFVQUxfSU1QTCggTCwgUiwgV0FSTiApCi0jZGVmaW5lIE5ETkJPT1NUX0NIRUNLX0JJVFdJU0VfRVFVQUwoIEwsIFIgKSAgIE5ETkJPT1NUX0JJVFdJU0VfRVFVQUxfSU1QTCggTCwgUiwgQ0hFQ0sgKQotI2RlZmluZSBORE5CT09TVF9SRVFVSVJFX0JJVFdJU0VfRVFVQUwoIEwsIFIgKSBORE5CT09TVF9CSVRXSVNFX0VRVUFMX0lNUEwoIEwsIFIsIFJFUVVJUkUgKQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jZGVmaW5lIE5ETkJPT1NUX0lTX0RFRklORUQoIHN5bWIgKSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnRlc3RfdG9vbHM6OnR0X2RldGFpbDo6aXNfZGVmaW5lZF9pbXBsKCAjc3ltYiwgTkROQk9PU1RfU1RSSU5HSVpFKD0gc3ltYikgKQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gZGVwcmVjYXRlZCBpbnRlcmZhY2UKLQotI2RlZmluZSBORE5CT09TVF9CSVRXSVNFX0VRVUFMKCBMLCBSICkgICAgICAgICBORE5CT09TVF9DSEVDS19CSVRXSVNFX0VRVUFMKCBMLCBSICkKLSNkZWZpbmUgTkROQk9PU1RfTUVTU0FHRSggTSApICAgICAgICAgICAgICAgICAgTkROQk9PU1RfVEVTVF9NRVNTQUdFKCBNICkKLSNkZWZpbmUgTkROQk9PU1RfQ0hFQ0tQT0lOVCggTSApICAgICAgICAgICAgICAgTkROQk9PU1RfVEVTVF9DSEVDS1BPSU5UKCBNICkKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIHRlc3RfdG9vbHMgewotCi10eXBlZGVmIHVuaXRfdGVzdDo6Y29uc3Rfc3RyaW5nICAgICAgY29uc3Rfc3RyaW5nOwotCi1uYW1lc3BhY2UgeyBib29sIGR1bW15X2NvbmQgPSBmYWxzZTsgfQotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgcHJpbnRfbG9nX3ZhbHVlICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgcHJpbnRfbG9nX3ZhbHVlIHsKLSAgICB2b2lkICAgIG9wZXJhdG9yKCkoIHN0ZDo6b3N0cmVhbSYgb3N0ciwgVCBjb25zdCYgdCApCi0gICAgewotICAgICAgICAvLyBhdm9pZCB3YXJuaW5nOiAnbmRuYm9vc3Q6OnRlc3RfdG9vbHM6Ojx1bm5hbWVkPjo6ZHVtbXlfY29uZCcgZGVmaW5lZCBidXQgbm90IHVzZWQgCi0gICAgICAgIGlmICg6Om5kbmJvb3N0Ojp0ZXN0X3Rvb2xzOjpkdW1teV9jb25kKSB7fQotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpvcl88aXNfYXJyYXk8VD4saXNfZnVuY3Rpb248VD4saXNfYWJzdHJhY3Q8VD4gPjo6dHlwZSBjYW50X3VzZV9ubDsKLQotICAgICAgICBzZXRfcHJlY2lzaW9uKCBvc3RyLCBjYW50X3VzZV9ubCgpICk7Ci0KLSAgICAgICAgb3N0ciA8PCB0OyAvLyBieSBkZWZhdWx0IHByaW50IHRoZSB2YWx1ZQotICAgIH0KLQotICAgIHZvaWQgc2V0X3ByZWNpc2lvbiggc3RkOjpvc3RyZWFtJiBvc3RyLCBtcGw6OmZhbHNlXyApCi0gICAgewotICAgICAgICBpZiggc3RkOjpudW1lcmljX2xpbWl0czxUPjo6aXNfc3BlY2lhbGl6ZWQgJiYgc3RkOjpudW1lcmljX2xpbWl0czxUPjo6cmFkaXggPT0gMiApCi0gICAgICAgICAgICBvc3RyLnByZWNpc2lvbiggMiArIHN0ZDo6bnVtZXJpY19saW1pdHM8VD46OmRpZ2l0cyAqIDMwMS8xMDAwICk7IAotICAgIH0KLQotICAgIHZvaWQgc2V0X3ByZWNpc2lvbiggc3RkOjpvc3RyZWFtJiwgbXBsOjp0cnVlXyApIHt9Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfRE9OVF9QUklOVF9MT0dfVkFMVUUoIHRoZV90eXBlICkgICAgICAgICBcCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgdGVzdF90b29scyB7ICAgICAgICAgICAgICAgICAgICBcCi10ZW1wbGF0ZTw+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1zdHJ1Y3QgcHJpbnRfbG9nX3ZhbHVlPHRoZV90eXBlID4geyAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCBvcGVyYXRvcigpKCBzdGQ6Om9zdHJlYW0mLCB0aGVfdHlwZSBjb25zdCYgKSB7fSAgICBcCi19OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi19fSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0vKiovCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTY0KSkKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHN0ZDo6c2l6ZV90IE4gPgotc3RydWN0IHByaW50X2xvZ192YWx1ZTwgVFtOXSA+IHsKLSAgICB2b2lkICAgIG9wZXJhdG9yKCkoIHN0ZDo6b3N0cmVhbSYgb3N0ciwgVCBjb25zdCogdCApCi0gICAgewotICAgICAgICBvc3RyIDw8IHQ7Ci0gICAgfQotfTsKLSNlbmRpZgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTkROQk9PU1RfVEVTVF9ERUNMIHByaW50X2xvZ192YWx1ZTxib29sPiB7Ci0gICAgdm9pZCAgICBvcGVyYXRvcigpKCBzdGQ6Om9zdHJlYW0mIG9zdHIsIGJvb2wgdCApCi0gICAgewotICAgICAgICAgb3N0ciA8PCBzdGQ6OmJvb2xhbHBoYSA8PCB0OwotICAgIH0KLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPD4KLXN0cnVjdCBORE5CT09TVF9URVNUX0RFQ0wgcHJpbnRfbG9nX3ZhbHVlPGNoYXI+IHsKLSAgICB2b2lkICAgIG9wZXJhdG9yKCkoIHN0ZDo6b3N0cmVhbSYgb3N0ciwgY2hhciB0ICk7Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgTkROQk9PU1RfVEVTVF9ERUNMIHByaW50X2xvZ192YWx1ZTx1bnNpZ25lZCBjaGFyPiB7Ci0gICAgdm9pZCAgICBvcGVyYXRvcigpKCBzdGQ6Om9zdHJlYW0mIG9zdHIsIHVuc2lnbmVkIGNoYXIgdCApOwotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8Pgotc3RydWN0IE5ETkJPT1NUX1RFU1RfREVDTCBwcmludF9sb2dfdmFsdWU8Y2hhciBjb25zdCo+IHsKLSAgICB2b2lkICAgIG9wZXJhdG9yKCkoIHN0ZDo6b3N0cmVhbSYgb3N0ciwgY2hhciBjb25zdCogdCApOwotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8Pgotc3RydWN0IE5ETkJPT1NUX1RFU1RfREVDTCBwcmludF9sb2dfdmFsdWU8d2NoYXJfdCBjb25zdCo+IHsKLSAgICB2b2lkICAgIG9wZXJhdG9yKCkoIHN0ZDo6b3N0cmVhbSYgb3N0ciwgd2NoYXJfdCBjb25zdCogdCApOwotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIHR0X2RldGFpbCB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgdG9vbHMgY2xhc3NpZmljYXRpb24gICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotZW51bSBjaGVja190eXBlIHsKLSAgICBDSEVDS19QUkVELCAKLSAgICBDSEVDS19NU0csCi0gICAgQ0hFQ0tfRVFVQUwsCi0gICAgQ0hFQ0tfTkUsCi0gICAgQ0hFQ0tfTFQsCi0gICAgQ0hFQ0tfTEUsCi0gICAgQ0hFQ0tfR1QsCi0gICAgQ0hFQ0tfR0UsCi0gICAgQ0hFQ0tfQ0xPU0UsCi0gICAgQ0hFQ0tfQ0xPU0VfRlJBQ1RJT04sCi0gICAgQ0hFQ0tfU01BTEwsCi0gICAgQ0hFQ0tfQklUV0lTRV9FUVVBTCwKLSAgICBDSEVDS19QUkVEX1dJVEhfQVJHUywKLSAgICBDSEVDS19FUVVBTF9DT0xMCi19OwotCi1lbnVtIHRvb2xfbGV2ZWwgewotICAgIFdBUk4sIENIRUNLLCBSRVFVSVJFLCBQQVNTCi19OwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgIHByaW50X2hlbHBlciAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyBBZGRzIGxldmVsIG9mIGluZGlyZWN0aW9uIHRvIHRoZSBvdXRwdXQgb3BlcmF0aW9uLCBhbGxvd2luZyB1cyB0byBjdXN0b21pemUgCi0vLyBpdCBmb3IgdHlwZXMgdGhhdCBkbyBub3Qgc3VwcG9ydCBvcGVyYXRvciA8PCBkaXJlY3RseSBvciBmb3IgYW55IG90aGVyIHJlYXNvbgotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IHByaW50X2hlbHBlcl90IHsKLSAgICBleHBsaWNpdCAgICBwcmludF9oZWxwZXJfdCggVCBjb25zdCYgdCApIDogbV90KCB0ICkge30KLQotICAgIFQgY29uc3QmICAgIG1fdDsKLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTY0KSkgCi0vLyBCb3JsYW5kIHN1ZmZlcnMgcHJlbWF0dXJlIHBvaW50ZXIgZGVjYXkgcGFzc2luZyBhcnJheXMgYnkgcmVmZXJlbmNlCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCBzdGQ6OnNpemVfdCBOID4KLXN0cnVjdCBwcmludF9oZWxwZXJfdDwgVFtOXSA+IHsKLSAgICBleHBsaWNpdCAgICBwcmludF9oZWxwZXJfdCggVCBjb25zdCAqIHQgKSA6IG1fdCggdCApIHt9Ci0KLSAgICBUIGNvbnN0ICogICBtX3Q7Ci19OwotI2VuZGlmCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgcHJpbnRfaGVscGVyX3Q8VD4gcHJpbnRfaGVscGVyKCBUIGNvbnN0JiB0ICkKLXsKLSAgICByZXR1cm4gcHJpbnRfaGVscGVyX3Q8VD4oIHQgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWlubGluZSBzdGQ6Om9zdHJlYW0mIAotb3BlcmF0b3I8PCggc3RkOjpvc3RyZWFtJiBvc3RyLCBwcmludF9oZWxwZXJfdDxUPiBjb25zdCYgcGggKQotewotICAgIHByaW50X2xvZ192YWx1ZTxUPigpKCBvc3RyLCBwaC5tX3QgKTsKLQotICAgIHJldHVybiBvc3RyOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICBUT09MIEJPWCBJbXBsZW1lbnRhdGlvbiAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLU5ETkJPT1NUX1RFU1RfREVDTCAKLWJvb2wgY2hlY2tfaW1wbCggcHJlZGljYXRlX3Jlc3VsdCBjb25zdCYgcHIsIDo6bmRuYm9vc3Q6OnVuaXRfdGVzdDo6bGF6eV9vc3RyZWFtIGNvbnN0JiBjaGVja19kZXNjciwKLSAgICAgICAgICAgICAgICAgY29uc3Rfc3RyaW5nIGZpbGVfbmFtZSwgc3RkOjpzaXplX3QgbGluZV9udW0sCi0gICAgICAgICAgICAgICAgIHRvb2xfbGV2ZWwgdGwsIGNoZWNrX3R5cGUgY3QsCi0gICAgICAgICAgICAgICAgIHN0ZDo6c2l6ZV90IG51bV9hcmdzLCAuLi4gKTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2RlZmluZSBURU1QTF9QQVJBTVMoIHosIG0sIGR1bW15ICkgLCB0eXBlbmFtZSBORE5CT09TVF9KT0lOKCBBcmcsIG0gKQotI2RlZmluZSBGVU5DX1BBUkFNUyggeiwgbSwgZHVtbXkgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICwgTkROQk9PU1RfSk9JTiggQXJnLCBtICkgY29uc3QmIE5ETkJPT1NUX0pPSU4oIGFyZywgbSApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICwgY2hhciBjb25zdCogTkROQk9PU1RfSk9JTiggTkROQk9PU1RfSk9JTiggYXJnLCBtICksIF9kZXNjciApICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLyoqLwotCi0jZGVmaW5lIFBSRURfUEFSQU1TKCB6LCBtLCBkdW1teSApIE5ETkJPT1NUX1BQX0NPTU1BX0lGKCBtICkgTkROQk9PU1RfSk9JTiggYXJnLCBtICkgCi0KLSNkZWZpbmUgQVJHX0lORk8oIHosIG0sIGR1bW15ICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAsIE5ETkJPT1NUX0pPSU4oIE5ETkJPT1NUX0pPSU4oIGFyZywgbSApLCBfZGVzY3IgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAsICZzdGF0aWNfY2FzdDxjb25zdCB1bml0X3Rlc3Q6Omxhenlfb3N0cmVhbSY+KHVuaXRfdGVzdDo6bGF6eV9vc3RyZWFtOjppbnN0YW5jZSgpIFwKLSAgICAgICAgPDwgOjpuZG5ib29zdDo6dGVzdF90b29sczo6dHRfZGV0YWlsOjpwcmludF9oZWxwZXIoIE5ETkJPT1NUX0pPSU4oIGFyZywgbSApICkpICAgIFwKLS8qKi8KLQotI2RlZmluZSBJTVBMX0ZSV0QoIHosIG4sIGR1bW15ICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotdGVtcGxhdGU8dHlwZW5hbWUgUHJlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgTkROQk9PU1RfUFBfUkVQRUFUXyAjIyB6KCBORE5CT09TVF9QUF9BREQoIG4sIDEgKSwgVEVNUExfUEFSQU1TLCBfICk+ICAgICAgICAgICAgXAotaW5saW5lIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotY2hlY2tfZnJ3ZCggUHJlZCBQLCB1bml0X3Rlc3Q6Omxhenlfb3N0cmVhbSBjb25zdCYgY2hlY2tfZGVzY3IsICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgY29uc3Rfc3RyaW5nIGZpbGVfbmFtZSwgc3RkOjpzaXplX3QgbGluZV9udW0sICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgdG9vbF9sZXZlbCB0bCwgY2hlY2tfdHlwZSBjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgTkROQk9PU1RfUFBfUkVQRUFUXyAjIyB6KCBORE5CT09TVF9QUF9BREQoIG4sIDEgKSwgRlVOQ19QQVJBTVMsIF8gKSAgICAgICAgICAgXAotKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAoteyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHJldHVybiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGNoZWNrX2ltcGwoIFAoIE5ETkJPT1NUX1BQX1JFUEVBVF8gIyMgeiggTkROQk9PU1RfUFBfQUREKCBuLCAxICksIFBSRURfUEFSQU1TLCBfICkgKSwgXAotICAgICAgICAgICAgICAgIGNoZWNrX2Rlc2NyLCBmaWxlX25hbWUsIGxpbmVfbnVtLCB0bCwgY3QsICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1BQX0FERCggbiwgMSApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1BQX1JFUEVBVF8gIyMgeiggTkROQk9PU1RfUFBfQUREKCBuLCAxICksIEFSR19JTkZPLCBfICkgICAgICAgICAgXAotICAgICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLyoqLwotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfTUFYX1BSRURJQ0FURV9BUklUWQotI2RlZmluZSBORE5CT09TVF9URVNUX01BWF9QUkVESUNBVEVfQVJJVFkgNQotI2VuZGlmCi0KLU5ETkJPT1NUX1BQX1JFUEVBVCggTkROQk9PU1RfVEVTVF9NQVhfUFJFRElDQVRFX0FSSVRZLCBJTVBMX0ZSV0QsIF8gKQotCi0jdW5kZWYgVEVNUExfUEFSQU1TCi0jdW5kZWYgRlVOQ19QQVJBTVMKLSN1bmRlZiBQUkVEX0lORk8KLSN1bmRlZiBBUkdfSU5GTwotI3VuZGVmIElNUExfRlJXRAotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZSA8Y2xhc3MgTGVmdCwgY2xhc3MgUmlnaHQ+Ci1wcmVkaWNhdGVfcmVzdWx0IGVxdWFsX2ltcGwoIExlZnQgY29uc3QmIGxlZnQsIFJpZ2h0IGNvbnN0JiByaWdodCApCi17Ci0gICAgcmV0dXJuIGxlZnQgPT0gcmlnaHQ7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXByZWRpY2F0ZV9yZXN1bHQgICAgICAgIE5ETkJPT1NUX1RFU1RfREVDTCBlcXVhbF9pbXBsKCBjaGFyIGNvbnN0KiBsZWZ0LCBjaGFyIGNvbnN0KiByaWdodCApOwotaW5saW5lIHByZWRpY2F0ZV9yZXN1bHQgZXF1YWxfaW1wbCggY2hhciogbGVmdCwgY2hhciBjb25zdCogcmlnaHQgKSB7IHJldHVybiBlcXVhbF9pbXBsKCBzdGF0aWNfY2FzdDxjaGFyIGNvbnN0Kj4obGVmdCksIHN0YXRpY19jYXN0PGNoYXIgY29uc3QqPihyaWdodCkgKTsgfQotaW5saW5lIHByZWRpY2F0ZV9yZXN1bHQgZXF1YWxfaW1wbCggY2hhciBjb25zdCogbGVmdCwgY2hhciogcmlnaHQgKSB7IHJldHVybiBlcXVhbF9pbXBsKCBzdGF0aWNfY2FzdDxjaGFyIGNvbnN0Kj4obGVmdCksIHN0YXRpY19jYXN0PGNoYXIgY29uc3QqPihyaWdodCkgKTsgfQotaW5saW5lIHByZWRpY2F0ZV9yZXN1bHQgZXF1YWxfaW1wbCggY2hhciogbGVmdCwgY2hhciogcmlnaHQgKSAgICAgICB7IHJldHVybiBlcXVhbF9pbXBsKCBzdGF0aWNfY2FzdDxjaGFyIGNvbnN0Kj4obGVmdCksIHN0YXRpY19jYXN0PGNoYXIgY29uc3QqPihyaWdodCkgKTsgfQotCi0jaWYgIWRlZmluZWQoIE5ETkJPT1NUX05PX0NXQ0hBUiApCi1wcmVkaWNhdGVfcmVzdWx0ICAgICAgICBORE5CT09TVF9URVNUX0RFQ0wgZXF1YWxfaW1wbCggd2NoYXJfdCBjb25zdCogbGVmdCwgd2NoYXJfdCBjb25zdCogcmlnaHQgKTsKLWlubGluZSBwcmVkaWNhdGVfcmVzdWx0IGVxdWFsX2ltcGwoIHdjaGFyX3QqIGxlZnQsIHdjaGFyX3QgY29uc3QqIHJpZ2h0ICkgeyByZXR1cm4gZXF1YWxfaW1wbCggc3RhdGljX2Nhc3Q8d2NoYXJfdCBjb25zdCo+KGxlZnQpLCBzdGF0aWNfY2FzdDx3Y2hhcl90IGNvbnN0Kj4ocmlnaHQpICk7IH0KLWlubGluZSBwcmVkaWNhdGVfcmVzdWx0IGVxdWFsX2ltcGwoIHdjaGFyX3QgY29uc3QqIGxlZnQsIHdjaGFyX3QqIHJpZ2h0ICkgeyByZXR1cm4gZXF1YWxfaW1wbCggc3RhdGljX2Nhc3Q8d2NoYXJfdCBjb25zdCo+KGxlZnQpLCBzdGF0aWNfY2FzdDx3Y2hhcl90IGNvbnN0Kj4ocmlnaHQpICk7IH0KLWlubGluZSBwcmVkaWNhdGVfcmVzdWx0IGVxdWFsX2ltcGwoIHdjaGFyX3QqIGxlZnQsIHdjaGFyX3QqIHJpZ2h0ICkgICAgICAgeyByZXR1cm4gZXF1YWxfaW1wbCggc3RhdGljX2Nhc3Q8d2NoYXJfdCBjb25zdCo+KGxlZnQpLCBzdGF0aWNfY2FzdDx3Y2hhcl90IGNvbnN0Kj4ocmlnaHQpICk7IH0KLSNlbmRpZgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1zdHJ1Y3QgZXF1YWxfaW1wbF9mcndkIHsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGVmdCwgdHlwZW5hbWUgUmlnaHQ+Ci0gICAgaW5saW5lIHByZWRpY2F0ZV9yZXN1bHQKLSAgICBjYWxsX2ltcGwoIExlZnQgY29uc3QmIGxlZnQsIFJpZ2h0IGNvbnN0JiByaWdodCwgbXBsOjpmYWxzZV8gKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGVxdWFsX2ltcGwoIGxlZnQsIHJpZ2h0ICk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIExlZnQsIHR5cGVuYW1lIFJpZ2h0PgotICAgIGlubGluZSBwcmVkaWNhdGVfcmVzdWx0Ci0gICAgY2FsbF9pbXBsKCBMZWZ0IGNvbnN0JiBsZWZ0LCBSaWdodCBjb25zdCYgcmlnaHQsIG1wbDo6dHJ1ZV8gKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICgqdGhpcykoIHJpZ2h0LCAmbGVmdFswXSApOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBMZWZ0LCB0eXBlbmFtZSBSaWdodD4KLSAgICBpbmxpbmUgcHJlZGljYXRlX3Jlc3VsdAotICAgIG9wZXJhdG9yKCkoIExlZnQgY29uc3QmIGxlZnQsIFJpZ2h0IGNvbnN0JiByaWdodCApIGNvbnN0Ci0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlzX2FycmF5PExlZnQ+Ojp0eXBlIGxlZnRfaXNfYXJyYXk7Ci0gICAgICAgIHJldHVybiBjYWxsX2ltcGwoIGxlZnQsIHJpZ2h0LCBsZWZ0X2lzX2FycmF5KCkgKTsKLSAgICB9Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1zdHJ1Y3QgbmVfaW1wbCB7Ci0gICAgdGVtcGxhdGUgPGNsYXNzIExlZnQsIGNsYXNzIFJpZ2h0PgotICAgIHByZWRpY2F0ZV9yZXN1bHQgb3BlcmF0b3IoKSggTGVmdCBjb25zdCYgbGVmdCwgUmlnaHQgY29uc3QmIHJpZ2h0ICkKLSAgICB7Ci0gICAgICAgIHJldHVybiAhZXF1YWxfaW1wbF9mcndkKCkoIGxlZnQsIHJpZ2h0ICk7Ci0gICAgfQotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotc3RydWN0IGx0X2ltcGwgewotICAgIHRlbXBsYXRlIDxjbGFzcyBMZWZ0LCBjbGFzcyBSaWdodD4KLSAgICBwcmVkaWNhdGVfcmVzdWx0IG9wZXJhdG9yKCkoIExlZnQgY29uc3QmIGxlZnQsIFJpZ2h0IGNvbnN0JiByaWdodCApCi0gICAgewotICAgICAgICByZXR1cm4gbGVmdCA8IHJpZ2h0OwotICAgIH0KLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXN0cnVjdCBsZV9pbXBsIHsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgTGVmdCwgY2xhc3MgUmlnaHQ+Ci0gICAgcHJlZGljYXRlX3Jlc3VsdCBvcGVyYXRvcigpKCBMZWZ0IGNvbnN0JiBsZWZ0LCBSaWdodCBjb25zdCYgcmlnaHQgKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGxlZnQgPD0gcmlnaHQ7Ci0gICAgfQotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotc3RydWN0IGd0X2ltcGwgewotICAgIHRlbXBsYXRlIDxjbGFzcyBMZWZ0LCBjbGFzcyBSaWdodD4KLSAgICBwcmVkaWNhdGVfcmVzdWx0IG9wZXJhdG9yKCkoIExlZnQgY29uc3QmIGxlZnQsIFJpZ2h0IGNvbnN0JiByaWdodCApCi0gICAgewotICAgICAgICByZXR1cm4gbGVmdCA+IHJpZ2h0OwotICAgIH0KLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXN0cnVjdCBnZV9pbXBsIHsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgTGVmdCwgY2xhc3MgUmlnaHQ+Ci0gICAgcHJlZGljYXRlX3Jlc3VsdCBvcGVyYXRvcigpKCBMZWZ0IGNvbnN0JiBsZWZ0LCBSaWdodCBjb25zdCYgcmlnaHQgKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGxlZnQgPj0gcmlnaHQ7Ci0gICAgfQotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGUgPHR5cGVuYW1lIExlZnQsIHR5cGVuYW1lIFJpZ2h0PgotaW5saW5lIHByZWRpY2F0ZV9yZXN1bHQKLWVxdWFsX2NvbGxfaW1wbCggTGVmdCBsZWZ0X2JlZ2luLCBMZWZ0IGxlZnRfZW5kLCBSaWdodCByaWdodF9iZWdpbiwgUmlnaHQgcmlnaHRfZW5kICkKLXsKLSAgICBwcmVkaWNhdGVfcmVzdWx0ICAgIHJlcyggdHJ1ZSApOwotICAgIHN0ZDo6c2l6ZV90ICAgICAgICAgcG9zID0gMDsKLQotICAgIGZvciggOyBsZWZ0X2JlZ2luICE9IGxlZnRfZW5kICYmIHJpZ2h0X2JlZ2luICE9IHJpZ2h0X2VuZDsgKytsZWZ0X2JlZ2luLCArK3JpZ2h0X2JlZ2luLCArK3BvcyApIHsKLSAgICAgICAgaWYoICpsZWZ0X2JlZ2luICE9ICpyaWdodF9iZWdpbiApIHsKLSAgICAgICAgICAgIHJlcyA9IGZhbHNlOwotICAgICAgICAgICAgcmVzLm1lc3NhZ2UoKSA8PCAiXG5NaXNtYXRjaCBpbiBhIHBvc2l0aW9uICIgPDwgcG9zIDw8ICI6ICIgIDw8ICpsZWZ0X2JlZ2luIDw8ICIgIT0gIiA8PCAqcmlnaHRfYmVnaW47Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiggbGVmdF9iZWdpbiAhPSBsZWZ0X2VuZCApIHsKLSAgICAgICAgc3RkOjpzaXplX3Qgcl9zaXplID0gcG9zOwotICAgICAgICB3aGlsZSggbGVmdF9iZWdpbiAhPSBsZWZ0X2VuZCApIHsKLSAgICAgICAgICAgICsrcG9zOwotICAgICAgICAgICAgKytsZWZ0X2JlZ2luOwotICAgICAgICB9Ci0KLSAgICAgICAgcmVzID0gZmFsc2U7Ci0gICAgICAgIHJlcy5tZXNzYWdlKCkgPDwgIlxuQ29sbGVjdGlvbnMgc2l6ZSBtaXNtYXRjaDogIiA8PCBwb3MgPDwgIiAhPSAiIDw8IHJfc2l6ZTsKLSAgICB9Ci0KLSAgICBpZiggcmlnaHRfYmVnaW4gIT0gcmlnaHRfZW5kICkgewotICAgICAgICBzdGQ6OnNpemVfdCBsX3NpemUgPSBwb3M7Ci0gICAgICAgIHdoaWxlKCByaWdodF9iZWdpbiAhPSByaWdodF9lbmQgKSB7Ci0gICAgICAgICAgICArK3BvczsKLSAgICAgICAgICAgICsrcmlnaHRfYmVnaW47Ci0gICAgICAgIH0KLQotICAgICAgICByZXMgPSBmYWxzZTsKLSAgICAgICAgcmVzLm1lc3NhZ2UoKSA8PCAiXG5Db2xsZWN0aW9ucyBzaXplIG1pc21hdGNoOiAiIDw8IGxfc2l6ZSA8PCAiICE9ICIgPDwgcG9zOwotICAgIH0KLQotICAgIHJldHVybiByZXM7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlIDxjbGFzcyBMZWZ0LCBjbGFzcyBSaWdodD4KLWlubGluZSBwcmVkaWNhdGVfcmVzdWx0Ci1iaXR3aXNlX2VxdWFsX2ltcGwoIExlZnQgY29uc3QmIGxlZnQsIFJpZ2h0IGNvbnN0JiByaWdodCApCi17Ci0gICAgcHJlZGljYXRlX3Jlc3VsdCAgICByZXMoIHRydWUgKTsKLQotICAgIHN0ZDo6c2l6ZV90IGxlZnRfYml0X3NpemUgID0gc2l6ZW9mKExlZnQpKkNIQVJfQklUOwotICAgIHN0ZDo6c2l6ZV90IHJpZ2h0X2JpdF9zaXplID0gc2l6ZW9mKFJpZ2h0KSpDSEFSX0JJVDsKLQotICAgIHN0YXRpYyBMZWZ0IGNvbnN0IGxlZnRPbmUoIDEgKTsKLSAgICBzdGF0aWMgUmlnaHQgY29uc3QgcmlnaHRPbmUoIDEgKTsKLQotICAgIHN0ZDo6c2l6ZV90IHRvdGFsX2JpdHMgPSBsZWZ0X2JpdF9zaXplIDwgcmlnaHRfYml0X3NpemUgPyBsZWZ0X2JpdF9zaXplIDogcmlnaHRfYml0X3NpemU7Ci0KLSAgICBmb3IoIHN0ZDo6c2l6ZV90IGNvdW50ZXIgPSAwOyBjb3VudGVyIDwgdG90YWxfYml0czsgKytjb3VudGVyICkgewotICAgICAgICBpZiggKCBsZWZ0ICYgKCBsZWZ0T25lIDw8IGNvdW50ZXIgKSApICE9ICggcmlnaHQgJiAoIHJpZ2h0T25lIDw8IGNvdW50ZXIgKSApICkgewotICAgICAgICAgICAgcmVzID0gZmFsc2U7Ci0gICAgICAgICAgICByZXMubWVzc2FnZSgpIDw8ICJcbk1pc21hdGNoIGluIGEgcG9zaXRpb24gIiA8PCBjb3VudGVyOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYoIGxlZnRfYml0X3NpemUgIT0gcmlnaHRfYml0X3NpemUgKSB7Ci0gICAgICAgIHJlcyA9IGZhbHNlOwotICAgICAgICByZXMubWVzc2FnZSgpIDw8ICJcbk9wZXJhbmRzIGJpdCBzaXplcyBtaXNtYXRjaDogIiA8PCBsZWZ0X2JpdF9zaXplIDw8ICIgIT0gIiA8PCByaWdodF9iaXRfc2l6ZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmVzOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1ib29sIE5ETkJPT1NUX1RFU1RfREVDTCBpc19kZWZpbmVkX2ltcGwoIGNvbnN0X3N0cmluZyBzeW1ib2xfbmFtZSwgY29uc3Rfc3RyaW5nIHN5bWJvbF92YWx1ZSApOwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSB0dF9kZXRhaWwKLQotfSAvLyBuYW1lc3BhY2UgdGVzdF90b29scwotCi1uYW1lc3BhY2UgdGVzdF90b29sYm94ID0gdGVzdF90b29sczsKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX1RFU1RfVE9PTFNfSFBQXzAxMjcwNUdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3VuaXRfdGVzdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdW5pdF90ZXN0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWFkYjgwNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdW5pdF90ZXN0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDEtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA0OTMxMiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogRW50cnkgcG9pbnQgZm9yIHRoZSBlbmQgdXNlciBpbnRvIHRoZSBVbml0IFRlc3QgRnJhbWV3b3JrLgotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9VTklUX1RFU1RfSFBQXzA3MTg5NEdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX1VOSVRfVEVTVF9IUFBfMDcxODk0R0VSCi0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3Rlc3RfdG9vbHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdW5pdF90ZXN0X3N1aXRlLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICBBdXRvIExpbmtpbmcgICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfQUxMX05PX0xJQikgJiYgIWRlZmluZWQoTkROQk9PU1RfVEVTVF9OT19MSUIpICYmIFwKLSAgICAhZGVmaW5lZChORE5CT09TVF9URVNUX1NPVVJDRSkgJiYgIWRlZmluZWQoTkROQk9PU1RfVEVTVF9JTkNMVURFRCkKLSMgIGRlZmluZSBORE5CT09TVF9MSUJfTkFNRSBuZG5ib29zdF91bml0X3Rlc3RfZnJhbWV3b3JrCi0KLSMgIGlmIGRlZmluZWQoTkROQk9PU1RfQUxMX0RZTl9MSU5LKSB8fCBkZWZpbmVkKE5ETkJPT1NUX1RFU1RfRFlOX0xJTkspCi0jICAgIGRlZmluZSBORE5CT09TVF9EWU5fTElOSwotIyAgZW5kaWYKLQotIyAgaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnL2F1dG9fbGluay5ocHA+Ci0KLSNlbmRpZiAgLy8gYXV0by1saW5raW5nIGRpc2FibGVkCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgIHVuaXRfdGVzdF9tYWluICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIHVuaXRfdGVzdCB7Ci0KLWludCBORE5CT09TVF9URVNUX0RFQ0wgdW5pdF90ZXN0X21haW4oIGluaXRfdW5pdF90ZXN0X2Z1bmMgaW5pdF9mdW5jLCBpbnQgYXJnYywgY2hhciogYXJndltdICk7Ci0KLX19Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1RFU1RfRFlOX0xJTkspICYmIGRlZmluZWQoTkROQk9PU1RfVEVTVF9NQUlOKSAmJiAhZGVmaW5lZChORE5CT09TVF9URVNUX05PX01BSU4pCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgbWFpbiBmdW5jdGlvbiBmb3IgdGVzdHMgdXNpbmcgZGxsICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotaW50IE5ETkJPT1NUX1RFU1RfQ0FMTF9ERUNMCi1tYWluKCBpbnQgYXJnYywgY2hhciogYXJndltdICkKLXsKLSAgICByZXR1cm4gOjpuZG5ib29zdDo6dW5pdF90ZXN0Ojp1bml0X3Rlc3RfbWFpbiggJmluaXRfdW5pdF90ZXN0LCBhcmdjLCBhcmd2ICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX0RZTl9MSU5LICYmIE5ETkJPT1NUX1RFU1RfTUFJTiAmJiAhTkROQk9PU1RfVEVTVF9OT19NQUlOCi0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX1VOSVRfVEVTVF9IUFBfMDcxODk0R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdW5pdF90ZXN0X2xvZy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdW5pdF90ZXN0X2xvZy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3ZmNkZTQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3VuaXRfdGVzdF9sb2cuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTc3ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDEtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1NDYzMyAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogZGVmaW5lcyBzaW5nbGV0b24gY2xhc3MgdW5pdF90ZXN0X2xvZyBhbmQgYWxsIG1hbmlwdWxhdG9ycy4KLS8vICB1bml0X3Rlc3RfbG9nIGhhcyBvdXRwdXQgc3RyZWFtIGxpa2UgaW50ZXJmYWNlLiBJdCdzIGltcGxlbWVudGF0aW9uIGlzCi0vLyAgY29tcGxldGVseSBoaWRkZW4gd2l0aCBwaW1wbGUgaWRpb20KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfVU5JVF9URVNUX0xPR19IUFBfMDcxODk0R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfVU5JVF9URVNUX0xPR19IUFBfMDcxODk0R0VSCi0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3Rlc3Rfb2JzZXJ2ZXIuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZ2xvYmFsX3R5cGVkZWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2xvZ19sZXZlbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZndkX2RlY2wuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy93cmFwX3N0cmluZ3N0cmVhbS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy90cml2aWFsX3NpbmdsZXRvbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9sYXp5X29zdHJlYW0uaHBwPgotCi0vLyBCb29zdAotI2luY2x1ZGUgPG5kbmJvb3N0L3V0aWxpdHkuaHBwPgotCi0vLyBTVEwKLSNpbmNsdWRlIDxpb3Nmd2Q+ICAgLy8gZm9yIHN0ZDo6b3N0cmVhbSYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIHVuaXRfdGVzdCB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICBsb2cgbWFuaXB1bGF0b3JzICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotbmFtZXNwYWNlIGxvZyB7Ci0KLXN0cnVjdCBORE5CT09TVF9URVNUX0RFQ0wgYmVnaW4gewotICAgIGJlZ2luKCBjb25zdF9zdHJpbmcgZm4sIHN0ZDo6c2l6ZV90IGxuICkKLSAgICA6IG1fZmlsZV9uYW1lKCBmbiApCi0gICAgLCBtX2xpbmVfbnVtKCBsbiApCi0gICAge30KLQotICAgIGNvbnN0X3N0cmluZyBtX2ZpbGVfbmFtZTsKLSAgICBzdGQ6OnNpemVfdCBtX2xpbmVfbnVtOwotfTsKLQotc3RydWN0IGVuZCB7fTsKLQotfSAvLyBuYW1lc3BhY2UgbG9nCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICBlbnRyeV92YWx1ZV9jb2xsZWN0b3IgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotbmFtZXNwYWNlIHV0X2RldGFpbCB7Ci0KLWNsYXNzIE5ETkJPT1NUX1RFU1RfREVDTCBlbnRyeV92YWx1ZV9jb2xsZWN0b3IgewotcHVibGljOgotICAgIC8vIENvbnN0cnVjdG9ycwotICAgIGVudHJ5X3ZhbHVlX2NvbGxlY3RvcigpIDogbV9sYXN0KCB0cnVlICkge30KLSAgICBlbnRyeV92YWx1ZV9jb2xsZWN0b3IoIGVudHJ5X3ZhbHVlX2NvbGxlY3RvciBjb25zdCYgcmhzICkgOiBtX2xhc3QoIHRydWUgKSB7IHJocy5tX2xhc3QgPSBmYWxzZTsgfQotICAgIH5lbnRyeV92YWx1ZV9jb2xsZWN0b3IoKTsKLQotICAgIC8vIGNvbGxlY3Rpb24gaW50ZXJmYWNlCi0gICAgZW50cnlfdmFsdWVfY29sbGVjdG9yIGNvbnN0JiBvcGVyYXRvcjw8KCBsYXp5X29zdHJlYW0gY29uc3QmICkgY29uc3Q7Ci0gICAgZW50cnlfdmFsdWVfY29sbGVjdG9yIGNvbnN0JiBvcGVyYXRvcjw8KCBjb25zdF9zdHJpbmcgKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICBtdXRhYmxlIGJvb2wgICAgbV9sYXN0OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgdXRfZGV0YWlsCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgdW5pdF90ZXN0X2xvZyAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotY2xhc3MgTkROQk9PU1RfVEVTVF9ERUNMIHVuaXRfdGVzdF9sb2dfdCA6IHB1YmxpYyB0ZXN0X29ic2VydmVyLCBwdWJsaWMgc2luZ2xldG9uPHVuaXRfdGVzdF9sb2dfdD4gewotcHVibGljOgotICAgIC8vIHRlc3Rfb2JzZXJ2ZXIgaW50ZXJmYWNlIGltcGxlbWVudGF0aW9uCi0gICAgdm9pZCAgICAgICAgICAgICAgICB0ZXN0X3N0YXJ0KCBjb3VudGVyX3QgdGVzdF9jYXNlc19hbW91bnQgKTsKLSAgICB2b2lkICAgICAgICAgICAgICAgIHRlc3RfZmluaXNoKCk7Ci0gICAgdm9pZCAgICAgICAgICAgICAgICB0ZXN0X2Fib3J0ZWQoKTsKLQotICAgIHZvaWQgICAgICAgICAgICAgICAgdGVzdF91bml0X3N0YXJ0KCB0ZXN0X3VuaXQgY29uc3QmICk7Ci0gICAgdm9pZCAgICAgICAgICAgICAgICB0ZXN0X3VuaXRfZmluaXNoKCB0ZXN0X3VuaXQgY29uc3QmLCB1bnNpZ25lZCBsb25nIGVsYXBzZWQgKTsKLSAgICB2b2lkICAgICAgICAgICAgICAgIHRlc3RfdW5pdF9za2lwcGVkKCB0ZXN0X3VuaXQgY29uc3QmICk7Ci0gICAgdm9pZCAgICAgICAgICAgICAgICB0ZXN0X3VuaXRfYWJvcnRlZCggdGVzdF91bml0IGNvbnN0JiApOwotCi0gICAgdm9pZCAgICAgICAgICAgICAgICBhc3NlcnRpb25fcmVzdWx0KCBib29sIHBhc3NlZCApOwotICAgIHZvaWQgICAgICAgICAgICAgICAgZXhjZXB0aW9uX2NhdWdodCggZXhlY3V0aW9uX2V4Y2VwdGlvbiBjb25zdCYgKTsKLQotICAgIHZpcnR1YWwgaW50ICAgICAgICAgcHJpb3JpdHkoKSB7IHJldHVybiAxOyB9Ci0KLSAgICAvLyBsb2cgY29uZmlndXJhdGlvbiBtZXRob2RzCi0gICAgdm9pZCAgICAgICAgICAgICAgICBzZXRfc3RyZWFtKCBzdGQ6Om9zdHJlYW0mICk7Ci0gICAgdm9pZCAgICAgICAgICAgICAgICBzZXRfdGhyZXNob2xkX2xldmVsKCBsb2dfbGV2ZWwgKTsKLSAgICB2b2lkICAgICAgICAgICAgICAgIHNldF9mb3JtYXQoIG91dHB1dF9mb3JtYXQgKTsKLSAgICB2b2lkICAgICAgICAgICAgICAgIHNldF9mb3JtYXR0ZXIoIHVuaXRfdGVzdF9sb2dfZm9ybWF0dGVyKiApOwotCi0gICAgLy8gdGVzdCBwcm9ncmVzcyBsb2dnaW5nCi0gICAgdm9pZCAgICAgICAgICAgICAgICBzZXRfY2hlY2twb2ludCggY29uc3Rfc3RyaW5nIGZpbGUsIHN0ZDo6c2l6ZV90IGxpbmVfbnVtLCBjb25zdF9zdHJpbmcgbXNnID0gY29uc3Rfc3RyaW5nKCkgKTsKLQotICAgIC8vIGVudHJ5IGxvZ2dpbmcKLSAgICB1bml0X3Rlc3RfbG9nX3QmICAgIG9wZXJhdG9yPDwoIGxvZzo6YmVnaW4gY29uc3QmICk7ICAgICAgICAvLyBiZWdpbiBlbnRyeSAKLSAgICB1bml0X3Rlc3RfbG9nX3QmICAgIG9wZXJhdG9yPDwoIGxvZzo6ZW5kIGNvbnN0JiApOyAgICAgICAgICAvLyBlbmQgZW50cnkKLSAgICB1bml0X3Rlc3RfbG9nX3QmICAgIG9wZXJhdG9yPDwoIGxvZ19sZXZlbCApOyAgICAgICAgICAgICAgICAvLyBzZXQgZW50cnkgbGV2ZWwKLSAgICB1bml0X3Rlc3RfbG9nX3QmICAgIG9wZXJhdG9yPDwoIGNvbnN0X3N0cmluZyApOyAgICAgICAgICAgICAvLyBsb2cgZW50cnkgdmFsdWUKLSAgICB1bml0X3Rlc3RfbG9nX3QmICAgIG9wZXJhdG9yPDwoIGxhenlfb3N0cmVhbSBjb25zdCYgKTsgICAgICAvLyBsb2cgZW50cnkgdmFsdWUKLQotICAgIHV0X2RldGFpbDo6ZW50cnlfdmFsdWVfY29sbGVjdG9yIG9wZXJhdG9yKCkoIGxvZ19sZXZlbCApOyAgIC8vIGluaXRpYXRlIGVudHJ5IGNvbGxlY3Rpb24KLQotcHJpdmF0ZToKLSAgICBib29sICAgICAgICAgICAgbG9nX2VudHJ5X3N0YXJ0KCk7Ci0KLSAgICBORE5CT09TVF9URVNUX1NJTkdMRVRPTl9DT05TKCB1bml0X3Rlc3RfbG9nX3QgKTsKLX07IC8vIHVuaXRfdGVzdF9sb2dfdAotCi1ORE5CT09TVF9URVNUX1NJTkdMRVRPTl9JTlNUKCB1bml0X3Rlc3RfbG9nICkKLQotLy8gaGVscGVyIG1hY3JvcwotI2RlZmluZSBORE5CT09TVF9URVNUX0xPR19FTlRSWSggbGwgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICg6Om5kbmJvb3N0Ojp1bml0X3Rlc3Q6OnVuaXRfdGVzdF9sb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICA8PCA6Om5kbmJvb3N0Ojp1bml0X3Rlc3Q6OmxvZzo6YmVnaW4oIE5ETkJPT1NUX1RFU1RfTChfX0ZJTEVfXyksIF9fTElORV9fICkpKGxsKSAgXAotLyoqLwotCi19IC8vIG5hbWVzcGFjZSB1bml0X3Rlc3QKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgIFVuaXQgdGVzdCBsb2cgaW50ZXJmYWNlIGhlbHBlcnMgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfTUVTU0FHRSggTSApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIE5ETkJPT1NUX1RFU1RfTE9HX0VOVFJZKCA6Om5kbmJvb3N0Ojp1bml0X3Rlc3Q6OmxvZ19tZXNzYWdlcyApICAgIFwKLSAgICA8PCAoOjpuZG5ib29zdDo6dW5pdF90ZXN0OjpsYXp5X29zdHJlYW06Omluc3RhbmNlKCkgPDwgTSkgICAgICBcCi0vKiovCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9QQVNTUE9JTlQoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgOjpuZG5ib29zdDo6dW5pdF90ZXN0Ojp1bml0X3Rlc3RfbG9nLnNldF9jaGVja3BvaW50KCAgICAgICAgICAgXAotICAgICAgICBORE5CT09TVF9URVNUX0woX19GSUxFX18pLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgc3RhdGljX2Nhc3Q8c3RkOjpzaXplX3Q+KF9fTElORV9fKSApICAgICAgICAgICAgICAgICAgICBcCi0vKiovCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9DSEVDS1BPSU5UKCBNICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgOjpuZG5ib29zdDo6dW5pdF90ZXN0Ojp1bml0X3Rlc3RfbG9nLnNldF9jaGVja3BvaW50KCAgICAgICAgICAgXAotICAgICAgICBORE5CT09TVF9URVNUX0woX19GSUxFX18pLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgc3RhdGljX2Nhc3Q8c3RkOjpzaXplX3Q+KF9fTElORV9fKSwgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICg6Om5kbmJvb3N0Ojp3cmFwX3N0cmluZ3N0cmVhbSgpLnJlZigpIDw8IE0pLnN0cigpICkgICAgICAgXAotLyoqLwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RFU1RfVU5JVF9URVNUX0xPR19IUFBfMDcxODk0R0VSCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91bml0X3Rlc3RfbG9nX2Zvcm1hdHRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdW5pdF90ZXN0X2xvZ19mb3JtYXR0ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMWQyMTYxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91bml0X3Rlc3RfbG9nX2Zvcm1hdHRlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjMgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwMy0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDU3OTkyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiAKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfVU5JVF9URVNUX0xPR19GT1JNQVRURVJfSFBQXzA3MTg5NEdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX1VOSVRfVEVTVF9MT0dfRk9STUFUVEVSX0hQUF8wNzE4OTRHRVIKLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2dsb2JhbF90eXBlZGVmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9sb2dfbGV2ZWwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2Z3ZF9kZWNsLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZXhlY3V0aW9uX21vbml0b3IuaHBwPgotCi0vLyBTVEwKLSNpbmNsdWRlIDxpb3Nmd2Q+Ci0jaW5jbHVkZSA8c3RyaW5nPiAvLyBmb3Igc3RkOjpzdHJpbmcKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIHVuaXRfdGVzdCB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICBsb2dfZW50cnlfZGF0YSAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotc3RydWN0IE5ETkJPT1NUX1RFU1RfREVDTCBsb2dfZW50cnlfZGF0YSB7Ci0gICAgbG9nX2VudHJ5X2RhdGEoKQotICAgIHsKLSAgICAgICAgbV9maWxlX25hbWUucmVzZXJ2ZSggMjAwICk7Ci0gICAgfQotCi0gICAgc3RkOjpzdHJpbmcgICAgIG1fZmlsZV9uYW1lOwotICAgIHN0ZDo6c2l6ZV90ICAgICBtX2xpbmVfbnVtOwotICAgIGxvZ19sZXZlbCAgICAgICBtX2xldmVsOwotCi0gICAgdm9pZCBjbGVhcigpCi0gICAgewotICAgICAgICBtX2ZpbGVfbmFtZS5lcmFzZSgpOwotICAgICAgICBtX2xpbmVfbnVtICAgICAgPSAwOwotICAgICAgICBtX2xldmVsICAgICA9IGxvZ19ub3RoaW5nOwotICAgIH0KLX07Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICBjaGVja3BvaW50X2RhdGEgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotc3RydWN0IE5ETkJPT1NUX1RFU1RfREVDTCBsb2dfY2hlY2twb2ludF9kYXRhCi17Ci0gICAgY29uc3Rfc3RyaW5nICAgIG1fZmlsZV9uYW1lOwotICAgIHN0ZDo6c2l6ZV90ICAgICBtX2xpbmVfbnVtOwotICAgIHN0ZDo6c3RyaW5nICAgICBtX21lc3NhZ2U7Ci0KLSAgICB2b2lkIGNsZWFyKCkKLSAgICB7Ci0gICAgICAgIG1fZmlsZV9uYW1lLmNsZWFyKCk7Ci0gICAgICAgIG1fbGluZV9udW0gICAgPSAwOwotICAgICAgICBtX21lc3NhZ2UgPSBzdGQ6OnN0cmluZygpOwotICAgIH0KLX07Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgIHVuaXRfdGVzdF9sb2dfZm9ybWF0dGVyICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotY2xhc3MgTkROQk9PU1RfVEVTVF9ERUNMIHVuaXRfdGVzdF9sb2dfZm9ybWF0dGVyIHsKLXB1YmxpYzoKLSAgICBlbnVtIGxvZ19lbnRyeV90eXBlcyB7IE5ETkJPT1NUX1VUTF9FVF9JTkZPLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX1VUTF9FVF9NRVNTQUdFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfVVRMX0VUX1dBUk5JTkcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9VVExfRVRfRVJST1IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9VVExfRVRfRkFUQUxfRVJST1IgfTsKLQotICAgIC8vIERlc3RydWN0b3IKLSAgICB2aXJ0dWFsICAgICAgICAgICAgIH51bml0X3Rlc3RfbG9nX2Zvcm1hdHRlcigpIHt9Ci0KLSAgICAvLyBGb3JtYXR0ZXIgaW50ZXJmYWNlCi0gICAgdmlydHVhbCB2b2lkICAgICAgICBsb2dfc3RhcnQoIHN0ZDo6b3N0cmVhbSYsIGNvdW50ZXJfdCB0ZXN0X2Nhc2VzX2Ftb3VudCApID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgICAgICAgIGxvZ19maW5pc2goIHN0ZDo6b3N0cmVhbSYgKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkICAgICAgICBsb2dfYnVpbGRfaW5mbyggc3RkOjpvc3RyZWFtJiApID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCAgICAgICAgdGVzdF91bml0X3N0YXJ0KCBzdGQ6Om9zdHJlYW0mLCB0ZXN0X3VuaXQgY29uc3QmIHR1ICkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCAgICAgICAgdGVzdF91bml0X2ZpbmlzaCggc3RkOjpvc3RyZWFtJiwgdGVzdF91bml0IGNvbnN0JiB0dSwgdW5zaWduZWQgbG9uZyBlbGFwc2VkICkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCAgICAgICAgdGVzdF91bml0X3NraXBwZWQoIHN0ZDo6b3N0cmVhbSYsIHRlc3RfdW5pdCBjb25zdCYgKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgICAgICAgIGxvZ19leGNlcHRpb24oIHN0ZDo6b3N0cmVhbSYgb3MsIGxvZ19jaGVja3BvaW50X2RhdGEgY29uc3QmIGNkLCBleGVjdXRpb25fZXhjZXB0aW9uIGNvbnN0JiBleCApCi0gICAgewotICAgICAgICAvLyBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eQotICAgICAgICBsb2dfZXhjZXB0aW9uKCBvcywgY2QsIGV4LndoYXQoKSApOwotICAgIH0KLSAgICB2aXJ0dWFsIHZvaWQgICAgICAgIGxvZ19leGNlcHRpb24oIHN0ZDo6b3N0cmVhbSYsIGxvZ19jaGVja3BvaW50X2RhdGEgY29uc3QmLCBjb25zdF9zdHJpbmcgLyogZXhwbGFuYXRpb24gKi8gKSB7fQotCi0gICAgdmlydHVhbCB2b2lkICAgICAgICBsb2dfZW50cnlfc3RhcnQoIHN0ZDo6b3N0cmVhbSYsIGxvZ19lbnRyeV9kYXRhIGNvbnN0JiwgbG9nX2VudHJ5X3R5cGVzIGxldCApID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgICAgICAgIGxvZ19lbnRyeV92YWx1ZSggc3RkOjpvc3RyZWFtJiwgY29uc3Rfc3RyaW5nIHZhbHVlICkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCAgICAgICAgbG9nX2VudHJ5X3ZhbHVlKCBzdGQ6Om9zdHJlYW0mLCBsYXp5X29zdHJlYW0gY29uc3QmIHZhbHVlICk7IC8vIHRoZXJlIGlzIGEgZGVmYXVsdCBpbXBsCi0gICAgdmlydHVhbCB2b2lkICAgICAgICBsb2dfZW50cnlfZmluaXNoKCBzdGQ6Om9zdHJlYW0mICkgPSAwOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgdW5pdF90ZXN0Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9VTklUX1RFU1RfTE9HX0ZPUk1BVFRFUl9IUFBfMDcxODk0R0VSCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91bml0X3Rlc3RfbW9uaXRvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdW5pdF90ZXN0X21vbml0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MzQzNzhlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91bml0X3Rlc3RfbW9uaXRvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDAxLTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNDkzMTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGRlZmluZXMgc3BlY2lmaWMgdmVyc2lvbiBvZiBleGVjdXRpb24gbW9uaXRvciB1c2VkIHRvIG1hbmFnZWQgCi0vLyAgcnVuIHVuaXQgb2YgdGVzdCBjYXNlcy4gVHJhbnNsYXRlcyBleGVjdXRpb24gZXhjZXB0aW9uIGludG8gZXJyb3IgbGV2ZWwKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfVU5JVF9URVNUX01PTklUT1JfSFBQXzAyMDkwNUdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX1VOSVRfVEVTVF9NT05JVE9SX0hQUF8wMjA5MDVHRVIKLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZXhlY3V0aW9uX21vbml0b3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2Z3ZF9kZWNsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3RyaXZpYWxfc2luZ2xldG9uLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2NhbGxiYWNrLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIHVuaXRfdGVzdCB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgIHVuaXRfdGVzdF9tb25pdG9yICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotY2xhc3MgTkROQk9PU1RfVEVTVF9ERUNMIHVuaXRfdGVzdF9tb25pdG9yX3QgOiBwdWJsaWMgc2luZ2xldG9uPHVuaXRfdGVzdF9tb25pdG9yX3Q+LCBwdWJsaWMgZXhlY3V0aW9uX21vbml0b3IgewotcHVibGljOgotICAgIGVudW0gZXJyb3JfbGV2ZWwgeyAKLSAgICAgICAgdGVzdF9mYWlsICAgICAgICAgICAgICAgPSAgMSwKLSAgICAgICAgdGVzdF9vayAgICAgICAgICAgICAgICAgPSAgMCwKLSAgICAgICAgY29uc3RydWN0b3JfZXJyb3IgICAgICAgPSAtMSwgCi0gICAgICAgIHVuZXhwZWN0ZWRfZXhjZXB0aW9uICAgID0gLTIsIAotICAgICAgICBvc19leGNlcHRpb24gICAgICAgICAgICA9IC0zLCAKLSAgICAgICAgb3NfdGltZW91dCAgICAgICAgICAgICAgPSAtNCwgCi0gICAgICAgIGZhdGFsX2Vycm9yICAgICAgICAgICAgID0gLTUsICAvLyBpbmNsdWRlcyBib3RoIHN5c3RlbSBhbmQgdXNlcgotICAgICAgICBkZXN0cnVjdG9yX2Vycm9yICAgICAgICA9IC02Ci0gICAgfTsKLQotICAgIHN0YXRpYyBib29sIGlzX2NyaXRpY2FsX2Vycm9yKCBlcnJvcl9sZXZlbCBlICkgeyByZXR1cm4gZSA8PSBmYXRhbF9lcnJvcjsgfQotCi0gICAgLy8gbW9uaXRvciBtZXRob2QKLSAgICBlcnJvcl9sZXZlbCBleGVjdXRlX2FuZF90cmFuc2xhdGUoIHRlc3RfY2FzZSBjb25zdCYgKTsKLQotcHJpdmF0ZToKLSAgICBORE5CT09TVF9URVNUX1NJTkdMRVRPTl9DT05TKCB1bml0X3Rlc3RfbW9uaXRvcl90ICk7Ci19OwotCi1ORE5CT09TVF9URVNUX1NJTkdMRVRPTl9JTlNUKCB1bml0X3Rlc3RfbW9uaXRvciApCi0KLX0gLy8gbmFtZXNwYWNlIHVuaXRfdGVzdAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RFU1RfVU5JVF9URVNUX01PTklUT1JfSFBQXzAyMDkwNUdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3VuaXRfdGVzdF9zdWl0ZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdW5pdF90ZXN0X3N1aXRlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmM3MGNhNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdW5pdF90ZXN0X3N1aXRlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI0NSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDAxLTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTc5OTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGRlZmluZXMgVW5pdCBUZXN0IEZyYW1ld29yayBwdWJsaWMgQVBJCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX1VOSVRfVEVTVF9TVUlURV9IUFBfMDcxODk0R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfVU5JVF9URVNUX1NVSVRFX0hQUF8wNzE4OTRHRVIKLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdW5pdF90ZXN0X3N1aXRlX2ltcGwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZnJhbWV3b3JrLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgIE5vbi1hdXRvIChleHBsaWNpdCkgdGVzdCBjYXNlIGludGVyZmFjZSAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfQ0FTRSggdGVzdF9mdW5jdGlvbiApIFwKLW5kbmJvb3N0Ojp1bml0X3Rlc3Q6Om1ha2VfdGVzdF9jYXNlKCBuZG5ib29zdDo6dW5pdF90ZXN0OjpjYWxsYmFjazA8Pih0ZXN0X2Z1bmN0aW9uKSwgTkROQk9PU1RfVEVTVF9TVFJJTkdJWkUoIHRlc3RfZnVuY3Rpb24gKSApCi0jZGVmaW5lIE5ETkJPT1NUX0NMQVNTX1RFU1RfQ0FTRSggdGVzdF9mdW5jdGlvbiwgdGNfaW5zdGFuY2UgKSBcCi1uZG5ib29zdDo6dW5pdF90ZXN0OjptYWtlX3Rlc3RfY2FzZSgodGVzdF9mdW5jdGlvbiksIE5ETkJPT1NUX1RFU1RfU1RSSU5HSVpFKCB0ZXN0X2Z1bmN0aW9uICksIHRjX2luc3RhbmNlICkKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgTkROQk9PU1RfVEVTVF9TVUlURSAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfU1VJVEUoIHRlc3RzdWl0ZV9uYW1lICkgXAotKCBuZXcgbmRuYm9vc3Q6OnVuaXRfdGVzdDo6dGVzdF9zdWl0ZSggdGVzdHN1aXRlX25hbWUgKSApCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICBORE5CT09TVF9BVVRPX1RFU1RfU1VJVEUgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotI2RlZmluZSBORE5CT09TVF9BVVRPX1RFU1RfU1VJVEUoIHN1aXRlX25hbWUgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotbmFtZXNwYWNlIHN1aXRlX25hbWUgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotTkROQk9PU1RfQVVUT19UVV9SRUdJU1RSQVIoIHN1aXRlX25hbWUgKSggTkROQk9PU1RfU1RSSU5HSVpFKCBzdWl0ZV9uYW1lICkgKTsgXAotLyoqLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICBORE5CT09TVF9GSVhUVVJFX1RFU1RfU1VJVEUgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLSNkZWZpbmUgTkROQk9PU1RfRklYVFVSRV9URVNUX1NVSVRFKCBzdWl0ZV9uYW1lLCBGICkgICAgICAgICAgICAgICAgICAgICAgIFwKLU5ETkJPT1NUX0FVVE9fVEVTVF9TVUlURSggc3VpdGVfbmFtZSApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXR5cGVkZWYgRiBORE5CT09TVF9BVVRPX1RFU1RfQ0FTRV9GSVhUVVJFOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS8qKi8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICBORE5CT09TVF9BVVRPX1RFU1RfU1VJVEVfRU5EICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi0jZGVmaW5lIE5ETkJPT1NUX0FVVE9fVEVTVF9TVUlURV9FTkQoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1ORE5CT09TVF9BVVRPX1RVX1JFR0lTVFJBUiggTkROQk9PU1RfSk9JTiggZW5kX3N1aXRlLCBfX0xJTkVfXyApICkoIDEgKTsgICAgICBcCi19ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0vKiovCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICBORE5CT09TVF9BVVRPX1RFU1RfQ0FTRV9FWFBFQ1RFRF9GQUlMVVJFUyAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotI2RlZmluZSBORE5CT09TVF9BVVRPX1RFU1RfQ0FTRV9FWFBFQ1RFRF9GQUlMVVJFUyggdGVzdF9uYW1lLCBuICkgICAgICAgICAgXAotc3RydWN0IE5ETkJPT1NUX0FVVE9fVENfVU5JUVVFX0lEKCB0ZXN0X25hbWUgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotc3RhdGljIHN0cnVjdCBORE5CT09TVF9KT0lOKCB0ZXN0X25hbWUsIF9leHBfZmFpbF9udW1fc3BlYyApICAgICAgICAgICAgICAgXAotOiBuZG5ib29zdDo6dW5pdF90ZXN0Ojp1dF9kZXRhaWw6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBhdXRvX3RjX2V4cF9mYWlsPE5ETkJPT1NUX0FVVE9fVENfVU5JUVVFX0lEKCB0ZXN0X25hbWUgKSA+ICAgICAgICAgICAgICAgXAoteyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIE5ETkJPT1NUX0pPSU4oIHRlc3RfbmFtZSwgX2V4cF9mYWlsX251bV9zcGVjICkoKSAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIDogbmRuYm9vc3Q6OnVuaXRfdGVzdDo6dXRfZGV0YWlsOjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgYXV0b190Y19leHBfZmFpbDxORE5CT09TVF9BVVRPX1RDX1VOSVFVRV9JRCggdGVzdF9uYW1lICkgPiggbiApICAgICAgXAotICAgIHt9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotfSBORE5CT09TVF9KT0lOKCB0ZXN0X25hbWUsIF9leHBfZmFpbF9udW1fc3BlY19pbnN0ICk7ICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLyoqLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICBORE5CT09TVF9GSVhUVVJFX1RFU1RfQ0FTRSAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLSNkZWZpbmUgTkROQk9PU1RfRklYVFVSRV9URVNUX0NBU0UoIHRlc3RfbmFtZSwgRiApICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXN0cnVjdCB0ZXN0X25hbWUgOiBwdWJsaWMgRiB7IHZvaWQgdGVzdF9tZXRob2QoKTsgfTsgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXN0YXRpYyB2b2lkIE5ETkJPT1NUX0FVVE9fVENfSU5WT0tFUiggdGVzdF9uYW1lICkoKSAgICAgICAgICAgICAgICAgICAgICAgIFwKLXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB0ZXN0X25hbWUgdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB0LnRlc3RfbWV0aG9kKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXN0cnVjdCBORE5CT09TVF9BVVRPX1RDX1VOSVFVRV9JRCggdGVzdF9uYW1lICkge307ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLU5ETkJPT1NUX0FVVE9fVFVfUkVHSVNUUkFSKCB0ZXN0X25hbWUgKSggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBuZG5ib29zdDo6dW5pdF90ZXN0OjptYWtlX3Rlc3RfY2FzZSggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgJk5ETkJPT1NUX0FVVE9fVENfSU5WT0tFUiggdGVzdF9uYW1lICksICN0ZXN0X25hbWUgKSwgICAgICAgICAgICAgIFwKLSAgICBuZG5ib29zdDo6dW5pdF90ZXN0Ojp1dF9kZXRhaWw6OmF1dG9fdGNfZXhwX2ZhaWw8ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgTkROQk9PU1RfQVVUT19UQ19VTklRVUVfSUQoIHRlc3RfbmFtZSApPjo6aW5zdGFuY2UoKS0+dmFsdWUoKSApOyAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXZvaWQgdGVzdF9uYW1lOjp0ZXN0X21ldGhvZCgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS8qKi8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgIE5ETkJPT1NUX0FVVE9fVEVTVF9DQVNFICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi0jZGVmaW5lIE5ETkJPT1NUX0FVVE9fVEVTVF9DQVNFKCB0ZXN0X25hbWUgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1ORE5CT09TVF9GSVhUVVJFX1RFU1RfQ0FTRSggdGVzdF9uYW1lLCBORE5CT09TVF9BVVRPX1RFU1RfQ0FTRV9GSVhUVVJFICkKLS8qKi8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgIE5ETkJPT1NUX0ZJWFRVUkVfVEVTVF9DQVNFX1RFTVBMQVRFICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi0jZGVmaW5lIE5ETkJPT1NUX0ZJWFRVUkVfVEVTVF9DQVNFX1RFTVBMQVRFKCB0ZXN0X25hbWUsIHR5cGVfbmFtZSwgVEwsIEYgKSBcCi10ZW1wbGF0ZTx0eXBlbmFtZSB0eXBlX25hbWU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1zdHJ1Y3QgdGVzdF9uYW1lIDogcHVibGljIEYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi17IHZvaWQgdGVzdF9tZXRob2QoKTsgfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1zdHJ1Y3QgTkROQk9PU1RfQVVUT19UQ19JTlZPS0VSKCB0ZXN0X25hbWUgKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVGVzdFR5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgc3RhdGljIHZvaWQgcnVuKCBuZG5ib29zdDo6dHlwZTxUZXN0VHlwZT4qID0gMCApICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHRlc3RfbmFtZTxUZXN0VHlwZT4gdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHQudGVzdF9tZXRob2QoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi19OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1ORE5CT09TVF9BVVRPX1RVX1JFR0lTVFJBUiggdGVzdF9uYW1lICkoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgbmRuYm9vc3Q6OnVuaXRfdGVzdDo6dXRfZGV0YWlsOjp0ZW1wbGF0ZV90ZXN0X2Nhc2VfZ2VuPCAgICAgICAgICAgICAgICBcCi0gICAgICAgIE5ETkJPT1NUX0FVVE9fVENfSU5WT0tFUiggdGVzdF9uYW1lICksVEwgPiggICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgTkROQk9PU1RfU1RSSU5HSVpFKCB0ZXN0X25hbWUgKSApICk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi10ZW1wbGF0ZTx0eXBlbmFtZSB0eXBlX25hbWU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi12b2lkIHRlc3RfbmFtZTx0eXBlX25hbWU+Ojp0ZXN0X21ldGhvZCgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0vKiovCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgTkROQk9PU1RfQVVUT19URVNUX0NBU0VfVEVNUExBVEUgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotI2RlZmluZSBORE5CT09TVF9BVVRPX1RFU1RfQ0FTRV9URU1QTEFURSggdGVzdF9uYW1lLCB0eXBlX25hbWUsIFRMICkgICAgICAgXAotTkROQk9PU1RfRklYVFVSRV9URVNUX0NBU0VfVEVNUExBVEUoIHRlc3RfbmFtZSwgdHlwZV9uYW1lLCBUTCwgTkROQk9PU1RfQVVUT19URVNUX0NBU0VfRklYVFVSRSApCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgTkROQk9PU1RfVEVTVF9DQVNFX1RFTVBMQVRFICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotI2RlZmluZSBORE5CT09TVF9URVNUX0NBU0VfVEVNUExBVEUoIG5hbWUsIHR5cGVsaXN0ICkgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBuZG5ib29zdDo6dW5pdF90ZXN0Ojp1dF9kZXRhaWw6OnRlbXBsYXRlX3Rlc3RfY2FzZV9nZW48bmFtZSx0eXBlbGlzdCA+KCAgICBcCi0gICAgICAgIE5ETkJPT1NUX1RFU1RfU1RSSU5HSVpFKCBuYW1lICkgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLyoqLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICBORE5CT09TVF9URVNUX0NBU0VfVEVNUExBVEVfRlVOQ1RJT04gICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9DQVNFX1RFTVBMQVRFX0ZVTkNUSU9OKCBuYW1lLCB0eXBlX25hbWUgKSAgICBcCi10ZW1wbGF0ZTx0eXBlbmFtZSB0eXBlX25hbWU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotdm9pZCBORE5CT09TVF9KT0lOKCBuYW1lLCBfaW1wbCApKCBuZG5ib29zdDo6dHlwZTx0eXBlX25hbWU+KiApOyAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1zdHJ1Y3QgbmFtZSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRlc3RUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBzdGF0aWMgdm9pZCBydW4oIG5kbmJvb3N0Ojp0eXBlPFRlc3RUeXBlPiogZnJ3cmQgPSAwICkgICAgICAgICBcCi0gICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgIE5ETkJPT1NUX0pPSU4oIG5hbWUsIF9pbXBsICkoIGZyd3JkICk7ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi19OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXRlbXBsYXRlPHR5cGVuYW1lIHR5cGVfbmFtZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi12b2lkIE5ETkJPT1NUX0pPSU4oIG5hbWUsIF9pbXBsICkoIG5kbmJvb3N0Ojp0eXBlPHR5cGVfbmFtZT4qICkgICAgICAgXAotLyoqLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgIE5ETkJPT1NUX0dMT0JBTF9GSVhVUkUgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLSNkZWZpbmUgTkROQk9PU1RfR0xPQkFMX0ZJWFRVUkUoIEYgKSBcCi1zdGF0aWMgbmRuYm9vc3Q6OnVuaXRfdGVzdDo6dXRfZGV0YWlsOjpnbG9iYWxfZml4dHVyZV9pbXBsPEY+IE5ETkJPT1NUX0pPSU4oIGdmXywgRiApIDsgXAotLyoqLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICBORE5CT09TVF9BVVRPX1RFU1RfQ0FTRV9GSVhUVVJFICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSB1bml0X3Rlc3QgeyBuYW1lc3BhY2UgdXRfZGV0YWlsIHsKLQotc3RydWN0IG5pbF90IHt9OwotCi19IC8vIG5hbWVzcGFjZSB1dF9kZXRhaWwKLX0gLy8gdW5pdF90ZXN0Ci19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vLyBJbnRlbnRpb25hbGx5IGlzIGluIGdsb2JhbCBuYW1lc3BhY2UsIHNvIHRoYXQgRklYVVJFX1RFU1RfU1VJVEUgY2FuIHJlc2V0IGl0IGluIHVzZXIgY29kZS4KLXR5cGVkZWYgOjpuZG5ib29zdDo6dW5pdF90ZXN0Ojp1dF9kZXRhaWw6Om5pbF90IE5ETkJPT1NUX0FVVE9fVEVTVF9DQVNFX0ZJWFRVUkU7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgIEF1dG8gcmVnaXN0cmF0aW9uIGZhY2lsaXR5IGhlbHBlciBtYWNyb3MgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotI2RlZmluZSBORE5CT09TVF9BVVRPX1RVX1JFR0lTVFJBUiggdGVzdF9uYW1lICkgICAgXAotc3RhdGljIG5kbmJvb3N0Ojp1bml0X3Rlc3Q6OnV0X2RldGFpbDo6YXV0b190ZXN0X3VuaXRfcmVnaXN0cmFyIE5ETkJPT1NUX0pPSU4oIE5ETkJPT1NUX0pPSU4oIHRlc3RfbmFtZSwgX3JlZ2lzdHJhciApLCBfX0xJTkVfXyApCi0jZGVmaW5lIE5ETkJPT1NUX0FVVE9fVENfSU5WT0tFUiggdGVzdF9uYW1lICkgICAgICBORE5CT09TVF9KT0lOKCB0ZXN0X25hbWUsIF9pbnZva2VyICkKLSNkZWZpbmUgTkROQk9PU1RfQVVUT19UQ19VTklRVUVfSUQoIHRlc3RfbmFtZSApICAgIE5ETkJPT1NUX0pPSU4oIHRlc3RfbmFtZSwgX2lkICkKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgIE5ETkJPT1NUX1RFU1RfTUFJTiAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi0jaWYgZGVmaW5lZChORE5CT09TVF9URVNUX01BSU4pCi0KLSNpZmRlZiBORE5CT09TVF9URVNUX0FMVEVSTkFUSVZFX0lOSVRfQVBJCi1ib29sIGluaXRfdW5pdF90ZXN0KCkgICAgICAgICAgICAgICAgICAgewotI2Vsc2UKLTo6bmRuYm9vc3Q6OnVuaXRfdGVzdDo6dGVzdF9zdWl0ZSoKLWluaXRfdW5pdF90ZXN0X3N1aXRlKCBpbnQsIGNoYXIqIFtdICkgICB7Ci0jZW5kaWYKLQotI2lmZGVmIE5ETkJPT1NUX1RFU1RfTU9EVUxFCi0gICAgdXNpbmcgbmFtZXNwYWNlIDo6bmRuYm9vc3Q6OnVuaXRfdGVzdDsKLSAgICBhc3NpZ25fb3AoIGZyYW1ld29yazo6bWFzdGVyX3Rlc3Rfc3VpdGUoKS5wX25hbWUudmFsdWUsIE5ETkJPT1NUX1RFU1RfU1RSSU5HSVpFKCBORE5CT09TVF9URVNUX01PRFVMRSApLnRyaW0oICJcIiIgKSwgMCApOwotICAgIAotI2VuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9URVNUX0FMVEVSTkFUSVZFX0lOSVRfQVBJCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0jZWxzZQotICAgIHJldHVybiAwOwotfQotI2VuZGlmCi0KLSNlbmRpZgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9VTklUX1RFU1RfU1VJVEVfSFBQXzA3MTg5NEdFUgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdW5pdF90ZXN0X3N1aXRlX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3VuaXRfdGVzdF9zdWl0ZV9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTNlMTA5Ny4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdW5pdF90ZXN0X3N1aXRlX2ltcGwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDM0ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDEtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1NDYzMyAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogZGVmaW5lcyB0ZXN0X3VuaXQsIHRlc3RfY2FzZSwgdGVzdF9jYXNlX3Jlc3VsdHMsIHRlc3Rfc3VpdGUgYW5kIHRlc3RfdHJlZV92aXNpdG9yCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX1VOSVRfVEVTVF9TVUlURV9JTVBMX0hQUF8wNzE4OTRHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9VTklUX1RFU1RfU1VJVEVfSU1QTF9IUFBfMDcxODk0R0VSCi0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2dsb2JhbF90eXBlZGVmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2NsYXNzX3Byb3BlcnRpZXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvY2FsbGJhY2suaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2Z3ZF9kZWNsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3Rlc3Rfb2JzZXJ2ZXIuaHBwPgotCi0vLyBCb29zdAotI2luY2x1ZGUgPG5kbmJvb3N0L3NoYXJlZF9wdHIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9mb3JfZWFjaC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lkZW50aXR5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb25zdC5ocHA+Ci0KLS8vIFNUTAotI2luY2x1ZGUgPHR5cGVpbmZvPiAvLyBmb3IgdHlwZWlkCi0jaW5jbHVkZSA8c3RyaW5nPiAgIC8vIGZvciBzdGQ6OnN0cmluZwotI2luY2x1ZGUgPGxpc3Q+ICAgICAvLyBmb3Igc3RkOjpsaXN0Ci0jaW5jbHVkZSA8dmVjdG9yPiAgIC8vIGZvciBzdGQ6OnZlY3RvcgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgdW5pdF90ZXN0IHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICAgIHRlc3RfdW5pdCAgICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1jbGFzcyBORE5CT09TVF9URVNUX0RFQ0wgdGVzdF91bml0IHsKLXB1YmxpYzoKLSAgICBlbnVtIHsgdHlwZSA9IHR1dF9hbnkgfTsKLQotICAgIC8vIENvbnN0cnVjdG9yCi0gICAgdGVzdF91bml0KCBjb25zdF9zdHJpbmcgdHVfbmFtZSwgdGVzdF91bml0X3R5cGUgdCApOwotCi0gICAgLy8gZGVwZW5kZW5jaWVzIG1hbmFnZW1lbnQKLSAgICB2b2lkICAgIGRlcGVuZHNfb24oIHRlc3RfdW5pdCogdHUgKTsKLSAgICBib29sICAgIGNoZWNrX2RlcGVuZGVuY2llcygpIGNvbnN0OwotCi0gICAgLy8gUHVibGljIHIvbyBwcm9wZXJ0aWVzCi0gICAgdHlwZWRlZiBORE5CT09TVF9SRUFET05MWV9QUk9QRVJUWSh0ZXN0X3VuaXRfaWQsKGZyYW1ld29ya19pbXBsKSkgIGlkX3Q7Ci0gICAgdHlwZWRlZiBORE5CT09TVF9SRUFET05MWV9QUk9QRVJUWSh0ZXN0X3VuaXRfaWQsKHRlc3Rfc3VpdGUpKSAgICAgIHBhcmVudF9pZF90OwotICAgIHJlYWRvbmx5X3Byb3BlcnR5PHRlc3RfdW5pdF90eXBlPiAgIHBfdHlwZTsgICAgICAgICAgICAgICAgIC8vIHR5cGUgZm9yIHRoaXMgdGVzdCB1bml0Ci0gICAgcmVhZG9ubHlfcHJvcGVydHk8Y29uc3Rfc3RyaW5nPiAgICAgcF90eXBlX25hbWU7ICAgICAgICAgICAgLy8gImNhc2UiLyJzdWl0ZSIKLSAgICBpZF90ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwX2lkOyAgICAgICAgICAgICAgICAgICAvLyB1bmlxdWUgaWQgZm9yIHRoaXMgdGVzdCB1bml0Ci0gICAgcGFyZW50X2lkX3QgICAgICAgICAgICAgICAgICAgICAgICAgcF9wYXJlbnRfaWQ7ICAgICAgICAgICAgLy8gcGFyZW50IHRlc3Qgc3VpdGUgaWQKLQotICAgIC8vIFB1YmxpYyByL3cgcHJvcGVydGllcwotICAgIHJlYWR3cml0ZV9wcm9wZXJ0eTxzdGQ6OnN0cmluZz4gICAgIHBfbmFtZTsgICAgICAgICAgICAgICAgIC8vIG5hbWUgZm9yIHRoaXMgdGVzdCB1bml0Ci0gICAgcmVhZHdyaXRlX3Byb3BlcnR5PHVuc2lnbmVkPiAgICAgICAgcF90aW1lb3V0OyAgICAgICAgICAgICAgLy8gdGltZW91dCBmb3IgdGhlIHRlc3QgdW5pdCBleGVjdXRpb24gCi0gICAgcmVhZHdyaXRlX3Byb3BlcnR5PGNvdW50ZXJfdD4gICAgICAgcF9leHBlY3RlZF9mYWlsdXJlczsgICAgLy8gbnVtYmVyIG9mIGV4cGVjdGVkIGZhaWx1cmVzIGluIHRoaXMgdGVzdCB1bml0Ci0gICAgbXV0YWJsZSByZWFkd3JpdGVfcHJvcGVydHk8Ym9vbD4gICAgcF9lbmFibGVkOyAgICAgICAgICAgICAgLy8gZW5hYmxlZCBzdGF0dXMgZm9yIHRoaXMgdW5pdAotCi0gICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jcmVhc2VfZXhwX2ZhaWwoIHVuc2lnbmVkIG51bSApOwotCi1wcm90ZWN0ZWQ6Ci0gICAgfnRlc3RfdW5pdCgpOwotCi1wcml2YXRlOgotICAgIC8vIERhdGEgbWVtYmVycwotICAgIHN0ZDo6bGlzdDx0ZXN0X3VuaXRfaWQ+ICAgICAgICAgICAgIG1fZGVwZW5kZW5jaWVzOwotfTsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICB0ZXN0X2Nhc2VfZ2VuZXJhdG9yICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1jbGFzcyBORE5CT09TVF9URVNUX0RFQ0wgdGVzdF91bml0X2dlbmVyYXRvciB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB0ZXN0X3VuaXQqICBuZXh0KCkgY29uc3QgPSAwOwotCi1wcm90ZWN0ZWQ6Ci0gICAgTkROQk9PU1RfVEVTVF9QUk9URUNURURfVklSVFVBTCB+dGVzdF91bml0X2dlbmVyYXRvcigpIHt9Ci19OwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgICAgdGVzdF9jYXNlICAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWNsYXNzIE5ETkJPT1NUX1RFU1RfREVDTCB0ZXN0X2Nhc2UgOiBwdWJsaWMgdGVzdF91bml0IHsKLXB1YmxpYzoKLSAgICBlbnVtIHsgdHlwZSA9IHR1dF9jYXNlIH07Ci0KLSAgICAvLyBDb25zdHJ1Y3RvcgotICAgIHRlc3RfY2FzZSggY29uc3Rfc3RyaW5nIHRjX25hbWUsIGNhbGxiYWNrMDw+IGNvbnN0JiB0ZXN0X2Z1bmMgKTsKLQotICAgIC8vIEFjY2VzcyBtZXRob2RzCi0gICAgY2FsbGJhY2swPD4gY29uc3QmICB0ZXN0X2Z1bmMoKSBjb25zdCB7IHJldHVybiBtX3Rlc3RfZnVuYzsgfQotCi1wcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBmcmFtZXdvcmtfaW1wbDsKLSAgICB+dGVzdF9jYXNlKCkge30KLQotICAgIC8vIE5ETkJPT1NUX01TVkMgPD0gMTIwMCBoYXZlIHByb2JsZW1zIHdpdGggY2FsbGJhY2sgYXMgcHJvcGVydHkKLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICBjYWxsYmFjazA8PiBtX3Rlc3RfZnVuYzsKLX07Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgIHRlc3Rfc3VpdGUgICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotY2xhc3MgTkROQk9PU1RfVEVTVF9ERUNMIHRlc3Rfc3VpdGUgOiBwdWJsaWMgdGVzdF91bml0IHsKLXB1YmxpYzoKLSAgICBlbnVtIHsgdHlwZSA9IHR1dF9zdWl0ZSB9OwotCi0gICAgLy8gQ29uc3RydWN0b3IKLSAgICBleHBsaWNpdCAgICAgICAgdGVzdF9zdWl0ZSggY29uc3Rfc3RyaW5nIHRzX25hbWUgKTsKLQotICAgIC8vIHRlc3QgdW5pdCBsaXN0IG1hbmFnZW1lbnQKLSAgICB2b2lkICAgICAgICAgICAgYWRkKCB0ZXN0X3VuaXQqIHR1LCBjb3VudGVyX3QgZXhwZWN0ZWRfZmFpbHVyZXMgPSAwLCB1bnNpZ25lZCB0aW1lb3V0ID0gMCApOwotICAgIHZvaWQgICAgICAgICAgICBhZGQoIHRlc3RfdW5pdF9nZW5lcmF0b3IgY29uc3QmIGdlbiwgdW5zaWduZWQgdGltZW91dCA9IDAgKTsKLSAgICB2b2lkICAgICAgICAgICAgcmVtb3ZlKCB0ZXN0X3VuaXRfaWQgaWQgKTsKLQotICAgIC8vIGFjY2VzcyBtZXRob2RzCi0gICAgdGVzdF91bml0X2lkICAgIGdldCggY29uc3Rfc3RyaW5nIHR1X25hbWUgKSBjb25zdDsKLSAgICBzdGQ6OnNpemVfdCAgICAgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVtYmVycy5zaXplKCk7IH0KLQotcHJvdGVjdGVkOgotICAgIGZyaWVuZCBORE5CT09TVF9URVNUX0RFQ0wgCi0gICAgdm9pZCAgICAgICAgdHJhdmVyc2VfdGVzdF90cmVlKCB0ZXN0X3N1aXRlIGNvbnN0JiwgdGVzdF90cmVlX3Zpc2l0b3ImICk7Ci0gICAgZnJpZW5kIGNsYXNzIGZyYW1ld29ya19pbXBsOwotICAgIHZpcnR1YWwgICAgIH50ZXN0X3N1aXRlKCkge30KLQotICAgIC8vIERhdGEgbWVtYmVycwotICAgIHN0ZDo6dmVjdG9yPHRlc3RfdW5pdF9pZD4gbV9tZW1iZXJzOwotfTsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgbWFzdGVyX3Rlc3Rfc3VpdGUgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1jbGFzcyBORE5CT09TVF9URVNUX0RFQ0wgbWFzdGVyX3Rlc3Rfc3VpdGVfdCA6IHB1YmxpYyB0ZXN0X3N1aXRlIHsKLXB1YmxpYzoKLSAgICBtYXN0ZXJfdGVzdF9zdWl0ZV90KCkgOiB0ZXN0X3N1aXRlKCAiTWFzdGVyIFRlc3QgU3VpdGUiICkKLSAgICAsIGFyZ2MoIDAgKQotICAgICwgYXJndiggMCApCi0gICAge30KLSAgICAKLSAgICAvLyBEYXRhIG1lbWJlcnMgICAgCi0gICAgaW50ICAgICAgYXJnYzsKLSAgICBjaGFyKiogICBhcmd2OwotfTsKLQotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICB0ZXN0X3RyZWVfdmlzaXRvciAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWNsYXNzIE5ETkJPT1NUX1RFU1RfREVDTCB0ZXN0X3RyZWVfdmlzaXRvciB7Ci1wdWJsaWM6Ci0gICAgLy8gdGVzdCB0cmVlIHZpc2l0b3IgaW50ZXJmYWNlCi0gICAgdmlydHVhbCB2b2lkICAgIHZpc2l0KCB0ZXN0X2Nhc2UgY29uc3QmICkgICAgICAgICAgICAgICB7fQotICAgIHZpcnR1YWwgYm9vbCAgICB0ZXN0X3N1aXRlX3N0YXJ0KCB0ZXN0X3N1aXRlIGNvbnN0JiApICAgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgdm9pZCAgICB0ZXN0X3N1aXRlX2ZpbmlzaCggdGVzdF9zdWl0ZSBjb25zdCYgKSAge30KLQotcHJvdGVjdGVkOgotICAgIE5ETkJPT1NUX1RFU1RfUFJPVEVDVEVEX1ZJUlRVQUwgfnRlc3RfdHJlZV92aXNpdG9yKCkge30KLX07Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgIHRyYXZlcnNlX3Rlc3RfdHJlZSAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotTkROQk9PU1RfVEVTVF9ERUNMIHZvaWQgICAgdHJhdmVyc2VfdGVzdF90cmVlKCB0ZXN0X2Nhc2UgY29uc3QmLCB0ZXN0X3RyZWVfdmlzaXRvciYgKTsKLU5ETkJPT1NUX1RFU1RfREVDTCB2b2lkICAgIHRyYXZlcnNlX3Rlc3RfdHJlZSggdGVzdF9zdWl0ZSBjb25zdCYsIHRlc3RfdHJlZV92aXNpdG9yJiApOwotTkROQk9PU1RfVEVTVF9ERUNMIHZvaWQgICAgdHJhdmVyc2VfdGVzdF90cmVlKCB0ZXN0X3VuaXRfaWQgICAgICwgdGVzdF90cmVlX3Zpc2l0b3ImICk7Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLWlubGluZSB2b2lkCi10cmF2ZXJzZV90ZXN0X3RyZWUoIHRlc3RfdW5pdCBjb25zdCYgdHUsIHRlc3RfdHJlZV92aXNpdG9yJiBWICkKLXsKLSAgICBpZiggdHUucF90eXBlID09IHR1dF9jYXNlICkKLSAgICAgICAgdHJhdmVyc2VfdGVzdF90cmVlKCBzdGF0aWNfY2FzdDx0ZXN0X2Nhc2UgY29uc3QmPiggdHUgKSwgViApOwotICAgIGVsc2UKLSAgICAgICAgdHJhdmVyc2VfdGVzdF90cmVlKCBzdGF0aWNfY2FzdDx0ZXN0X3N1aXRlIGNvbnN0Jj4oIHR1ICksIFYgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgIHRlc3RfY2FzZV9jb3VudGVyICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1jbGFzcyB0ZXN0X2Nhc2VfY291bnRlciA6IHB1YmxpYyB0ZXN0X3RyZWVfdmlzaXRvciB7Ci1wdWJsaWM6Ci0gICAgLy8gQ29uc3RydWN0b3IKLSAgICB0ZXN0X2Nhc2VfY291bnRlcigpIDogcF9jb3VudCggMCApIHt9Ci0KLSAgICBORE5CT09TVF9SRUFET05MWV9QUk9QRVJUWSggY291bnRlcl90LCAodGVzdF9jYXNlX2NvdW50ZXIpKSBwX2NvdW50OwotcHJpdmF0ZToKLSAgICAvLyB0ZXN0IHRyZWUgdmlzaXRvciBpbnRlcmZhY2UKLSAgICB2aXJ0dWFsIHZvaWQgICAgdmlzaXQoIHRlc3RfY2FzZSBjb25zdCYgKTsKLSAgICB2aXJ0dWFsIGJvb2wgICAgdGVzdF9zdWl0ZV9zdGFydCggdGVzdF9zdWl0ZSBjb25zdCYgdHMgKSAgICB7IHJldHVybiB0cy5wX2VuYWJsZWQ7IH0KLX07Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgIHRlc3RfYmVpbmdfYWJvcnRlZCAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotc3RydWN0IE5ETkJPT1NUX1RFU1RfREVDTCB0ZXN0X2JlaW5nX2Fib3J0ZWQge307Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgIG9iamVjdCBnZW5lcmF0b3JzICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotbmFtZXNwYWNlIHV0X2RldGFpbCB7Ci0KLU5ETkJPT1NUX1RFU1RfREVDTCBzdGQ6OnN0cmluZyBub3JtYWxpemVfdGVzdF9jYXNlX25hbWUoIGNvbnN0X3N0cmluZyB0dV9uYW1lICk7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEluc3RhbmNlVHlwZSx0eXBlbmFtZSBVc2VyVGVzdENhc2U+Ci1zdHJ1Y3QgdXNlcl90Y19tZXRob2RfaW52b2tlciB7Ci0gICAgdHlwZWRlZiB2b2lkIChVc2VyVGVzdENhc2U6OipUZXN0TWV0aG9kICkoKTsKLQotICAgIHVzZXJfdGNfbWV0aG9kX2ludm9rZXIoIHNoYXJlZF9wdHI8SW5zdGFuY2VUeXBlPiBpbnN0LCBUZXN0TWV0aG9kIHRlc3RfbWV0aG9kICkKLSAgICA6IG1faW5zdCggaW5zdCApLCBtX3Rlc3RfbWV0aG9kKCB0ZXN0X21ldGhvZCApIHt9Ci0KLSAgICB2b2lkIG9wZXJhdG9yKCkoKSB7ICgoKm1faW5zdCkuKm1fdGVzdF9tZXRob2QpKCk7IH0KLQotICAgIHNoYXJlZF9wdHI8SW5zdGFuY2VUeXBlPiBtX2luc3Q7Ci0gICAgVGVzdE1ldGhvZCAgICAgICAgICAgICAgIG1fdGVzdF9tZXRob2Q7Ci19OwotCi19IC8vIG5hbWVzcGFjZSB1dF9kZXRhaWwKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotaW5saW5lIHRlc3RfY2FzZSoKLW1ha2VfdGVzdF9jYXNlKCBjYWxsYmFjazA8PiBjb25zdCYgdGVzdF9mdW5jLCBjb25zdF9zdHJpbmcgdGNfbmFtZSApCi17Ci0gICAgcmV0dXJuIG5ldyB0ZXN0X2Nhc2UoIHV0X2RldGFpbDo6bm9ybWFsaXplX3Rlc3RfY2FzZV9uYW1lKCB0Y19uYW1lICksIHRlc3RfZnVuYyApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBVc2VyVGVzdENhc2UsIHR5cGVuYW1lIEluc3RhbmNlVHlwZT4KLWlubGluZSB0ZXN0X2Nhc2UqCi1tYWtlX3Rlc3RfY2FzZSggdm9pZCAoVXNlclRlc3RDYXNlOjoqICAgICAgICAgICB0ZXN0X21ldGhvZCApKCksCi0gICAgICAgICAgICAgICAgY29uc3Rfc3RyaW5nICAgICAgICAgICAgICAgICAgICB0Y19uYW1lLAotICAgICAgICAgICAgICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPEluc3RhbmNlVHlwZT4gdXNlcl90ZXN0X2Nhc2UgKQotewotICAgIHJldHVybiBuZXcgdGVzdF9jYXNlKCB1dF9kZXRhaWw6Om5vcm1hbGl6ZV90ZXN0X2Nhc2VfbmFtZSggdGNfbmFtZSApLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgdXRfZGV0YWlsOjp1c2VyX3RjX21ldGhvZF9pbnZva2VyPEluc3RhbmNlVHlwZSxVc2VyVGVzdENhc2U+KCB1c2VyX3Rlc3RfY2FzZSwgdGVzdF9tZXRob2QgKSApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgIGF1dG9fdGVzdF91bml0X3JlZ2lzdHJhciAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLW5hbWVzcGFjZSB1dF9kZXRhaWwgewotCi1zdHJ1Y3QgTkROQk9PU1RfVEVTVF9ERUNMIGF1dG9fdGVzdF91bml0X3JlZ2lzdHJhcgotewotICAgIC8vIENvbnN0cnVjdG9ycwotICAgICAgICAgICAgICAgIGF1dG9fdGVzdF91bml0X3JlZ2lzdHJhciggdGVzdF9jYXNlKiB0YywgY291bnRlcl90IGV4cF9mYWlsICk7Ci0gICAgZXhwbGljaXQgICAgYXV0b190ZXN0X3VuaXRfcmVnaXN0cmFyKCBjb25zdF9zdHJpbmcgdHNfbmFtZSApOwotICAgIGV4cGxpY2l0ICAgIGF1dG9fdGVzdF91bml0X3JlZ2lzdHJhciggdGVzdF91bml0X2dlbmVyYXRvciBjb25zdCYgdGNfZ2VuICk7Ci0gICAgZXhwbGljaXQgICAgYXV0b190ZXN0X3VuaXRfcmVnaXN0cmFyKCBpbnQgKTsKLQotcHJpdmF0ZToKLSAgICBzdGF0aWMgc3RkOjpsaXN0PHRlc3Rfc3VpdGUqPiYgY3Vycl90c19zdG9yZSgpOwotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCBhdXRvX3RjX2V4cF9mYWlsIHsKLSAgICBhdXRvX3RjX2V4cF9mYWlsKCkgOiBtX3ZhbHVlKCAwICkge30KLQotICAgIGV4cGxpY2l0ICAgIGF1dG9fdGNfZXhwX2ZhaWwoIHVuc2lnbmVkIHYgKQotICAgIDogbV92YWx1ZSggdiApCi0gICAgewotICAgICAgICBpbnN0YW5jZSgpID0gdGhpczsKLSAgICB9Ci0KLSAgICBzdGF0aWMgYXV0b190Y19leHBfZmFpbComIGluc3RhbmNlKCkgCi0gICAgewotICAgICAgICBzdGF0aWMgYXV0b190Y19leHBfZmFpbCAgICAgaW5zdDsgCi0gICAgICAgIHN0YXRpYyBhdXRvX3RjX2V4cF9mYWlsKiAgICBpbnN0X3B0ciA9ICZpbnN0OyAKLQotICAgICAgICByZXR1cm4gaW5zdF9wdHI7Ci0gICAgfQotCi0gICAgdW5zaWduZWQgICAgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9Ci0KLXByaXZhdGU6Ci0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgdW5zaWduZWQgICAgbV92YWx1ZTsKLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIHV0X2RldGFpbAotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgZ2xvYmFsX2ZpeHR1cmUgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWNsYXNzIE5ETkJPT1NUX1RFU1RfREVDTCBnbG9iYWxfZml4dHVyZSA6IHB1YmxpYyB0ZXN0X29ic2VydmVyIHsgCi1wdWJsaWM6IAotICAgIC8vIENvbnN0cnVjdG9yCi0gICAgZ2xvYmFsX2ZpeHR1cmUoKTsKLX07IAotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgdXRfZGV0YWlsIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgRj4gCi1zdHJ1Y3QgZ2xvYmFsX2ZpeHR1cmVfaW1wbCA6IHB1YmxpYyBnbG9iYWxfZml4dHVyZSB7Ci0gICAgLy8gQ29uc3RydWN0b3IKLSAgICBnbG9iYWxfZml4dHVyZV9pbXBsKCk6IG1fZml4dXJlKCAwICkgICAge30KLQotICAgIC8vIHRlc3Qgb2JzZXJ2ZXIgaW50ZXJmYWNlCi0gICAgdmlydHVhbCB2b2lkICAgIHRlc3Rfc3RhcnQoIGNvdW50ZXJfdCApIHsgbV9maXh1cmUgPSBuZXcgRjsgfQotICAgIHZpcnR1YWwgdm9pZCAgICB0ZXN0X2ZpbmlzaCgpICAgICAgICAgICB7IGRlbGV0ZSBtX2ZpeHVyZTsgbV9maXh1cmUgPSAwOyB9IAotICAgIHZpcnR1YWwgdm9pZCAgICB0ZXN0X2Fib3J0ZWQoKSAgICAgICAgICB7IGRlbGV0ZSBtX2ZpeHVyZTsgbV9maXh1cmUgPSAwOyB9IAotCi1wcml2YXRlOgotICAgIC8vIERhdGEgbWVtYmVycwotICAgIEYqICBtX2ZpeHVyZTsKLX07IAotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgdGVzdF9jYXNlX3RlbXBsYXRlX2ludm9rZXIgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFRlc3RDYXNlVGVtcGxhdGUsdHlwZW5hbWUgVGVzdFR5cGU+Ci1jbGFzcyB0ZXN0X2Nhc2VfdGVtcGxhdGVfaW52b2tlciB7Ci1wdWJsaWM6Ci0gICAgdm9pZCAgICBvcGVyYXRvcigpKCkgICAgeyBUZXN0Q2FzZVRlbXBsYXRlOjpydW4oIChuZG5ib29zdDo6dHlwZTxUZXN0VHlwZT4qKTAgKTsgfQotfTsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICBnZW5lcmF0ZV90ZXN0X2Nhc2VfNF90eXBlICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBHZW5lcmF0b3IsdHlwZW5hbWUgVGVzdENhc2VUZW1wbGF0ZT4KLXN0cnVjdCBnZW5lcmF0ZV90ZXN0X2Nhc2VfNF90eXBlIHsKLSAgICBleHBsaWNpdCAgICBnZW5lcmF0ZV90ZXN0X2Nhc2VfNF90eXBlKCBjb25zdF9zdHJpbmcgdGNfbmFtZSwgR2VuZXJhdG9yJiBHICkKLSAgICA6IG1fdGVzdF9jYXNlX25hbWUoIHRjX25hbWUgKQotICAgICwgbV9ob2xkZXIoIEcgKQotICAgIHt9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUZXN0VHlwZT4KLSAgICB2b2lkICAgICAgICBvcGVyYXRvcigpKCBtcGw6OmlkZW50aXR5PFRlc3RUeXBlPiApCi0gICAgewotICAgICAgICBzdGQ6OnN0cmluZyBmdWxsX25hbWU7Ci0gICAgICAgIGFzc2lnbl9vcCggZnVsbF9uYW1lLCBtX3Rlc3RfY2FzZV9uYW1lLCAwICk7Ci0gICAgICAgIGZ1bGxfbmFtZSArPSAnPCc7Ci0gICAgICAgIGZ1bGxfbmFtZSArPSB0eXBlaWQoVGVzdFR5cGUpLm5hbWUoKTsKLSAgICAgICAgaWYoIG5kbmJvb3N0Ojppc19jb25zdDxUZXN0VHlwZT46OnZhbHVlICkKLSAgICAgICAgICAgIGZ1bGxfbmFtZSArPSAiIGNvbnN0IjsKLSAgICAgICAgZnVsbF9uYW1lICs9ICc+JzsKLQotICAgICAgICBtX2hvbGRlci5tX3Rlc3RfY2FzZXMucHVzaF9iYWNrKCAKLSAgICAgICAgICAgIG5ldyB0ZXN0X2Nhc2UoIGZ1bGxfbmFtZSwgdGVzdF9jYXNlX3RlbXBsYXRlX2ludm9rZXI8VGVzdENhc2VUZW1wbGF0ZSxUZXN0VHlwZT4oKSApICk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIC8vIERhdGEgbWVtYmVycwotICAgIGNvbnN0X3N0cmluZyAgICBtX3Rlc3RfY2FzZV9uYW1lOwotICAgIEdlbmVyYXRvciYgICAgICBtX2hvbGRlcjsKLX07Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgdGVzdF9jYXNlX3RlbXBsYXRlICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVGVzdENhc2VUZW1wbGF0ZSx0eXBlbmFtZSBUZXN0VHlwZXNMaXN0PgotY2xhc3MgdGVtcGxhdGVfdGVzdF9jYXNlX2dlbiA6IHB1YmxpYyB0ZXN0X3VuaXRfZ2VuZXJhdG9yIHsKLXB1YmxpYzoKLSAgICAvLyBDb25zdHJ1Y3RvcgotICAgIHRlbXBsYXRlX3Rlc3RfY2FzZV9nZW4oIGNvbnN0X3N0cmluZyB0Y19uYW1lICkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZ2VuZXJhdGVfdGVzdF9jYXNlXzRfdHlwZTx0ZW1wbGF0ZV90ZXN0X2Nhc2VfZ2VuPFRlc3RDYXNlVGVtcGxhdGUsVGVzdFR5cGVzTGlzdD4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXN0Q2FzZVRlbXBsYXRlCi0gICAgICAgID4gc2luZ2xlX3Rlc3RfZ2VuOwotICAgICAgICBtcGw6OmZvcl9lYWNoPFRlc3RUeXBlc0xpc3QsbXBsOjptYWtlX2lkZW50aXR5PG1wbDo6Xz4gPiggc2luZ2xlX3Rlc3RfZ2VuKCB0Y19uYW1lLCAqdGhpcyApICk7Ci0gICAgfQotCi0gICAgdmlydHVhbCB0ZXN0X3VuaXQqIG5leHQoKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYoIG1fdGVzdF9jYXNlcy5lbXB0eSgpICkKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgIAotICAgICAgICB0ZXN0X3VuaXQqIHJlcyA9IG1fdGVzdF9jYXNlcy5mcm9udCgpOwotICAgICAgICBtX3Rlc3RfY2FzZXMucG9wX2Zyb250KCk7Ci0KLSAgICAgICAgcmV0dXJuIHJlczsKLSAgICB9Ci0KLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICBtdXRhYmxlIHN0ZDo6bGlzdDx0ZXN0X3VuaXQqPiBtX3Rlc3RfY2FzZXM7Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSB1dF9kZXRhaWwKLQotfSAvLyB1bml0X3Rlc3QKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX1VOSVRfVEVTVF9TVUlURV9JTVBMX0hQUF8wNzE4OTRHRVIKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL2FsZ29yaXRobS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvYWxnb3JpdGhtLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2ZmN2QwNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvYWxnb3JpdGhtLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIyOCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA0LTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNDkzMTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGFkZGl0aW9uIHRvIFNUTCBhbGdvcml0aG1zCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9BTEdPUklUSE1fSFBQXzA2MjMwNEdFUgotI2RlZmluZSBORE5CT09TVF9BTEdPUklUSE1fSFBQXzA2MjMwNEdFUgotCi0jaW5jbHVkZSA8dXRpbGl0eT4KLSNpbmNsdWRlIDxhbGdvcml0aG0+IC8vIHN0ZDo6ZmluZAotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+IC8vIHN0ZDo6YmluZDFzdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgdW5pdF90ZXN0IHsKLQotLy8vIEBicmllZiB0aGlzIGFsZ29yaXRobSBzZWFyY2ggdGhyb3VnaCB0d28gY29sbGVjdGlvbnMgZm9yIGZpcnN0IG1pc21hdGNoIHBvc2l0aW9uIHRoYXQgZ2V0IHJldHVybmVkIGFzIGEgcGFpcgotLy8vIG9mIGl0ZXJhdG9ycywgZmlyc3QgcG9pbnRpbmcgdG8gdGhlIG1pc21hdGNoIHBvc2l0aW9uIGluIGZpcnN0IGNvbGxlY3Rpb24sIHNlY29uZCBpdGVyYXRvciBpbiBzZWNvbmQgb25lCi0KLS8vLyBAcGFyYW0gZmlyc3QxIC0gZmlyc3QgY29sbGVjdGlvbiBiZWdpbiBpdGVyYXRvcgotLy8vIEBwYXJhbSBsYXN0MSAtIGZpcnN0IGNvbGxlY3Rpb24gZW5kIGl0ZXJhdG9yCi0vLy8gQHBhcmFtIGZpcnN0MiAtIHNlY29uZCBjb2xsZWN0aW9uIGJlZ2luIGl0ZXJhdG9yCi0vLy8gQHBhcmFtIGxhc3QyIC0gc2Vjb25kIGNvbGxlY3Rpb24gZW5kIGl0ZXJhdG9yCi10ZW1wbGF0ZSA8Y2xhc3MgSW5wdXRJdGVyMSwgY2xhc3MgSW5wdXRJdGVyMj4KLWlubGluZSBzdGQ6OnBhaXI8SW5wdXRJdGVyMSwgSW5wdXRJdGVyMj4KLW1pc21hdGNoKCBJbnB1dEl0ZXIxIGZpcnN0MSwgSW5wdXRJdGVyMSBsYXN0MSwKLSAgICAgICAgICBJbnB1dEl0ZXIyIGZpcnN0MiwgSW5wdXRJdGVyMiBsYXN0MiApCi17Ci0gICAgd2hpbGUoIGZpcnN0MSAhPSBsYXN0MSAmJiBmaXJzdDIgIT0gbGFzdDIgJiYgKmZpcnN0MSA9PSAqZmlyc3QyICkgewotICAgICAgICArK2ZpcnN0MTsKLSAgICAgICAgKytmaXJzdDI7Ci0gICAgfQotCi0gICAgcmV0dXJuIHN0ZDo6cGFpcjxJbnB1dEl0ZXIxLCBJbnB1dEl0ZXIyPihmaXJzdDEsIGZpcnN0Mik7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vLyBAYnJpZWYgdGhpcyBhbGdvcml0aG0gc2VhcmNoIHRocm91Z2ggdHdvIGNvbGxlY3Rpb25zIGZvciBmaXJzdCBtaXNtYXRjaCBwb3NpdGlvbiB0aGF0IGdldCByZXR1cm5lZCBhcyBhIHBhaXIKLS8vLyBvZiBpdGVyYXRvcnMsIGZpcnN0IHBvaW50aW5nIHRvIHRoZSBtaXNtYXRjaCBwb3NpdGlvbiBpbiBmaXJzdCBjb2xsZWN0aW9uLCBzZWNvbmQgaXRlcmF0b3IgaW4gc2Vjb25kIG9uZS4gVGhpcyBhbGdvcml0aG1zCi0vLy8gdXNlcyBzdXBwbGllZCBwcmVkaWNhdGUgZm9yIGNvbGxlY3Rpb24gZWxlbWVudHMgY29tcGFyaXNvbgotCi0vLy8gQHBhcmFtIGZpcnN0MSAtIGZpcnN0IGNvbGxlY3Rpb24gYmVnaW4gaXRlcmF0b3IKLS8vLyBAcGFyYW0gbGFzdDEgLSBmaXJzdCBjb2xsZWN0aW9uIGVuZCBpdGVyYXRvcgotLy8vIEBwYXJhbSBmaXJzdDIgLSBzZWNvbmQgY29sbGVjdGlvbiBiZWdpbiBpdGVyYXRvcgotLy8vIEBwYXJhbSBsYXN0MiAtIHNlY29uZCBjb2xsZWN0aW9uIGVuZCBpdGVyYXRvcgotLy8vIEBwYXJhbSBwcmVkIC0gcHJlZGljYXRlIHRvIGJlIHVzZWQgZm9yIHNlYXJjaAotdGVtcGxhdGUgPGNsYXNzIElucHV0SXRlcjEsIGNsYXNzIElucHV0SXRlcjIsIGNsYXNzIFByZWRpY2F0ZT4KLWlubGluZSBzdGQ6OnBhaXI8SW5wdXRJdGVyMSwgSW5wdXRJdGVyMj4KLW1pc21hdGNoKCBJbnB1dEl0ZXIxIGZpcnN0MSwgSW5wdXRJdGVyMSBsYXN0MSwKLSAgICAgICAgICBJbnB1dEl0ZXIyIGZpcnN0MiwgSW5wdXRJdGVyMiBsYXN0MiwKLSAgICAgICAgICBQcmVkaWNhdGUgcHJlZCApCi17Ci0gICAgd2hpbGUoIGZpcnN0MSAhPSBsYXN0MSAmJiBmaXJzdDIgIT0gbGFzdDIgJiYgcHJlZCggKmZpcnN0MSwgKmZpcnN0MiApICkgewotICAgICAgICArK2ZpcnN0MTsKLSAgICAgICAgKytmaXJzdDI7Ci0gICAgfQotCi0gICAgcmV0dXJuIHN0ZDo6cGFpcjxJbnB1dEl0ZXIxLCBJbnB1dEl0ZXIyPihmaXJzdDEsIGZpcnN0Mik7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vLyBAYnJpZWYgdGhpcyBhbGdvcml0aG0gc2VhcmNoIHRocm91Z2ggZmlyc3QgY29sbGVjdGlvbiBmb3IgZmlyc3QgZWxlbWVudCB0aGF0IGRvZXMgbm90IGJlbG9uZyBhIHNlY29uZCBvbmUKLQotLy8vIEBwYXJhbSBmaXJzdDEgLSBmaXJzdCBjb2xsZWN0aW9uIGJlZ2luIGl0ZXJhdG9yCi0vLy8gQHBhcmFtIGxhc3QxIC0gZmlyc3QgY29sbGVjdGlvbiBlbmQgaXRlcmF0b3IKLS8vLyBAcGFyYW0gZmlyc3QyIC0gc2Vjb25kIGNvbGxlY3Rpb24gYmVnaW4gaXRlcmF0b3IKLS8vLyBAcGFyYW0gbGFzdDIgLSBzZWNvbmQgY29sbGVjdGlvbiBlbmQgaXRlcmF0b3IKLXRlbXBsYXRlPGNsYXNzIEZvcndhcmRJdGVyYXRvcjEsIGNsYXNzIEZvcndhcmRJdGVyYXRvcjI+Ci1pbmxpbmUgRm9yd2FyZEl0ZXJhdG9yMQotZmluZF9maXJzdF9ub3Rfb2YoIEZvcndhcmRJdGVyYXRvcjEgZmlyc3QxLCBGb3J3YXJkSXRlcmF0b3IxIGxhc3QxLCAKLSAgICAgICAgICAgICAgICAgICBGb3J3YXJkSXRlcmF0b3IyIGZpcnN0MiwgRm9yd2FyZEl0ZXJhdG9yMiBsYXN0MiApCi17Ci0gICAgd2hpbGUoIGZpcnN0MSAhPSBsYXN0MSApIHsKLSAgICAgICAgaWYoIHN0ZDo6ZmluZCggZmlyc3QyLCBsYXN0MiwgKmZpcnN0MSApID09IGxhc3QyICkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICArK2ZpcnN0MTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZmlyc3QxOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLy8gQGJyaWVmIHRoaXMgYWxnb3JpdGhtIHNlYXJjaCB0aHJvdWdoIGZpcnN0IGNvbGxlY3Rpb24gZm9yIGZpcnN0IGVsZW1lbnQgdGhhdCBkb2VzIG5vdCBzYXRpc2Z5IGJpbmFyeSAKLS8vLyBwcmVkaWNhdGUgaW4gY29uanVuY3Rpb24gd2lsbCBhbnkgZWxlbWVudCBpbiBzZWNvbmQgY29sbGVjdGlvbgotCi0vLy8gQHBhcmFtIGZpcnN0MSAtIGZpcnN0IGNvbGxlY3Rpb24gYmVnaW4gaXRlcmF0b3IKLS8vLyBAcGFyYW0gbGFzdDEgLSBmaXJzdCBjb2xsZWN0aW9uIGVuZCBpdGVyYXRvcgotLy8vIEBwYXJhbSBmaXJzdDIgLSBzZWNvbmQgY29sbGVjdGlvbiBiZWdpbiBpdGVyYXRvcgotLy8vIEBwYXJhbSBsYXN0MiAtIHNlY29uZCBjb2xsZWN0aW9uIGVuZCBpdGVyYXRvcgotLy8vIEBwYXJhbSBwcmVkIC0gcHJlZGljYXRlIHRvIGJlIHVzZWQgZm9yIHNlYXJjaAotdGVtcGxhdGU8Y2xhc3MgRm9yd2FyZEl0ZXJhdG9yMSwgY2xhc3MgRm9yd2FyZEl0ZXJhdG9yMiwgY2xhc3MgUHJlZGljYXRlPgotaW5saW5lIEZvcndhcmRJdGVyYXRvcjEKLWZpbmRfZmlyc3Rfbm90X29mKCBGb3J3YXJkSXRlcmF0b3IxIGZpcnN0MSwgRm9yd2FyZEl0ZXJhdG9yMSBsYXN0MSwgCi0gICAgICAgICAgICAgICAgICAgRm9yd2FyZEl0ZXJhdG9yMiBmaXJzdDIsIEZvcndhcmRJdGVyYXRvcjIgbGFzdDIsIAotICAgICAgICAgICAgICAgICAgIFByZWRpY2F0ZSBwcmVkICkKLXsKLSAgICB3aGlsZSggZmlyc3QxICE9IGxhc3QxICkgewotICAgICAgICBpZiggc3RkOjpmaW5kX2lmKCBmaXJzdDIsIGxhc3QyLCBzdGQ6OmJpbmQxc3QoIHByZWQsICpmaXJzdDEgKSApID09IGxhc3QyICkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICArK2ZpcnN0MTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZmlyc3QxOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLy8gQGJyaWVmIHRoaXMgYWxnb3JpdGhtIHNlYXJjaCB0aHJvdWdoIGZpcnN0IGNvbGxlY3Rpb24gZm9yIGxhc3QgZWxlbWVudCB0aGF0IGJlbG9uZ3MgdG8gYSBzZWNvbmQgb25lCi0KLS8vLyBAcGFyYW0gZmlyc3QxIC0gZmlyc3QgY29sbGVjdGlvbiBiZWdpbiBpdGVyYXRvcgotLy8vIEBwYXJhbSBsYXN0MSAtIGZpcnN0IGNvbGxlY3Rpb24gZW5kIGl0ZXJhdG9yCi0vLy8gQHBhcmFtIGZpcnN0MiAtIHNlY29uZCBjb2xsZWN0aW9uIGJlZ2luIGl0ZXJhdG9yCi0vLy8gQHBhcmFtIGxhc3QyIC0gc2Vjb25kIGNvbGxlY3Rpb24gZW5kIGl0ZXJhdG9yCi10ZW1wbGF0ZTxjbGFzcyBCaWRpcmVjdGlvbmFsSXRlcmF0b3IxLCBjbGFzcyBGb3J3YXJkSXRlcmF0b3IyPgotaW5saW5lIEJpZGlyZWN0aW9uYWxJdGVyYXRvcjEKLWZpbmRfbGFzdF9vZiggQmlkaXJlY3Rpb25hbEl0ZXJhdG9yMSBmaXJzdDEsIEJpZGlyZWN0aW9uYWxJdGVyYXRvcjEgbGFzdDEsIAotICAgICAgICAgICAgICBGb3J3YXJkSXRlcmF0b3IyIGZpcnN0MiwgRm9yd2FyZEl0ZXJhdG9yMiBsYXN0MiApCi17Ci0gICAgaWYoIGZpcnN0MSA9PSBsYXN0MSB8fCBmaXJzdDIgPT0gbGFzdDIgKQotICAgICAgICByZXR1cm4gbGFzdDE7Ci0KLSAgICBCaWRpcmVjdGlvbmFsSXRlcmF0b3IxIGl0MSA9IGxhc3QxOwotICAgIHdoaWxlKCAtLWl0MSAhPSBmaXJzdDEgJiYgc3RkOjpmaW5kKCBmaXJzdDIsIGxhc3QyLCAqaXQxICkgPT0gbGFzdDIgKSB7fQotCi0gICAgcmV0dXJuIGl0MSA9PSBmaXJzdDEgJiYgc3RkOjpmaW5kKCBmaXJzdDIsIGxhc3QyLCAqaXQxICkgPT0gbGFzdDIgPyBsYXN0MSA6IGl0MTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8vIEBicmllZiB0aGlzIGFsZ29yaXRobSBzZWFyY2ggdGhyb3VnaCBmaXJzdCBjb2xsZWN0aW9uIGZvciBsYXN0IGVsZW1lbnQgdGhhdCBzYXRpc2Z5IGJpbmFyeSAKLS8vLyBwcmVkaWNhdGUgaW4gY29uanVuY3Rpb24gd2lsbCBhdCBsZWFzdCBvbmUgZWxlbWVudCBpbiBzZWNvbmQgY29sbGVjdGlvbgotCi0vLy8gQHBhcmFtIGZpcnN0MSAtIGZpcnN0IGNvbGxlY3Rpb24gYmVnaW4gaXRlcmF0b3IKLS8vLyBAcGFyYW0gbGFzdDEgLSBmaXJzdCBjb2xsZWN0aW9uIGVuZCBpdGVyYXRvcgotLy8vIEBwYXJhbSBmaXJzdDIgLSBzZWNvbmQgY29sbGVjdGlvbiBiZWdpbiBpdGVyYXRvcgotLy8vIEBwYXJhbSBsYXN0MiAtIHNlY29uZCBjb2xsZWN0aW9uIGVuZCBpdGVyYXRvcgotLy8vIEBwYXJhbSBwcmVkIC0gcHJlZGljYXRlIHRvIGJlIHVzZWQgZm9yIHNlYXJjaAotdGVtcGxhdGU8Y2xhc3MgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yMSwgY2xhc3MgRm9yd2FyZEl0ZXJhdG9yMiwgY2xhc3MgUHJlZGljYXRlPgotaW5saW5lIEJpZGlyZWN0aW9uYWxJdGVyYXRvcjEKLWZpbmRfbGFzdF9vZiggQmlkaXJlY3Rpb25hbEl0ZXJhdG9yMSBmaXJzdDEsIEJpZGlyZWN0aW9uYWxJdGVyYXRvcjEgbGFzdDEsIAotICAgICAgICAgICAgICBGb3J3YXJkSXRlcmF0b3IyIGZpcnN0MiwgRm9yd2FyZEl0ZXJhdG9yMiBsYXN0MiwgCi0gICAgICAgICAgICAgIFByZWRpY2F0ZSBwcmVkICkKLXsKLSAgICBpZiggZmlyc3QxID09IGxhc3QxIHx8IGZpcnN0MiA9PSBsYXN0MiApCi0gICAgICAgIHJldHVybiBsYXN0MTsKLQotICAgIEJpZGlyZWN0aW9uYWxJdGVyYXRvcjEgaXQxID0gbGFzdDE7Ci0gICAgd2hpbGUoIC0taXQxICE9IGZpcnN0MSAmJiBzdGQ6OmZpbmRfaWYoIGZpcnN0MiwgbGFzdDIsIHN0ZDo6YmluZDFzdCggcHJlZCwgKml0MSApICkgPT0gbGFzdDIgKSB7fQotCi0gICAgcmV0dXJuIGl0MSA9PSBmaXJzdDEgJiYgc3RkOjpmaW5kX2lmKCBmaXJzdDIsIGxhc3QyLCBzdGQ6OmJpbmQxc3QoIHByZWQsICppdDEgKSApID09IGxhc3QyID8gbGFzdDEgOiBpdDE7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vLyBAYnJpZWYgdGhpcyBhbGdvcml0aG0gc2VhcmNoIHRocm91Z2ggZmlyc3QgY29sbGVjdGlvbiBmb3IgbGFzdCBlbGVtZW50IHRoYXQgZG9lcyBub3QgYmVsb25nIHRvIGEgc2Vjb25kIG9uZQotCi0vLy8gQHBhcmFtIGZpcnN0MSAtIGZpcnN0IGNvbGxlY3Rpb24gYmVnaW4gaXRlcmF0b3IKLS8vLyBAcGFyYW0gbGFzdDEgLSBmaXJzdCBjb2xsZWN0aW9uIGVuZCBpdGVyYXRvcgotLy8vIEBwYXJhbSBmaXJzdDIgLSBzZWNvbmQgY29sbGVjdGlvbiBiZWdpbiBpdGVyYXRvcgotLy8vIEBwYXJhbSBsYXN0MiAtIHNlY29uZCBjb2xsZWN0aW9uIGVuZCBpdGVyYXRvcgotdGVtcGxhdGU8Y2xhc3MgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yMSwgY2xhc3MgRm9yd2FyZEl0ZXJhdG9yMj4KLWlubGluZSBCaWRpcmVjdGlvbmFsSXRlcmF0b3IxCi1maW5kX2xhc3Rfbm90X29mKCBCaWRpcmVjdGlvbmFsSXRlcmF0b3IxIGZpcnN0MSwgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yMSBsYXN0MSwgCi0gICAgICAgICAgICAgICAgICBGb3J3YXJkSXRlcmF0b3IyIGZpcnN0MiwgRm9yd2FyZEl0ZXJhdG9yMiBsYXN0MiApCi17Ci0gICAgaWYoIGZpcnN0MSA9PSBsYXN0MSB8fCBmaXJzdDIgPT0gbGFzdDIgKQotICAgICAgICByZXR1cm4gbGFzdDE7Ci0KLSAgICBCaWRpcmVjdGlvbmFsSXRlcmF0b3IxIGl0MSA9IGxhc3QxOwotICAgIHdoaWxlKCAtLWl0MSAhPSBmaXJzdDEgJiYgc3RkOjpmaW5kKCBmaXJzdDIsIGxhc3QyLCAqaXQxICkgIT0gbGFzdDIgKSB7fQotCi0gICAgcmV0dXJuIGl0MSA9PSBmaXJzdDEgJiYgc3RkOjpmaW5kKCBmaXJzdDIsIGxhc3QyLCAqaXQxICkgIT0gbGFzdDIgPyBsYXN0MSA6IGl0MTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8vIEBicmllZiB0aGlzIGFsZ29yaXRobSBzZWFyY2ggdGhyb3VnaCBmaXJzdCBjb2xsZWN0aW9uIGZvciBsYXN0IGVsZW1lbnQgdGhhdCBkb2VzIG5vdCBzYXRpc2Z5IGJpbmFyeSAKLS8vLyBwcmVkaWNhdGUgaW4gY29uanVuY3Rpb24gd2lsbCBhbnkgZWxlbWVudCBpbiBzZWNvbmQgY29sbGVjdGlvbgotCi0vLy8gQHBhcmFtIGZpcnN0MSAtIGZpcnN0IGNvbGxlY3Rpb24gYmVnaW4gaXRlcmF0b3IKLS8vLyBAcGFyYW0gbGFzdDEgLSBmaXJzdCBjb2xsZWN0aW9uIGVuZCBpdGVyYXRvcgotLy8vIEBwYXJhbSBmaXJzdDIgLSBzZWNvbmQgY29sbGVjdGlvbiBiZWdpbiBpdGVyYXRvcgotLy8vIEBwYXJhbSBsYXN0MiAtIHNlY29uZCBjb2xsZWN0aW9uIGVuZCBpdGVyYXRvcgotLy8vIEBwYXJhbSBwcmVkIC0gcHJlZGljYXRlIHRvIGJlIHVzZWQgZm9yIHNlYXJjaAotdGVtcGxhdGU8Y2xhc3MgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yMSwgY2xhc3MgRm9yd2FyZEl0ZXJhdG9yMiwgY2xhc3MgUHJlZGljYXRlPgotaW5saW5lIEJpZGlyZWN0aW9uYWxJdGVyYXRvcjEKLWZpbmRfbGFzdF9ub3Rfb2YoIEJpZGlyZWN0aW9uYWxJdGVyYXRvcjEgZmlyc3QxLCBCaWRpcmVjdGlvbmFsSXRlcmF0b3IxIGxhc3QxLCAKLSAgICAgICAgICAgICAgICAgIEZvcndhcmRJdGVyYXRvcjIgZmlyc3QyLCBGb3J3YXJkSXRlcmF0b3IyIGxhc3QyLCAKLSAgICAgICAgICAgICAgICAgIFByZWRpY2F0ZSBwcmVkICkKLXsKLSAgICBpZiggZmlyc3QxID09IGxhc3QxIHx8IGZpcnN0MiA9PSBsYXN0MiApCi0gICAgICAgIHJldHVybiBsYXN0MTsKLQotICAgIEJpZGlyZWN0aW9uYWxJdGVyYXRvcjEgaXQxID0gbGFzdDE7Ci0gICAgd2hpbGUoIC0taXQxICE9IGZpcnN0MSAmJiBzdGQ6OmZpbmRfaWYoIGZpcnN0MiwgbGFzdDIsIHN0ZDo6YmluZDFzdCggcHJlZCwgKml0MSApICkgIT0gbGFzdDIgKSB7fQotCi0gICAgcmV0dXJuIGl0MSA9PSBmaXJzdDEgJiYgc3RkOjpmaW5kX2lmKCBmaXJzdDIsIGxhc3QyLCBzdGQ6OmJpbmQxc3QoIHByZWQsICppdDEgKSApID09IGxhc3QyID8gbGFzdDEgOiBpdDE7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIHVuaXRfdGVzdAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX0FMR09SSVRITV9IUFBfMDYyMzA0R0VSCi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL2Fzc2lnbl9vcC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvYXNzaWduX29wLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGU0YmUwNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvYXNzaWduX29wLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA0OTMxMiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogb3ZlcmxvYWRhYmxlIGFzc2lnbm1lbnQKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfQVNTSUdOX09QXzAzMzAwNUdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX0FTU0lHTl9PUF8wMzMwMDVHRVIKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIHVuaXRfdGVzdCB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICBnZW5lcmljIGFzc2lnbiBvcGVyYXRvciAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotLy8gZ2VuZXJpYwotdGVtcGxhdGU8dHlwZW5hbWUgVCx0eXBlbmFtZSBTPgotaW5saW5lIHZvaWQKLWFzc2lnbl9vcCggVCYgdCwgUyBjb25zdCYgcywgbG9uZyApCi17Ci0gICAgdCA9IHM7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIHVuaXRfdGVzdAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9BU1NJR05fT1BfMDMzMDA1R0VSCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9iYXNpY19jc3RyaW5nL2Jhc2ljX2NzdHJpbmcuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL2Jhc2ljX2NzdHJpbmcvYmFzaWNfY3N0cmluZy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQxYTY0Y2QuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL2Jhc2ljX2NzdHJpbmcvYmFzaWNfY3N0cmluZy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MzEgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNC0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDU3OTkyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBjbGFzcyBiYXNpY19jc3RyaW5nIHdyYXBzIEMgc3RyaW5nIGFuZCBwcm92aWRlIHN0ZF9zdHJpbmcgbGlrZSAKLS8vICAgICAgICAgICAgICAgIGludGVyZmFjZQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9CQVNJQ19DU1RSSU5HX0hQUF8wNzE4OTRHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9CQVNJQ19DU1RSSU5HX0hQUF8wNzE4OTRHRVIKLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvYmFzaWNfY3N0cmluZy9iYXNpY19jc3RyaW5nX2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9iYXNpY19jc3RyaW5nL2Jjc19jaGFyX3RyYWl0cy5ocHA+Ci0KLS8vIFNUTAotI2luY2x1ZGUgPHN0cmluZz4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIHVuaXRfdGVzdCB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICBiYXNpY19jc3RyaW5nICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1jbGFzcyBiYXNpY19jc3RyaW5nIHsKLSAgICB0eXBlZGVmIGJhc2ljX2NzdHJpbmc8Q2hhclQ+ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZl90eXBlOwotcHVibGljOgotICAgIC8vIFN1YnR5cGVzCi0gICAgdHlwZWRlZiB1dF9kZXRhaWw6OmJjc19jaGFyX3RyYWl0czxDaGFyVD4gICAgICAgICAgIHRyYWl0c190eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgdXRfZGV0YWlsOjpiY3NfY2hhcl90cmFpdHM8Q2hhclQ+OjpzdGRfc3RyaW5nICBzdGRfc3RyaW5nOwotCi0gICAgdHlwZWRlZiBDaGFyVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlX3R5cGU7Ci0gICAgdHlwZWRlZiB2YWx1ZV90eXBlKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50ZXI7Ci0gICAgdHlwZWRlZiB2YWx1ZV90eXBlIGNvbnN0KiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0X3BvaW50ZXI7Ci0gICAgdHlwZWRlZiB2YWx1ZV90eXBlJiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZTsKLSAgICB0eXBlZGVmIGNvbnN0IHZhbHVlX3R5cGUmICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RfcmVmZXJlbmNlOwotICAgIHR5cGVkZWYgc3RkOjpzaXplX3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3R5cGU7Ci0gICAgdHlwZWRlZiBzdGQ6OnB0cmRpZmZfdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZmZlcmVuY2VfdHlwZTsKLQotICAgIHR5cGVkZWYgdmFsdWVfdHlwZSBjb25zdCogICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdF9pdGVyYXRvcjsKLSAgICB0eXBlZGVmIHZhbHVlX3R5cGUqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlcmF0b3I7Ci0KLSAgICAvLyAhISBzaG91bGQgYWxzbyBwcmVzZW50IHJldmVyc2VfaXRlcmF0b3IsIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IKLQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fSUJNQ1BQX18sIE5ETkJPT1NUX1RFU1RFRF9BVCg2MDApKQotICAgIGVudW0gbnBvc190eXBlIHsgbnBvcyA9IHN0YXRpY19jYXN0PHNpemVfdHlwZT4oLTEpIH07Ci0jZWxzZQotICAgIC8vIElCTS9WaXN1YWxBZ2UgdmVyc2lvbiA2IGlzIG5vdCBhYmxlIHRvIGhhbmRsZSBlbnVtcyBsYXJnZXIgdGhhbiA0IGJ5dGVzLgotICAgIC8vIEJ1dCBzaXplX3R5cGUgaXMgOCBieXRlcyBpbiA2NGJpdCBtb2RlLgotICAgIHN0YXRpYyBjb25zdCBzaXplX3R5cGUgbnBvcyA9IC0xIDsKLSNlbmRpZgotCi0gICAgc3RhdGljIHBvaW50ZXIgIG51bGxfc3RyKCk7Ci0KLSAgICAvLyBDb25zdHJ1Y3RvcnM7IGRlZmF1bHQgY29weSBjb25zdHJ1Y3RvciBpcyBnZW5lcmF0ZWQgYnkgY29tcGlsZXIKLSAgICBiYXNpY19jc3RyaW5nKCk7Ci0gICAgYmFzaWNfY3N0cmluZyggc3RkX3N0cmluZyBjb25zdCYgcyApOwotICAgIGJhc2ljX2NzdHJpbmcoIHBvaW50ZXIgcyApOwotICAgIGJhc2ljX2NzdHJpbmcoIHBvaW50ZXIgcywgc2l6ZV90eXBlIGFyZ19zaXplICk7Ci0gICAgYmFzaWNfY3N0cmluZyggcG9pbnRlciBmaXJzdCwgcG9pbnRlciBsYXN0ICk7Ci0KLSAgICAvLyBkYXRhIGFjY2VzcyBtZXRob2RzCi0gICAgdmFsdWVfdHlwZSAgICAgIG9wZXJhdG9yW10oIHNpemVfdHlwZSBpbmRleCApIGNvbnN0OwotICAgIHZhbHVlX3R5cGUgICAgICBhdCggc2l6ZV90eXBlIGluZGV4ICkgY29uc3Q7Ci0KLSAgICAvLyBzaXplIG9wZXJhdG9ycwotICAgIHNpemVfdHlwZSAgICAgICBzaXplKCkgY29uc3Q7Ci0gICAgYm9vbCAgICAgICAgICAgIGlzX2VtcHR5KCkgY29uc3Q7Ci0gICAgdm9pZCAgICAgICAgICAgIGNsZWFyKCk7Ci0gICAgdm9pZCAgICAgICAgICAgIHJlc2l6ZSggc2l6ZV90eXBlIG5ld19sZW4gKTsKLQotICAgIC8vICEhIG9ubHkgZm9yIFNUTCBjb250YWluZXIgY29uZm9ybWFuY2UgdXNlIGlzX2VtcHR5IGluc3RlYWQKLSAgICBib29sICAgICAgICAgICAgZW1wdHkoKSBjb25zdDsgCi0KLSAgICAvLyBUcmltbWluZwotICAgIHNlbGZfdHlwZSYgICAgICB0cmltX3JpZ2h0KCBzaXplX3R5cGUgdHJpbV9zaXplICk7Ci0gICAgc2VsZl90eXBlJiAgICAgIHRyaW1fbGVmdCggc2l6ZV90eXBlIHRyaW1fc2l6ZSApOwotICAgIHNlbGZfdHlwZSYgICAgICB0cmltX3JpZ2h0KCBpdGVyYXRvciBpdCApOwotICAgIHNlbGZfdHlwZSYgICAgICB0cmltX2xlZnQoIGl0ZXJhdG9yIGl0ICk7Ci0jaWZuZGVmIF9fSUJNQ1BQX18KLSAgICBzZWxmX3R5cGUmICAgICAgdHJpbV9sZWZ0KCBzZWxmX3R5cGUgZXhjbHVzaW9ucyA9IHNlbGZfdHlwZSgpICkgOwotICAgIHNlbGZfdHlwZSYgICAgICB0cmltX3JpZ2h0KCBzZWxmX3R5cGUgZXhjbHVzaW9ucyA9IHNlbGZfdHlwZSgpICkgOwotICAgIHNlbGZfdHlwZSYgICAgICB0cmltKCBzZWxmX3R5cGUgZXhjbHVzaW9ucyA9IHNlbGZfdHlwZSgpICkgOwotI2Vsc2UKLSAgICAvLyBWaXN1YWxBZ2UgdmVyc2lvbiA2IGhhcyBpbiB0aGlzIGNhc2UgYSBwcm9ibGVtIHdpdGggdGhlIGRlZmF1bHQgYXJndW1lbnRzLgotICAgIHNlbGZfdHlwZSYgICAgICB0cmltX2xlZnQoIHNlbGZfdHlwZSBleGNsdXNpb25zICkgOwotICAgIHNlbGZfdHlwZSYgICAgICB0cmltX3JpZ2h0KCBzZWxmX3R5cGUgZXhjbHVzaW9ucyApIDsKLSAgICBzZWxmX3R5cGUmICAgICAgdHJpbSggc2VsZl90eXBlIGV4Y2x1c2lvbnMgKSA7Ci0gICAgc2VsZl90eXBlJiAgICAgIHRyaW1fbGVmdCgpIHsgdHJpbV9sZWZ0KCBzZWxmX3R5cGUoKSApIDsgfQotICAgIHNlbGZfdHlwZSYgICAgICB0cmltX3JpZ2h0KCkgeyB0cmltX3JpZ2h0KCBzZWxmX3R5cGUoKSApIDsgfQotICAgIHNlbGZfdHlwZSYgICAgICB0cmltKCkgeyB0cmltKCBzZWxmX3R5cGUoKSApIDsgfQotI2VuZGlmCi0KLSAgICAvLyBBc3NpZ25tZW50IG9wZXJhdG9ycwotICAgIGJhc2ljX2NzdHJpbmcmICBvcGVyYXRvcj0oIHNlbGZfdHlwZSBjb25zdCYgcyApOwotICAgIGJhc2ljX2NzdHJpbmcmICBvcGVyYXRvcj0oIHN0ZF9zdHJpbmcgY29uc3QmIHMgKTsKLSAgICBiYXNpY19jc3RyaW5nJiAgb3BlcmF0b3I9KCBwb2ludGVyIHMgKTsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJUMj4KLSAgICBiYXNpY19jc3RyaW5nJiAgYXNzaWduKCBiYXNpY19jc3RyaW5nPENoYXJUMj4gY29uc3QmIHMgKSB7ICp0aGlzID0gYmFzaWNfY3N0cmluZzxDaGFyVD4oIHMuYmVnaW4oKSwgcy5lbmQoKSApOyByZXR1cm4gKnRoaXM7IH0KLSAgICBiYXNpY19jc3RyaW5nJiAgYXNzaWduKCBzZWxmX3R5cGUgY29uc3QmIHMsIHNpemVfdHlwZSBwb3MsIHNpemVfdHlwZSBsZW4gKTsKLSAgICBiYXNpY19jc3RyaW5nJiAgYXNzaWduKCBzdGRfc3RyaW5nIGNvbnN0JiBzICk7Ci0gICAgYmFzaWNfY3N0cmluZyYgIGFzc2lnbiggc3RkX3N0cmluZyBjb25zdCYgcywgc2l6ZV90eXBlIHBvcywgc2l6ZV90eXBlIGxlbiApOwotICAgIGJhc2ljX2NzdHJpbmcmICBhc3NpZ24oIHBvaW50ZXIgcyApOwotICAgIGJhc2ljX2NzdHJpbmcmICBhc3NpZ24oIHBvaW50ZXIgcywgc2l6ZV90eXBlIGxlbiApOwotICAgIGJhc2ljX2NzdHJpbmcmICBhc3NpZ24oIHBvaW50ZXIgZiwgcG9pbnRlciBsICk7Ci0KLSAgICAvLyBzd2FwcGluZwotICAgIHZvaWQgICAgICAgICAgICBzd2FwKCBzZWxmX3R5cGUmIHMgKTsKLQotICAgIC8vIEl0ZXJhdG9ycwotICAgIGl0ZXJhdG9yICAgICAgICBiZWdpbigpOwotICAgIGNvbnN0X2l0ZXJhdG9yICBiZWdpbigpIGNvbnN0OwotICAgIGl0ZXJhdG9yICAgICAgICBlbmQoKTsKLSAgICBjb25zdF9pdGVyYXRvciAgZW5kKCkgY29uc3Q7Ci0KLSAgICAvLyAhISBzaG91bGQgaGF2ZSByYmVnaW4sIHJlbmQKLQotICAgIC8vIHN1YnN0cmluZyBzZWFyY2ggb3BlcmF0aW9uCi0gICAgc2l6ZV90eXBlICAgICAgIGZpbmQoIGJhc2ljX2NzdHJpbmcgKSBjb25zdDsKLSAgICBzaXplX3R5cGUgICAgICAgcmZpbmQoIGJhc2ljX2NzdHJpbmcgKSBjb25zdDsKLSAgICBzZWxmX3R5cGUgICAgICAgc3Vic3RyKCBzaXplX3R5cGUgYmVnX2luZGV4LCBzaXplX3R5cGUgZW5kX2luZGV4ID0gbnBvcyApIGNvbnN0OwotCi1wcml2YXRlOgotICAgIHN0YXRpYyBzZWxmX3R5cGUgZGVmYXVsdF90cmltX2V4KCk7Ci0KLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICBpdGVyYXRvciAgICAgICAgbV9iZWdpbjsKLSAgICBpdGVyYXRvciAgICAgICAgbV9lbmQ7Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVD4KLWlubGluZSB0eXBlbmFtZSBiYXNpY19jc3RyaW5nPENoYXJUPjo6cG9pbnRlcgotYmFzaWNfY3N0cmluZzxDaGFyVD46Om51bGxfc3RyKCkKLXsKLSAgICBzdGF0aWMgQ2hhclQgbnVsbCA9IDA7Ci0gICAgcmV0dXJuICZudWxsOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVD4KLWlubGluZQotYmFzaWNfY3N0cmluZzxDaGFyVD46OmJhc2ljX2NzdHJpbmcoKQotOiBtX2JlZ2luKCBudWxsX3N0cigpICkKLSwgbV9lbmQoIG1fYmVnaW4gKQotewotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVD4KLWlubGluZQotYmFzaWNfY3N0cmluZzxDaGFyVD46OmJhc2ljX2NzdHJpbmcoIHN0ZF9zdHJpbmcgY29uc3QmIHMgKQotOiBtX2JlZ2luKCBzLmNfc3RyKCkgKQotLCBtX2VuZCggbV9iZWdpbiArIHMuc2l6ZSgpICkKLXsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1pbmxpbmUKLWJhc2ljX2NzdHJpbmc8Q2hhclQ+OjpiYXNpY19jc3RyaW5nKCBwb2ludGVyIHMgKQotOiBtX2JlZ2luKCBzID8gcyA6IG51bGxfc3RyKCkgKQotLCBtX2VuZCAgKCBtX2JlZ2luICsgKHMgPyB0cmFpdHNfdHlwZTo6bGVuZ3RoKCBzICkgOiAwICkgKQotewotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVD4KLWlubGluZQotYmFzaWNfY3N0cmluZzxDaGFyVD46OmJhc2ljX2NzdHJpbmcoIHBvaW50ZXIgcywgc2l6ZV90eXBlIGFyZ19zaXplICkKLTogbV9iZWdpbiggcyApLCBtX2VuZCggbV9iZWdpbiArIGFyZ19zaXplICkKLXsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1pbmxpbmUKLWJhc2ljX2NzdHJpbmc8Q2hhclQ+OjpiYXNpY19jc3RyaW5nKCBwb2ludGVyIGZpcnN0LCBwb2ludGVyIGxhc3QgKQotOiBtX2JlZ2luKCBmaXJzdCApCi0sIG1fZW5kKCBsYXN0ICkKLXsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1pbmxpbmUgdHlwZW5hbWUgYmFzaWNfY3N0cmluZzxDaGFyVD46OnZhbHVlX3R5cGUKLWJhc2ljX2NzdHJpbmc8Q2hhclQ+OjpvcGVyYXRvcltdKCBzaXplX3R5cGUgaW5kZXggKSBjb25zdAotewotICAgIHJldHVybiBtX2JlZ2luW2luZGV4XTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1pbmxpbmUgdHlwZW5hbWUgYmFzaWNfY3N0cmluZzxDaGFyVD46OnZhbHVlX3R5cGUKLWJhc2ljX2NzdHJpbmc8Q2hhclQ+OjphdCggc2l6ZV90eXBlIGluZGV4ICkgY29uc3QKLXsKLSAgICBpZiggbV9iZWdpbiArIGluZGV4ID49IG1fZW5kICkKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHZhbHVlX3R5cGU+KDApOwotCi0gICAgcmV0dXJuIG1fYmVnaW5baW5kZXhdOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVD4KLWlubGluZSB0eXBlbmFtZSBiYXNpY19jc3RyaW5nPENoYXJUPjo6c2l6ZV90eXBlCi1iYXNpY19jc3RyaW5nPENoYXJUPjo6c2l6ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fZW5kIC0gbV9iZWdpbjsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1pbmxpbmUgYm9vbAotYmFzaWNfY3N0cmluZzxDaGFyVD46OmlzX2VtcHR5KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9lbmQgPT0gbV9iZWdpbjsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1pbmxpbmUgYm9vbAotYmFzaWNfY3N0cmluZzxDaGFyVD46OmVtcHR5KCkgY29uc3QKLXsKLSAgICByZXR1cm4gaXNfZW1wdHkoKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1pbmxpbmUgdm9pZAotYmFzaWNfY3N0cmluZzxDaGFyVD46OmNsZWFyKCkKLXsKLSAgICBtX2JlZ2luID0gbV9lbmQ7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUPgotaW5saW5lIHZvaWQKLWJhc2ljX2NzdHJpbmc8Q2hhclQ+OjpyZXNpemUoIHNpemVfdHlwZSBuZXdfbGVuICkKLXsKLSAgICBpZiggbV9iZWdpbiArIG5ld19sZW4gPCBtX2VuZCApCi0gICAgICAgIG1fZW5kID0gbV9iZWdpbiArIG5ld19sZW47Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUPgotaW5saW5lIGJhc2ljX2NzdHJpbmc8Q2hhclQ+JgotYmFzaWNfY3N0cmluZzxDaGFyVD46OnRyaW1fbGVmdCggc2l6ZV90eXBlIHRyaW1fc2l6ZSApCi17Ci0gICAgbV9iZWdpbiArPSB0cmltX3NpemU7Ci0gICAgaWYoIG1fZW5kIDw9IG1fYmVnaW4gKQotICAgICAgICBjbGVhcigpOwotCi0gICAgcmV0dXJuICp0aGlzOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVD4KLWlubGluZSBiYXNpY19jc3RyaW5nPENoYXJUPiYKLWJhc2ljX2NzdHJpbmc8Q2hhclQ+Ojp0cmltX2xlZnQoIGl0ZXJhdG9yIGl0ICkKLXsKLSAgICBtX2JlZ2luID0gaXQ7Ci0gICAgaWYoIG1fZW5kIDw9IG1fYmVnaW4gKQotICAgICAgICBjbGVhcigpOwotCi0gICAgcmV0dXJuICp0aGlzOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVD4KLWlubGluZSBiYXNpY19jc3RyaW5nPENoYXJUPiYKLWJhc2ljX2NzdHJpbmc8Q2hhclQ+Ojp0cmltX2xlZnQoIGJhc2ljX2NzdHJpbmcgZXhjbHVzaW9ucyApCi17Ci0gICAgaWYoIGV4Y2x1c2lvbnMuaXNfZW1wdHkoKSApCi0gICAgICAgIGV4Y2x1c2lvbnMgPSBkZWZhdWx0X3RyaW1fZXgoKTsKLQotICAgIGl0ZXJhdG9yIGl0OwotICAgIGZvciggaXQgPSBiZWdpbigpOyBpdCAhPSBlbmQoKTsgKytpdCApIHsKLSAgICAgICAgaWYoIHRyYWl0c190eXBlOjpmaW5kKCBleGNsdXNpb25zLmJlZ2luKCksIGV4Y2x1c2lvbnMuc2l6ZSgpLCAqaXQgKSA9PSByZWludGVycHJldF9jYXN0PHBvaW50ZXI+KDApICkKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gdHJpbV9sZWZ0KCBpdCApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVD4KLWlubGluZSBiYXNpY19jc3RyaW5nPENoYXJUPiYKLWJhc2ljX2NzdHJpbmc8Q2hhclQ+Ojp0cmltX3JpZ2h0KCBzaXplX3R5cGUgdHJpbV9zaXplICkKLXsKLSAgICBtX2VuZCAgLT0gdHJpbV9zaXplOwotICAgIGlmKCBtX2VuZCA8PSBtX2JlZ2luICkKLSAgICAgICAgY2xlYXIoKTsKLQotICAgIHJldHVybiAqdGhpczsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1pbmxpbmUgYmFzaWNfY3N0cmluZzxDaGFyVD4mCi1iYXNpY19jc3RyaW5nPENoYXJUPjo6dHJpbV9yaWdodCggaXRlcmF0b3IgaXQgKQotewotICAgIG1fZW5kID0gaXQ7Ci0gICAgaWYoIG1fZW5kIDw9IG1fYmVnaW4gKQotICAgICAgICBjbGVhcigpOwotCi0gICAgcmV0dXJuICp0aGlzOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVD4KLWlubGluZSBiYXNpY19jc3RyaW5nPENoYXJUPiYKLWJhc2ljX2NzdHJpbmc8Q2hhclQ+Ojp0cmltX3JpZ2h0KCBiYXNpY19jc3RyaW5nIGV4Y2x1c2lvbnMgKQotewotICAgIGlmKCBleGNsdXNpb25zLmlzX2VtcHR5KCkgKQotICAgICAgICBleGNsdXNpb25zID0gZGVmYXVsdF90cmltX2V4KCk7Ci0KLSAgICBpdGVyYXRvciBpdDsKLQotICAgIGZvciggaXQgPSBlbmQoKS0xOyBpdCAhPSBiZWdpbigpLTE7IC0taXQgKSB7Ci0gICAgICAgIGlmKCBzZWxmX3R5cGU6OnRyYWl0c190eXBlOjpmaW5kKCBleGNsdXNpb25zLmJlZ2luKCksICBleGNsdXNpb25zLnNpemUoKSwgKml0ICkgPT0gcmVpbnRlcnByZXRfY2FzdDxwb2ludGVyPigwKSApCi0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIHRyaW1fcmlnaHQoIGl0KzEgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1pbmxpbmUgYmFzaWNfY3N0cmluZzxDaGFyVD4mCi1iYXNpY19jc3RyaW5nPENoYXJUPjo6dHJpbSggYmFzaWNfY3N0cmluZyBleGNsdXNpb25zICkKLXsKLSAgICB0cmltX2xlZnQoIGV4Y2x1c2lvbnMgKTsKLSAgICB0cmltX3JpZ2h0KCBleGNsdXNpb25zICk7Ci0KLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUPgotaW5saW5lIGJhc2ljX2NzdHJpbmc8Q2hhclQ+JgotYmFzaWNfY3N0cmluZzxDaGFyVD46Om9wZXJhdG9yPSggYmFzaWNfY3N0cmluZzxDaGFyVD4gY29uc3QmIHMgKQotewotICAgIG1fYmVnaW4gPSBzLm1fYmVnaW47Ci0gICAgbV9lbmQgICA9IHMubV9lbmQ7Ci0KLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUPgotaW5saW5lIGJhc2ljX2NzdHJpbmc8Q2hhclQ+JgotYmFzaWNfY3N0cmluZzxDaGFyVD46Om9wZXJhdG9yPSggc3RkX3N0cmluZyBjb25zdCYgcyApCi17Ci0gICAgcmV0dXJuICp0aGlzID0gc2VsZl90eXBlKCBzICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUPgotaW5saW5lIGJhc2ljX2NzdHJpbmc8Q2hhclQ+JgotYmFzaWNfY3N0cmluZzxDaGFyVD46Om9wZXJhdG9yPSggcG9pbnRlciBzICkKLXsKLSAgICByZXR1cm4gKnRoaXMgPSBzZWxmX3R5cGUoIHMgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1pbmxpbmUgYmFzaWNfY3N0cmluZzxDaGFyVD4mCi1iYXNpY19jc3RyaW5nPENoYXJUPjo6YXNzaWduKCBiYXNpY19jc3RyaW5nPENoYXJUPiBjb25zdCYgcywgc2l6ZV90eXBlIHBvcywgc2l6ZV90eXBlIGxlbiApCi17Ci0gICAgcmV0dXJuICp0aGlzID0gc2VsZl90eXBlKCBzLm1fYmVnaW4gKyBwb3MsIGxlbiApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVD4KLWlubGluZSBiYXNpY19jc3RyaW5nPENoYXJUPiYKLWJhc2ljX2NzdHJpbmc8Q2hhclQ+Ojphc3NpZ24oIHN0ZF9zdHJpbmcgY29uc3QmIHMgKQotewotICAgIHJldHVybiAqdGhpcyA9IHNlbGZfdHlwZSggcyApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVD4KLWlubGluZSBiYXNpY19jc3RyaW5nPENoYXJUPiYKLWJhc2ljX2NzdHJpbmc8Q2hhclQ+Ojphc3NpZ24oIHN0ZF9zdHJpbmcgY29uc3QmIHMsIHNpemVfdHlwZSBwb3MsIHNpemVfdHlwZSBsZW4gKQotewotICAgIHJldHVybiAqdGhpcyA9IHNlbGZfdHlwZSggcy5jX3N0cigpICsgcG9zLCBsZW4gKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1pbmxpbmUgYmFzaWNfY3N0cmluZzxDaGFyVD4mCi1iYXNpY19jc3RyaW5nPENoYXJUPjo6YXNzaWduKCBwb2ludGVyIHMgKQotewotICAgIHJldHVybiAqdGhpcyA9IHNlbGZfdHlwZSggcyApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVD4KLWlubGluZSBiYXNpY19jc3RyaW5nPENoYXJUPiYKLWJhc2ljX2NzdHJpbmc8Q2hhclQ+Ojphc3NpZ24oIHBvaW50ZXIgcywgc2l6ZV90eXBlIGxlbiApCi17Ci0gICAgcmV0dXJuICp0aGlzID0gc2VsZl90eXBlKCBzLCBsZW4gKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1pbmxpbmUgYmFzaWNfY3N0cmluZzxDaGFyVD4mCi1iYXNpY19jc3RyaW5nPENoYXJUPjo6YXNzaWduKCBwb2ludGVyIGYsIHBvaW50ZXIgbCApCi17Ci0gICAgcmV0dXJuICp0aGlzID0gc2VsZl90eXBlKCBmLCBsICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUPgotaW5saW5lIHZvaWQKLWJhc2ljX2NzdHJpbmc8Q2hhclQ+Ojpzd2FwKCBiYXNpY19jc3RyaW5nPENoYXJUPiYgcyApCi17Ci0gICAgLy8gZG8gbm90IHdhbnQgdG8gaW5jbHVkZSBhbG9ncml0aG0KLSAgICBwb2ludGVyIHRtcDEgICAgPSBtX2JlZ2luOwotICAgIHBvaW50ZXIgdG1wMiAgICA9IG1fZW5kOwotCi0gICAgbV9iZWdpbiAgICAgICAgID0gcy5tX2JlZ2luOwotICAgIG1fZW5kICAgICAgICAgICA9IHMubV9lbmQ7Ci0KLSAgICBzLm1fYmVnaW4gICAgICAgPSB0bXAxOwotICAgIHMubV9lbmQgICAgICAgICA9IHRtcDI7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUPgotaW5saW5lIHR5cGVuYW1lIGJhc2ljX2NzdHJpbmc8Q2hhclQ+OjppdGVyYXRvcgotYmFzaWNfY3N0cmluZzxDaGFyVD46OmJlZ2luKCkKLXsKLSAgICByZXR1cm4gbV9iZWdpbjsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1pbmxpbmUgdHlwZW5hbWUgYmFzaWNfY3N0cmluZzxDaGFyVD46OmNvbnN0X2l0ZXJhdG9yCi1iYXNpY19jc3RyaW5nPENoYXJUPjo6YmVnaW4oKSBjb25zdAotewotICAgIHJldHVybiBtX2JlZ2luOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVD4KLWlubGluZSB0eXBlbmFtZSBiYXNpY19jc3RyaW5nPENoYXJUPjo6aXRlcmF0b3IKLWJhc2ljX2NzdHJpbmc8Q2hhclQ+OjplbmQoKQotewotICAgIHJldHVybiBtX2VuZDsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1pbmxpbmUgdHlwZW5hbWUgYmFzaWNfY3N0cmluZzxDaGFyVD46OmNvbnN0X2l0ZXJhdG9yCi1iYXNpY19jc3RyaW5nPENoYXJUPjo6ZW5kKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9lbmQ7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUPgotaW5saW5lIHR5cGVuYW1lIGJhc2ljX2NzdHJpbmc8Q2hhclQ+OjpzaXplX3R5cGUKLWJhc2ljX2NzdHJpbmc8Q2hhclQ+OjpmaW5kKCBiYXNpY19jc3RyaW5nPENoYXJUPiBzdHIgKSBjb25zdAotewotICAgIGlmKCBzdHIuaXNfZW1wdHkoKSB8fCBzdHIuc2l6ZSgpID4gc2l6ZSgpICkKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVfdHlwZT4obnBvcyk7Ci0KLSAgICBjb25zdF9pdGVyYXRvciBpdCAgID0gYmVnaW4oKTsKLSAgICBjb25zdF9pdGVyYXRvciBsYXN0ID0gZW5kKCkgLSBzdHIuc2l6ZSgpICsgMTsKLQotICAgIHdoaWxlKCBpdCAhPSBsYXN0ICkgewotICAgICAgICBpZiggdHJhaXRzX3R5cGU6OmNvbXBhcmUoIGl0LCBzdHIuYmVnaW4oKSwgc3RyLnNpemUoKSApID09IDAgKQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgKytpdDsKLSAgICB9Ci0KLSAgICByZXR1cm4gaXQgPT0gbGFzdCA/IHN0YXRpY19jYXN0PHNpemVfdHlwZT4obnBvcykgOiBpdCAtIGJlZ2luKCk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUPgotaW5saW5lIHR5cGVuYW1lIGJhc2ljX2NzdHJpbmc8Q2hhclQ+OjpzaXplX3R5cGUKLWJhc2ljX2NzdHJpbmc8Q2hhclQ+OjpyZmluZCggYmFzaWNfY3N0cmluZzxDaGFyVD4gc3RyICkgY29uc3QKLXsKLSAgICBpZiggc3RyLmlzX2VtcHR5KCkgfHwgc3RyLnNpemUoKSA+IHNpemUoKSApCi0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3R5cGU+KG5wb3MpOwotCi0gICAgY29uc3RfaXRlcmF0b3IgaXQgICA9IGVuZCgpIC0gc3RyLnNpemUoKTsKLSAgICBjb25zdF9pdGVyYXRvciBsYXN0ID0gYmVnaW4oKS0xOwotCi0gICAgd2hpbGUoIGl0ICE9IGxhc3QgKSB7Ci0gICAgICAgIGlmKCB0cmFpdHNfdHlwZTo6Y29tcGFyZSggaXQsIHN0ci5iZWdpbigpLCBzdHIuc2l6ZSgpICkgPT0gMCApCi0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICAtLWl0OwotICAgIH0KLQotICAgIHJldHVybiBpdCA9PSBsYXN0ID8gc3RhdGljX2Nhc3Q8c2l6ZV90eXBlPihucG9zKSA6IHN0YXRpY19jYXN0PHNpemVfdHlwZT4oaXQgLSBiZWdpbigpKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1pbmxpbmUgYmFzaWNfY3N0cmluZzxDaGFyVD4KLWJhc2ljX2NzdHJpbmc8Q2hhclQ+OjpzdWJzdHIoIHNpemVfdHlwZSBiZWdfaW5kZXgsIHNpemVfdHlwZSBlbmRfaW5kZXggKSBjb25zdAotewotICAgIHJldHVybiBiZWdfaW5kZXggPiBzaXplKCkKLSAgICAgICAgICAgID8gICAgICAgc2VsZl90eXBlKCkKLSAgICAgICAgICAgIDogZW5kX2luZGV4ID4gc2l6ZSgpCi0gICAgICAgICAgICAgICAgPyAgIHNlbGZfdHlwZSggbV9iZWdpbiArIGJlZ19pbmRleCwgbV9lbmQgKQotICAgICAgICAgICAgICAgIDogICBzZWxmX3R5cGUoIG1fYmVnaW4gKyBiZWdfaW5kZXgsIG1fYmVnaW4gKyBlbmRfaW5kZXggKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1pbmxpbmUgYmFzaWNfY3N0cmluZzxDaGFyVD4KLWJhc2ljX2NzdHJpbmc8Q2hhclQ+OjpkZWZhdWx0X3RyaW1fZXgoKQotewotICAgIHN0YXRpYyBDaGFyVCB3c1szXSA9IHsgQ2hhclQoJyAnKSwgQ2hhclQoJ1x0JyksIENoYXJUKCdcbicpIH07IC8vICEhIHdpZGUgY2FzZQotCi0gICAgcmV0dXJuIHNlbGZfdHlwZSggd3MsIDMgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgIGNvbXBhcmlzb24gb3BlcmF0b3JzICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVDEsdHlwZW5hbWUgQ2hhclQyPgotaW5saW5lIGJvb2wKLW9wZXJhdG9yPT0oIGJhc2ljX2NzdHJpbmc8Q2hhclQxPiBjb25zdCYgczEsIGJhc2ljX2NzdHJpbmc8Q2hhclQyPiBjb25zdCYgczIgKQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzaWNfY3N0cmluZzxDaGFyVDE+Ojp0cmFpdHNfdHlwZSB0cmFpdHNfdHlwZTsKLSAgICByZXR1cm4gczEuc2l6ZSgpID09IHMyLnNpemUoKSAmJiAKLSAgICAgICAgICAgICAgIHRyYWl0c190eXBlOjpjb21wYXJlKCBzMS5iZWdpbigpLCBzMi5iZWdpbigpLCBzMS5zaXplKCkgKSA9PSAwOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVDEsdHlwZW5hbWUgQ2hhclQyPgotaW5saW5lIGJvb2wKLW9wZXJhdG9yPT0oIGJhc2ljX2NzdHJpbmc8Q2hhclQxPiBjb25zdCYgczEsIENoYXJUMiogczIgKQotewotI2lmICFkZWZpbmVkKF9fRE1DX18pCi0gICAgcmV0dXJuIHMxID09IGJhc2ljX2NzdHJpbmc8Q2hhclQyPiggczIgKTsKLSNlbHNlCi0gICAgcmV0dXJuIHMxID09IGJhc2ljX2NzdHJpbmc8Q2hhclQyIGNvbnN0PiggczIgKTsKLSNlbmRpZgotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVD4KLWlubGluZSBib29sCi1vcGVyYXRvcj09KCBiYXNpY19jc3RyaW5nPENoYXJUPiBjb25zdCYgczEsIHR5cGVuYW1lIGJhc2ljX2NzdHJpbmc8Q2hhclQ+OjpzdGRfc3RyaW5nIGNvbnN0JiBzMiApCi17Ci0gICAgcmV0dXJuIHMxID09IGJhc2ljX2NzdHJpbmc8Q2hhclQ+KCBzMiApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVDEsdHlwZW5hbWUgQ2hhclQyPgotaW5saW5lIGJvb2wKLW9wZXJhdG9yPT0oIENoYXJUMSogczIsIGJhc2ljX2NzdHJpbmc8Q2hhclQyPiBjb25zdCYgczEgKQotewotICAgIHJldHVybiBzMSA9PSBzMjsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1pbmxpbmUgYm9vbAotb3BlcmF0b3I9PSggdHlwZW5hbWUgYmFzaWNfY3N0cmluZzxDaGFyVD46OnN0ZF9zdHJpbmcgY29uc3QmIHMyLCBiYXNpY19jc3RyaW5nPENoYXJUPiBjb25zdCYgczEgKQotewotICAgIHJldHVybiBzMSA9PSBzMjsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1pbmxpbmUgYm9vbAotb3BlcmF0b3IhPSggYmFzaWNfY3N0cmluZzxDaGFyVD4gY29uc3QmIHMxLCBDaGFyVCogczIgKQotewotICAgIHJldHVybiAhKHMxID09IHMyKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1pbmxpbmUgYm9vbAotb3BlcmF0b3IhPSggQ2hhclQqIHMyLCBiYXNpY19jc3RyaW5nPENoYXJUPiBjb25zdCYgczEgKQotewotICAgIHJldHVybiAhKHMxID09IHMyKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1pbmxpbmUgYm9vbAotb3BlcmF0b3IhPSggYmFzaWNfY3N0cmluZzxDaGFyVD4gY29uc3QmIHMxLCBiYXNpY19jc3RyaW5nPENoYXJUPiBjb25zdCYgczIgKQotewotICAgIHJldHVybiAhKHMxID09IHMyKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1pbmxpbmUgYm9vbAotb3BlcmF0b3IhPSggYmFzaWNfY3N0cmluZzxDaGFyVD4gY29uc3QmIHMxLCB0eXBlbmFtZSBiYXNpY19jc3RyaW5nPENoYXJUPjo6c3RkX3N0cmluZyBjb25zdCYgczIgKQotewotICAgIHJldHVybiAhKHMxID09IHMyKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1pbmxpbmUgYm9vbAotb3BlcmF0b3IhPSggdHlwZW5hbWUgYmFzaWNfY3N0cmluZzxDaGFyVD46OnN0ZF9zdHJpbmcgY29uc3QmIHMyLCBiYXNpY19jc3RyaW5nPENoYXJUPiBjb25zdCYgczEgKQotewotICAgIHJldHVybiAhKHMxID09IHMyKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICAgZmlyc3RfY2hhciAgICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVD4KLWlubGluZSB0eXBlbmFtZSBiYXNpY19jc3RyaW5nPENoYXJUPjo6dmFsdWVfdHlwZQotZmlyc3RfY2hhciggYmFzaWNfY3N0cmluZzxDaGFyVD4gc291cmNlICkKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2ljX2NzdHJpbmc8Q2hhclQ+Ojp2YWx1ZV90eXBlIHN0cmluZ192YWx1ZV90eXBlOwotCi0gICAgcmV0dXJuIHNvdXJjZS5pc19lbXB0eSgpID8gc3RhdGljX2Nhc3Q8c3RyaW5nX3ZhbHVlX3R5cGU+KDApIDogKnNvdXJjZS5iZWdpbigpOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgICBsYXN0X2NoYXIgICAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUPgotaW5saW5lIHR5cGVuYW1lIGJhc2ljX2NzdHJpbmc8Q2hhclQ+Ojp2YWx1ZV90eXBlCi1sYXN0X2NoYXIoIGJhc2ljX2NzdHJpbmc8Q2hhclQ+IHNvdXJjZSApCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNpY19jc3RyaW5nPENoYXJUPjo6dmFsdWVfdHlwZSBzdHJpbmdfdmFsdWVfdHlwZTsKLQotICAgIHJldHVybiBzb3VyY2UuaXNfZW1wdHkoKSA/IHN0YXRpY19jYXN0PHN0cmluZ192YWx1ZV90eXBlPigwKSA6ICooc291cmNlLmVuZCgpLTEpOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgICBhc3NpZ25fb3AgICAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUMSwgdHlwZW5hbWUgQ2hhclQyPgotaW5saW5lIHZvaWQKLWFzc2lnbl9vcCggc3RkOjpiYXNpY19zdHJpbmc8Q2hhclQxPiYgdGFyZ2V0LCBiYXNpY19jc3RyaW5nPENoYXJUMj4gc3JjLCBpbnQgKQotewotICAgIHRhcmdldC5hc3NpZ24oIHNyYy5iZWdpbigpLCBzcmMuc2l6ZSgpICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIHVuaXRfdGVzdAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RFU1RfQkFTSUNfQ1NUUklOR19IUFBfMDcxODk0R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvYmFzaWNfY3N0cmluZy9iYXNpY19jc3RyaW5nX2Z3ZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvYmFzaWNfY3N0cmluZy9iYXNpY19jc3RyaW5nX2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdiOWFkYjIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL2Jhc2ljX2NzdHJpbmcvYmFzaWNfY3N0cmluZ19md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNC0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDQ5MzEyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBiYXNpY19jc3RyaW5nIGNsYXNzIHdyYXAgQyBzdHJpbmcgYW5kIHByb3ZpZGUgc3RkX3N0cmluZyBsaWtlIAotLy8gICAgICAgICAgICAgICAgaW50ZXJmYWNlCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9URVNUX0JBU0lDX0NTVFJJTkdfRldEX0hQUF8wNzE4OTRHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9CQVNJQ19DU1RSSU5HX0ZXRF9IUFBfMDcxODk0R0VSCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSB1bml0X3Rlc3QgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVD4gY2xhc3MgICAgICBiYXNpY19jc3RyaW5nOwotdHlwZWRlZiBiYXNpY19jc3RyaW5nPGNoYXIgY29uc3Q+ICAgY29uc3Rfc3RyaW5nOwotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19ERUNDWFhfVkVSLCBORE5CT09TVF9URVNURURfQVQoNjA1OTAwNDEpKQotdHlwZWRlZiBjb25zdF9zdHJpbmcgICAgICAgICAgICAgICAgbGl0ZXJhbF9zdHJpbmc7Ci0jZWxzZQotdHlwZWRlZiBjb25zdF9zdHJpbmcgY29uc3QgICAgICAgICAgbGl0ZXJhbF9zdHJpbmc7Ci0jZW5kaWYKLQotdHlwZWRlZiBjaGFyIGNvbnN0KiBjb25zdCAgICAgICAgICAgY19saXRlcmFsX3N0cmluZzsKLQotfSAvLyBuYW1lc3BhY2UgdW5pdF90ZXN0Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX0JBU0lDX0NTVFJJTkdfRldEX0hQUF8wNzE4OTRHRVIKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL2Jhc2ljX2NzdHJpbmcvYmNzX2NoYXJfdHJhaXRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9iYXNpY19jc3RyaW5nL2Jjc19jaGFyX3RyYWl0cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ5YWZjYjUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL2Jhc2ljX2NzdHJpbmcvYmNzX2NoYXJfdHJhaXRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1MCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA0LTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNDkzMTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGdlbmVyaWMgY2hhciB0cmFpdHMgY2xhc3M7IHdyYXBzIHN0ZDo6Y2hhcl90cmFpdHMKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfQkNTX0NIQVJfVFJBSVRTX0hQUF8wNzE4OTRHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9CQ1NfQ0hBUl9UUkFJVFNfSFBQXzA3MTg5NEdFUgotCi0vLyBCb29zdAotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX2NvbnN0LmhwcD4KLQotLy8gU1RMCi0jaW5jbHVkZSA8c3RyaW5nPiAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RkOjpjaGFyX3RyYWl0cwotI2luY2x1ZGUgPGNzdGRkZWY+ICAgICAgICAgICAgICAgICAgICAgIC8vIHN0ZDo6c2l6ZV90Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSB1bml0X3Rlc3QgewotCi1uYW1lc3BhY2UgdXRfZGV0YWlsIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+IHN0cnVjdCBiY3NfYmFzZV9jaGFyICAgICAgICAgICB7IHR5cGVkZWYgQ2hhclQgdHlwZTsgfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgYmNzX2Jhc2VfY2hhcjxjaGFyIGNvbnN0PiAgICAgICAgICAgICB7IHR5cGVkZWYgY2hhciB0eXBlOyB9OwotdGVtcGxhdGU8PiBzdHJ1Y3QgYmNzX2Jhc2VfY2hhcjx1bnNpZ25lZCBjaGFyPiAgICAgICAgICB7IHR5cGVkZWYgY2hhciB0eXBlOyB9OwotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTUxKSkKLXRlbXBsYXRlPD4gc3RydWN0IGJjc19iYXNlX2NoYXI8dW5zaWduZWQgY2hhciBjb25zdD4gICAgeyB0eXBlZGVmIGNoYXIgdHlwZTsgfTsKLSNlbmRpZgotCi10ZW1wbGF0ZTw+IHN0cnVjdCBiY3NfYmFzZV9jaGFyPHdjaGFyX3QgY29uc3Q+ICAgICAgICAgIHsgdHlwZWRlZiB3Y2hhcl90IHR5cGU7IH07Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgIGJjc19jaGFyX3RyYWl0cyAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1zdHJ1Y3QgYmNzX2NoYXJfdHJhaXRzX2ltcGwKLXsKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTY0KSkKLSAgICB0eXBlZGVmIENoYXJUIGNvbnN0IGNvbnN0X2NoYXI7Ci0jZWxzZQotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmFkZF9jb25zdDxDaGFyVD46OnR5cGUgY29uc3RfY2hhcjsKLSNlbmRpZgotICAgIHN0YXRpYyBib29sIGVxKCBDaGFyVCBjMSwgQ2hhclQgYzIgKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGMxID09IGMyOwotICAgIH0KLSAgICBzdGF0aWMgYm9vbCBsdCggQ2hhclQgYzEsIENoYXJUIGMyICkKLSAgICB7Ci0gICAgICAgIHJldHVybiBjMSA8IGMyOwotICAgIH0KLQotICAgIHN0YXRpYyBpbnQgY29tcGFyZSggY29uc3RfY2hhciogY3N0cjEsIGNvbnN0X2NoYXIqIGNzdHIyLCBzdGQ6OnNpemVfdCBuICkKLSAgICB7Ci0gICAgICAgIHdoaWxlKCBuID4gMCApIHsKLSAgICAgICAgICAgIGlmKCAhZXEoICpjc3RyMSwgKmNzdHIyICkgKQotICAgICAgICAgICAgICAgIHJldHVybiBsdCggKmNzdHIxLCAqY3N0cjIgKSA/IC0xIDogMTsKLSAgICAgICAgICAgICsrY3N0cjE7Ci0gICAgICAgICAgICArK2NzdHIyOwotICAgICAgICAgICAgLS1uOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgc3RhdGljIHN0ZDo6c2l6ZV90IGxlbmd0aCggY29uc3RfY2hhciogY3N0ciApCi0gICAgewotICAgICAgICBjb25zdF9jaGFyIG51bGxfY2hhciA9IENoYXJUKCk7Ci0KLSAgICAgICAgY29uc3RfY2hhciogcHRyID0gY3N0cjsKLSAgICAgICAgd2hpbGUoICFlcSggKnB0ciwgbnVsbF9jaGFyICkgKQotICAgICAgICAgICAgKytwdHI7Ci0KLSAgICAgICAgcmV0dXJuIHB0ciAtIGNzdHI7Ci0gICAgfQotCi0gICAgc3RhdGljIGNvbnN0X2NoYXIqIGZpbmQoIGNvbnN0X2NoYXIqIHMsIHN0ZDo6c2l6ZV90IG4sIENoYXJUIGMgKQotICAgIHsKLSAgICAgICAgd2hpbGUoIG4gPiAwICkgewotICAgICAgICAgICAgaWYoIGVxKCAqcywgYyApICkKLSAgICAgICAgICAgICAgICByZXR1cm4gczsKLQotICAgICAgICAgICAgKytzOwotICAgICAgICAgICAgLS1uOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLX07Ci0KLSNpZmRlZiBORE5CT09TVF9DTEFTU0lDX0lPU1RSRUFNUwotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1zdHJ1Y3QgY2hhcl90cmFpdHNfd2l0aF9maW5kIDogc3RkOjpzdHJpbmdfY2hhcl90cmFpdHM8Q2hhclQ+IHsKLSAgICBzdGF0aWMgQ2hhclQgY29uc3QqIGZpbmQoIENoYXJUIGNvbnN0KiBzLCBzdGQ6OnNpemVfdCBuLCBDaGFyVCBjICkKLSAgICB7Ci0gICAgICAgIHdoaWxlKCBuID4gMCApIHsKLSAgICAgICAgICAgIGlmKCBlcSggKnMsIGMgKSApCi0gICAgICAgICAgICAgICAgcmV0dXJuIHM7Ci0KLSAgICAgICAgICAgICsrczsKLSAgICAgICAgICAgIC0tbjsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBiY3NfY2hhcl90cmFpdHNfaW1wbDxjaGFyPiA6IGNoYXJfdHJhaXRzX3dpdGhfZmluZDxjaGFyPiB7fTsKLXRlbXBsYXRlPD4gc3RydWN0IGJjc19jaGFyX3RyYWl0c19pbXBsPHdjaGFyX3Q+IDogY2hhcl90cmFpdHNfd2l0aF9maW5kPHdjaGFyX3Q+IHt9OwotI2Vsc2UKLXRlbXBsYXRlPD4gc3RydWN0IGJjc19jaGFyX3RyYWl0c19pbXBsPGNoYXI+IDogc3RkOjpjaGFyX3RyYWl0czxjaGFyPiB7fTsKLXRlbXBsYXRlPD4gc3RydWN0IGJjc19jaGFyX3RyYWl0c19pbXBsPHdjaGFyX3Q+IDogc3RkOjpjaGFyX3RyYWl0czx3Y2hhcl90PiB7fTsKLSNlbmRpZgotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVD4KLWNsYXNzIGJjc19jaGFyX3RyYWl0cyA6IHB1YmxpYyBiY3NfY2hhcl90cmFpdHNfaW1wbDxDaGFyVD4gewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdXRfZGV0YWlsOjpiY3NfYmFzZV9jaGFyPENoYXJUPjo6dHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZV9iYXNlX2NoYXI7Ci1wdWJsaWM6Ci0jaWZkZWYgTkROQk9PU1RfQ0xBU1NJQ19JT1NUUkVBTVMKLSAgICB0eXBlZGVmIHN0ZDo6YmFzaWNfc3RyaW5nPHRoZV9iYXNlX2NoYXIsIHN0ZDo6c3RyaW5nX2NoYXJfdHJhaXRzPHRoZV9iYXNlX2NoYXI+ID4gICBzdGRfc3RyaW5nOwotI2Vsc2UKLSAgICB0eXBlZGVmIHN0ZDo6YmFzaWNfc3RyaW5nPHRoZV9iYXNlX2NoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8dGhlX2Jhc2VfY2hhcj4gPiAgICAgICAgICBzdGRfc3RyaW5nOwotI2VuZGlmCi19OwotCi19IC8vIG5hbWVzcGFjZSB1dF9kZXRhaWwKLQotfSAvLyBuYW1lc3BhY2UgdW5pdF90ZXN0Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9CQ1NfQ0hBUl9UUkFJVFNfSFBQXzA3MTg5NEdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL2Jhc2ljX2NzdHJpbmcvY29tcGFyZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvYmFzaWNfY3N0cmluZy9jb21wYXJlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTg4MGM4YS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvYmFzaWNfY3N0cmluZy9jb21wYXJlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExNSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA0LTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNDkzMTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGNsYXNzIGJhc2ljX2NzdHJpbmcgY29tcGFyaXNvbnMgaW1wbGVtZW50YXRpb24KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmICBORE5CT09TVF9URVNUX0JBU0lDX0NTVFJJTkdfQ09NUEFSRV9IUFBfMDcxODk0R0VSCi0jZGVmaW5lICBORE5CT09TVF9URVNUX0JBU0lDX0NTVFJJTkdfQ09NUEFSRV9IUFBfMDcxODk0R0VSCi0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2Jhc2ljX2NzdHJpbmcvYmFzaWNfY3N0cmluZy5ocHA+Ci0KLS8vIFNUTAotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+Ci0jaW5jbHVkZSA8Y2N0eXBlPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jIGlmIGRlZmluZWQoTkROQk9PU1RfTk9fU1REQ19OQU1FU1BBQ0UpICYmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgPD0gMHg1NzApCi1uYW1lc3BhY2Ugc3RkIHsgdXNpbmcgOjp0b3VwcGVyOyB9Ci0jIGVuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSB1bml0X3Rlc3QgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgY2FzZV9pbnNfY29tcGFyZSAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLW5hbWVzcGFjZSB1dF9kZXRhaWwgewotCi10ZW1wbGF0ZTxjbGFzcyBDaGFyVD4KLXN0cnVjdCBjYXNlX2lucwotewotICAgIHN0YXRpYyBib29sICAgICAgICAgZXEoIENoYXJUIGMxLCBDaGFyVCBjMiApIHsgcmV0dXJuIChzdGQ6OnRvdXBwZXIpKCBjMSApID09IChzdGQ6OnRvdXBwZXIpKCBjMiApOyB9Ci0gICAgc3RhdGljIGJvb2wgICAgICAgICBsdCggQ2hhclQgYzEsIENoYXJUIGMyICkgeyByZXR1cm4gKHN0ZDo6dG91cHBlcikoIGMxICkgPCAgKHN0ZDo6dG91cHBlcikoIGMyICk7IH0KLQotICAgIHN0YXRpYyBpbnQgICAgICAgICAgY29tcGFyZSggQ2hhclQgY29uc3QqIHMxLCBDaGFyVCBjb25zdCogczIsIHN0ZDo6c2l6ZV90IG4gKQotICAgIHsKLSAgICAgICAgZm9yKCBzdGQ6OnNpemVfdCBpID0gMDsgaSA8IG47ICsraSApIHsKLSAgICAgICAgICAgIGlmKCAhZXEoIHMxW2ldLCBzMltpXSApICkKLSAgICAgICAgICAgICAgICByZXR1cm4gbHQoIHMxW2ldLCBzMltpXSApID8gLTEgOiAxOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIHV0X2RldGFpbAotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgICBjYXNlX2luc19lcSAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlbXBsYXRlPGNsYXNzIENoYXJUPgotaW5saW5lIGJvb2wKLWNhc2VfaW5zX2VxKCBiYXNpY19jc3RyaW5nPENoYXJUPiB4LCBiYXNpY19jc3RyaW5nPENoYXJUPiB5ICkKLXsKLSAgICByZXR1cm4geC5zaXplKCkgPT0geS5zaXplKCkgJiYgdXRfZGV0YWlsOjpjYXNlX2luczxDaGFyVD46OmNvbXBhcmUoIHguYmVnaW4oKSwgeS5iZWdpbigpLCB4LnNpemUoKSApID09IDA7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgY2FzZV9pbnNfbGVzcyAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVtcGxhdGU8Y2xhc3MgQ2hhclQ+Ci1jbGFzcyBjYXNlX2luc19sZXNzIDogcHVibGljIHN0ZDo6YmluYXJ5X2Z1bmN0aW9uPGJhc2ljX2NzdHJpbmc8Q2hhclQ+LGJhc2ljX2NzdHJpbmc8Q2hhclQ+LGJvb2w+Ci17Ci1wdWJsaWM6Ci0gICAgYm9vbCBvcGVyYXRvcigpKCBiYXNpY19jc3RyaW5nPENoYXJUPiB4LCBiYXNpY19jc3RyaW5nPENoYXJUPiB5ICkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiB4LnNpemUoKSAhPSB5LnNpemUoKSAKLSAgICAgICAgICAgICAgICA/IHguc2l6ZSgpIDwgeS5zaXplKCkgCi0gICAgICAgICAgICAgICAgOiB1dF9kZXRhaWw6OmNhc2VfaW5zPENoYXJUPjo6Y29tcGFyZSggeC5iZWdpbigpLCB5LmJlZ2luKCksIHguc2l6ZSgpICkgPCAwOwotICAgIH0KLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgIG9wZXJhdG9yIDwgICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVtcGxhdGU8Y2xhc3MgQ2hhclQ+Ci1pbmxpbmUgYm9vbAotb3BlcmF0b3IgPCggbmRuYm9vc3Q6OnVuaXRfdGVzdDo6YmFzaWNfY3N0cmluZzxDaGFyVD4gY29uc3QmIHgsCi0gICAgICAgICAgICBuZG5ib29zdDo6dW5pdF90ZXN0OjpiYXNpY19jc3RyaW5nPENoYXJUPiBjb25zdCYgeSApCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6dW5pdF90ZXN0OjpiYXNpY19jc3RyaW5nPENoYXJUPjo6dHJhaXRzX3R5cGUgdHJhaXRzX3R5cGU7Ci0gICAgcmV0dXJuIHguc2l6ZSgpICE9IHkuc2l6ZSgpIAotICAgICAgICAgICAgPyB4LnNpemUoKSA8IHkuc2l6ZSgpIAotICAgICAgICAgICAgOiB0cmFpdHNfdHlwZTo6Y29tcGFyZSggeC5iZWdpbigpLCB5LmJlZ2luKCksIHguc2l6ZSgpICkgPCAwOwotfQotCi19IC8vIG5hbWVzcGFjZSB1bml0X3Rlc3QKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX0JBU0lDX0NTVFJJTkdfQ09NUEFSRV9IUFBfMDcxODk0R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvYmFzaWNfY3N0cmluZy9pby5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvYmFzaWNfY3N0cmluZy9pby5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhhZDc3MGEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL2Jhc2ljX2NzdHJpbmcvaW8uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNC0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDQ5MzEyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBiYXNpY19jc3RyaW5nIGkvbyBpbXBsZW1lbnRhdGlvbgotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgIE5ETkJPT1NUX1RFU1RfQkFTSUNfQ1NUUklOR19JT19IUFBfMDcxODk0R0VSCi0jZGVmaW5lICBORE5CT09TVF9URVNUX0JBU0lDX0NTVFJJTkdfSU9fSFBQXzA3MTg5NEdFUgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9iYXNpY19jc3RyaW5nL2Jhc2ljX2NzdHJpbmcuaHBwPgotCi0vLyBTVEwKLSNpbmNsdWRlIDxpb3Nmd2Q+Ci0jaW5jbHVkZSA8c3RyaW5nPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgdW5pdF90ZXN0IHsKLQotI2lmZGVmIE5ETkJPT1NUX0NMQVNTSUNfSU9TVFJFQU1TCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUPgotaW5saW5lIHN0ZDo6b3N0cmVhbSYKLW9wZXJhdG9yPDwoIHN0ZDo6b3N0cmVhbSYgb3MsIGJhc2ljX2NzdHJpbmc8Q2hhclQ+IGNvbnN0JiBzdHIgKQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdXRfZGV0YWlsOjpiY3NfYmFzZV9jaGFyPENoYXJUPjo6dHlwZSBjaGFyX3R5cGU7Ci0gICAgY2hhcl90eXBlIGNvbnN0KiBjb25zdCBiZWcgPSByZWludGVycHJldF9jYXN0PGNoYXJfdHlwZSBjb25zdCogY29uc3Q+KCBzdHIuYmVnaW4oKSApOwotICAgIGNoYXJfdHlwZSBjb25zdCogY29uc3QgZW5kID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyX3R5cGUgY29uc3QqIGNvbnN0Piggc3RyLmVuZCgpICk7Ci0gICAgb3MgPDwgc3RkOjpiYXNpY19zdHJpbmc8Y2hhcl90eXBlPiggYmVnLCBlbmQgLSBiZWcgKTsKLQotICAgIHJldHVybiBvczsKLX0KLQotI2Vsc2UKLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQxLCB0eXBlbmFtZSBUcix0eXBlbmFtZSBDaGFyVDI+Ci1pbmxpbmUgc3RkOjpiYXNpY19vc3RyZWFtPENoYXJUMSxUcj4mCi1vcGVyYXRvcjw8KCBzdGQ6OmJhc2ljX29zdHJlYW08Q2hhclQxLFRyPiYgb3MsIGJhc2ljX2NzdHJpbmc8Q2hhclQyPiBjb25zdCYgc3RyICkKLXsKLSAgICBDaGFyVDEgY29uc3QqIGNvbnN0IGJlZyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Q2hhclQxIGNvbnN0Kj4oIHN0ci5iZWdpbigpICk7IC8vICEhCi0gICAgQ2hhclQxIGNvbnN0KiBjb25zdCBlbmQgPSByZWludGVycHJldF9jYXN0PENoYXJUMSBjb25zdCo+KCBzdHIuZW5kKCkgKTsKLSAgICBvcyA8PCBzdGQ6OmJhc2ljX3N0cmluZzxDaGFyVDEsVHI+KCBiZWcsIGVuZCAtIGJlZyApOwotCi0gICAgcmV0dXJuIG9zOwotfQotCi0jZW5kaWYKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotCi19IC8vIG5hbWVzcGFjZSB1bml0X3Rlc3QKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX0JBU0lDX0NTVFJJTkdfSU9fSFBQXzA3MTg5NEdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL2NhbGxiYWNrLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9jYWxsYmFjay5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRiZDc4NmYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL2NhbGxiYWNrLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMxMCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDQ5MzEyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiAKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfQ0FMTEJBQ0tfMDIwNTA1R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfQ0FMTEJBQ0tfMDIwNTA1R0VSCi0KLS8vIEJvb3N0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc2hhcmVkX3B0ci5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkgfHwgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9JTlRFTCwgPD0gNzAwKQotIyAgZGVmaW5lIE5ETkJPT1NUX0NBTExCQUNLX0VYUExJQ0lUX0NPUFlfQ09OU1RSVUNUT1IKLSNlbmRpZgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgdW5pdF90ZXN0IHsKLQotbmFtZXNwYWNlIHV0X2RldGFpbCB7Ci0KLXN0cnVjdCB1bnVzZWQge307Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFI+Ci1zdHJ1Y3QgaW52b2tlciB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLSAgICBSICAgICAgIGludm9rZSggRnVuY3RvciYgZiApICAgICAgICAgICAgICAgICAgICAgICAgeyByZXR1cm4gZigpOyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3RvciwgdHlwZW5hbWUgVDE+Ci0gICAgUiAgICAgICBpbnZva2UoIEZ1bmN0b3ImIGYsIFQxIHQxICkgICAgICAgICAgICAgICAgIHsgcmV0dXJuIGYoIHQxICk7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Ci0gICAgUiAgICAgICBpbnZva2UoIEZ1bmN0b3ImIGYsIFQxIHQxLCBUMiB0MiApICAgICAgICAgIHsgcmV0dXJuIGYoIHQxLCB0MiApOyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3RvciwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMz4KLSAgICBSICAgICAgIGludm9rZSggRnVuY3RvciYgZiwgVDEgdDEsIFQyIHQyLCBUMyB0MyApICAgeyByZXR1cm4gZiggdDEsIHQyLCB0MyApOyB9Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaW52b2tlcjx1bnVzZWQ+IHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotICAgIHVudXNlZCAgaW52b2tlKCBGdW5jdG9yJiBmICkgICAgICAgICAgICAgICAgICAgICAgICB7IGYoKTsgcmV0dXJuIHVudXNlZCgpOyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3RvciwgdHlwZW5hbWUgVDE+Ci0gICAgdW51c2VkICBpbnZva2UoIEZ1bmN0b3ImIGYsIFQxIHQxICkgICAgICAgICAgICAgICAgIHsgZiggdDEgKTsgcmV0dXJuIHVudXNlZCgpOyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3RvciwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotICAgIHVudXNlZCAgaW52b2tlKCBGdW5jdG9yJiBmLCBUMSB0MSwgVDIgdDIgKSAgICAgICAgICB7IGYoIHQxLCB0MiApOyByZXR1cm4gdW51c2VkKCk7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzPgotICAgIHVudXNlZCAgaW52b2tlKCBGdW5jdG9yJiBmLCBUMSB0MSwgVDIgdDIsIFQzIHQzICkgICB7IGYoIHQxLCB0MiwgdDMgKTsgcmV0dXJuIHVudXNlZCgpOyB9Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSB1dF9kZXRhaWwKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgIHVuaXRfdGVzdDo6Y2FsbGJhY2swICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1uYW1lc3BhY2UgdXRfZGV0YWlsIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgUj4KLXN0cnVjdCBjYWxsYmFjazBfaW1wbCB7Ci0gICAgdmlydHVhbCB+Y2FsbGJhY2swX2ltcGwoKSB7fQotCi0gICAgdmlydHVhbCBSIGludm9rZSgpID0gMDsKLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFIsIHR5cGVuYW1lIEZ1bmN0b3I+Ci1zdHJ1Y3QgY2FsbGJhY2swX2ltcGxfdCA6IGNhbGxiYWNrMF9pbXBsPFI+IHsKLSAgICAvLyBDb25zdHJ1Y3RvcgotICAgIGV4cGxpY2l0IGNhbGxiYWNrMF9pbXBsX3QoIEZ1bmN0b3IgZiApIDogbV9mKCBmICkge30KLQotICAgIHZpcnR1YWwgUiBpbnZva2UoKSB7IHJldHVybiBpbnZva2VyPFI+KCkuaW52b2tlKCBtX2YgKTsgfQotCi1wcml2YXRlOgotICAgIC8vIERhdGEgbWVtYmVycwotICAgIEZ1bmN0b3IgbV9mOwotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2UgdXRfZGV0YWlsCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFIgPSB1dF9kZXRhaWw6OnVudXNlZD4KLWNsYXNzIGNhbGxiYWNrMCB7Ci1wdWJsaWM6Ci0gICAgLy8gQ29uc3RydWN0b3JzCi0gICAgY2FsbGJhY2swKCkge30KLSNpZmRlZiBORE5CT09TVF9DQUxMQkFDS19FWFBMSUNJVF9DT1BZX0NPTlNUUlVDVE9SCi0gICAgY2FsbGJhY2swKCBjYWxsYmFjazAgY29uc3QmIHJocyApIDogbV9pbXBsKCByaHMubV9pbXBsICkge30KLSNlbmRpZgotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLSAgICBjYWxsYmFjazAoIEZ1bmN0b3IgZiApCi0gICAgOiBtX2ltcGwoIG5ldyB1dF9kZXRhaWw6OmNhbGxiYWNrMF9pbXBsX3Q8UixGdW5jdG9yPiggZiApICkge30KLSAgICAKLSAgICB2b2lkICAgICAgICBvcGVyYXRvcj0oIGNhbGxiYWNrMCBjb25zdCYgcmhzICkgeyBtX2ltcGwgPSByaHMubV9pbXBsOyB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgotICAgIHZvaWQgICAgICAgIG9wZXJhdG9yPSggRnVuY3RvciBmICkgeyBtX2ltcGwucmVzZXQoIG5ldyB1dF9kZXRhaWw6OmNhbGxiYWNrMF9pbXBsX3Q8UixGdW5jdG9yPiggZiApICk7ICB9Ci0KLSAgICBSICAgICAgICAgICBvcGVyYXRvcigpKCkgY29uc3QgeyByZXR1cm4gbV9pbXBsLT5pbnZva2UoKTsgfQotCi0gICAgYm9vbCAgICAgICAgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1faW1wbDsgfQotCi1wcml2YXRlOgotICAgIC8vIERhdGEgbWVtYmVycwotICAgIG5kbmJvb3N0OjpzaGFyZWRfcHRyPHV0X2RldGFpbDo6Y2FsbGJhY2swX2ltcGw8Uj4gPiBtX2ltcGw7Ci19OwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgdW5pdF90ZXN0OjpjYWxsYmFjazEgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLW5hbWVzcGFjZSB1dF9kZXRhaWwgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBSLCB0eXBlbmFtZSBUMT4KLXN0cnVjdCBjYWxsYmFjazFfaW1wbCB7Ci0gICAgdmlydHVhbCB+Y2FsbGJhY2sxX2ltcGwoKSB7fQotCi0gICAgdmlydHVhbCBSIGludm9rZSggVDEgdDEgKSA9IDA7Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBSLCB0eXBlbmFtZSBUMSx0eXBlbmFtZSBGdW5jdG9yPgotc3RydWN0IGNhbGxiYWNrMV9pbXBsX3QgOiBjYWxsYmFjazFfaW1wbDxSLFQxPiB7Ci0gICAgLy8gQ29uc3RydWN0b3IKLSAgICBleHBsaWNpdCBjYWxsYmFjazFfaW1wbF90KCBGdW5jdG9yIGYgKSA6IG1fZiggZiApIHt9Ci0KLSAgICB2aXJ0dWFsIFIgaW52b2tlKCBUMSB0MSApIHsgcmV0dXJuIGludm9rZXI8Uj4oKS5pbnZva2UoIG1fZiwgdDEgKTsgfQotCi1wcml2YXRlOgotICAgIC8vIERhdGEgbWVtYmVycwotICAgIEZ1bmN0b3IgbV9mOwotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2UgdXRfZGV0YWlsCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQxLHR5cGVuYW1lIFIgPSB1dF9kZXRhaWw6OnVudXNlZD4KLWNsYXNzIGNhbGxiYWNrMSB7Ci1wdWJsaWM6Ci0gICAgLy8gQ29uc3RydWN0b3JzCi0gICAgY2FsbGJhY2sxKCkge30KLSNpZmRlZiBORE5CT09TVF9DQUxMQkFDS19FWFBMSUNJVF9DT1BZX0NPTlNUUlVDVE9SCi0gICAgY2FsbGJhY2sxKCBjYWxsYmFjazEgY29uc3QmIHJocyApIDogbV9pbXBsKCByaHMubV9pbXBsICkge30KLSNlbmRpZgotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLSAgICBjYWxsYmFjazEoIEZ1bmN0b3IgZiApCi0gICAgOiBtX2ltcGwoIG5ldyB1dF9kZXRhaWw6OmNhbGxiYWNrMV9pbXBsX3Q8UixUMSxGdW5jdG9yPiggZiApICkge30KLQotICAgIHZvaWQgICAgICAgIG9wZXJhdG9yPSggY2FsbGJhY2sxIGNvbnN0JiByaHMgKSB7IG1faW1wbCA9IHJocy5tX2ltcGw7IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci0gICAgdm9pZCAgICAgICAgb3BlcmF0b3I9KCBGdW5jdG9yIGYgKSB7IG1faW1wbC5yZXNldCggbmV3IHV0X2RldGFpbDo6Y2FsbGJhY2sxX2ltcGxfdDxSLFQxLEZ1bmN0b3I+KCBmICkgKTsgIH0KLQotICAgIFIgICAgICAgICAgIG9wZXJhdG9yKCkoIFQxIHQxICkgY29uc3QgeyByZXR1cm4gbV9pbXBsLT5pbnZva2UoIHQxICk7IH0KLQotICAgIGJvb2wgICAgICAgIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFtX2ltcGw7IH0KLQotcHJpdmF0ZToKLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICBuZG5ib29zdDo6c2hhcmVkX3B0cjx1dF9kZXRhaWw6OmNhbGxiYWNrMV9pbXBsPFIsVDE+ID4gbV9pbXBsOwotfTsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgIHVuaXRfdGVzdDo6Y2FsbGJhY2syICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1uYW1lc3BhY2UgdXRfZGV0YWlsIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgUiwgdHlwZW5hbWUgVDEsdHlwZW5hbWUgVDI+Ci1zdHJ1Y3QgY2FsbGJhY2syX2ltcGwgewotICAgIHZpcnR1YWwgfmNhbGxiYWNrMl9pbXBsKCkge30KLQotICAgIHZpcnR1YWwgUiBpbnZva2UoIFQxIHQxLCBUMiB0MiApID0gMDsKLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFIsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgRnVuY3Rvcj4KLXN0cnVjdCBjYWxsYmFjazJfaW1wbF90IDogY2FsbGJhY2syX2ltcGw8UixUMSxUMj4gewotICAgIC8vIENvbnN0cnVjdG9yCi0gICAgZXhwbGljaXQgY2FsbGJhY2syX2ltcGxfdCggRnVuY3RvciBmICkgOiBtX2YoIGYgKSB7fQotCi0gICAgdmlydHVhbCBSIGludm9rZSggVDEgdDEsIFQyIHQyICkgeyByZXR1cm4gaW52b2tlcjxSPigpLnRlbXBsYXRlIGludm9rZTxGdW5jdG9yLFQxLFQyPiggbV9mLCB0MSwgdDIgKTsgfQotCi1wcml2YXRlOgotICAgIC8vIERhdGEgbWVtYmVycwotICAgIEZ1bmN0b3IgbV9mOwotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2UgdXRfZGV0YWlsCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQxLHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBSID0gdXRfZGV0YWlsOjp1bnVzZWQ+Ci1jbGFzcyBjYWxsYmFjazIgewotcHVibGljOgotICAgIC8vIENvbnN0cnVjdG9ycwotICAgIGNhbGxiYWNrMigpIHt9Ci0jaWZkZWYgTkROQk9PU1RfQ0FMTEJBQ0tfRVhQTElDSVRfQ09QWV9DT05TVFJVQ1RPUgotICAgIGNhbGxiYWNrMiggY2FsbGJhY2syIGNvbnN0JiByaHMgKSA6IG1faW1wbCggcmhzLm1faW1wbCApIHt9Ci0jZW5kaWYKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2syKCBGdW5jdG9yIGYgKSA6IG1faW1wbCggbmV3IHV0X2RldGFpbDo6Y2FsbGJhY2syX2ltcGxfdDxSLFQxLFQyLEZ1bmN0b3I+KCBmICkgKSB7fQotCi0gICAgdm9pZCAgICAgICAgb3BlcmF0b3I9KCBjYWxsYmFjazIgY29uc3QmIHJocyApIHsgbV9pbXBsID0gcmhzLm1faW1wbDsgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLSAgICB2b2lkICAgICAgICBvcGVyYXRvcj0oIEZ1bmN0b3IgZiApIHsgbV9pbXBsLnJlc2V0KCBuZXcgdXRfZGV0YWlsOjpjYWxsYmFjazJfaW1wbF90PFIsVDEsVDIsRnVuY3Rvcj4oIGYgKSApOyAgfQotCi0gICAgUiAgICAgICAgICAgb3BlcmF0b3IoKSggVDEgdDEsIFQyIHQyICkgY29uc3QgeyByZXR1cm4gbV9pbXBsLT5pbnZva2UoIHQxLCB0MiApOyB9Ci0KLSAgICBib29sICAgICAgICBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9pbXBsOyB9Ci0KLXByaXZhdGU6Ci0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8dXRfZGV0YWlsOjpjYWxsYmFjazJfaW1wbDxSLFQxLFQyPiA+IG1faW1wbDsKLX07Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICB1bml0X3Rlc3Q6OmNhbGxiYWNrMyAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotbmFtZXNwYWNlIHV0X2RldGFpbCB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFIsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDM+Ci1zdHJ1Y3QgY2FsbGJhY2szX2ltcGwgewotICAgIHZpcnR1YWwgfmNhbGxiYWNrM19pbXBsKCkge30KLQotICAgIHZpcnR1YWwgUiBpbnZva2UoIFQxIHQxLCBUMiB0MiwgVDMgdDMgKSA9IDA7Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBSLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBGdW5jdG9yPgotc3RydWN0IGNhbGxiYWNrM19pbXBsX3QgOiBjYWxsYmFjazNfaW1wbDxSLFQxLFQyLFQzPiB7Ci0gICAgLy8gQ29uc3RydWN0b3IKLSAgICBleHBsaWNpdCBjYWxsYmFjazNfaW1wbF90KCBGdW5jdG9yIGYgKSA6IG1fZiggZiApIHt9Ci0KLSAgICB2aXJ0dWFsIFIgaW52b2tlKCBUMSB0MSwgVDIgdDIsIFQzIHQzICkgeyByZXR1cm4gaW52b2tlcjxSPigpLmludm9rZSggbV9mLCB0MSwgdDIsIHQzICk7IH0KLQotcHJpdmF0ZToKLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICBGdW5jdG9yIG1fZjsKLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIHV0X2RldGFpbAotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUMSx0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFIgPSB1dF9kZXRhaWw6OnVudXNlZD4KLWNsYXNzIGNhbGxiYWNrMyB7Ci1wdWJsaWM6Ci0gICAgLy8gQ29uc3RydWN0b3JzCi0gICAgY2FsbGJhY2szKCkge30KLSNpZmRlZiBORE5CT09TVF9DQUxMQkFDS19FWFBMSUNJVF9DT1BZX0NPTlNUUlVDVE9SCi0gICAgY2FsbGJhY2szKCBjYWxsYmFjazMgY29uc3QmIHJocyApIDogbV9pbXBsKCByaHMubV9pbXBsICkge30KLSNlbmRpZgotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KLSAgICBjYWxsYmFjazMoIEZ1bmN0b3IgZiApCi0gICAgOiBtX2ltcGwoIG5ldyB1dF9kZXRhaWw6OmNhbGxiYWNrM19pbXBsX3Q8UixUMSxUMixUMyxGdW5jdG9yPiggZiApICkge30KLQotICAgIHZvaWQgICAgICAgIG9wZXJhdG9yPSggY2FsbGJhY2szIGNvbnN0JiByaHMgKSB7IG1faW1wbCA9IHJocy5tX2ltcGw7IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+Ci0gICAgdm9pZCAgICAgICAgb3BlcmF0b3I9KCBGdW5jdG9yIGYgKSB7IG1faW1wbC5yZXNldCggbmV3IHV0X2RldGFpbDo6Y2FsbGJhY2szX2ltcGxfdDxSLFQxLFQyLFQzLEZ1bmN0b3I+KCBmICkgKTsgIH0KLQotICAgIFIgICAgICAgICAgIG9wZXJhdG9yKCkoIFQxIHQxLCBUMiB0MiwgVDMgdDMgKSBjb25zdCB7IHJldHVybiBtX2ltcGwtPmludm9rZSggdDEsIHQyLCB0MyApOyB9Ci0KLSAgICBib29sICAgICAgICBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9pbXBsOyB9Ci0KLXByaXZhdGU6Ci0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgbmRuYm9vc3Q6OnNoYXJlZF9wdHI8dXRfZGV0YWlsOjpjYWxsYmFjazNfaW1wbDxSLFQxLFQyLFQzPiA+IG1faW1wbDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIHVuaXRfdGVzdAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jdW5kZWYgTkROQk9PU1RfQ0FMTEJBQ0tfRVhQTElDSVRfQ09QWV9DT05TVFJVQ1RPUgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RFU1RfQ0FMTEJBQ0tfMDIwNTA1R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvY2xhc3NfcHJvcGVydGllcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvY2xhc3NfcHJvcGVydGllcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1ZWE5OTguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL2NsYXNzX3Byb3BlcnRpZXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjIxICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDEtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1NDYzMyAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogc2ltcGxlIGZhY2lsaXR5IHRoYXQgbWltbWljIG5vdGlvbiBvZiByZWFkLW9ubHkgcmVhZC13cml0ZSAKLS8vICBwcm9wZXJ0aWVzIGluIEMrKyBjbGFzc2VzLiBPcmlnaW5hbCBpZGVhIGJ5IEhlbnJpayBSYXZuLgotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9DTEFTU19QUk9QRVJUSUVTX0hQUF8wNzE4OTRHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9DTEFTU19QUk9QRVJUSUVTX0hQUF8wNzE4OTRHRVIKLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2NvbmZpZy5ocHA+Ci0KLS8vIEJvb3N0Ci0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19JQk1DUFBfXywgTkROQk9PU1RfVEVTVEVEX0FUKDYwMCkpCi0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9mb3JfZWFjaC5ocHA+Ci0jZW5kaWYKLSNpbmNsdWRlIDxuZG5ib29zdC9jYWxsX3RyYWl0cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX3BvaW50ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2FkZF9jb25zdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdXRpbGl0eS9hZGRyZXNzb2YuaHBwPgotCi0vLyBTVEwKLSNpbmNsdWRlIDxpb3Nmd2Q+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSB1bml0X3Rlc3QgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgIGNsYXNzX3Byb3BlcnR5ICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlbXBsYXRlPGNsYXNzIFByb3BlcnR5VHlwZT4KLWNsYXNzIGNsYXNzX3Byb3BlcnR5IHsKLXByb3RlY3RlZDoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNhbGxfdHJhaXRzPFByb3BlcnR5VHlwZT46OmNvbnN0X3JlZmVyZW5jZSAgICAgcmVhZF9hY2Nlc3NfdDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGNhbGxfdHJhaXRzPFByb3BlcnR5VHlwZT46OnBhcmFtX3R5cGUgICAgICAgICAgd3JpdGVfcGFyYW1fdDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFkZF9wb2ludGVyPHR5cGVuYW1lIGFkZF9jb25zdDxQcm9wZXJ0eVR5cGU+Ojp0eXBlPjo6dHlwZSBhZGRyZXNzX3Jlc190OwotcHVibGljOgotICAgIC8vIENvbnN0cnVjdG9yCi0gICAgICAgICAgICAgICAgICAgIGNsYXNzX3Byb3BlcnR5KCkgOiB2YWx1ZSggUHJvcGVydHlUeXBlKCkgKSB7fQotICAgIGV4cGxpY2l0ICAgICAgICBjbGFzc19wcm9wZXJ0eSggd3JpdGVfcGFyYW1fdCBpbml0X3ZhbHVlICkKLSAgICA6IHZhbHVlKCBpbml0X3ZhbHVlICkge30KLQotICAgIC8vIEFjY2VzcyBtZXRob2RzCi0gICAgb3BlcmF0b3IgICAgICAgIHJlYWRfYWNjZXNzX3QoKSBjb25zdCAgIHsgcmV0dXJuIHZhbHVlOyB9Ci0gICAgcmVhZF9hY2Nlc3NfdCAgIGdldCgpIGNvbnN0ICAgICAgICAgICAgIHsgcmV0dXJuIHZhbHVlOyB9Ci0gICAgYm9vbCAgICAgICAgICAgIG9wZXJhdG9yISgpIGNvbnN0ICAgICAgIHsgcmV0dXJuICF2YWx1ZTsgfQotICAgIGFkZHJlc3NfcmVzX3QgICBvcGVyYXRvciYoKSBjb25zdCAgICAgICB7IHJldHVybiAmdmFsdWU7IH0KLQotICAgIC8vIERhdGEgbWVtYmVycwotI2lmbmRlZiBORE5CT09TVF9URVNUX05PX1BST1RFQ1RFRF9VU0lORwotcHJvdGVjdGVkOgotI2VuZGlmCi0gICAgUHJvcGVydHlUeXBlICAgICAgICB2YWx1ZTsKLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpZmRlZiBORE5CT09TVF9DTEFTU0lDX0lPU1RSRUFNUwotCi10ZW1wbGF0ZTxjbGFzcyBQcm9wZXJ0eVR5cGU+Ci1pbmxpbmUgc3RkOjpvc3RyZWFtJgotb3BlcmF0b3I8PCggc3RkOjpvc3RyZWFtJiBvcywgY2xhc3NfcHJvcGVydHk8UHJvcGVydHlUeXBlPiBjb25zdCYgcCApCi0KLSNlbHNlCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUMSwgdHlwZW5hbWUgVHIsY2xhc3MgUHJvcGVydHlUeXBlPgotaW5saW5lIHN0ZDo6YmFzaWNfb3N0cmVhbTxDaGFyVDEsVHI+Jgotb3BlcmF0b3I8PCggc3RkOjpiYXNpY19vc3RyZWFtPENoYXJUMSxUcj4mIG9zLCBjbGFzc19wcm9wZXJ0eTxQcm9wZXJ0eVR5cGU+IGNvbnN0JiBwICkKLQotI2VuZGlmCi17Ci0gICAgcmV0dXJuIG9zIDw8IHAuZ2V0KCk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNkZWZpbmUgREVGSU5FX1BST1BFUlRZX0ZSRUVfQklOQVJZX09QRVJBVE9SKCBvcCApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotdGVtcGxhdGU8Y2xhc3MgUHJvcGVydHlUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1pbmxpbmUgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLW9wZXJhdG9yIG9wKCBQcm9wZXJ0eVR5cGUgY29uc3QmIGxocywgY2xhc3NfcHJvcGVydHk8UHJvcGVydHlUeXBlPiBjb25zdCYgcmhzICkgXAoteyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgcmV0dXJuIGxocyBvcCByaHMuZ2V0KCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotdGVtcGxhdGU8Y2xhc3MgUHJvcGVydHlUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1pbmxpbmUgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLW9wZXJhdG9yIG9wKCBjbGFzc19wcm9wZXJ0eTxQcm9wZXJ0eVR5cGU+IGNvbnN0JiBsaHMsIFByb3BlcnR5VHlwZSBjb25zdCYgcmhzICkgXAoteyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgcmV0dXJuIGxocy5nZXQoKSBvcCByaHM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotdGVtcGxhdGU8Y2xhc3MgUHJvcGVydHlUeXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1pbmxpbmUgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLW9wZXJhdG9yIG9wKCBjbGFzc19wcm9wZXJ0eTxQcm9wZXJ0eVR5cGU+IGNvbnN0JiBsaHMsICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgIGNsYXNzX3Byb3BlcnR5PFByb3BlcnR5VHlwZT4gY29uc3QmIHJocyApICAgICAgICAgICAgICAgICAgICAgICAgICBcCi17ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICByZXR1cm4gbGhzLmdldCgpIG9wIHJocy5nZXQoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0vKiovCi0KLURFRklORV9QUk9QRVJUWV9GUkVFX0JJTkFSWV9PUEVSQVRPUiggPT0gKQotREVGSU5FX1BST1BFUlRZX0ZSRUVfQklOQVJZX09QRVJBVE9SKCAhPSApCi0KLSN1bmRlZiBERUZJTkVfUFJPUEVSVFlfRlJFRV9CSU5BUllfT1BFUkFUT1IKLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKQotCi0jZGVmaW5lIERFRklORV9QUk9QRVJUWV9MT0dJQ0FMX09QRVJBVE9SKCBvcCApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXRlbXBsYXRlPGNsYXNzIFByb3BlcnR5VHlwZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotaW5saW5lIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1vcGVyYXRvciBvcCggYm9vbCBiLCBjbGFzc19wcm9wZXJ0eTxQcm9wZXJ0eVR5cGU+IGNvbnN0JiBwICkgICAgICAgICAgICAgICAgICAgIFwKLXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHJldHVybiBiIG9wIHAuZ2V0KCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi19ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXRlbXBsYXRlPGNsYXNzIFByb3BlcnR5VHlwZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotaW5saW5lIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1vcGVyYXRvciBvcCggY2xhc3NfcHJvcGVydHk8UHJvcGVydHlUeXBlPiBjb25zdCYgcCwgYm9vbCBiICkgICAgICAgICAgICAgICAgICAgIFwKLXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHJldHVybiBiIG9wIHAuZ2V0KCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi19ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS8qKi8KLQotREVGSU5FX1BST1BFUlRZX0xPR0lDQUxfT1BFUkFUT1IoICYmICkKLURFRklORV9QUk9QRVJUWV9MT0dJQ0FMX09QRVJBVE9SKCB8fCApCi0KLSNlbmRpZgotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICByZWFkb25seV9wcm9wZXJ0eSAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlbXBsYXRlPGNsYXNzIFByb3BlcnR5VHlwZT4KLWNsYXNzIHJlYWRvbmx5X3Byb3BlcnR5IDogcHVibGljIGNsYXNzX3Byb3BlcnR5PFByb3BlcnR5VHlwZT4gewotICAgIHR5cGVkZWYgY2xhc3NfcHJvcGVydHk8UHJvcGVydHlUeXBlPiAgICAgICAgIGJhc2VfcHJvcDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfcHJvcDo6YWRkcmVzc19yZXNfdCAgICBhcnJvd19yZXNfdDsKLXByb3RlY3RlZDoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfcHJvcDo6d3JpdGVfcGFyYW1fdCAgICB3cml0ZV9wYXJhbV90OwotcHVibGljOgotICAgIC8vIENvbnN0cnVjdG9yCi0gICAgICAgICAgICAgICAgICAgIHJlYWRvbmx5X3Byb3BlcnR5KCkge30KLSAgICBleHBsaWNpdCAgICAgICAgcmVhZG9ubHlfcHJvcGVydHkoIHdyaXRlX3BhcmFtX3QgaW5pdF92YWx1ZSApIDogYmFzZV9wcm9wKCBpbml0X3ZhbHVlICkge30KLQotICAgIC8vIGFjY2VzcyBtZXRob2RzCi0gICAgYXJyb3dfcmVzX3QgICAgIG9wZXJhdG9yLT4oKSBjb25zdCAgICAgIHsgcmV0dXJuIG5kbmJvb3N0OjphZGRyZXNzb2YoIGJhc2VfcHJvcDo6dmFsdWUgKTsgfQotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19JQk1DUFBfXywgTkROQk9PU1RfVEVTVEVEX0FUKDYwMCkpCi0KLSNkZWZpbmUgTkROQk9PU1RfUkVBRE9OTFlfUFJPUEVSVFkoIHByb3BlcnR5X3R5cGUsIGZyaWVuZHMgKSBuZG5ib29zdDo6dW5pdF90ZXN0OjpyZWFkd3JpdGVfcHJvcGVydHk8cHJvcGVydHlfdHlwZSA+Ci0KLSNlbHNlCi0KLSNkZWZpbmUgTkROQk9PU1RfUkVBRE9OTFlfUFJPUEVSVFlfREVDTEFSRV9GUklFTkQociwgZGF0YSwgZWxlbSkgZnJpZW5kIGNsYXNzIGVsZW07Ci0KLSNkZWZpbmUgTkROQk9PU1RfUkVBRE9OTFlfUFJPUEVSVFkoIHByb3BlcnR5X3R5cGUsIGZyaWVuZHMgKSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLWNsYXNzIE5ETkJPT1NUX0pPSU4oIHJlYWRvbmx5X3Byb3BlcnR5LCBfX0xJTkVfXyApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLTogcHVibGljIG5kbmJvb3N0Ojp1bml0X3Rlc3Q6OnJlYWRvbmx5X3Byb3BlcnR5PHByb3BlcnR5X3R5cGUgPiB7ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bml0X3Rlc3Q6OnJlYWRvbmx5X3Byb3BlcnR5PHByb3BlcnR5X3R5cGUgPiBiYXNlX3Byb3A7ICAgICAgICAgIFwKLSAgICBORE5CT09TVF9QUF9TRVFfRk9SX0VBQ0goIE5ETkJPT1NUX1JFQURPTkxZX1BST1BFUlRZX0RFQ0xBUkVfRlJJRU5ELCAnICcsIGZyaWVuZHMgKSAgIFwKLSAgICB0eXBlZGVmIGJhc2VfcHJvcDo6d3JpdGVfcGFyYW1fdCAgd3JpdGVfcGFyYW1fdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXB1YmxpYzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICBORE5CT09TVF9KT0lOKCByZWFkb25seV9wcm9wZXJ0eSwgX19MSU5FX18gKSgpIHt9ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBleHBsaWNpdCAgICBORE5CT09TVF9KT0lOKCByZWFkb25seV9wcm9wZXJ0eSwgX19MSU5FX18gKSggd3JpdGVfcGFyYW1fdCBpbml0X3YgICkgIFwKLSAgICA6IGJhc2VfcHJvcCggaW5pdF92ICkge30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS8qKi8KLQotI2VuZGlmCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgcmVhZHdyaXRlX3Byb3BlcnR5ICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVtcGxhdGU8Y2xhc3MgUHJvcGVydHlUeXBlPgotY2xhc3MgcmVhZHdyaXRlX3Byb3BlcnR5IDogcHVibGljIGNsYXNzX3Byb3BlcnR5PFByb3BlcnR5VHlwZT4gewotICAgIHR5cGVkZWYgY2xhc3NfcHJvcGVydHk8UHJvcGVydHlUeXBlPiAgICAgICAgICAgICAgICBiYXNlX3Byb3A7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhZGRfcG9pbnRlcjxQcm9wZXJ0eVR5cGU+Ojp0eXBlICAgIGFycm93X3Jlc190OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZV9wcm9wOjphZGRyZXNzX3Jlc190ICAgICAgICAgICBjb25zdF9hcnJvd19yZXNfdDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfcHJvcDo6d3JpdGVfcGFyYW1fdCAgICAgICAgICAgd3JpdGVfcGFyYW1fdDsKLXB1YmxpYzoKLSAgICAgICAgICAgICAgICAgICAgcmVhZHdyaXRlX3Byb3BlcnR5KCkgOiBiYXNlX3Byb3AoKSB7fQotICAgIGV4cGxpY2l0ICAgICAgICByZWFkd3JpdGVfcHJvcGVydHkoIHdyaXRlX3BhcmFtX3QgaW5pdF92YWx1ZSApIDogYmFzZV9wcm9wKCBpbml0X3ZhbHVlICkge30KLQotICAgIC8vIGFjY2VzcyBtZXRob2RzCi0gICAgdm9pZCAgICAgICAgICAgIHNldCggd3JpdGVfcGFyYW1fdCB2ICkgIHsgYmFzZV9wcm9wOjp2YWx1ZSA9IHY7IH0KLSAgICBhcnJvd19yZXNfdCAgICAgb3BlcmF0b3ItPigpICAgICAgICAgICAgeyByZXR1cm4gbmRuYm9vc3Q6OmFkZHJlc3NvZiggYmFzZV9wcm9wOjp2YWx1ZSApOyB9Ci0gICAgY29uc3RfYXJyb3dfcmVzX3Qgb3BlcmF0b3ItPigpIGNvbnN0ICAgIHsgcmV0dXJuIG5kbmJvb3N0OjphZGRyZXNzb2YoIGJhc2VfcHJvcDo6dmFsdWUgKTsgfQotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfTk9fUFJPVEVDVEVEX1VTSU5HCi0gICAgdXNpbmcgICAgICAgICAgIGJhc2VfcHJvcDo6dmFsdWU7Ci0jZW5kaWYKLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gdW5pdF90ZXN0Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfVEVTVF9OT19QUk9URUNURURfVVNJTkcKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RFU1RfQ0xBU1NfUFJPUEVSVElFU19IUFBfMDcxODk0R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvY3VzdG9tX21hbmlwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9jdXN0b21fbWFuaXAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNjVkZGM3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9jdXN0b21fbWFuaXAuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDQ5MzEyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBzaW1wbGUgaGVscGVycyBmb3IgY3JlYXRpbmcgY3Vzb20gb3V0cHV0IG1hbmlwdWxhdG9ycwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9DVVNUT01fTUFOSVBfSFBQXzA3MTg5NEdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX0NVU1RPTV9NQU5JUF9IUFBfMDcxODk0R0VSCi0KLS8vIFNUTAotI2luY2x1ZGUgPGlvc2Z3ZD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIHVuaXRfdGVzdCB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICBjdXN0b20gbWFuaXB1bGF0b3JzIGhlbHBlcnMgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgTWFuaXA+Ci1zdHJ1Y3QgY3VzdG9tX3ByaW50ZXIgewotICAgIGV4cGxpY2l0IGN1c3RvbV9wcmludGVyKCBzdGQ6Om9zdHJlYW0mIG9zdHIgKSA6IG1fb3N0ciggJm9zdHIgKSB7fQotCi0gICAgc3RkOjpvc3RyZWFtJiBvcGVyYXRvciooKSBjb25zdCB7IHJldHVybiAqbV9vc3RyOyB9Ci0KLXByaXZhdGU6Ci0gICAgc3RkOjpvc3RyZWFtKiBjb25zdCBtX29zdHI7Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBVbmlxPiBzdHJ1Y3QgY3VzdG9tX21hbmlwIHt9OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBVbmlxPgotaW5saW5lIGN1c3RvbV9wcmludGVyPGN1c3RvbV9tYW5pcDxVbmlxPiA+Ci1vcGVyYXRvcjw8KCBzdGQ6Om9zdHJlYW0mIG9zdHIsIGN1c3RvbV9tYW5pcDxVbmlxPiBjb25zdCYgKSB7IHJldHVybiBjdXN0b21fcHJpbnRlcjxjdXN0b21fbWFuaXA8VW5pcT4gPiggb3N0ciApOyB9Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIHVuaXRfdGVzdAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RFU1RfQ1VTVE9NX01BTklQX0hQUF8wNzE4OTRHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9maXhlZF9tYXBwaW5nLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9maXhlZF9tYXBwaW5nLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzZhYjMwYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvZml4ZWRfbWFwcGluZy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjQgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwMS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDU0NjMzICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBmaXhlZCBzaXplZCBtYXBwaW5nIHdpdGggc3BlY2lmaWVkIGludmFsaWQgdmFsdWUKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfRklYRURfTUFQUElOR19IUFBfMDcxODk0R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfRklYRURfTUFQUElOR19IUFBfMDcxODk0R0VSCi0KLS8vIEJvb3N0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vcmVwZWF0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvYXJpdGhtZXRpYy9hZGQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NhbGxfdHJhaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvYmluYXJ5X3NlYXJjaC5ocHA+Ci0KLS8vIFNUTAotI2luY2x1ZGUgPHZlY3Rvcj4KLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgotI2luY2x1ZGUgPGFsZ29yaXRobT4KLSNpbmNsdWRlIDx1dGlsaXR5PgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgdW5pdF90ZXN0IHsKLQotLy8gY29uZmlndXJhYmxlIG1heGltdW0gZml4ZWQgc2l6ZWQgbWFwcGluZyBzaXplIHN1cHBvcnRlZCBieSB0aGlzIGhlYWRlci4KLS8vIFlvdSBjYW4gcmVkZWZpbmUgaXQgYmVmb3JlIGluY2x1c2lvbiBvZiB0aGlzIGZpbGUuCi0jaWZuZGVmIE1BWF9NQVBfU0laRQotI2RlZmluZSBNQVhfTUFQX1NJWkUgMjAKLSNlbmRpZgotCi0jZGVmaW5lIENPTlNUUl9ERUNMX01JRCggeiwgaSwgZHVtbXkxICkga2V5X3BhcmFtX3R5cGUga2V5IyNpLCB2YWx1ZV9wYXJhbV90eXBlIHYjI2ksCi0jZGVmaW5lIENPTlNUUl9CT0RZX01JRCggeiwgaSwgZHVtbXkxICkgYWRkX3BhaXIoIGtleSMjaSwgdiMjaSApOwotCi0jZGVmaW5lIENPTlNUUl9ERUNMKCB6LCBuLCBkdW1teTEgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBmaXhlZF9tYXBwaW5nKCBORE5CT09TVF9QUF9SRVBFQVRfICMjIHooIG4sIENPTlNUUl9ERUNMX01JRCwgIiIgKSAgXAotICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlX3BhcmFtX3R5cGUgaW52YWxpZF92YWx1ZSApICAgICAgICAgICBcCi0gICAgOiBtX2ludmFsaWRfdmFsdWUoIGludmFsaWRfdmFsdWUgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBORE5CT09TVF9QUF9SRVBFQVRfICMjIHooIG4sIENPTlNUUl9CT0RZX01JRCwgIiIgKSAgICAgICAgICAgICBcCi0gICAgICAgIGluaXQoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLyoqLwotCi0jZGVmaW5lIENPTlRSVUNUT1JTKCBuICkgTkROQk9PU1RfUFBfUkVQRUFUKCBuLCBDT05TVFJfREVDTCwgIiIgKQotCi10ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBDb21wYXJlID0gc3RkOjpsZXNzPEtleT4gPgotY2xhc3MgZml4ZWRfbWFwcGluZwotewotICAgIHR5cGVkZWYgc3RkOjpwYWlyPEtleSxWYWx1ZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbV90eXBlOwotICAgIHR5cGVkZWYgc3RkOjp2ZWN0b3I8ZWxlbV90eXBlPiAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6OnZlY3RvcjxlbGVtX3R5cGU+Ojpjb25zdF9pdGVyYXRvciBpdGVyYXRvcjsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgY2FsbF90cmFpdHM8S2V5Pjo6cGFyYW1fdHlwZSAgICAgICAgICAga2V5X3BhcmFtX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBjYWxsX3RyYWl0czxWYWx1ZT46OnBhcmFtX3R5cGUgICAgICAgICB2YWx1ZV9wYXJhbV90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgY2FsbF90cmFpdHM8VmFsdWU+Ojpjb25zdF9yZWZlcmVuY2UgICAgdmFsdWVfcmVmX3R5cGU7Ci0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fREVDQ1hYX1ZFUiwgTkROQk9PU1RfVEVTVEVEX0FUKDYwNTkwMDQyKSkKLSAgICBzdHJ1Y3QgcDE7IGZyaWVuZCBzdHJ1Y3QgcDE7Ci0gICAgc3RydWN0IHAyOyBmcmllbmQgc3RydWN0IHAyOwotI2VuZGlmCi0KLSAgICAvLyBiaW5kKCBDb21wYXJlKCksIGJpbmQoc2VsZWN0MXN0PGVsZW1fdHlwZT4oKSwgXzEpLCAgYmluZChpZGVudGl0eTxLZXk+KCksIF8yKSApCi0gICAgc3RydWN0IHAxIDogcHVibGljIHN0ZDo6YmluYXJ5X2Z1bmN0aW9uPGVsZW1fdHlwZSxLZXksYm9vbD4KLSAgICB7Ci0gICAgICAgIGJvb2wgb3BlcmF0b3IoKSggZWxlbV90eXBlIGNvbnN0JiB4LCBLZXkgY29uc3QmIHkgKSBjb25zdCB7IHJldHVybiBDb21wYXJlKCkoIHguZmlyc3QsIHkgKTsgfQotICAgIH07Ci0KLSAgICAvLyBiaW5kKCBDb21wYXJlKCksIGJpbmQoc2VsZWN0MXN0PGVsZW1fdHlwZT4oKSwgXzEpLCBiaW5kKHNlbGVjdDFzdDxlbGVtX3R5cGU+KCksIF8yKSApCi0gICAgc3RydWN0IHAyIDogcHVibGljIHN0ZDo6YmluYXJ5X2Z1bmN0aW9uPGVsZW1fdHlwZSxlbGVtX3R5cGUsYm9vbD4KLSAgICB7Ci0gICAgICAgIGJvb2wgb3BlcmF0b3IoKSggZWxlbV90eXBlIGNvbnN0JiB4LCBlbGVtX3R5cGUgY29uc3QmIHkgKSBjb25zdCB7IHJldHVybiBDb21wYXJlKCkoIHguZmlyc3QsIHkuZmlyc3QgKTsgfQotICAgIH07Ci0KLXB1YmxpYzoKLSAgICAvLyBDb25zdHJ1Y3RvcnMKLSAgICBDT05UUlVDVE9SUyggTkROQk9PU1RfUFBfQUREKCBNQVhfTUFQX1NJWkUsIDEgKSApCi0KLSAgICAvLyBrZXkgLT4gdmFsdWUgYWNjZXNzCi0gICAgdmFsdWVfcmVmX3R5cGUgIG9wZXJhdG9yW10oIGtleV9wYXJhbV90eXBlIGtleSApIGNvbnN0Ci0gICAgewotICAgICAgICBpdGVyYXRvciBpdCA9IG5kbmJvb3N0OjpkZXRhaWw6Omxvd2VyX2JvdW5kKCBtX21hcC5iZWdpbigpLCBtX21hcC5lbmQoKSwga2V5LCBwMSgpICk7Ci0KLSAgICAgICAgcmV0dXJuIChpdCA9PSBtX21hcC5lbmQoKSB8fCBDb21wYXJlKCkoIGtleSwgaXQtPmZpcnN0ICkgKSA/IG1faW52YWxpZF92YWx1ZSA6IGl0LT5zZWNvbmQ7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIC8vIEltcGxlbWVudGF0aW9uCi0gICAgdm9pZCAgICAgICAgICAgIGluaXQoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzdGQ6OnNvcnQoIG1fbWFwLmJlZ2luKCksIG1fbWFwLmVuZCgpLCBwMigpICk7IH0KLSAgICB2b2lkICAgICAgICAgICAgYWRkX3BhaXIoIGtleV9wYXJhbV90eXBlIGtleSwgdmFsdWVfcGFyYW1fdHlwZSB2YWx1ZSApICB7IG1fbWFwLnB1c2hfYmFjayggZWxlbV90eXBlKCBrZXksIHZhbHVlICkgKTsgfQotCi0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgVmFsdWUgICAgICAgICAgIG1faW52YWxpZF92YWx1ZTsKLSAgICBtYXBfdHlwZSAgICAgICAgbV9tYXA7Ci19OwotCi19IC8vIG5hbWVzcGFjZSB1bml0X3Rlc3QKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSN1bmRlZiBNQVhfTUFQX1NJWkUKLSN1bmRlZiBDT05TVFJfREVDTF9NSUQKLSN1bmRlZiBDT05TVFJfQk9EWV9NSUQKLSN1bmRlZiBDT05TVFJfREVDTAotI3VuZGVmIENPTlRSVUNUT1JTCi0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX0ZJWEVEX01BUFBJTkdfSFBQXzA3MTg5NEdFUgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvZm9yZWFjaC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvZm9yZWFjaC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRiYzIwMjcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL2ZvcmVhY2guaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjgxICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEVyaWMgTmllYmxlciAyMDA0LTIwMDUKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDU0NjMzICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiB0aGlzIGlzIGFuIGFicmlkZ2VkIHZlcnNpb24gb2YgYW4gZXhjZWxlbnQgTkROQk9PU1RfRk9SRUFDSCBmYWNpbGl0eQotLy8gIHByZXNlbnRlZCBieSBFcmljIE5pZWJsZXIuIEkgYW0gc28gZm9uZCBvZiBpdCBzbyBJIGNhbid0IHdhaXQgdGlsbCBpdCAKLS8vICBnb2luZyB0byBiZSBhY2NlcHRlZCBpbnRvIEJvb3N0LiBBbHNvIEkgbmVlZCB2ZXJzaW9uIHdpdGggbGVzcyBudW1iZXIgb2YgZGVwZW5kZW5jaWVzIAotLy8gIGFuZCBtb3JlIHBvcnRhYmxlLiBUaGlzIHZlcnNpb24gZG9lc24ndCBzdXBwb3J0IHJ2YWx1ZXMgYW5kIHdpbGwgcmVldmVsdWF0ZSBpdCdzIAotLy8gIHBhcmFtZXRlcnMsIGJ1dCBzaG91bGQgYmUgZ29vZCBlbm91Z2ggZm9yIG15IHB1cnBvc2VzLgotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9GT1JFQUNIX0hQUF8wMjEwMDVHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9GT1JFQUNIX0hQUF8wMjEwMDVHRVIKLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2NvbmZpZy5ocHA+Ci0KLS8vIEJvb3N0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2Jvb2wuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29uc3QuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgdW5pdF90ZXN0IHsKLQotbmFtZXNwYWNlIGZvcl9lYWNoIHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICAgc3RhdGljX2FueSAgICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1zdHJ1Y3Qgc3RhdGljX2FueV9iYXNlCi17Ci0gICAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBJdGVyPgotc3RydWN0IHN0YXRpY19hbnkgOiBzdGF0aWNfYW55X2Jhc2UKLXsKLSAgICBzdGF0aWNfYW55KCBJdGVyIGNvbnN0JiB0ICkgOiBtX2l0KCB0ICkge30KLQotICAgIG11dGFibGUgSXRlciBtX2l0OwotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdHlwZWRlZiBzdGF0aWNfYW55X2Jhc2UgY29uc3QmIHN0YXRpY19hbnlfdDsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgSXRlcj4KLWlubGluZSBJdGVyJgotc3RhdGljX2FueV9jYXN0KCBzdGF0aWNfYW55X3QgYSwgSXRlciogPSAwICkKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SXRlciY+KCBzdGF0aWNfY2FzdDxzdGF0aWNfYW55PEl0ZXI+IGNvbnN0Jj4oIGEgKS5tX2l0ICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgICBpc19jb25zdCAgICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQz4KLWlubGluZSBpc19jb25zdDxDPgotaXNfY29uc3RfY29sbCggQyYgKQotewotICAgIHJldHVybiBpc19jb25zdDxDPigpOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgICAgICBiZWdpbiAgICAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIEM+Ci1pbmxpbmUgc3RhdGljX2FueTxORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIEM6Oml0ZXJhdG9yPgotYmVnaW4oIEMmIHQsIG1wbDo6ZmFsc2VfICkKLXsKLSAgICByZXR1cm4gc3RhdGljX2FueTxORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIEM6Oml0ZXJhdG9yPiggdC5iZWdpbigpICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIEM+Ci1pbmxpbmUgc3RhdGljX2FueTxORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIEM6OmNvbnN0X2l0ZXJhdG9yPgotYmVnaW4oIEMgY29uc3QmIHQsIG1wbDo6dHJ1ZV8gKQotewotICAgIHJldHVybiBzdGF0aWNfYW55PE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgQzo6Y29uc3RfaXRlcmF0b3I+KCB0LmJlZ2luKCkgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICAgICAgIGVuZCAgICAgICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDPgotaW5saW5lIHN0YXRpY19hbnk8TkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBDOjppdGVyYXRvcj4KLWVuZCggQyYgdCwgbXBsOjpmYWxzZV8gKQotewotICAgIHJldHVybiBzdGF0aWNfYW55PE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgQzo6aXRlcmF0b3I+KCB0LmVuZCgpICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIEM+Ci1pbmxpbmUgc3RhdGljX2FueTxORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIEM6OmNvbnN0X2l0ZXJhdG9yPgotZW5kKCBDIGNvbnN0JiB0LCBtcGw6OnRydWVfICkKLXsKLSAgICByZXR1cm4gc3RhdGljX2FueTxORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIEM6OmNvbnN0X2l0ZXJhdG9yPiggdC5lbmQoKSApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgICAgICAgZG9uZSAgICAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIEM+Ci1pbmxpbmUgYm9vbAotZG9uZSggc3RhdGljX2FueV90IGN1ciwgc3RhdGljX2FueV90IGVuZCwgQyYsIG1wbDo6ZmFsc2VfICkKLXsKLSAgICByZXR1cm4gIHN0YXRpY19hbnlfY2FzdDxORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIEM6Oml0ZXJhdG9yPiggY3VyICkgPT0KLSAgICAgICAgICAgIHN0YXRpY19hbnlfY2FzdDxORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIEM6Oml0ZXJhdG9yPiggZW5kICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIEM+Ci1pbmxpbmUgYm9vbAotZG9uZSggc3RhdGljX2FueV90IGN1ciwgc3RhdGljX2FueV90IGVuZCwgQyBjb25zdCYsIG1wbDo6dHJ1ZV8gKQotewotICAgIHJldHVybiAgc3RhdGljX2FueV9jYXN0PE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgQzo6Y29uc3RfaXRlcmF0b3I+KCBjdXIgKSA9PQotICAgICAgICAgICAgc3RhdGljX2FueV9jYXN0PE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgQzo6Y29uc3RfaXRlcmF0b3I+KCBlbmQgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICAgICAgIG5leHQgICAgICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDPgotaW5saW5lIHZvaWQKLW5leHQoIHN0YXRpY19hbnlfdCBjdXIsIEMmLCBtcGw6OmZhbHNlXyApCi17Ci0gICAgKytzdGF0aWNfYW55X2Nhc3Q8TkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBDOjppdGVyYXRvcj4oIGN1ciApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDPgotaW5saW5lIHZvaWQKLW5leHQoIHN0YXRpY19hbnlfdCBjdXIsIEMgY29uc3QmLCBtcGw6OnRydWVfICkKLXsKLSAgICArK3N0YXRpY19hbnlfY2FzdDxORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIEM6OmNvbnN0X2l0ZXJhdG9yPiggY3VyICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgICAgICBkZXJlZiAgICAgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVtcGxhdGU8Y2xhc3MgUmVmVHlwZSx0eXBlbmFtZSBDPgotaW5saW5lIFJlZlR5cGUKLWRlcmVmKCBzdGF0aWNfYW55X3QgY3VyLCBDJiwgOjpuZG5ib29zdDo6dHlwZTxSZWZUeXBlPiwgbXBsOjpmYWxzZV8gKQotewotICAgIHJldHVybiAqc3RhdGljX2FueV9jYXN0PE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgQzo6aXRlcmF0b3I+KCBjdXIgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8Y2xhc3MgUmVmVHlwZSx0eXBlbmFtZSBDPgotaW5saW5lIFJlZlR5cGUKLWRlcmVmKCBzdGF0aWNfYW55X3QgY3VyLCBDIGNvbnN0JiwgOjpuZG5ib29zdDo6dHlwZTxSZWZUeXBlPiwgbXBsOjp0cnVlXyApCi17Ci0gICAgcmV0dXJuICpzdGF0aWNfYW55X2Nhc3Q8TkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBDOjpjb25zdF9pdGVyYXRvcj4oIGN1ciApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgIE5ETkJPT1NUX1RFU1RfRk9SRUFDSCAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9GRV9BTlkgICAgICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6dW5pdF90ZXN0Ojpmb3JfZWFjaDo6c3RhdGljX2FueV90Ci0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfRkVfSVNfQ09OU1QoIENPTCApICAgICAgIDo6bmRuYm9vc3Q6OnVuaXRfdGVzdDo6Zm9yX2VhY2g6OmlzX2NvbnN0X2NvbGwoIENPTCApCi0KLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9GRV9CRUcoIENPTCApICAgICAgICAgICAgXAotICAgIDo6bmRuYm9vc3Q6OnVuaXRfdGVzdDo6Zm9yX2VhY2g6OmJlZ2luKCAgICBcCi0gICAgICAgIENPTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgTkROQk9PU1RfVEVTVF9GRV9JU19DT05TVCggQ09MICkgKSAgICAgXAotLyoqLwotCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfRkVfRU5EKCBDT0wgKSAgICAgICAgICAgIFwKLSAgICA6Om5kbmJvb3N0Ojp1bml0X3Rlc3Q6OmZvcl9lYWNoOjplbmQoICAgICAgXAotICAgICAgICBDT0wsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIE5ETkJPT1NUX1RFU1RfRkVfSVNfQ09OU1QoIENPTCApICkgICAgIFwKLS8qKi8KLQotI2RlZmluZSBORE5CT09TVF9URVNUX0ZFX0RPTkUoIENPTCApICAgICAgICAgICBcCi0gICAgOjpuZG5ib29zdDo6dW5pdF90ZXN0Ojpmb3JfZWFjaDo6ZG9uZSggICAgIFwKLSAgICAgICAgTkROQk9PU1RfVEVTVF9GRV9DVVJfVkFSLCAgICAgICAgICAgICAgXAotICAgICAgICBORE5CT09TVF9URVNUX0ZFX0VORF9WQVIsICAgICAgICAgICAgICBcCi0gICAgICAgIENPTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgTkROQk9PU1RfVEVTVF9GRV9JU19DT05TVCggQ09MICkgKSAgICAgXAotLyoqLwotCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfRkVfTkVYVCggQ09MICkgICAgICAgICAgIFwKLSAgICA6Om5kbmJvb3N0Ojp1bml0X3Rlc3Q6OmZvcl9lYWNoOjpuZXh0KCAgICAgXAotICAgICAgICBORE5CT09TVF9URVNUX0ZFX0NVUl9WQVIsICAgICAgICAgICAgICBcCi0gICAgICAgIENPTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgTkROQk9PU1RfVEVTVF9GRV9JU19DT05TVCggQ09MICkgKSAgICAgXAotLyoqLwotCi0jZGVmaW5lIE5ETkJPT1NUX0ZPUkVBQ0hfTk9PUChDT0wpICAgICAgICAgICAgIFwKLSAgICAoKHZvaWQpJihDT0wpKQotCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfRkVfREVSRUYoIENPTCwgUmVmVHlwZSApIFwKLSAgICA6Om5kbmJvb3N0Ojp1bml0X3Rlc3Q6OmZvcl9lYWNoOjpkZXJlZiggICAgXAotICAgICAgICBORE5CT09TVF9URVNUX0ZFX0NVUl9WQVIsICAgICAgICAgICAgICBcCi0gICAgICAgIENPTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgOjpuZG5ib29zdDo6dHlwZTxSZWZUeXBlID4oKSwgICAgICAgICAgXAotICAgICAgICBORE5CT09TVF9URVNUX0ZFX0lTX0NPTlNUKCBDT0wgKSApICAgICBcCi0vKiovCi0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKCBORE5CT09TVF9NU1ZDLCA9PSAxMzEwICkKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9MSU5FX05VTQotI2Vsc2UKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9MSU5FX05VTSAgICAgX19MSU5FX18KLSNlbmRpZgotCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfRkVfQ1VSX1ZBUiAgIE5ETkJPT1NUX0pPSU4oIF9mZV9jdXJfLCBORE5CT09TVF9URVNUX0xJTkVfTlVNICkKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9GRV9FTkRfVkFSICAgTkROQk9PU1RfSk9JTiggX2ZlX2VuZF8sIE5ETkJPT1NUX1RFU1RfTElORV9OVU0gKQotI2RlZmluZSBORE5CT09TVF9URVNUX0ZFX0NPTl9WQVIgICBORE5CT09TVF9KT0lOKCBfZmVfY29uXywgTkROQk9PU1RfVEVTVF9MSU5FX05VTSApCi0KLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9GT1JFQUNIKCBSZWZUeXBlLCB2YXIsIENPTCApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotaWYoIE5ETkJPT1NUX1RFU1RfRkVfQU5ZIE5ETkJPT1NUX1RFU1RfRkVfQ1VSX1ZBUiA9IE5ETkJPT1NUX1RFU1RfRkVfQkVHKCBDT0wgKSApIHt9IGVsc2UgICAgICAgICAgICBcCi1pZiggTkROQk9PU1RfVEVTVF9GRV9BTlkgTkROQk9PU1RfVEVTVF9GRV9FTkRfVkFSID0gTkROQk9PU1RfVEVTVF9GRV9FTkQoIENPTCApICkge30gZWxzZSAgICAgICAgICAgIFwKLWZvciggYm9vbCBORE5CT09TVF9URVNUX0ZFX0NPTl9WQVIgPSB0cnVlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgIE5ETkJPT1NUX1RFU1RfRkVfQ09OX1ZBUiAmJiAhTkROQk9PU1RfVEVTVF9GRV9ET05FKCBDT0wgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgTkROQk9PU1RfVEVTVF9GRV9DT05fVkFSID8gTkROQk9PU1RfVEVTVF9GRV9ORVhUKCBDT0wgKSA6IE5ETkJPT1NUX0ZPUkVBQ0hfTk9PUCggQ09MICkpICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGlmKCAoTkROQk9PU1RfVEVTVF9GRV9DT05fVkFSID0gZmFsc2UsIGZhbHNlKSApIHt9IGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgZm9yKCBSZWZUeXBlIHZhciA9IE5ETkJPT1NUX1RFU1RfRkVfREVSRUYoIENPTCwgUmVmVHlwZSApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICFORE5CT09TVF9URVNUX0ZFX0NPTl9WQVI7IE5ETkJPT1NUX1RFU1RfRkVfQ09OX1ZBUiA9IHRydWUgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLyoqLwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSBmb3JfZWFjaAotCi19IC8vIG5hbWVzcGFjZSB1bml0X3Rlc3QKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX0ZPUkVBQ0hfSFBQXzAyMTAwNUdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL2l0ZXJhdG9yL2lucHV0X2l0ZXJhdG9yX2ZhY2FkZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvaXRlcmF0b3IvaW5wdXRfaXRlcmF0b3JfZmFjYWRlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzc2M2ZjZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvaXRlcmF0b3IvaW5wdXRfaXRlcmF0b3JfZmFjYWRlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwOSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA0LTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNDkzMTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IElucHV0IGl0ZXJhdG9yIGZhY2FkZSAKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX0lOUFVUX0lURVJBVE9SX0ZBQ0FERV9IUFBfMDcxODk0R0VSCi0jZGVmaW5lIE5ETkJPT1NUX0lOUFVUX0lURVJBVE9SX0ZBQ0FERV9IUFBfMDcxODk0R0VSCi0KLS8vIEJvb3N0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvaXRlcmF0b3IvaXRlcmF0b3JfZmFjYWRlLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIHVuaXRfdGVzdCB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICBpbnB1dF9pdGVyYXRvcl9jb3JlX2FjY2VzcyAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotY2xhc3MgaW5wdXRfaXRlcmF0b3JfY29yZV9hY2Nlc3MKLXsKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX01FTUJFUl9URU1QTEFURV9GUklFTkRTKSB8fCBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTUxKSkKLXB1YmxpYzoKLSNlbHNlCi0gICAgdGVtcGxhdGUgPGNsYXNzIEksIGNsYXNzIFYsIGNsYXNzIFIsIGNsYXNzIFRDPiBmcmllbmQgY2xhc3MgaW5wdXRfaXRlcmF0b3JfZmFjYWRlOwotI2VuZGlmCi0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgRmFjYWRlPgotICAgIHN0YXRpYyBib29sIGdldCggRmFjYWRlJiBmICkKLSAgICB7Ci0gICAgICAgIHJldHVybiBmLmdldCgpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICAvLyBvYmplY3RzIG9mIHRoaXMgY2xhc3MgYXJlIHVzZWxlc3MKLSAgICBpbnB1dF9pdGVyYXRvcl9jb3JlX2FjY2VzcygpOyAvL3VuZGVmaW5lZAotfTsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgaW5wdXRfaXRlcmF0b3JfZmFjYWRlICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBEZXJpdmVkLAotICAgICAgICAgdHlwZW5hbWUgVmFsdWVUeXBlLAotICAgICAgICAgdHlwZW5hbWUgUmVmZXJlbmNlID0gVmFsdWVUeXBlIGNvbnN0JiwKLSAgICAgICAgIHR5cGVuYW1lIFRyYXZlcnNhbCA9IHNpbmdsZV9wYXNzX3RyYXZlcnNhbF90YWc+Ci1jbGFzcyBpbnB1dF9pdGVyYXRvcl9mYWNhZGUgOiBwdWJsaWMgaXRlcmF0b3JfZmFjYWRlPERlcml2ZWQsVmFsdWVUeXBlLFRyYXZlcnNhbCxSZWZlcmVuY2U+Ci17Ci1wdWJsaWM6Ci0gICAgLy8gQ29uc3RydWN0b3IKLSAgICBpbnB1dF9pdGVyYXRvcl9mYWNhZGUoKSA6IG1fdmFsaWQoIGZhbHNlICksIG1fdmFsdWUoKSB7fQotCi1wcm90ZWN0ZWQ6IC8vIHByb3ZpZGUgYWNjZXNzIHRvIHRoZSBEZXJpdmVkCi0gICAgdm9pZCAgICAgICAgICAgICAgICBpbml0KCkKLSAgICB7Ci0gICAgICAgIG1fdmFsaWQgPSB0cnVlOwotICAgICAgICBpbmNyZW1lbnQoKTsKLSAgICB9Ci0KLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICBtdXRhYmxlIGJvb2wgICAgICAgIG1fdmFsaWQ7Ci0gICAgVmFsdWVUeXBlICAgICAgICAgICBtX3ZhbHVlOwotCi1wcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBuZG5ib29zdDo6aXRlcmF0b3JfY29yZV9hY2Nlc3M7Ci0KLSAgICAvLyBpdGVyYXRvciBmYWNhZGUgaW50ZXJmYWNlIGltcGxlbWVudGF0aW9uCi0gICAgdm9pZCAgICAgICAgICAgICAgICBpbmNyZW1lbnQoKQotICAgIHsKLSAgICAgICAgLy8gd2UgbWFrZSBwb3N0LWVuZCBpbmNyZW1lbnRhdGlvbiBpbmRlZmluZXRseSBzYWZlIAotICAgICAgICBpZiggbV92YWxpZCApCi0gICAgICAgICAgICBtX3ZhbGlkID0gaW5wdXRfaXRlcmF0b3JfY29yZV9hY2Nlc3M6OmdldCggKnN0YXRpY19jYXN0PERlcml2ZWQqPih0aGlzKSApOwotICAgIH0KLSAgICBSZWZlcmVuY2UgICAgICAgICAgIGRlcmVmZXJlbmNlKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3ZhbHVlOwotICAgIH0KLQotICAgIC8vIGl0ZXJhdG9yIGZhY2FkZSBpbnRlcmZhY2UgaW1wbGVtZW50YXRpb24KLSAgICBib29sICAgICAgICAgICAgICAgIGVxdWFsKCBpbnB1dF9pdGVyYXRvcl9mYWNhZGUgY29uc3QmIHJocyApIGNvbnN0Ci0gICAgewotICAgICAgICAvLyB0d28gaW52YWxpZCBpdGVyYXRvciBlcXVhbHMsIGluZXF1YWwgb3RoZXJ3aXNlCi0gICAgICAgIHJldHVybiAhbV92YWxpZCAmJiAhcmhzLm1fdmFsaWQ7Ci0gICAgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgdW5pdF90ZXN0Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfSU5QVVRfSVRFUkFUT1JfRkFDQURFX0hQUF8wNzE4OTRHRVIKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL2l0ZXJhdG9yL3Rva2VuX2l0ZXJhdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9pdGVyYXRvci90b2tlbl9pdGVyYXRvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmYzk5ZmUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL2l0ZXJhdG9yL3Rva2VuX2l0ZXJhdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQxOCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA0LTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTQ2MzMgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IHRva2VuIGl0ZXJhdG9yIGZvciBzdHJpbmcgYW5kIHJhbmdlIHRva2VuaXphdGlvbgotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVE9LRU5fSVRFUkFUT1JfSFBQXzA3MTg5NEdFUgotI2RlZmluZSBORE5CT09TVF9UT0tFTl9JVEVSQVRPUl9IUFBfMDcxODk0R0VSCi0KLS8vIEJvb3N0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9pdGVyYXRvci9pdGVyYXRvcl9jYXRlZ29yaWVzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pdGVyYXRvci9pdGVyYXRvcl90cmFpdHMuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9pdGVyYXRvci9pbnB1dF9pdGVyYXRvcl9mYWNhZGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvYmFzaWNfY3N0cmluZy9iYXNpY19jc3RyaW5nLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL25hbWVkX3BhcmFtcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9mb3JlYWNoLmhwcD4KLQotLy8gU1RMCi0jaW5jbHVkZSA8aW9zZndkPgotI2luY2x1ZGUgPGNjdHlwZT4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL3N1cHByZXNzX3dhcm5pbmdzLmhwcD4KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2lmZGVmIE5ETkJPT1NUX05PX1NURENfTkFNRVNQQUNFCi1uYW1lc3BhY2Ugc3RkeyB1c2luZyA6OmlzcHVuY3Q7IHVzaW5nIDo6aXNzcGFjZTsgfQotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSB1bml0X3Rlc3QgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICB0aV9kZWxpbWV0ZXJfdHlwZSAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWVudW0gdGlfZGVsaW1ldGVyX3R5cGUgeyAKLSAgICBkdF9jaGFyLCAgICAgICAgLy8gY2hhcmFjdGVyIGlzIGRlbGltZXRlciBpZiBpdCBhbW9uZyBleHBsaWNpdCBsaXN0IG9mIHNvbWUgY2hhcmFjdGVycwotICAgIGR0X2lzcHVuY3QsICAgICAvLyBjaGFyYWN0ZXIgaXMgZGVsaW1ldGVyIGlmIGl0IHNhdGlzZmllcyBpc3B1bmN0IGZ1bmN0b3IKLSAgICBkdF9pc3NwYWNlLCAgICAgLy8gY2hhcmFjdGVyIGlzIGRlbGltZXRlciBpZiBpdCBzYXRpc2ZpZXMgaXNzcGFjZSBmdW5jdG9yCi0gICAgZHRfbm9uZSAgICAgICAgIC8vIG5vIGNoYXJhY3RlciBpcyBkZWxpbWV0ZXIKLX07Ci0KLW5hbWVzcGFjZSB1dF9kZXRhaWwgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgZGVmYXVsdF9jaGFyX2NvbXBhcmUgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUPgotY2xhc3MgZGVmYXVsdF9jaGFyX2NvbXBhcmUgewotcHVibGljOgotICAgIGJvb2wgb3BlcmF0b3IoKSggQ2hhclQgYzEsIENoYXJUIGMyICkKLSAgICB7Ci0jaWZkZWYgTkROQk9PU1RfQ0xBU1NJQ19JT1NUUkVBTVMKLSAgICAgICAgcmV0dXJuIHN0ZDo6c3RyaW5nX2NoYXJfdHJhaXRzPENoYXJUPjo6ZXEoIGMxLCBjMiApOwotI2Vsc2UKLSAgICAgICAgcmV0dXJuIHN0ZDo6Y2hhcl90cmFpdHM8Q2hhclQ+OjplcSggYzEsIGMyICk7Ci0jZW5kaWYKLSAgICB9Ci19OwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgIGRlbGltX3BvbGljeSAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJULHR5cGVuYW1lIENoYXJDb21wYXJlPgotY2xhc3MgZGVsaW1fcG9saWN5IHsKLSAgICB0eXBlZGVmIGJhc2ljX2NzdHJpbmc8Q2hhclQgY29uc3Q+IGNzdHJpbmc7Ci1wdWJsaWM6Ci0gICAgLy8gQ29uc3RydWN0b3IKLSAgICBleHBsaWNpdCAgICBkZWxpbV9wb2xpY3koIHRpX2RlbGltZXRlcl90eXBlIHQgPSBkdF9jaGFyLCBjc3RyaW5nIGQgPSBjc3RyaW5nKCkgKQotICAgIDogbV90eXBlKCB0ICkKLSAgICB7Ci0gICAgICAgIHNldF9kZWxpbWV0ZXJzKCBkICk7Ci0gICAgfQotCi0gICAgdm9pZCAgICAgICAgc2V0X2RlbGltZXRlcnMoIHRpX2RlbGltZXRlcl90eXBlIHQgKSB7IG1fdHlwZSA9IHQ7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBTcmM+Ci0gICAgdm9pZCAgICAgICAgc2V0X2RlbGltZXRlcnMoIFNyYyBkICkKLSAgICB7Ci0gICAgICAgIG5mcDo6b3B0aW9uYWxseV9hc3NpZ24oIG1fZGVsaW1ldGVycywgZCApOwotICAgICAgICAKLSAgICAgICAgaWYoICFtX2RlbGltZXRlcnMuaXNfZW1wdHkoKSApCi0gICAgICAgICAgICBtX3R5cGUgPSBkdF9jaGFyOwotICAgIH0KLQotICAgIGJvb2wgICAgICAgIG9wZXJhdG9yKCkoIENoYXJUIGMgKQotICAgIHsKLSAgICAgICAgc3dpdGNoKCBtX3R5cGUgKSB7Ci0gICAgICAgIGNhc2UgZHRfY2hhcjogewotICAgICAgICAgICAgTkROQk9PU1RfVEVTVF9GT1JFQUNIKCBDaGFyVCwgZGVsaW0sIG1fZGVsaW1ldGVycyApCi0gICAgICAgICAgICAgICAgaWYoIENoYXJDb21wYXJlKCkoIGRlbGltLCBjICkgKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgZHRfaXNwdW5jdDoKLSAgICAgICAgICAgIHJldHVybiAoc3RkOjppc3B1bmN0KSggYyApICE9IDA7Ci0gICAgICAgIGNhc2UgZHRfaXNzcGFjZToKLSAgICAgICAgICAgIHJldHVybiAoc3RkOjppc3NwYWNlKSggYyApICE9IDA7Ci0gICAgICAgIGNhc2UgZHRfbm9uZToKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgY3N0cmluZyAgICAgICAgICAgICBtX2RlbGltZXRlcnM7Ci0gICAgdGlfZGVsaW1ldGVyX3R5cGUgICBtX3R5cGU7Ci19OwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgIHRva2VuX2Fzc2lnbmVyICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFRyYXZlcnNhbFRhZz4KLXN0cnVjdCB0b2tlbl9hc3NpZ25lciB7Ci0jaWYgTkROQk9PU1RfV09SS0FST1VORCggTkROQk9PU1RfRElOS1VNV0FSRV9TVERMSUIsIDwgMzA2ICkKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVyYXRvciwgdHlwZW5hbWUgQywgdHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgdm9pZCBhc3NpZ24oIEl0ZXJhdG9yIGIsIEl0ZXJhdG9yIGUsIHN0ZDo6YmFzaWNfc3RyaW5nPEMsVD4mIHQgKQotICAgIHsgZm9yKCA7IGIgIT0gZTsgKytiICkgdCArPSAqYjsgfQotICAgIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEl0ZXJhdG9yLCB0eXBlbmFtZSBDPgotICAgIHN0YXRpYyB2b2lkIGFzc2lnbiggSXRlcmF0b3IgYiwgSXRlcmF0b3IgZSwgYmFzaWNfY3N0cmluZzxDPiYgdCApICB7IHQuYXNzaWduKCBiLCBlICk7IH0KLSNlbHNlCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgSXRlcmF0b3IsIHR5cGVuYW1lIFRva2VuPgotICAgIHN0YXRpYyB2b2lkIGFzc2lnbiggSXRlcmF0b3IgYiwgSXRlcmF0b3IgZSwgVG9rZW4mIHQgKSAgeyB0LmFzc2lnbiggYiwgZSApOyB9Ci0jZW5kaWYKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVyYXRvciwgdHlwZW5hbWUgVG9rZW4+Ci0gICAgc3RhdGljIHZvaWQgYXBwZW5kX21vdmUoIEl0ZXJhdG9yJiBiLCBUb2tlbiYgKSAgICAgICAgICB7ICsrYjsgfQotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8Pgotc3RydWN0IHRva2VuX2Fzc2lnbmVyPHNpbmdsZV9wYXNzX3RyYXZlcnNhbF90YWc+IHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJdGVyYXRvciwgdHlwZW5hbWUgVG9rZW4+Ci0gICAgc3RhdGljIHZvaWQgYXNzaWduKCBJdGVyYXRvciBiLCBJdGVyYXRvciBlLCBUb2tlbiYgdCApICB7fQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgSXRlcmF0b3IsIHR5cGVuYW1lIFRva2VuPgotICAgIHN0YXRpYyB2b2lkIGFwcGVuZF9tb3ZlKCBJdGVyYXRvciYgYiwgVG9rZW4mIHQgKSAgICAgICAgeyB0ICs9ICpiOyArK2I7IH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIHV0X2RldGFpbAotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgICBtb2RpZmllcnMgICAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLW5hbWVzcGFjZSB7Ci1uZnA6OmtleXdvcmQ8c3RydWN0IGRyb3BwZWRfZGVsaW1ldGVyc190ID4gICAgICAgICAgIGRyb3BwZWRfZGVsaW1ldGVyczsKLW5mcDo6a2V5d29yZDxzdHJ1Y3Qga2VwdF9kZWxpbWV0ZXJzX3QgPiAgICAgICAgICAgICAga2VwdF9kZWxpbWV0ZXJzOwotbmZwOjp0eXBlZF9rZXl3b3JkPGJvb2wsc3RydWN0IGtlZXBfZW1wdHlfdG9rZW5zX3QgPiBrZWVwX2VtcHR5X3Rva2VuczsKLW5mcDo6dHlwZWRfa2V5d29yZDxzdGQ6OnNpemVfdCxzdHJ1Y3QgbWF4X3Rva2Vuc190ID4gbWF4X3Rva2VuczsKLX0KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgIHRva2VuX2l0ZXJhdG9yX2Jhc2UgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBEZXJpdmVkLAotICAgICAgICAgdHlwZW5hbWUgQ2hhclQsCi0gICAgICAgICB0eXBlbmFtZSBDaGFyQ29tcGFyZSAgID0gdXRfZGV0YWlsOjpkZWZhdWx0X2NoYXJfY29tcGFyZTxDaGFyVD4sCi0gICAgICAgICB0eXBlbmFtZSBWYWx1ZVR5cGUgICAgID0gYmFzaWNfY3N0cmluZzxDaGFyVCBjb25zdD4sCi0gICAgICAgICB0eXBlbmFtZSBSZWZlcmVuY2UgICAgID0gYmFzaWNfY3N0cmluZzxDaGFyVCBjb25zdD4sCi0gICAgICAgICB0eXBlbmFtZSBUcmF2ZXJzYWwgICAgID0gZm9yd2FyZF90cmF2ZXJzYWxfdGFnPgotY2xhc3MgdG9rZW5faXRlcmF0b3JfYmFzZQotOiBwdWJsaWMgaW5wdXRfaXRlcmF0b3JfZmFjYWRlPERlcml2ZWQsVmFsdWVUeXBlLFJlZmVyZW5jZSxUcmF2ZXJzYWw+IHsKLSAgICB0eXBlZGVmIGJhc2ljX2NzdHJpbmc8Q2hhclQgY29uc3Q+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3RyaW5nOwotICAgIHR5cGVkZWYgdXRfZGV0YWlsOjpkZWxpbV9wb2xpY3k8Q2hhclQsQ2hhckNvbXBhcmU+ICAgICAgICAgICAgICAgICAgICAgIGRlbGltX3BvbGljeTsKLSAgICB0eXBlZGVmIGlucHV0X2l0ZXJhdG9yX2ZhY2FkZTxEZXJpdmVkLFZhbHVlVHlwZSxSZWZlcmVuY2UsVHJhdmVyc2FsPiAgICBiYXNlOwotCi1wcm90ZWN0ZWQ6Ci0gICAgLy8gQ29uc3RydWN0b3IKLSAgICBleHBsaWNpdCAgICB0b2tlbl9pdGVyYXRvcl9iYXNlKCkKLSAgICA6IG1faXNfZHJvcHBlZCggZHRfaXNzcGFjZSApCi0gICAgLCBtX2lzX2tlcHQoIGR0X2lzcHVuY3QgKQotICAgICwgbV9rZWVwX2VtcHR5X3Rva2VucyggZmFsc2UgKQotICAgICwgbV90b2tlbnNfbGVmdCggc3RhdGljX2Nhc3Q8c3RkOjpzaXplX3Q+KC0xKSApCi0gICAgLCBtX3Rva2VuX3Byb2R1Y2VkKCBmYWxzZSApCi0gICAgewotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1vZGlmaWVyPgotICAgIHZvaWQKLSAgICBhcHBseV9tb2RpZmllciggTW9kaWZpZXIgY29uc3QmIG0gKQotICAgIHsKLSAgICAgICAgaWYoIG0uaGFzKCBkcm9wcGVkX2RlbGltZXRlcnMgKSApCi0gICAgICAgICAgICBtX2lzX2Ryb3BwZWQuc2V0X2RlbGltZXRlcnMoIG1bZHJvcHBlZF9kZWxpbWV0ZXJzXSApOwotCi0gICAgICAgIGlmKCBtLmhhcygga2VwdF9kZWxpbWV0ZXJzICkgKQotICAgICAgICAgICAgbV9pc19rZXB0LnNldF9kZWxpbWV0ZXJzKCBtW2tlcHRfZGVsaW1ldGVyc10gKTsKLQotICAgICAgICBpZiggbS5oYXMoIGtlZXBfZW1wdHlfdG9rZW5zICkgKQotICAgICAgICAgICAgbV9rZWVwX2VtcHR5X3Rva2VucyA9IHRydWU7Ci0KLSAgICAgICAgbmZwOjpvcHRpb25hbGx5X2Fzc2lnbiggbV90b2tlbnNfbGVmdCwgbSwgbWF4X3Rva2VucyApOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEl0ZXI+IAotICAgIGJvb2wgICAgICAgICAgICAgICAgICAgIGdldCggSXRlciYgYmVnaW4sIEl0ZXIgZW5kICkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdXRfZGV0YWlsOjp0b2tlbl9hc3NpZ25lcjxORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGl0ZXJhdG9yX3RyYXZlcnNhbDxJdGVyPjo6dHlwZT4gQXNzaWduZXI7Ci0gICAgICAgIEl0ZXIgY2hlY2tfcG9pbnQ7Ci0KLSAgICAgICAgdGhpcy0+bV92YWx1ZS5jbGVhcigpOwotCi0gICAgICAgIGlmKCAhbV9rZWVwX2VtcHR5X3Rva2VucyApIHsKLSAgICAgICAgICAgIHdoaWxlKCBiZWdpbiAhPSBlbmQgJiYgbV9pc19kcm9wcGVkKCAqYmVnaW4gKSApCi0gICAgICAgICAgICAgICAgKytiZWdpbjsKLQotICAgICAgICAgICAgaWYoIGJlZ2luID09IGVuZCApCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgICAgICBjaGVja19wb2ludCA9IGJlZ2luOwotCi0gICAgICAgICAgICBpZiggbV90b2tlbnNfbGVmdCA9PSAxICkKLSAgICAgICAgICAgICAgICB3aGlsZSggYmVnaW4gIT0gZW5kICkKLSAgICAgICAgICAgICAgICAgICAgQXNzaWduZXI6OmFwcGVuZF9tb3ZlKCBiZWdpbiwgdGhpcy0+bV92YWx1ZSApOwotICAgICAgICAgICAgZWxzZSBpZiggbV9pc19rZXB0KCAqYmVnaW4gKSApCi0gICAgICAgICAgICAgICAgQXNzaWduZXI6OmFwcGVuZF9tb3ZlKCBiZWdpbiwgdGhpcy0+bV92YWx1ZSApOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHdoaWxlKCBiZWdpbiAhPSBlbmQgJiYgIW1faXNfZHJvcHBlZCggKmJlZ2luICkgJiYgIW1faXNfa2VwdCggKmJlZ2luICkgKQotICAgICAgICAgICAgICAgICAgICBBc3NpZ25lcjo6YXBwZW5kX21vdmUoIGJlZ2luLCB0aGlzLT5tX3ZhbHVlICk7Ci0KLSAgICAgICAgICAgIC0tbV90b2tlbnNfbGVmdDsKLSAgICAgICAgfSAKLSAgICAgICAgZWxzZSB7IC8vIG1fa2VlcF9lbXB0eV90b2tlbnMgaXMgdHJ1ZQotICAgICAgICAgICAgY2hlY2tfcG9pbnQgPSBiZWdpbjsKLQotICAgICAgICAgICAgaWYoIGJlZ2luID09IGVuZCApIHsKLSAgICAgICAgICAgICAgICBpZiggbV90b2tlbl9wcm9kdWNlZCApIAotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgICAgICAgICBtX3Rva2VuX3Byb2R1Y2VkID0gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmKCBtX2lzX2tlcHQoICpiZWdpbiApICkgewotICAgICAgICAgICAgICAgIGlmKCBtX3Rva2VuX3Byb2R1Y2VkICkgCi0gICAgICAgICAgICAgICAgICAgIEFzc2lnbmVyOjphcHBlbmRfbW92ZSggYmVnaW4sIHRoaXMtPm1fdmFsdWUgKTsKLQotICAgICAgICAgICAgICAgIG1fdG9rZW5fcHJvZHVjZWQgPSAhbV90b2tlbl9wcm9kdWNlZDsKLSAgICAgICAgICAgIH0gCi0gICAgICAgICAgICBlbHNlIGlmKCAhbV90b2tlbl9wcm9kdWNlZCAmJiBtX2lzX2Ryb3BwZWQoICpiZWdpbiApICkKLSAgICAgICAgICAgICAgICBtX3Rva2VuX3Byb2R1Y2VkID0gdHJ1ZTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIGlmKCBtX2lzX2Ryb3BwZWQoICpiZWdpbiApICkKLSAgICAgICAgICAgICAgICAgICAgY2hlY2tfcG9pbnQgPSArK2JlZ2luOwotCi0gICAgICAgICAgICAgICAgd2hpbGUoIGJlZ2luICE9IGVuZCAmJiAhbV9pc19kcm9wcGVkKCAqYmVnaW4gKSAmJiAhbV9pc19rZXB0KCAqYmVnaW4gKSApCi0gICAgICAgICAgICAgICAgICAgIEFzc2lnbmVyOjphcHBlbmRfbW92ZSggYmVnaW4sIHRoaXMtPm1fdmFsdWUgKTsKLQotICAgICAgICAgICAgICAgIG1fdG9rZW5fcHJvZHVjZWQgPSB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgQXNzaWduZXI6OmFzc2lnbiggY2hlY2tfcG9pbnQsIGJlZ2luLCB0aGlzLT5tX3ZhbHVlICk7Ci0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIC8vIERhdGEgbWVtYmVycwotICAgIGRlbGltX3BvbGljeSAgICAgICAgICAgIG1faXNfZHJvcHBlZDsKLSAgICBkZWxpbV9wb2xpY3kgICAgICAgICAgICBtX2lzX2tlcHQ7Ci0gICAgYm9vbCAgICAgICAgICAgICAgICAgICAgbV9rZWVwX2VtcHR5X3Rva2VuczsKLSAgICBzdGQ6OnNpemVfdCAgICAgICAgICAgICBtX3Rva2Vuc19sZWZ0OwotICAgIGJvb2wgICAgICAgICAgICAgICAgICAgIG1fdG9rZW5fcHJvZHVjZWQ7Ci19OwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgYmFzaWNfc3RyaW5nX3Rva2VuX2l0ZXJhdG9yICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJULAotICAgICAgICAgdHlwZW5hbWUgQ2hhckNvbXBhcmUgPSB1dF9kZXRhaWw6OmRlZmF1bHRfY2hhcl9jb21wYXJlPENoYXJUPiA+Ci1jbGFzcyBiYXNpY19zdHJpbmdfdG9rZW5faXRlcmF0b3IKLTogcHVibGljIHRva2VuX2l0ZXJhdG9yX2Jhc2U8YmFzaWNfc3RyaW5nX3Rva2VuX2l0ZXJhdG9yPENoYXJULENoYXJDb21wYXJlPixDaGFyVCxDaGFyQ29tcGFyZT4gewotICAgIHR5cGVkZWYgYmFzaWNfY3N0cmluZzxDaGFyVCBjb25zdD4gY3N0cmluZzsKLSAgICB0eXBlZGVmIHRva2VuX2l0ZXJhdG9yX2Jhc2U8YmFzaWNfc3RyaW5nX3Rva2VuX2l0ZXJhdG9yPENoYXJULENoYXJDb21wYXJlPixDaGFyVCxDaGFyQ29tcGFyZT4gYmFzZTsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCAgICBiYXNpY19zdHJpbmdfdG9rZW5faXRlcmF0b3IoKSB7fQotICAgIGV4cGxpY2l0ICAgIGJhc2ljX3N0cmluZ190b2tlbl9pdGVyYXRvciggY3N0cmluZyBzcmMgKQotICAgIDogbV9zcmMoIHNyYyApCi0gICAgewotICAgICAgICB0aGlzLT5pbml0KCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgU3JjLCB0eXBlbmFtZSBNb2RpZmllcj4KLSAgICBiYXNpY19zdHJpbmdfdG9rZW5faXRlcmF0b3IoIFNyYyBzcmMsIE1vZGlmaWVyIGNvbnN0JiBtICkKLSAgICA6IG1fc3JjKCBzcmMgKQotICAgIHsKLSAgICAgICAgdGhpcy0+YXBwbHlfbW9kaWZpZXIoIG0gKTsKLQotICAgICAgICB0aGlzLT5pbml0KCk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBpbnB1dF9pdGVyYXRvcl9jb3JlX2FjY2VzczsKLQotICAgIC8vIGlucHV0IGl0ZXJhdG9yIGltcGxlbWVudGF0aW9uCi0gICAgYm9vbCAgICAgICAgZ2V0KCkKLSAgICB7Ci0gICAgICAgIHR5cGVuYW1lIGNzdHJpbmc6Oml0ZXJhdG9yIGJlZ2luID0gbV9zcmMuYmVnaW4oKTsKLSAgICAgICAgYm9vbCByZXMgPSBiYXNlOjpnZXQoIGJlZ2luLCBtX3NyYy5lbmQoKSApOwotCi0gICAgICAgIG1fc3JjLmFzc2lnbiggYmVnaW4sIG1fc3JjLmVuZCgpICk7Ci0KLSAgICAgICAgcmV0dXJuIHJlczsKLSAgICB9Ci0KLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICBjc3RyaW5nICAgICBtX3NyYzsKLX07Ci0KLXR5cGVkZWYgYmFzaWNfc3RyaW5nX3Rva2VuX2l0ZXJhdG9yPGNoYXI+ICAgICAgIHN0cmluZ190b2tlbl9pdGVyYXRvcjsKLXR5cGVkZWYgYmFzaWNfc3RyaW5nX3Rva2VuX2l0ZXJhdG9yPHdjaGFyX3Q+ICAgIHdzdHJpbmdfdG9rZW5faXRlcmF0b3I7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgcmFuZ2VfdG9rZW5faXRlcmF0b3IgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgSXRlciwKLSAgICAgICAgIHR5cGVuYW1lIENoYXJDb21wYXJlID0gdXRfZGV0YWlsOjpkZWZhdWx0X2NoYXJfY29tcGFyZTxORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGl0ZXJhdG9yX3ZhbHVlPEl0ZXI+Ojp0eXBlPiwKLSAgICAgICAgIHR5cGVuYW1lIFZhbHVlVHlwZSAgID0gc3RkOjpiYXNpY19zdHJpbmc8TkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBpdGVyYXRvcl92YWx1ZTxJdGVyPjo6dHlwZT4sCi0gICAgICAgICB0eXBlbmFtZSBSZWZlcmVuY2UgICA9IFZhbHVlVHlwZSBjb25zdCY+Ci1jbGFzcyByYW5nZV90b2tlbl9pdGVyYXRvcgotOiBwdWJsaWMgdG9rZW5faXRlcmF0b3JfYmFzZTxyYW5nZV90b2tlbl9pdGVyYXRvcjxJdGVyLENoYXJDb21wYXJlLFZhbHVlVHlwZSxSZWZlcmVuY2U+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBpdGVyYXRvcl92YWx1ZTxJdGVyPjo6dHlwZSxDaGFyQ29tcGFyZSxWYWx1ZVR5cGUsUmVmZXJlbmNlPiB7Ci0gICAgdHlwZWRlZiBiYXNpY19jc3RyaW5nPHR5cGVuYW1lIFZhbHVlVHlwZTo6dmFsdWVfdHlwZT4gY3N0cmluZzsKLSAgICB0eXBlZGVmIHRva2VuX2l0ZXJhdG9yX2Jhc2U8cmFuZ2VfdG9rZW5faXRlcmF0b3I8SXRlcixDaGFyQ29tcGFyZSxWYWx1ZVR5cGUsUmVmZXJlbmNlPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgaXRlcmF0b3JfdmFsdWU8SXRlcj46OnR5cGUsQ2hhckNvbXBhcmUsVmFsdWVUeXBlLFJlZmVyZW5jZT4gYmFzZTsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCAgICByYW5nZV90b2tlbl9pdGVyYXRvcigpIHt9Ci0gICAgZXhwbGljaXQgICAgcmFuZ2VfdG9rZW5faXRlcmF0b3IoIEl0ZXIgYmVnaW4sIEl0ZXIgZW5kID0gSXRlcigpICkKLSAgICA6IG1fYmVnaW4oIGJlZ2luICksIG1fZW5kKCBlbmQgKQotICAgIHsKLSAgICAgICAgdGhpcy0+aW5pdCgpOwotICAgIH0KLSAgICByYW5nZV90b2tlbl9pdGVyYXRvciggcmFuZ2VfdG9rZW5faXRlcmF0b3IgY29uc3QmIHJocyApCi0gICAgOiBiYXNlKCByaHMgKQotICAgIHsKLSAgICAgICAgaWYoIHRoaXMtPm1fdmFsaWQgKSB7Ci0gICAgICAgICAgICBtX2JlZ2luID0gcmhzLm1fYmVnaW47Ci0gICAgICAgICAgICBtX2VuZCAgID0gcmhzLm1fZW5kOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgTW9kaWZpZXI+Ci0gICAgcmFuZ2VfdG9rZW5faXRlcmF0b3IoIEl0ZXIgYmVnaW4sIEl0ZXIgZW5kLCBNb2RpZmllciBjb25zdCYgbSApCi0gICAgOiBtX2JlZ2luKCBiZWdpbiApLCBtX2VuZCggZW5kICkKLSAgICB7Ci0gICAgICAgIHRoaXMtPmFwcGx5X21vZGlmaWVyKCBtICk7Ci0KLSAgICAgICAgdGhpcy0+aW5pdCgpOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgaW5wdXRfaXRlcmF0b3JfY29yZV9hY2Nlc3M7Ci0KLSAgICAvLyBpbnB1dCBpdGVyYXRvciBpbXBsZW1lbnRhdGlvbgotICAgIGJvb2wgICAgICAgIGdldCgpCi0gICAgewotICAgICAgICByZXR1cm4gYmFzZTo6Z2V0KCBtX2JlZ2luLCBtX2VuZCApOwotICAgIH0KLQotICAgIC8vIERhdGEgbWVtYmVycwotICAgIEl0ZXIgbV9iZWdpbjsKLSAgICBJdGVyIG1fZW5kOwotfTsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgbWFrZV9yYW5nZV90b2tlbl9pdGVyYXRvciAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBJdGVyPgotaW5saW5lIHJhbmdlX3Rva2VuX2l0ZXJhdG9yPEl0ZXI+Ci1tYWtlX3JhbmdlX3Rva2VuX2l0ZXJhdG9yKCBJdGVyIGJlZ2luLCBJdGVyIGVuZCA9IEl0ZXIoKSApCi17Ci0gICAgcmV0dXJuIHJhbmdlX3Rva2VuX2l0ZXJhdG9yPEl0ZXI+KCBiZWdpbiwgZW5kICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIEl0ZXIsdHlwZW5hbWUgTW9kaWZpZXI+Ci1pbmxpbmUgcmFuZ2VfdG9rZW5faXRlcmF0b3I8SXRlcj4KLW1ha2VfcmFuZ2VfdG9rZW5faXRlcmF0b3IoIEl0ZXIgYmVnaW4sIEl0ZXIgZW5kLCBNb2RpZmllciBjb25zdCYgbSApCi17Ci0gICAgcmV0dXJuIHJhbmdlX3Rva2VuX2l0ZXJhdG9yPEl0ZXI+KCBiZWdpbiwgZW5kLCBtICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIHVuaXRfdGVzdAotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvZW5hYmxlX3dhcm5pbmdzLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RPS0VOX0lURVJBVE9SX0hQUF8wNzE4OTRHRVIKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL2xhenlfb3N0cmVhbS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvbGF6eV9vc3RyZWFtLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGEzZmEyMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvbGF6eV9vc3RyZWFtLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExNCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDQ5MzEyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBjb250YWlucyBkZWZpbml0aW9uIGZvciBhbGwgdGVzdCB0b29scyBpbiB0ZXN0IHRvb2xib3gKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfTEFaWV9PU1RSRUFNX0hQUF8wNzA3MDhHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9MQVpZX09TVFJFQU1fSFBQXzA3MDcwOEdFUgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvY29uZmlnLmhwcD4KLQotLy8gU1RMCi0jaW5jbHVkZSA8aW9zZndkPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvc3VwcHJlc3Nfd2FybmluZ3MuaHBwPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgICBsYXp5X29zdHJlYW0gICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSB1bml0X3Rlc3QgewotCi1jbGFzcyBsYXp5X29zdHJlYW0gewotcHVibGljOgotICAgIHN0YXRpYyBsYXp5X29zdHJlYW0mICAgIGluc3RhbmNlKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBzdGF0aWMgbGF6eV9vc3RyZWFtIGluc3Q7IHJldHVybiBpbnN0OyB9Ci0KLSAgICBmcmllbmQgc3RkOjpvc3RyZWFtJiAgICBvcGVyYXRvcjw8KCBzdGQ6Om9zdHJlYW0mIG9zdHIsIGxhenlfb3N0cmVhbSBjb25zdCYgbyApIHsgcmV0dXJuIG8oIG9zdHIgKTsgfQotCi0gICAgLy8gYWNjZXNzIG1ldGhvZAotICAgIGJvb2wgICAgICAgICAgICAgICAgICAgIGVtcHR5KCkgY29uc3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyByZXR1cm4gbV9lbXB0eTsgfQotCi0gICAgLy8gYWN0dWFsIHByaW50aW5nIGludGVyZmFjZTsgdG8gYmUgYWNjZXNzZWQgb25seSBieSB0aGlzIGNsYXNzIGFuZCBjaGlsZHJlbgotICAgIHZpcnR1YWwgc3RkOjpvc3RyZWFtJiAgIG9wZXJhdG9yKCkoIHN0ZDo6b3N0cmVhbSYgb3N0ciApIGNvbnN0ICAgICAgICAgICAgICAgICAgeyByZXR1cm4gb3N0cjsgfQotcHJvdGVjdGVkOgotICAgIGV4cGxpY2l0ICAgICAgICAgICAgICAgIGxhenlfb3N0cmVhbSggYm9vbCBlbXB0eSA9IHRydWUgKSA6IG1fZW1wdHkoIGVtcHR5ICkgICAge30KLQotICAgIC8vIHByb3RlY3RlZCBkZXN0cnVjdG9yIHRvIG1ha2Ugc3VyZSByaWdodCBvbmUgaXMgY2FsbGVkCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU4MikpCi1wdWJsaWM6Ci0jZW5kaWYKLSAgICBORE5CT09TVF9URVNUX1BST1RFQ1RFRF9WSVJUVUFMIH5sYXp5X29zdHJlYW0oKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt9Ci0KLXByaXZhdGU6Ci0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgYm9vbCAgICAgICAgICAgICAgICAgICAgbV9lbXB0eTsKLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1jbGFzcyBsYXp5X29zdHJlYW1faW1wbCA6IHB1YmxpYyBsYXp5X29zdHJlYW0gewotcHVibGljOgotICAgIGxhenlfb3N0cmVhbV9pbXBsKCBsYXp5X29zdHJlYW0gY29uc3QmIHByZXYsIFQgdmFsdWUgKQotICAgIDogbGF6eV9vc3RyZWFtKCBmYWxzZSApCi0gICAgLCBtX3ByZXYoIHByZXYgKQotICAgICwgbV92YWx1ZSggdmFsdWUgKQotICAgIHt9Ci1wcml2YXRlOgotICAgIHZpcnR1YWwgc3RkOjpvc3RyZWFtJiAgIG9wZXJhdG9yKCkoIHN0ZDo6b3N0cmVhbSYgb3N0ciApIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9wcmV2KG9zdHIpIDw8IG1fdmFsdWU7Ci0gICAgfQotCi0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgbGF6eV9vc3RyZWFtIGNvbnN0JiAgICAgbV9wcmV2OwotICAgIFQgICAgICAgICAgICAgICAgICAgICAgIG1fdmFsdWU7Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotaW5saW5lIGxhenlfb3N0cmVhbV9pbXBsPFQgY29uc3QmPgotb3BlcmF0b3I8PCggbGF6eV9vc3RyZWFtIGNvbnN0JiBwcmV2LCBUIGNvbnN0JiB2ICkKLXsKLSAgICByZXR1cm4gbGF6eV9vc3RyZWFtX2ltcGw8VCBjb25zdCY+KCBwcmV2LCB2ICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpZiBORE5CT09TVF9URVNUX1VTRV9TVERfTE9DQUxFCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFIsdHlwZW5hbWUgUz4KLWlubGluZSBsYXp5X29zdHJlYW1faW1wbDxSJiAoTkROQk9PU1RfVEVTVF9DQUxMX0RFQ0wgKikoUyYpPgotb3BlcmF0b3I8PCggbGF6eV9vc3RyZWFtIGNvbnN0JiBwcmV2LCBSJiAoTkROQk9PU1RfVEVTVF9DQUxMX0RFQ0wgKm1hbikoUyYpICkKLXsKLSAgICByZXR1cm4gbGF6eV9vc3RyZWFtX2ltcGw8UiYgKE5ETkJPT1NUX1RFU1RfQ0FMTF9ERUNMICopKFMmKT4oIHByZXYsIG1hbiApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgdW5pdF90ZXN0Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9MQVpZX09TVFJFQU1fSFBQXzA3MDcwOEdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL25hbWVkX3BhcmFtcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvbmFtZWRfcGFyYW1zLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjEyMGU1Ni4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvbmFtZWRfcGFyYW1zLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyOSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTQ2MzMgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGZhY2lsaXRpZXMgZm9yIG5hbWVkIGZ1bmN0aW9uIHBhcmFtZXRlcnMgc3VwcG9ydAotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9OQU1FRF9QQVJBTV8wMjI1MDVHRVIKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9OQU1FRF9QQVJBTV8wMjI1MDVHRVIKLQotLy8gQm9vc3QKLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnR0aS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9hc3NpZ25fb3AuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX3JlZmVyZW5jZS5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBuZnAgeyAvLyBuYW1lZCBmdW5jdGlvbiBwYXJhbWV0ZXJzCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgZm9yd2FyZCBkZWNsYXJhdGlvbnMgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgdW5pcXVlX2lkLHR5cGVuYW1lIFJlZlR5cGU+ICAgc3RydWN0IG5hbWVkX3BhcmFtZXRlcjsKLXRlbXBsYXRlPHR5cGVuYW1lIHVuaXF1ZV9pZCxib29sIHJlcXVpcmVkPiAgICAgICAgICAgICAgICAgIHN0cnVjdCBrZXl3b3JkOwotCi1uYW1lc3BhY2UgbmZwX2RldGFpbCB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIE5QMSx0eXBlbmFtZSBOUDI+ICAgICAgICBzdHJ1Y3QgbmFtZWRfcGFyYW1ldGVyX2NvbWJpbmU7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICBhY2Nlc3NfdG9faW52YWxpZF9wYXJhbWV0ZXIgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotc3RydWN0IGFjY2Vzc190b19pbnZhbGlkX3BhcmFtZXRlciB7fTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotaW5saW5lIHZvaWQgCi1yZXBvcnRfYWNjZXNzX3RvX2ludmFsaWRfcGFyYW1ldGVyKCkKLXsKLSAgICB0aHJvdyBhY2Nlc3NfdG9faW52YWxpZF9wYXJhbWV0ZXIoKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICAgICAgICBuaWwgICAgICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1zdHJ1Y3QgbmlsIHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotI2lmIGRlZmluZWQoX19HTlVDX18pIHx8IGRlZmluZWQoX19IUF9hQ0MpIHx8IGRlZmluZWQoX19FREdfXykgfHwgZGVmaW5lZChfX1NVTlBST19DQykKLSAgICBvcGVyYXRvciBUKCkgY29uc3QKLSNlbHNlCi0gICAgb3BlcmF0b3IgVCBjb25zdCYoKSBjb25zdAotI2VuZGlmCi0gICAgeyByZXBvcnRfYWNjZXNzX3RvX2ludmFsaWRfcGFyYW1ldGVyKCk7IHN0YXRpYyBUKiB2ID0gMDsgcmV0dXJuICp2OyB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIFQgYW55X2Nhc3QoKSBjb25zdAotICAgIHsgcmVwb3J0X2FjY2Vzc190b19pbnZhbGlkX3BhcmFtZXRlcigpOyBzdGF0aWMgdHlwZW5hbWUgcmVtb3ZlX3JlZmVyZW5jZTxUPjo6dHlwZSogdiA9IDA7IHJldHVybiAqdjsgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQXJnMT4KLSAgICBuaWwgb3BlcmF0b3IoKSggQXJnMSBjb25zdCYgKQotICAgIHsgcmVwb3J0X2FjY2Vzc190b19pbnZhbGlkX3BhcmFtZXRlcigpOyByZXR1cm4gbmlsKCk7IH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEFyZzEsdHlwZW5hbWUgQXJnMj4KLSAgICBuaWwgb3BlcmF0b3IoKSggQXJnMSBjb25zdCYsIEFyZzIgY29uc3QmICkKLSAgICB7IHJlcG9ydF9hY2Nlc3NfdG9faW52YWxpZF9wYXJhbWV0ZXIoKTsgcmV0dXJuIG5pbCgpOyB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBBcmcxLHR5cGVuYW1lIEFyZzIsdHlwZW5hbWUgQXJnMz4KLSAgICBuaWwgb3BlcmF0b3IoKSggQXJnMSBjb25zdCYsIEFyZzIgY29uc3QmLCBBcmczIGNvbnN0JiApCi0gICAgeyByZXBvcnRfYWNjZXNzX3RvX2ludmFsaWRfcGFyYW1ldGVyKCk7IHJldHVybiBuaWwoKTsgfQotCi0gICAgLy8gVmlzaXRhdGlvbiBzdXBwb3J0Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4KLSAgICB2b2lkICAgICAgICAgICAgYXBwbHlfdG8oIFZpc2l0b3ImIFYgKSBjb25zdCB7fQotCi0gICAgc3RhdGljIG5pbCYgICAgIGluc3QoKSB7IHN0YXRpYyBuaWwgc19pbnN0OyByZXR1cm4gc19pbnN0OyB9Ci1wcml2YXRlOgotICAgIG5pbCgpIHt9Ci19OwotICAgIAotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICBuYW1lZF9wYXJhbWV0ZXJfYmFzZSAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBEZXJpdmVkPgotc3RydWN0IG5hbWVkX3BhcmFtZXRlcl9iYXNlIHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBOUD4KLSAgICBuYW1lZF9wYXJhbWV0ZXJfY29tYmluZTxOUCxEZXJpdmVkPgotICAgIG9wZXJhdG9yLCggTlAgY29uc3QmIG5wICkgY29uc3QgeyByZXR1cm4gbmFtZWRfcGFyYW1ldGVyX2NvbWJpbmU8TlAsRGVyaXZlZD4oIG5wLCAqc3RhdGljX2Nhc3Q8RGVyaXZlZCBjb25zdCo+KHRoaXMpICk7IH0KLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICBuYW1lZF9wYXJhbWV0ZXJfY29tYmluZSAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgTlAsIHR5cGVuYW1lIFJlc3QgPSBuaWw+Ci1zdHJ1Y3QgbmFtZWRfcGFyYW1ldGVyX2NvbWJpbmUgCi06IFJlc3QKLSwgbmFtZWRfcGFyYW1ldGVyX2Jhc2U8bmFtZWRfcGFyYW1ldGVyX2NvbWJpbmU8TlAsUmVzdD4gPiB7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBOUDo6cmVmX3R5cGUgIHJlc190eXBlOwotICAgIHR5cGVkZWYgbmFtZWRfcGFyYW1ldGVyX2NvbWJpbmU8TlAsUmVzdD4gc2VsZl90eXBlOwotCi0gICAgLy8gQ29uc3RydWN0b3IKLSAgICBuYW1lZF9wYXJhbWV0ZXJfY29tYmluZSggTlAgY29uc3QmIG5wLCBSZXN0IGNvbnN0JiByICkKLSAgICA6IFJlc3QoIHIgKQotICAgICwgbV9wYXJhbSggbnAgKQotICAgIHt9Ci0KLSAgICAvLyBBY2Nlc3MgbWV0aG9kcwotICAgIHJlc190eXBlICAgIG9wZXJhdG9yW10oIGtleXdvcmQ8dHlwZW5hbWUgTlA6OmlkLHRydWU+IGt3ICkgY29uc3QgICAgeyByZXR1cm4gbV9wYXJhbVtrd107IH0KLSAgICByZXNfdHlwZSAgICBvcGVyYXRvcltdKCBrZXl3b3JkPHR5cGVuYW1lIE5QOjppZCxmYWxzZT4ga3cgKSBjb25zdCAgIHsgcmV0dXJuIG1fcGFyYW1ba3ddOyB9Ci0gICAgdXNpbmcgICAgICAgUmVzdDo6b3BlcmF0b3JbXTsKLQotICAgIGJvb2wgICAgICAgIGhhcygga2V5d29yZDx0eXBlbmFtZSBOUDo6aWQsZmFsc2U+IGt3ICkgY29uc3QgICAgICAgICAgeyByZXR1cm4gbV9wYXJhbS5oYXMoIGt3ICk7IH0KLSAgICB1c2luZyAgICAgICBSZXN0OjpoYXM7Ci0KLSAgICB2b2lkICAgICAgICBlcmFzZSgga2V5d29yZDx0eXBlbmFtZSBOUDo6aWQsZmFsc2U+IGt3ICkgY29uc3QgICAgICAgIHsgbV9wYXJhbS5lcmFzZSgga3cgKTsgfQotICAgIHVzaW5nICAgICAgIFJlc3Q6OmVyYXNlOwotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX01XRVJLU19fLCBORE5CT09TVF9URVNURURfQVQoMHgzMjA2KSkgfHwgXAotICAgIE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHgwNjEwKSkKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBOUD4KLSAgICBuYW1lZF9wYXJhbWV0ZXJfY29tYmluZTxOUCxzZWxmX3R5cGU+IG9wZXJhdG9yLCggTlAgY29uc3QmIG5wICkgY29uc3QKLSAgICB7IHJldHVybiBuYW1lZF9wYXJhbWV0ZXJfY29tYmluZTxOUCxzZWxmX3R5cGU+KCBucCwgKnRoaXMgKTsgfQotI2Vsc2UKLSAgICB1c2luZyAgICAgICBuYW1lZF9wYXJhbWV0ZXJfYmFzZTxuYW1lZF9wYXJhbWV0ZXJfY29tYmluZTxOUCxSZXN0PiA+OjpvcGVyYXRvciw7Ci0jZW5kaWYKLQotICAgIC8vIFZpc2l0YXRpb24gc3VwcG9ydAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+Ci0gICAgdm9pZCAgICAgICAgICAgIGFwcGx5X3RvKCBWaXNpdG9yJiBWICkgY29uc3QKLSAgICB7Ci0gICAgICAgIG1fcGFyYW0uYXBwbHlfdG8oIFYgKTsKLQotICAgICAgICBSZXN0OjphcHBseV90byggViApOwotICAgIH0KLXByaXZhdGU6Ci0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgTlAgICAgICAgICAgbV9wYXJhbTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIG5mcF9kZXRhaWwKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICBuYW1lZF9wYXJhbWV0ZXIgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSB1bmlxdWVfaWQsdHlwZW5hbWUgUmVmZXJlbmNlVHlwZT1UJj4KLXN0cnVjdCBuYW1lZF9wYXJhbWV0ZXIKLTogbmZwX2RldGFpbDo6bmFtZWRfcGFyYW1ldGVyX2Jhc2U8bmFtZWRfcGFyYW1ldGVyPFQsIHVuaXF1ZV9pZCxSZWZlcmVuY2VUeXBlPiA+Ci17Ci0gICAgdHlwZWRlZiBuZnBfZGV0YWlsOjpuaWwgbmlsX3Q7Ci0gICAgdHlwZWRlZiBUICAgICAgICAgICAgICAgZGF0YV90eXBlOwotICAgIHR5cGVkZWYgUmVmZXJlbmNlVHlwZSAgIHJlZl90eXBlOwotICAgIHR5cGVkZWYgdW5pcXVlX2lkICAgICAgIGlkOwotCi0gICAgLy8gQ29uc3RydWN0b3IKLSAgICBleHBsaWNpdCAgICAgICAgbmFtZWRfcGFyYW1ldGVyKCByZWZfdHlwZSB2ICkgCi0gICAgOiBtX3ZhbHVlKCB2ICkKLSAgICAsIG1fZXJhc2VkKCBmYWxzZSApCi0gICAge30KLSAgICBuYW1lZF9wYXJhbWV0ZXIoIG5hbWVkX3BhcmFtZXRlciBjb25zdCYgbnAgKQotICAgIDogbV92YWx1ZSggbnAubV92YWx1ZSApCi0gICAgLCBtX2VyYXNlZCggbnAubV9lcmFzZWQgKQotICAgIHt9Ci0KLSAgICAvLyBBY2Nlc3MgbWV0aG9kcwotICAgIHJlZl90eXBlICAgICAgICBvcGVyYXRvcltdKCBrZXl3b3JkPHVuaXF1ZV9pZCx0cnVlPiApIGNvbnN0ICAgICB7IHJldHVybiBtX2VyYXNlZCA/IG5pbF90OjppbnN0KCkudGVtcGxhdGUgYW55X2Nhc3Q8cmVmX3R5cGU+KCkgOiAgbV92YWx1ZTsgfQotICAgIHJlZl90eXBlICAgICAgICBvcGVyYXRvcltdKCBrZXl3b3JkPHVuaXF1ZV9pZCxmYWxzZT4gKSBjb25zdCAgICB7IHJldHVybiBtX2VyYXNlZCA/IG5pbF90OjppbnN0KCkudGVtcGxhdGUgYW55X2Nhc3Q8cmVmX3R5cGU+KCkgOiAgbV92YWx1ZTsgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFVua25vd25JZD4KLSAgICBuaWxfdCAgICAgICAgICAgb3BlcmF0b3JbXSgga2V5d29yZDxVbmtub3duSWQsZmFsc2U+ICkgY29uc3QgICAgeyByZXR1cm4gbmlsX3Q6Omluc3QoKTsgfQotCi0gICAgYm9vbCAgICAgICAgICAgIGhhcygga2V5d29yZDx1bmlxdWVfaWQsZmFsc2U+ICkgY29uc3QgICAgICAgICAgIHsgcmV0dXJuICFtX2VyYXNlZDsgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFVua25vd25JZD4KLSAgICBib29sICAgICAgICAgICAgaGFzKCBrZXl3b3JkPFVua25vd25JZCxmYWxzZT4gKSBjb25zdCAgICAgICAgICAgeyByZXR1cm4gZmFsc2U7IH0KLQotICAgIHZvaWQgICAgICAgICAgICBlcmFzZSgga2V5d29yZDx1bmlxdWVfaWQsZmFsc2U+ICkgY29uc3QgICAgICAgICB7IG1fZXJhc2VkID0gdHJ1ZTsgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFVua25vd25JZD4KLSAgICB2b2lkICAgICAgICAgICAgZXJhc2UoIGtleXdvcmQ8VW5rbm93bklkLGZhbHNlPiApIGNvbnN0ICAgICAgICAge30KLQotICAgIC8vIFZpc2l0YXRpb24gc3VwcG9ydAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+Ci0gICAgdm9pZCAgICAgICAgICAgIGFwcGx5X3RvKCBWaXNpdG9yJiBWICkgY29uc3QKLSAgICB7Ci0gICAgICAgIFYuc2V0X3BhcmFtZXRlciggcnR0aTo6dHlwZV9pZDx1bmlxdWVfaWQ+KCksIG1fdmFsdWUgKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgcmVmX3R5cGUgICAgICAgIG1fdmFsdWU7Ci0gICAgbXV0YWJsZSBib29sICAgIG1fZXJhc2VkOwotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICAgICBub19wYXJhbXMgICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1uYW1lc3BhY2UgbmZwX2RldGFpbCB7Ci10eXBlZGVmIG5hbWVkX3BhcmFtZXRlcjxjaGFyLCBzdHJ1Y3Qgbm9fcGFyYW1zX3R5cGVfdCxjaGFyPiBub19wYXJhbXNfdHlwZTsKLX0gLy8gbmFtZXNwYWNlIG5mcF9kZXRhaWwKLQotbmFtZXNwYWNlIHsKLW5mcF9kZXRhaWw6Om5vX3BhcmFtc190eXBlIG5vX3BhcmFtcyggJ1wwJyApOwotfSAvLyBsb2NhbCBuYW1lc3BhY2UKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICAgICAga2V5d29yZCAgICAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSB1bmlxdWVfaWQsIGJvb2wgcmVxdWlyZWQgPSBmYWxzZT4KLXN0cnVjdCBrZXl3b3JkIHsKLSAgICB0eXBlZGVmIHVuaXF1ZV9pZCBpZDsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgbmFtZWRfcGFyYW1ldGVyPFQgY29uc3QsdW5pcXVlX2lkPgotICAgIG9wZXJhdG9yPSggVCBjb25zdCYgdCApIGNvbnN0ICAgICAgIHsgcmV0dXJuIG5hbWVkX3BhcmFtZXRlcjxUIGNvbnN0LHVuaXF1ZV9pZD4oIHQgKTsgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBuYW1lZF9wYXJhbWV0ZXI8VCx1bmlxdWVfaWQ+Ci0gICAgb3BlcmF0b3I9KCBUJiB0ICkgY29uc3QgICB7IHJldHVybiBuYW1lZF9wYXJhbWV0ZXI8VCx1bmlxdWVfaWQ+KCB0ICk7IH0KLQotICAgIG5hbWVkX3BhcmFtZXRlcjxjaGFyIGNvbnN0Kix1bmlxdWVfaWQsY2hhciBjb25zdCo+Ci0gICAgb3BlcmF0b3I9KCBjaGFyIGNvbnN0KiB0ICkgY29uc3QgICB7IHJldHVybiBuYW1lZF9wYXJhbWV0ZXI8Y2hhciBjb25zdCosdW5pcXVlX2lkLGNoYXIgY29uc3QqPiggdCApOyB9Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgICB0eXBlZF9rZXl3b3JkICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIHVuaXF1ZV9pZCwgYm9vbCByZXF1aXJlZCA9IGZhbHNlPgotc3RydWN0IHR5cGVkX2tleXdvcmQgOiBrZXl3b3JkPHVuaXF1ZV9pZCxyZXF1aXJlZD4gewotICAgIG5hbWVkX3BhcmFtZXRlcjxUIGNvbnN0LHVuaXF1ZV9pZD4KLSAgICBvcGVyYXRvcj0oIFQgY29uc3QmIHQgKSBjb25zdCAgICAgICB7IHJldHVybiBuYW1lZF9wYXJhbWV0ZXI8VCBjb25zdCx1bmlxdWVfaWQ+KCB0ICk7IH0KLQotICAgIG5hbWVkX3BhcmFtZXRlcjxULHVuaXF1ZV9pZD4KLSAgICBvcGVyYXRvcj0oIFQmIHQgKSBjb25zdCAgICAgICAgICAgICB7IHJldHVybiBuYW1lZF9wYXJhbWV0ZXI8VCx1bmlxdWVfaWQ+KCB0ICk7IH0KLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIHVuaXF1ZV9pZD4KLXN0cnVjdCB0eXBlZF9rZXl3b3JkPGJvb2wsdW5pcXVlX2lkLGZhbHNlPgotOiBrZXl3b3JkPHVuaXF1ZV9pZCxmYWxzZT4KLSwgbmFtZWRfcGFyYW1ldGVyPGJvb2wsdW5pcXVlX2lkLGJvb2w+IHsKLSAgICB0eXBlZGVmIHVuaXF1ZV9pZCBpZDsKLQotICAgIHR5cGVkX2tleXdvcmQoKSA6IG5hbWVkX3BhcmFtZXRlcjxib29sLHVuaXF1ZV9pZCxib29sPiggdHJ1ZSApIHt9Ci0KLSAgICBuYW1lZF9wYXJhbWV0ZXI8Ym9vbCx1bmlxdWVfaWQsYm9vbD4KLSAgICBvcGVyYXRvciEoKSBjb25zdCAgICAgICAgICAgeyByZXR1cm4gbmFtZWRfcGFyYW1ldGVyPGJvb2wsdW5pcXVlX2lkLGJvb2w+KCBmYWxzZSApOyB9Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgb3B0aW9uYWxseV9hc3NpZ24gICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgdm9pZAotb3B0aW9uYWxseV9hc3NpZ24oIFQmLCBuZnBfZGV0YWlsOjpuaWwgKQotewotICAgIG5mcF9kZXRhaWw6OnJlcG9ydF9hY2Nlc3NfdG9faW52YWxpZF9wYXJhbWV0ZXIoKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgU291cmNlPgotaW5saW5lIHZvaWQKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKCBfX01XRVJLU19fLCBORE5CT09TVF9URVNURURfQVQoIDB4MzAwMyApICkgXAotICAgIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoIF9fREVDQ1hYX1ZFUiwgTkROQk9PU1RfVEVTVEVEX0FUKDYwNTkwMDQyKSApCi1vcHRpb25hbGx5X2Fzc2lnbiggVCYgdGFyZ2V0LCBTb3VyY2Ugc3JjICkKLSNlbHNlCi1vcHRpb25hbGx5X2Fzc2lnbiggVCYgdGFyZ2V0LCBTb3VyY2UgY29uc3QmIHNyYyApCi0jZW5kaWYKLXsKLSAgICB1c2luZyBuYW1lc3BhY2UgdW5pdF90ZXN0OwotCi0gICAgYXNzaWduX29wKCB0YXJnZXQsIHNyYywgc3RhdGljX2Nhc3Q8aW50PigwKSApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBQYXJhbXMsIHR5cGVuYW1lIEtleXdvcmQ+Ci1pbmxpbmUgdm9pZAotb3B0aW9uYWxseV9hc3NpZ24oIFQmIHRhcmdldCwgUGFyYW1zIGNvbnN0JiBwLCBLZXl3b3JkIGsgKQotewotICAgIGlmKCBwLmhhcyhrKSApCi0gICAgICAgIG9wdGlvbmFsbHlfYXNzaWduKCB0YXJnZXQsIHBba10gKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2UgbmZwCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVEVTVF9OQU1FRF9QQVJBTV8wMjI1MDVHRVIKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J0dGkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J0dGkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNTQ3YWQyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydHRpLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA0OTMxMiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogc2ltcGxlIGZhY2lsaXRpZXMgZm9yIGFjY2Vzc2luZyB0eXBlIGluZm9ybWF0aW9uIGF0IHJ1bnRpbWUKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfUlRUSV9IUFBfMDYyNjA0R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfUlRUSV9IUFBfMDYyNjA0R0VSCi0KLSNpbmNsdWRlIDxjc3RkZGVmPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgcnR0aSB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICAgICBydHRpOjp0eXBlX2lkICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdHlwZWRlZiBzdGQ6OnB0cmRpZmZfdCBpZF90OwotCi1uYW1lc3BhY2UgcnR0aV9kZXRhaWwgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IHJ0dGlkX2hvbGRlciB7Ci0gICAgc3RhdGljIGlkX3QgaWQoKSB7IHJldHVybiByZWludGVycHJldF9jYXN0PGlkX3Q+KCAmaW5zdCgpICk7IH0KLQotcHJpdmF0ZToKLSAgICBzdHJ1Y3QgcnR0aWQge307Ci0KLSAgICBzdGF0aWMgcnR0aWQgY29uc3QmIGluc3QoKSB7IHN0YXRpYyBydHRpZCBzX2luc3Q7ICByZXR1cm4gc19pbnN0OyB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBydHRpX2RldGFpbAotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiAgIAotaW5saW5lIGlkX3QKLXR5cGVfaWQoKQotewotICAgIHJldHVybiBydHRpX2RldGFpbDo6cnR0aWRfaG9sZGVyPFQ+OjppZCgpOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jZGVmaW5lIE5ETkJPT1NUX1JUVElfU1dJVENIKCB0eXBlX2lkXyApIGlmKCA6Om5kbmJvb3N0OjpydHRpOjppZF90IHN3aXRjaF9ieV9pZCA9IHR5cGVfaWRfICkKLSNkZWZpbmUgTkROQk9PU1RfUlRUSV9DQVNFKCB0eXBlICkgICAgICAgaWYoIHN3aXRjaF9ieV9pZCA9PSA6Om5kbmJvb3N0OjpydHRpOjp0eXBlX2lkPHR5cGU+KCkgKQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSBydHRpCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9SVF9SVFRJX0hQUF8wNjI2MDRHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2FyZ3VtZW50LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2FyZ3VtZW50LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmEyYjI5ZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9hcmd1bWVudC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTIgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDU3OTkyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBtb2RlbCBvZiBhY3R1YWwgYXJndW1lbnQgKGJvdGggdHlwZWQgYW5kIGFic3RyYWN0IGludGVyZmFjZSkKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1JUX0FSR1VNRU5UX0hQUF8wNjI2MDRHRVIKLSNkZWZpbmUgTkROQk9PU1RfUlRfQVJHVU1FTlRfSFBQXzA2MjYwNEdFUgotCi0vLyBCb29zdC5SdW50aW1lLlBhcmFtZXRlcgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS92YWxpZGF0aW9uLmhwcD4KLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvY2xhc3NfcHJvcGVydGllcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydHRpLmhwcD4KLQotLy8gU1RMCi0jaW5jbHVkZSA8Y2Fzc2VydD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRSB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgcnVudGltZTo6YXJndW1lbnQgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSMgIHByYWdtYSB3YXJuaW5nKHB1c2gpCi0jICBwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQyNDQpCi0jZW5kaWYKLQotY2xhc3MgYXJndW1lbnQgewotcHVibGljOgotICAgIC8vIENvbnN0cnVjdG9yCi0gICAgYXJndW1lbnQoIHBhcmFtZXRlciBjb25zdCYgcCwgcnR0aTo6aWRfdCB2YWx1ZV90eXBlICkKLSAgICA6IHBfZm9ybWFsX3BhcmFtZXRlciggcCApCi0gICAgLCBwX3ZhbHVlX3R5cGUoIHZhbHVlX3R5cGUgKQotICAgIHt9Ci0KLSAgICAvLyBEZXN0cnVjdG9yCi0gICAgdmlydHVhbCAgICAgfmFyZ3VtZW50KCkgIHt9Ci0KLSAgICAvLyBQdWJsaWMgcHJvcGVydGllcwotICAgIHVuaXRfdGVzdDo6cmVhZG9ubHlfcHJvcGVydHk8cGFyYW1ldGVyIGNvbnN0Jj4gcF9mb3JtYWxfcGFyYW1ldGVyOwotICAgIHVuaXRfdGVzdDo6cmVhZG9ubHlfcHJvcGVydHk8cnR0aTo6aWRfdD4gICAgICAgcF92YWx1ZV90eXBlOwotfTsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgIHJ1bnRpbWU6OnR5cGVkX2FyZ3VtZW50ICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotY2xhc3MgdHlwZWRfYXJndW1lbnQgOiBwdWJsaWMgYXJndW1lbnQgewotcHVibGljOgotICAgIC8vIENvbnN0cnVjdG9yCi0gICAgZXhwbGljaXQgdHlwZWRfYXJndW1lbnQoIHBhcmFtZXRlciBjb25zdCYgcCApCi0gICAgOiBhcmd1bWVudCggcCwgcnR0aTo6dHlwZV9pZDxUPigpICkKLSAgICB7fQotICAgIHR5cGVkX2FyZ3VtZW50KCBwYXJhbWV0ZXIgY29uc3QmIHAsIFQgY29uc3QmIHQgKQotICAgIDogYXJndW1lbnQoIHAsIHJ0dGk6OnR5cGVfaWQ8VD4oKSApCi0gICAgLCBwX3ZhbHVlKCB0ICkKLSAgICB7fQotCi0gICAgdW5pdF90ZXN0OjpyZWFkd3JpdGVfcHJvcGVydHk8VD4gICAgcF92YWx1ZTsKLX07Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgIHJ1bnRpbWU6OmFyZ192YWx1ZSAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWlubGluZSBUIGNvbnN0JgotYXJnX3ZhbHVlKCBhcmd1bWVudCBjb25zdCYgYXJnXyApCi17Ci0gICAgYXNzZXJ0KCBhcmdfLnBfdmFsdWVfdHlwZSA9PSBydHRpOjp0eXBlX2lkPFQ+KCkgKTsgLy8gZGV0ZWN0IGxvZ2ljIGVycm9yCi0KLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dHlwZWRfYXJndW1lbnQ8VD4gY29uc3QmPiggYXJnXyApLnBfdmFsdWUudmFsdWU7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgVCYKLWFyZ192YWx1ZSggYXJndW1lbnQmIGFyZ18gKQotewotICAgIGFzc2VydCggYXJnXy5wX3ZhbHVlX3R5cGUgPT0gcnR0aTo6dHlwZV9pZDxUPigpICk7IC8vIGRldGVjdCBsb2dpYyBlcnJvcgotCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PHR5cGVkX2FyZ3VtZW50PFQ+Jj4oIGFyZ18gKS5wX3ZhbHVlLnZhbHVlOwotfQotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotIyAgcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfUlRfQVJHVU1FTlRfSFBQXzA2MjYwNEdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2FyZ3VtZW50X2ZhY3RvcnkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2FyZ3VtZW50X2ZhY3RvcnkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MGYxZGY0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9hcmd1bWVudF9mYWN0b3J5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIxOCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDU3OTkyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBnZW5lcmljIHR5cGVkX2FyZ3VtZW50X2ZhY3RvcnkgaW1wbGVtZW50YXRpb24KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1JUX0NMQV9BUkdVTUVOVF9GQUNUT1JZX0hQUF8wNjI2MDRHRVIKLSNkZWZpbmUgTkROQk9PU1RfUlRfQ0xBX0FSR1VNRU5UX0ZBQ1RPUllfSFBQXzA2MjYwNEdFUgotCi0vLyBCb29zdC5SdW50aW1lLlBhcmFtZXRlcgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jb25maWcuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL3ZhbGlkYXRpb24uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9hcmd1bWVudC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL3RyYWNlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvaW50ZXJwcmV0X2FyZ3VtZW50X3ZhbHVlLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL3ZhbHVlX2dlbmVyYXRvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS92YWx1ZV9oYW5kbGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL3ZhbGlkYXRpb24uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvYXJndl90cmF2ZXJzZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvZGV0YWlsL2FyZ3VtZW50X3ZhbHVlX3VzYWdlLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvaWZhY2UvYXJndW1lbnRfZmFjdG9yeS5ocHA+Ci0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2NhbGxiYWNrLmhwcD4KLQotLy8gQm9vc3QKLSNpbmNsdWRlIDxuZG5ib29zdC9vcHRpb25hbC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UgewotCi1uYW1lc3BhY2UgY2xhIHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICBkZWZhdWx0X3ZhbHVlX2ludGVycHJldGVyICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1uYW1lc3BhY2UgcnRfY2xhX2RldGFpbCB7Ci0KLXN0cnVjdCBkZWZhdWx0X3ZhbHVlX2ludGVycHJldGVyIHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHZvaWQgb3BlcmF0b3IoKSggYXJndl90cmF2ZXJzZXImIHRyLCBuZG5ib29zdDo6b3B0aW9uYWw8VD4mIHZhbHVlICkKLSAgICB7Ci0gICAgICAgIGlmKCBpbnRlcnByZXRfYXJndW1lbnRfdmFsdWUoIHRyLnRva2VuKCksIHZhbHVlLCAwICkgKQotICAgICAgICAgICAgdHIubmV4dF90b2tlbigpOwotICAgIH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIHJ0X2NsYV9kZXRhaWwKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgIHR5cGVkX2FyZ3VtZW50X2ZhY3RvcnkgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IHR5cGVkX2FyZ3VtZW50X2ZhY3RvcnkgOiBwdWJsaWMgYXJndW1lbnRfZmFjdG9yeSB7Ci0gICAgLy8gQ29uc3RydWN0b3IKLSAgICB0eXBlZF9hcmd1bWVudF9mYWN0b3J5KCkKLSAgICA6IG1fdmFsdWVfaW50ZXJwcmV0ZXIoIHJ0X2NsYV9kZXRhaWw6OmRlZmF1bHRfdmFsdWVfaW50ZXJwcmV0ZXIoKSApCi0gICAge30KLSAgICBORE5CT09TVF9SVF9QQVJBTV9VTk5FRURFRF9WSVJUVUFMIH50eXBlZF9hcmd1bWVudF9mYWN0b3J5KCkge30KLQotICAgIC8vIHByb3BlcnRpZXMgbW9kaWZpY2F0aW9uCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgTW9kaWZpZXI+Ci0gICAgdm9pZCAgICAgICAgICAgICAgICBhY2NlcHRfbW9kaWZpZXIoIE1vZGlmaWVyIGNvbnN0JiBtICkKLSAgICB7Ci0gICAgICAgIG9wdGlvbmFsbHlfYXNzaWduKCBtX3ZhbHVlX2hhbmRsZXIsIG0sIGhhbmRsZXIgKTsKLSAgICAgICAgb3B0aW9uYWxseV9hc3NpZ24oIG1fdmFsdWVfaW50ZXJwcmV0ZXIsIG0sIGludGVycHJldGVyICk7Ci0KLSAgICAgICAgaWYoIG0uaGFzKCBkZWZhdWx0X3ZhbHVlICkgKSB7Ci0gICAgICAgICAgICBORE5CT09TVF9SVF9QQVJBTV9WQUxJREFURV9MT0dJQyggIW1fdmFsdWVfZ2VuZXJhdG9yLCAKLSAgICAgICAgICAgICAgICBORE5CT09TVF9SVF9QQVJBTV9MSVRFUkFMKCAibXVsdGlwbGUgdmFsdWUgZ2VuZXJhdG9ycyBmb3IgcGFyYW1ldGVyIiApICk7Ci0KLSAgICAgICAgICAgIFQgY29uc3QmIGR2X3JlZiA9IG1bZGVmYXVsdF92YWx1ZV07Ci0gICAgICAgICAgICBtX3ZhbHVlX2dlbmVyYXRvciA9IHJ0X2NsYV9kZXRhaWw6OmNvbnN0X2dlbmVyYXRvcjxUPiggZHZfcmVmICk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiggbS5oYXMoIGRlZmF1bHRfcmVmZXJfdG8gKSApIHsKLSAgICAgICAgICAgIE5ETkJPT1NUX1JUX1BBUkFNX1ZBTElEQVRFX0xPR0lDKCAhbV92YWx1ZV9nZW5lcmF0b3IsIAotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1JUX1BBUkFNX0xJVEVSQUwoICJtdWx0aXBsZSB2YWx1ZSBnZW5lcmF0b3JzIGZvciBwYXJhbWV0ZXIiICkgKTsKLQotICAgICAgICAgICAgY3N0cmluZyByZWZfaWQgPSBtW2RlZmF1bHRfcmVmZXJfdG9dOwotICAgICAgICAgICAgbV92YWx1ZV9nZW5lcmF0b3IgPSBydF9jbGFfZGV0YWlsOjpyZWZfZ2VuZXJhdG9yPFQ+KCByZWZfaWQgKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmKCBtLmhhcyggYXNzaWduX3RvICkgKSB7Ci0gICAgICAgICAgICBORE5CT09TVF9SVF9QQVJBTV9WQUxJREFURV9MT0dJQyggIW1fdmFsdWVfaGFuZGxlciwgCi0gICAgICAgICAgICAgICAgTkROQk9PU1RfUlRfUEFSQU1fTElURVJBTCggIm11bHRpcGxlIHZhbHVlIGhhbmRsZXJzIGZvciBwYXJhbWV0ZXIiICkgKTsKLQotICAgICAgICAgICAgbV92YWx1ZV9oYW5kbGVyID0gcnRfY2xhX2RldGFpbDo6YXNzaWduZXI8VD4oIG1bYXNzaWduX3RvXSApOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gQXJndW1lbnQgZmFjdG9yeSBpbXBsZW1lbnRhdGlvbgotICAgIHZpcnR1YWwgYXJndW1lbnRfcHRyIHByb2R1Y2VfdXNpbmcoIHBhcmFtZXRlciYgcCwgYXJndl90cmF2ZXJzZXImIHRyICk7Ci0gICAgdmlydHVhbCBhcmd1bWVudF9wdHIgcHJvZHVjZV91c2luZyggcGFyYW1ldGVyJiBwLCBwYXJzZXIgY29uc3QmICk7Ci0gICAgdmlydHVhbCB2b2lkICAgICAgICAgYXJndW1lbnRfdXNhZ2VfaW5mbyggZm9ybWF0X3N0cmVhbSYgZnMgKTsKLQotLy8gISEgcHJpdmF0ZT8KLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICB1bml0X3Rlc3Q6OmNhbGxiYWNrMjxwYXJhbWV0ZXIgY29uc3QmLFQmPiAgICAgICAgICAgICAgICAgICBtX3ZhbHVlX2hhbmRsZXI7Ci0gICAgdW5pdF90ZXN0OjpjYWxsYmFjazI8cGFyc2VyIGNvbnN0JixuZG5ib29zdDo6b3B0aW9uYWw8VD4mPiAgICAgbV92YWx1ZV9nZW5lcmF0b3I7Ci0gICAgdW5pdF90ZXN0OjpjYWxsYmFjazI8YXJndl90cmF2ZXJzZXImLG5kbmJvb3N0OjpvcHRpb25hbDxUPiY+ICAgbV92YWx1ZV9pbnRlcnByZXRlcjsKLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgYXJndW1lbnRfcHRyCi10eXBlZF9hcmd1bWVudF9mYWN0b3J5PFQ+Ojpwcm9kdWNlX3VzaW5nKCBwYXJhbWV0ZXImIHAsIGFyZ3ZfdHJhdmVyc2VyJiB0ciApCi17Ci0gICAgbmRuYm9vc3Q6Om9wdGlvbmFsPFQ+IHZhbHVlOwotCi0gICAgdHJ5IHsKLSAgICAgICAgbV92YWx1ZV9pbnRlcnByZXRlciggdHIsIHZhbHVlICk7Ci0gICAgfQotICAgIGNhdGNoKCAuLi4gKSB7IC8vICEhIHNob3VsZCB3ZSBkbyB0aGF0PwotICAgICAgICBORE5CT09TVF9SVF9QQVJBTV9UUkFDRSggIkZhaWwgdG8gcGFyc2UgYXJndW1lbnQgdmFsdWUiICk7Ci0KLSAgICAgICAgaWYoICFwLnBfb3B0aW9uYWxfdmFsdWUgKQotICAgICAgICAgICAgdGhyb3c7Ci0gICAgfQotCi0gICAgYXJndW1lbnRfcHRyIGFjdHVhbF9hcmcgPSBwLmFjdHVhbF9hcmd1bWVudCgpOwotCi0gICAgTkROQk9PU1RfUlRfQ0xBX1ZBTElEQVRFX0lOUFVUKCAhIXZhbHVlIHx8IHAucF9vcHRpb25hbF92YWx1ZSwgdHIsIAotICAgICAgICBORE5CT09TVF9SVF9QQVJBTV9MSVRFUkFMKCAiQXJndW1lbnQgdmFsdWUgbWlzc2luZyBmb3IgcGFyYW1ldGVyICIgKSA8PCBwLmlkXzJfcmVwb3J0KCkgKTsKLQotICAgIE5ETkJPT1NUX1JUX0NMQV9WQUxJREFURV9JTlBVVCggIWFjdHVhbF9hcmcgfHwgcC5wX211bHRpcGxpY2FibGUsIHRyLCAKLSAgICAgICAgTkROQk9PU1RfUlRfUEFSQU1fTElURVJBTCggIlVuZXhwZWN0ZWQgcmVwZXRpdGlvbiBvZiB0aGUgcGFyYW1ldGVyICIgKSA8PCBwLmlkXzJfcmVwb3J0KCkgKTsKLQotICAgIGlmKCAhIXZhbHVlICYmICEhbV92YWx1ZV9oYW5kbGVyICkKLSAgICAgICAgbV92YWx1ZV9oYW5kbGVyKCBwLCAqdmFsdWUgKTsKLQotICAgIGlmKCAhcC5wX211bHRpcGxpY2FibGUgKQotICAgICAgICBhY3R1YWxfYXJnLnJlc2V0KCBwLnBfb3B0aW9uYWxfdmFsdWUgJiYgKHJ0dGk6OnR5cGVfaWQ8VD4oKSAhPSBydHRpOjp0eXBlX2lkPGJvb2w+KCkpCi0gICAgICAgICAgICA/IHN0YXRpY19jYXN0PGFyZ3VtZW50Kj4obmV3IHR5cGVkX2FyZ3VtZW50PG5kbmJvb3N0OjpvcHRpb25hbDxUPiA+KCBwLCB2YWx1ZSApKQotICAgICAgICAgICAgOiBzdGF0aWNfY2FzdDxhcmd1bWVudCo+KG5ldyB0eXBlZF9hcmd1bWVudDxUPiggcCwgKnZhbHVlICkpICk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIHR5cGVkZWYgc3RkOjpsaXN0PG5kbmJvb3N0OjpvcHRpb25hbDxUPiA+IG9wdGlvbmFsX2xpc3Q7Ci0KLSAgICAgICAgaWYoICFhY3R1YWxfYXJnICkKLSAgICAgICAgICAgIGFjdHVhbF9hcmcucmVzZXQoIHAucF9vcHRpb25hbF92YWx1ZSAKLSAgICAgICAgICAgICAgICA/IHN0YXRpY19jYXN0PGFyZ3VtZW50Kj4obmV3IHR5cGVkX2FyZ3VtZW50PG9wdGlvbmFsX2xpc3Q+KCBwICkpCi0gICAgICAgICAgICAgICAgOiBzdGF0aWNfY2FzdDxhcmd1bWVudCo+KG5ldyB0eXBlZF9hcmd1bWVudDxzdGQ6Omxpc3Q8VD4gPiggcCApKSApOwotCi0gICAgICAgIGlmKCBwLnBfb3B0aW9uYWxfdmFsdWUgKSB7Ci0gICAgICAgICAgICBvcHRpb25hbF9saXN0JiB2YWx1ZXMgPSBhcmdfdmFsdWU8b3B0aW9uYWxfbGlzdD4oICphY3R1YWxfYXJnICk7Ci0KLSAgICAgICAgICAgIHZhbHVlcy5wdXNoX2JhY2soIHZhbHVlICk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBzdGQ6Omxpc3Q8VD4mIHZhbHVlcyA9IGFyZ192YWx1ZTxzdGQ6Omxpc3Q8VD4gPiggKmFjdHVhbF9hcmcgKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgdmFsdWVzLnB1c2hfYmFjayggKnZhbHVlICk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gYWN0dWFsX2FyZzsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWlubGluZSBhcmd1bWVudF9wdHIgCi10eXBlZF9hcmd1bWVudF9mYWN0b3J5PFQ+Ojpwcm9kdWNlX3VzaW5nKCBwYXJhbWV0ZXImIHAsIHBhcnNlciBjb25zdCYgcGEgKQotewotICAgIGFyZ3VtZW50X3B0ciBhY3R1YWxfYXJnOwotCi0gICAgaWYoICFtX3ZhbHVlX2dlbmVyYXRvciApCi0gICAgICAgIHJldHVybiBhY3R1YWxfYXJnOwotCi0gICAgbmRuYm9vc3Q6Om9wdGlvbmFsPFQ+IHZhbHVlOwotICAgIG1fdmFsdWVfZ2VuZXJhdG9yKCBwYSwgdmFsdWUgKTsKLQotICAgIGlmKCAhdmFsdWUgKQotICAgICAgICByZXR1cm4gYWN0dWFsX2FyZzsKLQotICAgIGlmKCAhIW1fdmFsdWVfaGFuZGxlciApCi0gICAgICAgIG1fdmFsdWVfaGFuZGxlciggcCwgKnZhbHVlICk7Ci0KLSAgICBhY3R1YWxfYXJnLnJlc2V0KCBuZXcgdHlwZWRfYXJndW1lbnQ8VD4oIHAsICp2YWx1ZSApICk7Ci0KLSAgICByZXR1cm4gYWN0dWFsX2FyZzsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWlubGluZSB2b2lkCi10eXBlZF9hcmd1bWVudF9mYWN0b3J5PFQ+Ojphcmd1bWVudF91c2FnZV9pbmZvKCBmb3JtYXRfc3RyZWFtJiBmcyApCi17Ci0gICAgcnRfY2xhX2RldGFpbDo6YXJndW1lbnRfdmFsdWVfdXNhZ2UoIGZzLCAwLCByZWludGVycHJldF9jYXN0PFQqPigwKSApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi19IC8vIG5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UKLQotfSAvLyBuYW1lc3BhY2UgY2xhCi0KLSNlbmRpZiAvLyBORE5CT09TVF9SVF9DTEFfQVJHVU1FTlRfRkFDVE9SWV9IUFBfMDYyNjA0R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvYXJndl90cmF2ZXJzZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2FyZ3ZfdHJhdmVyc2VyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWUxZjdiYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvYXJndl90cmF2ZXJzZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTggKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1Nzk5MiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogZGVmaW5lcyBmYWNpbGl0eSB0byBoaWRlIGlucHV0IHRyYXZlcnNpbmcgZGV0YWlscwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfUlRfQ0xBX0FSR1ZfVFJBVkVSU0VSX0hQUF8wNjI2MDRHRVIKLSNkZWZpbmUgTkROQk9PU1RfUlRfQ0xBX0FSR1ZfVFJBVkVSU0VSX0hQUF8wNjI2MDRHRVIKLQotLy8gQm9vc3QuUnVudGltZS5QYXJhbWV0ZXIKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY29uZmlnLmhwcD4KLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvY2xhc3NfcHJvcGVydGllcy5ocHA+Ci0KLS8vIEJvb3N0Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvbm9uY29weWFibGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3NoYXJlZF9hcnJheS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UgewotCi1uYW1lc3BhY2UgY2xhIHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgIHJ1bnRpbWU6OmNsYTo6YXJndl90cmF2ZXJzZXIgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1jbGFzcyBhcmd2X3RyYXZlcnNlciA6IG5vbmNvcHlhYmxlIHsKLSAgICBjbGFzcyBwYXJzZXI7Ci1wdWJsaWM6Ci0gICAgLy8gQ29uc3RydWN0b3IKLSAgICBhcmd2X3RyYXZlcnNlcigpOwotCi0gICAgLy8gcHVibGljX3Byb3BlcnRpZXMKLSAgICB1bml0X3Rlc3Q6OnJlYWR3cml0ZV9wcm9wZXJ0eTxib29sPiAgICAgICAgIHBfaWdub3JlX21pc21hdGNoOwotICAgIHVuaXRfdGVzdDo6cmVhZHdyaXRlX3Byb3BlcnR5PGNoYXJfdHlwZT4gICAgcF9zZXBhcmF0b3I7Ci0KLSAgICAvLyBhcmdjK2FyZ3YgPC0+IGludGVybmFsIGJ1ZmZlciBleGNoYW5nZQotICAgIHZvaWQgICAgICAgICAgICBpbml0KCBpbnQgYXJnYywgY2hhcl90eXBlKiogYXJndiApOwotICAgIHZvaWQgICAgICAgICAgICByZW1haW5kZXIoIGludCYgYXJnYywgY2hhcl90eXBlKiogYXJndiApOwotCi0gICAgLy8gdG9rZW4gYmFzZWQgcGFyc2luZwotICAgIGNzdHJpbmcgICAgICAgICB0b2tlbigpIGNvbnN0OwotICAgIHZvaWQgICAgICAgICAgICBuZXh0X3Rva2VuKCk7Ci0KLSAgICAvLyB3aG9sZSBpbnB1dCBwYXJzaW5nCi0gICAgY3N0cmluZyAgICAgICAgIGlucHV0KCkgY29uc3Q7Ci0gICAgdm9pZCAgICAgICAgICAgIHRyaW0oIHN0ZDo6c2l6ZV90IHNpemUgKTsKLSAgICBib29sICAgICAgICAgICAgbWF0Y2hfZnJvbnQoIGNzdHJpbmcgKTsKLSAgICBib29sICAgICAgICAgICAgbWF0Y2hfZnJvbnQoIGNoYXJfdHlwZSBjICk7Ci0gICAgYm9vbCAgICAgICAgICAgIGVvaSgpIGNvbnN0OwotCi0gICAgLy8gdHJhbnNhY3Rpb24gbG9naWMgc3VwcG9ydAotICAgIHZvaWQgICAgICAgICAgICBjb21taXQoKTsKLSAgICB2b2lkICAgICAgICAgICAgcm9sbGJhY2soKTsKLQotICAgIC8vIGN1cnJlbnQgcG9zaXRpb24gYWNjZXNzOyB1c2VkIHRvIHNhdmUgc29tZSByZWZlcmVuY2UgcG9pbnRzIGluIGlucHV0Ci0gICAgc3RkOjpzaXplX3QgICAgIGlucHV0X3BvcygpIGNvbnN0OwotCi0gICAgLy8gcmV0dXJucyB0cnVlIGlmIG1pc21hdGNoIGRldGVjdGVkIGR1cmluZyBpbnB1dCBwYXJzaW5nIGhhbmRsZWQgc3VjY2Vzc2Z1bGx5Ci0gICAgYm9vbCAgICAgICAgICAgIGhhbmRsZV9taXNtYXRjaCgpOwotCi1wcml2YXRlOgotICAgIC8vIERhdGEgbWVtYmVycwotICAgIGRzdHJpbmcgICAgICAgICAgICAgICAgIG1fYnVmZmVyOwotICAgIGNzdHJpbmcgICAgICAgICAgICAgICAgIG1fd29ya19idWZmZXI7Ci0KLSAgICBjc3RyaW5nICAgICAgICAgICAgICAgICBtX3Rva2VuOwotICAgIGNzdHJpbmc6Oml0ZXJhdG9yICAgICAgIG1fY29tbWl0ZWRfZW5kOwotCi0gICAgc2hhcmVkX2FycmF5PGNoYXJfdHlwZT4gbV9yZW1haW5kZXI7Ci0gICAgc3RkOjpzaXplX3QgICAgICAgICAgICAgbV9yZW1haW5kZXJfc2l6ZTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGNsYQotCi19IC8vIG5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2lmbmRlZiBORE5CT09TVF9SVF9QQVJBTV9PRkZMSU5FCi0KLSMgIGRlZmluZSBORE5CT09TVF9SVF9QQVJBTV9JTkxJTkUgaW5saW5lCi0jICBpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2FyZ3ZfdHJhdmVyc2VyLmlwcD4KLQotI2VuZGlmCi0KLSNlbmRpZiAvLyBORE5CT09TVF9SVF9DTEFfQVJHVl9UUkFWRVJTRVJfSFBQXzA2MjYwNEdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2FyZ3ZfdHJhdmVyc2VyLmlwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9hcmd2X3RyYXZlcnNlci5pcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk5YzA0N2QuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2FyZ3ZfdHJhdmVyc2VyLmlwcAorKysgL2Rldi9udWxsCkBAIC0xLDIwOSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDQ5MzEyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBpbXBsZW1lbnRzIGZhY2lsaXR5IHRvIGhpZGUgaW5wdXQgdHJhdmVyc2luZyBkZXRhaWxzCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9SVF9DTEFfQVJHVl9UUkFWRVJTRVJfSVBQXzA3MDYwNEdFUgotI2RlZmluZSBORE5CT09TVF9SVF9DTEFfQVJHVl9UUkFWRVJTRVJfSVBQXzA3MDYwNEdFUgotCi0vLyBCb29zdC5SdW50aW1lLlBhcmFtZXRlcgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS90cmFjZS5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2FyZ3ZfdHJhdmVyc2VyLmhwcD4KLQotLy8gU1RMCi0jaW5jbHVkZSA8bWVtb3J5PgotI2luY2x1ZGUgPGNzdHJpbmc+Ci0KLSNpZmRlZiBORE5CT09TVF9OT19TVERDX05BTUVTUEFDRQotbmFtZXNwYWNlIHN0ZCB7IHVzaW5nIDo6bWVtY3B5OyB9Ci0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRSB7Ci0KLW5hbWVzcGFjZSBjbGEgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgcnVudGltZTo6Y2xhOjphcmd2X3RyYXZlcnNlciAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLU5ETkJPT1NUX1JUX1BBUkFNX0lOTElORQotYXJndl90cmF2ZXJzZXI6OmFyZ3ZfdHJhdmVyc2VyKCkKLTogcF9pZ25vcmVfbWlzbWF0Y2goIGZhbHNlICksIHBfc2VwYXJhdG9yKCBORE5CT09TVF9SVF9QQVJBTV9MSVRFUkFMKCAnICcgKSApCi17Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLU5ETkJPT1NUX1JUX1BBUkFNX0lOTElORSB2b2lkCi1hcmd2X3RyYXZlcnNlcjo6aW5pdCggaW50IGFyZ2MsIGNoYXJfdHlwZSoqIGFyZ3YgKQotewotICAgIGZvciggaW50IGluZGV4ID0gMTsgaW5kZXggPCBhcmdjOyArK2luZGV4ICkgewotICAgICAgICBtX2J1ZmZlciArPSBhcmd2W2luZGV4XTsKLSAgICAgICAgaWYoIGluZGV4ICE9IGFyZ2MtMSApCi0gICAgICAgICAgICBtX2J1ZmZlciArPSBORE5CT09TVF9SVF9QQVJBTV9MSVRFUkFMKCAnICcgKTsKLSAgICB9Ci0KLSAgICBtX3JlbWFpbmRlci5yZXNldCggbmV3IGNoYXJfdHlwZVttX2J1ZmZlci5zaXplKCkrMV0gKTsKLSAgICBtX3JlbWFpbmRlcl9zaXplICAgID0gMDsKLSAgICBtX3dvcmtfYnVmZmVyICAgICAgID0gbV9idWZmZXI7Ci0gICAgbV9jb21taXRlZF9lbmQgICAgICA9IG1fd29ya19idWZmZXIuYmVnaW4oKTsKLQotICAgIE5ETkJPT1NUX1JUX1BBUkFNX1RSQUNFKCAiSW5wdXQgYnVmZmVyOiAiIDw8IG1fYnVmZmVyICk7Ci0KLSAgICBuZXh0X3Rva2VuKCk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLU5ETkJPT1NUX1JUX1BBUkFNX0lOTElORSB2b2lkCi1hcmd2X3RyYXZlcnNlcjo6cmVtYWluZGVyKCBpbnQmIGFyZ2MsIGNoYXJfdHlwZSoqIGFyZ3YgKQotewotICAgIGFyZ2MgPSAxOwotICAgIHN0ZDo6c2l6ZV90IHBvcyA9IDA7Ci0gICAgd2hpbGUocG9zIDwgbV9yZW1haW5kZXJfc2l6ZSApIHsKLSAgICAgICAgYXJndlthcmdjKytdID0gbV9yZW1haW5kZXIuZ2V0KCkgKyBwb3M7Ci0KLSAgICAgICAgcG9zID0gc3RkOjpmaW5kKCBtX3JlbWFpbmRlci5nZXQoKSArIHBvcywgbV9yZW1haW5kZXIuZ2V0KCkgKyBtX3JlbWFpbmRlcl9zaXplLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9SVF9QQVJBTV9MSVRFUkFMKCAnICcgKSApIC0gbV9yZW1haW5kZXIuZ2V0KCk7Ci0gICAgICAgIG1fcmVtYWluZGVyW3BvcysrXSA9IE5ETkJPT1NUX1JUX1BBUkFNX0xJVEVSQUwoICdcMCcgKTsKLSAgICB9Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLU5ETkJPT1NUX1JUX1BBUkFNX0lOTElORSBjc3RyaW5nCi1hcmd2X3RyYXZlcnNlcjo6dG9rZW4oKSBjb25zdAotewotICAgIHJldHVybiBtX3Rva2VuOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1ORE5CT09TVF9SVF9QQVJBTV9JTkxJTkUgdm9pZAotYXJndl90cmF2ZXJzZXI6Om5leHRfdG9rZW4oKQotewotICAgIGlmKCBtX3dvcmtfYnVmZmVyLmlzX2VtcHR5KCkgKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3dvcmtfYnVmZmVyLnRyaW1fbGVmdCggbV90b2tlbi5zaXplKCkgKTsgLy8gc2tpcCByZW1haW5kZXIgb2YgY3VycmVudCB0b2tlbgotCi0gICAgaWYoIG1fd29ya19idWZmZXIuc2l6ZSgpICE9IG1fYnVmZmVyLnNpemUoKSApIC8vICEhIGlzIHRoZXJlIGEgYmV0dGVyIHdheSB0byBpZGVudGlmeSBmaXJzdCB0b2tlbgotICAgICAgICBtX3dvcmtfYnVmZmVyLnRyaW1fbGVmdCggMSApOyAvLyBza2lwIHNlcGFyYXRvciBpZiBub3QgZmlyc3QgdG9rZW47Ci0KLSAgICBtX3Rva2VuLmFzc2lnbiggbV93b3JrX2J1ZmZlci5iZWdpbigpLAotICAgICAgICAgICAgICAgICAgICBzdGQ6OmZpbmQoIG1fd29ya19idWZmZXIuYmVnaW4oKSwgbV93b3JrX2J1ZmZlci5lbmQoKSwgcF9zZXBhcmF0b3IgKSApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1ORE5CT09TVF9SVF9QQVJBTV9JTkxJTkUgY3N0cmluZwotYXJndl90cmF2ZXJzZXI6OmlucHV0KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV93b3JrX2J1ZmZlcjsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotTkROQk9PU1RfUlRfUEFSQU1fSU5MSU5FIHZvaWQKLWFyZ3ZfdHJhdmVyc2VyOjp0cmltKCBzdGQ6OnNpemVfdCBzaXplICkKLXsKLSAgICBtX3dvcmtfYnVmZmVyLnRyaW1fbGVmdCggc2l6ZSApOwotCi0gICAgaWYoIHNpemUgPD0gbV90b2tlbi5zaXplKCkgKQotICAgICAgICBtX3Rva2VuLnRyaW1fbGVmdCggc2l6ZSApOwotICAgIGVsc2UgewotICAgICAgICBtX3Rva2VuLmFzc2lnbiggbV93b3JrX2J1ZmZlci5iZWdpbigpLAotICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpmaW5kKCBtX3dvcmtfYnVmZmVyLmJlZ2luKCksIG1fd29ya19idWZmZXIuZW5kKCksIHBfc2VwYXJhdG9yICkgKTsKLSAgICB9Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLU5ETkJPT1NUX1JUX1BBUkFNX0lOTElORSBib29sCi1hcmd2X3RyYXZlcnNlcjo6bWF0Y2hfZnJvbnQoIGNzdHJpbmcgc3RyICkKLXsKLSAgICByZXR1cm4gbV93b3JrX2J1ZmZlci5zaXplKCkgPCBzdHIuc2l6ZSgpID8gZmFsc2UgOiBtX3dvcmtfYnVmZmVyLnN1YnN0ciggMCwgc3RyLnNpemUoKSApID09IHN0cjsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotTkROQk9PU1RfUlRfUEFSQU1fSU5MSU5FIGJvb2wKLWFyZ3ZfdHJhdmVyc2VyOjptYXRjaF9mcm9udCggY2hhcl90eXBlIGMgKQotewotICAgIHJldHVybiBmaXJzdF9jaGFyKCBtX3dvcmtfYnVmZmVyICkgPT0gYzsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotTkROQk9PU1RfUlRfUEFSQU1fSU5MSU5FIGJvb2wKLWFyZ3ZfdHJhdmVyc2VyOjplb2koKSBjb25zdAotewotICAgIHJldHVybiBtX3dvcmtfYnVmZmVyLmlzX2VtcHR5KCk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLU5ETkJPT1NUX1JUX1BBUkFNX0lOTElORSB2b2lkCi1hcmd2X3RyYXZlcnNlcjo6Y29tbWl0KCkKLXsKLSAgICBtX2NvbW1pdGVkX2VuZCA9IG1fd29ya19idWZmZXIuYmVnaW4oKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotTkROQk9PU1RfUlRfUEFSQU1fSU5MSU5FIHZvaWQKLWFyZ3ZfdHJhdmVyc2VyOjpyb2xsYmFjaygpCi17Ci0gICAgbV93b3JrX2J1ZmZlci5hc3NpZ24oIG1fY29tbWl0ZWRfZW5kLCBtX3dvcmtfYnVmZmVyLmVuZCgpICk7Ci0gICAgbV90b2tlbi5hc3NpZ24oIG1fd29ya19idWZmZXIuYmVnaW4oKSwKLSAgICAgICAgICAgICAgICAgICAgc3RkOjpmaW5kKCBtX3dvcmtfYnVmZmVyLmJlZ2luKCksIG1fd29ya19idWZmZXIuZW5kKCksIHBfc2VwYXJhdG9yICkgKTsKLQotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1ORE5CT09TVF9SVF9QQVJBTV9JTkxJTkUgc3RkOjpzaXplX3QKLWFyZ3ZfdHJhdmVyc2VyOjppbnB1dF9wb3MoKSBjb25zdAotewotICAgIHJldHVybiBtX3dvcmtfYnVmZmVyLmJlZ2luKCkgLSBtX2NvbW1pdGVkX2VuZDsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotTkROQk9PU1RfUlRfUEFSQU1fSU5MSU5FIGJvb2wKLWFyZ3ZfdHJhdmVyc2VyOjpoYW5kbGVfbWlzbWF0Y2goKQotewotICAgIGlmKCAhcF9pZ25vcmVfbWlzbWF0Y2ggKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBzdGQ6Om1lbWNweSggbV9yZW1haW5kZXIuZ2V0KCkgKyBtX3JlbWFpbmRlcl9zaXplLCB0b2tlbigpLmJlZ2luKCksIHRva2VuKCkuc2l6ZSgpICk7Ci0gICAgbV9yZW1haW5kZXJfc2l6ZSArPSB0b2tlbigpLnNpemUoKTsKLSAgICBtX3JlbWFpbmRlclttX3JlbWFpbmRlcl9zaXplKytdID0gcF9zZXBhcmF0b3I7Ci0KLSAgICBuZXh0X3Rva2VuKCk7Ci0gICAgY29tbWl0KCk7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2UgY2xhCi0KLX0gLy8gbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfUlRfQ0xBX0FSR1ZfVFJBVkVSU0VSX0lQUF8wNzA2MDRHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9iYXNpY19wYXJhbWV0ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2Jhc2ljX3BhcmFtZXRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc5ZWMyYjguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2Jhc2ljX3BhcmFtZXRlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw4NSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDU0NjMzICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBnZW5lcmljIGN1c3RvbSBwYXJhbWV0ZXIgZ2VuZXJhdG9yCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9SVF9DTEFfQkFTSUNfUEFSQU1FVEVSX0hQUF8wNjI2MDRHRVIKLSNkZWZpbmUgTkROQk9PU1RfUlRfQ0xBX0JBU0lDX1BBUkFNRVRFUl9IUFBfMDYyNjA0R0VSCi0KLS8vIEJvb3N0LlJ1bnRpbWUuUGFyYW1ldGVyCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NvbmZpZy5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL3R5cGVkX3BhcmFtZXRlci5ocHA+Ci0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J0dGkuaHBwPgotCi0vLyBCb29zdAotI2luY2x1ZGUgPG5kbmJvb3N0L3V0aWxpdHkvYmFzZV9mcm9tX21lbWJlci5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UgewotCi1uYW1lc3BhY2UgY2xhIHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgcnVudGltZTo6Y2xhOjpiYXNpY19wYXJhbWV0ZXIgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBJZFBvbGljeT4KLWNsYXNzIGJhc2ljX3BhcmFtZXRlciA6IHByaXZhdGUgYmFzZV9mcm9tX21lbWJlcjxJZFBvbGljeT4sIHB1YmxpYyB0eXBlZF9wYXJhbWV0ZXI8VD4gewotcHVibGljOgotICAgIC8vIENvbnN0cnVjdG9ycwotICAgIGV4cGxpY2l0ICAgIGJhc2ljX3BhcmFtZXRlciggY3N0cmluZyBuICkgCi0gICAgOiBiYXNlX2Zyb21fbWVtYmVyPElkUG9saWN5PigpCi0gICAgLCB0eXBlZF9wYXJhbWV0ZXI8VD4oIGJhc2VfZnJvbV9tZW1iZXI8SWRQb2xpY3k+OjptZW1iZXIgKQotICAgIHsKLSAgICAgICAgdGhpcy0+YWNjZXB0X21vZGlmaWVyKCBuYW1lID0gbiApOwotICAgIH0KLQotICAgIC8vIHBhcmFtZXRlciBwcm9wZXJ0aWVzIG1vZGlmaWNhdGlvbgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1vZGlmaWVyPgotICAgIHZvaWQgICAgICAgIGFjY2VwdF9tb2RpZmllciggTW9kaWZpZXIgY29uc3QmIG0gKQotICAgIHsKLSAgICAgICAgdHlwZWRfcGFyYW1ldGVyPFQ+OjphY2NlcHRfbW9kaWZpZXIoIG0gKTsKLQotICAgICAgICBiYXNlX2Zyb21fbWVtYmVyPElkUG9saWN5Pjo6bWVtYmVyLmFjY2VwdF9tb2RpZmllciggbSApOwotICAgIH0KLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNkZWZpbmUgTkROQk9PU1RfUlRfQ0xBX05BTUVEX1BBUkFNX0dFTkVSQVRPUlMoIHBhcmFtX3R5cGUgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLWlubGluZSBzaGFyZWRfcHRyPHBhcmFtX3R5cGUgIyMgX3Q8VD4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXBhcmFtX3R5cGUoIGNzdHJpbmcgbmFtZSA9IGNzdHJpbmcoKSApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICByZXR1cm4gc2hhcmVkX3B0cjxwYXJhbV90eXBlICMjIF90PFQ+ID4oIG5ldyBwYXJhbV90eXBlICMjIF90PFQ+KCBuYW1lICkgKTsgICAgICAgICAgICAgICAgIFwKLX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLWlubGluZSBzaGFyZWRfcHRyPHBhcmFtX3R5cGUgIyMgX3Q8Y3N0cmluZz4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXBhcmFtX3R5cGUoIGNzdHJpbmcgbmFtZSA9IGNzdHJpbmcoKSApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICByZXR1cm4gc2hhcmVkX3B0cjxwYXJhbV90eXBlICMjIF90PGNzdHJpbmc+ID4oIG5ldyBwYXJhbV90eXBlICMjIF90PGNzdHJpbmc+KCBuYW1lICkgKTsgICAgIFwKLX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS8qKi8KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2UgY2xhCi0KLX0gLy8gbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfUlRfQ0xBX0JBU0lDX1BBUkFNRVRFUl9IUFBfMDYyNjA0R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvY2hhcl9wYXJhbWV0ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2NoYXJfcGFyYW1ldGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmY5YWJjYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvY2hhcl9wYXJhbWV0ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTggKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1NDYzMyAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogZGVmaW5lcyBtb2RlbCBvZiBwYXJhbWV0ZXIgd2l0aCBzaW5nbGUgY2hhciBuYW1lCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9SVF9DTEFfQ0hBUl9QQVJBTUVURVJfSFBQXzA2MjYwNEdFUgotI2RlZmluZSBORE5CT09TVF9SVF9DTEFfQ0hBUl9QQVJBTUVURVJfSFBQXzA2MjYwNEdFUgotCi0vLyBCb29zdC5SdW50aW1lLlBhcmFtZXRlcgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS92YWxpZGF0aW9uLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvYmFzaWNfcGFyYW1ldGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2lkX3BvbGljeS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UgewotCi1uYW1lc3BhY2UgY2xhIHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgY2hhcl9uYW1lX3BvbGljeSAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1jbGFzcyBjaGFyX25hbWVfcG9saWN5IDogcHVibGljIGJhc2ljX25hbWluZ19wb2xpY3kgewotcHVibGljOgotICAgIC8vIENvbnN0cnVjdG9yCi0gICAgY2hhcl9uYW1lX3BvbGljeSgpOwotICAgIE5ETkJPT1NUX1JUX1BBUkFNX1VOTkVFREVEX1ZJUlRVQUwgfmNoYXJfbmFtZV9wb2xpY3koKSB7fQotCi0gICAgLy8gcG9saWN5IGludGVyZmFjZQotICAgIHZpcnR1YWwgYm9vbCAgICBjb25mbGljdF93aXRoKCBpZGVudGlmaWNhdGlvbl9wb2xpY3kgY29uc3QmICkgY29uc3Q7Ci0KLSAgICAvLyBBY2NlcHQgbW9kaWZpZXIKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBNb2RpZmllcj4KLSAgICB2b2lkICAgICAgICAgICAgYWNjZXB0X21vZGlmaWVyKCBNb2RpZmllciBjb25zdCYgbSApCi0gICAgewotICAgICAgICBiYXNpY19uYW1pbmdfcG9saWN5OjphY2NlcHRfbW9kaWZpZXIoIG0gKTsKLQotICAgICAgICBORE5CT09TVF9SVF9QQVJBTV9WQUxJREFURV9MT0dJQyggcF9uYW1lLT5zaXplKCkgPD0gMSwgIkludmFsaWQgcGFyYW1ldGVyIG5hbWUgIiAgPDwgcF9uYW1lICk7Ci0gICAgfQotfTsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgIHJ1bnRpbWU6OmNsYTo6Y2hhcl9wYXJhbWV0ZXIgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotY2xhc3MgY2hhcl9wYXJhbWV0ZXJfdCA6IHB1YmxpYyBiYXNpY19wYXJhbWV0ZXI8VCxjaGFyX25hbWVfcG9saWN5PiB7Ci0gICAgdHlwZWRlZiBiYXNpY19wYXJhbWV0ZXI8VCxjaGFyX25hbWVfcG9saWN5PiBiYXNlOwotcHVibGljOgotICAgIC8vIENvbnN0cnVjdG9ycwotICAgIGV4cGxpY2l0ICAgIGNoYXJfcGFyYW1ldGVyX3QoIGNoYXJfdHlwZSBuYW1lICkgOiBiYXNlKCBjc3RyaW5nKCAmbmFtZSwgMSApICkge30KLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgc2hhcmVkX3B0cjxjaGFyX3BhcmFtZXRlcl90PFQ+ID4KLWNoYXJfcGFyYW1ldGVyKCBjaGFyX3R5cGUgbmFtZSApCi17Ci0gICAgcmV0dXJuIHNoYXJlZF9wdHI8Y2hhcl9wYXJhbWV0ZXJfdDxUPiA+KCBuZXcgY2hhcl9wYXJhbWV0ZXJfdDxUPiggbmFtZSApICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLWlubGluZSBzaGFyZWRfcHRyPGNoYXJfcGFyYW1ldGVyX3Q8Y3N0cmluZz4gPgotY2hhcl9wYXJhbWV0ZXIoIGNoYXJfdHlwZSBuYW1lICkKLXsKLSAgICByZXR1cm4gc2hhcmVkX3B0cjxjaGFyX3BhcmFtZXRlcl90PGNzdHJpbmc+ID4oIG5ldyBjaGFyX3BhcmFtZXRlcl90PGNzdHJpbmc+KCBuYW1lICkgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2UgY2xhCi0KLX0gLy8gbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaWZuZGVmIE5ETkJPT1NUX1JUX1BBUkFNX09GRkxJTkUKLQotIyAgZGVmaW5lIE5ETkJPT1NUX1JUX1BBUkFNX0lOTElORSBpbmxpbmUKLSMgIGluY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvY2hhcl9wYXJhbWV0ZXIuaXBwPgotCi0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1JUX0NMQV9DSEFSX1BBUkFNRVRFUl9IUFBfMDYyNjA0R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvY2hhcl9wYXJhbWV0ZXIuaXBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2NoYXJfcGFyYW1ldGVyLmlwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2IxZGI2My4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvY2hhcl9wYXJhbWV0ZXIuaXBwCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1NDYzMyAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogaW1wbGVtZW50cyBtb2RlbCBvZiBwYXJhbWV0ZXIgd2l0aCBzaW5nbGUgY2hhciBuYW1lCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9SVF9DTEFfQ0hBUl9QQVJBTUVURVJfSVBQXzA2MjkwNEdFUgotI2RlZmluZSBORE5CT09TVF9SVF9DTEFfQ0hBUl9QQVJBTUVURVJfSVBQXzA2MjkwNEdFUgotCi0vLyBCb29zdC5SdW50aW1lLlBhcmFtZXRlcgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jb25maWcuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9jaGFyX3BhcmFtZXRlci5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UgewotCi1uYW1lc3BhY2UgY2xhIHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgY2hhcl9uYW1lX3BvbGljeSAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1ORE5CT09TVF9SVF9QQVJBTV9JTkxJTkUgCi1jaGFyX25hbWVfcG9saWN5OjpjaGFyX25hbWVfcG9saWN5KCkKLTogYmFzaWNfbmFtaW5nX3BvbGljeSggcnR0aTo6dHlwZV9pZDxjaGFyX25hbWVfcG9saWN5PigpICkKLXsKLSAgICBhc3NpZ25fb3AoIHBfcHJlZml4LnZhbHVlLCBORE5CT09TVF9SVF9QQVJBTV9DU1RSSU5HX0xJVEVSQUwoICItIiApLCAwICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLU5ETkJPT1NUX1JUX1BBUkFNX0lOTElORSBib29sCi1jaGFyX25hbWVfcG9saWN5Ojpjb25mbGljdF93aXRoKCBpZGVudGlmaWNhdGlvbl9wb2xpY3kgY29uc3QmIGlkICkgY29uc3QKLXsKLSAgICByZXR1cm4gaWQucF90eXBlX2lkID09IHBfdHlwZV9pZCAmJiAKLSAgICAgICAgICAgcF9uYW1lID09IHN0YXRpY19jYXN0PGNoYXJfbmFtZV9wb2xpY3kgY29uc3QmPiggaWQgKS5wX25hbWU7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIGNsYQotCi19IC8vIG5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1JUX0NMQV9DSEFSX1BBUkFNRVRFUl9JUFBfMDYyOTA0R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvZGV0YWlsL2FyZ3VtZW50X3ZhbHVlX3VzYWdlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9kZXRhaWwvYXJndW1lbnRfdmFsdWVfdXNhZ2UuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhODA1MGIyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9kZXRhaWwvYXJndW1lbnRfdmFsdWVfdXNhZ2UuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODIgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIFBlcm1pc3Npb24gdG8gY29weSwgdXNlLCBtb2RpZnksIHNlbGwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZQotLy8gIGlzIGdyYW50ZWQgcHJvdmlkZWQgdGhpcyBjb3B5cmlnaHQgbm90aWNlIGFwcGVhcnMgaW4gYWxsIGNvcGllcy4KLS8vICBUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBleHByZXNzIG9yIGltcGxpZWQgd2FycmFudHksCi0vLyAgYW5kIHdpdGggbm8gY2xhaW0gYXMgdG8gaXRzIHN1aXRhYmlsaXR5IGZvciBhbnkgcHVycG9zZS4KLSAgCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnIGZvciB1cGRhdGVzLCBkb2N1bWVudGF0aW9uLCBhbmQgcmV2aXNpb24gaGlzdG9yeS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDU0NjMzICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBhcmd1bWVudCB1c2FnZSBwcmludGluZyBoZWxwZXJzCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9SVF9DTEFfQVJHVU1FTlRfVkFMVUVfVVNBR0VfSFBQXzA2MjYwNEdFUgotI2RlZmluZSBORE5CT09TVF9SVF9DTEFfQVJHVU1FTlRfVkFMVUVfVVNBR0VfSFBQXzA2MjYwNEdFUgotCi0vLyBCb29zdC5SdW50aW1lLlBhcmFtZXRlcgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvYXJndl90cmF2ZXJzZXIuaHBwPgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9iYXNpY19jc3RyaW5nL2lvLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2Jhc2ljX2NzdHJpbmcvY29tcGFyZS5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9sZXhpY2FsX2Nhc3QuaHBwPgotCi0vLyBTVEwKLS8vICEhIGNhbiB3ZSBlbGltaW5hdGUgdGhlc2UgaW5jbHVkZXM/Ci0jaW5jbHVkZSA8bGlzdD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRSB7Ci0KLW5hbWVzcGFjZSBjbGEgewotCi1uYW1lc3BhY2UgcnRfY2xhX2RldGFpbCB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICBhcmd1bWVudF92YWx1ZV91c2FnZSAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotLy8gZ2VuZXJpYyBjYXNlCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotaW5saW5lIHZvaWQKLWFyZ3VtZW50X3ZhbHVlX3VzYWdlKCBmb3JtYXRfc3RyZWFtJiBmcywgbG9uZywgVCogPSAwICkKLXsKLSAgICBmcyA8PCBORE5CT09TVF9SVF9QQVJBTV9DU1RSSU5HX0xJVEVSQUwoICI8dmFsdWU+IiApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyBzcGVjaWFsaXphdGlvbiBmb3IgbGlzdCBvZiB2YWx1ZXMKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgdm9pZAotYXJndW1lbnRfdmFsdWVfdXNhZ2UoIGZvcm1hdF9zdHJlYW0mIGZzLCBpbnQsIHN0ZDo6bGlzdDxUPiogPSAwICkKLXsKLSAgICBmcyA8PCBORE5CT09TVF9SVF9QQVJBTV9DU1RSSU5HX0xJVEVSQUwoICIoPHZhbHVlMT4sIC4uLiwgPHZhbHVlTj4pIiApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyBzcGVjaWFsaXphdGlvbiBmb3IgdHlwZSBib29sCi1pbmxpbmUgdm9pZAotYXJndW1lbnRfdmFsdWVfdXNhZ2UoIGZvcm1hdF9zdHJlYW0mIGZzLCAgaW50LCBib29sKiA9IDAgKQotewotICAgIGZzIDw8IE5ETkJPT1NUX1JUX1BBUkFNX0NTVFJJTkdfTElURVJBTCggInllc3x5fG5vfG4iICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIHJ0X2NsYV9kZXRhaWwKLQotfSAvLyBuYW1lc3BhY2UgY2xhCi0KLX0gLy8gbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfUlRfQ0xBX0FSR1VNRU5UX1ZBTFVFX1VTQUdFX0hQUF8wNjI2MDRHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9kdWFsX25hbWVfcGFyYW1ldGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9kdWFsX25hbWVfcGFyYW1ldGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGM4YzAwZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvZHVhbF9uYW1lX3BhcmFtZXRlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NiArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDU0NjMzICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBkZWZpbmVzIG1vZGVsIG9mIGdlbmVyaWMgcGFyYW1ldGVyIHdpdGggZHVhbCBuYW1pbmcKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1JUX0NMQV9EVUFMX05BTUVfUEFSQU1FVEVSX0hQUF8wNjI2MDRHRVIKLSNkZWZpbmUgTkROQk9PU1RfUlRfQ0xBX0RVQUxfTkFNRV9QQVJBTUVURVJfSFBQXzA2MjYwNEdFUgotCi0vLyBCb29zdC5SdW50aW1lLlBhcmFtZXRlcgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jb25maWcuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9uYW1lZF9wYXJhbWV0ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvY2hhcl9wYXJhbWV0ZXIuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFIHsKLQotbmFtZXNwYWNlIGNsYSB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgIGR1YWxfbmFtZV9wb2xpY3kgICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotY2xhc3MgZHVhbF9uYW1lX3BvbGljeSA6IHB1YmxpYyBkdWFsX2lkX3BvbGljeTxkdWFsX25hbWVfcG9saWN5LHN0cmluZ19uYW1lX3BvbGljeSxjaGFyX25hbWVfcG9saWN5PiB7Ci1wdWJsaWM6Ci0gICAgZHVhbF9uYW1lX3BvbGljeSgpOwotCi0gICAgLy8gQWNjZXB0IG1vZGlmaWVyCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgTW9kaWZpZXI+Ci0gICAgdm9pZCAgICBhY2NlcHRfbW9kaWZpZXIoIE1vZGlmaWVyIGNvbnN0JiBtICkKLSAgICB7Ci0gICAgICAgIGlmKCBtLmhhcyggcHJlZml4ICkgKSB7Ci0gICAgICAgICAgICBzZXRfcHJlZml4KCBtW3ByZWZpeF0gKTsKLSAgICAgICAgICAgIG0uZXJhc2UoIHByZWZpeCApOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYoIG0uaGFzKCBuYW1lICkgKSB7Ci0gICAgICAgICAgICBzZXRfbmFtZSggbVtuYW1lXSApOwotICAgICAgICAgICAgbS5lcmFzZSggbmFtZSApOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYoIG0uaGFzKCBzZXBhcmF0b3IgKSApIHsKLSAgICAgICAgICAgIHNldF9zZXBhcmF0b3IoIG1bc2VwYXJhdG9yXSApOwotICAgICAgICAgICAgbS5lcmFzZSggc2VwYXJhdG9yICk7Ci0gICAgICAgIH0KLQotICAgICAgICBkdWFsX2lkX3BvbGljeTxkdWFsX25hbWVfcG9saWN5LHN0cmluZ19uYW1lX3BvbGljeSxjaGFyX25hbWVfcG9saWN5Pjo6YWNjZXB0X21vZGlmaWVyKCBtICk7Ci0gICAgfQotcHJpdmF0ZToKLSAgICB2b2lkICAgIHNldF9wcmVmaXgoIGNzdHJpbmcgKTsKLSAgICB2b2lkICAgIHNldF9uYW1lKCBjc3RyaW5nICk7Ci0gICAgdm9pZCAgICBzZXRfc2VwYXJhdG9yKCBjc3RyaW5nICk7Ci19OwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgcnVudGltZTo6Y2xhOjpkdWFsX25hbWVfcGFyYW1ldGVyICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1jbGFzcyBkdWFsX25hbWVfcGFyYW1ldGVyX3QgOiBwdWJsaWMgYmFzaWNfcGFyYW1ldGVyPFQsZHVhbF9uYW1lX3BvbGljeT4gewotICAgIHR5cGVkZWYgYmFzaWNfcGFyYW1ldGVyPFQsZHVhbF9uYW1lX3BvbGljeT4gYmFzZTsKLXB1YmxpYzoKLSAgICAvLyBDb25zdHJ1Y3RvcnMKLSAgICBleHBsaWNpdCAgICBkdWFsX25hbWVfcGFyYW1ldGVyX3QoIGNzdHJpbmcgbmFtZSApIDogYmFzZSggbmFtZSApIHt9Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1ORE5CT09TVF9SVF9DTEFfTkFNRURfUEFSQU1fR0VORVJBVE9SUyggZHVhbF9uYW1lX3BhcmFtZXRlciApCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIGNsYQotCi19IC8vIG5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2lmbmRlZiBORE5CT09TVF9SVF9QQVJBTV9PRkZMSU5FCi0KLSMgIGRlZmluZSBORE5CT09TVF9SVF9QQVJBTV9JTkxJTkUgaW5saW5lCi0jICBpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2R1YWxfbmFtZV9wYXJhbWV0ZXIuaXBwPgotCi0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1JUX0NMQV9EVUFMX05BTUVfUEFSQU1FVEVSX0hQUF8wNjI2MDRHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9kdWFsX25hbWVfcGFyYW1ldGVyLmlwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9kdWFsX25hbWVfcGFyYW1ldGVyLmlwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWNhZjM4Ni4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvZHVhbF9uYW1lX3BhcmFtZXRlci5pcHAKKysrIC9kZXYvbnVsbApAQCAtMSw5MCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDQ5MzEyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBpbXBsZW1lbnRzIG1vZGVsIG9mIGdlbmVyaWMgcGFyYW1ldGVyIHdpdGggZHVhbCBuYW1pbmcKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1JUX0NMQV9EVUFMX05BTUVfUEFSQU1FVEVSX0lQUF8wNjI5MDRHRVIKLSNkZWZpbmUgTkROQk9PU1RfUlRfQ0xBX0RVQUxfTkFNRV9QQVJBTUVURVJfSVBQXzA2MjkwNEdFUgotCi0vLyBCb29zdC5SdW50aW1lLlBhcmFtZXRlcgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS92YWxpZGF0aW9uLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvZHVhbF9uYW1lX3BhcmFtZXRlci5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UgewotCi1uYW1lc3BhY2UgY2xhIHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgZHVhbF9uYW1lX3BvbGljeSAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1ORE5CT09TVF9SVF9QQVJBTV9JTkxJTkUgCi1kdWFsX25hbWVfcG9saWN5OjpkdWFsX25hbWVfcG9saWN5KCkKLXsKLSAgICBtX3ByaW1hcnkuYWNjZXB0X21vZGlmaWVyKCBwcmVmaXggPSBORE5CT09TVF9SVF9QQVJBTV9DU1RSSU5HX0xJVEVSQUwoICItLSIgKSApOwotICAgIG1fc2Vjb25kYXJ5LmFjY2VwdF9tb2RpZmllciggcHJlZml4ID0gTkROQk9PU1RfUlRfUEFSQU1fQ1NUUklOR19MSVRFUkFMKCAiLSIgKSApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1uYW1lc3BhY2UgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBLPgotaW5saW5lIHZvaWQKLXNwbGl0KCBzdHJpbmdfbmFtZV9wb2xpY3kmIHNucCwgY2hhcl9uYW1lX3BvbGljeSYgY25wLCBjc3RyaW5nIHNyYywgSyBjb25zdCYgayApCi17Ci0gICAgY3N0cmluZzo6aXRlcmF0b3Igc2VwID0gc3RkOjpmaW5kKCBzcmMuYmVnaW4oKSwgc3JjLmVuZCgpLCBORE5CT09TVF9SVF9QQVJBTV9MSVRFUkFMKCAnfCcgKSApOwotICAgIAotICAgIGlmKCBzZXAgIT0gc3JjLmJlZ2luKCkgKQotICAgICAgICBzbnAuYWNjZXB0X21vZGlmaWVyKCBrID0gY3N0cmluZyggc3JjLmJlZ2luKCksIHNlcCApICk7Ci0KLSAgICBpZiggc2VwICE9IHNyYy5lbmQoKSApCi0gICAgICAgIGNucC5hY2NlcHRfbW9kaWZpZXIoIGsgPSBjc3RyaW5nKCBzZXArMSwgc3JjLmVuZCgpICkgKTsKLX0KLQotfSAvLyBsb2NhbCBuYW1lc3BhY2UKLQotTkROQk9PU1RfUlRfUEFSQU1fSU5MSU5FIHZvaWQKLWR1YWxfbmFtZV9wb2xpY3k6OnNldF9wcmVmaXgoIGNzdHJpbmcgc3JjICkKLXsKLSAgICBzcGxpdCggbV9wcmltYXJ5LCBtX3NlY29uZGFyeSwgc3JjLCBwcmVmaXggKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotTkROQk9PU1RfUlRfUEFSQU1fSU5MSU5FIHZvaWQKLWR1YWxfbmFtZV9wb2xpY3k6OnNldF9uYW1lKCBjc3RyaW5nIHNyYyApCi17Ci0gICAgc3BsaXQoIG1fcHJpbWFyeSwgbV9zZWNvbmRhcnksIHNyYywgbmFtZSApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1ORE5CT09TVF9SVF9QQVJBTV9JTkxJTkUgdm9pZAotZHVhbF9uYW1lX3BvbGljeTo6c2V0X3NlcGFyYXRvciggY3N0cmluZyBzcmMgKQotewotICAgIHNwbGl0KCBtX3ByaW1hcnksIG1fc2Vjb25kYXJ5LCBzcmMsIHNlcGFyYXRvciApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSBjbGEKLQotfSAvLyBuYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9SVF9DTEFfRFVBTF9OQU1FX1BBUkFNRVRFUl9JUFBfMDYyOTA0R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9md2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMjIxODA4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9md2QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA0OTMxMiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogY2xhIHN1YnN5c3RlbSBmb3J3YXJkIGRlY2xhcmF0aW9ucwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfUlRfQ0xBX0ZXRF9IUFBfMDYyNjA0R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1JUX0NMQV9GV0RfSFBQXzA2MjYwNEdFUgotCi0vLyBCb29zdC5SdW50aW1lLlBhcmFtZXRlcgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jb25maWcuaHBwPgotCi0vLyBCb29zdAotI2luY2x1ZGUgPG5kbmJvb3N0L3NoYXJlZF9wdHIuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFIHsKLQotbmFtZXNwYWNlIGNsYSB7Ci0KLWNsYXNzIHBhcnNlcjsKLWNsYXNzIHBhcmFtZXRlcjsKLXR5cGVkZWYgc2hhcmVkX3B0cjxwYXJhbWV0ZXI+IHBhcmFtZXRlcl9wdHI7Ci1jbGFzcyBuYW1pbmdfcG9saWN5OwotdHlwZWRlZiBzaGFyZWRfcHRyPG5hbWluZ19wb2xpY3k+IG5hbWluZ19wb2xpY3lfcHRyOwotY2xhc3MgYXJndl90cmF2ZXJzZXI7Ci0KLW5hbWVzcGFjZSBydF9jbGFfZGV0YWlsIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgY29uc3RfZ2VuZXJhdG9yOwotdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgcmVmX2dlbmVyYXRvcjsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgYXNzaWduZXI7Ci0KLWNsYXNzIG5hbWVkX3BhcmFtZXRlcl9iYXNlOwotY2xhc3MgcG9zaXRpb25hbF9wYXJhbWV0ZXJfYmFzZTsKLQotfSAvLyBuYW1lc3BhY2UgcnRfY2xhX2RldGFpbAotCi19IC8vIG5hbWVzcGFjZSBjbGEKLQotfSAvLyBuYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9SVF9DTEFfRldEX0hQUF8wNjI2MDRHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9pZF9wb2xpY3kuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2lkX3BvbGljeS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJmNTg3YjQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2lkX3BvbGljeS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDUgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZQotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTc5OTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IHNvbWUgZ2VuZXJpYyBpZGVudGlmaWNhdGlvbiBwb2xpY2llcyBkZWZpbml0aW9uCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9SVF9DTEFfSURfUE9MSUNZX0hQUF8wNjI2MDRHRVIKLSNkZWZpbmUgTkROQk9PU1RfUlRfQ0xBX0lEX1BPTElDWV9IUFBfMDYyNjA0R0VSCi0KLS8vIEJvb3N0LlJ1bnRpbWUuUGFyYW1ldGVyCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NvbmZpZy5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9tb2RpZmllci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9hcmd2X3RyYXZlcnNlci5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2lmYWNlL2lkX3BvbGljeS5ocHA+Ci0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2NsYXNzX3Byb3BlcnRpZXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnR0aS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UgewotCi1uYW1lc3BhY2UgY2xhIHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgbmFtaW5nX3BvbGljeV9iYXNlICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gbW9kZWw6IDxwcmVmaXg+IDxuYW1lPiA8c2VwYXJ0b3I+Ci0KLWNsYXNzIGJhc2ljX25hbWluZ19wb2xpY3kgOiBwdWJsaWMgaWRlbnRpZmljYXRpb25fcG9saWN5IHsKLXB1YmxpYzoKLSAgICAvLyBQdWJsaWMgcHJvcGVydGllcwotICAgIHVuaXRfdGVzdDo6cmVhZHdyaXRlX3Byb3BlcnR5PGRzdHJpbmc+ICAgIHBfcHJlZml4OwotICAgIHVuaXRfdGVzdDo6cmVhZHdyaXRlX3Byb3BlcnR5PGRzdHJpbmc+ICAgIHBfbmFtZTsKLSAgICB1bml0X3Rlc3Q6OnJlYWR3cml0ZV9wcm9wZXJ0eTxkc3RyaW5nPiAgICBwX3NlcGFyYXRvcjsKLQotICAgIC8vIFBvbGljeSBpbnRlcmZhY2UKLSAgICB2aXJ0dWFsIGJvb2wgICAgcmVzcG9uZHNfdG8oIGNzdHJpbmcgbmFtZSApIGNvbnN0ICAgICAgIHsgcmV0dXJuIHBfbmFtZSA9PSBuYW1lOyB9Ci0gICAgdmlydHVhbCBjc3RyaW5nIGlkXzJfcmVwb3J0KCkgY29uc3QgICAgICAgICAgICAgICAgICAgICB7IHJldHVybiBwX25hbWUuZ2V0KCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgICAgdXNhZ2VfaW5mbyggZm9ybWF0X3N0cmVhbSYgZnMgKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgICAgbWF0Y2hpbmcoIHBhcmFtZXRlciBjb25zdCYgcCwgYXJndl90cmF2ZXJzZXImIHRyLCBib29sIHByaW1hcnkgKSBjb25zdDsKLQotICAgIC8vIEFjY2VwdCBtb2RpZmllcgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1vZGlmaWVyPgotICAgIHZvaWQgICAgICAgICAgICBhY2NlcHRfbW9kaWZpZXIoIE1vZGlmaWVyIGNvbnN0JiBtICkKLSAgICB7Ci0gICAgICAgIG5mcDo6b3B0aW9uYWxseV9hc3NpZ24oIHBfcHJlZml4LnZhbHVlLCAgICBtLCBwcmVmaXggKTsKLSAgICAgICAgbmZwOjpvcHRpb25hbGx5X2Fzc2lnbiggcF9uYW1lLnZhbHVlLCAgICAgIG0sIG5hbWUgKTsKLSAgICAgICAgbmZwOjpvcHRpb25hbGx5X2Fzc2lnbiggcF9zZXBhcmF0b3IudmFsdWUsIG0sIHNlcGFyYXRvciApOwotICAgIH0KLQotcHJvdGVjdGVkOgotICAgIGV4cGxpY2l0IGJhc2ljX25hbWluZ19wb2xpY3koIHJ0dGk6OmlkX3QgZHluX3R5cGUgKQotICAgIDogaWRlbnRpZmljYXRpb25fcG9saWN5KCBkeW5fdHlwZSApCi0gICAge30KLSAgICBORE5CT09TVF9SVF9QQVJBTV9VTk5FRURFRF9WSVJUVUFMIH5iYXNpY19uYW1pbmdfcG9saWN5KCkge30KLQotICAgIC8vIE5hbWluZyBwb2xpY3kgaW50ZXJmYWNlCi0gICAgdmlydHVhbCBib29sICAgIG1hdGNoX3ByZWZpeCggYXJndl90cmF2ZXJzZXImIHRyICkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sICAgIG1hdGNoX25hbWUoIGFyZ3ZfdHJhdmVyc2VyJiB0ciApIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCAgICBtYXRjaF9zZXBhcmF0b3IoIGFyZ3ZfdHJhdmVyc2VyJiB0ciwgYm9vbCBvcHRpb25hbF92YWx1ZSApIGNvbnN0OwotfTsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICAgICBkdWFsX2lkX3BvbGljeSAgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBNb3N0RGVyaXZlZCx0eXBlbmFtZSBQcmltYXJ5SWQsdHlwZW5hbWUgU2Vjb25kSWQ+Ci1jbGFzcyBkdWFsX2lkX3BvbGljeSA6IHB1YmxpYyBpZGVudGlmaWNhdGlvbl9wb2xpY3kgewotcHVibGljOgotICAgIC8vIENvbnN0cnVjdG9yCi0gICAgZHVhbF9pZF9wb2xpY3koKQotICAgIDogaWRlbnRpZmljYXRpb25fcG9saWN5KCBydHRpOjp0eXBlX2lkPE1vc3REZXJpdmVkPigpICkKLSAgICAsIG1fcHJpbWFyeSgpCi0gICAgLCBtX3NlY29uZGFyeSgpCi0gICAge30KLQotICAgIC8vIFBvbGljeSBpbnRlcmZhY2UKLSAgICB2aXJ0dWFsIGJvb2wgICAgcmVzcG9uZHNfdG8oIGNzdHJpbmcgbmFtZSApIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9wcmltYXJ5LnJlc3BvbmRzX3RvKCBuYW1lICkgfHwgbV9zZWNvbmRhcnkucmVzcG9uZHNfdG8oIG5hbWUgKTsKLSAgICB9Ci0gICAgdmlydHVhbCBib29sICAgIGNvbmZsaWN0X3dpdGgoIGlkZW50aWZpY2F0aW9uX3BvbGljeSBjb25zdCYgaWRfcCApIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gaWRfcC5jb25mbGljdF93aXRoKCBtX3ByaW1hcnkgKSB8fCBpZF9wLmNvbmZsaWN0X3dpdGgoIG1fc2Vjb25kYXJ5ICk7Ci0gICAgfQotICAgIHZpcnR1YWwgY3N0cmluZyBpZF8yX3JlcG9ydCgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9wcmltYXJ5LmlkXzJfcmVwb3J0KCk7Ci0gICAgfQotICAgIHZpcnR1YWwgdm9pZCAgICB1c2FnZV9pbmZvKCBmb3JtYXRfc3RyZWFtJiBmcyApIGNvbnN0Ci0gICAgewotICAgICAgICBmcyA8PCBORE5CT09TVF9SVF9QQVJBTV9MSVRFUkFMKCAneycgKTsKLSAgICAgICAgbV9wcmltYXJ5LnVzYWdlX2luZm8oIGZzICk7Ci0gICAgICAgIGZzIDw8IE5ETkJPT1NUX1JUX1BBUkFNX0xJVEVSQUwoICd8JyApOwotICAgICAgICBtX3NlY29uZGFyeS51c2FnZV9pbmZvKCBmcyApOwotICAgICAgICBmcyA8PCBORE5CT09TVF9SVF9QQVJBTV9MSVRFUkFMKCAnfScgKTsKLSAgICB9Ci0gICAgdmlydHVhbCBib29sICAgIG1hdGNoaW5nKCBwYXJhbWV0ZXIgY29uc3QmIHAsIGFyZ3ZfdHJhdmVyc2VyJiB0ciwgYm9vbCBwcmltYXJ5ICkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3ByaW1hcnkubWF0Y2hpbmcoIHAsIHRyLCBwcmltYXJ5ICkgfHwgbV9zZWNvbmRhcnkubWF0Y2hpbmcoIHAsIHRyLCBwcmltYXJ5ICk7Ci0gICAgfQotCi0gICAgLy8gQWNjZXB0IG1vZGlmaWVyCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgTW9kaWZpZXI+Ci0gICAgdm9pZCAgICBhY2NlcHRfbW9kaWZpZXIoIE1vZGlmaWVyIGNvbnN0JiBtICkKLSAgICB7Ci0gICAgICAgIG1fcHJpbWFyeS5hY2NlcHRfbW9kaWZpZXIoIG0gKTsKLSAgICAgICAgbV9zZWNvbmRhcnkuYWNjZXB0X21vZGlmaWVyKCBtICk7Ci0gICAgfQotCi1wcm90ZWN0ZWQ6Ci0gICAgTkROQk9PU1RfUlRfUEFSQU1fVU5ORUVERURfVklSVFVBTCB+ZHVhbF9pZF9wb2xpY3koKSB7fQotCi0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgUHJpbWFyeUlkICAgICAgIG1fcHJpbWFyeTsKLSAgICBTZWNvbmRJZCAgICAgICAgbV9zZWNvbmRhcnk7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBjbGEKLQotfSAvLyBuYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpZm5kZWYgTkROQk9PU1RfUlRfUEFSQU1fT0ZGTElORQotCi0jICBkZWZpbmUgTkROQk9PU1RfUlRfUEFSQU1fSU5MSU5FIGlubGluZQotIyAgaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9pZF9wb2xpY3kuaXBwPgotCi0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1JUX0NMQV9JRF9QT0xJQ1lfSFBQXzA2MjYwNEdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2lkX3BvbGljeS5pcHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvaWRfcG9saWN5LmlwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDlhNDYyZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvaWRfcG9saWN5LmlwcAorKysgL2Rldi9udWxsCkBAIC0xLDExOCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDU0NjMzICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBzb21lIGdlbmVyaWMgaWRlbnRpZmljYXRpb24gcG9saWNpZXMgaW1wbGVtZW50YXRpb24KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1JUX0NMQV9JRF9QT0xJQ1lfSVBQXzA2MjkwNEdFUgotI2RlZmluZSBORE5CT09TVF9SVF9DTEFfSURfUE9MSUNZX0lQUF8wNjI5MDRHRVIKLQotLy8gQm9vc3QuUnVudGltZS5QYXJhbWV0ZXIKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY29uZmlnLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvaWRfcG9saWN5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL3BhcmFtZXRlci5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UgewotCi1uYW1lc3BhY2UgY2xhIHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICBiYXNpY19uYW1pbmdfcG9saWN5ICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1ORE5CT09TVF9SVF9QQVJBTV9JTkxJTkUgdm9pZAotYmFzaWNfbmFtaW5nX3BvbGljeTo6dXNhZ2VfaW5mbyggZm9ybWF0X3N0cmVhbSYgZnMgKSBjb25zdAotewotICAgIGZzIDw8IHBfcHJlZml4IDw8IHBfbmFtZSA8PCBwX3NlcGFyYXRvcjsKLQotICAgIGlmKCBwX3NlcGFyYXRvci0+ZW1wdHkoKSApCi0gICAgICAgIGZzIDw8IE5ETkJPT1NUX1JUX1BBUkFNX0xJVEVSQUwoICcgJyApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1ORE5CT09TVF9SVF9QQVJBTV9JTkxJTkUgYm9vbAotYmFzaWNfbmFtaW5nX3BvbGljeTo6bWF0Y2hfcHJlZml4KCBhcmd2X3RyYXZlcnNlciYgdHIgKSBjb25zdAotewotICAgIGlmKCAhdHIubWF0Y2hfZnJvbnQoIHBfcHJlZml4LmdldCgpICkgKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICB0ci50cmltKCBwX3ByZWZpeC0+c2l6ZSgpICk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0gICAgCi1ORE5CT09TVF9SVF9QQVJBTV9JTkxJTkUgYm9vbAotYmFzaWNfbmFtaW5nX3BvbGljeTo6bWF0Y2hfbmFtZSggYXJndl90cmF2ZXJzZXImIHRyICkgY29uc3QKLXsKLSAgICBpZiggIXRyLm1hdGNoX2Zyb250KCBwX25hbWUuZ2V0KCkgKSApCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHRyLnRyaW0oIHBfbmFtZS0+c2l6ZSgpICk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0gICAgCi1ORE5CT09TVF9SVF9QQVJBTV9JTkxJTkUgYm9vbAotYmFzaWNfbmFtaW5nX3BvbGljeTo6bWF0Y2hfc2VwYXJhdG9yKCBhcmd2X3RyYXZlcnNlciYgdHIsIGJvb2wgb3B0aW9uYWxfdmFsdWUgKSBjb25zdAotewotICAgIGlmKCBwX3NlcGFyYXRvci0+ZW1wdHkoKSApIHsKLSAgICAgICAgaWYoICF0ci50b2tlbigpLmlzX2VtcHR5KCkgKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIHRyLnRyaW0oIDEgKTsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIGlmKCAhdHIubWF0Y2hfZnJvbnQoIHBfc2VwYXJhdG9yLmdldCgpICkgKSB7Ci0gICAgICAgICAgICAvLyBpZiBwYXJhbWV0ZXIgaGFzIG9wdGlvbmFsIHZhbHVlIHNlcGFyYXRvciBpcyBvcHRpb25hbCBhcyB3ZWxsCi0gICAgICAgICAgICBpZiggb3B0aW9uYWxfdmFsdWUgJiYgKCB0ci5lb2koKSB8fCB0ci5tYXRjaF9mcm9udCggJyAnICkgKSApIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotCi0gICAgICAgIHRyLnRyaW0oIHBfc2VwYXJhdG9yLT5zaXplKCkgKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotTkROQk9PU1RfUlRfUEFSQU1fSU5MSU5FIGJvb2wKLWJhc2ljX25hbWluZ19wb2xpY3k6Om1hdGNoaW5nKCBwYXJhbWV0ZXIgY29uc3QmIHAsIGFyZ3ZfdHJhdmVyc2VyJiB0ciwgYm9vbCApIGNvbnN0Ci17Ci0gICAgaWYoICFtYXRjaF9wcmVmaXgoIHRyICkgKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIAotICAgIGlmKCAhbWF0Y2hfbmFtZSggdHIgKSApCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmKCAhbWF0Y2hfc2VwYXJhdG9yKCB0ciwgcC5wX29wdGlvbmFsX3ZhbHVlICkgKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2UgY2xhCi0KLX0gLy8gbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfUlRfQ0xBX0lEX1BPTElDWV9JUFBfMDYyOTA0R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvaWZhY2UvYXJndW1lbnRfZmFjdG9yeS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvaWZhY2UvYXJndW1lbnRfZmFjdG9yeS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBjOTBiYjkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2lmYWNlL2FyZ3VtZW50X2ZhY3RvcnkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1NDYzMyAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogZGVmaW5lcyBpbnRlcmZhY2UgZm9yIGFyZ3VtZW50X2ZhY3RvcnkKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1JUX0NMQV9JRkFDRV9BUkdVTUVOVF9GQUNUT1JZX0hQUF8wNjI2MDRHRVIKLSNkZWZpbmUgTkROQk9PU1RfUlRfQ0xBX0lGQUNFX0FSR1VNRU5UX0ZBQ1RPUllfSFBQXzA2MjYwNEdFUgotCi0vLyBCb29zdC5SdW50aW1lLlBhcmFtZXRlcgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9md2QuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9md2QuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFIHsKLQotbmFtZXNwYWNlIGNsYSB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICAgICBhcmd1bWVudF9mYWN0b3J5ICAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vIGFub3RoZXIgbmFtZSBjYW4gYmUgYXJndW1lbnQgcHJvZHVjdGlvbiBwb2xpY3kKLQotY2xhc3MgYXJndW1lbnRfZmFjdG9yeSB7Ci1wdWJsaWM6Ci0gICAgLy8gQXJndW1lbnQgZmFjdG9yeSBpbnRlcmZhY2UKLSAgICB2aXJ0dWFsIGFyZ3VtZW50X3B0ciBwcm9kdWNlX3VzaW5nKCBwYXJhbWV0ZXImIHAsIGFyZ3ZfdHJhdmVyc2VyJiB0ciApID0gMDsgIC8vLyBwcm9kdWNlIGFyZ3VtZW50IGJhc2VkIG9uIGlucHV0Ci0gICAgdmlydHVhbCBhcmd1bWVudF9wdHIgcHJvZHVjZV91c2luZyggcGFyYW1ldGVyJiBwLCBwYXJzZXIgY29uc3QmICkgICAgICA9IDA7ICAvLy8gcHJvZHVjZSBhcmd1bWVudCBiYXNlZCBvbiBpbnRlcm5hbCBnZW5lcmF0b3IgYW5kL29yIHZhbHVlcyBvZiBvdGhlciBwYXJhbWV0ZXJzCi0gICAgdmlydHVhbCB2b2lkICAgICAgICAgYXJndW1lbnRfdXNhZ2VfaW5mbyggZm9ybWF0X3N0cmVhbSYgZnMgKSAgICAgICAgICA9IDA7ICAvLy8gYXJndW1lbnQgdmFsdWUgZm9ybWF0IGluZm9ybWF0aW9uCi1wcm90ZWN0ZWQ6Ci0gICAgTkROQk9PU1RfVEVTVF9QUk9URUNURURfVklSVFVBTCB+YXJndW1lbnRfZmFjdG9yeSgpIHt9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi19IC8vIG5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UKLQotfSAvLyBuYW1lc3BhY2UgY2xhCi0KLSNlbmRpZiAvLyBORE5CT09TVF9SVF9DTEFfSUZBQ0VfQVJHVU1FTlRfRkFDVE9SWV9IUFBfMDYyNjA0R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvaWZhY2UvaWRfcG9saWN5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9pZmFjZS9pZF9wb2xpY3kuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNmEwZDBkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9pZmFjZS9pZF9wb2xpY3kuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZQotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTc5OTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGRlZmluZXMgaW50ZXJmYWNlIGZvciBpZGVudGlmaWNhdGlvbl9wb2xpY3kKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1JUX0NMQV9JRkFDRV9JRF9QT0xJQ1lfSFBQXzA2MjYwNEdFUgotI2RlZmluZSBORE5CT09TVF9SVF9DTEFfSUZBQ0VfSURfUE9MSUNZX0hQUF8wNjI2MDRHRVIKLQotLy8gQm9vc3QuUnVudGltZS5QYXJhbWV0ZXIKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY29uZmlnLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvZndkLmhwcD4KLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvY2xhc3NfcHJvcGVydGllcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydHRpLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRSB7Ci0KLW5hbWVzcGFjZSBjbGEgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgaWRlbnRpZmljYXRpb25fcG9saWN5ICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jICBwcmFnbWEgd2FybmluZyhwdXNoKQotIyAgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MjQ0KQotI2VuZGlmCi0KLWNsYXNzIGlkZW50aWZpY2F0aW9uX3BvbGljeSB7Ci1wdWJsaWM6Ci0gICAgLy8gUHVibGljIHByb3BlcnRpZXMKLSAgICB1bml0X3Rlc3Q6OnJlYWR3cml0ZV9wcm9wZXJ0eTxydHRpOjppZF90PiAgICBwX3R5cGVfaWQ7Ci0KLSAgICAvLyBQb2xpY3kgaW50ZXJmYWNlCi0gICAgdmlydHVhbCBib29sICAgIHJlc3BvbmRzX3RvKCBjc3RyaW5nIG5hbWUgKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBjc3RyaW5nIGlkXzJfcmVwb3J0KCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9pZCAgICB1c2FnZV9pbmZvKCBmb3JtYXRfc3RyZWFtJiBmcyApIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgICAgbWF0Y2hpbmcoIHBhcmFtZXRlciBjb25zdCYgcCwgYXJndl90cmF2ZXJzZXImIHRyLCBib29sIHByaW1hcnkgKSBjb25zdCA9IDA7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgICAgY29uZmxpY3Rfd2l0aCggaWRlbnRpZmljYXRpb25fcG9saWN5IGNvbnN0JiApIGNvbnN0ID0gMDsKLQotcHJvdGVjdGVkOgotICAgIC8vIENvbnN0cnVjdG9yCi0gICAgZXhwbGljaXQgICAgICAgIGlkZW50aWZpY2F0aW9uX3BvbGljeSggcnR0aTo6aWRfdCBkeW5fdHlwZSApCi0gICAgOiBwX3R5cGVfaWQoIGR5bl90eXBlICkKLSAgICB7fQotICAgIE5ETkJPT1NUX1RFU1RfUFJPVEVDVEVEX1ZJUlRVQUwgfmlkZW50aWZpY2F0aW9uX3BvbGljeSgpIHt9Ci19OwotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotIyAgcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIGNsYQotCi19IC8vIG5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1JUX0NMQV9JRkFDRV9JRF9QT0xJQ1lfSFBQXzA2MjYwNEdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL21vZGlmaWVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9tb2RpZmllci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ5MmU0MDAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL21vZGlmaWVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTQ2MzMgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IHBhcmFtZXRlciBtb2RpZmllcnMKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1JUX0NMQV9NT0RJRklFUl9IUFBfMDYyNjA0R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1JUX0NMQV9NT0RJRklFUl9IUFBfMDYyNjA0R0VSCi0KLS8vIEJvb3N0LlJ1bnRpbWUuUGFyYW1ldGVyCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NvbmZpZy5ocHA+Ci0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL25hbWVkX3BhcmFtcy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UgewotCi1uYW1lc3BhY2UgY2xhIHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgZW52aXJvbm1lbnQgdmFyaWFibGUgbW9kaWZpZXJzICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1uYW1lc3BhY2UgewotCi1uZnA6OnR5cGVkX2tleXdvcmQ8Ym9vbCxzdHJ1Y3Qgb3B0aW9uYWxfdD4gICAgICAgICAgICAgIG9wdGlvbmFsX207Ci1uZnA6Om5hbWVkX3BhcmFtZXRlcjxib29sLG9wdGlvbmFsX3QsYm9vbD4gICAgICAgICAgICAgIG9wdGlvbmFsKCB0cnVlICk7Ci1uZnA6OnR5cGVkX2tleXdvcmQ8Ym9vbCxzdHJ1Y3QgcmVxdWlyZWRfdD4gICAgICAgICAgICAgIHJlcXVpcmVkX207Ci1uZnA6Om5hbWVkX3BhcmFtZXRlcjxib29sLHJlcXVpcmVkX3QsYm9vbD4gICAgICAgICAgICAgIHJlcXVpcmVkKCB0cnVlICk7Ci1uZnA6OnR5cGVkX2tleXdvcmQ8Ym9vbCxzdHJ1Y3QgbXVsdGlwbGljYWJsZV90PiAgICAgICAgIG11bHRpcGxpY2FibGVfbTsKLW5mcDo6bmFtZWRfcGFyYW1ldGVyPGJvb2wsbXVsdGlwbGljYWJsZV90LGJvb2w+ICAgICAgICAgbXVsdGlwbGljYWJsZSggdHJ1ZSApOwotbmZwOjp0eXBlZF9rZXl3b3JkPGJvb2wsc3RydWN0IGd1ZXNzX25hbWVfdD4gICAgICAgICAgICBndWVzc19uYW1lX207Ci1uZnA6Om5hbWVkX3BhcmFtZXRlcjxib29sLGd1ZXNzX25hbWVfdCxib29sPiAgICAgICAgICAgIGd1ZXNzX25hbWUoIHRydWUgKTsKLW5mcDo6dHlwZWRfa2V5d29yZDxib29sLHN0cnVjdCBpZ25vcmVfbWlzbWF0Y2hfdD4gICAgICAgaWdub3JlX21pc21hdGNoX207Ci1uZnA6Om5hbWVkX3BhcmFtZXRlcjxib29sLGlnbm9yZV9taXNtYXRjaF90LGJvb2w+ICAgICAgIGlnbm9yZV9taXNtYXRjaCggdHJ1ZSApOwotbmZwOjp0eXBlZF9rZXl3b3JkPGJvb2wsc3RydWN0IG9wdGlvbmFsX3ZhbHVlX3Q+ICAgICAgICBvcHRpb25hbF92YWx1ZV9tOwotbmZwOjpuYW1lZF9wYXJhbWV0ZXI8Ym9vbCxvcHRpb25hbF92YWx1ZV90LGJvb2w+ICAgICAgICBvcHRpb25hbF92YWx1ZSggdHJ1ZSApOwotCi1uZnA6OnR5cGVkX2tleXdvcmQ8Y2hhcl90eXBlLHN0cnVjdCBpbnB1dF9zZXBhcmF0b3JfdD4gIGlucHV0X3NlcGFyYXRvcjsKLW5mcDo6dHlwZWRfa2V5d29yZDxjc3RyaW5nLHN0cnVjdCBwcmVmaXhfdD4gICAgICAgICAgICAgcHJlZml4OwotbmZwOjp0eXBlZF9rZXl3b3JkPGNzdHJpbmcsc3RydWN0IG5hbWVfdD4gICAgICAgICAgICAgICBuYW1lOwotbmZwOjp0eXBlZF9rZXl3b3JkPGNzdHJpbmcsc3RydWN0IHNlcGFyYXRvcl90PiAgICAgICAgICBzZXBhcmF0b3I7Ci1uZnA6OnR5cGVkX2tleXdvcmQ8Y3N0cmluZyxzdHJ1Y3QgZGVzY3JpcHRpb25fdD4gICAgICAgIGRlc2NyaXB0aW9uOwotbmZwOjp0eXBlZF9rZXl3b3JkPGNzdHJpbmcsc3RydWN0IHJlZmVyX3RvX3Q+ICAgICAgICAgICBkZWZhdWx0X3JlZmVyX3RvOwotCi1uZnA6OmtleXdvcmQ8c3RydWN0IGRlZmF1bHRfdmFsdWVfdD4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRfdmFsdWU7Ci1uZnA6OmtleXdvcmQ8c3RydWN0IGhhbmRsZXJfdD4gICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXI7Ci1uZnA6OmtleXdvcmQ8c3RydWN0IGludGVycHJldGVyX3Q+ICAgICAgICAgICAgICAgICAgICAgIGludGVycHJldGVyOwotbmZwOjprZXl3b3JkPHN0cnVjdCBhc3NpZ25fdG9fdD4gICAgICAgICAgICAgICAgICAgICAgICBhc3NpZ25fdG87Ci0KLX0gLy8gbG9jYWwgbmFtZXNwYWNlCi0KLX0gLy8gbmFtZXNwYWNlIGNsYQotCi19IC8vIG5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1JUX0NMQV9NT0RJRklFUl9IUFBfMDYyNjA0R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvbmFtZWRfcGFyYW1ldGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9uYW1lZF9wYXJhbWV0ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMTYwZjc5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9uYW1lZF9wYXJhbWV0ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTMgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA0OTMxMiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogZGVmaW5lcyBtb2RlbCBvZiBuYW1lZCBwYXJhbWV0ZXIKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1JUX0NMQV9OQU1FRF9QQVJBTUVURVJfSFBQXzA2MjYwNEdFUgotI2RlZmluZSBORE5CT09TVF9SVF9DTEFfTkFNRURfUEFSQU1FVEVSX0hQUF8wNjI2MDRHRVIKLQotLy8gQm9vc3QuUnVudGltZS5QYXJhbWV0ZXIKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY29uZmlnLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvYmFzaWNfcGFyYW1ldGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2lkX3BvbGljeS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UgewotCi1uYW1lc3BhY2UgY2xhIHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgICBzdHJpbmdfbmFtZV9wb2xpY3kgICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1jbGFzcyBzdHJpbmdfbmFtZV9wb2xpY3kgOiBwdWJsaWMgYmFzaWNfbmFtaW5nX3BvbGljeSB7Ci1wdWJsaWM6Ci0gICAgLy8gQ29uc3RydWN0b3IKLSAgICBzdHJpbmdfbmFtZV9wb2xpY3koKTsKLSAgICBORE5CT09TVF9SVF9QQVJBTV9VTk5FRURFRF9WSVJUVUFMIH5zdHJpbmdfbmFtZV9wb2xpY3koKSB7fQotCi0gICAgLy8gcG9saWN5IGludGVyZmFjZQotICAgIHZpcnR1YWwgYm9vbCAgICByZXNwb25kc190byggY3N0cmluZyBuYW1lICkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sICAgIGNvbmZsaWN0X3dpdGgoIGlkZW50aWZpY2F0aW9uX3BvbGljeSBjb25zdCYgKSBjb25zdDsKLQotICAgIC8vIEFjY2VwdCBtb2RpZmllcgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1vZGlmaWVyPgotICAgIHZvaWQgICAgICAgICAgICBhY2NlcHRfbW9kaWZpZXIoIE1vZGlmaWVyIGNvbnN0JiBtICkKLSAgICB7Ci0gICAgICAgIGJhc2ljX25hbWluZ19wb2xpY3k6OmFjY2VwdF9tb2RpZmllciggbSApOwotCi0gICAgICAgIGlmKCBtLmhhcyggZ3Vlc3NfbmFtZV9tICkgKQotICAgICAgICAgICAgbV9ndWVzc19uYW1lID0gdHJ1ZTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgLy8gTmFtaW5nIHBvbGljeSBpbnRlcmZhY2UKLSAgICB2aXJ0dWFsIGJvb2wgICAgbWF0Y2hfbmFtZSggYXJndl90cmF2ZXJzZXImIHRyICkgY29uc3Q7Ci0KLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICBib29sICAgICAgICAgICAgbV9ndWVzc19uYW1lOwotfTsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgcnVudGltZTo6Y2xhOjpuYW1lZF9wYXJhbWV0ZXIgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotY2xhc3MgbmFtZWRfcGFyYW1ldGVyX3QgOiBwdWJsaWMgYmFzaWNfcGFyYW1ldGVyPFQsc3RyaW5nX25hbWVfcG9saWN5PiB7Ci0gICAgdHlwZWRlZiBiYXNpY19wYXJhbWV0ZXI8VCxzdHJpbmdfbmFtZV9wb2xpY3k+IGJhc2U7Ci1wdWJsaWM6Ci0gICAgLy8gQ29uc3RydWN0b3JzCi0gICAgZXhwbGljaXQgICAgbmFtZWRfcGFyYW1ldGVyX3QoIGNzdHJpbmcgbmFtZSApIDogYmFzZSggbmFtZSApIHt9Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1ORE5CT09TVF9SVF9DTEFfTkFNRURfUEFSQU1fR0VORVJBVE9SUyggbmFtZWRfcGFyYW1ldGVyICkKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2UgY2xhCi0KLX0gLy8gbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaWZuZGVmIE5ETkJPT1NUX1JUX1BBUkFNX09GRkxJTkUKLQotIyAgZGVmaW5lIE5ETkJPT1NUX1JUX1BBUkFNX0lOTElORSBpbmxpbmUKLSMgIGluY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvbmFtZWRfcGFyYW1ldGVyLmlwcD4KLQotI2VuZGlmCi0KLSNlbmRpZiAvLyBORE5CT09TVF9SVF9DTEFfTkFNRURfUEFSQU1FVEVSX0hQUF8wNjI2MDRHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9uYW1lZF9wYXJhbWV0ZXIuaXBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL25hbWVkX3BhcmFtZXRlci5pcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI2MjZlZTAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL25hbWVkX3BhcmFtZXRlci5pcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMjkgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1NDYzMyAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogaW1wbGVtZW50cyBtb2RlbCBvZiBuYW1lZCBwYXJhbWV0ZXIKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1JUX0NMQV9OQU1FRF9QQVJBTUVURVJfSVBQXzA2MjkwNEdFUgotI2RlZmluZSBORE5CT09TVF9SVF9DTEFfTkFNRURfUEFSQU1FVEVSX0lQUF8wNjI5MDRHRVIKLQotLy8gQm9vc3QuUnVudGltZS5QYXJhbWV0ZXIKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY29uZmlnLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvbmFtZWRfcGFyYW1ldGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2NoYXJfcGFyYW1ldGVyLmhwcD4KLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvYWxnb3JpdGhtLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRSB7Ci0KLW5hbWVzcGFjZSBjbGEgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgIHN0cmluZ19uYW1lX3BvbGljeSAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLU5ETkJPT1NUX1JUX1BBUkFNX0lOTElORSAKLXN0cmluZ19uYW1lX3BvbGljeTo6c3RyaW5nX25hbWVfcG9saWN5KCkKLTogYmFzaWNfbmFtaW5nX3BvbGljeSggcnR0aTo6dHlwZV9pZDxzdHJpbmdfbmFtZV9wb2xpY3k+KCkgKQotLCBtX2d1ZXNzX25hbWUoIGZhbHNlICkKLXsKLSAgICBhc3NpZ25fb3AoIHBfcHJlZml4LnZhbHVlLCBORE5CT09TVF9SVF9QQVJBTV9DU1RSSU5HX0xJVEVSQUwoICItIiApLCAwICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLU5ETkJPT1NUX1JUX1BBUkFNX0lOTElORSBib29sCi1zdHJpbmdfbmFtZV9wb2xpY3k6OnJlc3BvbmRzX3RvKCBjc3RyaW5nIG5hbWUgKSBjb25zdAotewotICAgIHN0ZDo6cGFpcjxjc3RyaW5nOjppdGVyYXRvcixkc3RyaW5nOjpjb25zdF9pdGVyYXRvcj4gbW1fcG9zOwotCi0gICAgbW1fcG9zID0gdW5pdF90ZXN0OjptaXNtYXRjaCggbmFtZS5iZWdpbigpLCBuYW1lLmVuZCgpLCBwX25hbWUtPmJlZ2luKCksIHBfbmFtZS0+ZW5kKCkgKTsKLQotICAgIHJldHVybiBtbV9wb3MuZmlyc3QgPT0gbmFtZS5lbmQoKSAmJiAobV9ndWVzc19uYW1lIHx8IChtbV9wb3Muc2Vjb25kID09IHBfbmFtZS0+ZW5kKCkpICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jICBwcmFnbWEgd2FybmluZyhwdXNoKQotIyAgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MjQ0KQotI2VuZGlmCi0KLU5ETkJPT1NUX1JUX1BBUkFNX0lOTElORSBib29sCi1zdHJpbmdfbmFtZV9wb2xpY3k6OmNvbmZsaWN0X3dpdGgoIGlkZW50aWZpY2F0aW9uX3BvbGljeSBjb25zdCYgaWQgKSBjb25zdAotewotICAgIGlmKCBpZC5wX3R5cGVfaWQgPT0gcF90eXBlX2lkICkgewotICAgICAgICBzdHJpbmdfbmFtZV9wb2xpY3kgY29uc3QmIHNucCA9IHN0YXRpY19jYXN0PHN0cmluZ19uYW1lX3BvbGljeSBjb25zdCY+KCBpZCApOwotCi0gICAgICAgIGlmKCBwX25hbWUtPmVtcHR5KCkgfHwgc25wLnBfbmFtZS0+ZW1wdHkoKSApCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgaWYoIHBfcHJlZml4ICE9IHNucC5wX3ByZWZpeCApCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgc3RkOjpwYWlyPGRzdHJpbmc6OmNvbnN0X2l0ZXJhdG9yLGRzdHJpbmc6OmNvbnN0X2l0ZXJhdG9yPiBtbV9wb3MgPQotICAgICAgICAgICAgdW5pdF90ZXN0OjptaXNtYXRjaCggcF9uYW1lLT5iZWdpbigpLCBwX25hbWUtPmVuZCgpLCBzbnAucF9uYW1lLT5iZWdpbigpLCBzbnAucF9uYW1lLT5lbmQoKSApOwotCi0gICAgICAgIHJldHVybiBtbV9wb3MuZmlyc3QgIT0gcF9uYW1lLT5iZWdpbigpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgIC8vIHRoZXJlIGlzIGNvbW1vbiBzdWJzdHJpbmcKLSAgICAgICAgICAgICAgICAoKG1fZ3Vlc3NfbmFtZSAgICAmJiAobW1fcG9zLnNlY29uZCA9PSBzbnAucF9uYW1lLT5lbmQoKSkgKSB8fCAgLy8gdGhhdCBtYXRjaCBvdGhlciBndXkgYW5kIEkgYW0gZ3Vlc3NpbmcKLSAgICAgICAgICAgICAgICAoc25wLm1fZ3Vlc3NfbmFtZSAmJiAobW1fcG9zLmZpcnN0ICA9PSBwX25hbWUtPmVuZCgpKSApKTsgICAgICAgLy8gb3IgbWUgYW5kIHRoZSBvdGhlciBndXkgaXMKLSAgICB9Ci0gICAgCi0gICAgaWYoIGlkLnBfdHlwZV9pZCA9PSBydHRpOjp0eXBlX2lkPGNoYXJfbmFtZV9wb2xpY3k+KCkgKSB7Ci0gICAgICAgIGNoYXJfbmFtZV9wb2xpY3kgY29uc3QmIGNucCA9IHN0YXRpY19jYXN0PGNoYXJfbmFtZV9wb2xpY3kgY29uc3QmPiggaWQgKTsKLQotICAgICAgICByZXR1cm4gbV9ndWVzc19uYW1lICAgICAgICAgICAgICAgICAmJiAKLSAgICAgICAgICAgICAgIChwX3ByZWZpeCA9PSBjbnAucF9wcmVmaXgpICAgJiYgCi0gICAgICAgICAgICAgICB1bml0X3Rlc3Q6OmZpcnN0X2NoYXIoIGNzdHJpbmcoIHBfbmFtZSApICkgPT0gdW5pdF90ZXN0OjpmaXJzdF9jaGFyKCBjc3RyaW5nKCBjbnAucF9uYW1lICkgKTsKLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIGZhbHNlOyAgICAKLX0KLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSMgIHByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1ORE5CT09TVF9SVF9QQVJBTV9JTkxJTkUgYm9vbAotc3RyaW5nX25hbWVfcG9saWN5OjptYXRjaF9uYW1lKCBhcmd2X3RyYXZlcnNlciYgdHIgKSBjb25zdAotewotICAgIGlmKCAhbV9ndWVzc19uYW1lICkKLSAgICAgICAgcmV0dXJuIGJhc2ljX25hbWluZ19wb2xpY3k6Om1hdGNoX25hbWUoIHRyICk7Ci0KLSAgICBjc3RyaW5nIGluID0gdHIuaW5wdXQoKTsKLQotICAgIHN0ZDo6cGFpcjxjc3RyaW5nOjppdGVyYXRvcixkc3RyaW5nOjpjb25zdF9pdGVyYXRvcj4gbW1fcG9zOwotICAgIAotICAgIG1tX3BvcyA9IHVuaXRfdGVzdDo6bWlzbWF0Y2goIGluLmJlZ2luKCksIGluLmVuZCgpLCBwX25hbWUtPmJlZ2luKCksIHBfbmFtZS0+ZW5kKCkgKTsKLQotICAgIGlmKCBtbV9wb3MuZmlyc3QgPT0gaW4uYmVnaW4oKSApCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHRyLnRyaW0oIG1tX3Bvcy5maXJzdCAtIGluLmJlZ2luKCkgKTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSBjbGEKLQotfSAvLyBuYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9SVF9DTEFfTkFNRURfUEFSQU1FVEVSX0lQUF8wNjI5MDRHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9wYXJhbWV0ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL3BhcmFtZXRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg0ZDYwZDMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL3BhcmFtZXRlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTAgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA4MTkxMyAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogZGVmaW5lcyBtb2RlbCBvZiBmb3JtYWwgcGFyYW1ldGVyCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9SVF9DTEFfUEFSQU1FVEVSX0hQUF8wNjI2MDRHRVIKLSNkZWZpbmUgTkROQk9PU1RfUlRfQ0xBX1BBUkFNRVRFUl9IUFBfMDYyNjA0R0VSCi0KLS8vIEJvb3N0LlJ1bnRpbWUuUGFyYW1ldGVyCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NvbmZpZy5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvcGFyYW1ldGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvdmFsaWRhdGlvbi5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9tb2RpZmllci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9pZmFjZS9hcmd1bWVudF9mYWN0b3J5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2lmYWNlL2lkX3BvbGljeS5ocHA+Ci0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J0dGkuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFIHsKLQotbmFtZXNwYWNlIGNsYSB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgIHJ1bnRpbWU6OmNsYTo6cGFyYW1ldGVyICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotY2xhc3MgcGFyYW1ldGVyIDogcHVibGljIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRTo6cGFyYW1ldGVyIHsKLXB1YmxpYzoKLSAgICBwYXJhbWV0ZXIoIGlkZW50aWZpY2F0aW9uX3BvbGljeSYgSUQsIGFyZ3VtZW50X2ZhY3RvcnkmIEYsIGJvb2wgb3B0aW9uYWxfdmFsdWUgPSBmYWxzZSApCi0gICAgOiBwX29wdGlvbmFsKCBmYWxzZSApCi0gICAgLCBwX211bHRpcGxpY2FibGUoIGZhbHNlICkKLSAgICAsIHBfb3B0aW9uYWxfdmFsdWUoIG9wdGlvbmFsX3ZhbHVlICkKLSAgICAsIG1faWRfcG9saWN5KCBJRCApCi0gICAgLCBtX2FyZ19mYWN0b3J5KCBGICkKLSAgICB7fQotCi0gICAgLy8gRGVzdHJ1Y3RvcgotICAgIHZpcnR1YWwgICAgICAgICB+cGFyYW1ldGVyKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt9Ci0KLSAgICB1bml0X3Rlc3Q6OnJlYWR3cml0ZV9wcm9wZXJ0eTxib29sPiAgICAgIHBfb3B0aW9uYWw7Ci0gICAgdW5pdF90ZXN0OjpyZWFkd3JpdGVfcHJvcGVydHk8Ym9vbD4gICAgICBwX211bHRpcGxpY2FibGU7Ci0gICAgdW5pdF90ZXN0OjpyZWFkd3JpdGVfcHJvcGVydHk8Ym9vbD4gICAgICBwX29wdGlvbmFsX3ZhbHVlOwotICAgIHVuaXRfdGVzdDo6cmVhZHdyaXRlX3Byb3BlcnR5PGRzdHJpbmc+ICAgcF9kZXNjcmlwdGlvbjsKLQotICAgIC8vIHBhcmFtZXRlciBwcm9wZXJ0aWVzIG1vZGlmaWNhdGlvbgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIE1vZGlmaWVyPgotICAgIHZvaWQgICAgICAgICAgICBhY2NlcHRfbW9kaWZpZXIoIE1vZGlmaWVyIGNvbnN0JiBtICkKLSAgICB7Ci0gICAgICAgIGlmKCBtLmhhcyggb3B0aW9uYWxfbSApICkKLSAgICAgICAgICAgIHBfb3B0aW9uYWwudmFsdWUgPSB0cnVlOwotCi0gICAgICAgIGlmKCBtLmhhcyggcmVxdWlyZWRfbSApICkKLSAgICAgICAgICAgIHBfb3B0aW9uYWwudmFsdWUgPSBmYWxzZTsKLQotICAgICAgICBpZiggbS5oYXMoIG11bHRpcGxpY2FibGVfbSApICkKLSAgICAgICAgICAgIHBfbXVsdGlwbGljYWJsZS52YWx1ZSA9IHRydWU7Ci0KLSAgICAgICAgaWYoIG0uaGFzKCBvcHRpb25hbF92YWx1ZV9tICkgKQotICAgICAgICAgICAgcF9vcHRpb25hbF92YWx1ZS52YWx1ZSA9IHRydWU7Ci0KLSAgICAgICAgbmZwOjpvcHRpb25hbGx5X2Fzc2lnbiggcF9kZXNjcmlwdGlvbi52YWx1ZSwgbSwgZGVzY3JpcHRpb24gKTsKLSAgICB9Ci0KLSAgICAvLyBhY2Nlc3MgbWV0aG9kcwotICAgIGJvb2wgICAgICAgICAgICBoYXNfYXJndW1lbnQoKSBjb25zdCAgICAgICAgICAgICAgICAgICAgICAgIHsgcmV0dXJuIG1fYWN0dWFsX2FyZ3VtZW50IT0wOyB9Ci0gICAgYXJndW1lbnQgY29uc3QmIGFjdHVhbF9hcmd1bWVudCgpIGNvbnN0ICAgICAgICAgICAgICAgICAgICAgeyByZXR1cm4gKm1fYWN0dWFsX2FyZ3VtZW50OyB9Ci0gICAgYXJndW1lbnRfcHRyICAgIGFjdHVhbF9hcmd1bWVudCgpICAgICAgICAgICAgICAgICAgICAgICAgICAgeyByZXR1cm4gbV9hY3R1YWxfYXJndW1lbnQ7IH0KLQotCi0gICAgLy8gaWRlbnRpZmljYXRpb24gaW50ZXJmYWNlCi0gICAgYm9vbCAgICAgICAgICAgIHJlc3BvbmRzX3RvKCBjc3RyaW5nIG5hbWUgKSBjb25zdCAgICAgICAgICAgeyByZXR1cm4gbV9pZF9wb2xpY3kucmVzcG9uZHNfdG8oIG5hbWUgKTsgfQotICAgIGJvb2wgICAgICAgICAgICBjb25mbGljdF93aXRoKCBwYXJhbWV0ZXIgY29uc3QmIHAgKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIChpZF8yX3JlcG9ydCgpID09IHAuaWRfMl9yZXBvcnQoKSAmJiAhaWRfMl9yZXBvcnQoKS5pc19lbXB0eSgpKSAgfHwKLSAgICAgICAgICAgICAgIG1faWRfcG9saWN5LmNvbmZsaWN0X3dpdGgoIHAubV9pZF9wb2xpY3kgKSAgICAgICAgICAgICAgICAgICAgICAgfHwgCi0gICAgICAgICAgICAgICAoKG1faWRfcG9saWN5LnBfdHlwZV9pZCAhPSBwLm1faWRfcG9saWN5LnBfdHlwZV9pZCkgJiYgcC5tX2lkX3BvbGljeS5jb25mbGljdF93aXRoKCBtX2lkX3BvbGljeSApKTsKLSAgICB9Ci0gICAgY3N0cmluZyAgICAgICAgIGlkXzJfcmVwb3J0KCkgY29uc3QgICAgICAgICAgICAgICAgICAgICAgICAgeyByZXR1cm4gbV9pZF9wb2xpY3kuaWRfMl9yZXBvcnQoKTsgfQotICAgIHZvaWQgICAgICAgICAgICB1c2FnZV9pbmZvKCBmb3JtYXRfc3RyZWFtJiBmcyApIGNvbnN0Ci0gICAgeyAKLSAgICAgICAgbV9pZF9wb2xpY3kudXNhZ2VfaW5mbyggZnMgKTsKLSAgICAgICAgaWYoIHBfb3B0aW9uYWxfdmFsdWUgKQotICAgICAgICAgICAgZnMgPDwgTkROQk9PU1RfUlRfUEFSQU1fTElURVJBTCggJ1snICk7Ci0KLSAgICAgICAgbV9hcmdfZmFjdG9yeS5hcmd1bWVudF91c2FnZV9pbmZvKCBmcyApOwotCi0gICAgICAgIGlmKCBwX29wdGlvbmFsX3ZhbHVlICkKLSAgICAgICAgICAgIGZzIDw8IE5ETkJPT1NUX1JUX1BBUkFNX0xJVEVSQUwoICddJyApOwotICAgIH0KLQotICAgIC8vIGFyZ3VtZW50IG1hdGNoL3Byb2R1Y2UgYmFzZWQgb24gaW5wdXQKLSAgICBib29sICAgICAgICAgICAgbWF0Y2hpbmcoIGFyZ3ZfdHJhdmVyc2VyJiB0ciwgYm9vbCBwcmltYXJ5ICkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2lkX3BvbGljeS5tYXRjaGluZyggKnRoaXMsIHRyLCBwcmltYXJ5ICk7Ci0gICAgfQotCi0gICAgLy8gYXJndW1lbnQgcHJvZHVjdGlvbiBiYXNlZCBvbiBkaWZmZXJlbnQgc291cmNlCi0gICAgdm9pZCAgICAgICAgICAgIHByb2R1Y2VfYXJndW1lbnQoIGFyZ3ZfdHJhdmVyc2VyJiB0ciApCi0gICAgewotICAgICAgICBtX2lkX3BvbGljeS5tYXRjaGluZyggKnRoaXMsIHRyLCB0cnVlICk7IC8vICEhIGNhbiB3ZSBzYXZlIHRoaXMgcG9zaXRpb24gc29tZWhvdwotICAgICAgICBtX2FjdHVhbF9hcmd1bWVudCA9IG1fYXJnX2ZhY3RvcnkucHJvZHVjZV91c2luZyggKnRoaXMsIHRyICk7Ci0gICAgfQotICAgIHZvaWQgICAgICAgICAgICBwcm9kdWNlX2FyZ3VtZW50KCBwYXJzZXIgY29uc3QmIHAgKQotICAgIHsKLSAgICAgICAgbV9hY3R1YWxfYXJndW1lbnQgPSBtX2FyZ19mYWN0b3J5LnByb2R1Y2VfdXNpbmcoICp0aGlzLCBwICk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIC8vRGF0YSBtZW1iZXJzCi0gICAgaWRlbnRpZmljYXRpb25fcG9saWN5JiAgbV9pZF9wb2xpY3k7Ci0gICAgYXJndW1lbnRfZmFjdG9yeSYgICAgICAgbV9hcmdfZmFjdG9yeTsKLSAgICBhcmd1bWVudF9wdHIgICAgICAgICAgICBtX2FjdHVhbF9hcmd1bWVudDsKLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFBhcmFtZXRlcix0eXBlbmFtZSBNb2RpZmllcj4KLWlubGluZSBzaGFyZWRfcHRyPFBhcmFtZXRlcj4KLW9wZXJhdG9yLSggc2hhcmVkX3B0cjxQYXJhbWV0ZXI+IHAsIE1vZGlmaWVyIGNvbnN0JiBtICkKLXsKLSAgICBwLT5hY2NlcHRfbW9kaWZpZXIoIG0gKTsKLQotICAgIHJldHVybiBwOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSBjbGEKLQotfSAvLyBuYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9SVF9DTEFfUEFSQU1FVEVSX0hQUF8wNjI2MDRHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9wYXJzZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL3BhcnNlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzMDNmNjkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL3BhcnNlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTMgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1Nzk5MiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogZGVmaW5lcyBwYXJzZXIgLSBwdWJsaWMgaW50ZXJmYWNlIGZvciBDTEEgcGFyc2luZyBhbmQgYWNjZXNzaW5nCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9SVF9DTEFfUEFSU0VSX0hQUF8wNjI2MDRHRVIKLSNkZWZpbmUgTkROQk9PU1RfUlRfQ0xBX1BBUlNFUl9IUFBfMDYyNjA0R0VSCi0KLS8vIEJvb3N0LlJ1bnRpbWUuUGFyYW1ldGVyCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2FyZ3VtZW50LmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL21vZGlmaWVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2FyZ3ZfdHJhdmVyc2VyLmhwcD4KLQotLy8gQm9vc3QKLSNpbmNsdWRlIDxuZG5ib29zdC9vcHRpb25hbC5ocHA+Ci0KLS8vIFNUTAotI2luY2x1ZGUgPGxpc3Q+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UgewotCi1uYW1lc3BhY2UgY2xhIHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgIHJ1bnRpbWU6OmNsYTo6cGFyc2VyICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1uYW1lc3BhY2UgY2xhX2RldGFpbCB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIE1vZGlmaWVyPgotY2xhc3MgZ2xvYmFsX21vZF9wYXJzZXIgewotcHVibGljOgotICAgIGdsb2JhbF9tb2RfcGFyc2VyKCBwYXJzZXImIHAsIE1vZGlmaWVyIGNvbnN0JiBtICkKLSAgICA6IG1fcGFyc2VyKCBwICkKLSAgICAsIG1fbW9kaWZpZXJzKCBtICkKLSAgICB7fQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgUGFyYW0+Ci0gICAgZ2xvYmFsX21vZF9wYXJzZXIgY29uc3QmCi0gICAgb3BlcmF0b3I8PCggc2hhcmVkX3B0cjxQYXJhbT4gcGFyYW0gKSBjb25zdAotICAgIHsKLSAgICAgICAgcGFyYW0tPmFjY2VwdF9tb2RpZmllciggbV9tb2RpZmllcnMgKTsKLQotICAgICAgICBtX3BhcnNlciA8PCBwYXJhbTsKLQotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIC8vIERhdGEgbWVtYmVyczsKLSAgICBwYXJzZXImICAgICAgICAgICAgIG1fcGFyc2VyOwotICAgIE1vZGlmaWVyIGNvbnN0JiAgICAgbV9tb2RpZmllcnM7Ci19OwotCi19Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICBydW50aW1lOjpjbGE6OnBhcnNlciAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotY2xhc3MgcGFyc2VyIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHN0ZDo6bGlzdDxwYXJhbWV0ZXJfcHRyPjo6Y29uc3RfaXRlcmF0b3IgcGFyYW1faXRlcmF0b3I7Ci0KLSAgICAvLyBDb25zdHJ1Y3RvcgotICAgIGV4cGxpY2l0ICAgICAgICAgICAgcGFyc2VyKCBjc3RyaW5nIHByb2dyYW1fbmFtZSA9IGNzdHJpbmcoKSApOwotCi0gICAgLy8gcGFyYW1ldGVyIGxpc3QgY29uc3RydWN0aW9uIGludGVyZmFjZQotICAgIHBhcnNlciYgICAgICAgICAgICAgb3BlcmF0b3I8PCggcGFyYW1ldGVyX3B0ciBwYXJhbSApOwotCi0gICAgLy8gcGFyc2VyIGFuZCBnbG9iYWwgcGFyYW1ldGVycyBtb2RpZmllcnMKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBNb2RpZmllcj4KLSAgICBjbGFfZGV0YWlsOjpnbG9iYWxfbW9kX3BhcnNlcjxNb2RpZmllcj4KLSAgICBvcGVyYXRvci0oIE1vZGlmaWVyIGNvbnN0JiBtICkKLSAgICB7Ci0gICAgICAgIG5mcDo6b3B0aW9uYWxseV9hc3NpZ24oIG1fdHJhdmVyc2VyLnBfc2VwYXJhdG9yLnZhbHVlLCBtLCBpbnB1dF9zZXBhcmF0b3IgKTsKLSAgICAgICAgbmZwOjpvcHRpb25hbGx5X2Fzc2lnbiggbV90cmF2ZXJzZXIucF9pZ25vcmVfbWlzbWF0Y2gudmFsdWUsIG0sIGlnbm9yZV9taXNtYXRjaF9tICk7Ci0KLSAgICAgICAgcmV0dXJuIGNsYV9kZXRhaWw6Omdsb2JhbF9tb2RfcGFyc2VyPE1vZGlmaWVyPiggKnRoaXMsIG0gKTsKLSAgICB9Ci0KLSAgICAvLyBpbnB1dCBwcm9jZXNzaW5nIG1ldGhvZAotICAgIHZvaWQgICAgICAgICAgICAgICAgcGFyc2UoIGludCYgYXJnYywgY2hhcl90eXBlKiogYXJndiApOwotCi0gICAgLy8gcGFyYW1ldGVycyBhY2Nlc3MKLSAgICBwYXJhbV9pdGVyYXRvciAgICAgIGZpcnN0X3BhcmFtKCkgY29uc3Q7Ci0gICAgcGFyYW1faXRlcmF0b3IgICAgICBsYXN0X3BhcmFtKCkgY29uc3Q7Ci0KLSAgICAvLyBhcmd1bWVudHMgYWNjZXNzCi0gICAgY29uc3RfYXJndW1lbnRfcHRyICBvcGVyYXRvcltdKCBjc3RyaW5nIHN0cmluZ19pZCApIGNvbnN0OwotICAgIGNzdHJpbmcgICAgICAgICAgICAgZ2V0KCBjc3RyaW5nIHN0cmluZ19pZCApIGNvbnN0OyAgICAKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgVCBjb25zdCYgICAgICAgICAgICBnZXQoIGNzdHJpbmcgc3RyaW5nX2lkICkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBhcmdfdmFsdWU8VD4oIHZhbGlkX2FyZ3VtZW50KCBzdHJpbmdfaWQgKSApOwotICAgIH0KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgdm9pZCAgICAgICAgICAgICAgICBnZXQoIGNzdHJpbmcgc3RyaW5nX2lkLCBuZG5ib29zdDo6b3B0aW9uYWw8VD4mIHJlcyApIGNvbnN0Ci0gICAgewotICAgICAgICBjb25zdF9hcmd1bWVudF9wdHIgYWN0dWFsX2FyZyA9ICgqdGhpcylbc3RyaW5nX2lkXTsKLQotICAgICAgICBpZiggYWN0dWFsX2FyZyApCi0gICAgICAgICAgICByZXMgPSBhcmdfdmFsdWU8VD4oICphY3R1YWxfYXJnICk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlcy5yZXNldCgpOwotICAgIH0KLQotICAgIC8vIGhlbHAvdXNhZ2UKLSAgICB2b2lkICAgICAgICAgICAgICAgIHVzYWdlKCBvdXRfc3RyZWFtJiBvc3RyICk7Ci0gICAgdm9pZCAgICAgICAgICAgICAgICBoZWxwKCAgb3V0X3N0cmVhbSYgb3N0ciApOwotCi1wcml2YXRlOgotICAgIGFyZ3VtZW50IGNvbnN0JiAgICAgdmFsaWRfYXJndW1lbnQoIGNzdHJpbmcgc3RyaW5nX2lkICkgY29uc3Q7Ci0KLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICBhcmd2X3RyYXZlcnNlciAgICAgICAgICAgICAgbV90cmF2ZXJzZXI7Ci0gICAgc3RkOjpsaXN0PHBhcmFtZXRlcl9wdHI+ICAgIG1fcGFyYW1ldGVyczsKLSAgICBkc3RyaW5nICAgICAgICAgICAgICAgICAgICAgbV9wcm9ncmFtX25hbWU7Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSBjbGEKLQotfSAvLyBuYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpZm5kZWYgTkROQk9PU1RfUlRfUEFSQU1fT0ZGTElORQotCi0jICBkZWZpbmUgTkROQk9PU1RfUlRfUEFSQU1fSU5MSU5FIGlubGluZQotIyAgaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9wYXJzZXIuaXBwPgotCi0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1JUX0NMQV9QQVJTRVJfSFBQXzA2MjYwNEdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL3BhcnNlci5pcHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvcGFyc2VyLmlwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWEzOTQ4NS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvcGFyc2VyLmlwcAorKysgL2Rldi9udWxsCkBAIC0xLDI1OCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1NDYzMyAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogaW1wbGVtZW50cyBwYXJzZXIgLSBwdWJsaWMgaW50ZXJmYWNlIGZvciBDTEEgcGFyc2luZyBhbmQgYWNjZXNzaW5nCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9SVF9DTEFfUEFSU0VSX0lQUF8wNjI5MDRHRVIKLSNkZWZpbmUgTkROQk9PU1RfUlRfQ0xBX1BBUlNFUl9JUFBfMDYyOTA0R0VSCi0KLS8vIEJvb3N0LlJ1bnRpbWUuUGFyYW1ldGVyCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL3RyYWNlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvYXJndW1lbnQuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9hcmd2X3RyYXZlcnNlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9wYXJhbWV0ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvbW9kaWZpZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvdmFsaWRhdGlvbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9wYXJzZXIuaHBwPgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9iYXNpY19jc3RyaW5nL2lvLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2ZvcmVhY2guaHBwPgotCi0vLyBCb29zdAotI2luY2x1ZGUgPG5kbmJvb3N0L2xleGljYWxfY2FzdC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UgewotCi1uYW1lc3BhY2UgY2xhIHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgIHJ1bnRpbWU6OmNsYTo6cGFyc2VyICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1ORE5CT09TVF9SVF9QQVJBTV9JTkxJTkUKLXBhcnNlcjo6cGFyc2VyKCBjc3RyaW5nIHByb2dyYW1fbmFtZSApCi17Ci0gICAgYXNzaWduX29wKCBtX3Byb2dyYW1fbmFtZSwgcHJvZ3JhbV9uYW1lLCAwICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLU5ETkJPT1NUX1JUX1BBUkFNX0lOTElORSBwYXJzZXI6OnBhcmFtX2l0ZXJhdG9yCi1wYXJzZXI6OmZpcnN0X3BhcmFtKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9wYXJhbWV0ZXJzLmJlZ2luKCk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLU5ETkJPT1NUX1JUX1BBUkFNX0lOTElORSBwYXJzZXI6OnBhcmFtX2l0ZXJhdG9yCi1wYXJzZXI6Omxhc3RfcGFyYW0oKSBjb25zdAotewotICAgIHJldHVybiBtX3BhcmFtZXRlcnMuZW5kKCk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLU5ETkJPT1NUX1JUX1BBUkFNX0lOTElORSBhcmd1bWVudCBjb25zdCYKLXBhcnNlcjo6dmFsaWRfYXJndW1lbnQoIGNzdHJpbmcgc3RyaW5nX2lkICkgY29uc3QKLXsKLSAgICBjb25zdF9hcmd1bWVudF9wdHIgYXJnID0gKCp0aGlzKVtzdHJpbmdfaWRdOwotCi0gICAgTkROQk9PU1RfUlRfUEFSQU1fVkFMSURBVEVfTE9HSUMoICEhYXJnLCAiQWN0dWFsIGFyZ3VtZW50IGZvciBwYXJhbWV0ZXIgIiA8PCBzdHJpbmdfaWQgPDwgIiBpcyBub3QgcHJlc2VudCIgKTsKLQotICAgIHJldHVybiAqYXJnOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1ORE5CT09TVF9SVF9QQVJBTV9JTkxJTkUgcGFyc2VyJgotcGFyc2VyOjpvcGVyYXRvcjw8KCBwYXJhbWV0ZXJfcHRyIG5ld19wYXJhbSApCi17Ci0gICAgTkROQk9PU1RfVEVTVF9GT1JFQUNIKCBwYXJhbWV0ZXJfcHRyLCBvbGRfcGFyYW0sIG1fcGFyYW1ldGVycyApIHsKLSAgICAgICAgTkROQk9PU1RfUlRfUEFSQU1fVkFMSURBVEVfTE9HSUMoICFvbGRfcGFyYW0tPmNvbmZsaWN0X3dpdGgoICpuZXdfcGFyYW0gKSwKLSAgICAgICAgICAgIE5ETkJPT1NUX1JUX1BBUkFNX0xJVEVSQUwoICJEZWZpbml0aW9uIG9mIHBhcmFtZXRlciAiICkgICAgICAgICAgICAgICAgPDwgbmV3X3BhcmFtLT5pZF8yX3JlcG9ydCgpIDw8IAotICAgICAgICAgICAgTkROQk9PU1RfUlRfUEFSQU1fTElURVJBTCggIiBjb25mbGljdHMgd2l0aCBkZWZpbnRpb24gb2YgcGFyYW1ldGVyICIgKSA8PCBvbGRfcGFyYW0tPmlkXzJfcmVwb3J0KCkgKTsKLSAgICB9Ci0KLSAgICBtX3BhcmFtZXRlcnMucHVzaF9iYWNrKCBuZXdfcGFyYW0gKTsKLQotICAgIHJldHVybiAqdGhpczsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotTkROQk9PU1RfUlRfUEFSQU1fSU5MSU5FIHZvaWQKLXBhcnNlcjo6cGFyc2UoIGludCYgYXJnYywgY2hhcl90eXBlKiogYXJndiApCi17Ci0gICAgaWYoIG1fcHJvZ3JhbV9uYW1lLmVtcHR5KCkgKSB7Ci0gICAgICAgIG1fcHJvZ3JhbV9uYW1lLmFzc2lnbiggYXJndlswXSApOwotICAgICAgICBkc3RyaW5nOjpzaXplX3R5cGUgcG9zID0gbV9wcm9ncmFtX25hbWUuZmluZF9sYXN0X29mKCBORE5CT09TVF9SVF9QQVJBTV9MSVRFUkFMKCAiL1xcIiApICk7Ci0KLSAgICAgICAgaWYoIHBvcyAhPSBzdGF0aWNfY2FzdDxkc3RyaW5nOjpzaXplX3R5cGU+KGNzdHJpbmc6Om5wb3MpICkKLSAgICAgICAgICAgIG1fcHJvZ3JhbV9uYW1lLmVyYXNlKCAwLCBwb3MrMSApOwotICAgIH0KLQotICAgIG1fdHJhdmVyc2VyLmluaXQoIGFyZ2MsIGFyZ3YgKTsKLQotICAgIHRyeSB7Ci0gICAgICAgIHdoaWxlKCAhbV90cmF2ZXJzZXIuZW9pKCkgKSB7Ci0gICAgICAgICAgICBwYXJhbWV0ZXJfcHRyIGZvdW5kX3BhcmFtOwotCi0gICAgICAgICAgICBORE5CT09TVF9SVF9QQVJBTV9UUkFDRSggIlRvdGFsICIgPDwgbV9wYXJhbWV0ZXJzLnNpemUoKSA8PCAiIHBhcmFtZXRlcnMgcmVnaXN0ZXJlZCIgKTsKLQotICAgICAgICAgICAgTkROQk9PU1RfVEVTVF9GT1JFQUNIKCBwYXJhbWV0ZXJfcHRyIGNvbnN0JiwgY3Vycl9wYXJhbSwgbV9wYXJhbWV0ZXJzICkgewotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1JUX1BBUkFNX1RSQUNFKCAiVHJ5IHBhcmFtZXRlciAiIDw8IGN1cnJfcGFyYW0tPmlkXzJfcmVwb3J0KCkgKTsKLQotICAgICAgICAgICAgICAgIGlmKCBjdXJyX3BhcmFtLT5tYXRjaGluZyggbV90cmF2ZXJzZXIsICFmb3VuZF9wYXJhbSApICkgewotICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9SVF9QQVJBTV9UUkFDRSggIk1hdGNoIGZvdW5kIiApOwotICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9SVF9DTEFfVkFMSURBVEVfSU5QVVQoICFmb3VuZF9wYXJhbSwgKG1fdHJhdmVyc2VyLnJvbGxiYWNrKCksbV90cmF2ZXJzZXIpLCAiQW1iaWd1b3VzIGlucHV0IiApOwotCi0gICAgICAgICAgICAgICAgICAgIGZvdW5kX3BhcmFtID0gY3Vycl9wYXJhbTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBtX3RyYXZlcnNlci5yb2xsYmFjaygpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiggIWZvdW5kX3BhcmFtICkgewotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1JUX1BBUkFNX1RSQUNFKCAiTm8gbWF0Y2ggZm91bmQiICk7Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfUlRfQ0xBX1ZBTElEQVRFX0lOUFVUKCBtX3RyYXZlcnNlci5oYW5kbGVfbWlzbWF0Y2goKSwgbV90cmF2ZXJzZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9SVF9QQVJBTV9MSVRFUkFMKCAiVW5leHBlY3RlZCBpbnB1dCIgKSApOwotCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIE5ETkJPT1NUX1JUX1BBUkFNX1RSQUNFKCAiUGFyc2UgYXJndW1lbnQgdmFsdWUiICk7Ci0gICAgICAgICAgICBmb3VuZF9wYXJhbS0+cHJvZHVjZV9hcmd1bWVudCggbV90cmF2ZXJzZXIgKTsKLQotICAgICAgICAgICAgbV90cmF2ZXJzZXIuY29tbWl0KCk7Ci0gICAgICAgIH0KLQotICAgICAgICBORE5CT09TVF9URVNUX0ZPUkVBQ0goIHBhcmFtZXRlcl9wdHIgY29uc3QmLCBjdXJyX3BhcmFtLCBtX3BhcmFtZXRlcnMgKSB7Ci0gICAgICAgICAgICBpZiggIWN1cnJfcGFyYW0tPnBfb3B0aW9uYWwgJiYgIWN1cnJfcGFyYW0tPmFjdHVhbF9hcmd1bWVudCgpICkgewotICAgICAgICAgICAgICAgIGN1cnJfcGFyYW0tPnByb2R1Y2VfYXJndW1lbnQoICp0aGlzICk7Ci0KLSAgICAgICAgICAgICAgICBORE5CT09TVF9SVF9QQVJBTV9WQUxJREFURV9MT0dJQyggY3Vycl9wYXJhbS0+YWN0dWFsX2FyZ3VtZW50KCksCi0gICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX1JUX1BBUkFNX0xJVEVSQUwoICJSZXF1aXJlZCBhcmd1bWVudCBmb3IgcGFyYW1ldGVyICIgKSA8PCBjdXJyX3BhcmFtLT5pZF8yX3JlcG9ydCgpCi0gICAgICAgICAgICAgICAgICAgICAgICA8PCBORE5CT09TVF9SVF9QQVJBTV9MSVRFUkFMKCAiIGlzIG1pc3NpbmciICkgKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAgICBjYXRjaCggYmFkX2xleGljYWxfY2FzdCBjb25zdCYgKSB7Ci0gICAgICAgIE5ETkJPT1NUX1JUX1BBUkFNX1JFUE9SVF9MT0dJQ19FUlJPUiggCi0gICAgICAgICAgICBORE5CT09TVF9SVF9QQVJBTV9MSVRFUkFMKCAiU3RyaW5nIHRvIHZhbHVlIGNvbnZlcnRpb24gZXJyb3IgZHVyaW5nIGlucHV0IHBhcnNpbmciICkgKTsKLSAgICB9Ci0KLSAgICBtX3RyYXZlcnNlci5yZW1haW5kZXIoIGFyZ2MsIGFyZ3YgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotTkROQk9PU1RfUlRfUEFSQU1fSU5MSU5FIGNvbnN0X2FyZ3VtZW50X3B0cgotcGFyc2VyOjpvcGVyYXRvcltdKCBjc3RyaW5nIHN0cmluZ19pZCApIGNvbnN0Ci17Ci0gICAgcGFyYW1ldGVyX3B0ciBmb3VuZF9wYXJhbTsKLQotICAgIE5ETkJPT1NUX1RFU1RfRk9SRUFDSCggcGFyYW1ldGVyX3B0ciBjb25zdCYsIGN1cnJfcGFyYW0sIG1fcGFyYW1ldGVycyApIHsKLSAgICAgICAgaWYoIGN1cnJfcGFyYW0tPnJlc3BvbmRzX3RvKCBzdHJpbmdfaWQgKSApIHsKLSAgICAgICAgICAgIE5ETkJPT1NUX1JUX1BBUkFNX1ZBTElEQVRFX0xPR0lDKCAhZm91bmRfcGFyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfUlRfUEFSQU1fTElURVJBTCggIkFtYmlndW91cyBwYXJhbWV0ZXIgc3RyaW5nIGlkOiAiICkgPDwgc3RyaW5nX2lkICk7Ci0KLSAgICAgICAgICAgIGZvdW5kX3BhcmFtID0gY3Vycl9wYXJhbTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBmb3VuZF9wYXJhbSA/IGZvdW5kX3BhcmFtLT5hY3R1YWxfYXJndW1lbnQoKSA6IGFyZ3VtZW50X3B0cigpOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1ORE5CT09TVF9SVF9QQVJBTV9JTkxJTkUgY3N0cmluZwotcGFyc2VyOjpnZXQoIGNzdHJpbmcgc3RyaW5nX2lkICkgY29uc3QKLXsKLSAgICByZXR1cm4gZ2V0PGNzdHJpbmc+KCBzdHJpbmdfaWQgKTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotTkROQk9PU1RfUlRfUEFSQU1fSU5MSU5FIHZvaWQKLXBhcnNlcjo6dXNhZ2UoIG91dF9zdHJlYW0mIG9zdHIgKQotewotICAgIGlmKCBtX3Byb2dyYW1fbmFtZS5lbXB0eSgpICkKLSAgICAgICAgYXNzaWduX29wKCBtX3Byb2dyYW1fbmFtZSwgTkROQk9PU1RfUlRfUEFSQU1fQ1NUUklOR19MSVRFUkFMKCAiPHByb2dyYW0+IiApLCAwICk7Ci0KLSAgICBmb3JtYXRfc3RyZWFtIGZzOwotCi0gICAgZnMgPDwgbV9wcm9ncmFtX25hbWU7Ci0KLSAgICBORE5CT09TVF9URVNUX0ZPUkVBQ0goIHBhcmFtZXRlcl9wdHIgY29uc3QmLCBjdXJyX3BhcmFtLCBtX3BhcmFtZXRlcnMgKSB7Ci0gICAgICAgIGZzIDw8IE5ETkJPT1NUX1JUX1BBUkFNX0xJVEVSQUwoICcgJyApOwotCi0gICAgICAgIGlmKCBjdXJyX3BhcmFtLT5wX29wdGlvbmFsICkKLSAgICAgICAgICAgIGZzIDw8IE5ETkJPT1NUX1JUX1BBUkFNX0xJVEVSQUwoICdbJyApOwotCi0gICAgICAgIGN1cnJfcGFyYW0tPnVzYWdlX2luZm8oIGZzICk7Ci0KLSAgICAgICAgaWYoIGN1cnJfcGFyYW0tPnBfb3B0aW9uYWwgKQotICAgICAgICAgICAgZnMgPDwgTkROQk9PU1RfUlRfUEFSQU1fTElURVJBTCggJ10nICk7Ci0KLSAgICAgICAgaWYoIGN1cnJfcGFyYW0tPnBfbXVsdGlwbGljYWJsZSApIHsKLSAgICAgICAgICAgIGZzIDw8IE5ETkJPT1NUX1JUX1BBUkFNX0NTVFJJTkdfTElURVJBTCggIiAuLi4gIiApOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiggY3Vycl9wYXJhbS0+cF9vcHRpb25hbCApCi0gICAgICAgICAgICAgICAgZnMgPDwgTkROQk9PU1RfUlRfUEFSQU1fTElURVJBTCggJ1snICk7Ci0KLSAgICAgICAgICAgIGN1cnJfcGFyYW0tPnVzYWdlX2luZm8oIGZzICk7Ci0KLSAgICAgICAgICAgIGlmKCBjdXJyX3BhcmFtLT5wX29wdGlvbmFsICkKLSAgICAgICAgICAgICAgICBmcyA8PCBORE5CT09TVF9SVF9QQVJBTV9MSVRFUkFMKCAnXScgKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIG9zdHIgPDwgTkROQk9PU1RfUlRfUEFSQU1fQ1NUUklOR19MSVRFUkFMKCAiVXNhZ2U6XG4iICkgPDwgZnMuc3RyKCkgPDwgc3RkOjplbmRsOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1ORE5CT09TVF9SVF9QQVJBTV9JTkxJTkUgdm9pZAotcGFyc2VyOjpoZWxwKCBvdXRfc3RyZWFtJiBvc3RyICkKLXsKLSAgICB1c2FnZSggb3N0ciApOwotCi0gICAgYm9vbCBuZWVkX3doZXJlID0gdHJ1ZTsKLQotICAgIE5ETkJPT1NUX1RFU1RfRk9SRUFDSCggcGFyYW1ldGVyX3B0ciBjb25zdCYsIGN1cnJfcGFyYW0sIG1fcGFyYW1ldGVycyApIHsKLSAgICAgICAgaWYoIGN1cnJfcGFyYW0tPnBfZGVzY3JpcHRpb24tPmVtcHR5KCkgKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgaWYoIG5lZWRfd2hlcmUgKSB7Ci0gICAgICAgICAgICBvc3RyIDw8IE5ETkJPT1NUX1JUX1BBUkFNX0NTVFJJTkdfTElURVJBTCggIndoZXJlOlxuIiApOwotICAgICAgICAgICAgbmVlZF93aGVyZSA9IGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgb3N0ciA8PCBjdXJyX3BhcmFtLT5pZF8yX3JlcG9ydCgpIDw8IE5ETkJPT1NUX1JUX1BBUkFNX0NTVFJJTkdfTElURVJBTCggIiAtICIgKSA8PCBjdXJyX3BhcmFtLT5wX2Rlc2NyaXB0aW9uIDw8IHN0ZDo6ZW5kbDsKLSAgICB9Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIGNsYQotCi19IC8vIG5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1JUX0NMQV9QQVJTRVJfSVBQXzA2MjkwNEdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL3R5cGVkX3BhcmFtZXRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvdHlwZWRfcGFyYW1ldGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzQzZDc1NS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvdHlwZWRfcGFyYW1ldGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTQ2MzMgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGdlbmVyaWMgdHlwZWQgcGFyYW1ldGVyIG1vZGVsCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9SVF9DTEFfVFlQRURfUEFSQU1FVEVSX0hQUF8wNjI2MDRHRVIKLSNkZWZpbmUgTkROQk9PU1RfUlRfQ0xBX1RZUEVEX1BBUkFNRVRFUl9IUFBfMDYyNjA0R0VSCi0KLS8vIEJvb3N0LlJ1bnRpbWUuUGFyYW1ldGVyCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NvbmZpZy5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvdmFsaWRhdGlvbi5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL3BhcmFtZXRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9hcmd1bWVudF9mYWN0b3J5LmhwcD4KLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnR0aS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UgewotCi1uYW1lc3BhY2UgY2xhIHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgcnVudGltZTo6Y2xhOjp0eXBlZF9wYXJhbWV0ZXIgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotY2xhc3MgdHlwZWRfcGFyYW1ldGVyIDogcHVibGljIGNsYTo6cGFyYW1ldGVyIHsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCB0eXBlZF9wYXJhbWV0ZXIoIGlkZW50aWZpY2F0aW9uX3BvbGljeSYgSUQgKSAKLSAgICA6IGNsYTo6cGFyYW1ldGVyKCBJRCwgbV9hcmdfZmFjdG9yeSwgcnR0aTo6dHlwZV9pZDxUPigpID09IHJ0dGk6OnR5cGVfaWQ8Ym9vbD4oKSApIAotICAgIHt9Ci0KLSAgICAvLyBwYXJhbWV0ZXIgcHJvcGVydGllcyBtb2RpZmljYXRpb24KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBNb2RpZmllcj4KLSAgICB2b2lkICAgIGFjY2VwdF9tb2RpZmllciggTW9kaWZpZXIgY29uc3QmIG0gKQotICAgIHsKLSAgICAgICAgY2xhOjpwYXJhbWV0ZXI6OmFjY2VwdF9tb2RpZmllciggbSApOwotCi0gICAgICAgIG1fYXJnX2ZhY3RvcnkuYWNjZXB0X21vZGlmaWVyKCBtICk7Ci0KLSAgICAgICAgTkROQk9PU1RfUlRfUEFSQU1fVkFMSURBVEVfTE9HSUMoICFwX29wdGlvbmFsIHx8ICFtX2FyZ19mYWN0b3J5Lm1fdmFsdWVfZ2VuZXJhdG9yLAotICAgICAgICAgICAgTkROQk9PU1RfUlRfUEFSQU1fTElURVJBTCggImNhbid0IGRlZmluZSBhIHZhbHVlIGdlbmVyYXRvciBmb3Igb3B0aW9uYWwgcGFyYW1ldGVyICIgKSA8PCBpZF8yX3JlcG9ydCgpICk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIC8vIERhdGEgbWVtYmVycwotICAgIHR5cGVkX2FyZ3VtZW50X2ZhY3Rvcnk8VD4gICBtX2FyZ19mYWN0b3J5OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgY2xhCi0KLX0gLy8gbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfUlRfQ0xBX1RZUEVEX1BBUkFNRVRFUl9IUFBfMDYyNjA0R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvdmFsaWRhdGlvbi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvdmFsaWRhdGlvbi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAxMWNmYmUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL3ZhbGlkYXRpb24uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA0OTMxMiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogaW5wdXQgdmFsaWRhdGlvbiBoZWxwZXJzIGRlZmluaXRpb24KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1JUX0NMQV9WQUxJREFUSU9OX0hQUF8wNjI2MDRHRVIKLSNkZWZpbmUgTkROQk9PU1RfUlRfQ0xBX1ZBTElEQVRJT05fSFBQXzA2MjYwNEdFUgotCi0vLyBCb29zdC5SdW50aW1lLlBhcmFtZXRlcgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jb25maWcuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9md2QuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFIHsKLQotbmFtZXNwYWNlIGNsYSB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICBydW50aW1lOjpjbGE6OnJlcG9ydF9pbnB1dF9lcnJvciAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdm9pZCByZXBvcnRfaW5wdXRfZXJyb3IoIGFyZ3ZfdHJhdmVyc2VyIGNvbnN0JiB0ciwgZm9ybWF0X3N0cmVhbSYgbXNnICk7Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNkZWZpbmUgTkROQk9PU1RfUlRfQ0xBX1ZBTElEQVRFX0lOUFVUKCBiLCB0ciwgbXNnICkgXAotICAgIGlmKCBiICkgOyBlbHNlIDo6bmRuYm9vc3Q6Ok5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRTo6Y2xhOjpyZXBvcnRfaW5wdXRfZXJyb3IoIHRyLCBmb3JtYXRfc3RyZWFtKCkucmVmKCkgPDwgbXNnICkKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2UgY2xhCi0KLX0gLy8gbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaWZuZGVmIE5ETkJPT1NUX1JUX1BBUkFNX09GRkxJTkUKLQotIyAgZGVmaW5lIE5ETkJPT1NUX1JUX1BBUkFNX0lOTElORSBpbmxpbmUKLSMgIGluY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvdmFsaWRhdGlvbi5pcHA+Ci0KLSNlbmRpZgotCi0jZW5kaWYgLy8gTkROQk9PU1RfUlRfQ0xBX1ZBTElEQVRJT05fSFBQXzA2MjYwNEdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL3ZhbGlkYXRpb24uaXBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL3ZhbGlkYXRpb24uaXBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YWY5MzcwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS92YWxpZGF0aW9uLmlwcAorKysgL2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNDkzMTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGlucHV0IHZhbGlkYXRpb24gaGVscGVycyBpbXBsZW1lbnRhdGlvbgotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfUlRfQ0xBX1ZBTElEQVRJT05fSVBQXzA3MDYwNEdFUgotI2RlZmluZSBORE5CT09TVF9SVF9DTEFfVkFMSURBVElPTl9JUFBfMDcwNjA0R0VSCi0KLS8vIEJvb3N0LlJ1bnRpbWUuUGFyYW1ldGVyCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NvbmZpZy5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL2FyZ3ZfdHJhdmVyc2VyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL3ZhbGlkYXRpb24uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS92YWxpZGF0aW9uLmhwcD4gLy8gTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFOjpsb2dpY19lcnJvcgotCi0vLyBCb29zdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvYmFzaWNfY3N0cmluZy9pby5ocHA+Ci0KLS8vIFNUTAotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFIHsKLQotbmFtZXNwYWNlIGNsYSB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgcnVudGltZTo6Y2xhOjp2YWxpZGF0aW9uICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotTkROQk9PU1RfUlRfUEFSQU1fSU5MSU5FIHZvaWQKLXJlcG9ydF9pbnB1dF9lcnJvciggYXJndl90cmF2ZXJzZXIgY29uc3QmIHRyLCBmb3JtYXRfc3RyZWFtJiBtc2cgKQotewotICAgIGlmKCB0ci5lb2koKSApCi0gICAgICAgIG1zZyA8PCBORE5CT09TVF9SVF9QQVJBTV9MSVRFUkFMKCAiIGF0IHRoZSBlbmQgb2YgaW5wdXQiICk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIG1zZyA8PCBORE5CT09TVF9SVF9QQVJBTV9MSVRFUkFMKCAiIGluIHRoZSBmb2xsb3dpbmcgcG9zaXRpb246ICIgKTsKLQotICAgICAgICBpZiggdHIuaW5wdXQoKS5zaXplKCkgPiA1ICkKLSAgICAgICAgICAgIG1zZyA8PCB0ci5pbnB1dCgpLnN1YnN0ciggMCwgNSApIDw8IE5ETkJPT1NUX1JUX1BBUkFNX0xJVEVSQUwoICIuLi4iICk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1zZyA8PCB0ci5pbnB1dCgpOwotICAgIH0KLQotICAgIHRocm93IE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRTo6bG9naWNfZXJyb3IoIG1zZy5zdHIoKSApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSBjbGEKLQotfSAvLyBuYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9SVF9DTEFfVkFMSURBVElPTl9JUFBfMDcwNjA0R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvdmFsdWVfZ2VuZXJhdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS92YWx1ZV9nZW5lcmF0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZjkyYzM2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS92YWx1ZV9nZW5lcmF0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODEgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSAKLS8vICBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSAKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA0OTMxMiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogc3BlY2lmaWMgdmFsdWUgZ2VuZXJhdG9ycwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfUlRfQ0xBX1ZBTFVFX0dFTkVSQVRPUl9IUFBfMDYyNjA0R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1JUX0NMQV9WQUxVRV9HRU5FUkFUT1JfSFBQXzA2MjYwNEdFUgotCi0vLyBCb29zdC5SdW50aW1lLlBhcmFtZXRlcgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jb25maWcuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvcGFyc2VyLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRSB7Ci0KLW5hbWVzcGFjZSBjbGEgewotCi1uYW1lc3BhY2UgcnRfY2xhX2RldGFpbCB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgcnVudGltZTo6Y2xhOjpjb25zdF9nZW5lcmF0b3IgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNsYXNzIGNvbnN0X2dlbmVyYXRvciB7Ci1wdWJsaWM6Ci0gICAgLy8gQ29uc3RydWN0b3IKLSAgICBleHBsaWNpdCAgICBjb25zdF9nZW5lcmF0b3IoIFQgY29uc3QmIHQgKSA6IG1fY29uc3RfdmFsdWUoIHQgKSB7fQotCi0gICAgLy8gZ2VuZXJhdG9yIGludGVyZmFjZQotICAgIHZvaWQgICAgICAgIG9wZXJhdG9yKCkoIHBhcnNlciBjb25zdCYsIG5kbmJvb3N0OjpvcHRpb25hbDxUPiYgdCApIGNvbnN0ICAgeyB0ID0gbV9jb25zdF92YWx1ZTsgfQotCi1wcml2YXRlOgotICAgIC8vIERhdGEgbWVtYmVycwotICAgIFQgICAgICAgICAgIG1fY29uc3RfdmFsdWU7Ci19OwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICBydW50aW1lOjpjbGE6OnJlZl9nZW5lcmF0b3IgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1jbGFzcyByZWZfZ2VuZXJhdG9yIHsKLXB1YmxpYzoKLSAgICAvLyBDb25zdHJ1Y3RvcgotICAgIGV4cGxpY2l0ICAgIHJlZl9nZW5lcmF0b3IoIGNzdHJpbmcgcmVmX2lkICkgOiBtX3JlZl9pZCggcmVmX2lkICkge30KLQotICAgIC8vIGdlbmVyYXRvciBpbnRlcmZhY2UKLSAgICB2b2lkICAgICAgICBvcGVyYXRvcigpKCBwYXJzZXIgY29uc3QmIHAsIG5kbmJvb3N0OjpvcHRpb25hbDxUPiYgdCApIGNvbnN0Ci0gICAgewotICAgICAgICBwLmdldCggbV9yZWZfaWQsIHQgKTsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgLy8gRGF0YSBtZW1iZXJzCi0gICAgY3N0cmluZyAgICAgbV9yZWZfaWQ7Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSBydF9jbGFfZGV0YWlsCi0KLX0gLy8gbmFtZXNwYWNlIGNsYQotCi19IC8vIG5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1JUX0NMQV9WQUxVRV9HRU5FUkFUT1JfSFBQXzA2MjYwNEdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL3ZhbHVlX2hhbmRsZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY2xhL3ZhbHVlX2hhbmRsZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDkwNjAzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NsYS92YWx1ZV9oYW5kbGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgCi0vLyAgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNDkzMTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IHNwZWNpZmljIHZhbHVlIGhhbmRsZXJzCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9SVF9DTEFfVkFMVUVfSEFORExFUl9IUFBfMDYyNjA0R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1JUX0NMQV9WQUxVRV9IQU5ETEVSX0hQUF8wNjI2MDRHRVIKLQotLy8gQm9vc3QuUnVudGltZS5QYXJhbWV0ZXIKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY29uZmlnLmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jbGEvZndkLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRSB7Ci0KLW5hbWVzcGFjZSBjbGEgewotCi1uYW1lc3BhY2UgcnRfY2xhX2RldGFpbCB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgIHJ1bnRpbWU6OmNsYTo6YXNzaWduZXIgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWNsYXNzIGFzc2lnbmVyIHsKLXB1YmxpYzoKLSAgICAvLyBDb25zdHJ1Y3RvcgotICAgIGV4cGxpY2l0ICAgIGFzc2lnbmVyKCBUJiBsb2MgKSA6IG1fdGFyZ2V0KCBsb2MgKSAgICB7fQotCi0gICAgLy8gdmFsdWUgaGFuZGxlciBpbXBsZW1lbnRhdGlvbgotICAgIHZvaWQgICAgICAgIG9wZXJhdG9yKCkoIHBhcmFtZXRlciBjb25zdCYsIFQmIHQgKSAgeyBtX3RhcmdldCA9IHQ7IH0KLQotcHJpdmF0ZToKLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICBUJiAgICAgICAgICBtX3RhcmdldDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIHJ0X2NsYV9kZXRhaWwKLQotfSAvLyBuYW1lc3BhY2UgY2xhCi0KLX0gLy8gbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfUlRfQ0xBX1ZBTFVFX0hBTkRMRVJfSFBQXzA2MjYwNEdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY29uZmlnLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NvbmZpZy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1ZjhmMTcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY29uZmlnLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1NiArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTc5OTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IFJ1bnRpbWUuUGFyYW0gbGlicmFyeSBjb25maWd1cmF0aW9uCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9SVF9DT05GSUdfSFBQXzA2MjYwNEdFUgotI2RlZmluZSBORE5CT09TVF9SVF9DT05GSUdfSFBQXzA2MjYwNEdFUgotCi0vLyBCb29zdAotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaWZkZWYgTkROQk9PU1RfTVNWQwotIyBwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0NTExKSAvLyBjb3B5IGNvbnN0cnVjdG9yIGNvdWxkIG5vdCBiZSBnZW5lcmF0ZWQKLSMgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDUxMikgLy8gYXNzaWdubWVudCBvcGVyYXRvciBjb3VsZCBub3QgYmUgZ2VuZXJhdGVkCi0jIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxODEpIC8vIHF1YWxpZmllciBhcHBsaWVkIHRvIHJlZmVyZW5jZSB0eXBlOyBpZ25vcmVkCi0jIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ2NzUpIC8vIHJlc29sdmVkIG92ZXJsb2FkIHdhcyBmb3VuZCBieSBhcmd1bWVudC1kZXBlbmRlbnQgbG9va3VwCi0jZW5kaWYKLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9iYXNpY19jc3RyaW5nL2Jhc2ljX2NzdHJpbmcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvd3JhcF9zdHJpbmdzdHJlYW0uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvYmFzaWNfY3N0cmluZy9pby5ocHA+IC8vIG9wZXJhdG9yPDwobmRuYm9vc3Q6OnJ1bnRpbWU6OmNzdHJpbmcpCi0KLS8vIFNUTAotI2luY2x1ZGUgPHN0cmluZz4KLSNpbmNsdWRlIDxjc3RkbGliPgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0jaWZuZGVmIE5ETkJPT1NUX1JUX1BBUkFNX0NVU1RPTV9TVFJJTkcKLSMgIGlmbmRlZiBORE5CT09TVF9SVF9QQVJBTV9XSURFX1NUUklORwotIyAgICBkZWZpbmUgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bnRpbWUKLSMgIGVsc2UKLSMgICAgZGVmaW5lIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWRlX3J1bnRpbWUKLSMgIGVuZGlmCi0jZW5kaWYKLQotI2lmZGVmIF9fU1VOUFJPX0NDCi1leHRlcm4gaW50IHB1dGVudihjaGFyKik7Ci0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRSB7Ci0KLSNpZm5kZWYgTkROQk9PU1RfUlRfUEFSQU1fQ1VTVE9NX1NUUklORwotIyAgaWZuZGVmIE5ETkJPT1NUX1JUX1BBUkFNX1dJREVfU1RSSU5HCi0KLXR5cGVkZWYgY2hhciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyX3R5cGU7Ci10eXBlZGVmIHN0ZDo6c3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHN0cmluZzsKLXR5cGVkZWYgdW5pdF90ZXN0Ojpjb25zdF9zdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3RyaW5nOwotdHlwZWRlZiB1bml0X3Rlc3Q6OmxpdGVyYWxfc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpdGVyYWxfY3N0cmluZzsKLXR5cGVkZWYgd3JhcF9zdHJpbmdzdHJlYW0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRfc3RyZWFtOwotCi0jaWZkZWYgTkROQk9PU1RfQ0xBU1NJQ19JT1NUUkVBTVMKLXR5cGVkZWYgc3RkOjpvc3RyZWFtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRfc3RyZWFtOwotI2Vsc2UKLXR5cGVkZWYgc3RkOjpiYXNpY19vc3RyZWFtPGNoYXJfdHlwZT4gICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRfc3RyZWFtOwotI2VuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQ5OTYpIC8vIHB1dGVudgotI2VuZGlmCi0KLSNpZm5kZWYgVU5ERVJfQ0UKLSNpZiBkZWZpbmVkKF9fQ09NT19fKSAmJiAwCi1pbmxpbmUgdm9pZAotcHV0ZW52X2ltcGwoIGNzdHJpbmcgbmFtZSwgY3N0cmluZyB2YWx1ZSApCi17Ci0gICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLSAgICAvLyAhISB0aGlzIG1heSBhY3R1YWxseSBmYWlsLiBXaGF0IHNob3VsZCB3ZSBkbz8KLSAgICBzZXRlbnYoIG5hbWUuYmVnaW4oKSwgdmFsdWUuYmVnaW4oKSwgMSApOwotfQotI2Vsc2UKLWlubGluZSB2b2lkCi1wdXRlbnZfaW1wbCggY3N0cmluZyBuYW1lLCBjc3RyaW5nIHZhbHVlICkKLXsKLSAgICBmb3JtYXRfc3RyZWFtIGZzOwotCi0gICAgZnMgPDwgbmFtZSA8PCAnPScgPDwgdmFsdWU7Ci0KLSAgICAvLyAhISB0aGlzIG1heSBhY3R1YWxseSBmYWlsLiBXaGF0IHNob3VsZCB3ZSBkbz8KLSAgICAvLyBjb25zdF9jYXN0IGlzIHVzZWQgdG8gc2F0aXNmeSBwdXRlbnYgaW50ZXJmYWNlCi0gICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLSAgICBwdXRlbnYoIGNvbnN0X2Nhc3Q8Y2hhcio+KCBmcy5zdHIoKS5jX3N0cigpICkgKTsKLX0KLSNlbmRpZgotI2VuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9NU1ZDIAotI3ByYWdtYSB3YXJuaW5nKHBvcCkgCi0jZW5kaWYgCi0KLSNkZWZpbmUgTkROQk9PU1RfUlRfUEFSQU1fTElURVJBTCggbCApIGwKLSNkZWZpbmUgTkROQk9PU1RfUlRfUEFSQU1fQ1NUUklOR19MSVRFUkFMKCBsICkgY3N0cmluZyggbCwgc2l6ZW9mKCBsICkgLSAxICkKLSNkZWZpbmUgTkROQk9PU1RfUlRfUEFSQU1fR0VURU5WIGdldGVudgotI2RlZmluZSBORE5CT09TVF9SVF9QQVJBTV9QVVRFTlYgOjpuZG5ib29zdDo6TkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFOjpwdXRlbnZfaW1wbAotI2RlZmluZSBORE5CT09TVF9SVF9QQVJBTV9FWENFUFRJT05fSU5IRVJJVF9TVEQKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotIyAgZWxzZQotCi10eXBlZGVmIHdjaGFyX3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcl90eXBlOwotdHlwZWRlZiBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyX3R5cGU+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRzdHJpbmc7Ci10eXBlZGVmIHVuaXRfdGVzdDo6YmFzaWNfY3N0cmluZzx3Y2hhcl90IGNvbnN0PiAgICAgICAgICAgICAgICAgY3N0cmluZzsKLXR5cGVkZWYgY29uc3QgdW5pdF90ZXN0OjpiYXNpY19jc3RyaW5nPHdjaGFyX3QgY29uc3Q+ICAgICAgICAgICBsaXRlcmFsX2NzdHJpbmc7Ci10eXBlZGVmIHdyYXBfd3N0cmluZ3N0cmVhbSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0X3N0cmVhbTsKLXR5cGVkZWYgc3RkOjp3b3N0cmVhbSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRfc3RyZWFtOwotCi0jaWZuZGVmIFVOREVSX0NFCi1pbmxpbmUgdm9pZAotcHV0ZW52X2ltcGwoIGNzdHJpbmcgbmFtZSwgY3N0cmluZyB2YWx1ZSApCi17Ci0gICAgZm9ybWF0X3N0cmVhbSBmczsKLQotICAgIGZzIDw8IG5hbWUgPDwgJz0nIDw8IHZhbHVlOwotCi0gICAgLy8gISEgdGhpcyBtYXkgYWN0dWFsbHkgZmFpbC4gV2hhdCBzaG91bGQgd2UgZG8/Ci0gICAgLy8gY29uc3RfY2FzdCBpcyB1c2VkIHRvIHNhdGlzZnkgcHV0ZW52IGludGVyZmFjZQotICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0gICAgd3B1dGVudiggY29uc3RfY2FzdDx3Y2hhcl90Kj4oIGZzLnN0cigpLmNfc3RyKCkgKSApOwotfQotI2VuZGlmCi0KLSNkZWZpbmUgTkROQk9PU1RfUlRfUEFSQU1fTElURVJBTCggbCApIEwgIyMgbAotI2RlZmluZSBORE5CT09TVF9SVF9QQVJBTV9DU1RSSU5HX0xJVEVSQUwoIGwgKSBjc3RyaW5nKCBMICMjIGwsIHNpemVvZiggTCAjIyBsICkvc2l6ZW9mKHdjaGFyX3QpIC0gMSApCi0jZGVmaW5lIE5ETkJPT1NUX1JUX1BBUkFNX0dFVEVOViB3Z2V0ZW52Ci0jZGVmaW5lIE5ETkJPT1NUX1JUX1BBUkFNX1BVVEVOViBwdXRlbnZfaW1wbAotCi0jICBlbmRpZgotI2VuZGlmCi0KLSNpZmRlZiBfX0dOVUNfXwotI2RlZmluZSBORE5CT09TVF9SVF9QQVJBTV9VTk5FRURFRF9WSVJUVUFMIHZpcnR1YWwKLSNlbHNlCi0jZGVmaW5lIE5ETkJPT1NUX1JUX1BBUkFNX1VOTkVFREVEX1ZJUlRVQUwKLSNlbmRpZgotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1JUX0NPTkZJR19IUFBfMDYyNjA0R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9lbnYvZW52aXJvbm1lbnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvZW52L2Vudmlyb25tZW50LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzYzNGZhYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9lbnYvZW52aXJvbm1lbnQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTcyICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1NDYzMyAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogZGVmaW5lcyBhbmQgaW1wbGVtZW50cyBpbmxpbmUgbW9kZWwgb2YgcHJvZ3JhbSBlbnZpcm9ubWVudCAKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1JUX0VOVl9FTlZJUk9OTUVOVF9IUFBfMDYyNjA0R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1JUX0VOVl9FTlZJUk9OTUVOVF9IUFBfMDYyNjA0R0VSCi0KLSNpZmRlZiBVTkRFUl9DRQotI2Vycm9yIFdpbmRvd3MgQ0UgZG9lcyBub3Qgc3VwcG9ydCBlbnZpcm9ubWVudCB2YXJpYWJsZXMuCi0jZW5kaWYKLQotLy8gQm9vc3QuUnVudGltZS5QYXJhbWV0ZXIKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvYXJndW1lbnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9pbnRlcnByZXRfYXJndW1lbnRfdmFsdWUuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2Vudi9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9lbnYvbW9kaWZpZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9lbnYvdmFyaWFibGUuaHBwPgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9jYWxsYmFjay5ocHA+Ci0KLS8vIEJvb3N0Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvb3B0aW9uYWwuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFIHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgcnVudGltZTo6ZW52aXJvbm1lbnQgaW1wbGVtZW50YXRpb24gICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1uYW1lc3BhY2UgZW52aXJvbm1lbnQgewotCi1uYW1lc3BhY2UgcnRfZW52X2RldGFpbCB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIE1vZGlmaWVycz4KLXZhcmlhYmxlX2RhdGEmCi1pbml0X25ld192YXIoIGNzdHJpbmcgdmFyX25hbWUsIE1vZGlmaWVycyBtID0gbmZwOjpub19wYXJhbXMgKQotewotICAgIHJ0X2Vudl9kZXRhaWw6OnZhcmlhYmxlX2RhdGEmIG5ld192ZCA9IG5ld192YXJfcmVjb3JkKCB2YXJfbmFtZSApOwotCi0gICAgY3N0cmluZyBzdHJfdmFsdWUgPSBzeXNfcmVhZF92YXIoIG5ld192ZC5tX3Zhcl9uYW1lICk7Ci0KLSAgICBpZiggIXN0cl92YWx1ZS5pc19lbXB0eSgpICkgewotICAgICAgICB0cnkgewotICAgICAgICAgICAgbmRuYm9vc3Q6Om9wdGlvbmFsPFQ+IHZhbHVlOwotCi0gICAgICAgICAgICBpZiggbS5oYXMoIGludGVycHJldGVyICkgKQotICAgICAgICAgICAgICAgIG1baW50ZXJwcmV0ZXJdKCBzdHJfdmFsdWUsIHZhbHVlICk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgaW50ZXJwcmV0X2FyZ3VtZW50X3ZhbHVlKCBzdHJfdmFsdWUsIHZhbHVlLCAwICk7Ci0KLSAgICAgICAgICAgIGlmKCAhIXZhbHVlICkgewotICAgICAgICAgICAgICAgIG5ld192ZC5tX3ZhbHVlLnJlc2V0KCBuZXcgdHlwZWRfYXJndW1lbnQ8VD4oIG5ld192ZCApICk7Ci0KLSAgICAgICAgICAgICAgICBhcmdfdmFsdWU8VD4oICpuZXdfdmQubV92YWx1ZSApID0gKnZhbHVlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGNhdGNoKCAuLi4gKSB7IC8vICEhIGNvdWxkIHdlIGRvIHRoYXQKLSAgICAgICAgICAgIC8vICEhIHNob3VsZCB3ZSByZXBvcnQgYW4gZXJyb3I/Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiggIW5ld192ZC5tX3ZhbHVlICYmIG0uaGFzKCBkZWZhdWx0X3ZhbHVlICkgKSB7Ci0gICAgICAgIG5ld192ZC5tX3ZhbHVlLnJlc2V0KCBuZXcgdHlwZWRfYXJndW1lbnQ8VD4oIG5ld192ZCApICk7Ci0KLSAgICAgICAgbmZwOjpvcHRpb25hbGx5X2Fzc2lnbiggYXJnX3ZhbHVlPFQ+KCAqbmV3X3ZkLm1fdmFsdWUgKSwgbVtkZWZhdWx0X3ZhbHVlXSApOwotICAgIH0KLQotICAgIG5mcDo6b3B0aW9uYWxseV9hc3NpZ24oIG5ld192ZC5tX2dsb2JhbF9pZCwgbSwgZ2xvYmFsX2lkICk7Ci0KLSAgICByZXR1cm4gbmV3X3ZkOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSBydF9lbnZfZGV0YWlsCi0KLX0gLy8gbmFtZXNwYWNlIGVudmlyb25tZW50Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICBydW50aW1lOjplbnZpcm9ubWVudCAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotbmFtZXNwYWNlIGVudmlyb25tZW50IHsKLQotICAgIC8vIHZhcmlhYmxlIGFjY2VzcwotICAgIHZhcmlhYmxlX2Jhc2UKLSAgICB2YXIoIGNzdHJpbmcgdmFyX25hbWUgKTsKLQotICAgIC8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgaW5saW5lIHZhcmlhYmxlPFQ+Ci0gICAgdmFyKCBjc3RyaW5nIHZhcl9uYW1lICkKLSAgICB7Ci0gICAgICAgIHJ0X2Vudl9kZXRhaWw6OnZhcmlhYmxlX2RhdGEqIHZkID0gcnRfZW52X2RldGFpbDo6ZmluZF92YXJfcmVjb3JkKCB2YXJfbmFtZSApOwotCi0gICAgICAgIHJldHVybiBlbnZpcm9ubWVudDo6dmFyaWFibGU8VD4oICF2ZCA/IHJ0X2Vudl9kZXRhaWw6OmluaXRfbmV3X3ZhcjxUPiggdmFyX25hbWUsIG5mcDo6bm9fcGFyYW1zICkgOiAqdmQgKTsKLSAgICB9Ci0KLSAgICAvL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBNb2RpZmllcnM+Ci0gICAgaW5saW5lIHZhcmlhYmxlPFQ+Ci0gICAgdmFyKCBjc3RyaW5nIHZhcl9uYW1lLCBNb2RpZmllcnMgY29uc3QmIG0gKQotICAgIHsKLSAgICAgICAgcnRfZW52X2RldGFpbDo6dmFyaWFibGVfZGF0YSogdmQgPSBydF9lbnZfZGV0YWlsOjpmaW5kX3Zhcl9yZWNvcmQoIHZhcl9uYW1lICk7Ci0KLSAgICAgICAgcmV0dXJuIGVudmlyb25tZW50Ojp2YXJpYWJsZTxUPiggIXZkID8gcnRfZW52X2RldGFpbDo6aW5pdF9uZXdfdmFyPFQ+KCB2YXJfbmFtZSwgbSApIDogKnZkICk7Ci0gICAgfQotCi0gICAgLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0gICAgLy8gZGlyZWN0IHZhcmlhYmxlIHZhbHVlIGFjY2VzcwotICAgIGlubGluZSBjc3RyaW5nCi0gICAgZ2V0KCBjc3RyaW5nIHZhcl9uYW1lICkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlbnZpcm9ubWVudDo6dmFyPGNzdHJpbmc+KCB2YXJfbmFtZSApLnZhbHVlKCk7Ci0gICAgfQotCi0gICAgLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBpbmxpbmUgVCBjb25zdCYKLSAgICBnZXQoIGNzdHJpbmcgdmFyX25hbWUgKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGVudmlyb25tZW50Ojp2YXI8VD4oIHZhcl9uYW1lICkudmFsdWUoKTsKLSAgICB9Ci0KLSAgICAvL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIGlubGluZSB2b2lkCi0gICAgZ2V0KCBjc3RyaW5nIHZhcl9uYW1lLCBuZG5ib29zdDo6b3B0aW9uYWw8VD4mIHJlcyApCi0gICAgewotICAgICAgICB2YXJpYWJsZTxUPiBjb25zdCYgdiA9IGVudmlyb25tZW50Ojp2YXI8VD4oIHZhcl9uYW1lICk7Ci0gICAgICAgIHYudmFsdWUoIHJlcyApOwotICAgIH0KLQotICAgIC8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2UgZW52aXJvbm1lbnQKLQotbmFtZXNwYWNlIGVudiA9IGVudmlyb25tZW50OwotCi19IC8vIG5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2lmbmRlZiBORE5CT09TVF9SVF9QQVJBTV9PRkZMSU5FCi0KLSNkZWZpbmUgTkROQk9PU1RfUlRfUEFSQU1fSU5MSU5FIGlubGluZQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9lbnYvZW52aXJvbm1lbnQuaXBwPgotCi0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1JUX0VOVl9FTlZJUk9OTUVOVF9IUFBfMDYyNjA0R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9lbnYvZW52aXJvbm1lbnQuaXBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvZW52L2Vudmlyb25tZW50LmlwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2RkNzhmOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9lbnYvZW52aXJvbm1lbnQuaXBwCisrKyAvZGV2L251bGwKQEAgLTEsMTI1ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA1Nzk5MiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogaW1wbGVtZW50cyBtb2RlbCBvZiBwcm9ncmFtIGVudmlyb25tZW50IAotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfUlRfRU5WX0VOVklST05NRU5UX0lQUF8wNjI5MDRHRVIKLSNkZWZpbmUgTkROQk9PU1RfUlRfRU5WX0VOVklST05NRU5UX0lQUF8wNjI5MDRHRVIKLQotLy8gQm9vc3QuUnVudGltZS5QYXJhbWV0ZXIKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvdmFsaWRhdGlvbi5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvZW52L3ZhcmlhYmxlLmhwcD4KLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvYmFzaWNfY3N0cmluZy9jb21wYXJlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2Jhc2ljX2NzdHJpbmcvaW8uaHBwPgotCi0vLyBTVEwKLSNpbmNsdWRlIDxtYXA+Ci0jaW5jbHVkZSA8bGlzdD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRSB7Ci0KLW5hbWVzcGFjZSBlbnZpcm9ubWVudCB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgICBydW50aW1lOjplbnZpcm9ubWVudCAgICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotbmFtZXNwYWNlIHJ0X2Vudl9kZXRhaWwgewotCi10eXBlZGVmIHN0ZDo6bWFwPGNzdHJpbmcscnRfZW52X2RldGFpbDo6dmFyaWFibGVfZGF0YT4gcmVnaXN0cnk7Ci10eXBlZGVmIHN0ZDo6bGlzdDxkc3RyaW5nPiBrZXlzOwotCi1ORE5CT09TVF9SVF9QQVJBTV9JTkxJTkUgcmVnaXN0cnkmIHNfcmVnaXN0cnkoKSAgICB7IHN0YXRpYyByZWdpc3RyeSBpbnN0YW5jZTsgcmV0dXJuIGluc3RhbmNlOyB9Ci1ORE5CT09TVF9SVF9QQVJBTV9JTkxJTkUga2V5cyYgICAgIHNfa2V5cygpICAgICAgICB7IHN0YXRpYyBrZXlzIGluc3RhbmNlOyByZXR1cm4gaW5zdGFuY2U7IH0KLQotTkROQk9PU1RfUlRfUEFSQU1fSU5MSU5FIHZhcmlhYmxlX2RhdGEmCi1uZXdfdmFyX3JlY29yZCggY3N0cmluZyB2YXJfbmFtZSApCi17Ci0gICAgLy8gc2F2ZSB0aGUgbmFtZSBpbiBsaXN0IG9mIGtleXMKLSAgICBzX2tleXMoKS5wdXNoX2JhY2soIGRzdHJpbmcoKSApOwotICAgIGRzdHJpbmcmIGtleSA9IHNfa2V5cygpLmJhY2soKTsKLSAgICBhc3NpZ25fb3AoIGtleSwgdmFyX25hbWUsIDAgKTsKLQotICAgIC8vIGNyZWF0ZSBhbmQgcmV0dXJuIG5ldyByZWNvcmQKLSAgICB2YXJpYWJsZV9kYXRhJiBuZXdfdmFyX2RhdGEgPSBzX3JlZ2lzdHJ5KClba2V5XTsKLSAgICAKLSAgICBuZXdfdmFyX2RhdGEubV92YXJfbmFtZSA9IGtleTsKLSAgICAKLSAgICByZXR1cm4gbmV3X3Zhcl9kYXRhOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi1ORE5CT09TVF9SVF9QQVJBTV9JTkxJTkUgdmFyaWFibGVfZGF0YSoKLWZpbmRfdmFyX3JlY29yZCggY3N0cmluZyB2YXJfbmFtZSApCi17Ci0gICAgcmVnaXN0cnk6Oml0ZXJhdG9yIGl0ID0gc19yZWdpc3RyeSgpLmZpbmQoIHZhcl9uYW1lICk7Ci0KLSAgICByZXR1cm4gaXQgPT0gc19yZWdpc3RyeSgpLmVuZCgpID8gMCA6ICYoaXQtPnNlY29uZCk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpZmRlZiBORE5CT09TVF9NU1ZDIAotI3ByYWdtYSB3YXJuaW5nKHB1c2gpIAotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDk5NikgLy8gZ2V0ZW52Ci0jZW5kaWYKLQotTkROQk9PU1RfUlRfUEFSQU1fSU5MSU5FIGNzdHJpbmcKLXN5c19yZWFkX3ZhciggY3N0cmluZyB2YXJfbmFtZSApCi17Ci0gICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLSAgICByZXR1cm4gTkROQk9PU1RfUlRfUEFSQU1fR0VURU5WKCB2YXJfbmFtZS5iZWdpbigpICk7Ci19Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDIAotI3ByYWdtYSB3YXJuaW5nKHBvcCkgCi0jZW5kaWYKLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLU5ETkJPT1NUX1JUX1BBUkFNX0lOTElORSB2b2lkCi1zeXNfd3JpdGVfdmFyKCBjc3RyaW5nIHZhcl9uYW1lLCBmb3JtYXRfc3RyZWFtJiB2YXJfdmFsdWUgKQotewotICAgIE5ETkJPT1NUX1JUX1BBUkFNX1BVVEVOViggdmFyX25hbWUsIGNzdHJpbmcoIHZhcl92YWx1ZS5zdHIoKSApICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIHJ0X2Vudl9kZXRhaWwKLQotTkROQk9PU1RfUlRfUEFSQU1fSU5MSU5FIHZhcmlhYmxlX2Jhc2UKLXZhciggY3N0cmluZyB2YXJfbmFtZSApCi17Ci0gICAgcnRfZW52X2RldGFpbDo6dmFyaWFibGVfZGF0YSogdmQgPSBydF9lbnZfZGV0YWlsOjpmaW5kX3Zhcl9yZWNvcmQoIHZhcl9uYW1lICk7Ci0KLSAgICBORE5CT09TVF9SVF9QQVJBTV9WQUxJREFURV9MT0dJQyggISF2ZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfUlRfUEFSQU1fTElURVJBTCggIkZpcnN0IGFjY2VzcyB0byB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgIiApIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IHZhcl9uYW1lIDw8IE5ETkJPT1NUX1JUX1BBUkFNX0xJVEVSQUwoICIgc2hvdWxkIGJlIHR5cGVkIiApICk7Ci0KLSAgICByZXR1cm4gdmFyaWFibGVfYmFzZSggKnZkICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIGVudmlyb25tZW50Ci0KLX0gLy8gbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfUlRfRU5WX0VOVklST05NRU5UX0lQUF8wNjI5MDRHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2Vudi9md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvZW52L2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEwNzIxZmMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvZW52L2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTQ2MzMgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGVudmlyb25tZW50IHN1YnN5c3RlbSBmb3J3YXJkIGRlY2xhcmF0aW9ucwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfUlRfRU5WX0ZXRF9IUFBfMDYyNjA0R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1JUX0VOVl9GV0RfSFBQXzA2MjYwNEdFUgotCi0jaWZkZWYgVU5ERVJfQ0UKLSNlcnJvciBXaW5kb3dzIENFIGRvZXMgbm90IHN1cHBvcnQgZW52aXJvbm1lbnQgdmFyaWFibGVzLgotI2VuZGlmCi0KLS8vIEJvb3N0LlJ1bnRpbWUuUGFyYW1ldGVyCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NvbmZpZy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UgewotCi1uYW1lc3BhY2UgZW52aXJvbm1lbnQgewotCi1jbGFzcyB2YXJpYWJsZV9iYXNlOwotdmFyaWFibGVfYmFzZSB2YXIoIGNzdHJpbmcgdmFyX25hbWUgKTsKLQotbmFtZXNwYWNlIHJ0X2Vudl9kZXRhaWwgewotCi1zdHJ1Y3QgdmFyaWFibGVfZGF0YTsKLQotdmFyaWFibGVfZGF0YSYgIG5ld192YXJfcmVjb3JkKCBjc3RyaW5nIHZhcl9uYW1lICk7Ci12YXJpYWJsZV9kYXRhKiAgZmluZF92YXJfcmVjb3JkKCBjc3RyaW5nIHZhcl9uYW1lICk7Ci0KLWNzdHJpbmcgICAgICAgICBzeXNfcmVhZF92YXIoIGNzdHJpbmcgdmFyX25hbWUgKTsKLXZvaWQgICAgICAgICAgICBzeXNfd3JpdGVfdmFyKCBjc3RyaW5nIHZhcl9uYW1lLCBmb3JtYXRfc3RyZWFtJiB2YXJfdmFsdWUgKTsKLQotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgdmFyaWFibGU7Ci0KLX0gLy8gbmFtZXNwYWNlIGVudmlyb25tZW50Ci0KLX0gLy8gbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfUlRfRU5WX0ZXRF9IUFBfMDYyNjA0R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9lbnYvbW9kaWZpZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvZW52L21vZGlmaWVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGNmY2ZmMy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9lbnYvbW9kaWZpZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZQotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNDkzMTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGRlZmluZXMgdmFyaWFibGUgbW9kaWZpZXJzCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9SVF9FTlZfTU9ESUZJRVJfSFBQXzA2MjYwNEdFUgotI2RlZmluZSBORE5CT09TVF9SVF9FTlZfTU9ESUZJRVJfSFBQXzA2MjYwNEdFUgotCi0vLyBCb29zdC5SdW50aW1lLlBhcmFtZXRlcgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jb25maWcuaHBwPgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9uYW1lZF9wYXJhbXMuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFIHsKLQotbmFtZXNwYWNlIGVudmlyb25tZW50IHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgZW52aXJvbm1lbnQgdmFyaWFibGUgbW9kaWZpZXJzICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1uYW1lc3BhY2UgewotCi1uZnA6OnR5cGVkX2tleXdvcmQ8Y3N0cmluZyxzdHJ1Y3QgZ2xvYmFsX2lkX3Q+ICAgZ2xvYmFsX2lkOwotbmZwOjprZXl3b3JkPHN0cnVjdCBkZWZhdWx0X3ZhbHVlX3Q+ICAgICAgICAgICAgIGRlZmF1bHRfdmFsdWU7Ci1uZnA6OmtleXdvcmQ8c3RydWN0IGludGVycHJldGVyX3Q+ICAgICAgICAgICAgICAgaW50ZXJwcmV0ZXI7Ci0KLX0gLy8gbG9jYWwgbmFtZXNwYWNlCi19IC8vIG5hbWVzcGFjZSBlbnZpcm9ubWVudAotCi19IC8vIG5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1JUX0VOVl9NT0RJRklFUl9IUFBfMDYyNjA0R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9lbnYvdmFyaWFibGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvZW52L3ZhcmlhYmxlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDg2YmIyMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9lbnYvdmFyaWFibGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjIzICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA4MTkxMyAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogZGVmaW5lcyBtb2RlbCBvZiBwcm9ncmFtIGVudmlyb25tZW50IHZhcmlhYmxlCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9SVF9FTlZfVkFSSUFCTEVfSFBQXzA2MjYwNEdFUgotI2RlZmluZSBORE5CT09TVF9SVF9FTlZfVkFSSUFCTEVfSFBQXzA2MjYwNEdFUgotCi0jaWZkZWYgVU5ERVJfQ0UKLSNlcnJvciBXaW5kb3dzIENFIGRvZXMgbm90IHN1cHBvcnQgZW52aXJvbm1lbnQgdmFyaWFibGVzLgotI2VuZGlmCi0KLS8vIEJvb3N0LlJ1bnRpbWUuUGFyYW1ldGVyCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2Z3ZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL3BhcmFtZXRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2FyZ3VtZW50LmhwcD4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9lbnYvZndkLmhwcD4KLQotLy8gQm9vc3QKLSNpbmNsdWRlIDxuZG5ib29zdC9vcHRpb25hbC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UgewotCi1uYW1lc3BhY2UgZW52aXJvbm1lbnQgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICBydW50aW1lOjplbnZpcm9ubWVudDo6dmFyaWFibGVfZGF0YSAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLW5hbWVzcGFjZSBydF9lbnZfZGV0YWlsIHsKLQotc3RydWN0IHZhcmlhYmxlX2RhdGEgOiBwdWJsaWMgcnVudGltZTo6cGFyYW1ldGVyIHsKLSAgICBjc3RyaW5nICAgICAgICAgbV92YXJfbmFtZTsKLSAgICBkc3RyaW5nICAgICAgICAgbV9nbG9iYWxfaWQ7Ci0gICAgYXJndW1lbnRfcHRyICAgIG1fdmFsdWU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBydF9lbnZfZGV0YWlsCi0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgcnVudGltZTo6ZW52aXJvbm1lbnQ6OnZhcmlhYmxlX2Jhc2UgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotY2xhc3MgdmFyaWFibGVfYmFzZSB7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgICAgdmFyaWFibGVfYmFzZSggcnRfZW52X2RldGFpbDo6dmFyaWFibGVfZGF0YSYgZGF0YSApIDogbV9kYXRhKCAmZGF0YSApIHt9Ci0KLSAgICAvLyBhcmd1bWVudHMgYWNjZXNzCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBUIGNvbnN0JiAgICB2YWx1ZSgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gYXJnX3ZhbHVlPFQ+KCAqbV9kYXRhLT5tX3ZhbHVlICk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICB2b2lkICAgICAgICB2YWx1ZSggbmRuYm9vc3Q6Om9wdGlvbmFsPFQ+JiByZXMgKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYoIGhhc192YWx1ZSgpICkKLSAgICAgICAgICAgIHJlcyA9IGFyZ192YWx1ZTxUPiggKm1fZGF0YS0+bV92YWx1ZSApOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXMucmVzZXQoKTsKLSAgICB9Ci0KLSAgICBib29sICAgICAgICBoYXNfdmFsdWUoKSBjb25zdCAgIHsgcmV0dXJuIG1fZGF0YS0+bV92YWx1ZSE9MDsgfQotICAgIGNzdHJpbmcgICAgIG5hbWUoKSBjb25zdCAgICAgICAgeyByZXR1cm4gbV9kYXRhLT5tX3Zhcl9uYW1lOyB9Ci0KLXByb3RlY3RlZDoKLSAgICAvLyBEYXRhIG1lbWJlcnMKLSAgICBydF9lbnZfZGV0YWlsOjp2YXJpYWJsZV9kYXRhKiAgbV9kYXRhOwotfSA7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgcnVudGltZTo6ZW52aXJvbm1lbnQ6OnZhcmlhYmxlICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCA9IGNzdHJpbmc+Ci1jbGFzcyB2YXJpYWJsZSA6IHB1YmxpYyB2YXJpYWJsZV9iYXNlIHsKLXB1YmxpYzoKLSAgICAvLyBDb25zdHJ1Y3RvcnMKLSAgICBleHBsaWNpdCAgICB2YXJpYWJsZSggY3N0cmluZyB2YXJfbmFtZSApOwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgTW9kaWZpZXJzPgotICAgIGV4cGxpY2l0ICAgIHZhcmlhYmxlKCBjc3RyaW5nIHZhcl9uYW1lLCBNb2RpZmllcnMgY29uc3QmIG0gKTsKLQotICAgIGV4cGxpY2l0ICAgIHZhcmlhYmxlKCBydF9lbnZfZGV0YWlsOjp2YXJpYWJsZV9kYXRhJiBkYXRhICkgCi0gICAgOiB2YXJpYWJsZV9iYXNlKCBkYXRhICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7fQotCi0gICAgLy8gb3RoZXIgdmFyaWFibGUgYXNzaWdubWVudAotICAgIHZvaWQgICAgICAgIG9wZXJhdG9yPSggdmFyaWFibGUgY29uc3QmIHYgKSAgICAgICAgICAgICAgeyBtX2RhdGEgPSB2Lm1fZGF0YTsgfQotCi0gICAgLy8gYWNjZXNzIG1ldGhvZHMKLSAgICBUIGNvbnN0JiAgICB2YWx1ZSgpIGNvbnN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgcmV0dXJuIHZhcmlhYmxlX2Jhc2U6OnZhbHVlPFQ+KCk7IH0KLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19NV0VSS1NfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4MzIwNikpIHx8IFwKLSAgICBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4MDU5MykpCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICB2b2lkICAgICAgICB2YWx1ZSggbmRuYm9vc3Q6Om9wdGlvbmFsPFQ+JiByZXMgKSBjb25zdCAgICAgIHsgdmFyaWFibGVfYmFzZTo6dmFsdWUoIHJlcyApOyB9Ci0jZWxzZQotICAgIHVzaW5nICAgICAgIHZhcmlhYmxlX2Jhc2U6OnZhbHVlOwotI2VuZGlmCi0KLSAgICAvLyBWYWx1ZSBhc3NpZ25tZW50Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVj4KLSAgICB2b2lkICAgICAgICBvcGVyYXRvcj0oIFYgY29uc3QmIHYgKQotICAgIHsKLSAgICAgICAgaWYoICFoYXNfdmFsdWUoKSApCi0gICAgICAgICAgICBtX2RhdGEtPm1fdmFsdWUucmVzZXQoIG5ldyB0eXBlZF9hcmd1bWVudDxUPiggKm1fZGF0YSApICk7Ci0KLSAgICAgICAgYXJnX3ZhbHVlPFQ+KCAqbV9kYXRhLT5tX3ZhbHVlICkgPSB2OwotCi0gICAgICAgIHJ0X2Vudl9kZXRhaWw6OnN5c193cml0ZV92YXIoIG1fZGF0YS0+bV92YXJfbmFtZSwgZm9ybWF0X3N0cmVhbSgpLnJlZigpIDw8IHZhbHVlKCkgKTsKLSAgICB9Ci19OyAvLyBjbGFzcyB2YXJpYWJsZQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVCwgdHlwZW5hbWUgVHIsdHlwZW5hbWUgVD4KLWlubGluZSBzdGQ6OmJhc2ljX29zdHJlYW08Q2hhclQsVHI+Jgotb3BlcmF0b3I8PCggc3RkOjpiYXNpY19vc3RyZWFtPENoYXJULFRyPiYgb3MsIHZhcmlhYmxlPFQ+IGNvbnN0JiB2ICkKLXsKLSAgICBvcyA8PCB2Lm5hbWUoKSA8PCAnPSc7Ci0KLSAgICBpZiggdi5oYXNfdmFsdWUoKSApCi0gICAgICAgIG9zIDw8IHYudmFsdWUoKTsKLQotICAgIHJldHVybiBvczsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVj4KLWlubGluZSBib29sCi1vcGVyYXRvcj09KCB2YXJpYWJsZTxUPiBldiwgViBjb25zdCYgdiApCi17Ci0gICAgcmV0dXJuIGV2Lmhhc192YWx1ZSgpICYmIGV2LnZhbHVlKCkgPT0gdjsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVj4KLWlubGluZSBib29sCi1vcGVyYXRvcj09KCBWIGNvbnN0JiB2LCB2YXJpYWJsZTxUPiBldiApCi17Ci0gICAgcmV0dXJuIGV2Lmhhc192YWx1ZSgpICYmIGV2LnZhbHVlKCkgPT0gdjsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVj4KLWlubGluZSBib29sCi1vcGVyYXRvciE9KCB2YXJpYWJsZTxUPiBldiwgViBjb25zdCYgdiApCi17Ci0gICAgcmV0dXJuICFldi5oYXNfdmFsdWUoKSB8fCBldi52YWx1ZSgpICE9IHY7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFY+Ci1pbmxpbmUgYm9vbAotb3BlcmF0b3IhPSggViBjb25zdCYgdiwgdmFyaWFibGU8VD4gZXYgKQotewotICAgIHJldHVybiAhZXYuaGFzX3ZhbHVlKCkgfHwgZXYudmFsdWUoKSAhPSB2OwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSBlbnZpcm9ubWVudAotCi19IC8vIG5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyBJbXBsZW1lbnRhdGlvbgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2Vudi9lbnZpcm9ubWVudC5ocHA+Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgcnVudGltZTo6ZW52aXJvbm1lbnQ6OnZhcmlhYmxlICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRSB7Ci0KLW5hbWVzcGFjZSBlbnZpcm9ubWVudCB7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci12YXJpYWJsZTxUPjo6dmFyaWFibGUoIGNzdHJpbmcgdmFyX25hbWUgKQotOiB2YXJpYWJsZV9iYXNlKCBlbnZpcm9ubWVudDo6dmFyPFQ+KCB2YXJfbmFtZSApICkKLXt9Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci10ZW1wbGF0ZTx0eXBlbmFtZSBNb2RpZmllcnM+Ci12YXJpYWJsZTxUPjo6dmFyaWFibGUoIGNzdHJpbmcgdmFyX25hbWUsIE1vZGlmaWVycyBjb25zdCYgbSApCi06IHZhcmlhYmxlX2Jhc2UoIGVudmlyb25tZW50Ojp2YXI8VD4oIHZhcl9uYW1lLCBtICkgKQote30KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotfSAvLyBuYW1lc3BhY2UgZW52aXJvbm1lbnQKLQotfSAvLyBuYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9SVF9FTlZfVkFSSUFCTEVfSFBQXzA2MjYwNEdFUgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNhZmZiNTUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvZndkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEdlbm5hZGl5IFJvemVudGFsIDIwMDUtMjAwOC4KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90ZXN0IGZvciB0aGUgbGlicmFyeSBob21lIHBhZ2UuCi0vLwotLy8gIEZpbGUgICAgICAgIDogJFJDU2ZpbGUkCi0vLwotLy8gIFZlcnNpb24gICAgIDogJFJldmlzaW9uOiA0OTMxMiAkCi0vLwotLy8gIERlc2NyaXB0aW9uIDogZ2xvYmFsIGZyYW1ld29yayBsZXZlbCBmb3J3YXJkIGRlY2xhcmF0aW9uCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9SVF9GV0RfSFBQXzA2MjYwNEdFUgotI2RlZmluZSBORE5CT09TVF9SVF9GV0RfSFBQXzA2MjYwNEdFUgotCi0vLyBCb29zdC5SdW50aW1lLlBhcmFtZXRlcgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jb25maWcuaHBwPgotCi0vLyBCb29zdAotI2luY2x1ZGUgPG5kbmJvb3N0L3NoYXJlZF9wdHIuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFIHsKLQotY2xhc3MgcGFyYW1ldGVyOwotCi1jbGFzcyBhcmd1bWVudDsKLXR5cGVkZWYgc2hhcmVkX3B0cjxhcmd1bWVudD4gYXJndW1lbnRfcHRyOwotdHlwZWRlZiBzaGFyZWRfcHRyPGFyZ3VtZW50IGNvbnN0PiBjb25zdF9hcmd1bWVudF9wdHI7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIHZhbHVlX2ludGVycHJldGVyOwotdGVtcGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgdHlwZWRfYXJndW1lbnQ7Ci0KLX0gLy8gbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfUlRfRldEX0hQUF8wNjI2MDRHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2ludGVycHJldF9hcmd1bWVudF92YWx1ZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9pbnRlcnByZXRfYXJndW1lbnRfdmFsdWUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZGVjNzYxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2ludGVycHJldF9hcmd1bWVudF92YWx1ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNjMgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDQ5MzEyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBkZWZhdWx0IGFsZ29yaXRobXMgZm9yIHN0cmluZyB0byBzcGVjaWZpYyB0eXBlIGNvbnZlcnRpb25zCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotI2lmbmRlZiBORE5CT09TVF9SVF9JTlRFUlBSRVRfQVJHVU1FTlRfVkFMVUVfSFBQXzA2MjYwNEdFUgotI2RlZmluZSBORE5CT09TVF9SVF9JTlRFUlBSRVRfQVJHVU1FTlRfVkFMVUVfSFBQXzA2MjYwNEdFUgotCi0vLyBCb29zdC5SdW50aW1lLlBhcmFtZXRlcgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS90cmFjZS5ocHA+Ci0KLS8vIEJvb3N0LlRlc3QKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2Jhc2ljX2NzdHJpbmcvaW8uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvYmFzaWNfY3N0cmluZy9jb21wYXJlLmhwcD4KLQotLy8gQm9vc3QKLSNpbmNsdWRlIDxuZG5ib29zdC9vcHRpb25hbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbGV4aWNhbF9jYXN0LmhwcD4KLQotLy8gU1RMCi0vLyAhISBjb3VsZCB3ZSBlbGltaW5hdGUgdGhlc2UgaW5jbHVkZXM/Ci0jaW5jbHVkZSA8bGlzdD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRSB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICBydW50aW1lOjppbnRlcnByZXRfYXJndW1lbnRfdmFsdWUgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vIHJldHVybnMgdHJ1ZSBpZiBzb3VyY2UgaXMgdXNlZCBmYWxzZSBvdGhlcndpc2UKLQotLy8gZ2VuZXJpYyBjYXNlCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotc3RydWN0IGludGVycHJldF9hcmd1bWVudF92YWx1ZV9pbXBsIHsKLSAgICBzdGF0aWMgYm9vbCBfKCBjc3RyaW5nIHNvdXJjZSwgbmRuYm9vc3Q6Om9wdGlvbmFsPFQ+JiByZXMgKQotICAgIHsKLSAgICAgICAgTkROQk9PU1RfUlRfUEFSQU1fVFJBQ0UoICJJbiBpbnRlcnByZXRfYXJndW1lbnRfdmFsdWVfaW1wbDwiIDw8IHR5cGVpZChUKS5uYW1lKCkgPDwgIj4iICk7Ci0KLSAgICAgICAgcmVzID0gbGV4aWNhbF9jYXN0PFQ+KCBzb3VyY2UgKTsKLQotICAgICAgICBORE5CT09TVF9SVF9QQVJBTV9UUkFDRSggIlN0cmluZyAiIDw8IHNvdXJjZSA8PCAiIGlzIGludGVycHJldGVkIGFzICIgPDwgKnJlcyApOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci19OwotCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vIGRzdHJpbmcgY2FzZQotdGVtcGxhdGU8Pgotc3RydWN0IGludGVycHJldF9hcmd1bWVudF92YWx1ZV9pbXBsPGRzdHJpbmc+IHsKLSAgICBzdGF0aWMgYm9vbCBfKCBjc3RyaW5nIHNvdXJjZSwgbmRuYm9vc3Q6Om9wdGlvbmFsPGRzdHJpbmc+JiByZXMgKQotICAgIHsKLSAgICAgICAgTkROQk9PU1RfUlRfUEFSQU1fVFJBQ0UoICJJbiBpbnRlcnByZXRfYXJndW1lbnRfdmFsdWVfaW1wbDxkc3RyaW5nPiIgKTsKLQotICAgICAgICByZXMgPSBkc3RyaW5nKCk7Ci0gICAgICAgIGFzc2lnbl9vcCggKnJlcywgc291cmNlLCAwICk7Ci0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotfTsKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotLy8gY3N0cmluZyBjYXNlCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaW50ZXJwcmV0X2FyZ3VtZW50X3ZhbHVlX2ltcGw8Y3N0cmluZz4gewotICAgIHN0YXRpYyBib29sIF8oIGNzdHJpbmcgc291cmNlLCBuZG5ib29zdDo6b3B0aW9uYWw8Y3N0cmluZz4mIHJlcyApCi0gICAgewotICAgICAgICBORE5CT09TVF9SVF9QQVJBTV9UUkFDRSggIkluIGludGVycHJldF9hcmd1bWVudF92YWx1ZV9pbXBsPGNzdHJpbmc+IiApOwotCi0gICAgICAgIHJlcyA9IHNvdXJjZTsKLQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi0vLyBzcGVjaWFsaXphdGlvbiBmb3IgdHlwZSBib29sCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgaW50ZXJwcmV0X2FyZ3VtZW50X3ZhbHVlX2ltcGw8Ym9vbD4gewotICAgIHN0YXRpYyBib29sIF8oIGNzdHJpbmcgc291cmNlLCBuZG5ib29zdDo6b3B0aW9uYWw8Ym9vbD4mIHJlcyApCi0gICAgewotICAgICAgICBORE5CT09TVF9SVF9QQVJBTV9UUkFDRSggIkluIGludGVycHJldF9hcmd1bWVudF92YWx1ZV9pbXBsPGJvb2w+IiApOwotCi0gICAgICAgIHN0YXRpYyBsaXRlcmFsX2NzdHJpbmcgWUVTKCBORE5CT09TVF9SVF9QQVJBTV9DU1RSSU5HX0xJVEVSQUwoICJZRVMiICkgKTsKLSAgICAgICAgc3RhdGljIGxpdGVyYWxfY3N0cmluZyBZKCBORE5CT09TVF9SVF9QQVJBTV9DU1RSSU5HX0xJVEVSQUwoICJZIiApICk7Ci0gICAgICAgIHN0YXRpYyBsaXRlcmFsX2NzdHJpbmcgTk8oIE5ETkJPT1NUX1JUX1BBUkFNX0NTVFJJTkdfTElURVJBTCggIk5PIiApICk7Ci0gICAgICAgIHN0YXRpYyBsaXRlcmFsX2NzdHJpbmcgTiggTkROQk9PU1RfUlRfUEFSQU1fQ1NUUklOR19MSVRFUkFMKCAiTiIgKSApOwotICAgICAgICBzdGF0aWMgbGl0ZXJhbF9jc3RyaW5nIG9uZSggTkROQk9PU1RfUlRfUEFSQU1fQ1NUUklOR19MSVRFUkFMKCAiMSIgKSApOwotICAgICAgICBzdGF0aWMgbGl0ZXJhbF9jc3RyaW5nIHplcm8oIE5ETkJPT1NUX1JUX1BBUkFNX0NTVFJJTkdfTElURVJBTCggIjAiICkgKTsKLQotICAgICAgICBzb3VyY2UudHJpbSgpOwotCi0gICAgICAgIGlmKCBjYXNlX2luc19lcSggc291cmNlLCBZRVMgKSB8fCBjYXNlX2luc19lcSggc291cmNlLCBZICkgfHwgY2FzZV9pbnNfZXEoIHNvdXJjZSwgb25lICkgKSB7Ci0gICAgICAgICAgICByZXMgPSB0cnVlOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiggY2FzZV9pbnNfZXEoIHNvdXJjZSwgTk8gKSB8fCBjYXNlX2luc19lcSggc291cmNlLCBOICkgfHwgY2FzZV9pbnNfZXEoIHNvdXJjZSwgemVybyApICkgewotICAgICAgICAgICAgcmVzID0gZmFsc2U7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHJlcyA9IHRydWU7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci19OwotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotaW5saW5lIGJvb2wKLWludGVycHJldF9hcmd1bWVudF92YWx1ZSggY3N0cmluZyBzb3VyY2UsIG5kbmJvb3N0OjpvcHRpb25hbDxUPiYgcmVzLCBsb25nICkKLXsKLSAgICByZXR1cm4gaW50ZXJwcmV0X2FyZ3VtZW50X3ZhbHVlX2ltcGw8VD46Ol8oIHNvdXJjZSwgcmVzICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLS8vIHNwZWNpYWxpemF0aW9uIGZvciBsaXN0IG9mIHZhbHVlcwotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWlubGluZSBib29sCi1pbnRlcnByZXRfYXJndW1lbnRfdmFsdWUoIGNzdHJpbmcgc291cmNlLCBuZG5ib29zdDo6b3B0aW9uYWw8c3RkOjpsaXN0PFQ+ID4mIHJlcywgaW50ICkKLXsKLSAgICBORE5CT09TVF9SVF9QQVJBTV9UUkFDRSggIkluIGludGVycHJldF9hcmd1bWVudF92YWx1ZTxzdGQ6Omxpc3Q8VD4+IiApOwotCi0gICAgcmVzID0gc3RkOjpsaXN0PFQ+KCk7Ci0KLSAgICB3aGlsZSggIXNvdXJjZS5pc19lbXB0eSgpICkgewotICAgICAgICAvLyAhISBzaG91bGQgd2UgdXNlIHRva2VuX2l0ZXJhdG9yCi0gICAgICAgIGNzdHJpbmc6Oml0ZXJhdG9yIHNpbmdsZV92YWx1ZV9lbmQgPSBzdGQ6OmZpbmQoIHNvdXJjZS5iZWdpbigpLCBzb3VyY2UuZW5kKCksIE5ETkJPT1NUX1JUX1BBUkFNX0xJVEVSQUwoICcsJyApICk7Ci0KLSAgICAgICAgbmRuYm9vc3Q6Om9wdGlvbmFsPFQ+IHZhbHVlOwotICAgICAgICBpbnRlcnByZXRfYXJndW1lbnRfdmFsdWUoIGNzdHJpbmcoIHNvdXJjZS5iZWdpbigpLCBzaW5nbGVfdmFsdWVfZW5kICksIHZhbHVlLCAwICk7Ci0KLSAgICAgICAgcmVzLT5wdXNoX2JhY2soICp2YWx1ZSApOwotCi0gICAgICAgIHNvdXJjZS50cmltX2xlZnQoIHNpbmdsZV92YWx1ZV9lbmQgKyAxICk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfUlRfSU5URVJQUkVUX0FSR1VNRU5UX1ZBTFVFX0hQUF8wNjI2MDRHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL3BhcmFtZXRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9wYXJhbWV0ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3M2ZiODFjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL3BhcmFtZXRlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNDkzMTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGFic3RyYWN0IGludGVyZmFjZSBmb3IgdGhlIGZvcm1hbCBwYXJhbWV0ZXIKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1JUX1BBUkFNRVRFUl9IUFBfMDYyNjA0R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1JUX1BBUkFNRVRFUl9IUFBfMDYyNjA0R0VSCi0KLS8vIEJvb3N0LlJ1bnRpbWUuUGFyYW1ldGVyCi0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL2NvbmZpZy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBORE5CT09TVF9SVF9QQVJBTV9OQU1FU1BBQ0UgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgIHJ1bnRpbWU6OnBhcmFtZXRlciAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWNsYXNzIHBhcmFtZXRlciB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+cGFyYW1ldGVyKCkge30KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfUlRfUEFSQU1FVEVSX0hQUF8wNjI2MDRHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL3RyYWNlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL3RyYWNlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmQ0NzQyOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS90cmFjZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBHZW5uYWRpeSBSb3plbnRhbCAyMDA1LTIwMDguCi0vLyAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgotLy8gIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNDkzMTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IG9wdGlvbmFsIGludGVybmFsIHRyYWNpbmcKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1JUX1RSQUNFX0hQUF8wNjI2MDRHRVIKLSNkZWZpbmUgTkROQk9PU1RfUlRfVFJBQ0VfSFBQXzA2MjYwNEdFUgotCi0vLyBCb29zdC5SdW50aW1lLlBhcmFtZXRlcgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS9jb25maWcuaHBwPgotCi0jaWZkZWYgTkROQk9PU1RfUlRfUEFSQU1fREVCVUcKLQotI2luY2x1ZGUgPGlvc3RyZWFtPgotCi0jICBkZWZpbmUgTkROQk9PU1RfUlRfUEFSQU1fVFJBQ0UoIHN0ciApIHN0ZDo6Y2VyciA8PCBzdHIgPDwgc3RkOjplbmRsCi0jZWxzZQotIyAgZGVmaW5lIE5ETkJPT1NUX1JUX1BBUkFNX1RSQUNFKCBzdHIgKQotI2VuZGlmCi0KLSNlbmRpZiAvLyBORE5CT09TVF9SVF9UUkFDRV9IUFBfMDYyNjA0R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvcnVudGltZS92YWxpZGF0aW9uLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL3ZhbGlkYXRpb24uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YzhjZTc5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy9ydW50aW1lL3ZhbGlkYXRpb24uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODIgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDQ5MzEyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBkZWZpbmVzIGV4Y2VwdGlvbnMgYW5kIHZhbGlkYXRpb24gdG9vbHMKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1JUX1ZBTElEQVRJT05fSFBQXzA2MjYwNEdFUgotI2RlZmluZSBORE5CT09TVF9SVF9WQUxJREFUSU9OX0hQUF8wNjI2MDRHRVIKLQotLy8gQm9vc3QuUnVudGltZS5QYXJhbWV0ZXIKLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL3J1bnRpbWUvY29uZmlnLmhwcD4KLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvY2xhc3NfcHJvcGVydGllcy5ocHA+Ci0KLS8vIEJvb3N0Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc2hhcmVkX3B0ci5ocHA+Ci0KLS8vIFNUTAotI2lmZGVmIE5ETkJPT1NUX1JUX1BBUkFNX0VYQ0VQVElPTl9JTkhFUklUX1NURAotI2luY2x1ZGUgPHN0ZGV4Y2VwdD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFIHsKLQotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqICAgICAgICAgICAgIHJ1bnRpbWU6OmxvZ2ljX2Vycm9yICAgICAgICAgICAgICoqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotCi1jbGFzcyBsb2dpY19lcnJvciAKLSNpZmRlZiBORE5CT09TVF9SVF9QQVJBTV9FWENFUFRJT05fSU5IRVJJVF9TVEQKLTogcHVibGljIHN0ZDo6ZXhjZXB0aW9uCi0jZW5kaWYKLXsKLSAgICB0eXBlZGVmIHNoYXJlZF9wdHI8ZHN0cmluZz4gZHN0cmluZ19wdHI7Ci1wdWJsaWM6Ci0gICAgLy8gQ29uc3RydWN0b3IgLy8gISEgY291bGQgd2UgZWxpbWluYXRlIHNoYXJlZF9wdHIKLSAgICBleHBsaWNpdCAgICBsb2dpY19lcnJvciggY3N0cmluZyBtc2cgKSA6IG1fbXNnKCBuZXcgZHN0cmluZyggbXNnLmJlZ2luKCksIG1zZy5zaXplKCkgKSApIHt9Ci0gICAgfmxvZ2ljX2Vycm9yKCkgdGhyb3coKSAgICAgICAgICAgICAgICAgICAgICAgICAge30KLQotICAgIGRzdHJpbmcgY29uc3QmICAgbXNnKCkgY29uc3QgICAgICAgICAgICAgICAgICAgIHsgcmV0dXJuICptX21zZzsgfQotICAgIHZpcnR1YWwgY2hhcl90eXBlIGNvbnN0KiB3aGF0KCkgY29uc3QgdGhyb3coKSAgIHsgcmV0dXJuIG1fbXNnLT5jX3N0cigpOyB9Ci0KLXByaXZhdGU6Ci0gICAgZHN0cmluZ19wdHIgbV9tc2c7Ci19OwotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgcnVudGltZTo6cmVwb3J0X2xvZ2ljX2Vycm9yICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWlubGluZSB2b2lkCi1yZXBvcnRfbG9naWNfZXJyb3IoIGZvcm1hdF9zdHJlYW0mIG1zZyApCi17Ci0gICAgdGhyb3cgTkROQk9PU1RfUlRfUEFSQU1fTkFNRVNQQUNFOjpsb2dpY19lcnJvciggbXNnLnN0cigpICk7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNkZWZpbmUgTkROQk9PU1RfUlRfUEFSQU1fUkVQT1JUX0xPR0lDX0VSUk9SKCBtc2cgKSBcCi0gICAgbmRuYm9vc3Q6Ok5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRTo6cmVwb3J0X2xvZ2ljX2Vycm9yKCBmb3JtYXRfc3RyZWFtKCkucmVmKCkgPDwgbXNnICkKLQotI2RlZmluZSBORE5CT09TVF9SVF9QQVJBTV9WQUxJREFURV9MT0dJQyggYiwgbXNnICkgXAotICAgIGlmKCBiICkge30gZWxzZSBORE5CT09TVF9SVF9QQVJBTV9SRVBPUlRfTE9HSUNfRVJST1IoIG1zZyApCi0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLX0gLy8gbmFtZXNwYWNlIE5ETkJPT1NUX1JUX1BBUkFNX05BTUVTUEFDRQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfUlRfVkFMSURBVElPTl9IUFBfMDYyNjA0R0VSCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvdHJpdmlhbF9zaW5nbGV0b24uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90ZXN0L3V0aWxzL3RyaXZpYWxfc2luZ2xldG9uLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWZjZmYwYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvdHJpdmlhbF9zaW5nbGV0b24uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzQgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNS0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDQ5MzEyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiBzaW1wbGUgaGVscGVycyBmb3IgY3JlYXRpbmcgY3Vzb20gb3V0cHV0IG1hbmlwdWxhdG9ycwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSNpZm5kZWYgTkROQk9PU1RfVEVTVF9UUklWSUFMX1NJR05MRVRPTl9IUFBfMDIwNTA1R0VSCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfVFJJVklBTF9TSUdOTEVUT05fSFBQXzAyMDUwNUdFUgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9ub25jb3B5YWJsZS5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSB1bml0X3Rlc3QgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICAgICAgc2luZ2xldG9uICAgICAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIERlcml2ZWQ+Ci1jbGFzcyBzaW5nbGV0b24gOiBwcml2YXRlIG5kbmJvb3N0Ojpub25jb3B5YWJsZSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIERlcml2ZWQmIGluc3RhbmNlKCkgeyBzdGF0aWMgRGVyaXZlZCB0aGVfaW5zdDsgcmV0dXJuIHRoZV9pbnN0OyB9ICAgIAotcHJvdGVjdGVkOgotICAgIHNpbmdsZXRvbigpICB7fQotICAgIH5zaW5nbGV0b24oKSB7fQotfTsKLQotfSAvLyBuYW1lc3BhY2UgdW5pdF90ZXN0Ci0KLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9TSU5HTEVUT05fQ09OUyggdHlwZSApICAgICAgIFwKLWZyaWVuZCBjbGFzcyBuZG5ib29zdDo6dW5pdF90ZXN0OjpzaW5nbGV0b248dHlwZT47IFwKLXR5cGUoKSB7fSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLS8qKi8KLQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19ERUNDWFhfVkVSLCBORE5CT09TVF9URVNURURfQVQoNjA1OTAwNDIpKQotCi0jZGVmaW5lIE5ETkJPT1NUX1RFU1RfU0lOR0xFVE9OX0lOU1QoIGluc3QgKSBcCi10ZW1wbGF0ZSBjbGFzcyB1bml0X3Rlc3Q6OnNpbmdsZXRvbjwgTkROQk9PU1RfSk9JTiggaW5zdCwgX3QgKSA+IDsgXAotbmFtZXNwYWNlIHsgTkROQk9PU1RfSk9JTiggaW5zdCwgX3QpJiBpbnN0ID0gTkROQk9PU1RfSk9JTiggaW5zdCwgX3QpOjppbnN0YW5jZSgpOyB9Ci0KLSNlbGlmIGRlZmluZWQoX19BUFBMRV9DQ19fKSAmJiBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA8IDQKLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9TSU5HTEVUT05fSU5TVCggaW5zdCApIFwKLXN0YXRpYyBORE5CT09TVF9KT0lOKCBpbnN0LCBfdCkmIGluc3QgPSBORE5CT09TVF9KT0lOIChpbnN0LCBfdCk6Omluc3RhbmNlKCk7Ci0KLSNlbHNlCi0KLSNkZWZpbmUgTkROQk9PU1RfVEVTVF9TSU5HTEVUT05fSU5TVCggaW5zdCApIFwKLW5hbWVzcGFjZSB7IE5ETkJPT1NUX0pPSU4oIGluc3QsIF90KSYgaW5zdCA9IE5ETkJPT1NUX0pPSU4oIGluc3QsIF90KTo6aW5zdGFuY2UoKTsgfQotCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX1RSSVZJQUxfU0lHTkxFVE9OX0hQUF8wMjA1MDVHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy93cmFwX3N0cmluZ3N0cmVhbS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMvd3JhcF9zdHJpbmdzdHJlYW0uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZmUxMTExLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy93cmFwX3N0cmluZ3N0cmVhbS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNjQgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwMi0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Rlc3QgZm9yIHRoZSBsaWJyYXJ5IGhvbWUgcGFnZS4KLS8vCi0vLyAgRmlsZSAgICAgICAgOiAkUkNTZmlsZSQKLS8vCi0vLyAgVmVyc2lvbiAgICAgOiAkUmV2aXNpb246IDQ5MzEyICQKLS8vCi0vLyAgRGVzY3JpcHRpb24gOiB3cmFwcyBzdHJzdHJlYW0gYW5kIHN0cmluZ3N0cmVhbSAoZGVwZW5kcyB3aXRoIG9uZSBpcyBwcmVzZW50KQotLy8gICAgICAgICAgICAgICAgdG8gcHJvdmlkZSB0aGUgdW5pZmllZCBpbnRlcmZhY2UKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1dSQVBfU1RSSU5HU1RSRUFNX0hQUF8wNzE4OTRHRVIKLSNkZWZpbmUgTkROQk9PU1RfV1JBUF9TVFJJTkdTVFJFQU1fSFBQXzA3MTg5NEdFUgotCi0vLyBCb29zdC5UZXN0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdGVzdC9kZXRhaWwvY29uZmlnLmhwcD4KLQotLy8gU1RMCi0jaWZkZWYgTkROQk9PU1RfTk9fU1RSSU5HU1RSRUFNCi0jaW5jbHVkZSA8c3Ryc3RyZWFtPiAgICAgICAgLy8gZm9yIHN0ZDo6b3N0cnN0cmVhbQotI2Vsc2UKLSNpbmNsdWRlIDxzc3RyZWFtPiAgICAgICAgICAvLyBmb3Igc3RkOjpvc3RyaW5nc3RyZWFtCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fU1RSSU5HU1RSRUFNCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0vLyAqKioqKioqKioqKioqKiAgICAgICAgICAgIGJhc2ljX3dyYXBfc3RyaW5nc3RyZWFtICAgICAgICAgICAqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQ+Ci1jbGFzcyBiYXNpY193cmFwX3N0cmluZ3N0cmVhbSB7Ci1wdWJsaWM6Ci0jaWYgZGVmaW5lZChORE5CT09TVF9DTEFTU0lDX0lPU1RSRUFNUykKLSAgICB0eXBlZGVmIHN0ZDo6b3N0cmluZ3N0cmVhbSAgICAgICAgICAgICAgIHdyYXBwZWRfc3RyZWFtOwotI2VsaWYgZGVmaW5lZChORE5CT09TVF9OT19TVFJJTkdTVFJFQU0pCi0gICAgdHlwZWRlZiBzdGQ6OmJhc2ljX29zdHJzdHJlYW08Q2hhclQ+ICAgICB3cmFwcGVkX3N0cmVhbTsKLSNlbHNlCi0gICAgdHlwZWRlZiBzdGQ6OmJhc2ljX29zdHJpbmdzdHJlYW08Q2hhclQ+ICB3cmFwcGVkX3N0cmVhbTsKLSNlbmRpZiAvLyBORE5CT09TVF9OT19TVFJJTkdTVFJFQU0KLSAgICAvLyBBY2Nlc3MgbWV0aG9kcwotICAgIGJhc2ljX3dyYXBfc3RyaW5nc3RyZWFtJiAgICAgICAgcmVmKCk7Ci0gICAgd3JhcHBlZF9zdHJlYW0mICAgICAgICAgICAgICAgICBzdHJlYW0oKTsKLSAgICBzdGQ6OmJhc2ljX3N0cmluZzxDaGFyVD4gY29uc3QmIHN0cigpOwotCi1wcml2YXRlOgotICAgIC8vIERhdGEgbWVtYmVycwotICAgIHdyYXBwZWRfc3RyZWFtICAgICAgICAgICAgICAgICAgbV9zdHJlYW07Ci0gICAgc3RkOjpiYXNpY19zdHJpbmc8Q2hhclQ+ICAgICAgICBtX3N0cjsKLX07Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVCwgdHlwZW5hbWUgVD4KLWlubGluZSBiYXNpY193cmFwX3N0cmluZ3N0cmVhbTxDaGFyVD4mCi1vcGVyYXRvcjw8KCBiYXNpY193cmFwX3N0cmluZ3N0cmVhbTxDaGFyVD4mIHRhcmcsIFQgY29uc3QmIHQgKQotewotICAgIHRhcmcuc3RyZWFtKCkgPDwgdDsKLSAgICByZXR1cm4gdGFyZzsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUPgotaW5saW5lIHR5cGVuYW1lIGJhc2ljX3dyYXBfc3RyaW5nc3RyZWFtPENoYXJUPjo6d3JhcHBlZF9zdHJlYW0mCi1iYXNpY193cmFwX3N0cmluZ3N0cmVhbTxDaGFyVD46OnN0cmVhbSgpCi17Ci0gICAgcmV0dXJuIG1fc3RyZWFtOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclQ+Ci1pbmxpbmUgYmFzaWNfd3JhcF9zdHJpbmdzdHJlYW08Q2hhclQ+JgotYmFzaWNfd3JhcF9zdHJpbmdzdHJlYW08Q2hhclQ+OjpyZWYoKQoteyAKLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVD4KLWlubGluZSBzdGQ6OmJhc2ljX3N0cmluZzxDaGFyVD4gY29uc3QmCi1iYXNpY193cmFwX3N0cmluZ3N0cmVhbTxDaGFyVD46OnN0cigpCi17Ci0KLSNpZmRlZiBORE5CT09TVF9OT19TVFJJTkdTVFJFQU0KLSAgICBtX3N0ci5hc3NpZ24oIG1fc3RyZWFtLnN0cigpLCBtX3N0cmVhbS5wY291bnQoKSApOwotICAgIG1fc3RyZWFtLmZyZWV6ZSggZmFsc2UgKTsKLSNlbHNlCi0gICAgbV9zdHIgPSBtX3N0cmVhbS5zdHIoKTsKLSNlbmRpZgotCi0gICAgcmV0dXJuIG1fc3RyOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclQ+Ci1pbmxpbmUgYmFzaWNfd3JhcF9zdHJpbmdzdHJlYW08Q2hhclQ+Jgotb3BlcmF0b3I8PCggYmFzaWNfd3JhcF9zdHJpbmdzdHJlYW08Q2hhclQ+JiB0YXJnLCBiYXNpY193cmFwX3N0cmluZ3N0cmVhbTxDaGFyVD4mIHNyYyApCi17Ci0gICAgdGFyZyA8PCBzcmMuc3RyKCk7Ci0gICAgcmV0dXJuIHRhcmc7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpZiBORE5CT09TVF9URVNUX1VTRV9TVERfTE9DQUxFIAotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclQ+Ci1pbmxpbmUgYmFzaWNfd3JhcF9zdHJpbmdzdHJlYW08Q2hhclQ+Jgotb3BlcmF0b3I8PCggYmFzaWNfd3JhcF9zdHJpbmdzdHJlYW08Q2hhclQ+JiB0YXJnLCBzdGQ6Omlvc19iYXNlJiAoTkROQk9PU1RfVEVTVF9DQUxMX0RFQ0wgKm1hbikoc3RkOjppb3NfYmFzZSYpICkKLXsKLSAgICB0YXJnLnN0cmVhbSgpIDw8IG1hbjsKLSAgICByZXR1cm4gdGFyZzsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclQsdHlwZW5hbWUgRWxlbSx0eXBlbmFtZSBUcj4KLWlubGluZSBiYXNpY193cmFwX3N0cmluZ3N0cmVhbTxDaGFyVD4mCi1vcGVyYXRvcjw8KCBiYXNpY193cmFwX3N0cmluZ3N0cmVhbTxDaGFyVD4mIHRhcmcsIHN0ZDo6YmFzaWNfb3N0cmVhbTxFbGVtLFRyPiYgKE5ETkJPT1NUX1RFU1RfQ0FMTF9ERUNMICptYW4pKHN0ZDo6YmFzaWNfb3N0cmVhbTxFbGVtLCBUcj4mKSApCi17Ci0gICAgdGFyZy5zdHJlYW0oKSA8PCBtYW47Ci0gICAgcmV0dXJuIHRhcmc7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJULHR5cGVuYW1lIEVsZW0sdHlwZW5hbWUgVHI+Ci1pbmxpbmUgYmFzaWNfd3JhcF9zdHJpbmdzdHJlYW08Q2hhclQ+Jgotb3BlcmF0b3I8PCggYmFzaWNfd3JhcF9zdHJpbmdzdHJlYW08Q2hhclQ+JiB0YXJnLCBzdGQ6OmJhc2ljX2lvczxFbGVtLCBUcj4mIChORE5CT09TVF9URVNUX0NBTExfREVDTCAqbWFuKShzdGQ6OmJhc2ljX2lvczxFbGVtLCBUcj4mKSApCi17Ci0gICAgdGFyZy5zdHJlYW0oKSA8PCBtYW47Ci0gICAgcmV0dXJuIHRhcmc7Ci19Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNlbmRpZgotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICB3cmFwX3N0cmluZ3N0cmVhbSAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLXR5cGVkZWYgYmFzaWNfd3JhcF9zdHJpbmdzdHJlYW08Y2hhcj4gICAgICAgd3JhcF9zdHJpbmdzdHJlYW07Ci10eXBlZGVmIGJhc2ljX3dyYXBfc3RyaW5nc3RyZWFtPHdjaGFyX3Q+ICAgIHdyYXBfd3N0cmluZ3N0cmVhbTsKLQotfSAgLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9lbmFibGVfd2FybmluZ3MuaHBwPgotCi0jZW5kaWYgIC8vIE5ETkJPT1NUX1dSQVBfU1RSSU5HU1RSRUFNX0hQUF8wNzE4OTRHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy94bWxfcHJpbnRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Rlc3QvdXRpbHMveG1sX3ByaW50ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MGYyOTcyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdGVzdC91dGlscy94bWxfcHJpbnRlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTggKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgR2VubmFkaXkgUm96ZW50YWwgMjAwNC0yMDA4LgotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdGVzdCBmb3IgdGhlIGxpYnJhcnkgaG9tZSBwYWdlLgotLy8KLS8vICBGaWxlICAgICAgICA6ICRSQ1NmaWxlJAotLy8KLS8vICBWZXJzaW9uICAgICA6ICRSZXZpc2lvbjogNTc5OTIgJAotLy8KLS8vICBEZXNjcmlwdGlvbiA6IGNvbW1vbiBjb2RlIHVzZWQgYnkgYW55IGFnZW50IHNlcnZpbmcgYXMgWE1MIHByaW50ZXIKLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi0jaWZuZGVmIE5ETkJPT1NUX1RFU1RfWE1MX1BSSU5URVJfSFBQXzA3MTg5NEdFUgotI2RlZmluZSBORE5CT09TVF9URVNUX1hNTF9QUklOVEVSX0hQUF8wNzE4OTRHRVIKLQotLy8gQm9vc3QuVGVzdAotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvYmFzaWNfY3N0cmluZy9iYXNpY19jc3RyaW5nLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2ZpeGVkX21hcHBpbmcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvY3VzdG9tX21hbmlwLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L3V0aWxzL2ZvcmVhY2guaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvdXRpbHMvYmFzaWNfY3N0cmluZy9pby5ocHA+Ci0KLS8vIEJvb3N0Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotLy8gU1RMCi0jaW5jbHVkZSA8aW9zdHJlYW0+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90ZXN0L2RldGFpbC9zdXBwcmVzc193YXJuaW5ncy5ocHA+Ci0KLS8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSB1bml0X3Rlc3QgewotCi0vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAvLwotLy8gKioqKioqKioqKioqKiogICAgICAgICAgICAgICB4bWwgcHJpbnQgaGVscGVycyAgICAgICAgICAgICAgKioqKioqKioqKioqKiogLy8KLS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vCi0KLWlubGluZSB2b2lkCi1wcmludF9lc2NhcGVkKCBzdGQ6Om9zdHJlYW0mIHdoZXJlX3RvLCBjb25zdF9zdHJpbmcgdmFsdWUgKQotewotICAgIHN0YXRpYyBmaXhlZF9tYXBwaW5nPGNoYXIsY2hhciBjb25zdCo+IGNoYXJfdHlwZSgKLSAgICAgICAgJzwnICwgImx0IiwKLSAgICAgICAgJz4nICwgImd0IiwKLSAgICAgICAgJyYnICwgImFtcCIsCi0gICAgICAgICdcJycsICJhcG9zIiAsCi0gICAgICAgICciJyAsICJxdW90IiwKLQotICAgICAgICAwCi0gICAgKTsKLQotICAgIE5ETkJPT1NUX1RFU1RfRk9SRUFDSCggY2hhciwgYywgdmFsdWUgKSB7Ci0gICAgICAgIGNoYXIgY29uc3QqIHJlZiA9IGNoYXJfdHlwZVtjXTsKLQotICAgICAgICBpZiggcmVmICkKLSAgICAgICAgICAgIHdoZXJlX3RvIDw8ICcmJyA8PCByZWYgPDwgJzsnOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB3aGVyZV90byA8PCBjOwotICAgIH0KLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotaW5saW5lIHZvaWQKLXByaW50X2VzY2FwZWQoIHN0ZDo6b3N0cmVhbSYgd2hlcmVfdG8sIHN0ZDo6c3RyaW5nIGNvbnN0JiB2YWx1ZSApCi17Ci0gICAgcHJpbnRfZXNjYXBlZCggd2hlcmVfdG8sIGNvbnN0X3N0cmluZyggdmFsdWUgKSApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotaW5saW5lIHZvaWQKLXByaW50X2VzY2FwZWQoIHN0ZDo6b3N0cmVhbSYgd2hlcmVfdG8sIFQgY29uc3QmIHZhbHVlICkKLXsKLSAgICB3aGVyZV90byA8PCB2YWx1ZTsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdHlwZWRlZiBjdXN0b21fbWFuaXA8c3RydWN0IGF0dHJfdmFsdWVfdD4gYXR0cl92YWx1ZTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWlubGluZSBzdGQ6Om9zdHJlYW0mCi1vcGVyYXRvcjw8KCBjdXN0b21fcHJpbnRlcjxhdHRyX3ZhbHVlPiBjb25zdCYgcCwgVCBjb25zdCYgdmFsdWUgKQotewotICAgICpwIDw8ICI9XCIiOwotICAgIHByaW50X2VzY2FwZWQoICpwLCB2YWx1ZSApOwotICAgICpwIDw8ICciJzsKLQotICAgIHJldHVybiAqcDsKLX0KLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotdHlwZWRlZiBjdXN0b21fbWFuaXA8c3RydWN0IGNkYXRhX3Q+IGNkYXRhOwotCi1pbmxpbmUgc3RkOjpvc3RyZWFtJgotb3BlcmF0b3I8PCggY3VzdG9tX3ByaW50ZXI8Y2RhdGE+IGNvbnN0JiBwLCBjb25zdF9zdHJpbmcgdmFsdWUgKQotewotICAgIHJldHVybiAqcCA8PCBORE5CT09TVF9URVNUX0woICI8IVtDREFUQVsiICkgPDwgdmFsdWUgPDwgTkROQk9PU1RfVEVTVF9MKCAiXV0+IiApOwotfQotCi0vL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwotCi19IC8vIG5hbWVzcGFjZSB1bml0X3Rlc3QKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Rlc3QvZGV0YWlsL2VuYWJsZV93YXJuaW5ncy5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9URVNUX1hNTF9QUklOVEVSX0hQUF8wNzE4OTRHRVIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGhyb3dfZXhjZXB0aW9uLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdGhyb3dfZXhjZXB0aW9uLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDc1YTlmMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Rocm93X2V4Y2VwdGlvbi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDAgKzAsMCBAQAotI2lmbmRlZiBORE5CT09TVF9VVUlEX0FBMTVFNzRBODU2RjExRTA4QjhEOTNGMjQ4MjQwMTlCCi0jZGVmaW5lIE5ETkJPT1NUX1VVSURfQUExNUU3NEE4NTZGMTFFMDhCOEQ5M0YyNDgyNDAxOUIKLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAhZGVmaW5lZChORE5CT09TVF9FWENFUFRJT05fRU5BQkxFX1dBUk5JTkdTKQotI3ByYWdtYSBHQ0Mgc3lzdGVtX2hlYWRlcgotI2VuZGlmCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgIWRlZmluZWQoTkROQk9PU1RfRVhDRVBUSU9OX0VOQUJMRV9XQVJOSU5HUykKLSNwcmFnbWEgd2FybmluZyhwdXNoLDEpCi0jZW5kaWYKLQotLy8gTVMgY29tcGF0aWJsZSBjb21waWxlcnMgc3VwcG9ydCAjcHJhZ21hIG9uY2UKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLS8vCi0vLyAgbmRuYm9vc3QvdGhyb3dfZXhjZXB0aW9uLmhwcAotLy8KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDIgUGV0ZXIgRGltb3YgYW5kIE11bHRpIE1lZGlhIEx0ZC4KLS8vICBDb3B5cmlnaHQgKGMpIDIwMDgtMjAwOSBFbWlsIERvdGNoZXZza2kgYW5kIFJldmVyZ2UgU3R1ZGlvcywgSW5jLgotLy8KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vICBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy91dGlsaXR5L3Rocm93X2V4Y2VwdGlvbi5odG1sCi0vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvZXhjZXB0aW9uL2RldGFpbC9hdHRyaWJ1dGVfbm9yZXR1cm4uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPGV4Y2VwdGlvbj4KLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9FWENFUFRJT05fRElTQUJMRSApICYmIGRlZmluZWQoIF9fQk9STEFORENfXyApICYmIE5ETkJPT1NUX1dPUktBUk9VTkQoIF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTkzKSApCi0jIGRlZmluZSBORE5CT09TVF9FWENFUFRJT05fRElTQUJMRQotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfRVhDRVBUSU9OX0RJU0FCTEUgKSAmJiBkZWZpbmVkKCBORE5CT09TVF9NU1ZDICkgJiYgTkROQk9PU1RfV09SS0FST1VORCggTkROQk9PU1RfTVNWQywgPCAxMzEwICkKLSMgZGVmaW5lIE5ETkJPT1NUX0VYQ0VQVElPTl9ESVNBQkxFCi0jZW5kaWYKLQotI2lmICFkZWZpbmVkKCBORE5CT09TVF9FWENFUFRJT05fRElTQUJMRSApCi0jIGluY2x1ZGUgPG5kbmJvb3N0L2V4Y2VwdGlvbi9leGNlcHRpb24uaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9jdXJyZW50X2Z1bmN0aW9uLmhwcD4KLSMgZGVmaW5lIE5ETkJPT1NUX1RIUk9XX0VYQ0VQVElPTih4KSA6Om5kbmJvb3N0OjpleGNlcHRpb25fZGV0YWlsOjp0aHJvd19leGNlcHRpb25fKHgsTkROQk9PU1RfQ1VSUkVOVF9GVU5DVElPTixfX0ZJTEVfXyxfX0xJTkVfXykKLSNlbHNlCi0jIGRlZmluZSBORE5CT09TVF9USFJPV19FWENFUFRJT04oeCkgOjpuZG5ib29zdDo6dGhyb3dfZXhjZXB0aW9uKHgpCi0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0jaWZkZWYgTkROQk9PU1RfTk9fRVhDRVBUSU9OUwotCi12b2lkIHRocm93X2V4Y2VwdGlvbiggc3RkOjpleGNlcHRpb24gY29uc3QgJiBlICk7IC8vIHVzZXIgZGVmaW5lZAotCi0jZWxzZQotCi1pbmxpbmUgdm9pZCB0aHJvd19leGNlcHRpb25fYXNzZXJ0X2NvbXBhdGliaWxpdHkoIHN0ZDo6ZXhjZXB0aW9uIGNvbnN0ICYgKSB7IH0KLQotdGVtcGxhdGU8Y2xhc3MgRT4gTkROQk9PU1RfQVRUUklCVVRFX05PUkVUVVJOIGlubGluZSB2b2lkIHRocm93X2V4Y2VwdGlvbiggRSBjb25zdCAmIGUgKQotewotICAgIC8vQWxsIGJvb3N0IGV4Y2VwdGlvbnMgYXJlIHJlcXVpcmVkIHRvIGRlcml2ZSBmcm9tIHN0ZDo6ZXhjZXB0aW9uLAotICAgIC8vdG8gZW5zdXJlIGNvbXBhdGliaWxpdHkgd2l0aCBORE5CT09TVF9OT19FWENFUFRJT05TLgotICAgIHRocm93X2V4Y2VwdGlvbl9hc3NlcnRfY29tcGF0aWJpbGl0eShlKTsKLQotI2lmbmRlZiBORE5CT09TVF9FWENFUFRJT05fRElTQUJMRQotICAgIHRocm93IGVuYWJsZV9jdXJyZW50X2V4Y2VwdGlvbihlbmFibGVfZXJyb3JfaW5mbyhlKSk7Ci0jZWxzZQotICAgIHRocm93IGU7Ci0jZW5kaWYKLX0KLQotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZCggTkROQk9PU1RfRVhDRVBUSU9OX0RJU0FCTEUgKQotICAgIG5hbWVzcGFjZQotICAgIGV4Y2VwdGlvbl9kZXRhaWwKLSAgICB7Ci0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBFPgotICAgICAgICBORE5CT09TVF9BVFRSSUJVVEVfTk9SRVRVUk4KLSAgICAgICAgdm9pZAotICAgICAgICB0aHJvd19leGNlcHRpb25fKCBFIGNvbnN0ICYgeCwgY2hhciBjb25zdCAqIGN1cnJlbnRfZnVuY3Rpb24sIGNoYXIgY29uc3QgKiBmaWxlLCBpbnQgbGluZSApCi0gICAgICAgIHsKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp0aHJvd19leGNlcHRpb24oCi0gICAgICAgICAgICAgICAgc2V0X2luZm8oCi0gICAgICAgICAgICAgICAgICAgIHNldF9pbmZvKAotICAgICAgICAgICAgICAgICAgICAgICAgc2V0X2luZm8oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlX2Vycm9yX2luZm8oeCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3dfZnVuY3Rpb24oY3VycmVudF9mdW5jdGlvbikpLAotICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3dfZmlsZShmaWxlKSksCi0gICAgICAgICAgICAgICAgICAgIHRocm93X2xpbmUobGluZSkpKTsKLSAgICAgICAgfQotICAgIH0KLSNlbmRpZgotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmICFkZWZpbmVkKE5ETkJPT1NUX0VYQ0VQVElPTl9FTkFCTEVfV0FSTklOR1MpCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdGltZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90aW1lci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUxOWYzNjAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90aW1lci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MiArMCwwIEBACi0vLyAgYm9vc3QgdGltZXIuaHBwIGhlYWRlciBmaWxlICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgQ29weXJpZ2h0IEJlbWFuIERhd2VzIDE5OTQtOTkuICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QKLS8vICBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZQotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3RpbWVyIGZvciBkb2N1bWVudGF0aW9uLgotCi0vLyAgUmV2aXNpb24gSGlzdG9yeQotLy8gIDAxIEFwciAwMSAgTW9kaWZpZWQgdG8gdXNlIG5ldyA8bmRuYm9vc3QvbGltaXRzLmhwcD4gaGVhZGVyLiAoSk1hZGRvY2spCi0vLyAgMTIgSmFuIDAxICBDaGFuZ2UgdG8gaW5saW5lIGltcGxlbWVudGF0aW9uIHRvIGFsbG93IHVzZSB3aXRob3V0IGxpYnJhcnkKLS8vICAgICAgICAgICAgIGJ1aWxkcy4gU2VlIGRvY3MgZm9yIG1vcmUgcmF0aW9uYWxlLiAoQmVtYW4gRGF3ZXMpIAotLy8gIDI1IFNlcCA5OSAgZWxhcHNlZF9tYXgoKSBhbmQgZWxhcHNlZF9taW4oKSBhZGRlZCAoSm9obiBNYWRkb2NrKQotLy8gIDE2IEp1bCA5OSAgU2Vjb25kIGJldGEKLS8vICAgNiBKdWwgOTkgIEluaXRpYWwgYm9vc3QgdmVyc2lvbgotCi0jaWZuZGVmIE5ETkJPT1NUX1RJTUVSX0hQUAotI2RlZmluZSBORE5CT09TVF9USU1FUl9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8Y3RpbWU+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbGltaXRzLmhwcD4KLQotIyBpZmRlZiBORE5CT09TVF9OT19TVERDX05BTUVTUEFDRQotICAgIG5hbWVzcGFjZSBzdGQgeyB1c2luZyA6OmNsb2NrX3Q7IHVzaW5nIDo6Y2xvY2s7IH0KLSMgZW5kaWYKLQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi0vLyAgdGltZXIgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgQSB0aW1lciBvYmplY3QgbWVhc3VyZXMgZWxhcHNlZCB0aW1lLgotCi0vLyAgSXQgaXMgcmVjb21tZW5kZWQgdGhhdCBpbXBsZW1lbnRhdGlvbnMgbWVhc3VyZSB3YWxsIGNsb2NrIHJhdGhlciB0aGFuIENQVQotLy8gIHRpbWUgc2luY2UgdGhlIGludGVuZGVkIHVzZSBpcyBwZXJmb3JtYW5jZSBtZWFzdXJlbWVudCBvbiBzeXN0ZW1zIHdoZXJlCi0vLyAgdG90YWwgZWxhcHNlZCB0aW1lIGlzIG1vcmUgaW1wb3J0YW50IHRoYW4ganVzdCBwcm9jZXNzIG9yIENQVSB0aW1lLgotCi0vLyAgV2FybmluZ3M6IFRoZSBtYXhpbXVtIG1lYXN1cmFibGUgZWxhcHNlZCB0aW1lIG1heSB3ZWxsIGJlIG9ubHkgNTk2LjUrIGhvdXJzCi0vLyAgZHVlIHRvIGltcGxlbWVudGF0aW9uIGxpbWl0YXRpb25zLiAgVGhlIGFjY3VyYWN5IG9mIHRpbWluZ3MgZGVwZW5kcyBvbiB0aGUKLS8vICBhY2N1cmFjeSBvZiB0aW1pbmcgaW5mb3JtYXRpb24gcHJvdmlkZWQgYnkgdGhlIHVuZGVybHlpbmcgcGxhdGZvcm0sIGFuZAotLy8gIHRoaXMgdmFyaWVzIGEgZ3JlYXQgZGVhbCBmcm9tIHBsYXRmb3JtIHRvIHBsYXRmb3JtLgotCi1jbGFzcyB0aW1lcgotewotIHB1YmxpYzoKLSAgICAgICAgIHRpbWVyKCkgeyBfc3RhcnRfdGltZSA9IHN0ZDo6Y2xvY2soKTsgfSAvLyBwb3N0Y29uZGl0aW9uOiBlbGFwc2VkKCk9PTAKLS8vICAgICAgICAgdGltZXIoIGNvbnN0IHRpbWVyJiBzcmMgKTsgICAgICAvLyBwb3N0OiBlbGFwc2VkKCk9PXNyYy5lbGFwc2VkKCkKLS8vICAgICAgICB+dGltZXIoKXt9Ci0vLyAgdGltZXImIG9wZXJhdG9yPSggY29uc3QgdGltZXImIHNyYyApOyAgLy8gcG9zdDogZWxhcHNlZCgpPT1zcmMuZWxhcHNlZCgpCi0gIHZvaWQgICByZXN0YXJ0KCkgeyBfc3RhcnRfdGltZSA9IHN0ZDo6Y2xvY2soKTsgfSAvLyBwb3N0OiBlbGFwc2VkKCk9PTAKLSAgZG91YmxlIGVsYXBzZWQoKSBjb25zdCAgICAgICAgICAgICAgICAgIC8vIHJldHVybiBlbGFwc2VkIHRpbWUgaW4gc2Vjb25kcwotICAgIHsgcmV0dXJuICBkb3VibGUoc3RkOjpjbG9jaygpIC0gX3N0YXJ0X3RpbWUpIC8gQ0xPQ0tTX1BFUl9TRUM7IH0KLQotICBkb3VibGUgZWxhcHNlZF9tYXgoKSBjb25zdCAgIC8vIHJldHVybiBlc3RpbWF0ZWQgbWF4aW11bSB2YWx1ZSBmb3IgZWxhcHNlZCgpCi0gIC8vIFBvcnRhYmlsaXR5IHdhcm5pbmc6IGVsYXBzZWRfbWF4KCkgbWF5IHJldHVybiB0b28gaGlnaCBhIHZhbHVlIG9uIHN5c3RlbXMKLSAgLy8gd2hlcmUgc3RkOjpjbG9ja190IG92ZXJmbG93cyBvciByZXNldHMgYXQgc3VycHJpc2luZyB2YWx1ZXMuCi0gIHsKLSAgICByZXR1cm4gKGRvdWJsZSgoc3RkOjpudW1lcmljX2xpbWl0czxzdGQ6OmNsb2NrX3Q+OjptYXgpKCkpCi0gICAgICAgLSBkb3VibGUoX3N0YXJ0X3RpbWUpKSAvIGRvdWJsZShDTE9DS1NfUEVSX1NFQyk7IAotICB9Ci0KLSAgZG91YmxlIGVsYXBzZWRfbWluKCkgY29uc3QgICAgICAgICAgICAvLyByZXR1cm4gbWluaW11bSB2YWx1ZSBmb3IgZWxhcHNlZCgpCi0gICB7IHJldHVybiBkb3VibGUoMSkvZG91YmxlKENMT0NLU19QRVJfU0VDKTsgfQotCi0gcHJpdmF0ZToKLSAgc3RkOjpjbG9ja190IF9zdGFydF90aW1lOwotfTsgLy8gdGltZXIKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmICAvLyBORE5CT09TVF9USU1FUl9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHVwbGUvZGV0YWlsL3R1cGxlX2Jhc2ljLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHVwbGUvZGV0YWlsL3R1cGxlX2Jhc2ljLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2JiNjc3NC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R1cGxlL2RldGFpbC90dXBsZV9iYXNpYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5ODAgKzAsMCBAQAotLy8gIHR1cGxlX2Jhc2ljLmhwcCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBDb3B5cmlnaHQgKEMpIDE5OTksIDIwMDAgSmFha2tvIEphcnZpIChqYWFra28uamFydmlAY3MudXR1LmZpKQotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZwotCi0vLyBPdXRzaWRlIGhlbHA6Ci0vLyBUaGlzIGFuZCB0aGF0LCBHYXJ5IFBvd2VsbC4KLS8vIEZpeGVkIHJldHVybiB0eXBlcyBmb3IgZ2V0X2hlYWQvZ2V0X3RhaWwKLS8vICggYW5kIG90aGVyIGJ1Z3MgKSBwZXIgc3VnZ2VzdGlvbiBvZiBKZW5zIE1hdXJlcgotLy8gc2ltcGxpZmllZCBlbGVtZW50IHR5cGUgYWNjZXNzb3JzICsgYnVnIGZpeCAgKEplcmVteSBTaWVrKQotLy8gU2V2ZXJhbCBjaGFuZ2VzL2FkZGl0aW9ucyBhY2NvcmRpbmcgdG8gc3VnZ2VzdGlvbnMgYnkgRG91Z2xhcyBHcmVnb3IsCi0vLyBXaWxsaWFtIEtlbXBmLCBWZXNhIEthcnZvbmVuLCBKb2huIE1heCBTa2FsbGVyLCBFZCBCcmV5LCBCZW1hbiBEYXdlcywKLS8vIERhdmlkIEFicmFoYW1zLgotCi0vLyBSZXZpc2lvbiBoaXN0b3J5OgotLy8gMjAwMiAwNSAwMSBIdWdvIER1bmNhbjogRml4IGZvciBCb3JsYW5kIGFmdGVyIEphYWtrbydzIHByZXZpb3VzIGNoYW5nZXMKLS8vIDIwMDIgMDQgMTggSmFha2tvOiB0dXBsZSBlbGVtZW50IHR5cGVzIGNhbiBiZSB2b2lkIG9yIHBsYWluIGZ1bmN0aW9uCi0vLyAgICAgICAgICAgICAgICAgICAgdHlwZXMsIGFzIGxvbmcgYXMgbm8gb2JqZWN0IGlzIGNyZWF0ZWQuCi0vLyAgICAgICAgICAgICAgICAgICAgVHVwbGUgb2JqZWN0cyBjYW4gbm8gaG9sZCBldmVuIG5vbmNvcHlhYmxlIHR5cGVzCi0vLyAgICAgICAgICAgICAgICAgICAgc3VjaCBhcyBhcnJheXMuCi0vLyAyMDAxIDEwIDIyIEpvaG4gTWFkZG9jawotLy8gICAgICBGaXhlcyBmb3IgQm9ybGFuZCBDKysKLS8vIDIwMDEgMDggMzAgRGF2aWQgQWJyYWhhbXMKLS8vICAgICAgQWRkZWQgZGVmYXVsdCBjb25zdHJ1Y3RvciBmb3IgY29uczw+LgotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotI2lmbmRlZiBORE5CT09TVF9UVVBMRV9CQVNJQ19IUFAKLSNkZWZpbmUgTkROQk9PU1RfVFVQTEVfQkFTSUNfSFBQCi0KLQotI2luY2x1ZGUgPHV0aWxpdHk+IC8vIG5lZWRlZCBmb3IgdGhlIGFzc2lnbm1lbnQgZnJvbSBwYWlyIHRvIHR1cGxlCi0KLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9jdl90cmFpdHMuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2Z1bmN0aW9uX3RyYWl0cy5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdXRpbGl0eS9zd2FwLmhwcCIKLQotI2luY2x1ZGUgIm5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcCIgLy8gbmVlZGVkIGZvciBORE5CT09TVF9XT1JLQVJPVU5ECi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci1uYW1lc3BhY2UgdHVwbGVzIHsKLQotLy8gLS0gbnVsbF90eXBlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1zdHJ1Y3QgbnVsbF90eXBlIHt9OwotCi0vLyBhIGhlbHBlciBmdW5jdGlvbiB0byBwcm92aWRlIGEgY29uc3QgbnVsbF90eXBlIHR5cGUgdGVtcG9yYXJ5Ci1uYW1lc3BhY2UgZGV0YWlsIHsKLSAgaW5saW5lIGNvbnN0IG51bGxfdHlwZSBjbnVsbCgpIHsgcmV0dXJuIG51bGxfdHlwZSgpOyB9Ci0KLQotLy8gLS0gaWYgY29uc3RydWN0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gUHJvcG9zZWQgYnkgS3J6eXN6dG9mIEN6YXJuZWNraSBhbmQgVWxyaWNoIEVpc2VuZWNrZXIKLQotdGVtcGxhdGUgPGJvb2wgSWYsIGNsYXNzIFRoZW4sIGNsYXNzIEVsc2U+IHN0cnVjdCBJRiB7IHR5cGVkZWYgVGhlbiBSRVQ7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBUaGVuLCBjbGFzcyBFbHNlPiBzdHJ1Y3QgSUY8ZmFsc2UsIFRoZW4sIEVsc2U+IHsKLSAgdHlwZWRlZiBFbHNlIFJFVDsKLX07Ci0KLX0gLy8gZW5kIGRldGFpbAotCi0vLyAtIGNvbnMgZm9yd2FyZCBkZWNsYXJhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotdGVtcGxhdGUgPGNsYXNzIEhULCBjbGFzcyBUVD4gc3RydWN0IGNvbnM7Ci0KLQotLy8gLSB0dXBsZSBmb3J3YXJkIGRlY2xhcmF0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi10ZW1wbGF0ZSA8Ci0gIGNsYXNzIFQwID0gbnVsbF90eXBlLCBjbGFzcyBUMSA9IG51bGxfdHlwZSwgY2xhc3MgVDIgPSBudWxsX3R5cGUsCi0gIGNsYXNzIFQzID0gbnVsbF90eXBlLCBjbGFzcyBUNCA9IG51bGxfdHlwZSwgY2xhc3MgVDUgPSBudWxsX3R5cGUsCi0gIGNsYXNzIFQ2ID0gbnVsbF90eXBlLCBjbGFzcyBUNyA9IG51bGxfdHlwZSwgY2xhc3MgVDggPSBudWxsX3R5cGUsCi0gIGNsYXNzIFQ5ID0gbnVsbF90eXBlPgotY2xhc3MgdHVwbGU7Ci0KLS8vIHR1cGxlX2xlbmd0aCBmb3J3YXJkIGRlY2xhcmF0aW9uCi10ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3QgbGVuZ3RoOwotCi0KLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLS8vIC0tIGdlbmVyYXRlIGVycm9yIHRlbXBsYXRlLCByZWZlcmVuY2luZyB0byBub24tZXhpc3RpbmcgbWVtYmVycyBvZiB0aGlzCi0vLyB0ZW1wbGF0ZSBpcyB1c2VkIHRvIHByb2R1Y2UgY29tcGlsYXRpb24gZXJyb3JzIGludGVudGlvbmFsbHkKLXRlbXBsYXRlPGNsYXNzIFQ+Ci1jbGFzcyBnZW5lcmF0ZV9lcnJvcjsKLQotdGVtcGxhdGU8aW50IE4+Ci1zdHJ1Y3QgZHJvcF9mcm9udCB7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgVHVwbGU+Ci0gICAgc3RydWN0IGFwcGx5IHsKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGRyb3BfZnJvbnQ8Ti0xPjo6TkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFCi0gICAgICAgICAgICBhcHBseTxUdXBsZT4gbmV4dDsKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIG5leHQ6OnR5cGU6OnRhaWxfdHlwZSB0eXBlOwotICAgICAgICBzdGF0aWMgY29uc3QgdHlwZSYgY2FsbChjb25zdCBUdXBsZSYgdHVwKSB7Ci0gICAgICAgICAgICByZXR1cm4gbmV4dDo6Y2FsbCh0dXApLnRhaWw7Ci0gICAgICAgIH0KLSAgICB9OwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGRyb3BfZnJvbnQ8MD4gewotICAgIHRlbXBsYXRlPGNsYXNzIFR1cGxlPgotICAgIHN0cnVjdCBhcHBseSB7Ci0gICAgICAgIHR5cGVkZWYgVHVwbGUgdHlwZTsKLSAgICAgICAgc3RhdGljIGNvbnN0IHR5cGUmIGNhbGwoY29uc3QgVHVwbGUmIHR1cCkgewotICAgICAgICAgICAgcmV0dXJuIHR1cDsKLSAgICAgICAgfQotICAgIH07Ci19OwotCi19IC8vIGVuZCBvZiBuYW1lc3BhY2UgZGV0YWlsCi0KLQotLy8gLWNvbnMgdHlwZSBhY2Nlc3NvcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gdHlwZW5hbWUgdHVwbGVzOjplbGVtZW50PE4sVD46OnR5cGUgZ2V0cyB0aGUgdHlwZSBvZiB0aGUKLS8vIE50aCBlbGVtZW50IG90IFQsIGZpcnN0IGVsZW1lbnQgaXMgYXQgaW5kZXggMAotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NWX1NQRUNJQUxJWkFUSU9OUwotCi10ZW1wbGF0ZTxpbnQgTiwgY2xhc3MgVD4KLXN0cnVjdCBlbGVtZW50Ci17Ci0gIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBkZXRhaWw6OmRyb3BfZnJvbnQ8Tj46Ok5ETkJPT1NUX05FU1RFRF9URU1QTEFURQotICAgICAgYXBwbHk8VD46OnR5cGU6OmhlYWRfdHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8aW50IE4sIGNsYXNzIFQ+Ci1zdHJ1Y3QgZWxlbWVudDxOLCBjb25zdCBUPgotewotcHJpdmF0ZToKLSAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGRldGFpbDo6ZHJvcF9mcm9udDxOPjo6TkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFCi0gICAgICBhcHBseTxUPjo6dHlwZTo6aGVhZF90eXBlIHVucXVhbGlmaWVkX3R5cGU7Ci1wdWJsaWM6Ci0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sPDB4NjAwKQotICB0eXBlZGVmIGNvbnN0IHVucXVhbGlmaWVkX3R5cGUgdHlwZTsKLSNlbHNlCi0gIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBuZG5ib29zdDo6YWRkX2NvbnN0PHVucXVhbGlmaWVkX3R5cGU+Ojp0eXBlIHR5cGU7Ci0jZW5kaWYKLX07Ci0jZWxzZSAvLyBkZWYgTkROQk9PU1RfTk9fQ1ZfU1BFQ0lBTElaQVRJT05TCi0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZTxpbnQgTiwgY2xhc3MgVCwgYm9vbCBJc0NvbnN0Pgotc3RydWN0IGVsZW1lbnRfaW1wbAotewotICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgZGV0YWlsOjpkcm9wX2Zyb250PE4+OjpORE5CT09TVF9ORVNURURfVEVNUExBVEUKLSAgICAgIGFwcGx5PFQ+Ojp0eXBlOjpoZWFkX3R5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPGludCBOLCBjbGFzcyBUPgotc3RydWN0IGVsZW1lbnRfaW1wbDxOLCBULCB0cnVlIC8qIElzQ29uc3QgKi8+Ci17Ci0gIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBkZXRhaWw6OmRyb3BfZnJvbnQ8Tj46Ok5ETkJPT1NUX05FU1RFRF9URU1QTEFURQotICAgICAgYXBwbHk8VD46OnR5cGU6OmhlYWRfdHlwZSB1bnF1YWxpZmllZF90eXBlOwotICB0eXBlZGVmIGNvbnN0IHVucXVhbGlmaWVkX3R5cGUgdHlwZTsKLX07Ci0KLX0gLy8gZW5kIG9mIG5hbWVzcGFjZSBkZXRhaWwKLQotCi10ZW1wbGF0ZTxpbnQgTiwgY2xhc3MgVD4KLXN0cnVjdCBlbGVtZW50OgotICBwdWJsaWMgZGV0YWlsOjplbGVtZW50X2ltcGw8TiwgVCwgOjpuZG5ib29zdDo6aXNfY29uc3Q8VD46OnZhbHVlPgotewotfTsKLQotI2VuZGlmCi0KLQotLy8gLWdldCBmdW5jdGlvbiB0ZW1wbGF0ZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIFVzYWdlOiBnZXQ8Tj4oYVR1cGxlKQotCi0vLyAtLSBzb21lIHRyYWl0cyBjbGFzc2VzIGZvciBnZXQgZnVuY3Rpb25zCi0KLS8vIGFjY2VzcyB0cmFpdHMgbGlmdGVkIGZyb20gZGV0YWlsIG5hbWVzcGFjZSB0byBiZSBwYXJ0IG9mIHRoZSBpbnRlcmZhY2UsCi0vLyAoSm9lbCBkZSBHdXptYW4ncyBzdWdnZXN0aW9uKS4gUmF0aW9uYWxlOiBnZXQgZnVuY3Rpb25zIGFyZSBwYXJ0IG9mIHRoZQotLy8gaW50ZXJmYWNlLCBzbyBzaG91bGQgdGhlIHdheSB0byBleHByZXNzIHRoZWlyIHJldHVybiB0eXBlcyBiZS4KLQotdGVtcGxhdGUgPGNsYXNzIFQ+IHN0cnVjdCBhY2Nlc3NfdHJhaXRzIHsKLSAgdHlwZWRlZiBjb25zdCBUJiBjb25zdF90eXBlOwotICB0eXBlZGVmIFQmIG5vbl9jb25zdF90eXBlOwotCi0gIHR5cGVkZWYgY29uc3QgdHlwZW5hbWUgbmRuYm9vc3Q6OnJlbW92ZV9jdjxUPjo6dHlwZSYgcGFyYW1ldGVyX3R5cGU7Ci0KLS8vIHVzZWQgYXMgdGhlIHR1cGxlIGNvbnN0cnVjdG9ycyBwYXJhbWV0ZXIgdHlwZXMKLS8vIFJhdGlvbmFsZTogbm9uLXJlZmVyZW5jZSB0dXBsZSBlbGVtZW50IHR5cGVzIGNhbiBiZSBjdi1xdWFsaWZpZWQuCi0vLyBJdCBzaG91bGQgYmUgcG9zc2libGUgdG8gaW5pdGlhbGl6ZSBzdWNoIHR5cGVzIHdpdGggdGVtcG9yYXJpZXMsCi0vLyBhbmQgd2hlbiBiaW5kaW5nIHRlbXBvcmFyaWVzIHRvIHJlZmVyZW5jZXMsIHRoZSByZWZlcmVuY2UgbXVzdAotLy8gYmUgbm9uLXZvbGF0aWxlIGFuZCBjb25zdC4gOC41LjMuICg1KQotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+IHN0cnVjdCBhY2Nlc3NfdHJhaXRzPFQmPiB7Ci0KLSAgdHlwZWRlZiBUJiBjb25zdF90eXBlOwotICB0eXBlZGVmIFQmIG5vbl9jb25zdF90eXBlOwotCi0gIHR5cGVkZWYgVCYgcGFyYW1ldGVyX3R5cGU7Ci19OwotCi0vLyBnZXQgZnVuY3Rpb24gZm9yIG5vbi1jb25zdCBjb25zLWxpc3RzLCByZXR1cm5zIGEgcmVmZXJlbmNlIHRvIHRoZSBlbGVtZW50Ci0KLXRlbXBsYXRlPGludCBOLCBjbGFzcyBIVCwgY2xhc3MgVFQ+Ci1pbmxpbmUgdHlwZW5hbWUgYWNjZXNzX3RyYWl0czwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIGVsZW1lbnQ8TiwgY29uczxIVCwgVFQ+ID46OnR5cGUKLSAgICAgICAgICAgICAgICA+Ojpub25fY29uc3RfdHlwZQotZ2V0KGNvbnM8SFQsIFRUPiYgYyBORE5CT09TVF9BUFBFTkRfRVhQTElDSVRfVEVNUExBVEVfTk9OX1RZUEUoaW50LCBOKSkgewotICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgZGV0YWlsOjpkcm9wX2Zyb250PE4+OjpORE5CT09TVF9ORVNURURfVEVNUExBVEUKLSAgICAgIGFwcGx5PGNvbnM8SFQsIFRUPiA+IGltcGw7Ci0gIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBpbXBsOjp0eXBlIGNvbnNfZWxlbWVudDsKLSAgcmV0dXJuIGNvbnN0X2Nhc3Q8Y29uc19lbGVtZW50Jj4oaW1wbDo6Y2FsbChjKSkuaGVhZDsKLX0KLQotLy8gZ2V0IGZ1bmN0aW9uIGZvciBjb25zdCBjb25zLWxpc3RzLCByZXR1cm5zIGEgY29uc3QgcmVmZXJlbmNlIHRvCi0vLyB0aGUgZWxlbWVudC4gSWYgdGhlIGVsZW1lbnQgaXMgYSByZWZlcmVuY2UsIHJldHVybnMgdGhlIHJlZmVyZW5jZQotLy8gYXMgc3VjaCAodGhhdCBpcywgY2FuIHJldHVybiBhIG5vbi1jb25zdCByZWZlcmVuY2UpCi10ZW1wbGF0ZTxpbnQgTiwgY2xhc3MgSFQsIGNsYXNzIFRUPgotaW5saW5lIHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBlbGVtZW50PE4sIGNvbnM8SFQsIFRUPiA+Ojp0eXBlCi0gICAgICAgICAgICAgICAgPjo6Y29uc3RfdHlwZQotZ2V0KGNvbnN0IGNvbnM8SFQsIFRUPiYgYyBORE5CT09TVF9BUFBFTkRfRVhQTElDSVRfVEVNUExBVEVfTk9OX1RZUEUoaW50LCBOKSkgewotICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgZGV0YWlsOjpkcm9wX2Zyb250PE4+OjpORE5CT09TVF9ORVNURURfVEVNUExBVEUKLSAgICAgIGFwcGx5PGNvbnM8SFQsIFRUPiA+IGltcGw7Ci0gIHR5cGVkZWYgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBpbXBsOjp0eXBlIGNvbnNfZWxlbWVudDsKLSAgcmV0dXJuIGltcGw6OmNhbGwoYykuaGVhZDsKLX0KLQotLy8gLS0gdGhlIGNvbnMgdGVtcGxhdGUgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotLy8gIFRoZXNlIGhlbHBlciB0ZW1wbGF0ZXMgd3JhcCB2b2lkIHR5cGVzIGFuZCBwbGFpbiBmdW5jdGlvbiB0eXBlcy4KLS8vICBUaGUgcmVhdGlvbmFsZSBpcyB0byBhbGxvdyBvbmUgdG8gd3JpdGUgdHVwbGUgdHlwZXMgd2l0aCB0aG9zZSB0eXBlcwotLy8gIGFzIGVsZW1lbnRzLCBldmVuIHRob3VnaCBpdCBpcyBub3QgcG9zc2libGUgdG8gaW5zdGFudGlhdGUgc3VjaCBvYmplY3QuCi0vLyAgRS5nOiB0eXBlZGVmIHR1cGxlPHZvaWQ+IHNvbWVfdHlwZTsgLy8gb2sKLS8vICBidXQ6IHNvbWVfdHlwZSB4OyAvLyBmYWlscwotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4gY2xhc3Mgbm9uX3N0b3JlYWJsZV90eXBlIHsKLSAgbm9uX3N0b3JlYWJsZV90eXBlKCk7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4gc3RydWN0IHdyYXBfbm9uX3N0b3JlYWJsZV90eXBlIHsKLSAgdHlwZWRlZiB0eXBlbmFtZSBJRjwKLSAgICA6Om5kbmJvb3N0Ojppc19mdW5jdGlvbjxUPjo6dmFsdWUsIG5vbl9zdG9yZWFibGVfdHlwZTxUPiwgVAotICA+OjpSRVQgdHlwZTsKLX07Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3Qgd3JhcF9ub25fc3RvcmVhYmxlX3R5cGU8dm9pZD4gewotICB0eXBlZGVmIG5vbl9zdG9yZWFibGVfdHlwZTx2b2lkPiB0eXBlOwotfTsKLQotfSAvLyBkZXRhaWwKLQotdGVtcGxhdGUgPGNsYXNzIEhULCBjbGFzcyBUVD4KLXN0cnVjdCBjb25zIHsKLQotICB0eXBlZGVmIEhUIGhlYWRfdHlwZTsKLSAgdHlwZWRlZiBUVCB0YWlsX3R5cGU7Ci0KLSAgdHlwZWRlZiB0eXBlbmFtZQotICAgIGRldGFpbDo6d3JhcF9ub25fc3RvcmVhYmxlX3R5cGU8aGVhZF90eXBlPjo6dHlwZSBzdG9yZWRfaGVhZF90eXBlOwotCi0gIHN0b3JlZF9oZWFkX3R5cGUgaGVhZDsKLSAgdGFpbF90eXBlIHRhaWw7Ci0KLSAgdHlwZW5hbWUgYWNjZXNzX3RyYWl0czxzdG9yZWRfaGVhZF90eXBlPjo6bm9uX2NvbnN0X3R5cGUKLSAgZ2V0X2hlYWQoKSB7IHJldHVybiBoZWFkOyB9Ci0KLSAgdHlwZW5hbWUgYWNjZXNzX3RyYWl0czx0YWlsX3R5cGU+Ojpub25fY29uc3RfdHlwZQotICBnZXRfdGFpbCgpIHsgcmV0dXJuIHRhaWw7IH0KLQotICB0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPHN0b3JlZF9oZWFkX3R5cGU+Ojpjb25zdF90eXBlCi0gIGdldF9oZWFkKCkgY29uc3QgeyByZXR1cm4gaGVhZDsgfQotCi0gIHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8dGFpbF90eXBlPjo6Y29uc3RfdHlwZQotICBnZXRfdGFpbCgpIGNvbnN0IHsgcmV0dXJuIHRhaWw7IH0KLQotICBjb25zKCkgOiBoZWFkKCksIHRhaWwoKSB7fQotICAvLyAgY29ucygpIDogaGVhZChkZXRhaWw6OmRlZmF1bHRfYXJnPEhUPjo6ZigpKSwgdGFpbCgpIHt9Ci0KLSAgLy8gdGhlIGFyZ3VtZW50IGZvciBoZWFkIGlzIG5vdCBzdHJpY3RseSBuZWVkZWQsIGJ1dCBpdCBwcmV2ZW50cwotICAvLyBhcnJheSB0eXBlIGVsZW1lbnRzLiBUaGlzIGlzIGdvb2QsIHNpbmNlIGFycmF5IHR5cGUgZWxlbWVudHMKLSAgLy8gY2Fubm90IGJlIHN1cHBvcnRlZCBwcm9wZXJseSBpbiBhbnkgY2FzZSAobm8gYXNzaWdubWVudCwKLSAgLy8gY29weSB3b3JrcyBvbmx5IGlmIHRoZSB0YWlscyBhcmUgZXhhY3RseSB0aGUgc2FtZSB0eXBlLCAuLi4pCi0KLSAgY29ucyh0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPHN0b3JlZF9oZWFkX3R5cGU+OjpwYXJhbWV0ZXJfdHlwZSBoLAotICAgICAgIGNvbnN0IHRhaWxfdHlwZSYgdCkKLSAgICA6IGhlYWQgKGgpLCB0YWlsKHQpIHt9Ci0KLSAgdGVtcGxhdGUgPGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgVDMsIGNsYXNzIFQ0LCBjbGFzcyBUNSwKLSAgICAgICAgICAgIGNsYXNzIFQ2LCBjbGFzcyBUNywgY2xhc3MgVDgsIGNsYXNzIFQ5LCBjbGFzcyBUMTA+Ci0gIGNvbnMoIFQxJiB0MSwgVDImIHQyLCBUMyYgdDMsIFQ0JiB0NCwgVDUmIHQ1LAotICAgICAgICBUNiYgdDYsIFQ3JiB0NywgVDgmIHQ4LCBUOSYgdDksIFQxMCYgdDEwICkKLSAgICA6IGhlYWQgKHQxKSwKLSAgICAgIHRhaWwgKHQyLCB0MywgdDQsIHQ1LCB0NiwgdDcsIHQ4LCB0OSwgdDEwLCBkZXRhaWw6OmNudWxsKCkpCi0gICAgICB7fQotCi0gIHRlbXBsYXRlIDxjbGFzcyBUMiwgY2xhc3MgVDMsIGNsYXNzIFQ0LCBjbGFzcyBUNSwKLSAgICAgICAgICAgIGNsYXNzIFQ2LCBjbGFzcyBUNywgY2xhc3MgVDgsIGNsYXNzIFQ5LCBjbGFzcyBUMTA+Ci0gIGNvbnMoIGNvbnN0IG51bGxfdHlwZSYgLyp0MSovLCBUMiYgdDIsIFQzJiB0MywgVDQmIHQ0LCBUNSYgdDUsCi0gICAgICAgIFQ2JiB0NiwgVDcmIHQ3LCBUOCYgdDgsIFQ5JiB0OSwgVDEwJiB0MTAgKQotICAgIDogaGVhZCAoKSwKLSAgICAgIHRhaWwgKHQyLCB0MywgdDQsIHQ1LCB0NiwgdDcsIHQ4LCB0OSwgdDEwLCBkZXRhaWw6OmNudWxsKCkpCi0gICAgICB7fQotCi0KLSAgdGVtcGxhdGUgPGNsYXNzIEhUMiwgY2xhc3MgVFQyPgotICBjb25zKCBjb25zdCBjb25zPEhUMiwgVFQyPiYgdSApIDogaGVhZCh1LmhlYWQpLCB0YWlsKHUudGFpbCkge30KLQotICB0ZW1wbGF0ZSA8Y2xhc3MgSFQyLCBjbGFzcyBUVDI+Ci0gIGNvbnMmIG9wZXJhdG9yPSggY29uc3QgY29uczxIVDIsIFRUMj4mIHUgKSB7Ci0gICAgaGVhZD11LmhlYWQ7IHRhaWw9dS50YWlsOyByZXR1cm4gKnRoaXM7Ci0gIH0KLQotICAvLyBtdXN0IGRlZmluZSBhc3NpZ25tZW50IG9wZXJhdG9yIGV4cGxpY2l0bHksIGltcGxpY2l0IHZlcnNpb24gaXMKLSAgLy8gaWxsZm9ybWVkIGlmIEhUIGlzIGEgcmVmZXJlbmNlICgxMi44LiAoMTIpKQotICBjb25zJiBvcGVyYXRvcj0oY29uc3QgY29ucyYgdSkgewotICAgIGhlYWQgPSB1LmhlYWQ7IHRhaWwgPSB1LnRhaWw7ICByZXR1cm4gKnRoaXM7Ci0gIH0KLQotICB0ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyPgotICBjb25zJiBvcGVyYXRvcj0oIGNvbnN0IHN0ZDo6cGFpcjxUMSwgVDI+JiB1ICkgewotICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQobGVuZ3RoPGNvbnM+Ojp2YWx1ZSA9PSAyKTsgLy8gY2hlY2sgbGVuZ3RoID0gMgotICAgIGhlYWQgPSB1LmZpcnN0OyB0YWlsLmhlYWQgPSB1LnNlY29uZDsgcmV0dXJuICp0aGlzOwotICB9Ci0KLSAgLy8gZ2V0IG1lbWJlciBmdW5jdGlvbnMgKG5vbi1jb25zdCBhbmQgY29uc3QpCi0gIHRlbXBsYXRlIDxpbnQgTj4KLSAgdHlwZW5hbWUgYWNjZXNzX3RyYWl0czwKLSAgICAgICAgICAgICB0eXBlbmFtZSBlbGVtZW50PE4sIGNvbnM8SFQsIFRUPiA+Ojp0eXBlCi0gICAgICAgICAgID46Om5vbl9jb25zdF90eXBlCi0gIGdldCgpIHsKLSAgICByZXR1cm4gbmRuYm9vc3Q6OnR1cGxlczo6Z2V0PE4+KCp0aGlzKTsgLy8gZGVsZWdhdGUgdG8gbm9uLW1lbWJlciBnZXQKLSAgfQotCi0gIHRlbXBsYXRlIDxpbnQgTj4KLSAgdHlwZW5hbWUgYWNjZXNzX3RyYWl0czwKLSAgICAgICAgICAgICB0eXBlbmFtZSBlbGVtZW50PE4sIGNvbnM8SFQsIFRUPiA+Ojp0eXBlCi0gICAgICAgICAgID46OmNvbnN0X3R5cGUKLSAgZ2V0KCkgY29uc3QgewotICAgIHJldHVybiBuZG5ib29zdDo6dHVwbGVzOjpnZXQ8Tj4oKnRoaXMpOyAvLyBkZWxlZ2F0ZSB0byBub24tbWVtYmVyIGdldAotICB9Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgSFQ+Ci1zdHJ1Y3QgY29uczxIVCwgbnVsbF90eXBlPiB7Ci0KLSAgdHlwZWRlZiBIVCBoZWFkX3R5cGU7Ci0gIHR5cGVkZWYgbnVsbF90eXBlIHRhaWxfdHlwZTsKLSAgdHlwZWRlZiBjb25zPEhULCBudWxsX3R5cGU+IHNlbGZfdHlwZTsKLQotICB0eXBlZGVmIHR5cGVuYW1lCi0gICAgZGV0YWlsOjp3cmFwX25vbl9zdG9yZWFibGVfdHlwZTxoZWFkX3R5cGU+Ojp0eXBlIHN0b3JlZF9oZWFkX3R5cGU7Ci0gIHN0b3JlZF9oZWFkX3R5cGUgaGVhZDsKLQotICB0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPHN0b3JlZF9oZWFkX3R5cGU+Ojpub25fY29uc3RfdHlwZQotICBnZXRfaGVhZCgpIHsgcmV0dXJuIGhlYWQ7IH0KLQotICBudWxsX3R5cGUgZ2V0X3RhaWwoKSB7IHJldHVybiBudWxsX3R5cGUoKTsgfQotCi0gIHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8c3RvcmVkX2hlYWRfdHlwZT46OmNvbnN0X3R5cGUKLSAgZ2V0X2hlYWQoKSBjb25zdCB7IHJldHVybiBoZWFkOyB9Ci0KLSAgY29uc3QgbnVsbF90eXBlIGdldF90YWlsKCkgY29uc3QgeyByZXR1cm4gbnVsbF90eXBlKCk7IH0KLQotICAvLyAgY29ucygpIDogaGVhZChkZXRhaWw6OmRlZmF1bHRfYXJnPEhUPjo6ZigpKSB7fQotICBjb25zKCkgOiBoZWFkKCkge30KLQotICBjb25zKHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8c3RvcmVkX2hlYWRfdHlwZT46OnBhcmFtZXRlcl90eXBlIGgsCi0gICAgICAgY29uc3QgbnVsbF90eXBlJiA9IG51bGxfdHlwZSgpKQotICAgIDogaGVhZCAoaCkge30KLQotICB0ZW1wbGF0ZTxjbGFzcyBUMT4KLSAgY29ucyhUMSYgdDEsIGNvbnN0IG51bGxfdHlwZSYsIGNvbnN0IG51bGxfdHlwZSYsIGNvbnN0IG51bGxfdHlwZSYsCi0gICAgICAgY29uc3QgbnVsbF90eXBlJiwgY29uc3QgbnVsbF90eXBlJiwgY29uc3QgbnVsbF90eXBlJiwKLSAgICAgICBjb25zdCBudWxsX3R5cGUmLCBjb25zdCBudWxsX3R5cGUmLCBjb25zdCBudWxsX3R5cGUmKQotICA6IGhlYWQgKHQxKSB7fQotCi0gIGNvbnMoY29uc3QgbnVsbF90eXBlJiwKLSAgICAgICBjb25zdCBudWxsX3R5cGUmLCBjb25zdCBudWxsX3R5cGUmLCBjb25zdCBudWxsX3R5cGUmLAotICAgICAgIGNvbnN0IG51bGxfdHlwZSYsIGNvbnN0IG51bGxfdHlwZSYsIGNvbnN0IG51bGxfdHlwZSYsCi0gICAgICAgY29uc3QgbnVsbF90eXBlJiwgY29uc3QgbnVsbF90eXBlJiwgY29uc3QgbnVsbF90eXBlJikKLSAgOiBoZWFkICgpIHt9Ci0KLSAgdGVtcGxhdGUgPGNsYXNzIEhUMj4KLSAgY29ucyggY29uc3QgY29uczxIVDIsIG51bGxfdHlwZT4mIHUgKSA6IGhlYWQodS5oZWFkKSB7fQotCi0gIHRlbXBsYXRlIDxjbGFzcyBIVDI+Ci0gIGNvbnMmIG9wZXJhdG9yPShjb25zdCBjb25zPEhUMiwgbnVsbF90eXBlPiYgdSApCi0gIHsgaGVhZCA9IHUuaGVhZDsgcmV0dXJuICp0aGlzOyB9Ci0KLSAgLy8gbXVzdCBkZWZpbmUgYXNzaWdubWVudCBvcGVyYXRvciBleHBsaWNpdGVseSwgaW1wbGljaXQgdmVyc2lvbgotICAvLyBpcyBpbGxmb3JtZWQgaWYgSFQgaXMgYSByZWZlcmVuY2UKLSAgY29ucyYgb3BlcmF0b3I9KGNvbnN0IGNvbnMmIHUpIHsgaGVhZCA9IHUuaGVhZDsgcmV0dXJuICp0aGlzOyB9Ci0KLSAgdGVtcGxhdGUgPGludCBOPgotICB0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPAotICAgICAgICAgICAgIHR5cGVuYW1lIGVsZW1lbnQ8Tiwgc2VsZl90eXBlPjo6dHlwZQotICAgICAgICAgICAgPjo6bm9uX2NvbnN0X3R5cGUKLSAgZ2V0KE5ETkJPT1NUX0VYUExJQ0lUX1RFTVBMQVRFX05PTl9UWVBFKGludCwgTikpIHsKLSAgICByZXR1cm4gbmRuYm9vc3Q6OnR1cGxlczo6Z2V0PE4+KCp0aGlzKTsKLSAgfQotCi0gIHRlbXBsYXRlIDxpbnQgTj4KLSAgdHlwZW5hbWUgYWNjZXNzX3RyYWl0czwKLSAgICAgICAgICAgICB0eXBlbmFtZSBlbGVtZW50PE4sIHNlbGZfdHlwZT46OnR5cGUKLSAgICAgICAgICAgPjo6Y29uc3RfdHlwZQotICBnZXQoTkROQk9PU1RfRVhQTElDSVRfVEVNUExBVEVfTk9OX1RZUEUoaW50LCBOKSkgY29uc3QgewotICAgIHJldHVybiBuZG5ib29zdDo6dHVwbGVzOjpnZXQ8Tj4oKnRoaXMpOwotICB9Ci0KLX07Ci0KLS8vIHRlbXBsYXRlcyBmb3IgZmluZGluZyBvdXQgdGhlIGxlbmd0aCBvZiB0aGUgdHVwbGUgLS0tLS0tLS0tLS0tLS0tLS0tLQotCi10ZW1wbGF0ZTxjbGFzcyBUPgotc3RydWN0IGxlbmd0aCAgewotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSA9IDEgKyBsZW5ndGg8dHlwZW5hbWUgVDo6dGFpbF90eXBlPjo6dmFsdWUpOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxlbmd0aDx0dXBsZTw+ID4gewotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSA9IDApOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxlbmd0aDx0dXBsZTw+IGNvbnN0PiB7Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0gMCk7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbGVuZ3RoPG51bGxfdHlwZT4gewotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSA9IDApOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IGxlbmd0aDxudWxsX3R5cGUgY29uc3Q+IHsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPSAwKTsKLX07Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi0vLyBUdXBsZSB0byBjb25zIG1hcHBlciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotdGVtcGxhdGUgPGNsYXNzIFQwLCBjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFQzLCBjbGFzcyBUNCwKLSAgICAgICAgICBjbGFzcyBUNSwgY2xhc3MgVDYsIGNsYXNzIFQ3LCBjbGFzcyBUOCwgY2xhc3MgVDk+Ci1zdHJ1Y3QgbWFwX3R1cGxlX3RvX2NvbnMKLXsKLSAgdHlwZWRlZiBjb25zPFQwLAotICAgICAgICAgICAgICAgdHlwZW5hbWUgbWFwX3R1cGxlX3RvX2NvbnM8VDEsIFQyLCBUMywgVDQsIFQ1LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVDYsIFQ3LCBUOCwgVDksIG51bGxfdHlwZT46OnR5cGUKLSAgICAgICAgICAgICAgPiB0eXBlOwotfTsKLQotLy8gVGhlIGVtcHR5IHR1cGxlIGlzIGEgbnVsbF90eXBlCi10ZW1wbGF0ZSA8Pgotc3RydWN0IG1hcF90dXBsZV90b19jb25zPG51bGxfdHlwZSwgbnVsbF90eXBlLCBudWxsX3R5cGUsIG51bGxfdHlwZSwgbnVsbF90eXBlLCBudWxsX3R5cGUsIG51bGxfdHlwZSwgbnVsbF90eXBlLCBudWxsX3R5cGUsIG51bGxfdHlwZT4KLXsKLSAgdHlwZWRlZiBudWxsX3R5cGUgdHlwZTsKLX07Ci0KLX0gLy8gZW5kIGRldGFpbAotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyAtLSB0dXBsZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLXRlbXBsYXRlIDxjbGFzcyBUMCwgY2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBUMywgY2xhc3MgVDQsCi0gICAgICAgICAgY2xhc3MgVDUsIGNsYXNzIFQ2LCBjbGFzcyBUNywgY2xhc3MgVDgsIGNsYXNzIFQ5PgotCi1jbGFzcyB0dXBsZSA6Ci0gIHB1YmxpYyBkZXRhaWw6Om1hcF90dXBsZV90b19jb25zPFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5Pjo6dHlwZQotewotcHVibGljOgotICB0eXBlZGVmIHR5cGVuYW1lCi0gICAgZGV0YWlsOjptYXBfdHVwbGVfdG9fY29uczxUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOT46OnR5cGUgaW5oZXJpdGVkOwotICB0eXBlZGVmIHR5cGVuYW1lIGluaGVyaXRlZDo6aGVhZF90eXBlIGhlYWRfdHlwZTsKLSAgdHlwZWRlZiB0eXBlbmFtZSBpbmhlcml0ZWQ6OnRhaWxfdHlwZSB0YWlsX3R5cGU7Ci0KLQotLy8gYWNjZXNzX3RyYWl0czxUPjo6cGFyYW1ldGVyX3R5cGUgdGFrZXMgbm9uLXJlZmVyZW5jZSB0eXBlcyBhcyBjb25zdCBUJgotICB0dXBsZSgpIHt9Ci0KLSAgdHVwbGUodHlwZW5hbWUgYWNjZXNzX3RyYWl0czxUMD46OnBhcmFtZXRlcl90eXBlIHQwKQotICAgIDogaW5oZXJpdGVkKHQwLCBkZXRhaWw6OmNudWxsKCksIGRldGFpbDo6Y251bGwoKSwgZGV0YWlsOjpjbnVsbCgpLAotICAgICAgICAgICAgICAgIGRldGFpbDo6Y251bGwoKSwgZGV0YWlsOjpjbnVsbCgpLCBkZXRhaWw6OmNudWxsKCksCi0gICAgICAgICAgICAgICAgZGV0YWlsOjpjbnVsbCgpLCBkZXRhaWw6OmNudWxsKCksIGRldGFpbDo6Y251bGwoKSkge30KLQotICB0dXBsZSh0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPFQwPjo6cGFyYW1ldGVyX3R5cGUgdDAsCi0gICAgICAgIHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8VDE+OjpwYXJhbWV0ZXJfdHlwZSB0MSkKLSAgICA6IGluaGVyaXRlZCh0MCwgdDEsIGRldGFpbDo6Y251bGwoKSwgZGV0YWlsOjpjbnVsbCgpLAotICAgICAgICAgICAgICAgIGRldGFpbDo6Y251bGwoKSwgZGV0YWlsOjpjbnVsbCgpLCBkZXRhaWw6OmNudWxsKCksCi0gICAgICAgICAgICAgICAgZGV0YWlsOjpjbnVsbCgpLCBkZXRhaWw6OmNudWxsKCksIGRldGFpbDo6Y251bGwoKSkge30KLQotICB0dXBsZSh0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPFQwPjo6cGFyYW1ldGVyX3R5cGUgdDAsCi0gICAgICAgIHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8VDE+OjpwYXJhbWV0ZXJfdHlwZSB0MSwKLSAgICAgICAgdHlwZW5hbWUgYWNjZXNzX3RyYWl0czxUMj46OnBhcmFtZXRlcl90eXBlIHQyKQotICAgIDogaW5oZXJpdGVkKHQwLCB0MSwgdDIsIGRldGFpbDo6Y251bGwoKSwgZGV0YWlsOjpjbnVsbCgpLAotICAgICAgICAgICAgICAgIGRldGFpbDo6Y251bGwoKSwgZGV0YWlsOjpjbnVsbCgpLCBkZXRhaWw6OmNudWxsKCksCi0gICAgICAgICAgICAgICAgZGV0YWlsOjpjbnVsbCgpLCBkZXRhaWw6OmNudWxsKCkpIHt9Ci0KLSAgdHVwbGUodHlwZW5hbWUgYWNjZXNzX3RyYWl0czxUMD46OnBhcmFtZXRlcl90eXBlIHQwLAotICAgICAgICB0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPFQxPjo6cGFyYW1ldGVyX3R5cGUgdDEsCi0gICAgICAgIHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8VDI+OjpwYXJhbWV0ZXJfdHlwZSB0MiwKLSAgICAgICAgdHlwZW5hbWUgYWNjZXNzX3RyYWl0czxUMz46OnBhcmFtZXRlcl90eXBlIHQzKQotICAgIDogaW5oZXJpdGVkKHQwLCB0MSwgdDIsIHQzLCBkZXRhaWw6OmNudWxsKCksIGRldGFpbDo6Y251bGwoKSwKLSAgICAgICAgICAgICAgICBkZXRhaWw6OmNudWxsKCksIGRldGFpbDo6Y251bGwoKSwgZGV0YWlsOjpjbnVsbCgpLAotICAgICAgICAgICAgICAgIGRldGFpbDo6Y251bGwoKSkge30KLQotICB0dXBsZSh0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPFQwPjo6cGFyYW1ldGVyX3R5cGUgdDAsCi0gICAgICAgIHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8VDE+OjpwYXJhbWV0ZXJfdHlwZSB0MSwKLSAgICAgICAgdHlwZW5hbWUgYWNjZXNzX3RyYWl0czxUMj46OnBhcmFtZXRlcl90eXBlIHQyLAotICAgICAgICB0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPFQzPjo6cGFyYW1ldGVyX3R5cGUgdDMsCi0gICAgICAgIHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8VDQ+OjpwYXJhbWV0ZXJfdHlwZSB0NCkKLSAgICA6IGluaGVyaXRlZCh0MCwgdDEsIHQyLCB0MywgdDQsIGRldGFpbDo6Y251bGwoKSwgZGV0YWlsOjpjbnVsbCgpLAotICAgICAgICAgICAgICAgIGRldGFpbDo6Y251bGwoKSwgZGV0YWlsOjpjbnVsbCgpLCBkZXRhaWw6OmNudWxsKCkpIHt9Ci0KLSAgdHVwbGUodHlwZW5hbWUgYWNjZXNzX3RyYWl0czxUMD46OnBhcmFtZXRlcl90eXBlIHQwLAotICAgICAgICB0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPFQxPjo6cGFyYW1ldGVyX3R5cGUgdDEsCi0gICAgICAgIHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8VDI+OjpwYXJhbWV0ZXJfdHlwZSB0MiwKLSAgICAgICAgdHlwZW5hbWUgYWNjZXNzX3RyYWl0czxUMz46OnBhcmFtZXRlcl90eXBlIHQzLAotICAgICAgICB0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPFQ0Pjo6cGFyYW1ldGVyX3R5cGUgdDQsCi0gICAgICAgIHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8VDU+OjpwYXJhbWV0ZXJfdHlwZSB0NSkKLSAgICA6IGluaGVyaXRlZCh0MCwgdDEsIHQyLCB0MywgdDQsIHQ1LCBkZXRhaWw6OmNudWxsKCksIGRldGFpbDo6Y251bGwoKSwKLSAgICAgICAgICAgICAgICBkZXRhaWw6OmNudWxsKCksIGRldGFpbDo6Y251bGwoKSkge30KLQotICB0dXBsZSh0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPFQwPjo6cGFyYW1ldGVyX3R5cGUgdDAsCi0gICAgICAgIHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8VDE+OjpwYXJhbWV0ZXJfdHlwZSB0MSwKLSAgICAgICAgdHlwZW5hbWUgYWNjZXNzX3RyYWl0czxUMj46OnBhcmFtZXRlcl90eXBlIHQyLAotICAgICAgICB0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPFQzPjo6cGFyYW1ldGVyX3R5cGUgdDMsCi0gICAgICAgIHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8VDQ+OjpwYXJhbWV0ZXJfdHlwZSB0NCwKLSAgICAgICAgdHlwZW5hbWUgYWNjZXNzX3RyYWl0czxUNT46OnBhcmFtZXRlcl90eXBlIHQ1LAotICAgICAgICB0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPFQ2Pjo6cGFyYW1ldGVyX3R5cGUgdDYpCi0gICAgOiBpbmhlcml0ZWQodDAsIHQxLCB0MiwgdDMsIHQ0LCB0NSwgdDYsIGRldGFpbDo6Y251bGwoKSwKLSAgICAgICAgICAgICAgICBkZXRhaWw6OmNudWxsKCksIGRldGFpbDo6Y251bGwoKSkge30KLQotICB0dXBsZSh0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPFQwPjo6cGFyYW1ldGVyX3R5cGUgdDAsCi0gICAgICAgIHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8VDE+OjpwYXJhbWV0ZXJfdHlwZSB0MSwKLSAgICAgICAgdHlwZW5hbWUgYWNjZXNzX3RyYWl0czxUMj46OnBhcmFtZXRlcl90eXBlIHQyLAotICAgICAgICB0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPFQzPjo6cGFyYW1ldGVyX3R5cGUgdDMsCi0gICAgICAgIHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8VDQ+OjpwYXJhbWV0ZXJfdHlwZSB0NCwKLSAgICAgICAgdHlwZW5hbWUgYWNjZXNzX3RyYWl0czxUNT46OnBhcmFtZXRlcl90eXBlIHQ1LAotICAgICAgICB0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPFQ2Pjo6cGFyYW1ldGVyX3R5cGUgdDYsCi0gICAgICAgIHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8VDc+OjpwYXJhbWV0ZXJfdHlwZSB0NykKLSAgICA6IGluaGVyaXRlZCh0MCwgdDEsIHQyLCB0MywgdDQsIHQ1LCB0NiwgdDcsIGRldGFpbDo6Y251bGwoKSwKLSAgICAgICAgICAgICAgICBkZXRhaWw6OmNudWxsKCkpIHt9Ci0KLSAgdHVwbGUodHlwZW5hbWUgYWNjZXNzX3RyYWl0czxUMD46OnBhcmFtZXRlcl90eXBlIHQwLAotICAgICAgICB0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPFQxPjo6cGFyYW1ldGVyX3R5cGUgdDEsCi0gICAgICAgIHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8VDI+OjpwYXJhbWV0ZXJfdHlwZSB0MiwKLSAgICAgICAgdHlwZW5hbWUgYWNjZXNzX3RyYWl0czxUMz46OnBhcmFtZXRlcl90eXBlIHQzLAotICAgICAgICB0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPFQ0Pjo6cGFyYW1ldGVyX3R5cGUgdDQsCi0gICAgICAgIHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8VDU+OjpwYXJhbWV0ZXJfdHlwZSB0NSwKLSAgICAgICAgdHlwZW5hbWUgYWNjZXNzX3RyYWl0czxUNj46OnBhcmFtZXRlcl90eXBlIHQ2LAotICAgICAgICB0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPFQ3Pjo6cGFyYW1ldGVyX3R5cGUgdDcsCi0gICAgICAgIHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8VDg+OjpwYXJhbWV0ZXJfdHlwZSB0OCkKLSAgICA6IGluaGVyaXRlZCh0MCwgdDEsIHQyLCB0MywgdDQsIHQ1LCB0NiwgdDcsIHQ4LCBkZXRhaWw6OmNudWxsKCkpIHt9Ci0KLSAgdHVwbGUodHlwZW5hbWUgYWNjZXNzX3RyYWl0czxUMD46OnBhcmFtZXRlcl90eXBlIHQwLAotICAgICAgICB0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPFQxPjo6cGFyYW1ldGVyX3R5cGUgdDEsCi0gICAgICAgIHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8VDI+OjpwYXJhbWV0ZXJfdHlwZSB0MiwKLSAgICAgICAgdHlwZW5hbWUgYWNjZXNzX3RyYWl0czxUMz46OnBhcmFtZXRlcl90eXBlIHQzLAotICAgICAgICB0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPFQ0Pjo6cGFyYW1ldGVyX3R5cGUgdDQsCi0gICAgICAgIHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8VDU+OjpwYXJhbWV0ZXJfdHlwZSB0NSwKLSAgICAgICAgdHlwZW5hbWUgYWNjZXNzX3RyYWl0czxUNj46OnBhcmFtZXRlcl90eXBlIHQ2LAotICAgICAgICB0eXBlbmFtZSBhY2Nlc3NfdHJhaXRzPFQ3Pjo6cGFyYW1ldGVyX3R5cGUgdDcsCi0gICAgICAgIHR5cGVuYW1lIGFjY2Vzc190cmFpdHM8VDg+OjpwYXJhbWV0ZXJfdHlwZSB0OCwKLSAgICAgICAgdHlwZW5hbWUgYWNjZXNzX3RyYWl0czxUOT46OnBhcmFtZXRlcl90eXBlIHQ5KQotICAgIDogaW5oZXJpdGVkKHQwLCB0MSwgdDIsIHQzLCB0NCwgdDUsIHQ2LCB0NywgdDgsIHQ5KSB7fQotCi0KLSAgdGVtcGxhdGU8Y2xhc3MgVTEsIGNsYXNzIFUyPgotICB0dXBsZShjb25zdCBjb25zPFUxLCBVMj4mIHApIDogaW5oZXJpdGVkKHApIHt9Ci0KLSAgdGVtcGxhdGUgPGNsYXNzIFUxLCBjbGFzcyBVMj4KLSAgdHVwbGUmIG9wZXJhdG9yPShjb25zdCBjb25zPFUxLCBVMj4mIGspIHsKLSAgICBpbmhlcml0ZWQ6Om9wZXJhdG9yPShrKTsKLSAgICByZXR1cm4gKnRoaXM7Ci0gIH0KLQotICB0ZW1wbGF0ZSA8Y2xhc3MgVTEsIGNsYXNzIFUyPgotICB0dXBsZSYgb3BlcmF0b3I9KGNvbnN0IHN0ZDo6cGFpcjxVMSwgVTI+JiBrKSB7Ci0gICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVChsZW5ndGg8dHVwbGU+Ojp2YWx1ZSA9PSAyKTsvLyBjaGVja19sZW5ndGggPSAyCi0gICAgdGhpcy0+aGVhZCA9IGsuZmlyc3Q7Ci0gICAgdGhpcy0+dGFpbC5oZWFkID0gay5zZWNvbmQ7Ci0gICAgcmV0dXJuICp0aGlzOwotICB9Ci0KLX07Ci0KLS8vIFRoZSBlbXB0eSB0dXBsZQotdGVtcGxhdGUgPD4KLWNsYXNzIHR1cGxlPG51bGxfdHlwZSwgbnVsbF90eXBlLCBudWxsX3R5cGUsIG51bGxfdHlwZSwgbnVsbF90eXBlLCBudWxsX3R5cGUsIG51bGxfdHlwZSwgbnVsbF90eXBlLCBudWxsX3R5cGUsIG51bGxfdHlwZT4gIDoKLSAgcHVibGljIG51bGxfdHlwZQotewotcHVibGljOgotICB0eXBlZGVmIG51bGxfdHlwZSBpbmhlcml0ZWQ7Ci19OwotCi0KLS8vIFN3YWxsb3dzIGFueSBhc3NpZ25tZW50ICAgKGJ5IERvdWcgR3JlZ29yKQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXN0cnVjdCBzd2FsbG93X2Fzc2lnbjsKLXR5cGVkZWYgdm9pZCAoZGV0YWlsOjpzd2FsbG93X2Fzc2lnbjo6Kmlnbm9yZV90KSgpOwotc3RydWN0IHN3YWxsb3dfYXNzaWduIHsKLSAgc3dhbGxvd19hc3NpZ24oaWdub3JlX3QoKikoaWdub3JlX3QpKSB7fQotICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICBzd2FsbG93X2Fzc2lnbiBjb25zdCYgb3BlcmF0b3I9KGNvbnN0IFQmKSBjb25zdCB7Ci0gICAgcmV0dXJuICp0aGlzOwotICB9Ci19OwotCi0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi0vLyAiaWdub3JlIiBhbGxvd3MgdHVwbGUgcG9zaXRpb25zIHRvIGJlIGlnbm9yZWQgd2hlbiB1c2luZyAidGllIi4KLWlubGluZSBkZXRhaWw6Omlnbm9yZV90IGlnbm9yZShkZXRhaWw6Omlnbm9yZV90KSB7IHJldHVybiAwOyB9Ci0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gVGhlIGNhbGxfdHJhaXRzIGZvciBtYWtlX3R1cGxlCi0vLyBIb25vdXJzIHRoZSByZWZlcmVuY2Vfd3JhcHBlciBjbGFzcy4KLQotLy8gTXVzdCBiZSBpbnN0YW50aWF0ZWQgd2l0aCBwbGFpbiBvciBjb25zdCBwbGFpbiB0eXBlcyAobm90IHdpdGggcmVmZXJlbmNlcykKLQotLy8gZnJvbSB0ZW1wbGF0ZTxjbGFzcyBUPiBmb28oY29uc3QgVCYgdCkgOiBtYWtlX3R1cGxlX3RyYWl0czxjb25zdCBUPjo6dHlwZQotLy8gZnJvbSB0ZW1wbGF0ZTxjbGFzcyBUPiBmb28oVCYgdCkgOiBtYWtlX3R1cGxlX3RyYWl0czxUPjo6dHlwZQotCi0vLyBDb252ZXJzaW9uczoKLS8vIFQgLT4gVCwKLS8vIHJlZmVyZW5jZXMgLT4gY29tcGlsZV90aW1lX2Vycm9yCi0vLyByZWZlcmVuY2Vfd3JhcHBlcjxUPiAtPiBUJgotLy8gY29uc3QgcmVmZXJlbmNlX3dyYXBwZXI8VD4gLT4gVCYKLS8vIGFycmF5IC0+IGNvbnN0IHJlZiBhcnJheQotCi0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1zdHJ1Y3QgbWFrZV90dXBsZV90cmFpdHMgewotICB0eXBlZGVmIFQgdHlwZTsKLQotICAvLyBjb21tZW50ZWQgYXdheSwgc2VlIGJlbG93ICAoSkopCi0gIC8vICB0eXBlZGVmIHR5cGVuYW1lIElGPAotICAvLyAgbmRuYm9vc3Q6OmlzX2Z1bmN0aW9uPFQ+Ojp2YWx1ZSwKLSAgLy8gIFQmLAotICAvLyAgVD46OlJFVCB0eXBlOwotCi19OwotCi0vLyBUaGUgaXNfZnVuY3Rpb24gdGVzdCB3YXMgdGhlcmUgb3JpZ2luYWxseSBmb3IgcGxhaW4gZnVuY3Rpb24gdHlwZXMsCi0vLyB3aGljaCBjYW4ndCBiZSBzdG9yZWQgYXMgc3VjaCAod2UgbXVzdCBlaXRoZXIgc3RvcmUgdGhlbSBhcyByZWZlcmVuY2VzIG9yCi0vLyBwb2ludGVycykuIFN1Y2ggYSB0eXBlIGNvdWxkIGJlIGZvcm1lZCBpZiBtYWtlX3R1cGxlIHdhcyBjYWxsZWQgd2l0aCBhCi0vLyByZWZlcmVuY2UgdG8gYSBmdW5jdGlvbi4KLS8vIEJ1dCB0aGlzIHdvdWxkIG1lYW4gdGhhdCBhIGNvbnN0IHF1YWxpZmllZCBmdW5jdGlvbiB0eXBlIHdhcyBmb3JtZWQgaW4KLS8vIHRoZSBtYWtlX3R1cGxlIGZ1bmN0aW9uIGFuZCBoZW5jZSBtYWtlX3R1cGxlIGNhbid0IHRha2UgYSBmdW5jdGlvbgotLy8gcmVmZXJlbmNlIGFzIGEgcGFyYW1ldGVyLCBhbmQgdGh1cyBUIGNhbid0IGJlIGEgZnVuY3Rpb24gdHlwZS4KLS8vIFNvIGlzX2Z1bmN0aW9uIHRlc3Qgd2FzIHJlbW92ZWQuCi0vLyAoMTQuOC4zLiBzYXlzIHRoYXQgdHlwZSBkZWR1Y3Rpb24gZmFpbHMgaWYgYSBjdi1xdWFsaWZpZWQgZnVuY3Rpb24gdHlwZQotLy8gaXMgY3JlYXRlZC4gKEl0IG9ubHkgYXBwbGllcyBmb3IgdGhlIGNhc2Ugb2YgZXhwbGljaXRseSBzcGVjaWZ5aW5nIHRlbXBsYXRlCi0vLyBhcmdzLCB0aG91Z2g/KSkgKEpKKQotCi10ZW1wbGF0ZTxjbGFzcyBUPgotc3RydWN0IG1ha2VfdHVwbGVfdHJhaXRzPFQmPiB7Ci0gIHR5cGVkZWYgdHlwZW5hbWUKLSAgICAgZGV0YWlsOjpnZW5lcmF0ZV9lcnJvcjxUJj46OgotICAgICAgIGRvX25vdF91c2Vfd2l0aF9yZWZlcmVuY2VfdHlwZSBlcnJvcjsKLX07Ci0KLS8vIEFycmF5cyBjYW4ndCBiZSBzdG9yZWQgYXMgcGxhaW4gdHlwZXM7IGNvbnZlcnQgdGhlbSB0byByZWZlcmVuY2VzLgotLy8gQWxsIGFycmF5cyBhcmUgY29udmVydGVkIHRvIGNvbnN0LiBUaGlzIGlzIGJlY2F1c2UgbWFrZV90dXBsZSB0YWtlcyBpdHMKLS8vIHBhcmFtZXRlcnMgYXMgY29uc3QgVCYgYW5kIHRodXMgdGhlIGtub3dsZWRnZSBvZiB0aGUgcG90ZW50aWFsCi0vLyBub24tY29uc3RuZXNzIG9mIGFjdHVhbCBhcmd1bWVudCBpcyBsb3N0LgotdGVtcGxhdGU8Y2xhc3MgVCwgaW50IG4+ICBzdHJ1Y3QgbWFrZV90dXBsZV90cmFpdHMgPFRbbl0+IHsKLSAgdHlwZWRlZiBjb25zdCBUICgmdHlwZSlbbl07Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBULCBpbnQgbj4KLXN0cnVjdCBtYWtlX3R1cGxlX3RyYWl0czxjb25zdCBUW25dPiB7Ci0gIHR5cGVkZWYgY29uc3QgVCAoJnR5cGUpW25dOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgVCwgaW50IG4+ICBzdHJ1Y3QgbWFrZV90dXBsZV90cmFpdHM8dm9sYXRpbGUgVFtuXT4gewotICB0eXBlZGVmIGNvbnN0IHZvbGF0aWxlIFQgKCZ0eXBlKVtuXTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFQsIGludCBuPgotc3RydWN0IG1ha2VfdHVwbGVfdHJhaXRzPGNvbnN0IHZvbGF0aWxlIFRbbl0+IHsKLSAgdHlwZWRlZiBjb25zdCB2b2xhdGlsZSBUICgmdHlwZSlbbl07Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBUPgotc3RydWN0IG1ha2VfdHVwbGVfdHJhaXRzPHJlZmVyZW5jZV93cmFwcGVyPFQ+ID57Ci0gIHR5cGVkZWYgVCYgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1zdHJ1Y3QgbWFrZV90dXBsZV90cmFpdHM8Y29uc3QgcmVmZXJlbmNlX3dyYXBwZXI8VD4gPnsKLSAgdHlwZWRlZiBUJiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IG1ha2VfdHVwbGVfdHJhaXRzPGRldGFpbDo6aWdub3JlX3QoZGV0YWlsOjppZ25vcmVfdCk+IHsKLSAgdHlwZWRlZiBkZXRhaWw6OnN3YWxsb3dfYXNzaWduIHR5cGU7Ci19OwotCi0KLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLS8vIGEgaGVscGVyIHRyYWl0cyB0byBtYWtlIHRoZSBtYWtlX3R1cGxlIGZ1bmN0aW9ucyBzaG9ydGVyIChWZXNhIEthcnZvbmVuJ3MKLS8vIHN1Z2dlc3Rpb24pCi10ZW1wbGF0ZSA8Ci0gIGNsYXNzIFQwID0gbnVsbF90eXBlLCBjbGFzcyBUMSA9IG51bGxfdHlwZSwgY2xhc3MgVDIgPSBudWxsX3R5cGUsCi0gIGNsYXNzIFQzID0gbnVsbF90eXBlLCBjbGFzcyBUNCA9IG51bGxfdHlwZSwgY2xhc3MgVDUgPSBudWxsX3R5cGUsCi0gIGNsYXNzIFQ2ID0gbnVsbF90eXBlLCBjbGFzcyBUNyA9IG51bGxfdHlwZSwgY2xhc3MgVDggPSBudWxsX3R5cGUsCi0gIGNsYXNzIFQ5ID0gbnVsbF90eXBlCi0+Ci1zdHJ1Y3QgbWFrZV90dXBsZV9tYXBwZXIgewotICB0eXBlZGVmCi0gICAgdHVwbGU8dHlwZW5hbWUgbWFrZV90dXBsZV90cmFpdHM8VDA+Ojp0eXBlLAotICAgICAgICAgIHR5cGVuYW1lIG1ha2VfdHVwbGVfdHJhaXRzPFQxPjo6dHlwZSwKLSAgICAgICAgICB0eXBlbmFtZSBtYWtlX3R1cGxlX3RyYWl0czxUMj46OnR5cGUsCi0gICAgICAgICAgdHlwZW5hbWUgbWFrZV90dXBsZV90cmFpdHM8VDM+Ojp0eXBlLAotICAgICAgICAgIHR5cGVuYW1lIG1ha2VfdHVwbGVfdHJhaXRzPFQ0Pjo6dHlwZSwKLSAgICAgICAgICB0eXBlbmFtZSBtYWtlX3R1cGxlX3RyYWl0czxUNT46OnR5cGUsCi0gICAgICAgICAgdHlwZW5hbWUgbWFrZV90dXBsZV90cmFpdHM8VDY+Ojp0eXBlLAotICAgICAgICAgIHR5cGVuYW1lIG1ha2VfdHVwbGVfdHJhaXRzPFQ3Pjo6dHlwZSwKLSAgICAgICAgICB0eXBlbmFtZSBtYWtlX3R1cGxlX3RyYWl0czxUOD46OnR5cGUsCi0gICAgICAgICAgdHlwZW5hbWUgbWFrZV90dXBsZV90cmFpdHM8VDk+Ojp0eXBlPiB0eXBlOwotfTsKLQotfSAvLyBlbmQgZGV0YWlsCi0KLS8vIC1tYWtlX3R1cGxlIGZ1bmN0aW9uIHRlbXBsYXRlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotaW5saW5lIHR1cGxlPD4gbWFrZV90dXBsZSgpIHsKLSAgcmV0dXJuIHR1cGxlPD4oKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVDA+Ci1pbmxpbmUgdHlwZW5hbWUgZGV0YWlsOjptYWtlX3R1cGxlX21hcHBlcjxUMD46OnR5cGUKLW1ha2VfdHVwbGUoY29uc3QgVDAmIHQwKSB7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjptYWtlX3R1cGxlX21hcHBlcjxUMD46OnR5cGUgdDsKLSAgcmV0dXJuIHQodDApOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUMCwgY2xhc3MgVDE+Ci1pbmxpbmUgdHlwZW5hbWUgZGV0YWlsOjptYWtlX3R1cGxlX21hcHBlcjxUMCwgVDE+Ojp0eXBlCi1tYWtlX3R1cGxlKGNvbnN0IFQwJiB0MCwgY29uc3QgVDEmIHQxKSB7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjptYWtlX3R1cGxlX21hcHBlcjxUMCwgVDE+Ojp0eXBlIHQ7Ci0gIHJldHVybiB0KHQwLCB0MSk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQwLCBjbGFzcyBUMSwgY2xhc3MgVDI+Ci1pbmxpbmUgdHlwZW5hbWUgZGV0YWlsOjptYWtlX3R1cGxlX21hcHBlcjxUMCwgVDEsIFQyPjo6dHlwZQotbWFrZV90dXBsZShjb25zdCBUMCYgdDAsIGNvbnN0IFQxJiB0MSwgY29uc3QgVDImIHQyKSB7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjptYWtlX3R1cGxlX21hcHBlcjxUMCwgVDEsIFQyPjo6dHlwZSB0OwotICByZXR1cm4gdCh0MCwgdDEsIHQyKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVDAsIGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgVDM+Ci1pbmxpbmUgdHlwZW5hbWUgZGV0YWlsOjptYWtlX3R1cGxlX21hcHBlcjxUMCwgVDEsIFQyLCBUMz46OnR5cGUKLW1ha2VfdHVwbGUoY29uc3QgVDAmIHQwLCBjb25zdCBUMSYgdDEsIGNvbnN0IFQyJiB0MiwgY29uc3QgVDMmIHQzKSB7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjptYWtlX3R1cGxlX21hcHBlcjxUMCwgVDEsIFQyLCBUMz46OnR5cGUgdDsKLSAgcmV0dXJuIHQodDAsIHQxLCB0MiwgdDMpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUMCwgY2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBUMywgY2xhc3MgVDQ+Ci1pbmxpbmUgdHlwZW5hbWUgZGV0YWlsOjptYWtlX3R1cGxlX21hcHBlcjxUMCwgVDEsIFQyLCBUMywgVDQ+Ojp0eXBlCi1tYWtlX3R1cGxlKGNvbnN0IFQwJiB0MCwgY29uc3QgVDEmIHQxLCBjb25zdCBUMiYgdDIsIGNvbnN0IFQzJiB0MywKLSAgICAgICAgICAgICAgICAgIGNvbnN0IFQ0JiB0NCkgewotICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6bWFrZV90dXBsZV9tYXBwZXI8VDAsIFQxLCBUMiwgVDMsIFQ0Pjo6dHlwZSB0OwotICByZXR1cm4gdCh0MCwgdDEsIHQyLCB0MywgdDQpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUMCwgY2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBUMywgY2xhc3MgVDQsIGNsYXNzIFQ1PgotaW5saW5lIHR5cGVuYW1lIGRldGFpbDo6bWFrZV90dXBsZV9tYXBwZXI8VDAsIFQxLCBUMiwgVDMsIFQ0LCBUNT46OnR5cGUKLW1ha2VfdHVwbGUoY29uc3QgVDAmIHQwLCBjb25zdCBUMSYgdDEsIGNvbnN0IFQyJiB0MiwgY29uc3QgVDMmIHQzLAotICAgICAgICAgICAgICAgICAgY29uc3QgVDQmIHQ0LCBjb25zdCBUNSYgdDUpIHsKLSAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Om1ha2VfdHVwbGVfbWFwcGVyPFQwLCBUMSwgVDIsIFQzLCBUNCwgVDU+Ojp0eXBlIHQ7Ci0gIHJldHVybiB0KHQwLCB0MSwgdDIsIHQzLCB0NCwgdDUpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUMCwgY2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBUMywgY2xhc3MgVDQsIGNsYXNzIFQ1LCBjbGFzcyBUNj4KLWlubGluZSB0eXBlbmFtZSBkZXRhaWw6Om1ha2VfdHVwbGVfbWFwcGVyPFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2Pjo6dHlwZQotbWFrZV90dXBsZShjb25zdCBUMCYgdDAsIGNvbnN0IFQxJiB0MSwgY29uc3QgVDImIHQyLCBjb25zdCBUMyYgdDMsCi0gICAgICAgICAgICAgICAgICBjb25zdCBUNCYgdDQsIGNvbnN0IFQ1JiB0NSwgY29uc3QgVDYmIHQ2KSB7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjptYWtlX3R1cGxlX21hcHBlcgotICAgICAgICAgICA8VDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDY+Ojp0eXBlIHQ7Ci0gIHJldHVybiB0KHQwLCB0MSwgdDIsIHQzLCB0NCwgdDUsIHQ2KTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVDAsIGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgVDMsIGNsYXNzIFQ0LCBjbGFzcyBUNSwgY2xhc3MgVDYsCi0gICAgICAgICBjbGFzcyBUNz4KLWlubGluZSB0eXBlbmFtZSBkZXRhaWw6Om1ha2VfdHVwbGVfbWFwcGVyPFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNz46OnR5cGUKLW1ha2VfdHVwbGUoY29uc3QgVDAmIHQwLCBjb25zdCBUMSYgdDEsIGNvbnN0IFQyJiB0MiwgY29uc3QgVDMmIHQzLAotICAgICAgICAgICAgICAgICAgY29uc3QgVDQmIHQ0LCBjb25zdCBUNSYgdDUsIGNvbnN0IFQ2JiB0NiwgY29uc3QgVDcmIHQ3KSB7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjptYWtlX3R1cGxlX21hcHBlcgotICAgICAgICAgICA8VDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3Pjo6dHlwZSB0OwotICByZXR1cm4gdCh0MCwgdDEsIHQyLCB0MywgdDQsIHQ1LCB0NiwgdDcpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUMCwgY2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBUMywgY2xhc3MgVDQsIGNsYXNzIFQ1LCBjbGFzcyBUNiwKLSAgICAgICAgIGNsYXNzIFQ3LCBjbGFzcyBUOD4KLWlubGluZSB0eXBlbmFtZSBkZXRhaWw6Om1ha2VfdHVwbGVfbWFwcGVyCi0gIDxUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4Pjo6dHlwZQotbWFrZV90dXBsZShjb25zdCBUMCYgdDAsIGNvbnN0IFQxJiB0MSwgY29uc3QgVDImIHQyLCBjb25zdCBUMyYgdDMsCi0gICAgICAgICAgICAgICAgICBjb25zdCBUNCYgdDQsIGNvbnN0IFQ1JiB0NSwgY29uc3QgVDYmIHQ2LCBjb25zdCBUNyYgdDcsCi0gICAgICAgICAgICAgICAgICBjb25zdCBUOCYgdDgpIHsKLSAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6Om1ha2VfdHVwbGVfbWFwcGVyCi0gICAgICAgICAgIDxUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4Pjo6dHlwZSB0OwotICByZXR1cm4gdCh0MCwgdDEsIHQyLCB0MywgdDQsIHQ1LCB0NiwgdDcsIHQ4KTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVDAsIGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgVDMsIGNsYXNzIFQ0LCBjbGFzcyBUNSwgY2xhc3MgVDYsCi0gICAgICAgICBjbGFzcyBUNywgY2xhc3MgVDgsIGNsYXNzIFQ5PgotaW5saW5lIHR5cGVuYW1lIGRldGFpbDo6bWFrZV90dXBsZV9tYXBwZXIKLSAgPFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5Pjo6dHlwZQotbWFrZV90dXBsZShjb25zdCBUMCYgdDAsIGNvbnN0IFQxJiB0MSwgY29uc3QgVDImIHQyLCBjb25zdCBUMyYgdDMsCi0gICAgICAgICAgICAgICAgICBjb25zdCBUNCYgdDQsIGNvbnN0IFQ1JiB0NSwgY29uc3QgVDYmIHQ2LCBjb25zdCBUNyYgdDcsCi0gICAgICAgICAgICAgICAgICBjb25zdCBUOCYgdDgsIGNvbnN0IFQ5JiB0OSkgewotICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6bWFrZV90dXBsZV9tYXBwZXIKLSAgICAgICAgICAgPFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5Pjo6dHlwZSB0OwotICByZXR1cm4gdCh0MCwgdDEsIHQyLCB0MywgdDQsIHQ1LCB0NiwgdDcsIHQ4LCB0OSk7Ci19Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZTxjbGFzcyBUPgotc3RydWN0IHRpZV90cmFpdHMgewotICB0eXBlZGVmIFQmIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgdGllX3RyYWl0czxpZ25vcmVfdChpZ25vcmVfdCk+IHsKLSAgdHlwZWRlZiBzd2FsbG93X2Fzc2lnbiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Pgotc3RydWN0IHRpZV90cmFpdHM8dm9pZD4gewotICB0eXBlZGVmIG51bGxfdHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGUgPAotICBjbGFzcyBUMCA9IHZvaWQsIGNsYXNzIFQxID0gdm9pZCwgY2xhc3MgVDIgPSB2b2lkLAotICBjbGFzcyBUMyA9IHZvaWQsIGNsYXNzIFQ0ID0gdm9pZCwgY2xhc3MgVDUgPSB2b2lkLAotICBjbGFzcyBUNiA9IHZvaWQsIGNsYXNzIFQ3ID0gdm9pZCwgY2xhc3MgVDggPSB2b2lkLAotICBjbGFzcyBUOSA9IHZvaWQKLT4KLXN0cnVjdCB0aWVfbWFwcGVyIHsKLSAgdHlwZWRlZgotICAgIHR1cGxlPHR5cGVuYW1lIHRpZV90cmFpdHM8VDA+Ojp0eXBlLAotICAgICAgICAgIHR5cGVuYW1lIHRpZV90cmFpdHM8VDE+Ojp0eXBlLAotICAgICAgICAgIHR5cGVuYW1lIHRpZV90cmFpdHM8VDI+Ojp0eXBlLAotICAgICAgICAgIHR5cGVuYW1lIHRpZV90cmFpdHM8VDM+Ojp0eXBlLAotICAgICAgICAgIHR5cGVuYW1lIHRpZV90cmFpdHM8VDQ+Ojp0eXBlLAotICAgICAgICAgIHR5cGVuYW1lIHRpZV90cmFpdHM8VDU+Ojp0eXBlLAotICAgICAgICAgIHR5cGVuYW1lIHRpZV90cmFpdHM8VDY+Ojp0eXBlLAotICAgICAgICAgIHR5cGVuYW1lIHRpZV90cmFpdHM8VDc+Ojp0eXBlLAotICAgICAgICAgIHR5cGVuYW1lIHRpZV90cmFpdHM8VDg+Ojp0eXBlLAotICAgICAgICAgIHR5cGVuYW1lIHRpZV90cmFpdHM8VDk+Ojp0eXBlPiB0eXBlOwotfTsKLQotfQotCi0vLyBUaWUgZnVuY3Rpb24gdGVtcGxhdGVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLXRlbXBsYXRlPGNsYXNzIFQwPgotaW5saW5lIHR5cGVuYW1lIGRldGFpbDo6dGllX21hcHBlcjxUMD46OnR5cGUKLXRpZShUMCYgdDApIHsKLSAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OnRpZV9tYXBwZXI8VDA+Ojp0eXBlIHQ7Ci0gIHJldHVybiB0KHQwKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVDAsIGNsYXNzIFQxPgotaW5saW5lIHR5cGVuYW1lIGRldGFpbDo6dGllX21hcHBlcjxUMCwgVDE+Ojp0eXBlCi10aWUoVDAmIHQwLCBUMSYgdDEpIHsKLSAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OnRpZV9tYXBwZXI8VDAsIFQxPjo6dHlwZSB0OwotICByZXR1cm4gdCh0MCwgdDEpOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUMCwgY2xhc3MgVDEsIGNsYXNzIFQyPgotaW5saW5lIHR5cGVuYW1lIGRldGFpbDo6dGllX21hcHBlcjxUMCwgVDEsIFQyPjo6dHlwZQotdGllKFQwJiB0MCwgVDEmIHQxLCBUMiYgdDIpIHsKLSAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OnRpZV9tYXBwZXI8VDAsIFQxLCBUMj46OnR5cGUgdDsKLSAgcmV0dXJuIHQodDAsIHQxLCB0Mik7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQwLCBjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFQzPgotaW5saW5lIHR5cGVuYW1lIGRldGFpbDo6dGllX21hcHBlcjxUMCwgVDEsIFQyLCBUMz46OnR5cGUKLXRpZShUMCYgdDAsIFQxJiB0MSwgVDImIHQyLCBUMyYgdDMpIHsKLSAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OnRpZV9tYXBwZXI8VDAsIFQxLCBUMiwgVDM+Ojp0eXBlIHQ7Ci0gIHJldHVybiB0KHQwLCB0MSwgdDIsIHQzKTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVDAsIGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgVDMsIGNsYXNzIFQ0PgotaW5saW5lIHR5cGVuYW1lIGRldGFpbDo6dGllX21hcHBlcjxUMCwgVDEsIFQyLCBUMywgVDQ+Ojp0eXBlCi10aWUoVDAmIHQwLCBUMSYgdDEsIFQyJiB0MiwgVDMmIHQzLAotICAgICAgICAgICAgICAgICAgVDQmIHQ0KSB7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjp0aWVfbWFwcGVyPFQwLCBUMSwgVDIsIFQzLCBUND46OnR5cGUgdDsKLSAgcmV0dXJuIHQodDAsIHQxLCB0MiwgdDMsIHQ0KTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVDAsIGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgVDMsIGNsYXNzIFQ0LCBjbGFzcyBUNT4KLWlubGluZSB0eXBlbmFtZSBkZXRhaWw6OnRpZV9tYXBwZXI8VDAsIFQxLCBUMiwgVDMsIFQ0LCBUNT46OnR5cGUKLXRpZShUMCYgdDAsIFQxJiB0MSwgVDImIHQyLCBUMyYgdDMsCi0gICAgICAgICAgICAgICAgICBUNCYgdDQsIFQ1JiB0NSkgewotICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6dGllX21hcHBlcjxUMCwgVDEsIFQyLCBUMywgVDQsIFQ1Pjo6dHlwZSB0OwotICByZXR1cm4gdCh0MCwgdDEsIHQyLCB0MywgdDQsIHQ1KTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVDAsIGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgVDMsIGNsYXNzIFQ0LCBjbGFzcyBUNSwgY2xhc3MgVDY+Ci1pbmxpbmUgdHlwZW5hbWUgZGV0YWlsOjp0aWVfbWFwcGVyPFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2Pjo6dHlwZQotdGllKFQwJiB0MCwgVDEmIHQxLCBUMiYgdDIsIFQzJiB0MywKLSAgICAgICAgICAgICAgICAgIFQ0JiB0NCwgVDUmIHQ1LCBUNiYgdDYpIHsKLSAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OnRpZV9tYXBwZXIKLSAgICAgICAgICAgPFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2Pjo6dHlwZSB0OwotICByZXR1cm4gdCh0MCwgdDEsIHQyLCB0MywgdDQsIHQ1LCB0Nik7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQwLCBjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFQzLCBjbGFzcyBUNCwgY2xhc3MgVDUsIGNsYXNzIFQ2LAotICAgICAgICAgY2xhc3MgVDc+Ci1pbmxpbmUgdHlwZW5hbWUgZGV0YWlsOjp0aWVfbWFwcGVyPFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNz46OnR5cGUKLXRpZShUMCYgdDAsIFQxJiB0MSwgVDImIHQyLCBUMyYgdDMsCi0gICAgICAgICAgICAgICAgICBUNCYgdDQsIFQ1JiB0NSwgVDYmIHQ2LCBUNyYgdDcpIHsKLSAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OnRpZV9tYXBwZXIKLSAgICAgICAgICAgPFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNz46OnR5cGUgdDsKLSAgcmV0dXJuIHQodDAsIHQxLCB0MiwgdDMsIHQ0LCB0NSwgdDYsIHQ3KTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVDAsIGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgVDMsIGNsYXNzIFQ0LCBjbGFzcyBUNSwgY2xhc3MgVDYsCi0gICAgICAgICBjbGFzcyBUNywgY2xhc3MgVDg+Ci1pbmxpbmUgdHlwZW5hbWUgZGV0YWlsOjp0aWVfbWFwcGVyCi0gIDxUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4Pjo6dHlwZQotdGllKFQwJiB0MCwgVDEmIHQxLCBUMiYgdDIsIFQzJiB0MywKLSAgICAgICAgICAgICAgICAgIFQ0JiB0NCwgVDUmIHQ1LCBUNiYgdDYsIFQ3JiB0NywKLSAgICAgICAgICAgICAgICAgIFQ4JiB0OCkgewotICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6dGllX21hcHBlcgotICAgICAgICAgICA8VDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOD46OnR5cGUgdDsKLSAgcmV0dXJuIHQodDAsIHQxLCB0MiwgdDMsIHQ0LCB0NSwgdDYsIHQ3LCB0OCk7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQwLCBjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFQzLCBjbGFzcyBUNCwgY2xhc3MgVDUsIGNsYXNzIFQ2LAotICAgICAgICAgY2xhc3MgVDcsIGNsYXNzIFQ4LCBjbGFzcyBUOT4KLWlubGluZSB0eXBlbmFtZSBkZXRhaWw6OnRpZV9tYXBwZXIKLSAgPFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5Pjo6dHlwZQotdGllKFQwJiB0MCwgVDEmIHQxLCBUMiYgdDIsIFQzJiB0MywKLSAgICAgICAgICAgICAgICAgIFQ0JiB0NCwgVDUmIHQ1LCBUNiYgdDYsIFQ3JiB0NywKLSAgICAgICAgICAgICAgICAgIFQ4JiB0OCwgVDkmIHQ5KSB7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjp0aWVfbWFwcGVyCi0gICAgICAgICAgIDxUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOT46OnR5cGUgdDsKLSAgcmV0dXJuIHQodDAsIHQxLCB0MiwgdDMsIHQ0LCB0NSwgdDYsIHQ3LCB0OCwgdDkpOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgVDAsIGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgVDMsIGNsYXNzIFQ0LAotICAgICAgICAgIGNsYXNzIFQ1LCBjbGFzcyBUNiwgY2xhc3MgVDcsIGNsYXNzIFQ4LCBjbGFzcyBUOT4KLXZvaWQgc3dhcCh0dXBsZTxUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOT4mIGxocywKLSAgICAgICAgICB0dXBsZTxUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOT4mIHJocyk7Ci1pbmxpbmUgdm9pZCBzd2FwKG51bGxfdHlwZSYsIG51bGxfdHlwZSYpIHt9Ci10ZW1wbGF0ZTxjbGFzcyBISD4KLWlubGluZSB2b2lkIHN3YXAoY29uczxISCwgbnVsbF90eXBlPiYgbGhzLCBjb25zPEhILCBudWxsX3R5cGU+JiByaHMpIHsKLSAgOjpuZG5ib29zdDo6c3dhcChsaHMuaGVhZCwgcmhzLmhlYWQpOwotfQotdGVtcGxhdGU8Y2xhc3MgSEgsIGNsYXNzIFRUPgotaW5saW5lIHZvaWQgc3dhcChjb25zPEhILCBUVD4mIGxocywgY29uczxISCwgVFQ+JiByaHMpIHsKLSAgOjpuZG5ib29zdDo6c3dhcChsaHMuaGVhZCwgcmhzLmhlYWQpOwotICA6Om5kbmJvb3N0Ojp0dXBsZXM6OnN3YXAobGhzLnRhaWwsIHJocy50YWlsKTsKLX0KLXRlbXBsYXRlIDxjbGFzcyBUMCwgY2xhc3MgVDEsIGNsYXNzIFQyLCBjbGFzcyBUMywgY2xhc3MgVDQsCi0gICAgICAgICAgY2xhc3MgVDUsIGNsYXNzIFQ2LCBjbGFzcyBUNywgY2xhc3MgVDgsIGNsYXNzIFQ5PgotaW5saW5lIHZvaWQgc3dhcCh0dXBsZTxUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOT4mIGxocywKLSAgICAgICAgICB0dXBsZTxUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOT4mIHJocykgewotICB0eXBlZGVmIHR1cGxlPFQwLCBUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5PiB0dXBsZV90eXBlOwotICB0eXBlZGVmIHR5cGVuYW1lIHR1cGxlX3R5cGU6OmluaGVyaXRlZCBiYXNlOwotICA6Om5kbmJvb3N0Ojp0dXBsZXM6OnN3YXAoc3RhdGljX2Nhc3Q8YmFzZSY+KGxocyksIHN0YXRpY19jYXN0PGJhc2UmPihyaHMpKTsKLX0KLQotfSAvLyBlbmQgb2YgbmFtZXNwYWNlIHR1cGxlcwotfSAvLyBlbmQgb2YgbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RVUExFX0JBU0lDX0hQUAotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHVwbGUvZGV0YWlsL3R1cGxlX2Jhc2ljX25vX3BhcnRpYWxfc3BlYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R1cGxlL2RldGFpbC90dXBsZV9iYXNpY19ub19wYXJ0aWFsX3NwZWMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OTIyMmI3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHVwbGUvZGV0YWlsL3R1cGxlX2Jhc2ljX25vX3BhcnRpYWxfc3BlYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw4NjUgKzAsMCBAQAotLy8gLSB0dXBsZV9iYXNpY19ub19wYXJ0aWFsX3NwZWMuaHBwIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vIENvcHlyaWdodCAoQykgMTk5OSwgMjAwMCBKYWFra28gSmFydmkgKGphYWtrby5qYXJ2aUBjcy51dHUuZmkpCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDEgRG91Z2xhcyBHcmVnb3IgKGdyZWdvZEBycGkuZWR1KQotLy8gQ29weXJpZ2h0IChDKSAyMDAxIEdhcnkgUG93ZWxsIChnYXJ5LnBvd2VsbEBzaWVycmEuY29tKQotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBvciBodHRwOi8vbGFtYmRhLmNzLnV0dS5maQotCi0vLyBSZXZpc2lvbiBIaXN0b3J5Ci0vLyAgMTQgMDIgMDEgICAgUmVtb3ZlIGV4dHJhICc7Jy4gQWxzbywgZml4ZWQgMTAtcGFyYW1ldGVyIHRvIG1ha2VfdHVwbGUuIChERykKLS8vICAxMCAwMiAwMSAgICBGaXhlZCAibnVsbF90eXBlIiBjb25zdHJ1Y3RvcnMuCi0vLyAgICAgICAgICAgICAgSW1wbGVtZW50ZWQgY29tcGFyaXNvbiBvcGVyYXRvcnMgZ2xvYmFsbHkuCi0vLyAgICAgICAgICAgICAgSGlkZSBlbGVtZW50X3R5cGVfcmVmIGFuZCBlbGVtZW50X3R5cGVfY29uc3RfcmVmLgotLy8gICAgICAgICAgICAgIChERykuCi0vLyAgMDkgMDIgMDEgICAgRXh0ZW5kZWQgdG8gdHVwbGVzIG9mIGxlbmd0aCAxMC4gQ2hhbmdlZCBjb21wYXJpc29uIGZvcgotLy8gICAgICAgICAgICAgIG9wZXJhdG9yPCgpCi0vLyAgICAgICAgICAgICAgdG8gdGhlIHNhbWUgdXNlZCBieSBzdGQ6OnBhaXI8PiwgYWRkZWQgY251bGxfdHlwZSgpIChHUCkKLS8vICAwMyAwMiAwMSAgICBJbml0aWFsIFZlcnNpb24gZnJvbSBvcmlnaW5hbCB0dXBsZS5ocHAgY29kZSBieSBKSi4gKERHKQotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0jaWZuZGVmIE5ETkJPT1NUX1RVUExFX0JBU0lDX05PX1BBUlRJQUxfU1BFQ19IUFAKLSNkZWZpbmUgTkROQk9PU1RfVFVQTEVfQkFTSUNfTk9fUEFSVElBTF9TUEVDX0hQUAotCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3V0aWxpdHkvc3dhcC5ocHAiCi0jaW5jbHVkZSA8dXRpbGl0eT4KLQotI2lmIGRlZmluZWQgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDUxOCkgLy8gc3RvcmFnZS1jbGFzcyBvciB0eXBlIHNwZWNpZmllcihzKSB1bmV4cGVjdGVkIGhlcmU7IGlnbm9yZWQKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQxODEpIC8vIHF1YWxpZmllciBhcHBsaWVkIHRvIHJlZmVyZW5jZSB0eXBlIGlnbm9yZWQKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQyMjcpIC8vIHF1YWxpZmllciBhcHBsaWVkIHRvIHJlZmVyZW5jZSB0eXBlIGlnbm9yZWQKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotbmFtZXNwYWNlIHR1cGxlcyB7Ci0KLSAgICAvLyBudWxsX3R5cGUgZGVub3RlcyB0aGUgZW5kIG9mIGEgbGlzdCBidWlsdCB3aXRoICJjb25zIgotICAgIHN0cnVjdCBudWxsX3R5cGUKLSAgICB7Ci0gICAgICBudWxsX3R5cGUoKSB7fQotICAgICAgbnVsbF90eXBlKGNvbnN0IG51bGxfdHlwZSYsIGNvbnN0IG51bGxfdHlwZSYpIHt9Ci0gICAgfTsKLQotICAgIC8vIGEgaGVscGVyIGZ1bmN0aW9uIHRvIHByb3ZpZGUgYSBjb25zdCBudWxsX3R5cGUgdHlwZSB0ZW1wb3JhcnkKLSAgICBpbmxpbmUgY29uc3QgbnVsbF90eXBlIGNudWxsX3R5cGUoKSB7IHJldHVybiBudWxsX3R5cGUoKTsgfQotCi0vLyBmb3J3YXJkIGRlY2xhcmF0aW9uIG9mIHR1cGxlCi0gICAgdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSA9IG51bGxfdHlwZSwKLSAgICAgIHR5cGVuYW1lIFQyID0gbnVsbF90eXBlLAotICAgICAgdHlwZW5hbWUgVDMgPSBudWxsX3R5cGUsCi0gICAgICB0eXBlbmFtZSBUNCA9IG51bGxfdHlwZSwKLSAgICAgIHR5cGVuYW1lIFQ1ID0gbnVsbF90eXBlLAotICAgICAgdHlwZW5hbWUgVDYgPSBudWxsX3R5cGUsCi0gICAgICB0eXBlbmFtZSBUNyA9IG51bGxfdHlwZSwKLSAgICAgIHR5cGVuYW1lIFQ4ID0gbnVsbF90eXBlLAotICAgICAgdHlwZW5hbWUgVDkgPSBudWxsX3R5cGUsCi0gICAgICB0eXBlbmFtZSBUMTAgPSBudWxsX3R5cGUKLSAgICA+Ci0gICAgY2xhc3MgdHVwbGU7Ci0KLS8vIGZvcndhcmQgZGVjbGFyYXRpb24gb2YgY29ucwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhlYWQsIHR5cGVuYW1lIFRhaWwgPSBudWxsX3R5cGU+Ci0gICAgc3RydWN0IGNvbnM7Ci0KLSAgICBuYW1lc3BhY2UgZGV0YWlsIHsKLQotICAgICAgLy8gVGFrZXMgYSBwb2ludGVyIGFuZCByb3V0ZXMgYWxsIGFzc2lnbm1lbnRzIHRvIHdoYXRldmVyIGl0IHBvaW50cyB0bwotICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgIHN0cnVjdCBhc3NpZ25fdG9fcG9pbnRlZQotICAgICAgewotICAgICAgcHVibGljOgotICAgICAgICBleHBsaWNpdCBhc3NpZ25fdG9fcG9pbnRlZShUKiBwKSA6IHB0cihwKSB7fQotCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE90aGVyPgotICAgICAgICBhc3NpZ25fdG9fcG9pbnRlZSYgb3BlcmF0b3I9KGNvbnN0IE90aGVyJiBvdGhlcikKLSAgICAgICAgewotICAgICAgICAgICpwdHIgPSBvdGhlcjsKLSAgICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgICAgIH0KLQotICAgICAgcHJpdmF0ZToKLSAgICAgICAgVCogcHRyOwotICAgICAgfTsKLQotICAgICAgLy8gU3dhbGxvd3MgYW55IGFzc2lnbm1lbnQKLSAgICAgIHN0cnVjdCBzd2FsbG93X2Fzc2lnbgotICAgICAgewotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICBzd2FsbG93X2Fzc2lnbiBjb25zdCYgb3BlcmF0b3I9KGNvbnN0IFQmKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgcmV0dXJuICp0aGlzOwotICAgICAgICB9Ci0gICAgICB9OwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBhZGRfY29uc3RfcmVmZXJlbmNlIDogYWRkX3JlZmVyZW5jZTx0eXBlbmFtZSBhZGRfY29uc3Q8VD46OnR5cGU+IHt9OwotCi0gICAgdGVtcGxhdGUgPGNsYXNzIE15VGFpbD4KLSAgICBzdHJ1Y3QgaW5pdF90YWlsCi0gICAgewotICAgICAgICAvLyBFYWNoIG9mIHZjNiBhbmQgdmM3IHNlZW0gdG8gcmVxdWlyZSBhIGRpZmZlcmVudCBmb3JtdWxhdGlvbgotICAgICAgICAvLyBvZiB0aGlzIHJldHVybiB0eXBlCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBILCBjbGFzcyBUPgotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxMzAwKQotICAgICAgICBzdGF0aWMgdHlwZW5hbWUgYWRkX3JlZmVyZW5jZTx0eXBlbmFtZSBhZGRfY29uc3Q8VD46OnR5cGU+Ojp0eXBlCi0jZWxzZQotICAgICAgICBzdGF0aWMgdHlwZW5hbWUgYWRkX2NvbnN0X3JlZmVyZW5jZTxUPjo6dHlwZQotI2VuZGlmCi0gICAgICAgIGV4ZWN1dGUoIGNvbnM8SCxUPiBjb25zdCYgdSwgbG9uZyApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB1LmdldF90YWlsKCk7Ci0gICAgICAgIH0KLSAgICB9OwotCi0gICAgdGVtcGxhdGUgPD4KLSAgICBzdHJ1Y3QgaW5pdF90YWlsPG51bGxfdHlwZT4KLSAgICB7Ci0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBIPgotICAgICAgICBzdGF0aWMgbnVsbF90eXBlIGV4ZWN1dGUoIGNvbnM8SCxudWxsX3R5cGU+IGNvbnN0JiB1LCBsb25nICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG51bGxfdHlwZSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFU+Ci0gICAgICAgIHN0YXRpYyBudWxsX3R5cGUgZXhlY3V0ZShVIGNvbnN0JiwgLi4uKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbnVsbF90eXBlKCk7Ci0gICAgICAgIH0KLSAgICAgcHJpdmF0ZToKLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIEgsIGNsYXNzIFQ+Ci0gICAgICAgIHZvaWQgZXhlY3V0ZSggY29uczxILFQ+IGNvbnN0JiwgaW50KTsKLSAgICB9OwotCi0gICAgdGVtcGxhdGUgPGNsYXNzIE90aGVyPgotICAgIE90aGVyIGNvbnN0JgotICAgIGluaXRfaGVhZCggT3RoZXIgY29uc3QmIHUsIC4uLiApCi0gICAgewotICAgICAgICByZXR1cm4gdTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgSCwgY2xhc3MgVD4KLSAgICB0eXBlbmFtZSBhZGRfcmVmZXJlbmNlPHR5cGVuYW1lIGFkZF9jb25zdDxIPjo6dHlwZT46OnR5cGUKLSAgICBpbml0X2hlYWQoIGNvbnM8SCxUPiBjb25zdCYgdSwgaW50ICkKLSAgICB7Ci0gICAgICAgIHJldHVybiB1LmdldF9oZWFkKCk7Ci0gICAgfQotCi0gICAgaW5saW5lIGNoYXIqKioqIGluaXRfaGVhZChudWxsX3R5cGUgY29uc3QmLCBpbnQpOwotCi0gIH0gLy8gZW5kIG9mIG5hbWVzcGFjZSBkZXRhaWwKLQotICAgIC8vIGNvbnMgYnVpbGRzIGEgaGV0ZXJvZ2Vub3VzIGxpc3Qgb2YgdHlwZXMKLSAgIHRlbXBsYXRlPHR5cGVuYW1lIEhlYWQsIHR5cGVuYW1lIFRhaWw+Ci0gICBzdHJ1Y3QgY29ucwotICAgewotICAgICB0eXBlZGVmIGNvbnMgc2VsZl90eXBlOwotICAgICB0eXBlZGVmIEhlYWQgaGVhZF90eXBlOwotICAgICB0eXBlZGVmIFRhaWwgdGFpbF90eXBlOwotCi0gICAgcHJpdmF0ZToKLSAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjphZGRfcmVmZXJlbmNlPGhlYWRfdHlwZT46OnR5cGUgaGVhZF9yZWY7Ci0gICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6YWRkX3JlZmVyZW5jZTx0YWlsX3R5cGU+Ojp0eXBlIHRhaWxfcmVmOwotICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjphZGRfY29uc3RfcmVmZXJlbmNlPGhlYWRfdHlwZT46OnR5cGUgaGVhZF9jcmVmOwotICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjphZGRfY29uc3RfcmVmZXJlbmNlPHRhaWxfdHlwZT46OnR5cGUgdGFpbF9jcmVmOwotICAgIHB1YmxpYzoKLSAgICAgaGVhZF90eXBlIGhlYWQ7Ci0gICAgIHRhaWxfdHlwZSB0YWlsOwotCi0gICAgIGhlYWRfcmVmIGdldF9oZWFkKCkgeyByZXR1cm4gaGVhZDsgfQotICAgICB0YWlsX3JlZiBnZXRfdGFpbCgpIHsgcmV0dXJuIHRhaWw7IH0KLQotICAgICBoZWFkX2NyZWYgZ2V0X2hlYWQoKSBjb25zdCB7IHJldHVybiBoZWFkOyB9Ci0gICAgIHRhaWxfY3JlZiBnZXRfdGFpbCgpIGNvbnN0IHsgcmV0dXJuIHRhaWw7IH0KLQotICAgICBjb25zKCkgOiBoZWFkKCksIHRhaWwoKSB7fQotCi0jaWYgZGVmaW5lZCBORE5CT09TVF9NU1ZDCi0gICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUYWlsPgotICAgICAgY29ucyhoZWFkX2NyZWYgaCAvKiA9IGhlYWRfdHlwZSgpICovLCAvLyBjYXVzZXMgTVNWQyA2LjUgdG8gYmFyZi4KLSAgICAgICAgICAgICAgICAgICAgY29uc3QgVGFpbCYgdCkgOiBoZWFkKGgpLCB0YWlsKHQuaGVhZCwgdC50YWlsKQotICAgICAgewotICAgICAgfQotCi0gICAgICBjb25zKGhlYWRfY3JlZiBoIC8qID0gaGVhZF90eXBlKCkgKi8sIC8vIGNhdXNlcyBNU1ZDIDYuNSB0byBiYXJmLgotICAgICAgICAgICAgICAgICAgICBjb25zdCBudWxsX3R5cGUmIHQpIDogaGVhZChoKSwgdGFpbCh0KQotICAgICAgewotICAgICAgfQotCi0jZWxzZQotICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgIGV4cGxpY2l0IGNvbnMoaGVhZF9jcmVmIGgsIGNvbnN0IFQmIHQpIDoKLSAgICAgICAgaGVhZChoKSwgdGFpbCh0LmhlYWQsIHQudGFpbCkKLSAgICAgIHsKLSAgICAgIH0KLQotICAgICAgZXhwbGljaXQgY29ucyhoZWFkX2NyZWYgaCA9IGhlYWRfdHlwZSgpLAotICAgICAgICAgICAgICAgICAgICB0YWlsX2NyZWYgdCA9IHRhaWxfdHlwZSgpKSA6Ci0gICAgICAgIGhlYWQoaCksIHRhaWwodCkKLSAgICAgIHsKLSAgICAgIH0KLSNlbmRpZgotCi0gICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVT4KLSAgICAgIGNvbnMoIGNvbnN0IFUmIHUgKQotICAgICAgICA6IGhlYWQoZGV0YWlsOjppbml0X2hlYWQodSwgMCkpCi0gICAgICAgICwgdGFpbChkZXRhaWw6OmluaXRfdGFpbDxUYWlsPjo6ZXhlY3V0ZSh1LCAwTCkpCi0gICAgICAgewotICAgICAgIH0KLQotICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXI+Ci0gICAgICBjb25zJiBvcGVyYXRvcj0oY29uc3QgT3RoZXImIG90aGVyKQotICAgICAgewotICAgICAgICBoZWFkID0gb3RoZXIuaGVhZDsKLSAgICAgICAgdGFpbCA9IG90aGVyLnRhaWw7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICAgIH0KLSAgICB9OwotCi0gICAgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLSAgICAgIC8vIERldGVybWluZXMgaWYgdGhlIHBhcmFtZXRlciBpcyBudWxsX3R5cGUKLSAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBpc19udWxsX3R5cGUgeyBlbnVtIHsgUkVUID0gMCB9OyB9OwotICAgICAgdGVtcGxhdGU8PiBzdHJ1Y3QgaXNfbnVsbF90eXBlPG51bGxfdHlwZT4geyBlbnVtIHsgUkVUID0gMSB9OyB9OwotCi0gICAgICAvKiBCdWlsZCBhIGNvbnMgc3RydWN0dXJlIGZyb20gdGhlIGdpdmVuIEhlYWQgYW5kIFRhaWwuIElmIGJvdGggYXJlIG51bGxfdHlwZSwKLSAgICAgIHJldHVybiBudWxsX3R5cGUuICovCi0gICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIZWFkLCB0eXBlbmFtZSBUYWlsPgotICAgICAgc3RydWN0IGJ1aWxkX2NvbnMKLSAgICAgIHsKLSAgICAgIHByaXZhdGU6Ci0gICAgICAgIGVudW0geyB0YWlsX2lzX251bGxfdHlwZSA9IGlzX251bGxfdHlwZTxUYWlsPjo6UkVUIH07Ci0gICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgY29uczxIZWFkLCBUYWlsPiBSRVQ7Ci0gICAgICB9OwotCi0gICAgICB0ZW1wbGF0ZTw+Ci0gICAgICBzdHJ1Y3QgYnVpbGRfY29uczxudWxsX3R5cGUsIG51bGxfdHlwZT4KLSAgICAgIHsKLSAgICAgICAgdHlwZWRlZiBudWxsX3R5cGUgUkVUOwotICAgICAgfTsKLQotICAgICAgLy8gTWFwIHRoZSBOIGVsZW1lbnRzIG9mIGEgdHVwbGUgaW50byBhIGNvbnMgbGlzdAotICAgICAgdGVtcGxhdGU8Ci0gICAgICAgIHR5cGVuYW1lIFQxLAotICAgICAgICB0eXBlbmFtZSBUMiA9IG51bGxfdHlwZSwKLSAgICAgICAgdHlwZW5hbWUgVDMgPSBudWxsX3R5cGUsCi0gICAgICAgIHR5cGVuYW1lIFQ0ID0gbnVsbF90eXBlLAotICAgICAgICB0eXBlbmFtZSBUNSA9IG51bGxfdHlwZSwKLSAgICAgICAgdHlwZW5hbWUgVDYgPSBudWxsX3R5cGUsCi0gICAgICAgIHR5cGVuYW1lIFQ3ID0gbnVsbF90eXBlLAotICAgICAgICB0eXBlbmFtZSBUOCA9IG51bGxfdHlwZSwKLSAgICAgICAgdHlwZW5hbWUgVDkgPSBudWxsX3R5cGUsCi0gICAgICAgIHR5cGVuYW1lIFQxMCA9IG51bGxfdHlwZQotICAgICAgPgotICAgICAgc3RydWN0IG1hcF90dXBsZV90b19jb25zCi0gICAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpidWlsZF9jb25zPFQxMCwgbnVsbF90eXBlICA+OjpSRVQgY29uczEwOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6YnVpbGRfY29uczxUOSwgY29uczEwPjo6UkVUIGNvbnM5OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6YnVpbGRfY29uczxUOCwgY29uczk+OjpSRVQgY29uczg7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpidWlsZF9jb25zPFQ3LCBjb25zOD46OlJFVCBjb25zNzsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmJ1aWxkX2NvbnM8VDYsIGNvbnM3Pjo6UkVUIGNvbnM2OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6YnVpbGRfY29uczxUNSwgY29uczY+OjpSRVQgY29uczU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpidWlsZF9jb25zPFQ0LCBjb25zNT46OlJFVCBjb25zNDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmJ1aWxkX2NvbnM8VDMsIGNvbnM0Pjo6UkVUIGNvbnMzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6YnVpbGRfY29uczxUMiwgY29uczM+OjpSRVQgY29uczI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjpidWlsZF9jb25zPFQxLCBjb25zMj46OlJFVCBjb25zMTsKLSAgICAgIH07Ci0KLSAgICAgIC8vIFdvcmthcm91bmQgdGhlIGxhY2sgb2YgcGFydGlhbCBzcGVjaWFsaXphdGlvbiBpbiBzb21lIGNvbXBpbGVycwotICAgICAgdGVtcGxhdGU8aW50IE4+Ci0gICAgICBzdHJ1Y3QgX2VsZW1lbnRfdHlwZQotICAgICAgewotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUdXBsZT4KLSAgICAgICAgc3RydWN0IGlubmVyCi0gICAgICAgIHsKLSAgICAgICAgcHJpdmF0ZToKLSAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFR1cGxlOjp0YWlsX3R5cGUgdGFpbF90eXBlOwotICAgICAgICAgIHR5cGVkZWYgX2VsZW1lbnRfdHlwZTxOLTE+IG5leHRfZWx0X3R5cGU7Ci0KLSAgICAgICAgcHVibGljOgotICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgX2VsZW1lbnRfdHlwZTxOLTE+Ojp0ZW1wbGF0ZSBpbm5lcjx0YWlsX3R5cGU+OjpSRVQgUkVUOwotICAgICAgICB9OwotICAgICAgfTsKLQotICAgICAgdGVtcGxhdGU8PgotICAgICAgc3RydWN0IF9lbGVtZW50X3R5cGU8MD4KLSAgICAgIHsKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVHVwbGU+Ci0gICAgICAgIHN0cnVjdCBpbm5lcgotICAgICAgICB7Ci0gICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBUdXBsZTo6aGVhZF90eXBlIFJFVDsKLSAgICAgICAgfTsKLSAgICAgIH07Ci0KLSAgICB9IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotCi0gICAgLy8gUmV0dXJuIHRoZSBOdGggdHlwZSBvZiB0aGUgZ2l2ZW4gVHVwbGUKLSAgICB0ZW1wbGF0ZTxpbnQgTiwgdHlwZW5hbWUgVHVwbGU+Ci0gICAgc3RydWN0IGVsZW1lbnQKLSAgICB7Ci0gICAgcHJpdmF0ZToKLSAgICAgIHR5cGVkZWYgZGV0YWlsOjpfZWxlbWVudF90eXBlPE4+IG50aF90eXBlOwotCi0gICAgcHVibGljOgotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBudGhfdHlwZTo6dGVtcGxhdGUgaW5uZXI8VHVwbGU+OjpSRVQgUkVUOwotICAgICAgdHlwZWRlZiBSRVQgdHlwZTsKLSAgICB9OwotCi0gICAgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpICYmIChORE5CT09TVF9NU1ZDID09IDEzMDApCi0gICAgICAvLyBzcGVjaWFsIHdvcmthcm91bmQgZm9yIHZjNzoKLQotICAgICAgdGVtcGxhdGUgPGJvb2wgeD4KLSAgICAgIHN0cnVjdCByZWZlcmVuY2VfYWRkZXIKLSAgICAgIHsKLSAgICAgICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgICAgICAgc3RydWN0IHJlYmluZAotICAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiBUJiB0eXBlOwotICAgICAgICAgfTsKLSAgICAgIH07Ci0KLSAgICAgIHRlbXBsYXRlIDw+Ci0gICAgICBzdHJ1Y3QgcmVmZXJlbmNlX2FkZGVyPHRydWU+Ci0gICAgICB7Ci0gICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICAgICAgIHN0cnVjdCByZWJpbmQKLSAgICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgICAgICAgfTsKLSAgICAgIH07Ci0KLQotICAgICAgLy8gUmV0dXJuIGEgcmVmZXJlbmNlIHRvIHRoZSBOdGggdHlwZSBvZiB0aGUgZ2l2ZW4gVHVwbGUKLSAgICAgIHRlbXBsYXRlPGludCBOLCB0eXBlbmFtZSBUdXBsZT4KLSAgICAgIHN0cnVjdCBlbGVtZW50X3JlZgotICAgICAgewotICAgICAgcHJpdmF0ZToKLSAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZWxlbWVudDxOLCBUdXBsZT46OlJFVCBlbHRfdHlwZTsKLSAgICAgICAgIGVudW0geyBpc19yZWYgPSBpc19yZWZlcmVuY2U8ZWx0X3R5cGU+Ojp2YWx1ZSB9OwotCi0gICAgICBwdWJsaWM6Ci0gICAgICAgICB0eXBlZGVmIHJlZmVyZW5jZV9hZGRlcjxpc19yZWY+OjpyZWJpbmQ8ZWx0X3R5cGU+Ojp0eXBlIFJFVDsKLSAgICAgICAgIHR5cGVkZWYgUkVUIHR5cGU7Ci0gICAgICB9OwotCi0gICAgICAvLyBSZXR1cm4gYSBjb25zdCByZWZlcmVuY2UgdG8gdGhlIE50aCB0eXBlIG9mIHRoZSBnaXZlbiBUdXBsZQotICAgICAgdGVtcGxhdGU8aW50IE4sIHR5cGVuYW1lIFR1cGxlPgotICAgICAgc3RydWN0IGVsZW1lbnRfY29uc3RfcmVmCi0gICAgICB7Ci0gICAgICBwcml2YXRlOgotICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBlbGVtZW50PE4sIFR1cGxlPjo6UkVUIGVsdF90eXBlOwotICAgICAgICAgZW51bSB7IGlzX3JlZiA9IGlzX3JlZmVyZW5jZTxlbHRfdHlwZT46OnZhbHVlIH07Ci0KLSAgICAgIHB1YmxpYzoKLSAgICAgICAgIHR5cGVkZWYgcmVmZXJlbmNlX2FkZGVyPGlzX3JlZj46OnJlYmluZDxjb25zdCBlbHRfdHlwZT46OnR5cGUgUkVUOwotICAgICAgICAgdHlwZWRlZiBSRVQgdHlwZTsKLSAgICAgIH07Ci0KLSNlbHNlIC8vIHZjNwotCi0gICAgICAvLyBSZXR1cm4gYSByZWZlcmVuY2UgdG8gdGhlIE50aCB0eXBlIG9mIHRoZSBnaXZlbiBUdXBsZQotICAgICAgdGVtcGxhdGU8aW50IE4sIHR5cGVuYW1lIFR1cGxlPgotICAgICAgc3RydWN0IGVsZW1lbnRfcmVmCi0gICAgICB7Ci0gICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGVsZW1lbnQ8TiwgVHVwbGU+OjpSRVQgZWx0X3R5cGU7Ci0KLSAgICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhZGRfcmVmZXJlbmNlPGVsdF90eXBlPjo6dHlwZSBSRVQ7Ci0gICAgICAgIHR5cGVkZWYgUkVUIHR5cGU7Ci0gICAgICB9OwotCi0gICAgICAvLyBSZXR1cm4gYSBjb25zdCByZWZlcmVuY2UgdG8gdGhlIE50aCB0eXBlIG9mIHRoZSBnaXZlbiBUdXBsZQotICAgICAgdGVtcGxhdGU8aW50IE4sIHR5cGVuYW1lIFR1cGxlPgotICAgICAgc3RydWN0IGVsZW1lbnRfY29uc3RfcmVmCi0gICAgICB7Ci0gICAgICBwcml2YXRlOgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGVsZW1lbnQ8TiwgVHVwbGU+OjpSRVQgZWx0X3R5cGU7Ci0KLSAgICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhZGRfcmVmZXJlbmNlPGNvbnN0IGVsdF90eXBlPjo6dHlwZSBSRVQ7Ci0gICAgICAgIHR5cGVkZWYgUkVUIHR5cGU7Ci0gICAgICB9OwotI2VuZGlmIC8vIHZjNwotCi0gICAgfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLSAgICAvLyBHZXQgbGVuZ3RoIG9mIHRoaXMgdHVwbGUKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUdXBsZT4KLSAgICBzdHJ1Y3QgbGVuZ3RoCi0gICAgewotICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPSAxICsgbGVuZ3RoPHR5cGVuYW1lIFR1cGxlOjp0YWlsX3R5cGU+Ojp2YWx1ZSk7Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlPD4gc3RydWN0IGxlbmd0aDx0dXBsZTw+ID4gewotICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCwgdmFsdWUgPSAwKTsKLSAgICB9OwotCi0gICAgdGVtcGxhdGU8PgotICAgIHN0cnVjdCBsZW5ndGg8bnVsbF90eXBlPgotICAgIHsKLSAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsIHZhbHVlID0gMCk7Ci0gICAgfTsKLQotICAgIG5hbWVzcGFjZSBkZXRhaWwgewotCi0gICAgLy8gUmVmZXJlbmNlIHRoZSBOdGggZWxlbWVudCBpbiBhIHR1cGxlIGFuZCByZXRyaWV2ZSBpdCB3aXRoICJnZXQiCi0gICAgdGVtcGxhdGU8aW50IE4+Ci0gICAgc3RydWN0IGdldF9jbGFzcwotICAgIHsKLSAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhlYWQsIHR5cGVuYW1lIFRhaWw+Ci0gICAgICBzdGF0aWMgaW5saW5lCi0gICAgICB0eXBlbmFtZSBkZXRhaWw6OmVsZW1lbnRfcmVmPE4sIGNvbnM8SGVhZCwgVGFpbD4gPjo6UkVUCi0gICAgICBnZXQoY29uczxIZWFkLCBUYWlsPiYgdCkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIGdldF9jbGFzczxOLTE+OjpnZXQodC50YWlsKTsKLSAgICAgIH0KLQotICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGVhZCwgdHlwZW5hbWUgVGFpbD4KLSAgICAgIHN0YXRpYyBpbmxpbmUKLSAgICAgIHR5cGVuYW1lIGRldGFpbDo6ZWxlbWVudF9jb25zdF9yZWY8TiwgY29uczxIZWFkLCBUYWlsPiA+OjpSRVQKLSAgICAgIGdldChjb25zdCBjb25zPEhlYWQsIFRhaWw+JiB0KQotICAgICAgewotICAgICAgICByZXR1cm4gZ2V0X2NsYXNzPE4tMT46OmdldCh0LnRhaWwpOwotICAgICAgfQotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZTw+Ci0gICAgc3RydWN0IGdldF9jbGFzczwwPgotICAgIHsKLSAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhlYWQsIHR5cGVuYW1lIFRhaWw+Ci0gICAgICBzdGF0aWMgaW5saW5lCi0gICAgICB0eXBlbmFtZSBhZGRfcmVmZXJlbmNlPEhlYWQ+Ojp0eXBlCi0gICAgICBnZXQoY29uczxIZWFkLCBUYWlsPiYgdCkKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIHQuaGVhZDsKLSAgICAgIH0KLQotICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGVhZCwgdHlwZW5hbWUgVGFpbD4KLSAgICAgIHN0YXRpYyBpbmxpbmUKLSAgICAgIHR5cGVuYW1lIGFkZF9yZWZlcmVuY2U8Y29uc3QgSGVhZD46OnR5cGUKLSAgICAgIGdldChjb25zdCBjb25zPEhlYWQsIFRhaWw+JiB0KQotICAgICAgewotICAgICAgICByZXR1cm4gdC5oZWFkOwotICAgICAgfQotICAgIH07Ci0KLSAgICB9IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotICAgIC8vIHR1cGxlIGNsYXNzCi0gICAgdGVtcGxhdGU8Ci0gICAgICB0eXBlbmFtZSBUMSwKLSAgICAgIHR5cGVuYW1lIFQyLAotICAgICAgdHlwZW5hbWUgVDMsCi0gICAgICB0eXBlbmFtZSBUNCwKLSAgICAgIHR5cGVuYW1lIFQ1LAotICAgICAgdHlwZW5hbWUgVDYsCi0gICAgICB0eXBlbmFtZSBUNywKLSAgICAgIHR5cGVuYW1lIFQ4LAotICAgICAgdHlwZW5hbWUgVDksCi0gICAgICB0eXBlbmFtZSBUMTAKLSAgICA+Ci0gICAgY2xhc3MgdHVwbGUgOgotICAgICAgcHVibGljIGRldGFpbDo6bWFwX3R1cGxlX3RvX2NvbnM8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSwgVDEwPjo6Y29uczEKLSAgICB7Ci0gICAgcHJpdmF0ZToKLSAgICAgIHR5cGVkZWYgZGV0YWlsOjptYXBfdHVwbGVfdG9fY29uczxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTA+IG1hcHBlZF90dXBsZTsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbWFwcGVkX3R1cGxlOjpjb25zMTAgY29uczEwOwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXBwZWRfdHVwbGU6OmNvbnM5IGNvbnM5OwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXBwZWRfdHVwbGU6OmNvbnM4IGNvbnM4OwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXBwZWRfdHVwbGU6OmNvbnM3IGNvbnM3OwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXBwZWRfdHVwbGU6OmNvbnM2IGNvbnM2OwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXBwZWRfdHVwbGU6OmNvbnM1IGNvbnM1OwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXBwZWRfdHVwbGU6OmNvbnM0IGNvbnM0OwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXBwZWRfdHVwbGU6OmNvbnMzIGNvbnMzOwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXBwZWRfdHVwbGU6OmNvbnMyIGNvbnMyOwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtYXBwZWRfdHVwbGU6OmNvbnMxIGNvbnMxOwotCi0gICAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6YWRkX2NvbnN0X3JlZmVyZW5jZTxUMT46OnR5cGUgdDFfY3JlZjsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjphZGRfY29uc3RfcmVmZXJlbmNlPFQyPjo6dHlwZSB0Ml9jcmVmOwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmFkZF9jb25zdF9yZWZlcmVuY2U8VDM+Ojp0eXBlIHQzX2NyZWY7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6YWRkX2NvbnN0X3JlZmVyZW5jZTxUND46OnR5cGUgdDRfY3JlZjsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjphZGRfY29uc3RfcmVmZXJlbmNlPFQ1Pjo6dHlwZSB0NV9jcmVmOwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmFkZF9jb25zdF9yZWZlcmVuY2U8VDY+Ojp0eXBlIHQ2X2NyZWY7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6YWRkX2NvbnN0X3JlZmVyZW5jZTxUNz46OnR5cGUgdDdfY3JlZjsKLSAgICAgIHR5cGVkZWYgdHlwZW5hbWUgZGV0YWlsOjphZGRfY29uc3RfcmVmZXJlbmNlPFQ4Pjo6dHlwZSB0OF9jcmVmOwotICAgICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWw6OmFkZF9jb25zdF9yZWZlcmVuY2U8VDk+Ojp0eXBlIHQ5X2NyZWY7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIGRldGFpbDo6YWRkX2NvbnN0X3JlZmVyZW5jZTxUMTA+Ojp0eXBlIHQxMF9jcmVmOwotICAgIHB1YmxpYzoKLSAgICAgIHR5cGVkZWYgY29uczEgaW5oZXJpdGVkOwotICAgICAgdHlwZWRlZiB0dXBsZSBzZWxmX3R5cGU7Ci0KLSAgICAgIHR1cGxlKCkgOiBjb25zMShUMSgpLCBjb25zMihUMigpLCBjb25zMyhUMygpLCBjb25zNChUNCgpLCBjb25zNShUNSgpLCBjb25zNihUNigpLGNvbnM3KFQ3KCksY29uczgoVDgoKSxjb25zOShUOSgpLGNvbnMxMChUMTAoKSkpKSkpKSkpKSkKLSAgICAgICAge30KLQotICAgICAgdHVwbGUoCi0gICAgICAgICAgdDFfY3JlZiB0MSwKLSAgICAgICAgICB0Ml9jcmVmIHQyLAotICAgICAgICAgIHQzX2NyZWYgdDMgPSBUMygpLAotICAgICAgICAgIHQ0X2NyZWYgdDQgPSBUNCgpLAotICAgICAgICAgIHQ1X2NyZWYgdDUgPSBUNSgpLAotICAgICAgICAgIHQ2X2NyZWYgdDYgPSBUNigpLAotICAgICAgICAgIHQ3X2NyZWYgdDcgPSBUNygpLAotICAgICAgICAgIHQ4X2NyZWYgdDggPSBUOCgpLAotICAgICAgICAgIHQ5X2NyZWYgdDkgPSBUOSgpLAotICAgICAgICAgIHQxMF9jcmVmIHQxMCA9IFQxMCgpCi0gICAgICApIDoKLSAgICAgICAgY29uczEodDEsIGNvbnMyKHQyLCBjb25zMyh0MywgY29uczQodDQsIGNvbnM1KHQ1LCBjb25zNih0Nixjb25zNyh0Nyxjb25zOCh0OCxjb25zOSh0OSxjb25zMTAodDEwKSkpKSkpKSkpKQotICAgICAgewotICAgICAgfQotCi0gICAgICBleHBsaWNpdCB0dXBsZSh0MV9jcmVmIHQxKQotICAgICAgICA6IGNvbnMxKHQxLCBjb25zMihUMigpLCBjb25zMyhUMygpLCBjb25zNChUNCgpLCBjb25zNShUNSgpLCBjb25zNihUNigpLGNvbnM3KFQ3KCksY29uczgoVDgoKSxjb25zOShUOSgpLGNvbnMxMChUMTAoKSkpKSkpKSkpKSkKLSAgICAgIHt9Ci0KLSAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhlYWQsIHR5cGVuYW1lIFRhaWw+Ci0gICAgICB0dXBsZShjb25zdCBjb25zPEhlYWQsIFRhaWw+JiBvdGhlcikgOgotICAgICAgICBjb25zMShvdGhlci5oZWFkLCBvdGhlci50YWlsKQotICAgICAgewotICAgICAgfQotCi0gICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGaXJzdCwgdHlwZW5hbWUgU2Vjb25kPgotICAgICAgc2VsZl90eXBlJiBvcGVyYXRvcj0oY29uc3Qgc3RkOjpwYWlyPEZpcnN0LCBTZWNvbmQ+JiBvdGhlcikKLSAgICAgIHsKLSAgICAgICAgdGhpcy0+aGVhZCA9IG90aGVyLmZpcnN0OwotICAgICAgICB0aGlzLT50YWlsLmhlYWQgPSBvdGhlci5zZWNvbmQ7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICAgIH0KLQotICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGVhZCwgdHlwZW5hbWUgVGFpbD4KLSAgICAgIHNlbGZfdHlwZSYgb3BlcmF0b3I9KGNvbnN0IGNvbnM8SGVhZCwgVGFpbD4mIG90aGVyKQotICAgICAgewotICAgICAgICB0aGlzLT5oZWFkID0gb3RoZXIuaGVhZDsKLSAgICAgICAgdGhpcy0+dGFpbCA9IG90aGVyLnRhaWw7Ci0KLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgICAgfQotICAgIH07Ci0KLSAgICBuYW1lc3BhY2UgZGV0YWlsIHsKLQotICAgICAgdGVtcGxhdGU8aW50IE4+IHN0cnVjdCB3b3JrYXJvdW5kX2hvbGRlciB7fTsKLQotICAgIH0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi0gICAgdGVtcGxhdGU8aW50IE4sIHR5cGVuYW1lIEhlYWQsIHR5cGVuYW1lIFRhaWw+Ci0gICAgdHlwZW5hbWUgZGV0YWlsOjplbGVtZW50X3JlZjxOLCBjb25zPEhlYWQsIFRhaWw+ID46OlJFVAotICAgIGdldChjb25zPEhlYWQsIFRhaWw+JiB0LCBkZXRhaWw6Ondvcmthcm91bmRfaG9sZGVyPE4+KiA9IDApCi0gICAgewotICAgICAgcmV0dXJuIGRldGFpbDo6Z2V0X2NsYXNzPE4+OjpnZXQodCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8aW50IE4sIHR5cGVuYW1lIEhlYWQsIHR5cGVuYW1lIFRhaWw+Ci0gICAgdHlwZW5hbWUgZGV0YWlsOjplbGVtZW50X2NvbnN0X3JlZjxOLCBjb25zPEhlYWQsIFRhaWw+ID46OlJFVAotICAgIGdldChjb25zdCBjb25zPEhlYWQsIFRhaWw+JiB0LCBkZXRhaWw6Ondvcmthcm91bmRfaG9sZGVyPE4+KiA9IDApCi0gICAgewotICAgICAgcmV0dXJuIGRldGFpbDo6Z2V0X2NsYXNzPE4+OjpnZXQodCk7Ci0gICAgfQotCi0gICAgLy8gTWFrZSBhIHR1cGxlCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVDE+Ci0gICAgaW5saW5lCi0gICAgdHVwbGU8VDE+Ci0gICAgbWFrZV90dXBsZShjb25zdCBUMSYgdDEpCi0gICAgewotICAgICAgcmV0dXJuIHR1cGxlPFQxPih0MSk7Ci0gICAgfQotCi0gICAgLy8gTWFrZSBhIHR1cGxlCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotICAgIGlubGluZQotICAgIHR1cGxlPFQxLCBUMj4KLSAgICBtYWtlX3R1cGxlKGNvbnN0IFQxJiB0MSwgY29uc3QgVDImIHQyKQotICAgIHsKLSAgICAgIHJldHVybiB0dXBsZTxUMSwgVDI+KHQxLCB0Mik7Ci0gICAgfQotCi0gICAgLy8gTWFrZSBhIHR1cGxlCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMz4KLSAgICBpbmxpbmUKLSAgICB0dXBsZTxUMSwgVDIsIFQzPgotICAgIG1ha2VfdHVwbGUoY29uc3QgVDEmIHQxLCBjb25zdCBUMiYgdDIsIGNvbnN0IFQzJiB0MykKLSAgICB7Ci0gICAgICByZXR1cm4gdHVwbGU8VDEsIFQyLCBUMz4odDEsIHQyLCB0Myk7Ci0gICAgfQotCi0gICAgLy8gTWFrZSBhIHR1cGxlCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQ+Ci0gICAgaW5saW5lCi0gICAgdHVwbGU8VDEsIFQyLCBUMywgVDQ+Ci0gICAgbWFrZV90dXBsZShjb25zdCBUMSYgdDEsIGNvbnN0IFQyJiB0MiwgY29uc3QgVDMmIHQzLCBjb25zdCBUNCYgdDQpCi0gICAgewotICAgICAgcmV0dXJuIHR1cGxlPFQxLCBUMiwgVDMsIFQ0Pih0MSwgdDIsIHQzLCB0NCk7Ci0gICAgfQotCi0gICAgLy8gTWFrZSBhIHR1cGxlCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1PgotICAgIGlubGluZQotICAgIHR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNT4KLSAgICBtYWtlX3R1cGxlKGNvbnN0IFQxJiB0MSwgY29uc3QgVDImIHQyLCBjb25zdCBUMyYgdDMsIGNvbnN0IFQ0JiB0NCwgY29uc3QgVDUmIHQ1KQotICAgIHsKLSAgICAgIHJldHVybiB0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDU+KHQxLCB0MiwgdDMsIHQ0LCB0NSk7Ci0gICAgfQotCi0gICAgLy8gTWFrZSBhIHR1cGxlCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNj4KLSAgICBpbmxpbmUKLSAgICB0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2PgotICAgIG1ha2VfdHVwbGUoY29uc3QgVDEmIHQxLCBjb25zdCBUMiYgdDIsIGNvbnN0IFQzJiB0MywgY29uc3QgVDQmIHQ0LCBjb25zdCBUNSYgdDUsIGNvbnN0IFQ2JiB0NikKLSAgICB7Ci0gICAgICByZXR1cm4gdHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNj4odDEsIHQyLCB0MywgdDQsIHQ1LCB0Nik7Ci0gICAgfQotCi0gICAgLy8gTWFrZSBhIHR1cGxlCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDc+Ci0gICAgaW5saW5lCi0gICAgdHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDc+Ci0gICAgbWFrZV90dXBsZShjb25zdCBUMSYgdDEsIGNvbnN0IFQyJiB0MiwgY29uc3QgVDMmIHQzLCBjb25zdCBUNCYgdDQsIGNvbnN0IFQ1JiB0NSwgY29uc3QgVDYmIHQ2LCBjb25zdCBUNyYgdDcpCi0gICAgewotICAgICAgcmV0dXJuIHR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3Pih0MSwgdDIsIHQzLCB0NCwgdDUsIHQ2LCB0Nyk7Ci0gICAgfQotCi0gICAgLy8gTWFrZSBhIHR1cGxlCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4PgotICAgIGlubGluZQotICAgIHR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOD4KLSAgICBtYWtlX3R1cGxlKGNvbnN0IFQxJiB0MSwgY29uc3QgVDImIHQyLCBjb25zdCBUMyYgdDMsIGNvbnN0IFQ0JiB0NCwgY29uc3QgVDUmIHQ1LCBjb25zdCBUNiYgdDYsIGNvbnN0IFQ3JiB0NywgY29uc3QgVDgmIHQ4KQotICAgIHsKLSAgICAgIHJldHVybiB0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDg+KHQxLCB0MiwgdDMsIHQ0LCB0NSwgdDYsIHQ3LCB0OCk7Ci0gICAgfQotCi0gICAgLy8gTWFrZSBhIHR1cGxlCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOT4KLSAgICBpbmxpbmUKLSAgICB0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5PgotICAgIG1ha2VfdHVwbGUoY29uc3QgVDEmIHQxLCBjb25zdCBUMiYgdDIsIGNvbnN0IFQzJiB0MywgY29uc3QgVDQmIHQ0LCBjb25zdCBUNSYgdDUsIGNvbnN0IFQ2JiB0NiwgY29uc3QgVDcmIHQ3LCBjb25zdCBUOCYgdDgsIGNvbnN0IFQ5JiB0OSkKLSAgICB7Ci0gICAgICByZXR1cm4gdHVwbGU8VDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOT4odDEsIHQyLCB0MywgdDQsIHQ1LCB0NiwgdDcsIHQ4LCB0OSk7Ci0gICAgfQotCi0gICAgLy8gTWFrZSBhIHR1cGxlCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwPgotICAgIGlubGluZQotICAgIHR1cGxlPFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDksIFQxMD4KLSAgICBtYWtlX3R1cGxlKGNvbnN0IFQxJiB0MSwgY29uc3QgVDImIHQyLCBjb25zdCBUMyYgdDMsIGNvbnN0IFQ0JiB0NCwgY29uc3QgVDUmIHQ1LCBjb25zdCBUNiYgdDYsIGNvbnN0IFQ3JiB0NywgY29uc3QgVDgmIHQ4LCBjb25zdCBUOSYgdDksIGNvbnN0IFQxMCYgdDEwKQotICAgIHsKLSAgICAgIHJldHVybiB0dXBsZTxUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTA+KHQxLCB0MiwgdDMsIHQ0LCB0NSwgdDYsIHQ3LCB0OCwgdDksIHQxMCk7Ci0gICAgfQotCi0gICAgLy8gVGllIHZhcmlhYmxlcyBpbnRvIGEgdHVwbGUKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUMT4KLSAgICBpbmxpbmUKLSAgICB0dXBsZTxkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQxPiA+Ci0gICAgdGllKFQxJiB0MSkKLSAgICB7Ci0gICAgICByZXR1cm4gbWFrZV90dXBsZShkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQxPigmdDEpKTsKLSAgICB9Ci0KLSAgICAvLyBUaWUgdmFyaWFibGVzIGludG8gYSB0dXBsZQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KLSAgICBpbmxpbmUKLSAgICB0dXBsZTxkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQxPiwKLSAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDI+ID4KLSAgICB0aWUoVDEmIHQxLCBUMiYgdDIpCi0gICAgewotICAgICAgcmV0dXJuIG1ha2VfdHVwbGUoZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUMT4oJnQxKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDI+KCZ0MikpOwotICAgIH0KLQotICAgIC8vIFRpZSB2YXJpYWJsZXMgaW50byBhIHR1cGxlCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMz4KLSAgICBpbmxpbmUKLSAgICB0dXBsZTxkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQxPiwKLSAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDI+LAotICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUMz4gPgotICAgIHRpZShUMSYgdDEsIFQyJiB0MiwgVDMmIHQzKQotICAgIHsKLSAgICAgIHJldHVybiBtYWtlX3R1cGxlKGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDE+KCZ0MSksCi0gICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQyPigmdDIpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUMz4oJnQzKSk7Ci0gICAgfQotCi0gICAgLy8gVGllIHZhcmlhYmxlcyBpbnRvIGEgdHVwbGUKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUND4KLSAgICBpbmxpbmUKLSAgICB0dXBsZTxkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQxPiwKLSAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDI+LAotICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUMz4sCi0gICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQ0PiA+Ci0gICAgdGllKFQxJiB0MSwgVDImIHQyLCBUMyYgdDMsIFQ0JiB0NCkKLSAgICB7Ci0gICAgICByZXR1cm4gbWFrZV90dXBsZShkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQxPigmdDEpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUMj4oJnQyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDM+KCZ0MyksCi0gICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQ0PigmdDQpKTsKLSAgICB9Ci0KLSAgICAvLyBUaWUgdmFyaWFibGVzIGludG8gYSB0dXBsZQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNT4KLSAgICBpbmxpbmUKLSAgICB0dXBsZTxkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQxPiwKLSAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDI+LAotICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUMz4sCi0gICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQ0PiwKLSAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDU+ID4KLSAgICB0aWUoVDEmIHQxLCBUMiYgdDIsIFQzJiB0MywgVDQmIHQ0LCBUNSAmdDUpCi0gICAgewotICAgICAgcmV0dXJuIG1ha2VfdHVwbGUoZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUMT4oJnQxKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDI+KCZ0MiksCi0gICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQzPigmdDMpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUND4oJnQ0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDU+KCZ0NSkpOwotICAgIH0KLQotICAgIC8vIFRpZSB2YXJpYWJsZXMgaW50byBhIHR1cGxlCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNj4KLSAgICBpbmxpbmUKLSAgICB0dXBsZTxkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQxPiwKLSAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDI+LAotICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUMz4sCi0gICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQ0PiwKLSAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDU+LAotICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUNj4gPgotICAgIHRpZShUMSYgdDEsIFQyJiB0MiwgVDMmIHQzLCBUNCYgdDQsIFQ1ICZ0NSwgVDYgJnQ2KQotICAgIHsKLSAgICAgIHJldHVybiBtYWtlX3R1cGxlKGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDE+KCZ0MSksCi0gICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQyPigmdDIpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUMz4oJnQzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDQ+KCZ0NCksCi0gICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQ1PigmdDUpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUNj4oJnQ2KSk7Ci0gICAgfQotCi0gICAgLy8gVGllIHZhcmlhYmxlcyBpbnRvIGEgdHVwbGUKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNz4KLSAgICBpbmxpbmUKLSAgICB0dXBsZTxkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQxPiwKLSAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDI+LAotICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUMz4sCi0gICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQ0PiwKLSAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDU+LAotICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUNj4sCi0gICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQ3PiA+Ci0gICAgdGllKFQxJiB0MSwgVDImIHQyLCBUMyYgdDMsIFQ0JiB0NCwgVDUgJnQ1LCBUNiAmdDYsIFQ3ICZ0NykKLSAgICB7Ci0gICAgICByZXR1cm4gbWFrZV90dXBsZShkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQxPigmdDEpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUMj4oJnQyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDM+KCZ0MyksCi0gICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQ0PigmdDQpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUNT4oJnQ1KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDY+KCZ0NiksCi0gICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQ3PigmdDcpKTsKLSAgICB9Ci0KLSAgICAvLyBUaWUgdmFyaWFibGVzIGludG8gYSB0dXBsZQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOD4KLSAgICBpbmxpbmUKLSAgICB0dXBsZTxkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQxPiwKLSAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDI+LAotICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUMz4sCi0gICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQ0PiwKLSAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDU+LAotICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUNj4sCi0gICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQ3PiwKLSAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDg+ID4KLSAgICB0aWUoVDEmIHQxLCBUMiYgdDIsIFQzJiB0MywgVDQmIHQ0LCBUNSAmdDUsIFQ2ICZ0NiwgVDcgJnQ3LCBUOCAmdDgpCi0gICAgewotICAgICAgcmV0dXJuIG1ha2VfdHVwbGUoZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUMT4oJnQxKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDI+KCZ0MiksCi0gICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQzPigmdDMpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUND4oJnQ0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDU+KCZ0NSksCi0gICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQ2PigmdDYpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUNz4oJnQ3KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDg+KCZ0OCkpOwotICAgIH0KLQotICAgIC8vIFRpZSB2YXJpYWJsZXMgaW50byBhIHR1cGxlCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOT4KLSAgICBpbmxpbmUKLSAgICB0dXBsZTxkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQxPiwKLSAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDI+LAotICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUMz4sCi0gICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQ0PiwKLSAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDU+LAotICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUNj4sCi0gICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQ3PiwKLSAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDg+LAotICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUOT4gPgotICAgIHRpZShUMSYgdDEsIFQyJiB0MiwgVDMmIHQzLCBUNCYgdDQsIFQ1ICZ0NSwgVDYgJnQ2LCBUNyAmdDcsIFQ4ICZ0OCwgVDkgJnQ5KQotICAgIHsKLSAgICAgIHJldHVybiBtYWtlX3R1cGxlKGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDE+KCZ0MSksCi0gICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQyPigmdDIpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUMz4oJnQzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDQ+KCZ0NCksCi0gICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQ1PigmdDUpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUNj4oJnQ2KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDc+KCZ0NyksCi0gICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQ4PigmdDgpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUOT4oJnQ5KSk7Ci0gICAgfQotICAgIC8vIFRpZSB2YXJpYWJsZXMgaW50byBhIHR1cGxlCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwgdHlwZW5hbWUgVDEwPgotICAgIGlubGluZQotICAgIHR1cGxlPGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDE+LAotICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUMj4sCi0gICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQzPiwKLSAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDQ+LAotICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUNT4sCi0gICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQ2PiwKLSAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDc+LAotICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUOD4sCi0gICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQ5PiwKLSAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDEwPiA+Ci0gICAgdGllKFQxJiB0MSwgVDImIHQyLCBUMyYgdDMsIFQ0JiB0NCwgVDUgJnQ1LCBUNiAmdDYsIFQ3ICZ0NywgVDggJnQ4LCBUOSAmdDksIFQxMCAmdDEwKQotICAgIHsKLSAgICAgIHJldHVybiBtYWtlX3R1cGxlKGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDE+KCZ0MSksCi0gICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQyPigmdDIpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUMz4oJnQzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDQ+KCZ0NCksCi0gICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQ1PigmdDUpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUNj4oJnQ2KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDc+KCZ0NyksCi0gICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWw6OmFzc2lnbl90b19wb2ludGVlPFQ4PigmdDgpLAotICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsOjphc3NpZ25fdG9fcG9pbnRlZTxUOT4oJnQ5KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDo6YXNzaWduX3RvX3BvaW50ZWU8VDEwPigmdDEwKSk7Ci0gICAgfQotICAgIC8vICJpZ25vcmUiIGFsbG93cyB0dXBsZSBwb3NpdGlvbnMgdG8gYmUgaWdub3JlZCB3aGVuIHVzaW5nICJ0aWUiLgotCi1kZXRhaWw6OnN3YWxsb3dfYXNzaWduIGNvbnN0IGlnbm9yZSA9IGRldGFpbDo6c3dhbGxvd19hc3NpZ24oKTsKLQotdGVtcGxhdGUgPGNsYXNzIFQwLCBjbGFzcyBUMSwgY2xhc3MgVDIsIGNsYXNzIFQzLCBjbGFzcyBUNCwKLSAgICAgICAgICBjbGFzcyBUNSwgY2xhc3MgVDYsIGNsYXNzIFQ3LCBjbGFzcyBUOCwgY2xhc3MgVDk+Ci12b2lkIHN3YXAodHVwbGU8VDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDk+JiBsaHMsCi0gICAgICAgICAgdHVwbGU8VDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDk+JiByaHMpOwotaW5saW5lIHZvaWQgc3dhcChudWxsX3R5cGUmLCBudWxsX3R5cGUmKSB7fQotdGVtcGxhdGU8Y2xhc3MgSEg+Ci1pbmxpbmUgdm9pZCBzd2FwKGNvbnM8SEgsIG51bGxfdHlwZT4mIGxocywgY29uczxISCwgbnVsbF90eXBlPiYgcmhzKSB7Ci0gIDo6bmRuYm9vc3Q6OnN3YXAobGhzLmhlYWQsIHJocy5oZWFkKTsKLX0KLXRlbXBsYXRlPGNsYXNzIEhILCBjbGFzcyBUVD4KLWlubGluZSB2b2lkIHN3YXAoY29uczxISCwgVFQ+JiBsaHMsIGNvbnM8SEgsIFRUPiYgcmhzKSB7Ci0gIDo6bmRuYm9vc3Q6OnN3YXAobGhzLmhlYWQsIHJocy5oZWFkKTsKLSAgOjpuZG5ib29zdDo6dHVwbGVzOjpzd2FwKGxocy50YWlsLCByaHMudGFpbCk7Ci19Ci10ZW1wbGF0ZSA8Y2xhc3MgVDAsIGNsYXNzIFQxLCBjbGFzcyBUMiwgY2xhc3MgVDMsIGNsYXNzIFQ0LAotICAgICAgICAgIGNsYXNzIFQ1LCBjbGFzcyBUNiwgY2xhc3MgVDcsIGNsYXNzIFQ4LCBjbGFzcyBUOT4KLWlubGluZSB2b2lkIHN3YXAodHVwbGU8VDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDk+JiBsaHMsCi0gICAgICAgICAgdHVwbGU8VDAsIFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3LCBUOCwgVDk+JiByaHMpIHsKLSAgdHlwZWRlZiB0dXBsZTxUMCwgVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOT4gdHVwbGVfdHlwZTsKLSAgdHlwZWRlZiB0eXBlbmFtZSB0dXBsZV90eXBlOjppbmhlcml0ZWQgYmFzZTsKLSAgOjpuZG5ib29zdDo6dHVwbGVzOjpzd2FwKHN0YXRpY19jYXN0PGJhc2UmPihsaHMpLCBzdGF0aWNfY2FzdDxiYXNlJj4ocmhzKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIHR1cGxlcwotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLSNlbmRpZiAvLyBORE5CT09TVF9UVVBMRV9CQVNJQ19OT19QQVJUSUFMX1NQRUNfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R1cGxlL3R1cGxlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHVwbGUvdHVwbGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MGI1ODA0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHVwbGUvdHVwbGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTAgKzAsMCBAQAotLy8gIHR1cGxlLmhwcCAtIEJvb3N0IFR1cGxlIExpYnJhcnkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8gQ29weXJpZ2h0IChDKSAxOTk5LCAyMDAwIEphYWtrbyBKYXJ2aSAoamFha2tvLmphcnZpQGNzLnV0dS5maSkKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcKLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gCi0KLSNpZm5kZWYgTkROQk9PU1RfVFVQTEVfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1RVUExFX0hQUAotCi0jaWYgZGVmaW5lZChfX3NnaSkgJiYgZGVmaW5lZChfQ09NUElMRVJfVkVSU0lPTikgJiYgX0NPTVBJTEVSX1ZFUlNJT04gPD0gNzMwCi0vLyBXb3JrIGFyb3VuZCBhIGNvbXBpbGVyIGJ1Zy4KLS8vIG5kbmJvb3N0OjpweXRob246OnR1cGxlIGhhcyB0byBiZSBzZWVuIGJ5IHRoZSBjb21waWxlciBiZWZvcmUgdGhlCi0vLyBuZG5ib29zdDo6dHVwbGUgY2xhc3MgdGVtcGxhdGUuCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgcHl0aG9uIHsgY2xhc3MgdHVwbGU7IH19Ci0jZW5kaWYKLQotI2luY2x1ZGUgIm5kbmJvb3N0L2NvbmZpZy5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3Qvc3RhdGljX2Fzc2VydC5ocHAiCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi0vLyBUaGUgTVNWQyB2ZXJzaW9uCi0jaW5jbHVkZSAibmRuYm9vc3QvdHVwbGUvZGV0YWlsL3R1cGxlX2Jhc2ljX25vX3BhcnRpYWxfc3BlYy5ocHAiCi0KLSNlbHNlCi0vLyBvdGhlciBjb21waWxlcnMKLSNpbmNsdWRlICJuZG5ib29zdC9yZWYuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R1cGxlL2RldGFpbC90dXBsZV9iYXNpYy5ocHAiCi0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7ICAgIAotCi11c2luZyB0dXBsZXM6OnR1cGxlOwotdXNpbmcgdHVwbGVzOjptYWtlX3R1cGxlOwotdXNpbmcgdHVwbGVzOjp0aWU7Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVVNJTkdfVEVNUExBVEUpCi11c2luZyB0dXBsZXM6OmdldDsKLSNlbGlmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi0vLwotLy8gVGhlICJ1c2luZyB0dXBsZXM6OmdldCIgc3RhdGVtZW50IGNhdXNlcyB0aGUKLS8vIEJvcmxhbmQgY29tcGlsZXIgdG8gSUNFLCB1c2UgZm9yd2FyZGluZwotLy8gZnVuY3Rpb25zIGluc3RlYWQ6Ci0vLwotdGVtcGxhdGU8aW50IE4sIGNsYXNzIEhULCBjbGFzcyBUVD4KLWlubGluZSB0eXBlbmFtZSB0dXBsZXM6OmFjY2Vzc190cmFpdHM8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSB0dXBsZXM6OmVsZW1lbnQ8TiwgdHVwbGVzOjpjb25zPEhULCBUVD4gPjo6dHlwZQotICAgICAgICAgICAgICAgID46Om5vbl9jb25zdF90eXBlCi1nZXQodHVwbGVzOjpjb25zPEhULCBUVD4mIGMpIHsKLSAgcmV0dXJuIHR1cGxlczo6Z2V0PE4sSFQsVFQ+KGMpOwotfSAKLS8vIGdldCBmdW5jdGlvbiBmb3IgY29uc3QgY29ucy1saXN0cywgcmV0dXJucyBhIGNvbnN0IHJlZmVyZW5jZSB0bwotLy8gdGhlIGVsZW1lbnQuIElmIHRoZSBlbGVtZW50IGlzIGEgcmVmZXJlbmNlLCByZXR1cm5zIHRoZSByZWZlcmVuY2UKLS8vIGFzIHN1Y2ggKHRoYXQgaXMsIGNhbiByZXR1cm4gYSBub24tY29uc3QgcmVmZXJlbmNlKQotdGVtcGxhdGU8aW50IE4sIGNsYXNzIEhULCBjbGFzcyBUVD4KLWlubGluZSB0eXBlbmFtZSB0dXBsZXM6OmFjY2Vzc190cmFpdHM8Ci0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSB0dXBsZXM6OmVsZW1lbnQ8TiwgdHVwbGVzOjpjb25zPEhULCBUVD4gPjo6dHlwZQotICAgICAgICAgICAgICAgID46OmNvbnN0X3R5cGUKLWdldChjb25zdCB0dXBsZXM6OmNvbnM8SFQsIFRUPiYgYykgewotICByZXR1cm4gdHVwbGVzOjpnZXQ8TixIVCxUVD4oYyk7Ci19Ci0jZWxzZSAgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotLy8KLS8vIE1TVkMsIHVzaW5nIGRlY2xhcmF0aW9ucyBkb24ndCBtaXggd2l0aCB0ZW1wbGF0ZXMgd2VsbCwKLS8vIHNvIHVzZSBmb3J3YXJkaW5nIGZ1bmN0aW9ucyBpbnN0ZWFkOgotLy8KLXRlbXBsYXRlPGludCBOLCB0eXBlbmFtZSBIZWFkLCB0eXBlbmFtZSBUYWlsPgotdHlwZW5hbWUgdHVwbGVzOjpkZXRhaWw6OmVsZW1lbnRfcmVmPE4sIHR1cGxlczo6Y29uczxIZWFkLCBUYWlsPiA+OjpSRVQKLWdldCh0dXBsZXM6OmNvbnM8SGVhZCwgVGFpbD4mIHQsIHR1cGxlczo6ZGV0YWlsOjp3b3JrYXJvdW5kX2hvbGRlcjxOPiogPSAwKQotewotICAgcmV0dXJuIHR1cGxlczo6ZGV0YWlsOjpnZXRfY2xhc3M8Tj46OmdldCh0KTsKLX0KLQotdGVtcGxhdGU8aW50IE4sIHR5cGVuYW1lIEhlYWQsIHR5cGVuYW1lIFRhaWw+Ci10eXBlbmFtZSB0dXBsZXM6OmRldGFpbDo6ZWxlbWVudF9jb25zdF9yZWY8TiwgdHVwbGVzOjpjb25zPEhlYWQsIFRhaWw+ID46OlJFVAotZ2V0KGNvbnN0IHR1cGxlczo6Y29uczxIZWFkLCBUYWlsPiYgdCwgdHVwbGVzOjpkZXRhaWw6Ondvcmthcm91bmRfaG9sZGVyPE4+KiA9IDApCi17Ci0gICByZXR1cm4gdHVwbGVzOjpkZXRhaWw6OmdldF9jbGFzczxOPjo6Z2V0KHQpOwotfQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1VTSU5HX1RFTVBMQVRFCi0gICAKLX0gLy8gZW5kIG5hbWVzcGFjZSBuZG5ib29zdAotCi0KLSNlbmRpZiAvLyBORE5CT09TVF9UVVBMRV9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4OWIzNWY5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi0vLyAoQykgQ29weXJpZ2h0IERhdmlkIEFicmFoYW1zIDIwMDEuCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpZm5kZWYgTkROQk9PU1RfVFlQRV9ORE5CT09TVF9EV0EyMDAxMDEyMF9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1RZUEVfTkROQk9PU1RfRFdBMjAwMTAxMjBfSFBQCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLSAgLy8gSnVzdCBhIHNpbXBsZSAidHlwZSBlbnZlbG9wZSIuIFVzZWZ1bCBpbiB2YXJpb3VzIGNvbnRleHRzLCBtb3N0bHkgdG8gd29yawotICAvLyBhcm91bmQgc29tZSBNU1ZDIGRlZmljaWVuY2llcy4KLSAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gIHN0cnVjdCB0eXBlIHt9OwotCi19Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UWVBFX05ETkJPT1NUX0RXQTIwMDEwMTIwX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTBjY2NlYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwMCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwMC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLS8vICBTZWUgbmRuYm9vc3QvdHlwZV90cmFpdHMvKi5ocHAgZm9yIGZ1bGwgY29weXJpZ2h0IG5vdGljZXMuCi0KLSNpZm5kZWYgTkROQk9PU1RfVFlQRV9UUkFJVFNfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVfVFJBSVRTX0hQUAotCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX2NvbnN0LmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfY3YuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2FkZF9sdmFsdWVfcmVmZXJlbmNlLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfcG9pbnRlci5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX3JlZmVyZW5jZS5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX3J2YWx1ZV9yZWZlcmVuY2UuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2FkZF92b2xhdGlsZS5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvYWxpZ25lZF9zdG9yYWdlLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9hbGlnbm1lbnRfb2YuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2NvbW1vbl90eXBlLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9jb25kaXRpb25hbC5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvZGVjYXkuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2V4dGVudC5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvZmxvYXRpbmdfcG9pbnRfcHJvbW90aW9uLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9mdW5jdGlvbl90cmFpdHMuaHBwIgotI2lmICFkZWZpbmVkKF9fQk9STEFORENfXykgJiYgIWRlZmluZWQoX19DVURBQ0NfXykKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbmV3X29wZXJhdG9yLmhwcCIKLSNlbmRpZgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19ub3Rocm93X2Fzc2lnbi5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX25vdGhyb3dfY29uc3RydWN0b3IuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19ub3Rocm93X2NvcHkuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19ub3Rocm93X2Rlc3RydWN0b3IuaHBwIgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19vcGVyYXRvci5ocHA+Ci0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3RyaXZpYWxfYXNzaWduLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfdHJpdmlhbF9jb25zdHJ1Y3Rvci5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3RyaXZpYWxfY29weS5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3RyaXZpYWxfZGVzdHJ1Y3Rvci5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3RyaXZpYWxfbW92ZV9hc3NpZ24uaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc190cml2aWFsX21vdmVfY29uc3RydWN0b3IuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc192aXJ0dWFsX2Rlc3RydWN0b3IuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Fic3RyYWN0LmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9pc19hcml0aG1ldGljLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9pc19hcnJheS5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYmFzZV9hbmRfZGVyaXZlZC5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYmFzZV9vZi5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY2xhc3MuaHBwIgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbXBsZXguaHBwPgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbXBvdW5kLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb25zdC5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29udmVydGlibGUuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2VtcHR5LmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9pc19lbnVtLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9pc19mbG9hdC5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfZmxvYXRpbmdfcG9pbnQuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Z1bmN0aW9uLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9pc19mdW5kYW1lbnRhbC5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfaW50ZWdyYWwuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2x2YWx1ZV9yZWZlcmVuY2UuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX21lbWJlcl9mdW5jdGlvbl9wb2ludGVyLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9pc19tZW1iZXJfb2JqZWN0X3BvaW50ZXIuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX21lbWJlcl9wb2ludGVyLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9pc19ub3Rocm93X21vdmVfYXNzaWduYWJsZS5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfbm90aHJvd19tb3ZlX2NvbnN0cnVjdGlibGUuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX29iamVjdC5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcG9kLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9pc19wb2x5bW9ycGhpYy5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcG9pbnRlci5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcmVmZXJlbmNlLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9pc19ydmFsdWVfcmVmZXJlbmNlLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zaWduZWQuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NhbWUuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NjYWxhci5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc3RhdGVsZXNzLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9pc191bmlvbi5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfdW5zaWduZWQuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3ZvaWQuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3ZpcnR1YWxfYmFzZV9vZi5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfdm9sYXRpbGUuaHBwIgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL21ha2VfdW5zaWduZWQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL21ha2Vfc2lnbmVkLmhwcD4KLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9yYW5rLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfYm91bmRzLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfZXh0ZW50LmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfYWxsX2V4dGVudHMuaHBwIgotI2luY2x1ZGUgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9jb25zdC5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2N2LmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfcG9pbnRlci5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX3JlZmVyZW5jZS5ocHAiCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX3ZvbGF0aWxlLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy90eXBlX3dpdGhfYWxpZ25tZW50LmhwcCIKLSNpZiAhKGRlZmluZWQoX19zZ2kpICYmIGRlZmluZWQoX19FREdfVkVSU0lPTl9fKSAmJiAoX19FREdfVkVSU0lPTl9fID09IDIzOCkpCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaW50ZWdyYWxfcHJvbW90aW9uLmhwcCIKLSNpbmNsdWRlICJuZG5ib29zdC90eXBlX3RyYWl0cy9wcm9tb3RlLmhwcCIKLSNlbmRpZgotCi0jaW5jbHVkZSAibmRuYm9vc3QvdHlwZV90cmFpdHMvaWNlLmhwcCIKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RZUEVfVFJBSVRTX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfY29uc3QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfY29uc3QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0N2M1ZWQwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX2NvbnN0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgRGF2ZSBBYnJhaGFtcywgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgSG93YXJkCi0vLyAgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9BRERfQ09OU1RfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0FERF9DT05TVF9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90eXBlX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLS8vICogY29udmVydCBhIHR5cGUgVCB0byBjb25zdCB0eXBlIC0gYWRkX2NvbnN0PFQ+Ci0vLyB0aGlzIGlzIG5vdCByZXF1aXJlZCBzaW5jZSB0aGUgcmVzdWx0IGlzIGFsd2F5cwotLy8gdGhlIHNhbWUgYXMgIlQgY29uc3QiLCBidXQgaXQgZG9lcyBzdXBwcmVzcyB3YXJuaW5ncwotLy8gZnJvbSBzb21lIGNvbXBpbGVyczoKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVNWQykKLS8vIFRoaXMgYm9ndXMgd2FybmluZyB3aWxsIGFwcGVhciB3aGVuIGFkZF9jb25zdCBpcyBhcHBsaWVkIHRvIGEKLS8vIGNvbnN0IHZvbGF0aWxlIHJlZmVyZW5jZSBiZWNhdXNlIHdlIGNhbid0IGRldGVjdCBjb25zdCB2b2xhdGlsZQotLy8gcmVmZXJlbmNlcyB3aXRoIE1TVkM2LgotIyAgIHByYWdtYSB3YXJuaW5nKHB1c2gpCi0jICAgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MTgxKSAvLyB3YXJuaW5nIEM0MTgxOiBxdWFsaWZpZXIgYXBwbGllZCB0byByZWZlcmVuY2UgdHlwZSBpZ25vcmVkCi0jZW5kaWYgCi0KLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX0RFRjEoYWRkX2NvbnN0LFQsVCBjb25zdCkKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVNWQykKLSMgICBwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYgCi0KLSNpZm5kZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfUEFSVElBTF9TUEVDMV8xKHR5cGVuYW1lIFQsYWRkX2NvbnN0LFQmLFQmKQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdHlwZV90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9BRERfQ09OU1RfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2FkZF9jdi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2FkZF9jdi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhjZDU2ZDguLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfY3YuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBEYXZlIEFicmFoYW1zLCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCBIb3dhcmQKLS8vICBIaW5uYW50ICYgSm9obiBNYWRkb2NrIDIwMDAuICAKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLQotI2lmbmRlZiBORE5CT09TVF9UVF9BRERfQ1ZfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0FERF9DVl9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90eXBlX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLS8vICogY29udmVydCBhIHR5cGUgVCB0byBhIGNvbnN0IHZvbGF0aWxlIHR5cGUgLSBhZGRfY3Y8VD4KLS8vIHRoaXMgaXMgbm90IHJlcXVpcmVkIHNpbmNlIHRoZSByZXN1bHQgaXMgYWx3YXlzCi0vLyB0aGUgc2FtZSBhcyAiVCBjb25zdCB2b2xhdGlsZSIsIGJ1dCBpdCBkb2VzIHN1cHByZXNzIHdhcm5pbmdzCi0vLyBmcm9tIHNvbWUgY29tcGlsZXJzOgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKQotLy8gVGhpcyBib2d1cyB3YXJuaW5nIHdpbGwgYXBwZWFyIHdoZW4gYWRkX3ZvbGF0aWxlIGlzIGFwcGxpZWQgdG8gYQotLy8gY29uc3Qgdm9sYXRpbGUgcmVmZXJlbmNlIGJlY2F1c2Ugd2UgY2FuJ3QgZGV0ZWN0IGNvbnN0IHZvbGF0aWxlCi0vLyByZWZlcmVuY2VzIHdpdGggTVNWQzYuCi0jICAgcHJhZ21hIHdhcm5pbmcocHVzaCkKLSMgICBwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQxODEpIC8vIHdhcm5pbmcgQzQxODE6IHF1YWxpZmllciBhcHBsaWVkIHRvIHJlZmVyZW5jZSB0eXBlIGlnbm9yZWQKLSNlbmRpZiAKLQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfREVGMShhZGRfY3YsVCxUIGNvbnN0IHZvbGF0aWxlKQotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKQotIyAgIHByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZiAKLQotI2lmbmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9QQVJUSUFMX1NQRUMxXzEodHlwZW5hbWUgVCxhZGRfY3YsVCYsVCYpCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90eXBlX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0FERF9DVl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX2x2YWx1ZV9yZWZlcmVuY2UuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfbHZhbHVlX3JlZmVyZW5jZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5MmVmYzUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfbHZhbHVlX3JlZmVyZW5jZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi0vLyAgQ29weXJpZ2h0IDIwMTAgSm9obiBNYWRkb2NrCi0KLS8vICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dAotCi0jaWZuZGVmIE5ETkJPT1NUX1RZUEVfVFJBSVRTX0VYVF9BRERfTFZBTFVFX1JFRkVSRU5DRV9fSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVfVFJBSVRTX0VYVF9BRERfTFZBTFVFX1JFRkVSRU5DRV9fSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfcmVmZXJlbmNlLmhwcD4KLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3R5cGVfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0ewotCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9ERUYxKGFkZF9sdmFsdWVfcmVmZXJlbmNlLFQsdHlwZW5hbWUgbmRuYm9vc3Q6OmFkZF9yZWZlcmVuY2U8VD46OnR5cGUpCi0KLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMKLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX1BBUlRJQUxfU1BFQzFfMSh0eXBlbmFtZSBULGFkZF9sdmFsdWVfcmVmZXJlbmNlLFQmJixUJikKLSNlbmRpZgotCi19Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdHlwZV90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAgLy8gTkROQk9PU1RfVFlQRV9UUkFJVFNfRVhUX0FERF9MVkFMVUVfUkVGRVJFTkNFX19IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX3BvaW50ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfcG9pbnRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcyNmY2MGIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfcG9pbnRlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MiArMCwwIEBACi0KLS8vIChDKSBDb3B5cmlnaHQgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgSG93YXJkIEhpbm5hbnQgJiBKb2huIE1hZGRvY2sgMjAwMC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfQUREX1BPSU5URVJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0FERF9QT0lOVEVSX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX3JlZmVyZW5jZS5ocHA+Ci0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90eXBlX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi0jaWYgZGVmaW5lZChfX0JPUkxBTkRDX18pICYmIChfX0JPUkxBTkRDX18gPCAweDVBMCkKLS8vCi0vLyBGb3Igc29tZSByZWFzb24gdGhpcyBpbXBsZW1lbnRhdGlvbiBzdG9wcyBCb3JsYW5kcyBjb21waWxlcgotLy8gZnJvbSBkcm9wcGluZyBjdi1xdWFsaWZpZXJzLCBpdCBzdGlsbCBmYWlscyB3aXRoIHJlZmVyZW5jZXMKLS8vIHRvIGFycmF5cyBmb3Igc29tZSByZWFzb24gdGhvdWdoIChzaHJ1Zy4uLikgKEpNIDIwMDIxMTA0KQotLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGFkZF9wb2ludGVyX2ltcGwKLXsKLSAgICB0eXBlZGVmIFQqIHR5cGU7Ci19OwotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgYWRkX3BvaW50ZXJfaW1wbDxUJj4KLXsKLSAgICB0eXBlZGVmIFQqIHR5cGU7Ci19OwotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgYWRkX3BvaW50ZXJfaW1wbDxUJmNvbnN0PgotewotICAgIHR5cGVkZWYgVCogdHlwZTsKLX07Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBhZGRfcG9pbnRlcl9pbXBsPFQmdm9sYXRpbGU+Ci17Ci0gICAgdHlwZWRlZiBUKiB0eXBlOwotfTsKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGFkZF9wb2ludGVyX2ltcGw8VCZjb25zdCB2b2xhdGlsZT4KLXsKLSAgICB0eXBlZGVmIFQqIHR5cGU7Ci19OwotCi0jZWxzZQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBhZGRfcG9pbnRlcl9pbXBsCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSByZW1vdmVfcmVmZXJlbmNlPFQ+Ojp0eXBlIG5vX3JlZl90eXBlOwotICAgIHR5cGVkZWYgbm9fcmVmX3R5cGUqIHR5cGU7Ci19OwotCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX0RFRjEoYWRkX3BvaW50ZXIsVCx0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjphZGRfcG9pbnRlcl9pbXBsPFQ+Ojp0eXBlKQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3R5cGVfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfQUREX1BPSU5URVJfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2FkZF9yZWZlcmVuY2UuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfcmVmZXJlbmNlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTkzYjhiYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2FkZF9yZWZlcmVuY2UuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTA3ICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgSG93YXJkIEhpbm5hbnQgJiBKb2huIE1hZGRvY2sgMjAwMC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfQUREX1JFRkVSRU5DRV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfQUREX1JFRkVSRU5DRV9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3JlZmVyZW5jZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90eXBlX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKSAmJiBkZWZpbmVkKE5ETkJPT1NUX01TVkM2X01FTUJFUl9URU1QTEFURVMpCi0KLXRlbXBsYXRlIDxib29sIHg+Ci1zdHJ1Y3QgcmVmZXJlbmNlX2FkZGVyCi17Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIFQmIHR5cGU7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgcmVmZXJlbmNlX2FkZGVyPHRydWU+Ci17Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgYWRkX3JlZmVyZW5jZV9pbXBsCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSByZWZlcmVuY2VfYWRkZXI8Ci0gICAgICAgICAgOjpuZG5ib29zdDo6aXNfcmVmZXJlbmNlPFQ+Ojp2YWx1ZQotICAgICAgICA+Ojp0ZW1wbGF0ZSByZXN1bHRfPFQ+IHJlc3VsdDsKLQotICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVzdWx0Ojp0eXBlIHR5cGU7Ci19OwotCi0jZWxzZQotLy8KLS8vIFdlIGNhbid0IGZpbHRlciBvdXQgcnZhbHVlX3JlZmVyZW5jZXMgYXQgdGhlIHNhbWUgbGV2ZWwgYXMKLS8vIHJlZmVyZW5jZXMgb3Igd2UgZ2V0IGFtYmlndWl0aWVzIGZyb20gbXN2YzoKLS8vCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGFkZF9yZWZlcmVuY2VfcnZhbHVlX2xheWVyCi17Ci0gICAgdHlwZWRlZiBUJiB0eXBlOwotfTsKLQotI2lmbmRlZiBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUwotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgYWRkX3JlZmVyZW5jZV9ydmFsdWVfbGF5ZXI8VCYmPgotewotICAgIHR5cGVkZWYgVCYmIHR5cGU7Ci19OwotI2VuZGlmCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGFkZF9yZWZlcmVuY2VfaW1wbAotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgYWRkX3JlZmVyZW5jZV9ydmFsdWVfbGF5ZXI8VD46OnR5cGUgdHlwZTsKLX07Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfSU1QTF9QQVJUSUFMX1NQRUMxXzEodHlwZW5hbWUgVCxhZGRfcmVmZXJlbmNlLFQmLFQmKQotI2VuZGlmCi0KLSNlbmRpZgotCi0vLyB0aGVzZSBmdWxsIHNwZWNpYWxpc2F0aW9ucyBhcmUgYWx3YXlzIHJlcXVpcmVkOgotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfSU1QTF9TUEVDMShhZGRfcmVmZXJlbmNlLHZvaWQsdm9pZCkKLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1ZfVk9JRF9TUEVDSUFMSVpBVElPTlMKLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX0lNUExfU1BFQzEoYWRkX3JlZmVyZW5jZSx2b2lkIGNvbnN0LHZvaWQgY29uc3QpCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9JTVBMX1NQRUMxKGFkZF9yZWZlcmVuY2Usdm9pZCB2b2xhdGlsZSx2b2lkIHZvbGF0aWxlKQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfSU1QTF9TUEVDMShhZGRfcmVmZXJlbmNlLHZvaWQgY29uc3Qgdm9sYXRpbGUsdm9pZCBjb25zdCB2b2xhdGlsZSkKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfREVGMShhZGRfcmVmZXJlbmNlLFQsdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6YWRkX3JlZmVyZW5jZV9pbXBsPFQ+Ojp0eXBlKQotCi0vLyBhZ3VydCwgMDcvbWFyLzAzOiB3b3JrYXJvdW5kIEJvcmxhbmQncyBpbGwtZm9ybWVkIHNlbnNpdGl2aXR5IHRvIGFuIGFkZGl0aW9uYWwKLS8vIGxldmVsIG9mIGluZGlyZWN0aW9uLCBoZXJlCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIDwgMHg2MDApCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9QQVJUSUFMX1NQRUMxXzEodHlwZW5hbWUgVCxhZGRfcmVmZXJlbmNlLFQmLFQmKQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdHlwZV90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9BRERfUkVGRVJFTkNFX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfcnZhbHVlX3JlZmVyZW5jZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2FkZF9ydmFsdWVfcmVmZXJlbmNlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjE2MzA3NS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2FkZF9ydmFsdWVfcmVmZXJlbmNlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLS8vICBhZGRfcnZhbHVlX3JlZmVyZW5jZS5ocHAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vICBDb3B5cmlnaHQgMjAxMCBWaWNlbnRlIEouIEJvdGV0IEVzY3JpYmEKLQotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFlQRV9UUkFJVFNfRVhUX0FERF9SVkFMVUVfUkVGRVJFTkNFX19IUFAKLSNkZWZpbmUgTkROQk9PU1RfVFlQRV9UUkFJVFNfRVhUX0FERF9SVkFMVUVfUkVGRVJFTkNFX19IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc192b2lkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19yZWZlcmVuY2UuaHBwPgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdHlwZV90cmFpdF9kZWYuaHBwPgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8KLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgQysrMDMgaW1wbGVtZW50YXRpb24gb2YgICAgICAgICAgICAgICAgICAgICAgICAgIC8vCi0vLyAgICAgICAgICAgICAyMC45LjcuMiBSZWZlcmVuY2UgbW9kaWZpY2F0aW9ucyBbbWV0YS50cmFucy5yZWZdICAgICAgICAgICAgICAvLwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgIFdyaXR0ZW4gYnkgVmljZW50ZSBKLiBCb3RldCBFc2NyaWJhICAgICAgICAgICAgICAgLy8KLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vCi0vLyBJZiBUIG5hbWVzIGFuIG9iamVjdCBvciBmdW5jdGlvbiB0eXBlIHRoZW4gdGhlIG1lbWJlciB0eXBlZGVmIHR5cGUKLS8vIHNoYWxsIG5hbWUgVCYmOyBvdGhlcndpc2UsIHR5cGUgc2hhbGwgbmFtZSBULiBbIE5vdGU6IFRoaXMgcnVsZSByZWZsZWN0cwotLy8gdGhlIHNlbWFudGljcyBvZiByZWZlcmVuY2UgY29sbGFwc2luZy4gRm9yIGV4YW1wbGUsIHdoZW4gYSB0eXBlIFQgbmFtZXMKLS8vIGEgdHlwZSBUMSYsIHRoZSB0eXBlIGFkZF9ydmFsdWVfcmVmZXJlbmNlPFQ+Ojp0eXBlIGlzIG5vdCBhbiBydmFsdWUKLS8vIHJlZmVyZW5jZS4gLWVuZCBub3RlIF0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSB0eXBlX3RyYWl0c19kZXRhaWwgewotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIGJvb2wgYj4KLSAgICBzdHJ1Y3QgYWRkX3J2YWx1ZV9yZWZlcmVuY2VfaGVscGVyCi0gICAgeyB0eXBlZGVmIFQgICB0eXBlOyB9OwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMpICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgc3RydWN0IGFkZF9ydmFsdWVfcmVmZXJlbmNlX2hlbHBlcjxULCB0cnVlPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBUJiYgICB0eXBlOwotICAgIH07Ci0jZW5kaWYKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIHN0cnVjdCBhZGRfcnZhbHVlX3JlZmVyZW5jZV9pbXAKLSAgICB7Ci0gICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6dHlwZV90cmFpdHNfZGV0YWlsOjphZGRfcnZhbHVlX3JlZmVyZW5jZV9oZWxwZXIKLSAgICAgICAgICAgICAgICAgIDxULCAoaXNfdm9pZDxUPjo6dmFsdWUgPT0gZmFsc2UgJiYgaXNfcmVmZXJlbmNlPFQ+Ojp2YWx1ZSA9PSBmYWxzZSkgPjo6dHlwZSB0eXBlOwotICAgIH07Ci0KLX0KLQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfREVGMShhZGRfcnZhbHVlX3JlZmVyZW5jZSxULHR5cGVuYW1lIG5kbmJvb3N0Ojp0eXBlX3RyYWl0c19kZXRhaWw6OmFkZF9ydmFsdWVfcmVmZXJlbmNlX2ltcDxUPjo6dHlwZSkKLQotfSAgLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdHlwZV90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAgLy8gTkROQk9PU1RfVFlQRV9UUkFJVFNfRVhUX0FERF9SVkFMVUVfUkVGRVJFTkNFX19IUFAKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfdm9sYXRpbGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfdm9sYXRpbGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOGYxMTYyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX3ZvbGF0aWxlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgRGF2ZSBBYnJhaGFtcywgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgSG93YXJkCi0vLyAgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9BRERfVk9MQVRJTEVfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0FERF9WT0xBVElMRV9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90eXBlX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLS8vICogY29udmVydCBhIHR5cGUgVCB0byB2b2xhdGlsZSB0eXBlIC0gYWRkX3ZvbGF0aWxlPFQ+Ci0vLyB0aGlzIGlzIG5vdCByZXF1aXJlZCBzaW5jZSB0aGUgcmVzdWx0IGlzIGFsd2F5cwotLy8gdGhlIHNhbWUgYXMgIlQgdm9sYXRpbGUiLCBidXQgaXQgZG9lcyBzdXBwcmVzcyB3YXJuaW5ncwotLy8gZnJvbSBzb21lIGNvbXBpbGVyczoKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVNWQykKLS8vIFRoaXMgYm9ndXMgd2FybmluZyB3aWxsIGFwcGVhciB3aGVuIGFkZF92b2xhdGlsZSBpcyBhcHBsaWVkIHRvIGEKLS8vIGNvbnN0IHZvbGF0aWxlIHJlZmVyZW5jZSBiZWNhdXNlIHdlIGNhbid0IGRldGVjdCBjb25zdCB2b2xhdGlsZQotLy8gcmVmZXJlbmNlcyB3aXRoIE1TVkM2LgotIyAgIHByYWdtYSB3YXJuaW5nKHB1c2gpCi0jICAgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MTgxKSAvLyB3YXJuaW5nIEM0MTgxOiBxdWFsaWZpZXIgYXBwbGllZCB0byByZWZlcmVuY2UgdHlwZSBpZ25vcmVkCi0jZW5kaWYgCi0KLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX0RFRjEoYWRkX3ZvbGF0aWxlLFQsVCB2b2xhdGlsZSkKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVNWQykKLSMgICBwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYgCi0KLSNpZm5kZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfUEFSVElBTF9TUEVDMV8xKHR5cGVuYW1lIFQsYWRkX3ZvbGF0aWxlLFQmLFQmKQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdHlwZV90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9BRERfVk9MQVRJTEVfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2FsaWduZWRfc3RvcmFnZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2FsaWduZWRfc3RvcmFnZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFkZTY2YTEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9hbGlnbmVkX3N0b3JhZ2UuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotCi0vLyAgQ29weXJpZ2h0IChDKSBKb2huIE1hZGRvY2sgMjAwNS4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfQUxJR05FRF9TVE9SQUdFX0hQUF9JTkNMVURFRAotIyAgZGVmaW5lIE5ETkJPT1NUX1RUX0FMSUdORURfU1RPUkFHRV9IUFBfSU5DTFVERUQKLSMgIGluY2x1ZGUgPG5kbmJvb3N0L2FsaWduZWRfc3RvcmFnZS5ocHA+Ci0jZW5kaWYgLy8gTkROQk9PU1RfVFRfQUxJR05FRF9TVE9SQUdFX0hQUF9JTkNMVURFRAotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2FsaWdubWVudF9vZi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2FsaWdubWVudF9vZi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3ZDM1YWMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9hbGlnbm1lbnRfb2YuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTI4ICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDAuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0FMSUdOTUVOVF9PRl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfQUxJR05NRU5UX09GX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxjc3RkZGVmPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaW50cmluc2ljcy5ocHA+Ci0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvc2l6ZV90X3RyYWl0X2RlZi5ocHA+Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jICAgcHJhZ21hIHdhcm5pbmcocHVzaCkKLSMgICBwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTIxIDQ1MTIpIC8vIGFsaWdubWVudCBpcyBzZW5zaXRpdmUgdG8gcGFja2luZwotI2VuZGlmCi0jaWYgZGVmaW5lZChfX0JPUkxBTkRDX18pICYmIChfX0JPUkxBTkRDX18gPCAweDYwMCkKLSNwcmFnbWEgb3B0aW9uIHB1c2ggLVZ4LSAtVmUtCi0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBhbGlnbm1lbnRfb2Y7Ci0KLS8vIGdldCB0aGUgYWxpZ25tZW50IG9mIHNvbWUgYXJiaXRyYXJ5IHR5cGU6Ci1uYW1lc3BhY2UgZGV0YWlsIHsKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDMyNCkgLy8gc3RydWN0dXJlIHdhcyBwYWRkZWQgZHVlIHRvIF9fZGVjbHNwZWMoYWxpZ24oKSkKLSNlbmRpZgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgYWxpZ25tZW50X29mX2hhY2sKLXsKLSAgICBjaGFyIGM7Ci0gICAgVCB0OwotICAgIGFsaWdubWVudF9vZl9oYWNrKCk7Ci19OwotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotdGVtcGxhdGUgPHVuc2lnbmVkIEEsIHVuc2lnbmVkIFM+Ci1zdHJ1Y3QgYWxpZ25tZW50X2xvZ2ljCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHN0ZDo6c2l6ZV90LCB2YWx1ZSA9IEEgPCBTID8gQSA6IFMpOwotfTsKLQotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci1zdHJ1Y3QgYWxpZ25tZW50X29mX2ltcGwKLXsKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpICYmIChORE5CT09TVF9NU1ZDID49IDE0MDApCi0gICAgLy8KLSAgICAvLyBXaXRoIE1TVkMgYm90aCB0aGUgbmF0aXZlIF9fYWxpZ25vZiBvcGVyYXRvcgotICAgIC8vIGFuZCBvdXIgb3duIGxvZ2ljIGdldHMgdGhpbmdzIHdyb25nIGZyb20gdGltZSB0byB0aW1lIDotKAotICAgIC8vIFVzaW5nIGEgY29tYmluYXRpb24gb2YgdGhlIHR3byBzZWVtcyB0byBtYWtlIHRoZSBtb3N0IG9mIGEgYmFkIGpvYjoKLSAgICAvLwotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzdGQ6OnNpemVfdCwgdmFsdWUgPQotICAgICAgICAoOjpuZG5ib29zdDo6ZGV0YWlsOjphbGlnbm1lbnRfbG9naWM8Ci0gICAgICAgICAgICBzaXplb2YoOjpuZG5ib29zdDo6ZGV0YWlsOjphbGlnbm1lbnRfb2ZfaGFjazxUPikgLSBzaXplb2YoVCksCi0gICAgICAgICAgICBfX2FsaWdub2YoVCkKLSAgICAgICAgPjo6dmFsdWUpKTsKLSNlbGlmICFkZWZpbmVkKE5ETkJPT1NUX0FMSUdOTUVOVF9PRikKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc3RkOjpzaXplX3QsIHZhbHVlID0KLSAgICAgICAgKDo6bmRuYm9vc3Q6OmRldGFpbDo6YWxpZ25tZW50X2xvZ2ljPAotICAgICAgICAgICAgc2l6ZW9mKDo6bmRuYm9vc3Q6OmRldGFpbDo6YWxpZ25tZW50X29mX2hhY2s8VD4pIC0gc2l6ZW9mKFQpLAotICAgICAgICAgICAgc2l6ZW9mKFQpCi0gICAgICAgID46OnZhbHVlKSk7Ci0jZWxzZQotICAgLy8KLSAgIC8vIFdlIHB1dCB0aGlzIGhlcmUsIHJhdGhlciB0aGFuIGluIHRoZSBkZWZpbml0aW9uIG9mCi0gICAvLyBhbGlnbm1lbnRfb2YgYmVsb3csIGJlY2F1c2UgTVNWQydzIF9fYWxpZ25vZiBkb2Vzbid0Ci0gICAvLyBhbHdheXMgd29yayBpbiB0aGF0IGNvbnRleHQgZm9yIHNvbWUgdW5leHBsYWluZWQgcmVhc29uLgotICAgLy8gKFNlZSB0eXBlX3dpdGhfYWxpZ25tZW50IHRlc3RzIGZvciB0ZXN0IGNhc2VzKS4KLSAgIC8vCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc3RkOjpzaXplX3QsIHZhbHVlID0gTkROQk9PU1RfQUxJR05NRU5UX09GKFQpKTsKLSNlbmRpZgotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLU5ETkJPT1NUX1RUX0FVWF9TSVpFX1RfVFJBSVRfREVGMShhbGlnbm1lbnRfb2YsVCw6Om5kbmJvb3N0OjpkZXRhaWw6OmFsaWdubWVudF9vZl9pbXBsPFQ+Ojp2YWx1ZSkKLQotLy8gcmVmZXJlbmNlcyBoYXZlIHRvIGJlIHRyZWF0ZWQgc3BlY2lhbGx5LCBhc3N1bWUKLS8vIHRoYXQgYSByZWZlcmVuY2UgaXMganVzdCBhIHNwZWNpYWwgcG9pbnRlcjoKLSNpZm5kZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgYWxpZ25tZW50X29mPFQmPgotICAgIDogcHVibGljIGFsaWdubWVudF9vZjxUKj4KLXsKLX07Ci0jZW5kaWYKLSNpZmRlZiBfX0JPUkxBTkRDX18KLS8vIGxvbmcgZG91YmxlIGdpdmVzIGFuIGluY29ycmVjdCB2YWx1ZSBvZiAxMCAoISkKLS8vIHVubGVzcyB3ZSBkbyB0aGlzLi4uCi1zdHJ1Y3QgbG9uZ19kb3VibGVfd3JhcHBlcnsgbG9uZyBkb3VibGUgbGQ7IH07Ci10ZW1wbGF0ZTw+IHN0cnVjdCBhbGlnbm1lbnRfb2Y8bG9uZyBkb3VibGU+Ci0gICA6IHB1YmxpYyBhbGlnbm1lbnRfb2Y8bG9uZ19kb3VibGVfd3JhcHBlcj57fTsKLSNlbmRpZgotCi0vLyB2b2lkIGhhcyB0byBiZSB0cmVhdGVkIHNwZWNpYWxseToKLU5ETkJPT1NUX1RUX0FVWF9TSVpFX1RfVFJBSVRfU1BFQzEoYWxpZ25tZW50X29mLHZvaWQsMCkKLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1ZfVk9JRF9TUEVDSUFMSVpBVElPTlMKLU5ETkJPT1NUX1RUX0FVWF9TSVpFX1RfVFJBSVRfU1BFQzEoYWxpZ25tZW50X29mLHZvaWQgY29uc3QsMCkKLU5ETkJPT1NUX1RUX0FVWF9TSVpFX1RfVFJBSVRfU1BFQzEoYWxpZ25tZW50X29mLHZvaWQgdm9sYXRpbGUsMCkKLU5ETkJPT1NUX1RUX0FVWF9TSVpFX1RfVFJBSVRfU1BFQzEoYWxpZ25tZW50X29mLHZvaWQgY29uc3Qgdm9sYXRpbGUsMCkKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaWYgZGVmaW5lZChfX0JPUkxBTkRDX18pICYmIChfX0JPUkxBTkRDX18gPCAweDYwMCkKLSNwcmFnbWEgb3B0aW9uIHBvcAotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotIyAgIHByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3NpemVfdF90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9BTElHTk1FTlRfT0ZfSFBQX0lOQ0xVREVECi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvYXJpdGhtZXRpY190cmFpdHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9hcml0aG1ldGljX3RyYWl0cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjOGUxOTcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9hcml0aG1ldGljX3RyYWl0cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCBIb3dhcmQgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLS8vCi0vLyAgZGVmaW5lcyB0cmFpdHMgY2xhc3NlcyBmb3IgYXJpdGhtZXRpYyB0eXBlczoKLS8vICBpc192b2lkLCBpc19pbnRlZ3JhbCwgaXNfZmxvYXQsIGlzX2FyaXRobWV0aWMsIGlzX2Z1bmRhbWVudGFsLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0FSSVRITUVUSUNfVFJBSVRTX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9BUklUSE1FVElDX1RSQUlUU19IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2FyaXRobWV0aWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Zsb2F0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19mdW5kYW1lbnRhbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfaW50ZWdyYWwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3ZvaWQuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfQVJJVEhNRVRJQ19UUkFJVFNfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2Jyb2tlbl9jb21waWxlcl9zcGVjLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvYnJva2VuX2NvbXBpbGVyX3NwZWMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMGE1ZWUwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvYnJva2VuX2NvbXBpbGVyX3NwZWMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTE3ICswLDAgQEAKLQotLy8gIENvcHlyaWdodCAyMDAxLTIwMDMgQWxla3NleSBHdXJ0b3ZveS4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfQlJPS0VOX0NPTVBJTEVSX1NQRUNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0JST0tFTl9DT01QSUxFUl9TUEVDX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX3N1cHBvcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLS8vIHRoZXNlIGFyZSBuZWVkZWQgcmVnYXJkbGVzcyBvZiBORE5CT09TVF9UVF9OT19CUk9LRU5fQ09NUElMRVJfU1BFQyAKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgZGV0YWlsIHsKLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHJlbW92ZV9jb25zdF9pbXBsICAgICB7IHR5cGVkZWYgVCB0eXBlOyB9OwotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgcmVtb3ZlX3ZvbGF0aWxlX2ltcGwgIHsgdHlwZWRlZiBUIHR5cGU7IH07Ci10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCByZW1vdmVfcG9pbnRlcl9pbXBsICAgeyB0eXBlZGVmIFQgdHlwZTsgfTsKLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHJlbW92ZV9yZWZlcmVuY2VfaW1wbCB7IHR5cGVkZWYgVCB0eXBlOyB9OwotdHlwZWRlZiBpbnQgaW52b2tlX05ETkJPT1NUX1RUX0JST0tFTl9DT01QSUxFUl9TUEVDX291dHNpZGVfYWxsX25hbWVzcGFjZXM7Ci19fQotI2VuZGlmCi0KLS8vIGFndXJ0LCAyNy9qdW4vMDM6IGRpc2FibGUgdGhlIHdvcmthcm91bmQgaWYgdXNlciBkZWZpbmVkIAotLy8gTkROQk9PU1RfVFRfTk9fQlJPS0VOX0NPTVBJTEVSX1NQRUMKLSNpZiAgICAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKSBcCi0gICAgfHwgZGVmaW5lZChORE5CT09TVF9UVF9OT19CUk9LRU5fQ09NUElMRVJfU1BFQykKLQotIyAgIGRlZmluZSBORE5CT09TVF9UVF9CUk9LRU5fQ09NUElMRVJfU1BFQyhUKSAvKiovCi0KLSNlbHNlCi0KLS8vIHNhbWUgYXMgTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfSU1QTF9TUEVDMSBtYWNybywgZXhjZXB0IHRoYXQgaXQKLS8vIG5ldmVyIGdldHMgI3VuZGVmLWluZWQKLSMgICBkZWZpbmUgTkROQk9PU1RfVFRfQVVYX0JST0tFTl9UWVBFX1RSQUlUX1NQRUMxKHRyYWl0LHNwZWMscmVzdWx0KSBcCi10ZW1wbGF0ZTw+IHN0cnVjdCB0cmFpdCMjX2ltcGw8c3BlYz4gXAoteyBcCi0gICAgdHlwZWRlZiByZXN1bHQgdHlwZTsgXAotfTsgXAotLyoqLwotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1RUX0FVWF9SRU1PVkVfQ09OU1RfVk9MQVRJTEVfUkFOSzFfU1BFQyhUKSAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgTkROQk9PU1RfVFRfQVVYX0JST0tFTl9UWVBFX1RSQUlUX1NQRUMxKHJlbW92ZV9jb25zdCxUIGNvbnN0LFQpICAgICAgICAgICAgICAgICAgICBcCi0gICAgTkROQk9PU1RfVFRfQVVYX0JST0tFTl9UWVBFX1RSQUlUX1NQRUMxKHJlbW92ZV9jb25zdCxUIGNvbnN0IHZvbGF0aWxlLFQgdm9sYXRpbGUpICBcCi0gICAgTkROQk9PU1RfVFRfQVVYX0JST0tFTl9UWVBFX1RSQUlUX1NQRUMxKHJlbW92ZV92b2xhdGlsZSxUIHZvbGF0aWxlLFQpICAgICAgICAgICAgICBcCi0gICAgTkROQk9PU1RfVFRfQVVYX0JST0tFTl9UWVBFX1RSQUlUX1NQRUMxKHJlbW92ZV92b2xhdGlsZSxUIGNvbnN0IHZvbGF0aWxlLFQgY29uc3QpICBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1RUX0FVWF9SRU1PVkVfUFRSX1JFRl9SQU5LXzFfU1BFQyhUKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgTkROQk9PU1RfVFRfQVVYX0JST0tFTl9UWVBFX1RSQUlUX1NQRUMxKHJlbW92ZV9wb2ludGVyLFQqLFQpICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgTkROQk9PU1RfVFRfQVVYX0JST0tFTl9UWVBFX1RSQUlUX1NQRUMxKHJlbW92ZV9wb2ludGVyLFQqY29uc3QsVCkgICAgICAgICAgICAgICAgICBcCi0gICAgTkROQk9PU1RfVFRfQVVYX0JST0tFTl9UWVBFX1RSQUlUX1NQRUMxKHJlbW92ZV9wb2ludGVyLFQqdm9sYXRpbGUsVCkgICAgICAgICAgICAgICBcCi0gICAgTkROQk9PU1RfVFRfQVVYX0JST0tFTl9UWVBFX1RSQUlUX1NQRUMxKHJlbW92ZV9wb2ludGVyLFQqY29uc3Qgdm9sYXRpbGUsVCkgICAgICAgICBcCi0gICAgTkROQk9PU1RfVFRfQVVYX0JST0tFTl9UWVBFX1RSQUlUX1NQRUMxKHJlbW92ZV9yZWZlcmVuY2UsVCYsVCkgICAgICAgICAgICAgICAgICAgICBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1RUX0FVWF9SRU1PVkVfUFRSX1JFRl9SQU5LXzJfU1BFQyhUKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgTkROQk9PU1RfVFRfQVVYX1JFTU9WRV9QVFJfUkVGX1JBTktfMV9TUEVDKFQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgTkROQk9PU1RfVFRfQVVYX1JFTU9WRV9QVFJfUkVGX1JBTktfMV9TUEVDKFQgY29uc3QpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgTkROQk9PU1RfVFRfQVVYX1JFTU9WRV9QVFJfUkVGX1JBTktfMV9TUEVDKFQgdm9sYXRpbGUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgTkROQk9PU1RfVFRfQVVYX1JFTU9WRV9QVFJfUkVGX1JBTktfMV9TUEVDKFQgY29uc3Qgdm9sYXRpbGUpICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1RUX0FVWF9SRU1PVkVfQUxMX1JBTktfMV9TUEVDKFQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgTkROQk9PU1RfVFRfQVVYX1JFTU9WRV9QVFJfUkVGX1JBTktfMl9TUEVDKFQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgTkROQk9PU1RfVFRfQVVYX1JFTU9WRV9DT05TVF9WT0xBVElMRV9SQU5LMV9TUEVDKFQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1RUX0FVWF9SRU1PVkVfQUxMX1JBTktfMl9TUEVDKFQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgTkROQk9PU1RfVFRfQVVYX1JFTU9WRV9BTExfUkFOS18xX1NQRUMoVCopICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgTkROQk9PU1RfVFRfQVVYX1JFTU9WRV9BTExfUkFOS18xX1NQRUMoVCBjb25zdCopICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgTkROQk9PU1RfVFRfQVVYX1JFTU9WRV9BTExfUkFOS18xX1NQRUMoVCB2b2xhdGlsZSopICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgTkROQk9PU1RfVFRfQVVYX1JFTU9WRV9BTExfUkFOS18xX1NQRUMoVCBjb25zdCB2b2xhdGlsZSopICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgLyoqLwotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1RUX0JST0tFTl9DT01QSUxFUl9TUEVDKFQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIGRldGFpbCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdHlwZWRlZiBpbnZva2VfTkROQk9PU1RfVFRfQlJPS0VOX0NPTVBJTEVSX1NQRUNfb3V0c2lkZV9hbGxfbmFtZXNwYWNlcyAgICAgICAgICAgICBcCi0gICAgICBwbGVhc2VfaW52b2tlX05ETkJPT1NUX1RUX0JST0tFTl9DT01QSUxFUl9TUEVDX291dHNpZGVfYWxsX25hbWVzcGFjZXM7ICAgICAgICAgICBcCi0gICAgTkROQk9PU1RfVFRfQVVYX1JFTU9WRV9BTExfUkFOS18xX1NQRUMoVCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgTkROQk9PU1RfVFRfQVVYX1JFTU9WRV9BTExfUkFOS18yX1NQRUMoVCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgTkROQk9PU1RfVFRfQVVYX1JFTU9WRV9BTExfUkFOS18yX1NQRUMoVCopICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgTkROQk9PU1RfVFRfQVVYX1JFTU9WRV9BTExfUkFOS18yX1NQRUMoVCBjb25zdCopICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgTkROQk9PU1RfVFRfQVVYX1JFTU9WRV9BTExfUkFOS18yX1NQRUMoVCB2b2xhdGlsZSopICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgTkROQk9PU1RfVFRfQVVYX1JFTU9WRV9BTExfUkFOS18yX1NQRUMoVCBjb25zdCB2b2xhdGlsZSopICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgLyoqLwotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3R5cGVfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi1ORE5CT09TVF9UVF9CUk9LRU5fQ09NUElMRVJfU1BFQyhib29sKQotTkROQk9PU1RfVFRfQlJPS0VOX0NPTVBJTEVSX1NQRUMoY2hhcikKLSNpZm5kZWYgTkROQk9PU1RfTk9fSU5UUklOU0lDX1dDSEFSX1QKLU5ETkJPT1NUX1RUX0JST0tFTl9DT01QSUxFUl9TUEVDKHdjaGFyX3QpCi0jZW5kaWYKLU5ETkJPT1NUX1RUX0JST0tFTl9DT01QSUxFUl9TUEVDKHNpZ25lZCBjaGFyKQotTkROQk9PU1RfVFRfQlJPS0VOX0NPTVBJTEVSX1NQRUModW5zaWduZWQgY2hhcikKLU5ETkJPT1NUX1RUX0JST0tFTl9DT01QSUxFUl9TUEVDKHNpZ25lZCBzaG9ydCkKLU5ETkJPT1NUX1RUX0JST0tFTl9DT01QSUxFUl9TUEVDKHVuc2lnbmVkIHNob3J0KQotTkROQk9PU1RfVFRfQlJPS0VOX0NPTVBJTEVSX1NQRUMoc2lnbmVkIGludCkKLU5ETkJPT1NUX1RUX0JST0tFTl9DT01QSUxFUl9TUEVDKHVuc2lnbmVkIGludCkKLU5ETkJPT1NUX1RUX0JST0tFTl9DT01QSUxFUl9TUEVDKHNpZ25lZCBsb25nKQotTkROQk9PU1RfVFRfQlJPS0VOX0NPTVBJTEVSX1NQRUModW5zaWduZWQgbG9uZykKLU5ETkJPT1NUX1RUX0JST0tFTl9DT01QSUxFUl9TUEVDKGZsb2F0KQotTkROQk9PU1RfVFRfQlJPS0VOX0NPTVBJTEVSX1NQRUMoZG91YmxlKQotLy9ORE5CT09TVF9UVF9CUk9LRU5fQ09NUElMRVJfU1BFQyhsb25nIGRvdWJsZSkKLQotLy8gZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkKLSNkZWZpbmUgTkROQk9PU1RfQlJPS0VOX0NPTVBJTEVSX1RZUEVfVFJBSVRTX1NQRUNJQUxJWkFUSU9OKFQpIFwKLSAgICBORE5CT09TVF9UVF9CUk9LRU5fQ09NUElMRVJfU1BFQyhUKSBcCi0vKiovCi0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9CUk9LRU5fQ09NUElMRVJfU1BFQ19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvY29tbW9uX3R5cGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9jb21tb25fdHlwZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3MmMzNGUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9jb21tb25fdHlwZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTcgKzAsMCBAQAotLy8gIGNvbW1vbl90eXBlLmhwcCAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gIENvcHlyaWdodCAyMDA4IEhvd2FyZCBIaW5uYW50Ci0vLyAgQ29weXJpZ2h0IDIwMDggQmVtYW4gRGF3ZXMKLQotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFlQRV9UUkFJVFNfQ09NTU9OX1RZUEVfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVfVFJBSVRTX0NPTU1PTl9UWVBFX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotI2lmIGRlZmluZWQoX19TVU5QUk9fQ0MpICYmICFkZWZpbmVkKE5ETkJPT1NUX0NPTU1PTl9UWVBFX0RPTlRfVVNFX1RZUEVPRikKLSMgIGRlZmluZSBORE5CT09TVF9DT01NT05fVFlQRV9ET05UX1VTRV9UWVBFT0YKLSNlbmRpZgotI2lmIGRlZmluZWQoX19JQk1DUFBfXykgJiYgIWRlZmluZWQoTkROQk9PU1RfQ09NTU9OX1RZUEVfRE9OVF9VU0VfVFlQRU9GKQotIyAgZGVmaW5lIE5ETkJPT1NUX0NPTU1PTl9UWVBFX0RPTlRfVVNFX1RZUEVPRgotI2VuZGlmCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0jaWYgZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19URU1QTEFURVMpICYmICFkZWZpbmVkKE5ETkJPT1NUX0NPTU1PTl9UWVBFX0FSSVRZKQotI2RlZmluZSBORE5CT09TVF9DT01NT05fVFlQRV9BUklUWSAzCi0jZW5kaWYKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0RFQ0xUWVBFKSAmJiAhZGVmaW5lZChORE5CT09TVF9DT01NT05fVFlQRV9ET05UX1VTRV9UWVBFT0YpCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZW9mL3R5cGVvZi5ocHA+ICAgLy8gYm9vc3Qgd29uZGVycyBuZXZlciBjZWFzZSEKLSNlbmRpZgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotI2lmbmRlZiBORE5CT09TVF9OT19DWFgxMV9TVEFUSUNfQVNTRVJUCi0jZGVmaW5lIE5ETkJPT1NUX0NPTU1PTl9UWVBFX1NUQVRJQ19BU1NFUlQoQ05ELCBNU0csIFRZUEVTKSBzdGF0aWNfYXNzZXJ0KENORCxNU0cpCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX0NPTU1PTl9UWVBFX1VTRVNfTVBMX0FTU0VSVCkKLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYm9vbC5ocHA+Ci0jZGVmaW5lIE5ETkJPT1NUX0NPTU1PTl9UWVBFX1NUQVRJQ19BU1NFUlQoQ05ELCBNU0csIFRZUEVTKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBORE5CT09TVF9NUExfQVNTRVJUX01TRyhuZG5ib29zdDo6bXBsOjpib29sXzwgKENORCkgPjo6dHlwZTo6dmFsdWUsIE1TRywgVFlQRVMpCi0jZWxzZQotI2luY2x1ZGUgPG5kbmJvb3N0L3N0YXRpY19hc3NlcnQuaHBwPgotI2RlZmluZSBORE5CT09TVF9DT01NT05fVFlQRV9TVEFUSUNfQVNTRVJUKENORCwgTVNHLCBUWVBFUykgTkROQk9PU1RfU1RBVElDX0FTU0VSVChDTkQpCi0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1NUQVRJQ19BU1NFUlQpIHx8ICFkZWZpbmVkKE5ETkJPT1NUX0NPTU1PTl9UWVBFX1VTRVNfTVBMX0FTU0VSVCkKLSNkZWZpbmUgTkROQk9PU1RfQ09NTU9OX1RZUEVfTVVTVF9CRV9BX0NPTVBMRV9UWVBFICJtdXN0IGJlIGNvbXBsZXRlIHR5cGUiCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfREVDTFRZUEUpICYmIGRlZmluZWQoTkROQk9PU1RfQ09NTU9OX1RZUEVfRE9OVF9VU0VfVFlQRU9GKQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9jb21tb25fdHlwZV9pbXAuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9jdi5ocHA+Ci0jZW5kaWYKLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3V0aWxpdHkvZGVjbHZhbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX3J2YWx1ZV9yZWZlcmVuY2UuaHBwPgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8KLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgQysrMDMgaW1wbGVtZW50YXRpb24gb2YgICAgICAgICAgICAgICAgICAgICAgICAgIC8vCi0vLyAgICAgICAgICAgICAyMC45LjcuNiBPdGhlciB0cmFuc2Zvcm1hdGlvbnMgW21ldGEudHJhbnMub3RoZXJdICAgICAgICAgICAgICAvLwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgIFdyaXR0ZW4gYnkgSG93YXJkIEhpbm5hbnQgICAgICAgICAgICAgICAgICAgICAgICAgLy8KLS8vICAgICAgQWRhcHRlZCBmb3IgQm9vc3QgYnkgQmVtYW4gRGF3ZXMsIFZpY2VudGUgQm90ZXQgYW5kICBKZWZmcmV5IEhlbGxydW5nIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLwotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotLy8gcHJvdG90eXBlCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfVEVNUExBVEVTKQotICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIFQ+Ci0gICAgc3RydWN0IGNvbW1vbl90eXBlOwotI2Vsc2UgLy8gb3Igbm8gc3BlY2lhbGl6YXRpb24KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVSA9IHZvaWQsIGNsYXNzIFYgPSB2b2lkPgotICAgIHN0cnVjdCBjb21tb25fdHlwZQotICAgIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgY29tbW9uX3R5cGU8dHlwZW5hbWUgY29tbW9uX3R5cGU8VCwgVT46OnR5cGUsIFY+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLSNlbmRpZgotCi0KLS8vIDEgYXJnCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19URU1QTEFURVMpCi0gICAgc3RydWN0IGNvbW1vbl90eXBlPFQ+Ci0jZWxzZQotICAgIHN0cnVjdCBjb21tb25fdHlwZTxULCB2b2lkLCB2b2lkPgotCi0jZW5kaWYKLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX0NPTU1PTl9UWVBFX1NUQVRJQ19BU1NFUlQoc2l6ZW9mKFQpID4gMCwgTkROQk9PU1RfQ09NTU9OX1RZUEVfTVVTVF9CRV9BX0NPTVBMRV9UWVBFLCAoVCkpOwotICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgfTsKLQotLy8gMiBhcmdzCi1uYW1lc3BhY2UgdHlwZV90cmFpdHNfZGV0YWlsIHsKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVPgotICAgIHN0cnVjdCBjb21tb25fdHlwZV8yCi0gICAgewotICAgIHByaXZhdGU6Ci0gICAgICAgIE5ETkJPT1NUX0NPTU1PTl9UWVBFX1NUQVRJQ19BU1NFUlQoc2l6ZW9mKFQpID4gMCwgTkROQk9PU1RfQ09NTU9OX1RZUEVfTVVTVF9CRV9BX0NPTVBMRV9UWVBFLCAoVCkpOwotICAgICAgICBORE5CT09TVF9DT01NT05fVFlQRV9TVEFUSUNfQVNTRVJUKHNpemVvZihVKSA+IDAsIE5ETkJPT1NUX0NPTU1PTl9UWVBFX01VU1RfQkVfQV9DT01QTEVfVFlQRSwgKFUpKTsKLSAgICAgICAgc3RhdGljIGJvb2wgZGVjbHZhbF9ib29sKCk7ICAvLyB3b3JrYXJvdW5kIGdjYyBidWc7IG5vdCByZXF1aXJlZCBieSBzdGQKLSAgICAgICAgc3RhdGljIHR5cGVuYW1lIGFkZF9ydmFsdWVfcmVmZXJlbmNlPFQ+Ojp0eXBlIGRlY2x2YWxfVCgpOyAgLy8gd29ya2Fyb3VuZCBnY2MgYnVnOyBub3QgcmVxdWlyZWQgYnkgc3RkCi0gICAgICAgIHN0YXRpYyB0eXBlbmFtZSBhZGRfcnZhbHVlX3JlZmVyZW5jZTxVPjo6dHlwZSBkZWNsdmFsX1UoKTsgIC8vIHdvcmthcm91bmQgZ2NjIGJ1Zzsgbm90IHJlcXVpcmVkIGJ5IHN0ZAotICAgICAgICBzdGF0aWMgdHlwZW5hbWUgYWRkX3J2YWx1ZV9yZWZlcmVuY2U8Ym9vbD46OnR5cGUgZGVjbHZhbF9iKCk7ICAKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0RFQ0xUWVBFKQotICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiBkZWNsdHlwZShkZWNsdmFsPGJvb2w+KCkgPyBkZWNsdmFsPFQ+KCkgOiBkZWNsdmFsPFU+KCkpIHR5cGU7Ci0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX0NPTU1PTl9UWVBFX0RPTlRfVVNFX1RZUEVPRikKLSAgICBwdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBkZXRhaWxfdHlwZV90cmFpdHNfY29tbW9uX3R5cGU6OmNvbW1vbl90eXBlX2ltcGw8Ci0gICAgICAgICAgdHlwZW5hbWUgcmVtb3ZlX2N2PFQ+Ojp0eXBlLAotICAgICAgICAgIHR5cGVuYW1lIHJlbW92ZV9jdjxVPjo6dHlwZQotICAgICAgPjo6dHlwZSB0eXBlOwotI2Vsc2UKLSAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfVFlQRU9GX1RQTChkZWNsdmFsX2IoKSA/IGRlY2x2YWxfVCgpIDogZGVjbHZhbF9VKCkpIHR5cGU7Ci0jZW5kaWYKLQotI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID09IDMgJiYgKF9fR05VQ19NSU5PUl9fID09IDIgfHwgX19HTlVDX01JTk9SX18gPT0gMykKLSAgICBwdWJsaWM6Ci0gICAgICAgIHZvaWQgcHVibGljX2R1bW15X2Z1bmN0aW9uX2p1c3RfdG9fc2lsZW5jZV93YXJuaW5nKCk7Ci0jZW5kaWYKLSAgICB9OwotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICAgc3RydWN0IGNvbW1vbl90eXBlXzI8VCwgVD4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgIH07Ci0gICAgfQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfVEVNUExBVEVTKQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBVPgotICAgIHN0cnVjdCBjb21tb25fdHlwZTxULCBVPgotI2Vsc2UKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgVT4KLSAgICBzdHJ1Y3QgY29tbW9uX3R5cGU8VCwgVSwgdm9pZD4KLSNlbmRpZgotICAgIDogcHVibGljIHR5cGVfdHJhaXRzX2RldGFpbDo6Y29tbW9uX3R5cGVfMjxULFU+Ci0gICAgeyB9OwotCi0KLS8vIDMgb3IgbW9yZSBhcmdzCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfVEVNUExBVEVTKQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lLi4uIFY+Ci0gICAgc3RydWN0IGNvbW1vbl90eXBlPFQsIFUsIFYuLi4+IHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgY29tbW9uX3R5cGU8dHlwZW5hbWUgY29tbW9uX3R5cGU8VCwgVT46OnR5cGUsIFYuLi4+Ojp0eXBlIHR5cGU7Ci0gICAgfTsKLSNlbmRpZgotfSAgLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAgLy8gTkROQk9PU1RfVFlQRV9UUkFJVFNfQ09NTU9OX1RZUEVfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2NvbXBvc2l0ZV90cmFpdHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9jb21wb3NpdGVfdHJhaXRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGM1YjVlOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2NvbXBvc2l0ZV90cmFpdHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgRGF2ZSBBYnJhaGFtcywgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgSG93YXJkCi0vLyAgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLiAgCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotLy8KLS8vICBkZWZpbmVzIHRyYWl0cyBjbGFzc2VzIGZvciBjb21wb3NpdGUgdHlwZXM6Ci0vLyAgaXNfYXJyYXksIGlzX3BvaW50ZXIsIGlzX3JlZmVyZW5jZSwgaXNfbWVtYmVyX3BvaW50ZXIsIGlzX2VudW0sIGlzX3VuaW9uLgotLy8KLQotI2lmbmRlZiBORE5CT09TVF9UVF9DT01QT1NJVEVfVFJBSVRTX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9DT01QT1NJVEVfVFJBSVRTX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYXJyYXkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2VudW0uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX21lbWJlcl9wb2ludGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19tZW1iZXJfZnVuY3Rpb25fcG9pbnRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcG9pbnRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcmVmZXJlbmNlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc191bmlvbi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9DT01QT1NJVEVfVFJBSVRTX0hQUF9JTkNMVURFRAotCi0KLQotCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvY29uZGl0aW9uYWwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9jb25kaXRpb25hbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkxYTljZTAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9jb25kaXRpb25hbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDEwLiAgCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfQ09ORElUSU9OQUxfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0NPTkRJVElPTkFMX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotdGVtcGxhdGUgPGJvb2wgYiwgY2xhc3MgVCwgY2xhc3MgVT4KLXN0cnVjdCBjb25kaXRpb25hbCA6IHB1YmxpYyBtcGw6OmlmX2M8YiwgVCwgVT4KLXsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0NPTkRJVElPTkFMX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9jb25maWcuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9jb25maWcuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZWZmZWVjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvY29uZmlnLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDc2ICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgSG93YXJkIEhpbm5hbnQgJiBKb2huIE1hZGRvY2sgMjAwMC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfQ09ORklHX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9DT05GSUdfSFBQX0lOQ0xVREVECi0KLSNpZm5kZWYgTkROQk9PU1RfQ09ORklHX0hQUAotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLQotLy8KLS8vIHdoZW5ldmVyIHdlIGhhdmUgYSBjb252ZXJzaW9uIGZ1bmN0aW9uIHdpdGggZWxsaXBzZXMKLS8vIGl0IG5lZWRzIHRvIGJlIGRlY2xhcmVkIF9fY2RlY2wgdG8gc3VwcHJlc3MgY29tcGlsZXIKLS8vIHdhcm5pbmdzIGZyb20gTVMgYW5kIEJvcmxhbmQgY29tcGlsZXJzICh0aGlzICptdXN0KgotLy8gYXBwZWFyIGJlZm9yZSB3ZSBpbmNsdWRlIGlzX3NhbWUuaHBwIGJlbG93KToKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpIHx8IChkZWZpbmVkKF9fQk9STEFORENfXykgJiYgIWRlZmluZWQoTkROQk9PU1RfRElTQUJMRV9XSU4zMikpCi0jICAgZGVmaW5lIE5ETkJPT1NUX1RUX0RFQ0wgX19jZGVjbAotI2Vsc2UKLSMgICBkZWZpbmUgTkROQk9PU1RfVFRfREVDTCAvKiovCi0jZW5kaWYKLQotIyBpZiAoTkROQk9PU1RfV09SS0FST1VORChfX01XRVJLU19fLCA8IDB4MzAwMCkgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPD0gMTMwMSkgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfHwgIWRlZmluZWQoX19FREdfVkVSU0lPTl9fKSAmJiBORE5CT09TVF9XT1JLQVJPVU5EKF9fR05VQ19fLCA8IDMpIFwKLSAgICB8fCBORE5CT09TVF9XT1JLQVJPVU5EKF9fSUJNQ1BQX18sIDwgNjAwICkgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCA8IDB4NUEwKSAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfHwgZGVmaW5lZChfX2docykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB8fCBORE5CT09TVF9XT1JLQVJPVU5EKF9fSFBfYUNDLCA8IDYwNzAwKSAgICAgICAgICAgXAotICAgIHx8IE5ETkJPT1NUX1dPUktBUk9VTkQoTVBXX0NQTFVTLCBORE5CT09TVF9URVNURURfQVQoMHg4OTApKSAgICAgICAgICBcCi0gICAgfHwgTkROQk9PU1RfV09SS0FST1VORChfX1NVTlBST19DQywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTgwKSkpICAgICAgIFwKLSAgICAmJiBkZWZpbmVkKE5ETkJPT1NUX05PX0lTX0FCU1RSQUNUKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1RUX05PX0NPTkZPUk1JTkdfSVNfQ0xBU1NfSU1QTEVNRU5UQVRJT04gMQotCi0jZW5kaWYKLQotI2lmbmRlZiBORE5CT09TVF9UVF9OT19DT05GT1JNSU5HX0lTX0NMQVNTX0lNUExFTUVOVEFUSU9OCi0jIGRlZmluZSBORE5CT09TVF9UVF9IQVNfQ09ORk9STUlOR19JU19DTEFTU19JTVBMRU1FTlRBVElPTiAxCi0jZW5kaWYKLQotLy8KLS8vIERlZmluZSBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcgCi0vLyB3aGVuIHdlIGNhbid0IHRlc3QgZm9yIGZ1bmN0aW9uIHR5cGVzIHdpdGggZWxpcHNpczoKLS8vCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0dOVUNfXywgPCAzKQotIyAgZGVmaW5lIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotI2VuZGlmCi0KLS8vCi0vLyBkZWZpbmUgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLS8vIHdoZW4gd2Ugd2FudCB0byB0ZXN0IF9fc3RkY2FsbCBldGMgZnVuY3Rpb24gdHlwZXMgd2l0aCBpc19mdW5jdGlvbiBldGMKLS8vIChOb3RlLCBkb2VzIG5vdCB3b3JrIHdpdGggQm9ybGFuZCwgZXZlbiB0aG91Z2ggaXQgZG9lcyBzdXBwb3J0IF9fc3RkY2FsbCBldGMpOgotLy8KLSNpZiBkZWZpbmVkKF9NU0NfRVhURU5TSU9OUykgJiYgIWRlZmluZWQoX19CT1JMQU5EQ19fKQotIyAgZGVmaW5lIE5ETkJPT1NUX1RUX1RFU1RfTVNfRlVOQ19TSUdTCi0jZW5kaWYKLQotLy8KLS8vIGRlZmluZSBORE5CT09TVF9UVF9OT19DVl9GVU5DX1RFU1QKLS8vIGlmIHRlc3RzIGZvciBjdi1xdWFsaWZpZWQgbWVtYmVyIGZ1bmN0aW9ucyBkb24ndCAKLS8vIHdvcmsgaW4gaXNfbWVtYmVyX2Z1bmN0aW9uX3BvaW50ZXIKLS8vCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX01XRVJLU19fLCA8IDB4MzAwMCkgfHwgTkROQk9PU1RfV09SS0FST1VORChfX0lCTUNQUF9fLCA8PSA2MDApCi0jICBkZWZpbmUgTkROQk9PU1RfVFRfTk9fQ1ZfRlVOQ19URVNUCi0jZW5kaWYKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0NPTkZJR19IUFBfSU5DTFVERUQKLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2NvbnZlcnNpb25fdHJhaXRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvY29udmVyc2lvbl90cmFpdHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkM2JiMTY1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvY29udmVyc2lvbl90cmFpdHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgMjAwMCBKb2huIE1hZGRvY2sgKGpvaG5Aam9obm1hZGRvY2suY28udWspCi0vLyBDb3B5cmlnaHQgMjAwMCBKZXJlbXkgU2llayAoanNpZWtAbHNjLm5kLmVkdSkKLS8vIENvcHlyaWdodCAxOTk5LCAyMDAwIEphYWtrbyBKYXJ2aSAoamFha2tvLmphcnZpQGNzLnV0dS5maSkKLS8vCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0NPTlZFUlNJT05fVFJBSVRTX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9DT05WRVJTSU9OX1RSQUlUU19IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnZlcnRpYmxlLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0NPTlZFUlNJT05fVFJBSVRTX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9jdl90cmFpdHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9jdl90cmFpdHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZmJhMTQ5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvY3ZfdHJhaXRzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IERhdmUgQWJyYWhhbXMsIFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIEhvd2FyZAotLy8gIEhpbm5hbnQgJiBKb2huIE1hZGRvY2sgMjAwMC4gIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLS8vCi0vLyAgZGVmaW5lcyB0cmFpdHMgY2xhc3NlcyBmb3IgY3YtcXVhbGlmaWVkIHR5cGVzOgotLy8gIGlzX2NvbnN0LCBpc192b2xhdGlsZSwgcmVtb3ZlX2NvbnN0LCByZW1vdmVfdm9sYXRpbGUsIHJlbW92ZV9jdi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9DVl9UUkFJVFNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0NWX1RSQUlUU19IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2FkZF9jb25zdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX3ZvbGF0aWxlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfY3YuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnN0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc192b2xhdGlsZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2NvbnN0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfdm9sYXRpbGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9jdi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9DVl9UUkFJVFNfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RlY2F5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGVjYXkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZTczNmRjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGVjYXkuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrICYgVGhvcnN0ZW4gT3R0b3NlbiAyMDA1LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0RFQ0FZX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9ERUNBWV9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYXJyYXkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Z1bmN0aW9uLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfYm91bmRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfcG9pbnRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX3JlZmVyZW5jZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2V2YWxfaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZGVudGl0eS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCAKLXsKLQotICAgIHRlbXBsYXRlPCBjbGFzcyBUID4KLSAgICBzdHJ1Y3QgZGVjYXkKLSAgICB7Ci0gICAgcHJpdmF0ZToKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIHJlbW92ZV9yZWZlcmVuY2U8VD46OnR5cGUgVHk7Ci0gICAgcHVibGljOgotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgbXBsOjpldmFsX2lmPCAKLSAgICAgICAgICAgIGlzX2FycmF5PFR5PiwKLSAgICAgICAgICAgIG1wbDo6aWRlbnRpdHk8TkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByZW1vdmVfYm91bmRzPFR5Pjo6dHlwZSo+LAotICAgICAgICAgICAgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBtcGw6OmV2YWxfaWY8IAotICAgICAgICAgICAgICAgIGlzX2Z1bmN0aW9uPFR5PiwKLSAgICAgICAgICAgICAgICBhZGRfcG9pbnRlcjxUeT4sCi0gICAgICAgICAgICAgICAgbXBsOjppZGVudGl0eTxUeT4KLSAgICAgICAgICAgID4KLSAgICAgICAgPjo6dHlwZSB0eXBlOwotICAgIH07Ci0gICAgCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9ERUNBWV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTY4ODQ3ZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxOTYgKzAsMCBAQAotCi0vLyBOTyBJTkNMVURFIEdVQVJEUywgVEhFIEhFQURFUiBJUyBJTlRFTkRFRCBGT1IgTVVMVElQTEUgSU5DTFVTSU9OCi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDItMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAkU291cmNlJAotLy8gJERhdGU6IDIwMTEtMTAtMDkgMTU6Mjg6MzMgLTA3MDAgKFN1biwgMDkgT2N0IDIwMTEpICQKLS8vICRSZXZpc2lvbjogNzQ4NjUgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3RlbXBsYXRlX2FyaXR5X3NwZWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2ludGVncmFsX2NvbnN0YW50LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYm9vbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX3N1cHBvcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLS8vCi0vLyBVbmZvcnR1bmF0ZWx5IHNvbWUgbGlicmFyaWVzIGhhdmUgc3RhcnRlZCB1c2luZyB0aGlzIGhlYWRlciB3aXRob3V0Ci0vLyBjbGVhbmluZyB1cCBhZnRlcndhcmRzOiBzbyB3ZSdkIGJldHRlciB1bmRlZiB0aGUgbWFjcm9zIGp1c3QgaW4gY2FzZSAKLS8vIHRoZXkndmUgYmVlbiBkZWZpbmVkIGFscmVhZHkuLi4uCi0vLwotI2lmZGVmIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1ZBTFVFX0RFQ0wKLSN1bmRlZiBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9WQUxVRV9ERUNMCi0jdW5kZWYgTkROQk9PU1RfVFRfQVVYX0JPT0xfQ19CQVNFCi0jdW5kZWYgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMQotI3VuZGVmIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjIKLSN1bmRlZiBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMQotI3VuZGVmIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMyCi0jdW5kZWYgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMQotI3VuZGVmIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzIKLSN1bmRlZiBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMxXzEKLSN1bmRlZiBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMxXzIKLSN1bmRlZiBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMyXzEKLSN1bmRlZiBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMyXzIKLSN1bmRlZiBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1BBUlRJQUxfU1BFQzJfMQotI3VuZGVmIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0NWX1NQRUMxCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoX19TVU5QUk9fQ0MpICYmIChfX1NVTlBST19DQyA8IDB4NTcwKQotIyAgIGRlZmluZSBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9WQUxVRV9ERUNMKEMpIFwKLSAgICB0eXBlZGVmIDo6bmRuYm9vc3Q6OmludGVncmFsX2NvbnN0YW50PGJvb2wsQz4gdHlwZTsgXAotICAgIGVudW0geyB2YWx1ZSA9IHR5cGU6OnZhbHVlIH07IFwKLSAgICAvKiovCi0jICAgZGVmaW5lIE5ETkJPT1NUX1RUX0FVWF9CT09MX0NfQkFTRShDKQotCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpICYmIE5ETkJPT1NUX01TVkMgPCAxMzAwCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfVkFMVUVfREVDTChDKSBcCi0gICAgdHlwZWRlZiA6Om5kbmJvb3N0OjppbnRlZ3JhbF9jb25zdGFudDxib29sLEM+IGJhc2VfOyBcCi0gICAgdXNpbmcgYmFzZV86OnZhbHVlOyBcCi0gICAgLyoqLwotCi0jZW5kaWYKLQotI2lmbmRlZiBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9WQUxVRV9ERUNMCi0jICAgZGVmaW5lIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1ZBTFVFX0RFQ0woQykgLyoqLwotI2VuZGlmCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfQVVYX0JPT0xfQ19CQVNFCi0jICAgZGVmaW5lIE5ETkJPT1NUX1RUX0FVWF9CT09MX0NfQkFTRShDKSA6IHB1YmxpYyA6Om5kbmJvb3N0OjppbnRlZ3JhbF9jb25zdGFudDxib29sLEM+Ci0jZW5kaWYgCi0KLQotI2RlZmluZSBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKHRyYWl0LFQsQykgXAotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgdHJhaXQgXAotICAgIE5ETkJPT1NUX1RUX0FVWF9CT09MX0NfQkFTRShDKSBcCi17IFwKLXB1YmxpYzpcCi0gICAgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfVkFMVUVfREVDTChDKSBcCi0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgxLHRyYWl0LChUKSkgXAotfTsgXAotXAotTkROQk9PU1RfVFRfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMSx0cmFpdCkgXAotLyoqLwotCi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMih0cmFpdCxUMSxUMixDKSBcCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyID4gc3RydWN0IHRyYWl0IFwKLSAgICBORE5CT09TVF9UVF9BVVhfQk9PTF9DX0JBU0UoQykgXAoteyBcCi1wdWJsaWM6XAotICAgIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1ZBTFVFX0RFQ0woQykgXAotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMix0cmFpdCwoVDEsVDIpKSBcCi19OyBcCi1cCi1ORE5CT09TVF9UVF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQygyLHRyYWl0KSBcCi0vKiovCi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMyh0cmFpdCxUMSxUMixUMyxDKSBcCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMyA+IHN0cnVjdCB0cmFpdCBcCi0gICAgTkROQk9PU1RfVFRfQVVYX0JPT0xfQ19CQVNFKEMpIFwKLXsgXAotcHVibGljOlwKLSAgICBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9WQUxVRV9ERUNMKEMpIFwKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDMsdHJhaXQsKFQxLFQyLFQzKSkgXAotfTsgXAotXAotTkROQk9PU1RfVFRfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoMyx0cmFpdCkgXAotLyoqLwotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKHRyYWl0LHNwLEMpIFwKLXRlbXBsYXRlPD4gc3RydWN0IHRyYWl0PCBzcCA+IFwKLSAgICBORE5CT09TVF9UVF9BVVhfQk9PTF9DX0JBU0UoQykgXAoteyBcCi1wdWJsaWM6XAotICAgIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1ZBTFVFX0RFQ0woQykgXAotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygxLHRyYWl0LChzcCkpIFwKLX07IFwKLS8qKi8KLQotI2RlZmluZSBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMih0cmFpdCxzcDEsc3AyLEMpIFwKLXRlbXBsYXRlPD4gc3RydWN0IHRyYWl0PCBzcDEsc3AyID4gXAotICAgIE5ETkJPT1NUX1RUX0FVWF9CT09MX0NfQkFTRShDKSBcCi17IFwKLXB1YmxpYzpcCi0gICAgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfVkFMVUVfREVDTChDKSBcCi0gICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVF9TUEVDKDIsdHJhaXQsKHNwMSxzcDIpKSBcCi19OyBcCi0vKiovCi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMSh0cmFpdCxzcCxDKSBcCi10ZW1wbGF0ZTw+IHN0cnVjdCB0cmFpdCMjX2ltcGw8IHNwID4gXAoteyBcCi1wdWJsaWM6XAotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IChDKSk7IFwKLX07IFwKLS8qKi8KLQotI2RlZmluZSBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMyKHRyYWl0LHNwMSxzcDIsQykgXAotdGVtcGxhdGU8PiBzdHJ1Y3QgdHJhaXQjI19pbXBsPCBzcDEsc3AyID4gXAoteyBcCi1wdWJsaWM6XAotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IChDKSk7IFwKLX07IFwKLS8qKi8KLQotI2RlZmluZSBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMxXzEocGFyYW0sdHJhaXQsc3AsQykgXAotdGVtcGxhdGU8IHBhcmFtID4gc3RydWN0IHRyYWl0PCBzcCA+IFwKLSAgICBORE5CT09TVF9UVF9BVVhfQk9PTF9DX0JBU0UoQykgXAoteyBcCi1wdWJsaWM6XAotICAgIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1ZBTFVFX0RFQ0woQykgXAotfTsgXAotLyoqLwotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzFfMihwYXJhbTEscGFyYW0yLHRyYWl0LHNwLEMpIFwKLXRlbXBsYXRlPCBwYXJhbTEsIHBhcmFtMiA+IHN0cnVjdCB0cmFpdDwgc3AgPiBcCi0gICAgTkROQk9PU1RfVFRfQVVYX0JPT0xfQ19CQVNFKEMpIFwKLXsgXAotcHVibGljOlwKLSAgICBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9WQUxVRV9ERUNMKEMpIFwKLX07IFwKLS8qKi8KLQotI2RlZmluZSBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMyXzEocGFyYW0sdHJhaXQsc3AxLHNwMixDKSBcCi10ZW1wbGF0ZTwgcGFyYW0gPiBzdHJ1Y3QgdHJhaXQ8IHNwMSxzcDIgPiBcCi0gICAgTkROQk9PU1RfVFRfQVVYX0JPT0xfQ19CQVNFKEMpIFwKLXsgXAotcHVibGljOlwKLSAgICBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9WQUxVRV9ERUNMKEMpIFwKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoMix0cmFpdCwoc3AxLHNwMikpIFwKLX07IFwKLS8qKi8KLQotI2RlZmluZSBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMyXzIocGFyYW0xLHBhcmFtMix0cmFpdCxzcDEsc3AyLEMpIFwKLXRlbXBsYXRlPCBwYXJhbTEsIHBhcmFtMiA+IHN0cnVjdCB0cmFpdDwgc3AxLHNwMiA+IFwKLSAgICBORE5CT09TVF9UVF9BVVhfQk9PTF9DX0JBU0UoQykgXAoteyBcCi1wdWJsaWM6XAotICAgIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1ZBTFVFX0RFQ0woQykgXAotfTsgXAotLyoqLwotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfUEFSVElBTF9TUEVDMl8xKHBhcmFtLHRyYWl0LHNwMSxzcDIsQykgXAotdGVtcGxhdGU8IHBhcmFtID4gc3RydWN0IHRyYWl0IyNfaW1wbDwgc3AxLHNwMiA+IFwKLXsgXAotcHVibGljOlwKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSAoQykpOyBcCi19OyBcCi0vKiovCi0KLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1ZfU1BFQ0lBTElaQVRJT05TCi0jICAgZGVmaW5lIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0NWX1NQRUMxKHRyYWl0LHNwLHZhbHVlKSBcCi0gICAgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEodHJhaXQsc3AsdmFsdWUpIFwKLSAgICBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMSh0cmFpdCxzcCBjb25zdCx2YWx1ZSkgXAotICAgIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKHRyYWl0LHNwIHZvbGF0aWxlLHZhbHVlKSBcCi0gICAgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEodHJhaXQsc3AgY29uc3Qgdm9sYXRpbGUsdmFsdWUpIFwKLSAgICAvKiovCi0jZWxzZQotIyAgIGRlZmluZSBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9DVl9TUEVDMSh0cmFpdCxzcCx2YWx1ZSkgXAotICAgIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKHRyYWl0LHNwLHZhbHVlKSBcCi0gICAgLyoqLwotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X3VuZGVmLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfdW5kZWYuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNGJkMjIwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfdW5kZWYuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotCi0vLyBOTyBJTkNMVURFIEdVQVJEUywgVEhFIEhFQURFUiBJUyBJTlRFTkRFRCBGT1IgTVVMVElQTEUgSU5DTFVTSU9OCi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDItMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAkU291cmNlJAotLy8gJERhdGU6IDIwMTEtMTAtMDkgMTU6Mjg6MzMgLTA3MDAgKFN1biwgMDkgT2N0IDIwMTEpICQKLS8vICRSZXZpc2lvbjogNzQ4NjUgJAotCi0jdW5kZWYgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfVkFMVUVfREVDTAotI3VuZGVmIE5ETkJPT1NUX1RUX0FVWF9CT09MX0NfQkFTRQotI3VuZGVmIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEKLSN1bmRlZiBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYyCi0jdW5kZWYgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMwotI3VuZGVmIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxCi0jdW5kZWYgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzIKLSN1bmRlZiBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxCi0jdW5kZWYgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMgotI3VuZGVmIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzFfMQotI3VuZGVmIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzFfMgotI3VuZGVmIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzJfMQotI3VuZGVmIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzJfMgotI3VuZGVmIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfUEFSVElBTF9TUEVDMl8xCi0jdW5kZWYgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfQ1ZfU1BFQzEKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2NvbW1vbl90eXBlX2ltcC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9jb21tb25fdHlwZV9pbXAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MGRlZGY5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2NvbW1vbl90eXBlX2ltcC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMzMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9jb21tb25fdHlwZV9pbXAuaHBwCi0gKgotICogQ29weXJpZ2h0IDIwMTAsIEplZmZyZXkgSGVsbHJ1bmcuCi0gKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuICAoU2VlIGFjY29tcGFueWluZwotICogZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0gKgotICogc3RydWN0IG5kbmJvb3N0Ojpjb21tb25fdHlwZTxULFU+Ci0gKgotICogY29tbW9uX3R5cGU8VCxVPjo6dHlwZSBpcyB0aGUgdHlwZSBvZiB0aGUgZXhwcmVzc2lvbgotICogICAgIGIoKSA/IHgoKSA6IHkoKQotICogd2hlcmUgYigpIHJldHVybnMgYSBib29sLCB4KCkgaGFzIHJldHVybiB0eXBlIFQsIGFuZCB5KCkgaGFzIHJldHVybiB0eXBlIFUuCi0gKiBTZWUKLSAqICAgICBodHRwOi8vd3d3Lm9wZW4tc3RkLm9yZy9qdGMxL3NjMjIvd2cyMS9kb2NzL3BhcGVycy8yMDA4L24yNjYxLmh0bSNjb21tb25fdHlwZQotICoKLSAqIE5vdGUgdGhhdCB0aGlzIGV2YWx1YXRlcyB0byB2b2lkIGlmIG9uZSBvciBib3RoIG9mIFQgYW5kIFUgaXMgdm9pZC4KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLSNpZm5kZWYgTkROQk9PU1RfVFlQRV9UUkFJVFNfREVUQUlMX0NPTU1PTl9UWVBFX0lNUF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfVFlQRV9UUkFJVFNfREVUQUlMX0NPTU1PTl9UWVBFX0lNUF9IUFAKLQotI2luY2x1ZGUgPGNzdGRkZWY+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9iZWdpbl9lbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9jb250YWlucy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2NvcHkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9kZXJlZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2V2YWxfaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2luc2VydGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbmV4dC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL29yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvcGxhY2Vob2xkZXJzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvcHVzaF9iYWNrLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvc2l6ZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci92ZWN0b3IwLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvdmVjdG9yL3ZlY3RvcjEwLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pbnRlZ3JhbF9jb25zdGFudC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfZW51bS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfaW50ZWdyYWwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL21ha2Vfc2lnbmVkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9tYWtlX3Vuc2lnbmVkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfY3YuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9yZWZlcmVuY2UuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3V0aWxpdHkvZGVjbHZhbC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotCi1uYW1lc3BhY2UgZGV0YWlsX3R5cGVfdHJhaXRzX2NvbW1vbl90eXBlCi17Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBzdHJ1Y3QgcHJvcGFnYXRlX2N2PCBGcm9tLCBUbyA+Ci0gKgotICogVGhpcyBtZXRhZnVuY3Rpb24gcHJvcGFnYXRlcyBjdi1xdWFsaWZpZXJzIG9uIHR5cGUgRnJvbSB0byB0eXBlIFRvLgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotdGVtcGxhdGU8IGNsYXNzIEZyb20sIGNsYXNzIFRvID4KLXN0cnVjdCBwcm9wYWdhdGVfY3YKLXsgdHlwZWRlZiBUbyB0eXBlOyB9OwotdGVtcGxhdGU8IGNsYXNzIEZyb20sIGNsYXNzIFRvID4KLXN0cnVjdCBwcm9wYWdhdGVfY3Y8IGNvbnN0IEZyb20sIFRvID4KLXsgdHlwZWRlZiBUbyBjb25zdCB0eXBlOyB9OwotdGVtcGxhdGU8IGNsYXNzIEZyb20sIGNsYXNzIFRvID4KLXN0cnVjdCBwcm9wYWdhdGVfY3Y8IHZvbGF0aWxlIEZyb20sIFRvID4KLXsgdHlwZWRlZiBUbyB2b2xhdGlsZSB0eXBlOyB9OwotdGVtcGxhdGU8IGNsYXNzIEZyb20sIGNsYXNzIFRvID4KLXN0cnVjdCBwcm9wYWdhdGVfY3Y8IGNvbnN0IHZvbGF0aWxlIEZyb20sIFRvID4KLXsgdHlwZWRlZiBUbyBjb25zdCB2b2xhdGlsZSB0eXBlOyB9OwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogc3RydWN0IGlzX2ludGVncmFsX29yX2VudW08VD4KLSAqCi0gKiBUaGlzIG1ldGFmdW5jdGlvbiBkZXRlcm1pbmVzIGlmIFQgaXMgYW4gaW50ZWdyYWwgdHlwZSB3aGljaCBjYW4gYmUgbWFkZQotICogc2lnbmVkIG9yIHVuc2lnbmVkLgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotdGVtcGxhdGU8IGNsYXNzIFQgPgotc3RydWN0IGlzX2ludGVncmFsX29yX2VudW0KLSAgICA6IHB1YmxpYyBtcGw6Om9yXzwgaXNfaW50ZWdyYWw8VD4sIGlzX2VudW08VD4gPgoteyB9OwotdGVtcGxhdGU8Pgotc3RydWN0IGlzX2ludGVncmFsX29yX2VudW08IGJvb2wgPgotICAgIDogcHVibGljIGZhbHNlX3R5cGUKLXsgfTsKLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIHN0cnVjdCBtYWtlX3Vuc2lnbmVkX3NvZnQ8VD4KLSAqIHN0cnVjdCBtYWtlX3NpZ25lZF9zb2Z0PFQ+Ci0gKgotICogVGhlc2UgbWV0YWZ1bmN0aW9uIGFyZSBpZGVudGljYWwgdG8gbWFrZV91bnNpZ25lZCBhbmQgbWFrZV9zaWduZWQsCi0gKiByZXNwZWN0aXZlbHksIGV4Y2VwdCBmb3Igc3BlY2lhbC1jYXNpbmcgYm9vbC4KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXRlbXBsYXRlPCBjbGFzcyBUID4KLXN0cnVjdCBtYWtlX3Vuc2lnbmVkX3NvZnQKLSAgICA6IHB1YmxpYyBtYWtlX3Vuc2lnbmVkPFQ+Ci17IH07Ci10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgbWFrZV91bnNpZ25lZF9zb2Z0PCBib29sID4KLXsgdHlwZWRlZiBib29sIHR5cGU7IH07Ci0KLXRlbXBsYXRlPCBjbGFzcyBUID4KLXN0cnVjdCBtYWtlX3NpZ25lZF9zb2Z0Ci0gICAgOiBwdWJsaWMgbWFrZV9zaWduZWQ8VD4KLXsgfTsKLXRlbXBsYXRlPD4KLXN0cnVjdCBtYWtlX3NpZ25lZF9zb2Z0PCBib29sID4KLXsgdHlwZWRlZiBib29sIHR5cGU7IH07Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBzdHJ1Y3Qgc2l6ZW9mX3Q8Tj4KLSAqIHR5cGVkZWYgLi4uIHllc190eXBlCi0gKiB0eXBlZGVmIC4uLiBub190eXBlCi0gKgotICogVGhlc2UgdHlwZXMgYXJlIGludGVncmFsIHBsYXllcnMgaW4gdGhlIHVzZSBvZiB0aGUgInNpemVvZiB0cmljayIsIGkuZS4sIHdlCi0gKiBjYW4gZGlzdGluZ3Vpc2ggb3ZlcmxvYWQgc2VsZWN0aW9uIGJ5IGluc3BlY3RpbmcgdGhlIHNpemUgb2YgdGhlIHJldHVybiB0eXBlCi0gKiBvZiB0aGUgb3ZlcmxvYWQuCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi10ZW1wbGF0ZTwgc3RkOjpzaXplX3QgTiA+IHN0cnVjdCBzaXplb2ZfdCB7IGNoYXIgX2R1bW15W05dOyB9OwotdHlwZWRlZiBzaXplb2ZfdDwxPiB5ZXNfdHlwZTsKLXR5cGVkZWYgc2l6ZW9mX3Q8Mj4gbm9fdHlwZTsKLU5ETkJPT1NUX01QTF9BU1NFUlRfUkVMQVRJT04oIHNpemVvZiggeWVzX3R5cGUgKSwgPT0sIDEgKTsKLU5ETkJPT1NUX01QTF9BU1NFUlRfUkVMQVRJT04oIHNpemVvZiggbm9fdHlwZSApLCA9PSwgMiApOwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogcnZhbHVlX3Rlc3QoVCYpIC0+IG5vX3R5cGUKLSAqIHJ2YWx1ZV90ZXN0KC4uLikgLT4geWVzX3R5cGUKLSAqCi0gKiBUaGVzZSBvdmVybG9hZHMgYXJlIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSBydmFsdWUtbmVzcyBvZiBhbiBleHByZXNzaW9uLgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotdGVtcGxhdGU8IGNsYXNzIFQgPiBub190eXBlIHJ2YWx1ZV90ZXN0KFQmKTsKLXllc190eXBlIHJ2YWx1ZV90ZXN0KC4uLik7Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBzdHJ1Y3QgY29udmVyc2lvbl90ZXN0X292ZXJsb2FkczwgU2VxdWVuY2UgPgotICoKLSAqIFRoaXMgc3RydWN0IGhhcyBtdWx0aXBsZSBvdmVybG9hZHMgb2YgdGhlIHN0YXRpYyBtZW1iZXIgZnVuY3Rpb24gYXBwbHksIGVhY2gKLSAqIG9uZSB0YWtpbmcgYSBzaW5nbGUgcGFyYW1ldGVyIG9mIGEgdHlwZSB3aXRoaW4gdGhlIEJvb3N0Lk1QTCBzZXF1ZW5jZQotICogU2VxdWVuY2UuICBFYWNoIHN1Y2ggYXBwbHkgb3ZlcmxvYWQgaGFzIGEgcmV0dXJuIHR5cGUgd2l0aCBzaXplb2YgZXF1YWwgdG8KLSAqIG9uZSBwbHVzIHRoZSBpbmRleCBvZiB0aGUgcGFyYW1ldGVyIHR5cGUgd2l0aGluIFNlcXVlbmNlLiAgVGh1cywgd2UgY2FuCi0gKiBkZWR1Y2UgdGhlIHR5cGUgVCBvZiBhbiBleHByZXNzaW9uIGFzIGxvbmcgYXMgd2UgY2FuIGdlbmVyYXRlIGEgZmluaXRlIHNldCBvZgotICogY2FuZGlkYXRlIHR5cGVzIGNvbnRhaW5pbmcgVCB2aWEgdGhlc2UgYXBwbHkgb3ZlcmxvYWRzIGFuZCB0aGUgInNpemVvZgotICogdHJpY2siLgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotdGVtcGxhdGU8IGNsYXNzIEZpcnN0LCBjbGFzcyBMYXN0LCBzdGQ6OnNpemVfdCBJbmRleCA+Ci1zdHJ1Y3QgY29udmVyc2lvbl90ZXN0X292ZXJsb2Fkc19pdGVyYXRlCi0gICAgOiBwdWJsaWMgY29udmVyc2lvbl90ZXN0X292ZXJsb2Fkc19pdGVyYXRlPAotICAgICAgICAgIHR5cGVuYW1lIG1wbDo6bmV4dDwgRmlyc3QgPjo6dHlwZSwgTGFzdCwgSW5kZXggKyAxCi0gICAgICA+Ci17Ci0gICAgdXNpbmcgY29udmVyc2lvbl90ZXN0X292ZXJsb2Fkc19pdGVyYXRlPAotICAgICAgICB0eXBlbmFtZSBtcGw6Om5leHQ8IEZpcnN0ID46OnR5cGUsIExhc3QsIEluZGV4ICsgMQotICAgID46OmFwcGx5OwotICAgIHN0YXRpYyBzaXplb2ZfdDwgSW5kZXggKyAxID4KLSAgICBhcHBseSh0eXBlbmFtZSBtcGw6OmRlcmVmPCBGaXJzdCA+Ojp0eXBlKTsKLX07Ci0KLXRlbXBsYXRlPCBjbGFzcyBMYXN0LCBzdGQ6OnNpemVfdCBJbmRleCA+Ci1zdHJ1Y3QgY29udmVyc2lvbl90ZXN0X292ZXJsb2Fkc19pdGVyYXRlPCBMYXN0LCBMYXN0LCBJbmRleCA+Ci17IHN0YXRpYyBzaXplb2ZfdDwgSW5kZXggKyAxID4gYXBwbHkoLi4uKTsgfTsKLQotdGVtcGxhdGU8IGNsYXNzIFNlcXVlbmNlID4KLXN0cnVjdCBjb252ZXJzaW9uX3Rlc3Rfb3ZlcmxvYWRzCi0gICAgOiBwdWJsaWMgY29udmVyc2lvbl90ZXN0X292ZXJsb2Fkc19pdGVyYXRlPAotICAgICAgICAgIHR5cGVuYW1lIG1wbDo6YmVnaW48IFNlcXVlbmNlID46OnR5cGUsCi0gICAgICAgICAgdHlwZW5hbWUgbXBsOjplbmQ8IFNlcXVlbmNlID46OnR5cGUsCi0gICAgICAgICAgMAotICAgICAgPgoteyB9OwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogc3RydWN0IHNlbGVjdDwgU2VxdWVuY2UsIEluZGV4ID4KLSAqCi0gKiBzZWxlY3QgaXMgc3lub255bW91cyB3aXRoIG1wbDo6YXRfYyB1bmxlc3MgSW5kZXggZXF1YWxzIHRoZSBzaXplIG9mIHRoZQotICogQm9vc3QuTVBMIFNlcXVlbmNlLCBpbiB3aGljaCBjYXNlIHRoaXMgZXZhbHVhdGVzIHRvIHZvaWQuCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi10ZW1wbGF0ZTwKLSAgICBjbGFzcyBTZXF1ZW5jZSwgaW50IEluZGV4LAotICAgIGludCBOID0gbXBsOjpzaXplPCBTZXF1ZW5jZSA+Ojp2YWx1ZQotPgotc3RydWN0IHNlbGVjdAotICAgIDogcHVibGljIG1wbDo6YXRfYzwgU2VxdWVuY2UsIEluZGV4ID4KLXsgfTsKLXRlbXBsYXRlPCBjbGFzcyBTZXF1ZW5jZSwgaW50IE4gPgotc3RydWN0IHNlbGVjdDwgU2VxdWVuY2UsIE4sIE4gPgoteyB0eXBlZGVmIHZvaWQgdHlwZTsgfTsKLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIGNsYXNzIGRlZHVjZV9jb21tb25fdHlwZTwgVCwgVSwgTm9taW5hbENhbmRpZGF0ZXMgPgotICogc3RydWN0IG5vbWluYWxfY2FuZGlkYXRlczxULFU+Ci0gKiBzdHJ1Y3QgY29tbW9uX3R5cGVfZGlzcGF0Y2hfb25fcnZhbHVlbmVzczxULFU+Ci0gKiBzdHJ1Y3QgY29tbW9uX3R5cGVfaW1wbDxULFU+Ci0gKgotICogVGhlc2UgY2xhc3NlcyBhbmQgc3RydWN0cyBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaGluZCBjb21tb25fdHlwZSwgd2hpY2ggZ29lcwotICogcm91Z2hseSBhcyBmb2xsb3dzLiAgTGV0IEMgYmUgdGhlIHR5cGUgb2YgdGhlIGNvbmRpdGlvbmFsIGV4cHJlc3Npb24KLSAqICAgICBkZWNsdmFsPCBib29sID4oKSA/IGRlY2x2YWw8VD4oKSA6IGRlY2x2YWw8VT4oKQotICogaWYgQyBpcyBhbiBydmFsdWUsIHRoZW46Ci0gKiAgICAgbGV0IFQnIGFuZCBVJyBiZSBUIGFuZCBVIHN0cmlwcGVkIG9mIHJlZmVyZW5jZS0gYW5kIGN2LXF1YWxpZmllcnMKLSAqICAgICBpZiBUJyBhbmQgVScgYXJlIHBvaW50ZXIgdHlwZXMsIHNheSwgVCcgPSBWKiBhbmQgVScgPSBXKiwgdGhlbjoKLSAqICAgICAgICAgZGVmaW5lIHRoZSBzZXQgb2YgTm9taW5hbENhbmRpZGF0ZXMgdG8gYmUKLSAqICAgICAgICAgICAgIHsgViosIFcqLCBWJyosIFcnKiB9Ci0gKiAgICAgICAgICAgd2hlcmUgVicgaXMgViB3aXRoIHdoYXRldmVyIGN2LXF1YWxpZmllcnMgYXJlIG9uIFcsIGFuZCBXJyBpcyBXCi0gKiAgICAgICAgICAgd2l0aCB3aGF0ZXZlciBjdi1xdWFsaWZpZXJzIGFyZSBvbiBWCi0gKiAgICAgZWxzZSBpZiBUJyBhbmQgVScgYXJlIGJvdGggaW50ZWdyYWwgb3IgZW51bSB0eXBlcywgdGhlbjoKLSAqICAgICAgICAgZGVmaW5lIHRoZSBzZXQgb2YgTm9taW5hbENhbmRpZGF0ZXMgdG8gYmUKLSAqICAgICAgICAgICAgIHsKLSAqICAgICAgICAgICAgICAgICB1bnNpZ25lZF9zb2Z0KFQnKSwKLSAqICAgICAgICAgICAgICAgICB1bnNpZ25lZF9zb2Z0KFUnKSwKLSAqICAgICAgICAgICAgICAgICBzaWduZWRfc29mdChUJyksCi0gKiAgICAgICAgICAgICAgICAgc2lnbmVkX3NvZnQoVScpLAotICogICAgICAgICAgICAgICAgIFQnLAotICogICAgICAgICAgICAgICAgIFUnLAotICogICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCwKLSAqICAgICAgICAgICAgICAgICBpbnQKLSAqICAgICAgICAgICAgIH0KLSAqICAgICAgICAgICB3aGVyZSB1bnNpZ25lZF9zb2Z0KFgpIGlzIG1ha2VfdW5zaWduZWRfc29mdDxYPjo6dHlwZSBhbmQKLSAqICAgICAgICAgICBzaWduZWRfc29mdChYKSBpcyBtYWtlX3NpZ25lZF9zb2Z0PFg+Ojp0eXBlICh0aGVzZSBhcmUgYWxsCi0gKiAgICAgICAgICAgZ2VuZXJhbGx5IG5lY2Vzc2FyeSB0byBjb3ZlciB0aGUgdmFyaW91cyBpbnRlZ3JhbCBwcm9tb3Rpb24gY2FzZXMpCi0gKiAgICAgZWxzZQotICogICAgICAgICBkZWZpbmUgdGhlIHNldCBvZiBOb21pbmFsQ2FuZGlkYXRlcyB0byBiZQotICogICAgICAgICAgICAgeyBUJywgVScgfQotICogZWxzZQotICogICAgIGxldCBWIGFuZCBXIGJlIFQgYW5kIFUgc3RyaXBwZWQgb2YgcmVmZXJlbmNlLXF1YWxpZmllcnMKLSAqICAgICBkZWZpbmUgdGhlIHNldCBvZiBOb21pbmFsQ2FuZGlkYXRlcyB0byBiZQotICogICAgICAgICB7IFYmLCBXJiwgVicmLCBXJyYgfQotICogICAgIHdoZXJlIFYnIGlzIFYgd2l0aCB3aGF0ZXZlciBjdi1xdWFsaWZpZXJzIGFyZSBvbiBXLCBhbmQgVycgaXMgVyB3aXRoCi0gKiAgICAgICB3aGF0ZXZlciBjdi1xdWFsaWZpZXJzIGFyZSBvbiBWCi0gKiBkZWZpbmUgdGhlIHNldCBvZiBDYW5kaWRhdGVzIHRvIGJlIGVxdWFsIHRvIHRoZSBzZXQgb2YgTm9taW5hbENhbmRpZGF0ZXMgd2l0aAotICogZHVwbGljYXRlcyByZW1vdmVkLCBhbmQgdXNlIHRoaXMgc2V0IG9mIENhbmRpZGF0ZXMgdG8gZGV0ZXJtaW5lIEMgdXNpbmcgdGhlCi0gKiBjb252ZXJzaW9uX3Rlc3Rfb3ZlcmxvYWRzIHN0cnVjdAotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLQotdGVtcGxhdGU8IGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIE5vbWluYWxDYW5kaWRhdGVzID4KLWNsYXNzIGRlZHVjZV9jb21tb25fdHlwZQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjpjb3B5PAotICAgICAgICBOb21pbmFsQ2FuZGlkYXRlcywKLSAgICAgICAgbXBsOjppbnNlcnRlcjwKLSAgICAgICAgICAgIG1wbDo6dmVjdG9yMDw+LAotICAgICAgICAgICAgbXBsOjppZl88Ci0gICAgICAgICAgICAgICAgbXBsOjpjb250YWluczwgbXBsOjpfMSwgbXBsOjpfMiA+LAotICAgICAgICAgICAgICAgIG1wbDo6XzEsCi0gICAgICAgICAgICAgICAgbXBsOjpwdXNoX2JhY2s8IG1wbDo6XzEsIG1wbDo6XzIgPgotICAgICAgICAgICAgPgotICAgICAgICA+Ci0gICAgPjo6dHlwZSBjYW5kaWRhdGVfdHlwZXM7Ci0gICAgc3RhdGljIGNvbnN0IGludCBiZXN0X2NhbmRpZGF0ZV9pbmRleCA9Ci0gICAgICAgIHNpemVvZiggY29udmVyc2lvbl90ZXN0X292ZXJsb2FkczwgY2FuZGlkYXRlX3R5cGVzID46OmFwcGx5KAotICAgICAgICAgICAgZGVjbHZhbDwgYm9vbCA+KCkgPyBkZWNsdmFsPFQ+KCkgOiBkZWNsdmFsPFU+KCkKLSAgICAgICAgKSApIC0gMTsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNlbGVjdDwgY2FuZGlkYXRlX3R5cGVzLCBiZXN0X2NhbmRpZGF0ZV9pbmRleCA+Ojp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwKLSAgICBjbGFzcyBULCBjbGFzcyBVLAotICAgIGNsYXNzIFYgPSB0eXBlbmFtZSByZW1vdmVfY3Y8IHR5cGVuYW1lIHJlbW92ZV9yZWZlcmVuY2U8VD46OnR5cGUgPjo6dHlwZSwKLSAgICBjbGFzcyBXID0gdHlwZW5hbWUgcmVtb3ZlX2N2PCB0eXBlbmFtZSByZW1vdmVfcmVmZXJlbmNlPFU+Ojp0eXBlID46OnR5cGUsCi0gICAgYm9vbCA9IGlzX2ludGVncmFsX29yX2VudW08Vj46OnZhbHVlICYmIGlzX2ludGVncmFsX29yX2VudW08Vz46OnZhbHVlCi0+Ci1zdHJ1Y3Qgbm9taW5hbF9jYW5kaWRhdGVzCi17IHR5cGVkZWYgbXBsOjp2ZWN0b3IyPFYsVz4gdHlwZTsgfTsKLQotdGVtcGxhdGU8IGNsYXNzIFQsIGNsYXNzIFUsIGNsYXNzIFYsIGNsYXNzIFcgPgotc3RydWN0IG5vbWluYWxfY2FuZGlkYXRlczwgVCwgVSwgViwgVywgdHJ1ZSA+Ci17Ci0gICAgdHlwZWRlZiBuZG5ib29zdDo6bXBsOjp2ZWN0b3I4PAotICAgICAgICB0eXBlbmFtZSBtYWtlX3Vuc2lnbmVkX3NvZnQ8Vj46OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIG1ha2VfdW5zaWduZWRfc29mdDxXPjo6dHlwZSwKLSAgICAgICAgdHlwZW5hbWUgbWFrZV9zaWduZWRfc29mdDxWPjo6dHlwZSwKLSAgICAgICAgdHlwZW5hbWUgbWFrZV9zaWduZWRfc29mdDxXPjo6dHlwZSwKLSAgICAgICAgViwgVywgdW5zaWduZWQgaW50LCBpbnQKLSAgICA+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTwgY2xhc3MgVCwgY2xhc3MgVSwgY2xhc3MgViwgY2xhc3MgVyA+Ci1zdHJ1Y3Qgbm9taW5hbF9jYW5kaWRhdGVzPCBULCBVLCBWKiwgVyosIGZhbHNlID4KLXsKLSAgICB0eXBlZGVmIG1wbDo6dmVjdG9yNDwKLSAgICAgICAgViosIFcqLAotICAgICAgICB0eXBlbmFtZSBwcm9wYWdhdGVfY3Y8VyxWPjo6dHlwZSAqLAotICAgICAgICB0eXBlbmFtZSBwcm9wYWdhdGVfY3Y8VixXPjo6dHlwZSAqCi0gICAgPiB0eXBlOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgVSwgYm9vbCBiPgotc3RydWN0IGNvbW1vbl90eXBlX2Rpc3BhdGNoX29uX3J2YWx1ZW5lc3MKLSAgICA6IHB1YmxpYyBkZWR1Y2VfY29tbW9uX3R5cGU8IFQsIFUsIHR5cGVuYW1lIG5vbWluYWxfY2FuZGlkYXRlczxULFU+Ojp0eXBlID4KLXsgfTsKLQotdGVtcGxhdGU8IGNsYXNzIFQsIGNsYXNzIFUgPgotc3RydWN0IGNvbW1vbl90eXBlX2Rpc3BhdGNoX29uX3J2YWx1ZW5lc3M8IFQsIFUsIGZhbHNlID4KLXsKLXByaXZhdGU6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSByZW1vdmVfcmVmZXJlbmNlPFQ+Ojp0eXBlIHVucmVmZWRfVF90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVtb3ZlX3JlZmVyZW5jZTxVPjo6dHlwZSB1bnJlZmVkX1VfdHlwZTsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGRlZHVjZV9jb21tb25fdHlwZTwKLSAgICAgICAgVCwgVSwKLSAgICAgICAgbXBsOjp2ZWN0b3I0PAotICAgICAgICAgICAgdW5yZWZlZF9UX3R5cGUgJiwKLSAgICAgICAgICAgIHVucmVmZWRfVV90eXBlICYsCi0gICAgICAgICAgICB0eXBlbmFtZSBwcm9wYWdhdGVfY3Y8IHVucmVmZWRfVV90eXBlLCB1bnJlZmVkX1RfdHlwZSA+Ojp0eXBlICYsCi0gICAgICAgICAgICB0eXBlbmFtZSBwcm9wYWdhdGVfY3Y8IHVucmVmZWRfVF90eXBlLCB1bnJlZmVkX1VfdHlwZSA+Ojp0eXBlICYKLSAgICAgICAgPgotICAgID46OnR5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPCBjbGFzcyBULCBjbGFzcyBVID4KLXN0cnVjdCBjb21tb25fdHlwZV9pbXBsCi0gICAgOiBwdWJsaWMgY29tbW9uX3R5cGVfZGlzcGF0Y2hfb25fcnZhbHVlbmVzczxULFUsIHNpemVvZiggOjpuZG5ib29zdDo6ZGV0YWlsX3R5cGVfdHJhaXRzX2NvbW1vbl90eXBlOjpydmFsdWVfdGVzdCgKLSAgICAgICAgZGVjbHZhbDwgYm9vbCA+KCkgPyBkZWNsdmFsPFQ+KCkgOiBkZWNsdmFsPFU+KCkgKSApID09IHNpemVvZiggeWVzX3R5cGUgKSA+Ci17IH07Ci0KLXRlbXBsYXRlPCBjbGFzcyBUID4gc3RydWN0IGNvbW1vbl90eXBlX2ltcGw8IFQsIHZvaWQgPiB7IHR5cGVkZWYgdm9pZCB0eXBlOyB9OwotdGVtcGxhdGU8IGNsYXNzIFQgPiBzdHJ1Y3QgY29tbW9uX3R5cGVfaW1wbDwgdm9pZCwgVCA+IHsgdHlwZWRlZiB2b2lkIHR5cGU7IH07Ci10ZW1wbGF0ZTw+IHN0cnVjdCBjb21tb25fdHlwZV9pbXBsPCB2b2lkLCB2b2lkID4geyB0eXBlZGVmIHZvaWQgdHlwZTsgfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsX3R5cGVfdHJhaXRzX2NvbW1vbl90eXBlCi0KLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RZUEVfVFJBSVRTX0RFVEFJTF9DT01NT05fVFlQRV9IUFAKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvY3ZfdHJhaXRzX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvY3ZfdHJhaXRzX2ltcGwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NTc0ZTViLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2N2X3RyYWl0c19pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDk3ICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgRGF2ZSBBYnJhaGFtcywgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgSG93YXJkCi0vLyAgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLiAgCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfREVUQUlMX0NWX1RSQUlUU19JTVBMX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9ERVRBSUxfQ1ZfVFJBSVRTX0lNUExfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLQotI2lmbmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLS8vIGltcGxlbWVudGF0aW9uIGhlbHBlcjoKLQotCi0jaWYgIShORE5CT09TVF9XT1JLQVJPVU5EKF9fR05VQ19fLD09IDMpICYmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19HTlVDX01JTk9SX18sIDw9IDIpKQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLW5hbWVzcGFjZSBkZXRhaWwgewotI2Vsc2UKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwveWVzX25vX3R5cGUuaHBwPgotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLW5hbWVzcGFjZSB0eXBlX3RyYWl0cyB7Ci1uYW1lc3BhY2UgZ2NjODUwMyB7Ci0jZW5kaWYKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBjdl90cmFpdHNfaW1wIHt9OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBjdl90cmFpdHNfaW1wPFQqPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19jb25zdCA9IGZhbHNlKTsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfdm9sYXRpbGUgPSBmYWxzZSk7Ci0gICAgdHlwZWRlZiBUIHVucXVhbGlmaWVkX3R5cGU7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBjdl90cmFpdHNfaW1wPGNvbnN0IFQqPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19jb25zdCA9IHRydWUpOwotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc192b2xhdGlsZSA9IGZhbHNlKTsKLSAgICB0eXBlZGVmIFQgdW5xdWFsaWZpZWRfdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGN2X3RyYWl0c19pbXA8dm9sYXRpbGUgVCo+Ci17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIGlzX2NvbnN0ID0gZmFsc2UpOwotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc192b2xhdGlsZSA9IHRydWUpOwotICAgIHR5cGVkZWYgVCB1bnF1YWxpZmllZF90eXBlOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgY3ZfdHJhaXRzX2ltcDxjb25zdCB2b2xhdGlsZSBUKj4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfY29uc3QgPSB0cnVlKTsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfdm9sYXRpbGUgPSB0cnVlKTsKLSAgICB0eXBlZGVmIFQgdW5xdWFsaWZpZWRfdHlwZTsKLX07Ci0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fR05VQ19fLD09IDMpICYmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19HTlVDX01JTk9SX18sIDw9IDIpCi0vLyBXZSBoYXZlIHRvIGV4Y2x1ZGUgZnVuY3Rpb24gcG9pbnRlcnMgCi0vLyAoc2VlIGh0dHA6Ly9nY2MuZ251Lm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/ODUwMykKLXllc190eXBlIG1pbmlfZnVuY3B0cl90ZXN0ZXIoLi4uKTsKLW5vX3R5cGUgIG1pbmlfZnVuY3B0cl90ZXN0ZXIoY29uc3Qgdm9sYXRpbGUgdm9pZCopOwotCi19IC8vIG5hbWVzcGFjZSBnY2M4NTAzCi19IC8vIG5hbWVzcGFjZSB0eXBlX3RyYWl0cwotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotLy8gVXNlIHRoZSBpbXBsZW1lbnRhdGlvbiBhYm92ZSBmb3Igbm9uIGZ1bmN0aW9uIHBvaW50ZXJzCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdW5zaWduZWQgU2VsZWN0IAotICA9ICh1bnNpZ25lZClzaXplb2YoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmdjYzg1MDM6Om1pbmlfZnVuY3B0cl90ZXN0ZXIoKFQpMCkpID4KLXN0cnVjdCBjdl90cmFpdHNfaW1wIDogcHVibGljIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjpnY2M4NTAzOjpjdl90cmFpdHNfaW1wPFQ+IHsgfTsKLQotLy8gRnVuY3Rpb25zIGFyZSBuZXZlciBjdi1xdWFsaWZpZWQKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgY3ZfdHJhaXRzX2ltcDxUKiwxPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBpc19jb25zdCA9IGZhbHNlKTsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgaXNfdm9sYXRpbGUgPSBmYWxzZSk7Ci0gICAgdHlwZWRlZiBUIHVucXVhbGlmaWVkX3R5cGU7Ci19OwotCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdCAKLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0RFVEFJTF9DVl9UUkFJVFNfSU1QTF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ZhbHNlX3Jlc3VsdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9mYWxzZV9yZXN1bHQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNGJjMjNiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ZhbHNlX3Jlc3VsdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi0vLyAgQ29weXJpZ2h0IERhdmlkIEFicmFoYW1zIDIwMDIuIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0RFVEFJTF9GQUxTRV9SRVNVTFRfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0RFVEFJTF9GQUxTRV9SRVNVTFRfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotbmFtZXNwYWNlIHR5cGVfdHJhaXRzIHsKLQotLy8gVXRpbGl0eSBjbGFzcyB3aGljaCBhbHdheXMgInJldHVybnMiIGZhbHNlCi1zdHJ1Y3QgZmFsc2VfcmVzdWx0Ci17Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBmYWxzZSk7Ci0gICAgfTsKLX07Ci0KLX19IC8vIG5hbWVzcGFjZSBuZG5ib29zdDo6dHlwZV90cmFpdHMKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0RFVEFJTF9GQUxTRV9SRVNVTFRfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9oYXNfYmluYXJ5X29wZXJhdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2hhc19iaW5hcnlfb3BlcmF0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMTBlZjEwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2hhc19iaW5hcnlfb3BlcmF0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjI5ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IDIwMDktMjAxMSBGcmVkZXJpYyBCcm9uLCBSb2JlcnQgU3Rld2FydCwgU3RldmVuIFdhdGFuYWJlICYgUm9tYW4gUGVyZXBlbGl0c2EuCi0vLwotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaWNlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pbnRlZ3JhbF9jb25zdGFudC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYmFzZV9vZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29uc3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnZlcnRpYmxlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19mdW5kYW1lbnRhbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfaW50ZWdyYWwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3BvaW50ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NhbWUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3ZvaWQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9jdi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX3BvaW50ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9yZWZlcmVuY2UuaHBwPgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotCi0vLyBjYW5ub3QgaW5jbHVkZSB0aGlzIGhlYWRlciB3aXRob3V0IGdldHRpbmcgd2FybmluZ3Mgb2YgdGhlIGtpbmQ6Ci0vLyBnY2M6Ci0vLyAgICB3YXJuaW5nOiB2YWx1ZSBjb21wdXRlZCBpcyBub3QgdXNlZAotLy8gICAgd2FybmluZzogY29tcGFyaXNvbiBiZXR3ZWVuIHNpZ25lZCBhbmQgdW5zaWduZWQgaW50ZWdlciBleHByZXNzaW9ucwotLy8gbXN2YzoKLS8vICAgIHdhcm5pbmcgQzQwMTg6ICc8JyA6IHNpZ25lZC91bnNpZ25lZCBtaXNtYXRjaAotLy8gICAgd2FybmluZyBDNDI0NDogJys9JyA6IGNvbnZlcnNpb24gZnJvbSAnZG91YmxlJyB0byAnY2hhcicsIHBvc3NpYmxlIGxvc3Mgb2YgZGF0YQotLy8gICAgd2FybmluZyBDNDU0NzogJyonIDogb3BlcmF0b3IgYmVmb3JlIGNvbW1hIGhhcyBubyBlZmZlY3Q7IGV4cGVjdGVkIG9wZXJhdG9yIHdpdGggc2lkZS1lZmZlY3QKLS8vICAgIHdhcm5pbmcgQzQ4MDA6ICdpbnQnIDogZm9yY2luZyB2YWx1ZSB0byBib29sICd0cnVlJyBvciAnZmFsc2UnIChwZXJmb3JtYW5jZSB3YXJuaW5nKQotLy8gICAgd2FybmluZyBDNDgwNDogJzwnIDogdW5zYWZlIHVzZSBvZiB0eXBlICdib29sJyBpbiBvcGVyYXRpb24KLS8vICAgIHdhcm5pbmcgQzQ4MDU6ICc9PScgOiB1bnNhZmUgbWl4IG9mIHR5cGUgJ2Jvb2wnIGFuZCB0eXBlICdjaGFyJyBpbiBvcGVyYXRpb24KLS8vIGNhbm5vdCBmaW5kIGFub3RoZXIgaW1wbGVtZW50YXRpb24gLT4gZGVjbGFyZWQgYXMgc3lzdGVtIGhlYWRlciB0byBzdXBwcmVzcyB0aGVzZSB3YXJuaW5ncy4KLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKF9fR05VQ19fPT0zICYmIF9fR05VQ19NSU5PUl9fPj0xKSB8fCAoX19HTlVDX18+MykpCi0jICAgcHJhZ21hIEdDQyBzeXN0ZW1faGVhZGVyCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpCi0jICAgcHJhZ21hIHdhcm5pbmcgKCBwdXNoICkKLSMgICBwcmFnbWEgd2FybmluZyAoIGRpc2FibGUgOiA0MDE4IDQyNDQgNDU0NyA0ODAwIDQ4MDQgNDgwNSA0OTEzICkKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLS8vIFRoaXMgbmFtZXNwYWNlIGVuc3VyZXMgdGhhdCBhcmd1bWVudC1kZXBlbmRlbnQgbmFtZSBsb29rdXAgZG9lcyBub3QgbWVzcyB0aGluZ3MgdXAuCi1uYW1lc3BhY2UgTkROQk9PU1RfSk9JTihORE5CT09TVF9UVF9UUkFJVF9OQU1FLF9pbXBsKSB7Ci0KLS8vIDEuIGEgZnVuY3Rpb24gdG8gaGF2ZSBhbiBpbnN0YW5jZSBvZiB0eXBlIFQgd2l0aG91dCByZXF1aXJpbmcgVCB0byBiZSBkZWZhdWx0Ci0vLyBjb25zdHJ1Y3RpYmxlCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gVCAmbWFrZSgpOwotCi0KLS8vIDIuIHdlIHByb3ZpZGUgb3VyIG9wZXJhdG9yIGRlZmluaXRpb24gZm9yIHR5cGVzIHRoYXQgZG8gbm90IGhhdmUgb25lIGFscmVhZHkKLQotLy8gYSB0eXBlIHJldHVybmVkIGZyb20gb3BlcmF0b3IgTkROQk9PU1RfVFRfVFJBSVRfT1Agd2hlbiBubyBzdWNoIG9wZXJhdG9yIGlzCi0vLyBmb3VuZCBpbiB0aGUgdHlwZSdzIG93biBuYW1lc3BhY2UgKG91ciBvd24gb3BlcmF0b3IgaXMgdXNlZCkgc28gdGhhdCB3ZSBoYXZlCi0vLyBhIG1lYW5zIHRvIGtub3cgdGhhdCBvdXIgb3BlcmF0b3Igd2FzIHVzZWQKLXN0cnVjdCBub19vcGVyYXRvciB7IH07Ci0KLS8vIHRoaXMgY2xhc3MgYWxsb3dzIGltcGxpY2l0IGNvbnZlcnNpb25zIGFuZCBtYWtlcyB0aGUgZm9sbG93aW5nIG9wZXJhdG9yCi0vLyBkZWZpbml0aW9uIGxlc3MtcHJlZmVycmVkIHRoYW4gYW55IG90aGVyIHN1Y2ggb3BlcmF0b3JzIHRoYXQgbWlnaHQgYmUgZm91bmQKLS8vIHZpYSBhcmd1bWVudC1kZXBlbmRlbnQgbmFtZSBsb29rdXAKLXN0cnVjdCBhbnkgeyB0ZW1wbGF0ZSA8Y2xhc3MgVD4gYW55KFQgY29uc3QmKTsgfTsKLQotLy8gd2hlbiBvcGVyYXRvciBORE5CT09TVF9UVF9UUkFJVF9PUCBpcyBub3QgYXZhaWxhYmxlLCB0aGlzIG9uZSBpcyB1c2VkCi1ub19vcGVyYXRvciBvcGVyYXRvciBORE5CT09TVF9UVF9UUkFJVF9PUCAoY29uc3QgYW55JiwgY29uc3QgYW55Jik7Ci0KLQotLy8gMy4gY2hlY2tzIGlmIHRoZSBvcGVyYXRvciByZXR1cm5zIHZvaWQgb3Igbm90Ci0vLyBjb25kaXRpb25zOiBMaHMhPXZvaWQgYW5kIFJocyE9dm9pZAotCi0vLyB3ZSBmaXJzdCByZWRlZmluZSAib3BlcmF0b3IsIiBzbyB0aGF0IHdlIGhhdmUgbm8gY29tcGlsYXRpb24gZXJyb3IgaWYKLS8vIG9wZXJhdG9yIE5ETkJPT1NUX1RUX1RSQUlUX09QIHJldHVybnMgdm9pZCBhbmQgd2UgY2FuIHVzZSB0aGUgcmV0dXJuIHR5cGUgb2YKLS8vIChsaHMgTkROQk9PU1RfVFRfVFJBSVRfT1AgcmhzLCByZXR1cm5zX3ZvaWRfdCgpKSB0byBkZWR1Y2UgaWYKLS8vIG9wZXJhdG9yIE5ETkJPT1NUX1RUX1RSQUlUX09QIHJldHVybnMgdm9pZCBvciBub3Q6Ci0vLyAtIG9wZXJhdG9yIE5ETkJPT1NUX1RUX1RSQUlUX09QIHJldHVybnMgdm9pZCAgIC0+IChsaHMgTkROQk9PU1RfVFRfVFJBSVRfT1AgcmhzLCByZXR1cm5zX3ZvaWRfdCgpKSByZXR1cm5zIHJldHVybnNfdm9pZF90Ci0vLyAtIG9wZXJhdG9yIE5ETkJPT1NUX1RUX1RSQUlUX09QIHJldHVybnMgIT12b2lkIC0+IChsaHMgTkROQk9PU1RfVFRfVFJBSVRfT1AgcmhzLCByZXR1cm5zX3ZvaWRfdCgpKSByZXR1cm5zIGludAotc3RydWN0IHJldHVybnNfdm9pZF90IHsgfTsKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbnQgb3BlcmF0b3IsKGNvbnN0IFQmLCByZXR1cm5zX3ZvaWRfdCk7Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW50IG9wZXJhdG9yLChjb25zdCB2b2xhdGlsZSBUJiwgcmV0dXJuc192b2lkX3QpOwotCi0vLyB0aGlzIGludGVybWVkaWF0ZSB0cmFpdCBoYXMgbWVtYmVyIHZhbHVlIG9mIHR5cGUgYm9vbDoKLS8vIC0gdmFsdWU9PXRydWUgLT4gb3BlcmF0b3IgTkROQk9PU1RfVFRfVFJBSVRfT1AgcmV0dXJucyB2b2lkCi0vLyAtIHZhbHVlPT1mYWxzZSAtPiBvcGVyYXRvciBORE5CT09TVF9UVF9UUkFJVF9PUCBkb2VzIG5vdCByZXR1cm4gdm9pZAotdGVtcGxhdGUgPCB0eXBlbmFtZSBMaHMsIHR5cGVuYW1lIFJocyA+Ci1zdHJ1Y3Qgb3BlcmF0b3JfcmV0dXJuc192b2lkIHsKLSAgIC8vIG92ZXJsb2FkcyBvZiBmdW5jdGlvbiByZXR1cm5zX3ZvaWQgbWFrZSB0aGUgZGlmZmVyZW5jZQotICAgLy8geWVzX3R5cGUgYW5kIG5vX3R5cGUgaGF2ZSBkaWZmZXJlbnQgc2l6ZSBieSBjb25zdHJ1Y3Rpb24KLSAgIHN0YXRpYyA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUgcmV0dXJuc192b2lkKHJldHVybnNfdm9pZF90KTsKLSAgIHN0YXRpYyA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6bm9fdHlwZSByZXR1cm5zX3ZvaWQoaW50KTsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IChzaXplb2YoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlKT09c2l6ZW9mKHJldHVybnNfdm9pZCgobWFrZTxMaHM+KCkgTkROQk9PU1RfVFRfVFJBSVRfT1AgbWFrZTxSaHM+KCkscmV0dXJuc192b2lkX3QoKSkpKSkpOwotfTsKLQotCi0vLyA0LiBjaGVja3MgaWYgdGhlIHJldHVybiB0eXBlIGlzIFJldCBvciBSZXQ9PWRvbnRfY2FyZQotLy8gY29uZGl0aW9uczogTGhzIT12b2lkIGFuZCBSaHMhPXZvaWQKLQotc3RydWN0IGRvbnRfY2FyZSB7IH07Ci0KLXRlbXBsYXRlIDwgdHlwZW5hbWUgTGhzLCB0eXBlbmFtZSBSaHMsIHR5cGVuYW1lIFJldCwgYm9vbCBSZXR1cm5zX3ZvaWQgPgotc3RydWN0IG9wZXJhdG9yX3JldHVybnNfUmV0OwotCi10ZW1wbGF0ZSA8IHR5cGVuYW1lIExocywgdHlwZW5hbWUgUmhzID4KLXN0cnVjdCBvcGVyYXRvcl9yZXR1cm5zX1JldCA8IExocywgUmhzLCBkb250X2NhcmUsIHRydWUgPiB7Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsKLX07Ci0KLXRlbXBsYXRlIDwgdHlwZW5hbWUgTGhzLCB0eXBlbmFtZSBSaHMgPgotc3RydWN0IG9wZXJhdG9yX3JldHVybnNfUmV0IDwgTGhzLCBSaHMsIGRvbnRfY2FyZSwgZmFsc2UgPiB7Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsKLX07Ci0KLXRlbXBsYXRlIDwgdHlwZW5hbWUgTGhzLCB0eXBlbmFtZSBSaHMgPgotc3RydWN0IG9wZXJhdG9yX3JldHVybnNfUmV0IDwgTGhzLCBSaHMsIHZvaWQsIHRydWUgPiB7Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsKLX07Ci0KLXRlbXBsYXRlIDwgdHlwZW5hbWUgTGhzLCB0eXBlbmFtZSBSaHMgPgotc3RydWN0IG9wZXJhdG9yX3JldHVybnNfUmV0IDwgTGhzLCBSaHMsIHZvaWQsIGZhbHNlID4gewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gZmFsc2UpOwotfTsKLQotdGVtcGxhdGUgPCB0eXBlbmFtZSBMaHMsIHR5cGVuYW1lIFJocywgdHlwZW5hbWUgUmV0ID4KLXN0cnVjdCBvcGVyYXRvcl9yZXR1cm5zX1JldCA8IExocywgUmhzLCBSZXQsIHRydWUgPiB7Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBmYWxzZSk7Ci19OwotCi0vLyBvdGhlcndpc2UgY2hlY2tzIGlmIGl0IGlzIGNvbnZlcnRpYmxlIHRvIFJldCB1c2luZyB0aGUgc2l6ZW9mIHRyaWNrCi0vLyBiYXNlZCBvbiBvdmVybG9hZCByZXNvbHV0aW9uCi0vLyBjb25kaXRpb246IFJldCE9dm9pZCBhbmQgUmV0IT1kb250X2NhcmUgYW5kIHRoZSBvcGVyYXRvciBkb2VzIG5vdCByZXR1cm4gdm9pZAotdGVtcGxhdGUgPCB0eXBlbmFtZSBMaHMsIHR5cGVuYW1lIFJocywgdHlwZW5hbWUgUmV0ID4KLXN0cnVjdCBvcGVyYXRvcl9yZXR1cm5zX1JldCA8IExocywgUmhzLCBSZXQsIGZhbHNlID4gewotICAgc3RhdGljIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSBpc19jb252ZXJ0aWJsZV90b19SZXQoUmV0KTsgLy8gdGhpcyB2ZXJzaW9uIGlzIHByZWZlcnJlZCBmb3IgdHlwZXMgY29udmVydGlibGUgdG8gUmV0Ci0gICBzdGF0aWMgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Om5vX3R5cGUgaXNfY29udmVydGlibGVfdG9fUmV0KC4uLik7IC8vIHRoaXMgdmVyc2lvbiBpcyB1c2VkIG90aGVyd2lzZQotCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSAoc2l6ZW9mKGlzX2NvbnZlcnRpYmxlX3RvX1JldChtYWtlPExocz4oKSBORE5CT09TVF9UVF9UUkFJVF9PUCBtYWtlPFJocz4oKSkpPT1zaXplb2YoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlKSkpOwotfTsKLQotCi0vLyA1LiBjaGVja3MgZm9yIG9wZXJhdG9yIGV4aXN0ZW5jZQotLy8gY29uZGl0aW9uOiBMaHMhPXZvaWQgYW5kIFJocyE9dm9pZAotCi0vLyBjaGVja3MgaWYgb3VyIGRlZmluaXRpb24gb2Ygb3BlcmF0b3IgTkROQk9PU1RfVFRfVFJBSVRfT1AgaXMgdXNlZCBvciBhbiBvdGhlcgotLy8gZXhpc3Rpbmcgb25lOwotLy8gdGhpcyBpcyBkb25lIHdpdGggcmVkZWZpbml0aW9uIG9mICJvcGVyYXRvciwiIHRoYXQgcmV0dXJucyBub19vcGVyYXRvciBvciBoYXNfb3BlcmF0b3IKLXN0cnVjdCBoYXNfb3BlcmF0b3IgeyB9Owotbm9fb3BlcmF0b3Igb3BlcmF0b3IsKG5vX29wZXJhdG9yLCBoYXNfb3BlcmF0b3IpOwotCi10ZW1wbGF0ZSA8IHR5cGVuYW1lIExocywgdHlwZW5hbWUgUmhzID4KLXN0cnVjdCBvcGVyYXRvcl9leGlzdHMgewotICAgc3RhdGljIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSBjaGVjayhoYXNfb3BlcmF0b3IpOyAvLyB0aGlzIHZlcnNpb24gaXMgcHJlZmVycmVkIHdoZW4gb3BlcmF0b3IgZXhpc3RzCi0gICBzdGF0aWMgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Om5vX3R5cGUgY2hlY2sobm9fb3BlcmF0b3IpOyAvLyB0aGlzIHZlcnNpb24gaXMgdXNlZCBvdGhlcndpc2UKLQotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gKHNpemVvZihjaGVjaygoKG1ha2U8TGhzPigpIE5ETkJPT1NUX1RUX1RSQUlUX09QIG1ha2U8UmhzPigpKSxtYWtlPGhhc19vcGVyYXRvcj4oKSkpKT09c2l6ZW9mKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSkpKTsKLX07Ci0KLQotLy8gNi4gbWFpbiB0cmFpdDogdG8gYXZvaWQgYW55IGNvbXBpbGF0aW9uIGVycm9yLCB0aGlzIGNsYXNzIGJlaGF2ZXMKLS8vIGRpZmZlcmVudGx5IHdoZW4gb3BlcmF0b3IgTkROQk9PU1RfVFRfVFJBSVRfT1AoTGhzLCBSaHMpIGlzIGZvcmJpZGRlbiBieSB0aGUKLS8vIHN0YW5kYXJkLgotLy8gRm9yYmlkZGVuX2lmIGlzIGEgYm9vbCB0aGF0IGlzOgotLy8gLSB0cnVlIHdoZW4gdGhlIG9wZXJhdG9yIE5ETkJPT1NUX1RUX1RSQUlUX09QKExocywgUmhzKSBpcyBmb3JiaWRkZW4gYnkgdGhlIHN0YW5kYXJkCi0vLyAgICh3b3VsZCB5aWVsZCBjb21waWxhdGlvbiBlcnJvciBpZiB1c2VkKQotLy8gLSBmYWxzZSBvdGhlcndpc2UKLXRlbXBsYXRlIDwgdHlwZW5hbWUgTGhzLCB0eXBlbmFtZSBSaHMsIHR5cGVuYW1lIFJldCwgYm9vbCBGb3JiaWRkZW5faWYgPgotc3RydWN0IHRyYWl0X2ltcGwxOwotCi10ZW1wbGF0ZSA8IHR5cGVuYW1lIExocywgdHlwZW5hbWUgUmhzLCB0eXBlbmFtZSBSZXQgPgotc3RydWN0IHRyYWl0X2ltcGwxIDwgTGhzLCBSaHMsIFJldCwgdHJ1ZSA+IHsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGZhbHNlKTsKLX07Ci0KLXRlbXBsYXRlIDwgdHlwZW5hbWUgTGhzLCB0eXBlbmFtZSBSaHMsIHR5cGVuYW1lIFJldCA+Ci1zdHJ1Y3QgdHJhaXRfaW1wbDEgPCBMaHMsIFJocywgUmV0LCBmYWxzZSA+IHsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLAotICAgICAgdmFsdWUgPSAoCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDwKLSAgICAgICAgICAgIG9wZXJhdG9yX2V4aXN0cyA8IExocywgUmhzID46OnZhbHVlLAotICAgICAgICAgICAgb3BlcmF0b3JfcmV0dXJuc19SZXQgPCBMaHMsIFJocywgUmV0LCBvcGVyYXRvcl9yZXR1cm5zX3ZvaWQgPCBMaHMsIFJocyA+Ojp2YWx1ZSA+Ojp2YWx1ZQotICAgICAgICAgPjo6dmFsdWUKLSAgICAgICkKLSAgICk7Ci19OwotCi0vLyBzb21lIHNwZWNpYWxpemF0aW9ucyBuZWVkcyB0byBiZSBkZWNsYXJlZCBmb3IgdGhlIHNwZWNpYWwgdm9pZCBjYXNlCi10ZW1wbGF0ZSA8IHR5cGVuYW1lIFJocywgdHlwZW5hbWUgUmV0ID4KLXN0cnVjdCB0cmFpdF9pbXBsMSA8IHZvaWQsIFJocywgUmV0LCBmYWxzZSA+IHsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGZhbHNlKTsKLX07Ci0KLXRlbXBsYXRlIDwgdHlwZW5hbWUgTGhzLCB0eXBlbmFtZSBSZXQgPgotc3RydWN0IHRyYWl0X2ltcGwxIDwgTGhzLCB2b2lkLCBSZXQsIGZhbHNlID4gewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gZmFsc2UpOwotfTsKLQotdGVtcGxhdGUgPCB0eXBlbmFtZSBSZXQgPgotc3RydWN0IHRyYWl0X2ltcGwxIDwgdm9pZCwgdm9pZCwgUmV0LCBmYWxzZSA+IHsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGZhbHNlKTsKLX07Ci0KLS8vIGRlZmluZXMgc29tZSB0eXBlZGVmIGZvciBjb252ZW5pZW5jZQotdGVtcGxhdGUgPCB0eXBlbmFtZSBMaHMsIHR5cGVuYW1lIFJocywgdHlwZW5hbWUgUmV0ID4KLXN0cnVjdCB0cmFpdF9pbXBsIHsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgOjpuZG5ib29zdDo6cmVtb3ZlX3JlZmVyZW5jZTxMaHM+Ojp0eXBlIExoc19ub3JlZjsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgOjpuZG5ib29zdDo6cmVtb3ZlX3JlZmVyZW5jZTxSaHM+Ojp0eXBlIFJoc19ub3JlZjsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgOjpuZG5ib29zdDo6cmVtb3ZlX2N2PExoc19ub3JlZj46OnR5cGUgTGhzX25vY3Y7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIDo6bmRuYm9vc3Q6OnJlbW92ZV9jdjxSaHNfbm9yZWY+Ojp0eXBlIFJoc19ub2N2OwotICAgdHlwZWRlZiB0eXBlbmFtZSA6Om5kbmJvb3N0OjpyZW1vdmVfY3Y8IHR5cGVuYW1lIDo6bmRuYm9vc3Q6OnJlbW92ZV9yZWZlcmVuY2U8IHR5cGVuYW1lIDo6bmRuYm9vc3Q6OnJlbW92ZV9wb2ludGVyPExoc19ub3JlZj46OnR5cGUgPjo6dHlwZSA+Ojp0eXBlIExoc19ub3B0cjsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgOjpuZG5ib29zdDo6cmVtb3ZlX2N2PCB0eXBlbmFtZSA6Om5kbmJvb3N0OjpyZW1vdmVfcmVmZXJlbmNlPCB0eXBlbmFtZSA6Om5kbmJvb3N0OjpyZW1vdmVfcG9pbnRlcjxSaHNfbm9yZWY+Ojp0eXBlID46OnR5cGUgPjo6dHlwZSBSaHNfbm9wdHI7Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSAodHJhaXRfaW1wbDEgPCBMaHNfbm9yZWYsIFJoc19ub3JlZiwgUmV0LCBORE5CT09TVF9UVF9GT1JCSURERU5fSUYgPjo6dmFsdWUpKTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGltcGwKLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi0vLyB0aGlzIGlzIHRoZSBhY2Nlc3NpYmxlIGRlZmluaXRpb24gb2YgdGhlIHRyYWl0IHRvIGVuZCB1c2VyCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYzKE5ETkJPT1NUX1RUX1RSQUlUX05BTUUsIExocywgUmhzPUxocywgUmV0PTo6bmRuYm9vc3Q6OmRldGFpbDo6TkROQk9PU1RfSk9JTihORE5CT09TVF9UVF9UUkFJVF9OQU1FLF9pbXBsKTo6ZG9udF9jYXJlLCAoOjpuZG5ib29zdDo6ZGV0YWlsOjpORE5CT09TVF9KT0lOKE5ETkJPT1NUX1RUX1RSQUlUX05BTUUsX2ltcGwpOjp0cmFpdF9pbXBsIDwgTGhzLCBSaHMsIFJldCA+Ojp2YWx1ZSkpCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpCi0jICAgcHJhZ21hIHdhcm5pbmcgKCBwb3AgKQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHA+CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9oYXNfcG9zdGZpeF9vcGVyYXRvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9oYXNfcG9zdGZpeF9vcGVyYXRvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVkMjM1NzMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaGFzX3Bvc3RmaXhfb3BlcmF0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjAyICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IDIwMDktMjAxMSBGcmVkZXJpYyBCcm9uLCBSb2JlcnQgU3Rld2FydCwgU3RldmVuIFdhdGFuYWJlICYgUm9tYW4gUGVyZXBlbGl0c2EuCi0vLwotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaWNlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pbnRlZ3JhbF9jb25zdGFudC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29uc3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Z1bmRhbWVudGFsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19wb2ludGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc192b2lkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfY3YuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9wb2ludGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfcmVmZXJlbmNlLmhwcD4KLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcD4KLQotLy8gYXZvaWQgd2FybmluZ3MKLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKF9fR05VQ19fPT0zICYmIF9fR05VQ19NSU5PUl9fPj0xKSB8fCAoX19HTlVDX18+MykpCi0jICAgcHJhZ21hIEdDQyBzeXN0ZW1faGVhZGVyCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpCi0jICAgcHJhZ21hIHdhcm5pbmcgKCBwdXNoICkKLSMgICBwcmFnbWEgd2FybmluZyAoIGRpc2FibGUgOiA0MjQ0IDQ5MTMgKQotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci1uYW1lc3BhY2UgZGV0YWlsIHsKLQotLy8gVGhpcyBuYW1lc3BhY2UgZW5zdXJlcyB0aGF0IGFyZ3VtZW50LWRlcGVuZGVudCBuYW1lIGxvb2t1cCBkb2VzIG5vdCBtZXNzIHRoaW5ncyB1cC4KLW5hbWVzcGFjZSBORE5CT09TVF9KT0lOKE5ETkJPT1NUX1RUX1RSQUlUX05BTUUsX2ltcGwpIHsKLQotLy8gMS4gYSBmdW5jdGlvbiB0byBoYXZlIGFuIGluc3RhbmNlIG9mIHR5cGUgVCB3aXRob3V0IHJlcXVpcmluZyBUIHRvIGJlIGRlZmF1bHQKLS8vIGNvbnN0cnVjdGlibGUKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBUICZtYWtlKCk7Ci0KLQotLy8gMi4gd2UgcHJvdmlkZSBvdXIgb3BlcmF0b3IgZGVmaW5pdGlvbiBmb3IgdHlwZXMgdGhhdCBkbyBub3QgaGF2ZSBvbmUgYWxyZWFkeQotCi0vLyBhIHR5cGUgcmV0dXJuZWQgZnJvbSBvcGVyYXRvciBORE5CT09TVF9UVF9UUkFJVF9PUCB3aGVuIG5vIHN1Y2ggb3BlcmF0b3IgaXMKLS8vIGZvdW5kIGluIHRoZSB0eXBlJ3Mgb3duIG5hbWVzcGFjZSAob3VyIG93biBvcGVyYXRvciBpcyB1c2VkKSBzbyB0aGF0IHdlIGhhdmUKLS8vIGEgbWVhbnMgdG8ga25vdyB0aGF0IG91ciBvcGVyYXRvciB3YXMgdXNlZAotc3RydWN0IG5vX29wZXJhdG9yIHsgfTsKLQotLy8gdGhpcyBjbGFzcyBhbGxvd3MgaW1wbGljaXQgY29udmVyc2lvbnMgYW5kIG1ha2VzIHRoZSBmb2xsb3dpbmcgb3BlcmF0b3IKLS8vIGRlZmluaXRpb24gbGVzcy1wcmVmZXJyZWQgdGhhbiBhbnkgb3RoZXIgc3VjaCBvcGVyYXRvcnMgdGhhdCBtaWdodCBiZSBmb3VuZAotLy8gdmlhIGFyZ3VtZW50LWRlcGVuZGVudCBuYW1lIGxvb2t1cAotc3RydWN0IGFueSB7IHRlbXBsYXRlIDxjbGFzcyBUPiBhbnkoVCBjb25zdCYpOyB9OwotCi0vLyB3aGVuIG9wZXJhdG9yIE5ETkJPT1NUX1RUX1RSQUlUX09QIGlzIG5vdCBhdmFpbGFibGUsIHRoaXMgb25lIGlzIHVzZWQKLW5vX29wZXJhdG9yIG9wZXJhdG9yIE5ETkJPT1NUX1RUX1RSQUlUX09QIChjb25zdCBhbnkmLCBpbnQpOwotCi0KLS8vIDMuIGNoZWNrcyBpZiB0aGUgb3BlcmF0b3IgcmV0dXJucyB2b2lkIG9yIG5vdAotLy8gY29uZGl0aW9uczogTGhzIT12b2lkCi0KLS8vIHdlIGZpcnN0IHJlZGVmaW5lICJvcGVyYXRvciwiIHNvIHRoYXQgd2UgaGF2ZSBubyBjb21waWxhdGlvbiBlcnJvciBpZgotLy8gb3BlcmF0b3IgTkROQk9PU1RfVFRfVFJBSVRfT1AgcmV0dXJucyB2b2lkIGFuZCB3ZSBjYW4gdXNlIHRoZSByZXR1cm4gdHlwZSBvZgotLy8gKGxocyBORE5CT09TVF9UVF9UUkFJVF9PUCwgcmV0dXJuc192b2lkX3QoKSkgdG8gZGVkdWNlIGlmCi0vLyBvcGVyYXRvciBORE5CT09TVF9UVF9UUkFJVF9PUCByZXR1cm5zIHZvaWQgb3Igbm90OgotLy8gLSBvcGVyYXRvciBORE5CT09TVF9UVF9UUkFJVF9PUCByZXR1cm5zIHZvaWQgICAtPiAobGhzIE5ETkJPT1NUX1RUX1RSQUlUX09QLCByZXR1cm5zX3ZvaWRfdCgpKSByZXR1cm5zIHJldHVybnNfdm9pZF90Ci0vLyAtIG9wZXJhdG9yIE5ETkJPT1NUX1RUX1RSQUlUX09QIHJldHVybnMgIT12b2lkIC0+IChsaHMgTkROQk9PU1RfVFRfVFJBSVRfT1AsIHJldHVybnNfdm9pZF90KCkpIHJldHVybnMgaW50Ci1zdHJ1Y3QgcmV0dXJuc192b2lkX3QgeyB9OwotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGludCBvcGVyYXRvciwoY29uc3QgVCYsIHJldHVybnNfdm9pZF90KTsKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbnQgb3BlcmF0b3IsKGNvbnN0IHZvbGF0aWxlIFQmLCByZXR1cm5zX3ZvaWRfdCk7Ci0KLS8vIHRoaXMgaW50ZXJtZWRpYXRlIHRyYWl0IGhhcyBtZW1iZXIgdmFsdWUgb2YgdHlwZSBib29sOgotLy8gLSB2YWx1ZT09dHJ1ZSAtPiBvcGVyYXRvciBORE5CT09TVF9UVF9UUkFJVF9PUCByZXR1cm5zIHZvaWQKLS8vIC0gdmFsdWU9PWZhbHNlIC0+IG9wZXJhdG9yIE5ETkJPT1NUX1RUX1RSQUlUX09QIGRvZXMgbm90IHJldHVybiB2b2lkCi10ZW1wbGF0ZSA8IHR5cGVuYW1lIExocyA+Ci1zdHJ1Y3Qgb3BlcmF0b3JfcmV0dXJuc192b2lkIHsKLSAgIC8vIG92ZXJsb2FkcyBvZiBmdW5jdGlvbiByZXR1cm5zX3ZvaWQgbWFrZSB0aGUgZGlmZmVyZW5jZQotICAgLy8geWVzX3R5cGUgYW5kIG5vX3R5cGUgaGF2ZSBkaWZmZXJlbnQgc2l6ZSBieSBjb25zdHJ1Y3Rpb24KLSAgIHN0YXRpYyA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUgcmV0dXJuc192b2lkKHJldHVybnNfdm9pZF90KTsKLSAgIHN0YXRpYyA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6bm9fdHlwZSByZXR1cm5zX3ZvaWQoaW50KTsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IChzaXplb2YoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlKT09c2l6ZW9mKHJldHVybnNfdm9pZCgobWFrZTxMaHM+KCkgTkROQk9PU1RfVFRfVFJBSVRfT1AscmV0dXJuc192b2lkX3QoKSkpKSkpOwotfTsKLQotCi0vLyA0LiBjaGVja3MgaWYgdGhlIHJldHVybiB0eXBlIGlzIFJldCBvciBSZXQ9PWRvbnRfY2FyZQotLy8gY29uZGl0aW9uczogTGhzIT12b2lkCi0KLXN0cnVjdCBkb250X2NhcmUgeyB9OwotCi10ZW1wbGF0ZSA8IHR5cGVuYW1lIExocywgdHlwZW5hbWUgUmV0LCBib29sIFJldHVybnNfdm9pZCA+Ci1zdHJ1Y3Qgb3BlcmF0b3JfcmV0dXJuc19SZXQ7Ci0KLXRlbXBsYXRlIDwgdHlwZW5hbWUgTGhzID4KLXN0cnVjdCBvcGVyYXRvcl9yZXR1cm5zX1JldCA8IExocywgZG9udF9jYXJlLCB0cnVlID4gewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7Ci19OwotCi10ZW1wbGF0ZSA8IHR5cGVuYW1lIExocyA+Ci1zdHJ1Y3Qgb3BlcmF0b3JfcmV0dXJuc19SZXQgPCBMaHMsIGRvbnRfY2FyZSwgZmFsc2UgPiB7Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsKLX07Ci0KLXRlbXBsYXRlIDwgdHlwZW5hbWUgTGhzID4KLXN0cnVjdCBvcGVyYXRvcl9yZXR1cm5zX1JldCA8IExocywgdm9pZCwgdHJ1ZSA+IHsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOwotfTsKLQotdGVtcGxhdGUgPCB0eXBlbmFtZSBMaHMgPgotc3RydWN0IG9wZXJhdG9yX3JldHVybnNfUmV0IDwgTGhzLCB2b2lkLCBmYWxzZSA+IHsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGZhbHNlKTsKLX07Ci0KLXRlbXBsYXRlIDwgdHlwZW5hbWUgTGhzLCB0eXBlbmFtZSBSZXQgPgotc3RydWN0IG9wZXJhdG9yX3JldHVybnNfUmV0IDwgTGhzLCBSZXQsIHRydWUgPiB7Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBmYWxzZSk7Ci19OwotCi0vLyBvdGhlcndpc2UgY2hlY2tzIGlmIGl0IGlzIGNvbnZlcnRpYmxlIHRvIFJldCB1c2luZyB0aGUgc2l6ZW9mIHRyaWNrCi0vLyBiYXNlZCBvbiBvdmVybG9hZCByZXNvbHV0aW9uCi0vLyBjb25kaXRpb246IFJldCE9dm9pZCBhbmQgUmV0IT1kb250X2NhcmUgYW5kIHRoZSBvcGVyYXRvciBkb2VzIG5vdCByZXR1cm4gdm9pZAotdGVtcGxhdGUgPCB0eXBlbmFtZSBMaHMsIHR5cGVuYW1lIFJldCA+Ci1zdHJ1Y3Qgb3BlcmF0b3JfcmV0dXJuc19SZXQgPCBMaHMsIFJldCwgZmFsc2UgPiB7Ci0gICBzdGF0aWMgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlIGlzX2NvbnZlcnRpYmxlX3RvX1JldChSZXQpOyAvLyB0aGlzIHZlcnNpb24gaXMgcHJlZmVycmVkIGZvciB0eXBlcyBjb252ZXJ0aWJsZSB0byBSZXQKLSAgIHN0YXRpYyA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6bm9fdHlwZSBpc19jb252ZXJ0aWJsZV90b19SZXQoLi4uKTsgLy8gdGhpcyB2ZXJzaW9uIGlzIHVzZWQgb3RoZXJ3aXNlCi0KLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IChzaXplb2YoaXNfY29udmVydGlibGVfdG9fUmV0KG1ha2U8TGhzPigpIE5ETkJPT1NUX1RUX1RSQUlUX09QKSk9PXNpemVvZig6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUpKSk7Ci19OwotCi0KLS8vIDUuIGNoZWNrcyBmb3Igb3BlcmF0b3IgZXhpc3RlbmNlCi0vLyBjb25kaXRpb246IExocyE9dm9pZAotCi0vLyBjaGVja3MgaWYgb3VyIGRlZmluaXRpb24gb2Ygb3BlcmF0b3IgTkROQk9PU1RfVFRfVFJBSVRfT1AgaXMgdXNlZCBvciBhbiBvdGhlcgotLy8gZXhpc3Rpbmcgb25lOwotLy8gdGhpcyBpcyBkb25lIHdpdGggcmVkZWZpbml0aW9uIG9mICJvcGVyYXRvciwiIHRoYXQgcmV0dXJucyBub19vcGVyYXRvciBvciBoYXNfb3BlcmF0b3IKLXN0cnVjdCBoYXNfb3BlcmF0b3IgeyB9Owotbm9fb3BlcmF0b3Igb3BlcmF0b3IsKG5vX29wZXJhdG9yLCBoYXNfb3BlcmF0b3IpOwotCi10ZW1wbGF0ZSA8IHR5cGVuYW1lIExocyA+Ci1zdHJ1Y3Qgb3BlcmF0b3JfZXhpc3RzIHsKLSAgIHN0YXRpYyA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUgY2hlY2soaGFzX29wZXJhdG9yKTsgLy8gdGhpcyB2ZXJzaW9uIGlzIHByZWZlcnJlZCB3aGVuIG9wZXJhdG9yIGV4aXN0cwotICAgc3RhdGljIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjpub190eXBlIGNoZWNrKG5vX29wZXJhdG9yKTsgLy8gdGhpcyB2ZXJzaW9uIGlzIHVzZWQgb3RoZXJ3aXNlCi0KLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IChzaXplb2YoY2hlY2soKChtYWtlPExocz4oKSBORE5CT09TVF9UVF9UUkFJVF9PUCksbWFrZTxoYXNfb3BlcmF0b3I+KCkpKSk9PXNpemVvZig6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUpKSk7Ci19OwotCi0KLS8vIDYuIG1haW4gdHJhaXQ6IHRvIGF2b2lkIGFueSBjb21waWxhdGlvbiBlcnJvciwgdGhpcyBjbGFzcyBiZWhhdmVzCi0vLyBkaWZmZXJlbnRseSB3aGVuIG9wZXJhdG9yIE5ETkJPT1NUX1RUX1RSQUlUX09QKExocykgaXMgZm9yYmlkZGVuIGJ5IHRoZQotLy8gc3RhbmRhcmQuCi0vLyBGb3JiaWRkZW5faWYgaXMgYSBib29sIHRoYXQgaXM6Ci0vLyAtIHRydWUgd2hlbiB0aGUgb3BlcmF0b3IgTkROQk9PU1RfVFRfVFJBSVRfT1AoTGhzKSBpcyBmb3JiaWRkZW4gYnkgdGhlIHN0YW5kYXJkCi0vLyAgICh3b3VsZCB5aWVsZCBjb21waWxhdGlvbiBlcnJvciBpZiB1c2VkKQotLy8gLSBmYWxzZSBvdGhlcndpc2UKLXRlbXBsYXRlIDwgdHlwZW5hbWUgTGhzLCB0eXBlbmFtZSBSZXQsIGJvb2wgRm9yYmlkZGVuX2lmID4KLXN0cnVjdCB0cmFpdF9pbXBsMTsKLQotdGVtcGxhdGUgPCB0eXBlbmFtZSBMaHMsIHR5cGVuYW1lIFJldCA+Ci1zdHJ1Y3QgdHJhaXRfaW1wbDEgPCBMaHMsIFJldCwgdHJ1ZSA+IHsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGZhbHNlKTsKLX07Ci0KLXRlbXBsYXRlIDwgdHlwZW5hbWUgTGhzLCB0eXBlbmFtZSBSZXQgPgotc3RydWN0IHRyYWl0X2ltcGwxIDwgTGhzLCBSZXQsIGZhbHNlID4gewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsCi0gICAgICB2YWx1ZSA9ICgKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPAotICAgICAgICAgICAgb3BlcmF0b3JfZXhpc3RzIDwgTGhzID46OnZhbHVlLAotICAgICAgICAgICAgb3BlcmF0b3JfcmV0dXJuc19SZXQgPCBMaHMsIFJldCwgb3BlcmF0b3JfcmV0dXJuc192b2lkIDwgTGhzID46OnZhbHVlID46OnZhbHVlCi0gICAgICAgICA+Ojp2YWx1ZQotICAgICAgKQotICAgKTsKLX07Ci0KLS8vIHNwZWNpYWxpemF0aW9uIG5lZWRzIHRvIGJlIGRlY2xhcmVkIGZvciB0aGUgc3BlY2lhbCB2b2lkIGNhc2UKLXRlbXBsYXRlIDwgdHlwZW5hbWUgUmV0ID4KLXN0cnVjdCB0cmFpdF9pbXBsMSA8IHZvaWQsIFJldCwgZmFsc2UgPiB7Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBmYWxzZSk7Ci19OwotCi0vLyBkZWZpbmVzIHNvbWUgdHlwZWRlZiBmb3IgY29udmVuaWVuY2UKLXRlbXBsYXRlIDwgdHlwZW5hbWUgTGhzLCB0eXBlbmFtZSBSZXQgPgotc3RydWN0IHRyYWl0X2ltcGwgewotICAgdHlwZWRlZiB0eXBlbmFtZSA6Om5kbmJvb3N0OjpyZW1vdmVfcmVmZXJlbmNlPExocz46OnR5cGUgTGhzX25vcmVmOwotICAgdHlwZWRlZiB0eXBlbmFtZSA6Om5kbmJvb3N0OjpyZW1vdmVfY3Y8TGhzX25vcmVmPjo6dHlwZSBMaHNfbm9jdjsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgOjpuZG5ib29zdDo6cmVtb3ZlX2N2PCB0eXBlbmFtZSA6Om5kbmJvb3N0OjpyZW1vdmVfcmVmZXJlbmNlPCB0eXBlbmFtZSA6Om5kbmJvb3N0OjpyZW1vdmVfcG9pbnRlcjxMaHNfbm9yZWY+Ojp0eXBlID46OnR5cGUgPjo6dHlwZSBMaHNfbm9wdHI7Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSAodHJhaXRfaW1wbDEgPCBMaHNfbm9yZWYsIFJldCwgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGID46OnZhbHVlKSk7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBpbXBsCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotLy8gdGhpcyBpcyB0aGUgYWNjZXNzaWJsZSBkZWZpbml0aW9uIG9mIHRoZSB0cmFpdCB0byBlbmQgdXNlcgotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMihORE5CT09TVF9UVF9UUkFJVF9OQU1FLCBMaHMsIFJldD06Om5kbmJvb3N0OjpkZXRhaWw6Ok5ETkJPT1NUX0pPSU4oTkROQk9PU1RfVFRfVFJBSVRfTkFNRSxfaW1wbCk6OmRvbnRfY2FyZSwgKDo6bmRuYm9vc3Q6OmRldGFpbDo6TkROQk9PU1RfSk9JTihORE5CT09TVF9UVF9UUkFJVF9OQU1FLF9pbXBsKTo6dHJhaXRfaW1wbDwgTGhzLCBSZXQgPjo6dmFsdWUpKQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKQotIyAgIHByYWdtYSB3YXJuaW5nICggcG9wICkKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfdW5kZWYuaHBwPgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaGFzX3ByZWZpeF9vcGVyYXRvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9oYXNfcHJlZml4X29wZXJhdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2EyNWM1OC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9oYXNfcHJlZml4X29wZXJhdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIxMCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCAyMDA5LTIwMTEgRnJlZGVyaWMgQnJvbiwgUm9iZXJ0IFN0ZXdhcnQsIFN0ZXZlbiBXYXRhbmFiZSAmIFJvbWFuIFBlcmVwZWxpdHNhLgotLy8KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2ljZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaW50ZWdyYWxfY29uc3RhbnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnN0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19mdW5kYW1lbnRhbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfaW50ZWdyYWwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3BvaW50ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NhbWUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3ZvaWQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9jdi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX3BvaW50ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9yZWZlcmVuY2UuaHBwPgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotCi0vLyBjYW5ub3QgaW5jbHVkZSB0aGlzIGhlYWRlciB3aXRob3V0IGdldHRpbmcgd2FybmluZ3Mgb2YgdGhlIGtpbmQ6Ci0vLyBnY2M6Ci0vLyAgICB3YXJuaW5nOiB2YWx1ZSBjb21wdXRlZCBpcyBub3QgdXNlZAotLy8gICAgd2FybmluZzogY29tcGFyaXNvbiBiZXR3ZWVuIHNpZ25lZCBhbmQgdW5zaWduZWQgaW50ZWdlciBleHByZXNzaW9ucwotLy8gbXN2YzoKLS8vICAgIHdhcm5pbmcgQzQxNDY6IHVuYXJ5IG1pbnVzIG9wZXJhdG9yIGFwcGxpZWQgdG8gdW5zaWduZWQgdHlwZSwgcmVzdWx0IHN0aWxsIHVuc2lnbmVkCi0vLyAgICB3YXJuaW5nIEM0ODA0OiAnLScgOiB1bnNhZmUgdXNlIG9mIHR5cGUgJ2Jvb2wnIGluIG9wZXJhdGlvbgotLy8gY2Fubm90IGZpbmQgYW5vdGhlciBpbXBsZW1lbnRhdGlvbiAtPiBkZWNsYXJlZCBhcyBzeXN0ZW0gaGVhZGVyIHRvIHN1cHByZXNzIHRoZXNlIHdhcm5pbmdzLgotI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoX19HTlVDX189PTMgJiYgX19HTlVDX01JTk9SX18+PTEpIHx8IChfX0dOVUNfXz4zKSkKLSMgICBwcmFnbWEgR0NDIHN5c3RlbV9oZWFkZXIKLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfTVNWQykKLSMgICBwcmFnbWEgd2FybmluZyAoIHB1c2ggKQotIyAgIHByYWdtYSB3YXJuaW5nICggZGlzYWJsZSA6IDQxNDYgNDgwNCA0OTEzIDQyNDQgKQotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci1uYW1lc3BhY2UgZGV0YWlsIHsKLQotLy8gVGhpcyBuYW1lc3BhY2UgZW5zdXJlcyB0aGF0IGFyZ3VtZW50LWRlcGVuZGVudCBuYW1lIGxvb2t1cCBkb2VzIG5vdCBtZXNzIHRoaW5ncyB1cC4KLW5hbWVzcGFjZSBORE5CT09TVF9KT0lOKE5ETkJPT1NUX1RUX1RSQUlUX05BTUUsX2ltcGwpIHsKLQotLy8gMS4gYSBmdW5jdGlvbiB0byBoYXZlIGFuIGluc3RhbmNlIG9mIHR5cGUgVCB3aXRob3V0IHJlcXVpcmluZyBUIHRvIGJlIGRlZmF1bHQKLS8vIGNvbnN0cnVjdGlibGUKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBUICZtYWtlKCk7Ci0KLQotLy8gMi4gd2UgcHJvdmlkZSBvdXIgb3BlcmF0b3IgZGVmaW5pdGlvbiBmb3IgdHlwZXMgdGhhdCBkbyBub3QgaGF2ZSBvbmUgYWxyZWFkeQotCi0vLyBhIHR5cGUgcmV0dXJuZWQgZnJvbSBvcGVyYXRvciBORE5CT09TVF9UVF9UUkFJVF9PUCB3aGVuIG5vIHN1Y2ggb3BlcmF0b3IgaXMKLS8vIGZvdW5kIGluIHRoZSB0eXBlJ3Mgb3duIG5hbWVzcGFjZSAob3VyIG93biBvcGVyYXRvciBpcyB1c2VkKSBzbyB0aGF0IHdlIGhhdmUKLS8vIGEgbWVhbnMgdG8ga25vdyB0aGF0IG91ciBvcGVyYXRvciB3YXMgdXNlZAotc3RydWN0IG5vX29wZXJhdG9yIHsgfTsKLQotLy8gdGhpcyBjbGFzcyBhbGxvd3MgaW1wbGljaXQgY29udmVyc2lvbnMgYW5kIG1ha2VzIHRoZSBmb2xsb3dpbmcgb3BlcmF0b3IKLS8vIGRlZmluaXRpb24gbGVzcy1wcmVmZXJyZWQgdGhhbiBhbnkgb3RoZXIgc3VjaCBvcGVyYXRvcnMgdGhhdCBtaWdodCBiZSBmb3VuZAotLy8gdmlhIGFyZ3VtZW50LWRlcGVuZGVudCBuYW1lIGxvb2t1cAotc3RydWN0IGFueSB7IHRlbXBsYXRlIDxjbGFzcyBUPiBhbnkoVCBjb25zdCYpOyB9OwotCi0vLyB3aGVuIG9wZXJhdG9yIE5ETkJPT1NUX1RUX1RSQUlUX09QIGlzIG5vdCBhdmFpbGFibGUsIHRoaXMgb25lIGlzIHVzZWQKLW5vX29wZXJhdG9yIG9wZXJhdG9yIE5ETkJPT1NUX1RUX1RSQUlUX09QIChjb25zdCBhbnkmKTsKLQotCi0vLyAzLiBjaGVja3MgaWYgdGhlIG9wZXJhdG9yIHJldHVybnMgdm9pZCBvciBub3QKLS8vIGNvbmRpdGlvbnM6IFJocyE9dm9pZAotCi0vLyB3ZSBmaXJzdCByZWRlZmluZSAib3BlcmF0b3IsIiBzbyB0aGF0IHdlIGhhdmUgbm8gY29tcGlsYXRpb24gZXJyb3IgaWYKLS8vIG9wZXJhdG9yIE5ETkJPT1NUX1RUX1RSQUlUX09QIHJldHVybnMgdm9pZCBhbmQgd2UgY2FuIHVzZSB0aGUgcmV0dXJuIHR5cGUgb2YKLS8vIChORE5CT09TVF9UVF9UUkFJVF9PUCByaHMsIHJldHVybnNfdm9pZF90KCkpIHRvIGRlZHVjZSBpZgotLy8gb3BlcmF0b3IgTkROQk9PU1RfVFRfVFJBSVRfT1AgcmV0dXJucyB2b2lkIG9yIG5vdDoKLS8vIC0gb3BlcmF0b3IgTkROQk9PU1RfVFRfVFJBSVRfT1AgcmV0dXJucyB2b2lkICAgLT4gKE5ETkJPT1NUX1RUX1RSQUlUX09QIHJocywgcmV0dXJuc192b2lkX3QoKSkgcmV0dXJucyByZXR1cm5zX3ZvaWRfdAotLy8gLSBvcGVyYXRvciBORE5CT09TVF9UVF9UUkFJVF9PUCByZXR1cm5zICE9dm9pZCAtPiAoTkROQk9PU1RfVFRfVFJBSVRfT1AgcmhzLCByZXR1cm5zX3ZvaWRfdCgpKSByZXR1cm5zIGludAotc3RydWN0IHJldHVybnNfdm9pZF90IHsgfTsKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbnQgb3BlcmF0b3IsKGNvbnN0IFQmLCByZXR1cm5zX3ZvaWRfdCk7Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW50IG9wZXJhdG9yLChjb25zdCB2b2xhdGlsZSBUJiwgcmV0dXJuc192b2lkX3QpOwotCi0vLyB0aGlzIGludGVybWVkaWF0ZSB0cmFpdCBoYXMgbWVtYmVyIHZhbHVlIG9mIHR5cGUgYm9vbDoKLS8vIC0gdmFsdWU9PXRydWUgLT4gb3BlcmF0b3IgTkROQk9PU1RfVFRfVFJBSVRfT1AgcmV0dXJucyB2b2lkCi0vLyAtIHZhbHVlPT1mYWxzZSAtPiBvcGVyYXRvciBORE5CT09TVF9UVF9UUkFJVF9PUCBkb2VzIG5vdCByZXR1cm4gdm9pZAotdGVtcGxhdGUgPCB0eXBlbmFtZSBSaHMgPgotc3RydWN0IG9wZXJhdG9yX3JldHVybnNfdm9pZCB7Ci0gICAvLyBvdmVybG9hZHMgb2YgZnVuY3Rpb24gcmV0dXJuc192b2lkIG1ha2UgdGhlIGRpZmZlcmVuY2UKLSAgIC8vIHllc190eXBlIGFuZCBub190eXBlIGhhdmUgZGlmZmVyZW50IHNpemUgYnkgY29uc3RydWN0aW9uCi0gICBzdGF0aWMgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlIHJldHVybnNfdm9pZChyZXR1cm5zX3ZvaWRfdCk7Ci0gICBzdGF0aWMgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Om5vX3R5cGUgcmV0dXJuc192b2lkKGludCk7Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSAoc2l6ZW9mKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSk9PXNpemVvZihyZXR1cm5zX3ZvaWQoKE5ETkJPT1NUX1RUX1RSQUlUX09QIG1ha2U8UmhzPigpLHJldHVybnNfdm9pZF90KCkpKSkpKTsKLX07Ci0KLQotLy8gNC4gY2hlY2tzIGlmIHRoZSByZXR1cm4gdHlwZSBpcyBSZXQgb3IgUmV0PT1kb250X2NhcmUKLS8vIGNvbmRpdGlvbnM6IFJocyE9dm9pZAotCi1zdHJ1Y3QgZG9udF9jYXJlIHsgfTsKLQotdGVtcGxhdGUgPCB0eXBlbmFtZSBSaHMsIHR5cGVuYW1lIFJldCwgYm9vbCBSZXR1cm5zX3ZvaWQgPgotc3RydWN0IG9wZXJhdG9yX3JldHVybnNfUmV0OwotCi10ZW1wbGF0ZSA8IHR5cGVuYW1lIFJocyA+Ci1zdHJ1Y3Qgb3BlcmF0b3JfcmV0dXJuc19SZXQgPCBSaHMsIGRvbnRfY2FyZSwgdHJ1ZSA+IHsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOwotfTsKLQotdGVtcGxhdGUgPCB0eXBlbmFtZSBSaHMgPgotc3RydWN0IG9wZXJhdG9yX3JldHVybnNfUmV0IDwgUmhzLCBkb250X2NhcmUsIGZhbHNlID4gewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7Ci19OwotCi10ZW1wbGF0ZSA8IHR5cGVuYW1lIFJocyA+Ci1zdHJ1Y3Qgb3BlcmF0b3JfcmV0dXJuc19SZXQgPCBSaHMsIHZvaWQsIHRydWUgPiB7Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsKLX07Ci0KLXRlbXBsYXRlIDwgdHlwZW5hbWUgUmhzID4KLXN0cnVjdCBvcGVyYXRvcl9yZXR1cm5zX1JldCA8IFJocywgdm9pZCwgZmFsc2UgPiB7Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBmYWxzZSk7Ci19OwotCi10ZW1wbGF0ZSA8IHR5cGVuYW1lIFJocywgdHlwZW5hbWUgUmV0ID4KLXN0cnVjdCBvcGVyYXRvcl9yZXR1cm5zX1JldCA8IFJocywgUmV0LCB0cnVlID4gewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gZmFsc2UpOwotfTsKLQotLy8gb3RoZXJ3aXNlIGNoZWNrcyBpZiBpdCBpcyBjb252ZXJ0aWJsZSB0byBSZXQgdXNpbmcgdGhlIHNpemVvZiB0cmljawotLy8gYmFzZWQgb24gb3ZlcmxvYWQgcmVzb2x1dGlvbgotLy8gY29uZGl0aW9uOiBSZXQhPXZvaWQgYW5kIFJldCE9ZG9udF9jYXJlIGFuZCB0aGUgb3BlcmF0b3IgZG9lcyBub3QgcmV0dXJuIHZvaWQKLXRlbXBsYXRlIDwgdHlwZW5hbWUgUmhzLCB0eXBlbmFtZSBSZXQgPgotc3RydWN0IG9wZXJhdG9yX3JldHVybnNfUmV0IDwgUmhzLCBSZXQsIGZhbHNlID4gewotICAgc3RhdGljIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSBpc19jb252ZXJ0aWJsZV90b19SZXQoUmV0KTsgLy8gdGhpcyB2ZXJzaW9uIGlzIHByZWZlcnJlZCBmb3IgdHlwZXMgY29udmVydGlibGUgdG8gUmV0Ci0gICBzdGF0aWMgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Om5vX3R5cGUgaXNfY29udmVydGlibGVfdG9fUmV0KC4uLik7IC8vIHRoaXMgdmVyc2lvbiBpcyB1c2VkIG90aGVyd2lzZQotCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSAoc2l6ZW9mKGlzX2NvbnZlcnRpYmxlX3RvX1JldChORE5CT09TVF9UVF9UUkFJVF9PUCBtYWtlPFJocz4oKSkpPT1zaXplb2YoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlKSkpOwotfTsKLQotCi0vLyA1LiBjaGVja3MgZm9yIG9wZXJhdG9yIGV4aXN0ZW5jZQotLy8gY29uZGl0aW9uOiBSaHMhPXZvaWQKLQotLy8gY2hlY2tzIGlmIG91ciBkZWZpbml0aW9uIG9mIG9wZXJhdG9yIE5ETkJPT1NUX1RUX1RSQUlUX09QIGlzIHVzZWQgb3IgYW4gb3RoZXIKLS8vIGV4aXN0aW5nIG9uZTsKLS8vIHRoaXMgaXMgZG9uZSB3aXRoIHJlZGVmaW5pdGlvbiBvZiAib3BlcmF0b3IsIiB0aGF0IHJldHVybnMgbm9fb3BlcmF0b3Igb3IgaGFzX29wZXJhdG9yCi1zdHJ1Y3QgaGFzX29wZXJhdG9yIHsgfTsKLW5vX29wZXJhdG9yIG9wZXJhdG9yLChub19vcGVyYXRvciwgaGFzX29wZXJhdG9yKTsKLQotdGVtcGxhdGUgPCB0eXBlbmFtZSBSaHMgPgotc3RydWN0IG9wZXJhdG9yX2V4aXN0cyB7Ci0gICBzdGF0aWMgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlIGNoZWNrKGhhc19vcGVyYXRvcik7IC8vIHRoaXMgdmVyc2lvbiBpcyBwcmVmZXJyZWQgd2hlbiBvcGVyYXRvciBleGlzdHMKLSAgIHN0YXRpYyA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6bm9fdHlwZSBjaGVjayhub19vcGVyYXRvcik7IC8vIHRoaXMgdmVyc2lvbiBpcyB1c2VkIG90aGVyd2lzZQotCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSAoc2l6ZW9mKGNoZWNrKCgoTkROQk9PU1RfVFRfVFJBSVRfT1AgbWFrZTxSaHM+KCkpLG1ha2U8aGFzX29wZXJhdG9yPigpKSkpPT1zaXplb2YoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlKSkpOwotfTsKLQotCi0vLyA2LiBtYWluIHRyYWl0OiB0byBhdm9pZCBhbnkgY29tcGlsYXRpb24gZXJyb3IsIHRoaXMgY2xhc3MgYmVoYXZlcwotLy8gZGlmZmVyZW50bHkgd2hlbiBvcGVyYXRvciBORE5CT09TVF9UVF9UUkFJVF9PUChSaHMpIGlzIGZvcmJpZGRlbiBieSB0aGUKLS8vIHN0YW5kYXJkLgotLy8gRm9yYmlkZGVuX2lmIGlzIGEgYm9vbCB0aGF0IGlzOgotLy8gLSB0cnVlIHdoZW4gdGhlIG9wZXJhdG9yIE5ETkJPT1NUX1RUX1RSQUlUX09QKFJocykgaXMgZm9yYmlkZGVuIGJ5IHRoZSBzdGFuZGFyZAotLy8gICAod291bGQgeWllbGQgY29tcGlsYXRpb24gZXJyb3IgaWYgdXNlZCkKLS8vIC0gZmFsc2Ugb3RoZXJ3aXNlCi10ZW1wbGF0ZSA8IHR5cGVuYW1lIFJocywgdHlwZW5hbWUgUmV0LCBib29sIEZvcmJpZGRlbl9pZiA+Ci1zdHJ1Y3QgdHJhaXRfaW1wbDE7Ci0KLXRlbXBsYXRlIDwgdHlwZW5hbWUgUmhzLCB0eXBlbmFtZSBSZXQgPgotc3RydWN0IHRyYWl0X2ltcGwxIDwgUmhzLCBSZXQsIHRydWUgPiB7Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBmYWxzZSk7Ci19OwotCi10ZW1wbGF0ZSA8IHR5cGVuYW1lIFJocywgdHlwZW5hbWUgUmV0ID4KLXN0cnVjdCB0cmFpdF9pbXBsMSA8IFJocywgUmV0LCBmYWxzZSA+IHsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLAotICAgICAgdmFsdWUgPSAoCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDwKLSAgICAgICAgICAgIG9wZXJhdG9yX2V4aXN0cyA8IFJocyA+Ojp2YWx1ZSwKLSAgICAgICAgICAgIG9wZXJhdG9yX3JldHVybnNfUmV0IDwgUmhzLCBSZXQsIG9wZXJhdG9yX3JldHVybnNfdm9pZCA8IFJocyA+Ojp2YWx1ZSA+Ojp2YWx1ZQotICAgICAgICAgPjo6dmFsdWUKLSAgICAgICkKLSAgICk7Ci19OwotCi0vLyBzcGVjaWFsaXphdGlvbiBuZWVkcyB0byBiZSBkZWNsYXJlZCBmb3IgdGhlIHNwZWNpYWwgdm9pZCBjYXNlCi10ZW1wbGF0ZSA8IHR5cGVuYW1lIFJldCA+Ci1zdHJ1Y3QgdHJhaXRfaW1wbDEgPCB2b2lkLCBSZXQsIGZhbHNlID4gewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gZmFsc2UpOwotfTsKLQotLy8gZGVmaW5lcyBzb21lIHR5cGVkZWYgZm9yIGNvbnZlbmllbmNlCi10ZW1wbGF0ZSA8IHR5cGVuYW1lIFJocywgdHlwZW5hbWUgUmV0ID4KLXN0cnVjdCB0cmFpdF9pbXBsIHsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgOjpuZG5ib29zdDo6cmVtb3ZlX3JlZmVyZW5jZTxSaHM+Ojp0eXBlIFJoc19ub3JlZjsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgOjpuZG5ib29zdDo6cmVtb3ZlX2N2PFJoc19ub3JlZj46OnR5cGUgUmhzX25vY3Y7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIDo6bmRuYm9vc3Q6OnJlbW92ZV9jdjwgdHlwZW5hbWUgOjpuZG5ib29zdDo6cmVtb3ZlX3JlZmVyZW5jZTwgdHlwZW5hbWUgOjpuZG5ib29zdDo6cmVtb3ZlX3BvaW50ZXI8UmhzX25vcmVmPjo6dHlwZSA+Ojp0eXBlID46OnR5cGUgUmhzX25vcHRyOwotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gKHRyYWl0X2ltcGwxIDwgUmhzX25vcmVmLCBSZXQsIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRiA+Ojp2YWx1ZSkpOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgaW1wbAotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLS8vIHRoaXMgaXMgdGhlIGFjY2Vzc2libGUgZGVmaW5pdGlvbiBvZiB0aGUgdHJhaXQgdG8gZW5kIHVzZXIKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjIoTkROQk9PU1RfVFRfVFJBSVRfTkFNRSwgUmhzLCBSZXQ9OjpuZG5ib29zdDo6ZGV0YWlsOjpORE5CT09TVF9KT0lOKE5ETkJPT1NUX1RUX1RSQUlUX05BTUUsX2ltcGwpOjpkb250X2NhcmUsICg6Om5kbmJvb3N0OjpkZXRhaWw6Ok5ETkJPT1NUX0pPSU4oTkROQk9PU1RfVFRfVFJBSVRfTkFNRSxfaW1wbCk6OnRyYWl0X2ltcGwgPCBSaHMsIFJldCA+Ojp2YWx1ZSkpCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpCi0jICAgcHJhZ21hIHdhcm5pbmcgKCBwb3AgKQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHA+CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2VfYW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9hbmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNjE5MTdlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9hbmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIGFuZCBTdGV2ZSBDbGVhcnkgMjAwMC4KLS8vCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0RFVEFJTF9JQ0VfQU5EX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9ERVRBSUxfSUNFX0FORF9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci1uYW1lc3BhY2UgdHlwZV90cmFpdHMgewotCi10ZW1wbGF0ZSA8Ym9vbCBiMSwgYm9vbCBiMiwgYm9vbCBiMyA9IHRydWUsIGJvb2wgYjQgPSB0cnVlLCBib29sIGI1ID0gdHJ1ZSwgYm9vbCBiNiA9IHRydWUsIGJvb2wgYjcgPSB0cnVlPgotc3RydWN0IGljZV9hbmQ7Ci0KLXRlbXBsYXRlIDxib29sIGIxLCBib29sIGIyLCBib29sIGIzLCBib29sIGI0LCBib29sIGI1LCBib29sIGI2LCBib29sIGI3Pgotc3RydWN0IGljZV9hbmQKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBmYWxzZSk7Ci19OwotCi10ZW1wbGF0ZSA8Pgotc3RydWN0IGljZV9hbmQ8dHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZT4KLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIHR5cGVfdHJhaXRzCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfREVUQUlMX0lDRV9BTkRfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2VfZXEuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX2VxLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDk2MjQwYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2VfZXEuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIGFuZCBTdGV2ZSBDbGVhcnkgMjAwMC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfREVUQUlMX0lDRV9FUV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfREVUQUlMX0lDRV9FUV9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci1uYW1lc3BhY2UgdHlwZV90cmFpdHMgewotCi10ZW1wbGF0ZSA8aW50IGIxLCBpbnQgYjI+Ci1zdHJ1Y3QgaWNlX2VxCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gKGIxID09IGIyKSk7Ci19OwotCi10ZW1wbGF0ZSA8aW50IGIxLCBpbnQgYjI+Ci1zdHJ1Y3QgaWNlX25lCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gKGIxICE9IGIyKSk7Ci19OwotCi0jaWZuZGVmIE5ETkJPT1NUX05PX0lOQ0xBU1NfTUVNQkVSX0lOSVRJQUxJWkFUSU9OCi10ZW1wbGF0ZSA8aW50IGIxLCBpbnQgYjI+IGJvb2wgY29uc3QgaWNlX2VxPGIxLGIyPjo6dmFsdWU7Ci10ZW1wbGF0ZSA8aW50IGIxLCBpbnQgYjI+IGJvb2wgY29uc3QgaWNlX25lPGIxLGIyPjo6dmFsdWU7Ci0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgdHlwZV90cmFpdHMKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9ERVRBSUxfSUNFX0VRX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX25vdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2Vfbm90LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWU0ODc5ZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2Vfbm90LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayBhbmQgU3RldmUgQ2xlYXJ5IDIwMDAuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0RFVEFJTF9JQ0VfTk9UX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9ERVRBSUxfSUNFX05PVF9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci1uYW1lc3BhY2UgdHlwZV90cmFpdHMgewotCi10ZW1wbGF0ZSA8Ym9vbCBiPgotc3RydWN0IGljZV9ub3QKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsKLX07Ci0KLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgaWNlX25vdDx0cnVlPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGZhbHNlKTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIHR5cGVfdHJhaXRzCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfREVUQUlMX0lDRV9OT1RfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2Vfb3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX29yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTIyNTViNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2Vfb3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIGFuZCBTdGV2ZSBDbGVhcnkgMjAwMC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfREVUQUlMX0lDRV9PUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfREVUQUlMX0lDRV9PUl9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci1uYW1lc3BhY2UgdHlwZV90cmFpdHMgewotCi10ZW1wbGF0ZSA8Ym9vbCBiMSwgYm9vbCBiMiwgYm9vbCBiMyA9IGZhbHNlLCBib29sIGI0ID0gZmFsc2UsIGJvb2wgYjUgPSBmYWxzZSwgYm9vbCBiNiA9IGZhbHNlLCBib29sIGI3ID0gZmFsc2U+Ci1zdHJ1Y3QgaWNlX29yOwotCi10ZW1wbGF0ZSA8Ym9vbCBiMSwgYm9vbCBiMiwgYm9vbCBiMywgYm9vbCBiNCwgYm9vbCBiNSwgYm9vbCBiNiwgYm9vbCBiNz4KLXN0cnVjdCBpY2Vfb3IKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsKLX07Ci0KLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgaWNlX29yPGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGZhbHNlKTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIHR5cGVfdHJhaXRzCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfREVUQUlMX0lDRV9PUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2lzX2Z1bmN0aW9uX3B0cl9oZWxwZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaXNfZnVuY3Rpb25fcHRyX2hlbHBlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYyNjMyNTUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaXNfZnVuY3Rpb25fcHRyX2hlbHBlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMjAgKzAsMCBAQAotCi0vLyAgQ29weXJpZ2h0IDIwMDAgSm9obiBNYWRkb2NrIChqb2huQGpvaG5tYWRkb2NrLmNvLnVrKQotLy8gIENvcHlyaWdodCAyMDAyIEFsZWtzZXkgR3VydG92b3kgKGFndXJ0b3ZveUBtZXRhLWNvbW0uY29tKQotLy8KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9QUF9JU19JVEVSQVRJTkcpCi0KLS8vLy8vIGhlYWRlciBib2R5Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfREVUQUlMX0lTX0ZVTkNUSU9OX1BUUl9IRUxQRVJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0RFVEFJTF9JU19GVU5DVElPTl9QVFJfSEVMUEVSX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvY29uZmlnLmhwcD4KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfVFRfUFJFUFJPQ0VTU0lOR19NT0RFKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRlLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZW51bV9wYXJhbXMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb21tYV9pZi5ocHA+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLW5hbWVzcGFjZSB0eXBlX3RyYWl0cyB7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSPgotc3RydWN0IGlzX2Z1bmN0aW9uX3B0cl9oZWxwZXIKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBmYWxzZSk7Ci19OwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfVFRfUFJFUFJPQ0VTU0lOR19NT0RFKQotLy8gcHJlcHJvY2Vzc29yLWdlbmVyYXRlZCBwYXJ0LCBkb24ndCBlZGl0IGJ5IGhhbmQhCi0KLXRlbXBsYXRlIDxjbGFzcyBSID4KLXN0cnVjdCBpc19mdW5jdGlvbl9wdHJfaGVscGVyPFIgKCopKCk+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIgPgotc3RydWN0IGlzX2Z1bmN0aW9uX3B0cl9oZWxwZXI8UiAoKikoIC4uLik+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDA+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fcHRyX2hlbHBlcjxSICgqKSggVDApPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDA+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fcHRyX2hlbHBlcjxSICgqKSggVDAgLi4uKT4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxPgotc3RydWN0IGlzX2Z1bmN0aW9uX3B0cl9oZWxwZXI8UiAoKikoIFQwICwgVDEpPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMT4KLXN0cnVjdCBpc19mdW5jdGlvbl9wdHJfaGVscGVyPFIgKCopKCBUMCAsIFQxIC4uLik+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyPgotc3RydWN0IGlzX2Z1bmN0aW9uX3B0cl9oZWxwZXI8UiAoKikoIFQwICwgVDEgLCBUMik+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDI+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fcHRyX2hlbHBlcjxSICgqKSggVDAgLCBUMSAsIFQyIC4uLik+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDM+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fcHRyX2hlbHBlcjxSICgqKSggVDAgLCBUMSAsIFQyICwgVDMpPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDM+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fcHRyX2hlbHBlcjxSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLi4uKT4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0Pgotc3RydWN0IGlzX2Z1bmN0aW9uX3B0cl9oZWxwZXI8UiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQpPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUND4KLXN0cnVjdCBpc19mdW5jdGlvbl9wdHJfaGVscGVyPFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0IC4uLik+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1Pgotc3RydWN0IGlzX2Z1bmN0aW9uX3B0cl9oZWxwZXI8UiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSk+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDU+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fcHRyX2hlbHBlcjxSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1IC4uLik+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDY+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fcHRyX2hlbHBlcjxSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYpPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDY+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fcHRyX2hlbHBlcjxSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLi4uKT4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3Pgotc3RydWN0IGlzX2Z1bmN0aW9uX3B0cl9oZWxwZXI8UiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcpPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNz4KLXN0cnVjdCBpc19mdW5jdGlvbl9wdHJfaGVscGVyPFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3IC4uLik+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4Pgotc3RydWN0IGlzX2Z1bmN0aW9uX3B0cl9oZWxwZXI8UiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCk+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDg+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fcHRyX2hlbHBlcjxSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4IC4uLik+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDk+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fcHRyX2hlbHBlcjxSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkpPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDk+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fcHRyX2hlbHBlcjxSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLi4uKT4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMD4KLXN0cnVjdCBpc19mdW5jdGlvbl9wdHJfaGVscGVyPFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCk+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMD4KLXN0cnVjdCBpc19mdW5jdGlvbl9wdHJfaGVscGVyPFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAuLi4pPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExPgotc3RydWN0IGlzX2Z1bmN0aW9uX3B0cl9oZWxwZXI8UiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExKT4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExPgotc3RydWN0IGlzX2Z1bmN0aW9uX3B0cl9oZWxwZXI8UiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExIC4uLik+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTI+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fcHRyX2hlbHBlcjxSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIpPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTI+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fcHRyX2hlbHBlcjxSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLi4uKT4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMz4KLXN0cnVjdCBpc19mdW5jdGlvbl9wdHJfaGVscGVyPFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyk+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMz4KLXN0cnVjdCBpc19mdW5jdGlvbl9wdHJfaGVscGVyPFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAuLi4pPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0Pgotc3RydWN0IGlzX2Z1bmN0aW9uX3B0cl9oZWxwZXI8UiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0KT4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0Pgotc3RydWN0IGlzX2Z1bmN0aW9uX3B0cl9oZWxwZXI8UiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0IC4uLik+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTU+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fcHRyX2hlbHBlcjxSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUpPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTU+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fcHRyX2hlbHBlcjxSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLi4uKT4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNj4KLXN0cnVjdCBpc19mdW5jdGlvbl9wdHJfaGVscGVyPFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNik+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNj4KLXN0cnVjdCBpc19mdW5jdGlvbl9wdHJfaGVscGVyPFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAuLi4pPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3Pgotc3RydWN0IGlzX2Z1bmN0aW9uX3B0cl9oZWxwZXI8UiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3KT4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3Pgotc3RydWN0IGlzX2Z1bmN0aW9uX3B0cl9oZWxwZXI8UiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3IC4uLik+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTg+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fcHRyX2hlbHBlcjxSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTgpPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTg+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fcHRyX2hlbHBlcjxSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLi4uKT4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOT4KLXN0cnVjdCBpc19mdW5jdGlvbl9wdHJfaGVscGVyPFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSk+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOT4KLXN0cnVjdCBpc19mdW5jdGlvbl9wdHJfaGVscGVyPFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAuLi4pPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwPgotc3RydWN0IGlzX2Z1bmN0aW9uX3B0cl9oZWxwZXI8UiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwKT4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwPgotc3RydWN0IGlzX2Z1bmN0aW9uX3B0cl9oZWxwZXI8UiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwIC4uLik+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjE+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fcHRyX2hlbHBlcjxSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEpPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjE+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fcHRyX2hlbHBlcjxSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLi4uKT4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMj4KLXN0cnVjdCBpc19mdW5jdGlvbl9wdHJfaGVscGVyPFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMik+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMj4KLXN0cnVjdCBpc19mdW5jdGlvbl9wdHJfaGVscGVyPFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAuLi4pPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzPgotc3RydWN0IGlzX2Z1bmN0aW9uX3B0cl9oZWxwZXI8UiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzKT4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzPgotc3RydWN0IGlzX2Z1bmN0aW9uX3B0cl9oZWxwZXI8UiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzIC4uLik+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgLCBjbGFzcyBUMjQ+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fcHRyX2hlbHBlcjxSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQpPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgLCBjbGFzcyBUMjQ+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fcHRyX2hlbHBlcjxSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLi4uKT4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotI2Vsc2UKLQotI3VuZGVmIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVAotI2RlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEgXAotICAgICgzLCAoMCwgMjUsICJuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaXNfZnVuY3Rpb25fcHRyX2hlbHBlci5ocHAiKSkKLSNpbmNsdWRlIE5ETkJPT1NUX1BQX0lURVJBVEUoKQotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfUFJFUFJPQ0VTU0lOR19NT0RFCi0KLX0gLy8gbmFtZXNwYWNlIHR5cGVfdHJhaXRzCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfREVUQUlMX0lTX0ZVTkNUSU9OX1BUUl9IRUxQRVJfSFBQX0lOQ0xVREVECi0KLS8vLy8vIGl0ZXJhdGlvbgotCi0jZWxzZQotI2RlZmluZSBORE5CT09TVF9QUF9DT1VOVEVSIE5ETkJPT1NUX1BQX0ZSQU1FX0lURVJBVElPTigxKQotCi10ZW1wbGF0ZSA8Y2xhc3MgUiBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9QUF9DT1VOVEVSKSBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLGNsYXNzIFQpPgotc3RydWN0IGlzX2Z1bmN0aW9uX3B0cl9oZWxwZXI8UiAoKikoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixUKSk+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci1AI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE5ETkJPT1NUX1BQX0NPVU5URVIpIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsY2xhc3MgVCk+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25fcHRyX2hlbHBlcjxSICgqKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLFQpIC4uLik+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci1AI2VuZGlmCi0jdW5kZWYgTkROQk9PU1RfUFBfQ09VTlRFUgotI2VuZGlmIC8vIE5ETkJPT1NUX1BQX0lTX0lURVJBVElORwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaXNfZnVuY3Rpb25fcHRyX3Rlc3Rlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pc19mdW5jdGlvbl9wdHJfdGVzdGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDc5ZjkwNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pc19mdW5jdGlvbl9wdHJfdGVzdGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDY1NCArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IERhdmUgQWJyYWhhbXMsIFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIAotLy8gIEFsZWtzZXkgR3VydG92b3ksIEhvd2FyZCBIaW5uYW50ICYgSm9obiBNYWRkb2NrIDIwMDAuICAKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9QUF9JU19JVEVSQVRJTkcpCi0KLS8vLy8vIGhlYWRlciBib2R5Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfREVUQUlMX0lTX0ZVTkNUSU9OX1BUUl9URVNURVJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0RFVEFJTF9JU19GVU5DVElPTl9QVFJfVEVTVEVSX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3llc19ub190eXBlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9jb25maWcuaHBwPgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9UVF9QUkVQUk9DRVNTSU5HX01PREUpCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGUuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9lbnVtX3BhcmFtcy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbW1hX2lmLmhwcD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotbmFtZXNwYWNlIHR5cGVfdHJhaXRzIHsKLQotLy8gTm90ZSBpdCBpcyBhY2NlcHRhYmxlIHRvIHVzZSBlbGxpcHNpcyBoZXJlLCBzaW5jZSB0aGUgYXJndW1lbnQgd2lsbAotLy8gYWx3YXlzIGJlIGEgcG9pbnRlciB0eXBlIG9mIHNvbWUgc29ydCAoSk0gMjAwNS8wNi8wNCk6Ci1ub190eXBlIE5ETkJPT1NUX1RUX0RFQ0wgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlciguLi4pOwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfVFRfUFJFUFJPQ0VTU0lOR19NT0RFKQotLy8gcHJlLXByb2Nlc3NlZCBjb2RlLCBkb24ndCBlZGl0LCB0cnkgR05VIGNwcCB3aXRoIAotLy8gY3BwIC1JLi4vLi4vLi4vIC1ETkROQk9PU1RfVFRfUFJFUFJPQ0VTU0lOR19NT0RFIC14IGMrKyAtUCBmaWxlbmFtZQotCi10ZW1wbGF0ZSA8Y2xhc3MgUiA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKCopKCkpOwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoKikoIC4uLikpOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLXRlbXBsYXRlIDxjbGFzcyBSID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19zdGRjYWxsKikoKSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fc3RkY2FsbCopKCAuLi4pKTsKLSNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCopKCkpOwotdGVtcGxhdGUgPGNsYXNzIFIgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2Zhc3RjYWxsKikoIC4uLikpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fY2RlY2wqKSgpKTsKLXRlbXBsYXRlIDxjbGFzcyBSID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19jZGVjbCopKCAuLi4pKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKCopKCBUMCkpOwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSICgqKSggVDAgLi4uKSk7Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fc3RkY2FsbCopKCBUMCkpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fc3RkY2FsbCopKCBUMCAuLi4pKTsKLSNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2Zhc3RjYWxsKikoIFQwKSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCopKCBUMCAuLi4pKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fY2RlY2wqKSggVDApKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2NkZWNsKikoIFQwIC4uLikpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSICgqKSggVDAgLCBUMSkpOwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKCopKCBUMCAsIFQxIC4uLikpOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fc3RkY2FsbCopKCBUMCAsIFQxKSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX3N0ZGNhbGwqKSggVDAgLCBUMSAuLi4pKTsKLSNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fZmFzdGNhbGwqKSggVDAgLCBUMSkpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCopKCBUMCAsIFQxIC4uLikpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2NkZWNsKikoIFQwICwgVDEpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fY2RlY2wqKSggVDAgLCBUMSAuLi4pKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSICgqKSggVDAgLCBUMSAsIFQyKSk7Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSICgqKSggVDAgLCBUMSAsIFQyIC4uLikpOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19zdGRjYWxsKikoIFQwICwgVDEgLCBUMikpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX3N0ZGNhbGwqKSggVDAgLCBUMSAsIFQyIC4uLikpOwotI2lmbmRlZiBfTUFOQUdFRAotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2Zhc3RjYWxsKikoIFQwICwgVDEgLCBUMikpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2Zhc3RjYWxsKikoIFQwICwgVDEgLCBUMiAuLi4pKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2NkZWNsKikoIFQwICwgVDEgLCBUMikpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2NkZWNsKikoIFQwICwgVDEgLCBUMiAuLi4pKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMykpOwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLi4uKSk7Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fc3RkY2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMykpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fc3RkY2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAuLi4pKTsKLSNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2Zhc3RjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzKSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAuLi4pKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fY2RlY2wqKSggVDAgLCBUMSAsIFQyICwgVDMpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2NkZWNsKikoIFQwICwgVDEgLCBUMiAsIFQzIC4uLikpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCkpOwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0IC4uLikpOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fc3RkY2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0KSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX3N0ZGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAuLi4pKTsKLSNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fZmFzdGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCkpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0IC4uLikpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2NkZWNsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fY2RlY2wqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAuLi4pKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1KSk7Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1IC4uLikpOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19zdGRjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSkpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX3N0ZGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1IC4uLikpOwotI2lmbmRlZiBfTUFOQUdFRAotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2Zhc3RjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSkpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2Zhc3RjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAuLi4pKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2NkZWNsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSkpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2NkZWNsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAuLi4pKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNikpOwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLi4uKSk7Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fc3RkY2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNikpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fc3RkY2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAuLi4pKTsKLSNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2Zhc3RjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2KSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAuLi4pKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fY2RlY2wqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2NkZWNsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2IC4uLikpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNykpOwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3IC4uLikpOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fc3RkY2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3KSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX3N0ZGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAuLi4pKTsKLSNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fZmFzdGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNykpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3IC4uLikpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2NkZWNsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fY2RlY2wqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAuLi4pKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4KSk7Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4IC4uLikpOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19zdGRjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCkpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX3N0ZGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4IC4uLikpOwotI2lmbmRlZiBfTUFOQUdFRAotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2Zhc3RjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCkpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2Zhc3RjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAuLi4pKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2NkZWNsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCkpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2NkZWNsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAuLi4pKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSkpOwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLi4uKSk7Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fc3RkY2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSkpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fc3RkY2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAuLi4pKTsKLSNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2Zhc3RjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5KSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAuLi4pKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fY2RlY2wqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2NkZWNsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5IC4uLikpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwKSk7Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAuLi4pKTsKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX1RUX1RFU1RfTVNfRlVOQ19TSUdTCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19zdGRjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwKSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19zdGRjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwIC4uLikpOwotI2lmbmRlZiBfTUFOQUdFRAotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fZmFzdGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTApKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2Zhc3RjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwIC4uLikpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19jZGVjbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCkpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fY2RlY2wqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLi4uKSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEpKTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExIC4uLikpOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX3N0ZGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX3N0ZGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLi4uKSk7Ci0jaWZuZGVmIF9NQU5BR0VECi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSkpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fZmFzdGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLi4uKSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2NkZWNsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExKSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19jZGVjbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAuLi4pKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMikpOwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLi4uKSk7Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fc3RkY2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMikpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fc3RkY2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAuLi4pKTsKLSNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2Zhc3RjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyKSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAuLi4pKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fY2RlY2wqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2NkZWNsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyIC4uLikpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzKSk7Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAuLi4pKTsKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX1RUX1RFU1RfTVNfRlVOQ19TSUdTCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19zdGRjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzKSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19zdGRjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzIC4uLikpOwotI2lmbmRlZiBfTUFOQUdFRAotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fZmFzdGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2Zhc3RjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzIC4uLikpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19jZGVjbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMykpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fY2RlY2wqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLi4uKSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQpKTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0IC4uLikpOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX3N0ZGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX3N0ZGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLi4uKSk7Ci0jaWZuZGVmIF9NQU5BR0VECi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCkpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fZmFzdGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLi4uKSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2NkZWNsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0KSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19jZGVjbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAuLi4pKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSkpOwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLi4uKSk7Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fc3RkY2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSkpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fc3RkY2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAuLi4pKTsKLSNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2Zhc3RjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1KSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAuLi4pKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fY2RlY2wqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2NkZWNsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1IC4uLikpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2KSk7Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAuLi4pKTsKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX1RUX1RFU1RfTVNfRlVOQ19TSUdTCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19zdGRjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2KSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19zdGRjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2IC4uLikpOwotI2lmbmRlZiBfTUFOQUdFRAotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fZmFzdGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2Zhc3RjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2IC4uLikpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19jZGVjbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNikpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fY2RlY2wqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLi4uKSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcpKTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3IC4uLikpOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX3N0ZGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX3N0ZGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLi4uKSk7Ci0jaWZuZGVmIF9NQU5BR0VECi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNykpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fZmFzdGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLi4uKSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2NkZWNsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3KSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19jZGVjbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAuLi4pKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCkpOwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLi4uKSk7Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fc3RkY2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCkpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fc3RkY2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAuLi4pKTsKLSNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2Zhc3RjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4KSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAuLi4pKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fY2RlY2wqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTgpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2NkZWNsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4IC4uLikpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5KSk7Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAuLi4pKTsKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX1RUX1RFU1RfTVNfRlVOQ19TSUdTCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19zdGRjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5KSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19zdGRjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5IC4uLikpOwotI2lmbmRlZiBfTUFOQUdFRAotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fZmFzdGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2Zhc3RjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5IC4uLikpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19jZGVjbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSkpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fY2RlY2wqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLi4uKSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjApKTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwIC4uLikpOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX3N0ZGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjApKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX3N0ZGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLi4uKSk7Ci0jaWZuZGVmIF9NQU5BR0VECi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCkpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fZmFzdGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLi4uKSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2NkZWNsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwKSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19jZGVjbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAuLi4pKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSkpOwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLi4uKSk7Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fc3RkY2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSkpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fc3RkY2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAuLi4pKTsKLSNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2Zhc3RjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxKSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAuLi4pKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fY2RlY2wqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2NkZWNsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxIC4uLikpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyKSk7Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAuLi4pKTsKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX1RUX1RFU1RfTVNfRlVOQ19TSUdTCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19zdGRjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyKSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19zdGRjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyIC4uLikpOwotI2lmbmRlZiBfTUFOQUdFRAotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fZmFzdGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2Zhc3RjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyIC4uLikpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19jZGVjbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMikpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fY2RlY2wqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLi4uKSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMpKTsKLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzIC4uLikpOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX3N0ZGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX3N0ZGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLi4uKSk7Ci0jaWZuZGVmIF9NQU5BR0VECi10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMykpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fZmFzdGNhbGwqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLi4uKSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2NkZWNsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzKSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19jZGVjbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAuLi4pKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyAsIGNsYXNzIFQyNCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCkpOwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgLCBjbGFzcyBUMjQgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSICgqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLi4uKSk7Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyAsIGNsYXNzIFQyNCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fc3RkY2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCkpOwotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyAsIGNsYXNzIFQyNCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fc3RkY2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAuLi4pKTsKLSNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgLCBjbGFzcyBUMjQgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2Zhc3RjYWxsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0KSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzICwgY2xhc3MgVDI0ID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAuLi4pKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyAsIGNsYXNzIFQyNCA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fY2RlY2wqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQpKTsKLXRlbXBsYXRlIDxjbGFzcyBSICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgLCBjbGFzcyBUMjQgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2NkZWNsKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0IC4uLikpOwotI2VuZGlmCi0jZWxzZQotCi0jZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMSBcCi0gICAgKDMsICgwLCAyNSwgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pc19mdW5jdGlvbl9wdHJfdGVzdGVyLmhwcCIpKQotI2luY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9QUkVQUk9DRVNTSU5HX01PREUKLQotfSAvLyBuYW1lc3BhY2UgdHlwZV90cmFpdHMKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9ERVRBSUxfSVNfRlVOQ1RJT05fUFRSX1RFU1RFUl9IUFBfSU5DTFVERUQKLQotLy8vLy8gaXRlcmF0aW9uCi0KLSNlbHNlCi0jZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVIgTkROQk9PU1RfUFBfRlJBTUVfSVRFUkFUSU9OKDEpCi0jdW5kZWYgX19zdGRjYWxsCi0jdW5kZWYgX19mYXN0Y2FsbAotI3VuZGVmIF9fY2RlY2wKLQotdGVtcGxhdGUgPGNsYXNzIFIgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfQ09VTlRFUikgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixjbGFzcyBUKSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKCopKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsVCkpKTsKLUAjaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfQ09VTlRFUikgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixjbGFzcyBUKSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKCopKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsVCkgLi4uKSk7Ci1AI2VuZGlmCi1AI2lmZGVmIE5ETkJPT1NUX1RUX1RFU1RfTVNfRlVOQ19TSUdTCi10ZW1wbGF0ZSA8Y2xhc3MgUiBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9QUF9DT1VOVEVSKSBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLGNsYXNzIFQpID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19zdGRjYWxsKikoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixUKSkpOwotdGVtcGxhdGUgPGNsYXNzIFIgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfQ09VTlRFUikgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixjbGFzcyBUKSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fc3RkY2FsbCopKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsVCkgLi4uKSk7Ci1AI2lmbmRlZiBfTUFOQUdFRAotdGVtcGxhdGUgPGNsYXNzIFIgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfQ09VTlRFUikgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixjbGFzcyBUKSA+Ci15ZXNfdHlwZSBpc19mdW5jdGlvbl9wdHJfdGVzdGVyKFIgKF9fZmFzdGNhbGwqKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLFQpKSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgUiBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9QUF9DT1VOVEVSKSBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLGNsYXNzIFQpID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCopKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsVCkgLi4uKSk7Ci1AI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9QUF9DT1VOVEVSKSBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLGNsYXNzIFQpID4KLXllc190eXBlIGlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIoUiAoX19jZGVjbCopKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsVCkpKTsKLXRlbXBsYXRlIDxjbGFzcyBSIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE5ETkJPT1NUX1BQX0NPVU5URVIpIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsY2xhc3MgVCkgPgoteWVzX3R5cGUgaXNfZnVuY3Rpb25fcHRyX3Rlc3RlcihSIChfX2NkZWNsKikoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixUKSAuLi4pKTsKLUAjZW5kaWYKLQotI3VuZGVmIE5ETkJPT1NUX1BQX0NPVU5URVIKLSNlbmRpZiAvLyBORE5CT09TVF9QUF9JU19JVEVSQVRJTkcKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2lzX21lbV9mdW5fcG9pbnRlcl9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2lzX21lbV9mdW5fcG9pbnRlcl9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDUwMDhlMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pc19tZW1fZnVuX3BvaW50ZXJfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw4MTcgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBEYXZlIEFicmFoYW1zLCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCAKLS8vICBBbGVrc2V5IEd1cnRvdm95LCBIb3dhcmQgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLiAgCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HKQotCi0vLy8vLyBoZWFkZXIgYm9keQotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0RFVEFJTF9JU19NRU1fRlVOX1BPSU5URVJfSU1QTF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfREVUQUlMX0lTX01FTV9GVU5fUE9JTlRFUl9JTVBMX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfVFRfUFJFUFJPQ0VTU0lOR19NT0RFKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRlLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZW51bV9wYXJhbXMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb21tYV9pZi5ocHA+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLW5hbWVzcGFjZSB0eXBlX3RyYWl0cyB7Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gZmFsc2UpOwotfTsKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1RUX1BSRVBST0NFU1NJTkdfTU9ERSkKLS8vIHByZS1wcm9jZXNzZWQgY29kZSwgZG9uJ3QgZWRpdCwgdHJ5IEdOVSBjcHAgd2l0aCAKLS8vIGNwcCAtSS4uLy4uLy4uLyAtRE5ETkJPT1NUX1RUX1BSRVBST0NFU1NJTkdfTU9ERSAteCBjKysgLVAgZmlsZW5hbWUKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCkgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUID4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggLi4uKSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1RUX05PX0NWX0ZVTkNfVEVTVCkKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUID4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSgpIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCkgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCA+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoKSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCA+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIC4uLikgY29uc3QgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCA+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIC4uLikgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCA+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIC4uLikgY29uc3Qgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDA+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwKSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMD4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLi4uKSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1RUX05PX0NWX0ZVTkNfVEVTVCkKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDA+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwKSBjb25zdCA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDA+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwKSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDA+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwKSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAuLi4pIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMD4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLi4uKSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDA+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwIC4uLikgY29uc3Qgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSkgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAuLi4pID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfVFRfTk9fQ1ZfRlVOQ19URVNUKQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxKSBjb25zdCA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSkgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDE+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEpIGNvbnN0IHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAuLi4pIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxIC4uLikgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDE+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLi4uKSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDI+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMikgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLi4uKSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1RUX05PX0NWX0ZVTkNfVEVTVCkKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIpIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDI+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMikgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMj4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyKSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMj4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyIC4uLikgY29uc3QgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMj4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyIC4uLikgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMj4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyIC4uLikgY29uc3Qgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDM+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzKSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMz4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLi4uKSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1RUX05PX0NWX0ZVTkNfVEVTVCkKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDM+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzKSBjb25zdCA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDM+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzKSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDM+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzKSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAuLi4pIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMz4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLi4uKSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDM+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzIC4uLikgY29uc3Qgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUND4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCkgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUND4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAuLi4pID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfVFRfTk9fQ1ZfRlVOQ19URVNUKQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0KSBjb25zdCA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUND4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCkgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQ+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQpIGNvbnN0IHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUND4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAuLi4pIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0IC4uLikgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQ+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLi4uKSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDU+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSkgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLi4uKSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1RUX05PX0NWX0ZVTkNfVEVTVCkKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUpIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDU+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSkgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1KSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1IC4uLikgY29uc3QgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1IC4uLikgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1IC4uLikgY29uc3Qgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDY+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2KSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNj4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLi4uKSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1RUX05PX0NWX0ZVTkNfVEVTVCkKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDY+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2KSBjb25zdCA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDY+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2KSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDY+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2KSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAuLi4pIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNj4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLi4uKSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDY+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2IC4uLikgY29uc3Qgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNz4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNykgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNz4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAuLi4pID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfVFRfTk9fQ1ZfRlVOQ19URVNUKQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3KSBjb25zdCA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNz4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNykgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDc+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcpIGNvbnN0IHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNz4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAuLi4pIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3IC4uLikgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDc+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLi4uKSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDg+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCkgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLi4uKSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1RUX05PX0NWX0ZVTkNfVEVTVCkKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDgpIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDg+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCkgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOD4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4KSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOD4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4IC4uLikgY29uc3QgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOD4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4IC4uLikgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOD4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4IC4uLikgY29uc3Qgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDk+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5KSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLi4uKSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1RUX05PX0NWX0ZVTkNfVEVTVCkKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDk+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5KSBjb25zdCA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDk+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5KSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDk+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5KSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAuLi4pIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLi4uKSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDk+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5IC4uLikgY29uc3Qgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTA+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwKSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMD4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLi4uKSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1RUX05PX0NWX0ZVTkNfVEVTVCkKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTA+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwKSBjb25zdCA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTA+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwKSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTA+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwKSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAuLi4pIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMD4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLi4uKSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTA+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwIC4uLikgY29uc3Qgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTE+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExKSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLi4uKSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1RUX05PX0NWX0ZVTkNfVEVTVCkKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTE+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExKSBjb25zdCA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTE+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExKSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTE+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExKSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAuLi4pIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLi4uKSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTE+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExIC4uLikgY29uc3Qgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTI+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyKSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMj4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLi4uKSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1RUX05PX0NWX0ZVTkNfVEVTVCkKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTI+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyKSBjb25zdCA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTI+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyKSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTI+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyKSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAuLi4pIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMj4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLi4uKSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTI+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyIC4uLikgY29uc3Qgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTM+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzKSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMz4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLi4uKSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1RUX05PX0NWX0ZVTkNfVEVTVCkKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTM+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzKSBjb25zdCA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTM+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzKSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTM+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzKSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAuLi4pIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMz4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLi4uKSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTM+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzIC4uLikgY29uc3Qgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQ+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0KSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxND4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLi4uKSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1RUX05PX0NWX0ZVTkNfVEVTVCkKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQ+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0KSBjb25zdCA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQ+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0KSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQ+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0KSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAuLi4pIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxND4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLi4uKSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQ+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0IC4uLikgY29uc3Qgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTU+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1KSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLi4uKSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1RUX05PX0NWX0ZVTkNfVEVTVCkKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTU+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1KSBjb25zdCA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTU+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1KSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTU+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1KSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAuLi4pIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLi4uKSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTU+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1IC4uLikgY29uc3Qgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTY+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2KSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNj4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLi4uKSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1RUX05PX0NWX0ZVTkNfVEVTVCkKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTY+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2KSBjb25zdCA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTY+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2KSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTY+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2KSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAuLi4pIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNj4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLi4uKSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTY+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2IC4uLikgY29uc3Qgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTc+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3KSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNz4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLi4uKSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1RUX05PX0NWX0ZVTkNfVEVTVCkKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTc+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3KSBjb25zdCA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTc+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3KSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTc+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3KSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAuLi4pIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNz4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLi4uKSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTc+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3IC4uLikgY29uc3Qgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTg+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4KSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOD4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLi4uKSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1RUX05PX0NWX0ZVTkNfVEVTVCkKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTg+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4KSBjb25zdCA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTg+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4KSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTg+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4KSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAuLi4pIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOD4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLi4uKSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTg+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4IC4uLikgY29uc3Qgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTk+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5KSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLi4uKSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1RUX05PX0NWX0ZVTkNfVEVTVCkKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTk+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5KSBjb25zdCA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTk+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5KSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTk+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5KSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAuLi4pIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLi4uKSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTk+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5IC4uLikgY29uc3Qgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjA+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwKSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMD4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLi4uKSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1RUX05PX0NWX0ZVTkNfVEVTVCkKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjA+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwKSBjb25zdCA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjA+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwKSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjA+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwKSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAuLi4pIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMD4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLi4uKSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjA+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwIC4uLikgY29uc3Qgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjE+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxKSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLi4uKSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1RUX05PX0NWX0ZVTkNfVEVTVCkKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjE+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxKSBjb25zdCA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjE+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxKSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjE+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxKSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAuLi4pIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLi4uKSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjE+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxIC4uLikgY29uc3Qgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjI+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyKSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMj4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLi4uKSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1RUX05PX0NWX0ZVTkNfVEVTVCkKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjI+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyKSBjb25zdCA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjI+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyKSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjI+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyKSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAuLi4pIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMj4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLi4uKSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjI+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyIC4uLikgY29uc3Qgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjM+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzKSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMz4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLi4uKSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1RUX05PX0NWX0ZVTkNfVEVTVCkKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjM+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzKSBjb25zdCA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjM+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzKSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjM+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzKSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAuLi4pIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMz4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLi4uKSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjM+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzIC4uLikgY29uc3Qgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgLCBjbGFzcyBUMjQ+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0KSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyAsIGNsYXNzIFQyND4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLi4uKSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1RUX05PX0NWX0ZVTkNfVEVTVCkKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgLCBjbGFzcyBUMjQ+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0KSBjb25zdCA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgLCBjbGFzcyBUMjQ+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0KSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgLCBjbGFzcyBUMjQ+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0KSBjb25zdCB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzICwgY2xhc3MgVDI0Pgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAuLi4pIGNvbnN0ID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyAsIGNsYXNzIFQyND4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLi4uKSB2b2xhdGlsZSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgLCBjbGFzcyBUMjQ+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0IC4uLikgY29uc3Qgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotI2VuZGlmCi0jZW5kaWYKLQotI2Vsc2UKLQotI3VuZGVmIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVAotI2RlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEgXAotICAgICgzLCAoMCwgMjUsICJuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGwuaHBwIikpCi0jaW5jbHVkZSBORE5CT09TVF9QUF9JVEVSQVRFKCkKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX1BSRVBST0NFU1NJTkdfTU9ERQotCi19IC8vIG5hbWVzcGFjZSB0eXBlX3RyYWl0cwotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0RFVEFJTF9JU19NRU1fRlVOX1BPSU5URVJfSU1QTF9IUFBfSU5DTFVERUQKLQotLy8vLy8gaXRlcmF0aW9uCi0KLSNlbHNlCi0jZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVIgTkROQk9PU1RfUFBfRlJBTUVfSVRFUkFUSU9OKDEpCi0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE5ETkJPT1NUX1BQX0NPVU5URVIpIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsY2xhc3MgVCk+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixUKSkgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotQCNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9QUF9DT1VOVEVSKSBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLGNsYXNzIFQpPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsVCkgLi4uKSA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci1AI2VuZGlmCi0KLUAjaWYgIWRlZmluZWQoTkROQk9PU1RfVFRfTk9fQ1ZfRlVOQ19URVNUKQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfQ09VTlRFUikgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixjbGFzcyBUKT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLFQpKSBjb25zdCA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE5ETkJPT1NUX1BQX0NPVU5URVIpIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsY2xhc3MgVCk+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixUKSkgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9QUF9DT1VOVEVSKSBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLGNsYXNzIFQpPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsVCkpIGNvbnN0IHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotQCNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9QUF9DT1VOVEVSKSBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLGNsYXNzIFQpPgotc3RydWN0IGlzX21lbV9mdW5fcG9pbnRlcl9pbXBsPFIgKFQ6OiopKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsVCkgLi4uKSBjb25zdCA+IHsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHJ1ZSk7IH07Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE5ETkJPT1NUX1BQX0NPVU5URVIpIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsY2xhc3MgVCk+Ci1zdHJ1Y3QgaXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8UiAoVDo6KikoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixUKSAuLi4pIHZvbGF0aWxlID4geyBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSB0cnVlKTsgfTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfQ09VTlRFUikgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixjbGFzcyBUKT4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfaW1wbDxSIChUOjoqKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLFQpIC4uLikgY29uc3Qgdm9sYXRpbGUgPiB7IE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHRydWUpOyB9OwotQCNlbmRpZgotQCNlbmRpZgotCi0jdW5kZWYgTkROQk9PU1RfUFBfQ09VTlRFUgotI2VuZGlmIC8vIE5ETkJPT1NUX1BQX0lTX0lURVJBVElORwotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2lzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MDc0NGRlLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2lzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjc1OSArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IERhdmUgQWJyYWhhbXMsIFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIAotLy8gIEFsZWtzZXkgR3VydG92b3ksIEhvd2FyZCBIaW5uYW50ICYgSm9obiBNYWRkb2NrIDIwMDAuICAKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9QUF9JU19JVEVSQVRJTkcpCi0KLS8vLy8vIGhlYWRlciBib2R5Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfREVUQUlMX0lTX01FTV9GVU5fUE9JTlRFUl9URVNURVJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0RFVEFJTF9JU19NRU1fRlVOX1BPSU5URVJfVEVTVEVSX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3llc19ub190eXBlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9jb25maWcuaHBwPgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9UVF9QUkVQUk9DRVNTSU5HX01PREUpCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGUuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9lbnVtX3BhcmFtcy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbW1hX2lmLmhwcD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotbmFtZXNwYWNlIHR5cGVfdHJhaXRzIHsKLQotbm9fdHlwZSBORE5CT09TVF9UVF9ERUNMIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoLi4uKTsKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX1RUX1BSRVBST0NFU1NJTkdfTU9ERSkKLS8vIHByZS1wcm9jZXNzZWQgY29kZSwgZG9uJ3QgZWRpdCwgdHJ5IEdOVSBjcHAgd2l0aCAKLS8vIGNwcCAtSS4uLy4uLy4uLyAtRE5ETkJPT1NUX1RUX1BSRVBST0NFU1NJTkdfTU9ERSAteCBjKysgLVAgZmlsZW5hbWUKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSgpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSgpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSgpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSgpIGNvbnN0IHZvbGF0aWxlKTsKLQotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSgpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCkgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0KLSNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSgpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSgpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSgpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoKSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDApKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDApIGNvbnN0IHZvbGF0aWxlKTsKLQotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDApKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDApIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDApIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDApIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwIC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0KLSNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDApIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCkgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwIC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDApIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwKSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwIC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEpIGNvbnN0IHZvbGF0aWxlKTsKLQotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxIC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxIC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSkgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxIC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0KLSNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxKSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMikgY29uc3Qgdm9sYXRpbGUpOwotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyIC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyIC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLQotI2lmbmRlZiBfTUFOQUdFRAotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyIC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyIC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMykgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMpIGNvbnN0IHZvbGF0aWxlKTsKLQotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzIC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0KLSNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMykpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMykgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzIC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMykgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzKSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzIC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQpIGNvbnN0IHZvbGF0aWxlKTsKLQotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0IC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0IC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0KSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCkgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0IC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0KLSNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0KSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0KSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0KSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1KSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSkgY29uc3Qgdm9sYXRpbGUpOwotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1IC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1IC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1KSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLQotI2lmbmRlZiBfTUFOQUdFRAotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1IC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1IC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2KSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYpIGNvbnN0IHZvbGF0aWxlKTsKLQotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2IC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0KLSNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2KSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNikgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2IC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2KSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2KSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2IC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcpIGNvbnN0IHZvbGF0aWxlKTsKLQotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3IC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3IC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNykpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3KSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNykgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3IC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0KLSNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNykgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3KSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3KSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNykgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3KSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDgpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4KSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCkgY29uc3Qgdm9sYXRpbGUpOwotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4IC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4IC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDgpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4KSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDgpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLQotI2lmbmRlZiBfTUFOQUdFRAotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDgpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDgpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDgpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDgpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4IC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDgpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDgpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDgpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDgpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4IC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5KSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkpIGNvbnN0IHZvbGF0aWxlKTsKLQotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5IC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0KLSNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5KSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSkgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5IC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5KSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5KSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5IC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTApIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCkgY29uc3Qgdm9sYXRpbGUpOwotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX1RUX1RFU1RfTVNfRlVOQ19TSUdTCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCkgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwIC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLQotI2lmbmRlZiBfTUFOQUdFRAotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTApIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwKSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwIC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTApKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTApIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwIC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwIC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExKSBjb25zdCB2b2xhdGlsZSk7Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExIC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExIC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExIC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExIC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExKSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExIC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExIC4uLikgY29uc3Qgdm9sYXRpbGUpOwotCi0jaWZuZGVmIF9NQU5BR0VECi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExIC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExIC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSkgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExIC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIpIGNvbnN0IHZvbGF0aWxlKTsKLQotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyIC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0KLSNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMikgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyIC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyKSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyIC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMykpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMykgY29uc3Qgdm9sYXRpbGUpOwotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX1RUX1RFU1RfTVNfRlVOQ19TSUdTCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMykpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMykgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMykgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMykgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzIC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLQotI2lmbmRlZiBfTUFOQUdFRAotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMykgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzKSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzIC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMykgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzIC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzIC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0KSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0KSBjb25zdCB2b2xhdGlsZSk7Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0IC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0IC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0IC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0IC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0KSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0KSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0KSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0KSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0IC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0IC4uLikgY29uc3Qgdm9sYXRpbGUpOwotCi0jaWZuZGVmIF9NQU5BR0VECi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0KSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0IC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0IC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0KSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCkgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0IC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1KSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUpIGNvbnN0IHZvbGF0aWxlKTsKLQotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1IC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0KLSNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1KSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSkgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1IC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1KSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1KSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1IC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2KSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNikgY29uc3Qgdm9sYXRpbGUpOwotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX1RUX1RFU1RfTVNfRlVOQ19TSUdTCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNikgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2IC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLQotI2lmbmRlZiBfTUFOQUdFRAotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2KSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2KSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2IC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2KSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2IC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2IC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3KSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNykgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3KSBjb25zdCB2b2xhdGlsZSk7Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3IC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3IC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3IC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3IC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3KSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3KSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3KSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3KSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3IC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3IC4uLikgY29uc3Qgdm9sYXRpbGUpOwotCi0jaWZuZGVmIF9NQU5BR0VECi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3KSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNykgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3IC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3IC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNykpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3KSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNykgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3IC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTgpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4KSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTgpIGNvbnN0IHZvbGF0aWxlKTsKLQotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTgpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTgpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTgpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTgpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4IC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0KLSNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTgpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4KSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCkgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4IC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4KSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTgpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4KSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4IC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5KSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSkgY29uc3Qgdm9sYXRpbGUpOwotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX1RUX1RFU1RfTVNfRlVOQ19TSUdTCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSkgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5IC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLQotI2lmbmRlZiBfTUFOQUdFRAotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5KSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5KSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5IC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5KSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5IC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5IC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjApIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwKSBjb25zdCB2b2xhdGlsZSk7Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwIC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwIC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwIC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwIC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwKSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwIC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwIC4uLikgY29uc3Qgdm9sYXRpbGUpOwotCi0jaWZuZGVmIF9NQU5BR0VECi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjApKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCkgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjApIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwIC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwIC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjApIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCkgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwIC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEpIGNvbnN0IHZvbGF0aWxlKTsKLQotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxIC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0KLSNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSkgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxIC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxKSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxIC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMikgY29uc3Qgdm9sYXRpbGUpOwotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX05PX0VMTElQU0lTX0lOX0ZVTkNfVEVTVElORwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotI2lmZGVmIE5ETkJPT1NUX1RUX1RFU1RfTVNfRlVOQ19TSUdTCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMikgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyIC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLQotI2lmbmRlZiBfTUFOQUdFRAotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyKSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyIC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyIC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyIC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMykgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzKSBjb25zdCB2b2xhdGlsZSk7Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzIC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzIC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzIC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzIC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi0jaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzKSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzIC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzIC4uLikgY29uc3Qgdm9sYXRpbGUpOwotCi0jaWZuZGVmIF9NQU5BR0VECi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMykgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzIC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzIC4uLikgY29uc3Qgdm9sYXRpbGUpOwotI2VuZGlmCi0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMykpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMykgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzIC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgLCBjbGFzcyBUMjQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyAsIGNsYXNzIFQyNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzICwgY2xhc3MgVDI0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0KSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgLCBjbGFzcyBUMjQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQpIGNvbnN0IHZvbGF0aWxlKTsKLQotI2lmbmRlZiBORE5CT09TVF9UVF9OT19FTExJUFNJU19JTl9GVU5DX1RFU1RJTkcKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgLCBjbGFzcyBUMjQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgLCBjbGFzcyBUMjQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgLCBjbGFzcyBUMjQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgLCBjbGFzcyBUMjQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUwotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyAsIGNsYXNzIFQyNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyAsIGNsYXNzIFQyNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyAsIGNsYXNzIFQyNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyAsIGNsYXNzIFQyNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyAsIGNsYXNzIFQyNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgLCBjbGFzcyBUMjQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0IC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzICwgY2xhc3MgVDI0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyAsIGNsYXNzIFQyNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0KLSNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgLCBjbGFzcyBUMjQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzICwgY2xhc3MgVDI0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyAsIGNsYXNzIFQyNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0KSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgLCBjbGFzcyBUMjQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCkgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzICwgY2xhc3MgVDI0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLi4uKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgLCBjbGFzcyBUMjQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyAsIGNsYXNzIFQyNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0IC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzICwgY2xhc3MgVDI0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLi4uKSBjb25zdCB2b2xhdGlsZSk7Ci0jZW5kaWYKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyAsIGNsYXNzIFQyNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0KSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgLCBjbGFzcyBUMjQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzICwgY2xhc3MgVDI0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyAsIGNsYXNzIFQyNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0KSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgLCBjbGFzcyBUMjQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgLCBjbGFzcyBUMCAsIGNsYXNzIFQxICwgY2xhc3MgVDIgLCBjbGFzcyBUMyAsIGNsYXNzIFQ0ICwgY2xhc3MgVDUgLCBjbGFzcyBUNiAsIGNsYXNzIFQ3ICwgY2xhc3MgVDggLCBjbGFzcyBUOSAsIGNsYXNzIFQxMCAsIGNsYXNzIFQxMSAsIGNsYXNzIFQxMiAsIGNsYXNzIFQxMyAsIGNsYXNzIFQxNCAsIGNsYXNzIFQxNSAsIGNsYXNzIFQxNiAsIGNsYXNzIFQxNyAsIGNsYXNzIFQxOCAsIGNsYXNzIFQxOSAsIGNsYXNzIFQyMCAsIGNsYXNzIFQyMSAsIGNsYXNzIFQyMiAsIGNsYXNzIFQyMyAsIGNsYXNzIFQyNCA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoIFQwICwgVDEgLCBUMiAsIFQzICwgVDQgLCBUNSAsIFQ2ICwgVDcgLCBUOCAsIFQ5ICwgVDEwICwgVDExICwgVDEyICwgVDEzICwgVDE0ICwgVDE1ICwgVDE2ICwgVDE3ICwgVDE4ICwgVDE5ICwgVDIwICwgVDIxICwgVDIyICwgVDIzICwgVDI0IC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCAsIGNsYXNzIFQwICwgY2xhc3MgVDEgLCBjbGFzcyBUMiAsIGNsYXNzIFQzICwgY2xhc3MgVDQgLCBjbGFzcyBUNSAsIGNsYXNzIFQ2ICwgY2xhc3MgVDcgLCBjbGFzcyBUOCAsIGNsYXNzIFQ5ICwgY2xhc3MgVDEwICwgY2xhc3MgVDExICwgY2xhc3MgVDEyICwgY2xhc3MgVDEzICwgY2xhc3MgVDE0ICwgY2xhc3MgVDE1ICwgY2xhc3MgVDE2ICwgY2xhc3MgVDE3ICwgY2xhc3MgVDE4ICwgY2xhc3MgVDE5ICwgY2xhc3MgVDIwICwgY2xhc3MgVDIxICwgY2xhc3MgVDIyICwgY2xhc3MgVDIzICwgY2xhc3MgVDI0ID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKSggVDAgLCBUMSAsIFQyICwgVDMgLCBUNCAsIFQ1ICwgVDYgLCBUNyAsIFQ4ICwgVDkgLCBUMTAgLCBUMTEgLCBUMTIgLCBUMTMgLCBUMTQgLCBUMTUgLCBUMTYgLCBUMTcgLCBUMTggLCBUMTkgLCBUMjAgLCBUMjEgLCBUMjIgLCBUMjMgLCBUMjQgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUICwgY2xhc3MgVDAgLCBjbGFzcyBUMSAsIGNsYXNzIFQyICwgY2xhc3MgVDMgLCBjbGFzcyBUNCAsIGNsYXNzIFQ1ICwgY2xhc3MgVDYgLCBjbGFzcyBUNyAsIGNsYXNzIFQ4ICwgY2xhc3MgVDkgLCBjbGFzcyBUMTAgLCBjbGFzcyBUMTEgLCBjbGFzcyBUMTIgLCBjbGFzcyBUMTMgLCBjbGFzcyBUMTQgLCBjbGFzcyBUMTUgLCBjbGFzcyBUMTYgLCBjbGFzcyBUMTcgLCBjbGFzcyBUMTggLCBjbGFzcyBUMTkgLCBjbGFzcyBUMjAgLCBjbGFzcyBUMjEgLCBjbGFzcyBUMjIgLCBjbGFzcyBUMjMgLCBjbGFzcyBUMjQgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKCBUMCAsIFQxICwgVDIgLCBUMyAsIFQ0ICwgVDUgLCBUNiAsIFQ3ICwgVDggLCBUOSAsIFQxMCAsIFQxMSAsIFQxMiAsIFQxMyAsIFQxNCAsIFQxNSAsIFQxNiAsIFQxNyAsIFQxOCAsIFQxOSAsIFQyMCAsIFQyMSAsIFQyMiAsIFQyMyAsIFQyNCAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLSNlbmRpZgotCi0jZWxzZQotCi0jZGVmaW5lIE5ETkJPT1NUX1BQX0lURVJBVElPTl9QQVJBTVNfMSBcCi0gICAgKDMsICgwLCAyNSwgIm5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyLmhwcCIpKQotI2luY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9QUkVQUk9DRVNTSU5HX01PREUKLQotfSAvLyBuYW1lc3BhY2UgdHlwZV90cmFpdHMKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9ERVRBSUxfSVNfTUVNX0ZVTl9QT0lOVEVSX1RFU1RFUl9IUFBfSU5DTFVERUQKLQotLy8vLy8gaXRlcmF0aW9uCi0KLSNlbHNlCi0jZGVmaW5lIE5ETkJPT1NUX1BQX0NPVU5URVIgTkROQk9PU1RfUFBfRlJBTUVfSVRFUkFUSU9OKDEpCi0jdW5kZWYgX19zdGRjYWxsCi0jdW5kZWYgX19mYXN0Y2FsbAotI3VuZGVmIF9fY2RlY2wKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfQ09VTlRFUikgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixjbGFzcyBUKSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsVCkpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfQ09VTlRFUikgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixjbGFzcyBUKSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsVCkpIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfQ09VTlRFUikgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixjbGFzcyBUKSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsVCkpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfQ09VTlRFUikgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixjbGFzcyBUKSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsVCkpIGNvbnN0IHZvbGF0aWxlKTsKLQotQCNpZm5kZWYgTkROQk9PU1RfVFRfTk9fRUxMSVBTSVNfSU5fRlVOQ19URVNUSU5HCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9QUF9DT1VOVEVSKSBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLGNsYXNzIFQpID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixUKSAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfQ09VTlRFUikgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixjbGFzcyBUKSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKFQ6Oipjb25zdCB2b2xhdGlsZSopKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsVCkgLi4uKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE5ETkJPT1NUX1BQX0NPVU5URVIpIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsY2xhc3MgVCkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChUOjoqY29uc3Qgdm9sYXRpbGUqKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLFQpIC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9QUF9DT1VOVEVSKSBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLGNsYXNzIFQpID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoVDo6KmNvbnN0IHZvbGF0aWxlKikoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixUKSAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLUAjZW5kaWYKLUAjaWZkZWYgTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MgLy8gT3RoZXIgY2FsbGluZyBjb252ZW50aW9ucyB1c2VkIGJ5IE1TIGNvbXBhdGlibGUgY29tcGlsZXJzOgotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfQ09VTlRFUikgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixjbGFzcyBUKSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLFQpKSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE5ETkJPT1NUX1BQX0NPVU5URVIpIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsY2xhc3MgVCkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixUKSkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9QUF9DT1VOVEVSKSBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLGNsYXNzIFQpID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsVCkpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfQ09VTlRFUikgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixjbGFzcyBUKSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLFQpKSBjb25zdCB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE5ETkJPT1NUX1BQX0NPVU5URVIpIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsY2xhc3MgVCkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixUKSAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfQ09VTlRFUikgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixjbGFzcyBUKSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fc3RkY2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLFQpIC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9QUF9DT1VOVEVSKSBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLGNsYXNzIFQpID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19zdGRjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsVCkgLi4uKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE5ETkJPT1NUX1BQX0NPVU5URVIpIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsY2xhc3MgVCkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX3N0ZGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixUKSAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLQotQCNpZm5kZWYgX01BTkFHRUQKLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE5ETkJPT1NUX1BQX0NPVU5URVIpIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsY2xhc3MgVCkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsVCkpKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfQ09VTlRFUikgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixjbGFzcyBUKSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixUKSkgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9QUF9DT1VOVEVSKSBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLGNsYXNzIFQpID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19mYXN0Y2FsbCBUOjoqY29uc3Qgdm9sYXRpbGUqKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLFQpKSB2b2xhdGlsZSk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE5ETkJPT1NUX1BQX0NPVU5URVIpIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsY2xhc3MgVCkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2Zhc3RjYWxsIFQ6Oipjb25zdCB2b2xhdGlsZSopKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsVCkpIGNvbnN0IHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfQ09VTlRFUikgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixjbGFzcyBUKSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixUKSAuLi4pKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfQ09VTlRFUikgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixjbGFzcyBUKSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixUKSAuLi4pIGNvbnN0KTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfQ09VTlRFUikgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixjbGFzcyBUKSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixUKSAuLi4pIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfQ09VTlRFUikgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixjbGFzcyBUKSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fZmFzdGNhbGwgVDo6KmNvbnN0IHZvbGF0aWxlKikoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixUKSAuLi4pIGNvbnN0IHZvbGF0aWxlKTsKLUAjZW5kaWYKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfQ09VTlRFUikgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixjbGFzcyBUKSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixUKSkpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9QUF9DT1VOVEVSKSBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLGNsYXNzIFQpID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLFQpKSBjb25zdCk7Ci0KLXRlbXBsYXRlIDxjbGFzcyBSLCBjbGFzcyBUIE5ETkJPT1NUX1BQX0NPTU1BX0lGKE5ETkJPT1NUX1BQX0NPVU5URVIpIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsY2xhc3MgVCkgPgoteWVzX3R5cGUgaXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihSIChfX2NkZWNsIFQ6Oipjb25zdCB2b2xhdGlsZSopKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0NPVU5URVIsVCkpIHZvbGF0aWxlKTsKLQotdGVtcGxhdGUgPGNsYXNzIFIsIGNsYXNzIFQgTkROQk9PU1RfUFBfQ09NTUFfSUYoTkROQk9PU1RfUFBfQ09VTlRFUikgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixjbGFzcyBUKSA+Ci15ZXNfdHlwZSBpc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKFIgKF9fY2RlY2wgVDo6KmNvbnN0IHZvbGF0aWxlKikoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfQ09VTlRFUixUKSkgY29uc3Qgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9QUF9DT1VOVEVSKSBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLGNsYXNzIFQpID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLFQpIC4uLikpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9QUF9DT1VOVEVSKSBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLGNsYXNzIFQpID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLFQpIC4uLikgY29uc3QpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9QUF9DT1VOVEVSKSBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLGNsYXNzIFQpID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLFQpIC4uLikgdm9sYXRpbGUpOwotCi10ZW1wbGF0ZSA8Y2xhc3MgUiwgY2xhc3MgVCBORE5CT09TVF9QUF9DT01NQV9JRihORE5CT09TVF9QUF9DT1VOVEVSKSBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLGNsYXNzIFQpID4KLXllc190eXBlIGlzX21lbV9mdW5fcG9pbnRlcl90ZXN0ZXIoUiAoX19jZGVjbCBUOjoqY29uc3Qgdm9sYXRpbGUqKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9DT1VOVEVSLFQpIC4uLikgY29uc3Qgdm9sYXRpbGUpOwotQCNlbmRpZgotCi0jdW5kZWYgTkROQk9PU1RfUFBfQ09VTlRFUgotI2VuZGlmIC8vIE5ETkJPT1NUX1BQX0lTX0lURVJBVElORwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvc2l6ZV90X3RyYWl0X2RlZi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9zaXplX3RfdHJhaXRfZGVmLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDA5MDhlNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9zaXplX3RfdHJhaXRfZGVmLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAKLQotLy8gTk8gSU5DTFVERSBHVUFSRFMsIFRIRSBIRUFERVIgSVMgSU5URU5ERUQgRk9SIE1VTFRJUExFIElOQ0xVU0lPTgotCi0vLyBDb3B5cmlnaHQgQWxla3NleSBHdXJ0b3ZveSAyMDAyLTIwMDQKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIAotLy8gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCAKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gJFNvdXJjZSQKLS8vICREYXRlOiAyMDExLTA0LTI1IDA1OjI2OjQ4IC0wNzAwIChNb24sIDI1IEFwciAyMDExKSAkCi0vLyAkUmV2aXNpb246IDcxNDgxICQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90ZW1wbGF0ZV9hcml0eV9zcGVjLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pbnRlZ3JhbF9jb25zdGFudC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2F1eF8vbGFtYmRhX3N1cHBvcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9zaXplX3QuaHBwPgotCi0jaW5jbHVkZSA8Y3N0ZGRlZj4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX01TVkMpIHx8IE5ETkJPT1NUX01TVkMgPj0gMTMwMAotIyAgIGRlZmluZSBORE5CT09TVF9UVF9BVVhfU0laRV9UX0JBU0UoQykgcHVibGljIDo6bmRuYm9vc3Q6OmludGVncmFsX2NvbnN0YW50PHN0ZDo6c2l6ZV90LEM+Ci0jICAgZGVmaW5lIE5ETkJPT1NUX1RUX0FVWF9TSVpFX1RfVFJBSVRfVkFMVUVfREVDTChDKSAvKiovCi0jZWxzZQotIyAgIGRlZmluZSBORE5CT09TVF9UVF9BVVhfU0laRV9UX0JBU0UoQykgcHVibGljIDo6bmRuYm9vc3Q6Om1wbDo6c2l6ZV90PEM+Ci0jICAgZGVmaW5lIE5ETkJPT1NUX1RUX0FVWF9TSVpFX1RfVFJBSVRfVkFMVUVfREVDTChDKSBcCi0gICAgdHlwZWRlZiA6Om5kbmJvb3N0OjptcGw6OnNpemVfdDxDPiBiYXNlXzsgXAotICAgIHVzaW5nIGJhc2VfOjp2YWx1ZTsgXAotICAgIC8qKi8KLSNlbmRpZgotCi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfQVVYX1NJWkVfVF9UUkFJVF9ERUYxKHRyYWl0LFQsQykgXAotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgdHJhaXQgXAotICAgIDogTkROQk9PU1RfVFRfQVVYX1NJWkVfVF9CQVNFKEMpIFwKLXsgXAotcHVibGljOlwKLSAgICBORE5CT09TVF9UVF9BVVhfU0laRV9UX1RSQUlUX1ZBTFVFX0RFQ0woQykgXAotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMSx0cmFpdCwoVCkpIFwKLX07IFwKLVwKLU5ETkJPT1NUX1RUX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDEsdHJhaXQpIFwKLS8qKi8KLQotI2RlZmluZSBORE5CT09TVF9UVF9BVVhfU0laRV9UX1RSQUlUX1NQRUMxKHRyYWl0LHNwZWMsQykgXAotdGVtcGxhdGU8PiBzdHJ1Y3QgdHJhaXQ8c3BlYz4gXAotICAgIDogTkROQk9PU1RfVFRfQVVYX1NJWkVfVF9CQVNFKEMpIFwKLXsgXAotcHVibGljOlwKLSAgICBORE5CT09TVF9UVF9BVVhfU0laRV9UX1RSQUlUX1ZBTFVFX0RFQ0woQykgXAotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlRfU1BFQygxLHRyYWl0LChzcGVjKSkgXAotfTsgXAotLyoqLwotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX0FVWF9TSVpFX1RfVFJBSVRfUEFSVElBTF9TUEVDMV8xKHBhcmFtLHRyYWl0LHNwZWMsQykgXAotdGVtcGxhdGU8IHBhcmFtID4gc3RydWN0IHRyYWl0PHNwZWM+IFwKLSAgICA6IE5ETkJPT1NUX1RUX0FVWF9TSVpFX1RfQkFTRShDKSBcCi17IFwKLX07IFwKLS8qKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3NpemVfdF90cmFpdF91bmRlZi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9zaXplX3RfdHJhaXRfdW5kZWYuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YWIxNGQ5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3NpemVfdF90cmFpdF91bmRlZi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi0KLS8vIE5PIElOQ0xVREUgR1VBUkRTLCBUSEUgSEVBREVSIElTIElOVEVOREVEIEZPUiBNVUxUSVBMRSBJTkNMVVNJT04KLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMi0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICRTb3VyY2UkCi0vLyAkRGF0ZTogMjAwNC0wOS0wMiAwODo0MTozNyAtMDcwMCAoVGh1LCAwMiBTZXAgMjAwNCkgJAotLy8gJFJldmlzaW9uOiAyNDg3NCAkCi0KLSN1bmRlZiBORE5CT09TVF9UVF9BVVhfU0laRV9UX1RSQUlUX0RFRjEKLSN1bmRlZiBORE5CT09TVF9UVF9BVVhfU0laRV9UX1RSQUlUX1NQRUMxCi0jdW5kZWYgTkROQk9PU1RfVFRfQVVYX1NJWkVfVF9UUkFJVF9QQVJUSUFMX1NQRUMxXzEKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3RlbXBsYXRlX2FyaXR5X3NwZWMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdGVtcGxhdGVfYXJpdHlfc3BlYy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRmZWI4ZDMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdGVtcGxhdGVfYXJpdHlfc3BlYy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi0KLS8vIE5PIElOQ0xVREUgR1VBUkRTLCBUSEUgSEVBREVSIElTIElOVEVOREVEIEZPUiBNVUxUSVBMRSBJTkNMVVNJT04KLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMi0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaW50LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXV4Xy90ZW1wbGF0ZV9hcml0eV9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL3ByZXByb2Nlc3Nvci9wYXJhbXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9sYW1iZGEuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2NvbmZpZy9vdmVybG9hZF9yZXNvbHV0aW9uLmhwcD4KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVBMX0NGR19OT19GVUxMX0xBTUJEQV9TVVBQT1JUKSBcCi0gICAgJiYgZGVmaW5lZChORE5CT09TVF9NUExfQ0ZHX0JST0tFTl9PVkVSTE9BRF9SRVNPTFVUSU9OKQotIyAgIGRlZmluZSBORE5CT09TVF9UVF9BVVhfVEVNUExBVEVfQVJJVFlfU1BFQyhpLCBuYW1lKSBcCi1uYW1lc3BhY2UgbXBsIHsgbmFtZXNwYWNlIGF1eCB7IFwKLXRlbXBsYXRlPCBORE5CT09TVF9NUExfUFBfUEFSQU1TKGksIHR5cGVuYW1lIFQpID4gXAotc3RydWN0IHRlbXBsYXRlX2FyaXR5PCBcCi0gICAgICAgICAgbmFtZTwgTkROQk9PU1RfTVBMX1BQX1BBUkFNUyhpLCBUKSA+IFwKLSAgICAgICAgPiBcCi0gICAgOiBpbnRfPGk+IFwKLXsgXAotfTsgXAotfX0gXAotLyoqLwotI2Vsc2UKLSMgICBkZWZpbmUgTkROQk9PU1RfVFRfQVVYX1RFTVBMQVRFX0FSSVRZX1NQRUMoaSwgbmFtZSkgLyoqLwotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90eXBlX3RyYWl0X2RlZi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90eXBlX3RyYWl0X2RlZi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgzZDA0NDQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdHlwZV90cmFpdF9kZWYuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotCi0vLyBOTyBJTkNMVURFIEdVQVJEUywgVEhFIEhFQURFUiBJUyBJTlRFTkRFRCBGT1IgTVVMVElQTEUgSU5DTFVTSU9OCi0KLS8vIENvcHlyaWdodCBBbGVrc2V5IEd1cnRvdm95IDIwMDItMjAwNAotLy8KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gCi0vLyAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyAkU291cmNlJAotLy8gJERhdGU6IDIwMTEtMDQtMjUgMDU6MjY6NDggLTA3MDAgKE1vbiwgMjUgQXByIDIwMTEpICQKLS8vICRSZXZpc2lvbjogNzE0ODEgJAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3RlbXBsYXRlX2FyaXR5X3NwZWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hdXhfL2xhbWJkYV9zdXBwb3J0LmhwcD4KLQotI2RlZmluZSBORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9ERUYxKHRyYWl0LFQscmVzdWx0KSBcCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCB0cmFpdCBcCi17IFwKLXB1YmxpYzpcCi0gICAgdHlwZWRlZiByZXN1bHQgdHlwZTsgXAotICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMSx0cmFpdCwoVCkpIFwKLX07IFwKLVwKLU5ETkJPT1NUX1RUX0FVWF9URU1QTEFURV9BUklUWV9TUEVDKDEsdHJhaXQpIFwKLS8qKi8KLQotI2RlZmluZSBORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9TUEVDMSh0cmFpdCxzcGVjLHJlc3VsdCkgXAotdGVtcGxhdGU8PiBzdHJ1Y3QgdHJhaXQ8c3BlYz4gXAoteyBcCi1wdWJsaWM6XAotICAgIHR5cGVkZWYgcmVzdWx0IHR5cGU7IFwKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUX1NQRUMoMSx0cmFpdCwoc3BlYykpIFwKLX07IFwKLS8qKi8KLQotI2RlZmluZSBORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9JTVBMX1NQRUMxKHRyYWl0LHNwZWMscmVzdWx0KSBcCi10ZW1wbGF0ZTw+IHN0cnVjdCB0cmFpdCMjX2ltcGw8c3BlYz4gXAoteyBcCi1wdWJsaWM6XAotICAgIHR5cGVkZWYgcmVzdWx0IHR5cGU7IFwKLX07IFwKLS8qKi8KLQotI2RlZmluZSBORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9QQVJUSUFMX1NQRUMxXzEocGFyYW0sdHJhaXQsc3BlYyxyZXN1bHQpIFwKLXRlbXBsYXRlPCBwYXJhbSA+IHN0cnVjdCB0cmFpdDxzcGVjPiBcCi17IFwKLXB1YmxpYzpcCi0gICAgdHlwZWRlZiByZXN1bHQgdHlwZTsgXAotfTsgXAotLyoqLwotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX1BBUlRJQUxfU1BFQzFfMihwYXJhbTEscGFyYW0yLHRyYWl0LHNwZWMscmVzdWx0KSBcCi10ZW1wbGF0ZTwgcGFyYW0xLCBwYXJhbTIgPiBzdHJ1Y3QgdHJhaXQ8c3BlYz4gXAoteyBcCi1wdWJsaWM6XAotICAgIHR5cGVkZWYgcmVzdWx0OyBcCi19OyBcCi0vKiovCi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfSU1QTF9QQVJUSUFMX1NQRUMxXzEocGFyYW0sdHJhaXQsc3BlYyxyZXN1bHQpIFwKLXRlbXBsYXRlPCBwYXJhbSA+IHN0cnVjdCB0cmFpdCMjX2ltcGw8c3BlYz4gXAoteyBcCi1wdWJsaWM6XAotICAgIHR5cGVkZWYgcmVzdWx0IHR5cGU7IFwKLX07IFwKLS8qKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3R5cGVfdHJhaXRfdW5kZWYuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdHlwZV90cmFpdF91bmRlZi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk2NDYzMzMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdHlwZV90cmFpdF91bmRlZi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi0KLS8vIE5PIElOQ0xVREUgR1VBUkRTLCBUSEUgSEVBREVSIElTIElOVEVOREVEIEZPUiBNVUxUSVBMRSBJTkNMVVNJT04KLQotLy8gQ29weXJpZ2h0IEFsZWtzZXkgR3VydG92b3kgMjAwMi0yMDA0Ci0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAKLS8vIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgCi0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICRTb3VyY2UkCi0vLyAkRGF0ZTogMjAwNC0wOS0wMiAwODo0MTozNyAtMDcwMCAoVGh1LCAwMiBTZXAgMjAwNCkgJAotLy8gJFJldmlzaW9uOiAyNDg3NCAkCi0KLSN1bmRlZiBORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9ERUYxCi0jdW5kZWYgTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfU1BFQzEKLSN1bmRlZiBORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9JTVBMX1NQRUMxCi0jdW5kZWYgTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfUEFSVElBTF9TUEVDMV8xCi0jdW5kZWYgTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfUEFSVElBTF9TUEVDMV8yCi0jdW5kZWYgTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfSU1QTF9QQVJUSUFMX1NQRUMxXzEKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3dyYXAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvd3JhcC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxNmI2NTcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvd3JhcC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBEYXZpZCBBYnJhaGFtcyAyMDAyLiAKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfREVUQUlMX1dSQVBfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0RFVEFJTF9XUkFQX0hQUF9JTkNMVURFRAotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotbmFtZXNwYWNlIHR5cGVfdHJhaXRzIHsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+IHN0cnVjdCB3cmFwIHt9OwotCi19fSAvLyBuYW1lc3BhY2UgbmRuYm9vc3Q6OnR5cGVfdHJhaXRzCi0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9ERVRBSUxfV1JBUF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3llc19ub190eXBlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3llc19ub190eXBlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTQ5ODc3ZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC95ZXNfbm9fdHlwZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayBhbmQgU3RldmUgQ2xlYXJ5IDIwMDAuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotLy8KLS8vICBtYWNyb3MgYW5kIGhlbHBlcnMgZm9yIHdvcmtpbmcgd2l0aCBpbnRlZ3JhbC1jb25zdGFudC1leHByZXNzaW9ucy4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9ERVRBSUxfWUVTX05PX1RZUEVfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0RFVEFJTF9ZRVNfTk9fVFlQRV9IUFBfSU5DTFVERUQKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLW5hbWVzcGFjZSB0eXBlX3RyYWl0cyB7Ci0KLXR5cGVkZWYgY2hhciB5ZXNfdHlwZTsKLXN0cnVjdCBub190eXBlCi17Ci0gICBjaGFyIHBhZGRpbmdbOF07Ci19OwotCi19IC8vIG5hbWVzcGFjZSB0eXBlX3RyYWl0cwotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0RFVEFJTF9ZRVNfTk9fVFlQRV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZXh0ZW50LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZXh0ZW50LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTRkZTU0OC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2V4dGVudC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDUgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwNS4gIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0VYVEVOVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfRVhURU5UX0hQUF9JTkNMVURFRAotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvc2l6ZV90X3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBkZXRhaWx7Ci0KLSNpZiBkZWZpbmVkKCBfX0NPREVHRUFSQ19fICkKLSAgICAvLyB3cmFwIHRoZSBpbXBsIGFzIG1haW4gdHJhaXQgcHJvdmlkZXMgYWRkaXRpb25hbCBNUEwgbGFtYmRhIHN1cHBvcnQKLSAgICB0ZW1wbGF0ZSA8IHR5cGVuYW1lIFQsIHN0ZDo6c2l6ZV90IE4gPgotICAgIHN0cnVjdCBleHRlbnRfaW1wIHsKLSAgICAgICAgc3RhdGljIGNvbnN0IHN0ZDo6c2l6ZV90IHZhbHVlID0gX19hcnJheV9leHRlbnQoVCwgTik7Ci0gICAgfTsKLQotI2Vsc2UKLQotdGVtcGxhdGUgPGNsYXNzIFQsIHN0ZDo6c2l6ZV90IE4+Ci1zdHJ1Y3QgZXh0ZW50X2ltcAotewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHN0ZDo6c2l6ZV90LCB2YWx1ZSA9IDApOwotfTsKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19BUlJBWV9UWVBFX1NQRUNJQUxJWkFUSU9OUykKLXRlbXBsYXRlIDxjbGFzcyBULCBzdGQ6OnNpemVfdCBSLCBzdGQ6OnNpemVfdCBOPgotc3RydWN0IGV4dGVudF9pbXA8VFtSXSwgTj4KLXsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzdGQ6OnNpemVfdCwgdmFsdWUgPSAoOjpuZG5ib29zdDo6ZGV0YWlsOjpleHRlbnRfaW1wPFQsIE4tMT46OnZhbHVlKSk7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgc3RkOjpzaXplX3QgUiwgc3RkOjpzaXplX3QgTj4KLXN0cnVjdCBleHRlbnRfaW1wPFQgY29uc3RbUl0sIE4+Ci17Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc3RkOjpzaXplX3QsIHZhbHVlID0gKDo6bmRuYm9vc3Q6OmRldGFpbDo6ZXh0ZW50X2ltcDxULCBOLTE+Ojp2YWx1ZSkpOwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIHN0ZDo6c2l6ZV90IFIsIHN0ZDo6c2l6ZV90IE4+Ci1zdHJ1Y3QgZXh0ZW50X2ltcDxUIHZvbGF0aWxlW1JdLCBOPgotewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHN0ZDo6c2l6ZV90LCB2YWx1ZSA9ICg6Om5kbmJvb3N0OjpkZXRhaWw6OmV4dGVudF9pbXA8VCwgTi0xPjo6dmFsdWUpKTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBzdGQ6OnNpemVfdCBSLCBzdGQ6OnNpemVfdCBOPgotc3RydWN0IGV4dGVudF9pbXA8VCBjb25zdCB2b2xhdGlsZVtSXSwgTj4KLXsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzdGQ6OnNpemVfdCwgdmFsdWUgPSAoOjpuZG5ib29zdDo6ZGV0YWlsOjpleHRlbnRfaW1wPFQsIE4tMT46OnZhbHVlKSk7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgc3RkOjpzaXplX3QgUj4KLXN0cnVjdCBleHRlbnRfaW1wPFRbUl0sMD4KLXsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzdGQ6OnNpemVfdCwgdmFsdWUgPSBSKTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBzdGQ6OnNpemVfdCBSPgotc3RydWN0IGV4dGVudF9pbXA8VCBjb25zdFtSXSwgMD4KLXsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzdGQ6OnNpemVfdCwgdmFsdWUgPSBSKTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBzdGQ6OnNpemVfdCBSPgotc3RydWN0IGV4dGVudF9pbXA8VCB2b2xhdGlsZVtSXSwgMD4KLXsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzdGQ6OnNpemVfdCwgdmFsdWUgPSBSKTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBzdGQ6OnNpemVfdCBSPgotc3RydWN0IGV4dGVudF9pbXA8VCBjb25zdCB2b2xhdGlsZVtSXSwgMD4KLXsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzdGQ6OnNpemVfdCwgdmFsdWUgPSBSKTsKLX07Ci0KLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIDwgMHg2MDApICYmICFkZWZpbmVkKF9fSUJNQ1BQX18pICYmICAhTkROQk9PU1RfV09SS0FST1VORChfX0RNQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg4NDApKSAmJiAhZGVmaW5lZChfX01XRVJLU19fKQotdGVtcGxhdGUgPGNsYXNzIFQsIHN0ZDo6c2l6ZV90IE4+Ci1zdHJ1Y3QgZXh0ZW50X2ltcDxUW10sIE4+Ci17Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc3RkOjpzaXplX3QsIHZhbHVlID0gKDo6bmRuYm9vc3Q6OmRldGFpbDo6ZXh0ZW50X2ltcDxULCBOLTE+Ojp2YWx1ZSkpOwotfTsKLXRlbXBsYXRlIDxjbGFzcyBULCBzdGQ6OnNpemVfdCBOPgotc3RydWN0IGV4dGVudF9pbXA8VCBjb25zdFtdLCBOPgotewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHN0ZDo6c2l6ZV90LCB2YWx1ZSA9ICg6Om5kbmJvb3N0OjpkZXRhaWw6OmV4dGVudF9pbXA8VCwgTi0xPjo6dmFsdWUpKTsKLX07Ci10ZW1wbGF0ZSA8Y2xhc3MgVCwgc3RkOjpzaXplX3QgTj4KLXN0cnVjdCBleHRlbnRfaW1wPFQgdm9sYXRpbGVbXSwgTj4KLXsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzdGQ6OnNpemVfdCwgdmFsdWUgPSAoOjpuZG5ib29zdDo6ZGV0YWlsOjpleHRlbnRfaW1wPFQsIE4tMT46OnZhbHVlKSk7Ci19OwotdGVtcGxhdGUgPGNsYXNzIFQsIHN0ZDo6c2l6ZV90IE4+Ci1zdHJ1Y3QgZXh0ZW50X2ltcDxUIGNvbnN0IHZvbGF0aWxlW10sIE4+Ci17Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc3RkOjpzaXplX3QsIHZhbHVlID0gKDo6bmRuYm9vc3Q6OmRldGFpbDo6ZXh0ZW50X2ltcDxULCBOLTE+Ojp2YWx1ZSkpOwotfTsKLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGV4dGVudF9pbXA8VFtdLCAwPgotewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHN0ZDo6c2l6ZV90LCB2YWx1ZSA9IDApOwotfTsKLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGV4dGVudF9pbXA8VCBjb25zdFtdLCAwPgotewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHN0ZDo6c2l6ZV90LCB2YWx1ZSA9IDApOwotfTsKLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGV4dGVudF9pbXA8VCB2b2xhdGlsZVtdLCAwPgotewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHN0ZDo6c2l6ZV90LCB2YWx1ZSA9IDApOwotfTsKLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGV4dGVudF9pbXA8VCBjb25zdCB2b2xhdGlsZVtdLCAwPgotewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHN0ZDo6c2l6ZV90LCB2YWx1ZSA9IDApOwotfTsKLSNlbmRpZgotI2VuZGlmCi0KLSNlbmRpZiAgLy8gbm9uLUNvZGVHZWFyIGltcGxlbWVudGF0aW9uCi19ICAgLy8gOjpuZG5ib29zdDo6ZGV0YWlsCi0KLXRlbXBsYXRlIDxjbGFzcyBULCBzdGQ6OnNpemVfdCBOID0gMD4KLXN0cnVjdCBleHRlbnQKLSAgIDogcHVibGljIDo6bmRuYm9vc3Q6OmludGVncmFsX2NvbnN0YW50PHN0ZDo6c2l6ZV90LCA6Om5kbmJvb3N0OjpkZXRhaWw6OmV4dGVudF9pbXA8VCxOPjo6dmFsdWU+Ci17Ci0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApIAotICAgdHlwZWRlZiA6Om5kbmJvb3N0OjppbnRlZ3JhbF9jb25zdGFudDxzdGQ6OnNpemVfdCwgOjpuZG5ib29zdDo6ZGV0YWlsOjpleHRlbnRfaW1wPFQsTj46OnZhbHVlPiBiYXNlXzsgCi0gICB1c2luZyBiYXNlXzo6dmFsdWU7Ci0jZW5kaWYKLSAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDEsZXh0ZW50LChUKSkKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvc2l6ZV90X3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0lTX01FTUJFUl9GVU5DVElPTl9QT0lOVEVSX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9mbG9hdGluZ19wb2ludF9wcm9tb3Rpb24uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9mbG9hdGluZ19wb2ludF9wcm9tb3Rpb24uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNzc0ZGExLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZmxvYXRpbmdfcG9pbnRfcHJvbW90aW9uLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDkxICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDA1IEFsZXhhbmRlciBOYXNvbm92LgotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWZuZGVmIEZJTEVfbmRuYm9vc3RfdHlwZV90cmFpdHNfZmxvYXRpbmdfcG9pbnRfcHJvbW90aW9uX2hwcF9JTkNMVURFRAotI2RlZmluZSBGSUxFX25kbmJvb3N0X3R5cGVfdHJhaXRzX2Zsb2F0aW5nX3BvaW50X3Byb21vdGlvbl9ocHBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLSNpZmRlZiBORE5CT09TVF9OT19DVl9TUEVDSUFMSVpBVElPTlMKLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYXQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pbnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9tdWx0aXBsaWVzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvcGx1cy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3ZlY3Rvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2FtZS5ocHA+Ci0jZW5kaWYKLQotLy8gU2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3R5cGVfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIHR5cGVfdHJhaXRzIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1ZfU1BFQ0lBTElaQVRJT05TCi0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1zdHJ1Y3QgZmxvYXRpbmdfcG9pbnRfcHJvbW90aW9uCi17Ci0gICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZmxvYXRpbmdfcG9pbnRfcHJvbW90aW9uPGZsb2F0PgotewotICAgIHR5cGVkZWYgZG91YmxlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZmxvYXRpbmdfcG9pbnRfcHJvbW90aW9uPGZsb2F0IGNvbnN0PgotewotICAgIHR5cGVkZWYgZG91YmxlIGNvbnN0IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZmxvYXRpbmdfcG9pbnRfcHJvbW90aW9uPGZsb2F0IHZvbGF0aWxlPgotewotICAgIHR5cGVkZWYgZG91YmxlIHZvbGF0aWxlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTw+Ci1zdHJ1Y3QgZmxvYXRpbmdfcG9pbnRfcHJvbW90aW9uPGZsb2F0IGNvbnN0IHZvbGF0aWxlPgotewotICAgIHR5cGVkZWYgZG91YmxlIGNvbnN0IHZvbGF0aWxlIHR5cGU7Ci19OwotCi0jZWxzZQotCi10ZW1wbGF0ZTxjbGFzcyBUPgotc3RydWN0IGZsb2F0aW5nX3BvaW50X3Byb21vdGlvbgotICA6IG1wbDo6YXQ8Ci0gICAgICAgIG1wbDo6dmVjdG9yPCBULCBkb3VibGUsIGRvdWJsZSBjb25zdCwgZG91YmxlIHZvbGF0aWxlLAotICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGNvbnN0IHZvbGF0aWxlID4KLSAgICAgICwgbXBsOjpwbHVzPAotICAgICAgICAgICAgaXNfc2FtZTxULCBmbG9hdD4KLSAgICAgICAgICAsIG1wbDo6bXVsdGlwbGllczwgaXNfc2FtZTxULCBmbG9hdCBjb25zdD4gICAgICAgICAsIG1wbDo6aW50XzwyPiA+Ci0gICAgICAgICAgLCBtcGw6Om11bHRpcGxpZXM8IGlzX3NhbWU8VCwgZmxvYXQgdm9sYXRpbGU+ICAgICAgLCBtcGw6OmludF88Mz4gPgotICAgICAgICAgICwgbXBsOjptdWx0aXBsaWVzPCBpc19zYW1lPFQsIGZsb2F0IGNvbnN0IHZvbGF0aWxlPiwgbXBsOjppbnRfPDQ+ID4KLSAgICAgICAgICA+Ci0gICAgICA+Ci17Ci19OwotCi0jZW5kaWYKLQotfSB9Ci0KLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX0RFRjEoCi0gICAgICBmbG9hdGluZ19wb2ludF9wcm9tb3Rpb24KLSAgICAsIFQKLSAgICAsIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUKLSAgICAgICAgbmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjpkZXRhaWw6OmZsb2F0aW5nX3BvaW50X3Byb21vdGlvbjxUPjo6dHlwZQotICAgICkKLX0KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90eXBlX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vICNpZm5kZWYgRklMRV9uZG5ib29zdF90eXBlX3RyYWl0c19mbG9hdGluZ19wb2ludF9wcm9tb3Rpb25faHBwX0lOQ0xVREVECi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZnVuY3Rpb25fdHJhaXRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvZnVuY3Rpb25fdHJhaXRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDEyNjBkYi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2Z1bmN0aW9uX3RyYWl0cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMzYgKzAsMCBAQAotCi0vLyAgQ29weXJpZ2h0IDIwMDAgSm9obiBNYWRkb2NrIChqb2huQGpvaG5tYWRkb2NrLmNvLnVrKQotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9GVU5DVElPTl9UUkFJVFNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0ZVTkNUSU9OX1RSQUlUU19IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfZnVuY3Rpb24uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2FkZF9wb2ludGVyLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotI2lmbmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb24+IHN0cnVjdCBmdW5jdGlvbl90cmFpdHNfaGVscGVyOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBSPgotc3RydWN0IGZ1bmN0aW9uX3RyYWl0c19oZWxwZXI8UiAoKikodm9pZCk+Ci17Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCwgYXJpdHkgPSAwKTsKLSAgdHlwZWRlZiBSIHJlc3VsdF90eXBlOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgUiwgdHlwZW5hbWUgVDE+Ci1zdHJ1Y3QgZnVuY3Rpb25fdHJhaXRzX2hlbHBlcjxSICgqKShUMSk+Ci17Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCwgYXJpdHkgPSAxKTsKLSAgdHlwZWRlZiBSIHJlc3VsdF90eXBlOwotICB0eXBlZGVmIFQxIGFyZzFfdHlwZTsKLSAgdHlwZWRlZiBUMSBhcmd1bWVudF90eXBlOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgUiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotc3RydWN0IGZ1bmN0aW9uX3RyYWl0c19oZWxwZXI8UiAoKikoVDEsIFQyKT4KLXsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLCBhcml0eSA9IDIpOwotICB0eXBlZGVmIFIgcmVzdWx0X3R5cGU7Ci0gIHR5cGVkZWYgVDEgYXJnMV90eXBlOwotICB0eXBlZGVmIFQyIGFyZzJfdHlwZTsKLSAgdHlwZWRlZiBUMSBmaXJzdF9hcmd1bWVudF90eXBlOwotICB0eXBlZGVmIFQyIHNlY29uZF9hcmd1bWVudF90eXBlOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgUiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMz4KLXN0cnVjdCBmdW5jdGlvbl90cmFpdHNfaGVscGVyPFIgKCopKFQxLCBUMiwgVDMpPgotewotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQsIGFyaXR5ID0gMyk7Ci0gIHR5cGVkZWYgUiByZXN1bHRfdHlwZTsKLSAgdHlwZWRlZiBUMSBhcmcxX3R5cGU7Ci0gIHR5cGVkZWYgVDIgYXJnMl90eXBlOwotICB0eXBlZGVmIFQzIGFyZzNfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFIsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0Pgotc3RydWN0IGZ1bmN0aW9uX3RyYWl0c19oZWxwZXI8UiAoKikoVDEsIFQyLCBUMywgVDQpPgotewotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQsIGFyaXR5ID0gNCk7Ci0gIHR5cGVkZWYgUiByZXN1bHRfdHlwZTsKLSAgdHlwZWRlZiBUMSBhcmcxX3R5cGU7Ci0gIHR5cGVkZWYgVDIgYXJnMl90eXBlOwotICB0eXBlZGVmIFQzIGFyZzNfdHlwZTsKLSAgdHlwZWRlZiBUNCBhcmc0X3R5cGU7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBSLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwKLSAgICAgICAgIHR5cGVuYW1lIFQ1Pgotc3RydWN0IGZ1bmN0aW9uX3RyYWl0c19oZWxwZXI8UiAoKikoVDEsIFQyLCBUMywgVDQsIFQ1KT4KLXsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLCBhcml0eSA9IDUpOwotICB0eXBlZGVmIFIgcmVzdWx0X3R5cGU7Ci0gIHR5cGVkZWYgVDEgYXJnMV90eXBlOwotICB0eXBlZGVmIFQyIGFyZzJfdHlwZTsKLSAgdHlwZWRlZiBUMyBhcmczX3R5cGU7Ci0gIHR5cGVkZWYgVDQgYXJnNF90eXBlOwotICB0eXBlZGVmIFQ1IGFyZzVfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFIsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LAotICAgICAgICAgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2Pgotc3RydWN0IGZ1bmN0aW9uX3RyYWl0c19oZWxwZXI8UiAoKikoVDEsIFQyLCBUMywgVDQsIFQ1LCBUNik+Ci17Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCwgYXJpdHkgPSA2KTsKLSAgdHlwZWRlZiBSIHJlc3VsdF90eXBlOwotICB0eXBlZGVmIFQxIGFyZzFfdHlwZTsKLSAgdHlwZWRlZiBUMiBhcmcyX3R5cGU7Ci0gIHR5cGVkZWYgVDMgYXJnM190eXBlOwotICB0eXBlZGVmIFQ0IGFyZzRfdHlwZTsKLSAgdHlwZWRlZiBUNSBhcmc1X3R5cGU7Ci0gIHR5cGVkZWYgVDYgYXJnNl90eXBlOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgUiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsCi0gICAgICAgICB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3Pgotc3RydWN0IGZ1bmN0aW9uX3RyYWl0c19oZWxwZXI8UiAoKikoVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcpPgotewotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQsIGFyaXR5ID0gNyk7Ci0gIHR5cGVkZWYgUiByZXN1bHRfdHlwZTsKLSAgdHlwZWRlZiBUMSBhcmcxX3R5cGU7Ci0gIHR5cGVkZWYgVDIgYXJnMl90eXBlOwotICB0eXBlZGVmIFQzIGFyZzNfdHlwZTsKLSAgdHlwZWRlZiBUNCBhcmc0X3R5cGU7Ci0gIHR5cGVkZWYgVDUgYXJnNV90eXBlOwotICB0eXBlZGVmIFQ2IGFyZzZfdHlwZTsKLSAgdHlwZWRlZiBUNyBhcmc3X3R5cGU7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBSLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwKLSAgICAgICAgIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4Pgotc3RydWN0IGZ1bmN0aW9uX3RyYWl0c19oZWxwZXI8UiAoKikoVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4KT4KLXsKLSAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLCBhcml0eSA9IDgpOwotICB0eXBlZGVmIFIgcmVzdWx0X3R5cGU7Ci0gIHR5cGVkZWYgVDEgYXJnMV90eXBlOwotICB0eXBlZGVmIFQyIGFyZzJfdHlwZTsKLSAgdHlwZWRlZiBUMyBhcmczX3R5cGU7Ci0gIHR5cGVkZWYgVDQgYXJnNF90eXBlOwotICB0eXBlZGVmIFQ1IGFyZzVfdHlwZTsKLSAgdHlwZWRlZiBUNiBhcmc2X3R5cGU7Ci0gIHR5cGVkZWYgVDcgYXJnN190eXBlOwotICB0eXBlZGVmIFQ4IGFyZzhfdHlwZTsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFIsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LAotICAgICAgICAgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDgsIHR5cGVuYW1lIFQ5Pgotc3RydWN0IGZ1bmN0aW9uX3RyYWl0c19oZWxwZXI8UiAoKikoVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCBUOSk+Ci17Ci0gIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCwgYXJpdHkgPSA5KTsKLSAgdHlwZWRlZiBSIHJlc3VsdF90eXBlOwotICB0eXBlZGVmIFQxIGFyZzFfdHlwZTsKLSAgdHlwZWRlZiBUMiBhcmcyX3R5cGU7Ci0gIHR5cGVkZWYgVDMgYXJnM190eXBlOwotICB0eXBlZGVmIFQ0IGFyZzRfdHlwZTsKLSAgdHlwZWRlZiBUNSBhcmc1X3R5cGU7Ci0gIHR5cGVkZWYgVDYgYXJnNl90eXBlOwotICB0eXBlZGVmIFQ3IGFyZzdfdHlwZTsKLSAgdHlwZWRlZiBUOCBhcmc4X3R5cGU7Ci0gIHR5cGVkZWYgVDkgYXJnOV90eXBlOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgUiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsCi0gICAgICAgICB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDksCi0gICAgICAgICB0eXBlbmFtZSBUMTA+Ci1zdHJ1Y3QgZnVuY3Rpb25fdHJhaXRzX2hlbHBlcjxSICgqKShUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIFQ5LCBUMTApPgotewotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQsIGFyaXR5ID0gMTApOwotICB0eXBlZGVmIFIgcmVzdWx0X3R5cGU7Ci0gIHR5cGVkZWYgVDEgYXJnMV90eXBlOwotICB0eXBlZGVmIFQyIGFyZzJfdHlwZTsKLSAgdHlwZWRlZiBUMyBhcmczX3R5cGU7Ci0gIHR5cGVkZWYgVDQgYXJnNF90eXBlOwotICB0eXBlZGVmIFQ1IGFyZzVfdHlwZTsKLSAgdHlwZWRlZiBUNiBhcmc2X3R5cGU7Ci0gIHR5cGVkZWYgVDcgYXJnN190eXBlOwotICB0eXBlZGVmIFQ4IGFyZzhfdHlwZTsKLSAgdHlwZWRlZiBUOSBhcmc5X3R5cGU7Ci0gIHR5cGVkZWYgVDEwIGFyZzEwX3R5cGU7Ci19OwotCi19IC8vIGVuZCBuYW1lc3BhY2UgZGV0YWlsCi0KLXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uPgotc3RydWN0IGZ1bmN0aW9uX3RyYWl0cyA6IAotICBwdWJsaWMgbmRuYm9vc3Q6OmRldGFpbDo6ZnVuY3Rpb25fdHJhaXRzX2hlbHBlcjx0eXBlbmFtZSBuZG5ib29zdDo6YWRkX3BvaW50ZXI8RnVuY3Rpb24+Ojp0eXBlPgotewotfTsKLQotI2Vsc2UKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlPHVuc2lnbmVkIE4+IAotc3RydWN0IHR5cGVfb2Zfc2l6ZQotewotICBjaGFyIGVsZW1lbnRzW05dOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgUj4KLXR5cGVfb2Zfc2l6ZTwxPiBmdW5jdGlvbl9hcml0eV9oZWxwZXIoUiAoKmYpKCkpOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBSLCB0eXBlbmFtZSBUMT4KLXR5cGVfb2Zfc2l6ZTwyPiBmdW5jdGlvbl9hcml0eV9oZWxwZXIoUiAoKmYpKFQxKSk7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFIsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KLXR5cGVfb2Zfc2l6ZTwzPiBmdW5jdGlvbl9hcml0eV9oZWxwZXIoUiAoKmYpKFQxLCBUMikpOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBSLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzPgotdHlwZV9vZl9zaXplPDQ+IGZ1bmN0aW9uX2FyaXR5X2hlbHBlcihSICgqZikoVDEsIFQyLCBUMykpOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBSLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUND4KLXR5cGVfb2Zfc2l6ZTw1PiBmdW5jdGlvbl9hcml0eV9oZWxwZXIoUiAoKmYpKFQxLCBUMiwgVDMsIFQ0KSk7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFIsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LAotICAgICAgICAgdHlwZW5hbWUgVDU+Ci10eXBlX29mX3NpemU8Nj4gZnVuY3Rpb25fYXJpdHlfaGVscGVyKFIgKCpmKShUMSwgVDIsIFQzLCBUNCwgVDUpKTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgUiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsCi0gICAgICAgICB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDY+Ci10eXBlX29mX3NpemU8Nz4gZnVuY3Rpb25fYXJpdHlfaGVscGVyKFIgKCpmKShUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2KSk7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFIsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LAotICAgICAgICAgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNz4KLXR5cGVfb2Zfc2l6ZTw4PiBmdW5jdGlvbl9hcml0eV9oZWxwZXIoUiAoKmYpKFQxLCBUMiwgVDMsIFQ0LCBUNSwgVDYsIFQ3KSk7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFIsIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlwZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LAotICAgICAgICAgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2LCB0eXBlbmFtZSBUNywgdHlwZW5hbWUgVDg+Ci10eXBlX29mX3NpemU8OT4gZnVuY3Rpb25fYXJpdHlfaGVscGVyKFIgKCpmKShUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgpKTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgUiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsCi0gICAgICAgICB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDYsIHR5cGVuYW1lIFQ3LCB0eXBlbmFtZSBUOCwgdHlwZW5hbWUgVDk+Ci10eXBlX29mX3NpemU8MTA+IGZ1bmN0aW9uX2FyaXR5X2hlbHBlcihSICgqZikoVDEsIFQyLCBUMywgVDQsIFQ1LCBUNiwgVDcsIFQ4LCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUOSkpOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBSLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwKLSAgICAgICAgIHR5cGVuYW1lIFQ1LCB0eXBlbmFtZSBUNiwgdHlwZW5hbWUgVDcsIHR5cGVuYW1lIFQ4LCB0eXBlbmFtZSBUOSwKLSAgICAgICAgIHR5cGVuYW1lIFQxMD4KLXR5cGVfb2Zfc2l6ZTwxMT4gZnVuY3Rpb25fYXJpdHlfaGVscGVyKFIgKCpmKShUMSwgVDIsIFQzLCBUNCwgVDUsIFQ2LCBUNywgVDgsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFQ5LCBUMTApKTsKLX0gLy8gZW5kIG5hbWVzcGFjZSBkZXRhaWwKLQotLy8gV29uJ3Qgd29yayB3aXRoIHJlZmVyZW5jZXMKLXRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uPgotc3RydWN0IGZ1bmN0aW9uX3RyYWl0cwotewotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQsIGFyaXR5ID0gKHNpemVvZihuZG5ib29zdDo6ZGV0YWlsOjpmdW5jdGlvbl9hcml0eV9oZWxwZXIoKEZ1bmN0aW9uKikwKSktMSkpOwotfTsKLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLX0KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0ZVTkNUSU9OX1RSQUlUU19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2JpdF9hbmQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfYml0X2FuZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJhMmQwZTUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfYml0X2FuZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCAyMDA5LTIwMTEgRnJlZGVyaWMgQnJvbi4KLS8vCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0hBU19CSVRfQU5EX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9IQVNfQklUX0FORF9IUFBfSU5DTFVERUQKLQotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9OQU1FIGhhc19iaXRfYW5kCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX09QICYKLSNkZWZpbmUgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGXAotICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAvKiBMaHM9PWZ1bmRhbWVudGFsIGFuZCBSaHM9PWZ1bmRhbWVudGFsIGFuZCAoTGhzIT1pbnRlZ3JhbCBvciBSaHMhPWludGVncmFsKSAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBMaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgUmhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfaW50ZWdyYWw8IExoc19ub3JlZiA+Ojp2YWx1ZSA+Ojp2YWx1ZSxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfaW50ZWdyYWw8IFJoc19ub3JlZiA+Ojp2YWx1ZSA+Ojp2YWx1ZVwKLSAgICAgICAgID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogTGhzPT1mdW5kYW1lbnRhbCBhbmQgUmhzPT1wb2ludGVyICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IExoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIFJocz09ZnVuZGFtZW50YWwgYW5kIExocz09cG9pbnRlciAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBMaHM9PXBvaW50ZXIgYW5kIFJocz09cG9pbnRlciAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZVwKLSAgID46OnZhbHVlCi0KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9oYXNfYmluYXJ5X29wZXJhdG9yLmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUKLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9PUAotI3VuZGVmIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2JpdF9hbmRfYXNzaWduLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2JpdF9hbmRfYXNzaWduLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWNmNjVlMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19iaXRfYW5kX2Fzc2lnbi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCAyMDA5LTIwMTEgRnJlZGVyaWMgQnJvbi4KLS8vCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0hBU19CSVRfQU5EX0FTU0lHTl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSEFTX0JJVF9BTkRfQVNTSUdOX0hQUF9JTkNMVURFRAotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUgaGFzX2JpdF9hbmRfYXNzaWduCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX09QICY9Ci0jZGVmaW5lIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRlwKLSAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgLyogTGhzPT1mdW5kYW1lbnRhbCBhbmQgUmhzPT1mdW5kYW1lbnRhbCBhbmQgKExocyE9aW50ZWdyYWwgb3IgUmhzIT1pbnRlZ3JhbCkgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgTGhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IFJoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX2ludGVncmFsPCBMaHNfbm9yZWYgPjo6dmFsdWUgPjo6dmFsdWUsXAotICAgICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX2ludGVncmFsPCBSaHNfbm9yZWYgPjo6dmFsdWUgPjo6dmFsdWVcCi0gICAgICAgICA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIExocz09ZnVuZGFtZW50YWwgYW5kIFJocz09cG9pbnRlciAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBMaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBSaHM9PWZ1bmRhbWVudGFsIGFuZCBMaHM9PXBvaW50ZXIgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgUmhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogTGhzPT1wb2ludGVyIGFuZCBSaHM9PXBvaW50ZXIgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogTGhzPT1mdW5kYW1lbnRhbCBhbmQgUmhzPT1mdW5kYW1lbnRhbCBhbmQgTGhzPT1jb25zdCAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBMaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgUmhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfY29uc3Q8IExoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlXAotICAgPjo6dmFsdWUKLQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2hhc19iaW5hcnlfb3BlcmF0b3IuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfTkFNRQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX09QCi0jdW5kZWYgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfYml0X29yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2JpdF9vci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFhOTc2NTEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfYml0X29yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IDIwMDktMjAxMSBGcmVkZXJpYyBCcm9uLgotLy8KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSEFTX0JJVF9PUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSEFTX0JJVF9PUl9IUFBfSU5DTFVERUQKLQotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9OQU1FIGhhc19iaXRfb3IKLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfT1AgfAotI2RlZmluZSBORE5CT09TVF9UVF9GT1JCSURERU5fSUZcCi0gICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgIC8qIExocz09ZnVuZGFtZW50YWwgYW5kIFJocz09ZnVuZGFtZW50YWwgYW5kIChMaHMhPWludGVncmFsIG9yIFJocyE9aW50ZWdyYWwpICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IExoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19pbnRlZ3JhbDwgTGhzX25vcmVmID46OnZhbHVlID46OnZhbHVlLFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19pbnRlZ3JhbDwgUmhzX25vcmVmID46OnZhbHVlID46OnZhbHVlXAotICAgICAgICAgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBMaHM9PWZ1bmRhbWVudGFsIGFuZCBSaHM9PXBvaW50ZXIgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgTGhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogUmhzPT1mdW5kYW1lbnRhbCBhbmQgTGhzPT1wb2ludGVyICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IFJoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIExocz09cG9pbnRlciBhbmQgUmhzPT1wb2ludGVyICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlXAotICAgPjo6dmFsdWUKLQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2hhc19iaW5hcnlfb3BlcmF0b3IuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfTkFNRQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX09QCi0jdW5kZWYgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfYml0X29yX2Fzc2lnbi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19iaXRfb3JfYXNzaWduLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmY3MzQzNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19iaXRfb3JfYXNzaWduLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IDIwMDktMjAxMSBGcmVkZXJpYyBCcm9uLgotLy8KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSEFTX0JJVF9PUl9BU1NJR05fSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0hBU19CSVRfT1JfQVNTSUdOX0hQUF9JTkNMVURFRAotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUgaGFzX2JpdF9vcl9hc3NpZ24KLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfT1AgfD0KLSNkZWZpbmUgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGXAotICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAvKiBMaHM9PWZ1bmRhbWVudGFsIGFuZCBSaHM9PWZ1bmRhbWVudGFsIGFuZCAoTGhzIT1pbnRlZ3JhbCBvciBSaHMhPWludGVncmFsKSAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBMaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgUmhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfaW50ZWdyYWw8IExoc19ub3JlZiA+Ojp2YWx1ZSA+Ojp2YWx1ZSxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfaW50ZWdyYWw8IFJoc19ub3JlZiA+Ojp2YWx1ZSA+Ojp2YWx1ZVwKLSAgICAgICAgID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogTGhzPT1mdW5kYW1lbnRhbCBhbmQgUmhzPT1wb2ludGVyICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IExoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIFJocz09ZnVuZGFtZW50YWwgYW5kIExocz09cG9pbnRlciAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBMaHM9PXBvaW50ZXIgYW5kIFJocz09cG9pbnRlciAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBMaHM9PWZ1bmRhbWVudGFsIGFuZCBSaHM9PWZ1bmRhbWVudGFsIGFuZCBMaHM9PWNvbnN0ICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IExoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19jb25zdDwgTGhzX25vcmVmID46OnZhbHVlXAotICAgICAgPjo6dmFsdWVcCi0gICA+Ojp2YWx1ZQotCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaGFzX2JpbmFyeV9vcGVyYXRvci5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9OQU1FCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfT1AKLSN1bmRlZiBORE5CT09TVF9UVF9GT1JCSURERU5fSUYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19iaXRfeG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2JpdF94b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwODNhNGZjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2JpdF94b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgMjAwOS0yMDExIEZyZWRlcmljIEJyb24uCi0vLwotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9IQVNfQklUX1hPUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSEFTX0JJVF9YT1JfSFBQX0lOQ0xVREVECi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfTkFNRSBoYXNfYml0X3hvcgotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9PUCBeCi0jZGVmaW5lIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRlwKLSAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgLyogTGhzPT1mdW5kYW1lbnRhbCBhbmQgUmhzPT1mdW5kYW1lbnRhbCBhbmQgKExocyE9aW50ZWdyYWwgb3IgUmhzIT1pbnRlZ3JhbCkgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgTGhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IFJoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX2ludGVncmFsPCBMaHNfbm9yZWYgPjo6dmFsdWUgPjo6dmFsdWUsXAotICAgICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX2ludGVncmFsPCBSaHNfbm9yZWYgPjo6dmFsdWUgPjo6dmFsdWVcCi0gICAgICAgICA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIExocz09ZnVuZGFtZW50YWwgYW5kIFJocz09cG9pbnRlciAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBMaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBSaHM9PWZ1bmRhbWVudGFsIGFuZCBMaHM9PXBvaW50ZXIgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgUmhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogTGhzPT1wb2ludGVyIGFuZCBSaHM9PXBvaW50ZXIgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlXAotICAgICAgPjo6dmFsdWVcCi0gICA+Ojp2YWx1ZQotCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaGFzX2JpbmFyeV9vcGVyYXRvci5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9OQU1FCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfT1AKLSN1bmRlZiBORE5CT09TVF9UVF9GT1JCSURERU5fSUYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19iaXRfeG9yX2Fzc2lnbi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19iaXRfeG9yX2Fzc2lnbi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ3ZmEzYWYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfYml0X3hvcl9hc3NpZ24uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgMjAwOS0yMDExIEZyZWRlcmljIEJyb24uCi0vLwotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9IQVNfQklUX1hPUl9BU1NJR05fSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0hBU19CSVRfWE9SX0FTU0lHTl9IUFBfSU5DTFVERUQKLQotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9OQU1FIGhhc19iaXRfeG9yX2Fzc2lnbgotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9PUCBePQotI2RlZmluZSBORE5CT09TVF9UVF9GT1JCSURERU5fSUZcCi0gICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgIC8qIExocz09ZnVuZGFtZW50YWwgYW5kIFJocz09ZnVuZGFtZW50YWwgYW5kIChMaHMhPWludGVncmFsIG9yIFJocyE9aW50ZWdyYWwpICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IExoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19pbnRlZ3JhbDwgTGhzX25vcmVmID46OnZhbHVlID46OnZhbHVlLFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19pbnRlZ3JhbDwgUmhzX25vcmVmID46OnZhbHVlID46OnZhbHVlXAotICAgICAgICAgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBMaHM9PWZ1bmRhbWVudGFsIGFuZCBSaHM9PXBvaW50ZXIgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgTGhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogUmhzPT1mdW5kYW1lbnRhbCBhbmQgTGhzPT1wb2ludGVyICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IFJoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIExocz09cG9pbnRlciBhbmQgUmhzPT1wb2ludGVyICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIExocz09ZnVuZGFtZW50YWwgYW5kIFJocz09ZnVuZGFtZW50YWwgYW5kIExocz09Y29uc3QgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgTGhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IFJoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2NvbnN0PCBMaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZVwKLSAgID46OnZhbHVlCi0KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9oYXNfYmluYXJ5X29wZXJhdG9yLmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUKLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9PUAotI3VuZGVmIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2NvbXBsZW1lbnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfY29tcGxlbWVudC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQyN2Y2ZmYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfY29tcGxlbWVudC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCAyMDA5LTIwMTEgRnJlZGVyaWMgQnJvbi4KLS8vCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0hBU19DT01QTEVNRU5UX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9IQVNfQ09NUExFTUVOVF9IUFBfSU5DTFVERUQKLQotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9OQU1FIGhhc19jb21wbGVtZW50Ci0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX09QIH4KLSNkZWZpbmUgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGXAotICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAvKiBwb2ludGVyICovXAotICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgIC8qIGZ1bmRhbWVudGFsIG5vbiBpbnRlZ3JhbCAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX2ludGVncmFsPCBSaHNfbm9yZWYgPjo6dmFsdWUgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZVwKLSAgID46OnZhbHVlCi0KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9oYXNfcHJlZml4X29wZXJhdG9yLmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUKLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9PUAotI3VuZGVmIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2RlcmVmZXJlbmNlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2RlcmVmZXJlbmNlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjZmMjU1YS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19kZXJlZmVyZW5jZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCAyMDA5LTIwMTEgRnJlZGVyaWMgQnJvbi4KLS8vCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0hBU19ERVJFRkVSRU5DRV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSEFTX0RFUkVGRVJFTkNFX0hQUF9JTkNMVURFRAotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUgaGFzX2RlcmVmZXJlbmNlCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX09QICoKLSNkZWZpbmUgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGXAotICAgLyogdm9pZCogb3IgZnVuZGFtZW50YWwgKi9cCi0gICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc192b2lkPCBSaHNfbm9wdHIgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgUmhzX25vY3YgPjo6dmFsdWVcCi0gICA+Ojp2YWx1ZQotCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaGFzX3ByZWZpeF9vcGVyYXRvci5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9OQU1FCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfT1AKLSN1bmRlZiBORE5CT09TVF9UVF9GT1JCSURERU5fSUYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19kaXZpZGVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2RpdmlkZXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMWU3OWViLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2RpdmlkZXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgMjAwOS0yMDExIEZyZWRlcmljIEJyb24uCi0vLwotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9IQVNfRElWSURFU19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSEFTX0RJVklERVNfSFBQX0lOQ0xVREVECi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfTkFNRSBoYXNfZGl2aWRlcwotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9PUCAvCi0jZGVmaW5lIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRlwKLSAgIC8qIHBvaW50ZXIgd2l0aCBwb2ludGVyIG9yIGZ1bmRhbWVudGFsICovXAotICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgUmhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlXAotICAgICAgICAgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgTGhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlXAotICAgICAgICAgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZVwKLSAgID46OnZhbHVlCi0KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9oYXNfYmluYXJ5X29wZXJhdG9yLmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUKLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9PUAotI3VuZGVmIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2RpdmlkZXNfYXNzaWduLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2RpdmlkZXNfYXNzaWduLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2MzMTUwZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19kaXZpZGVzX2Fzc2lnbi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCAyMDA5LTIwMTEgRnJlZGVyaWMgQnJvbi4KLS8vCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0hBU19ESVZJREVTX0FTU0lHTl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSEFTX0RJVklERVNfQVNTSUdOX0hQUF9JTkNMVURFRAotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUgaGFzX2RpdmlkZXNfYXNzaWduCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX09QIC89Ci0jZGVmaW5lIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRlwKLSAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgLyogTGhzPT1mdW5kYW1lbnRhbCBhbmQgTGhzPT1jb25zdCBhbmQgUmhzPT1mdW5kYW1lbnRhbCAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBMaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19jb25zdDwgTGhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIExocz09cG9pbnRlciBhbmQgKFJocz09ZnVuZGFtZW50YWwgb3IgUmhzPT1wb2ludGVyKSAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICAgICA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIFJocz09cG9pbnRlciBhbmQgKExocz09ZnVuZGFtZW50YWwgb3IgTGhzPT1wb2ludGVyKSAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBMaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICAgICA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlXAotICAgPjo6dmFsdWUKLQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2hhc19iaW5hcnlfb3BlcmF0b3IuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfTkFNRQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX09QCi0jdW5kZWYgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfZXF1YWxfdG8uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfZXF1YWxfdG8uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZDEyOWU4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2VxdWFsX3RvLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IDIwMDktMjAxMSBGcmVkZXJpYyBCcm9uLgotLy8KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSEFTX0VRVUFMX1RPX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9IQVNfRVFVQUxfVE9fSFBQX0lOQ0xVREVECi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfTkFNRSBoYXNfZXF1YWxfdG8KLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfT1AgPT0KLSNkZWZpbmUgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGXAotICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAvKiBMaHM9PXBvaW50ZXIgYW5kIFJocz09ZnVuZGFtZW50YWwgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IFJoc19ub2N2ID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogUmhzPT1wb2ludGVyIGFuZCBMaHM9PWZ1bmRhbWVudGFsICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBMaHNfbm9jdiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIExocz09cG9pbnRlciBhbmQgUmhzPT1wb2ludGVyIGFuZCBMaHMhPWJhc2UoUmhzKSBhbmQgUmhzIT1iYXNlKExocykgYW5kIExocyE9dm9pZCogYW5kIFJocyE9dm9pZCogKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfYmFzZV9vZjwgTGhzX25vcHRyLCBSaHNfbm9wdHIgPjo6dmFsdWUsXAotICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfYmFzZV9vZjwgUmhzX25vcHRyLCBMaHNfbm9wdHIgPjo6dmFsdWUsXAotICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfc2FtZTwgTGhzX25vcHRyLCBSaHNfbm9wdHIgPjo6dmFsdWUsXAotICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfdm9pZDwgTGhzX25vcHRyID46OnZhbHVlLFwKLSAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3ZvaWQ8IFJoc19ub3B0ciA+Ojp2YWx1ZVwKLSAgICAgICAgICAgID46OnZhbHVlXAotICAgICAgICAgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZVwKLSAgID46OnZhbHVlCi0KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9oYXNfYmluYXJ5X29wZXJhdG9yLmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUKLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9PUAotI3VuZGVmIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2dyZWF0ZXIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfZ3JlYXRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1ZDdkZjYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfZ3JlYXRlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCAyMDA5LTIwMTEgRnJlZGVyaWMgQnJvbi4KLS8vCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0hBU19HUkVBVEVSX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9IQVNfR1JFQVRFUl9IUFBfSU5DTFVERUQKLQotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9OQU1FIGhhc19ncmVhdGVyCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX09QID4KLSNkZWZpbmUgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGXAotICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAvKiBMaHM9PXBvaW50ZXIgYW5kIFJocz09ZnVuZGFtZW50YWwgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IFJoc19ub2N2ID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogUmhzPT1wb2ludGVyIGFuZCBMaHM9PWZ1bmRhbWVudGFsICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBMaHNfbm9jdiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIExocz09cG9pbnRlciBhbmQgUmhzPT1wb2ludGVyIGFuZCBMaHMhPWJhc2UoUmhzKSBhbmQgUmhzIT1iYXNlKExocykgYW5kIExocyE9dm9pZCogYW5kIFJocyE9dm9pZCogKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfYmFzZV9vZjwgTGhzX25vcHRyLCBSaHNfbm9wdHIgPjo6dmFsdWUsXAotICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfYmFzZV9vZjwgUmhzX25vcHRyLCBMaHNfbm9wdHIgPjo6dmFsdWUsXAotICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfc2FtZTwgTGhzX25vcHRyLCBSaHNfbm9wdHIgPjo6dmFsdWUsXAotICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfdm9pZDwgTGhzX25vcHRyID46OnZhbHVlLFwKLSAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3ZvaWQ8IFJoc19ub3B0ciA+Ojp2YWx1ZVwKLSAgICAgICAgICAgID46OnZhbHVlXAotICAgICAgICAgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZVwKLSAgID46OnZhbHVlCi0KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9oYXNfYmluYXJ5X29wZXJhdG9yLmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUKLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9PUAotI3VuZGVmIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2dyZWF0ZXJfZXF1YWwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfZ3JlYXRlcl9lcXVhbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzZTZjOTAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfZ3JlYXRlcl9lcXVhbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCAyMDA5LTIwMTEgRnJlZGVyaWMgQnJvbi4KLS8vCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0hBU19HUkVBVEVSX0VRVUFMX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9IQVNfR1JFQVRFUl9FUVVBTF9IUFBfSU5DTFVERUQKLQotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9OQU1FIGhhc19ncmVhdGVyX2VxdWFsCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX09QID49Ci0jZGVmaW5lIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRlwKLSAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgLyogTGhzPT1wb2ludGVyIGFuZCBSaHM9PWZ1bmRhbWVudGFsICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIFJocz09cG9pbnRlciBhbmQgTGhzPT1mdW5kYW1lbnRhbCAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgTGhzX25vY3YgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBMaHM9PXBvaW50ZXIgYW5kIFJocz09cG9pbnRlciBhbmQgTGhzIT1iYXNlKFJocykgYW5kIFJocyE9YmFzZShMaHMpIGFuZCBMaHMhPXZvaWQqIGFuZCBSaHMhPXZvaWQqICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Jhc2Vfb2Y8IExoc19ub3B0ciwgUmhzX25vcHRyID46OnZhbHVlLFwKLSAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Jhc2Vfb2Y8IFJoc19ub3B0ciwgTGhzX25vcHRyID46OnZhbHVlLFwKLSAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3NhbWU8IExoc19ub3B0ciwgUmhzX25vcHRyID46OnZhbHVlLFwKLSAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3ZvaWQ8IExoc19ub3B0ciA+Ojp2YWx1ZSxcCi0gICAgICAgICAgICAgICA6Om5kbmJvb3N0Ojppc192b2lkPCBSaHNfbm9wdHIgPjo6dmFsdWVcCi0gICAgICAgICAgICA+Ojp2YWx1ZVwKLSAgICAgICAgID46OnZhbHVlXAotICAgICAgPjo6dmFsdWVcCi0gICA+Ojp2YWx1ZQotCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaGFzX2JpbmFyeV9vcGVyYXRvci5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9OQU1FCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfT1AKLSN1bmRlZiBORE5CT09TVF9UVF9GT1JCSURERU5fSUYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19sZWZ0X3NoaWZ0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2xlZnRfc2hpZnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZjZkMzQxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2xlZnRfc2hpZnQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgMjAwOS0yMDExIEZyZWRlcmljIEJyb24uCi0vLwotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9IQVNfTEVGVF9TSElGVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSEFTX0xFRlRfU0hJRlRfSFBQX0lOQ0xVREVECi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfTkFNRSBoYXNfbGVmdF9zaGlmdAotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9PUCA8PAotI2RlZmluZSBORE5CT09TVF9UVF9GT1JCSURERU5fSUZcCi0gICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgIC8qIExocz09ZnVuZGFtZW50YWwgYW5kIFJocz09ZnVuZGFtZW50YWwgYW5kIChMaHMhPWludGVncmFsIG9yIFJocyE9aW50ZWdyYWwpICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IExoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19pbnRlZ3JhbDwgTGhzX25vcmVmID46OnZhbHVlID46OnZhbHVlLFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19pbnRlZ3JhbDwgUmhzX25vcmVmID46OnZhbHVlID46OnZhbHVlXAotICAgICAgICAgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBMaHM9PWZ1bmRhbWVudGFsIGFuZCBSaHM9PXBvaW50ZXIgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgTGhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogUmhzPT1mdW5kYW1lbnRhbCBhbmQgTGhzPT1wb2ludGVyICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IFJoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIExocz09cG9pbnRlciBhbmQgUmhzPT1wb2ludGVyICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlXAotICAgPjo6dmFsdWUKLQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2hhc19iaW5hcnlfb3BlcmF0b3IuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfTkFNRQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX09QCi0jdW5kZWYgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbGVmdF9zaGlmdF9hc3NpZ24uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbGVmdF9zaGlmdF9hc3NpZ24uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZGYzNWU5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2xlZnRfc2hpZnRfYXNzaWduLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IDIwMDktMjAxMSBGcmVkZXJpYyBCcm9uLgotLy8KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSEFTX0xFRlRfU0hJRlRfQVNTSUdOX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9IQVNfTEVGVF9TSElGVF9BU1NJR05fSFBQX0lOQ0xVREVECi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfTkFNRSBoYXNfbGVmdF9zaGlmdF9hc3NpZ24KLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfT1AgPDw9Ci0jZGVmaW5lIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRlwKLSAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgLyogTGhzPT1mdW5kYW1lbnRhbCBhbmQgUmhzPT1mdW5kYW1lbnRhbCBhbmQgKExocyE9aW50ZWdyYWwgb3IgUmhzIT1pbnRlZ3JhbCkgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgTGhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IFJoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX2ludGVncmFsPCBMaHNfbm9yZWYgPjo6dmFsdWUgPjo6dmFsdWUsXAotICAgICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX2ludGVncmFsPCBSaHNfbm9yZWYgPjo6dmFsdWUgPjo6dmFsdWVcCi0gICAgICAgICA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIExocz09ZnVuZGFtZW50YWwgYW5kIFJocz09cG9pbnRlciAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBMaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBSaHM9PWZ1bmRhbWVudGFsIGFuZCBMaHM9PXBvaW50ZXIgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgUmhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogTGhzPT1wb2ludGVyIGFuZCBSaHM9PXBvaW50ZXIgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogTGhzPT1mdW5kYW1lbnRhbCBhbmQgUmhzPT1mdW5kYW1lbnRhbCBhbmQgTGhzPT1jb25zdCAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBMaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgUmhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfY29uc3Q8IExoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlXAotICAgPjo6dmFsdWUKLQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2hhc19iaW5hcnlfb3BlcmF0b3IuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfTkFNRQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX09QCi0jdW5kZWYgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbGVzcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19sZXNzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTYyYzI2MC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19sZXNzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IDIwMDktMjAxMSBGcmVkZXJpYyBCcm9uLgotLy8KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSEFTX0xFU1NfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0hBU19MRVNTX0hQUF9JTkNMVURFRAotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUgaGFzX2xlc3MKLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfT1AgPAotI2RlZmluZSBORE5CT09TVF9UVF9GT1JCSURERU5fSUZcCi0gICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgIC8qIExocz09cG9pbnRlciBhbmQgUmhzPT1mdW5kYW1lbnRhbCAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgUmhzX25vY3YgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBSaHM9PXBvaW50ZXIgYW5kIExocz09ZnVuZGFtZW50YWwgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IExoc19ub2N2ID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogTGhzPT1wb2ludGVyIGFuZCBSaHM9PXBvaW50ZXIgYW5kIExocyE9YmFzZShSaHMpIGFuZCBSaHMhPWJhc2UoTGhzKSBhbmQgTGhzIT12b2lkKiBhbmQgUmhzIT12b2lkKiAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8XAotICAgICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19iYXNlX29mPCBMaHNfbm9wdHIsIFJoc19ub3B0ciA+Ojp2YWx1ZSxcCi0gICAgICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19iYXNlX29mPCBSaHNfbm9wdHIsIExoc19ub3B0ciA+Ojp2YWx1ZSxcCi0gICAgICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19zYW1lPCBMaHNfbm9wdHIsIFJoc19ub3B0ciA+Ojp2YWx1ZSxcCi0gICAgICAgICAgICAgICA6Om5kbmJvb3N0Ojppc192b2lkPCBMaHNfbm9wdHIgPjo6dmFsdWUsXAotICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfdm9pZDwgUmhzX25vcHRyID46OnZhbHVlXAotICAgICAgICAgICAgPjo6dmFsdWVcCi0gICAgICAgICA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlXAotICAgPjo6dmFsdWUKLQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2hhc19iaW5hcnlfb3BlcmF0b3IuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfTkFNRQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX09QCi0jdW5kZWYgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbGVzc19lcXVhbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19sZXNzX2VxdWFsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWUyYTI1ZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19sZXNzX2VxdWFsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IDIwMDktMjAxMSBGcmVkZXJpYyBCcm9uLgotLy8KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSEFTX0xFU1NfRVFVQUxfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0hBU19MRVNTX0VRVUFMX0hQUF9JTkNMVURFRAotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUgaGFzX2xlc3NfZXF1YWwKLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfT1AgPD0KLSNkZWZpbmUgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGXAotICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAvKiBMaHM9PXBvaW50ZXIgYW5kIFJocz09ZnVuZGFtZW50YWwgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IFJoc19ub2N2ID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogUmhzPT1wb2ludGVyIGFuZCBMaHM9PWZ1bmRhbWVudGFsICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBMaHNfbm9jdiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIExocz09cG9pbnRlciBhbmQgUmhzPT1wb2ludGVyIGFuZCBMaHMhPWJhc2UoUmhzKSBhbmQgUmhzIT1iYXNlKExocykgYW5kIExocyE9dm9pZCogYW5kIFJocyE9dm9pZCogKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfYmFzZV9vZjwgTGhzX25vcHRyLCBSaHNfbm9wdHIgPjo6dmFsdWUsXAotICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfYmFzZV9vZjwgUmhzX25vcHRyLCBMaHNfbm9wdHIgPjo6dmFsdWUsXAotICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfc2FtZTwgTGhzX25vcHRyLCBSaHNfbm9wdHIgPjo6dmFsdWUsXAotICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfdm9pZDwgTGhzX25vcHRyID46OnZhbHVlLFwKLSAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3ZvaWQ8IFJoc19ub3B0ciA+Ojp2YWx1ZVwKLSAgICAgICAgICAgID46OnZhbHVlXAotICAgICAgICAgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZVwKLSAgID46OnZhbHVlCi0KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9oYXNfYmluYXJ5X29wZXJhdG9yLmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUKLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9PUAotI3VuZGVmIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2xvZ2ljYWxfYW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2xvZ2ljYWxfYW5kLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODBiY2E4ZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19sb2dpY2FsX2FuZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCAyMDA5LTIwMTEgRnJlZGVyaWMgQnJvbi4KLS8vCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0hBU19MT0dJQ0FMX0FORF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSEFTX0xPR0lDQUxfQU5EX0hQUF9JTkNMVURFRAotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUgaGFzX2xvZ2ljYWxfYW5kCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX09QICYmCi0jZGVmaW5lIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRlwKLSAgIC8qIHBvaW50ZXIgd2l0aCBmdW5kYW1lbnRhbCBub24gY29udmVydGlibGUgdG8gYm9vbCAqL1wKLSAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfY29udmVydGlibGU8IFJoc19ub2N2LCBib29sID46OnZhbHVlID46OnZhbHVlXAotICAgICAgICAgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IExoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19jb252ZXJ0aWJsZTwgTGhzX25vY3YsIGJvb2wgPjo6dmFsdWUgPjo6dmFsdWVcCi0gICAgICAgICA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlXAotICAgPjo6dmFsdWUKLQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2hhc19iaW5hcnlfb3BlcmF0b3IuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfTkFNRQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX09QCi0jdW5kZWYgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbG9naWNhbF9ub3QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbG9naWNhbF9ub3QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMTZjZDQ0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2xvZ2ljYWxfbm90LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IDIwMDktMjAxMSBGcmVkZXJpYyBCcm9uLgotLy8KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSEFTX0xPR0lDQUxfTk9UX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9IQVNfTE9HSUNBTF9OT1RfSFBQX0lOQ0xVREVECi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfTkFNRSBoYXNfbG9naWNhbF9ub3QKLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfT1AgIQotI2RlZmluZSBORE5CT09TVF9UVF9GT1JCSURERU5fSUZcCi0gICBmYWxzZQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2hhc19wcmVmaXhfb3BlcmF0b3IuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfTkFNRQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX09QCi0jdW5kZWYgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbG9naWNhbF9vci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19sb2dpY2FsX29yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGZkMWQwNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19sb2dpY2FsX29yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IDIwMDktMjAxMSBGcmVkZXJpYyBCcm9uLgotLy8KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSEFTX0xPR0lDQUxfT1JfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0hBU19MT0dJQ0FMX09SX0hQUF9JTkNMVURFRAotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUgaGFzX2xvZ2ljYWxfb3IKLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfT1AgfHwKLSNkZWZpbmUgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGXAotICAgLyogcG9pbnRlciB3aXRoIGZ1bmRhbWVudGFsIG5vbiBjb252ZXJ0aWJsZSB0byBib29sICovXAotICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IFJoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19jb252ZXJ0aWJsZTwgUmhzX25vY3YsIGJvb2wgPjo6dmFsdWUgPjo6dmFsdWVcCi0gICAgICAgICA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgTGhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX2NvbnZlcnRpYmxlPCBMaHNfbm9jdiwgYm9vbCA+Ojp2YWx1ZSA+Ojp2YWx1ZVwKLSAgICAgICAgID46OnZhbHVlXAotICAgICAgPjo6dmFsdWVcCi0gICA+Ojp2YWx1ZQotCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaGFzX2JpbmFyeV9vcGVyYXRvci5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9OQU1FCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfT1AKLSN1bmRlZiBORE5CT09TVF9UVF9GT1JCSURERU5fSUYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19taW51cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19taW51cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0ZDZlMDUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbWludXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgMjAwOS0yMDExIEZyZWRlcmljIEJyb24uCi0vLwotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9IQVNfTUlOVVNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0hBU19NSU5VU19IUFBfSU5DTFVERUQKLQotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9OQU1FIGhhc19taW51cwotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9PUCAtCi0jZGVmaW5lIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRlwKLSAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgLyogTGhzPT1wb2ludGVyIGFuZCBSaHM9PWZ1bmRhbWVudGFsIGFuZCBSaHMhPWludGVncmFsICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfaW50ZWdyYWw8IFJoc19ub3JlZiA+Ojp2YWx1ZSA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIExocz09dm9pZCogYW5kIChSaHM9PWZ1bmRhbWVudGFsIG9yIFJocz09cG9pbnRlcikgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfdm9pZDwgTGhzX25vcHRyID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IFJoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgICAgID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogUmhzPT12b2lkKiBhbmQgKExocz09ZnVuZGFtZW50YWwgb3IgTGhzPT1wb2ludGVyKSAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc192b2lkPCBSaHNfbm9wdHIgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgTGhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlXAotICAgICAgICAgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBMaHM9ZnVuZGFtZW50YWwgYW5kIFJocz1wb2ludGVyICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IExoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIHR3byBkaWZmZXJlbnQgcG9pbnRlcnMgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19zYW1lPCBMaHNfbm9jdiwgUmhzX25vY3YgPjo6dmFsdWUgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZVwKLSAgID46OnZhbHVlCi0KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9oYXNfYmluYXJ5X29wZXJhdG9yLmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUKLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9PUAotI3VuZGVmIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX21pbnVzX2Fzc2lnbi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19taW51c19hc3NpZ24uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOTFiODNkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX21pbnVzX2Fzc2lnbi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2NSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCAyMDA5LTIwMTEgRnJlZGVyaWMgQnJvbi4KLS8vCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0hBU19NSU5VU19BU1NJR05fSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0hBU19NSU5VU19BU1NJR05fSFBQX0lOQ0xVREVECi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfTkFNRSBoYXNfbWludXNfYXNzaWduCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX09QIC09Ci0jZGVmaW5lIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRlwKLSAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgLyogTGhzPT1wb2ludGVyIGFuZCBSaHM9PWZ1bmRhbWVudGFsIGFuZCBSaHMhPWludGVncmFsICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfaW50ZWdyYWw8IFJoc19ub3JlZiA+Ojp2YWx1ZSA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIExocz09dm9pZCogYW5kIFJocz09ZnVuZGFtZW50YWwgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfdm9pZDwgTGhzX25vcHRyID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIFJocz09dm9pZCogYW5kIExocz09ZnVuZGFtZW50YWwgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfdm9pZDwgUmhzX25vcHRyID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBMaHNfbm9jdiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIExocz1mdW5kYW1lbnRhbCBhbmQgUmhzPXBvaW50ZXIgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgTGhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogTGhzPT1wb2ludGVyIGFuZCBSaHM9PXBvaW50ZXIgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogKExocz09ZnVuZGFtZW50YWwgb3IgTGhzPT1wb2ludGVyKSBhbmQgKFJocz09ZnVuZGFtZW50YWwgb3IgUmhzPT1wb2ludGVyKSBhbmQgKExocz09Y29uc3QpICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgTGhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlXAotICAgICAgICAgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgUmhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlXAotICAgICAgICAgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfY29uc3Q8IExoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlXAotICAgPjo6dmFsdWUKLQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2hhc19iaW5hcnlfb3BlcmF0b3IuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfTkFNRQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX09QCi0jdW5kZWYgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbW9kdWx1cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19tb2R1bHVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTBmOGU5Zi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19tb2R1bHVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IDIwMDktMjAxMSBGcmVkZXJpYyBCcm9uLgotLy8KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSEFTX01PRFVMVVNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0hBU19NT0RVTFVTX0hQUF9JTkNMVURFRAotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUgaGFzX21vZHVsdXMKLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfT1AgJQotI2RlZmluZSBORE5CT09TVF9UVF9GT1JCSURERU5fSUZcCi0gICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgIC8qIExocz09ZnVuZGFtZW50YWwgYW5kIFJocz09ZnVuZGFtZW50YWwgYW5kIChMaHMhPWludGVncmFsIG9yIFJocyE9aW50ZWdyYWwpICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IExoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19pbnRlZ3JhbDwgTGhzX25vcmVmID46OnZhbHVlID46OnZhbHVlLFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19pbnRlZ3JhbDwgUmhzX25vcmVmID46OnZhbHVlID46OnZhbHVlXAotICAgICAgICAgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBMaHM9PWZ1bmRhbWVudGFsIGFuZCBSaHM9PXBvaW50ZXIgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgTGhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogUmhzPT1mdW5kYW1lbnRhbCBhbmQgTGhzPT1wb2ludGVyICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IFJoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIExocz09cG9pbnRlciBhbmQgUmhzPT1wb2ludGVyICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlXAotICAgPjo6dmFsdWUKLQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2hhc19iaW5hcnlfb3BlcmF0b3IuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfTkFNRQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX09QCi0jdW5kZWYgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbW9kdWx1c19hc3NpZ24uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbW9kdWx1c19hc3NpZ24uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNDEyZWUyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX21vZHVsdXNfYXNzaWduLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IDIwMDktMjAxMSBGcmVkZXJpYyBCcm9uLgotLy8KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSEFTX01PRFVMVVNfQVNTSUdOX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9IQVNfTU9EVUxVU19BU1NJR05fSFBQX0lOQ0xVREVECi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfTkFNRSBoYXNfbW9kdWx1c19hc3NpZ24KLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfT1AgJT0KLSNkZWZpbmUgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGXAotICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAvKiBMaHM9PWZ1bmRhbWVudGFsIGFuZCBSaHM9PWZ1bmRhbWVudGFsIGFuZCAoTGhzIT1pbnRlZ3JhbCBvciBSaHMhPWludGVncmFsKSAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBMaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgUmhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfaW50ZWdyYWw8IExoc19ub3JlZiA+Ojp2YWx1ZSA+Ojp2YWx1ZSxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfaW50ZWdyYWw8IFJoc19ub3JlZiA+Ojp2YWx1ZSA+Ojp2YWx1ZVwKLSAgICAgICAgID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogTGhzPT1mdW5kYW1lbnRhbCBhbmQgUmhzPT1wb2ludGVyICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IExoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIFJocz09ZnVuZGFtZW50YWwgYW5kIExocz09cG9pbnRlciAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBMaHM9PXBvaW50ZXIgYW5kIFJocz09cG9pbnRlciAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBMaHM9PWZ1bmRhbWVudGFsIGFuZCBSaHM9PWZ1bmRhbWVudGFsIGFuZCBMaHM9PWNvbnN0ICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IExoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19jb25zdDwgTGhzX25vcmVmID46OnZhbHVlXAotICAgICAgPjo6dmFsdWVcCi0gICA+Ojp2YWx1ZQotCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaGFzX2JpbmFyeV9vcGVyYXRvci5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9OQU1FCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfT1AKLSN1bmRlZiBORE5CT09TVF9UVF9GT1JCSURERU5fSUYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19tdWx0aXBsaWVzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX211bHRpcGxpZXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNTNlZWFhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX211bHRpcGxpZXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgMjAwOS0yMDExIEZyZWRlcmljIEJyb24uCi0vLwotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9IQVNfTVVMVElQTElFU19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSEFTX01VTFRJUExJRVNfSFBQX0lOQ0xVREVECi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfTkFNRSBoYXNfbXVsdGlwbGllcwotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9PUCAqCi0jZGVmaW5lIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRlwKLSAgIC8qIHBvaW50ZXIgd2l0aCBwb2ludGVyIG9yIGZ1bmRhbWVudGFsICovXAotICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgUmhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlXAotICAgICAgICAgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgTGhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlXAotICAgICAgICAgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZVwKLSAgID46OnZhbHVlCi0KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9oYXNfYmluYXJ5X29wZXJhdG9yLmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUKLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9PUAotI3VuZGVmIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX211bHRpcGxpZXNfYXNzaWduLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX211bHRpcGxpZXNfYXNzaWduLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2U3MDg1MS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19tdWx0aXBsaWVzX2Fzc2lnbi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCAyMDA5LTIwMTEgRnJlZGVyaWMgQnJvbi4KLS8vCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0hBU19NVUxUSVBMSUVTX0FTU0lHTl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSEFTX01VTFRJUExJRVNfQVNTSUdOX0hQUF9JTkNMVURFRAotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUgaGFzX211bHRpcGxpZXNfYXNzaWduCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX09QICo9Ci0jZGVmaW5lIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRlwKLSAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgLyogTGhzPT1mdW5kYW1lbnRhbCBhbmQgTGhzPT1jb25zdCBhbmQgUmhzPT1mdW5kYW1lbnRhbCAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBMaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19jb25zdDwgTGhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIExocz09cG9pbnRlciBhbmQgKFJocz09ZnVuZGFtZW50YWwgb3IgUmhzPT1wb2ludGVyKSAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICAgICA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIFJocz09cG9pbnRlciBhbmQgKExocz09ZnVuZGFtZW50YWwgb3IgTGhzPT1wb2ludGVyKSAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBMaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICAgICA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlXAotICAgPjo6dmFsdWUKLQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2hhc19iaW5hcnlfb3BlcmF0b3IuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfTkFNRQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX09QCi0jdW5kZWYgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbmVnYXRlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX25lZ2F0ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJlZTNhODIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbmVnYXRlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IDIwMDktMjAxMSBGcmVkZXJpYyBCcm9uLgotLy8KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSEFTX05FR0FURV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSEFTX05FR0FURV9IUFBfSU5DTFVERUQKLQotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9OQU1FIGhhc19uZWdhdGUKLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfT1AgLQotI2RlZmluZSBORE5CT09TVF9UVF9GT1JCSURERU5fSUZcCi0gICAvKiBwb2ludGVyICovXAotICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlCi0KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9oYXNfcHJlZml4X29wZXJhdG9yLmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUKLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9PUAotI3VuZGVmIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX25ld19vcGVyYXRvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19uZXdfb3BlcmF0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOTljMWYyLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX25ld19vcGVyYXRvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDAgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBSdW5hciBVbmRoZWltLCBSb2JlcnQgUmFtZXkgJiBKb2huIE1hZGRvY2sgMjAwOC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSEFTX05FV19PUEVSQVRPUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSEFTX05FV19PUEVSQVRPUl9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5ldz4gLy8gc3RkOjpub3Rocm93X3QKLSNpbmNsdWRlIDxjc3RkZGVmPiAvLyBzdGQ6OnNpemVfdAotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3llc19ub190eXBlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX29yLmhwcD4KLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLW5hbWVzcGFjZSBkZXRhaWwgewotICAgIHRlbXBsYXRlIDxjbGFzcyBVLCBVIHg+IAotICAgIHN0cnVjdCB0ZXN0OwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgc3RydWN0IGhhc19uZXdfb3BlcmF0b3JfaW1wbCB7Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFU+Ci0gICAgICAgIHN0YXRpYyB0eXBlX3RyYWl0czo6eWVzX3R5cGUgY2hlY2tfc2lnMSgKLSAgICAgICAgICAgIFUqLCAKLSAgICAgICAgICAgIHRlc3Q8Ci0gICAgICAgICAgICB2b2lkICooKikoc3RkOjpzaXplX3QpLAotICAgICAgICAgICAgICAgICZVOjpvcGVyYXRvciBuZXcKLSAgICAgICAgICAgID4qID0gTlVMTAotICAgICAgICApOwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBVPgotICAgICAgICBzdGF0aWMgdHlwZV90cmFpdHM6Om5vX3R5cGUgY2hlY2tfc2lnMSguLi4pOwotCi0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFU+Ci0gICAgICAgIHN0YXRpYyB0eXBlX3RyYWl0czo6eWVzX3R5cGUgY2hlY2tfc2lnMigKLSAgICAgICAgICAgIFUqLCAKLSAgICAgICAgICAgIHRlc3Q8Ci0gICAgICAgICAgICB2b2lkICooKikoc3RkOjpzaXplX3QsIGNvbnN0IHN0ZDo6bm90aHJvd190JiksCi0gICAgICAgICAgICAgICAgJlU6Om9wZXJhdG9yIG5ldwotICAgICAgICAgICAgPiogPSBOVUxMCi0gICAgICAgICk7Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFU+Ci0gICAgICAgIHN0YXRpYyB0eXBlX3RyYWl0czo6bm9fdHlwZSBjaGVja19zaWcyKC4uLik7Ci0KLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVT4KLSAgICAgICAgc3RhdGljIHR5cGVfdHJhaXRzOjp5ZXNfdHlwZSBjaGVja19zaWczKAotICAgICAgICAgICAgVSosIAotICAgICAgICAgICAgdGVzdDwKLSAgICAgICAgICAgIHZvaWQgKigqKShzdGQ6OnNpemVfdCwgdm9pZCopLAotICAgICAgICAgICAgICAgICZVOjpvcGVyYXRvciBuZXcKLSAgICAgICAgICAgID4qID0gTlVMTAotICAgICAgICApOwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBVPgotICAgICAgICBzdGF0aWMgdHlwZV90cmFpdHM6Om5vX3R5cGUgY2hlY2tfc2lnMyguLi4pOwotCi0KLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVT4KLSAgICAgICAgc3RhdGljIHR5cGVfdHJhaXRzOjp5ZXNfdHlwZSBjaGVja19zaWc0KAotICAgICAgICAgICAgVSosIAotICAgICAgICAgICAgdGVzdDwKLSAgICAgICAgICAgIHZvaWQgKigqKShzdGQ6OnNpemVfdCksCi0gICAgICAgICAgICAgICAgJlU6Om9wZXJhdG9yIG5ld1tdCi0gICAgICAgICAgICA+KiA9IE5VTEwKLSAgICAgICAgKTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVT4KLSAgICAgICAgc3RhdGljIHR5cGVfdHJhaXRzOjpub190eXBlIGNoZWNrX3NpZzQoLi4uKTsKLQotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBVPgotICAgICAgICBzdGF0aWMgdHlwZV90cmFpdHM6Onllc190eXBlIGNoZWNrX3NpZzUoCi0gICAgICAgICAgICBVKiwgCi0gICAgICAgICAgICB0ZXN0PAotICAgICAgICAgICAgdm9pZCAqKCopKHN0ZDo6c2l6ZV90LCBjb25zdCBzdGQ6Om5vdGhyb3dfdCYpLAotICAgICAgICAgICAgICAgICZVOjpvcGVyYXRvciBuZXdbXQotICAgICAgICAgICAgPiogPSBOVUxMCi0gICAgICAgICk7Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFU+Ci0gICAgICAgIHN0YXRpYyB0eXBlX3RyYWl0czo6bm9fdHlwZSBjaGVja19zaWc1KC4uLik7Ci0KLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVT4KLSAgICAgICAgc3RhdGljIHR5cGVfdHJhaXRzOjp5ZXNfdHlwZSBjaGVja19zaWc2KAotICAgICAgICAgICAgVSosIAotICAgICAgICAgICAgdGVzdDwKLSAgICAgICAgICAgIHZvaWQgKigqKShzdGQ6OnNpemVfdCwgdm9pZCopLAotICAgICAgICAgICAgICAgICZVOjpvcGVyYXRvciBuZXdbXQotICAgICAgICAgICAgPiogPSBOVUxMCi0gICAgICAgICk7Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFU+Ci0gICAgICAgIHN0YXRpYyB0eXBlX3RyYWl0czo6bm9fdHlwZSBjaGVja19zaWc2KC4uLik7Ci0KLSAgICAgICAgLy8gR0NDMiB3b24ndCBldmVuIHBhcnNlIHRoaXMgdGVtcGxhdGUgaWYgd2UgZW1iZWQgdGhlIGNvbXB1dGF0aW9uCi0gICAgICAgIC8vIG9mIHMxIGluIHRoZSBjb21wdXRhdGlvbiBvZiB2YWx1ZS4KLSAgICAgICAgI2lmZGVmIF9fR05VQ19fCi0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQsIHMxID0gc2l6ZW9mKGhhc19uZXdfb3BlcmF0b3JfaW1wbDxUPjo6dGVtcGxhdGUgY2hlY2tfc2lnMTxUPigwKSkpOwotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLCBzMiA9IHNpemVvZihoYXNfbmV3X29wZXJhdG9yX2ltcGw8VD46OnRlbXBsYXRlIGNoZWNrX3NpZzI8VD4oMCkpKTsKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCwgczMgPSBzaXplb2YoaGFzX25ld19vcGVyYXRvcl9pbXBsPFQ+Ojp0ZW1wbGF0ZSBjaGVja19zaWczPFQ+KDApKSk7Ci0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQsIHM0ID0gc2l6ZW9mKGhhc19uZXdfb3BlcmF0b3JfaW1wbDxUPjo6dGVtcGxhdGUgY2hlY2tfc2lnNDxUPigwKSkpOwotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLCBzNSA9IHNpemVvZihoYXNfbmV3X29wZXJhdG9yX2ltcGw8VD46OnRlbXBsYXRlIGNoZWNrX3NpZzU8VD4oMCkpKTsKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCwgczYgPSBzaXplb2YoaGFzX25ld19vcGVyYXRvcl9pbXBsPFQ+Ojp0ZW1wbGF0ZSBjaGVja19zaWc2PFQ+KDApKSk7Ci0gICAgICAgICNlbHNlCi0gICAgICAgICAgICAjaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDX0ZVTExfVkVSLCA+PSAxNDAwNTAwMDApCi0gICAgICAgICAgICAgICAgI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0gICAgICAgICAgICAgICAgI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NjMzNCkKLSAgICAgICAgICAgICNlbmRpZgotCi0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQsIHMxID0gc2l6ZW9mKGNoZWNrX3NpZzE8VD4oMCkpKTsKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCwgczIgPSBzaXplb2YoY2hlY2tfc2lnMjxUPigwKSkpOwotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLCBzMyA9IHNpemVvZihjaGVja19zaWczPFQ+KDApKSk7Ci0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQsIHM0ID0gc2l6ZW9mKGNoZWNrX3NpZzQ8VD4oMCkpKTsKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCwgczUgPSBzaXplb2YoY2hlY2tfc2lnNTxUPigwKSkpOwotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLCBzNiA9IHNpemVvZihjaGVja19zaWc2PFQ+KDApKSk7Ci0KLSAgICAgICAgICAgICNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkNfRlVMTF9WRVIsID49IDE0MDA1MDAwMCkKLSAgICAgICAgICAgICAgICAjcHJhZ21hIHdhcm5pbmcocG9wKQotICAgICAgICAgICAgI2VuZGlmCi0gICAgICAgICNlbmRpZgotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSAKLSAgICAgICAgICAgKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8Ci0gICAgICAgICAgICAoczEgPT0gc2l6ZW9mKHR5cGVfdHJhaXRzOjp5ZXNfdHlwZSkpLAotICAgICAgICAgICAgKHMyID09IHNpemVvZih0eXBlX3RyYWl0czo6eWVzX3R5cGUpKSwKLSAgICAgICAgICAgIChzMyA9PSBzaXplb2YodHlwZV90cmFpdHM6Onllc190eXBlKSksCi0gICAgICAgICAgICAoczQgPT0gc2l6ZW9mKHR5cGVfdHJhaXRzOjp5ZXNfdHlwZSkpLAotICAgICAgICAgICAgKHM1ID09IHNpemVvZih0eXBlX3RyYWl0czo6eWVzX3R5cGUpKSwKLSAgICAgICAgICAgIChzNiA9PSBzaXplb2YodHlwZV90cmFpdHM6Onllc190eXBlKSkKLSAgICAgICAgICAgPjo6dmFsdWUpCi0gICAgICAgICk7Ci0gICAgfTsKLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGhhc19uZXdfb3BlcmF0b3IsVCw6Om5kbmJvb3N0OjpkZXRhaWw6Omhhc19uZXdfb3BlcmF0b3JfaW1wbDxUPjo6dmFsdWUpCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9IQVNfTkVXX09QRVJBVE9SX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbm90X2VxdWFsX3RvLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX25vdF9lcXVhbF90by5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhhNWYyYzYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbm90X2VxdWFsX3RvLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IDIwMDktMjAxMSBGcmVkZXJpYyBCcm9uLgotLy8KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSEFTX05PVF9FUVVBTF9UT19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSEFTX05PVF9FUVVBTF9UT19IUFBfSU5DTFVERUQKLQotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9OQU1FIGhhc19ub3RfZXF1YWxfdG8KLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfT1AgIT0KLSNkZWZpbmUgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGXAotICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAvKiBMaHM9PXBvaW50ZXIgYW5kIFJocz09ZnVuZGFtZW50YWwgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IFJoc19ub2N2ID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogUmhzPT1wb2ludGVyIGFuZCBMaHM9PWZ1bmRhbWVudGFsICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBMaHNfbm9jdiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIExocz09cG9pbnRlciBhbmQgUmhzPT1wb2ludGVyIGFuZCBMaHMhPWJhc2UoUmhzKSBhbmQgUmhzIT1iYXNlKExocykgYW5kIExocyE9dm9pZCogYW5kIFJocyE9dm9pZCogKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfYmFzZV9vZjwgTGhzX25vcHRyLCBSaHNfbm9wdHIgPjo6dmFsdWUsXAotICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfYmFzZV9vZjwgUmhzX25vcHRyLCBMaHNfbm9wdHIgPjo6dmFsdWUsXAotICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfc2FtZTwgTGhzX25vcHRyLCBSaHNfbm9wdHIgPjo6dmFsdWUsXAotICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfdm9pZDwgTGhzX25vcHRyID46OnZhbHVlLFwKLSAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3ZvaWQ8IFJoc19ub3B0ciA+Ojp2YWx1ZVwKLSAgICAgICAgICAgID46OnZhbHVlXAotICAgICAgICAgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZVwKLSAgID46OnZhbHVlCi0KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9oYXNfYmluYXJ5X29wZXJhdG9yLmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUKLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9PUAotI3VuZGVmIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX25vdGhyb3dfYXNzaWduLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX25vdGhyb3dfYXNzaWduLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmU0ZWUyMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19ub3Rocm93X2Fzc2lnbi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIEhvd2FyZCBIaW5uYW50ICYgSm9obiBNYWRkb2NrIDIwMDAuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0hBU19OT1RIUk9XX0FTU0lHTl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSEFTX05PVEhST1dfQVNTSUdOX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3RyaXZpYWxfYXNzaWduLmhwcD4KLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIGRldGFpbHsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgaGFzX25vdGhyb3dfYXNzaWduX2ltcHsKLSNpZm5kZWYgTkROQk9PU1RfSEFTX05PVEhST1dfQVNTSUdOCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSA6Om5kbmJvb3N0OjpoYXNfdHJpdmlhbF9hc3NpZ248VD46OnZhbHVlKTsKLSNlbHNlCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBORE5CT09TVF9IQVNfTk9USFJPV19BU1NJR04oVCkpOwotI2VuZGlmCi19OwotCi19Ci0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaGFzX25vdGhyb3dfYXNzaWduLFQsOjpuZG5ib29zdDo6ZGV0YWlsOjpoYXNfbm90aHJvd19hc3NpZ25faW1wPFQ+Ojp2YWx1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGhhc19ub3Rocm93X2Fzc2lnbix2b2lkLGZhbHNlKQotI2lmbmRlZiBORE5CT09TVF9OT19DVl9WT0lEX1NQRUNJQUxJWkFUSU9OUwotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEoaGFzX25vdGhyb3dfYXNzaWduLHZvaWQgY29uc3QsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMShoYXNfbm90aHJvd19hc3NpZ24sdm9pZCBjb25zdCB2b2xhdGlsZSxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGhhc19ub3Rocm93X2Fzc2lnbix2b2lkIHZvbGF0aWxlLGZhbHNlKQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9IQVNfTk9USFJPV19BU1NJR05fSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19ub3Rocm93X2NvbnN0cnVjdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX25vdGhyb3dfY29uc3RydWN0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOGJhZjFkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX25vdGhyb3dfY29uc3RydWN0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCBIb3dhcmQgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9IQVNfTk9USFJPV19DT05TVFJVQ1RPUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSEFTX05PVEhST1dfQ09OU1RSVUNUT1JfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfdHJpdmlhbF9jb25zdHJ1Y3Rvci5ocHA+Ci0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBkZXRhaWx7Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGhhc19ub3Rocm93X2NvbnN0cnVjdG9yX2ltcHsKLSNpZmRlZiBORE5CT09TVF9IQVNfTk9USFJPV19DT05TVFJVQ1RPUgotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gTkROQk9PU1RfSEFTX05PVEhST1dfQ09OU1RSVUNUT1IoVCkpOwotI2Vsc2UKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IDo6bmRuYm9vc3Q6Omhhc190cml2aWFsX2NvbnN0cnVjdG9yPFQ+Ojp2YWx1ZSk7Ci0jZW5kaWYKLX07Ci0KLX0KLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShoYXNfbm90aHJvd19jb25zdHJ1Y3RvcixULDo6bmRuYm9vc3Q6OmRldGFpbDo6aGFzX25vdGhyb3dfY29uc3RydWN0b3JfaW1wPFQ+Ojp2YWx1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaGFzX25vdGhyb3dfZGVmYXVsdF9jb25zdHJ1Y3RvcixULDo6bmRuYm9vc3Q6OmRldGFpbDo6aGFzX25vdGhyb3dfY29uc3RydWN0b3JfaW1wPFQ+Ojp2YWx1ZSkKLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEoaGFzX25vdGhyb3dfY29uc3RydWN0b3Isdm9pZCxmYWxzZSkKLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1ZfVk9JRF9TUEVDSUFMSVpBVElPTlMKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGhhc19ub3Rocm93X2NvbnN0cnVjdG9yLHZvaWQgY29uc3QsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMShoYXNfbm90aHJvd19jb25zdHJ1Y3Rvcix2b2lkIGNvbnN0IHZvbGF0aWxlLGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEoaGFzX25vdGhyb3dfY29uc3RydWN0b3Isdm9pZCB2b2xhdGlsZSxmYWxzZSkKLSNlbmRpZgotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMShoYXNfbm90aHJvd19kZWZhdWx0X2NvbnN0cnVjdG9yLHZvaWQsZmFsc2UpCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NWX1ZPSURfU1BFQ0lBTElaQVRJT05TCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMShoYXNfbm90aHJvd19kZWZhdWx0X2NvbnN0cnVjdG9yLHZvaWQgY29uc3QsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMShoYXNfbm90aHJvd19kZWZhdWx0X2NvbnN0cnVjdG9yLHZvaWQgY29uc3Qgdm9sYXRpbGUsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMShoYXNfbm90aHJvd19kZWZhdWx0X2NvbnN0cnVjdG9yLHZvaWQgdm9sYXRpbGUsZmFsc2UpCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0hBU19OT1RIUk9XX0NPTlNUUlVDVE9SX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbm90aHJvd19jb3B5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX25vdGhyb3dfY29weS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEzNTljYTMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbm90aHJvd19jb3B5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgSG93YXJkIEhpbm5hbnQgJiBKb2huIE1hZGRvY2sgMjAwMC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSEFTX05PVEhST1dfQ09QWV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSEFTX05PVEhST1dfQ09QWV9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc190cml2aWFsX2NvcHkuaHBwPgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgZGV0YWlsewotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBoYXNfbm90aHJvd19jb3B5X2ltcHsKLSNpZmRlZiBORE5CT09TVF9IQVNfTk9USFJPV19DT1BZCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBORE5CT09TVF9IQVNfTk9USFJPV19DT1BZKFQpKTsKLSNlbHNlCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSA6Om5kbmJvb3N0OjpoYXNfdHJpdmlhbF9jb3B5PFQ+Ojp2YWx1ZSk7Ci0jZW5kaWYKLX07Ci0KLX0KLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShoYXNfbm90aHJvd19jb3B5LFQsOjpuZG5ib29zdDo6ZGV0YWlsOjpoYXNfbm90aHJvd19jb3B5X2ltcDxUPjo6dmFsdWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGhhc19ub3Rocm93X2NvcHlfY29uc3RydWN0b3IsVCw6Om5kbmJvb3N0OjpkZXRhaWw6Omhhc19ub3Rocm93X2NvcHlfaW1wPFQ+Ojp2YWx1ZSkKLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEoaGFzX25vdGhyb3dfY29weSx2b2lkLGZhbHNlKQotI2lmbmRlZiBORE5CT09TVF9OT19DVl9WT0lEX1NQRUNJQUxJWkFUSU9OUwotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEoaGFzX25vdGhyb3dfY29weSx2b2lkIGNvbnN0LGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEoaGFzX25vdGhyb3dfY29weSx2b2lkIGNvbnN0IHZvbGF0aWxlLGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEoaGFzX25vdGhyb3dfY29weSx2b2lkIHZvbGF0aWxlLGZhbHNlKQotI2VuZGlmCi0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGhhc19ub3Rocm93X2NvcHlfY29uc3RydWN0b3Isdm9pZCxmYWxzZSkKLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1ZfVk9JRF9TUEVDSUFMSVpBVElPTlMKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGhhc19ub3Rocm93X2NvcHlfY29uc3RydWN0b3Isdm9pZCBjb25zdCxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGhhc19ub3Rocm93X2NvcHlfY29uc3RydWN0b3Isdm9pZCBjb25zdCB2b2xhdGlsZSxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGhhc19ub3Rocm93X2NvcHlfY29uc3RydWN0b3Isdm9pZCB2b2xhdGlsZSxmYWxzZSkKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfSEFTX05PVEhST1dfQ09QWV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX25vdGhyb3dfZGVzdHJ1Y3Rvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19ub3Rocm93X2Rlc3RydWN0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYzExY2FiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX25vdGhyb3dfZGVzdHJ1Y3Rvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIEhvd2FyZCBIaW5uYW50ICYgSm9obiBNYWRkb2NrIDIwMDAuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0hBU19OT1RIUk9XX0RFU1RSVUNUT1JfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0hBU19OT1RIUk9XX0RFU1RSVUNUT1JfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfdHJpdmlhbF9kZXN0cnVjdG9yLmhwcD4KLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShoYXNfbm90aHJvd19kZXN0cnVjdG9yLFQsOjpuZG5ib29zdDo6aGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcjxUPjo6dmFsdWUpCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9IQVNfTk9USFJPV19ERVNUUlVDVE9SX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfb3BlcmF0b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfb3BlcmF0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNjNkODdhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX29wZXJhdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IDIwMDktMjAxMSBGcmVkZXJpYyBCcm9uLgotLy8KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSEFTX09QRVJBVE9SX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9IQVNfT1BFUkFUT1JfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfYml0X2FuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2JpdF9hbmRfYXNzaWduLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfYml0X29yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfYml0X29yX2Fzc2lnbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2JpdF94b3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19iaXRfeG9yX2Fzc2lnbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2NvbXBsZW1lbnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19kZXJlZmVyZW5jZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2RpdmlkZXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19kaXZpZGVzX2Fzc2lnbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2VxdWFsX3RvLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfZ3JlYXRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2dyZWF0ZXJfZXF1YWwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19sZWZ0X3NoaWZ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbGVmdF9zaGlmdF9hc3NpZ24uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19sZXNzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbGVzc19lcXVhbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX2xvZ2ljYWxfYW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbG9naWNhbF9ub3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19sb2dpY2FsX29yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbWludXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19taW51c19hc3NpZ24uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19tb2R1bHVzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbW9kdWx1c19hc3NpZ24uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19tdWx0aXBsaWVzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbXVsdGlwbGllc19hc3NpZ24uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19uZWdhdGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19ub3RfZXF1YWxfdG8uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19wbHVzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfcGx1c19hc3NpZ24uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19wb3N0X2RlY3JlbWVudC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3Bvc3RfaW5jcmVtZW50LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfcHJlX2RlY3JlbWVudC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3ByZV9pbmNyZW1lbnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19yaWdodF9zaGlmdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3JpZ2h0X3NoaWZ0X2Fzc2lnbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3VuYXJ5X21pbnVzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfdW5hcnlfcGx1cy5ocHA+Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfcGx1cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19wbHVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTJlODE1MC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19wbHVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IDIwMDktMjAxMSBGcmVkZXJpYyBCcm9uLgotLy8KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSEFTX1BMVVNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0hBU19QTFVTX0hQUF9JTkNMVURFRAotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUgaGFzX3BsdXMKLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfT1AgKwotI2RlZmluZSBORE5CT09TVF9UVF9GT1JCSURERU5fSUZcCi0gICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgIC8qIExocz09cG9pbnRlciBhbmQgUmhzPT1wb2ludGVyICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIExocz09dm9pZCogYW5kIFJocz09ZnVuZGFtZW50YWwgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfdm9pZDwgTGhzX25vcHRyID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIFJocz09dm9pZCogYW5kIExocz09ZnVuZGFtZW50YWwgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfdm9pZDwgUmhzX25vcHRyID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBMaHNfbm9jdiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIExocz09cG9pbnRlciBhbmQgUmhzPT1mdW5kYW1lbnRhbCBhbmQgUmhzIT1pbnRlZ3JhbCAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgUmhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX2ludGVncmFsPCBSaHNfbm9yZWYgPjo6dmFsdWUgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBSaHM9PXBvaW50ZXIgYW5kIExocz09ZnVuZGFtZW50YWwgYW5kIExocyE9aW50ZWdyYWwgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IExoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19pbnRlZ3JhbDwgTGhzX25vcmVmID46OnZhbHVlID46OnZhbHVlXAotICAgICAgPjo6dmFsdWVcCi0gICA+Ojp2YWx1ZQotCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaGFzX2JpbmFyeV9vcGVyYXRvci5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9OQU1FCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfT1AKLSN1bmRlZiBORE5CT09TVF9UVF9GT1JCSURERU5fSUYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19wbHVzX2Fzc2lnbi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19wbHVzX2Fzc2lnbi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFkYWEyOGUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfcGx1c19hc3NpZ24uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgMjAwOS0yMDExIEZyZWRlcmljIEJyb24uCi0vLwotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9IQVNfUExVU19BU1NJR05fSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0hBU19QTFVTX0FTU0lHTl9IUFBfSU5DTFVERUQKLQotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9OQU1FIGhhc19wbHVzX2Fzc2lnbgotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9PUCArPQotI2RlZmluZSBORE5CT09TVF9UVF9GT1JCSURERU5fSUZcCi0gICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgIC8qIExocz09cG9pbnRlciBhbmQgUmhzPT1wb2ludGVyICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIExocz09dm9pZCogYW5kIFJocz09ZnVuZGFtZW50YWwgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfdm9pZDwgTGhzX25vcHRyID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIFJocz09dm9pZCogYW5kIExocz09ZnVuZGFtZW50YWwgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfdm9pZDwgUmhzX25vcHRyID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBMaHNfbm9jdiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIExocz09cG9pbnRlciBhbmQgUmhzPT1mdW5kYW1lbnRhbCBhbmQgUmhzIT1pbnRlZ3JhbCAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgUmhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX2ludGVncmFsPCBSaHNfbm9yZWYgPjo6dmFsdWUgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBSaHM9PXBvaW50ZXIgYW5kIExocz09ZnVuZGFtZW50YWwgYW5kIExocyE9Ym9vbCAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgTGhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX3NhbWU8IExoc19ub2N2LCBib29sID46OnZhbHVlID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogKExocz09ZnVuZGFtZW50YWwgb3IgTGhzPT1wb2ludGVyKSBhbmQgKFJocz09ZnVuZGFtZW50YWwgb3IgUmhzPT1wb2ludGVyKSBhbmQgKExocz09Y29uc3QpICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgTGhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlXAotICAgICAgICAgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgUmhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlXAotICAgICAgICAgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfY29uc3Q8IExoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlXAotICAgPjo6dmFsdWUKLQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2hhc19iaW5hcnlfb3BlcmF0b3IuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfTkFNRQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX09QCi0jdW5kZWYgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfcG9zdF9kZWNyZW1lbnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfcG9zdF9kZWNyZW1lbnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZmQ3NzcxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3Bvc3RfZGVjcmVtZW50LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IDIwMDktMjAxMSBGcmVkZXJpYyBCcm9uLgotLy8KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSEFTX1BPU1RfREVDUkVNRU5UX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9IQVNfUE9TVF9ERUNSRU1FTlRfSFBQX0lOQ0xVREVECi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfTkFNRSBoYXNfcG9zdF9kZWNyZW1lbnQKLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfT1AgLS0KLSNkZWZpbmUgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGXAotICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAvKiBib29sICovXAotICAgICAgOjpuZG5ib29zdDo6aXNfc2FtZTwgYm9vbCwgTGhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgLyogdm9pZCogKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfdm9pZDwgTGhzX25vcHRyID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogKGZ1bmRhbWVudGFsIG9yIHBvaW50ZXIpIGFuZCBjb25zdCAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IExoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgICAgID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2NvbnN0PCBMaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZVwKLSAgID46OnZhbHVlCi0KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9oYXNfcG9zdGZpeF9vcGVyYXRvci5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9OQU1FCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfT1AKLSN1bmRlZiBORE5CT09TVF9UVF9GT1JCSURERU5fSUYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19wb3N0X2luY3JlbWVudC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19wb3N0X2luY3JlbWVudC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNkOTI5YWMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfcG9zdF9pbmNyZW1lbnQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgMjAwOS0yMDExIEZyZWRlcmljIEJyb24uCi0vLwotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9IQVNfUE9TVF9JTkNSRU1FTlRfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0hBU19QT1NUX0lOQ1JFTUVOVF9IUFBfSU5DTFVERUQKLQotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9OQU1FIGhhc19wb3N0X2luY3JlbWVudAotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9PUCArKwotI2RlZmluZSBORE5CT09TVF9UVF9GT1JCSURERU5fSUZcCi0gICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgIC8qIGJvb2wgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojppc19zYW1lPCBib29sLCBMaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAvKiB2b2lkKiAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc192b2lkPCBMaHNfbm9wdHIgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiAoZnVuZGFtZW50YWwgb3IgcG9pbnRlcikgYW5kIGNvbnN0ICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgTGhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlXAotICAgICAgICAgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfY29uc3Q8IExoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlXAotICAgPjo6dmFsdWUKLQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2hhc19wb3N0Zml4X29wZXJhdG9yLmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUKLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9PUAotI3VuZGVmIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3ByZV9kZWNyZW1lbnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfcHJlX2RlY3JlbWVudC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDExNjIzOGUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfcHJlX2RlY3JlbWVudC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCAyMDA5LTIwMTEgRnJlZGVyaWMgQnJvbi4KLS8vCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0hBU19QUkVfREVDUkVNRU5UX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9IQVNfUFJFX0RFQ1JFTUVOVF9IUFBfSU5DTFVERUQKLQotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9OQU1FIGhhc19wcmVfZGVjcmVtZW50Ci0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX09QIC0tCi0jZGVmaW5lIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRlwKLSAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8XAotICAgICAgLyogYm9vbCAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OmlzX3NhbWU8IGJvb2wsIFJoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgIC8qIHZvaWQqICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3ZvaWQ8IFJoc19ub3B0ciA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIChmdW5kYW1lbnRhbCBvciBwb2ludGVyKSBhbmQgY29uc3QgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICAgICA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19jb25zdDwgUmhzX25vcmVmID46OnZhbHVlXAotICAgICAgPjo6dmFsdWVcCi0gICA+Ojp2YWx1ZQotCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaGFzX3ByZWZpeF9vcGVyYXRvci5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9OQU1FCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfT1AKLSN1bmRlZiBORE5CT09TVF9UVF9GT1JCSURERU5fSUYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19wcmVfaW5jcmVtZW50LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3ByZV9pbmNyZW1lbnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNDBjMTNhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3ByZV9pbmNyZW1lbnQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgMjAwOS0yMDExIEZyZWRlcmljIEJyb24uCi0vLwotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9IQVNfUFJFX0lOQ1JFTUVOVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSEFTX1BSRV9JTkNSRU1FTlRfSFBQX0lOQ0xVREVECi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfTkFNRSBoYXNfcHJlX2luY3JlbWVudAotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9PUCArKwotI2RlZmluZSBORE5CT09TVF9UVF9GT1JCSURERU5fSUZcCi0gICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgIC8qIGJvb2wgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojppc19zYW1lPCBib29sLCBSaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAvKiB2b2lkKiAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc192b2lkPCBSaHNfbm9wdHIgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiAoZnVuZGFtZW50YWwgb3IgcG9pbnRlcikgYW5kIGNvbnN0ICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgUmhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlXAotICAgICAgICAgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfY29uc3Q8IFJoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlXAotICAgPjo6dmFsdWUKLQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2hhc19wcmVmaXhfb3BlcmF0b3IuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfTkFNRQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX09QCi0jdW5kZWYgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfcmlnaHRfc2hpZnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfcmlnaHRfc2hpZnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YTA1YjdkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3JpZ2h0X3NoaWZ0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IDIwMDktMjAxMSBGcmVkZXJpYyBCcm9uLgotLy8KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSEFTX1JJR0hUX1NISUZUX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9IQVNfUklHSFRfU0hJRlRfSFBQX0lOQ0xVREVECi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfTkFNRSBoYXNfcmlnaHRfc2hpZnQKLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfT1AgPj4KLSNkZWZpbmUgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGXAotICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAvKiBMaHM9PWZ1bmRhbWVudGFsIGFuZCBSaHM9PWZ1bmRhbWVudGFsIGFuZCAoTGhzIT1pbnRlZ3JhbCBvciBSaHMhPWludGVncmFsKSAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBMaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgUmhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfaW50ZWdyYWw8IExoc19ub3JlZiA+Ojp2YWx1ZSA+Ojp2YWx1ZSxcCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfaW50ZWdyYWw8IFJoc19ub3JlZiA+Ojp2YWx1ZSA+Ojp2YWx1ZVwKLSAgICAgICAgID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogTGhzPT1mdW5kYW1lbnRhbCBhbmQgUmhzPT1wb2ludGVyICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IExoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIFJocz09ZnVuZGFtZW50YWwgYW5kIExocz09cG9pbnRlciAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBMaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBMaHM9PXBvaW50ZXIgYW5kIFJocz09cG9pbnRlciAqL1wKLSAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZVwKLSAgID46OnZhbHVlCi0KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9oYXNfYmluYXJ5X29wZXJhdG9yLmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUKLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9PUAotI3VuZGVmIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3JpZ2h0X3NoaWZ0X2Fzc2lnbi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19yaWdodF9zaGlmdF9hc3NpZ24uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NWU4YzI0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3JpZ2h0X3NoaWZ0X2Fzc2lnbi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCAyMDA5LTIwMTEgRnJlZGVyaWMgQnJvbi4KLS8vCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0hBU19SSUdIVF9TSElGVF9BU1NJR05fSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0hBU19SSUdIVF9TSElGVF9BU1NJR05fSFBQX0lOQ0xVREVECi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfTkFNRSBoYXNfcmlnaHRfc2hpZnRfYXNzaWduCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX09QID4+PQotI2RlZmluZSBORE5CT09TVF9UVF9GT1JCSURERU5fSUZcCi0gICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgIC8qIExocz09ZnVuZGFtZW50YWwgYW5kIFJocz09ZnVuZGFtZW50YWwgYW5kIChMaHMhPWludGVncmFsIG9yIFJocyE9aW50ZWdyYWwpICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IExoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPCBSaHNfbm9jdiA+Ojp2YWx1ZSxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19pbnRlZ3JhbDwgTGhzX25vcmVmID46OnZhbHVlID46OnZhbHVlLFwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19pbnRlZ3JhbDwgUmhzX25vcmVmID46OnZhbHVlID46OnZhbHVlXAotICAgICAgICAgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZSxcCi0gICAgICAvKiBMaHM9PWZ1bmRhbWVudGFsIGFuZCBSaHM9PXBvaW50ZXIgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgTGhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgUmhzX25vcmVmID46OnZhbHVlXAotICAgICAgPjo6dmFsdWUsXAotICAgICAgLyogUmhzPT1mdW5kYW1lbnRhbCBhbmQgTGhzPT1wb2ludGVyICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IFJoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IExoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIExocz09cG9pbnRlciBhbmQgUmhzPT1wb2ludGVyICovXAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8XAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjwgTGhzX25vcmVmID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvaW50ZXI8IFJoc19ub3JlZiA+Ojp2YWx1ZVwKLSAgICAgID46OnZhbHVlLFwKLSAgICAgIC8qIExocz09ZnVuZGFtZW50YWwgYW5kIFJocz09ZnVuZGFtZW50YWwgYW5kIExocz09Y29uc3QgKi9cCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDxcCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19mdW5kYW1lbnRhbDwgTGhzX25vY3YgPjo6dmFsdWUsXAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuZGFtZW50YWw8IFJoc19ub2N2ID46OnZhbHVlLFwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2NvbnN0PCBMaHNfbm9yZWYgPjo6dmFsdWVcCi0gICAgICA+Ojp2YWx1ZVwKLSAgID46OnZhbHVlCi0KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9oYXNfYmluYXJ5X29wZXJhdG9yLmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUKLSN1bmRlZiBORE5CT09TVF9UVF9UUkFJVF9PUAotI3VuZGVmIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3RyaXZpYWxfYXNzaWduLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3RyaXZpYWxfYXNzaWduLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmQ4YTJmOC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc190cml2aWFsX2Fzc2lnbi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIEhvd2FyZCBIaW5uYW50ICYgSm9obiBNYWRkb2NrIDIwMDAuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0hBU19UUklWSUFMX0FTU0lHTl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSEFTX1RSSVZJQUxfQVNTSUdOX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pbnRyaW5zaWNzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19wb2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnN0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc192b2xhdGlsZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9hbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2Vfb3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2Vfbm90LmhwcD4KLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGhhc190cml2aWFsX2Fzc2lnbl9pbXBsCi17Ci0jaWZkZWYgTkROQk9PU1RfSEFTX1RSSVZJQUxfQVNTSUdOCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBORE5CT09TVF9IQVNfVFJJVklBTF9BU1NJR04oVCkpOwotI2Vsc2UKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9Ci0gICAgICAoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8Ci0gICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvZDxUPjo6dmFsdWUsCi0gICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19jb25zdDxUPjo6dmFsdWUgPjo6dmFsdWUsCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfdm9sYXRpbGU8VD46OnZhbHVlID46OnZhbHVlCi0gICAgICA+Ojp2YWx1ZSkpOwotI2VuZGlmCi19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShoYXNfdHJpdmlhbF9hc3NpZ24sVCw6Om5kbmJvb3N0OjpkZXRhaWw6Omhhc190cml2aWFsX2Fzc2lnbl9pbXBsPFQ+Ojp2YWx1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGhhc190cml2aWFsX2Fzc2lnbix2b2lkLGZhbHNlKQotI2lmbmRlZiBORE5CT09TVF9OT19DVl9WT0lEX1NQRUNJQUxJWkFUSU9OUwotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEoaGFzX3RyaXZpYWxfYXNzaWduLHZvaWQgY29uc3QsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMShoYXNfdHJpdmlhbF9hc3NpZ24sdm9pZCBjb25zdCB2b2xhdGlsZSxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGhhc190cml2aWFsX2Fzc2lnbix2b2lkIHZvbGF0aWxlLGZhbHNlKQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9IQVNfVFJJVklBTF9BU1NJR05fSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc190cml2aWFsX2NvbnN0cnVjdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3RyaXZpYWxfY29uc3RydWN0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMDI1YmQxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3RyaXZpYWxfY29uc3RydWN0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCBIb3dhcmQgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9IQVNfVFJJVklBTF9DT05TVFJVQ1RPUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSEFTX1RSSVZJQUxfQ09OU1RSVUNUT1JfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2ludHJpbnNpY3MuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3BvZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9vci5ocHA+Ci0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBoYXNfdHJpdmlhbF9jdG9yX2ltcGwKLXsKLSNpZmRlZiBORE5CT09TVF9IQVNfVFJJVklBTF9DT05TVFJVQ1RPUgotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICg6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9kPFQ+Ojp2YWx1ZSwKLSAgICAgICAgIE5ETkJPT1NUX0hBU19UUklWSUFMX0NPTlNUUlVDVE9SKFQpCi0gICAgICA+Ojp2YWx1ZSkpOwotI2Vsc2UKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9Ci0gICAgICAoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvZDxUPjo6dmFsdWUsCi0gICAgICAgICBmYWxzZQotICAgICAgPjo6dmFsdWUpKTsKLSNlbmRpZgotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaGFzX3RyaXZpYWxfY29uc3RydWN0b3IsVCw6Om5kbmJvb3N0OjpkZXRhaWw6Omhhc190cml2aWFsX2N0b3JfaW1wbDxUPjo6dmFsdWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGhhc190cml2aWFsX2RlZmF1bHRfY29uc3RydWN0b3IsVCw6Om5kbmJvb3N0OjpkZXRhaWw6Omhhc190cml2aWFsX2N0b3JfaW1wbDxUPjo6dmFsdWUpCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9IQVNfVFJJVklBTF9DT05TVFJVQ1RPUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3RyaXZpYWxfY29weS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc190cml2aWFsX2NvcHkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYjllODg3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3RyaXZpYWxfY29weS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIEhvd2FyZCBIaW5uYW50ICYgSm9obiBNYWRkb2NrIDIwMDAuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0hBU19UUklWSUFMX0NPUFlfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0hBU19UUklWSUFMX0NPUFlfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2ludHJpbnNpY3MuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3ZvbGF0aWxlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19wb2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2VfYW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX29yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX25vdC5ocHA+Ci0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBoYXNfdHJpdmlhbF9jb3B5X2ltcGwKLXsKLSNpZmRlZiBORE5CT09TVF9IQVNfVFJJVklBTF9DT1BZCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBORE5CT09TVF9IQVNfVFJJVklBTF9DT1BZKFQpKTsKLSNlbHNlCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPQotICAgICAgKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfcG9kPFQ+Ojp2YWx1ZSwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc192b2xhdGlsZTxUPjo6dmFsdWUgPjo6dmFsdWUKLSAgICAgID46OnZhbHVlKSk7Ci0jZW5kaWYKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGhhc190cml2aWFsX2NvcHksVCw6Om5kbmJvb3N0OjpkZXRhaWw6Omhhc190cml2aWFsX2NvcHlfaW1wbDxUPjo6dmFsdWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGhhc190cml2aWFsX2NvcHlfY29uc3RydWN0b3IsVCw6Om5kbmJvb3N0OjpkZXRhaWw6Omhhc190cml2aWFsX2NvcHlfaW1wbDxUPjo6dmFsdWUpCi0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGhhc190cml2aWFsX2NvcHksdm9pZCxmYWxzZSkKLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1ZfVk9JRF9TUEVDSUFMSVpBVElPTlMKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGhhc190cml2aWFsX2NvcHksdm9pZCBjb25zdCxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGhhc190cml2aWFsX2NvcHksdm9pZCBjb25zdCB2b2xhdGlsZSxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGhhc190cml2aWFsX2NvcHksdm9pZCB2b2xhdGlsZSxmYWxzZSkKLSNlbmRpZgotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMShoYXNfdHJpdmlhbF9jb3B5X2NvbnN0cnVjdG9yLHZvaWQsZmFsc2UpCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NWX1ZPSURfU1BFQ0lBTElaQVRJT05TCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMShoYXNfdHJpdmlhbF9jb3B5X2NvbnN0cnVjdG9yLHZvaWQgY29uc3QsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMShoYXNfdHJpdmlhbF9jb3B5X2NvbnN0cnVjdG9yLHZvaWQgY29uc3Qgdm9sYXRpbGUsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMShoYXNfdHJpdmlhbF9jb3B5X2NvbnN0cnVjdG9yLHZvaWQgdm9sYXRpbGUsZmFsc2UpCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0hBU19UUklWSUFMX0NPUFlfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc190cml2aWFsX2Rlc3RydWN0b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfdHJpdmlhbF9kZXN0cnVjdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWI4M2FmOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc190cml2aWFsX2Rlc3RydWN0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCBIb3dhcmQgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pbnRyaW5zaWNzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19wb2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2Vfb3IuaHBwPgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaGFzX3RyaXZpYWxfZHRvcl9pbXBsCi17Ci0jaWZkZWYgTkROQk9PU1RfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUgotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gTkROQk9PU1RfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihUKSk7Ci0jZWxzZQotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gOjpuZG5ib29zdDo6aXNfcG9kPFQ+Ojp2YWx1ZSk7Ci0jZW5kaWYKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGhhc190cml2aWFsX2Rlc3RydWN0b3IsVCw6Om5kbmJvb3N0OjpkZXRhaWw6Omhhc190cml2aWFsX2R0b3JfaW1wbDxUPjo6dmFsdWUpCi0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGhhc190cml2aWFsX2Rlc3RydWN0b3Isdm9pZCxmYWxzZSkKLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1ZfVk9JRF9TUEVDSUFMSVpBVElPTlMKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGhhc190cml2aWFsX2Rlc3RydWN0b3Isdm9pZCBjb25zdCxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGhhc190cml2aWFsX2Rlc3RydWN0b3Isdm9pZCBjb25zdCB2b2xhdGlsZSxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGhhc190cml2aWFsX2Rlc3RydWN0b3Isdm9pZCB2b2xhdGlsZSxmYWxzZSkKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3RyaXZpYWxfbW92ZV9hc3NpZ24uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfdHJpdmlhbF9tb3ZlX2Fzc2lnbi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcwNjdlZmYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfdHJpdmlhbF9tb3ZlX2Fzc2lnbi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIEhvd2FyZCBIaW5uYW50ICYgSm9obiBNYWRkb2NrIDIwMDAuCi0vLyAgKEMpIENvcHlyaWdodCBFcmljIEZyaWVkbWFuIDIwMDItMjAwMy4KLS8vICAoQykgQ29weXJpZ2h0IEFudG9ueSBQb2x1a2hpbiAyMDEzLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9IQVNfVFJJVklBTF9NT1ZFX0FTU0lHTl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSEFTX1RSSVZJQUxfTU9WRV9BU1NJR05fSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3BvZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29uc3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3ZvbGF0aWxlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX2FuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9ub3QuaHBwPgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaGFzX3RyaXZpYWxfbW92ZV9hc3NpZ25faW1wbAotewotI2lmZGVmIE5ETkJPT1NUX0hBU19UUklWSUFMX01PVkVfQVNTSUdOCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSAoTkROQk9PU1RfSEFTX1RSSVZJQUxfTU9WRV9BU1NJR04oVCkpKTsKLSNlbHNlCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPQotICAgICAgICAgICAoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8Ci0gICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvZDxUPjo6dmFsdWUsCi0gICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19jb25zdDxUPjo6dmFsdWUgPjo6dmFsdWUsCi0gICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc192b2xhdGlsZTxUPjo6dmFsdWUgPjo6dmFsdWUKLSAgICAgICAgICAgPjo6dmFsdWUpKTsKLSNlbmRpZgotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaGFzX3RyaXZpYWxfbW92ZV9hc3NpZ24sVCw6Om5kbmJvb3N0OjpkZXRhaWw6Omhhc190cml2aWFsX21vdmVfYXNzaWduX2ltcGw8VD46OnZhbHVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEoaGFzX3RyaXZpYWxfbW92ZV9hc3NpZ24sdm9pZCxmYWxzZSkKLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1ZfVk9JRF9TUEVDSUFMSVpBVElPTlMKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGhhc190cml2aWFsX21vdmVfYXNzaWduLHZvaWQgY29uc3QsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMShoYXNfdHJpdmlhbF9tb3ZlX2Fzc2lnbix2b2lkIGNvbnN0IHZvbGF0aWxlLGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEoaGFzX3RyaXZpYWxfbW92ZV9hc3NpZ24sdm9pZCB2b2xhdGlsZSxmYWxzZSkKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfSEFTX1RSSVZJQUxfTU9WRV9BU1NJR05fSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc190cml2aWFsX21vdmVfY29uc3RydWN0b3IuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfdHJpdmlhbF9tb3ZlX2NvbnN0cnVjdG9yLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGU5Yzk1Yy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc190cml2aWFsX21vdmVfY29uc3RydWN0b3IuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCBIb3dhcmQgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLgotLy8gIChDKSBDb3B5cmlnaHQgRXJpYyBGcmllZG1hbiAyMDAyLTIwMDMuCi0vLyAgKEMpIENvcHlyaWdodCBBbnRvbnkgUG9sdWtoaW4gMjAxMy4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSEFTX1RSSVZJQUxfTU9WRV9DT05TVFJVQ1RPUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSEFTX1RSSVZJQUxfTU9WRV9DT05TVFJVQ1RPUl9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaW50cmluc2ljcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcG9kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc192b2xhdGlsZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9hbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2Vfbm90LmhwcD4KLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGhhc190cml2aWFsX21vdmVfY3Rvcl9pbXBsCi17Ci0jaWZkZWYgTkROQk9PU1RfSEFTX1RSSVZJQUxfTU9WRV9DT05TVFJVQ1RPUgotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gKE5ETkJPT1NUX0hBU19UUklWSUFMX01PVkVfQ09OU1RSVUNUT1IoVCkpKTsKLSNlbHNlCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPQotICAgICAgICAgICAoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8Ci0gICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3BvZDxUPjo6dmFsdWUsCi0gICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc192b2xhdGlsZTxUPjo6dmFsdWUgPjo6dmFsdWUKLSAgICAgICAgICAgPjo6dmFsdWUpKTsKLSNlbmRpZgotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaGFzX3RyaXZpYWxfbW92ZV9jb25zdHJ1Y3RvcixULDo6bmRuYm9vc3Q6OmRldGFpbDo6aGFzX3RyaXZpYWxfbW92ZV9jdG9yX2ltcGw8VD46OnZhbHVlKQotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMShoYXNfdHJpdmlhbF9tb3ZlX2NvbnN0cnVjdG9yLHZvaWQsZmFsc2UpCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NWX1ZPSURfU1BFQ0lBTElaQVRJT05TCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMShoYXNfdHJpdmlhbF9tb3ZlX2NvbnN0cnVjdG9yLHZvaWQgY29uc3QsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMShoYXNfdHJpdmlhbF9tb3ZlX2NvbnN0cnVjdG9yLHZvaWQgY29uc3Qgdm9sYXRpbGUsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMShoYXNfdHJpdmlhbF9tb3ZlX2NvbnN0cnVjdG9yLHZvaWQgdm9sYXRpbGUsZmFsc2UpCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0hBU19UUklWSUFMX01PVkVfQ09OU1RSVUNUT1JfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc191bmFyeV9taW51cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc191bmFyeV9taW51cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmNzk1ZGEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfdW5hcnlfbWludXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgMjAwOS0yMDExIEZyZWRlcmljIEJyb24uCi0vLwotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9IQVNfVU5BUllfTUlOVVNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0hBU19VTkFSWV9NSU5VU19IUFBfSU5DTFVERUQKLQotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9OQU1FIGhhc191bmFyeV9taW51cwotI2RlZmluZSBORE5CT09TVF9UVF9UUkFJVF9PUCAtCi0jZGVmaW5lIE5ETkJPT1NUX1RUX0ZPUkJJRERFTl9JRlwKLSAgIC8qIHBvaW50ZXIgKi9cCi0gICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPCBSaHNfbm9yZWYgPjo6dmFsdWUKLQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2hhc19wcmVmaXhfb3BlcmF0b3IuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfTkFNRQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX09QCi0jdW5kZWYgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfdW5hcnlfcGx1cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc191bmFyeV9wbHVzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDk2YWY2ZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc191bmFyeV9wbHVzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IDIwMDktMjAxMSBGcmVkZXJpYyBCcm9uLgotLy8KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSEFTX1VOQVJZX1BMVVNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0hBU19VTkFSWV9QTFVTX0hQUF9JTkNMVURFRAotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQUlUX05BTUUgaGFzX3VuYXJ5X3BsdXMKLSNkZWZpbmUgTkROQk9PU1RfVFRfVFJBSVRfT1AgKwotI2RlZmluZSBORE5CT09TVF9UVF9GT1JCSURERU5fSUZcCi0gICBmYWxzZQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2hhc19wcmVmaXhfb3BlcmF0b3IuaHBwPgotCi0jdW5kZWYgTkROQk9PU1RfVFRfVFJBSVRfTkFNRQotI3VuZGVmIE5ETkJPT1NUX1RUX1RSQUlUX09QCi0jdW5kZWYgTkROQk9PU1RfVFRfRk9SQklEREVOX0lGCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfdmlydHVhbF9kZXN0cnVjdG9yLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3ZpcnR1YWxfZGVzdHJ1Y3Rvci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI2NDRlZGYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfdmlydHVhbF9kZXN0cnVjdG9yLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDUuICAKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLQotI2lmbmRlZiBORE5CT09TVF9UVF9IQVNfVklSVFVBTF9ERVNUUlVDVE9SX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9IQVNfVklSVFVBTF9ERVNUUlVDVE9SX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaW50cmluc2ljcy5ocHA+Ci0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi0jaWZkZWYgTkROQk9PU1RfSEFTX1ZJUlRVQUxfREVTVFJVQ1RPUgotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShoYXNfdmlydHVhbF9kZXN0cnVjdG9yLFQsTkROQk9PU1RfSEFTX1ZJUlRVQUxfREVTVFJVQ1RPUihUKSkKLSNlbHNlCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGhhc192aXJ0dWFsX2Rlc3RydWN0b3IsVCxmYWxzZSkKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfSVNfTUVNQkVSX0ZVTkNUSU9OX1BPSU5URVJfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2ljZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2ljZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRkMmVlOTkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pY2UuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgYW5kIFN0ZXZlIENsZWFyeSAyMDAwLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLS8vCi0vLyAgbWFjcm9zIGFuZCBoZWxwZXJzIGZvciB3b3JraW5nIHdpdGggaW50ZWdyYWwtY29uc3RhbnQtZXhwcmVzc2lvbnMuCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSUNFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9JQ0VfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwveWVzX25vX3R5cGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2Vfb3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2VfYW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX25vdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9lcS5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9JQ0VfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2ludGVncmFsX2NvbnN0YW50LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaW50ZWdyYWxfY29uc3RhbnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OGI5MDUwLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaW50ZWdyYWxfY29uc3RhbnQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDUuIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIAotLy8gIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIAotLy8gIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9UWVBFX1RSQUlUU19JTlRFR1JBTF9DT05TVEFOVF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfVFlQRV9UUkFJVFNfSU5URUdSQUxfQ09OU1RBTlRfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ib29sLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaW50ZWdyYWxfYy5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdHsKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fREVQRU5ERU5UX1RZUEVTX0lOX1RFTVBMQVRFX1ZBTFVFX1BBUkFNRVRFUlMpIHx8IGRlZmluZWQoX19CT1JMQU5EQ19fKQotdGVtcGxhdGUgPGNsYXNzIFQsIGludCB2YWw+Ci0jZWxzZQotdGVtcGxhdGUgPGNsYXNzIFQsIFQgdmFsPgotI2VuZGlmCi1zdHJ1Y3QgaW50ZWdyYWxfY29uc3RhbnQgOiBwdWJsaWMgbXBsOjppbnRlZ3JhbF9jPFQsIHZhbD4KLXsKLSAgIHR5cGVkZWYgaW50ZWdyYWxfY29uc3RhbnQ8VCx2YWw+IHR5cGU7Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBpbnRlZ3JhbF9jb25zdGFudDxib29sLHRydWU+IDogcHVibGljIG1wbDo6dHJ1ZV8gCi17Ci0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8IDEzMDApCi0jIHByYWdtYSB3YXJuaW5nKHB1c2gpCi0jIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6NDA5NykKLSAgIHR5cGVkZWYgbXBsOjp0cnVlXyBiYXNlXzsKLSAgIHVzaW5nIGJhc2VfOjp2YWx1ZTsKLSMgcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0gICB0eXBlZGVmIGludGVncmFsX2NvbnN0YW50PGJvb2wsdHJ1ZT4gdHlwZTsKLX07Ci10ZW1wbGF0ZTw+IHN0cnVjdCBpbnRlZ3JhbF9jb25zdGFudDxib29sLGZhbHNlPiA6IHB1YmxpYyBtcGw6OmZhbHNlXyAKLXsKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkKLSMgcHJhZ21hIHdhcm5pbmcocHVzaCkKLSMgcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MDk3KQotICAgdHlwZWRlZiBtcGw6OmZhbHNlXyBiYXNlXzsKLSAgIHVzaW5nIGJhc2VfOjp2YWx1ZTsKLSMgcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0gICB0eXBlZGVmIGludGVncmFsX2NvbnN0YW50PGJvb2wsZmFsc2U+IHR5cGU7Ci19OwotCi10eXBlZGVmIGludGVncmFsX2NvbnN0YW50PGJvb2wsdHJ1ZT4gdHJ1ZV90eXBlOwotdHlwZWRlZiBpbnRlZ3JhbF9jb25zdGFudDxib29sLGZhbHNlPiBmYWxzZV90eXBlOwotCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pbnRlZ3JhbF9wcm9tb3Rpb24uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pbnRlZ3JhbF9wcm9tb3Rpb24uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwODcxMTQ3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaW50ZWdyYWxfcHJvbW90aW9uLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE5NSArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwNSBBbGV4YW5kZXIgTmFzb25vdi4KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBGSUxFX25kbmJvb3N0X3R5cGVfdHJhaXRzX2ludGVncmFsX3Byb21vdGlvbl9ocHBfSU5DTFVERUQKLSNkZWZpbmUgRklMRV9uZG5ib29zdF90eXBlX3RyYWl0c19pbnRlZ3JhbF9wcm9tb3Rpb25faHBwX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2V2YWxfaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZGVudGl0eS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaW50ZWdyYWxfY29uc3RhbnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnN0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19lbnVtLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc192b2xhdGlsZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2N2LmhwcD4KLQotLy8gU2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3R5cGVfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIHR5cGVfdHJhaXRzIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLS8vIDQuNS8yCi10ZW1wbGF0ZSA8Y2xhc3MgVD4gc3RydWN0IG5lZWRfcHJvbW90aW9uIDogcHVibGljIG5kbmJvb3N0Ojppc19lbnVtPFQ+IHt9OwotCi0vLyA0LjUvMQotdGVtcGxhdGU8PiBzdHJ1Y3QgbmVlZF9wcm9tb3Rpb248Y2hhciAgICAgICAgICAgICAgPiA6IHB1YmxpYyB0cnVlX3R5cGUge307Ci10ZW1wbGF0ZTw+IHN0cnVjdCBuZWVkX3Byb21vdGlvbjxzaWduZWQgY2hhciAgICAgICA+IDogcHVibGljIHRydWVfdHlwZSB7fTsKLXRlbXBsYXRlPD4gc3RydWN0IG5lZWRfcHJvbW90aW9uPHVuc2lnbmVkIGNoYXIgICAgID4gOiBwdWJsaWMgdHJ1ZV90eXBlIHt9OwotdGVtcGxhdGU8PiBzdHJ1Y3QgbmVlZF9wcm9tb3Rpb248c2lnbmVkIHNob3J0IGludCAgPiA6IHB1YmxpYyB0cnVlX3R5cGUge307Ci10ZW1wbGF0ZTw+IHN0cnVjdCBuZWVkX3Byb21vdGlvbjx1bnNpZ25lZCBzaG9ydCBpbnQ+IDogcHVibGljIHRydWVfdHlwZSB7fTsKLQotCi0vLyBTcGVjaWFsaXphdGlvbnMgZm9yIG5vbi1zdGFuZGFyZCB0eXBlcy4KLS8vIFR5cGUgaXMgcHJvbW90ZWQgaWYgaXQncyBzbWFsbGVyIHRoZW4gaW50LgotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX0FVWF9QUk9NT1RFX05PTlNUQU5EQVJEX1RZUEUoVCkgXAotICAgIHRlbXBsYXRlPD4gc3RydWN0IG5lZWRfcHJvbW90aW9uPFQ+ICAgICAgICAgIFwKLSAgICAgICAgOiBwdWJsaWMgaW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgKHNpemVvZihUKSA8IHNpemVvZihpbnQpKT4ge307Ci0KLS8vIFNhbWUgc2V0IG9mIGludGVncmFsIHR5cGVzIGFzIGluIG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2ludGVncmFsLmhwcC4KLS8vIFBsZWFzZSwga2VlcCBpbiBzeW5jLgotI2lmIChkZWZpbmVkKE5ETkJPT1NUX01TVkMpICYmIChORE5CT09TVF9NU1ZDIDwgMTMwMCkpIFwKLSAgICB8fCAoZGVmaW5lZChORE5CT09TVF9JTlRFTF9DWFhfVkVSU0lPTikgJiYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKE5ETkJPT1NUX0lOVEVMX0NYWF9WRVJTSU9OIDw9IDYwMCkpIFwKLSAgICB8fCAoZGVmaW5lZChfX0JPUkxBTkRDX18pICYmIChfX0JPUkxBTkRDX18gPT0gMHg2MDApICYmIChfTVNDX1ZFUiA8IDEzMDApKQotLy8gVE9ETzogY29tbW9uIG1hY3JvIGZvciB0aGlzICNpZi4gT3IgYmV0dGVyIHlldCwgUFAgU0VRIG9mIG5vbi1zdGFuZGFyZCB0eXBlcy4KLU5ETkJPT1NUX1RUX0FVWF9QUk9NT1RFX05PTlNUQU5EQVJEX1RZUEUoX19pbnQ4ICAgICAgICAgICkKLU5ETkJPT1NUX1RUX0FVWF9QUk9NT1RFX05PTlNUQU5EQVJEX1RZUEUodW5zaWduZWQgX19pbnQ4ICkKLU5ETkJPT1NUX1RUX0FVWF9QUk9NT1RFX05PTlNUQU5EQVJEX1RZUEUoX19pbnQxNiAgICAgICAgICkKLU5ETkJPT1NUX1RUX0FVWF9QUk9NT1RFX05PTlNUQU5EQVJEX1RZUEUodW5zaWduZWQgX19pbnQxNikKLU5ETkJPT1NUX1RUX0FVWF9QUk9NT1RFX05PTlNUQU5EQVJEX1RZUEUoX19pbnQzMiAgICAgICAgICkKLU5ETkJPT1NUX1RUX0FVWF9QUk9NT1RFX05PTlNUQU5EQVJEX1RZUEUodW5zaWduZWQgX19pbnQzMikKLSNpZmRlZiBfX0JPUkxBTkRDX18KLU5ETkJPT1NUX1RUX0FVWF9QUk9NT1RFX05PTlNUQU5EQVJEX1RZUEUodW5zaWduZWQgX19pbnQ2NCkKLU5ETkJPT1NUX1RUX0FVWF9QUk9NT1RFX05PTlNUQU5EQVJEX1RZUEUoICAgICAgICAgX19pbnQ2NCkKLSNlbmRpZgotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19MT05HX0xPTkcpCi1ORE5CT09TVF9UVF9BVVhfUFJPTU9URV9OT05TVEFOREFSRF9UWVBFKG5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGUpCi1ORE5CT09TVF9UVF9BVVhfUFJPTU9URV9OT05TVEFOREFSRF9UWVBFKG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZSApCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19NU19JTlQ2NCkKLU5ETkJPT1NUX1RUX0FVWF9QUk9NT1RFX05PTlNUQU5EQVJEX1RZUEUodW5zaWduZWQgX19pbnQ2NCkKLU5ETkJPT1NUX1RUX0FVWF9QUk9NT1RFX05PTlNUQU5EQVJEX1RZUEUoICAgICAgICAgX19pbnQ2NCkKLSNlbmRpZgotCi0jdW5kZWYgTkROQk9PU1RfVFRfQVVYX1BST01PVEVfTk9OU1RBTkRBUkRfVFlQRQotCi0KLSNpZm5kZWYgTkROQk9PU1RfTk9fSU5UUklOU0lDX1dDSEFSX1QKLS8vIDQuNS8yCi10ZW1wbGF0ZTw+IHN0cnVjdCBuZWVkX3Byb21vdGlvbjx3Y2hhcl90PiA6IHB1YmxpYyB0cnVlX3R5cGUge307Ci0jZW5kaWYKLQotLy8gNC41LzMgKGludGVncmFsIGJpdC1maWVsZCkgaXMgbm90IHN1cHBvcnRlZC4KLQotLy8gNC41LzQKLXRlbXBsYXRlPD4gc3RydWN0IG5lZWRfcHJvbW90aW9uPGJvb2w+IDogcHVibGljIHRydWVfdHlwZSB7fTsKLQotCi0vLyBHZXQgcHJvbW90ZWQgdHlwZSBieSBpbmRleCBhbmQgY3YgcXVhbGlmaWVycy4KLQotdGVtcGxhdGU8aW50IEluZGV4LCBpbnQgSXNDb25zdCwgaW50IElzVm9sYXRpbGU+IHN0cnVjdCBwcm9tb3RlX2Zyb21faW5kZXg7Ci0KLSNkZWZpbmUgTkROQk9PU1RfVFRfQVVYX1BST01PVEVfRlJPTV9JTkRFWChOLFQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgcHJvbW90ZV9mcm9tX2luZGV4PE4sMCwwPiB7IHR5cGVkZWYgVCB0eXBlOyB9OyAgICAgICAgICAgXAotICAgIHRlbXBsYXRlPD4gc3RydWN0IHByb21vdGVfZnJvbV9pbmRleDxOLDAsMT4geyB0eXBlZGVmIFQgdm9sYXRpbGUgdHlwZTsgfTsgIFwKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBwcm9tb3RlX2Zyb21faW5kZXg8TiwxLDA+IHsgdHlwZWRlZiBUIGNvbnN0IHR5cGU7IH07ICAgICBcCi0gICAgdGVtcGxhdGU8PiBzdHJ1Y3QgcHJvbW90ZV9mcm9tX2luZGV4PE4sMSwxPiB7IHR5cGVkZWYgVCBjb25zdCB2b2xhdGlsZSB0eXBlOyB9OwotCi0KLU5ETkJPT1NUX1RUX0FVWF9QUk9NT1RFX0ZST01fSU5ERVgoMSwgaW50ICAgICAgICAgICkKLU5ETkJPT1NUX1RUX0FVWF9QUk9NT1RFX0ZST01fSU5ERVgoMiwgdW5zaWduZWQgaW50ICkKLU5ETkJPT1NUX1RUX0FVWF9QUk9NT1RFX0ZST01fSU5ERVgoMywgbG9uZyAgICAgICAgICkKLU5ETkJPT1NUX1RUX0FVWF9QUk9NT1RFX0ZST01fSU5ERVgoNCwgdW5zaWduZWQgbG9uZykKLQotCi0vLyBXQVJOSU5HOiBpbnRlZ3JhbCBwcm9tb3Rpb25zIHRvIG5vbi1zdGFuZGFyZCB0eXBlcwotLy8gbG9uZyBsb25nIGFuZCBfX2ludDY0IGFyZSBub3QgZGVmaW5lZCBieSB0aGUgc3RhbmRhcmQuCi0vLyBBZGRpdGlvbmFsIHNwZWNpYWxpc2F0aW9ucyBhbmQgb3ZlcmxvYWRzIHNob3VsZG4ndAotLy8gaW50cm9kdWNlIGFtYmlndWl0eSwgdGhvdWdoLgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9IQVNfTE9OR19MT05HKQotTkROQk9PU1RfVFRfQVVYX1BST01PVEVfRlJPTV9JTkRFWCg1LCBuZG5ib29zdDo6bG9uZ19sb25nX3R5cGUgKQotTkROQk9PU1RfVFRfQVVYX1BST01PVEVfRlJPTV9JTkRFWCg2LCBuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlKQotI2VsaWYgZGVmaW5lZChORE5CT09TVF9IQVNfTVNfSU5UNjQpCi1ORE5CT09TVF9UVF9BVVhfUFJPTU9URV9GUk9NX0lOREVYKDcsIF9faW50NjQgICAgICAgICApCi1ORE5CT09TVF9UVF9BVVhfUFJPTU9URV9GUk9NX0lOREVYKDgsIHVuc2lnbmVkIF9faW50NjQpCi0jZW5kaWYKLQotI3VuZGVmIE5ETkJPT1NUX1RUX0FVWF9QUk9NT1RFX0ZST01fSU5ERVgKLQotCi0vLyBEZWZpbmUgTkROQk9PU1RfVFRfQVVYX1BST01PVEVEX0lOREVYX1RFU1RFUjoKLSNpZiAhZGVmaW5lZChORE5CT09TVF9NU1ZDKQotCi10ZW1wbGF0ZTxpbnQgTj4KLXN0cnVjdCBzaXplZF90eXBlX2Zvcl9wcm9tb3Rpb24KLXsKLSAgICB0eXBlZGVmIGNoYXIgKCZ0eXBlKVtOXTsKLX07Ci0KLSNkZWZpbmUgTkROQk9PU1RfVFRfQVVYX1BST01PVEVEX0lOREVYX1RFU1RFUihJLFQpIFwKLSAgICBzaXplZF90eXBlX2Zvcl9wcm9tb3Rpb248ST46OnR5cGUgcHJvbW90ZWRfaW5kZXhfdGVzdGVyKFQpOwotCi0jZWxzZQotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX0FVWF9QUk9NT1RFRF9JTkRFWF9URVNURVIoSSxUKSBcCi0gICAgY2hhciAoJnByb21vdGVkX2luZGV4X3Rlc3RlcihUKSlbSV07Ci0KLSNlbmRpZgotCi1ORE5CT09TVF9UVF9BVVhfUFJPTU9URURfSU5ERVhfVEVTVEVSKDEsIGludCAgICAgICAgICApCi1ORE5CT09TVF9UVF9BVVhfUFJPTU9URURfSU5ERVhfVEVTVEVSKDIsIHVuc2lnbmVkIGludCApCi1ORE5CT09TVF9UVF9BVVhfUFJPTU9URURfSU5ERVhfVEVTVEVSKDMsIGxvbmcgICAgICAgICApCi1ORE5CT09TVF9UVF9BVVhfUFJPTU9URURfSU5ERVhfVEVTVEVSKDQsIHVuc2lnbmVkIGxvbmcpCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19MT05HX0xPTkcpCi1ORE5CT09TVF9UVF9BVVhfUFJPTU9URURfSU5ERVhfVEVTVEVSKDUsIG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZSApCi1ORE5CT09TVF9UVF9BVVhfUFJPTU9URURfSU5ERVhfVEVTVEVSKDYsIG5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGUpCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19NU19JTlQ2NCkKLU5ETkJPT1NUX1RUX0FVWF9QUk9NT1RFRF9JTkRFWF9URVNURVIoNywgX19pbnQ2NCAgICAgICAgICkKLU5ETkJPT1NUX1RUX0FVWF9QUk9NT1RFRF9JTkRFWF9URVNURVIoOCwgdW5zaWduZWQgX19pbnQ2NCkKLSNlbmRpZgotCi0jdW5kZWYgTkROQk9PU1RfVFRfQVVYX1BST01PVEVEX0lOREVYX1RFU1RFUgotCi0KLS8vIEdldCBhbiBpbmRleCBvZiBwcm9tb3RlZCB0eXBlIGZvciB0eXBlIFQuCi0vLyBQcmVjb25kaXRpb246IG5lZWRfcHJvbW90aW9uPFQ+Ci10ZW1wbGF0ZTxjbGFzcyBUPgotc3RydWN0IHByb21vdGVkX2luZGV4Ci17Ci0gICAgc3RhdGljIFQgdGVzdGVlOyAvLyB1bmRlZmluZWQKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LCB2YWx1ZSA9IHNpemVvZihwcm9tb3RlZF9pbmRleF90ZXN0ZXIoK3Rlc3RlZSkpICk7Ci0gICAgLy8gVW5hcnkgcGx1cyBwcm9tb3RlcyB0ZXN0ZWUgICAgICAgICAgICAgICAgICAgIExPT0sgSEVSRSAtLS0+IF4KLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1zdHJ1Y3QgaW50ZWdyYWxfcHJvbW90aW9uX2ltcGwKLXsKLSAgICB0eXBlZGVmIE5ETkJPT1NUX0RFRFVDRURfVFlQRU5BTUUgcHJvbW90ZV9mcm9tX2luZGV4PAotICAgICAgICAobmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjpkZXRhaWw6OnByb21vdGVkX2luZGV4PFQ+Ojp2YWx1ZSkKLSAgICAgICwgKG5kbmJvb3N0Ojppc19jb25zdDxUPjo6dmFsdWUpCi0gICAgICAsIChuZG5ib29zdDo6aXNfdm9sYXRpbGU8VD46OnZhbHVlKQotICAgICAgPjo6dHlwZSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgVD4KLXN0cnVjdCBpbnRlZ3JhbF9wcm9tb3Rpb24KLSAgOiBwdWJsaWMgbmRuYm9vc3Q6Om1wbDo6ZXZhbF9pZjwKLSAgICAgICAgbmVlZF9wcm9tb3Rpb248TkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSByZW1vdmVfY3Y8VD46OnR5cGU+Ci0gICAgICAsIGludGVncmFsX3Byb21vdGlvbl9pbXBsPFQ+Ci0gICAgICAsIG5kbmJvb3N0OjptcGw6OmlkZW50aXR5PFQ+Ci0gICAgICA+Ci17Ci19OwotCi19IH0KLQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfREVGMSgKLSAgICAgIGludGVncmFsX3Byb21vdGlvbgotICAgICwgVAotICAgICwgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRQotICAgICAgICBuZG5ib29zdDo6dHlwZV90cmFpdHM6OmRldGFpbDo6aW50ZWdyYWxfcHJvbW90aW9uPFQ+Ojp0eXBlCi0gICAgKQotfQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3R5cGVfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gI2lmbmRlZiBGSUxFX25kbmJvb3N0X3R5cGVfdHJhaXRzX2ludGVncmFsX3Byb21vdGlvbl9ocHBfSU5DTFVERUQKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pbnRyaW5zaWNzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaW50cmluc2ljcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3OGIyZTEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pbnRyaW5zaWNzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMwNSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCBIb3dhcmQgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9JTlRSSU5TSUNTX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9JTlRSSU5TSUNTX0hQUF9JTkNMVURFRAotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0NPTkZJR19IUFBfSU5DTFVERUQKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9jb25maWcuaHBwPgotI2VuZGlmCi0KLS8vCi0vLyBIZWxwZXIgbWFjcm9zIGZvciBidWlsdGluIGNvbXBpbGVyIHN1cHBvcnQuCi0vLyBJZiB5b3VyIGNvbXBpbGVyIGhhcyBidWlsdGluIHN1cHBvcnQgZm9yIGFueSBvZiB0aGUgZm9sbG93aW5nCi0vLyB0cmFpdHMgY29uY2VwdHMsIHRoZW4gcmVkZWZpbmUgdGhlIGFwcHJvcHJpYXRlIG1hY3JvcyB0byBwaWNrCi0vLyB1cCBvbiB0aGUgY29tcGlsZXIgc3VwcG9ydDoKLS8vCi0vLyAodGhlc2Ugc2hvdWxkIGxhcmdlbHkgaWdub3JlIGN2LXF1YWxpZmllcnMpCi0vLyBORE5CT09TVF9JU19VTklPTihUKSBzaG91bGQgZXZhbHVhdGUgdG8gdHJ1ZSBpZiBUIGlzIGEgdW5pb24gdHlwZQotLy8gTkROQk9PU1RfSVNfUE9EKFQpIHNob3VsZCBldmFsdWF0ZSB0byB0cnVlIGlmIFQgaXMgYSBQT0QgdHlwZQotLy8gTkROQk9PU1RfSVNfRU1QVFkoVCkgc2hvdWxkIGV2YWx1YXRlIHRvIHRydWUgaWYgVCBpcyBhbiBlbXB0eSBjbGFzcyB0eXBlIChhbmQgbm90IGEgdW5pb24pCi0vLyBORE5CT09TVF9IQVNfVFJJVklBTF9DT05TVFJVQ1RPUihUKSBzaG91bGQgZXZhbHVhdGUgdG8gdHJ1ZSBpZiAiVCB4OyIgaGFzIG5vIGVmZmVjdAotLy8gTkROQk9PU1RfSEFTX1RSSVZJQUxfQ09QWShUKSBzaG91bGQgZXZhbHVhdGUgdG8gdHJ1ZSBpZiBUKHQpIDw9PT4gbWVtY3B5Ci0vLyBORE5CT09TVF9IQVNfVFJJVklBTF9NT1ZFX0NPTlNUUlVDVE9SKFQpIHNob3VsZCBldmFsdWF0ZSB0byB0cnVlIGlmIFQobmRuYm9vc3Q6Om1vdmUodCkpIDw9PT4gbWVtY3B5Ci0vLyBORE5CT09TVF9IQVNfVFJJVklBTF9BU1NJR04oVCkgc2hvdWxkIGV2YWx1YXRlIHRvIHRydWUgaWYgdCA9IHUgPD09PiBtZW1jcHkKLS8vIE5ETkJPT1NUX0hBU19UUklWSUFMX01PVkVfQVNTSUdOKFQpIHNob3VsZCBldmFsdWF0ZSB0byB0cnVlIGlmIHQgPSBuZG5ib29zdDo6bW92ZSh1KSA8PT0+IG1lbWNweQotLy8gTkROQk9PU1RfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihUKSBzaG91bGQgZXZhbHVhdGUgdG8gdHJ1ZSBpZiB+VCgpIGhhcyBubyBlZmZlY3QKLS8vIE5ETkJPT1NUX0hBU19OT1RIUk9XX0NPTlNUUlVDVE9SKFQpIHNob3VsZCBldmFsdWF0ZSB0byB0cnVlIGlmICJUIHg7IiBjYW4gbm90IHRocm93Ci0vLyBORE5CT09TVF9IQVNfTk9USFJPV19DT1BZKFQpIHNob3VsZCBldmFsdWF0ZSB0byB0cnVlIGlmIFQodCkgY2FuIG5vdCB0aHJvdwotLy8gTkROQk9PU1RfSEFTX05PVEhST1dfQVNTSUdOKFQpIHNob3VsZCBldmFsdWF0ZSB0byB0cnVlIGlmIHQgPSB1IGNhbiBub3QgdGhyb3cKLS8vIE5ETkJPT1NUX0hBU19WSVJUVUFMX0RFU1RSVUNUT1IoVCkgc2hvdWxkIGV2YWx1YXRlIHRvIHRydWUgVCBoYXMgYSB2aXJ0dWFsIGRlc3RydWN0b3IKLS8vCi0vLyBUaGUgZm9sbG93aW5nIGNhbiBhbHNvIGJlIGRlZmluZWQ6IHdoZW4gZGV0ZWN0ZWQgb3VyIGltcGxlbWVudGF0aW9uIGlzIGdyZWF0bHkgc2ltcGxpZmllZC4KLS8vCi0vLyBORE5CT09TVF9JU19BQlNUUkFDVChUKSB0cnVlIGlmIFQgaXMgYW4gYWJzdHJhY3QgdHlwZQotLy8gTkROQk9PU1RfSVNfQkFTRV9PRihULFUpIHRydWUgaWYgVCBpcyBhIGJhc2UgY2xhc3Mgb2YgVQotLy8gTkROQk9PU1RfSVNfQ0xBU1MoVCkgdHJ1ZSBpZiBUIGlzIGEgY2xhc3MgdHlwZSAoYW5kIG5vdCBhIHVuaW9uKQotLy8gTkROQk9PU1RfSVNfQ09OVkVSVElCTEUoVCxVKSB0cnVlIGlmIFQgaXMgY29udmVydGlibGUgdG8gVQotLy8gTkROQk9PU1RfSVNfRU5VTShUKSB0cnVlIGlzIFQgaXMgYW4gZW51bQotLy8gTkROQk9PU1RfSVNfUE9MWU1PUlBISUMoVCkgdHJ1ZSBpZiBUIGlzIGEgcG9seW1vcnBoaWMgdHlwZQotLy8gTkROQk9PU1RfQUxJR05NRU5UX09GKFQpIHNob3VsZCBldmFsdWF0ZSB0byB0aGUgYWxpZ25tZW50IHJlcXVpcmVtZW50cyBvZiB0eXBlIFQuCi0KLSNpZmRlZiBORE5CT09TVF9IQVNfU0dJX1RZUEVfVFJBSVRTCi0gICAgLy8gSG9vayBpbnRvIFNHSSdzIF9fdHlwZV90cmFpdHMgY2xhc3MsIHRoaXMgd2lsbCBwaWNrIHVwIHVzZXIgc3VwcGxpZWQKLSAgICAvLyBzcGVjaWFsaXphdGlvbnMgYXMgd2VsbCBhcyBTR0kgLSBjb21waWxlciBzdXBwbGllZCBzcGVjaWFsaXphdGlvbnMuCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2FtZS5ocHA+Ci0jICAgaWZkZWYgX19OZXRCU0RfXwotICAgICAgLy8gVGhlcmUgYXJlIHR3byBkaWZmZXJlbnQgdmVyc2lvbnMgb2YgdHlwZV90cmFpdHMuaCBvbiBOZXRCU0Qgb24gU3BhcmsKLSAgICAgIC8vIHVzZSBhbiBpbXBsaWNpdCBpbmNsdWRlIHZpYSBhbGdvcml0aG0gaW5zdGVhZCwgdG8gbWFrZSBzdXJlIHdlIGdldAotICAgICAgLy8gdGhlIHNhbWUgdmVyc2lvbiBhcyB0aGUgc3RkIGxpYjoKLSMgICAgIGluY2x1ZGUgPGFsZ29yaXRobT4KLSMgICBlbHNlCi0jICAgIGluY2x1ZGUgPHR5cGVfdHJhaXRzLmg+Ci0jICAgZW5kaWYKLSMgICBkZWZpbmUgTkROQk9PU1RfSVNfUE9EKFQpIDo6bmRuYm9vc3Q6OmlzX3NhbWU8IHR5cGVuYW1lIDo6X190eXBlX3RyYWl0czxUPjo6aXNfUE9EX3R5cGUsIDo6X190cnVlX3R5cGU+Ojp2YWx1ZQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNfVFJJVklBTF9DT05TVFJVQ1RPUihUKSA6Om5kbmJvb3N0Ojppc19zYW1lPCB0eXBlbmFtZSA6Ol9fdHlwZV90cmFpdHM8VD46Omhhc190cml2aWFsX2RlZmF1bHRfY29uc3RydWN0b3IsIDo6X190cnVlX3R5cGU+Ojp2YWx1ZQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNfVFJJVklBTF9DT1BZKFQpIDo6bmRuYm9vc3Q6OmlzX3NhbWU8IHR5cGVuYW1lIDo6X190eXBlX3RyYWl0czxUPjo6aGFzX3RyaXZpYWxfY29weV9jb25zdHJ1Y3RvciwgOjpfX3RydWVfdHlwZT46OnZhbHVlCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19UUklWSUFMX0FTU0lHTihUKSA6Om5kbmJvb3N0Ojppc19zYW1lPCB0eXBlbmFtZSA6Ol9fdHlwZV90cmFpdHM8VD46Omhhc190cml2aWFsX2Fzc2lnbm1lbnRfb3BlcmF0b3IsIDo6X190cnVlX3R5cGU+Ojp2YWx1ZQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SKFQpIDo6bmRuYm9vc3Q6OmlzX3NhbWU8IHR5cGVuYW1lIDo6X190eXBlX3RyYWl0czxUPjo6aGFzX3RyaXZpYWxfZGVzdHJ1Y3RvciwgOjpfX3RydWVfdHlwZT46OnZhbHVlCi0KLSMgICBpZmRlZiBfX3NnaQotIyAgICAgIGRlZmluZSBORE5CT09TVF9IQVNfVFlQRV9UUkFJVFNfSU5UUklOU0lDUwotIyAgIGVuZGlmCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoX19NU0xfQ1BQX18pICYmIChfX01TTF9DUFBfXyA+PSAweDgwMDApCi0gICAgLy8gTWV0cm93ZXJrcyBjb21waWxlciBpcyBhY3F1aXJpbmcgaW50cmluc2ljIHR5cGUgdHJhaXRzIHN1cHBvcnQKLSAgICAvLyBwb3N0IHZlcnNpb24gOC4gIFdlIGhvb2sgaW50byB0aGUgcHVibGlzaGVkIGludGVyZmFjZSB0byBwaWNrIHVwCi0gICAgLy8gdXNlciBkZWZpbmVkIHNwZWNpYWxpemF0aW9ucyBhcyB3ZWxsIGFzIGNvbXBpbGVyIGludHJpbnNpY3MgYXMgCi0gICAgLy8gYW5kIHdoZW4gdGhleSBiZWNvbWUgYXZhaWxhYmxlOgotIyAgIGluY2x1ZGUgPG1zbF91dGlsaXR5PgotIyAgIGRlZmluZSBORE5CT09TVF9JU19VTklPTihUKSBORE5CT09TVF9TVERfRVhURU5TSU9OX05BTUVTUEFDRTo6aXNfdW5pb248VD46OnZhbHVlCi0jICAgZGVmaW5lIE5ETkJPT1NUX0lTX1BPRChUKSBORE5CT09TVF9TVERfRVhURU5TSU9OX05BTUVTUEFDRTo6aXNfUE9EPFQ+Ojp2YWx1ZQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNfVFJJVklBTF9DT05TVFJVQ1RPUihUKSBORE5CT09TVF9TVERfRVhURU5TSU9OX05BTUVTUEFDRTo6aGFzX3RyaXZpYWxfZGVmYXVsdF9jdG9yPFQ+Ojp2YWx1ZQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNfVFJJVklBTF9DT1BZKFQpIE5ETkJPT1NUX1NURF9FWFRFTlNJT05fTkFNRVNQQUNFOjpoYXNfdHJpdmlhbF9jb3B5X2N0b3I8VD46OnZhbHVlCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19UUklWSUFMX0FTU0lHTihUKSBORE5CT09TVF9TVERfRVhURU5TSU9OX05BTUVTUEFDRTo6aGFzX3RyaXZpYWxfYXNzaWdubWVudDxUPjo6dmFsdWUKLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihUKSBORE5CT09TVF9TVERfRVhURU5TSU9OX05BTUVTUEFDRTo6aGFzX3RyaXZpYWxfZHRvcjxUPjo6dmFsdWUKLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTX1RZUEVfVFJBSVRTX0lOVFJJTlNJQ1MKLSNlbmRpZgotCi0jaWYgKGRlZmluZWQoTkROQk9PU1RfTVNWQykgJiYgZGVmaW5lZChORE5CT09TVF9NU1ZDX0ZVTExfVkVSKSAmJiAoTkROQk9PU1RfTVNWQ19GVUxMX1ZFUiA+PTE0MDA1MDIxNSkpXAotICAgICAgICAgfHwgKGRlZmluZWQoTkROQk9PU1RfSU5URUwpICYmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxNTAwKSkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19mdW5jdGlvbi5ocHA+Ci0KLSMgICBkZWZpbmUgTkROQk9PU1RfSVNfVU5JT04oVCkgX19pc191bmlvbihUKQotIyAgIGRlZmluZSBORE5CT09TVF9JU19QT0QoVCkgKF9faXNfcG9kKFQpICYmIF9faGFzX3RyaXZpYWxfY29uc3RydWN0b3IoVCkpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0lTX0VNUFRZKFQpIF9faXNfZW1wdHkoVCkKLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTX1RSSVZJQUxfQ09OU1RSVUNUT1IoVCkgX19oYXNfdHJpdmlhbF9jb25zdHJ1Y3RvcihUKQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNfVFJJVklBTF9DT1BZKFQpIChfX2hhc190cml2aWFsX2NvcHkoVCl8fCAoIDo6bmRuYm9vc3Q6OmlzX3BvZDxUPjo6dmFsdWUgJiYgITo6bmRuYm9vc3Q6OmlzX3ZvbGF0aWxlPFQ+Ojp2YWx1ZSkpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19UUklWSUFMX0FTU0lHTihUKSAoX19oYXNfdHJpdmlhbF9hc3NpZ24oVCkgfHwgKCA6Om5kbmJvb3N0Ojppc19wb2Q8VD46OnZhbHVlICYmICEgOjpuZG5ib29zdDo6aXNfY29uc3Q8VD46OnZhbHVlICYmICE6Om5kbmJvb3N0Ojppc192b2xhdGlsZTxUPjo6dmFsdWUpKQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SKFQpIChfX2hhc190cml2aWFsX2Rlc3RydWN0b3IoVCkgfHwgOjpuZG5ib29zdDo6aXNfcG9kPFQ+Ojp2YWx1ZSkKLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTX05PVEhST1dfQ09OU1RSVUNUT1IoVCkgKF9faGFzX25vdGhyb3dfY29uc3RydWN0b3IoVCkgfHwgOjpuZG5ib29zdDo6aGFzX3RyaXZpYWxfY29uc3RydWN0b3I8VD46OnZhbHVlKQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNfTk9USFJPV19DT1BZKFQpIChfX2hhc19ub3Rocm93X2NvcHkoVCkgfHwgOjpuZG5ib29zdDo6aGFzX3RyaXZpYWxfY29weTxUPjo6dmFsdWUpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19OT1RIUk9XX0FTU0lHTihUKSAoX19oYXNfbm90aHJvd19hc3NpZ24oVCkgfHwgOjpuZG5ib29zdDo6aGFzX3RyaXZpYWxfYXNzaWduPFQ+Ojp2YWx1ZSkKLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTX1ZJUlRVQUxfREVTVFJVQ1RPUihUKSBfX2hhc192aXJ0dWFsX2Rlc3RydWN0b3IoVCkKLQotIyAgIGRlZmluZSBORE5CT09TVF9JU19BQlNUUkFDVChUKSBfX2lzX2Fic3RyYWN0KFQpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0lTX0JBU0VfT0YoVCxVKSAoX19pc19iYXNlX29mKFQsVSkgJiYgIWlzX3NhbWU8VCxVPjo6dmFsdWUpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0lTX0NMQVNTKFQpIF9faXNfY2xhc3MoVCkKLSMgICBkZWZpbmUgTkROQk9PU1RfSVNfQ09OVkVSVElCTEUoVCxVKSAoKF9faXNfY29udmVydGlibGVfdG8oVCxVKSB8fCAoaXNfc2FtZTxULFU+Ojp2YWx1ZSAmJiAhaXNfZnVuY3Rpb248VT46OnZhbHVlKSkgJiYgIV9faXNfYWJzdHJhY3QoVSkpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0lTX0VOVU0oVCkgX19pc19lbnVtKFQpCi0vLyAgVGhpcyBvbmUgZG9lc24ndCBxdWl0ZSBhbHdheXMgZG8gdGhlIHJpZ2h0IHRoaW5nOgotLy8gICMgICBkZWZpbmUgTkROQk9PU1RfSVNfUE9MWU1PUlBISUMoVCkgX19pc19wb2x5bW9ycGhpYyhUKQotLy8gIFRoaXMgb25lIGZhaWxzIGlmIHRoZSBkZWZhdWx0IGFsaWdubWVudCBoYXMgYmVlbiBjaGFuZ2VkIHdpdGggL1pwOgotLy8gICMgICBkZWZpbmUgTkROQk9PU1RfQUxJR05NRU5UX09GKFQpIF9fYWxpZ25vZihUKQotCi0jICAgaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDE3MDApCi0jICAgICAgIGRlZmluZSBORE5CT09TVF9IQVNfVFJJVklBTF9NT1ZFX0NPTlNUUlVDVE9SKFQpICgoX19oYXNfdHJpdmlhbF9tb3ZlX2NvbnN0cnVjdG9yKFQpIHx8IDo6bmRuYm9vc3Q6OmlzX3BvZDxUPjo6dmFsdWUpICYmICE6Om5kbmJvb3N0Ojppc192b2xhdGlsZTxUPjo6dmFsdWUpCi0jICAgICAgIGRlZmluZSBORE5CT09TVF9IQVNfVFJJVklBTF9NT1ZFX0FTU0lHTihUKSAoKF9faGFzX3RyaXZpYWxfbW92ZV9hc3NpZ24oVCkgfHwgOjpuZG5ib29zdDo6aXNfcG9kPFQ+Ojp2YWx1ZSkgJiYgISA6Om5kbmJvb3N0Ojppc19jb25zdDxUPjo6dmFsdWUgJiYgITo6bmRuYm9vc3Q6OmlzX3ZvbGF0aWxlPFQ+Ojp2YWx1ZSkKLSMgICBlbmRpZgotCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19UWVBFX1RSQUlUU19JTlRSSU5TSUNTCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoX19ETUNfXykgJiYgKF9fRE1DX18gPj0gMHg4NDgpCi0vLyBGb3IgRGlnaXRhbCBNYXJzIEMrKywgd3d3LmRpZ2l0YWxtYXJzLmNvbQotIyAgIGRlZmluZSBORE5CT09TVF9JU19VTklPTihUKSAoX190eXBlaW5mbyhUKSAmIDB4NDAwKQotIyAgIGRlZmluZSBORE5CT09TVF9JU19QT0QoVCkgKF9fdHlwZWluZm8oVCkgJiAweDgwMCkKLSMgICBkZWZpbmUgTkROQk9PU1RfSVNfRU1QVFkoVCkgKF9fdHlwZWluZm8oVCkgJiAweDEwMDApCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19UUklWSUFMX0NPTlNUUlVDVE9SKFQpIChfX3R5cGVpbmZvKFQpICYgMHgxMCkKLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTX1RSSVZJQUxfQ09QWShUKSAoX190eXBlaW5mbyhUKSAmIDB4MjApCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19UUklWSUFMX0FTU0lHTihUKSAoX190eXBlaW5mbyhUKSAmIDB4NDApCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19UUklWSUFMX0RFU1RSVUNUT1IoVCkgKF9fdHlwZWluZm8oVCkgJiAweDgpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19OT1RIUk9XX0NPTlNUUlVDVE9SKFQpIChfX3R5cGVpbmZvKFQpICYgMHg4MCkKLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTX05PVEhST1dfQ09QWShUKSAoX190eXBlaW5mbyhUKSAmIDB4MTAwKQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNfTk9USFJPV19BU1NJR04oVCkgKF9fdHlwZWluZm8oVCkgJiAweDIwMCkKLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTX1ZJUlRVQUxfREVTVFJVQ1RPUihUKSAoX190eXBlaW5mbyhUKSAmIDB4NCkKLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTX1RZUEVfVFJBSVRTX0lOVFJJTlNJQ1MKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9DTEFORykgJiYgZGVmaW5lZChfX2hhc19mZWF0dXJlKQotIyAgIGluY2x1ZGUgPGNzdGRkZWY+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2FtZS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcmVmZXJlbmNlLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc192b2xhdGlsZS5ocHA+Ci0KLSMgICBpZiBfX2hhc19mZWF0dXJlKGlzX3VuaW9uKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0lTX1VOSU9OKFQpIF9faXNfdW5pb24oVCkKLSMgICBlbmRpZgotIyAgIGlmICghZGVmaW5lZChfX0dMSUJDWFhfXykgfHwgKF9fR0xJQkNYWF9fID49IDIwMDgwMzA2ICYmIF9fR0xJQkNYWF9fICE9IDIwMDgwNTE5KSkgJiYgX19oYXNfZmVhdHVyZShpc19wb2QpCi0jICAgICBkZWZpbmUgTkROQk9PU1RfSVNfUE9EKFQpIF9faXNfcG9kKFQpCi0jICAgZW5kaWYKLSMgICBpZiAoIWRlZmluZWQoX19HTElCQ1hYX18pIHx8IChfX0dMSUJDWFhfXyA+PSAyMDA4MDMwNiAmJiBfX0dMSUJDWFhfXyAhPSAyMDA4MDUxOSkpICYmIF9faGFzX2ZlYXR1cmUoaXNfZW1wdHkpCi0jICAgICBkZWZpbmUgTkROQk9PU1RfSVNfRU1QVFkoVCkgX19pc19lbXB0eShUKQotIyAgIGVuZGlmCi0jICAgaWYgX19oYXNfZmVhdHVyZShoYXNfdHJpdmlhbF9jb25zdHJ1Y3RvcikKLSMgICAgIGRlZmluZSBORE5CT09TVF9IQVNfVFJJVklBTF9DT05TVFJVQ1RPUihUKSBfX2hhc190cml2aWFsX2NvbnN0cnVjdG9yKFQpCi0jICAgZW5kaWYKLSMgICBpZiBfX2hhc19mZWF0dXJlKGhhc190cml2aWFsX2NvcHkpCi0jICAgICBkZWZpbmUgTkROQk9PU1RfSEFTX1RSSVZJQUxfQ09QWShUKSAoX19oYXNfdHJpdmlhbF9jb3B5KFQpICYmICFpc19yZWZlcmVuY2U8VD46OnZhbHVlICYmICFpc192b2xhdGlsZTxUPjo6dmFsdWUpCi0jICAgZW5kaWYKLSMgICBpZiBfX2hhc19mZWF0dXJlKGhhc190cml2aWFsX2Fzc2lnbikKLSMgICAgIGRlZmluZSBORE5CT09TVF9IQVNfVFJJVklBTF9BU1NJR04oVCkgKF9faGFzX3RyaXZpYWxfYXNzaWduKFQpICYmICFpc192b2xhdGlsZTxUPjo6dmFsdWUpCi0jICAgZW5kaWYKLSMgICBpZiBfX2hhc19mZWF0dXJlKGhhc190cml2aWFsX2Rlc3RydWN0b3IpCi0jICAgICBkZWZpbmUgTkROQk9PU1RfSEFTX1RSSVZJQUxfREVTVFJVQ1RPUihUKSBfX2hhc190cml2aWFsX2Rlc3RydWN0b3IoVCkKLSMgICBlbmRpZgotIyAgIGlmIF9faGFzX2ZlYXR1cmUoaGFzX25vdGhyb3dfY29uc3RydWN0b3IpCi0jICAgICBkZWZpbmUgTkROQk9PU1RfSEFTX05PVEhST1dfQ09OU1RSVUNUT1IoVCkgX19oYXNfbm90aHJvd19jb25zdHJ1Y3RvcihUKQotIyAgIGVuZGlmCi0jICAgaWYgX19oYXNfZmVhdHVyZShoYXNfbm90aHJvd19jb3B5KQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19OT1RIUk9XX0NPUFkoVCkgKF9faGFzX25vdGhyb3dfY29weShUKSAmJiAhaXNfdm9sYXRpbGU8VD46OnZhbHVlICYmICFpc19yZWZlcmVuY2U8VD46OnZhbHVlKQotIyAgIGVuZGlmCi0jICAgaWYgX19oYXNfZmVhdHVyZShoYXNfbm90aHJvd19hc3NpZ24pCi0jICAgICBkZWZpbmUgTkROQk9PU1RfSEFTX05PVEhST1dfQVNTSUdOKFQpIChfX2hhc19ub3Rocm93X2Fzc2lnbihUKSAmJiAhaXNfdm9sYXRpbGU8VD46OnZhbHVlKQotIyAgIGVuZGlmCi0jICAgaWYgX19oYXNfZmVhdHVyZShoYXNfdmlydHVhbF9kZXN0cnVjdG9yKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0hBU19WSVJUVUFMX0RFU1RSVUNUT1IoVCkgX19oYXNfdmlydHVhbF9kZXN0cnVjdG9yKFQpCi0jICAgZW5kaWYKLSMgICBpZiBfX2hhc19mZWF0dXJlKGlzX2Fic3RyYWN0KQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0lTX0FCU1RSQUNUKFQpIF9faXNfYWJzdHJhY3QoVCkKLSMgICBlbmRpZgotIyAgIGlmIF9faGFzX2ZlYXR1cmUoaXNfYmFzZV9vZikKLSMgICAgIGRlZmluZSBORE5CT09TVF9JU19CQVNFX09GKFQsVSkgKF9faXNfYmFzZV9vZihULFUpICYmICFpc19zYW1lPFQsVT46OnZhbHVlKQotIyAgIGVuZGlmCi0jICAgaWYgX19oYXNfZmVhdHVyZShpc19jbGFzcykKLSMgICAgIGRlZmluZSBORE5CT09TVF9JU19DTEFTUyhUKSBfX2lzX2NsYXNzKFQpCi0jICAgZW5kaWYKLSMgICBpZiBfX2hhc19mZWF0dXJlKGlzX2NvbnZlcnRpYmxlX3RvKQotIyAgICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYWJzdHJhY3QuaHBwPgotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0lTX0NPTlZFUlRJQkxFKFQsVSkgKF9faXNfY29udmVydGlibGVfdG8oVCxVKSAmJiAhOjpuZG5ib29zdDo6aXNfYWJzdHJhY3Q8VT46OnZhbHVlKQotIyAgIGVuZGlmCi0jICAgaWYgX19oYXNfZmVhdHVyZShpc19lbnVtKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0lTX0VOVU0oVCkgX19pc19lbnVtKFQpCi0jICAgZW5kaWYKLSMgICBpZiBfX2hhc19mZWF0dXJlKGlzX3BvbHltb3JwaGljKQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0lTX1BPTFlNT1JQSElDKFQpIF9faXNfcG9seW1vcnBoaWMoVCkKLSMgICBlbmRpZgotIyAgIGlmIF9faGFzX2ZlYXR1cmUoaGFzX3RyaXZpYWxfbW92ZV9jb25zdHJ1Y3RvcikKLSMgICAgIGRlZmluZSBORE5CT09TVF9IQVNfVFJJVklBTF9NT1ZFX0NPTlNUUlVDVE9SKFQpIF9faGFzX3RyaXZpYWxfbW92ZV9jb25zdHJ1Y3RvcihUKQotIyAgIGVuZGlmCi0jICAgaWYgX19oYXNfZmVhdHVyZShoYXNfdHJpdmlhbF9tb3ZlX2Fzc2lnbikKLSMgICAgIGRlZmluZSBORE5CT09TVF9IQVNfVFJJVklBTF9NT1ZFX0FTU0lHTihUKSBfX2hhc190cml2aWFsX21vdmVfYXNzaWduKFQpCi0jICAgZW5kaWYKLSMgICBkZWZpbmUgTkROQk9PU1RfQUxJR05NRU5UX09GKFQpIF9fYWxpZ25vZihUKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19UWVBFX1RSQUlUU19JTlRSSU5TSUNTCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoX19HTlVDX18gPiA0KSB8fCAoKF9fR05VQ19fID09IDQpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSAmJiAhZGVmaW5lZChfX0dDQ1hNTF9fKSkpICYmICFkZWZpbmVkKE5ETkJPT1NUX0NMQU5HKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NhbWUuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3JlZmVyZW5jZS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfdm9sYXRpbGUuaHBwPgotCi0jaWZkZWYgTkROQk9PU1RfSU5URUwKLSMgIGRlZmluZSBORE5CT09TVF9JTlRFTF9UVF9PUFRTIHx8IGlzX3BvZDxUPjo6dmFsdWUKLSNlbHNlCi0jICBkZWZpbmUgTkROQk9PU1RfSU5URUxfVFRfT1BUUwotI2VuZGlmCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfSVNfVU5JT04oVCkgX19pc191bmlvbihUKQotIyAgIGRlZmluZSBORE5CT09TVF9JU19QT0QoVCkgX19pc19wb2QoVCkKLSMgICBkZWZpbmUgTkROQk9PU1RfSVNfRU1QVFkoVCkgX19pc19lbXB0eShUKQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNfVFJJVklBTF9DT05TVFJVQ1RPUihUKSAoKF9faGFzX3RyaXZpYWxfY29uc3RydWN0b3IoVCkgTkROQk9PU1RfSU5URUxfVFRfT1BUUykgJiYgISA6Om5kbmJvb3N0Ojppc192b2xhdGlsZTxUPjo6dmFsdWUpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19UUklWSUFMX0NPUFkoVCkgKChfX2hhc190cml2aWFsX2NvcHkoVCkgTkROQk9PU1RfSU5URUxfVFRfT1BUUykgJiYgIWlzX3JlZmVyZW5jZTxUPjo6dmFsdWUgJiYgISA6Om5kbmJvb3N0Ojppc192b2xhdGlsZTxUPjo6dmFsdWUpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19UUklWSUFMX0FTU0lHTihUKSAoKF9faGFzX3RyaXZpYWxfYXNzaWduKFQpIE5ETkJPT1NUX0lOVEVMX1RUX09QVFMpICYmICEgOjpuZG5ib29zdDo6aXNfdm9sYXRpbGU8VD46OnZhbHVlICYmICEgOjpuZG5ib29zdDo6aXNfY29uc3Q8VD46OnZhbHVlKQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SKFQpIChfX2hhc190cml2aWFsX2Rlc3RydWN0b3IoVCkgTkROQk9PU1RfSU5URUxfVFRfT1BUUykKLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTX05PVEhST1dfQ09OU1RSVUNUT1IoVCkgKF9faGFzX25vdGhyb3dfY29uc3RydWN0b3IoVCkgTkROQk9PU1RfSU5URUxfVFRfT1BUUykKLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTX05PVEhST1dfQ09QWShUKSAoKF9faGFzX25vdGhyb3dfY29weShUKSBORE5CT09TVF9JTlRFTF9UVF9PUFRTKSAmJiAhaXNfdm9sYXRpbGU8VD46OnZhbHVlICYmICFpc19yZWZlcmVuY2U8VD46OnZhbHVlKQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNfTk9USFJPV19BU1NJR04oVCkgKChfX2hhc19ub3Rocm93X2Fzc2lnbihUKSBORE5CT09TVF9JTlRFTF9UVF9PUFRTKSAmJiAhaXNfdm9sYXRpbGU8VD46OnZhbHVlICYmICFpc19jb25zdDxUPjo6dmFsdWUpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19WSVJUVUFMX0RFU1RSVUNUT1IoVCkgX19oYXNfdmlydHVhbF9kZXN0cnVjdG9yKFQpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfSVNfQUJTVFJBQ1QoVCkgX19pc19hYnN0cmFjdChUKQotIyAgIGRlZmluZSBORE5CT09TVF9JU19CQVNFX09GKFQsVSkgKF9faXNfYmFzZV9vZihULFUpICYmICFpc19zYW1lPFQsVT46OnZhbHVlKQotIyAgIGRlZmluZSBORE5CT09TVF9JU19DTEFTUyhUKSBfX2lzX2NsYXNzKFQpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0lTX0VOVU0oVCkgX19pc19lbnVtKFQpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0lTX1BPTFlNT1JQSElDKFQpIF9faXNfcG9seW1vcnBoaWMoVCkKLSMgICBpZiAoIWRlZmluZWQodW5peCkgJiYgIWRlZmluZWQoX191bml4X18pKSB8fCBkZWZpbmVkKF9fTFA2NF9fKQotICAgICAgLy8gR0NDIHNvbWV0aW1lcyBsaWVzIGFib3V0IGFsaWdubWVudCByZXF1aXJlbWVudHMKLSAgICAgIC8vIG9mIHR5cGUgZG91YmxlIG9uIDMyLWJpdCB1bml4IHBsYXRmb3JtcywgdXNlIHRoZQotICAgICAgLy8gb2xkIGltcGxlbWVudGF0aW9uIGluc3RlYWQgaW4gdGhhdCBjYXNlOgotIyAgICAgZGVmaW5lIE5ETkJPT1NUX0FMSUdOTUVOVF9PRihUKSBfX2FsaWdub2ZfXyhUKQotIyAgIGVuZGlmCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTX1RZUEVfVFJBSVRTX0lOVFJJTlNJQ1MKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChfX2doc19fKSAmJiAoX19HSFNfVkVSU0lPTl9OVU1CRVIgPj0gNjAwKQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NhbWUuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3JlZmVyZW5jZS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfdm9sYXRpbGUuaHBwPgotCi0jICAgZGVmaW5lIE5ETkJPT1NUX0lTX1VOSU9OKFQpIF9faXNfdW5pb24oVCkKLSMgICBkZWZpbmUgTkROQk9PU1RfSVNfUE9EKFQpIF9faXNfcG9kKFQpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0lTX0VNUFRZKFQpIF9faXNfZW1wdHkoVCkKLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTX1RSSVZJQUxfQ09OU1RSVUNUT1IoVCkgX19oYXNfdHJpdmlhbF9jb25zdHJ1Y3RvcihUKQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNfVFJJVklBTF9DT1BZKFQpIChfX2hhc190cml2aWFsX2NvcHkoVCkgJiYgIWlzX3JlZmVyZW5jZTxUPjo6dmFsdWUgJiYgIWlzX3ZvbGF0aWxlPFQ+Ojp2YWx1ZSkKLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTX1RSSVZJQUxfQVNTSUdOKFQpIChfX2hhc190cml2aWFsX2Fzc2lnbihUKSAmJiAhaXNfdm9sYXRpbGU8VD46OnZhbHVlKQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNfVFJJVklBTF9ERVNUUlVDVE9SKFQpIF9faGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcihUKQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNfTk9USFJPV19DT05TVFJVQ1RPUihUKSBfX2hhc19ub3Rocm93X2NvbnN0cnVjdG9yKFQpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19OT1RIUk9XX0NPUFkoVCkgKF9faGFzX25vdGhyb3dfY29weShUKSAmJiAhaXNfdm9sYXRpbGU8VD46OnZhbHVlICYmICFpc19yZWZlcmVuY2U8VD46OnZhbHVlKQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNfTk9USFJPV19BU1NJR04oVCkgKF9faGFzX25vdGhyb3dfYXNzaWduKFQpICYmICFpc192b2xhdGlsZTxUPjo6dmFsdWUpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19WSVJUVUFMX0RFU1RSVUNUT1IoVCkgX19oYXNfdmlydHVhbF9kZXN0cnVjdG9yKFQpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfSVNfQUJTVFJBQ1QoVCkgX19pc19hYnN0cmFjdChUKQotIyAgIGRlZmluZSBORE5CT09TVF9JU19CQVNFX09GKFQsVSkgKF9faXNfYmFzZV9vZihULFUpICYmICFpc19zYW1lPFQsVT46OnZhbHVlKQotIyAgIGRlZmluZSBORE5CT09TVF9JU19DTEFTUyhUKSBfX2lzX2NsYXNzKFQpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0lTX0VOVU0oVCkgX19pc19lbnVtKFQpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0lTX1BPTFlNT1JQSElDKFQpIF9faXNfcG9seW1vcnBoaWMoVCkKLSMgICBkZWZpbmUgTkROQk9PU1RfQUxJR05NRU5UX09GKFQpIF9fYWxpZ25vZl9fKFQpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTX1RZUEVfVFJBSVRTX0lOVFJJTlNJQ1MKLSNlbmRpZgotCi0jIGlmIGRlZmluZWQoX19DT0RFR0VBUkNfXykKLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19yZWZlcmVuY2UuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3ZvbGF0aWxlLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc192b2lkLmhwcD4KLQotIyAgIGRlZmluZSBORE5CT09TVF9JU19VTklPTihUKSBfX2lzX3VuaW9uKFQpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0lTX1BPRChUKSBfX2lzX3BvZChUKQotIyAgIGRlZmluZSBORE5CT09TVF9JU19FTVBUWShUKSBfX2lzX2VtcHR5KFQpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19UUklWSUFMX0NPTlNUUlVDVE9SKFQpIChfX2hhc190cml2aWFsX2RlZmF1bHRfY29uc3RydWN0b3IoVCkpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19UUklWSUFMX0NPUFkoVCkgKF9faGFzX3RyaXZpYWxfY29weV9jb25zdHJ1Y3RvcihUKSAmJiAhaXNfdm9sYXRpbGU8VD46OnZhbHVlICYmICFpc19yZWZlcmVuY2U8VD46OnZhbHVlKQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNfVFJJVklBTF9BU1NJR04oVCkgKF9faGFzX3RyaXZpYWxfYXNzaWduKFQpICYmICFpc192b2xhdGlsZTxUPjo6dmFsdWUpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19UUklWSUFMX0RFU1RSVUNUT1IoVCkgKF9faGFzX3RyaXZpYWxfZGVzdHJ1Y3RvcihUKSkKLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTX05PVEhST1dfQ09OU1RSVUNUT1IoVCkgKF9faGFzX25vdGhyb3dfZGVmYXVsdF9jb25zdHJ1Y3RvcihUKSkKLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTX05PVEhST1dfQ09QWShUKSAoX19oYXNfbm90aHJvd19jb3B5X2NvbnN0cnVjdG9yKFQpICYmICFpc192b2xhdGlsZTxUPjo6dmFsdWUgJiYgIWlzX3JlZmVyZW5jZTxUPjo6dmFsdWUpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0hBU19OT1RIUk9XX0FTU0lHTihUKSAoX19oYXNfbm90aHJvd19hc3NpZ24oVCkgJiYgIWlzX3ZvbGF0aWxlPFQ+Ojp2YWx1ZSkKLSMgICBkZWZpbmUgTkROQk9PU1RfSEFTX1ZJUlRVQUxfREVTVFJVQ1RPUihUKSBfX2hhc192aXJ0dWFsX2Rlc3RydWN0b3IoVCkKLQotIyAgIGRlZmluZSBORE5CT09TVF9JU19BQlNUUkFDVChUKSBfX2lzX2Fic3RyYWN0KFQpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0lTX0JBU0VfT0YoVCxVKSAoX19pc19iYXNlX29mKFQsVSkgJiYgIWlzX3ZvaWQ8VD46OnZhbHVlICYmICFpc192b2lkPFU+Ojp2YWx1ZSkKLSMgICBkZWZpbmUgTkROQk9PU1RfSVNfQ0xBU1MoVCkgX19pc19jbGFzcyhUKQotIyAgIGRlZmluZSBORE5CT09TVF9JU19DT05WRVJUSUJMRShULFUpIChfX2lzX2NvbnZlcnRpYmxlKFQsVSkgfHwgaXNfdm9pZDxVPjo6dmFsdWUpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0lTX0VOVU0oVCkgX19pc19lbnVtKFQpCi0jICAgZGVmaW5lIE5ETkJPT1NUX0lTX1BPTFlNT1JQSElDKFQpIF9faXNfcG9seW1vcnBoaWMoVCkKLSMgICBkZWZpbmUgTkROQk9PU1RfQUxJR05NRU5UX09GKFQpIGFsaWdub2YoVCkKLQotIyAgIGRlZmluZSBORE5CT09TVF9IQVNfVFlQRV9UUkFJVFNfSU5UUklOU0lDUwotI2VuZGlmCi0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9JTlRSSU5TSUNTX0hQUF9JTkNMVURFRAotCi0KLQotCi0KLQotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Fic3RyYWN0LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYWJzdHJhY3QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNjMwMjljLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYWJzdHJhY3QuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTUzICswLDAgQEAKLSNpZm5kZWYgTkROQk9PU1RfVFRfSVNfQUJTVFJBQ1RfQ0xBU1NfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1RUX0lTX0FCU1RSQUNUX0NMQVNTX0hQUAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotLy8vLy8vLy8vMS8vLy8vLy8vLzIvLy8vLy8vLy8zLy8vLy8vLy8vNC8vLy8vLy8vLzUvLy8vLy8vLy82Ly8vLy8vLy8vNy8vLy8vLy8vLzgKLS8vIGlzX2Fic3RyYWN0X2NsYXNzLmhwcDoKLS8vCi0vLyAgKEMpIENvcHlyaWdodCAyMDAyIFJhbmkgU2hhcm9uaSAocmFuaV9zaGFyb25pQGhvdG1haWwuY29tKSBhbmQgUm9iZXJ0IFJhbWV5Ci0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZQotLy8gIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8gIAotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZyBmb3IgdXBkYXRlcywgZG9jdW1lbnRhdGlvbiwgYW5kIHJldmlzaW9uIGhpc3RvcnkuCi0vLwotCi0vLyBDb21waWxlIHR5cGUgZGlzY292ZXJ5IHdoZXRoZXIgZ2l2ZW4gdHlwZSBpcyBhYnN0cmFjdCBjbGFzcyBvciBub3QuCi0vLwotLy8gICBSZXF1aXJlcyBEUiAzMzcgdG8gYmUgc3VwcG9ydGVkIGJ5IGNvbXBpbGVyCi0vLyAgIChodHRwOi8vYW51YmlzLmRrdXVnLmRrL2p0YzEvc2MyMi93ZzIxL2RvY3MvY3dnX2FjdGl2ZS5odG1sIzMzNykuCi0vLwotLy8KLS8vIEJlbGlldmVkIChKYW4gMjAwNCkgdG8gd29yayBvbjoKLS8vICAtIEdDQyAzLjQKLS8vICAtIFZDKysgNy4xCi0vLyAgLSBjb21waWxlcnMgd2l0aCBuZXcgRURHIGZyb250ZW5kIChJbnRlbCBDKysgNywgQ29tZWF1IDQuMy4yKQotLy8KLS8vIERvZXNuJ3Qgd29yayBvbjoKLS8vICAtIFZDKys2LCBWQysrNy4wIGFuZCBsZXNzCi0vLyAgLSBHQ0MgMy4zLlggYW5kIGxlc3MKLS8vICAtIEJvcmxhbmQgQysrIDYgYW5kIGxlc3MKLS8vICAgICAgCi0vLwotLy8gSGlzdG9yeToKLS8vICAtIE9yaWdpbmFsbHkgd3JpdHRlbiBieSBSYW5pIFNoYXJvbmksIHNlZQotLy8gICAgaHR0cDovL2dyb3Vwcy5nb29nbGUuY29tL2dyb3Vwcz9zZWxtPWRmODkzZGE2LjAyMDcxMTA2MTMuNzViMmZlOTAlNDBwb3N0aW5nLmdvb2dsZS5jb20KLS8vICAgIEF0IHRoaXMgdGltZSBzdXBwb3J0ZWQgYnkgRURHIChJbnRlbCBDKysgNywgQ29tZWF1IDQuMy4yKSBhbmQgVkM3LjEuCi0vLyAgLSBBZGFwdGVkIGFuZCBhZGRlZCBpbnRvIEJvb3N0LlNlcmlhbGl6YXRpb24gbGlicmFyeSBieSBSb2JlcnQgUmFtZXkgCi0vLyAgICAoc3RhcnRpbmcgd2l0aCBzdWJtaXNzaW9uICMxMCkuCi0vLyAgLSBKYW4gMjAwNDogR0NDIDMuNCBmaXhlZCB0byBzdXBwb3J0IERSMzM3IChHaW92YW5uaSBCYWpvKS4KLS8vICAtIEphbiAyMDA0OiBtb2RpZmllZCB0byBiZSBwYXJ0IG9mIEJvb3N0LlR5cGVUcmFpdHMgKFBhdmVsIFZvemVuaWxlaykuCi0vLyAgLSBOb3YgMjAwNDogQ2hyaXN0b3BoIEx1ZHdpZyBmb3VuZCB0aGF0IHRoZSBpbXBsZW1lbnRhdGlvbiBkaWQgbm90IHdvcmsgd2l0aAotLy8gICAgICAgICAgICAgIHRlbXBsYXRlIHR5cGVzIGFuZCBnY2MtMy40IG9yIFZDNy4xLCBmaXggZHVlIHRvIENocmlzdG9waCBMdWR3aWcKLS8vICAgICAgICAgICAgICBhbmQgSm9obiBNYWRkb2NrLgotLy8gIC0gRGVjIDIwMDQ6IEFkZGVkIG5ldyBjb25maWcgbWFjcm8gTkROQk9PU1RfTk9fSVNfQUJTVFJBQ1Qgd2hpY2ggY2F1c2VzIHRoZSB0ZW1wbGF0ZQotLy8gICAgICAgICAgICAgIHRvIGRlZ3JhZGUgZ3JhY2VmdWxseSwgcmF0aGVyIHRoYW4gdHJhc2ggdGhlIGNvbXBpbGVyIChKb2huIE1hZGRvY2spLgotLy8KLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2ludHJpbnNpY3MuaHBwPgotI2lmbmRlZiBORE5CT09TVF9JU19BQlNUUkFDVAotI2luY2x1ZGUgPG5kbmJvb3N0L3N0YXRpY19hc3NlcnQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC95ZXNfbm9fdHlwZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY2xhc3MuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2VfYW5kLmhwcD4KLSNpZmRlZiBORE5CT09TVF9OT19JU19BQlNUUkFDVAotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3BvbHltb3JwaGljLmhwcD4KLSNlbmRpZgotI2VuZGlmCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci1uYW1lc3BhY2UgZGV0YWlsewotCi0jaWZkZWYgTkROQk9PU1RfSVNfQUJTVFJBQ1QKLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGlzX2Fic3RyYWN0X2ltcAotewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gTkROQk9PU1RfSVNfQUJTVFJBQ1QoVCkpOwotfTsKLSNlbGlmICFkZWZpbmVkKE5ETkJPT1NUX05PX0lTX0FCU1RSQUNUKQotdGVtcGxhdGU8Y2xhc3MgVD4KLXN0cnVjdCBpc19hYnN0cmFjdF9pbXAyCi17Ci0gICAvLyBEZWR1Y3Rpb24gZmFpbHMgaWYgVCBpcyB2b2lkLCBmdW5jdGlvbiB0eXBlLCAKLSAgIC8vIHJlZmVyZW5jZSB0eXBlICgxNC44LjIvMilvciBhbiBhYnN0cmFjdCBjbGFzcyB0eXBlIAotICAgLy8gYWNjb3JkaW5nIHRvIHJldmlldyBzdGF0dXMgaXNzdWUgIzMzNwotICAgLy8KLSAgIHRlbXBsYXRlPGNsYXNzIFU+Ci0gICBzdGF0aWMgdHlwZV90cmFpdHM6Om5vX3R5cGUgY2hlY2tfc2lnKFUgKCopWzFdKTsKLSAgIHRlbXBsYXRlPGNsYXNzIFU+Ci0gICBzdGF0aWMgdHlwZV90cmFpdHM6Onllc190eXBlIGNoZWNrX3NpZyguLi4pOwotICAgLy8KLSAgIC8vIFQgbXVzdCBiZSBhIGNvbXBsZXRlIHR5cGUsIGZ1cnRoZXIgaWYgVCBpcyBhIHRlbXBsYXRlIHRoZW4KLSAgIC8vIGl0IG11c3QgYmUgaW5zdGFudGlhdGVkIGluIG9yZGVyIGZvciB1cyB0byBnZXQgdGhlIHJpZ2h0IGFuc3dlcjoKLSAgIC8vCi0gICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKHNpemVvZihUKSAhPSAwKTsKLQotICAgLy8gR0NDMiB3b24ndCBldmVuIHBhcnNlIHRoaXMgdGVtcGxhdGUgaWYgd2UgZW1iZWQgdGhlIGNvbXB1dGF0aW9uCi0gICAvLyBvZiBzMSBpbiB0aGUgY29tcHV0YXRpb24gb2YgdmFsdWUuCi0jaWZkZWYgX19HTlVDX18KLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzdGQ6OnNpemVfdCwgczEgPSBzaXplb2YoaXNfYWJzdHJhY3RfaW1wMjxUPjo6dGVtcGxhdGUgY2hlY2tfc2lnPFQ+KDApKSk7Ci0jZWxzZQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQ19GVUxMX1ZFUiwgPj0gMTQwMDUwMDAwKQotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo2MzM0KQotI2VuZGlmCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc3RkOjpzaXplX3QsIHMxID0gc2l6ZW9mKGNoZWNrX3NpZzxUPigwKSkpOwotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQ19GVUxMX1ZFUiwgPj0gMTQwMDUwMDAwKQotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotI2VuZGlmCi0gICAgCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSAKLSAgICAgIChzMSA9PSBzaXplb2YodHlwZV90cmFpdHM6Onllc190eXBlKSkpOwotfTsKLQotdGVtcGxhdGUgPGJvb2wgdj4KLXN0cnVjdCBpc19hYnN0cmFjdF9zZWxlY3QKLXsKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgc3RydWN0IHJlYmluZAotICAgewotICAgICAgdHlwZWRlZiBpc19hYnN0cmFjdF9pbXAyPFQ+IHR5cGU7Ci0gICB9OwotfTsKLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgaXNfYWJzdHJhY3Rfc2VsZWN0PGZhbHNlPgotewotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICBzdHJ1Y3QgcmViaW5kCi0gICB7Ci0gICAgICB0eXBlZGVmIGZhbHNlX3R5cGUgdHlwZTsKLSAgIH07Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpc19hYnN0cmFjdF9pbXAKLXsKLSAgIHR5cGVkZWYgaXNfYWJzdHJhY3Rfc2VsZWN0PCA6Om5kbmJvb3N0Ojppc19jbGFzczxUPjo6dmFsdWU+IHNlbGVjdG9yOwotICAgdHlwZWRlZiB0eXBlbmFtZSBzZWxlY3Rvcjo6dGVtcGxhdGUgcmViaW5kPFQ+IGJpbmRlcjsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgYmluZGVyOjp0eXBlIHR5cGU7Ci0KLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHR5cGU6OnZhbHVlKTsKLX07Ci0KLSNlbmRpZgotfQotCi0jaWZuZGVmIE5ETkJPT1NUX05PX0lTX0FCU1RSQUNUCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGlzX2Fic3RyYWN0LFQsOjpuZG5ib29zdDo6ZGV0YWlsOjppc19hYnN0cmFjdF9pbXA8VD46OnZhbHVlKQotI2Vsc2UKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfYWJzdHJhY3QsVCw6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX3BvbHltb3JwaGljX2ltcDxUPjo6dmFsdWUpCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vTkROQk9PU1RfVFRfSVNfQUJTVFJBQ1RfQ0xBU1NfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2FyaXRobWV0aWMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19hcml0aG1ldGljLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzFmNzAxNC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2FyaXRobWV0aWMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCBIb3dhcmQgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9JU19BUklUSE1FVElDX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9JU19BUklUSE1FVElDX0hQUF9JTkNMVURFRAotCi0jaWYgIWRlZmluZWQoIF9fQ09ERUdFQVJDX18gKQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2ludGVncmFsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19mbG9hdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9vci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNlbmRpZgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi0jaWYgIWRlZmluZWQoX19DT0RFR0VBUkNfXykKLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci1zdHJ1Y3QgaXNfYXJpdGhtZXRpY19pbXBsCi17IAotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IAotICAgICAgICAoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjwgCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19pbnRlZ3JhbDxUPjo6dmFsdWUsCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19mbG9hdDxUPjo6dmFsdWUKLSAgICAgICAgPjo6dmFsdWUpKTsgCi19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLSNlbmRpZgotCi0vLyogaXMgYSB0eXBlIFQgYW4gYXJpdGhtZXRpYyB0eXBlIGRlc2NyaWJlZCBpbiB0aGUgc3RhbmRhcmQgKDMuOS4xcDgpCi0jaWYgZGVmaW5lZChfX0NPREVHRUFSQ19fKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc19hcml0aG1ldGljLFQsX19pc19hcml0aG1ldGljKFQpKQotI2Vsc2UKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfYXJpdGhtZXRpYyxULDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfYXJpdGhtZXRpY19pbXBsPFQ+Ojp2YWx1ZSkKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfSVNfQVJJVEhNRVRJQ19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYXJyYXkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19hcnJheS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc4ZmY2NTIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19hcnJheS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw5MSArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IERhdmUgQWJyYWhhbXMsIFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIEhvd2FyZAotLy8gIEhpbm5hbnQgJiBKb2huIE1hZGRvY2sgMjAwMC4gIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotCi0vLyBTb21lIGZpeGVzIGZvciBpc19hcnJheSBhcmUgYmFzZWQgb24gYSBuZXdzZ3JvdXAgcG9zdGluZyBieSBKb25hdGhhbiBMdW5kcXVpc3QuCi0KLQotI2lmbmRlZiBORE5CT09TVF9UVF9JU19BUlJBWV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSVNfQVJSQVlfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9jb25maWcuaHBwPgotCi0jaWZkZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC95ZXNfbm9fdHlwZS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3dyYXAuaHBwPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxjc3RkZGVmPgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi0jaWYgZGVmaW5lZCggX19DT0RFR0VBUkNfXyApCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGlzX2FycmF5LFQsX19pc19hcnJheShUKSkKLSNlbGlmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGlzX2FycmF5LFQsZmFsc2UpCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQVJSQVlfVFlQRV9TUEVDSUFMSVpBVElPTlMpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMxXzIodHlwZW5hbWUgVCxzdGQ6OnNpemVfdCBOLGlzX2FycmF5LFRbTl0sdHJ1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzFfMih0eXBlbmFtZSBULHN0ZDo6c2l6ZV90IE4saXNfYXJyYXksVCBjb25zdFtOXSx0cnVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMV8yKHR5cGVuYW1lIFQsc3RkOjpzaXplX3QgTixpc19hcnJheSxUIHZvbGF0aWxlW05dLHRydWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMxXzIodHlwZW5hbWUgVCxzdGQ6OnNpemVfdCBOLGlzX2FycmF5LFQgY29uc3Qgdm9sYXRpbGVbTl0sdHJ1ZSkKLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIDwgMHg2MDApICYmICFkZWZpbmVkKF9fSUJNQ1BQX18pICYmICAhTkROQk9PU1RfV09SS0FST1VORChfX0RNQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg4NDApKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMV8xKHR5cGVuYW1lIFQsaXNfYXJyYXksVFtdLHRydWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMxXzEodHlwZW5hbWUgVCxpc19hcnJheSxUIGNvbnN0W10sdHJ1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzFfMSh0eXBlbmFtZSBULGlzX2FycmF5LFQgdm9sYXRpbGVbXSx0cnVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMV8xKHR5cGVuYW1lIFQsaXNfYXJyYXksVCBjb25zdCB2b2xhdGlsZVtdLHRydWUpCi0jZW5kaWYKLSNlbmRpZgotCi0jZWxzZSAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi11c2luZyA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGU7Ci11c2luZyA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6bm9fdHlwZTsKLXVzaW5nIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp3cmFwOwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IFQoKiBpc19hcnJheV90ZXN0ZXIxKHdyYXA8VD4pICkod3JhcDxUPik7Ci1jaGFyIE5ETkJPT1NUX1RUX0RFQ0wgaXNfYXJyYXlfdGVzdGVyMSguLi4pOwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVD4gbm9fdHlwZSBpc19hcnJheV90ZXN0ZXIyKFQoKikod3JhcDxUPikpOwoteWVzX3R5cGUgTkROQk9PU1RfVFRfREVDTCBpc19hcnJheV90ZXN0ZXIyKC4uLik7Ci0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUID4KLXN0cnVjdCBpc19hcnJheV9pbXBsCi17IAotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IAotICAgICAgICBzaXplb2YoOjpuZG5ib29zdDo6ZGV0YWlsOjppc19hcnJheV90ZXN0ZXIyKAotICAgICAgICAgICAgOjpuZG5ib29zdDo6ZGV0YWlsOjppc19hcnJheV90ZXN0ZXIxKAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp3cmFwPFQ+KCkKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICkpID09IDEKLSAgICApOwotfTsKLQotI2lmbmRlZiBORE5CT09TVF9OT19DVl9WT0lEX1NQRUNJQUxJWkFUSU9OUwotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc19hcnJheSx2b2lkLGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc19hcnJheSx2b2lkIGNvbnN0LGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc19hcnJheSx2b2lkIHZvbGF0aWxlLGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc19hcnJheSx2b2lkIGNvbnN0IHZvbGF0aWxlLGZhbHNlKQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGlzX2FycmF5LFQsOjpuZG5ib29zdDo6ZGV0YWlsOjppc19hcnJheV9pbXBsPFQ+Ojp2YWx1ZSkKLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0lTX0FSUkFZX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19iYXNlX2FuZF9kZXJpdmVkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYmFzZV9hbmRfZGVyaXZlZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhkYzM1YWYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19iYXNlX2FuZF9kZXJpdmVkLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI1NCArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IFJhbmkgU2hhcm9uaSAyMDAzLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLSAKLSNpZm5kZWYgTkROQk9PU1RfVFRfSVNfQkFTRV9BTkRfREVSSVZFRF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSVNfQkFTRV9BTkRfREVSSVZFRF9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2ludHJpbnNpY3MuaHBwPgotI2lmbmRlZiBORE5CT09TVF9JU19CQVNFX09GCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY2xhc3MuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NhbWUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnZlcnRpYmxlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX2FuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zdGF0aWNfYXNzZXJ0LmhwcD4KLSNlbmRpZgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9jdi5ocHA+Ci0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi0jaWZuZGVmIE5ETkJPT1NUX0lTX0JBU0VfT0YKLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU4MSkpIFwKLSAmJiAhTkROQk9PU1RfV09SS0FST1VORChfX1NVTlBST19DQyAsIDw9IDB4NTQwKSBcCi0gJiYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19FREdfVkVSU0lPTl9fLCA8PSAyNDMpIFwKLSAmJiAhTkROQk9PU1RfV09SS0FST1VORChfX0RNQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg4NDApKQotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBFREcgdmVyc2lvbiBudW1iZXIgaXMgYSBsb3dlciBlc3RpbWF0ZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSXQgaXMgbm90IGN1cnJlbnRseSBrbm93biB3aGljaCBFREcgdmVyc2lvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBleGFjdGx5IGZpeGVzIHRoZSBwcm9ibGVtLgotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi1UaGlzIHZlcnNpb24gZGV0ZWN0cyBhbWJpZ3VvdXMgYmFzZSBjbGFzc2VzIGFuZCBwcml2YXRlIGJhc2UgY2xhc3NlcwotY29ycmVjdGx5LCBhbmQgd2FzIGRldmlzZWQgYnkgUmFuaSBTaGFyb25pLgotCi1FeHBsYW5hdGlvbiBieSBUZXJqZSBTbGV0dGVibyBhbmQgUmFuaSBTaGFyb25pLgotCi1MZXQncyB0YWtlIHRoZSBtdWx0aXBsZSBiYXNlIGNsYXNzIGJlbG93IGFzIGFuIGV4YW1wbGUsIGFuZCB0aGUgZm9sbG93aW5nCi13aWxsIGFsc28gc2hvdyB3aHkgdGhlcmUncyBub3QgYSBwcm9ibGVtIHdpdGggcHJpdmF0ZSBvciBhbWJpZ3VvdXMgYmFzZQotY2xhc3M6Ci0KLXN0cnVjdCBCIHt9Owotc3RydWN0IEIxIDogQiB7fTsKLXN0cnVjdCBCMiA6IEIge307Ci1zdHJ1Y3QgRCA6IHByaXZhdGUgQjEsIHByaXZhdGUgQjIge307Ci0KLWlzX2Jhc2VfYW5kX2Rlcml2ZWQ8QiwgRD46OnZhbHVlOwotCi1GaXJzdCwgc29tZSB0ZXJtaW5vbG9neToKLQotU0MgIC0gU3RhbmRhcmQgY29udmVyc2lvbgotVURDIC0gVXNlci1kZWZpbmVkIGNvbnZlcnNpb24KLQotQSB1c2VyLWRlZmluZWQgY29udmVyc2lvbiBzZXF1ZW5jZSBjb25zaXN0cyBvZiBhbiBTQywgZm9sbG93ZWQgYnkgYW4gVURDLAotZm9sbG93ZWQgYnkgYW5vdGhlciBTQy4gRWl0aGVyIFNDIG1heSBiZSB0aGUgaWRlbnRpdHkgY29udmVyc2lvbi4KLQotV2hlbiBwYXNzaW5nIHRoZSBkZWZhdWx0LWNvbnN0cnVjdGVkIEhvc3Qgb2JqZWN0IHRvIHRoZSBvdmVybG9hZGVkIGNoZWNrX3NpZygpCi1mdW5jdGlvbnMgKGluaXRpYWxpemF0aW9uIDguNS8xNC80LzMpLCB3ZSBoYXZlIHNldmVyYWwgdmlhYmxlIGltcGxpY2l0Ci1jb252ZXJzaW9uIHNlcXVlbmNlczoKLQotRm9yICJzdGF0aWMgbm9fdHlwZSBjaGVja19zaWcoQiBjb25zdCB2b2xhdGlsZSAqLCBpbnQpIiB3ZSBoYXZlIHRoZSBjb252ZXJzaW9uCi1zZXF1ZW5jZXM6Ci0KLUMgLT4gQyBjb25zdCAoU0MgLSBRdWFsaWZpY2F0aW9uIEFkanVzdG1lbnQpIC0+IEIgY29uc3Qgdm9sYXRpbGUqIChVREMpCi1DIC0+IEQgY29uc3Qgdm9sYXRpbGUqIChVREMpIC0+IEIxIGNvbnN0IHZvbGF0aWxlKiAvIEIyIGNvbnN0IHZvbGF0aWxlKiAtPgotICAgICBCIGNvbnN0IHZvbGF0aWxlKiAoU0MgLSBDb252ZXJzaW9uKQotCi1Gb3IgInN0YXRpYyB5ZXNfdHlwZSBjaGVja19zaWcoRCBjb25zdCB2b2xhdGlsZSAqLCBUKSIgd2UgaGF2ZSB0aGUgY29udmVyc2lvbgotc2VxdWVuY2U6Ci0KLUMgLT4gRCBjb25zdCB2b2xhdGlsZSogKFVEQykKLQotQWNjb3JkaW5nIHRvIDEzLjMuMy4xLzQsIGluIGNvbnRleHQgb2YgdXNlci1kZWZpbmVkIGNvbnZlcnNpb24gb25seSB0aGUKLXN0YW5kYXJkIGNvbnZlcnNpb24gc2VxdWVuY2UgaXMgY29uc2lkZXJlZCB3aGVuIHNlbGVjdGluZyB0aGUgYmVzdCB2aWFibGUKLWZ1bmN0aW9uLCBzbyBpdCBvbmx5IGNvbnNpZGVycyB1cCB0byB0aGUgdXNlci1kZWZpbmVkIGNvbnZlcnNpb24uIEZvciB0aGUKLWZpcnN0IGZ1bmN0aW9uIHRoaXMgbWVhbnMgY2hvb3NpbmcgYmV0d2VlbiBDIC0+IEMgY29uc3QgYW5kIEMgLT4gQywgYW5kIGl0Ci1jaG9vc2VzIHRoZSBsYXR0ZXIsIGJlY2F1c2UgaXQncyBhIHByb3BlciBzdWJzZXQgKDEzLjMuMy4yLzMvMikgb2YgdGhlCi1mb3JtZXIuIFRoZXJlZm9yZSwgd2UgaGF2ZToKLQotQyAtPiBEIGNvbnN0IHZvbGF0aWxlKiAoVURDKSAtPiBCMSBjb25zdCB2b2xhdGlsZSogLyBCMiBjb25zdCB2b2xhdGlsZSogLT4KLSAgICAgQiBjb25zdCB2b2xhdGlsZSogKFNDIC0gQ29udmVyc2lvbikKLUMgLT4gRCBjb25zdCB2b2xhdGlsZSogKFVEQykKLQotSGVyZSwgdGhlIHByaW5jaXBsZSBvZiB0aGUgInNob3J0ZXN0IHN1YnNlcXVlbmNlIiBhcHBsaWVzIGFnYWluLCBhbmQgaXQKLWNob29zZXMgQyAtPiBEIGNvbnN0IHZvbGF0aWxlKi4gVGhpcyBzaG93cyB0aGF0IGl0IGRvZXNuJ3QgZXZlbiBuZWVkIHRvCi1jb25zaWRlciB0aGUgbXVsdGlwbGUgcGF0aHMgdG8gQiwgb3IgYWNjZXNzaWJpbGl0eSwgYXMgdGhhdCBwb3NzaWJpbGl0eSBpcwotZWxpbWluYXRlZCBiZWZvcmUgaXQgY291bGQgcG9zc2libHkgY2F1c2UgYW1iaWd1aXR5IG9yIGFjY2VzcyB2aW9sYXRpb24uCi0KLUlmIEQgaXMgbm90IGRlcml2ZWQgZnJvbSBCLCBpdCBoYXMgdG8gY2hvb3NlIGJldHdlZW4gQyAtPiBDIGNvbnN0IC0+IEIgY29uc3QKLXZvbGF0aWxlKiBmb3IgdGhlIGZpcnN0IGZ1bmN0aW9uLCBhbmQgQyAtPiBEIGNvbnN0IHZvbGF0aWxlKiBmb3IgdGhlIHNlY29uZAotZnVuY3Rpb24sIHdoaWNoIGFyZSBqdXN0IGFzIGdvb2QgKGJvdGggcmVxdWlyZXMgYSBVREMsIDEzLjMuMy4yKSwgaGFkIGl0IG5vdAotYmVlbiBmb3IgdGhlIGZhY3QgdGhhdCAic3RhdGljIG5vX3R5cGUgY2hlY2tfc2lnKEIgY29uc3Qgdm9sYXRpbGUgKiwgaW50KSIgaXMKLW5vdCB0ZW1wbGF0ZWQsIHdoaWNoIG1ha2VzIEMgLT4gQyBjb25zdCAtPiBCIGNvbnN0IHZvbGF0aWxlKiB0aGUgYmVzdCBjaG9pY2UKLSgxMy4zLjMvMS80KSwgcmVzdWx0aW5nIGluICJubyIuCi0KLUFsc28sIGlmIEhvc3Q6Om9wZXJhdG9yIEIgY29uc3Qgdm9sYXRpbGUqIGhhZG4ndCBiZWVuIGNvbnN0LCB0aGUgdHdvCi1jb252ZXJzaW9uIHNlcXVlbmNlcyBmb3IgInN0YXRpYyBub190eXBlIGNoZWNrX3NpZyhCIGNvbnN0IHZvbGF0aWxlICosIGludCkiLCBpbgotdGhlIGNhc2Ugd2hlcmUgRCBpcyBkZXJpdmVkIGZyb20gQiwgd291bGQgaGF2ZSBiZWVuIGFtYmlndW91cy4KLQotU2VlIGFsc28KLWh0dHA6Ly9ncm91cHMuZ29vZ2xlLmNvbS9ncm91cHM/c2VsbT1kZjg5M2RhNi4wMzAxMjgwODU5LjUyMjA4MWY3JTQwcG9zdGluZy4KLWdvb2dsZS5jb20gYW5kIGxpbmtzIHRoZXJlaW4uCi0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBCLCB0eXBlbmFtZSBEPgotc3RydWN0IGJkX2hlbHBlcgotewotICAgLy8KLSAgIC8vIFRoaXMgVkM3LjEgc3BlY2lmaWMgd29ya2Fyb3VuZCBzdG9wcyB0aGUgY29tcGlsZXIgZnJvbSBnZW5lcmF0aW5nCi0gICAvLyBhbiBpbnRlcm5hbCBjb21waWxlciBlcnJvciB3aGVuIGNvbXBpbGluZyB3aXRoIC92bWcgKHRoYW5rcyB0bwotICAgLy8gQWxla3NleSBHdXJ0b3ZveSBmb3IgZmlndXJpbmcgb3V0IHRoZSB3b3JrYXJvdW5kKS4KLSAgIC8vCi0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPT0gMTMxMCkKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICBzdGF0aWMgdHlwZV90cmFpdHM6Onllc190eXBlIGNoZWNrX3NpZyhEIGNvbnN0IHZvbGF0aWxlICosIFQpOwotICAgIHN0YXRpYyB0eXBlX3RyYWl0czo6bm9fdHlwZSAgY2hlY2tfc2lnKEIgY29uc3Qgdm9sYXRpbGUgKiwgaW50KTsKLSNlbHNlCi0gICAgc3RhdGljIHR5cGVfdHJhaXRzOjp5ZXNfdHlwZSBjaGVja19zaWcoRCBjb25zdCB2b2xhdGlsZSAqLCBsb25nKTsKLSAgICBzdGF0aWMgdHlwZV90cmFpdHM6Om5vX3R5cGUgIGNoZWNrX3NpZyhCIGNvbnN0IHZvbGF0aWxlICogY29uc3QmLCBpbnQpOwotI2VuZGlmCi19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBCLCB0eXBlbmFtZSBEPgotc3RydWN0IGlzX2Jhc2VfYW5kX2Rlcml2ZWRfaW1wbDIKLXsKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkNfRlVMTF9WRVIsID49IDE0MDA1MDAwMCkKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NjMzNCkKLSNlbmRpZgotICAgIC8vCi0gICAgLy8gTWF5IHNpbGVudGx5IGRvIHRoZSB3cm9uZyB0aGluZyB3aXRoIGluY29tcGxldGUgdHlwZXMKLSAgICAvLyB1bmxlc3Mgd2UgdHJhcCB0aGVtIGhlcmU6Ci0gICAgLy8KLSAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKHNpemVvZihCKSAhPSAwKTsKLSAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKHNpemVvZihEKSAhPSAwKTsKLQotICAgIHN0cnVjdCBIb3N0Ci0gICAgewotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsID09IDEzMTApCi0gICAgICAgIG9wZXJhdG9yIEIgY29uc3Qgdm9sYXRpbGUgKigpIGNvbnN0OwotI2Vsc2UKLSAgICAgICAgb3BlcmF0b3IgQiBjb25zdCB2b2xhdGlsZSAqIGNvbnN0JigpIGNvbnN0OwotI2VuZGlmCi0gICAgICAgIG9wZXJhdG9yIEQgY29uc3Qgdm9sYXRpbGUgKigpOwotICAgIH07Ci0KLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPQotICAgICAgICBzaXplb2YoYmRfaGVscGVyPEIsRD46OmNoZWNrX3NpZyhIb3N0KCksIDApKSA9PSBzaXplb2YodHlwZV90cmFpdHM6Onllc190eXBlKSk7Ci0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDX0ZVTExfVkVSLCA+PSAxNDAwNTAwMDApCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi19OwotCi0jZWxzZQotCi0vLwotLy8gYnJva2VuIHZlcnNpb246Ci0vLwotdGVtcGxhdGU8dHlwZW5hbWUgQiwgdHlwZW5hbWUgRD4KLXN0cnVjdCBpc19iYXNlX2FuZF9kZXJpdmVkX2ltcGwyCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICAgKDo6bmRuYm9vc3Q6OmlzX2NvbnZlcnRpYmxlPEQqLEIqPjo6dmFsdWUpKTsKLX07Ci0KLSNkZWZpbmUgTkROQk9PU1RfQlJPS0VOX0lTX0JBU0VfQU5EX0RFUklWRUQKLQotI2VuZGlmCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBCLCB0eXBlbmFtZSBEPgotc3RydWN0IGlzX2Jhc2VfYW5kX2Rlcml2ZWRfaW1wbDMKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBmYWxzZSk7Ci19OwotCi10ZW1wbGF0ZSA8Ym9vbCBpYzEsIGJvb2wgaWMyLCBib29sIGlzcz4KLXN0cnVjdCBpc19iYXNlX2FuZF9kZXJpdmVkX3NlbGVjdAotewotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFU+Ci0gICBzdHJ1Y3QgcmViaW5kCi0gICB7Ci0gICAgICB0eXBlZGVmIGlzX2Jhc2VfYW5kX2Rlcml2ZWRfaW1wbDM8VCxVPiB0eXBlOwotICAgfTsKLX07Ci0KLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgaXNfYmFzZV9hbmRfZGVyaXZlZF9zZWxlY3Q8dHJ1ZSx0cnVlLGZhbHNlPgotewotICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIFU+Ci0gICBzdHJ1Y3QgcmViaW5kCi0gICB7Ci0gICAgICB0eXBlZGVmIGlzX2Jhc2VfYW5kX2Rlcml2ZWRfaW1wbDI8VCxVPiB0eXBlOwotICAgfTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBCLCB0eXBlbmFtZSBEPgotc3RydWN0IGlzX2Jhc2VfYW5kX2Rlcml2ZWRfaW1wbAotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVtb3ZlX2N2PEI+Ojp0eXBlIG5jdkI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSByZW1vdmVfY3Y8RD46OnR5cGUgbmN2RDsKLQotICAgIHR5cGVkZWYgaXNfYmFzZV9hbmRfZGVyaXZlZF9zZWxlY3Q8Ci0gICAgICAgOjpuZG5ib29zdDo6aXNfY2xhc3M8Qj46OnZhbHVlLAotICAgICAgIDo6bmRuYm9vc3Q6OmlzX2NsYXNzPEQ+Ojp2YWx1ZSwKLSAgICAgICA6Om5kbmJvb3N0Ojppc19zYW1lPG5jdkIsbmN2RD46OnZhbHVlPiBzZWxlY3RvcjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNlbGVjdG9yOjp0ZW1wbGF0ZSByZWJpbmQ8bmN2QixuY3ZEPiBiaW5kZXI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiaW5kZXI6OnR5cGUgYm91bmRfdHlwZTsKLQotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGJvdW5kX3R5cGU6OnZhbHVlKTsKLX07Ci0jZWxzZQotdGVtcGxhdGUgPHR5cGVuYW1lIEIsIHR5cGVuYW1lIEQ+Ci1zdHJ1Y3QgaXNfYmFzZV9hbmRfZGVyaXZlZF9pbXBsCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSByZW1vdmVfY3Y8Qj46OnR5cGUgbmN2QjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHJlbW92ZV9jdjxEPjo6dHlwZSBuY3ZEOwotCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gKE5ETkJPT1NUX0lTX0JBU0VfT0YoQixEKSAmJiAhIDo6bmRuYm9vc3Q6OmlzX3NhbWU8bmN2QixuY3ZEPjo6dmFsdWUpKTsKLX07Ci0jZW5kaWYKLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYyKAotICAgICAgaXNfYmFzZV9hbmRfZGVyaXZlZAotICAgICwgQmFzZQotICAgICwgRGVyaXZlZAotICAgICwgKDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfYmFzZV9hbmRfZGVyaXZlZF9pbXBsPEJhc2UsRGVyaXZlZD46OnZhbHVlKQotICAgICkKLQotI2lmbmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMyXzIodHlwZW5hbWUgQmFzZSx0eXBlbmFtZSBEZXJpdmVkLGlzX2Jhc2VfYW5kX2Rlcml2ZWQsQmFzZSYsRGVyaXZlZCxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzJfMih0eXBlbmFtZSBCYXNlLHR5cGVuYW1lIERlcml2ZWQsaXNfYmFzZV9hbmRfZGVyaXZlZCxCYXNlLERlcml2ZWQmLGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMl8yKHR5cGVuYW1lIEJhc2UsdHlwZW5hbWUgRGVyaXZlZCxpc19iYXNlX2FuZF9kZXJpdmVkLEJhc2UmLERlcml2ZWQmLGZhbHNlKQotI2VuZGlmCi0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQ09ERUdFQVJDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDYxMCkpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMyXzEodHlwZW5hbWUgQmFzZSxpc19iYXNlX2FuZF9kZXJpdmVkLEJhc2UsQmFzZSxmYWxzZSkKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfSVNfQkFTRV9BTkRfREVSSVZFRF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYmFzZV9vZi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Jhc2Vfb2YuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiN2IzYWE2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYmFzZV9vZi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IFJhbmkgU2hhcm9uaSAyMDAzLTIwMDUuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotIAotI2lmbmRlZiBORE5CT09TVF9UVF9JU19CQVNFX09GX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9JU19CQVNFX09GX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYmFzZV9hbmRfZGVyaXZlZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2FtZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY2xhc3MuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2Vfb3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2VfYW5kLmhwcD4KLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotICAgbmFtZXNwYWNlIGRldGFpbHsKLSAgICAgIHRlbXBsYXRlIDxjbGFzcyBCLCBjbGFzcyBEPgotICAgICAgc3RydWN0IGlzX2Jhc2Vfb2ZfaW1wCi0gICAgICB7Ci0gICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSByZW1vdmVfY3Y8Qj46OnR5cGUgbmN2QjsKLSAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlbW92ZV9jdjxEPjo6dHlwZSBuY3ZEOwotICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9ICg6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPCAgICAgIAotICAgICAgICAgICAgKDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfYmFzZV9hbmRfZGVyaXZlZF9pbXBsPG5jdkIsbmN2RD46OnZhbHVlKSwKLSAgICAgICAgICAgICg6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDwgOjpuZG5ib29zdDo6aXNfc2FtZTxuY3ZCLG5jdkQ+Ojp2YWx1ZSwgOjpuZG5ib29zdDo6aXNfY2xhc3M8bmN2Qj46OnZhbHVlPjo6dmFsdWUpPjo6dmFsdWUpKTsKLSAgICAgIH07Ci0gICB9Ci0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjIoCi0gICAgICBpc19iYXNlX29mCi0gICAgLCBCYXNlCi0gICAgLCBEZXJpdmVkCi0gICAgLCAoOjpuZG5ib29zdDo6ZGV0YWlsOjppc19iYXNlX29mX2ltcDxCYXNlLCBEZXJpdmVkPjo6dmFsdWUpKQotCi0jaWZuZGVmIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzJfMih0eXBlbmFtZSBCYXNlLHR5cGVuYW1lIERlcml2ZWQsaXNfYmFzZV9vZixCYXNlJixEZXJpdmVkLGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMl8yKHR5cGVuYW1lIEJhc2UsdHlwZW5hbWUgRGVyaXZlZCxpc19iYXNlX29mLEJhc2UsRGVyaXZlZCYsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMyXzIodHlwZW5hbWUgQmFzZSx0eXBlbmFtZSBEZXJpdmVkLGlzX2Jhc2Vfb2YsQmFzZSYsRGVyaXZlZCYsZmFsc2UpCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0lTX0JBU0VfQU5EX0RFUklWRURfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NsYXNzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY2xhc3MuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxODg1ZDVjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY2xhc3MuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTQwICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IERhdmUgQWJyYWhhbXMsIFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIEhvd2FyZAotLy8gIEhpbm5hbnQgJiBKb2huIE1hZGRvY2sgMjAwMC0yMDAzLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0lTX0NMQVNTX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9JU19DTEFTU19IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaW50cmluc2ljcy5ocHA+Ci0jaWZuZGVmIE5ETkJPT1NUX0lTX0NMQVNTCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfdW5pb24uaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2VfYW5kLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX25vdC5ocHA+Ci0KLSNpZmRlZiBORE5CT09TVF9UVF9IQVNfQ09ORk9STUlOR19JU19DTEFTU19JTVBMRU1FTlRBVElPTgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC95ZXNfbm9fdHlwZS5ocHA+Ci0jZWxzZQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NjYWxhci5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYXJyYXkuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3JlZmVyZW5jZS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfdm9pZC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfZnVuY3Rpb24uaHBwPgotI2VuZGlmCi0KLSNlbmRpZiAvLyBORE5CT09TVF9JU19DTEFTUwotCi0jaWZkZWYgX19FREdfVkVSU0lPTl9fCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2N2LmhwcD4KLSNlbmRpZgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotI2lmbmRlZiBORE5CT09TVF9JU19DTEFTUwotI2lmZGVmIE5ETkJPT1NUX1RUX0hBU19DT05GT1JNSU5HX0lTX0NMQVNTX0lNUExFTUVOVEFUSU9OCi0KLS8vIFRoaXMgaXMgYWN0dWFsbHkgdGhlIGNvbmZvcm1pbmcgaW1wbGVtZW50YXRpb24gd2hpY2ggd29ya3Mgd2l0aAotLy8gYWJzdHJhY3QgY2xhc3Nlcy4gIEhvd2V2ZXIsIGVub3VnaCBjb21waWxlcnMgaGF2ZSB0cm91YmxlIHdpdGgKLS8vIGl0IHRoYXQgbW9zdCB3aWxsIHVzZSB0aGUgb25lIGluCi0vLyBuZG5ib29zdC90eXBlX3RyYWl0cy9vYmplY3RfdHJhaXRzLmhwcC4gVGhpcyBpbXBsZW1lbnRhdGlvbgotLy8gYWN0dWFsbHkgd29ya3Mgd2l0aCBWQzcuMCwgYnV0IG90aGVyIGludGVyYWN0aW9ucyBzZWVtIHRvIGZhaWwKLS8vIHdoZW4gd2UgdXNlIGl0LgotCi0vLyBpc19jbGFzczw+IG1ldGFmdW5jdGlvbiBkdWUgdG8gUGF1bCBNZW5zb25pZGVzCi0vLyAobGVhdmluZ3NAYXR0YmkuY29tKS4gRm9yIG1vcmUgZGV0YWlsczoKLS8vIGh0dHA6Ly9ncm91cHMuZ29vZ2xlLmNvbS9ncm91cHM/aGw9ZW4mc2VsbT0wMDAwMDFjMWNjODMlMjRlMTU0ZDVlMCUyNDc3NzJlNTBjJTQwYzE2MTU1MGEmcm51bT0xCi0jaWYgZGVmaW5lZChfX0dOVUNfXykgICYmICFkZWZpbmVkKF9fRURHX1ZFUlNJT05fXykKLQotdGVtcGxhdGUgPGNsYXNzIFU+IDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSBpc19jbGFzc190ZXN0ZXIodm9pZChVOjoqKSh2b2lkKSk7Ci10ZW1wbGF0ZSA8Y2xhc3MgVT4gOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Om5vX3R5cGUgaXNfY2xhc3NfdGVzdGVyKC4uLik7Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGlzX2NsYXNzX2ltcGwKLXsKLQotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9Ci0gICAgICAgICg6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDwKLSAgICAgICAgICAgIHNpemVvZihpc19jbGFzc190ZXN0ZXI8VD4oMCkpID09IHNpemVvZig6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUpLAotICAgICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX3VuaW9uPFQ+Ojp2YWx1ZSA+Ojp2YWx1ZQotICAgICAgICA+Ojp2YWx1ZSkKLSAgICAgICAgKTsKLX07Ci0KLSNlbHNlCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGlzX2NsYXNzX2ltcGwKLXsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVT4gc3RhdGljIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSBpc19jbGFzc190ZXN0ZXIodm9pZChVOjoqKSh2b2lkKSk7Ci0gICAgdGVtcGxhdGUgPGNsYXNzIFU+IHN0YXRpYyA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6bm9fdHlwZSBpc19jbGFzc190ZXN0ZXIoLi4uKTsKLQotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9Ci0gICAgICAgICg6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDwKLSAgICAgICAgICAgIHNpemVvZihpc19jbGFzc190ZXN0ZXI8VD4oMCkpID09IHNpemVvZig6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUpLAotICAgICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX3VuaW9uPFQ+Ojp2YWx1ZSA+Ojp2YWx1ZQotICAgICAgICA+Ojp2YWx1ZSkKLSAgICAgICAgKTsKLX07Ci0KLSNlbmRpZgotCi0jZWxzZQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19jbGFzc19pbXBsCi17Ci0jICAgaWZuZGVmIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPQotICAgICg6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDwKLSAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX3VuaW9uPFQ+Ojp2YWx1ZSA+Ojp2YWx1ZSwKLSAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX3NjYWxhcjxUPjo6dmFsdWUgPjo6dmFsdWUsCi0gICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19hcnJheTxUPjo6dmFsdWUgPjo6dmFsdWUsCi0gICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19yZWZlcmVuY2U8VD46OnZhbHVlPjo6dmFsdWUsCi0gICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc192b2lkPFQ+Ojp2YWx1ZSA+Ojp2YWx1ZSwKLSAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX2Z1bmN0aW9uPFQ+Ojp2YWx1ZSA+Ojp2YWx1ZQotICAgICAgICA+Ojp2YWx1ZSkpOwotIyAgIGVsc2UKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPQotICAgICg6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDwKLSAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX3VuaW9uPFQ+Ojp2YWx1ZSA+Ojp2YWx1ZSwKLSAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX3NjYWxhcjxUPjo6dmFsdWUgPjo6dmFsdWUsCi0gICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19hcnJheTxUPjo6dmFsdWUgPjo6dmFsdWUsCi0gICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19yZWZlcmVuY2U8VD46OnZhbHVlPjo6dmFsdWUsCi0gICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc192b2lkPFQ+Ojp2YWx1ZSA+Ojp2YWx1ZQotICAgICAgICA+Ojp2YWx1ZSkpOwotIyAgIGVuZGlmCi19OwotCi0jIGVuZGlmIC8vIE5ETkJPT1NUX1RUX0hBU19DT05GT1JNSU5HX0lTX0NMQVNTX0lNUExFTUVOVEFUSU9OCi0jIGVsc2UgLy8gTkROQk9PU1RfSVNfQ0xBU1MKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGlzX2NsYXNzX2ltcGwKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBORE5CT09TVF9JU19DTEFTUyhUKSk7Ci19OwotIyBlbmRpZiAvLyBORE5CT09TVF9JU19DTEFTUwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotIyBpZmRlZiBfX0VER19WRVJTSU9OX18KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoCi0gICBpc19jbGFzcyxULCBuZG5ib29zdDo6ZGV0YWlsOjppc19jbGFzc19pbXBsPHR5cGVuYW1lIG5kbmJvb3N0OjpyZW1vdmVfY3Y8VD46OnR5cGU+Ojp2YWx1ZSkKLSMgZWxzZSAKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfY2xhc3MsVCw6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX2NsYXNzX2ltcGw8VD46OnZhbHVlKQotIyBlbmRpZgotICAgIAotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0lTX0NMQVNTX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb21wbGV4LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29tcGxleC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYxZDk3MTMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb21wbGV4LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDA3LiAKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSVNfQ09NUExFWF9IUFAKLSNkZWZpbmUgTkROQk9PU1RfVFRfSVNfQ09NUExFWF9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnZlcnRpYmxlLmhwcD4KLSNpbmNsdWRlIDxjb21wbGV4PgotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcD4KLQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotbmFtZXNwYWNlIGRldGFpbHsKLQotc3RydWN0IGlzX2NvbnZlcnRpYmxlX2Zyb21fdGVzdGVyCi17Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgIGlzX2NvbnZlcnRpYmxlX2Zyb21fdGVzdGVyKGNvbnN0IHN0ZDo6Y29tcGxleDxUPiYpOwotfTsKLQotfQotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGlzX2NvbXBsZXgsVCwoOjpuZG5ib29zdDo6aXNfY29udmVydGlibGU8VCwgbmRuYm9vc3Q6OmRldGFpbDo6aXNfY29udmVydGlibGVfZnJvbV90ZXN0ZXI+Ojp2YWx1ZSkpCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvL05ETkJPT1NUX1RUX0lTX0NPTVBMRVhfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbXBvdW5kLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29tcG91bmQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZjM0YTllLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29tcG91bmQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCBIb3dhcmQgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9JU19DT01QT1VORF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSVNfQ09NUE9VTkRfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Z1bmRhbWVudGFsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX25vdC5ocHA+Ci0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLSNpZiAhZGVmaW5lZCggX19DT0RFR0VBUkNfXyApCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaXNfY29tcG91bmRfaW1wbAotewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICg6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmRhbWVudGFsPFQ+Ojp2YWx1ZQotICAgICAgID46OnZhbHVlKSk7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLSNlbmRpZiAvLyAhZGVmaW5lZCggX19DT0RFR0VBUkNfXyApCi0KLSNpZiBkZWZpbmVkKCBfX0NPREVHRUFSQ19fICkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfY29tcG91bmQsVCxfX2lzX2NvbXBvdW5kKFQpKQotI2Vsc2UKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfY29tcG91bmQsVCw6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX2NvbXBvdW5kX2ltcGw8VD46OnZhbHVlKQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9JU19DT01QT1VORF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29uc3QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb25zdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkxOWI3NTAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb25zdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNjUgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBEYXZlIEFicmFoYW1zLCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCAKLS8vICAgICAgSG93YXJkIEhpbm5hbnQgYW5kIEpvaG4gTWFkZG9jayAyMDAwLiAKLS8vICAoQykgQ29weXJpZ2h0IE1hdCBNYXJjdXMsIEplc3NlIEpvbmVzIGFuZCBBZG9iZSBTeXN0ZW1zIEluYyAyMDAxCi0KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLS8vICAgIEZpeGVkIGlzX3BvaW50ZXIsIGlzX3JlZmVyZW5jZSwgaXNfY29uc3QsIGlzX3ZvbGF0aWxlLCBpc19zYW1lLCAKLS8vICAgIGlzX21lbWJlcl9wb2ludGVyIGJhc2VkIG9uIHRoZSBTaW11bGF0ZWQgUGFydGlhbCBTcGVjaWFsaXphdGlvbiB3b3JrIAotLy8gICAgb2YgTWF0IE1hcmN1cyBhbmQgSmVzc2UgSm9uZXMuIFNlZSAgaHR0cDovL29wZW5zb3VyY2UuYWRvYmUuY29tIG9yIAotLy8gICAgaHR0cDovL2dyb3Vwcy55YWhvby5jb20vZ3JvdXAvYm9vc3QvbWVzc2FnZS81NDQxIAotLy8gICAgU29tZSB3b3JrYXJvdW5kcyBpbiBoZXJlIHVzZSBpZGVhcyBzdWdnZXN0ZWQgZnJvbSAiR2VuZXJpYzxQcm9ncmFtbWluZz46IAotLy8gICAgTWFwcGluZ3MgYmV0d2VlbiBUeXBlcyBhbmQgVmFsdWVzIiAKLS8vICAgIGJ5IEFuZHJlaSBBbGV4YW5kcmVzY3UgKHNlZSBodHRwOi8vd3d3LmN1ai5jb20vZXhwZXJ0cy8xODEwL2FsZXhhbmRyLmh0bWwpLgotCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSVNfQ09OU1RfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0lTX0NPTlNUX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9jdl90cmFpdHNfaW1wbC5ocHA+Ci0jICAgaWZkZWYgX19HTlVDX18KLSMgICAgICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcmVmZXJlbmNlLmhwcD4KLSMgICBlbmRpZgotIyAgIGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxNDAwKQotIyAgICAgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfYm91bmRzLmhwcD4KLSMgICBlbmRpZgotI2Vsc2UKLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19yZWZlcmVuY2UuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2FycmF5LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwveWVzX25vX3R5cGUuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9mYWxzZV9yZXN1bHQuaHBwPgotI2VuZGlmCi0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLSNpZiBkZWZpbmVkKCBfX0NPREVHRUFSQ19fICkKLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc19jb25zdCxULF9faXNfY29uc3QoVCkpCi0KLSNlbGlmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi0KLW5hbWVzcGFjZSBkZXRhaWx7Ci0vLwotLy8gV2UgY2FuJ3QgZmlsdGVyIG91dCBydmFsdWVfcmVmZXJlbmNlcyBhdCB0aGUgc2FtZSBsZXZlbCBhcwotLy8gcmVmZXJlbmNlcyBvciB3ZSBnZXQgYW1iaWd1aXRpZXMgZnJvbSBtc3ZjOgotLy8KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGlzX2NvbnN0X3J2YWx1ZV9maWx0ZXIKLXsKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTQwMCkKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IDo6bmRuYm9vc3Q6OmRldGFpbDo6Y3ZfdHJhaXRzX2ltcDx0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX2JvdW5kczxUPjo6dHlwZSo+Ojppc19jb25zdCk7Ci0jZWxzZQotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gOjpuZG5ib29zdDo6ZGV0YWlsOjpjdl90cmFpdHNfaW1wPFQqPjo6aXNfY29uc3QpOwotI2VuZGlmCi19OwotI2lmbmRlZiBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUwotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgaXNfY29uc3RfcnZhbHVlX2ZpbHRlcjxUJiY+Ci17Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBmYWxzZSk7Ci19OwotI2VuZGlmCi19Ci0KLS8vKiBpcyBhIHR5cGUgVCAgZGVjbGFyZWQgY29uc3QgLSBpc19jb25zdDxUPgotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc19jb25zdCxULDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfY29uc3RfcnZhbHVlX2ZpbHRlcjxUPjo6dmFsdWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMxXzEodHlwZW5hbWUgVCxpc19jb25zdCxUJixmYWxzZSkKLQotI2lmICBkZWZpbmVkKE5ETkJPT1NUX0lMTEVHQUxfQ1ZfUkVGRVJFTkNFUykKLS8vIHRoZXNlIGFyZSBpbGxlZ2FsIHNwZWNpYWxpc2F0aW9uczsgY3YtcXVhbGlmaWVzIGFwcGxpZWQgdG8KLS8vIHJlZmVyZW5jZXMgaGF2ZSBubyBlZmZlY3QgYWNjb3JkaW5nIHRvIFs4LjMuMnAxXSwKLS8vIEMrKyBCdWlsZGVyIHJlcXVpcmVzIHRoZW0gdGhvdWdoIGFzIGl0IHRyZWF0cyBjdi1xdWFsaWZpZWQKLS8vIHJlZmVyZW5jZXMgYXMgZGlzdGluY3QgdHlwZXMuLi4KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzFfMSh0eXBlbmFtZSBULGlzX2NvbnN0LFQmIGNvbnN0LGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMV8xKHR5cGVuYW1lIFQsaXNfY29uc3QsVCYgdm9sYXRpbGUsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMxXzEodHlwZW5hbWUgVCxpc19jb25zdCxUJiBjb25zdCB2b2xhdGlsZSxmYWxzZSkKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKF9fR05VQ19fIDwgMykKLS8vIHNwZWNpYWwgY2FzZSBmb3IgZ2NjIHdoZXJlIGlsbGVnYWxseSBjdi1xdWFsaWZpZWQgcmVmZXJlbmNlIHR5cGVzIGNhbiBiZQotLy8gZ2VuZXJhdGVkIGluIHNvbWUgY29ybmVyIGNhc2VzOgotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMV8xKHR5cGVuYW1lIFQsaXNfY29uc3QsVCBjb25zdCwhKDo6bmRuYm9vc3Q6OmlzX3JlZmVyZW5jZTxUPjo6dmFsdWUpKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMV8xKHR5cGVuYW1lIFQsaXNfY29uc3QsVCB2b2xhdGlsZSBjb25zdCwhKDo6bmRuYm9vc3Q6OmlzX3JlZmVyZW5jZTxUPjo6dmFsdWUpKQotI2VuZGlmCi0KLSNlbHNlCi0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi11c2luZyA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGU7Ci11c2luZyA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6bm9fdHlwZTsKLQoteWVzX3R5cGUgaXNfY29uc3RfdGVzdGVyKGNvbnN0IHZvbGF0aWxlIHZvaWQqKTsKLW5vX3R5cGUgaXNfY29uc3RfdGVzdGVyKHZvbGF0aWxlIHZvaWQgKik7Ci0KLXRlbXBsYXRlIDxib29sIGlzX3JlZiwgYm9vbCBhcnJheT4KLXN0cnVjdCBpc19jb25zdF9oZWxwZXIKLSAgICA6IHB1YmxpYyA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6ZmFsc2VfcmVzdWx0Ci17Ci19OwotCi10ZW1wbGF0ZSA8Pgotc3RydWN0IGlzX2NvbnN0X2hlbHBlcjxmYWxzZSxmYWxzZT4KLXsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHN0YXRpYyBUKiB0OwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSAoCi0gICAgICAgICAgICBzaXplb2YobmRuYm9vc3Q6OmRldGFpbDo6eWVzX3R5cGUpID09IHNpemVvZihuZG5ib29zdDo6ZGV0YWlsOjppc19jb25zdF90ZXN0ZXIodCkpCi0gICAgICAgICAgICApKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGUgPD4KLXN0cnVjdCBpc19jb25zdF9oZWxwZXI8ZmFsc2UsdHJ1ZT4KLXsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHN0YXRpYyBUIHQ7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9ICgKLSAgICAgICAgICAgIHNpemVvZihuZG5ib29zdDo6ZGV0YWlsOjp5ZXNfdHlwZSkgPT0gc2l6ZW9mKG5kbmJvb3N0OjpkZXRhaWw6OmlzX2NvbnN0X3Rlc3RlcigmdCkpCi0gICAgICAgICAgICApKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaXNfY29uc3RfaW1wbAotICAgIDogcHVibGljIGlzX2NvbnN0X2hlbHBlcjwKLSAgICAgICAgICBpc19yZWZlcmVuY2U8VD46OnZhbHVlCi0gICAgICAgICwgaXNfYXJyYXk8VD46OnZhbHVlCi0gICAgICAgID46OnRlbXBsYXRlIHJlc3VsdF88VD4KLXsKLX07Ci0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfY29uc3Qsdm9pZCxmYWxzZSkKLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1ZfVk9JRF9TUEVDSUFMSVpBVElPTlMKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfY29uc3Qsdm9pZCBjb25zdCx0cnVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc19jb25zdCx2b2lkIHZvbGF0aWxlLGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc19jb25zdCx2b2lkIGNvbnN0IHZvbGF0aWxlLHRydWUpCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLS8vKiBpcyBhIHR5cGUgVCAgZGVjbGFyZWQgY29uc3QgLSBpc19jb25zdDxUPgotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc19jb25zdCxULDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfY29uc3RfaW1wbDxUPjo6dmFsdWUpCi0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9JU19DT05TVF9IUFBfSU5DTFVERUQKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb252ZXJ0aWJsZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnZlcnRpYmxlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWYyNjMyMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnZlcnRpYmxlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ5MiArMCwwIEBACi0KLS8vIENvcHlyaWdodCAyMDAwIEpvaG4gTWFkZG9jayAoam9obkBqb2hubWFkZG9jay5jby51aykKLS8vIENvcHlyaWdodCAyMDAwIEplcmVteSBTaWVrIChqc2lla0Bsc2MubmQuZWR1KQotLy8gQ29weXJpZ2h0IDE5OTksIDIwMDAgSmFha2tvIEphcnZpIChqYWFra28uamFydmlAY3MudXR1LmZpKQotLy8KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSVNfQ09OVkVSVElCTEVfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0lTX0NPTlZFUlRJQkxFX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaW50cmluc2ljcy5ocHA+Ci0jaWZuZGVmIE5ETkJPT1NUX0lTX0NPTlZFUlRJQkxFCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3llc19ub190eXBlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2FycmF5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pY2UuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2FyaXRobWV0aWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3ZvaWQuaHBwPgotI2lmbmRlZiBORE5CT09TVF9OT19JU19BQlNUUkFDVAotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Fic3RyYWN0LmhwcD4KLSNlbmRpZgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2FkZF9sdmFsdWVfcmVmZXJlbmNlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfcnZhbHVlX3JlZmVyZW5jZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfZnVuY3Rpb24uaHBwPgotCi0jaWYgZGVmaW5lZChfX01XRVJLU19fKQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9yZWZlcmVuY2UuaHBwPgotI2VuZGlmCi0KLSNlbmRpZiAvLyBORE5CT09TVF9JU19DT05WRVJUSUJMRQotCi0vLyBzaG91bGQgYmUgYWx3YXlzIHRoZSBsYXN0ICNpbmNsdWRlIGRpcmVjdGl2ZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLSNpZm5kZWYgTkROQk9PU1RfSVNfQ09OVkVSVElCTEUKLQotLy8gaXMgb25lIHR5cGUgY29udmVydGlibGUgdG8gYW5vdGhlcj8KLS8vCi0vLyB0aGVyZSBhcmUgbXVsdGlwbGUgdmVyc2lvbnMgb2YgdGhlIGlzX2NvbnZlcnRpYmxlCi0vLyB0ZW1wbGF0ZSwgYWxtb3N0IGV2ZXJ5IGNvbXBpbGVyIHNlZW1zIHRvIHJlcXVpcmUgaXRzCi0vLyBvd24gdmVyc2lvbi4KLS8vCi0vLyBUaGFua3MgdG8gQW5kcmVpIEFsZXhhbmRyZXNjdSBmb3IgdGhlIG9yaWdpbmFsIHZlcnNpb24gb2YgdGhlCi0vLyBjb252ZXJzaW9uIGRldGVjdGlvbiB0ZWNobmlxdWUhCi0vLwotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotLy8gTVMgc3BlY2lmaWMgdmVyc2lvbjoKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVNWQykgJiYgKE5ETkJPT1NUX01TVkMgPD0gMTMwMCkKLQotLy8gVGhpcyB3b3JrYXJvdW5kIGlzIG5lY2Vzc2FyeSB0byBoYW5kbGUgd2hlbiBGcm9tIGlzIHZvaWQKLS8vIHdoaWNoIGlzIG5vcm1hbGx5IHRha2VuIGNhcmUgb2YgYnkgdGhlIHBhcnRpYWwgc3BlY2lhbGl6YXRpb24KLS8vIG9mIHRoZSBpc19jb252ZXJ0aWJsZSB0eXBlbmFtZS4KLXVzaW5nIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZTsKLXVzaW5nIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjpub190eXBlOwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgRnJvbSA+Ci1zdHJ1Y3QgZG9lc19jb252ZXJzaW9uX2V4aXN0Ci17Ci0gICAgdGVtcGxhdGU8IHR5cGVuYW1lIFRvID4gc3RydWN0IHJlc3VsdF8KLSAgICB7Ci0gICAgICAgIHN0YXRpYyBub190eXBlIE5ETkJPT1NUX1RUX0RFQ0wgX21fY2hlY2soLi4uKTsKLSAgICAgICAgc3RhdGljIHllc190eXBlIE5ETkJPT1NUX1RUX0RFQ0wgX21fY2hlY2soVG8pOwotICAgICAgICBzdGF0aWMgdHlwZW5hbWUgYWRkX2x2YWx1ZV9yZWZlcmVuY2U8RnJvbT46OnR5cGUgIF9tX2Zyb207Ci0gICAgICAgIGVudW0geyB2YWx1ZSA9IHNpemVvZiggX21fY2hlY2soX21fZnJvbSkgKSA9PSBzaXplb2YoeWVzX3R5cGUpIH07Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlPD4KLXN0cnVjdCBkb2VzX2NvbnZlcnNpb25fZXhpc3Q8dm9pZD4KLXsKLSAgICB0ZW1wbGF0ZTwgdHlwZW5hbWUgVG8gPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgZW51bSB7IHZhbHVlID0gOjpuZG5ib29zdDo6aXNfdm9pZDxUbz46OnZhbHVlIH07Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBGcm9tLCB0eXBlbmFtZSBUbz4KLXN0cnVjdCBpc19jb252ZXJ0aWJsZV9iYXNpY19pbXBsCi0gICAgOiBwdWJsaWMgZG9lc19jb252ZXJzaW9uX2V4aXN0PEZyb20+Ojp0ZW1wbGF0ZSByZXN1bHRfPFRvPgotewotfTsKLQotI2VsaWYgZGVmaW5lZChfX0JPUkxBTkRDX18pICYmIChfX0JPUkxBTkRDX18gPCAweDU2MCkKLS8vCi0vLyBzcGVjaWFsIHZlcnNpb24gZm9yIEJvcmxhbmQgY29tcGlsZXJzCi0vLyB0aGlzIHZlcnNpb24gYnJlYWtzIHdoZW4gdXNlZCBmb3Igc29tZQotLy8gVURUIGNvbnZlcnNpb25zOgotLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBGcm9tLCB0eXBlbmFtZSBUbz4KLXN0cnVjdCBpc19jb252ZXJ0aWJsZV9pbXBsCi17Ci0jcHJhZ21hIG9wdGlvbiBwdXNoIC13LTgwNzQKLSAgICAvLyBUaGlzIHdvcmthcm91bmQgZm9yIEJvcmxhbmQgYnJlYWtzIHRoZSBFREcgQysrIGZyb250ZW5kLAotICAgIC8vIHNvIHdlIG9ubHkgdXNlIGl0IGZvciBCb3JsYW5kLgotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgY2hlY2tlcgotICAgIHsKLSAgICAgICAgc3RhdGljIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjpub190eXBlIE5ETkJPT1NUX1RUX0RFQ0wgX21fY2hlY2soLi4uKTsKLSAgICAgICAgc3RhdGljIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSBORE5CT09TVF9UVF9ERUNMIF9tX2NoZWNrKFQpOwotICAgIH07Ci0KLSAgICBzdGF0aWMgdHlwZW5hbWUgYWRkX2x2YWx1ZV9yZWZlcmVuY2U8RnJvbT46OnR5cGUgIF9tX2Zyb207Ci0gICAgc3RhdGljIGJvb2wgY29uc3QgdmFsdWUgPSBzaXplb2YoIGNoZWNrZXI8VG8+OjpfbV9jaGVjayhfbV9mcm9tKSApCi0gICAgICAgID09IHNpemVvZig6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUpOwotI3ByYWdtYSBvcHRpb24gcG9wCi19OwotCi0jZWxpZiBkZWZpbmVkKF9fR05VQ19fKSB8fCBkZWZpbmVkKF9fQk9STEFORENfXykgJiYgKF9fQk9STEFORENfXyA8IDB4NjAwKQotLy8gc3BlY2lhbCB2ZXJzaW9uIGZvciBnY2MgY29tcGlsZXIgKyByZWNlbnQgQm9ybGFuZCB2ZXJzaW9ucwotLy8gbm90ZSB0aGF0IHRoaXMgZG9lcyBub3QgcGFzcyBVRFQncyB0aHJvdWdoICguLi4pCi0KLXN0cnVjdCBhbnlfY29udmVyc2lvbgotewotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBhbnlfY29udmVyc2lvbihjb25zdCB2b2xhdGlsZSBUJik7Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGFueV9jb252ZXJzaW9uKGNvbnN0IFQmKTsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gYW55X2NvbnZlcnNpb24odm9sYXRpbGUgVCYpOwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBhbnlfY29udmVyc2lvbihUJik7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IGNoZWNrZXIKLXsKLSAgICBzdGF0aWMgbmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjpub190eXBlIF9tX2NoZWNrKGFueV9jb252ZXJzaW9uIC4uLik7Ci0gICAgc3RhdGljIG5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUgX21fY2hlY2soVCwgaW50KTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBGcm9tLCB0eXBlbmFtZSBUbz4KLXN0cnVjdCBpc19jb252ZXJ0aWJsZV9iYXNpY19pbXBsCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhZGRfbHZhbHVlX3JlZmVyZW5jZTxGcm9tPjo6dHlwZSBsdmFsdWVfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFkZF9ydmFsdWVfcmVmZXJlbmNlPEZyb20+Ojp0eXBlIHJ2YWx1ZV90eXBlOwotICAgIHN0YXRpYyBsdmFsdWVfdHlwZSBfbV9mcm9tOwotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTKSAmJiAoKF9fR05VQ19fID4gNCkgfHwgKChfX0dOVUNfXyA9PSA0KSAmJiAoX19HTlVDX01JTk9SX18gPiA2KSkpCi0gICAgc3RhdGljIGJvb2wgY29uc3QgdmFsdWUgPQotICAgICAgICBzaXplb2YoIG5kbmJvb3N0OjpkZXRhaWw6OmNoZWNrZXI8VG8+OjpfbV9jaGVjayhzdGF0aWNfY2FzdDxydmFsdWVfdHlwZT4oX21fZnJvbSksIDApICkKLSAgICAgICAgPT0gc2l6ZW9mKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSk7Ci0jZWxzZQotICAgIHN0YXRpYyBib29sIGNvbnN0IHZhbHVlID0KLSAgICAgICAgc2l6ZW9mKCBuZG5ib29zdDo6ZGV0YWlsOjpjaGVja2VyPFRvPjo6X21fY2hlY2soX21fZnJvbSwgMCkgKQotICAgICAgICA9PSBzaXplb2YoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlKTsKLSNlbmRpZgotfTsKLQotI2VsaWYgKGRlZmluZWQoX19FREdfVkVSU0lPTl9fKSAmJiAoX19FREdfVkVSU0lPTl9fID49IDI0NSkgJiYgIWRlZmluZWQoX19JQ0wpKSBcCi0gICAgICB8fCBkZWZpbmVkKF9fSUJNQ1BQX18pIHx8IGRlZmluZWQoX19IUF9hQ0MpCi0vLwotLy8gVGhpcyBpcyAqYWxtb3N0KiBhbiBpZGVhbCB3b3JsZCBpbXBsZW1lbnRhdGlvbiBhcyBpdCBkb2Vzbid0IHJlbHkKLS8vIG9uIHVuZGVmaW5lZCBiZWhhdmlvdXIgYnkgcGFzc2luZyBVRFQncyB0aHJvdWdoICguLi4pLgotLy8gVW5mb3J0dW5hdGVseSBpdCBkb2Vzbid0IHF1aXRlIHBhc3MgYWxsIHRoZSB0ZXN0cyBmb3IgbW9zdCBjb21waWxlcnMgKHNpZ2guLi4pCi0vLyBFbmFibGUgdGhpcyBmb3IgeW91ciBjb21waWxlciBpZiBpc19jb252ZXJ0aWJsZV90ZXN0LmNwcCB3aWxsIGNvbXBpbGUgaXQuLi4KLS8vCi0vLyBOb3RlIHdlIGRvIG5vdCBlbmFibGUgdGhpcyBmb3IgVkM3LjEsIGJlY2F1c2UgZXZlbiB0aG91Z2ggaXQgcGFzc2VzIGFsbCB0aGUKLS8vIHR5cGVfdHJhaXRzIHRlc3RzIGl0IGlzIGtub3duIHRvIGNhdXNlIHByb2JsZW1zIHdoZW4gaW5zdGFudGlhdGlvbiBvY2N1cnMKLS8vIGRlZXAgd2l0aGluIHRoZSBpbnN0YW50aWF0aW9uIHRyZWUgOi0oCi0vLwotc3RydWN0IGFueV9jb252ZXJzaW9uCi17Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGFueV9jb252ZXJzaW9uKGNvbnN0IHZvbGF0aWxlIFQmKTsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gYW55X2NvbnZlcnNpb24oY29uc3QgVCYpOwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBhbnlfY29udmVyc2lvbih2b2xhdGlsZSBUJik7Ci0gICAgLy8gd2UgbmVlZCB0aGlzIGNvbnN0cnVjdG9yIHRvIGNhdGNoIHJlZmVyZW5jZXMgdG8gZnVuY3Rpb25zCi0gICAgLy8gKHdoaWNoIGNhbiBub3QgYmUgY3YtcXVhbGlmaWVkKToKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gYW55X2NvbnZlcnNpb24oVCYpOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIEZyb20sIHR5cGVuYW1lIFRvPgotc3RydWN0IGlzX2NvbnZlcnRpYmxlX2Jhc2ljX2ltcGwKLXsKLSAgICBzdGF0aWMgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Om5vX3R5cGUgTkROQk9PU1RfVFRfREVDTCBfbV9jaGVjayhhbnlfY29udmVyc2lvbiAuLi4pOwotICAgIHN0YXRpYyA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUgTkROQk9PU1RfVFRfREVDTCBfbV9jaGVjayhUbywgaW50KTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFkZF9sdmFsdWVfcmVmZXJlbmNlPEZyb20+Ojp0eXBlIGx2YWx1ZV90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYWRkX3J2YWx1ZV9yZWZlcmVuY2U8RnJvbT46OnR5cGUgcnZhbHVlX3R5cGU7IAotICAgIHN0YXRpYyBsdmFsdWVfdHlwZSBfbV9mcm9tOwotCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICAgc2l6ZW9mKCBfbV9jaGVjayhzdGF0aWNfY2FzdDxydmFsdWVfdHlwZT4oX21fZnJvbSksIDApICkgPT0gc2l6ZW9mKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSkKLSAgICAgICAgKTsKLSNlbHNlCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICAgc2l6ZW9mKCBfbV9jaGVjayhfbV9mcm9tLCAwKSApID09IHNpemVvZig6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUpCi0gICAgICAgICk7Ci0jZW5kaWYKLX07Ci0KLSNlbGlmIGRlZmluZWQoX19ETUNfXykKLQotc3RydWN0IGFueV9jb252ZXJzaW9uCi17Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGFueV9jb252ZXJzaW9uKGNvbnN0IHZvbGF0aWxlIFQmKTsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gYW55X2NvbnZlcnNpb24oY29uc3QgVCYpOwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBhbnlfY29udmVyc2lvbih2b2xhdGlsZSBUJik7Ci0gICAgLy8gd2UgbmVlZCB0aGlzIGNvbnN0cnVjdG9yIHRvIGNhdGNoIHJlZmVyZW5jZXMgdG8gZnVuY3Rpb25zCi0gICAgLy8gKHdoaWNoIGNhbiBub3QgYmUgY3YtcXVhbGlmaWVkKToKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gYW55X2NvbnZlcnNpb24oVCYpOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIEZyb20sIHR5cGVuYW1lIFRvPgotc3RydWN0IGlzX2NvbnZlcnRpYmxlX2Jhc2ljX2ltcGwKLXsKLSAgICAvLyBVc2luZyAnLi4uJyBkb2Vzbid0IGFsd2F5cyB3b3JrIG9uIERpZ2l0YWwgTWFycy4gVGhpcyB2ZXJzaW9uIHNlZW1zIHRvLgotICAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgIHN0YXRpYyA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6bm9fdHlwZSBORE5CT09TVF9UVF9ERUNMIF9tX2NoZWNrKGFueV9jb252ZXJzaW9uLCAgZmxvYXQsIFQpOwotICAgIHN0YXRpYyA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUgTkROQk9PU1RfVFRfREVDTCBfbV9jaGVjayhUbywgaW50LCBpbnQpOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYWRkX2x2YWx1ZV9yZWZlcmVuY2U8RnJvbT46OnR5cGUgbHZhbHVlX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhZGRfcnZhbHVlX3JlZmVyZW5jZTxGcm9tPjo6dHlwZSBydmFsdWVfdHlwZTsKLSAgICBzdGF0aWMgbHZhbHVlX3R5cGUgX21fZnJvbTsKLQotICAgIC8vIFN0YXRpYyBjb25zdGFudHMgc29tZXRpbWUgY2F1c2UgdGhlIGNvbnZlcnNpb24gb2YgX21fZnJvbSB0byBUbyB0byBiZQotICAgIC8vIGNhbGxlZC4gVGhpcyBkb2Vzbid0IGhhcHBlbiB3aXRoIGFuIGVudW0uCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTCi0gICAgZW51bSB7IHZhbHVlID0KLSAgICAgICAgc2l6ZW9mKCBfbV9jaGVjayhzdGF0aWNfY2FzdDxydmFsdWVfdHlwZT4oX21fZnJvbSksIDAsIDApICkgPT0gc2l6ZW9mKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSkKLSAgICAgICAgfTsKLSNlbHNlCi0gICAgZW51bSB7IHZhbHVlID0KLSAgICAgICAgc2l6ZW9mKCBfbV9jaGVjayhfbV9mcm9tLCAwLCAwKSApID09IHNpemVvZig6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUpCi0gICAgICAgIH07Ci0jZW5kaWYKLX07Ci0KLSNlbGlmIGRlZmluZWQoX19NV0VSS1NfXykKLS8vIAotLy8gQ1cgd29ya3Mgd2l0aCB0aGUgdGVjaG5pcXVlIGltcGxlbWVudGVkIGFib3ZlIGZvciBFREcsIGV4Y2VwdCB3aGVuIEZyb20KLS8vIGlzIGEgZnVuY3Rpb24gdHlwZSAob3IgYSByZWZlcmVuY2UgdG8gc3VjaCBhIHR5cGUpLCBpbiB3aGljaCBjYXNlCi0vLyBhbnlfY29udmVyc2lvbiB3b24ndCBiZSBhY2NlcHRlZCBhcyBhIHZhbGlkIGNvbnZlcnNpb24uIFdlIGRldGVjdCB0aGlzCi0vLyBleGNlcHRpb25hbCBzaXR1YXRpb24gYW5kIGNoYW5uZWwgaXQgdGhyb3VnaCBhbiBhbHRlcm5hdGl2ZSBhbGdvcml0aG0uCi0vLwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRnJvbSwgdHlwZW5hbWUgVG8sYm9vbCBGcm9tSXNGdW5jdGlvblJlZj4KLXN0cnVjdCBpc19jb252ZXJ0aWJsZV9iYXNpY19pbXBsX2F1eDsKLQotc3RydWN0IGFueV9jb252ZXJzaW9uCi17Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGFueV9jb252ZXJzaW9uKGNvbnN0IHZvbGF0aWxlIFQmKTsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gYW55X2NvbnZlcnNpb24oY29uc3QgVCYpOwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBhbnlfY29udmVyc2lvbih2b2xhdGlsZSBUJik7Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGFueV9jb252ZXJzaW9uKFQmKTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBGcm9tLCB0eXBlbmFtZSBUbz4KLXN0cnVjdCBpc19jb252ZXJ0aWJsZV9iYXNpY19pbXBsX2F1eDxGcm9tLFRvLGZhbHNlIC8qRnJvbUlzRnVuY3Rpb25SZWYqLz4KLXsKLSAgICBzdGF0aWMgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Om5vX3R5cGUgTkROQk9PU1RfVFRfREVDTCBfbV9jaGVjayhhbnlfY29udmVyc2lvbiAuLi4pOwotICAgIHN0YXRpYyA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUgTkROQk9PU1RfVFRfREVDTCBfbV9jaGVjayhUbywgaW50KTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFkZF9sdmFsdWVfcmVmZXJlbmNlPEZyb20+Ojp0eXBlIGx2YWx1ZV90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYWRkX3J2YWx1ZV9yZWZlcmVuY2U8RnJvbT46OnR5cGUgcnZhbHVlX3R5cGU7IAotICAgIHN0YXRpYyBsdmFsdWVfdHlwZSBfbV9mcm9tOwotCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICAgc2l6ZW9mKCBfbV9jaGVjayhzdGF0aWNfY2FzdDxydmFsdWVfdHlwZT4oX21fZnJvbSksIDApICkgPT0gc2l6ZW9mKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSkKLSAgICAgICAgKTsKLSNlbHNlCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICAgc2l6ZW9mKCBfbV9jaGVjayhfbV9mcm9tLCAwKSApID09IHNpemVvZig6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUpCi0gICAgICAgICk7Ci0jZW5kaWYKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBGcm9tLCB0eXBlbmFtZSBUbz4KLXN0cnVjdCBpc19jb252ZXJ0aWJsZV9iYXNpY19pbXBsX2F1eDxGcm9tLFRvLHRydWUgLypGcm9tSXNGdW5jdGlvblJlZiovPgotewotICAgIHN0YXRpYyA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6bm9fdHlwZSBORE5CT09TVF9UVF9ERUNMIF9tX2NoZWNrKC4uLik7Ci0gICAgc3RhdGljIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSBORE5CT09TVF9UVF9ERUNMIF9tX2NoZWNrKFRvKTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGFkZF9sdmFsdWVfcmVmZXJlbmNlPEZyb20+Ojp0eXBlIGx2YWx1ZV90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYWRkX3J2YWx1ZV9yZWZlcmVuY2U8RnJvbT46OnR5cGUgcnZhbHVlX3R5cGU7Ci0gICAgc3RhdGljIGx2YWx1ZV90eXBlIF9tX2Zyb207Ci0jaWZuZGVmIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICAgc2l6ZW9mKCBfbV9jaGVjayhzdGF0aWNfY2FzdDxydmFsdWVfdHlwZT4oX21fZnJvbSkpICkgPT0gc2l6ZW9mKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSkKLSAgICAgICAgKTsKLSNlbHNlCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICAgc2l6ZW9mKCBfbV9jaGVjayhfbV9mcm9tKSApID09IHNpemVvZig6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUpCi0gICAgICAgICk7Ci0jZW5kaWYKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBGcm9tLCB0eXBlbmFtZSBUbz4KLXN0cnVjdCBpc19jb252ZXJ0aWJsZV9iYXNpY19pbXBsOgotICBpc19jb252ZXJ0aWJsZV9iYXNpY19pbXBsX2F1eDwKLSAgICBGcm9tLFRvLAotICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmN0aW9uPHR5cGVuYW1lIDo6bmRuYm9vc3Q6OnJlbW92ZV9yZWZlcmVuY2U8RnJvbT46OnR5cGU+Ojp2YWx1ZQotICA+Ci17fTsKLQotI2Vsc2UKLS8vCi0vLyBUaGlzIHZlcnNpb24gc2VlbXMgdG8gd29yayBwcmV0dHkgd2VsbCBmb3IgYSB3aWRlIHNwZWN0cnVtIG9mIGNvbXBpbGVycywKLS8vIGhvd2V2ZXIgaXQgZG9lcyByZWx5IG9uIHVuZGVmaW5lZCBiZWhhdmlvdXIgYnkgcGFzc2luZyBVRFQncyB0aHJvdWdoICguLi4pLgotLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBGcm9tLCB0eXBlbmFtZSBUbz4KLXN0cnVjdCBpc19jb252ZXJ0aWJsZV9iYXNpY19pbXBsCi17Ci0gICAgc3RhdGljIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjpub190eXBlIE5ETkJPT1NUX1RUX0RFQ0wgX21fY2hlY2soLi4uKTsKLSAgICBzdGF0aWMgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlIE5ETkJPT1NUX1RUX0RFQ0wgX21fY2hlY2soVG8pOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYWRkX2x2YWx1ZV9yZWZlcmVuY2U8RnJvbT46OnR5cGUgbHZhbHVlX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBhZGRfcnZhbHVlX3JlZmVyZW5jZTxGcm9tPjo6dHlwZSBydmFsdWVfdHlwZTsgCi0gICAgc3RhdGljIGx2YWx1ZV90eXBlIF9tX2Zyb207Ci0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MjQ0KQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQ19GVUxMX1ZFUiwgPj0gMTQwMDUwMDAwKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NjMzNCkKLSNlbmRpZgotI2VuZGlmCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICAgc2l6ZW9mKCBfbV9jaGVjayhzdGF0aWNfY2FzdDxydmFsdWVfdHlwZT4oX21fZnJvbSkpICkgPT0gc2l6ZW9mKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSkKLSAgICAgICAgKTsKLSNlbHNlCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICAgc2l6ZW9mKCBfbV9jaGVjayhfbV9mcm9tKSApID09IHNpemVvZig6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUpCi0gICAgICAgICk7Ci0jZW5kaWYKLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi19OwotCi0jZW5kaWYgLy8gaXNfY29udmVydGlibGVfaW1wbAotCi0jaWYgZGVmaW5lZChfX0RNQ19fKQotLy8gQXMgYmVmb3JlLCBhIHN0YXRpYyBjb25zdGFudCBzb21ldGltZXMgY2F1c2VzIGVycm9ycyBvbiBEaWdpdGFsIE1hcnMuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRnJvbSwgdHlwZW5hbWUgVG8+Ci1zdHJ1Y3QgaXNfY29udmVydGlibGVfaW1wbAotewotICAgIGVudW0geyB2YWx1ZSA9Ci0gICAgICAgICg6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8Ci0gICAgICAgICAgICAgICA6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX2NvbnZlcnRpYmxlX2Jhc2ljX2ltcGw8RnJvbSxUbz46OnZhbHVlLAotICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfdm9pZDxUbz46OnZhbHVlCi0gICAgICAgICAgICA+Ojp2YWx1ZSwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PAotICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfYXJyYXk8VG8+Ojp2YWx1ZQotICAgICAgICAgICAgPjo6dmFsdWUsCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwKLSAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2Z1bmN0aW9uPFRvPjo6dmFsdWUKLSAgICAgICAgICAgID46OnZhbHVlCi0gICAgICAgID46OnZhbHVlKSB9OwotfTsKLSNlbGlmICFkZWZpbmVkKF9fQk9STEFORENfXykgfHwgX19CT1JMQU5EQ19fID4gMHg1NTEKLXRlbXBsYXRlIDx0eXBlbmFtZSBGcm9tLCB0eXBlbmFtZSBUbz4KLXN0cnVjdCBpc19jb252ZXJ0aWJsZV9pbXBsCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICAgKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPAotICAgICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjwKLSAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfY29udmVydGlibGVfYmFzaWNfaW1wbDxGcm9tLFRvPjo6dmFsdWUsCi0gICAgICAgICAgICAgICA6Om5kbmJvb3N0Ojppc192b2lkPFRvPjo6dmFsdWUKLSAgICAgICAgICAgID46OnZhbHVlLAotICAgICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8Ci0gICAgICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19hcnJheTxUbz46OnZhbHVlCi0gICAgICAgICAgICA+Ojp2YWx1ZSwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PAotICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfZnVuY3Rpb248VG8+Ojp2YWx1ZQotICAgICAgICAgICAgPjo6dmFsdWUKLSAgICAgICAgPjo6dmFsdWUpCi0gICAgICAgICk7Ci19OwotI2VuZGlmCi0KLXRlbXBsYXRlIDxib29sIHRyaXZpYWwxLCBib29sIHRyaXZpYWwyLCBib29sIGFic3RyYWN0X3RhcmdldD4KLXN0cnVjdCBpc19jb252ZXJ0aWJsZV9pbXBsX3NlbGVjdAotewotICAgdGVtcGxhdGUgPGNsYXNzIEZyb20sIGNsYXNzIFRvPgotICAgc3RydWN0IHJlYmluZAotICAgewotICAgICAgdHlwZWRlZiBpc19jb252ZXJ0aWJsZV9pbXBsPEZyb20sIFRvPiB0eXBlOwotICAgfTsKLX07Ci0KLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgaXNfY29udmVydGlibGVfaW1wbF9zZWxlY3Q8dHJ1ZSwgdHJ1ZSwgZmFsc2U+Ci17Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgRnJvbSwgY2xhc3MgVG8+Ci0gICBzdHJ1Y3QgcmViaW5kCi0gICB7Ci0gICAgICB0eXBlZGVmIHRydWVfdHlwZSB0eXBlOwotICAgfTsKLX07Ci0KLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgaXNfY29udmVydGlibGVfaW1wbF9zZWxlY3Q8ZmFsc2UsIGZhbHNlLCB0cnVlPgotewotICAgdGVtcGxhdGUgPGNsYXNzIEZyb20sIGNsYXNzIFRvPgotICAgc3RydWN0IHJlYmluZAotICAgewotICAgICAgdHlwZWRlZiBmYWxzZV90eXBlIHR5cGU7Ci0gICB9OwotfTsKLQotdGVtcGxhdGUgPD4KLXN0cnVjdCBpc19jb252ZXJ0aWJsZV9pbXBsX3NlbGVjdDx0cnVlLCBmYWxzZSwgdHJ1ZT4KLXsKLSAgIHRlbXBsYXRlIDxjbGFzcyBGcm9tLCBjbGFzcyBUbz4KLSAgIHN0cnVjdCByZWJpbmQKLSAgIHsKLSAgICAgIHR5cGVkZWYgZmFsc2VfdHlwZSB0eXBlOwotICAgfTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBGcm9tLCB0eXBlbmFtZSBUbz4KLXN0cnVjdCBpc19jb252ZXJ0aWJsZV9pbXBsX2Rpc3BhdGNoX2Jhc2UKLXsKLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChfX0hQX2FDQywgPCA2MDcwMCkKLSAgIHR5cGVkZWYgaXNfY29udmVydGlibGVfaW1wbF9zZWxlY3Q8IAotICAgICAgOjpuZG5ib29zdDo6aXNfYXJpdGhtZXRpYzxGcm9tPjo6dmFsdWUsIAotICAgICAgOjpuZG5ib29zdDo6aXNfYXJpdGhtZXRpYzxUbz46OnZhbHVlLAotI2lmbmRlZiBORE5CT09TVF9OT19JU19BQlNUUkFDVAotICAgICAgOjpuZG5ib29zdDo6aXNfYWJzdHJhY3Q8VG8+Ojp2YWx1ZQotI2Vsc2UKLSAgICAgIGZhbHNlCi0jZW5kaWYKLSAgID4gc2VsZWN0b3I7Ci0jZWxzZQotICAgdHlwZWRlZiBpc19jb252ZXJ0aWJsZV9pbXBsX3NlbGVjdDxmYWxzZSwgZmFsc2UsIGZhbHNlPiBzZWxlY3RvcjsKLSNlbmRpZgotICAgdHlwZWRlZiB0eXBlbmFtZSBzZWxlY3Rvcjo6dGVtcGxhdGUgcmViaW5kPEZyb20sIFRvPiBpc2NfYmluZGVyOwotICAgdHlwZWRlZiB0eXBlbmFtZSBpc2NfYmluZGVyOjp0eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRnJvbSwgdHlwZW5hbWUgVG8+Ci1zdHJ1Y3QgaXNfY29udmVydGlibGVfaW1wbF9kaXNwYXRjaCAKLSAgIDogcHVibGljIGlzX2NvbnZlcnRpYmxlX2ltcGxfZGlzcGF0Y2hfYmFzZTxGcm9tLCBUbz46OnR5cGUKLXt9OwotCi0vLwotLy8gTm93IGFkZCB0aGUgZnVsbCBhbmQgcGFydGlhbCBzcGVjaWFsaXNhdGlvbnMKLS8vIGZvciB2b2lkIHR5cGVzLCB0aGVzZSBhcmUgY29tbW9uIHRvIGFsbCB0aGUKLS8vIGltcGxlbWVudGF0aW9uIGFib3ZlOgotLy8KLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1ZfVk9JRF9TUEVDSUFMSVpBVElPTlMKLSMgICBkZWZpbmUgVFRfQVVYX0JPT0xfQ1ZfVk9JRF9UUkFJVF9TUEVDMl9QQVJUMSh0cmFpdCxzcGVjMSxzcGVjMix2YWx1ZSkgXAotICAgIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzIodHJhaXQsc3BlYzEsc3BlYzIsdmFsdWUpIFwKLSAgICBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMyKHRyYWl0LHNwZWMxLHNwZWMyIGNvbnN0LHZhbHVlKSBcCi0gICAgTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMih0cmFpdCxzcGVjMSxzcGVjMiB2b2xhdGlsZSx2YWx1ZSkgXAotICAgIE5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzIodHJhaXQsc3BlYzEsc3BlYzIgY29uc3Qgdm9sYXRpbGUsdmFsdWUpIFwKLSAgICAvKiovCi0KLSMgICBkZWZpbmUgVFRfQVVYX0JPT0xfQ1ZfVk9JRF9UUkFJVF9TUEVDMih0cmFpdCxzcGVjMSxzcGVjMix2YWx1ZSkgXAotICAgIFRUX0FVWF9CT09MX0NWX1ZPSURfVFJBSVRfU1BFQzJfUEFSVDEodHJhaXQsc3BlYzEsc3BlYzIsdmFsdWUpIFwKLSAgICBUVF9BVVhfQk9PTF9DVl9WT0lEX1RSQUlUX1NQRUMyX1BBUlQxKHRyYWl0LHNwZWMxIGNvbnN0LHNwZWMyLHZhbHVlKSBcCi0gICAgVFRfQVVYX0JPT0xfQ1ZfVk9JRF9UUkFJVF9TUEVDMl9QQVJUMSh0cmFpdCxzcGVjMSB2b2xhdGlsZSxzcGVjMix2YWx1ZSkgXAotICAgIFRUX0FVWF9CT09MX0NWX1ZPSURfVFJBSVRfU1BFQzJfUEFSVDEodHJhaXQsc3BlYzEgY29uc3Qgdm9sYXRpbGUsc3BlYzIsdmFsdWUpIFwKLSAgICAvKiovCi0KLSAgICBUVF9BVVhfQk9PTF9DVl9WT0lEX1RSQUlUX1NQRUMyKGlzX2NvbnZlcnRpYmxlLHZvaWQsdm9pZCx0cnVlKQotCi0jICAgdW5kZWYgVFRfQVVYX0JPT0xfQ1ZfVk9JRF9UUkFJVF9TUEVDMgotIyAgIHVuZGVmIFRUX0FVWF9CT09MX0NWX1ZPSURfVFJBSVRfU1BFQzJfUEFSVDEKLQotI2Vsc2UKLSAgICBORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMyKGlzX2NvbnZlcnRpYmxlLHZvaWQsdm9pZCx0cnVlKQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX0NWX1ZPSURfU1BFQ0lBTElaQVRJT05TCi0KLSNpZm5kZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9QQVJUSUFMX1NQRUMyXzEodHlwZW5hbWUgVG8saXNfY29udmVydGlibGUsdm9pZCxUbyxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfUEFSVElBTF9TUEVDMl8xKHR5cGVuYW1lIEZyb20saXNfY29udmVydGlibGUsRnJvbSx2b2lkLGZhbHNlKQotI2lmbmRlZiBORE5CT09TVF9OT19DVl9WT0lEX1NQRUNJQUxJWkFUSU9OUwotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9QQVJUSUFMX1NQRUMyXzEodHlwZW5hbWUgVG8saXNfY29udmVydGlibGUsdm9pZCBjb25zdCxUbyxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfUEFSVElBTF9TUEVDMl8xKHR5cGVuYW1lIFRvLGlzX2NvbnZlcnRpYmxlLHZvaWQgdm9sYXRpbGUsVG8sZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1BBUlRJQUxfU1BFQzJfMSh0eXBlbmFtZSBUbyxpc19jb252ZXJ0aWJsZSx2b2lkIGNvbnN0IHZvbGF0aWxlLFRvLGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9QQVJUSUFMX1NQRUMyXzEodHlwZW5hbWUgRnJvbSxpc19jb252ZXJ0aWJsZSxGcm9tLHZvaWQgY29uc3QsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1BBUlRJQUxfU1BFQzJfMSh0eXBlbmFtZSBGcm9tLGlzX2NvbnZlcnRpYmxlLEZyb20sdm9pZCB2b2xhdGlsZSxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfUEFSVElBTF9TUEVDMl8xKHR5cGVuYW1lIEZyb20saXNfY29udmVydGlibGUsRnJvbSx2b2lkIGNvbnN0IHZvbGF0aWxlLGZhbHNlKQotI2VuZGlmCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMihpc19jb252ZXJ0aWJsZSxGcm9tLFRvLCg6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX2NvbnZlcnRpYmxlX2ltcGxfZGlzcGF0Y2g8RnJvbSxUbz46OnZhbHVlKSkKLQotI2Vsc2UKLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMihpc19jb252ZXJ0aWJsZSxGcm9tLFRvLE5ETkJPT1NUX0lTX0NPTlZFUlRJQkxFKEZyb20sVG8pKQotCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0lTX0NPTlZFUlRJQkxFX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19lbXB0eS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2VtcHR5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDZlYzRhYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2VtcHR5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDIyOSArMCwwIEBACi0KLS8vIChDKSBDb3B5cmlnaHQgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgSG93YXJkIEhpbm5hbnQgJiBKb2huIE1hZGRvY2sgMjAwMC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSVNfRU1QVFlfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0lTX0VNUFRZX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29udmVydGlibGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2Vfb3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaW50cmluc2ljcy5ocHA+Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9jdi5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY2xhc3MuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2FkZF9yZWZlcmVuY2UuaHBwPgotI2Vsc2UKLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19yZWZlcmVuY2UuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3BvaW50ZXIuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX21lbWJlcl9wb2ludGVyLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19hcnJheS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfdm9pZC5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9hbmQuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2Vfbm90LmhwcD4KLSNlbmRpZgotCi0vLyBzaG91bGQgYmUgYWx3YXlzIHRoZSBsYXN0ICNpbmNsdWRlIGRpcmVjdGl2ZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHA+Ci0KLSNpZm5kZWYgTkROQk9PU1RfSU5URVJOQUxfSVNfRU1QVFkKLSNkZWZpbmUgTkROQk9PU1RfSU5URVJOQUxfSVNfRU1QVFkoVCkgZmFsc2UKLSNlbHNlCi0jZGVmaW5lIE5ETkJPT1NUX0lOVEVSTkFMX0lTX0VNUFRZKFQpIE5ETkJPT1NUX0lTX0VNUFRZKFQpCi0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0NjI0KSAvLyBkZXN0cnVjdG9yIGNvdWxkIG5vdCBiZSBnZW5lcmF0ZWQKLSNlbmRpZgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBlbXB0eV9oZWxwZXJfdDEgOiBwdWJsaWMgVAotewotICAgIGVtcHR5X2hlbHBlcl90MSgpOyAgLy8gaGggY29tcGlsZXIgYnVnIHdvcmthcm91bmQKLSAgICBpbnQgaVsyNTZdOwotcHJpdmF0ZToKLSAgIC8vIHN1cHByZXNzIGNvbXBpbGVyIHdhcm5pbmdzOgotICAgZW1wdHlfaGVscGVyX3QxKGNvbnN0IGVtcHR5X2hlbHBlcl90MSYpOwotICAgZW1wdHlfaGVscGVyX3QxJiBvcGVyYXRvcj0oY29uc3QgZW1wdHlfaGVscGVyX3QxJik7Ci19OwotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi1zdHJ1Y3QgZW1wdHlfaGVscGVyX3QyIHsgaW50IGlbMjU2XTsgfTsKLQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgPCAweDYwMCkKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIGJvb2wgaXNfYV9jbGFzcyA9IGZhbHNlPgotc3RydWN0IGVtcHR5X2hlbHBlcgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGZhbHNlKTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGVtcHR5X2hlbHBlcjxULCB0cnVlPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCgKLSAgICAgICAgYm9vbCwgdmFsdWUgPSAoc2l6ZW9mKGVtcHR5X2hlbHBlcl90MTxUPikgPT0gc2l6ZW9mKGVtcHR5X2hlbHBlcl90MikpCi0gICAgICAgICk7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19lbXB0eV9pbXBsCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSByZW1vdmVfY3Y8VD46OnR5cGUgY3Z0OwotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCgKLSAgICAgICAgYm9vbCwgdmFsdWUgPSAoCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPAotICAgICAgICAgICAgICA6Om5kbmJvb3N0OjpkZXRhaWw6OmVtcHR5X2hlbHBlcjxjdnQsOjpuZG5ib29zdDo6aXNfY2xhc3M8VD46OnZhbHVlPjo6dmFsdWUKLSAgICAgICAgICAgICAgLCBORE5CT09TVF9JTlRFUk5BTF9JU19FTVBUWShjdnQpCi0gICAgICAgICAgICA+Ojp2YWx1ZQotICAgICAgICAgICAgKSk7Ci19OwotCi0jZWxzZSAvLyBfX0JPUkxBTkRDX18KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIGJvb2wgaXNfYV9jbGFzcywgYm9vbCBjb252ZXJ0aWJsZV90b19pbnQ+Ci1zdHJ1Y3QgZW1wdHlfaGVscGVyCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gZmFsc2UpOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgZW1wdHlfaGVscGVyPFQsIHRydWUsIGZhbHNlPgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9ICgKLSAgICAgICAgc2l6ZW9mKGVtcHR5X2hlbHBlcl90MTxUPikgPT0gc2l6ZW9mKGVtcHR5X2hlbHBlcl90MikKLSAgICAgICAgKSk7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19lbXB0eV9pbXBsCi17Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHJlbW92ZV9jdjxUPjo6dHlwZSBjdnQ7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIGFkZF9yZWZlcmVuY2U8VD46OnR5cGUgcl90eXBlOwotCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoCi0gICAgICAgYm9vbCwgdmFsdWUgPSAoCi0gICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8Ci0gICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfaGVscGVyPAotICAgICAgICAgICAgICAgICAgY3Z0Ci0gICAgICAgICAgICAgICAgLCA6Om5kbmJvb3N0Ojppc19jbGFzczxUPjo6dmFsdWUKLSAgICAgICAgICAgICAgICAsIDo6bmRuYm9vc3Q6OmlzX2NvbnZlcnRpYmxlPCByX3R5cGUsaW50Pjo6dmFsdWUKLSAgICAgICAgICAgICAgPjo6dmFsdWUKLSAgICAgICAgICAgICAgLCBORE5CT09TVF9JTlRFUk5BTF9JU19FTVBUWShjdnQpCi0gICAgICAgICAgID46OnZhbHVlKSk7Ci19OwotCi0jZW5kaWYgLy8gX19CT1JMQU5EQ19fCi0KLSNlbHNlIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotI2lmZGVmIE5ETkJPT1NUX01TVkM2X01FTUJFUl9URU1QTEFURVMKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgZW1wdHlfaGVscGVyX3QxIDogcHVibGljIFQKLXsKLSAgIGVtcHR5X2hlbHBlcl90MSgpOwotICAgaW50IGlbMjU2XTsKLX07Ci0KLXN0cnVjdCBlbXB0eV9oZWxwZXJfdDIgeyBpbnQgaVsyNTZdOyB9OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBlbXB0eV9oZWxwZXJfYmFzZQotewotICAgZW51bSB7IHZhbHVlID0gKHNpemVvZihlbXB0eV9oZWxwZXJfdDE8VD4pID09IHNpemVvZihlbXB0eV9oZWxwZXJfdDIpKSB9OwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgZW1wdHlfaGVscGVyX25vbmJhc2UKLXsKLSAgIGVudW0geyB2YWx1ZSA9IGZhbHNlIH07Ci19OwotCi10ZW1wbGF0ZSA8Ym9vbCBiYXNlPgotc3RydWN0IGVtcHR5X2hlbHBlcl9jaG9vc2VyCi17Ci0gICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IHJlc3VsdF8KLSAgIHsKLSAgICAgIHR5cGVkZWYgZW1wdHlfaGVscGVyX25vbmJhc2U8VD4gdHlwZTsKLSAgIH07Ci19OwotCi10ZW1wbGF0ZSA8Pgotc3RydWN0IGVtcHR5X2hlbHBlcl9jaG9vc2VyPHRydWU+Ci17Ci0gICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IHJlc3VsdF8KLSAgIHsKLSAgICAgIHR5cGVkZWYgZW1wdHlfaGVscGVyX2Jhc2U8VD4gdHlwZTsKLSAgIH07Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19lbXB0eV9pbXBsCi17Ci0gICB0eXBlZGVmIDo6bmRuYm9vc3Q6OmRldGFpbDo6ZW1wdHlfaGVscGVyX2Nob29zZXI8Ci0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19yZWZlcmVuY2U8VD46OnZhbHVlID46OnZhbHVlLAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX2NvbnZlcnRpYmxlPFQsZG91YmxlPjo6dmFsdWUgPjo6dmFsdWUsCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjxUPjo6dmFsdWUgPjo6dmFsdWUsCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfbWVtYmVyX3BvaW50ZXI8VD46OnZhbHVlID46OnZhbHVlLAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX2FycmF5PFQ+Ojp2YWx1ZSA+Ojp2YWx1ZSwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc192b2lkPFQ+Ojp2YWx1ZSA+Ojp2YWx1ZSwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PAotICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfY29udmVydGlibGU8VCx2b2lkIGNvbnN0IHZvbGF0aWxlKj46OnZhbHVlCi0gICAgICAgICAgICA+Ojp2YWx1ZQotICAgICAgPjo6dmFsdWUgPiBjaG9vc2VyOwotCi0gICB0eXBlZGVmIHR5cGVuYW1lIGNob29zZXI6OnRlbXBsYXRlIHJlc3VsdF88VD4gcmVzdWx0OwotICAgdHlwZWRlZiB0eXBlbmFtZSByZXN1bHQ6OnR5cGUgZWhfdHlwZTsKLQotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICg6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPGVoX3R5cGU6OnZhbHVlLCBORE5CT09TVF9JTlRFUk5BTF9JU19FTVBUWShUKT46OnZhbHVlKSk7Ci19OwotCi0jZWxzZQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IGlzX2VtcHR5X2ltcGwKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBORE5CT09TVF9JTlRFUk5BTF9JU19FTVBUWShUKSk7Ci19OwotCi0jZW5kaWYgIC8vIE5ETkJPT1NUX01TVkM2X01FTUJFUl9URU1QTEFURVMKLQotI2VuZGlmICAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLS8vIHRoZXNlIGhlbHAgd2hlbiB0aGUgY29tcGlsZXIgaGFzIG5vIHBhcnRpYWwgc3BlY2lhbGl6YXRpb24gc3VwcG9ydDoKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfZW1wdHksdm9pZCxmYWxzZSkKLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1ZfVk9JRF9TUEVDSUFMSVpBVElPTlMKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfZW1wdHksdm9pZCBjb25zdCxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfZW1wdHksdm9pZCB2b2xhdGlsZSxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfZW1wdHksdm9pZCBjb25zdCB2b2xhdGlsZSxmYWxzZSkKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc19lbXB0eSxULDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfZW1wdHlfaW1wbDxUPjo6dmFsdWUpCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHA+Ci0KLSN1bmRlZiBORE5CT09TVF9JTlRFUk5BTF9JU19FTVBUWQotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfSVNfRU1QVFlfSFBQX0lOQ0xVREVECi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfZW51bS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2VudW0uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMTA2YzA5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfZW51bS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxODkgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBEYXZlIEFicmFoYW1zLCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCBIb3dhcmQKLS8vICBIaW5uYW50ICYgSm9obiBNYWRkb2NrIDIwMDAuICAKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLQotI2lmbmRlZiBORE5CT09TVF9UVF9JU19FTlVNX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9JU19FTlVNX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaW50cmluc2ljcy5ocHA+Ci0jaWZuZGVmIE5ETkJPT1NUX0lTX0VOVU0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfcmVmZXJlbmNlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19hcml0aG1ldGljLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19yZWZlcmVuY2UuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnZlcnRpYmxlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19hcnJheS5ocHA+Ci0jaWZkZWYgX19HTlVDX18KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19mdW5jdGlvbi5ocHA+Ci0jZW5kaWYKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9jb25maWcuaHBwPgotI2lmIGRlZmluZWQoTkROQk9PU1RfVFRfSEFTX0NPTkZPUk1JTkdfSVNfQ0xBU1NfSU1QTEVNRU5UQVRJT04pIAotIyAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY2xhc3MuaHBwPgotIyAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfdW5pb24uaHBwPgotI2VuZGlmCi0jZW5kaWYKLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotI2lmbmRlZiBORE5CT09TVF9JU19FTlVNCi0jaWYgIShkZWZpbmVkKF9fQk9STEFORENfXykgJiYgKF9fQk9STEFORENfXyA8PSAweDU1MSkpCi0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi0jaWYgZGVmaW5lZChORE5CT09TVF9UVF9IQVNfQ09ORk9STUlOR19JU19DTEFTU19JTVBMRU1FTlRBVElPTikgCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGlzX2NsYXNzX29yX3VuaW9uCi17Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPQotICAgICAgKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8Ci0gICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2NsYXNzPFQ+Ojp2YWx1ZQotICAgICAgICAgLCA6Om5kbmJvb3N0Ojppc191bmlvbjxUPjo6dmFsdWUKLSAgICAgID46OnZhbHVlKSk7Ci19OwotCi0jZWxzZQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19jbGFzc19vcl91bmlvbgotewotIyBpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDwgMTMwMCkgfHwgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU4MSkpLy8gd2Ugc2ltcGx5IGNhbid0IGRldGVjdCBpdCB0aGlzIHdheS4KLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBmYWxzZSk7Ci0jIGVsc2UKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVT4gc3RhdGljIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSBpc19jbGFzc19vcl91bmlvbl90ZXN0ZXIodm9pZChVOjoqKSh2b2lkKSk7Ci0KLSMgIGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPT0gMTMwMCkgICAgICAgICAgICAgICAgIFwKLSAgICB8fCBORE5CT09TVF9XT1JLQVJPVU5EKF9fTVdFUktTX18sIDw9IDB4MzAwMCkgLy8gbm8gU0ZJTkFFCi0gICAgc3RhdGljIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjpub190eXBlIGlzX2NsYXNzX29yX3VuaW9uX3Rlc3RlciguLi4pOwotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCgKLSAgICAgICAgYm9vbCwgdmFsdWUgPSBzaXplb2YoaXNfY2xhc3Nfb3JfdW5pb25fdGVzdGVyKDApKSA9PSBzaXplb2YoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlKSk7Ci0jICBlbHNlCi0gICAgdGVtcGxhdGUgPGNsYXNzIFU+Ci0gICAgc3RhdGljIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjpub190eXBlIGlzX2NsYXNzX29yX3VuaW9uX3Rlc3RlciguLi4pOwotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCgKLSAgICAgICAgYm9vbCwgdmFsdWUgPSBzaXplb2YoaXNfY2xhc3Nfb3JfdW5pb25fdGVzdGVyPFQ+KDApKSA9PSBzaXplb2YoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlKSk7Ci0jICBlbmRpZgotIyBlbmRpZgotfTsKLSNlbmRpZgotCi1zdHJ1Y3QgaW50X2NvbnZlcnRpYmxlCi17Ci0gICAgaW50X2NvbnZlcnRpYmxlKGludCk7Ci19OwotCi0vLyBEb24ndCBldmFsdWF0ZSBjb252ZXJ0aWJpbGl0eSB0byBpbnRfY29udmVydGlibGUgdW5sZXNzIHRoZSB0eXBlCi0vLyBpcyBub24tYXJpdGhtZXRpYy4gVGhpcyBzdXBwcmVzc2VzIHdhcm5pbmdzIHdpdGggR0NDLgotdGVtcGxhdGUgPGJvb2wgaXNfdHlwZW5hbWVfYXJpdGhtZXRpY19vcl9yZWZlcmVuY2UgPSB0cnVlPgotc3RydWN0IGlzX2VudW1faGVscGVyCi17Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCB0eXBlCi0gICAgewotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBmYWxzZSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgaXNfZW51bV9oZWxwZXI8ZmFsc2U+Ci17Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCB0eXBlCi0gICAgICAgOiBwdWJsaWMgOjpuZG5ib29zdDo6aXNfY29udmVydGlibGU8dHlwZW5hbWUgbmRuYm9vc3Q6OmFkZF9yZWZlcmVuY2U8VD46OnR5cGUsOjpuZG5ib29zdDo6ZGV0YWlsOjppbnRfY29udmVydGlibGU+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IGlzX2VudW1faW1wbAotewotICAgLy90eXBlZGVmIDo6bmRuYm9vc3Q6OmFkZF9yZWZlcmVuY2U8VD4gYXJfdDsKLSAgIC8vdHlwZWRlZiB0eXBlbmFtZSBhcl90Ojp0eXBlIHJfdHlwZTsKLQotI2lmIGRlZmluZWQoX19HTlVDX18pCi0KLSNpZmRlZiBORE5CT09TVF9UVF9IQVNfQ09ORk9STUlOR19JU19DTEFTU19JTVBMRU1FTlRBVElPTgotICAgIAotICAgLy8gV2UgTVVTVCBjaGVjayBmb3IgaXNfY2xhc3Nfb3JfdW5pb24gb24gY29uZm9ybWluZyBjb21waWxlcnMgaW4KLSAgIC8vIG9yZGVyIHRvIGNvcnJlY3RseSBkZWR1Y2UgdGhhdCBub25jb3B5YWJsZSB0eXBlcyBhcmUgbm90IGVudW1zCi0gICAvLyAoZHdhIDIwMDIvMDQvMTUpLi4uCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgc2VsZWN0b3IgPQotICAgICAgKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8Ci0gICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2FyaXRobWV0aWM8VD46OnZhbHVlCi0gICAgICAgICAsIDo6bmRuYm9vc3Q6OmlzX3JlZmVyZW5jZTxUPjo6dmFsdWUKLSAgICAgICAgICwgOjpuZG5ib29zdDo6aXNfZnVuY3Rpb248VD46OnZhbHVlCi0gICAgICAgICAsIGlzX2NsYXNzX29yX3VuaW9uPFQ+Ojp2YWx1ZQotICAgICAgICAgLCBpc19hcnJheTxUPjo6dmFsdWUKLSAgICAgID46OnZhbHVlKSk7Ci0jZWxzZQotICAgLy8gLi4uaG93ZXZlciwgbm90IGNoZWNraW5nIGlzX2NsYXNzX29yX3VuaW9uIG9uIG5vbi1jb25mb3JtaW5nCi0gICAvLyBjb21waWxlcnMgcHJldmVudHMgYSBkZXBlbmRlbmN5IHJlY3Vyc2lvbi4KLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBzZWxlY3RvciA9Ci0gICAgICAoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjwKLSAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfYXJpdGhtZXRpYzxUPjo6dmFsdWUKLSAgICAgICAgICwgOjpuZG5ib29zdDo6aXNfcmVmZXJlbmNlPFQ+Ojp2YWx1ZQotICAgICAgICAgLCA6Om5kbmJvb3N0Ojppc19mdW5jdGlvbjxUPjo6dmFsdWUKLSAgICAgICAgICwgaXNfYXJyYXk8VD46OnZhbHVlCi0gICAgICA+Ojp2YWx1ZSkpOwotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0hBU19DT05GT1JNSU5HX0lTX0NMQVNTX0lNUExFTUVOVEFUSU9OCi0KLSNlbHNlIC8vICFkZWZpbmVkKF9fR05VQ19fKToKLSAgICAKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCBzZWxlY3RvciA9Ci0gICAgICAoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjwKLSAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfYXJpdGhtZXRpYzxUPjo6dmFsdWUKLSAgICAgICAgICwgOjpuZG5ib29zdDo6aXNfcmVmZXJlbmNlPFQ+Ojp2YWx1ZQotICAgICAgICAgLCBpc19jbGFzc19vcl91bmlvbjxUPjo6dmFsdWUKLSAgICAgICAgICwgaXNfYXJyYXk8VD46OnZhbHVlCi0gICAgICA+Ojp2YWx1ZSkpOwotICAgIAotI2VuZGlmCi0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgPCAweDYwMCkKLSAgICB0eXBlZGVmIDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfZW51bV9oZWxwZXI8Ci0gICAgICAgICAgOjpuZG5ib29zdDo6ZGV0YWlsOjppc19lbnVtX2ltcGw8VD46OnNlbGVjdG9yCi0gICAgICAgID4gc2VfdDsKLSNlbHNlCi0gICAgdHlwZWRlZiA6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX2VudW1faGVscGVyPHNlbGVjdG9yPiBzZV90OwotI2VuZGlmCi0KLSAgICB0eXBlZGVmIHR5cGVuYW1lIHNlX3Q6OnRlbXBsYXRlIHR5cGU8VD4gaGVscGVyOwotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGhlbHBlcjo6dmFsdWUpOwotfTsKLQotLy8gdGhlc2UgaGVscCBvbiBjb21waWxlcnMgd2l0aCBubyBwYXJ0aWFsIHNwZWNpYWxpemF0aW9uIHN1cHBvcnQ6Ci1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX2VudW0sdm9pZCxmYWxzZSkKLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1ZfVk9JRF9TUEVDSUFMSVpBVElPTlMKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfZW51bSx2b2lkIGNvbnN0LGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc19lbnVtLHZvaWQgdm9sYXRpbGUsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX2VudW0sdm9pZCBjb25zdCB2b2xhdGlsZSxmYWxzZSkKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc19lbnVtLFQsOjpuZG5ib29zdDo6ZGV0YWlsOjppc19lbnVtX2ltcGw8VD46OnZhbHVlKQotCi0jZWxzZSAvLyBfX0JPUkxBTkRDX18KLS8vCi0vLyBidWdneSBpc19jb252ZXJ0aWJsZSBwcmV2ZW50cyB3b3JraW5nCi0vLyBpbXBsZW1lbnRhdGlvbiBvZiBpc19lbnVtOgotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc19lbnVtLFQsZmFsc2UpCi0KLSNlbmRpZgotCi0jZWxzZSAvLyBORE5CT09TVF9JU19FTlVNCi0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfZW51bSxULE5ETkJPT1NUX0lTX0VOVU0oVCkpCi0KLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfSVNfRU5VTV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfZmxvYXQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19mbG9hdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMxMWI1ODUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19mbG9hdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIEhvd2FyZCBIaW5uYW50ICYgSm9obiBNYWRkb2NrIDIwMDAuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RZUEVfVFJBSVRTX0lTX0ZMT0FUX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UWVBFX1RSQUlUU19JU19GTE9BVF9IUFBfSU5DTFVERUQKLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotLy8qIGlzIGEgdHlwZSBUIGEgZmxvYXRpbmctcG9pbnQgdHlwZSBkZXNjcmliZWQgaW4gdGhlIHN0YW5kYXJkICgzLjkuMXA4KQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc19mbG9hdCxULGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfQ1ZfU1BFQzEoaXNfZmxvYXQsZmxvYXQsdHJ1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0NWX1NQRUMxKGlzX2Zsb2F0LGRvdWJsZSx0cnVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfQ1ZfU1BFQzEoaXNfZmxvYXQsbG9uZyBkb3VibGUsdHJ1ZSkKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RZUEVfVFJBSVRTX0lTX0ZMT0FUX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19mbG9hdGluZ19wb2ludC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Zsb2F0aW5nX3BvaW50LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzMzODI2Ni4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Zsb2F0aW5nX3BvaW50LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgSG93YXJkIEhpbm5hbnQgJiBKb2huIE1hZGRvY2sgMjAwMC0yMDA1LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UWVBFX1RSQUlUU19JU19GTE9BVElOR19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFlQRV9UUkFJVFNfSVNfRkxPQVRJTkdfSFBQX0lOQ0xVREVECi0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLS8vKiBpcyBhIHR5cGUgVCBhIGZsb2F0aW5nLXBvaW50IHR5cGUgZGVzY3JpYmVkIGluIHRoZSBzdGFuZGFyZCAoMy45LjFwOCkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfZmxvYXRpbmdfcG9pbnQsVCxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0NWX1NQRUMxKGlzX2Zsb2F0aW5nX3BvaW50LGZsb2F0LHRydWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9DVl9TUEVDMShpc19mbG9hdGluZ19wb2ludCxkb3VibGUsdHJ1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0NWX1NQRUMxKGlzX2Zsb2F0aW5nX3BvaW50LGxvbmcgZG91YmxlLHRydWUpCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UWVBFX1RSQUlUU19JU19GTE9BVF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfZnVuY3Rpb24uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19mdW5jdGlvbi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjYjQyYjcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19mdW5jdGlvbi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTEgKzAsMCBAQAotCi0vLyAgQ29weXJpZ2h0IDIwMDAgSm9obiBNYWRkb2NrIChqb2huQGpvaG5tYWRkb2NrLmNvLnVrKQotLy8gIENvcHlyaWdodCAyMDAyIEFsZWtzZXkgR3VydG92b3kgKGFndXJ0b3ZveUBtZXRhLWNvbW0uY29tKQotLy8KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSVNfRlVOQ1RJT05fSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0lTX0ZVTkNUSU9OX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcmVmZXJlbmNlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvZmFsc2VfcmVzdWx0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikgJiYgIWRlZmluZWQoTkROQk9PU1RfVFRfVEVTVF9NU19GVU5DX1NJR1MpCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2lzX2Z1bmN0aW9uX3B0cl9oZWxwZXIuaHBwPgotI2Vsc2UKLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaXNfZnVuY3Rpb25fcHRyX3Rlc3Rlci5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3llc19ub190eXBlLmhwcD4KLSNlbmRpZgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotCi0vLyBpcyBhIHR5cGUgYSBmdW5jdGlvbj8KLS8vIFBsZWFzZSBub3RlIHRoYXQgdGhpcyBpbXBsZW1lbnRhdGlvbiBpcyB1bm5lY2Vzc2FyaWx5IGNvbXBsZXg6Ci0vLyB3ZSBjb3VsZCBqdXN0IHVzZSAhaXNfY29udmVydGlibGU8VCosIGNvbnN0IHZvbGF0aWxlIHZvaWQqPjo6dmFsdWUsCi0vLyBleGNlcHQgdGhhdCBzb21lIGNvbXBpbGVycyBlcnJvbmVvdXNseSBhbGxvdyBjb252ZXJzaW9ucyBmcm9tCi0vLyBmdW5jdGlvbiBwb2ludGVycyB0byB2b2lkKi4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotI2lmICFkZWZpbmVkKCBfX0NPREVHRUFSQ19fICkKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKSAmJiAhZGVmaW5lZChORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUykKLXRlbXBsYXRlPGJvb2wgaXNfcmVmID0gdHJ1ZT4KLXN0cnVjdCBpc19mdW5jdGlvbl9jaG9vc2VyCi0gICAgOiBwdWJsaWMgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmZhbHNlX3Jlc3VsdAotewotfTsKLQotdGVtcGxhdGUgPD4KLXN0cnVjdCBpc19mdW5jdGlvbl9jaG9vc2VyPGZhbHNlPgotewotICAgIHRlbXBsYXRlPCB0eXBlbmFtZSBUID4gc3RydWN0IHJlc3VsdF8KLSAgICAgICAgOiBwdWJsaWMgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmlzX2Z1bmN0aW9uX3B0cl9oZWxwZXI8VCo+Ci0gICAgewotICAgIH07Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19mdW5jdGlvbl9pbXBsCi0gICAgOiBwdWJsaWMgaXNfZnVuY3Rpb25fY2hvb3NlcjwgOjpuZG5ib29zdDo6aXNfcmVmZXJlbmNlPFQ+Ojp2YWx1ZSA+Ci0gICAgICAgIDo6TkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFIHJlc3VsdF88VD4KLXsKLX07Ci0KLSNlbHNlCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGlzX2Z1bmN0aW9uX2ltcGwKLXsKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkNfRlVMTF9WRVIsID49IDE0MDA1MDAwMCkKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NjMzNCkKLSNlbmRpZgotICAgIHN0YXRpYyBUKiB0OwotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCgKLSAgICAgICAgYm9vbCwgdmFsdWUgPSBzaXplb2YoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmlzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIodCkpCi0gICAgICAgID09IHNpemVvZig6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6eWVzX3R5cGUpCi0gICAgICAgICk7Ci0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDX0ZVTExfVkVSLCA+PSAxNDAwNTAwMDApCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi19OwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGlzX2Z1bmN0aW9uX2ltcGw8VCY+IDogcHVibGljIGZhbHNlX3R5cGUKLXt9OwotI2lmbmRlZiBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUwotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaXNfZnVuY3Rpb25faW1wbDxUJiY+IDogcHVibGljIGZhbHNlX3R5cGUKLXt9OwotI2VuZGlmCi0jZW5kaWYKLQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi0jZW5kaWYgLy8gIWRlZmluZWQoIF9fQ09ERUdFQVJDX18gKQotCi0jaWYgZGVmaW5lZCggX19DT0RFR0VBUkNfXyApCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGlzX2Z1bmN0aW9uLFQsX19pc19mdW5jdGlvbihUKSkKLSNlbHNlCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGlzX2Z1bmN0aW9uLFQsOjpuZG5ib29zdDo6ZGV0YWlsOjppc19mdW5jdGlvbl9pbXBsPFQ+Ojp2YWx1ZSkKLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzFfMSh0eXBlbmFtZSBULGlzX2Z1bmN0aW9uLFQmJixmYWxzZSkKLSNlbmRpZgotI2VuZGlmCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfSVNfRlVOQ1RJT05fSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Z1bmRhbWVudGFsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfZnVuZGFtZW50YWwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOGI5NGQ5Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfZnVuZGFtZW50YWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCBIb3dhcmQgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9JU19GVU5EQU1FTlRBTF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSVNfRlVOREFNRU5UQUxfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19hcml0aG1ldGljLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc192b2lkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX29yLmhwcD4KLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiAKLXN0cnVjdCBpc19mdW5kYW1lbnRhbF9pbXBsCi0gICAgOiBwdWJsaWMgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjwgCi0gICAgICAgICAgOjpuZG5ib29zdDo6aXNfYXJpdGhtZXRpYzxUPjo6dmFsdWUKLSAgICAgICAgLCA6Om5kbmJvb3N0Ojppc192b2lkPFQ+Ojp2YWx1ZQotICAgICAgICA+Ci17IAotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLS8vKiBpcyBhIHR5cGUgVCBhIGZ1bmRhbWVudGFsIHR5cGUgZGVzY3JpYmVkIGluIHRoZSBzdGFuZGFyZCAoMy45LjEpCi0jaWYgZGVmaW5lZCggX19DT0RFR0VBUkNfXyApCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGlzX2Z1bmRhbWVudGFsLFQsX19pc19mdW5kYW1lbnRhbChUKSkKLSNlbHNlCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGlzX2Z1bmRhbWVudGFsLFQsOjpuZG5ib29zdDo6ZGV0YWlsOjppc19mdW5kYW1lbnRhbF9pbXBsPFQ+Ojp2YWx1ZSkKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfSVNfRlVOREFNRU5UQUxfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2ludGVncmFsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfaW50ZWdyYWwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZTQ0MjU2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfaW50ZWdyYWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODMgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCBIb3dhcmQgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9JU19JTlRFR1JBTF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSVNfSU5URUdSQUxfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi0vLyogaXMgYSB0eXBlIFQgYW4gW2N2LXF1YWxpZmllZC1dIGludGVncmFsIHR5cGUgZGVzY3JpYmVkIGluIHRoZSBzdGFuZGFyZCAoMy45LjFwMykKLS8vIGFzIGFuIGV4dGVuc2lvbiB3ZSBpbmNsdWRlIGxvbmcgbG9uZywgYXMgdGhpcyBpcyBsaWtlbHkgdG8gYmUgYWRkZWQgdG8gdGhlCi0vLyBzdGFuZGFyZCBhdCBhIGxhdGVyIGRhdGUKLSNpZiBkZWZpbmVkKCBfX0NPREVHRUFSQ19fICkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfaW50ZWdyYWwsVCxfX2lzX2ludGVncmFsKFQpKQotI2Vsc2UKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfaW50ZWdyYWwsVCxmYWxzZSkKLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfQ1ZfU1BFQzEoaXNfaW50ZWdyYWwsdW5zaWduZWQgY2hhcix0cnVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfQ1ZfU1BFQzEoaXNfaW50ZWdyYWwsdW5zaWduZWQgc2hvcnQsdHJ1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0NWX1NQRUMxKGlzX2ludGVncmFsLHVuc2lnbmVkIGludCx0cnVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfQ1ZfU1BFQzEoaXNfaW50ZWdyYWwsdW5zaWduZWQgbG9uZyx0cnVlKQotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9DVl9TUEVDMShpc19pbnRlZ3JhbCxzaWduZWQgY2hhcix0cnVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfQ1ZfU1BFQzEoaXNfaW50ZWdyYWwsc2lnbmVkIHNob3J0LHRydWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9DVl9TUEVDMShpc19pbnRlZ3JhbCxzaWduZWQgaW50LHRydWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9DVl9TUEVDMShpc19pbnRlZ3JhbCxzaWduZWQgbG9uZyx0cnVlKQotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9DVl9TUEVDMShpc19pbnRlZ3JhbCxib29sLHRydWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9DVl9TUEVDMShpc19pbnRlZ3JhbCxjaGFyLHRydWUpCi0KLSNpZm5kZWYgTkROQk9PU1RfTk9fSU5UUklOU0lDX1dDSEFSX1QKLS8vIElmIHRoZSBmb2xsb3dpbmcgbGluZSBmYWlscyB0byBjb21waWxlIGFuZCB5b3UncmUgdXNpbmcgdGhlIEludGVsCi0vLyBjb21waWxlciwgc2VlIGh0dHA6Ly9saXN0cy5ib29zdC5vcmcvTWFpbEFyY2hpdmVzL2Jvb3N0LXVzZXJzL21zZzA2NTY3LnBocCwKLS8vIGFuZCBkZWZpbmUgTkROQk9PU1RfTk9fSU5UUklOU0lDX1dDSEFSX1Qgb24gdGhlIGNvbW1hbmQgbGluZS4KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0NWX1NQRUMxKGlzX2ludGVncmFsLHdjaGFyX3QsdHJ1ZSkKLSNlbmRpZgotCi0vLyBTYW1lIHNldCBvZiBpbnRlZ3JhbCB0eXBlcyBhcyBpbiBuZG5ib29zdC90eXBlX3RyYWl0cy9pbnRlZ3JhbF9wcm9tb3Rpb24uaHBwLgotLy8gUGxlYXNlLCBrZWVwIGluIHN5bmMuIC0tIEFsZXhhbmRlciBOYXNvbm92Ci0jaWYgKGRlZmluZWQoTkROQk9PU1RfTVNWQykgJiYgKE5ETkJPT1NUX01TVkMgPCAxMzAwKSkgXAotICAgIHx8IChkZWZpbmVkKE5ETkJPT1NUX0lOVEVMX0NYWF9WRVJTSU9OKSAmJiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoTkROQk9PU1RfSU5URUxfQ1hYX1ZFUlNJT04gPD0gNjAwKSkgXAotICAgIHx8IChkZWZpbmVkKF9fQk9STEFORENfXykgJiYgKF9fQk9STEFORENfXyA9PSAweDYwMCkgJiYgKF9NU0NfVkVSIDwgMTMwMCkpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9DVl9TUEVDMShpc19pbnRlZ3JhbCx1bnNpZ25lZCBfX2ludDgsdHJ1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0NWX1NQRUMxKGlzX2ludGVncmFsLF9faW50OCx0cnVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfQ1ZfU1BFQzEoaXNfaW50ZWdyYWwsdW5zaWduZWQgX19pbnQxNix0cnVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfQ1ZfU1BFQzEoaXNfaW50ZWdyYWwsX19pbnQxNix0cnVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfQ1ZfU1BFQzEoaXNfaW50ZWdyYWwsdW5zaWduZWQgX19pbnQzMix0cnVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfQ1ZfU1BFQzEoaXNfaW50ZWdyYWwsX19pbnQzMix0cnVlKQotI2lmZGVmIF9fQk9STEFORENfXwotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfQ1ZfU1BFQzEoaXNfaW50ZWdyYWwsdW5zaWduZWQgX19pbnQ2NCx0cnVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfQ1ZfU1BFQzEoaXNfaW50ZWdyYWwsX19pbnQ2NCx0cnVlKQotI2VuZGlmCi0jZW5kaWYKLQotIyBpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19MT05HX0xPTkcpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9DVl9TUEVDMShpc19pbnRlZ3JhbCwgOjpuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlLHRydWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9DVl9TUEVDMShpc19pbnRlZ3JhbCwgOjpuZG5ib29zdDo6bG9uZ19sb25nX3R5cGUsdHJ1ZSkKLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfSEFTX01TX0lOVDY0KQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfQ1ZfU1BFQzEoaXNfaW50ZWdyYWwsdW5zaWduZWQgX19pbnQ2NCx0cnVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfQ1ZfU1BFQzEoaXNfaW50ZWdyYWwsX19pbnQ2NCx0cnVlKQotI2VuZGlmCi0gICAgICAgIAotI2lmZGVmIE5ETkJPT1NUX0hBU19JTlQxMjgKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0NWX1NQRUMxKGlzX2ludGVncmFsLG5kbmJvb3N0OjppbnQxMjhfdHlwZSx0cnVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfQ1ZfU1BFQzEoaXNfaW50ZWdyYWwsbmRuYm9vc3Q6OnVpbnQxMjhfdHlwZSx0cnVlKQotI2VuZGlmCi0KLSNlbmRpZiAgLy8gbm9uLUNvZGVHZWFyIGltcGxlbWVudGF0aW9uCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9JU19JTlRFR1JBTF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfbHZhbHVlX3JlZmVyZW5jZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2x2YWx1ZV9yZWZlcmVuY2UuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NzhlMmM2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfbHZhbHVlX3JlZmVyZW5jZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTggKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBEYXZlIEFicmFoYW1zLCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCAKLS8vICAgICAgSG93YXJkIEhpbm5hbnQgYW5kIEpvaG4gTWFkZG9jayAyMDAwLiAKLS8vICAoQykgQ29weXJpZ2h0IE1hdCBNYXJjdXMsIEplc3NlIEpvbmVzIGFuZCBBZG9iZSBTeXN0ZW1zIEluYyAyMDAxCi0KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLS8vICAgIEZpeGVkIGlzX3BvaW50ZXIsIGlzX2x2YWx1ZV9yZWZlcmVuY2UsIGlzX2NvbnN0LCBpc192b2xhdGlsZSwgaXNfc2FtZSwgCi0vLyAgICBpc19tZW1iZXJfcG9pbnRlciBiYXNlZCBvbiB0aGUgU2ltdWxhdGVkIFBhcnRpYWwgU3BlY2lhbGl6YXRpb24gd29yayAKLS8vICAgIG9mIE1hdCBNYXJjdXMgYW5kIEplc3NlIEpvbmVzLiBTZWUgIGh0dHA6Ly9vcGVuc291cmNlLmFkb2JlLmNvbSBvciAKLS8vICAgIGh0dHA6Ly9ncm91cHMueWFob28uY29tL2dyb3VwL2Jvb3N0L21lc3NhZ2UvNTQ0MSAKLS8vICAgIFNvbWUgd29ya2Fyb3VuZHMgaW4gaGVyZSB1c2UgaWRlYXMgc3VnZ2VzdGVkIGZyb20gIkdlbmVyaWM8UHJvZ3JhbW1pbmc+OiAKLS8vICAgIE1hcHBpbmdzIGJldHdlZW4gVHlwZXMgYW5kIFZhbHVlcyIgCi0vLyAgICBieSBBbmRyZWkgQWxleGFuZHJlc2N1IChzZWUgaHR0cDovL3d3dy5jdWouY29tL2V4cGVydHMvMTgxMC9hbGV4YW5kci5odG1sKS4KLQotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0lTX0xWQUxVRV9SRUZFUkVOQ0VfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0lTX0xWQUxVRV9SRUZFUkVOQ0VfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9jb25maWcuaHBwPgotCi0jaWZkZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC95ZXNfbm9fdHlwZS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3dyYXAuaHBwPgotI2VuZGlmCi0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLSNpZiBkZWZpbmVkKCBfX0NPREVHRUFSQ19fICkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfbHZhbHVlX3JlZmVyZW5jZSxULF9faXNfcmVmZXJlbmNlKFQpKQotI2VsaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc19sdmFsdWVfcmVmZXJlbmNlLFQsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMxXzEodHlwZW5hbWUgVCxpc19sdmFsdWVfcmVmZXJlbmNlLFQmLHRydWUpCi0KLSNpZiAgZGVmaW5lZChORE5CT09TVF9JTExFR0FMX0NWX1JFRkVSRU5DRVMpCi0vLyB0aGVzZSBhcmUgaWxsZWdhbCBzcGVjaWFsaXNhdGlvbnM7IGN2LXF1YWxpZmllcyBhcHBsaWVkIHRvCi0vLyByZWZlcmVuY2VzIGhhdmUgbm8gZWZmZWN0IGFjY29yZGluZyB0byBbOC4zLjJwMV0sCi0vLyBDKysgQnVpbGRlciByZXF1aXJlcyB0aGVtIHRob3VnaCBhcyBpdCB0cmVhdHMgY3YtcXVhbGlmaWVkCi0vLyByZWZlcmVuY2VzIGFzIGRpc3RpbmN0IHR5cGVzLi4uCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMxXzEodHlwZW5hbWUgVCxpc19sdmFsdWVfcmVmZXJlbmNlLFQmIGNvbnN0LHRydWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMxXzEodHlwZW5hbWUgVCxpc19sdmFsdWVfcmVmZXJlbmNlLFQmIHZvbGF0aWxlLHRydWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMxXzEodHlwZW5hbWUgVCxpc19sdmFsdWVfcmVmZXJlbmNlLFQmIGNvbnN0IHZvbGF0aWxlLHRydWUpCi0jZW5kaWYKLQotI2lmIGRlZmluZWQoX19HTlVDX18pICYmIChfX0dOVUNfXyA8IDMpCi0vLyB0aGVzZSBhbGxvdyB1cyB0byB3b3JrIGFyb3VuZCBpbGxlZ2FsbHkgY3YtcXVhbGlmaWVkIHJlZmVyZW5jZQotLy8gdHlwZXMuCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMxXzEodHlwZW5hbWUgVCxpc19sdmFsdWVfcmVmZXJlbmNlLFQgY29uc3QgLDo6bmRuYm9vc3Q6OmlzX2x2YWx1ZV9yZWZlcmVuY2U8VD46OnZhbHVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMV8xKHR5cGVuYW1lIFQsaXNfbHZhbHVlX3JlZmVyZW5jZSxUIHZvbGF0aWxlICw6Om5kbmJvb3N0Ojppc19sdmFsdWVfcmVmZXJlbmNlPFQ+Ojp2YWx1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzFfMSh0eXBlbmFtZSBULGlzX2x2YWx1ZV9yZWZlcmVuY2UsVCBjb25zdCB2b2xhdGlsZSAsOjpuZG5ib29zdDo6aXNfbHZhbHVlX3JlZmVyZW5jZTxUPjo6dmFsdWUpCi0vLyBIb3dldmVyLCB0aGUgYWJvdmUgc3BlY2lhbGl6YXRpb25zIGNvbmZ1c2UgZ2NjIDIuOTYgdW5sZXNzIHdlIGFsc28KLS8vIHN1cHBseSB0aGVzZSBzcGVjaWFsaXphdGlvbnMgZm9yIGFycmF5IHR5cGVzCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMxXzIodHlwZW5hbWUgVCx1bnNpZ25lZCBsb25nIE4saXNfbHZhbHVlX3JlZmVyZW5jZSxUW05dLGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMV8yKHR5cGVuYW1lIFQsdW5zaWduZWQgbG9uZyBOLGlzX2x2YWx1ZV9yZWZlcmVuY2UsY29uc3QgVFtOXSxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzFfMih0eXBlbmFtZSBULHVuc2lnbmVkIGxvbmcgTixpc19sdmFsdWVfcmVmZXJlbmNlLHZvbGF0aWxlIFRbTl0sZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMxXzIodHlwZW5hbWUgVCx1bnNpZ25lZCBsb25nIE4saXNfbHZhbHVlX3JlZmVyZW5jZSxjb25zdCB2b2xhdGlsZSBUW05dLGZhbHNlKQotI2VuZGlmCi0KLSNlbHNlCi0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jICAgcHJhZ21hIHdhcm5pbmcocHVzaCkKLSMgICBwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MTgxIDQwOTcpCi0jZW5kaWYKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXVzaW5nIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZTsKLXVzaW5nIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjpub190eXBlOwotdXNpbmcgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OndyYXA7Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPiBUJigqIGlzX2x2YWx1ZV9yZWZlcmVuY2VfaGVscGVyMSh3cmFwPFQ+KSApKHdyYXA8VD4pOwotY2hhciBpc19sdmFsdWVfcmVmZXJlbmNlX2hlbHBlcjEoLi4uKTsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+IG5vX3R5cGUgaXNfbHZhbHVlX3JlZmVyZW5jZV9oZWxwZXIyKFQmKCopKHdyYXA8VD4pKTsKLXllc190eXBlIGlzX2x2YWx1ZV9yZWZlcmVuY2VfaGVscGVyMiguLi4pOwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19sdmFsdWVfcmVmZXJlbmNlX2ltcGwKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoCi0gICAgICAgIGJvb2wsIHZhbHVlID0gc2l6ZW9mKAotICAgICAgICAgICAgOjpuZG5ib29zdDo6ZGV0YWlsOjppc19sdmFsdWVfcmVmZXJlbmNlX2hlbHBlcjIoCi0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6ZGV0YWlsOjppc19sdmFsdWVfcmVmZXJlbmNlX2hlbHBlcjEoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OndyYXA8VD4oKSkpKSA9PSAxCi0gICAgICAgICk7Ci19OwotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX2x2YWx1ZV9yZWZlcmVuY2Usdm9pZCxmYWxzZSkKLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1ZfVk9JRF9TUEVDSUFMSVpBVElPTlMKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfbHZhbHVlX3JlZmVyZW5jZSx2b2lkIGNvbnN0LGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc19sdmFsdWVfcmVmZXJlbmNlLHZvaWQgdm9sYXRpbGUsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX2x2YWx1ZV9yZWZlcmVuY2Usdm9pZCBjb25zdCB2b2xhdGlsZSxmYWxzZSkKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc19sdmFsdWVfcmVmZXJlbmNlLFQsOjpuZG5ib29zdDo6ZGV0YWlsOjppc19sdmFsdWVfcmVmZXJlbmNlX2ltcGw8VD46OnZhbHVlKQotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotIyAgIHByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfSVNfUkVGRVJFTkNFX0hQUF9JTkNMVURFRAotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX21lbWJlcl9mdW5jdGlvbl9wb2ludGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfbWVtYmVyX2Z1bmN0aW9uX3BvaW50ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOGVmMmVjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfbWVtYmVyX2Z1bmN0aW9uX3BvaW50ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTM2ICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgRGF2ZSBBYnJhaGFtcywgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgSG93YXJkCi0vLyAgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLiAgCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSVNfTUVNQkVSX0ZVTkNUSU9OX1BPSU5URVJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0lTX01FTUJFUl9GVU5DVElPTl9QT0lOVEVSX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKSBcCi0gICAmJiAhTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIDwgMHg2MDApICYmICFkZWZpbmVkKE5ETkJPT1NUX1RUX1RFU1RfTVNfRlVOQ19TSUdTKQotICAgLy8KLSAgIC8vIE5vdGU6IHdlIHVzZSB0aGUgIndvcmthcm91bmQiIHZlcnNpb24gZm9yIE1TVkMgYmVjYXVzZSBpdCB3b3JrcyBmb3IgCi0gICAvLyBfX3N0ZGNhbGwgZXRjIGZ1bmN0aW9uIHR5cGVzLCB3aGVyZSBhcyB0aGUgcGFydGlhbCBzcGVjaWFsaXNhdGlvbgotICAgLy8gdmVyc2lvbiBkb2VzIG5vdCBkbyBzby4KLSAgIC8vCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2lzX21lbV9mdW5fcG9pbnRlcl9pbXBsLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfY3YuaHBwPgotI2Vsc2UKLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19yZWZlcmVuY2UuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2FycmF5LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwveWVzX25vX3R5cGUuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9mYWxzZV9yZXN1bHQuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2Vfb3IuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyLmhwcD4KLSNlbmRpZgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi0jaWYgZGVmaW5lZCggX19DT0RFR0VBUkNfXyApCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGlzX21lbWJlcl9mdW5jdGlvbl9wb2ludGVyLFQsX19pc19tZW1iZXJfZnVuY3Rpb25fcG9pbnRlciggVCApKQotI2VsaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikgJiYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCA8IDB4NjAwKSAmJiAhZGVmaW5lZChORE5CT09TVF9UVF9URVNUX01TX0ZVTkNfU0lHUykKLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMSgKLSAgICAgIGlzX21lbWJlcl9mdW5jdGlvbl9wb2ludGVyCi0gICAgLCBUCi0gICAgLCA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aXNfbWVtX2Z1bl9wb2ludGVyX2ltcGw8dHlwZW5hbWUgcmVtb3ZlX2N2PFQ+Ojp0eXBlPjo6dmFsdWUKLSAgICApCi0KLSNlbHNlCi0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi0jaWZuZGVmIF9fQk9STEFORENfXwotCi10ZW1wbGF0ZSA8Ym9vbD4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfc2VsZWN0Ci0gICAgOiBwdWJsaWMgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmZhbHNlX3Jlc3VsdAotewotfTsKLQotdGVtcGxhdGUgPD4KLXN0cnVjdCBpc19tZW1fZnVuX3BvaW50ZXJfc2VsZWN0PGZhbHNlPgotewotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkNfRlVMTF9WRVIsID49IDE0MDA1MDAwMCkKLSNwcmFnbWEgd2FybmluZyhwdXNoKQotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6NjMzNCkKLSNlbmRpZgotICAgICAgICBzdGF0aWMgVCogbWFrZV90OwotICAgICAgICB0eXBlZGVmIHJlc3VsdF88VD4gc2VsZl90eXBlOwotCi0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCgKLSAgICAgICAgICAgIGJvb2wsIHZhbHVlID0gKAotICAgICAgICAgICAgICAgIDEgPT0gc2l6ZW9mKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKHNlbGZfdHlwZTo6bWFrZV90KSkKLSAgICAgICAgICAgICkpOwotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQ19GVUxMX1ZFUiwgPj0gMTQwMDUwMDAwKQotI3ByYWdtYSB3YXJuaW5nKHBvcCkKLSNlbmRpZgotICAgIH07Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19tZW1iZXJfZnVuY3Rpb25fcG9pbnRlcl9pbXBsCi0gICAgOiBwdWJsaWMgaXNfbWVtX2Z1bl9wb2ludGVyX3NlbGVjdDwKLSAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPAotICAgICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19yZWZlcmVuY2U8VD46OnZhbHVlCi0gICAgICAgICAgICAsIDo6bmRuYm9vc3Q6OmlzX2FycmF5PFQ+Ojp2YWx1ZQotICAgICAgICAgICAgPjo6dmFsdWUKLSAgICAgICAgPjo6dGVtcGxhdGUgcmVzdWx0XzxUPgotewotfTsKLQotI2lmbmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19tZW1iZXJfZnVuY3Rpb25fcG9pbnRlcl9pbXBsPFQmPiA6IHB1YmxpYyBmYWxzZV90eXBle307Ci0jZW5kaWYKLQotI2Vsc2UgLy8gQm9ybGFuZCBDKysKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaXNfbWVtYmVyX2Z1bmN0aW9uX3BvaW50ZXJfaW1wbAotewotICAgc3RhdGljIFQqIG1fdDsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCgKLSAgICAgICAgICAgICAgYm9vbCwgdmFsdWUgPQotICAgICAgICAgICAgICAgKDEgPT0gc2l6ZW9mKHR5cGVfdHJhaXRzOjppc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyKG1fdCkpKSApOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaXNfbWVtYmVyX2Z1bmN0aW9uX3BvaW50ZXJfaW1wbDxUJj4KLXsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGZhbHNlKTsKLX07Ci0KLSNlbmRpZgotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX21lbWJlcl9mdW5jdGlvbl9wb2ludGVyLHZvaWQsZmFsc2UpCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NWX1ZPSURfU1BFQ0lBTElaQVRJT05TCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX21lbWJlcl9mdW5jdGlvbl9wb2ludGVyLHZvaWQgY29uc3QsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX21lbWJlcl9mdW5jdGlvbl9wb2ludGVyLHZvaWQgdm9sYXRpbGUsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX21lbWJlcl9mdW5jdGlvbl9wb2ludGVyLHZvaWQgY29uc3Qgdm9sYXRpbGUsZmFsc2UpCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfbWVtYmVyX2Z1bmN0aW9uX3BvaW50ZXIsVCw6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX21lbWJlcl9mdW5jdGlvbl9wb2ludGVyX2ltcGw8VD46OnZhbHVlKQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfSVNfTUVNQkVSX0ZVTkNUSU9OX1BPSU5URVJfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX21lbWJlcl9vYmplY3RfcG9pbnRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX21lbWJlcl9vYmplY3RfcG9pbnRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI5NTY3ZGQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19tZW1iZXJfb2JqZWN0X3BvaW50ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwNS4gIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0lTX01FTUJFUl9PQkpFQ1RfUE9JTlRFUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSVNfTUVNQkVSX09CSkVDVF9QT0lOVEVSX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19tZW1iZXJfcG9pbnRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfbWVtYmVyX2Z1bmN0aW9uX3BvaW50ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2VfYW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX25vdC5ocHA+Ci0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBkZXRhaWx7Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGlzX21lbWJlcl9vYmplY3RfcG9pbnRlcl9pbXBsCi17Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoCi0gICAgICBib29sLCB2YWx1ZSA9ICg6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX21lbWJlcl9wb2ludGVyPFQ+Ojp2YWx1ZSwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PAotICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfbWVtYmVyX2Z1bmN0aW9uX3BvaW50ZXI8VD46OnZhbHVlCi0gICAgICAgICA+Ojp2YWx1ZQotICAgICAgPjo6dmFsdWUgKSk7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc19tZW1iZXJfb2JqZWN0X3BvaW50ZXIsVCw6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX21lbWJlcl9vYmplY3RfcG9pbnRlcl9pbXBsPFQ+Ojp2YWx1ZSkKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0lTX01FTUJFUl9GVU5DVElPTl9QT0lOVEVSX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19tZW1iZXJfcG9pbnRlci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX21lbWJlcl9wb2ludGVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2JmY2E2Yi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX21lbWJlcl9wb2ludGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExNiArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IERhdmUgQWJyYWhhbXMsIFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIAotLy8gICAgICBIb3dhcmQgSGlubmFudCBhbmQgSm9obiBNYWRkb2NrIDIwMDAuIAotLy8gIChDKSBDb3B5cmlnaHQgTWF0IE1hcmN1cywgSmVzc2UgSm9uZXMgYW5kIEFkb2JlIFN5c3RlbXMgSW5jIDIwMDEKLQotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotLy8gICAgRml4ZWQgaXNfcG9pbnRlciwgaXNfcmVmZXJlbmNlLCBpc19jb25zdCwgaXNfdm9sYXRpbGUsIGlzX3NhbWUsIAotLy8gICAgaXNfbWVtYmVyX3BvaW50ZXIgYmFzZWQgb24gdGhlIFNpbXVsYXRlZCBQYXJ0aWFsIFNwZWNpYWxpemF0aW9uIHdvcmsgCi0vLyAgICBvZiBNYXQgTWFyY3VzIGFuZCBKZXNzZSBKb25lcy4gU2VlICBodHRwOi8vb3BlbnNvdXJjZS5hZG9iZS5jb20gb3IgCi0vLyAgICBodHRwOi8vZ3JvdXBzLnlhaG9vLmNvbS9ncm91cC9ib29zdC9tZXNzYWdlLzU0NDEgCi0vLyAgICBTb21lIHdvcmthcm91bmRzIGluIGhlcmUgdXNlIGlkZWFzIHN1Z2dlc3RlZCBmcm9tICJHZW5lcmljPFByb2dyYW1taW5nPjogCi0vLyAgICBNYXBwaW5ncyBiZXR3ZWVuIFR5cGVzIGFuZCBWYWx1ZXMiIAotLy8gICAgYnkgQW5kcmVpIEFsZXhhbmRyZXNjdSAoc2VlIGh0dHA6Ly93d3cuY3VqLmNvbS9leHBlcnRzLzE4MTAvYWxleGFuZHIuaHRtbCkuCi0KLQotI2lmbmRlZiBORE5CT09TVF9UVF9JU19NRU1CRVJfUE9JTlRFUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSVNfTUVNQkVSX1BPSU5URVJfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pICYmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgPCAweDYwMCkKLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19tZW1iZXJfZnVuY3Rpb25fcG9pbnRlci5ocHA+Ci0jZWxzZQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3JlZmVyZW5jZS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYXJyYXkuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pc19tZW1fZnVuX3BvaW50ZXJfdGVzdGVyLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwveWVzX25vX3R5cGUuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9mYWxzZV9yZXN1bHQuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2Vfb3IuaHBwPgotI2VuZGlmCi0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLSNpZiBkZWZpbmVkKCBfX0NPREVHRUFSQ19fICkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfbWVtYmVyX3BvaW50ZXIsVCxfX2lzX21lbWJlcl9wb2ludGVyKFQpKQotI2VsaWYgTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIDwgMHg2MDApCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGlzX21lbWJlcl9wb2ludGVyLFQsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMxXzIodHlwZW5hbWUgVCx0eXBlbmFtZSBVLGlzX21lbWJlcl9wb2ludGVyLFUgVDo6Kix0cnVlKQotCi0jZWxpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc19tZW1iZXJfcG9pbnRlcixULDo6bmRuYm9vc3Q6OmlzX21lbWJlcl9mdW5jdGlvbl9wb2ludGVyPFQ+Ojp2YWx1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzFfMih0eXBlbmFtZSBULHR5cGVuYW1lIFUsaXNfbWVtYmVyX3BvaW50ZXIsVSBUOjoqLHRydWUpCi0KLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChfX01XRVJLU19fLDw9MHgzMDAzKSAmJiAhTkROQk9PU1RfV09SS0FST1VORChfX0lCTUNQUF9fLCA8PTYwMCkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzFfMih0eXBlbmFtZSBULHR5cGVuYW1lIFUsaXNfbWVtYmVyX3BvaW50ZXIsVSBUOjoqY29uc3QsdHJ1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzFfMih0eXBlbmFtZSBULHR5cGVuYW1lIFUsaXNfbWVtYmVyX3BvaW50ZXIsVSBUOjoqdm9sYXRpbGUsdHJ1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzFfMih0eXBlbmFtZSBULHR5cGVuYW1lIFUsaXNfbWVtYmVyX3BvaW50ZXIsVSBUOjoqY29uc3Qgdm9sYXRpbGUsdHJ1ZSkKLSNlbmRpZgotCi0jZWxzZSAvLyBubyBwYXJ0aWFsIHRlbXBsYXRlIHNwZWNpYWxpemF0aW9uCi0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUiwgdHlwZW5hbWUgVD4KLTo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZSBORE5CT09TVF9UVF9ERUNMIGlzX21lbWJlcl9wb2ludGVyX3Rlc3RlcihSIFQ6Oipjb25zdCB2b2xhdGlsZSopOwotOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Om5vX3R5cGUgTkROQk9PU1RfVFRfREVDTCBpc19tZW1iZXJfcG9pbnRlcl90ZXN0ZXIoLi4uKTsKLQotdGVtcGxhdGUgPGJvb2w+Ci1zdHJ1Y3QgaXNfbWVtYmVyX3BvaW50ZXJfc2VsZWN0Ci0gICAgOiBwdWJsaWMgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmZhbHNlX3Jlc3VsdAotewotfTsKLQotdGVtcGxhdGUgPD4KLXN0cnVjdCBpc19tZW1iZXJfcG9pbnRlcl9zZWxlY3Q8ZmFsc2U+Ci17Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICBzdGF0aWMgVCogbWFrZV90KCk7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCgKLSAgICAgICAgICAgIGJvb2wsIHZhbHVlID0KLSAgICAgICAgICAgICg6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPAotICAgICAgICAgICAgICAgICgxID09IHNpemVvZig6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aXNfbWVtX2Z1bl9wb2ludGVyX3Rlc3RlcihtYWtlX3QoKSkpKSwKLSAgICAgICAgICAgICAgICAoMSA9PSBzaXplb2YoaXNfbWVtYmVyX3BvaW50ZXJfdGVzdGVyKG1ha2VfdCgpKSkpCi0gICAgICAgICAgICA+Ojp2YWx1ZSkgKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaXNfbWVtYmVyX3BvaW50ZXJfaW1wbAotICAgIDogcHVibGljIGlzX21lbWJlcl9wb2ludGVyX3NlbGVjdDwKLSAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPAotICAgICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19yZWZlcmVuY2U8VD46OnZhbHVlCi0gICAgICAgICAgICAsIDo6bmRuYm9vc3Q6OmlzX2FycmF5PFQ+Ojp2YWx1ZQotICAgICAgICAgICAgPjo6dmFsdWUKLSAgICAgICAgPjo6dGVtcGxhdGUgcmVzdWx0XzxUPgotewotfTsKLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc19tZW1iZXJfcG9pbnRlcix2b2lkLGZhbHNlKQotI2lmbmRlZiBORE5CT09TVF9OT19DVl9WT0lEX1NQRUNJQUxJWkFUSU9OUwotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc19tZW1iZXJfcG9pbnRlcix2b2lkIGNvbnN0LGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc19tZW1iZXJfcG9pbnRlcix2b2lkIHZvbGF0aWxlLGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc19tZW1iZXJfcG9pbnRlcix2b2lkIGNvbnN0IHZvbGF0aWxlLGZhbHNlKQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGlzX21lbWJlcl9wb2ludGVyLFQsOjpuZG5ib29zdDo6ZGV0YWlsOjppc19tZW1iZXJfcG9pbnRlcl9pbXBsPFQ+Ojp2YWx1ZSkKLQotI2VuZGlmIC8vIF9fQk9STEFORENfXwotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfSVNfTUVNQkVSX1BPSU5URVJfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX25vdGhyb3dfbW92ZV9hc3NpZ25hYmxlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfbm90aHJvd19tb3ZlX2Fzc2lnbmFibGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNTg2NGFjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfbm90aHJvd19tb3ZlX2Fzc2lnbmFibGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODQgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCBIb3dhcmQgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLgotLy8gIChDKSBDb3B5cmlnaHQgRXJpYyBGcmllZG1hbiAyMDAyLTIwMDMuCi0vLyAgKEMpIENvcHlyaWdodCBBbnRvbnkgUG9sdWtoaW4gMjAxMy4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSVNfTk9USFJPV19NT1ZFX0FTU0lHTkFCTEVfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0lTX05PVEhST1dfTU9WRV9BU1NJR05BQkxFX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfdHJpdmlhbF9tb3ZlX2Fzc2lnbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX25vdGhyb3dfYXNzaWduLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19hcnJheS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcmVmZXJlbmNlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX2FuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9vci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9ub3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3V0aWxpdHkvZW5hYmxlX2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC91dGlsaXR5L2RlY2x2YWwuaHBwPgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgZGV0YWlsewotCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NYWDExX05PRVhDRVBUCi0KLXRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBFbmFibGUgPSB2b2lkPgotc3RydWN0IGZhbHNlX29yX2NwcDExX25vZXhjZXB0X21vdmVfYXNzaWduYWJsZTogcHVibGljIDo6bmRuYm9vc3Q6OmZhbHNlX3R5cGUge307Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGZhbHNlX29yX2NwcDExX25vZXhjZXB0X21vdmVfYXNzaWduYWJsZSA8Ci0gICAgICAgIFQsCi0gICAgICAgIHR5cGVuYW1lIDo6bmRuYm9vc3Q6OmVuYWJsZV9pZl9jPHNpemVvZihUKSAmJiBORE5CT09TVF9OT0VYQ0VQVF9FWFBSKDo6bmRuYm9vc3Q6OmRlY2x2YWw8VCY+KCkgPSA6Om5kbmJvb3N0OjpkZWNsdmFsPFQ+KCkpPjo6dHlwZQotICAgID4gOiBwdWJsaWMgOjpuZG5ib29zdDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgTkROQk9PU1RfTk9FWENFUFRfRVhQUig6Om5kbmJvb3N0OjpkZWNsdmFsPFQmPigpID0gOjpuZG5ib29zdDo6ZGVjbHZhbDxUPigpKT4KLXt9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpc19ub3Rocm93X21vdmVfYXNzaWduYWJsZV9pbXB7Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gKAotICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc192b2xhdGlsZTxUPjo6dmFsdWUgPjo6dmFsdWUsCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfcmVmZXJlbmNlPFQ+Ojp2YWx1ZSA+Ojp2YWx1ZSwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmRldGFpbDo6ZmFsc2Vfb3JfY3BwMTFfbm9leGNlcHRfbW92ZV9hc3NpZ25hYmxlPFQ+Ojp2YWx1ZQotICAgICAgICA+Ojp2YWx1ZSkpOwotfTsKLQotI2Vsc2UKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgaXNfbm90aHJvd19tb3ZlX2Fzc2lnbmFibGVfaW1wewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9ICgKLSAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8Ci0gICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6Omhhc190cml2aWFsX21vdmVfYXNzaWduPFQ+Ojp2YWx1ZSwKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0OjpoYXNfbm90aHJvd19hc3NpZ248VD46OnZhbHVlCi0gICAgICAgICAgICA+Ojp2YWx1ZSwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19hcnJheTxUPjo6dmFsdWUgPjo6dmFsdWUKLSAgICAgICAgPjo6dmFsdWUpKTsKLX07Ci0KLSNlbmRpZgotCi19Ci0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfbm90aHJvd19tb3ZlX2Fzc2lnbmFibGUsVCw6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX25vdGhyb3dfbW92ZV9hc3NpZ25hYmxlX2ltcDxUPjo6dmFsdWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMShpc19ub3Rocm93X21vdmVfYXNzaWduYWJsZSx2b2lkLGZhbHNlKQotI2lmbmRlZiBORE5CT09TVF9OT19DVl9WT0lEX1NQRUNJQUxJWkFUSU9OUwotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEoaXNfbm90aHJvd19tb3ZlX2Fzc2lnbmFibGUsdm9pZCBjb25zdCxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGlzX25vdGhyb3dfbW92ZV9hc3NpZ25hYmxlLHZvaWQgY29uc3Qgdm9sYXRpbGUsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMShpc19ub3Rocm93X21vdmVfYXNzaWduYWJsZSx2b2lkIHZvbGF0aWxlLGZhbHNlKQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9JU19OT1RIUk9XX01PVkVfQVNTSUdOQUJMRV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfbm90aHJvd19tb3ZlX2NvbnN0cnVjdGlibGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19ub3Rocm93X21vdmVfY29uc3RydWN0aWJsZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg4OTExMzUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19ub3Rocm93X21vdmVfY29uc3RydWN0aWJsZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw4NCArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIEhvd2FyZCBIaW5uYW50ICYgSm9obiBNYWRkb2NrIDIwMDAuCi0vLyAgKEMpIENvcHlyaWdodCBFcmljIEZyaWVkbWFuIDIwMDItMjAwMy4KLS8vICAoQykgQ29weXJpZ2h0IEFudG9ueSBQb2x1a2hpbiAyMDEzLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9JU19OT1RIUk9XX01PVkVfQ09OU1RSVUNUSUJMRV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSVNfTk9USFJPV19NT1ZFX0NPTlNUUlVDVElCTEVfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc190cml2aWFsX21vdmVfY29uc3RydWN0b3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc19ub3Rocm93X2NvcHkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2FycmF5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19yZWZlcmVuY2UuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2Vfb3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2VfYW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC91dGlsaXR5L2RlY2x2YWwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3V0aWxpdHkvZW5hYmxlX2lmLmhwcD4KLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIGRldGFpbHsKLQotI2lmbmRlZiBORE5CT09TVF9OT19DWFgxMV9OT0VYQ0VQVAotCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgRW5hYmxlID0gdm9pZD4KLXN0cnVjdCBmYWxzZV9vcl9jcHAxMV9ub2V4Y2VwdF9tb3ZlX2NvbnN0cnVjdGlibGU6IHB1YmxpYyA6Om5kbmJvb3N0OjpmYWxzZV90eXBlIHt9OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBmYWxzZV9vcl9jcHAxMV9ub2V4Y2VwdF9tb3ZlX2NvbnN0cnVjdGlibGUgPAotICAgICAgICBULAotICAgICAgICB0eXBlbmFtZSA6Om5kbmJvb3N0OjplbmFibGVfaWZfYzxzaXplb2YoVCkgJiYgTkROQk9PU1RfTk9FWENFUFRfRVhQUihUKDo6bmRuYm9vc3Q6OmRlY2x2YWw8VD4oKSkpPjo6dHlwZQotICAgID4gOiBwdWJsaWMgOjpuZG5ib29zdDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgTkROQk9PU1RfTk9FWENFUFRfRVhQUihUKDo6bmRuYm9vc3Q6OmRlY2x2YWw8VD4oKSkpPgote307Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGlzX25vdGhyb3dfbW92ZV9jb25zdHJ1Y3RpYmxlX2ltcHsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IAotICAgICAgICAoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8Ci0gICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfdm9sYXRpbGU8VD46OnZhbHVlID46OnZhbHVlLAotICAgICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX3JlZmVyZW5jZTxUPjo6dmFsdWUgPjo6dmFsdWUsCi0gICAgICAgICAgICA6Om5kbmJvb3N0OjpkZXRhaWw6OmZhbHNlX29yX2NwcDExX25vZXhjZXB0X21vdmVfY29uc3RydWN0aWJsZTxUPjo6dmFsdWUKLSAgICAgICAgPjo6dmFsdWUpKTsKLX07Ci0KLSNlbHNlCi0KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGlzX25vdGhyb3dfbW92ZV9jb25zdHJ1Y3RpYmxlX2ltcHsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSgKLSAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8Ci0gICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6Omhhc190cml2aWFsX21vdmVfY29uc3RydWN0b3I8VD46OnZhbHVlLAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6Omhhc19ub3Rocm93X2NvcHk8VD46OnZhbHVlCi0gICAgICAgICAgICA+Ojp2YWx1ZSwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19hcnJheTxUPjo6dmFsdWUgPjo6dmFsdWUKLSAgICAgICAgPjo6dmFsdWUpKTsKLX07Ci0KLSNlbmRpZgotCi19Ci0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfbm90aHJvd19tb3ZlX2NvbnN0cnVjdGlibGUsVCw6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX25vdGhyb3dfbW92ZV9jb25zdHJ1Y3RpYmxlX2ltcDxUPjo6dmFsdWUpCi0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGlzX25vdGhyb3dfbW92ZV9jb25zdHJ1Y3RpYmxlLHZvaWQsZmFsc2UpCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NWX1ZPSURfU1BFQ0lBTElaQVRJT05TCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMShpc19ub3Rocm93X21vdmVfY29uc3RydWN0aWJsZSx2b2lkIGNvbnN0LGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEoaXNfbm90aHJvd19tb3ZlX2NvbnN0cnVjdGlibGUsdm9pZCBjb25zdCB2b2xhdGlsZSxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGlzX25vdGhyb3dfbW92ZV9jb25zdHJ1Y3RpYmxlLHZvaWQgdm9sYXRpbGUsZmFsc2UpCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0lTX05PVEhST1dfTU9WRV9DT05TVFJVQ1RJQkxFX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19vYmplY3QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19vYmplY3QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMDZlYjlhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfb2JqZWN0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgSG93YXJkIEhpbm5hbnQgJiBKb2huIE1hZGRvY2sgMjAwMC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSVNfT0JKRUNUX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9JU19PQkpFQ1RfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19yZWZlcmVuY2UuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3ZvaWQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Z1bmN0aW9uLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX2FuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9ub3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19vYmplY3RfaW1wbAotewotI2lmbmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPQotICAgICAgKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX3JlZmVyZW5jZTxUPjo6dmFsdWU+Ojp2YWx1ZSwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc192b2lkPFQ+Ojp2YWx1ZT46OnZhbHVlLAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX2Z1bmN0aW9uPFQ+Ojp2YWx1ZT46OnZhbHVlCi0gICAgICA+Ojp2YWx1ZSkpOwotI2Vsc2UKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9Ci0gICAgICAoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8Ci0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfcmVmZXJlbmNlPFQ+Ojp2YWx1ZT46OnZhbHVlLAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX3ZvaWQ8VD46OnZhbHVlPjo6dmFsdWUKLSAgICAgID46OnZhbHVlKSk7Ci0jZW5kaWYKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGlzX29iamVjdCxULDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfb2JqZWN0X2ltcGw8VD46OnZhbHVlKQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfSVNfT0JKRUNUX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19wb2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19wb2QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOTA3NjFhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcG9kLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0NSArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIEhvd2FyZCBIaW5uYW50ICYgSm9obiBNYWRkb2NrIDIwMDAuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0lTX1BPRF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSVNfUE9EX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc192b2lkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zY2FsYXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2Vfb3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2ludHJpbnNpY3MuaHBwPgotCi0jaW5jbHVkZSA8Y3N0ZGRlZj4KLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcD4KLQotI2lmbmRlZiBORE5CT09TVF9JU19QT0QKLSNkZWZpbmUgTkROQk9PU1RfSU5URVJOQUxfSVNfUE9EKFQpIGZhbHNlCi0jZWxzZQotI2RlZmluZSBORE5CT09TVF9JTlRFUk5BTF9JU19QT0QoVCkgTkROQk9PU1RfSVNfUE9EKFQpCi0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotLy8gZm9yd2FyZCBkZWNsYXJhdGlvbiwgbmVlZGVkIGJ5ICdpc19wb2RfYXJyYXlfaGVscGVyJyB0ZW1wbGF0ZSBiZWxvdwotdGVtcGxhdGU8IHR5cGVuYW1lIFQgPiBzdHJ1Y3QgaXNfUE9EOwotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotI2lmbmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgaXNfcG9kX2ltcGwKLXsgCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKAotICAgICAgICBib29sLCB2YWx1ZSA9Ci0gICAgICAgICg6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPAotICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfc2NhbGFyPFQ+Ojp2YWx1ZSwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3ZvaWQ8VD46OnZhbHVlLAotICAgICAgICAgICAgTkROQk9PU1RfSU5URVJOQUxfSVNfUE9EKFQpCi0gICAgICAgICA+Ojp2YWx1ZSkpOwotfTsKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0FSUkFZX1RZUEVfU1BFQ0lBTElaQVRJT05TKQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHN0ZDo6c2l6ZV90IHN6Pgotc3RydWN0IGlzX3BvZF9pbXBsPFRbc3pdPgotICAgIDogcHVibGljIGlzX3BvZF9pbXBsPFQ+Ci17Ci19OwotI2VuZGlmCi0KLSNlbHNlCi0KLXRlbXBsYXRlIDxib29sIGlzX2FycmF5ID0gZmFsc2U+Ci1zdHJ1Y3QgaXNfcG9kX2hlbHBlcgotewotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKAotICAgICAgICAgICAgYm9vbCwgdmFsdWUgPQotICAgICAgICAgICAgKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8Ci0gICAgICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfc2NhbGFyPFQ+Ojp2YWx1ZSwKLSAgICAgICAgICAgICAgICA6Om5kbmJvb3N0Ojppc192b2lkPFQ+Ojp2YWx1ZSwKLSAgICAgICAgICAgICAgICBORE5CT09TVF9JTlRFUk5BTF9JU19QT0QoVCkKLSAgICAgICAgICAgID46OnZhbHVlKSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlIDxib29sIGI+Ci1zdHJ1Y3QgYm9vbF90b195ZXNfbm9fdHlwZQotewotICAgIHR5cGVkZWYgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Om5vX3R5cGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgYm9vbF90b195ZXNfbm9fdHlwZTx0cnVlPgotewotICAgIHR5cGVkZWYgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQXJyYXlUeXBlPgotc3RydWN0IGlzX3BvZF9hcnJheV9oZWxwZXIKLXsKLSAgICBlbnVtIHsgaXNfcG9kID0gOjpuZG5ib29zdDo6aXNfUE9EPEFycmF5VHlwZT46OnZhbHVlIH07IC8vIE1TVkMgd29ya2Fyb3VuZAotICAgIHR5cGVkZWYgdHlwZW5hbWUgYm9vbF90b195ZXNfbm9fdHlwZTxpc19wb2Q+Ojp0eXBlIHR5cGU7Ci0gICAgdHlwZSBpbnN0YW5jZSgpIGNvbnN0OwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1pc19wb2RfYXJyYXlfaGVscGVyPFQ+IGlzX1BPRF9hcnJheShUKik7Ci0KLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgaXNfcG9kX2hlbHBlcjx0cnVlPgotewotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgcmVzdWx0XwotICAgIHsKLSAgICAgICAgc3RhdGljIFQmIGhlbHAoKTsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICAgICAgIHNpemVvZihpc19QT0RfYXJyYXkoaGVscCgpKS5pbnN0YW5jZSgpKSA9PSBzaXplb2YoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6Onllc190eXBlKQotICAgICAgICAgICAgKTsKLSAgICB9OwotfTsKLQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IGlzX3BvZF9pbXBsCi17IAotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKAotICAgICAgIGJvb2wsIHZhbHVlID0gKAotICAgICAgICAgICA6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX3BvZF9oZWxwZXI8Ci0gICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2FycmF5PFQ+Ojp2YWx1ZQotICAgICAgICAgICA+Ojp0ZW1wbGF0ZSByZXN1bHRfPFQ+Ojp2YWx1ZQotICAgICAgICAgICApCi0gICAgICAgKTsKLX07Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLS8vIHRoZSBmb2xsb3dpbmcgaGVscCBjb21waWxlcnMgd2l0aG91dCBwYXJ0aWFsIHNwZWNpYWxpemF0aW9uIHN1cHBvcnQ6Ci1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX3BvZCx2b2lkLHRydWUpCi0KLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1ZfVk9JRF9TUEVDSUFMSVpBVElPTlMKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfcG9kLHZvaWQgY29uc3QsdHJ1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfcG9kLHZvaWQgdm9sYXRpbGUsdHJ1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfcG9kLHZvaWQgY29uc3Qgdm9sYXRpbGUsdHJ1ZSkKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc19wb2QsVCw6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX3BvZF9pbXBsPFQ+Ojp2YWx1ZSkKLS8vIGlzX1BPRCBpcyB0aGUgb2xkIGRlcHJpY2F0ZWQgbmFtZSBmb3IgdGhpcyB0cmFpdCwgZG8gbm90IHVzZSB0aGlzIGFzIGl0IG1heQotLy8gYmUgcmVtb3ZlZCBpbiBmdXR1cmUgd2l0aG91dCB3YXJuaW5nISEKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfUE9ELFQsOjpuZG5ib29zdDo6aXNfcG9kPFQ+Ojp2YWx1ZSkKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X3VuZGVmLmhwcD4KLQotI3VuZGVmIE5ETkJPT1NUX0lOVEVSTkFMX0lTX1BPRAotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfSVNfUE9EX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19wb2ludGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcG9pbnRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgxMmQzNmQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19wb2ludGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE2MiArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IERhdmUgQWJyYWhhbXMsIFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIAotLy8gICAgICBIb3dhcmQgSGlubmFudCBhbmQgSm9obiBNYWRkb2NrIDIwMDAuIAotLy8gIChDKSBDb3B5cmlnaHQgTWF0IE1hcmN1cywgSmVzc2UgSm9uZXMgYW5kIEFkb2JlIFN5c3RlbXMgSW5jIDIwMDEKLQotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotLy8gICAgRml4ZWQgaXNfcG9pbnRlciwgaXNfcmVmZXJlbmNlLCBpc19jb25zdCwgaXNfdm9sYXRpbGUsIGlzX3NhbWUsIAotLy8gICAgaXNfbWVtYmVyX3BvaW50ZXIgYmFzZWQgb24gdGhlIFNpbXVsYXRlZCBQYXJ0aWFsIFNwZWNpYWxpemF0aW9uIHdvcmsgCi0vLyAgICBvZiBNYXQgTWFyY3VzIGFuZCBKZXNzZSBKb25lcy4gU2VlICBodHRwOi8vb3BlbnNvdXJjZS5hZG9iZS5jb20gb3IgCi0vLyAgICBodHRwOi8vZ3JvdXBzLnlhaG9vLmNvbS9ncm91cC9ib29zdC9tZXNzYWdlLzU0NDEgCi0vLyAgICBTb21lIHdvcmthcm91bmRzIGluIGhlcmUgdXNlIGlkZWFzIHN1Z2dlc3RlZCBmcm9tICJHZW5lcmljPFByb2dyYW1taW5nPjogCi0vLyAgICBNYXBwaW5ncyBiZXR3ZWVuIFR5cGVzIGFuZCBWYWx1ZXMiIAotLy8gICAgYnkgQW5kcmVpIEFsZXhhbmRyZXNjdSAoc2VlIGh0dHA6Ly93d3cuY3VqLmNvbS9leHBlcnRzLzE4MTAvYWxleGFuZHIuaHRtbCkuCi0KLQotI2lmbmRlZiBORE5CT09TVF9UVF9JU19QT0lOVEVSX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9JU19QT0lOVEVSX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfbWVtYmVyX3BvaW50ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2VfYW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX25vdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvY29uZmlnLmhwcD4KLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLDw9MTMwMCkKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfY3YuaHBwPgotI2VuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcmVmZXJlbmNlLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19hcnJheS5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2lzX2Z1bmN0aW9uX3B0cl90ZXN0ZXIuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9mYWxzZV9yZXN1bHQuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2Vfb3IuaHBwPgotI2VuZGlmCi0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLSNpZiBkZWZpbmVkKCBfX0NPREVHRUFSQ19fICkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfcG9pbnRlcixULF9faXNfcG9pbnRlcihUKSkKLSNlbGlmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pCi0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBpc19wb2ludGVyX2hlbHBlcgotewotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGZhbHNlKTsKLX07Ci0KLSMgICBkZWZpbmUgVFRfQVVYX0JPT0xfVFJBSVRfSEVMUEVSX1BBUlRJQUxfU1BFQyhoZWxwZXIsc3AscmVzdWx0KSBcCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+IHN0cnVjdCBoZWxwZXI8c3A+IFwKLXsgXAotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHJlc3VsdCk7IFwKLX07IFwKLS8qKi8KLQotVFRfQVVYX0JPT0xfVFJBSVRfSEVMUEVSX1BBUlRJQUxfU1BFQyhpc19wb2ludGVyX2hlbHBlcixUKix0cnVlKQotCi0jICAgdW5kZWYgVFRfQVVYX0JPT0xfVFJBSVRfSEVMUEVSX1BBUlRJQUxfU1BFQwotCi10ZW1wbGF0ZTwgdHlwZW5hbWUgVCA+Ci1zdHJ1Y3QgaXNfcG9pbnRlcl9pbXBsCi17Ci0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLDw9MTMwMCkKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPQotICAgICAgICAoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8Ci0gICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfcG9pbnRlcl9oZWxwZXI8VD46OnZhbHVlCi0gICAgICAgICAgICAsIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX21lbWJlcl9wb2ludGVyPFQ+Ojp2YWx1ZQotICAgICAgICAgICAgICAgID46OnZhbHVlCi0gICAgICAgICAgICA+Ojp2YWx1ZSkKLSAgICAgICAgKTsKLSNlbHNlCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0KLSAgICAgICAgKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPAotICAgICAgICA6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX3BvaW50ZXJfaGVscGVyPHR5cGVuYW1lIHJlbW92ZV9jdjxUPjo6dHlwZT46OnZhbHVlCi0gICAgICAgICAgICAsIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PAotICAgICAgICAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX21lbWJlcl9wb2ludGVyPFQ+Ojp2YWx1ZQotICAgICAgICAgICAgICAgID46OnZhbHVlCi0gICAgICAgICAgICA+Ojp2YWx1ZSkKLSAgICAgICAgKTsKLSNlbmRpZgotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfcG9pbnRlcixULDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfcG9pbnRlcl9pbXBsPFQ+Ojp2YWx1ZSkKLQotI2lmIGRlZmluZWQoX19CT1JMQU5EQ19fKSAmJiAhZGVmaW5lZChfX0NPTU9fXykgJiYgKF9fQk9STEFORENfXyA8IDB4NjAwKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMV8xKHR5cGVuYW1lIFQsaXNfcG9pbnRlcixUJixmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzFfMSh0eXBlbmFtZSBULGlzX3BvaW50ZXIsVCYgY29uc3QsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMxXzEodHlwZW5hbWUgVCxpc19wb2ludGVyLFQmIHZvbGF0aWxlLGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMV8xKHR5cGVuYW1lIFQsaXNfcG9pbnRlcixUJiBjb25zdCB2b2xhdGlsZSxmYWxzZSkKLSNlbmRpZgotCi0jZWxzZSAvLyBubyBwYXJ0aWFsIHRlbXBsYXRlIHNwZWNpYWxpemF0aW9uCi0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi1zdHJ1Y3QgcG9pbnRlcl9oZWxwZXIKLXsKLSAgICBwb2ludGVyX2hlbHBlcihjb25zdCB2b2xhdGlsZSB2b2lkKik7Ci19OwotCi15ZXNfdHlwZSBORE5CT09TVF9UVF9ERUNMIGlzX3BvaW50ZXJfdGVzdGVyKHBvaW50ZXJfaGVscGVyKTsKLW5vX3R5cGUgTkROQk9PU1RfVFRfREVDTCBpc19wb2ludGVyX3Rlc3RlciguLi4pOwotCi10ZW1wbGF0ZSA8Ym9vbD4KLXN0cnVjdCBpc19wb2ludGVyX3NlbGVjdAotICAgIDogcHVibGljIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjpmYWxzZV9yZXN1bHQKLXsKLX07Ci0KLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgaXNfcG9pbnRlcl9zZWxlY3Q8ZmFsc2U+Ci17Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICBzdGF0aWMgVCYgbWFrZV90KCk7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9Ci0gICAgICAgICAgICAgICAgKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8Ci0gICAgICAgICAgICAgICAgICAgICgxID09IHNpemVvZihpc19wb2ludGVyX3Rlc3RlcihtYWtlX3QoKSkpKSwKLSAgICAgICAgICAgICAgICAgICAgKDEgPT0gc2l6ZW9mKHR5cGVfdHJhaXRzOjppc19mdW5jdGlvbl9wdHJfdGVzdGVyKG1ha2VfdCgpKSkpCi0gICAgICAgICAgICAgICAgPjo6dmFsdWUpKTsKLSAgICB9OwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaXNfcG9pbnRlcl9pbXBsCi0gICAgOiBwdWJsaWMgaXNfcG9pbnRlcl9zZWxlY3Q8Ci0gICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjwKLSAgICAgICAgICAgICAgOjpuZG5ib29zdDo6aXNfcmVmZXJlbmNlPFQ+Ojp2YWx1ZQotICAgICAgICAgICAgLCA6Om5kbmJvb3N0Ojppc19hcnJheTxUPjo6dmFsdWUKLSAgICAgICAgICAgID46OnZhbHVlCi0gICAgICAgID46OnRlbXBsYXRlIHJlc3VsdF88VD4KLXsKLX07Ci0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfcG9pbnRlcix2b2lkLGZhbHNlKQotI2lmbmRlZiBORE5CT09TVF9OT19DVl9WT0lEX1NQRUNJQUxJWkFUSU9OUwotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc19wb2ludGVyLHZvaWQgY29uc3QsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX3BvaW50ZXIsdm9pZCB2b2xhdGlsZSxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfcG9pbnRlcix2b2lkIGNvbnN0IHZvbGF0aWxlLGZhbHNlKQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGlzX3BvaW50ZXIsVCw6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX3BvaW50ZXJfaW1wbDxUPjo6dmFsdWUpCi0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9JU19QT0lOVEVSX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19wb2x5bW9ycGhpYy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3BvbHltb3JwaGljLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzZiNjYxNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3BvbHltb3JwaGljLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExNCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwMC4gCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0lTX1BPTFlNT1JQSElDX0hQUAotI2RlZmluZSBORE5CT09TVF9UVF9JU19QT0xZTU9SUEhJQ19IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2ludHJpbnNpY3MuaHBwPgotI2lmbmRlZiBORE5CT09TVF9JU19QT0xZTU9SUEhJQwotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NsYXNzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfY3YuaHBwPgotI2VuZGlmCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0ewotCi0jaWZuZGVmIE5ETkJPT1NUX0lTX1BPTFlNT1JQSElDCi0KLW5hbWVzcGFjZSBkZXRhaWx7Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGlzX3BvbHltb3JwaGljX2ltcDEKLXsKLSMgaWYgTkROQk9PU1RfV09SS0FST1VORChfX01XRVJLU19fLCA8PSAweDI0MDcpIC8vIENXUHJvNyBzaG91bGQgcmV0dXJuIGZhbHNlIGFsd2F5cy4KLSAgICB0eXBlZGVmIGNoYXIgZDEsICgmZDIpWzJdOwotIyBlbHNlIAotICAgdHlwZWRlZiB0eXBlbmFtZSByZW1vdmVfY3Y8VD46OnR5cGUgbmN2VDsKLSAgIHN0cnVjdCBkMSA6IHB1YmxpYyBuY3ZUCi0gICB7Ci0gICAgICBkMSgpOwotIyAgaWYgIWRlZmluZWQoX19HTlVDX18pIC8vIHRoaXMgcmFpc2VzIHdhcm5pbmdzIHdpdGggc29tZSBjbGFzc2VzLCBhbmQgYnV5cyBub3RoaW5nIHdpdGggR0NDCi0gICAgICB+ZDEoKXRocm93KCk7Ci0jICBlbmRpZiAKLSAgICAgIGNoYXIgcGFkZGluZ1syNTZdOwotICAgcHJpdmF0ZToKLSAgICAgIC8vIGtlZXAgc29tZSBwaWNreSBjb21waWxlcnMgaGFwcHk6Ci0gICAgICBkMShjb25zdCBkMSYpOwotICAgICAgZDEmIG9wZXJhdG9yPShjb25zdCBkMSYpOwotICAgfTsKLSAgIHN0cnVjdCBkMiA6IHB1YmxpYyBuY3ZUCi0gICB7Ci0gICAgICBkMigpOwotICAgICAgdmlydHVhbCB+ZDIoKXRocm93KCk7Ci0jICBpZiAhZGVmaW5lZChORE5CT09TVF9NU1ZDKSAmJiAhZGVmaW5lZChfX0lDTCkKLSAgICAgIC8vIGZvciBzb21lIHJlYXNvbiB0aGlzIG1lc3NlcyB1cCBWQysrIHdoZW4gVCBoYXMgdmlydHVhbCBiYXNlcywKLSAgICAgIC8vIHByb2JhYmx5IGxpa2V3aXNlIGZvciBjb21waWxlcnMgdGhhdCB1c2UgdGhlIHNhbWUgQUJJOgotICAgICAgc3RydWN0IHVuaXF1ZXt9OwotICAgICAgdmlydHVhbCB2b2lkIHVuaXF1ZV9uYW1lX3RvX2Jvb3N0NTQ4NzYyOSh1bmlxdWUqKTsKLSMgIGVuZGlmCi0gICAgICBjaGFyIHBhZGRpbmdbMjU2XTsKLSAgIHByaXZhdGU6Ci0gICAgICAvLyBrZWVwIHNvbWUgcGlja3kgY29tcGlsZXJzIGhhcHB5OgotICAgICAgZDIoY29uc3QgZDImKTsKLSAgICAgIGQyJiBvcGVyYXRvcj0oY29uc3QgZDImKTsKLSAgIH07Ci0jIGVuZGlmIAotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gKHNpemVvZihkMikgPT0gc2l6ZW9mKGQxKSkpOwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgaXNfcG9seW1vcnBoaWNfaW1wMgotewotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gZmFsc2UpOwotfTsKLQotdGVtcGxhdGUgPGJvb2wgaXNfY2xhc3M+Ci1zdHJ1Y3QgaXNfcG9seW1vcnBoaWNfc2VsZWN0b3IKLXsKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgc3RydWN0IHJlYmluZAotICAgewotICAgICAgdHlwZWRlZiBpc19wb2x5bW9ycGhpY19pbXAyPFQ+IHR5cGU7Ci0gICB9OwotfTsKLQotdGVtcGxhdGUgPD4KLXN0cnVjdCBpc19wb2x5bW9ycGhpY19zZWxlY3Rvcjx0cnVlPgotewotICAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gICBzdHJ1Y3QgcmViaW5kCi0gICB7Ci0gICAgICB0eXBlZGVmIGlzX3BvbHltb3JwaGljX2ltcDE8VD4gdHlwZTsKLSAgIH07Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpc19wb2x5bW9ycGhpY19pbXAKLXsKLSAgIHR5cGVkZWYgaXNfcG9seW1vcnBoaWNfc2VsZWN0b3I8IDo6bmRuYm9vc3Q6OmlzX2NsYXNzPFQ+Ojp2YWx1ZT4gc2VsZWN0b3I7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHNlbGVjdG9yOjp0ZW1wbGF0ZSByZWJpbmQ8VD4gYmluZGVyOwotICAgdHlwZWRlZiB0eXBlbmFtZSBiaW5kZXI6OnR5cGUgaW1wX3R5cGU7Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBpbXBfdHlwZTo6dmFsdWUpOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfcG9seW1vcnBoaWMsVCw6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX3BvbHltb3JwaGljX2ltcDxUPjo6dmFsdWUpCi0KLSNlbHNlIC8vIE5ETkJPT1NUX0lTX1BPTFlNT1JQSElDCi0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfcG9seW1vcnBoaWMsVCxORE5CT09TVF9JU19QT0xZTU9SUEhJQyhUKSkKLQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19yZWZlcmVuY2UuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19yZWZlcmVuY2UuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOWQ2YzRmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcmVmZXJlbmNlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgRGF2ZSBBYnJhaGFtcywgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgCi0vLyAgICAgIEhvd2FyZCBIaW5uYW50IGFuZCBKb2huIE1hZGRvY2sgMjAwMCwgMjAxMC4gCi0vLyAgKEMpIENvcHlyaWdodCBNYXQgTWFyY3VzLCBKZXNzZSBKb25lcyBhbmQgQWRvYmUgU3lzdGVtcyBJbmMgMjAwMQotCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0lTX1JFRkVSRU5DRV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSVNfUkVGRVJFTkNFX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19sdmFsdWVfcmVmZXJlbmNlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19ydmFsdWVfcmVmZXJlbmNlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pY2UuaHBwPgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgaXNfcmVmZXJlbmNlX2ltcGwKLXsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9Ci0gICAgICAoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2x2YWx1ZV9yZWZlcmVuY2U8VD46OnZhbHVlLCA6Om5kbmJvb3N0Ojppc19ydmFsdWVfcmVmZXJlbmNlPFQ+Ojp2YWx1ZQotICAgICAgID46OnZhbHVlKSk7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc19yZWZlcmVuY2UsVCw6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX3JlZmVyZW5jZV9pbXBsPFQ+Ojp2YWx1ZSkKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0lTX1JFRkVSRU5DRV9IUFBfSU5DTFVERUQKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19ydmFsdWVfcmVmZXJlbmNlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcnZhbHVlX3JlZmVyZW5jZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdjZmUxNDIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19ydmFsdWVfcmVmZXJlbmNlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLQotLy8gIChDKSBKb2huIE1hZGRvY2sgMjAxMC4gCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0lTX1JWQUxVRV9SRUZFUkVOQ0VfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0lTX1JWQUxVRV9SRUZFUkVOQ0VfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9jb25maWcuaHBwPgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGlzX3J2YWx1ZV9yZWZlcmVuY2UsVCxmYWxzZSkKLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzFfMSh0eXBlbmFtZSBULGlzX3J2YWx1ZV9yZWZlcmVuY2UsVCYmLHRydWUpCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0lTX1JFRkVSRU5DRV9IUFBfSU5DTFVERUQKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2FtZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQwMGJkMmYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwMyArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IERhdmUgQWJyYWhhbXMsIFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIAotLy8gICAgICBIb3dhcmQgSGlubmFudCBhbmQgSm9obiBNYWRkb2NrIDIwMDAuIAotLy8gIChDKSBDb3B5cmlnaHQgTWF0IE1hcmN1cywgSmVzc2UgSm9uZXMgYW5kIEFkb2JlIFN5c3RlbXMgSW5jIDIwMDEKLQotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotLy8gICAgRml4ZWQgaXNfcG9pbnRlciwgaXNfcmVmZXJlbmNlLCBpc19jb25zdCwgaXNfdm9sYXRpbGUsIGlzX3NhbWUsIAotLy8gICAgaXNfbWVtYmVyX3BvaW50ZXIgYmFzZWQgb24gdGhlIFNpbXVsYXRlZCBQYXJ0aWFsIFNwZWNpYWxpemF0aW9uIHdvcmsgCi0vLyAgICBvZiBNYXQgTWFyY3VzIGFuZCBKZXNzZSBKb25lcy4gU2VlICBodHRwOi8vb3BlbnNvdXJjZS5hZG9iZS5jb20gb3IgCi0vLyAgICBodHRwOi8vZ3JvdXBzLnlhaG9vLmNvbS9ncm91cC9ib29zdC9tZXNzYWdlLzU0NDEgCi0vLyAgICBTb21lIHdvcmthcm91bmRzIGluIGhlcmUgdXNlIGlkZWFzIHN1Z2dlc3RlZCBmcm9tICJHZW5lcmljPFByb2dyYW1taW5nPjogCi0vLyAgICBNYXBwaW5ncyBiZXR3ZWVuIFR5cGVzIGFuZCBWYWx1ZXMiIAotLy8gICAgYnkgQW5kcmVpIEFsZXhhbmRyZXNjdSAoc2VlIGh0dHA6Ly93d3cuY3VqLmNvbS9leHBlcnRzLzE4MTAvYWxleGFuZHIuaHRtbCkuCi0KLQotI2lmbmRlZiBORE5CT09TVF9UVF9JU19TQU1FX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9JU19TQU1FX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvY29uZmlnLmhwcD4KLSNpZmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3llc19ub190eXBlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX2FuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcmVmZXJlbmNlLmhwcD4KLSNlbmRpZgotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotI2lmbmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjIoaXNfc2FtZSxULFUsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMyXzEodHlwZW5hbWUgVCxpc19zYW1lLFQsVCx0cnVlKQotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCA8IDB4NjAwKQotLy8gd2l0aG91dCB0aGlzLCBCb3JsYW5kJ3MgY29tcGlsZXIgZ2l2ZXMgdGhlIHdyb25nIGFuc3dlciBmb3IKLS8vIHJlZmVyZW5jZXMgdG8gYXJyYXlzOgotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMl8xKHR5cGVuYW1lIFQsaXNfc2FtZSxUJixUJix0cnVlKQotI2VuZGlmCi0KLSNlbHNlIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0vLyB0aGUgZm9sbG93aW5nIFZDNiBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiBpcyAqTk9UKiBsZWdhbAotLy8gQysrLCBidXQgaGFzIHRoZSBhZHZhbnRhZ2UgdGhhdCBpdCB3b3JrcyBmb3IgaW5jb21wbGV0ZQotLy8gdHlwZXMuCi0KLXRlbXBsYXRlPCB0eXBlbmFtZSBUMSA+Ci1zdHJ1Y3QgaXNfc2FtZV9wYXJ0XzEKLXsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUMj4gIHN0cnVjdCBwYXJ0XzIgICAgIHsgZW51bSB7IHZhbHVlID0gZmFsc2UgfTsgfTsKLSAgICB0ZW1wbGF0ZTw+ICAgICAgICAgICAgIHN0cnVjdCBwYXJ0XzI8VDE+IHsgZW51bSB7IHZhbHVlID0gdHJ1ZSB9OyB9OwotfTsKLQotdGVtcGxhdGU8IHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiA+Ci1zdHJ1Y3QgaXNfc2FtZV9pbXBsCi17Ci0gICAgZW51bSB7IHZhbHVlID0gbmRuYm9vc3Q6OmRldGFpbDo6aXNfc2FtZV9wYXJ0XzE8VDE+Ojp0ZW1wbGF0ZSBwYXJ0XzI8VDI+Ojp2YWx1ZSB9OwotfTsKLQotI2Vsc2UgLy8gZ2VuZXJpYyAibm8tcGFydGlhbC1zcGVjaWFsaXphdGlvbiIgdmVyc2lvbgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLTo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZQotTkROQk9PU1RfVFRfREVDTCBpc19zYW1lX3Rlc3RlcihUKiwgVCopOwotCi06Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6bm9fdHlwZQotTkROQk9PU1RfVFRfREVDTCBpc19zYW1lX3Rlc3RlciguLi4pOwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KLXN0cnVjdCBpc19zYW1lX2ltcGwKLXsKLSAgIHN0YXRpYyBUIHQ7Ci0gICBzdGF0aWMgVSB1OwotCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPQotICAgICAgKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPAotICAgICAgICAgKHNpemVvZih0eXBlX3RyYWl0czo6eWVzX3R5cGUpID09IHNpemVvZihuZG5ib29zdDo6ZGV0YWlsOjppc19zYW1lX3Rlc3RlcigmdCwmdSkpKSwKLSAgICAgICAgICg6Om5kbmJvb3N0Ojppc19yZWZlcmVuY2U8VD46OnZhbHVlID09IDo6bmRuYm9vc3Q6OmlzX3JlZmVyZW5jZTxVPjo6dmFsdWUpLAotICAgICAgICAgKHNpemVvZihUKSA9PSBzaXplb2YoVSkpCi0gICAgICAgID46OnZhbHVlKSk7Ci19OwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTVNWQwotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMihpc19zYW1lLFQsVSwoOjpuZG5ib29zdDo6ZGV0YWlsOjppc19zYW1lX2ltcGw8VCxVPjo6dmFsdWUpKQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgIC8vIE5ETkJPT1NUX1RUX0lTX1NBTUVfSFBQX0lOQ0xVREVECi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2NhbGFyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2NhbGFyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTRlMjA4ZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NjYWxhci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIEhvd2FyZCBIaW5uYW50ICYgSm9obiBNYWRkb2NrIDIwMDAuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0lTX1NDQUxBUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSVNfU0NBTEFSX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYXJpdGhtZXRpYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfZW51bS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcG9pbnRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfbWVtYmVyX3BvaW50ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2Vfb3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19zY2FsYXJfaW1wbAoteyAKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9Ci0gICAgICAoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2FyaXRobWV0aWM8VD46OnZhbHVlLAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZW51bTxUPjo6dmFsdWUsCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19wb2ludGVyPFQ+Ojp2YWx1ZSwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX21lbWJlcl9wb2ludGVyPFQ+Ojp2YWx1ZQotICAgICAgPjo6dmFsdWUpKTsKLX07Ci0KLS8vIHRoZXNlIHNwZWNpYWxpemF0aW9ucyBhcmUgb25seSByZWFsbHkgbmVlZGVkIGZvciBjb21waWxlcnMgCi0vLyB3aXRob3V0IHBhcnRpYWwgc3BlY2lhbGl6YXRpb24gc3VwcG9ydDoKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc19zY2FsYXJfaW1wbDx2b2lkPnsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gZmFsc2UgKTsgfTsKLSNpZm5kZWYgTkROQk9PU1RfTk9fQ1ZfVk9JRF9TUEVDSUFMSVpBVElPTlMKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc19zY2FsYXJfaW1wbDx2b2lkIGNvbnN0PnsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gZmFsc2UgKTsgfTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc19zY2FsYXJfaW1wbDx2b2lkIHZvbGF0aWxlPnsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gZmFsc2UgKTsgfTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc19zY2FsYXJfaW1wbDx2b2lkIGNvbnN0IHZvbGF0aWxlPnsgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gZmFsc2UgKTsgfTsKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc19zY2FsYXIsVCw6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX3NjYWxhcl9pbXBsPFQ+Ojp2YWx1ZSkKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0lTX1NDQUxBUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2lnbmVkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2lnbmVkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDQwYzZlMC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NpZ25lZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDAgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwNS4gIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0lTX1NJR05FRF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSVNfU0lHTkVEX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfaW50ZWdyYWwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9jdi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfZW51bS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9vci5ocHA+Ci0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLSNpZiAhZGVmaW5lZCggX19DT0RFR0VBUkNfXyApCi0KLW5hbWVzcGFjZSBkZXRhaWx7Ci0KLSNpZiAhKGRlZmluZWQoX19FREdfVkVSU0lPTl9fKSAmJiBfX0VER19WRVJTSU9OX18gPD0gMjM4KSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19JTkNMQVNTX01FTUJFUl9JTklUSUFMSVpBVElPTikKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgaXNfc2lnbmVkX3ZhbHVlcwotewotICAgLy8KLSAgIC8vIE5vdGUgdGhhdCB3ZSBjYW5ub3QgdXNlIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCBoZXJlLCB1c2luZyBlbnVtJ3MKLSAgIC8vIHJhdGhlciB0aGFuICJyZWFsIiBzdGF0aWMgY29uc3RhbnRzIHNpbXBseSBkb2Vzbid0IHdvcmsgb3IgZ2l2ZQotICAgLy8gdGhlIGNvcnJlY3QgYW5zd2VyLgotICAgLy8KLSAgIHR5cGVkZWYgdHlwZW5hbWUgcmVtb3ZlX2N2PFQ+Ojp0eXBlIG5vX2N2X3Q7Ci0gICBzdGF0aWMgY29uc3Qgbm9fY3ZfdCBtaW51c19vbmUgPSAoc3RhdGljX2Nhc3Q8bm9fY3ZfdD4oLTEpKTsKLSAgIHN0YXRpYyBjb25zdCBub19jdl90IHplcm8gPSAoc3RhdGljX2Nhc3Q8bm9fY3ZfdD4oMCkpOwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgaXNfc2lnbmVkX2hlbHBlcgotewotICAgdHlwZWRlZiB0eXBlbmFtZSByZW1vdmVfY3Y8VD46OnR5cGUgbm9fY3ZfdDsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9ICghKDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfc2lnbmVkX3ZhbHVlczxUPjo6bWludXNfb25lICA+IG5kbmJvb3N0OjpkZXRhaWw6OmlzX3NpZ25lZF92YWx1ZXM8VD46Onplcm8pKSk7Ci19OwotCi10ZW1wbGF0ZSA8Ym9vbCBpbnRlZ3JhbF90eXBlPgotc3RydWN0IGlzX3NpZ25lZF9zZWxlY3RfaGVscGVyCi17Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgIHN0cnVjdCByZWJpbmQKLSAgIHsKLSAgICAgIHR5cGVkZWYgaXNfc2lnbmVkX2hlbHBlcjxUPiB0eXBlOwotICAgfTsKLX07Ci0KLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgaXNfc2lnbmVkX3NlbGVjdF9oZWxwZXI8ZmFsc2U+Ci17Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgIHN0cnVjdCByZWJpbmQKLSAgIHsKLSAgICAgIHR5cGVkZWYgZmFsc2VfdHlwZSB0eXBlOwotICAgfTsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGlzX3NpZ25lZF9pbXAKLXsKLSAgIHR5cGVkZWYgaXNfc2lnbmVkX3NlbGVjdF9oZWxwZXI8IAotICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9vcjwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2ludGVncmFsPFQ+Ojp2YWx1ZSwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX2VudW08VD46OnZhbHVlPjo6dmFsdWUgCi0gICA+IHNlbGVjdG9yOwotICAgdHlwZWRlZiB0eXBlbmFtZSBzZWxlY3Rvcjo6dGVtcGxhdGUgcmViaW5kPFQ+IGJpbmRlcjsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgYmluZGVyOjp0eXBlIHR5cGU7Ci0jaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKSAmJiAoTkROQk9PU1RfTVNWQyA8IDEzMDApCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBpc19zaWduZWRfaW1wPFQ+Ojp0eXBlOjp2YWx1ZSk7Ci0jZWxzZQotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gdHlwZTo6dmFsdWUpOwotI2VuZGlmCi19OwotCi0jZWxzZQotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4gc3RydWN0IGlzX3NpZ25lZF9pbXAgOiBwdWJsaWMgZmFsc2VfdHlwZXt9OwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3NpZ25lZF9pbXA8c2lnbmVkIGNoYXI+IDogcHVibGljIHRydWVfdHlwZXt9OwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3NpZ25lZF9pbXA8Y29uc3Qgc2lnbmVkIGNoYXI+IDogcHVibGljIHRydWVfdHlwZXt9OwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3NpZ25lZF9pbXA8dm9sYXRpbGUgc2lnbmVkIGNoYXI+IDogcHVibGljIHRydWVfdHlwZXt9OwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3NpZ25lZF9pbXA8Y29uc3Qgdm9sYXRpbGUgc2lnbmVkIGNoYXI+IDogcHVibGljIHRydWVfdHlwZXt9OwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3NpZ25lZF9pbXA8c2hvcnQ+IDogcHVibGljIHRydWVfdHlwZXt9OwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3NpZ25lZF9pbXA8Y29uc3Qgc2hvcnQ+IDogcHVibGljIHRydWVfdHlwZXt9OwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3NpZ25lZF9pbXA8dm9sYXRpbGUgc2hvcnQ+IDogcHVibGljIHRydWVfdHlwZXt9OwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3NpZ25lZF9pbXA8Y29uc3Qgdm9sYXRpbGUgc2hvcnQ+IDogcHVibGljIHRydWVfdHlwZXt9OwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3NpZ25lZF9pbXA8aW50PiA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc19zaWduZWRfaW1wPGNvbnN0IGludD4gOiBwdWJsaWMgdHJ1ZV90eXBle307Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfc2lnbmVkX2ltcDx2b2xhdGlsZSBpbnQ+IDogcHVibGljIHRydWVfdHlwZXt9OwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3NpZ25lZF9pbXA8Y29uc3Qgdm9sYXRpbGUgaW50PiA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc19zaWduZWRfaW1wPGxvbmc+IDogcHVibGljIHRydWVfdHlwZXt9OwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3NpZ25lZF9pbXA8Y29uc3QgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBle307Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfc2lnbmVkX2ltcDx2b2xhdGlsZSBsb25nPiA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc19zaWduZWRfaW1wPGNvbnN0IHZvbGF0aWxlIGxvbmc+IDogcHVibGljIHRydWVfdHlwZXt9OwotI2lmZGVmIE5ETkJPT1NUX0hBU19MT05HX0xPTkcKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc19zaWduZWRfaW1wPGxvbmcgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBle307Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfc2lnbmVkX2ltcDxjb25zdCBsb25nIGxvbmc+IDogcHVibGljIHRydWVfdHlwZXt9OwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3NpZ25lZF9pbXA8dm9sYXRpbGUgbG9uZyBsb25nPiA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc19zaWduZWRfaW1wPGNvbnN0IHZvbGF0aWxlIGxvbmcgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBle307Ci0jZW5kaWYKLSNpZiBkZWZpbmVkKENIQVJfTUlOKSAmJiAoQ0hBUl9NSU4gIT0gMCkKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc19zaWduZWRfaW1wPGNoYXI+IDogcHVibGljIHRydWVfdHlwZXt9OwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3NpZ25lZF9pbXA8Y29uc3QgY2hhcj4gOiBwdWJsaWMgdHJ1ZV90eXBle307Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfc2lnbmVkX2ltcDx2b2xhdGlsZSBjaGFyPiA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc19zaWduZWRfaW1wPGNvbnN0IHZvbGF0aWxlIGNoYXI+IDogcHVibGljIHRydWVfdHlwZXt9OwotI2VuZGlmCi0jaWYgZGVmaW5lZChXQ0hBUl9NSU4pICYmIChXQ0hBUl9NSU4gIT0gMCkKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc19zaWduZWRfaW1wPHdjaGFyX3Q+IDogcHVibGljIHRydWVfdHlwZXt9OwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3NpZ25lZF9pbXA8Y29uc3Qgd2NoYXJfdD4gOiBwdWJsaWMgdHJ1ZV90eXBle307Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfc2lnbmVkX2ltcDx2b2xhdGlsZSB3Y2hhcl90PiA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc19zaWduZWRfaW1wPGNvbnN0IHZvbGF0aWxlIHdjaGFyX3Q+IDogcHVibGljIHRydWVfdHlwZXt9OwotI2VuZGlmCi0KLSNlbmRpZgotCi19Ci0KLSNlbmRpZiAvLyAhZGVmaW5lZCggX19DT0RFR0VBUkNfXyApCi0KLSNpZiBkZWZpbmVkKCBfX0NPREVHRUFSQ19fICkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfc2lnbmVkLFQsX19pc19zaWduZWQoVCkpCi0jZWxzZQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc19zaWduZWQsVCw6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX3NpZ25lZF9pbXA8VD46OnZhbHVlKQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9JU19NRU1CRVJfRlVOQ1RJT05fUE9JTlRFUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc3RhdGVsZXNzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc3RhdGVsZXNzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjc5NjhkYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3N0YXRlbGVzcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIEhvd2FyZCBIaW5uYW50ICYgSm9obiBNYWRkb2NrIDIwMDAuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0lTX1NUQVRFTEVTU19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfSVNfU1RBVEVMRVNTX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX3RyaXZpYWxfY29uc3RydWN0b3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc190cml2aWFsX2NvcHkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc190cml2aWFsX2Rlc3RydWN0b3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NsYXNzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19lbXB0eS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9hbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBpc19zdGF0ZWxlc3NfaW1wbAotewotICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSAKLSAgICAoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9hbmQ8Ci0gICAgICAgOjpuZG5ib29zdDo6aGFzX3RyaXZpYWxfY29uc3RydWN0b3I8VD46OnZhbHVlLAotICAgICAgIDo6bmRuYm9vc3Q6Omhhc190cml2aWFsX2NvcHk8VD46OnZhbHVlLAotICAgICAgIDo6bmRuYm9vc3Q6Omhhc190cml2aWFsX2Rlc3RydWN0b3I8VD46OnZhbHVlLAotICAgICAgIDo6bmRuYm9vc3Q6OmlzX2NsYXNzPFQ+Ojp2YWx1ZSwKLSAgICAgICA6Om5kbmJvb3N0Ojppc19lbXB0eTxUPjo6dmFsdWUKLSAgICAgPjo6dmFsdWUpKTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGlzX3N0YXRlbGVzcyxULDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfc3RhdGVsZXNzX2ltcGw8VD46OnZhbHVlKQotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfSVNfU1RBVEVMRVNTX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc191bmlvbi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3VuaW9uLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTRiNGJkNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3VuaW9uLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgRGF2ZSBBYnJhaGFtcywgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgSG93YXJkCi0vLyAgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLiAgCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfSVNfVU5JT05fSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0lTX1VOSU9OX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2N2LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2ludHJpbnNpY3MuaHBwPgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLSNpZm5kZWYgX19HTlVDX18KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgaXNfdW5pb25faW1wbAotewotICAgdHlwZWRlZiB0eXBlbmFtZSByZW1vdmVfY3Y8VD46OnR5cGUgY3Z0OwotI2lmZGVmIE5ETkJPT1NUX0lTX1VOSU9OCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBORE5CT09TVF9JU19VTklPTihjdnQpKTsKLSNlbHNlCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBmYWxzZSk7Ci0jZW5kaWYKLX07Ci0jZWxzZQotLy8KLS8vIHVzaW5nIHJlbW92ZV9jdiBoZXJlIGdlbmVyYXRlcyBhIHdob2xlIGxvYWQgb2YgbmVlZGxlc3MKLS8vIHdhcm5pbmdzIHdpdGggZ2NjLCBzaW5jZSBpdCBkb2Vzbid0IGRvIGFueSBnb29kIHdpdGggZ2NjCi0vLyBpbiBhbnkgY2FzZSAoYXQgbGVhc3QgYXQgcHJlc2VudCksIGp1c3QgcmVtb3ZlIGl0OgotLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgaXNfdW5pb25faW1wbAotewotI2lmZGVmIE5ETkJPT1NUX0lTX1VOSU9OCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBORE5CT09TVF9JU19VTklPTihUKSk7Ci0jZWxzZQotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gZmFsc2UpOwotI2VuZGlmCi19OwotI2VuZGlmCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc191bmlvbixULDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfdW5pb25faW1wbDxUPjo6dmFsdWUpCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9JU19VTklPTl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfdW5zaWduZWQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc191bnNpZ25lZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2YmFmMTEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc191bnNpZ25lZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMzUgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwNS4gIAotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0lTX1VOU0lHTkVEX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9JU19VTlNJR05FRF9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2ludGVncmFsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19lbnVtLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfY3YuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2Vfb3IuaHBwPgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi0jaWYgIWRlZmluZWQoIF9fQ09ERUdFQVJDX18gKQotCi1uYW1lc3BhY2UgZGV0YWlsewotCi0jaWYgIShkZWZpbmVkKF9fRURHX1ZFUlNJT05fXykgJiYgX19FREdfVkVSU0lPTl9fIDw9IDIzOCkgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fSU5DTEFTU19NRU1CRVJfSU5JVElBTElaQVRJT04pCi0KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGlzX3Vuc2lnbmVkX3ZhbHVlcwotewotICAgLy8KLSAgIC8vIE5vdGUgdGhhdCB3ZSBjYW5ub3QgdXNlIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCBoZXJlLCB1c2luZyBlbnVtJ3MKLSAgIC8vIHJhdGhlciB0aGFuICJyZWFsIiBzdGF0aWMgY29uc3RhbnRzIHNpbXBseSBkb2Vzbid0IHdvcmsgb3IgZ2l2ZQotICAgLy8gdGhlIGNvcnJlY3QgYW5zd2VyLgotICAgLy8KLSAgIHR5cGVkZWYgdHlwZW5hbWUgcmVtb3ZlX2N2PFQ+Ojp0eXBlIG5vX2N2X3Q7Ci0gICBzdGF0aWMgY29uc3Qgbm9fY3ZfdCBtaW51c19vbmUgPSAoc3RhdGljX2Nhc3Q8bm9fY3ZfdD4oLTEpKTsKLSAgIHN0YXRpYyBjb25zdCBub19jdl90IHplcm8gPSAoc3RhdGljX2Nhc3Q8bm9fY3ZfdD4oMCkpOwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgaXNfdW51bnNpZ25lZF9oZWxwZXIKLXsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9ICg6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX3Vuc2lnbmVkX3ZhbHVlczxUPjo6bWludXNfb25lID4gOjpuZG5ib29zdDo6ZGV0YWlsOjppc191bnNpZ25lZF92YWx1ZXM8VD46Onplcm8pKTsKLX07Ci0KLXRlbXBsYXRlIDxib29sIGludGVncmFsX3R5cGU+Ci1zdHJ1Y3QgaXNfdW51bnNpZ25lZF9zZWxlY3RfaGVscGVyCi17Ci0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgIHN0cnVjdCByZWJpbmQKLSAgIHsKLSAgICAgIHR5cGVkZWYgaXNfdW51bnNpZ25lZF9oZWxwZXI8VD4gdHlwZTsKLSAgIH07Ci19OwotCi10ZW1wbGF0ZSA8Pgotc3RydWN0IGlzX3VudW5zaWduZWRfc2VsZWN0X2hlbHBlcjxmYWxzZT4KLXsKLSAgIHRlbXBsYXRlIDxjbGFzcyBUPgotICAgc3RydWN0IHJlYmluZAotICAgewotICAgICAgdHlwZWRlZiBmYWxzZV90eXBlIHR5cGU7Ci0gICB9OwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgaXNfdW5zaWduZWRfaW1wCi17Ci0gICB0eXBlZGVmIGlzX3VudW5zaWduZWRfc2VsZWN0X2hlbHBlcjwgCi0gICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfaW50ZWdyYWw8VD46OnZhbHVlLAotICAgICAgICAgOjpuZG5ib29zdDo6aXNfZW51bTxUPjo6dmFsdWU+Ojp2YWx1ZSAKLSAgID4gc2VsZWN0b3I7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIHNlbGVjdG9yOjp0ZW1wbGF0ZSByZWJpbmQ8VD4gYmluZGVyOwotICAgdHlwZWRlZiB0eXBlbmFtZSBiaW5kZXI6OnR5cGUgdHlwZTsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IHR5cGU6OnZhbHVlKTsKLX07Ci0KLSNlbHNlCi0KLXRlbXBsYXRlIDxjbGFzcyBUPiBzdHJ1Y3QgaXNfdW5zaWduZWRfaW1wIDogcHVibGljIGZhbHNlX3R5cGV7fTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc191bnNpZ25lZF9pbXA8dW5zaWduZWQgY2hhcj4gOiBwdWJsaWMgdHJ1ZV90eXBle307Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfdW5zaWduZWRfaW1wPGNvbnN0IHVuc2lnbmVkIGNoYXI+IDogcHVibGljIHRydWVfdHlwZXt9OwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3Vuc2lnbmVkX2ltcDx2b2xhdGlsZSB1bnNpZ25lZCBjaGFyPiA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc191bnNpZ25lZF9pbXA8Y29uc3Qgdm9sYXRpbGUgdW5zaWduZWQgY2hhcj4gOiBwdWJsaWMgdHJ1ZV90eXBle307Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfdW5zaWduZWRfaW1wPHVuc2lnbmVkIHNob3J0PiA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc191bnNpZ25lZF9pbXA8Y29uc3QgdW5zaWduZWQgc2hvcnQ+IDogcHVibGljIHRydWVfdHlwZXt9OwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3Vuc2lnbmVkX2ltcDx2b2xhdGlsZSB1bnNpZ25lZCBzaG9ydD4gOiBwdWJsaWMgdHJ1ZV90eXBle307Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfdW5zaWduZWRfaW1wPGNvbnN0IHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0PiA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc191bnNpZ25lZF9pbXA8dW5zaWduZWQgaW50PiA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc191bnNpZ25lZF9pbXA8Y29uc3QgdW5zaWduZWQgaW50PiA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc191bnNpZ25lZF9pbXA8dm9sYXRpbGUgdW5zaWduZWQgaW50PiA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc191bnNpZ25lZF9pbXA8Y29uc3Qgdm9sYXRpbGUgdW5zaWduZWQgaW50PiA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc191bnNpZ25lZF9pbXA8dW5zaWduZWQgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBle307Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfdW5zaWduZWRfaW1wPGNvbnN0IHVuc2lnbmVkIGxvbmc+IDogcHVibGljIHRydWVfdHlwZXt9OwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3Vuc2lnbmVkX2ltcDx2b2xhdGlsZSB1bnNpZ25lZCBsb25nPiA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc191bnNpZ25lZF9pbXA8Y29uc3Qgdm9sYXRpbGUgdW5zaWduZWQgbG9uZz4gOiBwdWJsaWMgdHJ1ZV90eXBle307Ci0jaWZkZWYgTkROQk9PU1RfSEFTX0xPTkdfTE9ORwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3Vuc2lnbmVkX2ltcDx1bnNpZ25lZCBsb25nIGxvbmc+IDogcHVibGljIHRydWVfdHlwZXt9OwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3Vuc2lnbmVkX2ltcDxjb25zdCB1bnNpZ25lZCBsb25nIGxvbmc+IDogcHVibGljIHRydWVfdHlwZXt9OwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3Vuc2lnbmVkX2ltcDx2b2xhdGlsZSB1bnNpZ25lZCBsb25nIGxvbmc+IDogcHVibGljIHRydWVfdHlwZXt9OwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3Vuc2lnbmVkX2ltcDxjb25zdCB2b2xhdGlsZSB1bnNpZ25lZCBsb25nIGxvbmc+IDogcHVibGljIHRydWVfdHlwZXt9OwotI2VuZGlmCi0jaWYgZGVmaW5lZChDSEFSX01JTikgJiYgKENIQVJfTUlOID09IDApCi10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfdW5zaWduZWRfaW1wPGNoYXI+IDogcHVibGljIHRydWVfdHlwZXt9OwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3Vuc2lnbmVkX2ltcDxjb25zdCBjaGFyPiA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc191bnNpZ25lZF9pbXA8dm9sYXRpbGUgY2hhcj4gOiBwdWJsaWMgdHJ1ZV90eXBle307Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfdW5zaWduZWRfaW1wPGNvbnN0IHZvbGF0aWxlIGNoYXI+IDogcHVibGljIHRydWVfdHlwZXt9OwotI2VuZGlmCi0jaWYgZGVmaW5lZChXQ0hBUl9NSU4pICYmIChXQ0hBUl9NSU4gPT0gMCkgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fSU5UUklOU0lDX1dDSEFSX1QpCi10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfdW5zaWduZWRfaW1wPHdjaGFyX3Q+IDogcHVibGljIHRydWVfdHlwZXt9OwotdGVtcGxhdGUgPD4gc3RydWN0IGlzX3Vuc2lnbmVkX2ltcDxjb25zdCB3Y2hhcl90PiA6IHB1YmxpYyB0cnVlX3R5cGV7fTsKLXRlbXBsYXRlIDw+IHN0cnVjdCBpc191bnNpZ25lZF9pbXA8dm9sYXRpbGUgd2NoYXJfdD4gOiBwdWJsaWMgdHJ1ZV90eXBle307Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgaXNfdW5zaWduZWRfaW1wPGNvbnN0IHZvbGF0aWxlIHdjaGFyX3Q+IDogcHVibGljIHRydWVfdHlwZXt9OwotI2VuZGlmCi0KLSNlbmRpZgotCi19Ci0KLSNlbmRpZiAvLyAhZGVmaW5lZCggX19DT0RFR0VBUkNfXyApCi0KLSNpZiBkZWZpbmVkKCBfX0NPREVHRUFSQ19fICkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfdW5zaWduZWQsVCxfX2lzX3Vuc2lnbmVkKFQpKQotI2Vsc2UKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfdW5zaWduZWQsVCw6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX3Vuc2lnbmVkX2ltcDxUPjo6dmFsdWUpCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0lTX01FTUJFUl9GVU5DVElPTl9QT0lOVEVSX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc192aXJ0dWFsX2Jhc2Vfb2YuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9pc192aXJ0dWFsX2Jhc2Vfb2YuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMWMzZjI1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfdmlydHVhbF9iYXNlX29mLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwNCArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBEYW5pZWwgRnJleSBhbmQgUm9iZXJ0IFJhbWV5IDIwMDkuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotIAotI2lmbmRlZiBORE5CT09TVF9UVF9JU19WSVJUVUFMX0JBU0VfT0ZfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0lTX1ZJUlRVQUxfQkFTRV9PRl9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2Jhc2Vfb2YuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NhbWUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9hbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ub3QuaHBwPgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSNwcmFnbWEgd2FybmluZyggcHVzaCApCi0jcHJhZ21hIHdhcm5pbmcoIGRpc2FibGUgOiA0NTg0IDQyNTApCi0jZWxpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoX19HTlVDX18gPj0gNCkKLSNwcmFnbWEgR0NDIHN5c3RlbV9oZWFkZXIKLSNlbmRpZgotCi10ZW1wbGF0ZTx0eXBlbmFtZSBCYXNlLCB0eXBlbmFtZSBEZXJpdmVkLCB0eXBlbmFtZSB0YWc+Ci1zdHJ1Y3QgaXNfdmlydHVhbF9iYXNlX29mX2ltcGwKLXsKLSAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBmYWxzZSk7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBCYXNlLCB0eXBlbmFtZSBEZXJpdmVkPgotc3RydWN0IGlzX3ZpcnR1YWxfYmFzZV9vZl9pbXBsPEJhc2UsIERlcml2ZWQsIG1wbDo6dHJ1ZV8+Ci17Ci0jaWZkZWYgX19CT1JMQU5EQ19fCi0gICAgc3RydWN0IGJvb3N0X3R5cGVfdHJhaXRzX2ludGVybmFsX3N0cnVjdF9YIDogcHVibGljIHZpcnR1YWwgRGVyaXZlZCwgcHVibGljIHZpcnR1YWwgQmFzZSAKLSAgICB7Ci0gICAgICAgYm9vc3RfdHlwZV90cmFpdHNfaW50ZXJuYWxfc3RydWN0X1goKTsKLSAgICAgICBib29zdF90eXBlX3RyYWl0c19pbnRlcm5hbF9zdHJ1Y3RfWChjb25zdCBib29zdF90eXBlX3RyYWl0c19pbnRlcm5hbF9zdHJ1Y3RfWCYpOwotICAgICAgIGJvb3N0X3R5cGVfdHJhaXRzX2ludGVybmFsX3N0cnVjdF9YJiBvcGVyYXRvcj0oY29uc3QgYm9vc3RfdHlwZV90cmFpdHNfaW50ZXJuYWxfc3RydWN0X1gmKTsKLSAgICAgICB+Ym9vc3RfdHlwZV90cmFpdHNfaW50ZXJuYWxfc3RydWN0X1goKXRocm93KCk7Ci0gICAgfTsKLSAgICBzdHJ1Y3QgYm9vc3RfdHlwZV90cmFpdHNfaW50ZXJuYWxfc3RydWN0X1kgOiBwdWJsaWMgdmlydHVhbCBEZXJpdmVkIAotICAgIHsKLSAgICAgICBib29zdF90eXBlX3RyYWl0c19pbnRlcm5hbF9zdHJ1Y3RfWSgpOwotICAgICAgIGJvb3N0X3R5cGVfdHJhaXRzX2ludGVybmFsX3N0cnVjdF9ZKGNvbnN0IGJvb3N0X3R5cGVfdHJhaXRzX2ludGVybmFsX3N0cnVjdF9ZJik7Ci0gICAgICAgYm9vc3RfdHlwZV90cmFpdHNfaW50ZXJuYWxfc3RydWN0X1kmIG9wZXJhdG9yPShjb25zdCBib29zdF90eXBlX3RyYWl0c19pbnRlcm5hbF9zdHJ1Y3RfWSYpOwotICAgICAgIH5ib29zdF90eXBlX3RyYWl0c19pbnRlcm5hbF9zdHJ1Y3RfWSgpdGhyb3coKTsKLSAgICB9OwotI2Vsc2UKLSAgICBzdHJ1Y3QgYm9vc3RfdHlwZV90cmFpdHNfaW50ZXJuYWxfc3RydWN0X1ggOiBwdWJsaWMgRGVyaXZlZCwgdmlydHVhbCBCYXNlIAotICAgIHsKLSAgICAgICBib29zdF90eXBlX3RyYWl0c19pbnRlcm5hbF9zdHJ1Y3RfWCgpOwotICAgICAgIGJvb3N0X3R5cGVfdHJhaXRzX2ludGVybmFsX3N0cnVjdF9YKGNvbnN0IGJvb3N0X3R5cGVfdHJhaXRzX2ludGVybmFsX3N0cnVjdF9YJik7Ci0gICAgICAgYm9vc3RfdHlwZV90cmFpdHNfaW50ZXJuYWxfc3RydWN0X1gmIG9wZXJhdG9yPShjb25zdCBib29zdF90eXBlX3RyYWl0c19pbnRlcm5hbF9zdHJ1Y3RfWCYpOwotICAgICAgIH5ib29zdF90eXBlX3RyYWl0c19pbnRlcm5hbF9zdHJ1Y3RfWCgpdGhyb3coKTsKLSAgICB9OwotICAgIHN0cnVjdCBib29zdF90eXBlX3RyYWl0c19pbnRlcm5hbF9zdHJ1Y3RfWSA6IHB1YmxpYyBEZXJpdmVkIAotICAgIHsKLSAgICAgICBib29zdF90eXBlX3RyYWl0c19pbnRlcm5hbF9zdHJ1Y3RfWSgpOwotICAgICAgIGJvb3N0X3R5cGVfdHJhaXRzX2ludGVybmFsX3N0cnVjdF9ZKGNvbnN0IGJvb3N0X3R5cGVfdHJhaXRzX2ludGVybmFsX3N0cnVjdF9ZJik7Ci0gICAgICAgYm9vc3RfdHlwZV90cmFpdHNfaW50ZXJuYWxfc3RydWN0X1kmIG9wZXJhdG9yPShjb25zdCBib29zdF90eXBlX3RyYWl0c19pbnRlcm5hbF9zdHJ1Y3RfWSYpOwotICAgICAgIH5ib29zdF90eXBlX3RyYWl0c19pbnRlcm5hbF9zdHJ1Y3RfWSgpdGhyb3coKTsKLSAgICB9OwotI2VuZGlmCi0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gKHNpemVvZihib29zdF90eXBlX3RyYWl0c19pbnRlcm5hbF9zdHJ1Y3RfWCk9PXNpemVvZihib29zdF90eXBlX3RyYWl0c19pbnRlcm5hbF9zdHJ1Y3RfWSkpKTsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEJhc2UsIHR5cGVuYW1lIERlcml2ZWQ+Ci1zdHJ1Y3QgaXNfdmlydHVhbF9iYXNlX29mX2ltcGwyCi17Ci0gICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6YW5kXzxpc19iYXNlX29mPEJhc2UsIERlcml2ZWQ+LCBtcGw6Om5vdF88aXNfc2FtZTxCYXNlLCBEZXJpdmVkPiA+ID46OnR5cGUgdGFnX3R5cGU7Ci0gICB0eXBlZGVmIGlzX3ZpcnR1YWxfYmFzZV9vZl9pbXBsPEJhc2UsIERlcml2ZWQsIHRhZ190eXBlPiBpbXA7Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSBpbXA6OnZhbHVlKTsKLX07Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcoIHBvcCApCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjIoCi0gICAgICBpc192aXJ0dWFsX2Jhc2Vfb2YKLSAgICAgICAsIEJhc2UKLSAgICAgICAsIERlcml2ZWQKLSAgICAgICAsICg6Om5kbmJvb3N0OjpkZXRhaWw6OmlzX3ZpcnR1YWxfYmFzZV9vZl9pbXBsMjxCYXNlLERlcml2ZWQ+Ojp2YWx1ZSkgCi0pCi0KLSNpZm5kZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMl8yKHR5cGVuYW1lIEJhc2UsdHlwZW5hbWUgRGVyaXZlZCxpc192aXJ0dWFsX2Jhc2Vfb2YsQmFzZSYsRGVyaXZlZCxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzJfMih0eXBlbmFtZSBCYXNlLHR5cGVuYW1lIERlcml2ZWQsaXNfdmlydHVhbF9iYXNlX29mLEJhc2UsRGVyaXZlZCYsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMyXzIodHlwZW5hbWUgQmFzZSx0eXBlbmFtZSBEZXJpdmVkLGlzX3ZpcnR1YWxfYmFzZV9vZixCYXNlJixEZXJpdmVkJixmYWxzZSkKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfdm9pZC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3ZvaWQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NWM2YzNiLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfdm9pZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIEhvd2FyZCBIaW5uYW50ICYgSm9obiBNYWRkb2NrIDIwMDAuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0lTX1ZPSURfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX0lTX1ZPSURfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi0vLyogaXMgYSB0eXBlIFQgdm9pZCAtIGlzX3ZvaWQ8VD4KLSNpZiBkZWZpbmVkKCBfX0NPREVHRUFSQ19fICkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0RFRjEoaXNfdm9pZCxULF9faXNfdm9pZChUKSkKLSNlbHNlCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9ERUYxKGlzX3ZvaWQsVCxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGlzX3ZvaWQsdm9pZCx0cnVlKQotCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NWX1ZPSURfU1BFQ0lBTElaQVRJT05TCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9TUEVDMShpc192b2lkLHZvaWQgY29uc3QsdHJ1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1NQRUMxKGlzX3ZvaWQsdm9pZCB2b2xhdGlsZSx0cnVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfU1BFQzEoaXNfdm9pZCx2b2lkIGNvbnN0IHZvbGF0aWxlLHRydWUpCi0jZW5kaWYKLQotI2VuZGlmICAvLyBub24tQ29kZUdlYXIgaW1wbGVtZW50YXRpb24KLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX0lTX1ZPSURfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3ZvbGF0aWxlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfdm9sYXRpbGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OGE0ZTQ2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfdm9sYXRpbGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTUyICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgRGF2ZSBBYnJhaGFtcywgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgCi0vLyAgICAgIEhvd2FyZCBIaW5uYW50IGFuZCBKb2huIE1hZGRvY2sgMjAwMC4gCi0vLyAgKEMpIENvcHlyaWdodCBNYXQgTWFyY3VzLCBKZXNzZSBKb25lcyBhbmQgQWRvYmUgU3lzdGVtcyBJbmMgMjAwMQotCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0vLyAgICBGaXhlZCBpc19wb2ludGVyLCBpc19yZWZlcmVuY2UsIGlzX2NvbnN0LCBpc192b2xhdGlsZSwgaXNfc2FtZSwgCi0vLyAgICBpc19tZW1iZXJfcG9pbnRlciBiYXNlZCBvbiB0aGUgU2ltdWxhdGVkIFBhcnRpYWwgU3BlY2lhbGl6YXRpb24gd29yayAKLS8vICAgIG9mIE1hdCBNYXJjdXMgYW5kIEplc3NlIEpvbmVzLiBTZWUgIGh0dHA6Ly9vcGVuc291cmNlLmFkb2JlLmNvbSBvciAKLS8vICAgIGh0dHA6Ly9ncm91cHMueWFob28uY29tL2dyb3VwL2Jvb3N0L21lc3NhZ2UvNTQ0MSAKLS8vICAgIFNvbWUgd29ya2Fyb3VuZHMgaW4gaGVyZSB1c2UgaWRlYXMgc3VnZ2VzdGVkIGZyb20gIkdlbmVyaWM8UHJvZ3JhbW1pbmc+OiAKLS8vICAgIE1hcHBpbmdzIGJldHdlZW4gVHlwZXMgYW5kIFZhbHVlcyIgCi0vLyAgICBieSBBbmRyZWkgQWxleGFuZHJlc2N1IChzZWUgaHR0cDovL3d3dy5jdWouY29tL2V4cGVydHMvMTgxMC9hbGV4YW5kci5odG1sKS4KLQotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX0lTX1ZPTEFUSUxFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9JU19WT0xBVElMRV9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotCi0jaWZuZGVmIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvY3ZfdHJhaXRzX2ltcGwuaHBwPgotIyAgIGlmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxNDAwKQotIyAgICAgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfYm91bmRzLmhwcD4KLSMgICBlbmRpZgotI2Vsc2UKLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19yZWZlcmVuY2UuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2FycmF5LmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwveWVzX25vX3R5cGUuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9mYWxzZV9yZXN1bHQuaHBwPgotI2VuZGlmCi0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBkZXRhaWx7Ci10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBpc192b2xhdGlsZV9ydmFsX2ZpbHRlcgotewotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQywgPCAxNDAwKQotICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gOjpuZG5ib29zdDo6ZGV0YWlsOjpjdl90cmFpdHNfaW1wPHR5cGVuYW1lIG5kbmJvb3N0OjpyZW1vdmVfYm91bmRzPFQ+Ojp0eXBlKj46OmlzX3ZvbGF0aWxlKTsKLSNlbHNlCi0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSA6Om5kbmJvb3N0OjpkZXRhaWw6OmN2X3RyYWl0c19pbXA8VCo+Ojppc192b2xhdGlsZSk7Ci0jZW5kaWYKLX07Ci0jaWZuZGVmIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTCi0vLwotLy8gV2UgY2FuJ3QgZmlsdGVyIG91dCBydmFsdWVfcmVmZXJlbmNlcyBhdCB0aGUgc2FtZSBsZXZlbCBhcwotLy8gcmVmZXJlbmNlcyBvciB3ZSBnZXQgYW1iaWd1aXRpZXMgZnJvbSBtc3ZjOgotLy8KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IGlzX3ZvbGF0aWxlX3J2YWxfZmlsdGVyPFQmJj4KLXsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChib29sLCB2YWx1ZSA9IGZhbHNlKTsKLX07Ci0jZW5kaWYKLX0KLQotI2lmIGRlZmluZWQoIF9fQ09ERUdFQVJDX18gKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc192b2xhdGlsZSxULF9faXNfdm9sYXRpbGUoVCkpCi0jZWxpZiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotCi0vLyogaXMgYSB0eXBlIFQgZGVjbGFyZWQgdm9sYXRpbGUgLSBpc192b2xhdGlsZTxUPgotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc192b2xhdGlsZSxULDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfdm9sYXRpbGVfcnZhbF9maWx0ZXI8VD46OnZhbHVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMV8xKHR5cGVuYW1lIFQsaXNfdm9sYXRpbGUsVCYsZmFsc2UpCi0KLSNpZiAgZGVmaW5lZChORE5CT09TVF9JTExFR0FMX0NWX1JFRkVSRU5DRVMpCi0vLyB0aGVzZSBhcmUgaWxsZWdhbCBzcGVjaWFsaXNhdGlvbnM7IGN2LXF1YWxpZmllcyBhcHBsaWVkIHRvCi0vLyByZWZlcmVuY2VzIGhhdmUgbm8gZWZmZWN0IGFjY29yZGluZyB0byBbOC4zLjJwMV0sCi0vLyBDKysgQnVpbGRlciByZXF1aXJlcyB0aGVtIHRob3VnaCBhcyBpdCB0cmVhdHMgY3YtcXVhbGlmaWVkCi0vLyByZWZlcmVuY2VzIGFzIGRpc3RpbmN0IHR5cGVzLi4uCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9QQVJUSUFMX1NQRUMxXzEodHlwZW5hbWUgVCxpc192b2xhdGlsZSxUJiBjb25zdCxmYWxzZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX1BBUlRJQUxfU1BFQzFfMSh0eXBlbmFtZSBULGlzX3ZvbGF0aWxlLFQmIHZvbGF0aWxlLGZhbHNlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfUEFSVElBTF9TUEVDMV8xKHR5cGVuYW1lIFQsaXNfdm9sYXRpbGUsVCYgY29uc3Qgdm9sYXRpbGUsZmFsc2UpCi0jZW5kaWYKLQotI2Vsc2UKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLXVzaW5nIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjp5ZXNfdHlwZTsKLXVzaW5nIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjpub190eXBlOwotCi15ZXNfdHlwZSBpc192b2xhdGlsZV90ZXN0ZXIodm9pZCBjb25zdCB2b2xhdGlsZSopOwotbm9fdHlwZSBpc192b2xhdGlsZV90ZXN0ZXIodm9pZCBjb25zdCopOwotCi10ZW1wbGF0ZSA8Ym9vbCBpc19yZWYsIGJvb2wgYXJyYXk+Ci1zdHJ1Y3QgaXNfdm9sYXRpbGVfaGVscGVyCi0gICAgOiBwdWJsaWMgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmZhbHNlX3Jlc3VsdAotewotfTsKLQotdGVtcGxhdGUgPD4KLXN0cnVjdCBpc192b2xhdGlsZV9oZWxwZXI8ZmFsc2UsZmFsc2U+Ci17Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICBzdGF0aWMgVCogdDsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsIHZhbHVlID0gKAotICAgICAgICAgICAgc2l6ZW9mKG5kbmJvb3N0OjpkZXRhaWw6Onllc190eXBlKSA9PSBzaXplb2YobmRuYm9vc3Q6OmRldGFpbDo6aXNfdm9sYXRpbGVfdGVzdGVyKHQpKQotICAgICAgICAgICAgKSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgaXNfdm9sYXRpbGVfaGVscGVyPGZhbHNlLHRydWU+Ci17Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCByZXN1bHRfCi0gICAgewotICAgICAgICBzdGF0aWMgVCB0OwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoYm9vbCwgdmFsdWUgPSAoCi0gICAgICAgICAgICBzaXplb2YobmRuYm9vc3Q6OmRldGFpbDo6eWVzX3R5cGUpID09IHNpemVvZihuZG5ib29zdDo6ZGV0YWlsOjppc192b2xhdGlsZV90ZXN0ZXIoJnQpKQotICAgICAgICAgICAgKSk7Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGlzX3ZvbGF0aWxlX2ltcGwKLSAgICA6IHB1YmxpYyBpc192b2xhdGlsZV9oZWxwZXI8Ci0gICAgICAgICAgaXNfcmVmZXJlbmNlPFQ+Ojp2YWx1ZQotICAgICAgICAsIGlzX2FycmF5PFQ+Ojp2YWx1ZQotICAgICAgICA+Ojp0ZW1wbGF0ZSByZXN1bHRfPFQ+Ci17Ci19OwotCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX3ZvbGF0aWxlLHZvaWQsZmFsc2UpCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NWX1ZPSURfU1BFQ0lBTElaQVRJT05TCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX3ZvbGF0aWxlLHZvaWQgY29uc3QsZmFsc2UpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX3ZvbGF0aWxlLHZvaWQgdm9sYXRpbGUsdHJ1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfdm9sYXRpbGUsdm9pZCBjb25zdCB2b2xhdGlsZSx0cnVlKQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi0vLyogaXMgYSB0eXBlIFQgZGVjbGFyZWQgdm9sYXRpbGUgLSBpc192b2xhdGlsZTxUPgotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfREVGMShpc192b2xhdGlsZSxULDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfdm9sYXRpbGVfaW1wbDxUPjo6dmFsdWUpCi0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9JU19WT0xBVElMRV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvbWFrZV9zaWduZWQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9tYWtlX3NpZ25lZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhlZDA3ZjAuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9tYWtlX3NpZ25lZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNTMgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBKb2huIE1hZGRvY2sgMjAwNy4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfTUFLRV9TSUdORURfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX01BS0VfU0lHTkVEX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19pbnRlZ3JhbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2lnbmVkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc191bnNpZ25lZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfZW51bS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2FtZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2N2LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb25zdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfdm9sYXRpbGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2FkZF9jb25zdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX3ZvbGF0aWxlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX29yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX2FuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2ljZV9ub3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3N0YXRpY19hc3NlcnQuaHBwPgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdHlwZV90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgbWFrZV9zaWduZWRfaW1wCi17Ci0gICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKAotICAgICAgKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfb3I8IDo6bmRuYm9vc3Q6OmlzX2ludGVncmFsPFQ+Ojp2YWx1ZSwgOjpuZG5ib29zdDo6aXNfZW51bTxUPjo6dmFsdWU+Ojp2YWx1ZSkpOwotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsIDw9MTMwMCkKLSAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoCi0gICAgICAoOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX3NhbWU8Ci0gICAgICAgICB0eXBlbmFtZSByZW1vdmVfY3Y8VD46OnR5cGUsIGJvb2w+Ojp2YWx1ZT46OnZhbHVlKSk7Ci0jZW5kaWYKLQotICAgdHlwZWRlZiB0eXBlbmFtZSByZW1vdmVfY3Y8VD46OnR5cGUgdF9ub19jdjsKLSAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjppZl9jPAotICAgICAgKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2VfYW5kPCAKLSAgICAgICAgIDo6bmRuYm9vc3Q6OmlzX3NpZ25lZDxUPjo6dmFsdWUsCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19pbnRlZ3JhbDxUPjo6dmFsdWUsCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfc2FtZTx0X25vX2N2LCBjaGFyPjo6dmFsdWU+Ojp2YWx1ZSwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19zYW1lPHRfbm9fY3YsIHdjaGFyX3Q+Ojp2YWx1ZT46OnZhbHVlLAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX3NhbWU8dF9ub19jdiwgYm9vbD46OnZhbHVlPjo6dmFsdWUgPjo6dmFsdWUpLAotICAgICAgVCwKLSAgICAgIHR5cGVuYW1lIG1wbDo6aWZfYzwKLSAgICAgICAgICg6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDwgCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19pbnRlZ3JhbDxUPjo6dmFsdWUsCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfc2FtZTx0X25vX2N2LCBjaGFyPjo6dmFsdWU+Ojp2YWx1ZSwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19zYW1lPHRfbm9fY3YsIHdjaGFyX3Q+Ojp2YWx1ZT46OnZhbHVlLAotICAgICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX3NhbWU8dF9ub19jdiwgYm9vbD46OnZhbHVlPjo6dmFsdWU+Ci0gICAgICAgICA6OnZhbHVlKSwKLSAgICAgICAgIHR5cGVuYW1lIG1wbDo6aWZfPAotICAgICAgICAgICAgaXNfc2FtZTx0X25vX2N2LCB1bnNpZ25lZCBjaGFyPiwKLSAgICAgICAgICAgIHNpZ25lZCBjaGFyLAotICAgICAgICAgICAgdHlwZW5hbWUgbXBsOjppZl88Ci0gICAgICAgICAgICAgICBpc19zYW1lPHRfbm9fY3YsIHVuc2lnbmVkIHNob3J0PiwKLSAgICAgICAgICAgICAgIHNpZ25lZCBzaG9ydCwKLSAgICAgICAgICAgICAgIHR5cGVuYW1lIG1wbDo6aWZfPAotICAgICAgICAgICAgICAgICAgaXNfc2FtZTx0X25vX2N2LCB1bnNpZ25lZCBpbnQ+LAotICAgICAgICAgICAgICAgICAgaW50LAotICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgbXBsOjppZl88Ci0gICAgICAgICAgICAgICAgICAgICBpc19zYW1lPHRfbm9fY3YsIHVuc2lnbmVkIGxvbmc+LAotICAgICAgICAgICAgICAgICAgICAgbG9uZywKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19MT05HX0xPTkcpCi0jaWZkZWYgTkROQk9PU1RfSEFTX0lOVDEyOAotICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgbXBsOjppZl9jPAotICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHRfbm9fY3YpID09IHNpemVvZihuZG5ib29zdDo6bG9uZ19sb25nX3R5cGUpLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6aW50MTI4X3R5cGUKLSAgICAgICAgICAgICAgICAgICAgID46OnR5cGUKLSNlbHNlCi0gICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6bG9uZ19sb25nX3R5cGUKLSNlbmRpZgotI2VsaWYgZGVmaW5lZChORE5CT09TVF9IQVNfTVNfSU5UNjQpCi0gICAgICAgICAgICAgICAgICAgICBfX2ludDY0Ci0jZWxzZQotICAgICAgICAgICAgICAgICAgICAgbG9uZwotI2VuZGlmCi0gICAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICA+Ojp0eXBlLAotICAgICAgICAgLy8gTm90IGEgcmVndWxhciBpbnRlZ2VyIHR5cGU6Ci0gICAgICAgICB0eXBlbmFtZSBtcGw6OmlmX2M8Ci0gICAgICAgICAgICBzaXplb2YodF9ub19jdikgPT0gc2l6ZW9mKHVuc2lnbmVkIGNoYXIpLAotICAgICAgICAgICAgc2lnbmVkIGNoYXIsCi0gICAgICAgICAgICB0eXBlbmFtZSBtcGw6OmlmX2M8Ci0gICAgICAgICAgICAgICBzaXplb2YodF9ub19jdikgPT0gc2l6ZW9mKHVuc2lnbmVkIHNob3J0KSwKLSAgICAgICAgICAgICAgIHNpZ25lZCBzaG9ydCwKLSAgICAgICAgICAgICAgIHR5cGVuYW1lIG1wbDo6aWZfYzwKLSAgICAgICAgICAgICAgICAgIHNpemVvZih0X25vX2N2KSA9PSBzaXplb2YodW5zaWduZWQgaW50KSwKLSAgICAgICAgICAgICAgICAgIGludCwKLSAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIG1wbDo6aWZfYzwKLSAgICAgICAgICAgICAgICAgICAgIHNpemVvZih0X25vX2N2KSA9PSBzaXplb2YodW5zaWduZWQgbG9uZyksCi0gICAgICAgICAgICAgICAgICAgICBsb25nLAotI2lmIGRlZmluZWQoTkROQk9PU1RfSEFTX0xPTkdfTE9ORykKLSNpZmRlZiBORE5CT09TVF9IQVNfSU5UMTI4Ci0gICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBtcGw6OmlmX2M8Ci0gICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YodF9ub19jdikgPT0gc2l6ZW9mKG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZSksIAotICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0OjppbnQxMjhfdHlwZQotICAgICAgICAgICAgICAgICAgICAgPjo6dHlwZQotI2Vsc2UKLSAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZQotI2VuZGlmCi0jZWxpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19NU19JTlQ2NCkKLSAgICAgICAgICAgICAgICAgICAgIF9faW50NjQKLSNlbHNlCi0gICAgICAgICAgICAgICAgICAgICBsb25nCi0jZW5kaWYKLSAgICAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgICAgID46OnR5cGUKLSAgICAgICAgID46OnR5cGUKLSAgICAgID46OnR5cGUKLSAgID46OnR5cGUgYmFzZV9pbnRlZ2VyX3R5cGU7Ci0gICAKLSAgIC8vIEFkZCBiYWNrIGFueSBjb25zdCBxdWFsaWZpZXI6Ci0gICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6aWZfPAotICAgICAgaXNfY29uc3Q8VD4sCi0gICAgICB0eXBlbmFtZSBhZGRfY29uc3Q8YmFzZV9pbnRlZ2VyX3R5cGU+Ojp0eXBlLAotICAgICAgYmFzZV9pbnRlZ2VyX3R5cGUKLSAgID46OnR5cGUgY29uc3RfYmFzZV9pbnRlZ2VyX3R5cGU7Ci0gICAKLSAgIC8vIEFkZCBiYWNrIGFueSB2b2xhdGlsZSBxdWFsaWZpZXI6Ci0gICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6aWZfPAotICAgICAgaXNfdm9sYXRpbGU8VD4sCi0gICAgICB0eXBlbmFtZSBhZGRfdm9sYXRpbGU8Y29uc3RfYmFzZV9pbnRlZ2VyX3R5cGU+Ojp0eXBlLAotICAgICAgY29uc3RfYmFzZV9pbnRlZ2VyX3R5cGUKLSAgID46OnR5cGUgdHlwZTsKLX07Ci0KLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX0RFRjEobWFrZV9zaWduZWQsVCx0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjptYWtlX3NpZ25lZF9pbXA8VD46OnR5cGUpCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdHlwZV90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9BRERfUkVGRVJFTkNFX0hQUF9JTkNMVURFRAotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL21ha2VfdW5zaWduZWQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9tYWtlX3Vuc2lnbmVkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzRiMWRjYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL21ha2VfdW5zaWduZWQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTUzICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDcuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX01BS0VfVU5TSUdORURfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX01BS0VfVU5TSUdORURfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2ludGVncmFsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zaWduZWQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3Vuc2lnbmVkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19lbnVtLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfY3YuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnN0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc192b2xhdGlsZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX2NvbnN0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfdm9sYXRpbGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2Vfb3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2VfYW5kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvaWNlX25vdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc3RhdGljX2Fzc2VydC5ocHA+Ci0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90eXBlX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCBtYWtlX3Vuc2lnbmVkX2ltcAotewotICAgTkROQk9PU1RfU1RBVElDX0FTU0VSVCgKLSAgICAgICg6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX29yPCA6Om5kbmJvb3N0Ojppc19pbnRlZ3JhbDxUPjo6dmFsdWUsIDo6bmRuYm9vc3Q6OmlzX2VudW08VD46OnZhbHVlPjo6dmFsdWUpKTsKLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLCA8PTEzMDApCi0gICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKAotICAgICAgKDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19zYW1lPAotICAgICAgICAgdHlwZW5hbWUgcmVtb3ZlX2N2PFQ+Ojp0eXBlLCBib29sPjo6dmFsdWU+Ojp2YWx1ZSkpOwotI2VuZGlmCi0KLSAgIHR5cGVkZWYgdHlwZW5hbWUgcmVtb3ZlX2N2PFQ+Ojp0eXBlIHRfbm9fY3Y7Ci0gICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6aWZfYzwKLSAgICAgICg6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDwgCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc191bnNpZ25lZDxUPjo6dmFsdWUsCi0gICAgICAgICA6Om5kbmJvb3N0Ojppc19pbnRlZ3JhbDxUPjo6dmFsdWUsCi0gICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfc2FtZTx0X25vX2N2LCBjaGFyPjo6dmFsdWU+Ojp2YWx1ZSwKLSAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19zYW1lPHRfbm9fY3YsIHdjaGFyX3Q+Ojp2YWx1ZT46OnZhbHVlLAotICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX3NhbWU8dF9ub19jdiwgYm9vbD46OnZhbHVlPjo6dmFsdWUgPjo6dmFsdWUpLAotICAgICAgVCwKLSAgICAgIHR5cGVuYW1lIG1wbDo6aWZfYzwKLSAgICAgICAgICg6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX2FuZDwgCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojppc19pbnRlZ3JhbDxUPjo6dmFsdWUsCi0gICAgICAgICAgICA6Om5kbmJvb3N0Ojp0eXBlX3RyYWl0czo6aWNlX25vdDwgOjpuZG5ib29zdDo6aXNfc2FtZTx0X25vX2N2LCBjaGFyPjo6dmFsdWU+Ojp2YWx1ZSwKLSAgICAgICAgICAgIDo6bmRuYm9vc3Q6OnR5cGVfdHJhaXRzOjppY2Vfbm90PCA6Om5kbmJvb3N0Ojppc19zYW1lPHRfbm9fY3YsIHdjaGFyX3Q+Ojp2YWx1ZT46OnZhbHVlLAotICAgICAgICAgICAgOjpuZG5ib29zdDo6dHlwZV90cmFpdHM6OmljZV9ub3Q8IDo6bmRuYm9vc3Q6OmlzX3NhbWU8dF9ub19jdiwgYm9vbD46OnZhbHVlPjo6dmFsdWU+Ci0gICAgICAgICA6OnZhbHVlKSwKLSAgICAgICAgIHR5cGVuYW1lIG1wbDo6aWZfPAotICAgICAgICAgICAgaXNfc2FtZTx0X25vX2N2LCBzaWduZWQgY2hhcj4sCi0gICAgICAgICAgICB1bnNpZ25lZCBjaGFyLAotICAgICAgICAgICAgdHlwZW5hbWUgbXBsOjppZl88Ci0gICAgICAgICAgICAgICBpc19zYW1lPHRfbm9fY3YsIHNob3J0PiwKLSAgICAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0LAotICAgICAgICAgICAgICAgdHlwZW5hbWUgbXBsOjppZl88Ci0gICAgICAgICAgICAgICAgICBpc19zYW1lPHRfbm9fY3YsIGludD4sCi0gICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQsCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBtcGw6OmlmXzwKLSAgICAgICAgICAgICAgICAgICAgIGlzX3NhbWU8dF9ub19jdiwgbG9uZz4sCi0gICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nLAotI2lmIGRlZmluZWQoTkROQk9PU1RfSEFTX0xPTkdfTE9ORykKLSNpZmRlZiBORE5CT09TVF9IQVNfSU5UMTI4Ci0gICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBtcGw6OmlmX2M8Ci0gICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YodF9ub19jdikgPT0gc2l6ZW9mKG5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGUpLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVpbnQxMjhfdHlwZQotICAgICAgICAgICAgICAgICAgICAgPjo6dHlwZQotI2Vsc2UKLSAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bG9uZ19sb25nX3R5cGUKLSNlbmRpZgotI2VsaWYgZGVmaW5lZChORE5CT09TVF9IQVNfTVNfSU5UNjQpCi0gICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBfX2ludDY0Ci0jZWxzZQotICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZwotI2VuZGlmCi0gICAgICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgICA+Ojp0eXBlLAotICAgICAgICAgLy8gTm90IGEgcmVndWxhciBpbnRlZ2VyIHR5cGU6Ci0gICAgICAgICB0eXBlbmFtZSBtcGw6OmlmX2M8Ci0gICAgICAgICAgICBzaXplb2YodF9ub19jdikgPT0gc2l6ZW9mKHVuc2lnbmVkIGNoYXIpLAotICAgICAgICAgICAgdW5zaWduZWQgY2hhciwKLSAgICAgICAgICAgIHR5cGVuYW1lIG1wbDo6aWZfYzwKLSAgICAgICAgICAgICAgIHNpemVvZih0X25vX2N2KSA9PSBzaXplb2YodW5zaWduZWQgc2hvcnQpLAotICAgICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQsCi0gICAgICAgICAgICAgICB0eXBlbmFtZSBtcGw6OmlmX2M8Ci0gICAgICAgICAgICAgICAgICBzaXplb2YodF9ub19jdikgPT0gc2l6ZW9mKHVuc2lnbmVkIGludCksCi0gICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQsCi0gICAgICAgICAgICAgICAgICB0eXBlbmFtZSBtcGw6OmlmX2M8Ci0gICAgICAgICAgICAgICAgICAgICBzaXplb2YodF9ub19jdikgPT0gc2l6ZW9mKHVuc2lnbmVkIGxvbmcpLAotICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZywKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX0hBU19MT05HX0xPTkcpCi0jaWZkZWYgTkROQk9PU1RfSEFTX0lOVDEyOAotICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgbXBsOjppZl9jPAotICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHRfbm9fY3YpID09IHNpemVvZihuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlKSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1aW50MTI4X3R5cGUKLSAgICAgICAgICAgICAgICAgICAgID46OnR5cGUKLSNlbHNlCi0gICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6dWxvbmdfbG9uZ190eXBlCi0jZW5kaWYKLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfSEFTX01TX0lOVDY0KQotICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgX19pbnQ2NAotI2Vsc2UKLSAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcKLSNlbmRpZgotICAgICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICAgPjo6dHlwZQotICAgICAgPjo6dHlwZQotICAgPjo6dHlwZSBiYXNlX2ludGVnZXJfdHlwZTsKLSAgIAotICAgLy8gQWRkIGJhY2sgYW55IGNvbnN0IHF1YWxpZmllcjoKLSAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjppZl88Ci0gICAgICBpc19jb25zdDxUPiwKLSAgICAgIHR5cGVuYW1lIGFkZF9jb25zdDxiYXNlX2ludGVnZXJfdHlwZT46OnR5cGUsCi0gICAgICBiYXNlX2ludGVnZXJfdHlwZQotICAgPjo6dHlwZSBjb25zdF9iYXNlX2ludGVnZXJfdHlwZTsKLSAgIAotICAgLy8gQWRkIGJhY2sgYW55IHZvbGF0aWxlIHF1YWxpZmllcjoKLSAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjppZl88Ci0gICAgICBpc192b2xhdGlsZTxUPiwKLSAgICAgIHR5cGVuYW1lIGFkZF92b2xhdGlsZTxjb25zdF9iYXNlX2ludGVnZXJfdHlwZT46OnR5cGUsCi0gICAgICBjb25zdF9iYXNlX2ludGVnZXJfdHlwZQotICAgPjo6dHlwZSB0eXBlOwotfTsKLQotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfREVGMShtYWtlX3Vuc2lnbmVkLFQsdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6bWFrZV91bnNpZ25lZF9pbXA8VD46OnR5cGUpCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdHlwZV90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9BRERfUkVGRVJFTkNFX0hQUF9JTkNMVURFRAotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL21zdmMvcmVtb3ZlX2FsbF9leHRlbnRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvbXN2Yy9yZW1vdmVfYWxsX2V4dGVudHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiM2E5Yzc2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvbXN2Yy9yZW1vdmVfYWxsX2V4dGVudHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDA0IFBlZGVyIEhvbHQKLS8vIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLS8vIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWZuZGVmIE5ETkJPT1NUX1RZUEVfVFJBSVRTX01TVkNfUkVNT1ZFX0FMTF9FWFRFTlRfSE9MVF8yMDA0XzA4MjcKLSNkZWZpbmUgTkROQk9PU1RfVFlQRV9UUkFJVFNfTVNWQ19SRU1PVkVfQUxMX0VYVEVOVF9IT0xUXzIwMDRfMDgyNwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvbXN2Yy90eXBlb2YuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2FycmF5LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0cnVjdCByZW1vdmVfYWxsX2V4dGVudHM7Ci0KLSAgICBuYW1lc3BhY2UgZGV0YWlsIHsKLSAgICAgICAgdGVtcGxhdGU8Ym9vbCBJc0FycmF5PgotICAgICAgICBzdHJ1Y3QgcmVtb3ZlX2FsbF9leHRlbnRzX2ltcGxfdHlwZW9mIHsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsdHlwZW5hbWUgSUQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmVtb3ZlX2FsbF9leHRlbnRzX2ltcGxfdHlwZW9mPHRydWU+IHsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsdHlwZW5hbWUgSUQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgICAgICAgICAgICAgc3RhdGljIG1zdmNfcmVnaXN0ZXJfdHlwZTxVLElEPiB0ZXN0KFVbXSk7Ci0gICAgICAgICAgICAgICAgc3RhdGljIG1zdmNfcmVnaXN0ZXJfdHlwZTxULElEPiB0ZXN0KC4uLik7Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLHJlZ2lzdGVyX3Rlc3Q9c2l6ZW9mKHRlc3QoICooKFQqKU5VTEwpICkgKSk7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtc3ZjX2V4dHJhY3RfdHlwZTxJRD46OmlkMnR5cGU6OnR5cGUgcmVkdWNlZF90eXBlOwotICAgICAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVtb3ZlX2FsbF9leHRlbnRzPHJlZHVjZWRfdHlwZT46OnR5cGUgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0gICAgfSAvL25hbWVzcGFjZSBkZXRhaWwKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RydWN0IHJlbW92ZV9hbGxfZXh0ZW50cyB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6cmVtb3ZlX2FsbF9leHRlbnRzX2ltcGxfdHlwZW9mPAotICAgICAgICAgICAgbmRuYm9vc3Q6OmlzX2FycmF5PFQ+Ojp2YWx1ZSAgICAgICAgICAgICAgICAKLSAgICAgICAgPjo6dGVtcGxhdGUgaW5uZXI8VCxyZW1vdmVfYWxsX2V4dGVudHM8VD4gPjo6dHlwZSB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDEscmVtb3ZlX2FsbF9leHRlbnRzLFQpCi0gICAgfTsKLX0gLy9uYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vTkROQk9PU1RfVFlQRV9UUkFJVFNfTVNWQ19SRU1PVkVfQk9VTkRTX0hPTFRfMjAwNF8wODI3Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvbXN2Yy9yZW1vdmVfYm91bmRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvbXN2Yy9yZW1vdmVfYm91bmRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzc3ZTc2Ny4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL21zdmMvcmVtb3ZlX2JvdW5kcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi0vLyBDb3B5cmlnaHQgKEMpIDIwMDQgUGVkZXIgSG9sdAotLy8gVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZQotLy8gTGljZW5zZSwgVmVyc2lvbiAxLjAuIChodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpZm5kZWYgTkROQk9PU1RfVFlQRV9UUkFJVFNfTVNWQ19SRU1PVkVfQk9VTkRTX0hPTFRfMjAwNF8wODI3Ci0jZGVmaW5lIE5ETkJPT1NUX1RZUEVfVFJBSVRTX01TVkNfUkVNT1ZFX0JPVU5EU19IT0xUXzIwMDRfMDgyNwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvbXN2Yy90eXBlb2YuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2FycmF5LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLSAgICBuYW1lc3BhY2UgZGV0YWlsIHsKLSAgICAgICAgdGVtcGxhdGU8Ym9vbCBJc0FycmF5PgotICAgICAgICBzdHJ1Y3QgcmVtb3ZlX2JvdW5kc19pbXBsX3R5cGVvZiB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULHR5cGVuYW1lIElEPgotICAgICAgICAgICAgc3RydWN0IGlubmVyIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJlbW92ZV9ib3VuZHNfaW1wbF90eXBlb2Y8dHJ1ZT4gewotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCx0eXBlbmFtZSBJRD4KLSAgICAgICAgICAgIHN0cnVjdCBpbm5lciB7Ci0gICAgICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICAgICAgICAgICAgICBzdGF0aWMgbXN2Y19yZWdpc3Rlcl90eXBlPFUsSUQ+IHRlc3QoVVtdKTsKLSAgICAgICAgICAgICAgICBzdGF0aWMgbXN2Y19yZWdpc3Rlcl90eXBlPFQsSUQ+IHRlc3QoLi4uKTsKLSAgICAgICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQscmVnaXN0ZXJfdGVzdD1zaXplb2YodGVzdCggKigoVCopTlVMTCkgKSApKTsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1zdmNfZXh0cmFjdF90eXBlPElEPjo6aWQydHlwZTo6dHlwZSB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLSAgICB9IC8vbmFtZXNwYWNlIGRldGFpbAotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdHJ1Y3QgcmVtb3ZlX2JvdW5kcyB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6cmVtb3ZlX2JvdW5kc19pbXBsX3R5cGVvZjwKLSAgICAgICAgICAgIG5kbmJvb3N0Ojppc19hcnJheTxUPjo6dmFsdWUgICAgICAgICAgICAgICAgCi0gICAgICAgID46OnRlbXBsYXRlIGlubmVyPFQscmVtb3ZlX2JvdW5kczxUPiA+Ojp0eXBlIHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMSxyZW1vdmVfYm91bmRzLFQpCi0gICAgfTsKLX0gLy9uYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vTkROQk9PU1RfVFlQRV9UUkFJVFNfTVNWQ19SRU1PVkVfQk9VTkRTX0hPTFRfMjAwNF8wODI3Ci0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvbXN2Yy9yZW1vdmVfY29uc3QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9tc3ZjL3JlbW92ZV9jb25zdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhmM2I5YTQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9tc3ZjL3JlbW92ZV9jb25zdC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDMgKzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDA0IFBlZGVyIEhvbHQKLS8vIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLS8vIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWZuZGVmIE5ETkJPT1NUX1RZUEVfVFJBSVRTX01TVkNfUkVNT1ZFX0NPTlNUX0hPTFRfMjAwNF8wODI4Ci0jZGVmaW5lIE5ETkJPT1NUX1RZUEVfVFJBSVRTX01TVkNfUkVNT1ZFX0NPTlNUX0hPTFRfMjAwNF8wODI4Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9tc3ZjL3R5cGVvZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfdm9sYXRpbGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnN0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19wb2ludGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19hcnJheS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0gICAgbmFtZXNwYWNlIGRldGFpbCB7Ci0gICAgICAgIHRlbXBsYXRlPGJvb2wgSXNQb2ludGVyLGJvb2wgSXNBcnJheSxib29sIElzQ29uc3QsYm9vbCBJc1ZvbGF0aWxlPgotICAgICAgICBzdHJ1Y3QgcmVtb3ZlX2NvbnN0X2ltcGxfdHlwZW9mIHsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsdHlwZW5hbWUgSUQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgdHJhbnNmb3JtX3R5cGUgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLSAgICAgICAgdGVtcGxhdGU8PiAvL0NvbnN0Ci0gICAgICAgIHN0cnVjdCByZW1vdmVfY29uc3RfaW1wbF90eXBlb2Y8ZmFsc2UsZmFsc2UsdHJ1ZSxmYWxzZT4gewotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCx0eXBlbmFtZSBJRD4KLSAgICAgICAgICAgIHN0cnVjdCBpbm5lciB7Ci0gICAgICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICAgICAgICAgICAgICBzdGF0aWMgbXN2Y19yZWdpc3Rlcl90eXBlPFUsSUQ+IHRlc3QoVSBjb25zdCYoKikoKSk7Ci0gICAgICAgICAgICAgICAgc3RhdGljIG1zdmNfcmVnaXN0ZXJfdHlwZTxULElEPiB0ZXN0KC4uLik7Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLHJlZ2lzdGVyX3Rlc3Q9c2l6ZW9mKHRlc3QoIChUKCopKCkpKE5VTEwpICkgKSk7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtc3ZjX2V4dHJhY3RfdHlwZTxJRD46OmlkMnR5cGU6OnR5cGUgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICAgICAgc3RydWN0IHRyYW5zZm9ybV90eXBlIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIFQmIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotICAgICAgICB0ZW1wbGF0ZTw+IC8vQ1YKLSAgICAgICAgc3RydWN0IHJlbW92ZV9jb25zdF9pbXBsX3R5cGVvZjxmYWxzZSxmYWxzZSx0cnVlLHRydWU+IHsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsdHlwZW5hbWUgSUQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgICAgICAgICAgICAgc3RhdGljIG1zdmNfcmVnaXN0ZXJfdHlwZTxVIHZvbGF0aWxlLElEPiB0ZXN0KFUgY29uc3Qgdm9sYXRpbGUmKCopKCkpOwotICAgICAgICAgICAgICAgIHN0YXRpYyBtc3ZjX3JlZ2lzdGVyX3R5cGU8VCxJRD4gdGVzdCguLi4pOwotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCxyZWdpc3Rlcl90ZXN0PXNpemVvZih0ZXN0KCAoVCgqKSgpKShOVUxMKSApICkpOwotICAgICAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXN2Y19leHRyYWN0X3R5cGU8SUQ+OjppZDJ0eXBlOjp0eXBlIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgICAgIHN0cnVjdCB0cmFuc2Zvcm1fdHlwZSB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBUJiB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLSAgICAgICAgdGVtcGxhdGU8PiAvL0NvbnN0IFBvaW50ZXIKLSAgICAgICAgc3RydWN0IHJlbW92ZV9jb25zdF9pbXBsX3R5cGVvZjx0cnVlLGZhbHNlLHRydWUsZmFsc2U+IHsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsdHlwZW5hbWUgSUQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgICAgICAgICAgICAgc3RhdGljIG1zdmNfcmVnaXN0ZXJfdHlwZTxVLElEPiB0ZXN0KHZvaWQoKikoVSBjb25zdFtdKSk7Ci0gICAgICAgICAgICAgICAgc3RhdGljIG1zdmNfcmVnaXN0ZXJfdHlwZTxULElEPiB0ZXN0KC4uLik7Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLHJlZ2lzdGVyX3Rlc3Q9c2l6ZW9mKHRlc3QoICh2b2lkKCopKFQpKShOVUxMKSApICkpOwotICAgICAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXN2Y19leHRyYWN0X3R5cGU8SUQ+OjppZDJ0eXBlOjp0eXBlIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgICAgIHN0cnVjdCB0cmFuc2Zvcm1fdHlwZSB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBUIHR5cGVbXTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0gICAgICAgIHRlbXBsYXRlPD4gLy9DViBQb2ludGVyCi0gICAgICAgIHN0cnVjdCByZW1vdmVfY29uc3RfaW1wbF90eXBlb2Y8dHJ1ZSxmYWxzZSx0cnVlLHRydWU+IHsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsdHlwZW5hbWUgSUQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgICAgICAgICAgICAgc3RhdGljIG1zdmNfcmVnaXN0ZXJfdHlwZTxVIHZvbGF0aWxlLElEPiB0ZXN0KHZvaWQoKikoVSBjb25zdCB2b2xhdGlsZVtdKSk7Ci0gICAgICAgICAgICAgICAgc3RhdGljIG1zdmNfcmVnaXN0ZXJfdHlwZTxULElEPiB0ZXN0KC4uLik7Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLHJlZ2lzdGVyX3Rlc3Q9c2l6ZW9mKHRlc3QoICh2b2lkKCopKFQpKShOVUxMKSApICkpOwotICAgICAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXN2Y19leHRyYWN0X3R5cGU8SUQ+OjppZDJ0eXBlOjp0eXBlIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgICAgIHN0cnVjdCB0cmFuc2Zvcm1fdHlwZSB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBUIHR5cGVbXTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07ICAgICAgICAKLSAgICAgICAgdGVtcGxhdGU8PiAvL0NvbnN0IEFycmF5Ci0gICAgICAgIHN0cnVjdCByZW1vdmVfY29uc3RfaW1wbF90eXBlb2Y8ZmFsc2UsdHJ1ZSx0cnVlLGZhbHNlPiB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULHR5cGVuYW1lIElEPgotICAgICAgICAgICAgc3RydWN0IGlubmVyIHsKLSAgICAgICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQsdmFsdWU9KHNpemVvZihUKS9zaXplb2YoKCooKFQqKU5VTEwpKVswXSkpKTsKLQotICAgICAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgICAgICAgICAgICAgc3RhdGljIG1zdmNfcmVnaXN0ZXJfdHlwZTxVW3ZhbHVlXSxJRD4gdGVzdCh2b2lkKCopKFUgY29uc3RbXSkpOwotICAgICAgICAgICAgICAgIHN0YXRpYyBtc3ZjX3JlZ2lzdGVyX3R5cGU8VCxJRD4gdGVzdCguLi4pOwotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCxyZWdpc3Rlcl90ZXN0PXNpemVvZih0ZXN0KCAodm9pZCgqKShUKSkoTlVMTCkgKSApKTsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1zdmNfZXh0cmFjdF90eXBlPElEPjo6aWQydHlwZTo6dHlwZSB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgdHJhbnNmb3JtX3R5cGUgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZTw+IC8vQ1YgQXJyYXkKLSAgICAgICAgc3RydWN0IHJlbW92ZV9jb25zdF9pbXBsX3R5cGVvZjxmYWxzZSx0cnVlLHRydWUsdHJ1ZT4gewotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCx0eXBlbmFtZSBJRD4KLSAgICAgICAgICAgIHN0cnVjdCBpbm5lciB7Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLHZhbHVlPShzaXplb2YoVCkvc2l6ZW9mKCgqKChUKilOVUxMKSlbMF0pKSk7Ci0KLSAgICAgICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotICAgICAgICAgICAgICAgIHN0YXRpYyBtc3ZjX3JlZ2lzdGVyX3R5cGU8VSB2b2xhdGlsZVt2YWx1ZV0sSUQ+IHRlc3Qodm9pZCgqKShVIGNvbnN0IHZvbGF0aWxlW10pKTsKLSAgICAgICAgICAgICAgICBzdGF0aWMgbXN2Y19yZWdpc3Rlcl90eXBlPFQsSUQ+IHRlc3QoLi4uKTsKLSAgICAgICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQscmVnaXN0ZXJfdGVzdD1zaXplb2YodGVzdCggKHZvaWQoKikoVCkpKE5VTEwpICkgKSk7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtc3ZjX2V4dHJhY3RfdHlwZTxJRD46OmlkMnR5cGU6OnR5cGUgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICAgICAgc3RydWN0IHRyYW5zZm9ybV90eXBlIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0KLSAgICB9IC8vbmFtZXNwYWNlIGRldGFpbAotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdHJ1Y3QgcmVtb3ZlX2NvbnN0IHsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6ZGV0YWlsOjpyZW1vdmVfY29uc3RfaW1wbF90eXBlb2Y8Ci0gICAgICAgICAgICBuZG5ib29zdDo6aXNfcG9pbnRlcjxUPjo6dmFsdWUsCi0gICAgICAgICAgICBuZG5ib29zdDo6aXNfYXJyYXk8VD46OnZhbHVlLAotICAgICAgICAgICAgbmRuYm9vc3Q6OmlzX2NvbnN0PFQ+Ojp2YWx1ZSwKLSAgICAgICAgICAgIG5kbmJvb3N0Ojppc192b2xhdGlsZTxUPjo6dmFsdWUKLSAgICAgICAgPiByZW1vdmVfY29uc3RfdHlwZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSAKLSAgICAgICAgICAgIHJlbW92ZV9jb25zdF90eXBlOjp0ZW1wbGF0ZSBpbm5lcjwKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSByZW1vdmVfY29uc3RfdHlwZTo6dGVtcGxhdGUgdHJhbnNmb3JtX3R5cGU8VD46OnR5cGUsCi0gICAgICAgICAgICAgICAgcmVtb3ZlX2NvbnN0PFQ+Ci0gICAgICAgICAgICA+Ojp0eXBlCi0gICAgICAgIHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMSxyZW1vdmVfY29uc3QsVCkKLSAgICB9OwotfS8vbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvL05ETkJPT1NUX1RZUEVfVFJBSVRTX01TVkNfUkVNT1ZFX0NPTlNUX0hPTFRfMjAwNF8wODI4CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL21zdmMvcmVtb3ZlX2N2LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvbXN2Yy9yZW1vdmVfY3YuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmM2EwNDM4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvbXN2Yy9yZW1vdmVfY3YuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTkwICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAwNCBQZWRlciBIb2x0Ci0vLyBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCi0vLyBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9UWVBFX1RSQUlUU19NU1ZDX1JFTU9WRV9DVl9IT0xUXzIwMDRfMDkwMQotI2RlZmluZSBORE5CT09TVF9UWVBFX1RSQUlUU19NU1ZDX1JFTU9WRV9DVl9IT0xUXzIwMDRfMDkwMQotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvbXN2Yy90eXBlb2YuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3ZvbGF0aWxlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb25zdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcG9pbnRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYXJyYXkuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotICAgIG5hbWVzcGFjZSBkZXRhaWwgewotICAgICAgICB0ZW1wbGF0ZTxib29sIElzUG9pbnRlcixib29sIElzQXJyYXksYm9vbCBJc0NvbnN0LGJvb2wgSXNWb2xhdGlsZT4KLSAgICAgICAgc3RydWN0IHJlbW92ZV9jdl9pbXBsX3R5cGVvZiB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULHR5cGVuYW1lIElEPgotICAgICAgICAgICAgc3RydWN0IGlubmVyIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICAgICAgc3RydWN0IHRyYW5zZm9ybV90eXBlIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0gICAgICAgIHRlbXBsYXRlPD4gLy9Wb2xhdGlsZQotICAgICAgICBzdHJ1Y3QgcmVtb3ZlX2N2X2ltcGxfdHlwZW9mPGZhbHNlLGZhbHNlLGZhbHNlLHRydWU+IHsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsdHlwZW5hbWUgSUQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgICAgICAgICAgICAgc3RhdGljIG1zdmNfcmVnaXN0ZXJfdHlwZTxVLElEPiB0ZXN0KFUgdm9sYXRpbGUmKCopKCkpOwotICAgICAgICAgICAgICAgIHN0YXRpYyBtc3ZjX3JlZ2lzdGVyX3R5cGU8VCxJRD4gdGVzdCguLi4pOwotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCxyZWdpc3Rlcl90ZXN0PXNpemVvZih0ZXN0KCAoVCgqKSgpKShOVUxMKSApICkpOwotICAgICAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXN2Y19leHRyYWN0X3R5cGU8SUQ+OjppZDJ0eXBlOjp0eXBlIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgICAgIHN0cnVjdCB0cmFuc2Zvcm1fdHlwZSB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBUJiB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLSAgICAgICAgdGVtcGxhdGU8PiAvL0NvbnN0Ci0gICAgICAgIHN0cnVjdCByZW1vdmVfY3ZfaW1wbF90eXBlb2Y8ZmFsc2UsZmFsc2UsdHJ1ZSxmYWxzZT4gewotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCx0eXBlbmFtZSBJRD4KLSAgICAgICAgICAgIHN0cnVjdCBpbm5lciB7Ci0gICAgICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICAgICAgICAgICAgICBzdGF0aWMgbXN2Y19yZWdpc3Rlcl90eXBlPFUsSUQ+IHRlc3QoVSBjb25zdCYoKikoKSk7Ci0gICAgICAgICAgICAgICAgc3RhdGljIG1zdmNfcmVnaXN0ZXJfdHlwZTxULElEPiB0ZXN0KC4uLik7Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLHJlZ2lzdGVyX3Rlc3Q9c2l6ZW9mKHRlc3QoIChUKCopKCkpKE5VTEwpICkgKSk7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtc3ZjX2V4dHJhY3RfdHlwZTxJRD46OmlkMnR5cGU6OnR5cGUgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICAgICAgc3RydWN0IHRyYW5zZm9ybV90eXBlIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIFQmIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotICAgICAgICB0ZW1wbGF0ZTw+IC8vQ1YKLSAgICAgICAgc3RydWN0IHJlbW92ZV9jdl9pbXBsX3R5cGVvZjxmYWxzZSxmYWxzZSx0cnVlLHRydWU+IHsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsdHlwZW5hbWUgSUQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgICAgICAgICAgICAgc3RhdGljIG1zdmNfcmVnaXN0ZXJfdHlwZTxVLElEPiB0ZXN0KFUgY29uc3Qgdm9sYXRpbGUmKCopKCkpOwotICAgICAgICAgICAgICAgIHN0YXRpYyBtc3ZjX3JlZ2lzdGVyX3R5cGU8VCxJRD4gdGVzdCguLi4pOwotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCxyZWdpc3Rlcl90ZXN0PXNpemVvZih0ZXN0KCAoVCgqKSgpKShOVUxMKSApICkpOwotICAgICAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXN2Y19leHRyYWN0X3R5cGU8SUQ+OjppZDJ0eXBlOjp0eXBlIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgICAgIHN0cnVjdCB0cmFuc2Zvcm1fdHlwZSB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBUJiB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLSAgICAgICAgdGVtcGxhdGU8PiAvL1ZvbGF0aWxlIFBvaW50ZXIKLSAgICAgICAgc3RydWN0IHJlbW92ZV9jdl9pbXBsX3R5cGVvZjx0cnVlLGZhbHNlLGZhbHNlLHRydWU+IHsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsdHlwZW5hbWUgSUQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgICAgICAgICAgICAgc3RhdGljIG1zdmNfcmVnaXN0ZXJfdHlwZTxVLElEPiB0ZXN0KHZvaWQoKikoVSB2b2xhdGlsZVtdKSk7Ci0gICAgICAgICAgICAgICAgc3RhdGljIG1zdmNfcmVnaXN0ZXJfdHlwZTxULElEPiB0ZXN0KC4uLik7Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLHJlZ2lzdGVyX3Rlc3Q9c2l6ZW9mKHRlc3QoICh2b2lkKCopKFQpKShOVUxMKSApICkpOwotICAgICAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXN2Y19leHRyYWN0X3R5cGU8SUQ+OjppZDJ0eXBlOjp0eXBlIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgICAgIHN0cnVjdCB0cmFuc2Zvcm1fdHlwZSB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBUIHR5cGVbXTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0gICAgICAgIHRlbXBsYXRlPD4gLy9Db25zdCBQb2ludGVyCi0gICAgICAgIHN0cnVjdCByZW1vdmVfY3ZfaW1wbF90eXBlb2Y8dHJ1ZSxmYWxzZSx0cnVlLGZhbHNlPiB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULHR5cGVuYW1lIElEPgotICAgICAgICAgICAgc3RydWN0IGlubmVyIHsKLSAgICAgICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotICAgICAgICAgICAgICAgIHN0YXRpYyBtc3ZjX3JlZ2lzdGVyX3R5cGU8VSxJRD4gdGVzdCh2b2lkKCopKFUgY29uc3RbXSkpOwotICAgICAgICAgICAgICAgIHN0YXRpYyBtc3ZjX3JlZ2lzdGVyX3R5cGU8VCxJRD4gdGVzdCguLi4pOwotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCxyZWdpc3Rlcl90ZXN0PXNpemVvZih0ZXN0KCAodm9pZCgqKShUKSkoTlVMTCkgKSApKTsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1zdmNfZXh0cmFjdF90eXBlPElEPjo6aWQydHlwZTo6dHlwZSB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgdHJhbnNmb3JtX3R5cGUgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgVCB0eXBlW107Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotICAgICAgICB0ZW1wbGF0ZTw+IC8vQ1YgUG9pbnRlcgotICAgICAgICBzdHJ1Y3QgcmVtb3ZlX2N2X2ltcGxfdHlwZW9mPHRydWUsZmFsc2UsdHJ1ZSx0cnVlPiB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULHR5cGVuYW1lIElEPgotICAgICAgICAgICAgc3RydWN0IGlubmVyIHsKLSAgICAgICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotICAgICAgICAgICAgICAgIHN0YXRpYyBtc3ZjX3JlZ2lzdGVyX3R5cGU8VSxJRD4gdGVzdCh2b2lkKCopKFUgY29uc3Qgdm9sYXRpbGVbXSkpOwotICAgICAgICAgICAgICAgIHN0YXRpYyBtc3ZjX3JlZ2lzdGVyX3R5cGU8VCxJRD4gdGVzdCguLi4pOwotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCxyZWdpc3Rlcl90ZXN0PXNpemVvZih0ZXN0KCAodm9pZCgqKShUKSkoTlVMTCkgKSApKTsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1zdmNfZXh0cmFjdF90eXBlPElEPjo6aWQydHlwZTo6dHlwZSB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgdHJhbnNmb3JtX3R5cGUgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgVCB0eXBlW107Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OyAgICAgICAgCi0gICAgICAgIHRlbXBsYXRlPD4gLy9Wb2xhdGlsZSBBcnJheQotICAgICAgICBzdHJ1Y3QgcmVtb3ZlX2N2X2ltcGxfdHlwZW9mPGZhbHNlLHRydWUsZmFsc2UsdHJ1ZT4gewotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCx0eXBlbmFtZSBJRD4KLSAgICAgICAgICAgIHN0cnVjdCBpbm5lciB7Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLHZhbHVlPShzaXplb2YoVCkvc2l6ZW9mKCgqKChUKilOVUxMKSlbMF0pKSk7Ci0KLSAgICAgICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotICAgICAgICAgICAgICAgIHN0YXRpYyBtc3ZjX3JlZ2lzdGVyX3R5cGU8VVt2YWx1ZV0sSUQ+IHRlc3Qodm9pZCgqKShVIHZvbGF0aWxlW10pKTsKLSAgICAgICAgICAgICAgICBzdGF0aWMgbXN2Y19yZWdpc3Rlcl90eXBlPFQsSUQ+IHRlc3QoLi4uKTsKLSAgICAgICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQscmVnaXN0ZXJfdGVzdD1zaXplb2YodGVzdCggKHZvaWQoKikoVCkpKE5VTEwpICkgKSk7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtc3ZjX2V4dHJhY3RfdHlwZTxJRD46OmlkMnR5cGU6OnR5cGUgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICAgICAgc3RydWN0IHRyYW5zZm9ybV90eXBlIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0gICAgICAgIHRlbXBsYXRlPD4gLy9Db25zdCBBcnJheQotICAgICAgICBzdHJ1Y3QgcmVtb3ZlX2N2X2ltcGxfdHlwZW9mPGZhbHNlLHRydWUsdHJ1ZSxmYWxzZT4gewotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCx0eXBlbmFtZSBJRD4KLSAgICAgICAgICAgIHN0cnVjdCBpbm5lciB7Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLHZhbHVlPShzaXplb2YoVCkvc2l6ZW9mKCgqKChUKilOVUxMKSlbMF0pKSk7Ci0KLSAgICAgICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotICAgICAgICAgICAgICAgIHN0YXRpYyBtc3ZjX3JlZ2lzdGVyX3R5cGU8VVt2YWx1ZV0sSUQ+IHRlc3Qodm9pZCgqKShVIGNvbnN0W10pKTsKLSAgICAgICAgICAgICAgICBzdGF0aWMgbXN2Y19yZWdpc3Rlcl90eXBlPFQsSUQ+IHRlc3QoLi4uKTsKLSAgICAgICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQscmVnaXN0ZXJfdGVzdD1zaXplb2YodGVzdCggKHZvaWQoKikoVCkpKE5VTEwpICkgKSk7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtc3ZjX2V4dHJhY3RfdHlwZTxJRD46OmlkMnR5cGU6OnR5cGUgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICAgICAgc3RydWN0IHRyYW5zZm9ybV90eXBlIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8PiAvL0NWIEFycmF5Ci0gICAgICAgIHN0cnVjdCByZW1vdmVfY3ZfaW1wbF90eXBlb2Y8ZmFsc2UsdHJ1ZSx0cnVlLHRydWU+IHsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsdHlwZW5hbWUgSUQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCx2YWx1ZT0oc2l6ZW9mKFQpL3NpemVvZigoKigoVCopTlVMTCkpWzBdKSkpOwotCi0gICAgICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICAgICAgICAgICAgICBzdGF0aWMgbXN2Y19yZWdpc3Rlcl90eXBlPFVbdmFsdWVdLElEPiB0ZXN0KHZvaWQoKikoVSBjb25zdCB2b2xhdGlsZVtdKSk7Ci0gICAgICAgICAgICAgICAgc3RhdGljIG1zdmNfcmVnaXN0ZXJfdHlwZTxULElEPiB0ZXN0KC4uLik7Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLHJlZ2lzdGVyX3Rlc3Q9c2l6ZW9mKHRlc3QoICh2b2lkKCopKFQpKShOVUxMKSApICkpOwotICAgICAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXN2Y19leHRyYWN0X3R5cGU8SUQ+OjppZDJ0eXBlOjp0eXBlIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgICAgIHN0cnVjdCB0cmFuc2Zvcm1fdHlwZSB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotCi0gICAgfSAvL25hbWVzcGFjZSBkZXRhaWwKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RydWN0IHJlbW92ZV9jdiB7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OmRldGFpbDo6cmVtb3ZlX2N2X2ltcGxfdHlwZW9mPAotICAgICAgICAgICAgbmRuYm9vc3Q6OmlzX3BvaW50ZXI8VD46OnZhbHVlLAotICAgICAgICAgICAgbmRuYm9vc3Q6OmlzX2FycmF5PFQ+Ojp2YWx1ZSwKLSAgICAgICAgICAgIG5kbmJvb3N0Ojppc19jb25zdDxUPjo6dmFsdWUsCi0gICAgICAgICAgICBuZG5ib29zdDo6aXNfdm9sYXRpbGU8VD46OnZhbHVlCi0gICAgICAgID4gcmVtb3ZlX2N2X3R5cGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgCi0gICAgICAgICAgICByZW1vdmVfY3ZfdHlwZTo6dGVtcGxhdGUgaW5uZXI8Ci0gICAgICAgICAgICAgICAgdHlwZW5hbWUgcmVtb3ZlX2N2X3R5cGU6OnRlbXBsYXRlIHRyYW5zZm9ybV90eXBlPFQ+Ojp0eXBlLAotICAgICAgICAgICAgICAgIHJlbW92ZV9jdjxUPgotICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDEscmVtb3ZlX2N2LFQpCi0gICAgfTsKLX0vL25hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy9ORE5CT09TVF9UWVBFX1RSQUlUU19NU1ZDX1JFTU9WRV9DVl9IT0xUXzIwMDRfMDkwMQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9tc3ZjL3JlbW92ZV9leHRlbnQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9tc3ZjL3JlbW92ZV9leHRlbnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhODhmNzVkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvbXN2Yy9yZW1vdmVfZXh0ZW50LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAwNCBQZWRlciBIb2x0Ci0vLyBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCi0vLyBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9UWVBFX1RSQUlUU19NU1ZDX1JFTU9WRV9FWFRFTlRfSE9MVF8yMDA0XzA4MjcKLSNkZWZpbmUgTkROQk9PU1RfVFlQRV9UUkFJVFNfTVNWQ19SRU1PVkVfRVhURU5UX0hPTFRfMjAwNF8wODI3Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9tc3ZjL3R5cGVvZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfYXJyYXkuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotICAgIG5hbWVzcGFjZSBkZXRhaWwgewotICAgICAgICB0ZW1wbGF0ZTxib29sIElzQXJyYXk+Ci0gICAgICAgIHN0cnVjdCByZW1vdmVfZXh0ZW50X2ltcGxfdHlwZW9mIHsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsdHlwZW5hbWUgSUQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmVtb3ZlX2V4dGVudF9pbXBsX3R5cGVvZjx0cnVlPiB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULHR5cGVuYW1lIElEPgotICAgICAgICAgICAgc3RydWN0IGlubmVyIHsKLSAgICAgICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgotICAgICAgICAgICAgICAgIHN0YXRpYyBtc3ZjX3JlZ2lzdGVyX3R5cGU8VSxJRD4gdGVzdChVW10pOwotICAgICAgICAgICAgICAgIHN0YXRpYyBtc3ZjX3JlZ2lzdGVyX3R5cGU8VCxJRD4gdGVzdCguLi4pOwotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCxyZWdpc3Rlcl90ZXN0PXNpemVvZih0ZXN0KCAqKChUKilOVUxMKSApICkpOwotICAgICAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXN2Y19leHRyYWN0X3R5cGU8SUQ+OjppZDJ0eXBlOjp0eXBlIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotICAgIH0gLy9uYW1lc3BhY2UgZGV0YWlsCi0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0cnVjdCByZW1vdmVfZXh0ZW50IHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpyZW1vdmVfZXh0ZW50X2ltcGxfdHlwZW9mPAotICAgICAgICAgICAgbmRuYm9vc3Q6OmlzX2FycmF5PFQ+Ojp2YWx1ZSAgICAgICAgICAgICAgICAKLSAgICAgICAgPjo6dGVtcGxhdGUgaW5uZXI8VCxyZW1vdmVfZXh0ZW50PFQ+ID46OnR5cGUgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgxLHJlbW92ZV9leHRlbnQsVCkKLSAgICB9OwotfSAvL25hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy9ORE5CT09TVF9UWVBFX1RSQUlUU19NU1ZDX1JFTU9WRV9CT1VORFNfSE9MVF8yMDA0XzA4MjcKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9tc3ZjL3JlbW92ZV9wb2ludGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvbXN2Yy9yZW1vdmVfcG9pbnRlci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQzMTFiY2MuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9tc3ZjL3JlbW92ZV9wb2ludGVyLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAwNCBQZWRlciBIb2x0Ci0vLyBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCi0vLyBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9UWVBFX1RSQUlUU19NU1ZDX1JFTU9WRV9QT0lOVEVSX0hPTFRfMjAwNF8wODI3Ci0jZGVmaW5lIE5ETkJPT1NUX1RZUEVfVFJBSVRTX01TVkNfUkVNT1ZFX1BPSU5URVJfSE9MVF8yMDA0XzA4MjcKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL21zdmMvdHlwZW9mLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19wb2ludGVyLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLSAgICBuYW1lc3BhY2UgZGV0YWlsIHsKLSAgICAgICAgdGVtcGxhdGU8aW50IElzUG9pbnRlcj4KLSAgICAgICAgc3RydWN0IHJlbW92ZV9wb2ludGVyX2ltcGxfdHlwZW9mIHsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsdHlwZW5hbWUgSUQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLSAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICBzdHJ1Y3QgcmVtb3ZlX3BvaW50ZXJfaW1wbF90eXBlb2Y8dHJ1ZT4gewotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCx0eXBlbmFtZSBJRD4KLSAgICAgICAgICAgIHN0cnVjdCBpbm5lciB7Ci0gICAgICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICAgICAgICAgICAgICBzdGF0aWMgbXN2Y19yZWdpc3Rlcl90eXBlPFUsSUQ+IHRlc3QoVSopOwotICAgICAgICAgICAgICAgIHN0YXRpYyBtc3ZjX3JlZ2lzdGVyX3R5cGU8VCxJRD4gdGVzdCguLi4pOwotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCxyZWdpc3Rlcl90ZXN0PXNpemVvZih0ZXN0KCAqKChUKilOVUxMKSApICkpOwotICAgICAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXN2Y19leHRyYWN0X3R5cGU8SUQ+OjppZDJ0eXBlOjp0eXBlIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotICAgIH0gLy9uYW1lc3BhY2UgZGV0YWlsCi0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0cnVjdCByZW1vdmVfcG9pbnRlciB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6cmVtb3ZlX3BvaW50ZXJfaW1wbF90eXBlb2Y8Ci0gICAgICAgICAgICBuZG5ib29zdDo6aXNfcG9pbnRlcjxUPjo6dmFsdWUKLSAgICAgICAgPjo6dGVtcGxhdGUgaW5uZXI8VCxyZW1vdmVfcG9pbnRlcjxUPiA+Ojp0eXBlIHR5cGU7Ci0gICAgICAgIE5ETkJPT1NUX01QTF9BVVhfTEFNQkRBX1NVUFBPUlQoMSxyZW1vdmVfcG9pbnRlcixUKQotICAgIH07Ci19IC8vbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvL05ETkJPT1NUX1RZUEVfVFJBSVRTX1JFTU9WRV9QT0lOVEVSX0hPTFRfMjAwNF8wODI3CmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL21zdmMvcmVtb3ZlX3JlZmVyZW5jZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL21zdmMvcmVtb3ZlX3JlZmVyZW5jZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE4MzM0NTYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9tc3ZjL3JlbW92ZV9yZWZlcmVuY2UuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDA0IFBlZGVyIEhvbHQKLS8vIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLS8vIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWZuZGVmIE5ETkJPT1NUX1RZUEVfVFJBSVRTX01TVkNfUkVNT1ZFX1JFRkVSRU5DRV9IT0xUXzIwMDRfMDgyNwotI2RlZmluZSBORE5CT09TVF9UWVBFX1RSQUlUU19NU1ZDX1JFTU9WRV9SRUZFUkVOQ0VfSE9MVF8yMDA0XzA4MjcKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL21zdmMvdHlwZW9mLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19yZWZlcmVuY2UuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotICAgIG5hbWVzcGFjZSBkZXRhaWwgewotICAgICAgICB0ZW1wbGF0ZTxib29sIElzUmVmZXJlbmNlPgotICAgICAgICBzdHJ1Y3QgcmVtb3ZlX3JlZmVyZW5jZV9pbXBsX3R5cGVvZiB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULHR5cGVuYW1lIElEPgotICAgICAgICAgICAgc3RydWN0IGlubmVyIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IHJlbW92ZV9yZWZlcmVuY2VfaW1wbF90eXBlb2Y8dHJ1ZT4gewotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCx0eXBlbmFtZSBJRD4KLSAgICAgICAgICAgIHN0cnVjdCBpbm5lciB7Ci0gICAgICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICAgICAgICAgICAgICBzdGF0aWMgbXN2Y19yZWdpc3Rlcl90eXBlPFUsSUQ+IHRlc3QoVSYoKikoKSk7Ci0gICAgICAgICAgICAgICAgc3RhdGljIG1zdmNfcmVnaXN0ZXJfdHlwZTxULElEPiB0ZXN0KC4uLik7Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLHJlZ2lzdGVyX3Rlc3Q9c2l6ZW9mKHRlc3QoIChUKCopKCkpKE5VTEwpICkgKSk7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtc3ZjX2V4dHJhY3RfdHlwZTxJRD46OmlkMnR5cGU6OnR5cGUgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0gICAgfSAvL25hbWVzcGFjZSBkZXRhaWwKLSAgICAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgIHN0cnVjdCByZW1vdmVfcmVmZXJlbmNlIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpyZW1vdmVfcmVmZXJlbmNlX2ltcGxfdHlwZW9mPAotICAgICAgICAgICAgbmRuYm9vc3Q6OmlzX3JlZmVyZW5jZTxUPjo6dmFsdWUKLSAgICAgICAgPjo6dGVtcGxhdGUgaW5uZXI8VCxyZW1vdmVfcmVmZXJlbmNlPFQ+ID46OnR5cGUgdHlwZTsKLSAgICAgICAgTkROQk9PU1RfTVBMX0FVWF9MQU1CREFfU1VQUE9SVCgxLHJlbW92ZV9yZWZlcmVuY2UsVCkKLSAgICB9OwotfSAvL25hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy9ORE5CT09TVF9UWVBFX1RSQUlUU19NU1ZDX1JFTU9WRV9SRUZFUkVOQ0VfSE9MVF8yMDA0XzA4MjcKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvbXN2Yy9yZW1vdmVfdm9sYXRpbGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9tc3ZjL3JlbW92ZV92b2xhdGlsZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwZTE0OTcuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9tc3ZjL3JlbW92ZV92b2xhdGlsZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNDMgKzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDA0IFBlZGVyIEhvbHQKLS8vIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLS8vIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWZuZGVmIE5ETkJPT1NUX1RZUEVfVFJBSVRTX01TVkNfUkVNT1ZFX1ZPTEFUSUxFX0hPTFRfMjAwNF8wODI4Ci0jZGVmaW5lIE5ETkJPT1NUX1RZUEVfVFJBSVRTX01TVkNfUkVNT1ZFX1ZPTEFUSUxFX0hPTFRfMjAwNF8wODI4Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9tc3ZjL3R5cGVvZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfdm9sYXRpbGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NvbnN0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19wb2ludGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19hcnJheS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0gICAgbmFtZXNwYWNlIGRldGFpbCB7Ci0gICAgICAgIHRlbXBsYXRlPGJvb2wgSXNQb2ludGVyLGJvb2wgSXNBcnJheSxib29sIElzQ29uc3QsYm9vbCBJc1ZvbGF0aWxlPgotICAgICAgICBzdHJ1Y3QgcmVtb3ZlX3ZvbGF0aWxlX2ltcGxfdHlwZW9mIHsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsdHlwZW5hbWUgSUQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgdHJhbnNmb3JtX3R5cGUgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLSAgICAgICAgdGVtcGxhdGU8PiAvL1ZvbGF0aWxlCi0gICAgICAgIHN0cnVjdCByZW1vdmVfdm9sYXRpbGVfaW1wbF90eXBlb2Y8ZmFsc2UsZmFsc2UsZmFsc2UsdHJ1ZT4gewotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCx0eXBlbmFtZSBJRD4KLSAgICAgICAgICAgIHN0cnVjdCBpbm5lciB7Ci0gICAgICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICAgICAgICAgICAgICBzdGF0aWMgbXN2Y19yZWdpc3Rlcl90eXBlPFUsSUQ+IHRlc3QoVSB2b2xhdGlsZSYoKikoKSk7Ci0gICAgICAgICAgICAgICAgc3RhdGljIG1zdmNfcmVnaXN0ZXJfdHlwZTxULElEPiB0ZXN0KC4uLik7Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLHJlZ2lzdGVyX3Rlc3Q9c2l6ZW9mKHRlc3QoIChUKCopKCkpKE5VTEwpICkgKSk7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtc3ZjX2V4dHJhY3RfdHlwZTxJRD46OmlkMnR5cGU6OnR5cGUgdHlwZTsKLSAgICAgICAgICAgIH07ICAgICAgICAgICAgCi0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICAgICAgc3RydWN0IHRyYW5zZm9ybV90eXBlIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIFQmIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotICAgICAgICB0ZW1wbGF0ZTw+IC8vQ1YKLSAgICAgICAgc3RydWN0IHJlbW92ZV92b2xhdGlsZV9pbXBsX3R5cGVvZjxmYWxzZSxmYWxzZSx0cnVlLHRydWU+IHsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsdHlwZW5hbWUgSUQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgICAgICAgICAgICAgc3RhdGljIG1zdmNfcmVnaXN0ZXJfdHlwZTxVIGNvbnN0LElEPiB0ZXN0KFUgY29uc3Qgdm9sYXRpbGUmKCopKCkpOwotICAgICAgICAgICAgICAgIHN0YXRpYyBtc3ZjX3JlZ2lzdGVyX3R5cGU8VCxJRD4gdGVzdCguLi4pOwotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCxyZWdpc3Rlcl90ZXN0PXNpemVvZih0ZXN0KCAoVCgqKSgpKShOVUxMKSApICkpOwotICAgICAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXN2Y19leHRyYWN0X3R5cGU8SUQ+OjppZDJ0eXBlOjp0eXBlIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgICAgIHN0cnVjdCB0cmFuc2Zvcm1fdHlwZSB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBUJiB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLSAgICAgICAgdGVtcGxhdGU8PiAvL1ZvbGF0aWxlIFBvaW50ZXIKLSAgICAgICAgc3RydWN0IHJlbW92ZV92b2xhdGlsZV9pbXBsX3R5cGVvZjx0cnVlLGZhbHNlLGZhbHNlLHRydWU+IHsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsdHlwZW5hbWUgSUQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgICAgICAgICAgICAgc3RhdGljIG1zdmNfcmVnaXN0ZXJfdHlwZTxVLElEPiB0ZXN0KHZvaWQoKikoVSB2b2xhdGlsZVtdKSk7Ci0gICAgICAgICAgICAgICAgc3RhdGljIG1zdmNfcmVnaXN0ZXJfdHlwZTxULElEPiB0ZXN0KC4uLik7Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLHJlZ2lzdGVyX3Rlc3Q9c2l6ZW9mKHRlc3QoICh2b2lkKCopKFQpKShOVUxMKSApICkpOwotICAgICAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXN2Y19leHRyYWN0X3R5cGU8SUQ+OjppZDJ0eXBlOjp0eXBlIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgICAgIHN0cnVjdCB0cmFuc2Zvcm1fdHlwZSB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBUIHR5cGVbXTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0gICAgICAgIHRlbXBsYXRlPD4gLy9DViBQb2ludGVyCi0gICAgICAgIHN0cnVjdCByZW1vdmVfdm9sYXRpbGVfaW1wbF90eXBlb2Y8dHJ1ZSxmYWxzZSx0cnVlLHRydWU+IHsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsdHlwZW5hbWUgSUQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgICAgICAgICAgICAgc3RhdGljIG1zdmNfcmVnaXN0ZXJfdHlwZTxVIGNvbnN0LElEPiB0ZXN0KHZvaWQoKikoVSBjb25zdCB2b2xhdGlsZVtdKSk7Ci0gICAgICAgICAgICAgICAgc3RhdGljIG1zdmNfcmVnaXN0ZXJfdHlwZTxULElEPiB0ZXN0KC4uLik7Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLHJlZ2lzdGVyX3Rlc3Q9c2l6ZW9mKHRlc3QoICh2b2lkKCopKFQpKShOVUxMKSApICkpOwotICAgICAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXN2Y19leHRyYWN0X3R5cGU8SUQ+OjppZDJ0eXBlOjp0eXBlIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgICAgIHN0cnVjdCB0cmFuc2Zvcm1fdHlwZSB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBUIHR5cGVbXTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07ICAgICAgICAKLSAgICAgICAgdGVtcGxhdGU8PiAvL1ZvbGF0aWxlIEFycmF5Ci0gICAgICAgIHN0cnVjdCByZW1vdmVfdm9sYXRpbGVfaW1wbF90eXBlb2Y8ZmFsc2UsdHJ1ZSxmYWxzZSx0cnVlPiB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULHR5cGVuYW1lIElEPgotICAgICAgICAgICAgc3RydWN0IGlubmVyIHsKLSAgICAgICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQsdmFsdWU9KHNpemVvZihUKS9zaXplb2YoKCooKFQqKU5VTEwpKVswXSkpKTsKLQotICAgICAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+Ci0gICAgICAgICAgICAgICAgc3RhdGljIG1zdmNfcmVnaXN0ZXJfdHlwZTxVW3ZhbHVlXSxJRD4gdGVzdCh2b2lkKCopKFUgdm9sYXRpbGVbXSkpOwotICAgICAgICAgICAgICAgIHN0YXRpYyBtc3ZjX3JlZ2lzdGVyX3R5cGU8VCxJRD4gdGVzdCguLi4pOwotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCxyZWdpc3Rlcl90ZXN0PXNpemVvZih0ZXN0KCAodm9pZCgqKShUKSkoTlVMTCkgKSApKTsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1zdmNfZXh0cmFjdF90eXBlPElEPjo6aWQydHlwZTo6dHlwZSB0eXBlOyAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICAgICAgc3RydWN0IHRyYW5zZm9ybV90eXBlIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8PiAvL0NWIEFycmF5Ci0gICAgICAgIHN0cnVjdCByZW1vdmVfdm9sYXRpbGVfaW1wbF90eXBlb2Y8ZmFsc2UsdHJ1ZSx0cnVlLHRydWU+IHsKLSAgICAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsdHlwZW5hbWUgSUQ+Ci0gICAgICAgICAgICBzdHJ1Y3QgaW5uZXIgewotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCx2YWx1ZT0oc2l6ZW9mKFQpL3NpemVvZigoKigoVCopTlVMTCkpWzBdKSkpOwotCi0gICAgICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KLSAgICAgICAgICAgICAgICBzdGF0aWMgbXN2Y19yZWdpc3Rlcl90eXBlPFUgY29uc3RbdmFsdWVdLElEPiB0ZXN0KHZvaWQoKikoVSBjb25zdCB2b2xhdGlsZVtdKSk7Ci0gICAgICAgICAgICAgICAgc3RhdGljIG1zdmNfcmVnaXN0ZXJfdHlwZTxULElEPiB0ZXN0KC4uLik7Ci0gICAgICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLHJlZ2lzdGVyX3Rlc3Q9c2l6ZW9mKHRlc3QoICh2b2lkKCopKFQpKShOVUxMKSApICkpOwotICAgICAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXN2Y19leHRyYWN0X3R5cGU8SUQ+OjppZDJ0eXBlOjp0eXBlIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgICAgIHN0cnVjdCB0cmFuc2Zvcm1fdHlwZSB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotCi0gICAgfSAvL25hbWVzcGFjZSBkZXRhaWwKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RydWN0IHJlbW92ZV92b2xhdGlsZSB7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OmRldGFpbDo6cmVtb3ZlX3ZvbGF0aWxlX2ltcGxfdHlwZW9mPAotICAgICAgICAgICAgbmRuYm9vc3Q6OmlzX3BvaW50ZXI8VD46OnZhbHVlLAotICAgICAgICAgICAgbmRuYm9vc3Q6OmlzX2FycmF5PFQ+Ojp2YWx1ZSwKLSAgICAgICAgICAgIG5kbmJvb3N0Ojppc19jb25zdDxUPjo6dmFsdWUsCi0gICAgICAgICAgICBuZG5ib29zdDo6aXNfdm9sYXRpbGU8VD46OnZhbHVlCi0gICAgICAgID4gcmVtb3ZlX3ZvbGF0aWxlX3R5cGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgCi0gICAgICAgICAgICByZW1vdmVfdm9sYXRpbGVfdHlwZTo6dGVtcGxhdGUgaW5uZXI8Ci0gICAgICAgICAgICAgICAgdHlwZW5hbWUgcmVtb3ZlX3ZvbGF0aWxlX3R5cGU6OnRlbXBsYXRlIHRyYW5zZm9ybV90eXBlPFQ+Ojp0eXBlLAotICAgICAgICAgICAgICAgIHJlbW92ZV92b2xhdGlsZTxUPgotICAgICAgICAgICAgPjo6dHlwZQotICAgICAgICB0eXBlOwotICAgICAgICBORE5CT09TVF9NUExfQVVYX0xBTUJEQV9TVVBQT1JUKDEscmVtb3ZlX3ZvbGF0aWxlLFQpCi0gICAgfTsKLX0vL25hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYgLy9ORE5CT09TVF9UWVBFX1RSQUlUU19NU1ZDX1JFTU9WRV9WT0xBVElMRV9IT0xUXzIwMDRfMDgyOApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9tc3ZjL3R5cGVvZi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL21zdmMvdHlwZW9mLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzI1ZGFkZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL21zdmMvdHlwZW9mLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAwNCBQZWRlciBIb2x0Ci0vLyBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCi0vLyBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9UWVBFVFJBSVRTX01TVkNfVFlQRU9GX0hQUAotI2RlZmluZSBORE5CT09TVF9UWVBFVFJBSVRTX01TVkNfVFlQRU9GX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSBkZXRhaWwgewotIyBpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsPT0xMzAwKQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJRD4KLSAgICAgICAgc3RydWN0IG1zdmNfZXh0cmFjdF90eXBlCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRlbXBsYXRlPGJvb2w+Ci0gICAgICAgICAgICBzdHJ1Y3QgaWQydHlwZV9pbXBsOwotCi0gICAgICAgICAgICB0eXBlZGVmIGlkMnR5cGVfaW1wbDx0cnVlPiBpZDJ0eXBlOwotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIElEPgotICAgICAgICBzdHJ1Y3QgbXN2Y19yZWdpc3Rlcl90eXBlIDogcHVibGljIG1zdmNfZXh0cmFjdF90eXBlPElEPgotICAgICAgICB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgICAgICBzdHJ1Y3QgaWQydHlwZV9pbXBsPHRydWU+ICAvL1ZDNy4wIHNwZWNpZmljIGJ1Z2ZlYXR1cmUKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0jIGVsc2UgCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIElEPgotICAgICAgICBzdHJ1Y3QgbXN2Y19leHRyYWN0X3R5cGUKLSAgICAgICAgewotICAgICAgICAgICAgc3RydWN0IGlkMnR5cGU7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgSUQ+Ci0gICAgICAgIHN0cnVjdCBtc3ZjX3JlZ2lzdGVyX3R5cGUgOiBwdWJsaWMgbXN2Y19leHRyYWN0X3R5cGU8SUQ+Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHR5cGVkZWYgbXN2Y19leHRyYWN0X3R5cGU8SUQ+IGJhc2VfdHlwZTsKLSAgICAgICAgICAgIHN0cnVjdCBiYXNlX3R5cGU6OmlkMnR5cGUgLy8gVGhpcyB1c2VzIG5pY2UgVkM2LjUgYW5kIFZDNy4xIGJ1Z2ZlYXR1cmUKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0jIGVuZGlmCi19fQotCi0jZW5kaWYgLy9ORE5CT09TVF9UWVBFVFJBSVRTX01TVkNfVFlQRU9GX0lNUExfSFBQCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL29iamVjdF90cmFpdHMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9vYmplY3RfdHJhaXRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmZjOWFlZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL29iamVjdF90cmFpdHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgSG93YXJkIEhpbm5hbnQgJiBKb2huIE1hZGRvY2sgMjAwMC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0vLwotLy8gIGRlZmluZXMgb2JqZWN0IHRyYWl0cyBjbGFzc2VzOgotLy8gIGlzX29iamVjdCwgaXNfc2NhbGFyLCBpc19jbGFzcywgaXNfY29tcG91bmQsIGlzX3BvZCwgCi0vLyAgaGFzX3RyaXZpYWxfY29uc3RydWN0b3IsIGhhc190cml2aWFsX2NvcHksIGhhc190cml2aWFsX2Fzc2lnbiwgCi0vLyAgaGFzX3RyaXZpYWxfZGVzdHJ1Y3RvciwgaXNfZW1wdHkuCi0vLwotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX09CSkVDVF9UUkFJVFNfSFBQX0lOTENVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX09CSkVDVF9UUkFJVFNfSFBQX0lOTENVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfdHJpdmlhbF9hc3NpZ24uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2hhc190cml2aWFsX2NvbnN0cnVjdG9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfdHJpdmlhbF9jb3B5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfdHJpdmlhbF9kZXN0cnVjdG9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9oYXNfbm90aHJvd19jb25zdHJ1Y3Rvci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX25vdGhyb3dfY29weS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaGFzX25vdGhyb3dfYXNzaWduLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19iYXNlX2FuZF9kZXJpdmVkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jbGFzcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfY29tcG91bmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2VtcHR5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19vYmplY3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3BvZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfc2NhbGFyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zdGF0ZWxlc3MuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfT0JKRUNUX1RSQUlUU19IUFBfSU5MQ1VERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvcHJvbW90ZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL3Byb21vdGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZWViYTRkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvcHJvbW90ZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0vLyBDb3B5cmlnaHQgMjAwNSBBbGV4YW5kZXIgTmFzb25vdi4KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZQotLy8gYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBGSUxFX25kbmJvb3N0X3R5cGVfdHJhaXRzX3Byb21vdGVfaHBwX0lOQ0xVREVECi0jZGVmaW5lIEZJTEVfbmRuYm9vc3RfdHlwZV90cmFpdHNfcHJvbW90ZV9ocHBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaW50ZWdyYWxfcHJvbW90aW9uLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9mbG9hdGluZ19wb2ludF9wcm9tb3Rpb24uaHBwPgotCi0vLyBTaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdHlwZV90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGU8Y2xhc3MgVD4KLXN0cnVjdCBwcm9tb3RlX2ltcGwKLSAgOiBwdWJsaWMgaW50ZWdyYWxfcHJvbW90aW9uPAotICAgICAgICBORE5CT09TVF9ERURVQ0VEX1RZUEVOQU1FIGZsb2F0aW5nX3BvaW50X3Byb21vdGlvbjxUPjo6dHlwZQotICAgICAgPgotewotfTsKLQotfQotCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9ERUYxKAotICAgICAgcHJvbW90ZQotICAgICwgVAotICAgICwgTkROQk9PU1RfREVEVUNFRF9UWVBFTkFNRSBuZG5ib29zdDo6ZGV0YWlsOjpwcm9tb3RlX2ltcGw8VD46OnR5cGUKLSAgICApCi19Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdHlwZV90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyAjaWZuZGVmIEZJTEVfbmRuYm9vc3RfdHlwZV90cmFpdHNfcHJvbW90ZV9ocHBfSU5DTFVERUQKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9yYW5rLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvcmFuay5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJhNGY2MmYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9yYW5rLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDg5ICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDUuICAKLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLQotI2lmbmRlZiBORE5CT09TVF9UVF9SQU5LX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9SQU5LX0hQUF9JTkNMVURFRAotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvc2l6ZV90X3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLSNpZiAhZGVmaW5lZCggX19DT0RFR0VBUkNfXyApCi0KLW5hbWVzcGFjZSBkZXRhaWx7Ci0KLXRlbXBsYXRlIDxjbGFzcyBULCBzdGQ6OnNpemVfdCBOPgotc3RydWN0IHJhbmtfaW1wCi17Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc3RkOjpzaXplX3QsIHZhbHVlID0gTik7Ci19OwotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0FSUkFZX1RZUEVfU1BFQ0lBTElaQVRJT05TKQotdGVtcGxhdGUgPGNsYXNzIFQsIHN0ZDo6c2l6ZV90IFIsIHN0ZDo6c2l6ZV90IE4+Ci1zdHJ1Y3QgcmFua19pbXA8VFtSXSwgTj4KLXsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzdGQ6OnNpemVfdCwgdmFsdWUgPSAoOjpuZG5ib29zdDo6ZGV0YWlsOjpyYW5rX2ltcDxULCBOKzE+Ojp2YWx1ZSkpOwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIHN0ZDo6c2l6ZV90IFIsIHN0ZDo6c2l6ZV90IE4+Ci1zdHJ1Y3QgcmFua19pbXA8VCBjb25zdFtSXSwgTj4KLXsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzdGQ6OnNpemVfdCwgdmFsdWUgPSAoOjpuZG5ib29zdDo6ZGV0YWlsOjpyYW5rX2ltcDxULCBOKzE+Ojp2YWx1ZSkpOwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIHN0ZDo6c2l6ZV90IFIsIHN0ZDo6c2l6ZV90IE4+Ci1zdHJ1Y3QgcmFua19pbXA8VCB2b2xhdGlsZVtSXSwgTj4KLXsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzdGQ6OnNpemVfdCwgdmFsdWUgPSAoOjpuZG5ib29zdDo6ZGV0YWlsOjpyYW5rX2ltcDxULCBOKzE+Ojp2YWx1ZSkpOwotfTsKLQotdGVtcGxhdGUgPGNsYXNzIFQsIHN0ZDo6c2l6ZV90IFIsIHN0ZDo6c2l6ZV90IE4+Ci1zdHJ1Y3QgcmFua19pbXA8VCBjb25zdCB2b2xhdGlsZVtSXSwgTj4KLXsKLSAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzdGQ6OnNpemVfdCwgdmFsdWUgPSAoOjpuZG5ib29zdDo6ZGV0YWlsOjpyYW5rX2ltcDxULCBOKzE+Ojp2YWx1ZSkpOwotfTsKLQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgPCAweDYwMCkgJiYgIWRlZmluZWQoX19JQk1DUFBfXykgJiYgICFORE5CT09TVF9XT1JLQVJPVU5EKF9fRE1DX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDg0MCkpCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgc3RkOjpzaXplX3QgTj4KLXN0cnVjdCByYW5rX2ltcDxUW10sIE4+Ci17Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc3RkOjpzaXplX3QsIHZhbHVlID0gKDo6bmRuYm9vc3Q6OmRldGFpbDo6cmFua19pbXA8VCwgTisxPjo6dmFsdWUpKTsKLX07Ci10ZW1wbGF0ZSA8Y2xhc3MgVCwgc3RkOjpzaXplX3QgTj4KLXN0cnVjdCByYW5rX2ltcDxUIGNvbnN0W10sIE4+Ci17Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc3RkOjpzaXplX3QsIHZhbHVlID0gKDo6bmRuYm9vc3Q6OmRldGFpbDo6cmFua19pbXA8VCwgTisxPjo6dmFsdWUpKTsKLX07Ci10ZW1wbGF0ZSA8Y2xhc3MgVCwgc3RkOjpzaXplX3QgTj4KLXN0cnVjdCByYW5rX2ltcDxUIHZvbGF0aWxlW10sIE4+Ci17Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc3RkOjpzaXplX3QsIHZhbHVlID0gKDo6bmRuYm9vc3Q6OmRldGFpbDo6cmFua19pbXA8VCwgTisxPjo6dmFsdWUpKTsKLX07Ci10ZW1wbGF0ZSA8Y2xhc3MgVCwgc3RkOjpzaXplX3QgTj4KLXN0cnVjdCByYW5rX2ltcDxUIGNvbnN0IHZvbGF0aWxlW10sIE4+Ci17Ci0gICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc3RkOjpzaXplX3QsIHZhbHVlID0gKDo6bmRuYm9vc3Q6OmRldGFpbDo6cmFua19pbXA8VCwgTisxPjo6dmFsdWUpKTsKLX07Ci0jZW5kaWYKLSNlbmRpZgotfQotCi0jZW5kaWYgLy8gIWRlZmluZWQoIF9fQ09ERUdFQVJDX18gKQotCi0jaWYgZGVmaW5lZCggX19DT0RFR0VBUkNfXyApCi1ORE5CT09TVF9UVF9BVVhfU0laRV9UX1RSQUlUX0RFRjEocmFuayxULF9fYXJyYXlfcmFuayhUKSkKLSNlbHNlCi1ORE5CT09TVF9UVF9BVVhfU0laRV9UX1RSQUlUX0RFRjEocmFuayxULCg6Om5kbmJvb3N0OjpkZXRhaWw6OnJhbmtfaW1wPFQsMD46OnZhbHVlKSkKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3NpemVfdF90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9JU19NRU1CRVJfRlVOQ1RJT05fUE9JTlRFUl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2FsbF9leHRlbnRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2FsbF9leHRlbnRzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjc1YWFhZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9hbGxfZXh0ZW50cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IEpvaG4gTWFkZG9jayAyMDA1LgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9SRU1PVkVfQUxMX0VYVEVOVFNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX1JFTU9WRV9BTExfRVhURU5UU19IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8Y3N0ZGRlZj4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsPD0xMzAwKQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL21zdmMvcmVtb3ZlX2FsbF9leHRlbnRzLmhwcD4KLSNlbmRpZgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdHlwZV90cmFpdF9kZWYuaHBwPgotCi0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQyw8PTEzMDApCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX0RFRjEocmVtb3ZlX2FsbF9leHRlbnRzLFQsVCkKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0FSUkFZX1RZUEVfU1BFQ0lBTElaQVRJT05TKQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfUEFSVElBTF9TUEVDMV8yKHR5cGVuYW1lIFQsc3RkOjpzaXplX3QgTixyZW1vdmVfYWxsX2V4dGVudHMsVFtOXSx0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX2FsbF9leHRlbnRzPFQ+Ojp0eXBlIHR5cGUpCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9QQVJUSUFMX1NQRUMxXzIodHlwZW5hbWUgVCxzdGQ6OnNpemVfdCBOLHJlbW92ZV9hbGxfZXh0ZW50cyxUIGNvbnN0W05dLHR5cGVuYW1lIG5kbmJvb3N0OjpyZW1vdmVfYWxsX2V4dGVudHM8VCBjb25zdD46OnR5cGUgdHlwZSkKLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX1BBUlRJQUxfU1BFQzFfMih0eXBlbmFtZSBULHN0ZDo6c2l6ZV90IE4scmVtb3ZlX2FsbF9leHRlbnRzLFQgdm9sYXRpbGVbTl0sdHlwZW5hbWUgbmRuYm9vc3Q6OnJlbW92ZV9hbGxfZXh0ZW50czxUIHZvbGF0aWxlPjo6dHlwZSB0eXBlKQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfUEFSVElBTF9TUEVDMV8yKHR5cGVuYW1lIFQsc3RkOjpzaXplX3QgTixyZW1vdmVfYWxsX2V4dGVudHMsVCBjb25zdCB2b2xhdGlsZVtOXSx0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX2FsbF9leHRlbnRzPFQgY29uc3Qgdm9sYXRpbGU+Ojp0eXBlIHR5cGUpCi0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg2MTApKSAmJiAhZGVmaW5lZChfX0lCTUNQUF9fKSAmJiAgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19ETUNfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4ODQwKSkKLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX1BBUlRJQUxfU1BFQzFfMSh0eXBlbmFtZSBULHJlbW92ZV9hbGxfZXh0ZW50cyxUW10sdHlwZW5hbWUgbmRuYm9vc3Q6OnJlbW92ZV9hbGxfZXh0ZW50czxUPjo6dHlwZSkKLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX1BBUlRJQUxfU1BFQzFfMSh0eXBlbmFtZSBULHJlbW92ZV9hbGxfZXh0ZW50cyxUIGNvbnN0W10sdHlwZW5hbWUgbmRuYm9vc3Q6OnJlbW92ZV9hbGxfZXh0ZW50czxUIGNvbnN0Pjo6dHlwZSkKLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX1BBUlRJQUxfU1BFQzFfMSh0eXBlbmFtZSBULHJlbW92ZV9hbGxfZXh0ZW50cyxUIHZvbGF0aWxlW10sdHlwZW5hbWUgbmRuYm9vc3Q6OnJlbW92ZV9hbGxfZXh0ZW50czxUIHZvbGF0aWxlPjo6dHlwZSkKLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX1BBUlRJQUxfU1BFQzFfMSh0eXBlbmFtZSBULHJlbW92ZV9hbGxfZXh0ZW50cyxUIGNvbnN0IHZvbGF0aWxlW10sdHlwZW5hbWUgbmRuYm9vc3Q6OnJlbW92ZV9hbGxfZXh0ZW50czxUIGNvbnN0IHZvbGF0aWxlPjo6dHlwZSkKLSNlbmRpZgotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3R5cGVfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfUkVNT1ZFX0JPVU5EU19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2JvdW5kcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9ib3VuZHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYTA5NzE1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2JvdW5kcy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIEhvd2FyZCBIaW5uYW50ICYgSm9obiBNYWRkb2NrIDIwMDAuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX1JFTU9WRV9CT1VORFNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX1JFTU9WRV9CT1VORFNfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPGNzdGRkZWY+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLDw9MTMwMCkKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9tc3ZjL3JlbW92ZV9ib3VuZHMuaHBwPgotI2VuZGlmCi0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90eXBlX3RyYWl0X2RlZi5ocHA+Ci0KLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLDw9MTMwMCkKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfREVGMShyZW1vdmVfYm91bmRzLFQsVCkKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04pICYmICFkZWZpbmVkKE5ETkJPT1NUX05PX0FSUkFZX1RZUEVfU1BFQ0lBTElaQVRJT05TKQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfUEFSVElBTF9TUEVDMV8yKHR5cGVuYW1lIFQsc3RkOjpzaXplX3QgTixyZW1vdmVfYm91bmRzLFRbTl0sVCB0eXBlKQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfUEFSVElBTF9TUEVDMV8yKHR5cGVuYW1lIFQsc3RkOjpzaXplX3QgTixyZW1vdmVfYm91bmRzLFQgY29uc3RbTl0sVCBjb25zdCB0eXBlKQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfUEFSVElBTF9TUEVDMV8yKHR5cGVuYW1lIFQsc3RkOjpzaXplX3QgTixyZW1vdmVfYm91bmRzLFQgdm9sYXRpbGVbTl0sVCB2b2xhdGlsZSB0eXBlKQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfUEFSVElBTF9TUEVDMV8yKHR5cGVuYW1lIFQsc3RkOjpzaXplX3QgTixyZW1vdmVfYm91bmRzLFQgY29uc3Qgdm9sYXRpbGVbTl0sVCBjb25zdCB2b2xhdGlsZSB0eXBlKQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NjEwKSkgJiYgIWRlZmluZWQoX19JQk1DUFBfXykgJiYgICFORE5CT09TVF9XT1JLQVJPVU5EKF9fRE1DX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDg0MCkpCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9QQVJUSUFMX1NQRUMxXzEodHlwZW5hbWUgVCxyZW1vdmVfYm91bmRzLFRbXSxUKQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfUEFSVElBTF9TUEVDMV8xKHR5cGVuYW1lIFQscmVtb3ZlX2JvdW5kcyxUIGNvbnN0W10sVCBjb25zdCkKLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX1BBUlRJQUxfU1BFQzFfMSh0eXBlbmFtZSBULHJlbW92ZV9ib3VuZHMsVCB2b2xhdGlsZVtdLFQgdm9sYXRpbGUpCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9QQVJUSUFMX1NQRUMxXzEodHlwZW5hbWUgVCxyZW1vdmVfYm91bmRzLFQgY29uc3Qgdm9sYXRpbGVbXSxUIGNvbnN0IHZvbGF0aWxlKQotI2VuZGlmCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdHlwZV90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9SRU1PVkVfQk9VTkRTX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfY29uc3QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfY29uc3QuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YTMxNjEzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2NvbnN0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDkwICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgRGF2ZSBBYnJhaGFtcywgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgSG93YXJkCi0vLyAgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLiAgCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfUkVNT1ZFX0NPTlNUX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9SRU1PVkVfQ09OU1RfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc192b2xhdGlsZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvYnJva2VuX2NvbXBpbGVyX3NwZWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9jdl90cmFpdHNfaW1wbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpbmNsdWRlIDxjc3RkZGVmPgotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLDw9MTMwMCkKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9tc3ZjL3JlbW92ZV9jb25zdC5ocHA+Ci0jZW5kaWYKLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3R5cGVfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotI2lmbmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgYm9vbCBpc192b2w+Ci1zdHJ1Y3QgcmVtb3ZlX2NvbnN0X2hlbHBlcgotewotICAgIHR5cGVkZWYgVCB0eXBlOwotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgcmVtb3ZlX2NvbnN0X2hlbHBlcjxULCB0cnVlPgotewotICAgIHR5cGVkZWYgVCB2b2xhdGlsZSB0eXBlOwotfTsKLQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCByZW1vdmVfY29uc3RfaW1wbAotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgcmVtb3ZlX2NvbnN0X2hlbHBlcjwKLSAgICAgICAgICB0eXBlbmFtZSBjdl90cmFpdHNfaW1wPFQqPjo6dW5xdWFsaWZpZWRfdHlwZQotICAgICAgICAsIDo6bmRuYm9vc3Q6OmlzX3ZvbGF0aWxlPFQ+Ojp2YWx1ZQotICAgICAgICA+Ojp0eXBlIHR5cGU7Ci19OwotCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTCi0vLwotLy8gV2UgY2FuJ3QgZmlsdGVyIG91dCBydmFsdWVfcmVmZXJlbmNlcyBhdCB0aGUgc2FtZSBsZXZlbCBhcwotLy8gcmVmZXJlbmNlcyBvciB3ZSBnZXQgYW1iaWd1aXRpZXMgZnJvbSBtc3ZjOgotLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IHJlbW92ZV9jb25zdF9pbXBsPFQmJj4KLXsKLSAgICB0eXBlZGVmIFQmJiB0eXBlOwotfTsKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotLy8gKiBjb252ZXJ0IGEgdHlwZSBUIHRvIG5vbi1jb25zdCB0eXBlIC0gcmVtb3ZlX2NvbnN0PFQ+Ci0KLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX0RFRjEocmVtb3ZlX2NvbnN0LFQsdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6cmVtb3ZlX2NvbnN0X2ltcGw8VD46OnR5cGUpCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9QQVJUSUFMX1NQRUMxXzEodHlwZW5hbWUgVCxyZW1vdmVfY29uc3QsVCYsVCYpCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQVJSQVlfVFlQRV9TUEVDSUFMSVpBVElPTlMpCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9QQVJUSUFMX1NQRUMxXzIodHlwZW5hbWUgVCxzdGQ6OnNpemVfdCBOLHJlbW92ZV9jb25zdCxUIGNvbnN0W05dLFQgdHlwZVtOXSkKLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX1BBUlRJQUxfU1BFQzFfMih0eXBlbmFtZSBULHN0ZDo6c2l6ZV90IE4scmVtb3ZlX2NvbnN0LFQgY29uc3Qgdm9sYXRpbGVbTl0sVCB2b2xhdGlsZSB0eXBlW05dKQotI2VuZGlmCi0KLSNlbGlmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsPD0xMzAwKQotCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9ERUYxKHJlbW92ZV9jb25zdCxULHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnJlbW92ZV9jb25zdF9pbXBsPFQ+Ojp0eXBlKQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3R5cGVfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfUkVNT1ZFX0NPTlNUX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfY3YuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfY3YuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNWNiODZhLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2N2LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDg0ICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgRGF2ZSBBYnJhaGFtcywgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgSG93YXJkCi0vLyAgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLiAgCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfUkVNT1ZFX0NWX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9SRU1PVkVfQ1ZfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9icm9rZW5fY29tcGlsZXJfc3BlYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2N2X3RyYWl0c19pbXBsLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLQotI2luY2x1ZGUgPGNzdGRkZWY+Ci0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsPD0xMzAwKQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL21zdmMvcmVtb3ZlX2N2LmhwcD4KLSNlbmRpZgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdHlwZV90cmFpdF9kZWYuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi0jaWZuZGVmIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotbmFtZXNwYWNlIGRldGFpbHsKLQotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgcnZhbHVlX3JlZl9maWx0ZXJfcmVtX2N2Ci17Ci0gICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmN2X3RyYWl0c19pbXA8VCo+Ojp1bnF1YWxpZmllZF90eXBlIHR5cGU7Ci19OwotCi0jaWZuZGVmIE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTCi0vLwotLy8gV2UgY2FuJ3QgZmlsdGVyIG91dCBydmFsdWVfcmVmZXJlbmNlcyBhdCB0aGUgc2FtZSBsZXZlbCBhcwotLy8gcmVmZXJlbmNlcyBvciB3ZSBnZXQgYW1iaWd1aXRpZXMgZnJvbSBtc3ZjOgotLy8KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RydWN0IHJ2YWx1ZV9yZWZfZmlsdGVyX3JlbV9jdjxUJiY+Ci17Ci0gICB0eXBlZGVmIFQmJiB0eXBlOwotfTsKLSNlbmRpZgotCi19Ci0KLQotLy8gIGNvbnZlcnQgYSB0eXBlIFQgdG8gYSBub24tY3YtcXVhbGlmaWVkIHR5cGUgLSByZW1vdmVfY3Y8VD4KLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX0RFRjEocmVtb3ZlX2N2LFQsdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6cnZhbHVlX3JlZl9maWx0ZXJfcmVtX2N2PFQ+Ojp0eXBlKQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfUEFSVElBTF9TUEVDMV8xKHR5cGVuYW1lIFQscmVtb3ZlX2N2LFQmLFQmKQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0FSUkFZX1RZUEVfU1BFQ0lBTElaQVRJT05TKQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfUEFSVElBTF9TUEVDMV8yKHR5cGVuYW1lIFQsc3RkOjpzaXplX3QgTixyZW1vdmVfY3YsVCBjb25zdFtOXSxUIHR5cGVbTl0pCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9QQVJUSUFMX1NQRUMxXzIodHlwZW5hbWUgVCxzdGQ6OnNpemVfdCBOLHJlbW92ZV9jdixUIHZvbGF0aWxlW05dLFQgdHlwZVtOXSkKLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX1BBUlRJQUxfU1BFQzFfMih0eXBlbmFtZSBULHN0ZDo6c2l6ZV90IE4scmVtb3ZlX2N2LFQgY29uc3Qgdm9sYXRpbGVbTl0sVCB0eXBlW05dKQotI2VuZGlmCi0KLSNlbGlmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsPD0xMzAwKQotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IHJlbW92ZV9jdl9pbXBsCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSByZW1vdmVfdm9sYXRpbGVfaW1wbDwgCi0gICAgICAgICAgdHlwZW5hbWUgcmVtb3ZlX2NvbnN0X2ltcGw8VD46OnR5cGUKLSAgICAgICAgPjo6dHlwZSB0eXBlOwotfTsKLX0KLQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfREVGMShyZW1vdmVfY3YsVCx0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpyZW1vdmVfY3ZfaW1wbDxUPjo6dHlwZSkKLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1RFTVBMQVRFX1BBUlRJQUxfU1BFQ0lBTElaQVRJT04KLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90eXBlX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX1JFTU9WRV9DVl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2V4dGVudC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9leHRlbnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMTMzMTdkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2V4dGVudC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi0KLS8vICAoQykgQ29weXJpZ2h0IFN0ZXZlIENsZWFyeSwgQmVtYW4gRGF3ZXMsIEhvd2FyZCBIaW5uYW50ICYgSm9obiBNYWRkb2NrIDIwMDAtMjAwNS4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfUkVNT1ZFX0VYVEVOVF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfUkVNT1ZFX0VYVEVOVF9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotI2luY2x1ZGUgPGNzdGRkZWY+Ci0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsPD0xMzAwKQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL21zdmMvcmVtb3ZlX2V4dGVudC5ocHA+Ci0jZW5kaWYKLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3R5cGVfdHJhaXRfZGVmLmhwcD4KLQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsPD0xMzAwKQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9ERUYxKHJlbW92ZV9leHRlbnQsVCxUKQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fQVJSQVlfVFlQRV9TUEVDSUFMSVpBVElPTlMpCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9QQVJUSUFMX1NQRUMxXzIodHlwZW5hbWUgVCxzdGQ6OnNpemVfdCBOLHJlbW92ZV9leHRlbnQsVFtOXSxUIHR5cGUpCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9QQVJUSUFMX1NQRUMxXzIodHlwZW5hbWUgVCxzdGQ6OnNpemVfdCBOLHJlbW92ZV9leHRlbnQsVCBjb25zdFtOXSxUIGNvbnN0IHR5cGUpCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9QQVJUSUFMX1NQRUMxXzIodHlwZW5hbWUgVCxzdGQ6OnNpemVfdCBOLHJlbW92ZV9leHRlbnQsVCB2b2xhdGlsZVtOXSxUIHZvbGF0aWxlIHR5cGUpCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9QQVJUSUFMX1NQRUMxXzIodHlwZW5hbWUgVCxzdGQ6OnNpemVfdCBOLHJlbW92ZV9leHRlbnQsVCBjb25zdCB2b2xhdGlsZVtOXSxUIGNvbnN0IHZvbGF0aWxlIHR5cGUpCi0jaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19CT1JMQU5EQ19fLCBORE5CT09TVF9URVNURURfQVQoMHg2MTApKSAmJiAhZGVmaW5lZChfX0lCTUNQUF9fKSAmJiAgIU5ETkJPT1NUX1dPUktBUk9VTkQoX19ETUNfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4ODQwKSkKLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX1BBUlRJQUxfU1BFQzFfMSh0eXBlbmFtZSBULHJlbW92ZV9leHRlbnQsVFtdLFQpCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9QQVJUSUFMX1NQRUMxXzEodHlwZW5hbWUgVCxyZW1vdmVfZXh0ZW50LFQgY29uc3RbXSxUIGNvbnN0KQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfUEFSVElBTF9TUEVDMV8xKHR5cGVuYW1lIFQscmVtb3ZlX2V4dGVudCxUIHZvbGF0aWxlW10sVCB2b2xhdGlsZSkKLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX1BBUlRJQUxfU1BFQzFfMSh0eXBlbmFtZSBULHJlbW92ZV9leHRlbnQsVCBjb25zdCB2b2xhdGlsZVtdLFQgY29uc3Qgdm9sYXRpbGUpCi0jZW5kaWYKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90eXBlX3RyYWl0X3VuZGVmLmhwcD4KLQotI2VuZGlmIC8vIE5ETkJPT1NUX1RUX1JFTU9WRV9CT1VORFNfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9wb2ludGVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX3BvaW50ZXIuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYThhMmU4Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX3BvaW50ZXIuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsOTIgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCBIb3dhcmQgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9SRU1PVkVfUE9JTlRFUl9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfUkVNT1ZFX1BPSU5URVJfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLSNpZmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvYnJva2VuX2NvbXBpbGVyX3NwZWMuaHBwPgotI2VuZGlmCi0KLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsPD0xMzAwKQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL21zdmMvcmVtb3ZlX3BvaW50ZXIuaHBwPgotI2VsaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9jdi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcG9pbnRlci5ocHA+Ci0jZW5kaWYKLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3R5cGVfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLQotbmFtZXNwYWNlIGRldGFpbHsKLQotICAgLy8KLSAgIC8vIFdlIG5lZWQgYWxsIHRoaXMgY3JhenkgaW5kaXJlY3Rpb24gYmVjYXVzZSBhIHR5cGUgc3VjaCBhczoKLSAgIC8vCi0gICAvLyBUICgqY29uc3QpKFUpCi0gICAvLwotICAgLy8gRG9lcyBub3QgYmluZCB0byBhIDxUKj4gb3IgPFQqY29uc3Q+IHBhcnRpYWwgc3BlY2lhbGl6YXRpb24gd2l0aCBWQzEwIGFuZCBlYXJsaWVyCi0gICAvLwotICAgdGVtcGxhdGUgPGNsYXNzIFQ+IAotICAgc3RydWN0IHJlbW92ZV9wb2ludGVyX2ltcAotICAgewotICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICB9OwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gCi0gICBzdHJ1Y3QgcmVtb3ZlX3BvaW50ZXJfaW1wPFQqPgotICAgewotICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICB9OwotCi0gICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgYm9vbCBiPiAKLSAgIHN0cnVjdCByZW1vdmVfcG9pbnRlcl9pbXAzCi0gICB7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlbW92ZV9wb2ludGVyX2ltcDx0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX2N2PFQ+Ojp0eXBlPjo6dHlwZSB0eXBlOwotICAgfTsKLQotICAgdGVtcGxhdGUgPGNsYXNzIFQ+IAotICAgc3RydWN0IHJlbW92ZV9wb2ludGVyX2ltcDM8VCwgZmFsc2U+Ci0gICB7Ci0gICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgIH07Ci0KLSAgIHRlbXBsYXRlIDxjbGFzcyBUPiAKLSAgIHN0cnVjdCByZW1vdmVfcG9pbnRlcl9pbXAyCi0gICB7Ci0gICAgICB0eXBlZGVmIHR5cGVuYW1lIHJlbW92ZV9wb2ludGVyX2ltcDM8VCwgOjpuZG5ib29zdDo6aXNfcG9pbnRlcjxUPjo6dmFsdWU+Ojp0eXBlIHR5cGU7Ci0gICB9OwotfQotCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9ERUYxKHJlbW92ZV9wb2ludGVyLFQsdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6cmVtb3ZlX3BvaW50ZXJfaW1wMjxUPjo6dHlwZSkKLQotI2VsaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTikKLQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfREVGMShyZW1vdmVfcG9pbnRlcixULFQpCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9QQVJUSUFMX1NQRUMxXzEodHlwZW5hbWUgVCxyZW1vdmVfcG9pbnRlcixUKixUKQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfUEFSVElBTF9TUEVDMV8xKHR5cGVuYW1lIFQscmVtb3ZlX3BvaW50ZXIsVCogY29uc3QsVCkKLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX1BBUlRJQUxfU1BFQzFfMSh0eXBlbmFtZSBULHJlbW92ZV9wb2ludGVyLFQqIHZvbGF0aWxlLFQpCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9QQVJUSUFMX1NQRUMxXzEodHlwZW5hbWUgVCxyZW1vdmVfcG9pbnRlcixUKiBjb25zdCB2b2xhdGlsZSxUKQotCi0jZWxpZiAhTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLDw9MTMwMCkKLQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfREVGMShyZW1vdmVfcG9pbnRlcixULHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OnJlbW92ZV9wb2ludGVyX2ltcGw8VD46OnR5cGUpCi0KLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3R5cGVfdHJhaXRfdW5kZWYuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfUkVNT1ZFX1BPSU5URVJfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9yZWZlcmVuY2UuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfcmVmZXJlbmNlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDQyMWM1OS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9yZWZlcmVuY2UuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNzAgKzAsMCBAQAotCi0vLyAgKEMpIENvcHlyaWdodCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCBIb3dhcmQgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLQotI2lmbmRlZiBORE5CT09TVF9UVF9SRU1PVkVfUkVGRVJFTkNFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9SRU1PVkVfUkVGRVJFTkNFX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvYnJva2VuX2NvbXBpbGVyX3NwZWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLDw9MTMwMCkKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9tc3ZjL3JlbW92ZV9yZWZlcmVuY2UuaHBwPgotI2VuZGlmCi0KLS8vIHNob3VsZCBiZSB0aGUgbGFzdCAjaW5jbHVkZQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90eXBlX3RyYWl0X2RlZi5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLSNpZm5kZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotCi1uYW1lc3BhY2UgZGV0YWlsewotLy8KLS8vIFdlIGNhbid0IGZpbHRlciBvdXQgcnZhbHVlX3JlZmVyZW5jZXMgYXQgdGhlIHNhbWUgbGV2ZWwgYXMKLS8vIHJlZmVyZW5jZXMgb3Igd2UgZ2V0IGFtYmlndWl0aWVzIGZyb20gbXN2YzoKLS8vCi10ZW1wbGF0ZSA8Y2xhc3MgVD4KLXN0cnVjdCByZW1vdmVfcnZhbHVlX3JlZgotewotICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotI2lmbmRlZiBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUwotdGVtcGxhdGUgPGNsYXNzIFQ+Ci1zdHJ1Y3QgcmVtb3ZlX3J2YWx1ZV9yZWY8VCYmPgotewotICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9ERUYxKHJlbW92ZV9yZWZlcmVuY2UsVCx0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpyZW1vdmVfcnZhbHVlX3JlZjxUPjo6dHlwZSkKLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX1BBUlRJQUxfU1BFQzFfMSh0eXBlbmFtZSBULHJlbW92ZV9yZWZlcmVuY2UsVCYsVCkKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfSUxMRUdBTF9DVl9SRUZFUkVOQ0VTKQotLy8gdGhlc2UgYXJlIGlsbGVnYWwgc3BlY2lhbGlzYXRpb25zOyBjdi1xdWFsaWZpZXMgYXBwbGllZCB0bwotLy8gcmVmZXJlbmNlcyBoYXZlIG5vIGVmZmVjdCBhY2NvcmRpbmcgdG8gWzguMy4ycDFdLAotLy8gQysrIEJ1aWxkZXIgcmVxdWlyZXMgdGhlbSB0aG91Z2ggYXMgaXQgdHJlYXRzIGN2LXF1YWxpZmllZAotLy8gcmVmZXJlbmNlcyBhcyBkaXN0aW5jdCB0eXBlcy4uLgotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfUEFSVElBTF9TUEVDMV8xKHR5cGVuYW1lIFQscmVtb3ZlX3JlZmVyZW5jZSxUJiBjb25zdCxUKQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfUEFSVElBTF9TUEVDMV8xKHR5cGVuYW1lIFQscmVtb3ZlX3JlZmVyZW5jZSxUJiB2b2xhdGlsZSxUKQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfUEFSVElBTF9TUEVDMV8xKHR5cGVuYW1lIFQscmVtb3ZlX3JlZmVyZW5jZSxUJiBjb25zdCB2b2xhdGlsZSxUKQotI2VuZGlmCi0KLSNlbGlmICFORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsPD0xMzAwKQotCi1ORE5CT09TVF9UVF9BVVhfVFlQRV9UUkFJVF9ERUYxKHJlbW92ZV9yZWZlcmVuY2UsVCx0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpyZW1vdmVfcmVmZXJlbmNlX2ltcGw8VD46OnR5cGUpCi0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdHlwZV90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9SRU1PVkVfUkVGRVJFTkNFX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfdm9sYXRpbGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfdm9sYXRpbGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MzFlOWIxLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX3ZvbGF0aWxlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDg4ICswLDAgQEAKLQotLy8gIChDKSBDb3B5cmlnaHQgRGF2ZSBBYnJhaGFtcywgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgSG93YXJkCi0vLyAgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLiAgCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0KLSNpZm5kZWYgTkROQk9PU1RfVFRfUkVNT1ZFX1ZPTEFUSUxFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UVF9SRU1PVkVfVk9MQVRJTEVfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb25zdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvYnJva2VuX2NvbXBpbGVyX3NwZWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9jdl90cmFpdHNfaW1wbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0KLSNpbmNsdWRlIDxjc3RkZGVmPgotCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLDw9MTMwMCkKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9tc3ZjL3JlbW92ZV92b2xhdGlsZS5ocHA+Ci0jZW5kaWYKLQotLy8gc2hvdWxkIGJlIHRoZSBsYXN0ICNpbmNsdWRlCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL3R5cGVfdHJhaXRfZGVmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotI2lmbmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgYm9vbCBpc19jb25zdD4KLXN0cnVjdCByZW1vdmVfdm9sYXRpbGVfaGVscGVyCi17Ci0gICAgdHlwZWRlZiBUIHR5cGU7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCByZW1vdmVfdm9sYXRpbGVfaGVscGVyPFQsdHJ1ZT4KLXsKLSAgICB0eXBlZGVmIFQgY29uc3QgdHlwZTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IHJlbW92ZV92b2xhdGlsZV9pbXBsCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSByZW1vdmVfdm9sYXRpbGVfaGVscGVyPAotICAgICAgICAgIHR5cGVuYW1lIGN2X3RyYWl0c19pbXA8VCo+Ojp1bnF1YWxpZmllZF90eXBlCi0gICAgICAgICwgOjpuZG5ib29zdDo6aXNfY29uc3Q8VD46OnZhbHVlCi0gICAgICAgID46OnR5cGUgdHlwZTsKLX07Ci0KLS8vCi0vLyBXZSBjYW4ndCBmaWx0ZXIgb3V0IHJ2YWx1ZV9yZWZlcmVuY2VzIGF0IHRoZSBzYW1lIGxldmVsIGFzCi0vLyByZWZlcmVuY2VzIG9yIHdlIGdldCBhbWJpZ3VpdGllcyBmcm9tIG1zdmM6Ci0vLwotI2lmbmRlZiBORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUwotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1zdHJ1Y3QgcmVtb3ZlX3ZvbGF0aWxlX2ltcGw8VCYmPgotewotICAgIHR5cGVkZWYgVCYmIHR5cGU7Ci19OwotI2VuZGlmCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotLy8gKiBjb252ZXJ0IGEgdHlwZSBUIHRvIGEgbm9uLXZvbGF0aWxlIHR5cGUgLSByZW1vdmVfdm9sYXRpbGU8VD4KLQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfREVGMShyZW1vdmVfdm9sYXRpbGUsVCx0eXBlbmFtZSBuZG5ib29zdDo6ZGV0YWlsOjpyZW1vdmVfdm9sYXRpbGVfaW1wbDxUPjo6dHlwZSkKLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX1BBUlRJQUxfU1BFQzFfMSh0eXBlbmFtZSBULHJlbW92ZV92b2xhdGlsZSxUJixUJikKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19BUlJBWV9UWVBFX1NQRUNJQUxJWkFUSU9OUykKLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX1BBUlRJQUxfU1BFQzFfMih0eXBlbmFtZSBULHN0ZDo6c2l6ZV90IE4scmVtb3ZlX3ZvbGF0aWxlLFQgdm9sYXRpbGVbTl0sVCB0eXBlW05dKQotTkROQk9PU1RfVFRfQVVYX1RZUEVfVFJBSVRfUEFSVElBTF9TUEVDMV8yKHR5cGVuYW1lIFQsc3RkOjpzaXplX3QgTixyZW1vdmVfdm9sYXRpbGUsVCBjb25zdCB2b2xhdGlsZVtOXSxUIGNvbnN0IHR5cGVbTl0pCi0jZW5kaWYKLQotI2VsaWYgIU5ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQyw8PTEzMDApCi0KLU5ETkJPT1NUX1RUX0FVWF9UWVBFX1RSQUlUX0RFRjEocmVtb3ZlX3ZvbGF0aWxlLFQsdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6cmVtb3ZlX3ZvbGF0aWxlX2ltcGw8VD46OnR5cGUpCi0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdHlwZV90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9SRU1PVkVfVk9MQVRJTEVfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL3NhbWVfdHJhaXRzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvc2FtZV90cmFpdHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNDc2YzBkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvc2FtZV90cmFpdHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgU3RldmUgQ2xlYXJ5LCBCZW1hbiBEYXdlcywgQWxla3NleSBHdXJ0b3ZveSwgSG93YXJkIEhpbm5hbnQgJiBKb2huIE1hZGRvY2sgMjAwMC4KLS8vICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGFyZSBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLAotLy8gIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyAgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KS4KLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdHlwZV90cmFpdHMgZm9yIG1vc3QgcmVjZW50IHZlcnNpb24gaW5jbHVkaW5nIGRvY3VtZW50YXRpb24uCi0vLwotLy8gIGRlZmluZXMgaXNfc2FtZToKLQotI2lmbmRlZiBORE5CT09TVF9UVF9TQU1FX1RSQUlUU19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfU0FNRV9UUkFJVFNfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19zYW1lLmhwcD4KLQotI2VuZGlmICAvLyBORE5CT09TVF9UVF9TQU1FX1RSQUlUU19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvdHJhbnNmb3JtX3RyYWl0cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL3RyYW5zZm9ybV90cmFpdHMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMmJhYTBjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvdHJhbnNmb3JtX3RyYWl0cy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi0vLyAgKEMpIENvcHlyaWdodCBTdGV2ZSBDbGVhcnksIEJlbWFuIERhd2VzLCBIb3dhcmQgSGlubmFudCAmIEpvaG4gTWFkZG9jayAyMDAwLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyAgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotLy8KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy90eXBlX3RyYWl0cyBmb3IgbW9zdCByZWNlbnQgdmVyc2lvbiBpbmNsdWRpbmcgZG9jdW1lbnRhdGlvbi4KLS8vCi0vLyAgZGVmaW5lcyB0cmFpdHMgY2xhc3NlcyBmb3IgdHJhbnNmb3JtaW5nIG9uZSB0eXBlIHRvIGFub3RoZXI6Ci0vLyAgcmVtb3ZlX3JlZmVyZW5jZSwgYWRkX3JlZmVyZW5jZSwgcmVtb3ZlX2JvdW5kcywgcmVtb3ZlX3BvaW50ZXIuCi0vLwotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX1RSQU5TRk9STV9UUkFJVFNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RUX1RSQU5TRk9STV9UUkFJVFNfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9hZGRfcG9pbnRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX3JlZmVyZW5jZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2JvdW5kcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX3BvaW50ZXIuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL3JlbW92ZV9yZWZlcmVuY2UuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVFRfVFJBTlNGT1JNX1RSQUlUU19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvdHlwZV93aXRoX2FsaWdubWVudC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVfdHJhaXRzL3R5cGVfd2l0aF9hbGlnbm1lbnQuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOTE2MGM2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZV90cmFpdHMvdHlwZV93aXRoX2FsaWdubWVudC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzOTkgKzAsMCBAQAotLy8gIChDKSBDb3B5cmlnaHQgSm9obiBNYWRkb2NrIDIwMDAuCi0vLyAgVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vICBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0vLwotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3R5cGVfdHJhaXRzIGZvciBtb3N0IHJlY2VudCB2ZXJzaW9uIGluY2x1ZGluZyBkb2N1bWVudGF0aW9uLgotCi0jaWZuZGVmIE5ETkJPT1NUX1RUX1RZUEVfV0lUSF9BTElHTk1FTlRfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFRfVFlQRV9XSVRIX0FMSUdOTUVOVF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9mb3JfZWFjaF9pLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvdG9fbGlzdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NhdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xpc3QvdHJhbnNmb3JtLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvbGlzdC9hcHBlbmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2FsaWdubWVudF9vZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfcG9kLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9zdGF0aWNfYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi0vLyBzaG91bGQgYmUgdGhlIGxhc3QgI2luY2x1ZGUKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9kZWYuaHBwPgotCi0jaW5jbHVkZSA8Y3N0ZGRlZj4KLQotI2lmZGVmIE5ETkJPT1NUX01TVkMKLSMgICBwcmFnbWEgd2FybmluZyhwdXNoKQotIyAgIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQxMjEpIC8vIGFsaWdubWVudCBpcyBzZW5zaXRpdmUgdG8gcGFja2luZwotI2VuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLSNpZm5kZWYgX19CT1JMQU5EQ19fCi0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi1jbGFzcyBhbGlnbm1lbnRfZHVtbXk7Ci10eXBlZGVmIHZvaWQgKCpmdW5jdGlvbl9wdHIpKCk7Ci10eXBlZGVmIGludCAoYWxpZ25tZW50X2R1bW15OjoqbWVtYmVyX3B0cik7Ci10eXBlZGVmIGludCAoYWxpZ25tZW50X2R1bW15OjoqbWVtYmVyX2Z1bmN0aW9uX3B0cikoKTsKLQotI2lmZGVmIE5ETkJPT1NUX0hBU19MT05HX0xPTkcKLSNkZWZpbmUgTkROQk9PU1RfVFRfQUxJR05NRU5UX0JBU0VfVFlQRVMgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVCggXAotICAgICAgICAxMiwgKCBcCi0gICAgICAgIGNoYXIsIHNob3J0LCBpbnQsIGxvbmcsICA6Om5kbmJvb3N0Ojpsb25nX2xvbmdfdHlwZSwgZmxvYXQsIGRvdWJsZSwgbG9uZyBkb3VibGUgXAotICAgICAgICAsIHZvaWQqLCBmdW5jdGlvbl9wdHIsIG1lbWJlcl9wdHIsIG1lbWJlcl9mdW5jdGlvbl9wdHIpKQotI2Vsc2UKLSNkZWZpbmUgTkROQk9PU1RfVFRfQUxJR05NRU5UX0JBU0VfVFlQRVMgTkROQk9PU1RfUFBfVFVQTEVfVE9fTElTVCggXAotICAgICAgICAxMSwgKCBcCi0gICAgICAgIGNoYXIsIHNob3J0LCBpbnQsIGxvbmcsIGZsb2F0LCBkb3VibGUsIGxvbmcgZG91YmxlIFwKLSAgICAgICAgLCB2b2lkKiwgZnVuY3Rpb25fcHRyLCBtZW1iZXJfcHRyLCBtZW1iZXJfZnVuY3Rpb25fcHRyKSkKLSNlbmRpZgotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX0hBU19PTkVfVChELERhdGEsVCkgbmRuYm9vc3Q6OmRldGFpbDo6aGFzX29uZV9UPCBUID4KLQotI2RlZmluZSBORE5CT09TVF9UVF9BTElHTk1FTlRfU1RSVUNUX1RZUEVTICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgTkROQk9PU1RfUFBfTElTVF9UUkFOU0ZPUk0oTkROQk9PU1RfVFRfSEFTX09ORV9ULCAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFgsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9UVF9BTElHTk1FTlRfQkFTRV9UWVBFUykKLQotI2RlZmluZSBORE5CT09TVF9UVF9BTElHTk1FTlRfVFlQRVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgTkROQk9PU1RfUFBfTElTVF9BUFBFTkQoTkROQk9PU1RfVFRfQUxJR05NRU5UX0JBU0VfVFlQRVMsICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX1RUX0FMSUdOTUVOVF9TVFJVQ1RfVFlQRVMpCi0KLS8vCi0vLyBsb3dlcl9hbGlnbm1lbnRfaGVscGVyIC0tCi0vLwotLy8gVGhpcyB0ZW1wbGF0ZSBnZXRzIGluc3RhbnRpYXRlZCBhIGxvdCwgc28gdXNlIHBhcnRpYWwKLS8vIHNwZWNpYWxpemF0aW9uIHdoZW4gYXZhaWxhYmxlIHRvIHJlZHVjZSB0aGUgY29tcGlsZXIgYnVyZGVuLgotLy8KLSNpZmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi10ZW1wbGF0ZSA8Ym9vbCBmb3VuZCA9IHRydWU+Ci1zdHJ1Y3QgbG93ZXJfYWxpZ25tZW50X2hlbHBlcl9pbXBsCi17Ci0gICAgdGVtcGxhdGUgPHN0ZDo6c2l6ZV90LCBjbGFzcz4KLSAgICBzdHJ1Y3QgYXBwbHkKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgY2hhciB0eXBlOwotICAgICAgICBlbnVtIHsgdmFsdWUgPSB0cnVlIH07Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgbG93ZXJfYWxpZ25tZW50X2hlbHBlcl9pbXBsPGZhbHNlPgotewotICAgIHRlbXBsYXRlIDxzdGQ6OnNpemVfdCB0YXJnZXQsIGNsYXNzIFRlc3RUeXBlPgotICAgIHN0cnVjdCBhcHBseQotICAgICAgOiBwdWJsaWMgbXBsOjppZl9jPChhbGlnbm1lbnRfb2Y8VGVzdFR5cGU+Ojp2YWx1ZSA9PSB0YXJnZXQpLCBUZXN0VHlwZSwgY2hhcj4KLSAgICB7Ci0gICAgICAgIGVudW0geyB2YWx1ZSA9IChhbGlnbm1lbnRfb2Y8VGVzdFR5cGU+Ojp2YWx1ZSA9PSB0YXJnZXQpIH07Ci0gICAgfTsKLX07Ci0KLXRlbXBsYXRlIDxib29sIGZvdW5kLCBzdGQ6OnNpemVfdCB0YXJnZXQsIGNsYXNzIFRlc3RUeXBlPgotc3RydWN0IGxvd2VyX2FsaWdubWVudF9oZWxwZXIKLSAgOiBwdWJsaWMgbG93ZXJfYWxpZ25tZW50X2hlbHBlcl9pbXBsPGZvdW5kPjo6dGVtcGxhdGUgYXBwbHk8dGFyZ2V0LFRlc3RUeXBlPgotewotfTsKLSNlbHNlCi10ZW1wbGF0ZSA8Ym9vbCBmb3VuZCwgc3RkOjpzaXplX3QgdGFyZ2V0LCBjbGFzcyBUZXN0VHlwZT4KLXN0cnVjdCBsb3dlcl9hbGlnbm1lbnRfaGVscGVyCi17Ci0gICAgdHlwZWRlZiBjaGFyIHR5cGU7Ci0gICAgZW51bSB7IHZhbHVlID0gdHJ1ZSB9OwotfTsKLQotdGVtcGxhdGUgPHN0ZDo6c2l6ZV90IHRhcmdldCwgY2xhc3MgVGVzdFR5cGU+Ci1zdHJ1Y3QgbG93ZXJfYWxpZ25tZW50X2hlbHBlcjxmYWxzZSx0YXJnZXQsVGVzdFR5cGU+Ci17Ci0gICAgZW51bSB7IHZhbHVlID0gKGFsaWdubWVudF9vZjxUZXN0VHlwZT46OnZhbHVlID09IHRhcmdldCkgfTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG1wbDo6aWZfYzx2YWx1ZSwgVGVzdFR5cGUsIGNoYXI+Ojp0eXBlIHR5cGU7Ci19OwotI2VuZGlmCi0KLSNkZWZpbmUgTkROQk9PU1RfVFRfQ0hPT1NFX01JTl9BTElHTk1FTlQoUixQLEksVCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICB0eXBlbmFtZSBsb3dlcl9hbGlnbm1lbnRfaGVscGVyPCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgTkROQk9PU1RfUFBfQ0FUKGZvdW5kLEkpLHRhcmdldCxUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgPjo6dHlwZSBORE5CT09TVF9QUF9DQVQodCxJKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBlbnVtIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBORE5CT09TVF9QUF9DQVQoZm91bmQsTkROQk9PU1RfUFBfSU5DKEkpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgPSBsb3dlcl9hbGlnbm1lbnRfaGVscGVyPE5ETkJPT1NUX1BQX0NBVChmb3VuZCxJKSx0YXJnZXQsVCA+Ojp2YWx1ZSAgXAotICAgICAgICB9OwotCi0jZGVmaW5lIE5ETkJPT1NUX1RUX0NIT09TRV9UKFIsUCxJLFQpIFQgTkROQk9PU1RfUFBfQ0FUKHQsSSk7Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGhhc19vbmVfVAotewotICBUIGRhdGE7Ci19OwotCi10ZW1wbGF0ZSA8c3RkOjpzaXplX3QgdGFyZ2V0PgotdW5pb24gbG93ZXJfYWxpZ25tZW50Ci17Ci0gICAgZW51bSB7IGZvdW5kMCA9IGZhbHNlIH07Ci0KLSAgICBORE5CT09TVF9QUF9MSVNUX0ZPUl9FQUNIX0koCi0gICAgICAgICAgTkROQk9PU1RfVFRfQ0hPT1NFX01JTl9BTElHTk1FTlQKLSAgICAgICAgLCBpZ25vcmVkCi0gICAgICAgICwgTkROQk9PU1RfVFRfQUxJR05NRU5UX1RZUEVTCi0gICAgICAgICkKLX07Ci0KLXVuaW9uIG1heF9hbGlnbgotewotICAgIE5ETkJPT1NUX1BQX0xJU1RfRk9SX0VBQ0hfSSgKLSAgICAgICAgICBORE5CT09TVF9UVF9DSE9PU0VfVAotICAgICAgICAsIGlnbm9yZWQKLSAgICAgICAgLCBORE5CT09TVF9UVF9BTElHTk1FTlRfVFlQRVMKLSAgICAgICAgKQotfTsKLQotI3VuZGVmIE5ETkJPT1NUX1RUX0FMSUdOTUVOVF9CQVNFX1RZUEVTCi0jdW5kZWYgTkROQk9PU1RfVFRfSEFTX09ORV9UCi0jdW5kZWYgTkROQk9PU1RfVFRfQUxJR05NRU5UX1NUUlVDVF9UWVBFUwotI3VuZGVmIE5ETkJPT1NUX1RUX0FMSUdOTUVOVF9UWVBFUwotI3VuZGVmIE5ETkJPT1NUX1RUX0NIT09TRV9NSU5fQUxJR05NRU5UCi0jdW5kZWYgTkROQk9PU1RfVFRfQ0hPT1NFX1QKLQotdGVtcGxhdGU8c3RkOjpzaXplX3QgVEFsaWduLCBzdGQ6OnNpemVfdCBBbGlnbj4KLXN0cnVjdCBpc19hbGlnbmVkCi17Ci0gICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGJvb2wsCi0gICAgICAgIHZhbHVlID0gKFRBbGlnbiA+PSBBbGlnbikgJiAoVEFsaWduICUgQWxpZ24gPT0gMCkKLSAgICAgICAgKTsKLX07Ci0KLSNpZmRlZiBORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX3BvZCw6Om5kbmJvb3N0OjpkZXRhaWw6Om1heF9hbGlnbix0cnVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc19wb2QsOjpuZG5ib29zdDo6ZGV0YWlsOjpsb3dlcl9hbGlnbm1lbnQ8MT4gLHRydWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX3BvZCw6Om5kbmJvb3N0OjpkZXRhaWw6Omxvd2VyX2FsaWdubWVudDwyPiAsdHJ1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfcG9kLDo6bmRuYm9vc3Q6OmRldGFpbDo6bG93ZXJfYWxpZ25tZW50PDQ+ICx0cnVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc19wb2QsOjpuZG5ib29zdDo6ZGV0YWlsOjpsb3dlcl9hbGlnbm1lbnQ8OD4gLHRydWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX3BvZCw6Om5kbmJvb3N0OjpkZXRhaWw6Omxvd2VyX2FsaWdubWVudDwxMD4gLHRydWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX3BvZCw6Om5kbmJvb3N0OjpkZXRhaWw6Omxvd2VyX2FsaWdubWVudDwxNj4gLHRydWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX3BvZCw6Om5kbmJvb3N0OjpkZXRhaWw6Omxvd2VyX2FsaWdubWVudDwzMj4gLHRydWUpCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLSNpZm5kZWYgTkROQk9PU1RfTk9fVEVNUExBVEVfUEFSVElBTF9TUEVDSUFMSVpBVElPTgotdGVtcGxhdGU8c3RkOjpzaXplX3QgQWxpZ24+Ci1zdHJ1Y3QgaXNfcG9kPCA6Om5kbmJvb3N0OjpkZXRhaWw6Omxvd2VyX2FsaWdubWVudDxBbGlnbj4gPgotewotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc3RkOjpzaXplX3QsIHZhbHVlID0gdHJ1ZSk7Ci19OwotI2VuZGlmCi0KLS8vIFRoaXMgYWxpZ25tZW50IG1ldGhvZCBvcmlnaW5hbGx5IGR1ZSB0byBCcmlhbiBQYXJrZXIsIGltcGxlbWVudGVkIGJ5IERhdmlkCi0vLyBBYnJhaGFtcywgYW5kIHRoZW4gcG9ydGVkIGhlcmUgYnkgRG91ZyBHcmVnb3IuCi1uYW1lc3BhY2UgZGV0YWlsewotCi10ZW1wbGF0ZSA8c3RkOjpzaXplX3QgQWxpZ24+Ci1jbGFzcyB0eXBlX3dpdGhfYWxpZ25tZW50X2ltcAotewotICAgIHR5cGVkZWYgOjpuZG5ib29zdDo6ZGV0YWlsOjpsb3dlcl9hbGlnbm1lbnQ8QWxpZ24+IHQxOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgbXBsOjppZl9jPAotICAgICAgICAgIDo6bmRuYm9vc3Q6OmRldGFpbDo6aXNfYWxpZ25lZDwgOjpuZG5ib29zdDo6YWxpZ25tZW50X29mPHQxPjo6dmFsdWUsQWxpZ24gPjo6dmFsdWUKLSAgICAgICAgLCB0MQotICAgICAgICAsIDo6bmRuYm9vc3Q6OmRldGFpbDo6bWF4X2FsaWduCi0gICAgICAgID46OnR5cGUgYWxpZ25fdDsKLQotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzdGQ6OnNpemVfdCwgZm91bmQgPSBhbGlnbm1lbnRfb2Y8YWxpZ25fdD46OnZhbHVlKTsKLQotICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoZm91bmQgPj0gQWxpZ24pOwotICAgIE5ETkJPT1NUX1NUQVRJQ19BU1NFUlQoZm91bmQgJSBBbGlnbiA9PSAwKTsKLQotIHB1YmxpYzoKLSAgICB0eXBlZGVmIGFsaWduX3QgdHlwZTsKLX07Ci0KLX0KLQotdGVtcGxhdGUgPHN0ZDo6c2l6ZV90IEFsaWduPgotY2xhc3MgdHlwZV93aXRoX2FsaWdubWVudCAKLSAgOiBwdWJsaWMgOjpuZG5ib29zdDo6ZGV0YWlsOjp0eXBlX3dpdGhfYWxpZ25tZW50X2ltcDxBbGlnbj4KLXsKLX07Ci0KLSNpZiBkZWZpbmVkKF9fR05VQ19fKQotbmFtZXNwYWNlIGFsaWduIHsKLXN0cnVjdCBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXygyKSkpIGEyIHt9Owotc3RydWN0IF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKDQpKSkgYTQge307Ci1zdHJ1Y3QgX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oOCkpKSBhOCB7fTsKLXN0cnVjdCBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXygxNikpKSBhMTYge307Ci1zdHJ1Y3QgX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oMzIpKSkgYTMyIHt9Owotc3RydWN0IF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKDY0KSkpIGE2NCB7fTsKLXN0cnVjdCBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXygxMjgpKSkgYTEyOCB7fTsKLX0KLQotdGVtcGxhdGU8PiBjbGFzcyB0eXBlX3dpdGhfYWxpZ25tZW50PDE+ICB7IHB1YmxpYzogdHlwZWRlZiBjaGFyIHR5cGU7IH07Ci10ZW1wbGF0ZTw+IGNsYXNzIHR5cGVfd2l0aF9hbGlnbm1lbnQ8Mj4gIHsgcHVibGljOiB0eXBlZGVmIGFsaWduOjphMiB0eXBlOyB9OwotdGVtcGxhdGU8PiBjbGFzcyB0eXBlX3dpdGhfYWxpZ25tZW50PDQ+ICB7IHB1YmxpYzogdHlwZWRlZiBhbGlnbjo6YTQgdHlwZTsgfTsKLXRlbXBsYXRlPD4gY2xhc3MgdHlwZV93aXRoX2FsaWdubWVudDw4PiAgeyBwdWJsaWM6IHR5cGVkZWYgYWxpZ246OmE4IHR5cGU7IH07Ci10ZW1wbGF0ZTw+IGNsYXNzIHR5cGVfd2l0aF9hbGlnbm1lbnQ8MTY+IHsgcHVibGljOiB0eXBlZGVmIGFsaWduOjphMTYgdHlwZTsgfTsKLXRlbXBsYXRlPD4gY2xhc3MgdHlwZV93aXRoX2FsaWdubWVudDwzMj4geyBwdWJsaWM6IHR5cGVkZWYgYWxpZ246OmEzMiB0eXBlOyB9OwotdGVtcGxhdGU8PiBjbGFzcyB0eXBlX3dpdGhfYWxpZ25tZW50PDY0PiB7IHB1YmxpYzogdHlwZWRlZiBhbGlnbjo6YTY0IHR5cGU7IH07Ci10ZW1wbGF0ZTw+IGNsYXNzIHR5cGVfd2l0aF9hbGlnbm1lbnQ8MTI4PiB7IHB1YmxpYzogdHlwZWRlZiBhbGlnbjo6YTEyOCB0eXBlOyB9OwotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfcG9kLDo6bmRuYm9vc3Q6OmFsaWduOjphMix0cnVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc19wb2QsOjpuZG5ib29zdDo6YWxpZ246OmE0LHRydWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX3BvZCw6Om5kbmJvb3N0OjphbGlnbjo6YTgsdHJ1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfcG9kLDo6bmRuYm9vc3Q6OmFsaWduOjphMTYsdHJ1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfcG9kLDo6bmRuYm9vc3Q6OmFsaWduOjphMzIsdHJ1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfcG9kLDo6bmRuYm9vc3Q6OmFsaWduOjphNjQsdHJ1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfcG9kLDo6bmRuYm9vc3Q6OmFsaWduOjphMTI4LHRydWUpCi19Ci0jZW5kaWYKLSNpZiAoZGVmaW5lZChORE5CT09TVF9NU1ZDKSB8fCAoZGVmaW5lZChORE5CT09TVF9JTlRFTCkgJiYgZGVmaW5lZChfTVNDX1ZFUikpKSAmJiBfTVNDX1ZFUiA+PSAxMzAwCi0vLwotLy8gTVNWQyBzdXBwb3J0cyB0eXBlcyB3aGljaCBoYXZlIGFsaWdubWVudHMgZ3JlYXRlciB0aGFuIHRoZSBub3JtYWwKLS8vIG1heGltdW06IHRoZXNlIGFyZSB1c2VkIGZvciBleGFtcGxlIGluIHRoZSB0eXBlcyBfX202NCBhbmQgX19tMTI4Ci0vLyB0byBwcm92aWRlIHR5cGVzIHdpdGggYWxpZ25tZW50IHJlcXVpcmVtZW50cyB3aGljaCBtYXRjaCB0aGUgU1NFCi0vLyByZWdpc3RlcnMuICBUaGVyZWZvcmUgd2UgZXh0ZW5kIHR5cGVfd2l0aF9hbGlnbm1lbnQ8PiB0byBzdXBwb3J0Ci0vLyBzdWNoIHR5cGVzLCBob3dldmVyLCB3ZSBoYXZlIHRvIGJlIGNhcmVmdWwgdG8gdXNlIGEgYnVpbHRpbiB0eXBlCi0vLyB3aGVuZXZlciBwb3NzaWJsZSBvdGhlcndpc2Ugd2UgYnJlYWsgcHJldmlvdXNseSB3b3JraW5nIGNvZGU6Ci0vLyBzZWUgaHR0cDovL2FydGljbGUuZ21hbmUub3JnL2dtYW5lLmNvbXAubGliLmJvb3N0LmRldmVsLzE3MzAxMQotLy8gZm9yIGFuIGV4YW1wbGUgYW5kIHRlc3QgY2FzZS4gIFRodXMgdHlwZXMgbGlrZSBhOCBiZWxvdyB3aWxsCi0vLyBiZSB1c2VkICpvbmx5KiBpZiB0aGUgZXhpc3RpbmcgaW1wbGVtZW50YXRpb24gY2FuJ3QgcHJvdmlkZSBhIHR5cGUKLS8vIHdpdGggc3VpdGFibGUgYWxpZ25tZW50LiAgVGhpcyBkb2VzIG1lYW4gaG93ZXZlciwgdGhhdCB0eXBlX3dpdGhfYWxpZ25tZW50PD4KLS8vIG1heSByZXR1cm4gYSB0eXBlIHdoaWNoIGNhbm5vdCBiZSBwYXNzZWQgdGhyb3VnaCBhIGZ1bmN0aW9uIGNhbGwKLS8vIGJ5IHZhbHVlIChhbmQgbmVpdGhlciBjYW4gYW55IHR5cGUgY29udGFpbmluZyBzdWNoIGEgdHlwZSBsaWtlCi0vLyBCb29zdC5PcHRpb25hbCkuICBIb3dldmVyLCB0aGlzIG9ubHkgaGFwcGVucyB3aGVuIHdlIGhhdmUgbm8gY2hvaWNlIAotLy8gaW4gdGhlIG1hdHRlciBiZWNhdXNlIG5vIG90aGVyICJvcmRpbmFyeSIgdHlwZSBpcyBhdmFpbGFibGUuCi0vLwotbmFtZXNwYWNlIGFsaWduIHsKLXN0cnVjdCBfX2RlY2xzcGVjKGFsaWduKDgpKSBhOCB7IAotICAgY2hhciBtWzhdOyAKLSAgIHR5cGVkZWYgYTggdHlwZTsKLX07Ci1zdHJ1Y3QgX19kZWNsc3BlYyhhbGlnbigxNikpIGExNiB7IAotICAgY2hhciBtWzE2XTsgCi0gICB0eXBlZGVmIGExNiB0eXBlOwotfTsKLXN0cnVjdCBfX2RlY2xzcGVjKGFsaWduKDMyKSkgYTMyIHsgCi0gICBjaGFyIG1bMzJdOyAKLSAgIHR5cGVkZWYgYTMyIHR5cGU7Ci19Owotc3RydWN0IF9fZGVjbHNwZWMoYWxpZ24oNjQpKSBhNjQgCi17IAotICAgY2hhciBtWzY0XTsgCi0gICB0eXBlZGVmIGE2NCB0eXBlOwotfTsKLXN0cnVjdCBfX2RlY2xzcGVjKGFsaWduKDEyOCkpIGExMjggeyAKLSAgIGNoYXIgbVsxMjhdOyAKLSAgIHR5cGVkZWYgYTEyOCB0eXBlOwotfTsKLX0KLQotdGVtcGxhdGU8PiBjbGFzcyB0eXBlX3dpdGhfYWxpZ25tZW50PDg+ICAKLXsgCi0gICB0eXBlZGVmIG1wbDo6aWZfYzwKLSAgICAgIDo6bmRuYm9vc3Q6OmFsaWdubWVudF9vZjxuZG5ib29zdDo6ZGV0YWlsOjptYXhfYWxpZ24+Ojp2YWx1ZSA8IDgsCi0gICAgICBhbGlnbjo6YTgsCi0gICAgICBuZG5ib29zdDo6ZGV0YWlsOjp0eXBlX3dpdGhfYWxpZ25tZW50X2ltcDw4PiA+Ojp0eXBlIHQxOyAKLXB1YmxpYzogCi0gICB0eXBlZGVmIHQxOjp0eXBlIHR5cGU7Ci19OwotdGVtcGxhdGU8PiBjbGFzcyB0eXBlX3dpdGhfYWxpZ25tZW50PDE2PiAKLXsgCi0gICB0eXBlZGVmIG1wbDo6aWZfYzwKLSAgICAgIDo6bmRuYm9vc3Q6OmFsaWdubWVudF9vZjxuZG5ib29zdDo6ZGV0YWlsOjptYXhfYWxpZ24+Ojp2YWx1ZSA8IDE2LAotICAgICAgYWxpZ246OmExNiwKLSAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnR5cGVfd2l0aF9hbGlnbm1lbnRfaW1wPDE2PiA+Ojp0eXBlIHQxOyAKLXB1YmxpYzogCi0gICB0eXBlZGVmIHQxOjp0eXBlIHR5cGU7Ci19OwotdGVtcGxhdGU8PiBjbGFzcyB0eXBlX3dpdGhfYWxpZ25tZW50PDMyPiAKLXsgCi0gICB0eXBlZGVmIG1wbDo6aWZfYzwKLSAgICAgIDo6bmRuYm9vc3Q6OmFsaWdubWVudF9vZjxuZG5ib29zdDo6ZGV0YWlsOjptYXhfYWxpZ24+Ojp2YWx1ZSA8IDMyLAotICAgICAgYWxpZ246OmEzMiwKLSAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnR5cGVfd2l0aF9hbGlnbm1lbnRfaW1wPDMyPiA+Ojp0eXBlIHQxOyAKLXB1YmxpYzogCi0gICB0eXBlZGVmIHQxOjp0eXBlIHR5cGU7Ci19OwotdGVtcGxhdGU8PiBjbGFzcyB0eXBlX3dpdGhfYWxpZ25tZW50PDY0PiB7Ci0gICB0eXBlZGVmIG1wbDo6aWZfYzwKLSAgICAgIDo6bmRuYm9vc3Q6OmFsaWdubWVudF9vZjxuZG5ib29zdDo6ZGV0YWlsOjptYXhfYWxpZ24+Ojp2YWx1ZSA8IDY0LAotICAgICAgYWxpZ246OmE2NCwKLSAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnR5cGVfd2l0aF9hbGlnbm1lbnRfaW1wPDY0PiA+Ojp0eXBlIHQxOyAKLXB1YmxpYzogCi0gICB0eXBlZGVmIHQxOjp0eXBlIHR5cGU7Ci19OwotdGVtcGxhdGU8PiBjbGFzcyB0eXBlX3dpdGhfYWxpZ25tZW50PDEyOD4gewotICAgdHlwZWRlZiBtcGw6OmlmX2M8Ci0gICAgICA6Om5kbmJvb3N0OjphbGlnbm1lbnRfb2Y8bmRuYm9vc3Q6OmRldGFpbDo6bWF4X2FsaWduPjo6dmFsdWUgPCAxMjgsCi0gICAgICBhbGlnbjo6YTEyOCwKLSAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OnR5cGVfd2l0aF9hbGlnbm1lbnRfaW1wPDEyOD4gPjo6dHlwZSB0MTsgCi1wdWJsaWM6IAotICAgdHlwZWRlZiB0MTo6dHlwZSB0eXBlOwotfTsKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX3BvZCw6Om5kbmJvb3N0OjphbGlnbjo6YTgsdHJ1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfcG9kLDo6bmRuYm9vc3Q6OmFsaWduOjphMTYsdHJ1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfcG9kLDo6bmRuYm9vc3Q6OmFsaWduOjphMzIsdHJ1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfcG9kLDo6bmRuYm9vc3Q6OmFsaWduOjphNjQsdHJ1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfcG9kLDo6bmRuYm9vc3Q6OmFsaWduOjphMTI4LHRydWUpCi19Ci0jZW5kaWYKLQotI2Vsc2UKLQotLy8KLS8vIEJvcmxhbmQgc3BlY2lmaWMgdmVyc2lvbiwgd2UgaGF2ZSB0aGlzIGZvciB0d28gcmVhc29uczoKLS8vIDEpIFRoZSB2ZXJzaW9uIGFib3ZlIGRvZXNuJ3QgYWx3YXlzIGNvbXBpbGUgKHdpdGggdGhlIG5ldyB0ZXN0IGNhc2VzIGZvciBleGFtcGxlKQotLy8gMikgQmVjYXVzZSBvZiBCb3JsYW5kcyAjcHJhZ21hIG9wdGlvbiB3ZSBjYW4gY3JlYXRlIHR5cGVzIHdpdGggYWxpZ25tZW50cyB0aGF0IGFyZQotLy8gICAgZ3JlYXRlciB0aGF0IHRoZSBsYXJnZXN0IGFsaWduZWQgYnVpbHRpbiB0eXBlLgotCi1uYW1lc3BhY2UgYWxpZ257Ci0jcHJhZ21hIG9wdGlvbiBwdXNoIC1hMTYKLXN0cnVjdCBhMnsgc2hvcnQgczsgfTsKLXN0cnVjdCBhNHsgaW50IHM7IH07Ci1zdHJ1Y3QgYTh7IGRvdWJsZSBzOyB9Owotc3RydWN0IGExNnsgbG9uZyBkb3VibGUgczsgfTsKLSNwcmFnbWEgb3B0aW9uIHBvcAotfQotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotdHlwZWRlZiA6Om5kbmJvb3N0OjphbGlnbjo6YTE2IG1heF9hbGlnbjsKLQotLy8jaWYgISBORE5CT09TVF9XT1JLQVJPVU5EKF9fQ09ERUdFQVJDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDYxMCkpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX3BvZCw6Om5kbmJvb3N0OjphbGlnbjo6YTIsdHJ1ZSkKLU5ETkJPT1NUX1RUX0FVWF9CT09MX1RSQUlUX0lNUExfU1BFQzEoaXNfcG9kLDo6bmRuYm9vc3Q6OmFsaWduOjphNCx0cnVlKQotTkROQk9PU1RfVFRfQVVYX0JPT0xfVFJBSVRfSU1QTF9TUEVDMShpc19wb2QsOjpuZG5ib29zdDo6YWxpZ246OmE4LHRydWUpCi1ORE5CT09TVF9UVF9BVVhfQk9PTF9UUkFJVF9JTVBMX1NQRUMxKGlzX3BvZCw6Om5kbmJvb3N0OjphbGlnbjo6YTE2LHRydWUpCi0vLyNlbmRpZgotfQotCi10ZW1wbGF0ZSA8c3RkOjpzaXplX3QgTj4gc3RydWN0IHR5cGVfd2l0aF9hbGlnbm1lbnQKLXsKLSAgIC8vIFdlIHNob3VsZCBuZXZlciBnZXQgdG8gaGVyZSwgYnV0IGlmIHdlIGRvIHVzZSB0aGUgbWF4aW1hbGx5Ci0gICAvLyBhbGlnbmVkIHR5cGU6Ci0gICAvLyBORE5CT09TVF9TVEFUSUNfQVNTRVJUKDApOwotICAgdHlwZWRlZiBhbGlnbjo6YTE2IHR5cGU7Ci19OwotdGVtcGxhdGUgPD4gc3RydWN0IHR5cGVfd2l0aF9hbGlnbm1lbnQ8MT57IHR5cGVkZWYgY2hhciB0eXBlOyB9OwotdGVtcGxhdGUgPD4gc3RydWN0IHR5cGVfd2l0aF9hbGlnbm1lbnQ8Mj57IHR5cGVkZWYgYWxpZ246OmEyIHR5cGU7IH07Ci10ZW1wbGF0ZSA8PiBzdHJ1Y3QgdHlwZV93aXRoX2FsaWdubWVudDw0PnsgdHlwZWRlZiBhbGlnbjo6YTQgdHlwZTsgfTsKLXRlbXBsYXRlIDw+IHN0cnVjdCB0eXBlX3dpdGhfYWxpZ25tZW50PDg+eyB0eXBlZGVmIGFsaWduOjphOCB0eXBlOyB9OwotdGVtcGxhdGUgPD4gc3RydWN0IHR5cGVfd2l0aF9hbGlnbm1lbnQ8MTY+eyB0eXBlZGVmIGFsaWduOjphMTYgdHlwZTsgfTsKLQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jICAgcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF91bmRlZi5ocHA+Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9UVF9UWVBFX1dJVEhfQUxJR05NRU5UX0lOQ0xVREVECi0KLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvZG1jL3R5cGVvZl9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL2RtYy90eXBlb2ZfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNiNDBmNzYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvZG1jL3R5cGVvZl9pbXBsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEwMCArMCwwIEBACi0vLyBDb3B5cmlnaHQgKEMpIDIwMDcgUGVkZXIgSG9sdAotCi0vLyBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCi0vLyBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9UWVBFT0ZfTVNWQ19UWVBFT0ZfSU1QTF9IUFBfSU5DTFVERUQKLSMgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9NU1ZDX1RZUEVPRl9JTVBMX0hQUF9JTkNMVURFRAotCi0jIGluY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLSMgaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2ludC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotICAgIG5hbWVzcGFjZSB0eXBlX29mCi0gICAgewotCi0gICAgICAgIHRlbXBsYXRlPGludCBOPiBzdHJ1Y3QgZW5jb2RlX2NvdW50ZXIgOiBlbmNvZGVfY291bnRlcjxOIC0gMT4ge307Ci0gICAgICAgIHRlbXBsYXRlPD4gc3RydWN0IGVuY29kZV9jb3VudGVyPDA+IHt9OwotCi0gICAgICAgIGNoYXIgKCplbmNvZGVfaW5kZXgoLi4uKSlbMV07Ci0KLSMgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9JTkRFWChUKSAoc2l6ZW9mKCpuZG5ib29zdDo6dHlwZV9vZjo6ZW5jb2RlX2luZGV4KChuZG5ib29zdDo6dHlwZV9vZjo6ZW5jb2RlX2NvdW50ZXI8MTAwMD4qKTApKSkKLSMgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9ORVhUX0lOREVYKG5leHQpIGZyaWVuZCBjaGFyICgqZW5jb2RlX2luZGV4KGVuY29kZV9jb3VudGVyPG5leHQ+KikpW25leHRdOwotCi0KLSAgICAgICAgLy9UeXBlb2YgY29kZQotCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIElEPgotICAgICAgICBzdHJ1Y3QgbXN2Y19leHRyYWN0X3R5cGUKLSAgICAgICAgewotICAgICAgICAgICAgc3RydWN0IGlkMnR5cGU7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgSUQ+Ci0gICAgICAgIHN0cnVjdCBtc3ZjX3JlZ2lzdGVyX3R5cGUgOiBtc3ZjX2V4dHJhY3RfdHlwZTxJRD4KLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiBtc3ZjX2V4dHJhY3RfdHlwZTxJRD4gYmFzZV90eXBlOwotICAgICAgICAgICAgc3RydWN0IGJhc2VfdHlwZTo6aWQydHlwZSAvLyBUaGlzIHVzZXMgbmljZSBWQzYuNSBhbmQgVkM3LjEgYnVnZmVhdHVyZSwgYWxzbyB3b3JrcyBmb3IgRGlnaXRhbCBNYXJzCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICB9OwotCi0KLSAgICAgICAgdGVtcGxhdGU8aW50IElEPgotICAgICAgICBzdHJ1Y3QgbXN2Y190eXBlaWRfd3JhcHBlciB7Ci0gICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1zdmNfZXh0cmFjdF90eXBlPG1wbDo6aW50XzxJRD4gPjo6aWQydHlwZSBpZDJ0eXBlOwotICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZDJ0eXBlOjp0eXBlIHR5cGU7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgLy9UaWUgaXQgYWxsIHRvZ2V0aGVyCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgIHN0cnVjdCBlbmNvZGVfdHlwZQotICAgICAgICB7Ci0gICAgICAgICAgICAvL0dldCB0aGUgbmV4dCBhdmFpbGFibGUgY29tcGlsZSB0aW1lIGNvbnN0YW50cyBpbmRleAotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLHZhbHVlPU5ETkJPT1NUX1RZUEVPRl9JTkRFWChUKSk7Ci0gICAgICAgICAgICAvL0luc3RhbnRpYXRlIHRoZSB0ZW1wbGF0ZQotICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtc3ZjX3JlZ2lzdGVyX3R5cGU8VCxtcGw6OmludF88dmFsdWU+ID46OmlkMnR5cGUgdHlwZTsKLSAgICAgICAgICAgIC8vU2V0IHRoZSBuZXh0IGNvbXBpbGUgdGltZSBjb25zdGFudHMgaW5kZXgKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCxuZXh0PXZhbHVlKzEpOwotICAgICAgICAgICAgLy9JbmNyZW1lbnQgdGhlIGNvbXBpbGUgdGltZSBjb25zdGFudCAob25seSBuZWVkZWQgd2hlbiBleHRlbnNpb25zIGFyZSBub3QgYWN0aXZlCi0gICAgICAgICAgICBORE5CT09TVF9UWVBFT0ZfTkVYVF9JTkRFWChuZXh0KTsKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBUPgotICAgICAgICBzdHJ1Y3Qgc2l6ZXIKLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiBjaGFyKCp0eXBlKVtlbmNvZGVfdHlwZTxUPjo6dmFsdWVdOwotICAgICAgICB9OwotCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgICAgICB0eXBlbmFtZSBzaXplcjxUPjo6dHlwZSBlbmNvZGVfc3RhcnQoVCBjb25zdCYpOwotCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIE9yZ2FuaXplciwgdHlwZW5hbWUgVD4KLSAgICAgICAgbXN2Y19yZWdpc3Rlcl90eXBlPFQsT3JnYW5pemVyPiB0eXBlb2ZfcmVnaXN0ZXJfdHlwZShjb25zdCBUJixPcmdhbml6ZXIqID0wKTsKLQotIyBkZWZpbmUgTkROQk9PU1RfVFlQRU9GKGV4cHIpIFwKLSAgICBuZG5ib29zdDo6dHlwZV9vZjo6bXN2Y190eXBlaWRfd3JhcHBlcjxzaXplb2YoKm5kbmJvb3N0Ojp0eXBlX29mOjplbmNvZGVfc3RhcnQoZXhwcikpPjo6dHlwZQotCi0jIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfVFBMKGV4cHIpIHR5cGVuYW1lIE5ETkJPT1NUX1RZUEVPRihleHByKQotCi0jIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfTkVTVEVEX1RZUEVERUZfVFBMKG5hbWUsZXhwcikgXAotICAgIHN0cnVjdCBuYW1lIHtcCi0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsX3R5cGVvZl9yZWdpc3Rlcl92YWx1ZT1zaXplb2YobmRuYm9vc3Q6OnR5cGVfb2Y6OnR5cGVvZl9yZWdpc3Rlcl90eXBlPG5hbWU+KGV4cHIpKSk7XAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0Ojp0eXBlX29mOjptc3ZjX2V4dHJhY3RfdHlwZTxuYW1lPjo6aWQydHlwZSBpZDJ0eXBlO1wKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBpZDJ0eXBlOjp0eXBlIHR5cGU7XAotICAgIH07Ci0KLSMgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9ORVNURURfVFlQRURFRihuYW1lLGV4cHIpIFwKLSAgICBzdHJ1Y3QgbmFtZSB7XAotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LF90eXBlb2ZfcmVnaXN0ZXJfdmFsdWU9c2l6ZW9mKG5kbmJvb3N0Ojp0eXBlX29mOjp0eXBlb2ZfcmVnaXN0ZXJfdHlwZTxuYW1lPihleHByKSkpO1wKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6bXN2Y19leHRyYWN0X3R5cGU8bmFtZT46OmlkMnR5cGUgaWQydHlwZTtcCi0gICAgICAgIHR5cGVkZWYgaWQydHlwZTo6dHlwZSB0eXBlO1wKLSAgICB9OwotCi0gICAgfQotfQotCi0jZW5kaWYvL05ETkJPT1NUX1RZUEVPRl9NU1ZDX1RZUEVPRl9JTVBMX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvZW5jb2RlX2RlY29kZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi9lbmNvZGVfZGVjb2RlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDVhMTE2MC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi9lbmNvZGVfZGVjb2RlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAwNCBBcmthZGl5IFZlcnRsZXliCi0KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyBib29zdGluc3BlY3Q6bm91bm5hbWVkCi0KLSNpZm5kZWYgTkROQk9PU1RfVFlQRU9GX0VOQ09ERV9ERUNPREVfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9FTkNPREVfREVDT0RFX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2RlcmVmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvbmV4dC5ocHA+Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFlQRU9GX1NVUFBSRVNTX1VOTkFNRURfTkFNRVNQQUNFCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX0JFR0lOX0VOQ09ERV9OUyBuYW1lc3BhY2UgeyBuYW1lc3BhY2UgbmRuYm9vc3RfdHlwZW9mIHsKLSMgICBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX0VORF9FTkNPREVfTlMgfX0KLSMgICBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX0VOQ09ERV9OU19RVUFMSUZJRVIgbmRuYm9vc3RfdHlwZW9mCi0KLSNlbHNlCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX0JFR0lOX0VOQ09ERV9OUyBuYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgdHlwZV9vZiB7Ci0jICAgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9FTkRfRU5DT0RFX05TIH19Ci0jICAgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9FTkNPREVfTlNfUVVBTElGSUVSIG5kbmJvb3N0Ojp0eXBlX29mCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1RFWFQgInVubmFtZWQgbmFtZXNwYWNlIGlzIG9mZiIKLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlb2YvbWVzc2FnZS5ocHA+Ci0KLSNlbmRpZgotCi1ORE5CT09TVF9UWVBFT0ZfQkVHSU5fRU5DT0RFX05TCi0KLXRlbXBsYXRlPGNsYXNzIFYsIGNsYXNzIFR5cGVfTm90X1JlZ2lzdGVyZWRfV2l0aF9UeXBlb2ZfU3lzdGVtPgotc3RydWN0IGVuY29kZV90eXBlX2ltcGw7Ci0KLXRlbXBsYXRlPGNsYXNzIFQsIGNsYXNzIEl0ZXI+Ci1zdHJ1Y3QgZGVjb2RlX3R5cGVfaW1wbAotewotICAgIHR5cGVkZWYgaW50IHR5cGU7ICAvLyBNU1ZDIEVUSSB3b3JrYXJvdW5kCi19OwotCi10ZW1wbGF0ZTxjbGFzcyBUPgotc3RydWN0IGRlY29kZV9uZXN0ZWRfdGVtcGxhdGVfaGVscGVyX2ltcGw7Ci0KLU5ETkJPT1NUX1RZUEVPRl9FTkRfRU5DT0RFX05TCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSB0eXBlX29mIHsKLQotICAgIHRlbXBsYXRlPGNsYXNzIFYsIGNsYXNzIFQ+Ci0gICAgc3RydWN0IGVuY29kZV90eXBlIDogTkROQk9PU1RfVFlQRU9GX0VOQ09ERV9OU19RVUFMSUZJRVI6OmVuY29kZV90eXBlX2ltcGw8ViwgVD4KLSAgICB7fTsKLQotICAgIHRlbXBsYXRlPGNsYXNzIEl0ZXI+Ci0gICAgc3RydWN0IGRlY29kZV90eXBlIDogTkROQk9PU1RfVFlQRU9GX0VOQ09ERV9OU19RVUFMSUZJRVI6OmRlY29kZV90eXBlX2ltcGw8Ci0gICAgICAgIHR5cGVuYW1lIEl0ZXI6OnR5cGUsCi0gICAgICAgIHR5cGVuYW1lIEl0ZXI6Om5leHQKLSAgICA+Ci0gICAge307Ci19fQotCi0jZW5kaWYvL05ETkJPT1NUX1RZUEVPRl9FTkNPREVfREVDT0RFX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvZW5jb2RlX2RlY29kZV9wYXJhbXMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvZW5jb2RlX2RlY29kZV9wYXJhbXMuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MjJiNDc2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL2VuY29kZV9kZWNvZGVfcGFyYW1zLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAwNSBBcmthZGl5IFZlcnRsZXliCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9UWVBFT0ZfRU5DT0RFX0RFQ09ERV9QQVJBTVNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9FTkNPREVfREVDT0RFX1BBUkFNU19IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL3JlcGVhdC5ocHA+Ci0KLS8vIEFzc3VtZXMgaXRlcjAgY29udGFpbnMgaW5pdGlhbCBpdGVyYXRvcgotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9ERUNPREVfUEFSQU0oeiwgbiwgdGV4dCkgICBcCi0gICAgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6ZGVjb2RlX3R5cGU8aXRlciMjbj4gZGVjb2RlIyNuOyAgICAgXAotICAgIHR5cGVkZWYgdHlwZW5hbWUgZGVjb2RlIyNuOjp0eXBlIHAjI247ICAgICAgXAotICAgIHR5cGVkZWYgdHlwZW5hbWUgZGVjb2RlIyNuOjppdGVyIE5ETkJPT1NUX1BQX0NBVChpdGVyLCBORE5CT09TVF9QUF9JTkMobikpOwotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9ERUNPREVfUEFSQU1TKG4pXAotICAgIE5ETkJPT1NUX1BQX1JFUEVBVChuLCBORE5CT09TVF9UWVBFT0ZfREVDT0RFX1BBUkFNLCB+KQotCi0vLyBUaGUgUDAsIFAxLCAuLi4gUE4gYXJlIGVuY29kZWQgYW5kIGFkZGVkIHRvIFYgCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX0VOQ09ERV9QQVJBTVNfQkVHSU4oeiwgbiwgdGV4dClcCi0gICAgdHlwZW5hbWUgbmRuYm9vc3Q6OnR5cGVfb2Y6OmVuY29kZV90eXBlPAotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9FTkNPREVfUEFSQU1TX0VORCh6LCBuLCB0ZXh0KVwKLSAgICAsIE5ETkJPT1NUX1BQX0NBVChQLCBuKT46OnR5cGUKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfRU5DT0RFX1BBUkFNUyhuLCBJRCkgICAgICAgICAgICAgICAgICAgXAotICAgIE5ETkJPT1NUX1BQX1JFUEVBVChuLCBORE5CT09TVF9UWVBFT0ZfRU5DT0RFX1BBUkFNU19CRUdJTiwgfikgXAotICAgIHR5cGVuYW1lIG5kbmJvb3N0Ojp0eXBlX29mOjpwdXNoX2JhY2s8ViwgbmRuYm9vc3Q6Om1wbDo6c2l6ZV90PElEPiA+Ojp0eXBlICAgICAgXAotICAgIE5ETkJPT1NUX1BQX1JFUEVBVChuLCBORE5CT09TVF9UWVBFT0ZfRU5DT0RFX1BBUkFNU19FTkQsIH4pCi0KLSNlbmRpZi8vTkROQk9PU1RfVFlQRU9GX0VOQ09ERV9ERUNPREVfUEFSQU1TX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvaW50X2VuY29kaW5nLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL2ludF9lbmNvZGluZy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzNzI3N2MuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvaW50X2VuY29kaW5nLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExOCArMCwwIEBACi0vLyBDb3B5cmlnaHQgKEMpIDIwMDQgQXJrYWRpeSBWZXJ0bGV5YgotLy8gVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZQotLy8gTGljZW5zZSwgVmVyc2lvbiAxLjAuIChodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpZm5kZWYgTkROQk9PU1RfVFlQRU9GX0lOVF9FTkNPRElOR19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX0lOVF9FTkNPRElOR19IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL3NpemVfdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIHR5cGVfb2YgewotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IGdldF91bnNpZ25lZAotICAgIHsKLSAgICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgfTsKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBnZXRfdW5zaWduZWQ8c2lnbmVkIGNoYXI+Ci0gICAgewotICAgICAgICB0eXBlZGVmIHVuc2lnbmVkIGNoYXIgdHlwZTsKLSAgICB9OwotICAgIHRlbXBsYXRlPD4gc3RydWN0IGdldF91bnNpZ25lZDxjaGFyPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHR5cGU7Ci0gICAgfTsKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBnZXRfdW5zaWduZWQ8c2hvcnQ+Ci0gICAgewotICAgICAgICB0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHR5cGU7Ci0gICAgfTsKLSAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBnZXRfdW5zaWduZWQ8aW50PgotICAgIHsKLSAgICAgICAgdHlwZWRlZiB1bnNpZ25lZCBpbnQgdHlwZTsKLSAgICB9OwotICAgIHRlbXBsYXRlPD4gc3RydWN0IGdldF91bnNpZ25lZDxsb25nPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiB1bnNpZ25lZCBsb25nIHR5cGU7Ci0gICAgfTsKLQotICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLSAgICB0ZW1wbGF0ZTxzdGQ6OnNpemVfdCBuLCBib29sIE92ZXJmbG93PgotICAgIHN0cnVjdCBwYWNrCi0gICAgewotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc3RkOjpzaXplX3QgLCB2YWx1ZT0oKG4gKyAxKSAqIDIgKyAoT3ZlcmZsb3cgPyAxIDogMCkpKTsKLSAgICB9OwotCi0gICAgdGVtcGxhdGU8c3RkOjpzaXplX3QgbT4KLSAgICBzdHJ1Y3QgdW5wYWNrCi0gICAgewotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc3RkOjpzaXplX3QsIHZhbHVlID0gKG0gLyAyKSAtIDEpOwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc3RkOjpzaXplX3QsIG92ZXJmbG93ID0gKG0gJSAyID09IDEpKTsKLSAgICB9OwotCi0gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotICAgIHRlbXBsYXRlPGNsYXNzIFYsIHN0ZDo6c2l6ZV90IG4sIGJvb2wgb3ZlcmZsb3cgPSAobiA+PSAweDNmZmZmZmZmKT4KLSAgICBzdHJ1Y3QgZW5jb2RlX3NpemVfdCA6IHB1c2hfYmFjazwKLSAgICAgICAgViwKLSAgICAgICAgbmRuYm9vc3Q6Om1wbDo6c2l6ZV90PHBhY2s8biwgZmFsc2U+Ojp2YWx1ZT4KLSAgICA+Ci0gICAge307Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBWLCBzdGQ6OnNpemVfdCBuPgotICAgIHN0cnVjdCBlbmNvZGVfc2l6ZV90PFYsIG4sIHRydWU+IDogcHVzaF9iYWNrPHR5cGVuYW1lIHB1c2hfYmFjazwKLSAgICAgICAgViwKLSAgICAgICAgbmRuYm9vc3Q6Om1wbDo6c2l6ZV90PHBhY2s8biAlIDB4M2ZmZmZmZmUsIHRydWU+Ojp2YWx1ZT4gPjo6dHlwZSwKLSAgICAgICAgbmRuYm9vc3Q6Om1wbDo6c2l6ZV90PG4gLyAweDNmZmZmZmZlPgotICAgID4KLSAgICB7fTsKLQotICAgIHRlbXBsYXRlPGNsYXNzIFYsIGNsYXNzIFQsIFQgbj4KLSAgICBzdHJ1Y3QgZW5jb2RlX2ludGVncmFsIDogZW5jb2RlX3NpemVfdDwgViwgKHR5cGVuYW1lIGdldF91bnNpZ25lZDxUPjo6dHlwZSluLCgoKHR5cGVuYW1lIGdldF91bnNpZ25lZDxUPjo6dHlwZSluKT49MHgzZmZmZmZmZikgPgotICAgIHt9OwotCi0gICAgdGVtcGxhdGU8Y2xhc3MgViwgYm9vbCBiPgotICAgIHN0cnVjdCBlbmNvZGVfaW50ZWdyYWw8ViwgYm9vbCwgYj4gOiBlbmNvZGVfc2l6ZV90PCBWLCBiPzE6MCwgZmFsc2U+Ci0gICAge307Ci0gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLSAgICB0ZW1wbGF0ZTxzdGQ6OnNpemVfdCBuLCBjbGFzcyBJdGVyLCBib29sIG92ZXJmbG93PgotICAgIHN0cnVjdCBkZWNvZGVfc2l6ZV90OwotCi0gICAgdGVtcGxhdGU8c3RkOjpzaXplX3QgbiwgY2xhc3MgSXRlcj4KLSAgICBzdHJ1Y3QgZGVjb2RlX3NpemVfdDxuLCBJdGVyLCBmYWxzZT4KLSAgICB7Ci0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzdGQ6OnNpemVfdCx2YWx1ZSA9IG4pOwotICAgICAgICB0eXBlZGVmIEl0ZXIgaXRlcjsKLSAgICB9OwotCi0gICAgdGVtcGxhdGU8c3RkOjpzaXplX3QgbiwgY2xhc3MgSXRlcj4KLSAgICBzdHJ1Y3QgZGVjb2RlX3NpemVfdDxuLCBJdGVyLCB0cnVlPgotICAgIHsKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHN0ZDo6c2l6ZV90LG0gPSBJdGVyOjp0eXBlOjp2YWx1ZSk7Ci0KLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHN0ZDo6c2l6ZV90LHZhbHVlID0gKHN0ZDo6c2l6ZV90KW0gKiAweDNmZmZmZmZlICsgbik7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgSXRlcjo6bmV4dCBpdGVyOwotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBULCBjbGFzcyBJdGVyPgotICAgIHN0cnVjdCBkZWNvZGVfaW50ZWdyYWwKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgZGVjb2RlX2ludGVncmFsPFQsSXRlcj4gc2VsZl90OwotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc3RkOjpzaXplX3QsbSA9IEl0ZXI6OnR5cGU6OnZhbHVlKTsKLQotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoc3RkOjpzaXplX3QsbiA9IHVucGFjazxtPjo6dmFsdWUpOwotCi0gICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChzdGQ6OnNpemVfdCxvdmVyZmxvdyA9IHVucGFjazxtPjo6b3ZlcmZsb3cpOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgSXRlcjo6bmV4dCBuZXh0cG9zOwotCi0gICAgICAgIHN0YXRpYyBjb25zdCBUIHZhbHVlID0gKFQpKHN0ZDo6c2l6ZV90KWRlY29kZV9zaXplX3Q8biwgbmV4dHBvcywgb3ZlcmZsb3c+Ojp2YWx1ZTsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGRlY29kZV9zaXplX3Q8c2VsZl90OjpuLCBuZXh0cG9zLCBzZWxmX3Q6Om92ZXJmbG93Pjo6aXRlciBpdGVyOwotICAgIH07Ci0KLX19Ly9uYW1lc3BhY2UKLQotI2VuZGlmLy9ORE5CT09TVF9UWVBFT0ZfSU5UX0VOQ09ESU5HX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvaW50ZWdyYWxfdGVtcGxhdGVfcGFyYW0uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvaW50ZWdyYWxfdGVtcGxhdGVfcGFyYW0uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZTQxOGYzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL2ludGVncmFsX3RlbXBsYXRlX3BhcmFtLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDgwICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAwNSBBcmthZGl5IFZlcnRsZXliCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9UWVBFT0ZfSU5URUdSQUxfVEVNUExBVEVfUEFSQU1fSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9JTlRFR1JBTF9URU1QTEFURV9QQVJBTV9IUFBfSU5DTFVERUQKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfdW5zaWduZWQgKHVuc2lnbmVkKQotI2RlZmluZSBORE5CT09TVF9UWVBFT0Zfc2lnbmVkIChzaWduZWQpCi0KLSNkZWZpbmUgY2hhcl9ORE5CT09TVF9UWVBFT0YgKGNoYXIpCi0jZGVmaW5lIHNob3J0X05ETkJPT1NUX1RZUEVPRiAoc2hvcnQpCi0jZGVmaW5lIGludF9ORE5CT09TVF9UWVBFT0YgKGludCkKLSNkZWZpbmUgbG9uZ19ORE5CT09TVF9UWVBFT0YgKGxvbmcpCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX2NoYXJfTkROQk9PU1RfVFlQRU9GIChjaGFyKQotI2RlZmluZSBORE5CT09TVF9UWVBFT0Zfc2hvcnRfTkROQk9PU1RfVFlQRU9GIChzaG9ydCkKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX2ludF9ORE5CT09TVF9UWVBFT0YgKGludCkKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX2xvbmdfTkROQk9PU1RfVFlQRU9GIChsb25nKQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfYm9vbF9ORE5CT09TVF9UWVBFT0YgKGJvb2wpCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl91bnNpZ25lZF9ORE5CT09TVF9UWVBFT0YgKHVuc2lnbmVkKQotI2RlZmluZSBORE5CT09TVF9UWVBFT0Zfc2l6ZV90X05ETkJPT1NUX1RZUEVPRiAoc2l6ZV90KQotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9NQUtFX09CSl9jaGFyICAgICAgICAgIE5ETkJPT1NUX1RZUEVPRl9JTlRFR1JBTF9QQVJBTShjaGFyKQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfTUFLRV9PQkpfc2hvcnQgICAgICAgICBORE5CT09TVF9UWVBFT0ZfSU5URUdSQUxfUEFSQU0oc2hvcnQpCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9NQUtFX09CSl9pbnQgICAgICAgICAgIE5ETkJPT1NUX1RZUEVPRl9JTlRFR1JBTF9QQVJBTShpbnQpCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9NQUtFX09CSl9sb25nICAgICAgICAgIE5ETkJPT1NUX1RZUEVPRl9JTlRFR1JBTF9QQVJBTShsb25nKQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfTUFLRV9PQkpfYm9vbCAgICAgICAgICBORE5CT09TVF9UWVBFT0ZfSU5URUdSQUxfUEFSQU0oYm9vbCkKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX01BS0VfT0JKX3Vuc2lnbmVkICAgICAgTkROQk9PU1RfVFlQRU9GX0lOVEVHUkFMX1BBUkFNKHVuc2lnbmVkKQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfTUFLRV9PQkpfc2l6ZV90ICAgICAgICBORE5CT09TVF9UWVBFT0ZfSU5URUdSQUxfUEFSQU0oc2l6ZV90KQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfTUFLRV9PQkpfdW5zaWduZWRjaGFyICBORE5CT09TVF9UWVBFT0ZfSU5URUdSQUxfUEFSQU0odW5zaWduZWQgY2hhcikKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX01BS0VfT0JKX3Vuc2lnbmVkc2hvcnQgTkROQk9PU1RfVFlQRU9GX0lOVEVHUkFMX1BBUkFNKHVuc2lnbmVkIHNob3J0KQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfTUFLRV9PQkpfdW5zaWduZWRpbnQgICBORE5CT09TVF9UWVBFT0ZfSU5URUdSQUxfUEFSQU0odW5zaWduZWQgaW50KQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfTUFLRV9PQkpfdW5zaWduZWRsb25nICBORE5CT09TVF9UWVBFT0ZfSU5URUdSQUxfUEFSQU0odW5zaWduZWQgbG9uZykKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX01BS0VfT0JKX3NpZ25lZGNoYXIgICAgTkROQk9PU1RfVFlQRU9GX0lOVEVHUkFMX1BBUkFNKHNpZ25lZCBjaGFyKQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfTUFLRV9PQkpfc2lnbmVkc2hvcnQgICBORE5CT09TVF9UWVBFT0ZfSU5URUdSQUxfUEFSQU0oc2lnbmVkIHNob3J0KQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfTUFLRV9PQkpfc2lnbmVkaW50ICAgICBORE5CT09TVF9UWVBFT0ZfSU5URUdSQUxfUEFSQU0oc2lnbmVkIGludCkKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX01BS0VfT0JKX3NpZ25lZGxvbmcgICAgTkROQk9PU1RfVFlQRU9GX0lOVEVHUkFMX1BBUkFNKHNpZ25lZCBsb25nKQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfTUFLRV9PQkpfaW50ZWdyYWwoeCkgICBORE5CT09TVF9UWVBFT0ZfSU5URUdSQUxfUEFSQU0oeCkKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfSU5URUdSQUwoWCkgaW50ZWdyYWwoWCkgTkROQk9PU1RfVFlQRU9GX0VBVAotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfRUFUX05ETkJPT1NUX1RZUEVPRgotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfaW50ZWdyYWwoWCkgKGludGVncmFsKFgpKQotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9JTlRFR1JBTF9QQVJBTShUeXBlKVwKLSAgICAoSU5URUdSQUxfUEFSQU0pXAotICAgIChUeXBlKQotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9JTlRFR1JBTF9QQVJBTV9HRVRUWVBFKFBhcmFtKVwKLSAgICBORE5CT09TVF9QUF9TRVFfRUxFTSgxLCBQYXJhbSkKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfSU5URUdSQUxfUEFSQU1fRVhQQU5EVFlQRShQYXJhbSlcCi0gICAgTkROQk9PU1RfVFlQRU9GX0lOVEVHUkFMX1BBUkFNX0dFVFRZUEUoUGFyYW0pCi0KLS8vIElOVEVHUkFMX1BBUkFNICJ2aXJ0dWFsIGZ1bmN0aW9ucyIgaW1wbGVtZW50YXRpb24KLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfSU5URUdSQUxfUEFSQU1fRU5DT0RFKFRoaXMsIG4pXAotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OnR5cGVfb2Y6OmVuY29kZV9pbnRlZ3JhbDxcCi0gICAgICAgIE5ETkJPT1NUX1BQX0NBVChWLCBuKSxcCi0gICAgICAgIE5ETkJPT1NUX1RZUEVPRl9JTlRFR1JBTF9QQVJBTV9HRVRUWVBFKFRoaXMpLFwKLSAgICAgICAgTkROQk9PU1RfUFBfQ0FUKFAsIG4pXAotICAgID46OnR5cGUgTkROQk9PU1RfUFBfQ0FUKFYsIE5ETkJPT1NUX1BQX0lOQyhuKSk7IAotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9JTlRFR1JBTF9QQVJBTV9ERUNPREUoVGhpcywgbilcCi0gICAgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6ZGVjb2RlX2ludGVncmFsPE5ETkJPT1NUX1RZUEVPRl9JTlRFR1JBTF9QQVJBTV9HRVRUWVBFKFRoaXMpLCBORE5CT09TVF9QUF9DQVQoaXRlciwgbik+IE5ETkJPT1NUX1BQX0NBVChkLCBuKTtcCi0gICAgc3RhdGljIGNvbnN0IE5ETkJPT1NUX1RZUEVPRl9JTlRFR1JBTF9QQVJBTV9HRVRUWVBFKFRoaXMpIE5ETkJPT1NUX1BQX0NBVChQLCBuKSA9IE5ETkJPT1NUX1BQX0NBVChkLCBuKTo6dmFsdWU7XAotICAgIHR5cGVkZWYgdHlwZW5hbWUgTkROQk9PU1RfUFBfQ0FUKGQsIG4pOjppdGVyIE5ETkJPT1NUX1BQX0NBVChpdGVyLCBORE5CT09TVF9QUF9JTkMobikpOwotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9JTlRFR1JBTF9QQVJBTV9QTEFDRUhPTERFUihQYXJhbSlcCi0gICAgKE5ETkJPT1NUX1RZUEVPRl9JTlRFR1JBTF9QQVJBTV9HRVRUWVBFKFBhcmFtKSkwCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX0lOVEVHUkFMX1BBUkFNX0RFQ0xBUkFUSU9OX1RZUEUoUGFyYW0pXAotICAgIE5ETkJPT1NUX1RZUEVPRl9JTlRFR1JBTF9QQVJBTV9HRVRUWVBFKFBhcmFtKQotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9JTlRFR1JBTF9QQVJBTV9QTEFDRUhPTERFUl9UWVBFUyhQYXJhbSwgbilcCi0gICAgTkROQk9PU1RfUFBfQ0FUKFQsbikKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfSU5URUdSQUxfUEFSQU1fSVNURU1QTEFURSAwCi0KLSNlbmRpZi8vTkROQk9PU1RfVFlQRU9GX0lOVEVHUkFMX1RFTVBMQVRFX1BBUkFNX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvbWVzc2FnZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi9tZXNzYWdlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTQ3ODY4Zi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi9tZXNzYWdlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDA1IEFya2FkaXkgVmVydGxleWIKLS8vIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLS8vIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgZGVmaW5lZCBORE5CT09TVF9UWVBFT0ZfTUVTU0FHRVMKLSMgICAgcHJhZ21hIG1lc3NhZ2UoTkROQk9PU1RfVFlQRU9GX1RFWFQpCi0jZW5kaWYKLSN1bmRlZiBORE5CT09TVF9UWVBFT0ZfVEVYVApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvbW9kaWZpZXJzLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL21vZGlmaWVycy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI5ODViNmIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvbW9kaWZpZXJzLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyMSArMCwwIEBACi0vLyBDb3B5cmlnaHQgKEMpIDIwMDQgQXJrYWRpeSBWZXJ0bGV5YgotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpZm5kZWYgTkROQk9PU1RfVFlQRU9GX01PRElGSUVSU19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX01PRElGSUVSU19IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVvZi9lbmNvZGVfZGVjb2RlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZmFjaWxpdGllcy9pZGVudGl0eS5ocHA+Ci0KLSNpbmNsdWRlIE5ETkJPT1NUX1RZUEVPRl9JTkNSRU1FTlRfUkVHSVNUUkFUSU9OX0dST1VQKCkKLQotLy8gbW9kaWZpZXJzCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX21vZGlmaWVyX3N1cHBvcnQoSUQsIEZ1bilcCi0gICAgdGVtcGxhdGU8Y2xhc3MgViwgY2xhc3MgVD4gc3RydWN0IGVuY29kZV90eXBlX2ltcGw8ViwgRnVuKFQpPlwKLSAgICB7XAotICAgICAgICB0eXBlZGVmXAotICAgICAgICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OnR5cGVfb2Y6OmVuY29kZV90eXBlPFwKLSAgICAgICAgICAgIHR5cGVuYW1lIG5kbmJvb3N0Ojp0eXBlX29mOjpwdXNoX2JhY2s8XAotICAgICAgICAgICAgVlwKLSAgICAgICAgICAgICwgbmRuYm9vc3Q6Om1wbDo6c2l6ZV90PElEPiA+Ojp0eXBlXAotICAgICAgICAgICAgLCBUPjo6dHlwZVwKLSAgICAgICAgICAgIHR5cGU7XAotICAgIH07XAotICAgIHRlbXBsYXRlPGNsYXNzIEl0ZXI+IHN0cnVjdCBkZWNvZGVfdHlwZV9pbXBsPG5kbmJvb3N0OjptcGw6OnNpemVfdDxJRD4sIEl0ZXI+XAotICAgIHtcCi0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OmRlY29kZV90eXBlPEl0ZXI+IGQxO1wKLSAgICAgICAgdHlwZWRlZiBGdW4odHlwZW5hbWUgZDE6OnR5cGUpIHR5cGU7XAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGQxOjppdGVyIGl0ZXI7XAotICAgIH0KLQotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9jb25zdF9mdW4oVCkgY29uc3QgVAotI2RlZmluZSBORE5CT09TVF9UWVBFT0Zfdm9sYXRpbGVfZnVuKFQpIHZvbGF0aWxlIFQKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX3ZvbGF0aWxlX2NvbnN0X2Z1bihUKSB2b2xhdGlsZSBjb25zdCBUCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9wb2ludGVyX2Z1bihUKSBUKgotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfcmVmZXJlbmNlX2Z1bihUKSBUJgotCi0jaWYgZGVmaW5lZChfX0JPUkxBTkRDX18pICYmIChfX0JPUkxBTkRDX18gPCAweDYwMCkKLS8vQm9ybGFuZCBpbmNvcnJlY3RseSBoYW5kbGVzIFQgY29uc3QsIFQgY29uc3Qgdm9sYXRpbGUgYW5kIFQgdm9sYXRpbGUuCi0vL0l0IGRyb3BzIHRoZSBkZWNvcmF0aW9uIG5vIG1hdHRlciB3aGF0LCBzbyB3ZSBuZWVkIHRvIHRyeSB0byBoYW5kbGUgVCogY29uc3QgZXRjLiB3aXRob3V0IGxvb3NpbmcgdGhlIHRvcCBtb2RpZmllci4KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX2NvbnN0X3BvaW50ZXJfZnVuKFQpIFQgY29uc3QgKgotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfY29uc3RfcmVmZXJlbmNlX2Z1bihUKSBUIGNvbnN0ICYKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX3ZvbGF0aWxlX3BvaW50ZXJfZnVuKFQpIFQgdm9sYXRpbGUqCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl92b2xhdGlsZV9yZWZlcmVuY2VfZnVuKFQpIFQgdm9sYXRpbGUmCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl92b2xhdGlsZV9jb25zdF9wb2ludGVyX2Z1bihUKSBUIHZvbGF0aWxlIGNvbnN0ICoKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX3ZvbGF0aWxlX2NvbnN0X3JlZmVyZW5jZV9mdW4oVCkgVCB2b2xhdGlsZSBjb25zdCAmCi0jZW5kaWYKLQotTkROQk9PU1RfVFlQRU9GX0JFR0lOX0VOQ09ERV9OUwotCi1ORE5CT09TVF9UWVBFT0ZfbW9kaWZpZXJfc3VwcG9ydChORE5CT09TVF9UWVBFT0ZfVU5JUVVFX0lEKCksIE5ETkJPT1NUX1RZUEVPRl9jb25zdF9mdW4pOwotTkROQk9PU1RfVFlQRU9GX21vZGlmaWVyX3N1cHBvcnQoTkROQk9PU1RfVFlQRU9GX1VOSVFVRV9JRCgpLCBORE5CT09TVF9UWVBFT0Zfdm9sYXRpbGVfZnVuKTsKLU5ETkJPT1NUX1RZUEVPRl9tb2RpZmllcl9zdXBwb3J0KE5ETkJPT1NUX1RZUEVPRl9VTklRVUVfSUQoKSwgTkROQk9PU1RfVFlQRU9GX3ZvbGF0aWxlX2NvbnN0X2Z1bik7Ci1ORE5CT09TVF9UWVBFT0ZfbW9kaWZpZXJfc3VwcG9ydChORE5CT09TVF9UWVBFT0ZfVU5JUVVFX0lEKCksIE5ETkJPT1NUX1RZUEVPRl9wb2ludGVyX2Z1bik7Ci1ORE5CT09TVF9UWVBFT0ZfbW9kaWZpZXJfc3VwcG9ydChORE5CT09TVF9UWVBFT0ZfVU5JUVVFX0lEKCksIE5ETkJPT1NUX1RZUEVPRl9yZWZlcmVuY2VfZnVuKTsKLQotI2lmIGRlZmluZWQoX19CT1JMQU5EQ19fKSAmJiAoX19CT1JMQU5EQ19fIDwgMHg2MDApCi1ORE5CT09TVF9UWVBFT0ZfbW9kaWZpZXJfc3VwcG9ydChORE5CT09TVF9UWVBFT0ZfVU5JUVVFX0lEKCksIE5ETkJPT1NUX1RZUEVPRl9jb25zdF9wb2ludGVyX2Z1bik7Ci1ORE5CT09TVF9UWVBFT0ZfbW9kaWZpZXJfc3VwcG9ydChORE5CT09TVF9UWVBFT0ZfVU5JUVVFX0lEKCksIE5ETkJPT1NUX1RZUEVPRl9jb25zdF9yZWZlcmVuY2VfZnVuKTsKLU5ETkJPT1NUX1RZUEVPRl9tb2RpZmllcl9zdXBwb3J0KE5ETkJPT1NUX1RZUEVPRl9VTklRVUVfSUQoKSwgTkROQk9PU1RfVFlQRU9GX3ZvbGF0aWxlX3BvaW50ZXJfZnVuKTsKLU5ETkJPT1NUX1RZUEVPRl9tb2RpZmllcl9zdXBwb3J0KE5ETkJPT1NUX1RZUEVPRl9VTklRVUVfSUQoKSwgTkROQk9PU1RfVFlQRU9GX3ZvbGF0aWxlX3JlZmVyZW5jZV9mdW4pOwotTkROQk9PU1RfVFlQRU9GX21vZGlmaWVyX3N1cHBvcnQoTkROQk9PU1RfVFlQRU9GX1VOSVFVRV9JRCgpLCBORE5CT09TVF9UWVBFT0Zfdm9sYXRpbGVfY29uc3RfcG9pbnRlcl9mdW4pOwotTkROQk9PU1RfVFlQRU9GX21vZGlmaWVyX3N1cHBvcnQoTkROQk9PU1RfVFlQRU9GX1VOSVFVRV9JRCgpLCBORE5CT09TVF9UWVBFT0Zfdm9sYXRpbGVfY29uc3RfcmVmZXJlbmNlX2Z1bik7Ci0jZW5kaWYKLQotTkROQk9PU1RfVFlQRU9GX0VORF9FTkNPREVfTlMKLQotI3VuZGVmIE5ETkJPT1NUX1RZUEVPRl9tb2RpZmllcl9zdXBwb3J0Ci0jdW5kZWYgTkROQk9PU1RfVFlQRU9GX2NvbnN0X2Z1bgotI3VuZGVmIE5ETkJPT1NUX1RZUEVPRl92b2xhdGlsZV9mdW4KLSN1bmRlZiBORE5CT09TVF9UWVBFT0Zfdm9sYXRpbGVfY29uc3RfZnVuCi0jdW5kZWYgTkROQk9PU1RfVFlQRU9GX3BvaW50ZXJfZnVuCi0jdW5kZWYgTkROQk9PU1RfVFlQRU9GX3JlZmVyZW5jZV9mdW4KLQotI2lmIGRlZmluZWQoX19CT1JMQU5EQ19fKSAmJiAoX19CT1JMQU5EQ19fIDwgMHg2MDApCi0jdW5kZWYgTkROQk9PU1RfVFlQRU9GX2NvbnN0X3BvaW50ZXJfZnVuCi0jdW5kZWYgTkROQk9PU1RfVFlQRU9GX2NvbnN0X3JlZmVyZW5jZV9mdW4KLSN1bmRlZiBORE5CT09TVF9UWVBFT0Zfdm9sYXRpbGVfcG9pbnRlcl9mdW4KLSN1bmRlZiBORE5CT09TVF9UWVBFT0Zfdm9sYXRpbGVfcmVmZXJlbmNlX2Z1bgotI3VuZGVmIE5ETkJPT1NUX1RZUEVPRl92b2xhdGlsZV9jb25zdF9wb2ludGVyX2Z1bgotI3VuZGVmIE5ETkJPT1NUX1RZUEVPRl92b2xhdGlsZV9jb25zdF9yZWZlcmVuY2VfZnVuCi0jZW5kaWYKLQotLy8gYXJyYXlzCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX2FycmF5X3N1cHBvcnQoSUQsIFF1YWxpZmllcilcCi0gICAgdGVtcGxhdGU8Y2xhc3MgViwgY2xhc3MgVCwgaW50IE4+XAotICAgIHN0cnVjdCBlbmNvZGVfdHlwZV9pbXBsPFYsIFF1YWxpZmllcigpIFRbTl0+XAotICAgIHtcCi0gICAgICAgIHR5cGVkZWZcCi0gICAgICAgICAgICB0eXBlbmFtZSBuZG5ib29zdDo6dHlwZV9vZjo6ZW5jb2RlX3R5cGU8XAotICAgICAgICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OnR5cGVfb2Y6OnB1c2hfYmFjazxcCi0gICAgICAgICAgICB0eXBlbmFtZSBuZG5ib29zdDo6dHlwZV9vZjo6cHVzaF9iYWNrPFwKLSAgICAgICAgICAgIFZcCi0gICAgICAgICAgICAsIG5kbmJvb3N0OjptcGw6OnNpemVfdDxJRD4gPjo6dHlwZVwKLSAgICAgICAgICAgICwgbmRuYm9vc3Q6Om1wbDo6c2l6ZV90PE4+ID46OnR5cGVcCi0gICAgICAgICAgICAsIFQ+Ojp0eXBlXAotICAgICAgICB0eXBlO1wKLSAgICB9O1wKLSAgICB0ZW1wbGF0ZTxjbGFzcyBJdGVyPlwKLSAgICBzdHJ1Y3QgZGVjb2RlX3R5cGVfaW1wbDxuZG5ib29zdDo6bXBsOjpzaXplX3Q8SUQ+LCBJdGVyPlwKLSAgICB7XAotICAgICAgICBlbnVte24gPSBJdGVyOjp0eXBlOjp2YWx1ZX07XAotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjpkZWNvZGVfdHlwZTx0eXBlbmFtZSBJdGVyOjpuZXh0PiBkO1wKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBkOjp0eXBlIFF1YWxpZmllcigpIHR5cGVbbl07XAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGQ6Oml0ZXIgaXRlcjtcCi0gICAgfQotCi1ORE5CT09TVF9UWVBFT0ZfQkVHSU5fRU5DT0RFX05TCi0KLU5ETkJPT1NUX1RZUEVPRl9hcnJheV9zdXBwb3J0KE5ETkJPT1NUX1RZUEVPRl9VTklRVUVfSUQoKSwgTkROQk9PU1RfUFBfRU1QVFkpOwotTkROQk9PU1RfVFlQRU9GX2FycmF5X3N1cHBvcnQoTkROQk9PU1RfVFlQRU9GX1VOSVFVRV9JRCgpLCBORE5CT09TVF9QUF9JREVOVElUWShjb25zdCkpOwotTkROQk9PU1RfVFlQRU9GX2FycmF5X3N1cHBvcnQoTkROQk9PU1RfVFlQRU9GX1VOSVFVRV9JRCgpLCBORE5CT09TVF9QUF9JREVOVElUWSh2b2xhdGlsZSkpOwotTkROQk9PU1RfVFlQRU9GX2FycmF5X3N1cHBvcnQoTkROQk9PU1RfVFlQRU9GX1VOSVFVRV9JRCgpLCBORE5CT09TVF9QUF9JREVOVElUWSh2b2xhdGlsZSBjb25zdCkpOwotTkROQk9PU1RfVFlQRU9GX0VORF9FTkNPREVfTlMKLQotI3VuZGVmIE5ETkJPT1NUX1RZUEVPRl9hcnJheV9zdXBwb3J0Ci0KLSNlbmRpZi8vTkROQk9PU1RfVFlQRU9GX01PRElGSUVSU19IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL21zdmMvdHlwZW9mX2ltcGwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvbXN2Yy90eXBlb2ZfaW1wbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVkZWE3ZTEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvbXN2Yy90eXBlb2ZfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyODMgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDUgSWdvciBDaGVzbm9rb3YsIG1haWx0bzppY2hlc25va292QGdtYWlsLmNvbSAoVkMgNi41LFZDIDcuMSArIGNvdW50ZXIgY29kZSkKLS8vIENvcHlyaWdodCAoQykgMjAwNS0yMDA3IFBlZGVyIEhvbHQgKFZDIDcuMCArIGZyYW1ld29yaykKLS8vIENvcHlyaWdodCAoQykgMjAwNiBTdGV2ZW4gV2F0YW5hYmUgKFZDIDguMCkKLQotLy8gVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZQotLy8gTGljZW5zZSwgVmVyc2lvbiAxLjAuIChodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpZm5kZWYgTkROQk9PU1RfVFlQRU9GX01TVkNfVFlQRU9GX0lNUExfSFBQX0lOQ0xVREVECi0jIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfTVNWQ19UWVBFT0ZfSU1QTF9IUFBfSU5DTFVERUQKLQotIyBpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L21wbC9pbnQuaHBwPgotIyBpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19mdW5jdGlvbi5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L3V0aWxpdHkvZW5hYmxlX2lmLmhwcD4KLQotIyBpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsPj0xMzEwKQotIyAgaW5jbHVkZSA8dHlwZWluZm8+Ci0jIGVuZGlmCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotICAgIG5hbWVzcGFjZSB0eXBlX29mCi0gICAgewotCi0gICAgICAgIC8vQ29tcGlsZSB0aW1lIGNvbnN0YW50IGNvZGUKLSMgaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLD49MTMwMCkgJiYgZGVmaW5lZChfTVNDX0VYVEVOU0lPTlMpCi0gICAgICAgIHRlbXBsYXRlPGludCBOPiBzdHJ1Y3QgdGhlX2NvdW50ZXI7Ci0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCxpbnQgTiA9IDUvKmZvciBzaW1pbGFyaXR5Ki8+Ci0gICAgICAgIHN0cnVjdCBlbmNvZGVfY291bnRlcgotICAgICAgICB7Ci0gICAgICAgICAgICBfX2lmX2V4aXN0cyh0aGVfY291bnRlcjxOICsgMjU2PikKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQsY291bnQ9KGVuY29kZV9jb3VudGVyPFQsTiArIDI1Nz46OmNvdW50KSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBfX2lmX25vdF9leGlzdHModGhlX2NvdW50ZXI8TiArIDI1Nj4pCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgX19pZl9leGlzdHModGhlX2NvdW50ZXI8TiArIDY0PikKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCxjb3VudD0oZW5jb2RlX2NvdW50ZXI8VCxOICsgNjU+Ojpjb3VudCkpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBfX2lmX25vdF9leGlzdHModGhlX2NvdW50ZXI8TiArIDY0PikKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIF9faWZfZXhpc3RzKHRoZV9jb3VudGVyPE4gKyAxNj4pCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCxjb3VudD0oZW5jb2RlX2NvdW50ZXI8VCxOICsgMTc+Ojpjb3VudCkpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIF9faWZfbm90X2V4aXN0cyh0aGVfY291bnRlcjxOICsgMTY+KQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBfX2lmX2V4aXN0cyh0aGVfY291bnRlcjxOICsgND4pCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLGNvdW50PShlbmNvZGVfY291bnRlcjxULE4gKyA1Pjo6Y291bnQpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIF9faWZfbm90X2V4aXN0cyh0aGVfY291bnRlcjxOICsgND4pCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgX19pZl9leGlzdHModGhlX2NvdW50ZXI8Tj4pCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQsY291bnQ9KGVuY29kZV9jb3VudGVyPFQsTiArIDE+Ojpjb3VudCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX2lmX25vdF9leGlzdHModGhlX2NvdW50ZXI8Tj4pCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQodW5zaWduZWQsY291bnQ9Tik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVkZWYgdGhlX2NvdW50ZXI8Tj4gdHlwZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0KLSMgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9JTkRFWChUKSAoZW5jb2RlX2NvdW50ZXI8VD46OmNvdW50KQotIyBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX05FWFRfSU5ERVgobmV4dCkKLSMgZWxzZQotICAgICAgICB0ZW1wbGF0ZTxpbnQgTj4gc3RydWN0IGVuY29kZV9jb3VudGVyIDogZW5jb2RlX2NvdW50ZXI8TiAtIDE+IHt9OwotICAgICAgICB0ZW1wbGF0ZTw+IHN0cnVjdCBlbmNvZGVfY291bnRlcjwwPiB7fTsKLQotICAgICAgICAvL05lZWQgdG8gZGVmYXVsdCB0byBhIGxhcmdlciB2YWx1ZSB0aGFuIDQsIGFzIGR1ZSB0byBNU1ZDJ3MgRVRJIGVycm9ycy4gKHNpemVvZihpbnQpPT00KQotICAgICAgICBjaGFyICgqZW5jb2RlX2luZGV4KC4uLikpWzVdOwotCi0jIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfSU5ERVgoVCkgKHNpemVvZigqbmRuYm9vc3Q6OnR5cGVfb2Y6OmVuY29kZV9pbmRleCgobmRuYm9vc3Q6OnR5cGVfb2Y6OmVuY29kZV9jb3VudGVyPDEwMDU+KikwKSkpCi0jIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfTkVYVF9JTkRFWChuZXh0KSBmcmllbmQgY2hhciAoKmVuY29kZV9pbmRleChlbmNvZGVfY291bnRlcjxuZXh0PiopKVtuZXh0XTsKLSMgZW5kaWYKLQotICAgICAgICAvL1R5cGVvZiBjb2RlCi0KLSMgaWYgTkROQk9PU1RfV09SS0FST1VORChORE5CT09TVF9NU1ZDLD09MTMwMCkKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSUQ+Ci0gICAgICAgIHN0cnVjdCBtc3ZjX2V4dHJhY3RfdHlwZQotICAgICAgICB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTxib29sPgotICAgICAgICAgICAgc3RydWN0IGlkMnR5cGVfaW1wbDsKLQotICAgICAgICAgICAgdHlwZWRlZiBpZDJ0eXBlX2ltcGw8dHJ1ZT4gaWQydHlwZTsKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBJRD4KLSAgICAgICAgc3RydWN0IG1zdmNfcmVnaXN0ZXJfdHlwZSA6IG1zdmNfZXh0cmFjdF90eXBlPElEPgotICAgICAgICB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgICAgICBzdHJ1Y3QgaWQydHlwZV9pbXBsPHRydWU+ICAvL1ZDNy4wIHNwZWNpZmljIGJ1Z2ZlYXR1cmUKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB0eXBlZGVmIFQgdHlwZTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH07Ci0jZWxpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsPj0xNDAwKQotICAgICAgICBzdHJ1Y3QgbXN2Y19leHRyYWN0X3R5cGVfZGVmYXVsdF9wYXJhbSB7fTsKLQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJRCwgdHlwZW5hbWUgVCA9IG1zdmNfZXh0cmFjdF90eXBlX2RlZmF1bHRfcGFyYW0+Ci0gICAgICAgIHN0cnVjdCBtc3ZjX2V4dHJhY3RfdHlwZTsKLQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJRD4KLSAgICAgICAgc3RydWN0IG1zdmNfZXh0cmFjdF90eXBlPElELCBtc3ZjX2V4dHJhY3RfdHlwZV9kZWZhdWx0X3BhcmFtPiB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTxib29sPgotICAgICAgICAgICAgc3RydWN0IGlkMnR5cGVfaW1wbDsKLQotICAgICAgICAgICAgdHlwZWRlZiBpZDJ0eXBlX2ltcGw8dHJ1ZT4gaWQydHlwZTsKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJRCwgdHlwZW5hbWUgVD4KLSAgICAgICAgc3RydWN0IG1zdmNfZXh0cmFjdF90eXBlIDogbXN2Y19leHRyYWN0X3R5cGU8SUQsbXN2Y19leHRyYWN0X3R5cGVfZGVmYXVsdF9wYXJhbT4KLSAgICAgICAgewotICAgICAgICAgICAgdGVtcGxhdGU8PgotICAgICAgICAgICAgc3RydWN0IGlkMnR5cGVfaW1wbDx0cnVlPiAgLy9WQzguMCBzcGVjaWZpYyBidWdmZWF0dXJlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdGVtcGxhdGU8Ym9vbD4KLSAgICAgICAgICAgIHN0cnVjdCBpZDJ0eXBlX2ltcGw7Ci0KLSAgICAgICAgICAgIHR5cGVkZWYgaWQydHlwZV9pbXBsPHRydWU+IGlkMnR5cGU7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgSUQ+Ci0gICAgICAgIHN0cnVjdCBtc3ZjX3JlZ2lzdGVyX3R5cGUgOiBtc3ZjX2V4dHJhY3RfdHlwZTxJRCwgVD4KLSAgICAgICAgewotICAgICAgICB9OwotIyBlbHNlCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIElEPgotICAgICAgICBzdHJ1Y3QgbXN2Y19leHRyYWN0X3R5cGUKLSAgICAgICAgewotICAgICAgICAgICAgc3RydWN0IGlkMnR5cGU7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgSUQ+Ci0gICAgICAgIHN0cnVjdCBtc3ZjX3JlZ2lzdGVyX3R5cGUgOiBtc3ZjX2V4dHJhY3RfdHlwZTxJRD4KLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiBtc3ZjX2V4dHJhY3RfdHlwZTxJRD4gYmFzZV90eXBlOwotICAgICAgICAgICAgc3RydWN0IGJhc2VfdHlwZTo6aWQydHlwZSAvLyBUaGlzIHVzZXMgbmljZSBWQzYuNSBhbmQgVkM3LjEgYnVnZmVhdHVyZQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHR5cGVkZWYgVCB0eXBlOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLSMgZW5kaWYKLS8vIEVBTjogcHJlcHJvY2VzcyB0aGlzIGJsb2NrIG91dCBvbiBhZHZpY2Ugb2YgUGVkZXIgSG9sdAotLy8gdG8gZWxpbWluYXRlIGVycm9ycyBpbiB0eXBlX3RyYWl0cy9jb21tb25fdHlwZS5ocHAKLSMgaWYgMCAvL05ETkJPT1NUX1dPUktBUk9VTkQoTkROQk9PU1RfTVNWQyw9PTEzMTApCi0gICAgICAgIHRlbXBsYXRlPGNvbnN0IHN0ZDo6dHlwZV9pbmZvJiByZWZfdHlwZV9pbmZvPgotICAgICAgICBzdHJ1Y3QgbXN2Y190eXBlaWRfd3JhcHBlciB7Ci0gICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG1zdmNfZXh0cmFjdF90eXBlPG1zdmNfdHlwZWlkX3dyYXBwZXI+OjppZDJ0eXBlIGlkMnR5cGU7Ci0gICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlkMnR5cGU6OnR5cGUgd3JhcHBlZF90eXBlOwotICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB3cmFwcGVkX3R5cGU6OnR5cGUgdHlwZTsKLSAgICAgICAgfTsKLSAgICAgICAgLy9UaGlzIGNsYXNzIGlzIHVzZWQgZm9yIHJlZ2lzdGVyaW5nIHRoZSB0eXBlIFQuIGVuY29kZV90eXBlPFQ+IGlzIG1hcHBlZCBhZ2FpbnN0IHR5cGVpZChlbmNvZGVfdHlwZTxUPikuCi0gICAgICAgIC8vbXN2Y190eXBlaWRfd3JhcHBlcjx0eXBlaWQoZW5jb2RlX3R5cGU8VD4pPiB3aWxsIG5vdyBoYXZlIGEgdHlwZSB0eXBlZGVmIHRoYXQgZXF1YWxzIGVuY29kZV90eXBlPFQ+LgotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotICAgICAgICBzdHJ1Y3QgZW5jb2RlX3R5cGUKLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiBlbmNvZGVfdHlwZTxUPiBpbnB1dF90eXBlOwotICAgICAgICAgICAgLy9JbnZva2UgcmVnaXN0cmF0aW9uIG9mIGVuY29kZV90eXBlPFQ+LiB0eXBlaWQoZW5jb2RlX3R5cGU8VD4pIGlzIG5vdyBtYXBwZWQgdG8gZW5jb2RlX3R5cGU8VD4uIERvIG5vdCB1c2UgcmVnaXN0ZXJlZF90eXBlIGZvciBhbnl0aGluZy4KLSAgICAgICAgICAgIC8vVGhlIHJlYXNvbiBmb3IgcmVnaXN0ZXJpbmcgZW5jb2RlX3R5cGU8VD4gcmF0aGVyIHRoYW4gVCwgaXMgdGhhdCBWQyBoYW5kbGVzIHR5cGVpZChmdW5jdGlvbiByZWZlcmVuY2UpIHBvb3JseS4gQnkgYWRkaW5nIGFub3RoZXIKLSAgICAgICAgICAgIC8vbGV2ZWwgb2YgaW5kaXJlY3Rpb24sIHdlIHNvbHZlIHRoaXMgcHJvYmxlbS4KLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXN2Y19yZWdpc3Rlcl90eXBlPGlucHV0X3R5cGUsbXN2Y190eXBlaWRfd3JhcHBlcjx0eXBlaWQoaW5wdXRfdHlwZSk+ID46OmlkMnR5cGUgcmVnaXN0ZXJlZF90eXBlOwotICAgICAgICAgICAgdHlwZWRlZiBUIHR5cGU7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdHlwZW5hbWUgZGlzYWJsZV9pZjwKLSAgICAgICAgICAgIHR5cGVuYW1lIGlzX2Z1bmN0aW9uPFQ+Ojp0eXBlLAotICAgICAgICAgICAgdHlwZW5hbWUgZW5jb2RlX3R5cGU8VD46OmlucHV0X3R5cGU+Ojp0eXBlIGVuY29kZV9zdGFydChUIGNvbnN0Jik7Ci0KLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdHlwZW5hbWUgZW5hYmxlX2lmPAotICAgICAgICAgICAgdHlwZW5hbWUgaXNfZnVuY3Rpb248VD46OnR5cGUsCi0gICAgICAgICAgICB0eXBlbmFtZSBlbmNvZGVfdHlwZTxUPjo6aW5wdXRfdHlwZT46OnR5cGUgZW5jb2RlX3N0YXJ0KFQmKTsKLQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcmdhbml6ZXIsIHR5cGVuYW1lIFQ+Ci0gICAgICAgIG1zdmNfcmVnaXN0ZXJfdHlwZTxULE9yZ2FuaXplcj4gdHlwZW9mX3JlZ2lzdGVyX3R5cGUoY29uc3QgVCYpOwotCi0KLSMgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRihleHByKSBcCi0gICAgbmRuYm9vc3Q6OnR5cGVfb2Y6Om1zdmNfdHlwZWlkX3dyYXBwZXI8dHlwZWlkKG5kbmJvb3N0Ojp0eXBlX29mOjplbmNvZGVfc3RhcnQoZXhwcikpPjo6dHlwZQotCi0jIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfVFBMKGV4cHIpIHR5cGVuYW1lIE5ETkJPT1NUX1RZUEVPRihleHByKQotCi0jIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfTkVTVEVEX1RZUEVERUZfVFBMKG5hbWUsZXhwcikgXAotc3RydWN0IG5hbWUge1wKLSAgICBlbnVtIHtfdHlwZW9mX3JlZ2lzdGVyX3ZhbHVlPXNpemVvZih0eXBlaWQobmRuYm9vc3Q6OnR5cGVfb2Y6OnR5cGVvZl9yZWdpc3Rlcl90eXBlPG5hbWU+KGV4cHIpKSl9O1wKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0Ojp0eXBlX29mOjptc3ZjX2V4dHJhY3RfdHlwZTxuYW1lPjo6aWQydHlwZSBpZDJ0eXBlO1wKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGlkMnR5cGU6OnR5cGUgdHlwZTtcCi19OwotCi0jIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfTkVTVEVEX1RZUEVERUYobmFtZSxleHByKSBcCi1zdHJ1Y3QgbmFtZSB7XAotICAgIGVudW0ge190eXBlb2ZfcmVnaXN0ZXJfdmFsdWU9c2l6ZW9mKHR5cGVpZChuZG5ib29zdDo6dHlwZV9vZjo6dHlwZW9mX3JlZ2lzdGVyX3R5cGU8bmFtZT4oZXhwcikpKX07XAotICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6Om1zdmNfZXh0cmFjdF90eXBlPG5hbWU+OjppZDJ0eXBlIGlkMnR5cGU7XAotICAgIHR5cGVkZWYgaWQydHlwZTo6dHlwZSB0eXBlO1wKLX07Ci0KLSMgZWxzZQotICAgICAgICB0ZW1wbGF0ZTxpbnQgSUQ+Ci0gICAgICAgIHN0cnVjdCBtc3ZjX3R5cGVpZF93cmFwcGVyIHsKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbXN2Y19leHRyYWN0X3R5cGU8bXBsOjppbnRfPElEPiA+OjppZDJ0eXBlIGlkMnR5cGU7Ci0gICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGlkMnR5cGU6OnR5cGUgdHlwZTsKLSAgICAgICAgfTsKLSAgICAgICAgLy9Xb3JrYXJvdW5kIGZvciBFVEktYnVnIGZvciBWQzYgYW5kIFZDNwotICAgICAgICB0ZW1wbGF0ZTw+Ci0gICAgICAgIHN0cnVjdCBtc3ZjX3R5cGVpZF93cmFwcGVyPDE+IHsKLSAgICAgICAgICAgIHR5cGVkZWYgbXN2Y190eXBlaWRfd3JhcHBlcjwxPiB0eXBlOwotICAgICAgICB9OwotICAgICAgICAvL1dvcmthcm91bmQgZm9yIEVUSS1idWcgZm9yIFZDNy4xCi0gICAgICAgIHRlbXBsYXRlPD4KLSAgICAgICAgc3RydWN0IG1zdmNfdHlwZWlkX3dyYXBwZXI8ND4gewotICAgICAgICAgICAgdHlwZWRlZiBtc3ZjX3R5cGVpZF93cmFwcGVyPDQ+IHR5cGU7Ci0gICAgICAgIH07Ci0KLSAgICAgICAgLy9UaWUgaXQgYWxsIHRvZ2V0aGVyCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgIHN0cnVjdCBlbmNvZGVfdHlwZQotICAgICAgICB7Ci0gICAgICAgICAgICAvL0dldCB0aGUgbmV4dCBhdmFpbGFibGUgY29tcGlsZSB0aW1lIGNvbnN0YW50cyBpbmRleAotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKHVuc2lnbmVkLHZhbHVlPU5ETkJPT1NUX1RZUEVPRl9JTkRFWChUKSk7Ci0gICAgICAgICAgICAvL0luc3RhbnRpYXRlIHRoZSB0ZW1wbGF0ZQotICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBtc3ZjX3JlZ2lzdGVyX3R5cGU8VCxtcGw6OmludF88dmFsdWU+ID46OmlkMnR5cGUgdHlwZTsKLSAgICAgICAgICAgIC8vU2V0IHRoZSBuZXh0IGNvbXBpbGUgdGltZSBjb25zdGFudHMgaW5kZXgKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVCh1bnNpZ25lZCxuZXh0PXZhbHVlKzEpOwotICAgICAgICAgICAgLy9JbmNyZW1lbnQgdGhlIGNvbXBpbGUgdGltZSBjb25zdGFudCAob25seSBuZWVkZWQgd2hlbiBleHRlbnNpb25zIGFyZSBub3QgYWN0aXZlCi0gICAgICAgICAgICBORE5CT09TVF9UWVBFT0ZfTkVYVF9JTkRFWChuZXh0KTsKLSAgICAgICAgfTsKLQotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBUPgotICAgICAgICBzdHJ1Y3Qgc2l6ZXIKLSAgICAgICAgewotICAgICAgICAgICAgdHlwZWRlZiBjaGFyKCp0eXBlKVtlbmNvZGVfdHlwZTxUPjo6dmFsdWVdOwotICAgICAgICB9OwotIyBpZiBORE5CT09TVF9XT1JLQVJPVU5EKE5ETkJPT1NUX01TVkMsPj0xMzEwKQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB0eXBlbmFtZSBkaXNhYmxlX2lmPAotICAgICAgICAgICAgdHlwZW5hbWUgaXNfZnVuY3Rpb248VD46OnR5cGUsCi0gICAgICAgICAgICB0eXBlbmFtZSBzaXplcjxUPjo6dHlwZT46OnR5cGUgZW5jb2RlX3N0YXJ0KFQgY29uc3QmKTsKLQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB0eXBlbmFtZSBlbmFibGVfaWY8Ci0gICAgICAgICAgICB0eXBlbmFtZSBpc19mdW5jdGlvbjxUPjo6dHlwZSwKLSAgICAgICAgICAgIHR5cGVuYW1lIHNpemVyPFQ+Ojp0eXBlPjo6dHlwZSBlbmNvZGVfc3RhcnQoVCYpOwotIyBlbHNlCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgICAgICB0eXBlbmFtZSBzaXplcjxUPjo6dHlwZSBlbmNvZGVfc3RhcnQoVCBjb25zdCYpOwotIyBlbmRpZgotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPcmdhbml6ZXIsIHR5cGVuYW1lIFQ+Ci0gICAgICAgIG1zdmNfcmVnaXN0ZXJfdHlwZTxULE9yZ2FuaXplcj4gdHlwZW9mX3JlZ2lzdGVyX3R5cGUoY29uc3QgVCYsT3JnYW5pemVyKiA9MCk7Ci0KLSMgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRihleHByKSBcCi0gICAgbmRuYm9vc3Q6OnR5cGVfb2Y6Om1zdmNfdHlwZWlkX3dyYXBwZXI8c2l6ZW9mKCpuZG5ib29zdDo6dHlwZV9vZjo6ZW5jb2RlX3N0YXJ0KGV4cHIpKT46OnR5cGUKLQotIyBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1RQTChleHByKSB0eXBlbmFtZSBORE5CT09TVF9UWVBFT0YoZXhwcikKLQotIyBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX05FU1RFRF9UWVBFREVGX1RQTChuYW1lLGV4cHIpIFwKLSAgICBzdHJ1Y3QgbmFtZSB7XAotICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LF90eXBlb2ZfcmVnaXN0ZXJfdmFsdWU9c2l6ZW9mKG5kbmJvb3N0Ojp0eXBlX29mOjp0eXBlb2ZfcmVnaXN0ZXJfdHlwZTxuYW1lPihleHByKSkpO1wKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6dHlwZV9vZjo6bXN2Y19leHRyYWN0X3R5cGU8bmFtZT46OmlkMnR5cGUgaWQydHlwZTtcCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgaWQydHlwZTo6dHlwZSB0eXBlO1wKLSAgICB9OwotCi0jIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfTkVTVEVEX1RZUEVERUYobmFtZSxleHByKSBcCi0gICAgc3RydWN0IG5hbWUge1wKLSAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCxfdHlwZW9mX3JlZ2lzdGVyX3ZhbHVlPXNpemVvZihuZG5ib29zdDo6dHlwZV9vZjo6dHlwZW9mX3JlZ2lzdGVyX3R5cGU8bmFtZT4oZXhwcikpKTtcCi0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6Om1zdmNfZXh0cmFjdF90eXBlPG5hbWU+OjppZDJ0eXBlIGlkMnR5cGU7XAotICAgICAgICB0eXBlZGVmIGlkMnR5cGU6OnR5cGUgdHlwZTtcCi0gICAgfTsKLQotI2VuZGlmCi0gICAgfQotfQotCi0jZW5kaWYvL05ETkJPT1NUX1RZUEVPRl9NU1ZDX1RZUEVPRl9JTVBMX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvbmF0aXZlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL25hdGl2ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ4OGI0MTkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvbmF0aXZlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAwNiBBcmthZGl5IFZlcnRsZXliCi0vLyBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCi0vLyBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9UWVBFT0ZfTkFUSVZFX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfTkFUSVZFX0hQUF9JTkNMVURFRAotCi0jaWZuZGVmIE1TVkNfVFlQRU9GX0hBQ0sKLQotI2lmZGVmIE5ETkJPT1NUX05PX1NGSU5BRQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgdHlwZV9vZiB7Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPiAKLSAgICAgICAgVCYgZW5zdXJlX29iaihjb25zdCBUJik7Ci0KLX19Ci0KLSNlbHNlCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19mdW5jdGlvbi5ocHA+IAotI2luY2x1ZGUgPG5kbmJvb3N0L3V0aWxpdHkvZW5hYmxlX2lmLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIHR5cGVfb2YgewotIyBpZmRlZiBORE5CT09TVF9OT19TRklOQUUKLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPiAKLSAgICBUJiBlbnN1cmVfb2JqKGNvbnN0IFQmKTsKLSMgZWxzZQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgICAgIHR5cGVuYW1lIGVuYWJsZV9pZjxpc19mdW5jdGlvbjxUPiwgVCY+Ojp0eXBlCi0gICAgICAgIGVuc3VyZV9vYmooVCYpOwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICAgICAgdHlwZW5hbWUgZGlzYWJsZV9pZjxpc19mdW5jdGlvbjxUPiwgVCY+Ojp0eXBlCi0gICAgICAgIGVuc3VyZV9vYmooY29uc3QgVCYpOwotIyBlbmRpZgotfX0KLQotI2VuZGlmLy9ORE5CT09TVF9OT19TRklOQUUKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0YoZXhwcikgTkROQk9PU1RfVFlQRU9GX0tFWVdPUkQobmRuYm9vc3Q6OnR5cGVfb2Y6OmVuc3VyZV9vYmooZXhwcikpCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9UUEwgTkROQk9PU1RfVFlQRU9GCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX05FU1RFRF9UWVBFREVGX1RQTChuYW1lLGV4cHIpIFwKLSAgICBzdHJ1Y3QgbmFtZSB7XAotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1RZUEVPRl9UUEwoZXhwcikgdHlwZTtcCi0gICAgfTsKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfTkVTVEVEX1RZUEVERUYobmFtZSxleHByKSBcCi0gICAgc3RydWN0IG5hbWUge1wKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9UWVBFT0YoZXhwcikgdHlwZTtcCi0gICAgfTsKLQotI2VuZGlmLy9NU1ZDX1RZUEVPRl9IQUNLCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RZUEUoeCkKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RFTVBMQVRFKHgsIHBhcmFtcykKLQotI2VuZGlmLy9ORE5CT09TVF9UWVBFT0ZfTkFUSVZFX0hQUF9JTkNMVURFRAotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi9wb2ludGVyc19kYXRhX21lbWJlcnMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvcG9pbnRlcnNfZGF0YV9tZW1iZXJzLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTE4NzJkOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi9wb2ludGVyc19kYXRhX21lbWJlcnMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDA0IEFya2FkaXkgVmVydGxleWIKLS8vIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLS8vIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9QT0lOVEVSU19EQVRBX01FTUJFUlNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9QT0lOVEVSU19EQVRBX01FTUJFUlNfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlb2YvZW5jb2RlX2RlY29kZV9wYXJhbXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVvZi9lbmNvZGVfZGVjb2RlLmhwcD4KLQotI2luY2x1ZGUgTkROQk9PU1RfVFlQRU9GX0lOQ1JFTUVOVF9SRUdJU1RSQVRJT05fR1JPVVAoKQotCi1ORE5CT09TVF9UWVBFT0ZfQkVHSU5fRU5DT0RFX05TCi0KLWVudW0ge1BUUl9EQVRBX01FTV9JRCA9IE5ETkJPT1NUX1RZUEVPRl9VTklRVUVfSUQoKX07Ci0KLXRlbXBsYXRlPGNsYXNzIFYsIGNsYXNzIFAwLCBjbGFzcyBQMT4KLXN0cnVjdCBlbmNvZGVfdHlwZV9pbXBsPFYsIFAwIFAxOjoqPgotewotICAgIHR5cGVkZWYgTkROQk9PU1RfVFlQRU9GX0VOQ09ERV9QQVJBTVMoMiwgUFRSX0RBVEFfTUVNX0lEKSB0eXBlOwotfTsKLQotdGVtcGxhdGU8Y2xhc3MgSXRlcj4KLXN0cnVjdCBkZWNvZGVfdHlwZV9pbXBsPG5kbmJvb3N0OjptcGw6OnNpemVfdDxQVFJfREFUQV9NRU1fSUQ+LCBJdGVyPgotewotICAgIHR5cGVkZWYgSXRlciBpdGVyMDsKLSAgICBORE5CT09TVF9UWVBFT0ZfREVDT0RFX1BBUkFNUygyKQotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IHdvcmthcm91bmR7Ci0gICAgICAgIHR5cGVkZWYgcDAgVDo6KiB0eXBlOwotICAgIH07Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBkZWNvZGVfdHlwZV9pbXBsPG5kbmJvb3N0OjptcGw6OnNpemVfdDxQVFJfREFUQV9NRU1fSUQ+LCBJdGVyPjo6dGVtcGxhdGUgd29ya2Fyb3VuZDxwMT46OnR5cGUgdHlwZTsKLSAgICB0eXBlZGVmIGl0ZXIyIGl0ZXI7Ci19OwotCi1ORE5CT09TVF9UWVBFT0ZfRU5EX0VOQ09ERV9OUwotCi0jZW5kaWYvL05ETkJPT1NUX1RZUEVPRl9QT0lOVEVSU19EQVRBX01FTUJFUlNfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi9yZWdpc3Rlcl9mdW5jdGlvbnMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvcmVnaXN0ZXJfZnVuY3Rpb25zLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmIyMjlmOS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi9yZWdpc3Rlcl9mdW5jdGlvbnMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDA0IEFya2FkaXkgVmVydGxleWIKLS8vIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLS8vIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9GVU5DVElPTlNfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9GVU5DVElPTlNfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX3BhcmFtcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bV90cmFpbGluZ19wYXJhbXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pbmMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9kZWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2FyaXRobWV0aWMvYWRkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvaXRlcmF0aW9uL2l0ZXJhdGUuaHBwPgotCi0jaW5jbHVkZSBORE5CT09TVF9UWVBFT0ZfSU5DUkVNRU5UX1JFR0lTVFJBVElPTl9HUk9VUCgpCi0KLSNpZm5kZWYgTkROQk9PU1RfVFlQRU9GX0xJTUlUX0ZVTkNUSU9OX0FSSVRZCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9MSU1JVF9GVU5DVElPTl9BUklUWSAxMAotI2VuZGlmCi0KLWVudW0gCi17Ci0gICAgRlVOX0lEICAgICAgICAgICAgICAgICAgICAgICAgICA9IE5ETkJPT1NUX1RZUEVPRl9VTklRVUVfSUQoKSwKLSAgICBGVU5fUFRSX0lEICAgICAgICAgICAgICAgICAgICAgID0gRlVOX0lEICsgIDEgKiBORE5CT09TVF9QUF9JTkMoTkROQk9PU1RfVFlQRU9GX0xJTUlUX0ZVTkNUSU9OX0FSSVRZKSwKLSAgICBGVU5fUkVGX0lEICAgICAgICAgICAgICAgICAgICAgID0gRlVOX0lEICsgIDIgKiBORE5CT09TVF9QUF9JTkMoTkROQk9PU1RfVFlQRU9GX0xJTUlUX0ZVTkNUSU9OX0FSSVRZKSwKLSAgICBNRU1fRlVOX0lEICAgICAgICAgICAgICAgICAgICAgID0gRlVOX0lEICsgIDMgKiBORE5CT09TVF9QUF9JTkMoTkROQk9PU1RfVFlQRU9GX0xJTUlUX0ZVTkNUSU9OX0FSSVRZKSwKLSAgICBDT05TVF9NRU1fRlVOX0lEICAgICAgICAgICAgICAgID0gRlVOX0lEICsgIDQgKiBORE5CT09TVF9QUF9JTkMoTkROQk9PU1RfVFlQRU9GX0xJTUlUX0ZVTkNUSU9OX0FSSVRZKSwKLSAgICBWT0xBVElMRV9NRU1fRlVOX0lEICAgICAgICAgICAgID0gRlVOX0lEICsgIDUgKiBORE5CT09TVF9QUF9JTkMoTkROQk9PU1RfVFlQRU9GX0xJTUlUX0ZVTkNUSU9OX0FSSVRZKSwKLSAgICBWT0xBVElMRV9DT05TVF9NRU1fRlVOX0lEICAgICAgID0gRlVOX0lEICsgIDYgKiBORE5CT09TVF9QUF9JTkMoTkROQk9PU1RfVFlQRU9GX0xJTUlUX0ZVTkNUSU9OX0FSSVRZKSwKLSAgICBGVU5fVkFSX0lEICAgICAgICAgICAgICAgICAgICAgID0gRlVOX0lEICsgIDcgKiBORE5CT09TVF9QUF9JTkMoTkROQk9PU1RfVFlQRU9GX0xJTUlUX0ZVTkNUSU9OX0FSSVRZKSwKLSAgICBGVU5fVkFSX1BUUl9JRCAgICAgICAgICAgICAgICAgID0gRlVOX0lEICsgIDggKiBORE5CT09TVF9QUF9JTkMoTkROQk9PU1RfVFlQRU9GX0xJTUlUX0ZVTkNUSU9OX0FSSVRZKSwKLSAgICBGVU5fVkFSX1JFRl9JRCAgICAgICAgICAgICAgICAgID0gRlVOX0lEICsgIDkgKiBORE5CT09TVF9QUF9JTkMoTkROQk9PU1RfVFlQRU9GX0xJTUlUX0ZVTkNUSU9OX0FSSVRZKSwKLSAgICBNRU1fRlVOX1ZBUl9JRCAgICAgICAgICAgICAgICAgID0gRlVOX0lEICsgMTAgKiBORE5CT09TVF9QUF9JTkMoTkROQk9PU1RfVFlQRU9GX0xJTUlUX0ZVTkNUSU9OX0FSSVRZKSwKLSAgICBDT05TVF9NRU1fRlVOX1ZBUl9JRCAgICAgICAgICAgID0gRlVOX0lEICsgMTEgKiBORE5CT09TVF9QUF9JTkMoTkROQk9PU1RfVFlQRU9GX0xJTUlUX0ZVTkNUSU9OX0FSSVRZKSwKLSAgICBWT0xBVElMRV9NRU1fRlVOX1ZBUl9JRCAgICAgICAgID0gRlVOX0lEICsgMTIgKiBORE5CT09TVF9QUF9JTkMoTkROQk9PU1RfVFlQRU9GX0xJTUlUX0ZVTkNUSU9OX0FSSVRZKSwKLSAgICBWT0xBVElMRV9DT05TVF9NRU1fRlVOX1ZBUl9JRCAgID0gRlVOX0lEICsgMTMgKiBORE5CT09TVF9QUF9JTkMoTkROQk9PU1RfVFlQRU9GX0xJTUlUX0ZVTkNUSU9OX0FSSVRZKQotfTsKLQotTkROQk9PU1RfVFlQRU9GX0JFR0lOX0VOQ09ERV9OUwotCi0jIGRlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fTElNSVRTICgwLCBORE5CT09TVF9UWVBFT0ZfTElNSVRfRlVOQ1RJT05fQVJJVFkpCi0jIGRlZmluZSBORE5CT09TVF9QUF9GSUxFTkFNRV8xIDxuZG5ib29zdC90eXBlb2YvcmVnaXN0ZXJfZnVuY3Rpb25zX2l0ZXJhdGUuaHBwPgotIyBpbmNsdWRlIE5ETkJPT1NUX1BQX0lURVJBVEUoKQotCi1ORE5CT09TVF9UWVBFT0ZfRU5EX0VOQ09ERV9OUwotCi0jZW5kaWYvL05ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9GVU5DVElPTlNfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi9yZWdpc3Rlcl9mdW5jdGlvbnNfaXRlcmF0ZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi9yZWdpc3Rlcl9mdW5jdGlvbnNfaXRlcmF0ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNmNDg3YTkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvcmVnaXN0ZXJfZnVuY3Rpb25zX2l0ZXJhdGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTM1ICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAwNCBBcmthZGl5IFZlcnRsZXliCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVvZi9lbmNvZGVfZGVjb2RlX3BhcmFtcy5ocHA+Ci0KLSNkZWZpbmUgbiBORE5CT09TVF9QUF9JVEVSQVRJT04oKQotCi0vLyBmdW5jdGlvbiBwb2ludGVycwotCi10ZW1wbGF0ZTxjbGFzcyBWLCBjbGFzcyBSIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfUEFSQU1TKG4sIGNsYXNzIFApPgotc3RydWN0IGVuY29kZV90eXBlX2ltcGw8ViwgUigqKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhuLCBQKSk+Ci17Ci0gICAgdHlwZWRlZiBSIE5ETkJPT1NUX1BQX0NBVChQLCBuKTsKLSAgICB0eXBlZGVmIE5ETkJPT1NUX1RZUEVPRl9FTkNPREVfUEFSQU1TKE5ETkJPT1NUX1BQX0lOQyhuKSwgRlVOX1BUUl9JRCArIG4pIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBWLCBjbGFzcyBSIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfUEFSQU1TKG4sIGNsYXNzIFApPgotc3RydWN0IGVuY29kZV90eXBlX2ltcGw8ViwgUigqKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhuLCBQKSAuLi4pPgotewotICAgIHR5cGVkZWYgUiBORE5CT09TVF9QUF9DQVQoUCwgbik7Ci0gICAgdHlwZWRlZiBORE5CT09TVF9UWVBFT0ZfRU5DT0RFX1BBUkFNUyhORE5CT09TVF9QUF9JTkMobiksIEZVTl9WQVJfUFRSX0lEICsgbikgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIEl0ZXI+Ci1zdHJ1Y3QgZGVjb2RlX3R5cGVfaW1wbDxuZG5ib29zdDo6bXBsOjpzaXplX3Q8RlVOX1BUUl9JRCArIG4+LCBJdGVyPgotewotICAgIHR5cGVkZWYgSXRlciBpdGVyMDsKLSAgICBORE5CT09TVF9UWVBFT0ZfREVDT0RFX1BBUkFNUyhORE5CT09TVF9QUF9JTkMobikpCi0gICAgdHlwZWRlZiBORE5CT09TVF9QUF9DQVQocCwgbikoKnR5cGUpKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKG4sIHApKTsKLSAgICB0eXBlZGVmIE5ETkJPT1NUX1BQX0NBVChpdGVyLCBORE5CT09TVF9QUF9JTkMobikpIGl0ZXI7Ci19OwotCi10ZW1wbGF0ZTxjbGFzcyBJdGVyPgotc3RydWN0IGRlY29kZV90eXBlX2ltcGw8bmRuYm9vc3Q6Om1wbDo6c2l6ZV90PEZVTl9WQVJfUFRSX0lEICsgbj4sIEl0ZXI+Ci17Ci0gICAgdHlwZWRlZiBJdGVyIGl0ZXIwOwotICAgIE5ETkJPT1NUX1RZUEVPRl9ERUNPREVfUEFSQU1TKE5ETkJPT1NUX1BQX0lOQyhuKSkKLSAgICB0eXBlZGVmIE5ETkJPT1NUX1BQX0NBVChwLCBuKSgqdHlwZSkoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMobiwgcCkgLi4uKTsKLSAgICB0eXBlZGVmIE5ETkJPT1NUX1BQX0NBVChpdGVyLCBORE5CT09TVF9QUF9JTkMobikpIGl0ZXI7Ci19OwotCi0jaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9OT19GVU5DVElPTl9UWVBFUwotCi0gICAgLy8gZnVuY3Rpb24gcmVmZXJlbmNlcwotCi0gICAgdGVtcGxhdGU8Y2xhc3MgViwgY2xhc3MgUiBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX1BBUkFNUyhuLCBjbGFzcyBQKT4KLSAgICBzdHJ1Y3QgZW5jb2RlX3R5cGVfaW1wbDxWLCBSKCYpKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKG4sIFApKT4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgUiBORE5CT09TVF9QUF9DQVQoUCwgbik7Ci0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfVFlQRU9GX0VOQ09ERV9QQVJBTVMoTkROQk9PU1RfUFBfSU5DKG4pLCBGVU5fUkVGX0lEICsgbikgdHlwZTsKLSAgICB9OwotCi0gICAgdGVtcGxhdGU8Y2xhc3MgViwgY2xhc3MgUiBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX1BBUkFNUyhuLCBjbGFzcyBQKT4KLSAgICBzdHJ1Y3QgZW5jb2RlX3R5cGVfaW1wbDxWLCBSKCYpKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKG4sIFApIC4uLik+Ci0gICAgewotICAgICAgICB0eXBlZGVmIFIgTkROQk9PU1RfUFBfQ0FUKFAsIG4pOwotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1RZUEVPRl9FTkNPREVfUEFSQU1TKE5ETkJPT1NUX1BQX0lOQyhuKSwgRlVOX1ZBUl9SRUZfSUQgKyBuKSB0eXBlOwotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBJdGVyPgotICAgIHN0cnVjdCBkZWNvZGVfdHlwZV9pbXBsPG5kbmJvb3N0OjptcGw6OnNpemVfdDxGVU5fUkVGX0lEICsgbj4sIEl0ZXI+Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXIgaXRlcjA7Ci0gICAgICAgIE5ETkJPT1NUX1RZUEVPRl9ERUNPREVfUEFSQU1TKE5ETkJPT1NUX1BQX0lOQyhuKSkKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9QUF9DQVQocCwgbikoJnR5cGUpKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKG4sIHApKTsKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9QUF9DQVQoaXRlciwgTkROQk9PU1RfUFBfSU5DKG4pKSBpdGVyOwotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBJdGVyPgotICAgIHN0cnVjdCBkZWNvZGVfdHlwZV9pbXBsPG5kbmJvb3N0OjptcGw6OnNpemVfdDxGVU5fVkFSX1JFRl9JRCArIG4+LCBJdGVyPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBJdGVyIGl0ZXIwOwotICAgICAgICBORE5CT09TVF9UWVBFT0ZfREVDT0RFX1BBUkFNUyhORE5CT09TVF9QUF9JTkMobikpCi0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfUFBfQ0FUKHAsIG4pKCZ0eXBlKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhuLCBwKSAuLi4pOwotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1BQX0NBVChpdGVyLCBORE5CT09TVF9QUF9JTkMobikpIGl0ZXI7Ci0gICAgfTsKLQotICAgIC8vIGZ1bmN0aW9ucwotCi0gICAgdGVtcGxhdGU8Y2xhc3MgViwgY2xhc3MgUiBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX1BBUkFNUyhuLCBjbGFzcyBQKT4KLSAgICBzdHJ1Y3QgZW5jb2RlX3R5cGVfaW1wbDxWLCBSKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKG4sIFApKT4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgUiBORE5CT09TVF9QUF9DQVQoUCwgbik7Ci0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfVFlQRU9GX0VOQ09ERV9QQVJBTVMoTkROQk9PU1RfUFBfSU5DKG4pLCBGVU5fSUQgKyBuKSB0eXBlOwotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBWLCBjbGFzcyBSIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfUEFSQU1TKG4sIGNsYXNzIFApPgotICAgIHN0cnVjdCBlbmNvZGVfdHlwZV9pbXBsPFYsIFIoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMobiwgUCkgLi4uKT4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgUiBORE5CT09TVF9QUF9DQVQoUCwgbik7Ci0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfVFlQRU9GX0VOQ09ERV9QQVJBTVMoTkROQk9PU1RfUFBfSU5DKG4pLCBGVU5fVkFSX0lEICsgbikgdHlwZTsKLSAgICB9OwotCi0gICAgdGVtcGxhdGU8Y2xhc3MgSXRlcj4KLSAgICBzdHJ1Y3QgZGVjb2RlX3R5cGVfaW1wbDxuZG5ib29zdDo6bXBsOjpzaXplX3Q8RlVOX0lEICsgbj4sIEl0ZXI+Ci0gICAgewotICAgICAgICB0eXBlZGVmIEl0ZXIgaXRlcjA7Ci0gICAgICAgIE5ETkJPT1NUX1RZUEVPRl9ERUNPREVfUEFSQU1TKE5ETkJPT1NUX1BQX0lOQyhuKSkKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9QUF9DQVQocCwgbikodHlwZSkoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMobiwgcCkpOwotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1BQX0NBVChpdGVyLCBORE5CT09TVF9QUF9JTkMobikpIGl0ZXI7Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlPGNsYXNzIEl0ZXI+Ci0gICAgc3RydWN0IGRlY29kZV90eXBlX2ltcGw8bmRuYm9vc3Q6Om1wbDo6c2l6ZV90PEZVTl9WQVJfSUQgKyBuPiwgSXRlcj4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgSXRlciBpdGVyMDsKLSAgICAgICAgTkROQk9PU1RfVFlQRU9GX0RFQ09ERV9QQVJBTVMoTkROQk9PU1RfUFBfSU5DKG4pKQotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1BQX0NBVChwLCBuKSh0eXBlKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhuLCBwKSAuLi4pOwotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1BQX0NBVChpdGVyLCBORE5CT09TVF9QUF9JTkMobikpIGl0ZXI7Ci0gICAgfTsKLQotI2VuZGlmLy9ORE5CT09TVF9UWVBFT0ZfTk9fRlVOQ1RJT05fVFlQRVMKLQotI2lmbmRlZiBORE5CT09TVF9UWVBFT0ZfTk9fTUVNQkVSX0ZVTkNUSU9OX1RZUEVTCi0vLyBtZW1iZXIgZnVuY3Rpb25zCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX3F1YWxpZmllcgotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfaWQgTUVNX0ZVTl9JRAotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVvZi9yZWdpc3Rlcl9tZW1fZnVuY3Rpb25zLmhwcD4KLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfcXVhbGlmaWVyIGNvbnN0Ci0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9pZCBDT05TVF9NRU1fRlVOX0lECi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZW9mL3JlZ2lzdGVyX21lbV9mdW5jdGlvbnMuaHBwPgotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9xdWFsaWZpZXIgdm9sYXRpbGUKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX2lkIFZPTEFUSUxFX01FTV9GVU5fSUQKLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlb2YvcmVnaXN0ZXJfbWVtX2Z1bmN0aW9ucy5ocHA+Ci0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX3F1YWxpZmllciB2b2xhdGlsZSBjb25zdAotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfaWQgVk9MQVRJTEVfQ09OU1RfTUVNX0ZVTl9JRAotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVvZi9yZWdpc3Rlcl9tZW1fZnVuY3Rpb25zLmhwcD4KLQotI3VuZGVmIG4KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvcmVnaXN0ZXJfZnVuZGFtZW50YWwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvcmVnaXN0ZXJfZnVuZGFtZW50YWwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZTcyZWYzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL3JlZ2lzdGVyX2Z1bmRhbWVudGFsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAwNCBBcmthZGl5IFZlcnRsZXliCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDQgUGVkZXIgSG9sdAotLy8gVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZQotLy8gTGljZW5zZSwgVmVyc2lvbiAxLjAuIChodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpZm5kZWYgTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX0ZVTkRBTUVOVEFMX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfRlVOREFNRU5UQUxfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlb2YvdHlwZW9mLmhwcD4KLQotI2luY2x1ZGUgTkROQk9PU1RfVFlQRU9GX0lOQ1JFTUVOVF9SRUdJU1RSQVRJT05fR1JPVVAoKQotCi1ORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVFlQRSh1bnNpZ25lZCBjaGFyKQotTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RZUEUodW5zaWduZWQgc2hvcnQpCi1ORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVFlQRSh1bnNpZ25lZCBpbnQpCi1ORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVFlQRSh1bnNpZ25lZCBsb25nKQotCi1ORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVFlQRShzaWduZWQgY2hhcikKLU5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9UWVBFKHNpZ25lZCBzaG9ydCkKLU5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9UWVBFKHNpZ25lZCBpbnQpCi1ORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVFlQRShzaWduZWQgbG9uZykKLQotTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RZUEUoYm9vbCkKLU5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9UWVBFKGNoYXIpCi0KLU5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9UWVBFKGZsb2F0KQotTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RZUEUoZG91YmxlKQotTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RZUEUobG9uZyBkb3VibGUpCi0KLSNpZm5kZWYgTkROQk9PU1RfTk9fSU5UUklOU0lDX1dDSEFSX1QKLS8vIElmIHRoZSBmb2xsb3dpbmcgbGluZSBmYWlscyB0byBjb21waWxlIGFuZCB5b3UncmUgdXNpbmcgdGhlIEludGVsCi0vLyBjb21waWxlciwgc2VlIGh0dHA6Ly9saXN0cy5ib29zdC5vcmcvTWFpbEFyY2hpdmVzL2Jvb3N0LXVzZXJzL21zZzA2NTY3LnBocCwKLS8vIGFuZCBkZWZpbmUgTkROQk9PU1RfTk9fSU5UUklOU0lDX1dDSEFSX1Qgb24gdGhlIGNvbW1hbmQgbGluZS4KLU5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9UWVBFKHdjaGFyX3QpCi0jZW5kaWYKLQotI2lmIChkZWZpbmVkKE5ETkJPT1NUX01TVkMpICYmIChORE5CT09TVF9NU1ZDID09IDEyMDApKSBcCi0gICAgfHwgKGRlZmluZWQoTkROQk9PU1RfSU5URUxfQ1hYX1ZFUlNJT04pICYmIGRlZmluZWQoX01TQ19WRVIpICYmIChORE5CT09TVF9JTlRFTF9DWFhfVkVSU0lPTiA8PSA2MDApKSBcCi0gICAgfHwgKGRlZmluZWQoX19CT1JMQU5EQ19fKSAmJiAoX19CT1JMQU5EQ19fID09IDB4NjAwKSAmJiAoX01TQ19WRVIgPT0gMTIwMCkpCi1ORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVFlQRSh1bnNpZ25lZCBfX2ludDgpCi1ORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVFlQRShfX2ludDgpCi1ORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVFlQRSh1bnNpZ25lZCBfX2ludDE2KQotTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RZUEUoX19pbnQxNikKLU5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9UWVBFKHVuc2lnbmVkIF9faW50MzIpCi1ORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVFlQRShfX2ludDMyKQotI2lmZGVmIF9fQk9STEFORENfXwotTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RZUEUodW5zaWduZWQgX19pbnQ2NCkKLU5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9UWVBFKF9faW50NjQpCi0jZW5kaWYKLSNlbmRpZgotCi0jIGlmIGRlZmluZWQoTkROQk9PU1RfSEFTX0xPTkdfTE9ORykKLU5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9UWVBFKDo6bmRuYm9vc3Q6OnVsb25nX2xvbmdfdHlwZSkKLU5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9UWVBFKDo6bmRuYm9vc3Q6OmxvbmdfbG9uZ190eXBlKQotI2VsaWYgZGVmaW5lZChORE5CT09TVF9IQVNfTVNfSU5UNjQpCi1ORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVFlQRSh1bnNpZ25lZCBfX2ludDY0KQotTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RZUEUoX19pbnQ2NCkKLSNlbmRpZgotCi1ORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVFlQRSh2b2lkKQotCi0jZW5kaWYvL05ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9GVU5EQU1FTlRBTF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL3JlZ2lzdGVyX21lbV9mdW5jdGlvbnMuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvcmVnaXN0ZXJfbWVtX2Z1bmN0aW9ucy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM1ZGU4YzMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvcmVnaXN0ZXJfbWVtX2Z1bmN0aW9ucy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi0vLyBDb3B5cmlnaHQgKEMpIDIwMDQgQXJrYWRpeSBWZXJ0bGV5YgotLy8gVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZQotLy8gTGljZW5zZSwgVmVyc2lvbiAxLjAuIChodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlb2YvZW5jb2RlX2RlY29kZV9wYXJhbXMuaHBwPgotCi0vLyBtZW1iZXIgZnVuY3Rpb25zCi0KLXRlbXBsYXRlPGNsYXNzIFYsIGNsYXNzIFQsIGNsYXNzIFIgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19QQVJBTVMobiwgY2xhc3MgUCk+IAotc3RydWN0IGVuY29kZV90eXBlX2ltcGw8ViwgUihUOjoqKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhuLCBQKSkgTkROQk9PU1RfVFlQRU9GX3F1YWxpZmllcj4KLXsKLSAgICB0eXBlZGVmIFIgTkROQk9PU1RfUFBfQ0FUKFAsIG4pOwotICAgIHR5cGVkZWYgVCBORE5CT09TVF9QUF9DQVQoUCwgTkROQk9PU1RfUFBfSU5DKG4pKTsKLSAgICB0eXBlZGVmIE5ETkJPT1NUX1RZUEVPRl9FTkNPREVfUEFSQU1TKE5ETkJPT1NUX1BQX0FERChuLCAyKSwgTkROQk9PU1RfVFlQRU9GX2lkICsgbikgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIEl0ZXI+Ci1zdHJ1Y3QgZGVjb2RlX3R5cGVfaW1wbDxuZG5ib29zdDo6bXBsOjpzaXplX3Q8TkROQk9PU1RfVFlQRU9GX2lkICsgbj4sIEl0ZXI+Ci17Ci0gICAgdHlwZWRlZiBJdGVyIGl0ZXIwOwotICAgIE5ETkJPT1NUX1RZUEVPRl9ERUNPREVfUEFSQU1TKE5ETkJPT1NUX1BQX0FERChuLCAyKSkKLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3Qgd29ya2Fyb3VuZHsKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9QUF9DQVQocCwgbikoVDo6KnR5cGUpKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKG4sIHApKSBORE5CT09TVF9UWVBFT0ZfcXVhbGlmaWVyOwotICAgIH07Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB3b3JrYXJvdW5kPE5ETkJPT1NUX1BQX0NBVChwLCBORE5CT09TVF9QUF9JTkMobikpPjo6dHlwZSB0eXBlOwotICAgIHR5cGVkZWYgTkROQk9PU1RfUFBfQ0FUKGl0ZXIsIE5ETkJPT1NUX1BQX0FERChuLCAyKSkgaXRlcjsKLX07Ci0KLS8vIHVuZGVmIHBhcmFtZXRlcnMKLQotI3VuZGVmIE5ETkJPT1NUX1RZUEVPRl9pZAotI3VuZGVmIE5ETkJPT1NUX1RZUEVPRl9xdWFsaWZpZXIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL3RlbXBsYXRlX2VuY29kaW5nLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL3RlbXBsYXRlX2VuY29kaW5nLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjJhMGZlMS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi90ZW1wbGF0ZV9lbmNvZGluZy5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNjAgKzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDA0IEFya2FkaXkgVmVydGxleWIKLS8vIENvcHlyaWdodCAoQykgMjAwNSBQZWRlciBIb2x0Ci0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9UWVBFT0ZfVEVNUExBVEVfRU5DT0RJTkdfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9URU1QTEFURV9FTkNPRElOR19IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW1fdHJhaWxpbmcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jb250cm9sL2lpZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2RldGFpbC9pc191bmFyeS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vcmVwZWF0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvdHVwbGUvZWF0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL3RyYW5zZm9ybS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9mb3JfZWFjaF9pLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL2NhdC5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlb2YvZW5jb2RlX2RlY29kZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZW9mL2ludF9lbmNvZGluZy5ocHA+Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlb2YvdHlwZV90ZW1wbGF0ZV9wYXJhbS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZW9mL2ludGVncmFsX3RlbXBsYXRlX3BhcmFtLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlb2YvdGVtcGxhdGVfdGVtcGxhdGVfcGFyYW0uaHBwPgotCi0jaWZkZWYgX19CT1JMQU5EQ19fCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9RVUFMSUZZKFApIHNlbGZfdDo6UAotI2Vsc2UKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1FVQUxJRlkoUCkgUAotI2VuZGlmCi0vLyBUaGUgdGVtcGxhdGUgcGFyYW1ldGVyIGRlc2NyaXB0aW9uLCBlbnRlcmVkIGJ5IHRoZSB1c2VyLAotLy8gaXMgY29udmVydGVkIGludG8gYSBwb2x5bW9ycGhpYyAib2JqZWN0IgotLy8gdGhhdCBpcyB1c2VkIHRvIGdlbmVyYXRlIHRoZSBjb2RlIHJlc3BvbnNpYmxlIGZvcgotLy8gZW5jb2RpbmcvZGVjb2RpbmcgdGhlIHBhcmFtZXRlciwgZXRjLgotCi0vLyBtYWtlIHN1cmUgdG8gY2F0IHRoZSBzZXF1ZW5jZSBmaXJzdCwgYW5kIG9ubHkgdGhlbiBhZGQgdGhlIHByZWZpeC4KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX01BS0VfT0JKKGVsZW0pIE5ETkJPT1NUX1BQX0NBVChcCi0gICAgTkROQk9PU1RfVFlQRU9GX01BS0VfT0JKLFwKLSAgICBORE5CT09TVF9QUF9TRVFfQ0FUKChfKSBORE5CT09TVF9UWVBFT0ZfVE9fU0VRKGVsZW0pKVwKLSAgICApCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1RPX1NFUSh0b2tlbnMpIE5ETkJPT1NUX1RZUEVPRl8gIyMgdG9rZW5zICMjIF9ORE5CT09TVF9UWVBFT0YKLQotLy8gTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RFTVBMQVRFCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RFTVBMQVRFX0VYUExJQ0lUX0lEKE5hbWUsIFBhcmFtcywgSWQpXAotICAgIE5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9URU1QTEFURV9JTVBMKFwKLSAgICAgICAgTmFtZSxcCi0gICAgICAgIE5ETkJPT1NUX1RZUEVPRl9NQUtFX09CSlMoTkROQk9PU1RfVFlQRU9GX1RPU0VRKFBhcmFtcykpLFwKLSAgICAgICAgTkROQk9PU1RfUFBfU0VRX1NJWkUoTkROQk9PU1RfVFlQRU9GX1RPU0VRKFBhcmFtcykpLFwKLSAgICAgICAgSWQpCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RFTVBMQVRFKE5hbWUsIFBhcmFtcylcCi0gICAgTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RFTVBMQVRFX0VYUExJQ0lUX0lEKE5hbWUsIFBhcmFtcywgTkROQk9PU1RfVFlQRU9GX1VOSVFVRV9JRCgpKQotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9PQkpFQ1RfTUFLRVIocywgZGF0YSwgZWxlbSlcCi0gICAgTkROQk9PU1RfVFlQRU9GX01BS0VfT0JKKGVsZW0pCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX01BS0VfT0JKUyhQYXJhbXMpXAotICAgIE5ETkJPT1NUX1BQX1NFUV9UUkFOU0ZPUk0oTkROQk9PU1RfVFlQRU9GX09CSkVDVF9NQUtFUiwgfiwgUGFyYW1zKQotCi0vLyBBcyBzdWdnZXN0ZWQgYnkgUGF1bCBNZW5zb25pZGVzOgotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9UT1NFUSh4KVwKLSAgICBORE5CT09TVF9QUF9JSUYoXAotICAgICAgICBORE5CT09TVF9QUF9JU19VTkFSWSh4KSxcCi0gICAgICAgIHggTkROQk9PU1RfUFBfVFVQTEVfRUFUKDMpLCBORE5CT09TVF9QUF9SRVBFQVRcCi0gICAgKSh4LCBORE5CT09TVF9UWVBFT0ZfVE9TRVFfMiwgfikKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfVE9TRVFfMih6LCBuLCBfKSAoY2xhc3MpCi0KLS8vIE5ETkJPT1NUX1RZUEVPRl9WSVJUVUFMCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX0NBVF80KGEsIGIsIGMsIGQpIE5ETkJPT1NUX1RZUEVPRl9DQVRfNF9JKGEsIGIsIGMsIGQpCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9DQVRfNF9JKGEsIGIsIGMsIGQpIGEgIyMgYiAjIyBjICMjIGQKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfVklSVFVBTChGdW4sIE9iailcCi0gICAgTkROQk9PU1RfVFlQRU9GX0NBVF80KE5ETkJPT1NUX1RZUEVPRl8sIE5ETkJPT1NUX1BQX1NFUV9IRUFEKE9iaiksIF8sIEZ1bikKLQotLy8gTkROQk9PU1RfVFlQRU9GX1NFUV9FTlVNW19UUkFJTElOR11bXzFdCi0vLyBUd28gdmVyc2lvbnMgcHJvdmlkZWQgZHVlIHRvIHJlZW50cmFuY3kgaXNzdWUKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfU0VRX0VYUEFORF9FTEVNRU5UKHosbixzZXEpXAotICAgTkROQk9PU1RfUFBfU0VRX0VMRU0oMCxzZXEpICh6LG4sTkROQk9PU1RfUFBfU0VRX0VMRU0obixORE5CT09TVF9QUF9TRVFfRUxFTSgxLHNlcSkpKQotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9TRVFfRU5VTShzZXEsbWFjcm8pXAotICAgIE5ETkJPT1NUX1BQX0VOVU0oTkROQk9PU1RfUFBfU0VRX1NJWkUoc2VxKSxORE5CT09TVF9UWVBFT0ZfU0VRX0VYUEFORF9FTEVNRU5ULChtYWNybykoc2VxKSkKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfU0VRX0VOVU1fVFJBSUxJTkcoc2VxLG1hY3JvKVwKLSAgICBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HKE5ETkJPT1NUX1BQX1NFUV9TSVpFKHNlcSksTkROQk9PU1RfVFlQRU9GX1NFUV9FWFBBTkRfRUxFTUVOVCwobWFjcm8pKHNlcSkpCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1NFUV9FWFBBTkRfRUxFTUVOVF8xKHosbixzZXEpXAotICAgIE5ETkJPT1NUX1BQX1NFUV9FTEVNKDAsc2VxKSAoeixuLE5ETkJPT1NUX1BQX1NFUV9FTEVNKG4sTkROQk9PU1RfUFBfU0VRX0VMRU0oMSxzZXEpKSkKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfU0VRX0VOVU1fMShzZXEsbWFjcm8pXAotICAgIE5ETkJPT1NUX1BQX0VOVU0oTkROQk9PU1RfUFBfU0VRX1NJWkUoc2VxKSxORE5CT09TVF9UWVBFT0ZfU0VRX0VYUEFORF9FTEVNRU5UXzEsKG1hY3JvKShzZXEpKQotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9TRVFfRU5VTV9UUkFJTElOR18xKHNlcSxtYWNybylcCi0gICAgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElORyhORE5CT09TVF9QUF9TRVFfU0laRShzZXEpLE5ETkJPT1NUX1RZUEVPRl9TRVFfRVhQQU5EX0VMRU1FTlRfMSwobWFjcm8pKHNlcSkpCi0KLS8vCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1BMQUNFSE9MREVSKHosIG4sIGVsZW0pXAotICAgIE5ETkJPT1NUX1RZUEVPRl9WSVJUVUFMKFBMQUNFSE9MREVSLCBlbGVtKShlbGVtKQotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9QTEFDRUhPTERFUl9UWVBFUyh6LCBuLCBlbGVtKVwKLSAgICBORE5CT09TVF9UWVBFT0ZfVklSVFVBTChQTEFDRUhPTERFUl9UWVBFUywgZWxlbSkoZWxlbSwgbikKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVEVNUExBVEVfRU5DT0RFX1BBUkFNKHIsIGRhdGEsIG4sIGVsZW0pXAotICAgIE5ETkJPT1NUX1RZUEVPRl9WSVJUVUFMKEVOQ09ERSwgZWxlbSkoZWxlbSwgbikKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVEVNUExBVEVfREVDT0RFX1BBUkFNKHIsIGRhdGEsIG4sIGVsZW0pXAotICAgIE5ETkJPT1NUX1RZUEVPRl9WSVJUVUFMKERFQ09ERSwgZWxlbSkoZWxlbSwgbikKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVEVNUExBVEVfUEFSQU1fUEFJUih6LCBuLCBlbGVtKSBcCi0gICAgTkROQk9PU1RfVFlQRU9GX1ZJUlRVQUwoRVhQQU5EVFlQRSwgZWxlbSkoZWxlbSkgTkROQk9PU1RfUFBfQ0FUKFAsIG4pCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX0RFRkFVTFRfVEVNUExBVEVfVFlQRShOYW1lLFBhcmFtcyxJRClcCi0gICAgTmFtZTwgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfU0VRX1NJWkUoUGFyYW1zKSwgUCkgPgotCi0vL1NpbmNlIHdlIGFyZSBjcmVhdGluZyBhbiBpbnRlcm5hbCBkZWNvZGUgc3RydWN0LCB3ZSBuZWVkIHRvIHVzZSBkaWZmZXJlbnQgdGVtcGxhdGUgbmFtZXMsIFQgaW5zdGVhZCBvZiBQLgotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfREVDT0RFUl9UWVBFX1BBUkFNX1BBSVIoeixuLGVsZW0pIFwKLSAgICBORE5CT09TVF9UWVBFT0ZfVklSVFVBTChFWFBBTkRUWVBFLCBlbGVtKShlbGVtKSBORE5CT09TVF9QUF9DQVQoVCwgbikKLQotLy9EZWZhdWx0IHRlbXBsYXRlIHBhcmFtIGRlY29kaW5nCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1RZUEVERUZfREVDT0RFRF9URU1QTEFURV9UWVBFKE5hbWUsUGFyYW1zKVwKLSAgICB0eXBlZGVmIE5hbWU8TkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfU0VRX1NJWkUoUGFyYW1zKSxORE5CT09TVF9UWVBFT0ZfUVVBTElGWShQKSk+IHR5cGU7Ci0KLS8vQnJhbmNoIHRoZSBkZWNvZGluZwotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfVFlQRURFRl9ERUNPREVEX1RZUEUoTmFtZSxQYXJhbXMpXAotICAgIE5ETkJPT1NUX1BQX0lGKE5ETkJPT1NUX1RZUEVPRl9IQVNfVEVNUExBVEVTKFBhcmFtcyksXAotICAgICAgICBORE5CT09TVF9UWVBFT0ZfVFlQRURFRl9ERUNPREVEX1RFTVBMQVRFX1RFTVBMQVRFX1RZUEUsXAotICAgICAgICBORE5CT09TVF9UWVBFT0ZfVFlQRURFRl9ERUNPREVEX1RFTVBMQVRFX1RZUEUpKE5hbWUsUGFyYW1zKQotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9URU1QTEFURV9JTVBMKE5hbWUsIFBhcmFtcywgU2l6ZSwgSUQpXAotICAgIE5ETkJPT1NUX1RZUEVPRl9CRUdJTl9FTkNPREVfTlNcCi0gICAgTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RFTVBMQVRFX1RFTVBMQVRFX0lNUEwoTmFtZSwgUGFyYW1zLCBJRClcCi0gICAgdGVtcGxhdGU8Y2xhc3MgVlwKLSAgICAgICAgTkROQk9PU1RfVFlQRU9GX1NFUV9FTlVNX1RSQUlMSU5HKFBhcmFtcywgTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RFTVBMQVRFX1BBUkFNX1BBSVIpXAotICAgID5cCi0gICAgc3RydWN0IGVuY29kZV90eXBlX2ltcGw8ViwgTmFtZTxORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhTaXplLCBQKT4gPlwKLSAgICB7XAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0Ojp0eXBlX29mOjpwdXNoX2JhY2s8ViwgbmRuYm9vc3Q6Om1wbDo6c2l6ZV90PElEPiA+Ojp0eXBlIFYwO1wKLSAgICAgICAgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX0koTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RFTVBMQVRFX0VOQ09ERV9QQVJBTSwgfiwgUGFyYW1zKVwKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9QUF9DQVQoViwgU2l6ZSkgdHlwZTtcCi0gICAgfTtcCi0gICAgdGVtcGxhdGU8Y2xhc3MgSXRlcj5cCi0gICAgc3RydWN0IGRlY29kZV90eXBlX2ltcGw8bmRuYm9vc3Q6Om1wbDo6c2l6ZV90PElEPiwgSXRlcj5cCi0gICAge1wKLSAgICAgICAgdHlwZWRlZiBkZWNvZGVfdHlwZV9pbXBsPG5kbmJvb3N0OjptcGw6OnNpemVfdDxJRD4sIEl0ZXI+IHNlbGZfdDtcCi0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6Om1wbDo6c2l6ZV90PElEPiBzZWxmX2lkO1wKLSAgICAgICAgdHlwZWRlZiBJdGVyIGl0ZXIwO1wKLSAgICAgICAgTkROQk9PU1RfUFBfU0VRX0ZPUl9FQUNIX0koTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RFTVBMQVRFX0RFQ09ERV9QQVJBTSwgfiwgUGFyYW1zKVwKLSAgICAgICAgTkROQk9PU1RfVFlQRU9GX1RZUEVERUZfREVDT0RFRF9UWVBFKE5hbWUsIFBhcmFtcylcCi0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfUFBfQ0FUKGl0ZXIsIFNpemUpIGl0ZXI7XAotICAgIH07XAotICAgIE5ETkJPT1NUX1RZUEVPRl9FTkRfRU5DT0RFX05TCi0KLSNlbmRpZi8vTkROQk9PU1RfVFlQRU9GX1RFTVBMQVRFX0VOQ09ESU5HX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvdGVtcGxhdGVfdGVtcGxhdGVfcGFyYW0uaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvdGVtcGxhdGVfdGVtcGxhdGVfcGFyYW0uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMDgwMmI3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL3RlbXBsYXRlX3RlbXBsYXRlX3BhcmFtLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE0OSArMCwwIEBACi0vLyBDb3B5cmlnaHQgKEMpIDIwMDUgUGVkZXIgSG9sdAotLy8gQ29weXJpZ2h0IChDKSAyMDA1IEFya2FkaXkgVmVydGxleWIKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9URU1QTEFURV9URU1QTEFURV9QQVJBTV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1RFTVBMQVRFX1RFTVBMQVRFX1BBUkFNX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2xvZ2ljYWwvb3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9zZXEvZm9sZF9sZWZ0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL2VudW0uaHBwPgotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9NQUtFX09CSl90ZW1wbGF0ZSh4KSAgIE5ETkJPT1NUX1RZUEVPRl9URU1QTEFURV9QQVJBTSh4KQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfVEVNUExBVEUoWCkgdGVtcGxhdGUoWCkgTkROQk9PU1RfVFlQRU9GX0VBVAotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfdGVtcGxhdGUoWCkgKHRlbXBsYXRlKFgpKQotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9URU1QTEFURV9QQVJBTShQYXJhbXMpXAotICAgIChURU1QTEFURV9QQVJBTSlcCi0gICAgKFBhcmFtcykKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfVEVNUExBVEVfUEFSQU1fR0VUUEFSQU1TKFRoaXMpXAotICAgIE5ETkJPT1NUX1RZUEVPRl9UT1NFUShORE5CT09TVF9QUF9TRVFfRUxFTSgxLCBUaGlzKSkKLQotLy9FbmNvZGUgLyBkZWNvZGUgdGhpcwotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfVEVNUExBVEVfUEFSQU1fRU5DT0RFKFRoaXMsIG4pXAotICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6dHlwZV9vZjo6ZW5jb2RlX3RlbXBsYXRlPE5ETkJPT1NUX1BQX0NBVChWLCBuKSxcCi0gICAgICAgTkROQk9PU1RfUFBfQ0FUKFAsIG4pPE5ETkJPT1NUX1RZUEVPRl9TRVFfRU5VTShORE5CT09TVF9UWVBFT0ZfTUFLRV9PQkpTKE5ETkJPT1NUX1RZUEVPRl9URU1QTEFURV9QQVJBTV9HRVRQQVJBTVMoVGhpcykpLE5ETkJPT1NUX1RZUEVPRl9QTEFDRUhPTERFUikgPlwKLSAgID46OnR5cGUgTkROQk9PU1RfUFBfQ0FUKFYsIE5ETkJPT1NUX1BQX0lOQyhuKSk7Ci0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1RFTVBMQVRFX1BBUkFNX0RFQ09ERShUaGlzLCBuKVwKLSAgIHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OmRlY29kZV90ZW1wbGF0ZTwgTkROQk9PU1RfUFBfQ0FUKGl0ZXIsIG4pID4gTkROQk9PU1RfUFBfQ0FUKGQsIG4pO1wKLSAgIHR5cGVkZWYgdHlwZW5hbWUgTkROQk9PU1RfUFBfQ0FUKGQsIG4pOjp0eXBlIE5ETkJPT1NUX1BQX0NBVChQLCBuKTtcCi0gICB0eXBlZGVmIHR5cGVuYW1lIE5ETkJPT1NUX1BQX0NBVChkLCBuKTo6aXRlciBORE5CT09TVF9QUF9DQVQoaXRlcixORE5CT09TVF9QUF9JTkMobikpOwotCi0vLyB0ZW1wbGF0ZTxjbGFzcywgdW5zaWduZWQgaW50LCAuLi4+IGNsYXNzCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9URU1QTEFURV9QQVJBTV9FWFBBTkRUWVBFKFRoaXMpIFwKLSAgICB0ZW1wbGF0ZSA8TkROQk9PU1RfUFBfU0VRX0VOVU0oTkROQk9PU1RfVFlQRU9GX1RFTVBMQVRFX1BBUkFNX0dFVFBBUkFNUyhUaGlzKSkgPiBjbGFzcwotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9URU1QTEFURV9QQVJBTV9QTEFDRUhPTERFUihQYXJhbSlcCi0gICAgTmVzdGVkX1RlbXBsYXRlX1RlbXBsYXRlX0FyZ3VtZW50c19Ob3RfU3VwcG9ydGVkCi0KLS8vJ3RlbXBsYXRlPGNsYXNzLGludD4gY2xhc3MnIGlzIHJlZHVjZWQgdG8gJ2NsYXNzJwotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfVEVNUExBVEVfUEFSQU1fREVDTEFSQVRJT05fVFlQRShQYXJhbSkgY2xhc3MKLQotLy8gVDM8aW50LCAodW5zaWduZWQgaW50KTAsIC4uLj4KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1RFTVBMQVRFX1BBUkFNX1BMQUNFSE9MREVSX1RZUEVTKFBhcmFtLCBuKVwKLSAgICBORE5CT09TVF9QUF9DQVQoVCxuKTxORE5CT09TVF9UWVBFT0ZfU0VRX0VOVU1fMShORE5CT09TVF9UWVBFT0ZfTUFLRV9PQkpTKE5ETkJPT1NUX1RZUEVPRl9URU1QTEFURV9QQVJBTV9HRVRQQVJBTVMoUGFyYW0pKSxORE5CT09TVF9UWVBFT0ZfUExBQ0VIT0xERVIpID4KLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfVEVNUExBVEVfUEFSQU1fSVNURU1QTEFURSAxCi0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vIG1vdmUgdG8gZW5jb2RlX2RlY29kZT8KLQotTkROQk9PU1RfVFlQRU9GX0JFR0lOX0VOQ09ERV9OUwotCi10ZW1wbGF0ZTxjbGFzcyBWLCBjbGFzcyBUeXBlX05vdF9SZWdpc3RlcmVkX1dpdGhfVHlwZW9mX1N5c3RlbT4gc3RydWN0IGVuY29kZV90ZW1wbGF0ZV9pbXBsOwotdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgSXRlcj4gc3RydWN0IGRlY29kZV90ZW1wbGF0ZV9pbXBsOwotCi1ORE5CT09TVF9UWVBFT0ZfRU5EX0VOQ09ERV9OUwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgdHlwZV9vZiB7Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBWLCBjbGFzcyBUPiBzdHJ1Y3QgZW5jb2RlX3RlbXBsYXRlCi0gICAgICAgIDogTkROQk9PU1RfVFlQRU9GX0VOQ09ERV9OU19RVUFMSUZJRVI6OmVuY29kZV90ZW1wbGF0ZV9pbXBsPFYsIFQ+Ci0gICAge307Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBJdGVyPiBzdHJ1Y3QgZGVjb2RlX3RlbXBsYXRlCi0gICAgICAgIDogTkROQk9PU1RfVFlQRU9GX0VOQ09ERV9OU19RVUFMSUZJRVI6OmRlY29kZV90ZW1wbGF0ZV9pbXBsPHR5cGVuYW1lIEl0ZXI6OnR5cGUsIHR5cGVuYW1lIEl0ZXI6Om5leHQ+Ci0gICAge307Ci19fQotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLyBtb3ZlIHRvIHRlbXBsYXRlX2VuY29kaW5nLmhwcD8KLQotLy9UZW1wbGF0ZSB0ZW1wbGF0ZSByZWdpc3RyYXRpb24KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RZUEVfRk9SX1RFTVBMQVRFX1RFTVBMQVRFKE5hbWUsUGFyYW1zLElEKVwKLSAgICB0ZW1wbGF0ZTxjbGFzcyBWXAotICAgICAgICBORE5CT09TVF9UWVBFT0ZfU0VRX0VOVU1fVFJBSUxJTkcoUGFyYW1zLE5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9URU1QTEFURV9QQVJBTV9QQUlSKVwKLSAgICA+XAotICAgIHN0cnVjdCBlbmNvZGVfdGVtcGxhdGVfaW1wbDxWLE5hbWU8XAotICAgICAgICBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhcCi0gICAgICAgIE5ETkJPT1NUX1BQX1NFUV9TSVpFKFBhcmFtcyksXAotICAgICAgICBQKT4gPlwKLSAgICAgICAgOiBuZG5ib29zdDo6dHlwZV9vZjo6cHVzaF9iYWNrPFYsIG5kbmJvb3N0OjptcGw6OnNpemVfdDxJRD4gPlwKLSAgICB7XAotICAgIH07XAotICAgIHRlbXBsYXRlPGNsYXNzIEl0ZXI+IHN0cnVjdCBkZWNvZGVfdGVtcGxhdGVfaW1wbDxuZG5ib29zdDo6bXBsOjpzaXplX3Q8SUQ+LCBJdGVyPlwKLSAgICB7XAotICAgICAgICBORE5CT09TVF9QUF9SRVBFQVQoTkROQk9PU1RfUFBfU0VRX1NJWkUoUGFyYW1zKSxORE5CT09TVF9UWVBFT0ZfVFlQRURFRl9JTlRfUE4sXylcCi0gICAgICAgIHR5cGVkZWYgTmFtZTxORE5CT09TVF9UWVBFT0ZfU0VRX0VOVU0oUGFyYW1zLE5ETkJPT1NUX1RZUEVPRl9QTEFDRUhPTERFUikgPiB0eXBlO1wKLSAgICAgICAgdHlwZWRlZiBJdGVyIGl0ZXI7XAotICAgIH07Ci0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1RZUEVERUZfSU5UX1BOKHosbixQYXJhbXMpIHR5cGVkZWYgaW50IE5ETkJPT1NUX1BQX0NBVChQLG4pOwotCi0jaWZkZWYgX19CT1JMQU5EQ19fCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9ERUNPREVfTkVTVEVEX1RFTVBMQVRFX0hFTFBFUl9OQU1FIE5ETkJPT1NUX1BQX0NBVChcCi0gICAgICAgIE5ETkJPT1NUX1BQX0NBVChcCi0gICAgICAgICAgICBORE5CT09TVF9QUF9DQVQoXAotICAgICAgICAgICAgICAgIGRlY29kZV9uZXN0ZWRfdGVtcGxhdGVfaGVscGVyLFwKLSAgICAgICAgICAgICAgICBORE5CT09TVF9UWVBFT0ZfUkVHSVNUUkFUSU9OX0dST1VQXAotICAgICAgICAgICAgKSwweDEwMDAwXAotICAgICAgICApLF9fTElORV9fXAotICAgICkKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX0RFQ09ERV9ORVNURURfVEVNUExBVEVfSEVMUEVSX0lNUEwoTmFtZSxQYXJhbXMsSUQpXAotICAgIHN0cnVjdCBORE5CT09TVF9UWVBFT0ZfREVDT0RFX05FU1RFRF9URU1QTEFURV9IRUxQRVJfTkFNRSB7XAotICAgICAgICB0ZW1wbGF0ZTxORE5CT09TVF9UWVBFT0ZfU0VRX0VOVU0oUGFyYW1zLE5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9ERUNMQVJFX0RFQ09ERVJfVFlQRV9QQVJBTV9QQUlSKSA+XAotICAgICAgICBzdHJ1Y3QgZGVjb2RlX3BhcmFtcztcCi0gICAgICAgIHRlbXBsYXRlPE5ETkJPT1NUX1RZUEVPRl9TRVFfRU5VTShQYXJhbXMsTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX0RFQ09ERVJfVFlQRV9QQVJBTV9QQUlSKSA+XAotICAgICAgICBzdHJ1Y3QgZGVjb2RlX3BhcmFtczxORE5CT09TVF9UWVBFT0ZfU0VRX0VOVU0oUGFyYW1zLE5ETkJPT1NUX1RZUEVPRl9QTEFDRUhPTERFUl9UWVBFUykgPlwKLSAgICAgICAge1wKLSAgICAgICAgICAgIHR5cGVkZWYgTmFtZTxORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9TRVFfU0laRShQYXJhbXMpLFQpPiB0eXBlO1wKLSAgICAgICAgfTtcCi0gICAgfTsKLS8vVGVtcGxhdGUgdGVtcGxhdGUgcGFyYW0gZGVjb2RpbmcKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1RZUEVERUZfREVDT0RFRF9URU1QTEFURV9URU1QTEFURV9UWVBFKE5hbWUsUGFyYW1zKVwKLSAgICB0eXBlZGVmIHR5cGVuYW1lIE5ETkJPT1NUX1RZUEVPRl9ERUNPREVfTkVTVEVEX1RFTVBMQVRFX0hFTFBFUl9OQU1FOjpkZWNvZGVfcGFyYW1zPE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX1NFUV9TSVpFKFBhcmFtcyksUCk+Ojp0eXBlIHR5cGU7Ci0KLSNlbHNlCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9ERUNPREVfTkVTVEVEX1RFTVBMQVRFX0hFTFBFUl9JTVBMKE5hbWUsUGFyYW1zLElEKQotCi0vL1RlbXBsYXRlIHRlbXBsYXRlIHBhcmFtIGRlY29kaW5nCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9UWVBFREVGX0RFQ09ERURfVEVNUExBVEVfVEVNUExBVEVfVFlQRShOYW1lLFBhcmFtcylcCi0gICAgdGVtcGxhdGU8TkROQk9PU1RfVFlQRU9GX1NFUV9FTlVNKFBhcmFtcyxORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfREVDTEFSRV9ERUNPREVSX1RZUEVfUEFSQU1fUEFJUikgPlwKLSAgICBzdHJ1Y3QgZGVjb2RlX3BhcmFtcztcCi0gICAgdGVtcGxhdGU8TkROQk9PU1RfVFlQRU9GX1NFUV9FTlVNKFBhcmFtcyxORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfREVDT0RFUl9UWVBFX1BBUkFNX1BBSVIpID5cCi0gICAgc3RydWN0IGRlY29kZV9wYXJhbXM8TkROQk9PU1RfVFlQRU9GX1NFUV9FTlVNKFBhcmFtcyxORE5CT09TVF9UWVBFT0ZfUExBQ0VIT0xERVJfVFlQRVMpID5cCi0gICAge1wKLSAgICAgICAgdHlwZWRlZiBOYW1lPE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX1NFUV9TSVpFKFBhcmFtcyksVCk+IHR5cGU7XAotICAgIH07XAotICAgIHR5cGVkZWYgdHlwZW5hbWUgZGVjb2RlX3BhcmFtczxORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9TRVFfU0laRShQYXJhbXMpLFApPjo6dHlwZSB0eXBlOwotI2VuZGlmCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9ERUNMQVJFX0RFQ09ERVJfVFlQRV9QQVJBTV9QQUlSKHosbixlbGVtKSBcCi0gICAgTkROQk9PU1RfVFlQRU9GX1ZJUlRVQUwoREVDTEFSQVRJT05fVFlQRSwgZWxlbSkoZWxlbSkgTkROQk9PU1RfUFBfQ0FUKFQsIG4pCi0KLS8vIE5ETkJPT1NUX1RZUEVPRl9IQVNfVEVNUExBVEVTCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9IQVNfVEVNUExBVEVTKFBhcmFtcylcCi0gICAgTkROQk9PU1RfUFBfU0VRX0ZPTERfTEVGVChORE5CT09TVF9UWVBFT0ZfSEFTX1RFTVBMQVRFU19PUCwgMCwgUGFyYW1zKQotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9IQVNfVEVNUExBVEVTX09QKHMsIHN0YXRlLCBlbGVtKVwKLSAgICBORE5CT09TVF9QUF9PUihzdGF0ZSwgTkROQk9PU1RfVFlQRU9GX1ZJUlRVQUwoSVNURU1QTEFURSwgZWxlbSkpCi0KLS8vRGVmaW5lIHRlbXBsYXRlIHRlbXBsYXRlIGFyZ3VtZW50cwotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVEVNUExBVEVfVEVNUExBVEVfSU1QTChOYW1lLFBhcmFtcyxJRClcCi0gICAgTkROQk9PU1RfUFBfSUYoTkROQk9PU1RfVFlQRU9GX0hBU19URU1QTEFURVMoUGFyYW1zKSxcCi0gICAgICAgIE5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9ERUNPREVfTkVTVEVEX1RFTVBMQVRFX0hFTFBFUl9JTVBMLFwKLSAgICAgICAgTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RZUEVfRk9SX1RFTVBMQVRFX1RFTVBMQVRFKShOYW1lLFBhcmFtcyxJRCkKLQotI2VuZGlmIC8vTkROQk9PU1RfVFlQRU9GX1RFTVBMQVRFX1RFTVBMQVRFX1BBUkFNX0hQUF9JTkNMVURFRApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvdHlwZV9lbmNvZGluZy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi90eXBlX2VuY29kaW5nLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWQ1OWJmMi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi90eXBlX2VuY29kaW5nLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAwNCBBcmthZGl5IFZlcnRsZXliCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9UWVBFT0ZfVFlQRV9FTkNPRElOR19IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1RZUEVfRU5DT0RJTkdfSFBQX0lOQ0xVREVECi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RZUEVfSU1QTChULCBJZCkgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3QgZW5jb2RlX3R5cGVfaW1wbDxWLCBUID4gICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgOiBuZG5ib29zdDo6dHlwZV9vZjo6cHVzaF9iYWNrPFYsIG5kbmJvb3N0OjptcGw6OnNpemVfdDxJZD4gPiAgICAgICAgIFwKLSAgICB7fTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB0ZW1wbGF0ZTxjbGFzcyBJdGVyPiBzdHJ1Y3QgZGVjb2RlX3R5cGVfaW1wbDxuZG5ib29zdDo6bXBsOjpzaXplX3Q8SWQ+LCBJdGVyPiBcCi0gICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHR5cGVkZWYgVCB0eXBlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHR5cGVkZWYgSXRlciBpdGVyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfTsKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVFlQRV9FWFBMSUNJVF9JRChUeXBlLCBJZCkgICAgICAgICAgICAgICAgXAotICAgIE5ETkJPT1NUX1RZUEVPRl9CRUdJTl9FTkNPREVfTlMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIE5ETkJPT1NUX1RZUEVPRl9SRUdJU1RFUl9UWVBFX0lNUEwoVHlwZSwgSWQpICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIE5ETkJPT1NUX1RZUEVPRl9FTkRfRU5DT0RFX05TCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1JFR0lTVEVSX1RZUEUoVHlwZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVFlQRV9FWFBMSUNJVF9JRChUeXBlLCBORE5CT09TVF9UWVBFT0ZfVU5JUVVFX0lEKCkpCi0KLSNlbmRpZi8vTkROQk9PU1RfVFlQRU9GX1RZUEVfRU5DT0RJTkdfSFBQX0lOQ0xVREVECmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi90eXBlX3RlbXBsYXRlX3BhcmFtLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL3R5cGVfdGVtcGxhdGVfcGFyYW0uaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YWJjNDVjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL3R5cGVfdGVtcGxhdGVfcGFyYW0uaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDA1IEFya2FkaXkgVmVydGxleWIKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9UWVBFX1RFTVBMQVRFX1BBUkFNX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfVFlQRV9URU1QTEFURV9QQVJBTV9IUFBfSU5DTFVERUQKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfY2xhc3NfTkROQk9PU1RfVFlQRU9GIChjbGFzcykKLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX3R5cGVuYW1lX05ETkJPT1NUX1RZUEVPRiAodHlwZW5hbWUpCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX01BS0VfT0JKX2NsYXNzIE5ETkJPT1NUX1RZUEVPRl9UWVBFX1BBUkFNCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9NQUtFX09CSl90eXBlbmFtZSBORE5CT09TVF9UWVBFT0ZfVFlQRV9QQVJBTQotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9UWVBFX1BBUkFNXAotICAgIChUWVBFX1BBUkFNKQotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9UWVBFX1BBUkFNX0VYUEFORFRZUEUoUGFyYW0pIGNsYXNzCi0KLS8vIFRZUEVfUEFSQU0gInZpcnR1YWwgZnVuY3Rpb25zIiBpbXBsZW1lbnRhdGlvbgotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9UWVBFX1BBUkFNX0VOQ09ERShUaGlzLCBuKVwKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0Ojp0eXBlX29mOjplbmNvZGVfdHlwZTxcCi0gICAgICAgIE5ETkJPT1NUX1BQX0NBVChWLCBuKSxcCi0gICAgICAgIE5ETkJPT1NUX1BQX0NBVChQLCBuKVwKLSAgICA+Ojp0eXBlIE5ETkJPT1NUX1BQX0NBVChWLCBORE5CT09TVF9QUF9JTkMobikpOyAKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfVFlQRV9QQVJBTV9ERUNPREUoVGhpcywgbilcCi0gICAgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6ZGVjb2RlX3R5cGU8IE5ETkJPT1NUX1BQX0NBVChpdGVyLCBuKSA+IE5ETkJPT1NUX1BQX0NBVChkLCBuKTtcCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBORE5CT09TVF9QUF9DQVQoZCwgbik6OnR5cGUgTkROQk9PU1RfUFBfQ0FUKFAsIG4pO1wKLSAgICB0eXBlZGVmIHR5cGVuYW1lIE5ETkJPT1NUX1BQX0NBVChkLCBuKTo6aXRlciBORE5CT09TVF9QUF9DQVQoaXRlciwgTkROQk9PU1RfUFBfSU5DKG4pKTsKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfVFlQRV9QQVJBTV9QTEFDRUhPTERFUihQYXJhbSkgaW50Ci0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9UWVBFX1BBUkFNX0RFQ0xBUkFUSU9OX1RZUEUoUGFyYW0pIGNsYXNzCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9UWVBFX1BBUkFNX1BMQUNFSE9MREVSX1RZUEVTKFBhcmFtLCBuKSBORE5CT09TVF9QUF9DQVQoVCxuKQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfVFlQRV9QQVJBTV9JU1RFTVBMQVRFIDAKLQotI2VuZGlmLy9ORE5CT09TVF9UWVBFT0ZfVFlQRV9URU1QTEFURV9QQVJBTV9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL3R5cGVvZi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi90eXBlb2YuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ODQ3YmFmLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL3R5cGVvZi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMTggKzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDA0IEFya2FkaXkgVmVydGxleWIKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9UWVBFT0ZfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9UWVBFT0ZfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1RZUEVPRl9DT01QTElBTlQpCi0jICAgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9FTVVMQVRJT04KLSNlbmRpZgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9UWVBFT0ZfRU1VTEFUSU9OKSAmJiBkZWZpbmVkKE5ETkJPT1NUX1RZUEVPRl9OQVRJVkUpCi0jICAgZXJyb3IgYm90aCB0eXBlb2YgZW11bGF0aW9uIGFuZCBuYXRpdmUgbW9kZSByZXF1ZXN0ZWQKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChfX0NPTU9fXykKLSMgICBpZmRlZiBfX0dOVUdfXwotIyAgICAgICBpZm5kZWYgTkROQk9PU1RfVFlQRU9GX0VNVUxBVElPTgotIyAgICAgICAgICAgaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9OQVRJVkUKLSMgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX05BVElWRQotIyAgICAgICAgICAgZW5kaWYKLSMgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfS0VZV09SRCB0eXBlb2YKLSMgICAgICAgZW5kaWYKLSMgICBlbHNlCi0jICAgICAgIGlmbmRlZiBORE5CT09TVF9UWVBFT0ZfTkFUSVZFCi0jICAgICAgICAgICBpZm5kZWYgTkROQk9PU1RfVFlQRU9GX0VNVUxBVElPTgotIyAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfRU1VTEFUSU9OCi0jICAgICAgICAgICBlbmRpZgotIyAgICAgICBlbHNlCi0jICAgICAgICAgICBlcnJvciBuYXRpdmUgdHlwZW9mIGlzIG5vdCBzdXBwb3J0ZWQKLSMgICAgICAgZW5kaWYKLSMgICBlbmRpZgotCi0jZWxpZiBkZWZpbmVkKF9fSU5URUxfQ09NUElMRVIpIHx8IGRlZmluZWQoX19JQ0wpIHx8IGRlZmluZWQoX19JQ0MpIHx8IGRlZmluZWQoX19FQ0MpCi0jICAgaWZkZWYgX19HTlVDX18KLSMgICAgICAgaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9FTVVMQVRJT04KLSMgICAgICAgICAgIGlmbmRlZiBORE5CT09TVF9UWVBFT0ZfTkFUSVZFCi0jICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9OQVRJVkUKLSMgICAgICAgICAgIGVuZGlmCi0jICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX0tFWVdPUkQgX190eXBlb2ZfXwotIyAgICAgICBlbmRpZgotIyAgIGVsc2UKLSMgICAgICAgaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9OQVRJVkUKLSMgICAgICAgICAgIGlmbmRlZiBORE5CT09TVF9UWVBFT0ZfRU1VTEFUSU9OCi0jICAgICAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9FTVVMQVRJT04KLSMgICAgICAgICAgIGVuZGlmCi0jICAgICAgIGVsc2UKLSMgICAgICAgICAgIGVycm9yIG5hdGl2ZSB0eXBlb2YgaXMgbm90IHN1cHBvcnRlZAotIyAgICAgICBlbmRpZgotIyAgIGVuZGlmCi0KLSNlbGlmIGRlZmluZWQoX19HTlVDX18pCi0jICAgaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9FTVVMQVRJT04KLSMgICAgICAgaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9OQVRJVkUKLSMgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfTkFUSVZFCi0jICAgICAgIGVuZGlmCi0jICAgICAgIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfS0VZV09SRCBfX3R5cGVvZl9fCi0jICAgZW5kaWYKLQotI2VsaWYgZGVmaW5lZChfX01XRVJLU19fKQotIyAgIGlmKF9fTVdFUktTX18gPD0gMHgzMDAzKSAgLy8gOC54Ci0jICAgICAgIGlmbmRlZiBORE5CT09TVF9UWVBFT0ZfRU1VTEFUSU9OCi0jICAgICAgICAgICBpZm5kZWYgTkROQk9PU1RfVFlQRU9GX05BVElWRQotIyAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfTkFUSVZFCi0jICAgICAgICAgICBlbmRpZgotIyAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9LRVlXT1JEIF9fdHlwZW9mX18KLSMgICAgICAgZWxzZQotIyAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9FTVVMQVRJT05fVU5TVVBQT1JURUQKLSMgICAgICAgZW5kaWYKLSMgICBlbHNlIC8vIDkueAotIyAgICAgICBpZm5kZWYgTkROQk9PU1RfVFlQRU9GX0VNVUxBVElPTgotIyAgICAgICAgICAgaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9OQVRJVkUKLSMgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX05BVElWRQotIyAgICAgICAgICAgZW5kaWYKLSMgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfS0VZV09SRCBfX3R5cGVvZl9fCi0jICAgICAgIGVuZGlmCi0jICAgZW5kaWYKLSNlbGlmIGRlZmluZWQgX19DT0RFR0VBUkNfXwotIyAgIGlmbmRlZiBORE5CT09TVF9UWVBFT0ZfRU1VTEFUSU9OCi0jICAgICAgIGlmbmRlZiBORE5CT09TVF9UWVBFT0ZfTkFUSVZFCi0jICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX0VNVUxBVElPTl9VTlNVUFBPUlRFRAotIyAgICAgICBlbmRpZgotIyAgIGVsc2UKLSMgICAgICAgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9FTVVMQVRJT05fVU5TVVBQT1JURUQKLSMgICBlbmRpZgotI2VsaWYgZGVmaW5lZCBfX0JPUkxBTkRDX18KLSMgICBpZm5kZWYgTkROQk9PU1RfVFlQRU9GX0VNVUxBVElPTgotIyAgICAgICBpZm5kZWYgTkROQk9PU1RfVFlQRU9GX05BVElWRQotIyAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9FTVVMQVRJT05fVU5TVVBQT1JURUQKLSMgICAgICAgZW5kaWYKLSMgICBlbHNlCi0jICAgICAgIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfRU1VTEFUSU9OX1VOU1VQUE9SVEVECi0jICAgZW5kaWYKLSNlbGlmIGRlZmluZWQgX19ETUNfXwotIyAgIGlmbmRlZiBORE5CT09TVF9UWVBFT0ZfRU1VTEFUSU9OCi0jICAgICAgIGlmbmRlZiBORE5CT09TVF9UWVBFT0ZfTkFUSVZFCi0jICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX05BVElWRQotIyAgICAgICBlbmRpZgotIyAgICAgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlb2YvZG1jL3R5cGVvZl9pbXBsLmhwcD4KLSMgICAgICAgZGVmaW5lIE1TVkNfVFlQRU9GX0hBQ0sKLSMgICBlbmRpZgotI2VsaWYgZGVmaW5lZChfTVNDX1ZFUikKLSMgICBpZiAoX01TQ19WRVIgPD0gMTMwMCkgIC8vIDYuNSwgNy4wCi0jICAgICAgIGlmbmRlZiBORE5CT09TVF9UWVBFT0ZfRU1VTEFUSU9OCi0jICAgICAgICAgICBpZm5kZWYgTkROQk9PU1RfVFlQRU9GX05BVElWRQotIyAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfTkFUSVZFCi0jICAgICAgICAgICBlbmRpZgotIyAgICAgICAgICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZW9mL21zdmMvdHlwZW9mX2ltcGwuaHBwPgotIyAgICAgICAgICAgZGVmaW5lIE1TVkNfVFlQRU9GX0hBQ0sKLSMgICAgICAgZWxzZQotIyAgICAgICAgICAgZXJyb3IgdHlwZW9mIGVtdWxhdGlvbiBpcyBub3Qgc3VwcG9ydGVkCi0jICAgICAgIGVuZGlmCi0jICAgZWxpZiAoX01TQ19WRVIgPj0gMTMxMCkgIC8vIDcuMSAtPgotIyAgICAgICBpZm5kZWYgTkROQk9PU1RfVFlQRU9GX0VNVUxBVElPTgotIyAgICAgICAgICAgaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9OQVRJVkUKLSMgICAgICAgICAgICAgICBpZm5kZWYgX01TQ19FWFRFTlNJT05TCi0jICAgICAgICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfRU1VTEFUSU9OCi0jICAgICAgICAgICAgICAgZWxzZQotIyAgICAgICAgICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX05BVElWRQotIyAgICAgICAgICAgICAgIGVuZGlmCi0jICAgICAgICAgICBlbmRpZgotIyAgICAgICBlbmRpZgotIyAgICAgICBpZmRlZiBORE5CT09TVF9UWVBFT0ZfTkFUSVZFCi0jICAgICAgICAgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlb2YvbXN2Yy90eXBlb2ZfaW1wbC5ocHA+Ci0jICAgICAgICAgICBkZWZpbmUgTVNWQ19UWVBFT0ZfSEFDSwotIyAgICAgICBlbmRpZgotIyAgIGVuZGlmCi0jZWxpZiBkZWZpbmVkKF9fSFBfYUNDKQotIyAgIGlmbmRlZiBORE5CT09TVF9UWVBFT0ZfTkFUSVZFCi0jICAgICAgIGlmbmRlZiBORE5CT09TVF9UWVBFT0ZfRU1VTEFUSU9OCi0jICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX0VNVUxBVElPTgotIyAgICAgICBlbmRpZgotIyAgIGVsc2UKLSMgICAgICAgZXJyb3IgbmF0aXZlIHR5cGVvZiBpcyBub3Qgc3VwcG9ydGVkCi0jICAgZW5kaWYKLQotI2VsaWYgZGVmaW5lZChfX0RFQ0NYWCkKLSMgICBpZm5kZWYgTkROQk9PU1RfVFlQRU9GX05BVElWRQotIyAgICAgICBpZm5kZWYgTkROQk9PU1RfVFlQRU9GX0VNVUxBVElPTgotIyAgICAgICAgICAgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9FTVVMQVRJT04KLSMgICAgICAgZW5kaWYKLSMgICBlbHNlCi0jICAgICAgIGVycm9yIG5hdGl2ZSB0eXBlb2YgaXMgbm90IHN1cHBvcnRlZAotIyAgIGVuZGlmCi0KLSNlbGlmIGRlZmluZWQoX19CT1JMQU5EQ19fKQotIyAgIGlmIChfX0JPUkxBTkRDX18gPCAweDU5MCkKLSMgICAgICAgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9OT19GVU5DVElPTl9UWVBFUwotIyAgICAgICBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX05PX01FTUJFUl9GVU5DVElPTl9UWVBFUwotIyAgIGVuZGlmCi0jICAgaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9OQVRJVkUKLSMgICAgICAgaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9FTVVMQVRJT04KLSMgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfRU1VTEFUSU9OCi0jICAgICAgIGVuZGlmCi0jICAgZWxzZQotIyAgICAgICBlcnJvciBuYXRpdmUgdHlwZW9mIGlzIG5vdCBzdXBwb3J0ZWQKLSMgICBlbmRpZgotI2VsaWYgZGVmaW5lZChfX1NVTlBST19DQykKLSMgICBpZiAoX19TVU5QUk9fQ0MgPCAweDU5MCApCi0jICAgICBpZmRlZiBORE5CT09TVF9UWVBFT0ZfTkFUSVZFCi0jICAgICAgICAgZXJyb3IgbmF0aXZlIHR5cGVvZiBpcyBub3Qgc3VwcG9ydGVkCi0jICAgICBlbmRpZgotIyAgICAgaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9FTVVMQVRJT04KLSMgICAgICAgICBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX0VNVUxBVElPTgotIyAgICAgZW5kaWYKLSMgICBlbHNlCi0jICAgICBpZm5kZWYgTkROQk9PU1RfVFlQRU9GX0VNVUxBVElPTgotIyAgICAgICAgIGlmbmRlZiBORE5CT09TVF9UWVBFT0ZfTkFUSVZFCi0jICAgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfTkFUSVZFCi0jICAgICAgICAgZW5kaWYKLSMgICAgICAgICBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX0tFWVdPUkQgX190eXBlb2ZfXwotIyAgICAgZW5kaWYKLSMgICBlbmRpZgotI2Vsc2UgLy91bmtub3duIGNvbXBpbGVyCi0jICAgaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9OQVRJVkUKLSMgICAgICAgaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9FTVVMQVRJT04KLSMgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfRU1VTEFUSU9OCi0jICAgICAgIGVuZGlmCi0jICAgZWxzZQotIyAgICAgICBpZm5kZWYgTkROQk9PU1RfVFlQRU9GX0tFWVdPUkQKLSMgICAgICAgICAgIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfS0VZV09SRCB0eXBlb2YKLSMgICAgICAgZW5kaWYKLSMgICBlbmRpZgotCi0jZW5kaWYKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfVU5JUVVFX0lEKClcCi0gICAgIE5ETkJPT1NUX1RZUEVPRl9SRUdJU1RSQVRJT05fR1JPVVAgKiAweDEwMDAwICsgX19MSU5FX18KLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfSU5DUkVNRU5UX1JFR0lTVFJBVElPTl9HUk9VUCgpXAotICAgICA8bmRuYm9vc3QvdHlwZW9mL2luY3JfcmVnaXN0cmF0aW9uX2dyb3VwLmhwcD4KLQotI2lmZGVmIE5ETkJPT1NUX1RZUEVPRl9FTVVMQVRJT05fVU5TVVBQT1JURUQKLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlb2YvdW5zdXBwb3J0ZWQuaHBwPgotI2VsaWYgZGVmaW5lZCBORE5CT09TVF9UWVBFT0ZfRU1VTEFUSU9OCi0jICAgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9URVhUICJ1c2luZyB0eXBlb2YgZW11bGF0aW9uIgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVvZi9tZXNzYWdlLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlb2YvdHlwZW9mX2ltcGwuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVvZi90eXBlX2VuY29kaW5nLmhwcD4KLSMgICBpbmNsdWRlIDxuZG5ib29zdC90eXBlb2YvdGVtcGxhdGVfZW5jb2RpbmcuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVvZi9tb2RpZmllcnMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVvZi9wb2ludGVyc19kYXRhX21lbWJlcnMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVvZi9yZWdpc3Rlcl9mdW5jdGlvbnMuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVvZi9yZWdpc3Rlcl9mdW5kYW1lbnRhbC5ocHA+Ci0KLSNlbGlmIGRlZmluZWQoTkROQk9PU1RfVFlQRU9GX05BVElWRSkKLSMgICBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1RFWFQgInVzaW5nIG5hdGl2ZSB0eXBlb2YiCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZW9mL21lc3NhZ2UuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVvZi9uYXRpdmUuaHBwPgotI2Vsc2UKLSMgICBlcnJvciB0eXBlb2YgY29uZmlndXJhdGlvbiBlcnJvcgotI2VuZGlmCi0KLS8vIGF1dG8KLSNkZWZpbmUgTkROQk9PU1RfQVVUTyhWYXIsIEV4cHIpIE5ETkJPT1NUX1RZUEVPRihFeHByKSBWYXIgPSBFeHByCi0jZGVmaW5lIE5ETkJPT1NUX0FVVE9fVFBMKFZhciwgRXhwcikgTkROQk9PU1RfVFlQRU9GX1RQTChFeHByKSBWYXIgPSBFeHByCi0KLSNlbmRpZi8vTkROQk9PU1RfVFlQRU9GX1RZUEVPRl9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL3R5cGVvZl9pbXBsLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL3R5cGVvZl9pbXBsLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTVlYzI4Yy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi90eXBlb2ZfaW1wbC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxODYgKzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1IEFya2FkaXkgVmVydGxleWIKLS8vIENvcHlyaWdodCAoQykgMjAwNSBQZWRlciBIb2x0Ci0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9UWVBFT0ZfVFlQRU9GX0lNUExfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9UWVBFT0ZfSU1QTF9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9zaXplX3QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW0uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVvZi9lbmNvZGVfZGVjb2RlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlb2YvdmVjdG9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19mdW5jdGlvbi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdXRpbGl0eS9lbmFibGVfaWYuaHBwPgotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9WRUNUT1IobikgTkROQk9PU1RfUFBfQ0FUKG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IsIG4pCi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX3NpemVyX2l0ZW0oeiwgbiwgXylcCi0gICAgY2hhciBpdGVtICMjIG5bVjo6aXRlbSAjIyBuIDo6dmFsdWVdOwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgdHlwZV9vZiB7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgVj4KLSAgICBzdHJ1Y3Qgc2l6ZXIKLSAgICB7Ci0gICAgICAgIC8vIGNoYXIgaXRlbTBbVjo6aXRlbTA6OnZhbHVlXTsKLSAgICAgICAgLy8gY2hhciBpdGVtMVtWOjppdGVtMTo6dmFsdWVdOwotICAgICAgICAvLyAuLi4KLQotICAgICAgICBORE5CT09TVF9QUF9SRVBFQVQoTkROQk9PU1RfVFlQRU9GX0xJTUlUX1NJWkUsIE5ETkJPT1NUX1RZUEVPRl9zaXplcl9pdGVtLCB+KQotICAgIH07Ci19fQotCi0jdW5kZWYgTkROQk9PU1RfVFlQRU9GX3NpemVyX2l0ZW0KLQotLy8KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSB0eXBlX29mIHsKLSMgaWZkZWYgTkROQk9PU1RfTk9fU0ZJTkFFCi0gICAgdGVtcGxhdGU8Y2xhc3MgViwgY2xhc3MgVD4KLSAgICBzaXplcjx0eXBlbmFtZSBlbmNvZGVfdHlwZTxWLCBUPjo6dHlwZT4gZW5jb2RlKGNvbnN0IFQmKTsKLSMgZWxzZQotICAgIHRlbXBsYXRlPGNsYXNzIFYsIGNsYXNzIFQ+Ci0gICAgdHlwZW5hbWUgZW5hYmxlX2lmPAotICAgICAgICB0eXBlbmFtZSBpc19mdW5jdGlvbjxUPjo6dHlwZSwKLSAgICAgICAgc2l6ZXI8dHlwZW5hbWUgZW5jb2RlX3R5cGU8ViwgVD46OnR5cGU+ID46OnR5cGUgZW5jb2RlKFQmKTsKLQotICAgIHRlbXBsYXRlPGNsYXNzIFYsIGNsYXNzIFQ+Ci0gICAgdHlwZW5hbWUgZGlzYWJsZV9pZjwKLSAgICAgICAgdHlwZW5hbWUgaXNfZnVuY3Rpb248VD46OnR5cGUsCi0gICAgICAgIHNpemVyPHR5cGVuYW1lIGVuY29kZV90eXBlPFYsIFQ+Ojp0eXBlPiA+Ojp0eXBlIGVuY29kZShjb25zdCBUJik7Ci0jIGVuZGlmCi19fQotLy8KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSB0eXBlX29mIHsKLQotICAgIHRlbXBsYXRlPGNsYXNzIFY+Ci0gICAgc3RydWN0IGRlY29kZV9iZWdpbgotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBkZWNvZGVfdHlwZTx0eXBlbmFtZSBWOjpiZWdpbj46OnR5cGUgdHlwZTsKLSAgICB9OwotfX0KLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfVFlQRUlURU0oeiwgbiwgZXhwcilcCi0gICAgbmRuYm9vc3Q6Om1wbDo6c2l6ZV90PHNpemVvZihuZG5ib29zdDo6dHlwZV9vZjo6ZW5jb2RlPE5ETkJPT1NUX1RZUEVPRl9WRUNUT1IoMCk8PiA+KGV4cHIpLml0ZW0gIyMgbik+Ci0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX0VOQ09ERURfVkVDVE9SKEV4cHIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgTkROQk9PU1RfVFlQRU9GX1ZFQ1RPUihORE5CT09TVF9UWVBFT0ZfTElNSVRfU0laRSk8ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBORE5CT09TVF9QUF9FTlVNKE5ETkJPT1NUX1RZUEVPRl9MSU1JVF9TSVpFLCBORE5CT09TVF9UWVBFT0ZfVFlQRUlURU0sIEV4cHIpIFwKLSAgICA+Ci0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GKEV4cHIpXAotICAgIG5kbmJvb3N0Ojp0eXBlX29mOjpkZWNvZGVfYmVnaW48TkROQk9PU1RfVFlQRU9GX0VOQ09ERURfVkVDVE9SKEV4cHIpID46OnR5cGUKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfVFBMIHR5cGVuYW1lIE5ETkJPT1NUX1RZUEVPRgotCi0vL29mZnNldF92ZWN0b3IgaXMgdXNlZCB0byBkZWxheSB0aGUgaW5zZXJ0aW9uIG9mIGRhdGEgaW50byB0aGUgdmVjdG9yIGluIG9yZGVyIHRvIGFsbG93Ci0vL2VuY29kaW5nIHRvIGJlIGRvbmUgaW4gbWFueSBzdGVwcwotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIHR5cGVfb2YgewotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFYsdHlwZW5hbWUgT2Zmc2V0PgotICAgIHN0cnVjdCBvZmZzZXRfdmVjdG9yIHsKLSAgICB9OwotCi0gICAgdGVtcGxhdGU8Y2xhc3MgVixjbGFzcyBPZmZzZXQsY2xhc3MgVD4KLSAgICBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjpvZmZzZXRfdmVjdG9yPFYsT2Zmc2V0PixUPiB7Ci0gICAgICAgIHR5cGVkZWYgb2Zmc2V0X3ZlY3RvcjxWLHR5cGVuYW1lIE9mZnNldDo6cHJpb3I+IHR5cGU7Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlPGNsYXNzIFYsY2xhc3MgVD4KLSAgICBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjpvZmZzZXRfdmVjdG9yPFYsbXBsOjpzaXplX3Q8MD4gPixUPiB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcHVzaF9iYWNrPFYsVD46OnR5cGUgdHlwZTsKLSAgICB9OwotfX0KLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfTkVTVEVEX1RZUEVJVEVNKHosIG4sIGV4cHIpXAotICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsTkROQk9PU1RfUFBfQ0FUKHZhbHVlLG4pID0gc2l6ZW9mKG5kbmJvb3N0Ojp0eXBlX29mOjplbmNvZGU8X3R5cGVvZl9zdGFydF92ZWN0b3I+KGV4cHIpLml0ZW0gIyMgbikpO1wKLSAgICB0eXBlZGVmIG5kbmJvb3N0OjptcGw6OnNpemVfdDxORE5CT09TVF9QUF9DQVQoc2VsZl90Ojp2YWx1ZSxuKT4gTkROQk9PU1RfUFBfQ0FUKGl0ZW0sbik7Ci0KLSNpZmRlZiBfX0RNQ19fCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9ORVNURURfVFlQRUlURU1fMih6LG4sZXhwcilcCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBfdHlwZW9mX2VuY29kZV9mcmFjdGlvbjxpdGVyYXRpb24+OjpORE5CT09TVF9QUF9DQVQoaXRlbSxuKSBORE5CT09TVF9QUF9DQVQoaXRlbSxuKTsKLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfRlJBQ1RJT05UWVBFKClcCi0gICAgTkROQk9PU1RfUFBfUkVQRUFUKE5ETkJPT1NUX1RZUEVPRl9MSU1JVF9TSVpFLE5ETkJPT1NUX1RZUEVPRl9ORVNURURfVFlQRUlURU1fMixfKVwKLSAgICB0eXBlZGVmIF90eXBlb2ZfZnJhY3Rpb25faXRlcjxQb3M+IGZyYWN0aW9uX3R5cGU7Ci0jZWxzZQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfRlJBQ1RJT05UWVBFKClcCi0gICAgdHlwZWRlZiBfdHlwZW9mX2VuY29kZV9mcmFjdGlvbjxzZWxmX3Q6Oml0ZXJhdGlvbj4gZnJhY3Rpb25fdHlwZTsKLSNlbmRpZgotCi0jaWZkZWYgX19CT1JMQU5EQ19fCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgdHlwZV9vZiB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgUG9zLHR5cGVuYW1lIEl0ZXI+Ci0gICAgc3RydWN0IGdlbmVyaWNfdHlwZW9mX2ZyYWN0aW9uX2l0ZXIgewotICAgICAgICB0eXBlZGVmIGdlbmVyaWNfdHlwZW9mX2ZyYWN0aW9uX2l0ZXI8UG9zLEl0ZXI+IHNlbGZfdDsKLSAgICAgICAgc3RhdGljIGNvbnN0IGludCBwb3M9KFBvczo6dmFsdWUpOwotICAgICAgICBzdGF0aWMgY29uc3QgaW50IGl0ZXJhdGlvbj0ocG9zLzUpOwotICAgICAgICBzdGF0aWMgY29uc3QgaW50IHdoZXJlPXBvcyU1OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEl0ZXI6OnRlbXBsYXRlIF9hcHBseV9uZXh0PHNlbGZfdDo6aXRlcmF0aW9uPjo6dHlwZSBmcmFjdGlvbl90eXBlOwotICAgICAgICB0eXBlZGVmIGdlbmVyaWNfdHlwZW9mX2ZyYWN0aW9uX2l0ZXI8dHlwZW5hbWUgUG9zOjpuZXh0LEl0ZXI+IG5leHQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdl9pdGVyPGZyYWN0aW9uX3R5cGUsbXBsOjppbnRfPHNlbGZfdDo6d2hlcmU+ID46OnR5cGUgdHlwZTsKLSAgICB9OwotfX0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX05FU1RFRF9UWVBFREVGX0lNUEwoZXhwcikgXAotICAgICAgICB0ZW1wbGF0ZTxpbnQgX1R5cGVvZl9JdGVyYXRpb24+XAotICAgICAgICBzdHJ1Y3QgX3R5cGVvZl9lbmNvZGVfZnJhY3Rpb24ge1wKLSAgICAgICAgICAgIHR5cGVkZWYgX3R5cGVvZl9lbmNvZGVfZnJhY3Rpb248X1R5cGVvZl9JdGVyYXRpb24+IHNlbGZfdDtcCi0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LF90eXBlb2ZfZW5jb2RlX29mZnNldCA9IChfVHlwZW9mX0l0ZXJhdGlvbipORE5CT09TVF9UWVBFT0ZfTElNSVRfU0laRSkpO1wKLSAgICAgICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6Om9mZnNldF92ZWN0b3I8TkROQk9PU1RfVFlQRU9GX1ZFQ1RPUigwKTw+LG5kbmJvb3N0OjptcGw6OnNpemVfdDxzZWxmX3Q6Ol90eXBlb2ZfZW5jb2RlX29mZnNldD4gPiBfdHlwZW9mX3N0YXJ0X3ZlY3RvcjtcCi0gICAgICAgICAgICBORE5CT09TVF9QUF9SRVBFQVQoTkROQk9PU1RfVFlQRU9GX0xJTUlUX1NJWkUsTkROQk9PU1RfVFlQRU9GX05FU1RFRF9UWVBFSVRFTSxleHByKVwKLSAgICAgICAgICAgIHRlbXBsYXRlPGludCBOZXh0PlwKLSAgICAgICAgICAgIHN0cnVjdCBfYXBwbHlfbmV4dCB7XAotICAgICAgICAgICAgICAgIHR5cGVkZWYgX3R5cGVvZl9lbmNvZGVfZnJhY3Rpb248TmV4dD4gdHlwZTtcCi0gICAgICAgICAgICB9O1wKLSAgICAgICAgfTtcCi0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFBvcz5cCi0gICAgICAgIHN0cnVjdCBfdHlwZW9mX2ZyYWN0aW9uX2l0ZXIge1wKLSAgICAgICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OmdlbmVyaWNfdHlwZW9mX2ZyYWN0aW9uX2l0ZXI8UG9zLF90eXBlb2ZfZW5jb2RlX2ZyYWN0aW9uPDA+ID4gc2VsZl90O1wKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc2VsZl90OjpuZXh0IG5leHQ7XAotICAgICAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBzZWxmX3Q6OnR5cGUgdHlwZTtcCi0gICAgICAgIH07Ci0jZWxzZQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfTkVTVEVEX1RZUEVERUZfSU1QTChleHByKSBcCi0gICAgICAgIHRlbXBsYXRlPGludCBfVHlwZW9mX0l0ZXJhdGlvbj5cCi0gICAgICAgIHN0cnVjdCBfdHlwZW9mX2VuY29kZV9mcmFjdGlvbiB7XAotICAgICAgICAgICAgdHlwZWRlZiBfdHlwZW9mX2VuY29kZV9mcmFjdGlvbjxfVHlwZW9mX0l0ZXJhdGlvbj4gc2VsZl90O1wKLSAgICAgICAgICAgIE5ETkJPT1NUX1NUQVRJQ19DT05TVEFOVChpbnQsX3R5cGVvZl9lbmNvZGVfb2Zmc2V0ID0gKF9UeXBlb2ZfSXRlcmF0aW9uKk5ETkJPT1NUX1RZUEVPRl9MSU1JVF9TSVpFKSk7XAotICAgICAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6b2Zmc2V0X3ZlY3RvcjxORE5CT09TVF9UWVBFT0ZfVkVDVE9SKDApPD4sbmRuYm9vc3Q6Om1wbDo6c2l6ZV90PHNlbGZfdDo6X3R5cGVvZl9lbmNvZGVfb2Zmc2V0PiA+IF90eXBlb2Zfc3RhcnRfdmVjdG9yO1wKLSAgICAgICAgICAgIE5ETkJPT1NUX1BQX1JFUEVBVChORE5CT09TVF9UWVBFT0ZfTElNSVRfU0laRSxORE5CT09TVF9UWVBFT0ZfTkVTVEVEX1RZUEVJVEVNLGV4cHIpXAotICAgICAgICB9O1wKLSAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgUG9zPlwKLSAgICAgICAgc3RydWN0IF90eXBlb2ZfZnJhY3Rpb25faXRlciB7XAotICAgICAgICAgICAgdHlwZWRlZiBfdHlwZW9mX2ZyYWN0aW9uX2l0ZXI8UG9zPiBzZWxmX3Q7XAotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCxwb3M9KFBvczo6dmFsdWUpKTtcCi0gICAgICAgICAgICBORE5CT09TVF9TVEFUSUNfQ09OU1RBTlQoaW50LGl0ZXJhdGlvbj0ocG9zL05ETkJPT1NUX1RZUEVPRl9MSU1JVF9TSVpFKSk7XAotICAgICAgICAgICAgTkROQk9PU1RfU1RBVElDX0NPTlNUQU5UKGludCx3aGVyZT1wb3MlTkROQk9PU1RfVFlQRU9GX0xJTUlUX1NJWkUpO1wKLSAgICAgICAgICAgIE5ETkJPT1NUX1RZUEVPRl9GUkFDVElPTlRZUEUoKVwKLSAgICAgICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZfaXRlcjxmcmFjdGlvbl90eXBlLG5kbmJvb3N0OjptcGw6OmludF88c2VsZl90Ojp3aGVyZT4gPjo6dHlwZSB0eXBlO1wKLSAgICAgICAgICAgIHR5cGVkZWYgX3R5cGVvZl9mcmFjdGlvbl9pdGVyPHR5cGVuYW1lIFBvczo6bmV4dD4gbmV4dDtcCi0gICAgICAgIH07Ci0jZW5kaWYKLSNpZmRlZiBfX01XRVJLU19fCi0KLSMgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9ORVNURURfVFlQRURFRihuYW1lLGV4cHIpIFwKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+XAotc3RydWN0IE5ETkJPT1NUX1BQX0NBVChfdHlwZW9mX3RlbXBsYXRlXyxuYW1lKSB7XAotICAgIE5ETkJPT1NUX1RZUEVPRl9ORVNURURfVFlQRURFRl9JTVBMKGV4cHIpXAotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OnR5cGVfb2Y6OmRlY29kZV90eXBlPF90eXBlb2ZfZnJhY3Rpb25faXRlcjxuZG5ib29zdDo6bXBsOjpzaXplX3Q8MD4gPiA+Ojp0eXBlIHR5cGU7XAotfTtcCi10eXBlZGVmIE5ETkJPT1NUX1BQX0NBVChfdHlwZW9mX3RlbXBsYXRlXyxuYW1lKTxpbnQ+IG5hbWU7Ci0KLSMgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9ORVNURURfVFlQRURFRl9UUEwobmFtZSxleHByKSBORE5CT09TVF9UWVBFT0ZfTkVTVEVEX1RZUEVERUYobmFtZSxleHByKQotCi0jZWxzZQotIyBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX05FU1RFRF9UWVBFREVGX1RQTChuYW1lLGV4cHIpIFwKLSAgICBzdHJ1Y3QgbmFtZSB7XAotICAgICAgICBORE5CT09TVF9UWVBFT0ZfTkVTVEVEX1RZUEVERUZfSU1QTChleHByKVwKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6dHlwZV9vZjo6ZGVjb2RlX3R5cGU8X3R5cGVvZl9mcmFjdGlvbl9pdGVyPG5kbmJvb3N0OjptcGw6OnNpemVfdDwwPiA+ID46OnR5cGUgdHlwZTtcCi0gICAgfTsKLQotIyBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX05FU1RFRF9UWVBFREVGKG5hbWUsZXhwcikgXAotICAgIHN0cnVjdCBuYW1lIHtcCi0gICAgICAgIE5ETkJPT1NUX1RZUEVPRl9ORVNURURfVFlQRURFRl9JTVBMKGV4cHIpXAotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjpkZWNvZGVfdHlwZTxfdHlwZW9mX2ZyYWN0aW9uX2l0ZXI8bmRuYm9vc3Q6Om1wbDo6c2l6ZV90PDA+ID4gPjo6dHlwZSB0eXBlO1wKLSAgICB9OwotI2VuZGlmCi0KLSNlbmRpZi8vTkROQk9PU1RfVFlQRU9GX0NPTVBMSUFOVF9UWVBFT0ZfSU1QTF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL3Vuc3VwcG9ydGVkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL3Vuc3VwcG9ydGVkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTFiMmE4Mi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi91bnN1cHBvcnRlZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi0vLyBDb3B5cmlnaHQgKEMpIDIwMTAgUGVkZXIgSG9sdAotLy8gVXNlLCBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZQotLy8gTGljZW5zZSwgVmVyc2lvbiAxLjAuIChodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpZm5kZWYgTkROQk9PU1RfVFlQRU9GX1VOU1VQUE9SVEVEX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfVU5TVVBQT1JURURfSFBQX0lOQ0xVREVECi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSB0eXBlX29mIHsKLSAgICBzdHJ1Y3QgdHlwZW9mX2VtdWxhdGlvbl9pc191bnN1cHBvcnRlZF9vbl90aGlzX2NvbXBpbGVyIHt9OwotfX0KLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0YoZXhwcikgbmRuYm9vc3Q6OnR5cGVfb2Y6OnR5cGVvZl9lbXVsYXRpb25faXNfdW5zdXBwb3J0ZWRfb25fdGhpc19jb21waWxlcgotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfVFBMIE5ETkJPT1NUX1RZUEVPRgotCi0jZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl9ORVNURURfVFlQRURFRl9UUEwobmFtZSxleHByKSBcCi1zdHJ1Y3QgbmFtZSB7XAotICAgIHR5cGVkZWYgTkROQk9PU1RfVFlQRU9GX1RQTChleHByKSB0eXBlO1wKLX07Ci0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX05FU1RFRF9UWVBFREVGKG5hbWUsZXhwcikgXAotc3RydWN0IG5hbWUge1wKLSAgICB0eXBlZGVmIE5ETkJPT1NUX1RZUEVPRihleHByKSB0eXBlO1wKLX07Ci0KLQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVFlQRSh4KQotI2RlZmluZSBORE5CT09TVF9UWVBFT0ZfUkVHSVNURVJfVEVNUExBVEUoeCwgcGFyYW1zKQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL3ZlY3Rvci5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi92ZWN0b3IuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZmIxZGZkLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL3ZlY3Rvci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNjYgKzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDA1IEFya2FkaXkgVmVydGxleWIKLS8vIENvcHlyaWdodCAoQykgMjAwNSBQZWRlciBIb2x0Ci0vLwotLy8gQ29weXJpZ2h0IChDKSAyMDA2IFRvYmlhcyBTY2h3aW5nZXIKLS8vCi0vLyBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCi0vLyBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9UWVBFT0ZfVkVDVE9SX0hQUF9JTkNMVURFRAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2ludC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9zZWxmLmhwcD4KLQotI2lmbmRlZiBORE5CT09TVF9UWVBFT0ZfTElNSVRfU0laRQotIyAgIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfTElNSVRfU0laRSA1MAotI2VuZGlmCi0KLS8vCi0vLyBUbyByZWNyZWF0ZSB0aGUgcHJlcHJvY2Vzc2VkIHZlcnNpb25zIG9mIHRoaXMgZmlsZSBwcmVwcm9jZXNzIGFuZCBydW4KLS8vCi0vLyAgICQoTkROQk9PU1RfUk9PVCkvbGlicy90eXBlb2YvdG9vbHMvcHJlcHJvY2Vzcy5wbAotLy8KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfVFlQRU9GX1BQX0lOQ0xVREVfRVhURVJOQUwpCi0KLSMgICB1bmRlZiBORE5CT09TVF9UWVBFT0ZfUFBfSU5DTFVERV9FWFRFUk5BTAotCi0jZWxpZiAhZGVmaW5lZChORE5CT09TVF9UWVBFT0ZfUFJFUFJPQ0VTU0lOR19NT0RFKSAmJiAhTkROQk9PU1RfUFBfSVNfU0VMRklTSAotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1BQX0lORElSRUNUX1NFTEYgPG5kbmJvb3N0L3R5cGVvZi92ZWN0b3IuaHBwPgotIyAgIGlmICAgTkROQk9PU1RfVFlQRU9GX0xJTUlUX1NJWkUgPCA1MAotIyAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9JTkNMVURFX1NFTEYoKQotIyAgIGVsaWYgTkROQk9PU1RfVFlQRU9GX0xJTUlUX1NJWkUgPCAxMDAKLSMgICAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVvZi92ZWN0b3I1MC5ocHA+Ci0jICAgICBkZWZpbmUgIE5ETkJPT1NUX1RZUEVPRl9QUF9TVEFSVF9TSVpFIDUxCi0jICAgICBpbmNsdWRlIE5ETkJPT1NUX1BQX0lOQ0xVREVfU0VMRigpCi0jICAgZWxpZiBORE5CT09TVF9UWVBFT0ZfTElNSVRfU0laRSA8IDE1MAotIyAgICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZW9mL3ZlY3RvcjEwMC5ocHA+Ci0jICAgICBkZWZpbmUgIE5ETkJPT1NUX1RZUEVPRl9QUF9TVEFSVF9TSVpFIDEwMQotIyAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9JTkNMVURFX1NFTEYoKQotIyAgIGVsaWYgTkROQk9PU1RfVFlQRU9GX0xJTUlUX1NJWkUgPCAyMDAKLSMgICAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVvZi92ZWN0b3IxNTAuaHBwPgotIyAgICAgZGVmaW5lICBORE5CT09TVF9UWVBFT0ZfUFBfU1RBUlRfU0laRSAxNTEKLSMgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfSU5DTFVERV9TRUxGKCkKLSMgICBlbGlmIE5ETkJPT1NUX1RZUEVPRl9MSU1JVF9TSVpFIDw9IDI1MAotIyAgICAgaW5jbHVkZSA8bmRuYm9vc3QvdHlwZW9mL3ZlY3RvcjIwMC5ocHA+Ci0jICAgICBkZWZpbmUgIE5ETkJPT1NUX1RZUEVPRl9QUF9TVEFSVF9TSVpFIDIwMQotIyAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9JTkNMVURFX1NFTEYoKQotIyAgIGVsc2UKLSMgICAgIGVycm9yICJORE5CT09TVF9UWVBFT0ZfTElNSVRfU0laRSB0b28gaGlnaCIKLSMgICBlbmRpZgotCi0jZWxzZS8vIGRlZmluZWQoTkROQk9PU1RfVFlQRU9GX1BSRVBST0NFU1NJTkdfTU9ERSkgfHwgTkROQk9PU1RfUFBfSVNfU0VMRklTSAotCi0jICAgaWZuZGVmIE5ETkJPT1NUX1RZUEVPRl9QUF9ORVhUX1NJWkUKLSMgICAgIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfUFBfTkVYVF9TSVpFIE5ETkJPT1NUX1RZUEVPRl9MSU1JVF9TSVpFCi0jICAgZW5kaWYKLSMgICBpZm5kZWYgTkROQk9PU1RfVFlQRU9GX1BQX1NUQVJUX1NJWkUKLSMgICAgIGRlZmluZSBORE5CT09TVF9UWVBFT0ZfUFBfU1RBUlRfU0laRSAwCi0jICAgZW5kaWYKLQotIyAgIGlmIE5ETkJPT1NUX1RZUEVPRl9QUF9TVEFSVF9TSVpFIDw9IE5ETkJPT1NUX1RZUEVPRl9MSU1JVF9TSVpFCi0KLSMgICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9lbnVtX3BhcmFtcy5ocHA+Ci0jICAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZWF0LmhwcD4KLSMgICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBlYXRfZnJvbV90by5ocHA+Ci0jICAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLSMgICAgIGluY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pbmMuaHBwPgotIyAgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2RlYy5ocHA+Ci0jICAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29tbWFfaWYuaHBwPgotIyAgICAgaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2l0ZXJhdGlvbi9sb2NhbC5ocHA+Ci0jICAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY29udHJvbC9leHByX2lpZi5ocHA+Ci0jICAgICBpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvbG9naWNhbC9ub3QuaHBwPgotCi0vLyBpdGVyYXRvcgotCi0jICAgICBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX3NwZWNfaXRlcihuKVwKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj5cCi0gICAgICAgIHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPG4+ID5cCi0gICAgICAgIHtcCi0gICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0gIyMgbiB0eXBlO1wKLSAgICAgICAgICAgIHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzxuICsgMT4gPiBuZXh0O1wKLSAgICAgICAgfTsKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIHR5cGVfb2YgewotCi0gICAgdGVtcGxhdGU8Y2xhc3MgViwgY2xhc3MgSW5jcmVhc2VfTkROQk9PU1RfVFlQRU9GX0xJTUlUX1NJWkU+IHN0cnVjdCB2X2l0ZXI7IC8vIG5vdCBkZWZpbmVkCi0jICAgICBkZWZpbmUgIE5ETkJPT1NUX1BQX0xPQ0FMX01BQ1JPICBORE5CT09TVF9UWVBFT0Zfc3BlY19pdGVyCi0jICAgICBkZWZpbmUgIE5ETkJPT1NUX1BQX0xPQ0FMX0xJTUlUUyBcCi0gICAgICAgIChORE5CT09TVF9QUF9ERUMoTkROQk9PU1RfVFlQRU9GX1BQX1NUQVJUX1NJWkUpLCBcCi0gICAgICAgICBORE5CT09TVF9QUF9ERUMoTkROQk9PU1RfVFlQRU9GX0xJTUlUX1NJWkUpKQotIyAgICAgaW5jbHVkZSBORE5CT09TVF9QUF9MT0NBTF9JVEVSQVRFKCkKLQotfX0KLQotIyAgICAgdW5kZWYgTkROQk9PU1RfVFlQRU9GX3NwZWNfaXRlcgotCi0vLyB2ZWN0b3IKLQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl90eXBlZGVmX2l0ZW0oeiwgbiwgXylcCi0gICAgICAgIHR5cGVkZWYgUCAjIyBuIGl0ZW0gIyMgbjsKLQotIyAgICAgZGVmaW5lIE5ETkJPT1NUX1RZUEVPRl90eXBlZGVmX2Zha2VfaXRlbSh6LCBuLCBfKVwKLSAgICAgICAgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbSAjIyBuOwotCi0jICAgICBkZWZpbmUgTkROQk9PU1RfVFlQRU9GX2RlZmluZV92ZWN0b3IobilcCi0gICAgICAgIHRlbXBsYXRlPE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKG4sIGNsYXNzIFApIE5ETkJPT1NUX1BQX0VYUFJfSUlGKE5ETkJPT1NUX1BQX05PVChuKSwgY2xhc3MgVCA9IHZvaWQpPlwKLSAgICAgICAgc3RydWN0IHZlY3RvciAjIyBuXAotICAgICAgICB7XAotICAgICAgICAgICAgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yICMjIG48TkROQk9PU1RfUFBfRU5VTV9QQVJBTVMobixQKT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjtcCi0gICAgICAgICAgICBORE5CT09TVF9QUF9SRVBFQVQobiwgTkROQk9PU1RfVFlQRU9GX3R5cGVkZWZfaXRlbSwgfilcCi0gICAgICAgICAgICBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UTyhuLCBORE5CT09TVF9UWVBFT0ZfUFBfTkVYVF9TSVpFLCBORE5CT09TVF9UWVBFT0ZfdHlwZWRlZl9mYWtlX2l0ZW0sIH4pXAotICAgICAgICB9OwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgdHlwZV9vZiB7Ci0KLSMgICAgIGRlZmluZSAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8gIE5ETkJPT1NUX1RZUEVPRl9kZWZpbmVfdmVjdG9yCi0jICAgICBkZWZpbmUgIE5ETkJPT1NUX1BQX0xPQ0FMX0xJTUlUUyBcCi0gICAgICAgIChORE5CT09TVF9UWVBFT0ZfUFBfU1RBUlRfU0laRSxORE5CT09TVF9UWVBFT0ZfTElNSVRfU0laRSkKLSMgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfTE9DQUxfSVRFUkFURSgpCi0KLX19Ci0KLSMgICAgIHVuZGVmIE5ETkJPT1NUX1RZUEVPRl90eXBlZGVmX2l0ZW0KLSMgICAgIHVuZGVmIE5ETkJPT1NUX1RZUEVPRl90eXBlZGVmX2Zha2VfaXRlbQotIyAgICAgdW5kZWYgTkROQk9PU1RfVFlQRU9GX2RlZmluZV92ZWN0b3IKLQotLy8gcHVzaF9iYWNrCi0KLSMgICAgIGRlZmluZSBORE5CT09TVF9UWVBFT0Zfc3BlY19wdXNoX2JhY2sobilcCi0gICAgICAgIHRlbXBsYXRlPE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKG4sIGNsYXNzIFApIE5ETkJPT1NUX1BQX0NPTU1BX0lGKG4pIGNsYXNzIFQ+XAotICAgICAgICBzdHJ1Y3QgcHVzaF9iYWNrPE5ETkJPT1NUX1BQX0NBVChuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yLCBuKTxORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhuLCBQKT4sIFQ+XAotICAgICAgICB7XAotICAgICAgICAgICAgdHlwZWRlZiBORE5CT09TVF9QUF9DQVQobmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvciwgTkROQk9PU1RfUFBfSU5DKG4pKTxcCi0gICAgICAgICAgICAgICAgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMobiwgUCkgTkROQk9PU1RfUFBfQ09NTUFfSUYobikgVFwKLSAgICAgICAgICAgID4gdHlwZTtcCi0gICAgICAgIH07Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSB0eXBlX29mIHsKLQotIyAgIGlmICAgTkROQk9PU1RfVFlQRU9GX0xJTUlUX1NJWkUgPCA1MAotICAgIHRlbXBsYXRlPGNsYXNzIFYsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2sgewotICAgICAgICB0eXBlZGVmIFYgdHlwZTsKLSAgICB9OwotIyAgIGVuZGlmCi0gICAgLy9kZWZhdWx0IGJlaGF2aW91ciBpcyB0byBsZXQgcHVzaF9iYWNrIGlnbm9yZSBULCBhbmQgcmV0dXJuIHRoZSBpbnB1dCB2ZWN0b3IuCi0gICAgLy9UaGlzIGlzIHRvIGxldCBORE5CT09TVF9UWVBFT0ZfTkVTVEVEX1RZUEVERUYgd29yayBwcm9wZXJseSB3aXRoIHRoZSBkZWZhdWx0IHZlY3Rvci4KLSMgICAgIGRlZmluZSAgTkROQk9PU1RfUFBfTE9DQUxfTUFDUk8gIE5ETkJPT1NUX1RZUEVPRl9zcGVjX3B1c2hfYmFjawotIyAgICAgZGVmaW5lICBORE5CT09TVF9QUF9MT0NBTF9MSU1JVFMgXAotICAgICAgICAoTkROQk9PU1RfUFBfREVDKE5ETkJPT1NUX1RZUEVPRl9QUF9TVEFSVF9TSVpFKSwgXAotICAgICAgICAgTkROQk9PU1RfUFBfREVDKE5ETkJPT1NUX1RZUEVPRl9MSU1JVF9TSVpFKSkKLSMgICAgIGluY2x1ZGUgTkROQk9PU1RfUFBfTE9DQUxfSVRFUkFURSgpCi0KLX19Ci0KLSMgICAgIHVuZGVmIE5ETkJPT1NUX1RZUEVPRl9zcGVjX3B1c2hfYmFjawotCi0jICAgZW5kaWYvL05ETkJPT1NUX1RZUEVPRl9QUF9TVEFSVF9TSVpFPD1ORE5CT09TVF9UWVBFT0ZfTElNSVRfU0laRQotIyAgIHVuZGVmICBORE5CT09TVF9UWVBFT0ZfUFBfU1RBUlRfU0laRQotIyAgIHVuZGVmICBORE5CT09TVF9UWVBFT0ZfUFBfTkVYVF9TSVpFCi0KLSNlbmRpZi8vTkROQk9PU1RfVFlQRU9GX1BSRVBST0NFU1NJTkdfTU9ERSB8fCBORE5CT09TVF9QUF9JU19TRUxGSVNICi0KLSNkZWZpbmUgTkROQk9PU1RfVFlQRU9GX1ZFQ1RPUl9IUFBfSU5DTFVERUQKLSNlbmRpZi8vTkROQk9PU1RfVFlQRU9GX1ZFQ1RPUl9IUFBfSU5DTFVERUQKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvdmVjdG9yMTAwLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL3ZlY3RvcjEwMC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIyMTZjZDkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvdmVjdG9yMTAwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyMSArMCwwIEBACi0KLS8vIENvcHlyaWdodCAoQykgMjAwNSBBcmthZGl5IFZlcnRsZXliCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDUgUGVkZXIgSG9sdAotLy8KLS8vIFVzZSBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgYm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vIFZlcnNpb24gMS4wLiAoU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0KLS8vIFByZXByb2Nlc3NlZCBjb2RlLCBkbyBub3QgZWRpdCBtYW51YWxseSAhCi0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIHR5cGVfb2YgewotICAgIHRlbXBsYXRlPGNsYXNzIFYsIGNsYXNzIEluY3JlYXNlX05ETkJPT1NUX1RZUEVPRl9MSU1JVF9TSVpFPiBzdHJ1Y3Qgdl9pdGVyOwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwwPiA+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+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+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+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCA+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+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+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxID4gc3RydWN0IHZlY3RvcjIgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IyPCBQMCAsIFAxPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+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+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+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgPiBzdHJ1Y3QgdmVjdG9yMyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjM8IFAwICwgUDEgLCBQMj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+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+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyA+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+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+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ID4gc3RydWN0IHZlY3RvcjUgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+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+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+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgPiBzdHJ1Y3QgdmVjdG9yNiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+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+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiA+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+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+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ID4gc3RydWN0IHZlY3RvcjggeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+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+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+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggPiBzdHJ1Y3QgdmVjdG9yOSB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSA+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+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwID4gc3RydWN0IHZlY3RvcjExIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+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+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgPiBzdHJ1Y3QgdmVjdG9yMTIgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTE+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+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+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiA+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+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzID4gc3RydWN0IHZlY3RvcjE0IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+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+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgPiBzdHJ1Y3QgdmVjdG9yMTUgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQ+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+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+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSA+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+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ID4gc3RydWN0IHZlY3RvcjE3IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+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+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgPiBzdHJ1Y3QgdmVjdG9yMTggeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTc+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+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+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCA+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+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ID4gc3RydWN0IHZlY3RvcjIwIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMjA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+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+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgPiBzdHJ1Y3QgdmVjdG9yMjEgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IyMTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjA+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+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+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSA+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+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyID4gc3RydWN0IHZlY3RvcjIzIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMjM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+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+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgPiBzdHJ1Y3QgdmVjdG9yMjQgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IyNDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjM+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+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+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCA+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+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ID4gc3RydWN0IHZlY3RvcjI2IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMjY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+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+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgPiBzdHJ1Y3QgdmVjdG9yMjcgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IyNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjY+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+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+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyA+IHN0cnVjdCB2ZWN0b3IyOCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjI4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ID4gc3RydWN0IHZlY3RvcjI5IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMjk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgPiBzdHJ1Y3QgdmVjdG9yMzAgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IzMDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjk+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCA+IHN0cnVjdCB2ZWN0b3IzMSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjMxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxID4gc3RydWN0IHZlY3RvcjMyIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMzI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgPiBzdHJ1Y3QgdmVjdG9yMzMgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IzMzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzI+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyA+IHN0cnVjdCB2ZWN0b3IzNCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjM0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ID4gc3RydWN0IHZlY3RvcjM1IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMzU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgPiBzdHJ1Y3QgdmVjdG9yMzYgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IzNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzU+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiA+IHN0cnVjdCB2ZWN0b3IzNyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjM3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ID4gc3RydWN0IHZlY3RvcjM4IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMzg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggPiBzdHJ1Y3QgdmVjdG9yMzkgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IzOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzg+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSA+IHN0cnVjdCB2ZWN0b3I0MCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjQwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwID4gc3RydWN0IHZlY3RvcjQxIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNDE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgPiBzdHJ1Y3QgdmVjdG9yNDIgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I0MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDE+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiA+IHN0cnVjdCB2ZWN0b3I0MyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjQzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0Mj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzID4gc3RydWN0IHZlY3RvcjQ0IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNDQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgPiBzdHJ1Y3QgdmVjdG9yNDUgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I0NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQ+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSA+IHN0cnVjdCB2ZWN0b3I0NiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjQ2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ID4gc3RydWN0IHZlY3RvcjQ3IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNDc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgPiBzdHJ1Y3QgdmVjdG9yNDggeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I0ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDc+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCA+IHN0cnVjdCB2ZWN0b3I0OSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjQ5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ID4gc3RydWN0IHZlY3RvcjUwIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNTA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgPiBzdHJ1Y3QgdmVjdG9yNTEgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I1MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTA+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSA+IHN0cnVjdCB2ZWN0b3I1MiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjUyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyID4gc3RydWN0IHZlY3RvcjUzIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNTM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgPiBzdHJ1Y3QgdmVjdG9yNTQgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I1NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTM+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCA+IHN0cnVjdCB2ZWN0b3I1NSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjU1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1ND4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ID4gc3RydWN0IHZlY3RvcjU2IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNTY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgPiBzdHJ1Y3QgdmVjdG9yNTcgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I1NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTY+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyA+IHN0cnVjdCB2ZWN0b3I1OCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjU4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1Nz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ID4gc3RydWN0IHZlY3RvcjU5IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNTk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgPiBzdHJ1Y3QgdmVjdG9yNjAgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I2MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTk+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCA+IHN0cnVjdCB2ZWN0b3I2MSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjYxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxID4gc3RydWN0IHZlY3RvcjYyIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNjI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgPiBzdHJ1Y3QgdmVjdG9yNjMgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I2MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjI+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyA+IHN0cnVjdCB2ZWN0b3I2NCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjY0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2Mz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ID4gc3RydWN0IHZlY3RvcjY1IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNjU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgPiBzdHJ1Y3QgdmVjdG9yNjYgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I2NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjU+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiA+IHN0cnVjdCB2ZWN0b3I2NyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjY3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2Nj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ID4gc3RydWN0IHZlY3RvcjY4IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNjg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggPiBzdHJ1Y3QgdmVjdG9yNjkgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I2OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjg+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSA+IHN0cnVjdCB2ZWN0b3I3MCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjcwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwID4gc3RydWN0IHZlY3RvcjcxIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNzE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgPiBzdHJ1Y3QgdmVjdG9yNzIgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I3MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzE+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiA+IHN0cnVjdCB2ZWN0b3I3MyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjczPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3Mj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczID4gc3RydWN0IHZlY3Rvcjc0IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNzQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgPiBzdHJ1Y3QgdmVjdG9yNzUgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I3NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQ+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSA+IHN0cnVjdCB2ZWN0b3I3NiB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjc2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ID4gc3RydWN0IHZlY3Rvcjc3IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNzc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgPiBzdHJ1Y3QgdmVjdG9yNzggeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I3ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzc+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCA+IHN0cnVjdCB2ZWN0b3I3OSB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjc5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ID4gc3RydWN0IHZlY3RvcjgwIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yODA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgPiBzdHJ1Y3QgdmVjdG9yODEgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I4MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODA+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSA+IHN0cnVjdCB2ZWN0b3I4MiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjgyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyID4gc3RydWN0IHZlY3RvcjgzIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yODM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgPiBzdHJ1Y3QgdmVjdG9yODQgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I4NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODM+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCA+IHN0cnVjdCB2ZWN0b3I4NSB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjg1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4ND4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ID4gc3RydWN0IHZlY3Rvcjg2IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yODY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgPiBzdHJ1Y3QgdmVjdG9yODcgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I4NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODY+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyA+IHN0cnVjdCB2ZWN0b3I4OCB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjg4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4Nz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ID4gc3RydWN0IHZlY3Rvcjg5IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yODk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgPiBzdHJ1Y3QgdmVjdG9yOTAgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I5MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODk+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCA+IHN0cnVjdCB2ZWN0b3I5MSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjkxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxID4gc3RydWN0IHZlY3RvcjkyIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yOTI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgPiBzdHJ1Y3QgdmVjdG9yOTMgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I5MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTI+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyA+IHN0cnVjdCB2ZWN0b3I5NCB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjk0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5Mz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ID4gc3RydWN0IHZlY3Rvcjk1IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yOTU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgPiBzdHJ1Y3QgdmVjdG9yOTYgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I5NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTU+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiA+IHN0cnVjdCB2ZWN0b3I5NyB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjk3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5Nj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ID4gc3RydWN0IHZlY3Rvcjk4IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yOTg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggPiBzdHJ1Y3QgdmVjdG9yOTkgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I5OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTg+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0xNDg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSA+IHN0cnVjdCB2ZWN0b3IxMDAgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMDA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB9OwotfX0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSB0eXBlX29mIHsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBWLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrIHsKLSAgICAgICAgdHlwZWRlZiBWIHR5cGU7Ci0gICAgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFQ+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+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjUwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjUxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjUyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjUzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1Mj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjU0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1Mz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjU1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1ND4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjU2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjU3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1Nj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjU4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1Nz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjU5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjYwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjYxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjYyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjYzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2Mj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjY0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2Mz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjY1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2ND4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjY2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjY3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2Nj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjY4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2Nz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjY5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjcwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjcxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjcyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjczPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3Mj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjc0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3Mz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjc1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3ND4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjc2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjc3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3Nj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjc4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3Nz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjc5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjgwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjgxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjgyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjgzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4Mj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjg0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4Mz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjg1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4ND4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjg2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjg3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4Nj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjg4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4Nz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjg5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjkwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjkxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjkyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjkzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5Mj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjk0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5Mz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjk1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5ND4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjk2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjk3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5Nj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjk4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5Nz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjk5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTAwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFQgPiB0eXBlOyB9OwotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL3ZlY3RvcjE1MC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi92ZWN0b3IxNTAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ODJlODQ2Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL3ZlY3RvcjE1MC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NzEgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDUgQXJrYWRpeSBWZXJ0bGV5YgotLy8gQ29weXJpZ2h0IChDKSAyMDA1IFBlZGVyIEhvbHQKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLyBQcmVwcm9jZXNzZWQgY29kZSwgZG8gbm90IGVkaXQgbWFudWFsbHkgIQotCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSB0eXBlX29mIHsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBWLCBjbGFzcyBJbmNyZWFzZV9ORE5CT09TVF9UWVBFT0ZfTElNSVRfU0laRT4gc3RydWN0IHZfaXRlcjsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTAgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDAgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwyPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88Mz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTMgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDMgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDQ+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW00IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw0ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw1PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88Nj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTYgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDYgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDc+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW03IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw3ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw4PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtOCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88OCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88OT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTkgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDkgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEwPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTAgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEwICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTExIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTI+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTIgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEzPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTMgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEzICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxND4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE0IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTU+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTUgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE2PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTYgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE2ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE3IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTg+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xOCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTggKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE5PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTkgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE5ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwyMD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTIwIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwyMCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MjE+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0yMSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MjEgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDIyPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMjIgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDIyICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwyMz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTIzIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwyMyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MjQ+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0yNCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MjQgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDI1PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMjUgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDI1ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwyNj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTI2IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwyNiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88Mjc+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0yNyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MjcgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDI4PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMjggdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDI4ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwyOT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTI5IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwyOSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MzA+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0zMCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MzAgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDMxPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMzEgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDMxICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwzMj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTMyIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwzMiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MzM+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0zMyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MzMgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDM0PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMzQgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDM0ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwzNT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTM1IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwzNSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MzY+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0zNiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MzYgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDM3PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMzcgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDM3ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwzOD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTM4IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwzOCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88Mzk+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0zOSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MzkgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDQwPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNDAgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDQwICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw0MT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTQxIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw0MSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NDI+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW00MiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NDIgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDQzPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNDMgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDQzICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw0ND4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTQ0IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw0NCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NDU+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW00NSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NDUgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDQ2PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNDYgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDQ2ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw0Nz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTQ3IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw0NyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NDg+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW00OCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NDggKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDQ5PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNDkgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDQ5ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw1MD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTUwIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw1MCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NTE+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW01MSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NTEgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDUyPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNTIgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDUyICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw1Mz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTUzIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw1MyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NTQ+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW01NCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NTQgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDU1PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNTUgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDU1ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw1Nj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTU2IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw1NiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NTc+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW01NyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NTcgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDU4PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNTggdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDU4ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw1OT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTU5IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw1OSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NjA+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW02MCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NjAgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDYxPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNjEgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDYxICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw2Mj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTYyIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw2MiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NjM+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW02MyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NjMgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDY0PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNjQgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDY0ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw2NT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTY1IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw2NSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NjY+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW02NiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NjYgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDY3PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNjcgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDY3ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw2OD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTY4IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw2OCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88Njk+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW02OSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NjkgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDcwPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNzAgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDcwICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw3MT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTcxIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw3MSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NzI+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW03MiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NzIgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDczPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNzMgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDczICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw3ND4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTc0IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw3NCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NzU+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW03NSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NzUgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDc2PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNzYgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDc2ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw3Nz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTc3IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw3NyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88Nzg+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW03OCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NzggKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDc5PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNzkgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDc5ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw4MD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTgwIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw4MCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88ODE+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW04MSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88ODEgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDgyPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtODIgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDgyICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw4Mz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTgzIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw4MyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88ODQ+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW04NCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88ODQgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDg1PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtODUgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDg1ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw4Nj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTg2IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw4NiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88ODc+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW04NyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88ODcgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDg4PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtODggdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDg4ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw4OT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTg5IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw4OSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88OTA+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW05MCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88OTAgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDkxPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtOTEgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDkxICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw5Mj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTkyIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw5MiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88OTM+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW05MyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88OTMgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDk0PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtOTQgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDk0ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw5NT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTk1IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw5NSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88OTY+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW05NiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88OTYgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDk3PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtOTcgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDk3ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw5OD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTk4IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw5OCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88OTk+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW05OSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88OTkgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEwMD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEwMCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTAwICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMDE+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMDEgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEwMSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTAyPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTAyIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMDIgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEwMz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEwMyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTAzICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMDQ+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMDQgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEwNCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTA1PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTA1IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMDUgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEwNj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEwNiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTA2ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMDc+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMDcgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEwNyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTA4PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTA4IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMDggKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEwOT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEwOSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTA5ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMTA+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMTAgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDExMCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTExPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTExIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMTEgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDExMj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTExMiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTEyICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMTM+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMTMgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDExMyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTE0PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTE0IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMTQgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDExNT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTExNSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTE1ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMTY+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMTYgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDExNiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTE3PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTE3IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMTcgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDExOD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTExOCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTE4ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMTk+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMTkgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDExOSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTIwPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTIwIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMjAgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEyMT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEyMSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTIxICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMjI+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMjIgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEyMiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTIzPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTIzIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMjMgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEyND4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEyNCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTI0ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMjU+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMjUgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEyNSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTI2PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTI2IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMjYgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEyNz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEyNyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTI3ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMjg+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMjggdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEyOCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTI5PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTI5IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMjkgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEzMD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEzMCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTMwICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMzE+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMzEgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEzMSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTMyPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTMyIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMzIgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEzMz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEzMyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTMzICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMzQ+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMzQgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEzNCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTM1PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTM1IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMzUgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEzNj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEzNiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTM2ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMzc+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMzcgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEzNyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTM4PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTM4IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMzggKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEzOT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEzOSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTM5ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNDA+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNDAgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE0MCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTQxPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTQxIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNDEgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE0Mj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE0MiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTQyICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNDM+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNDMgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE0MyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTQ0PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTQ0IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNDQgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE0NT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE0NSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTQ1ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNDY+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNDYgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE0NiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTQ3PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTQ3IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNDcgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE0OD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE0OCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTQ4ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNDk+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNDkgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE0OSArIDE+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+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+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCA+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+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+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxID4gc3RydWN0IHZlY3RvcjIgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IyPCBQMCAsIFAxPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+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+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+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgPiBzdHJ1Y3QgdmVjdG9yMyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjM8IFAwICwgUDEgLCBQMj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+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+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyA+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+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+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ID4gc3RydWN0IHZlY3RvcjUgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+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+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+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgPiBzdHJ1Y3QgdmVjdG9yNiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+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+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiA+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+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+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ID4gc3RydWN0IHZlY3RvcjggeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+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+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+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggPiBzdHJ1Y3QgdmVjdG9yOSB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSA+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+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwID4gc3RydWN0IHZlY3RvcjExIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+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+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgPiBzdHJ1Y3QgdmVjdG9yMTIgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTE+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+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+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiA+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+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzID4gc3RydWN0IHZlY3RvcjE0IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+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+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgPiBzdHJ1Y3QgdmVjdG9yMTUgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQ+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+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+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSA+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+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ID4gc3RydWN0IHZlY3RvcjE3IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+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+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgPiBzdHJ1Y3QgdmVjdG9yMTggeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTc+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+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+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCA+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+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ID4gc3RydWN0IHZlY3RvcjIwIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMjA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+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+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgPiBzdHJ1Y3QgdmVjdG9yMjEgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IyMTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjA+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+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+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSA+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+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyID4gc3RydWN0IHZlY3RvcjIzIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMjM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+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+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgPiBzdHJ1Y3QgdmVjdG9yMjQgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IyNDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjM+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+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+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCA+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+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ID4gc3RydWN0IHZlY3RvcjI2IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMjY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+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+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgPiBzdHJ1Y3QgdmVjdG9yMjcgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IyNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjY+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+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+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyA+IHN0cnVjdCB2ZWN0b3IyOCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjI4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ID4gc3RydWN0IHZlY3RvcjI5IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMjk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgPiBzdHJ1Y3QgdmVjdG9yMzAgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IzMDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjk+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCA+IHN0cnVjdCB2ZWN0b3IzMSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjMxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxID4gc3RydWN0IHZlY3RvcjMyIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMzI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgPiBzdHJ1Y3QgdmVjdG9yMzMgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IzMzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzI+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyA+IHN0cnVjdCB2ZWN0b3IzNCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjM0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ID4gc3RydWN0IHZlY3RvcjM1IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMzU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgPiBzdHJ1Y3QgdmVjdG9yMzYgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IzNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzU+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiA+IHN0cnVjdCB2ZWN0b3IzNyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjM3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ID4gc3RydWN0IHZlY3RvcjM4IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMzg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggPiBzdHJ1Y3QgdmVjdG9yMzkgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IzOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzg+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSA+IHN0cnVjdCB2ZWN0b3I0MCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjQwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwID4gc3RydWN0IHZlY3RvcjQxIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNDE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgPiBzdHJ1Y3QgdmVjdG9yNDIgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I0MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDE+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiA+IHN0cnVjdCB2ZWN0b3I0MyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjQzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0Mj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzID4gc3RydWN0IHZlY3RvcjQ0IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNDQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgPiBzdHJ1Y3QgdmVjdG9yNDUgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I0NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQ+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSA+IHN0cnVjdCB2ZWN0b3I0NiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjQ2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ID4gc3RydWN0IHZlY3RvcjQ3IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNDc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgPiBzdHJ1Y3QgdmVjdG9yNDggeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I0ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDc+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCA+IHN0cnVjdCB2ZWN0b3I0OSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjQ5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ID4gc3RydWN0IHZlY3RvcjUwIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNTA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgPiBzdHJ1Y3QgdmVjdG9yNTEgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I1MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTA+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSA+IHN0cnVjdCB2ZWN0b3I1MiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjUyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyID4gc3RydWN0IHZlY3RvcjUzIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNTM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgPiBzdHJ1Y3QgdmVjdG9yNTQgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I1NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTM+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCA+IHN0cnVjdCB2ZWN0b3I1NSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjU1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1ND4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ID4gc3RydWN0IHZlY3RvcjU2IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNTY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgPiBzdHJ1Y3QgdmVjdG9yNTcgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I1NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTY+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyA+IHN0cnVjdCB2ZWN0b3I1OCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjU4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1Nz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ID4gc3RydWN0IHZlY3RvcjU5IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNTk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgPiBzdHJ1Y3QgdmVjdG9yNjAgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I2MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTk+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCA+IHN0cnVjdCB2ZWN0b3I2MSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjYxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxID4gc3RydWN0IHZlY3RvcjYyIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNjI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgPiBzdHJ1Y3QgdmVjdG9yNjMgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I2MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjI+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyA+IHN0cnVjdCB2ZWN0b3I2NCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjY0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2Mz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ID4gc3RydWN0IHZlY3RvcjY1IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNjU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgPiBzdHJ1Y3QgdmVjdG9yNjYgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I2NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjU+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiA+IHN0cnVjdCB2ZWN0b3I2NyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjY3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2Nj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ID4gc3RydWN0IHZlY3RvcjY4IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNjg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggPiBzdHJ1Y3QgdmVjdG9yNjkgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I2OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjg+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSA+IHN0cnVjdCB2ZWN0b3I3MCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjcwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwID4gc3RydWN0IHZlY3RvcjcxIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNzE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgPiBzdHJ1Y3QgdmVjdG9yNzIgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I3MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzE+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiA+IHN0cnVjdCB2ZWN0b3I3MyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjczPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3Mj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczID4gc3RydWN0IHZlY3Rvcjc0IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNzQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgPiBzdHJ1Y3QgdmVjdG9yNzUgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I3NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQ+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSA+IHN0cnVjdCB2ZWN0b3I3NiB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjc2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ID4gc3RydWN0IHZlY3Rvcjc3IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNzc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgPiBzdHJ1Y3QgdmVjdG9yNzggeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I3ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzc+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCA+IHN0cnVjdCB2ZWN0b3I3OSB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjc5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ID4gc3RydWN0IHZlY3RvcjgwIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yODA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgPiBzdHJ1Y3QgdmVjdG9yODEgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I4MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODA+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSA+IHN0cnVjdCB2ZWN0b3I4MiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjgyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyID4gc3RydWN0IHZlY3RvcjgzIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yODM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgPiBzdHJ1Y3QgdmVjdG9yODQgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I4NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODM+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCA+IHN0cnVjdCB2ZWN0b3I4NSB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjg1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4ND4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ID4gc3RydWN0IHZlY3Rvcjg2IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yODY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgPiBzdHJ1Y3QgdmVjdG9yODcgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I4NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODY+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyA+IHN0cnVjdCB2ZWN0b3I4OCB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjg4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4Nz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ID4gc3RydWN0IHZlY3Rvcjg5IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yODk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgPiBzdHJ1Y3QgdmVjdG9yOTAgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I5MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODk+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCA+IHN0cnVjdCB2ZWN0b3I5MSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjkxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxID4gc3RydWN0IHZlY3RvcjkyIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yOTI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgPiBzdHJ1Y3QgdmVjdG9yOTMgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I5MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTI+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyA+IHN0cnVjdCB2ZWN0b3I5NCB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjk0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5Mz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ID4gc3RydWN0IHZlY3Rvcjk1IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yOTU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgPiBzdHJ1Y3QgdmVjdG9yOTYgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I5NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTU+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiA+IHN0cnVjdCB2ZWN0b3I5NyB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjk3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5Nj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ID4gc3RydWN0IHZlY3Rvcjk4IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yOTg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggPiBzdHJ1Y3QgdmVjdG9yOTkgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I5OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTg+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSA+IHN0cnVjdCB2ZWN0b3IxMDAgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMDA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwID4gc3RydWN0IHZlY3RvcjEwMSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEwMTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgPiBzdHJ1Y3QgdmVjdG9yMTAyIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTAyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiA+IHN0cnVjdCB2ZWN0b3IxMDMgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMDM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzID4gc3RydWN0IHZlY3RvcjEwNCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEwNDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgPiBzdHJ1Y3QgdmVjdG9yMTA1IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTA1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSA+IHN0cnVjdCB2ZWN0b3IxMDYgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMDY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ID4gc3RydWN0IHZlY3RvcjEwNyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEwNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgPiBzdHJ1Y3QgdmVjdG9yMTA4IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTA4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCA+IHN0cnVjdCB2ZWN0b3IxMDkgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMDk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ID4gc3RydWN0IHZlY3RvcjExMCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjExMDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgPiBzdHJ1Y3QgdmVjdG9yMTExIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTExPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSA+IHN0cnVjdCB2ZWN0b3IxMTIgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMTI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyID4gc3RydWN0IHZlY3RvcjExMyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjExMzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgPiBzdHJ1Y3QgdmVjdG9yMTE0IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTE0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCA+IHN0cnVjdCB2ZWN0b3IxMTUgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMTU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ID4gc3RydWN0IHZlY3RvcjExNiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjExNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgPiBzdHJ1Y3QgdmVjdG9yMTE3IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTE3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyA+IHN0cnVjdCB2ZWN0b3IxMTggeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMTg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ID4gc3RydWN0IHZlY3RvcjExOSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjExOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgPiBzdHJ1Y3QgdmVjdG9yMTIwIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTIwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCA+IHN0cnVjdCB2ZWN0b3IxMjEgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMjE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxID4gc3RydWN0IHZlY3RvcjEyMiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEyMjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgPiBzdHJ1Y3QgdmVjdG9yMTIzIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTIzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyA+IHN0cnVjdCB2ZWN0b3IxMjQgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMjQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ID4gc3RydWN0IHZlY3RvcjEyNSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEyNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgPiBzdHJ1Y3QgdmVjdG9yMTI2IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTI2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiA+IHN0cnVjdCB2ZWN0b3IxMjcgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMjc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ID4gc3RydWN0IHZlY3RvcjEyOCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEyODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggPiBzdHJ1Y3QgdmVjdG9yMTI5IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTI5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSA+IHN0cnVjdCB2ZWN0b3IxMzAgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMzA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwID4gc3RydWN0IHZlY3RvcjEzMSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEzMTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgPiBzdHJ1Y3QgdmVjdG9yMTMyIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTMyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiA+IHN0cnVjdCB2ZWN0b3IxMzMgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMzM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzID4gc3RydWN0IHZlY3RvcjEzNCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEzNDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgPiBzdHJ1Y3QgdmVjdG9yMTM1IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTM1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSA+IHN0cnVjdCB2ZWN0b3IxMzYgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMzY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ID4gc3RydWN0IHZlY3RvcjEzNyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEzNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgPiBzdHJ1Y3QgdmVjdG9yMTM4IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTM4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCA+IHN0cnVjdCB2ZWN0b3IxMzkgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMzk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ID4gc3RydWN0IHZlY3RvcjE0MCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE0MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgPiBzdHJ1Y3QgdmVjdG9yMTQxIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTQxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSA+IHN0cnVjdCB2ZWN0b3IxNDIgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNDI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgUDE0MSBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyID4gc3RydWN0IHZlY3RvcjE0MyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE0MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgUDE0MSBpdGVtMTQxOyB0eXBlZGVmIFAxNDIgaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgPiBzdHJ1Y3QgdmVjdG9yMTQ0IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTQ0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgUDE0MSBpdGVtMTQxOyB0eXBlZGVmIFAxNDIgaXRlbTE0MjsgdHlwZWRlZiBQMTQzIGl0ZW0xNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCA+IHN0cnVjdCB2ZWN0b3IxNDUgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNDU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgUDE0MSBpdGVtMTQxOyB0eXBlZGVmIFAxNDIgaXRlbTE0MjsgdHlwZWRlZiBQMTQzIGl0ZW0xNDM7IHR5cGVkZWYgUDE0NCBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ID4gc3RydWN0IHZlY3RvcjE0NiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE0NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgUDE0MSBpdGVtMTQxOyB0eXBlZGVmIFAxNDIgaXRlbTE0MjsgdHlwZWRlZiBQMTQzIGl0ZW0xNDM7IHR5cGVkZWYgUDE0NCBpdGVtMTQ0OyB0eXBlZGVmIFAxNDUgaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgPiBzdHJ1Y3QgdmVjdG9yMTQ3IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTQ3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgUDE0MSBpdGVtMTQxOyB0eXBlZGVmIFAxNDIgaXRlbTE0MjsgdHlwZWRlZiBQMTQzIGl0ZW0xNDM7IHR5cGVkZWYgUDE0NCBpdGVtMTQ0OyB0eXBlZGVmIFAxNDUgaXRlbTE0NTsgdHlwZWRlZiBQMTQ2IGl0ZW0xNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0xOTg7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyA+IHN0cnVjdCB2ZWN0b3IxNDggeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNDg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgUDE0MSBpdGVtMTQxOyB0eXBlZGVmIFAxNDIgaXRlbTE0MjsgdHlwZWRlZiBQMTQzIGl0ZW0xNDM7IHR5cGVkZWYgUDE0NCBpdGVtMTQ0OyB0eXBlZGVmIFAxNDUgaXRlbTE0NTsgdHlwZWRlZiBQMTQ2IGl0ZW0xNDY7IHR5cGVkZWYgUDE0NyBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ID4gc3RydWN0IHZlY3RvcjE0OSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE0OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgUDE0MSBpdGVtMTQxOyB0eXBlZGVmIFAxNDIgaXRlbTE0MjsgdHlwZWRlZiBQMTQzIGl0ZW0xNDM7IHR5cGVkZWYgUDE0NCBpdGVtMTQ0OyB0eXBlZGVmIFAxNDUgaXRlbTE0NTsgdHlwZWRlZiBQMTQ2IGl0ZW0xNDY7IHR5cGVkZWYgUDE0NyBpdGVtMTQ3OyB0eXBlZGVmIFAxNDggaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgPiBzdHJ1Y3QgdmVjdG9yMTUwIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTUwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIFA5NyBpdGVtOTc7IHR5cGVkZWYgUDk4IGl0ZW05ODsgdHlwZWRlZiBQOTkgaXRlbTk5OyB0eXBlZGVmIFAxMDAgaXRlbTEwMDsgdHlwZWRlZiBQMTAxIGl0ZW0xMDE7IHR5cGVkZWYgUDEwMiBpdGVtMTAyOyB0eXBlZGVmIFAxMDMgaXRlbTEwMzsgdHlwZWRlZiBQMTA0IGl0ZW0xMDQ7IHR5cGVkZWYgUDEwNSBpdGVtMTA1OyB0eXBlZGVmIFAxMDYgaXRlbTEwNjsgdHlwZWRlZiBQMTA3IGl0ZW0xMDc7IHR5cGVkZWYgUDEwOCBpdGVtMTA4OyB0eXBlZGVmIFAxMDkgaXRlbTEwOTsgdHlwZWRlZiBQMTEwIGl0ZW0xMTA7IHR5cGVkZWYgUDExMSBpdGVtMTExOyB0eXBlZGVmIFAxMTIgaXRlbTExMjsgdHlwZWRlZiBQMTEzIGl0ZW0xMTM7IHR5cGVkZWYgUDExNCBpdGVtMTE0OyB0eXBlZGVmIFAxMTUgaXRlbTExNTsgdHlwZWRlZiBQMTE2IGl0ZW0xMTY7IHR5cGVkZWYgUDExNyBpdGVtMTE3OyB0eXBlZGVmIFAxMTggaXRlbTExODsgdHlwZWRlZiBQMTE5IGl0ZW0xMTk7IHR5cGVkZWYgUDEyMCBpdGVtMTIwOyB0eXBlZGVmIFAxMjEgaXRlbTEyMTsgdHlwZWRlZiBQMTIyIGl0ZW0xMjI7IHR5cGVkZWYgUDEyMyBpdGVtMTIzOyB0eXBlZGVmIFAxMjQgaXRlbTEyNDsgdHlwZWRlZiBQMTI1IGl0ZW0xMjU7IHR5cGVkZWYgUDEyNiBpdGVtMTI2OyB0eXBlZGVmIFAxMjcgaXRlbTEyNzsgdHlwZWRlZiBQMTI4IGl0ZW0xMjg7IHR5cGVkZWYgUDEyOSBpdGVtMTI5OyB0eXBlZGVmIFAxMzAgaXRlbTEzMDsgdHlwZWRlZiBQMTMxIGl0ZW0xMzE7IHR5cGVkZWYgUDEzMiBpdGVtMTMyOyB0eXBlZGVmIFAxMzMgaXRlbTEzMzsgdHlwZWRlZiBQMTM0IGl0ZW0xMzQ7IHR5cGVkZWYgUDEzNSBpdGVtMTM1OyB0eXBlZGVmIFAxMzYgaXRlbTEzNjsgdHlwZWRlZiBQMTM3IGl0ZW0xMzc7IHR5cGVkZWYgUDEzOCBpdGVtMTM4OyB0eXBlZGVmIFAxMzkgaXRlbTEzOTsgdHlwZWRlZiBQMTQwIGl0ZW0xNDA7IHR5cGVkZWYgUDE0MSBpdGVtMTQxOyB0eXBlZGVmIFAxNDIgaXRlbTE0MjsgdHlwZWRlZiBQMTQzIGl0ZW0xNDM7IHR5cGVkZWYgUDE0NCBpdGVtMTQ0OyB0eXBlZGVmIFAxNDUgaXRlbTE0NTsgdHlwZWRlZiBQMTQ2IGl0ZW0xNDY7IHR5cGVkZWYgUDE0NyBpdGVtMTQ3OyB0eXBlZGVmIFAxNDggaXRlbTE0ODsgdHlwZWRlZiBQMTQ5IGl0ZW0xNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0xOTg7IH07Ci19fQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIHR5cGVfb2YgewotICAgIHRlbXBsYXRlPGNsYXNzIFYsIGNsYXNzIFQ+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+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE0OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNTA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFQgPiB0eXBlOyB9OwotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL3ZlY3RvcjIwMC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3R5cGVvZi92ZWN0b3IyMDAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MGE4ZDBjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL3ZlY3RvcjIwMC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MjEgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDUgQXJrYWRpeSBWZXJ0bGV5YgotLy8gQ29weXJpZ2h0IChDKSAyMDA1IFBlZGVyIEhvbHQKLS8vCi0vLyBVc2UgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIGJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsCi0vLyBWZXJzaW9uIDEuMC4gKFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpLgotCi0vLyBQcmVwcm9jZXNzZWQgY29kZSwgZG8gbm90IGVkaXQgbWFudWFsbHkgIQotCi0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSB0eXBlX29mIHsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBWLCBjbGFzcyBJbmNyZWFzZV9ORE5CT09TVF9UWVBFT0ZfTElNSVRfU0laRT4gc3RydWN0IHZfaXRlcjsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTAgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDAgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwyPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88Mz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTMgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDMgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDQ+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW00IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw0ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw1PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88Nj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTYgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDYgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDc+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW03IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw3ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw4PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtOCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88OCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88OT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTkgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDkgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEwPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTAgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEwICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTExIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTI+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTIgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEzPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTMgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEzICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxND4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE0IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTU+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTUgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE2PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTYgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE2ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE3IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTg+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xOCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTggKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE5PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTkgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE5ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwyMD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTIwIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwyMCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MjE+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0yMSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MjEgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDIyPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMjIgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDIyICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwyMz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTIzIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwyMyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MjQ+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0yNCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MjQgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDI1PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMjUgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDI1ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwyNj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTI2IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwyNiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88Mjc+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0yNyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MjcgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDI4PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMjggdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDI4ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwyOT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTI5IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwyOSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MzA+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0zMCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MzAgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDMxPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMzEgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDMxICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwzMj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTMyIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwzMiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MzM+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0zMyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MzMgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDM0PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMzQgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDM0ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwzNT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTM1IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwzNSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MzY+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0zNiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MzYgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDM3PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMzcgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDM3ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwzOD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTM4IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwzOCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88Mzk+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0zOSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MzkgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDQwPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNDAgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDQwICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw0MT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTQxIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw0MSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NDI+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW00MiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NDIgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDQzPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNDMgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDQzICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw0ND4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTQ0IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw0NCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NDU+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW00NSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NDUgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDQ2PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNDYgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDQ2ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw0Nz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTQ3IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw0NyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NDg+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW00OCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NDggKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDQ5PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNDkgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDQ5ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw1MD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTUwIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw1MCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NTE+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW01MSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NTEgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDUyPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNTIgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDUyICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw1Mz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTUzIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw1MyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NTQ+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW01NCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NTQgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDU1PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNTUgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDU1ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw1Nj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTU2IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw1NiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NTc+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW01NyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NTcgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDU4PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNTggdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDU4ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw1OT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTU5IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw1OSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NjA+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW02MCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NjAgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDYxPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNjEgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDYxICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw2Mj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTYyIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw2MiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NjM+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW02MyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NjMgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDY0PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNjQgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDY0ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw2NT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTY1IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw2NSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NjY+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW02NiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NjYgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDY3PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNjcgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDY3ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw2OD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTY4IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw2OCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88Njk+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW02OSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NjkgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDcwPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNzAgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDcwICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw3MT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTcxIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw3MSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NzI+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW03MiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NzIgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDczPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNzMgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDczICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw3ND4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTc0IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw3NCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88NzU+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW03NSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NzUgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDc2PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNzYgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDc2ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw3Nz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTc3IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw3NyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88Nzg+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW03OCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88NzggKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDc5PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtNzkgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDc5ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw4MD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTgwIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw4MCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88ODE+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW04MSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88ODEgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDgyPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtODIgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDgyICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw4Mz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTgzIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw4MyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88ODQ+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW04NCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88ODQgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDg1PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtODUgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDg1ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw4Nj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTg2IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw4NiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88ODc+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW04NyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88ODcgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDg4PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtODggdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDg4ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw4OT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTg5IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw4OSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88OTA+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW05MCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88OTAgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDkxPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtOTEgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDkxICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw5Mj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTkyIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw5MiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88OTM+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW05MyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88OTMgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDk0PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtOTQgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDk0ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw5NT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTk1IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw5NSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88OTY+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW05NiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88OTYgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDk3PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtOTcgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDk3ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50Xzw5OD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTk4IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50Xzw5OCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88OTk+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW05OSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88OTkgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEwMD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEwMCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTAwICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMDE+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMDEgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEwMSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTAyPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTAyIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMDIgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEwMz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEwMyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTAzICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMDQ+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMDQgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEwNCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTA1PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTA1IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMDUgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEwNj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEwNiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTA2ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMDc+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMDcgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEwNyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTA4PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTA4IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMDggKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEwOT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEwOSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTA5ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMTA+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMTAgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDExMCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTExPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTExIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMTEgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDExMj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTExMiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTEyICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMTM+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMTMgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDExMyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTE0PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTE0IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMTQgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDExNT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTExNSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTE1ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMTY+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMTYgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDExNiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTE3PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTE3IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMTcgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDExOD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTExOCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTE4ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMTk+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMTkgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDExOSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTIwPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTIwIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMjAgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEyMT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEyMSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTIxICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMjI+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMjIgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEyMiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTIzPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTIzIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMjMgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEyND4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEyNCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTI0ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMjU+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMjUgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEyNSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTI2PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTI2IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMjYgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEyNz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEyNyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTI3ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMjg+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMjggdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEyOCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTI5PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTI5IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMjkgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEzMD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEzMCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTMwICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMzE+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMzEgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEzMSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTMyPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTMyIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMzIgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEzMz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEzMyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTMzICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMzQ+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMzQgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEzNCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTM1PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTM1IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMzUgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEzNj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEzNiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTM2ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxMzc+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xMzcgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDEzNyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTM4PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTM4IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxMzggKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDEzOT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTEzOSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTM5ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNDA+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNDAgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE0MCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTQxPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTQxIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNDEgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE0Mj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE0MiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTQyICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNDM+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNDMgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE0MyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTQ0PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTQ0IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNDQgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE0NT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE0NSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTQ1ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNDY+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNDYgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE0NiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTQ3PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTQ3IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNDcgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE0OD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE0OCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTQ4ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNDk+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNDkgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE0OSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTUwPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTUwIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNTAgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE1MT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE1MSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTUxICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNTI+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNTIgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE1MiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTUzPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTUzIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNTMgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE1ND4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE1NCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTU0ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNTU+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNTUgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE1NSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTU2PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTU2IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNTYgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE1Nz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE1NyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTU3ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNTg+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNTggdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE1OCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTU5PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTU5IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNTkgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE2MD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE2MCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTYwICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNjE+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNjEgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE2MSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTYyPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTYyIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNjIgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE2Mz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE2MyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTYzICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNjQ+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNjQgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE2NCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTY1PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTY1IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNjUgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE2Nj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE2NiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTY2ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNjc+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNjcgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE2NyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTY4PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTY4IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNjggKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE2OT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE2OSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTY5ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNzA+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNzAgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE3MCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTcxPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTcxIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNzEgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE3Mj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE3MiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTcyICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNzM+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNzMgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE3MyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTc0PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTc0IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNzQgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE3NT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE3NSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTc1ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNzY+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNzYgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE3NiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTc3PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTc3IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxNzcgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE3OD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE3OCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTc4ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxNzk+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xNzkgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE3OSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTgwPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTgwIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxODAgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE4MT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE4MSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTgxICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxODI+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xODIgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE4MiArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTgzPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTgzIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxODMgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE4ND4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE4NCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTg0ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxODU+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xODUgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE4NSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTg2PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTg2IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxODYgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE4Nz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE4NyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTg3ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxODg+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xODggdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE4OCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTg5PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTg5IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxODkgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE5MD4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE5MCB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTkwICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxOTE+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xOTEgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE5MSArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTkyPiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTkyIHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxOTIgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE5Mz4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE5MyB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTkzICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxOTQ+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xOTQgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE5NCArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTk1PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTk1IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxOTUgKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE5Nj4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE5NiB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTk2ICsgMT4gPiBuZXh0OyB9OwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwxOTc+ID4geyB0eXBlZGVmIHR5cGVuYW1lIFY6Oml0ZW0xOTcgdHlwZTsgdHlwZWRlZiB2X2l0ZXI8ViwgbXBsOjppbnRfPDE5NyArIDE+ID4gbmV4dDsgfTsKLSAgICAgICAgdGVtcGxhdGU8Y2xhc3MgVj4gc3RydWN0IHZfaXRlcjxWLCBtcGw6OmludF88MTk4PiA+IHsgdHlwZWRlZiB0eXBlbmFtZSBWOjppdGVtMTk4IHR5cGU7IHR5cGVkZWYgdl9pdGVyPFYsIG1wbDo6aW50XzwxOTggKyAxPiA+IG5leHQ7IH07Ci0gICAgICAgIHRlbXBsYXRlPGNsYXNzIFY+IHN0cnVjdCB2X2l0ZXI8ViwgbXBsOjppbnRfPDE5OT4gPiB7IHR5cGVkZWYgdHlwZW5hbWUgVjo6aXRlbTE5OSB0eXBlOyB0eXBlZGVmIHZfaXRlcjxWLCBtcGw6OmludF88MTk5ICsgMT4gPiBuZXh0OyB9OwotfX0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSB0eXBlX29mIHsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFQgPSB2b2lkPiBzdHJ1Y3QgdmVjdG9yMCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjA8PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+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+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwID4gc3RydWN0IHZlY3RvcjEgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxPCBQMD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgPiBzdHJ1Y3QgdmVjdG9yMiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjI8IFAwICwgUDE+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+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiA+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+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzID4gc3RydWN0IHZlY3RvcjQgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I0PCBQMCAsIFAxICwgUDIgLCBQMz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgPiBzdHJ1Y3QgdmVjdG9yNSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQ+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+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSA+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+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ID4gc3RydWN0IHZlY3RvcjcgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgPiBzdHJ1Y3QgdmVjdG9yOCB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDc+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+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCA+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+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ID4gc3RydWN0IHZlY3RvcjEwIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+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+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgPiBzdHJ1Y3QgdmVjdG9yMTEgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTA+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+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+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSA+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+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyID4gc3RydWN0IHZlY3RvcjEzIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+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+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgPiBzdHJ1Y3QgdmVjdG9yMTQgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTM+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+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+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCA+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+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ID4gc3RydWN0IHZlY3RvcjE2IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+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+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgPiBzdHJ1Y3QgdmVjdG9yMTcgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTY+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+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+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyA+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+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ID4gc3RydWN0IHZlY3RvcjE5IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+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+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgPiBzdHJ1Y3QgdmVjdG9yMjAgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IyMDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTk+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+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+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCA+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+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxID4gc3RydWN0IHZlY3RvcjIyIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMjI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+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+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgPiBzdHJ1Y3QgdmVjdG9yMjMgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IyMzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjI+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+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+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyA+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+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ID4gc3RydWN0IHZlY3RvcjI1IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMjU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+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+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgPiBzdHJ1Y3QgdmVjdG9yMjYgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IyNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjU+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+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+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiA+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+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ID4gc3RydWN0IHZlY3RvcjI4IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMjg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggPiBzdHJ1Y3QgdmVjdG9yMjkgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IyOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjg+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+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+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSA+IHN0cnVjdCB2ZWN0b3IzMCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjMwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwID4gc3RydWN0IHZlY3RvcjMxIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMzE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgPiBzdHJ1Y3QgdmVjdG9yMzIgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IzMjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzE+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+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+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiA+IHN0cnVjdCB2ZWN0b3IzMyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjMzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzID4gc3RydWN0IHZlY3RvcjM0IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMzQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgPiBzdHJ1Y3QgdmVjdG9yMzUgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IzNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQ+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+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+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSA+IHN0cnVjdCB2ZWN0b3IzNiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjM2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ID4gc3RydWN0IHZlY3RvcjM3IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMzc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgPiBzdHJ1Y3QgdmVjdG9yMzggeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IzODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzc+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+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+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCA+IHN0cnVjdCB2ZWN0b3IzOSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjM5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ID4gc3RydWN0IHZlY3RvcjQwIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNDA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgPiBzdHJ1Y3QgdmVjdG9yNDEgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I0MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDA+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+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+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSA+IHN0cnVjdCB2ZWN0b3I0MiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjQyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyID4gc3RydWN0IHZlY3RvcjQzIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNDM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgPiBzdHJ1Y3QgdmVjdG9yNDQgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I0NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDM+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+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+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCA+IHN0cnVjdCB2ZWN0b3I0NSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjQ1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0ND4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ID4gc3RydWN0IHZlY3RvcjQ2IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNDY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgPiBzdHJ1Y3QgdmVjdG9yNDcgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I0NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDY+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+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+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyA+IHN0cnVjdCB2ZWN0b3I0OCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjQ4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0Nz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ID4gc3RydWN0IHZlY3RvcjQ5IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNDk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgPiBzdHJ1Y3QgdmVjdG9yNTAgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I1MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDk+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+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+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCA+IHN0cnVjdCB2ZWN0b3I1MSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjUxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxID4gc3RydWN0IHZlY3RvcjUyIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNTI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgPiBzdHJ1Y3QgdmVjdG9yNTMgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I1MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTI+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+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+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyA+IHN0cnVjdCB2ZWN0b3I1NCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjU0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1Mz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ID4gc3RydWN0IHZlY3RvcjU1IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNTU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgPiBzdHJ1Y3QgdmVjdG9yNTYgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I1NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTU+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+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+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiA+IHN0cnVjdCB2ZWN0b3I1NyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjU3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1Nj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ID4gc3RydWN0IHZlY3RvcjU4IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNTg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggPiBzdHJ1Y3QgdmVjdG9yNTkgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I1OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTg+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+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+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSA+IHN0cnVjdCB2ZWN0b3I2MCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjYwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwID4gc3RydWN0IHZlY3RvcjYxIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNjE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgPiBzdHJ1Y3QgdmVjdG9yNjIgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I2MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjE+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+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+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiA+IHN0cnVjdCB2ZWN0b3I2MyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjYzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2Mj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzID4gc3RydWN0IHZlY3RvcjY0IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNjQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgPiBzdHJ1Y3QgdmVjdG9yNjUgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I2NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQ+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+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+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSA+IHN0cnVjdCB2ZWN0b3I2NiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjY2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ID4gc3RydWN0IHZlY3RvcjY3IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNjc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgPiBzdHJ1Y3QgdmVjdG9yNjggeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I2ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjc+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+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+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCA+IHN0cnVjdCB2ZWN0b3I2OSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjY5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ID4gc3RydWN0IHZlY3RvcjcwIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNzA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgPiBzdHJ1Y3QgdmVjdG9yNzEgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I3MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzA+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+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+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSA+IHN0cnVjdCB2ZWN0b3I3MiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjcyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyID4gc3RydWN0IHZlY3RvcjczIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNzM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgPiBzdHJ1Y3QgdmVjdG9yNzQgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I3NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzM+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+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+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCA+IHN0cnVjdCB2ZWN0b3I3NSB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjc1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3ND4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ID4gc3RydWN0IHZlY3Rvcjc2IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNzY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgPiBzdHJ1Y3QgdmVjdG9yNzcgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I3NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzY+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+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+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyA+IHN0cnVjdCB2ZWN0b3I3OCB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjc4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3Nz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ID4gc3RydWN0IHZlY3Rvcjc5IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNzk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgPiBzdHJ1Y3QgdmVjdG9yODAgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I4MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzk+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+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+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCA+IHN0cnVjdCB2ZWN0b3I4MSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjgxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxID4gc3RydWN0IHZlY3RvcjgyIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yODI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgPiBzdHJ1Y3QgdmVjdG9yODMgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I4MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODI+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+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+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyA+IHN0cnVjdCB2ZWN0b3I4NCB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjg0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4Mz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ID4gc3RydWN0IHZlY3Rvcjg1IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yODU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgPiBzdHJ1Y3QgdmVjdG9yODYgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I4NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODU+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+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+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiA+IHN0cnVjdCB2ZWN0b3I4NyB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjg3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4Nj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ID4gc3RydWN0IHZlY3Rvcjg4IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yODg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggPiBzdHJ1Y3QgdmVjdG9yODkgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I4OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODg+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+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+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSA+IHN0cnVjdCB2ZWN0b3I5MCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjkwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwID4gc3RydWN0IHZlY3RvcjkxIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yOTE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgPiBzdHJ1Y3QgdmVjdG9yOTIgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I5MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTE+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+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+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiA+IHN0cnVjdCB2ZWN0b3I5MyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjkzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5Mj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzID4gc3RydWN0IHZlY3Rvcjk0IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yOTQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgPiBzdHJ1Y3QgdmVjdG9yOTUgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I5NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQ+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+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+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSA+IHN0cnVjdCB2ZWN0b3I5NiB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjk2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ID4gc3RydWN0IHZlY3Rvcjk3IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yOTc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBQNDggaXRlbTQ4OyB0eXBlZGVmIFA0OSBpdGVtNDk7IHR5cGVkZWYgUDUwIGl0ZW01MDsgdHlwZWRlZiBQNTEgaXRlbTUxOyB0eXBlZGVmIFA1MiBpdGVtNTI7IHR5cGVkZWYgUDUzIGl0ZW01MzsgdHlwZWRlZiBQNTQgaXRlbTU0OyB0eXBlZGVmIFA1NSBpdGVtNTU7IHR5cGVkZWYgUDU2IGl0ZW01NjsgdHlwZWRlZiBQNTcgaXRlbTU3OyB0eXBlZGVmIFA1OCBpdGVtNTg7IHR5cGVkZWYgUDU5IGl0ZW01OTsgdHlwZWRlZiBQNjAgaXRlbTYwOyB0eXBlZGVmIFA2MSBpdGVtNjE7IHR5cGVkZWYgUDYyIGl0ZW02MjsgdHlwZWRlZiBQNjMgaXRlbTYzOyB0eXBlZGVmIFA2NCBpdGVtNjQ7IHR5cGVkZWYgUDY1IGl0ZW02NTsgdHlwZWRlZiBQNjYgaXRlbTY2OyB0eXBlZGVmIFA2NyBpdGVtNjc7IHR5cGVkZWYgUDY4IGl0ZW02ODsgdHlwZWRlZiBQNjkgaXRlbTY5OyB0eXBlZGVmIFA3MCBpdGVtNzA7IHR5cGVkZWYgUDcxIGl0ZW03MTsgdHlwZWRlZiBQNzIgaXRlbTcyOyB0eXBlZGVmIFA3MyBpdGVtNzM7IHR5cGVkZWYgUDc0IGl0ZW03NDsgdHlwZWRlZiBQNzUgaXRlbTc1OyB0eXBlZGVmIFA3NiBpdGVtNzY7IHR5cGVkZWYgUDc3IGl0ZW03NzsgdHlwZWRlZiBQNzggaXRlbTc4OyB0eXBlZGVmIFA3OSBpdGVtNzk7IHR5cGVkZWYgUDgwIGl0ZW04MDsgdHlwZWRlZiBQODEgaXRlbTgxOyB0eXBlZGVmIFA4MiBpdGVtODI7IHR5cGVkZWYgUDgzIGl0ZW04MzsgdHlwZWRlZiBQODQgaXRlbTg0OyB0eXBlZGVmIFA4NSBpdGVtODU7IHR5cGVkZWYgUDg2IGl0ZW04NjsgdHlwZWRlZiBQODcgaXRlbTg3OyB0eXBlZGVmIFA4OCBpdGVtODg7IHR5cGVkZWYgUDg5IGl0ZW04OTsgdHlwZWRlZiBQOTAgaXRlbTkwOyB0eXBlZGVmIFA5MSBpdGVtOTE7IHR5cGVkZWYgUDkyIGl0ZW05MjsgdHlwZWRlZiBQOTMgaXRlbTkzOyB0eXBlZGVmIFA5NCBpdGVtOTQ7IHR5cGVkZWYgUDk1IGl0ZW05NTsgdHlwZWRlZiBQOTYgaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgPiBzdHJ1Y3QgdmVjdG9yOTggeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I5ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTc+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+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+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCA+IHN0cnVjdCB2ZWN0b3I5OSB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjk5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIFA1MCBpdGVtNTA7IHR5cGVkZWYgUDUxIGl0ZW01MTsgdHlwZWRlZiBQNTIgaXRlbTUyOyB0eXBlZGVmIFA1MyBpdGVtNTM7IHR5cGVkZWYgUDU0IGl0ZW01NDsgdHlwZWRlZiBQNTUgaXRlbTU1OyB0eXBlZGVmIFA1NiBpdGVtNTY7IHR5cGVkZWYgUDU3IGl0ZW01NzsgdHlwZWRlZiBQNTggaXRlbTU4OyB0eXBlZGVmIFA1OSBpdGVtNTk7IHR5cGVkZWYgUDYwIGl0ZW02MDsgdHlwZWRlZiBQNjEgaXRlbTYxOyB0eXBlZGVmIFA2MiBpdGVtNjI7IHR5cGVkZWYgUDYzIGl0ZW02MzsgdHlwZWRlZiBQNjQgaXRlbTY0OyB0eXBlZGVmIFA2NSBpdGVtNjU7IHR5cGVkZWYgUDY2IGl0ZW02NjsgdHlwZWRlZiBQNjcgaXRlbTY3OyB0eXBlZGVmIFA2OCBpdGVtNjg7IHR5cGVkZWYgUDY5IGl0ZW02OTsgdHlwZWRlZiBQNzAgaXRlbTcwOyB0eXBlZGVmIFA3MSBpdGVtNzE7IHR5cGVkZWYgUDcyIGl0ZW03MjsgdHlwZWRlZiBQNzMgaXRlbTczOyB0eXBlZGVmIFA3NCBpdGVtNzQ7IHR5cGVkZWYgUDc1IGl0ZW03NTsgdHlwZWRlZiBQNzYgaXRlbTc2OyB0eXBlZGVmIFA3NyBpdGVtNzc7IHR5cGVkZWYgUDc4IGl0ZW03ODsgdHlwZWRlZiBQNzkgaXRlbTc5OyB0eXBlZGVmIFA4MCBpdGVtODA7IHR5cGVkZWYgUDgxIGl0ZW04MTsgdHlwZWRlZiBQODIgaXRlbTgyOyB0eXBlZGVmIFA4MyBpdGVtODM7IHR5cGVkZWYgUDg0IGl0ZW04NDsgdHlwZWRlZiBQODUgaXRlbTg1OyB0eXBlZGVmIFA4NiBpdGVtODY7IHR5cGVkZWYgUDg3IGl0ZW04NzsgdHlwZWRlZiBQODggaXRlbTg4OyB0eXBlZGVmIFA4OSBpdGVtODk7IHR5cGVkZWYgUDkwIGl0ZW05MDsgdHlwZWRlZiBQOTEgaXRlbTkxOyB0eXBlZGVmIFA5MiBpdGVtOTI7IHR5cGVkZWYgUDkzIGl0ZW05MzsgdHlwZWRlZiBQOTQgaXRlbTk0OyB0eXBlZGVmIFA5NSBpdGVtOTU7IHR5cGVkZWYgUDk2IGl0ZW05NjsgdHlwZWRlZiBQOTcgaXRlbTk3OyB0eXBlZGVmIFA5OCBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ID4gc3RydWN0IHZlY3RvcjEwMCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEwMDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTk+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+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+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgPiBzdHJ1Y3QgdmVjdG9yMTAxIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTAxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDA+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSA+IHN0cnVjdCB2ZWN0b3IxMDIgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMDI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDE+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyID4gc3RydWN0IHZlY3RvcjEwMyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEwMzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDI+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+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+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgPiBzdHJ1Y3QgdmVjdG9yMTA0IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTA0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDM+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCA+IHN0cnVjdCB2ZWN0b3IxMDUgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMDU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQ+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ID4gc3RydWN0IHZlY3RvcjEwNiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEwNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDU+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+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+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgPiBzdHJ1Y3QgdmVjdG9yMTA3IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTA3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDY+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyA+IHN0cnVjdCB2ZWN0b3IxMDggeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMDg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDc+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ID4gc3RydWN0IHZlY3RvcjEwOSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEwOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDg+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+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+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgPiBzdHJ1Y3QgdmVjdG9yMTEwIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTEwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDk+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCA+IHN0cnVjdCB2ZWN0b3IxMTEgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMTE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTA+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExID4gc3RydWN0IHZlY3RvcjExMiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjExMjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTE+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+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+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgPiBzdHJ1Y3QgdmVjdG9yMTEzIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTEzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTI+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyA+IHN0cnVjdCB2ZWN0b3IxMTQgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMTQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTM+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ID4gc3RydWN0IHZlY3RvcjExNSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjExNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQ+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+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+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgPiBzdHJ1Y3QgdmVjdG9yMTE2IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTE2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTU+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiA+IHN0cnVjdCB2ZWN0b3IxMTcgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMTc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTY+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ID4gc3RydWN0IHZlY3RvcjExOCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjExODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTc+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+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+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggPiBzdHJ1Y3QgdmVjdG9yMTE5IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTE5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTg+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSA+IHN0cnVjdCB2ZWN0b3IxMjAgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMjA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTk+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwID4gc3RydWN0IHZlY3RvcjEyMSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEyMTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjA+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+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+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgPiBzdHJ1Y3QgdmVjdG9yMTIyIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTIyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjE+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiA+IHN0cnVjdCB2ZWN0b3IxMjMgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMjM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjI+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzID4gc3RydWN0IHZlY3RvcjEyNCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEyNDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjM+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+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+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgPiBzdHJ1Y3QgdmVjdG9yMTI1IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTI1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQ+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSA+IHN0cnVjdCB2ZWN0b3IxMjYgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMjY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjU+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ID4gc3RydWN0IHZlY3RvcjEyNyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEyNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjY+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+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+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgPiBzdHJ1Y3QgdmVjdG9yMTI4IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTI4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjc+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCA+IHN0cnVjdCB2ZWN0b3IxMjkgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMjk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjg+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ID4gc3RydWN0IHZlY3RvcjEzMCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEzMDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjk+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+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+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgPiBzdHJ1Y3QgdmVjdG9yMTMxIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTMxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzA+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSA+IHN0cnVjdCB2ZWN0b3IxMzIgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMzI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzE+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyID4gc3RydWN0IHZlY3RvcjEzMyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEzMzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzI+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+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+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgPiBzdHJ1Y3QgdmVjdG9yMTM0IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTM0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzM+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCA+IHN0cnVjdCB2ZWN0b3IxMzUgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMzU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQ+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ID4gc3RydWN0IHZlY3RvcjEzNiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEzNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzU+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+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+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgPiBzdHJ1Y3QgdmVjdG9yMTM3IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTM3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzY+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyA+IHN0cnVjdCB2ZWN0b3IxMzggeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMzg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzc+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTEzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ID4gc3RydWN0IHZlY3RvcjEzOSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjEzOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzg+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+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+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgPiBzdHJ1Y3QgdmVjdG9yMTQwIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTQwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzk+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCA+IHN0cnVjdCB2ZWN0b3IxNDEgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNDE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDA+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxID4gc3RydWN0IHZlY3RvcjE0MiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE0MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDE+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+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+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgPiBzdHJ1Y3QgdmVjdG9yMTQzIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTQzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDI+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyA+IHN0cnVjdCB2ZWN0b3IxNDQgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNDQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDM+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ID4gc3RydWN0IHZlY3RvcjE0NSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE0NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQ+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+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+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgPiBzdHJ1Y3QgdmVjdG9yMTQ2IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTQ2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDU+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiA+IHN0cnVjdCB2ZWN0b3IxNDcgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNDc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDY+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ID4gc3RydWN0IHZlY3RvcjE0OCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE0ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDc+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+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+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggPiBzdHJ1Y3QgdmVjdG9yMTQ5IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTQ5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDg+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSA+IHN0cnVjdCB2ZWN0b3IxNTAgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNTA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDk+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwID4gc3RydWN0IHZlY3RvcjE1MSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE1MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTA+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgPiBzdHJ1Y3QgdmVjdG9yMTUyIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTUyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTE+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiA+IHN0cnVjdCB2ZWN0b3IxNTMgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNTM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTI+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzID4gc3RydWN0IHZlY3RvcjE1NCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE1NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTM+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgPiBzdHJ1Y3QgdmVjdG9yMTU1IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTU1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQ+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSA+IHN0cnVjdCB2ZWN0b3IxNTYgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNTY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTU+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ID4gc3RydWN0IHZlY3RvcjE1NyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE1NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTY+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgPiBzdHJ1Y3QgdmVjdG9yMTU4IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTU4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTc+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCA+IHN0cnVjdCB2ZWN0b3IxNTkgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNTk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTg+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE1OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ID4gc3RydWN0IHZlY3RvcjE2MCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE2MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTk+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgPiBzdHJ1Y3QgdmVjdG9yMTYxIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTYxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjA+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSA+IHN0cnVjdCB2ZWN0b3IxNjIgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNjI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjE+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIFAxNjEgaXRlbTE2MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyID4gc3RydWN0IHZlY3RvcjE2MyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE2MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjI+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIFAxNjEgaXRlbTE2MTsgdHlwZWRlZiBQMTYyIGl0ZW0xNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgPiBzdHJ1Y3QgdmVjdG9yMTY0IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTY0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjM+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIFAxNjEgaXRlbTE2MTsgdHlwZWRlZiBQMTYyIGl0ZW0xNjI7IHR5cGVkZWYgUDE2MyBpdGVtMTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCA+IHN0cnVjdCB2ZWN0b3IxNjUgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNjU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQ+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIFAxNjEgaXRlbTE2MTsgdHlwZWRlZiBQMTYyIGl0ZW0xNjI7IHR5cGVkZWYgUDE2MyBpdGVtMTYzOyB0eXBlZGVmIFAxNjQgaXRlbTE2NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ID4gc3RydWN0IHZlY3RvcjE2NiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE2NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjU+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIFAxNjEgaXRlbTE2MTsgdHlwZWRlZiBQMTYyIGl0ZW0xNjI7IHR5cGVkZWYgUDE2MyBpdGVtMTYzOyB0eXBlZGVmIFAxNjQgaXRlbTE2NDsgdHlwZWRlZiBQMTY1IGl0ZW0xNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgPiBzdHJ1Y3QgdmVjdG9yMTY3IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTY3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjY+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIFAxNjEgaXRlbTE2MTsgdHlwZWRlZiBQMTYyIGl0ZW0xNjI7IHR5cGVkZWYgUDE2MyBpdGVtMTYzOyB0eXBlZGVmIFAxNjQgaXRlbTE2NDsgdHlwZWRlZiBQMTY1IGl0ZW0xNjU7IHR5cGVkZWYgUDE2NiBpdGVtMTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyA+IHN0cnVjdCB2ZWN0b3IxNjggeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNjg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjc+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIFAxNjEgaXRlbTE2MTsgdHlwZWRlZiBQMTYyIGl0ZW0xNjI7IHR5cGVkZWYgUDE2MyBpdGVtMTYzOyB0eXBlZGVmIFAxNjQgaXRlbTE2NDsgdHlwZWRlZiBQMTY1IGl0ZW0xNjU7IHR5cGVkZWYgUDE2NiBpdGVtMTY2OyB0eXBlZGVmIFAxNjcgaXRlbTE2NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE2OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ID4gc3RydWN0IHZlY3RvcjE2OSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE2OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjg+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIFAxNjEgaXRlbTE2MTsgdHlwZWRlZiBQMTYyIGl0ZW0xNjI7IHR5cGVkZWYgUDE2MyBpdGVtMTYzOyB0eXBlZGVmIFAxNjQgaXRlbTE2NDsgdHlwZWRlZiBQMTY1IGl0ZW0xNjU7IHR5cGVkZWYgUDE2NiBpdGVtMTY2OyB0eXBlZGVmIFAxNjcgaXRlbTE2NzsgdHlwZWRlZiBQMTY4IGl0ZW0xNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgPiBzdHJ1Y3QgdmVjdG9yMTcwIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTcwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjk+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIFAxNjEgaXRlbTE2MTsgdHlwZWRlZiBQMTYyIGl0ZW0xNjI7IHR5cGVkZWYgUDE2MyBpdGVtMTYzOyB0eXBlZGVmIFAxNjQgaXRlbTE2NDsgdHlwZWRlZiBQMTY1IGl0ZW0xNjU7IHR5cGVkZWYgUDE2NiBpdGVtMTY2OyB0eXBlZGVmIFAxNjcgaXRlbTE2NzsgdHlwZWRlZiBQMTY4IGl0ZW0xNjg7IHR5cGVkZWYgUDE2OSBpdGVtMTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCA+IHN0cnVjdCB2ZWN0b3IxNzEgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNzE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzA+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIFAxNjEgaXRlbTE2MTsgdHlwZWRlZiBQMTYyIGl0ZW0xNjI7IHR5cGVkZWYgUDE2MyBpdGVtMTYzOyB0eXBlZGVmIFAxNjQgaXRlbTE2NDsgdHlwZWRlZiBQMTY1IGl0ZW0xNjU7IHR5cGVkZWYgUDE2NiBpdGVtMTY2OyB0eXBlZGVmIFAxNjcgaXRlbTE2NzsgdHlwZWRlZiBQMTY4IGl0ZW0xNjg7IHR5cGVkZWYgUDE2OSBpdGVtMTY5OyB0eXBlZGVmIFAxNzAgaXRlbTE3MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgLCBjbGFzcyBQMTcxID4gc3RydWN0IHZlY3RvcjE3MiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE3MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzE+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIFAxNjEgaXRlbTE2MTsgdHlwZWRlZiBQMTYyIGl0ZW0xNjI7IHR5cGVkZWYgUDE2MyBpdGVtMTYzOyB0eXBlZGVmIFAxNjQgaXRlbTE2NDsgdHlwZWRlZiBQMTY1IGl0ZW0xNjU7IHR5cGVkZWYgUDE2NiBpdGVtMTY2OyB0eXBlZGVmIFAxNjcgaXRlbTE2NzsgdHlwZWRlZiBQMTY4IGl0ZW0xNjg7IHR5cGVkZWYgUDE2OSBpdGVtMTY5OyB0eXBlZGVmIFAxNzAgaXRlbTE3MDsgdHlwZWRlZiBQMTcxIGl0ZW0xNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBQMTcwICwgY2xhc3MgUDE3MSAsIGNsYXNzIFAxNzIgPiBzdHJ1Y3QgdmVjdG9yMTczIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTczPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzI+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIFAxNjEgaXRlbTE2MTsgdHlwZWRlZiBQMTYyIGl0ZW0xNjI7IHR5cGVkZWYgUDE2MyBpdGVtMTYzOyB0eXBlZGVmIFAxNjQgaXRlbTE2NDsgdHlwZWRlZiBQMTY1IGl0ZW0xNjU7IHR5cGVkZWYgUDE2NiBpdGVtMTY2OyB0eXBlZGVmIFAxNjcgaXRlbTE2NzsgdHlwZWRlZiBQMTY4IGl0ZW0xNjg7IHR5cGVkZWYgUDE2OSBpdGVtMTY5OyB0eXBlZGVmIFAxNzAgaXRlbTE3MDsgdHlwZWRlZiBQMTcxIGl0ZW0xNzE7IHR5cGVkZWYgUDE3MiBpdGVtMTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCAsIGNsYXNzIFAxNzEgLCBjbGFzcyBQMTcyICwgY2xhc3MgUDE3MyA+IHN0cnVjdCB2ZWN0b3IxNzQgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNzQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzM+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIFAxNjEgaXRlbTE2MTsgdHlwZWRlZiBQMTYyIGl0ZW0xNjI7IHR5cGVkZWYgUDE2MyBpdGVtMTYzOyB0eXBlZGVmIFAxNjQgaXRlbTE2NDsgdHlwZWRlZiBQMTY1IGl0ZW0xNjU7IHR5cGVkZWYgUDE2NiBpdGVtMTY2OyB0eXBlZGVmIFAxNjcgaXRlbTE2NzsgdHlwZWRlZiBQMTY4IGl0ZW0xNjg7IHR5cGVkZWYgUDE2OSBpdGVtMTY5OyB0eXBlZGVmIFAxNzAgaXRlbTE3MDsgdHlwZWRlZiBQMTcxIGl0ZW0xNzE7IHR5cGVkZWYgUDE3MiBpdGVtMTcyOyB0eXBlZGVmIFAxNzMgaXRlbTE3MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgLCBjbGFzcyBQMTcxICwgY2xhc3MgUDE3MiAsIGNsYXNzIFAxNzMgLCBjbGFzcyBQMTc0ID4gc3RydWN0IHZlY3RvcjE3NSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE3NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQ+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIFAxNjEgaXRlbTE2MTsgdHlwZWRlZiBQMTYyIGl0ZW0xNjI7IHR5cGVkZWYgUDE2MyBpdGVtMTYzOyB0eXBlZGVmIFAxNjQgaXRlbTE2NDsgdHlwZWRlZiBQMTY1IGl0ZW0xNjU7IHR5cGVkZWYgUDE2NiBpdGVtMTY2OyB0eXBlZGVmIFAxNjcgaXRlbTE2NzsgdHlwZWRlZiBQMTY4IGl0ZW0xNjg7IHR5cGVkZWYgUDE2OSBpdGVtMTY5OyB0eXBlZGVmIFAxNzAgaXRlbTE3MDsgdHlwZWRlZiBQMTcxIGl0ZW0xNzE7IHR5cGVkZWYgUDE3MiBpdGVtMTcyOyB0eXBlZGVmIFAxNzMgaXRlbTE3MzsgdHlwZWRlZiBQMTc0IGl0ZW0xNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBQMTcwICwgY2xhc3MgUDE3MSAsIGNsYXNzIFAxNzIgLCBjbGFzcyBQMTczICwgY2xhc3MgUDE3NCAsIGNsYXNzIFAxNzUgPiBzdHJ1Y3QgdmVjdG9yMTc2IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTc2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzU+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIFAxNjEgaXRlbTE2MTsgdHlwZWRlZiBQMTYyIGl0ZW0xNjI7IHR5cGVkZWYgUDE2MyBpdGVtMTYzOyB0eXBlZGVmIFAxNjQgaXRlbTE2NDsgdHlwZWRlZiBQMTY1IGl0ZW0xNjU7IHR5cGVkZWYgUDE2NiBpdGVtMTY2OyB0eXBlZGVmIFAxNjcgaXRlbTE2NzsgdHlwZWRlZiBQMTY4IGl0ZW0xNjg7IHR5cGVkZWYgUDE2OSBpdGVtMTY5OyB0eXBlZGVmIFAxNzAgaXRlbTE3MDsgdHlwZWRlZiBQMTcxIGl0ZW0xNzE7IHR5cGVkZWYgUDE3MiBpdGVtMTcyOyB0eXBlZGVmIFAxNzMgaXRlbTE3MzsgdHlwZWRlZiBQMTc0IGl0ZW0xNzQ7IHR5cGVkZWYgUDE3NSBpdGVtMTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCAsIGNsYXNzIFAxNzEgLCBjbGFzcyBQMTcyICwgY2xhc3MgUDE3MyAsIGNsYXNzIFAxNzQgLCBjbGFzcyBQMTc1ICwgY2xhc3MgUDE3NiA+IHN0cnVjdCB2ZWN0b3IxNzcgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNzc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzY+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIFAxNjEgaXRlbTE2MTsgdHlwZWRlZiBQMTYyIGl0ZW0xNjI7IHR5cGVkZWYgUDE2MyBpdGVtMTYzOyB0eXBlZGVmIFAxNjQgaXRlbTE2NDsgdHlwZWRlZiBQMTY1IGl0ZW0xNjU7IHR5cGVkZWYgUDE2NiBpdGVtMTY2OyB0eXBlZGVmIFAxNjcgaXRlbTE2NzsgdHlwZWRlZiBQMTY4IGl0ZW0xNjg7IHR5cGVkZWYgUDE2OSBpdGVtMTY5OyB0eXBlZGVmIFAxNzAgaXRlbTE3MDsgdHlwZWRlZiBQMTcxIGl0ZW0xNzE7IHR5cGVkZWYgUDE3MiBpdGVtMTcyOyB0eXBlZGVmIFAxNzMgaXRlbTE3MzsgdHlwZWRlZiBQMTc0IGl0ZW0xNzQ7IHR5cGVkZWYgUDE3NSBpdGVtMTc1OyB0eXBlZGVmIFAxNzYgaXRlbTE3NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgLCBjbGFzcyBQMTcxICwgY2xhc3MgUDE3MiAsIGNsYXNzIFAxNzMgLCBjbGFzcyBQMTc0ICwgY2xhc3MgUDE3NSAsIGNsYXNzIFAxNzYgLCBjbGFzcyBQMTc3ID4gc3RydWN0IHZlY3RvcjE3OCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE3ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzc+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIFAxNjEgaXRlbTE2MTsgdHlwZWRlZiBQMTYyIGl0ZW0xNjI7IHR5cGVkZWYgUDE2MyBpdGVtMTYzOyB0eXBlZGVmIFAxNjQgaXRlbTE2NDsgdHlwZWRlZiBQMTY1IGl0ZW0xNjU7IHR5cGVkZWYgUDE2NiBpdGVtMTY2OyB0eXBlZGVmIFAxNjcgaXRlbTE2NzsgdHlwZWRlZiBQMTY4IGl0ZW0xNjg7IHR5cGVkZWYgUDE2OSBpdGVtMTY5OyB0eXBlZGVmIFAxNzAgaXRlbTE3MDsgdHlwZWRlZiBQMTcxIGl0ZW0xNzE7IHR5cGVkZWYgUDE3MiBpdGVtMTcyOyB0eXBlZGVmIFAxNzMgaXRlbTE3MzsgdHlwZWRlZiBQMTc0IGl0ZW0xNzQ7IHR5cGVkZWYgUDE3NSBpdGVtMTc1OyB0eXBlZGVmIFAxNzYgaXRlbTE3NjsgdHlwZWRlZiBQMTc3IGl0ZW0xNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBQMTcwICwgY2xhc3MgUDE3MSAsIGNsYXNzIFAxNzIgLCBjbGFzcyBQMTczICwgY2xhc3MgUDE3NCAsIGNsYXNzIFAxNzUgLCBjbGFzcyBQMTc2ICwgY2xhc3MgUDE3NyAsIGNsYXNzIFAxNzggPiBzdHJ1Y3QgdmVjdG9yMTc5IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTc5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzg+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIFAxNjEgaXRlbTE2MTsgdHlwZWRlZiBQMTYyIGl0ZW0xNjI7IHR5cGVkZWYgUDE2MyBpdGVtMTYzOyB0eXBlZGVmIFAxNjQgaXRlbTE2NDsgdHlwZWRlZiBQMTY1IGl0ZW0xNjU7IHR5cGVkZWYgUDE2NiBpdGVtMTY2OyB0eXBlZGVmIFAxNjcgaXRlbTE2NzsgdHlwZWRlZiBQMTY4IGl0ZW0xNjg7IHR5cGVkZWYgUDE2OSBpdGVtMTY5OyB0eXBlZGVmIFAxNzAgaXRlbTE3MDsgdHlwZWRlZiBQMTcxIGl0ZW0xNzE7IHR5cGVkZWYgUDE3MiBpdGVtMTcyOyB0eXBlZGVmIFAxNzMgaXRlbTE3MzsgdHlwZWRlZiBQMTc0IGl0ZW0xNzQ7IHR5cGVkZWYgUDE3NSBpdGVtMTc1OyB0eXBlZGVmIFAxNzYgaXRlbTE3NjsgdHlwZWRlZiBQMTc3IGl0ZW0xNzc7IHR5cGVkZWYgUDE3OCBpdGVtMTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCAsIGNsYXNzIFAxNzEgLCBjbGFzcyBQMTcyICwgY2xhc3MgUDE3MyAsIGNsYXNzIFAxNzQgLCBjbGFzcyBQMTc1ICwgY2xhc3MgUDE3NiAsIGNsYXNzIFAxNzcgLCBjbGFzcyBQMTc4ICwgY2xhc3MgUDE3OSA+IHN0cnVjdCB2ZWN0b3IxODAgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxODA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzk+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIFAxNjEgaXRlbTE2MTsgdHlwZWRlZiBQMTYyIGl0ZW0xNjI7IHR5cGVkZWYgUDE2MyBpdGVtMTYzOyB0eXBlZGVmIFAxNjQgaXRlbTE2NDsgdHlwZWRlZiBQMTY1IGl0ZW0xNjU7IHR5cGVkZWYgUDE2NiBpdGVtMTY2OyB0eXBlZGVmIFAxNjcgaXRlbTE2NzsgdHlwZWRlZiBQMTY4IGl0ZW0xNjg7IHR5cGVkZWYgUDE2OSBpdGVtMTY5OyB0eXBlZGVmIFAxNzAgaXRlbTE3MDsgdHlwZWRlZiBQMTcxIGl0ZW0xNzE7IHR5cGVkZWYgUDE3MiBpdGVtMTcyOyB0eXBlZGVmIFAxNzMgaXRlbTE3MzsgdHlwZWRlZiBQMTc0IGl0ZW0xNzQ7IHR5cGVkZWYgUDE3NSBpdGVtMTc1OyB0eXBlZGVmIFAxNzYgaXRlbTE3NjsgdHlwZWRlZiBQMTc3IGl0ZW0xNzc7IHR5cGVkZWYgUDE3OCBpdGVtMTc4OyB0eXBlZGVmIFAxNzkgaXRlbTE3OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgLCBjbGFzcyBQMTcxICwgY2xhc3MgUDE3MiAsIGNsYXNzIFAxNzMgLCBjbGFzcyBQMTc0ICwgY2xhc3MgUDE3NSAsIGNsYXNzIFAxNzYgLCBjbGFzcyBQMTc3ICwgY2xhc3MgUDE3OCAsIGNsYXNzIFAxNzkgLCBjbGFzcyBQMTgwID4gc3RydWN0IHZlY3RvcjE4MSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE4MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBQMTc4ICwgUDE3OSAsIFAxODA+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIFAxNjEgaXRlbTE2MTsgdHlwZWRlZiBQMTYyIGl0ZW0xNjI7IHR5cGVkZWYgUDE2MyBpdGVtMTYzOyB0eXBlZGVmIFAxNjQgaXRlbTE2NDsgdHlwZWRlZiBQMTY1IGl0ZW0xNjU7IHR5cGVkZWYgUDE2NiBpdGVtMTY2OyB0eXBlZGVmIFAxNjcgaXRlbTE2NzsgdHlwZWRlZiBQMTY4IGl0ZW0xNjg7IHR5cGVkZWYgUDE2OSBpdGVtMTY5OyB0eXBlZGVmIFAxNzAgaXRlbTE3MDsgdHlwZWRlZiBQMTcxIGl0ZW0xNzE7IHR5cGVkZWYgUDE3MiBpdGVtMTcyOyB0eXBlZGVmIFAxNzMgaXRlbTE3MzsgdHlwZWRlZiBQMTc0IGl0ZW0xNzQ7IHR5cGVkZWYgUDE3NSBpdGVtMTc1OyB0eXBlZGVmIFAxNzYgaXRlbTE3NjsgdHlwZWRlZiBQMTc3IGl0ZW0xNzc7IHR5cGVkZWYgUDE3OCBpdGVtMTc4OyB0eXBlZGVmIFAxNzkgaXRlbTE3OTsgdHlwZWRlZiBQMTgwIGl0ZW0xODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBQMTcwICwgY2xhc3MgUDE3MSAsIGNsYXNzIFAxNzIgLCBjbGFzcyBQMTczICwgY2xhc3MgUDE3NCAsIGNsYXNzIFAxNzUgLCBjbGFzcyBQMTc2ICwgY2xhc3MgUDE3NyAsIGNsYXNzIFAxNzggLCBjbGFzcyBQMTc5ICwgY2xhc3MgUDE4MCAsIGNsYXNzIFAxODEgPiBzdHJ1Y3QgdmVjdG9yMTgyIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTgyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzggLCBQMTc5ICwgUDE4MCAsIFAxODE+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIFAxNjEgaXRlbTE2MTsgdHlwZWRlZiBQMTYyIGl0ZW0xNjI7IHR5cGVkZWYgUDE2MyBpdGVtMTYzOyB0eXBlZGVmIFAxNjQgaXRlbTE2NDsgdHlwZWRlZiBQMTY1IGl0ZW0xNjU7IHR5cGVkZWYgUDE2NiBpdGVtMTY2OyB0eXBlZGVmIFAxNjcgaXRlbTE2NzsgdHlwZWRlZiBQMTY4IGl0ZW0xNjg7IHR5cGVkZWYgUDE2OSBpdGVtMTY5OyB0eXBlZGVmIFAxNzAgaXRlbTE3MDsgdHlwZWRlZiBQMTcxIGl0ZW0xNzE7IHR5cGVkZWYgUDE3MiBpdGVtMTcyOyB0eXBlZGVmIFAxNzMgaXRlbTE3MzsgdHlwZWRlZiBQMTc0IGl0ZW0xNzQ7IHR5cGVkZWYgUDE3NSBpdGVtMTc1OyB0eXBlZGVmIFAxNzYgaXRlbTE3NjsgdHlwZWRlZiBQMTc3IGl0ZW0xNzc7IHR5cGVkZWYgUDE3OCBpdGVtMTc4OyB0eXBlZGVmIFAxNzkgaXRlbTE3OTsgdHlwZWRlZiBQMTgwIGl0ZW0xODA7IHR5cGVkZWYgUDE4MSBpdGVtMTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCAsIGNsYXNzIFAxNzEgLCBjbGFzcyBQMTcyICwgY2xhc3MgUDE3MyAsIGNsYXNzIFAxNzQgLCBjbGFzcyBQMTc1ICwgY2xhc3MgUDE3NiAsIGNsYXNzIFAxNzcgLCBjbGFzcyBQMTc4ICwgY2xhc3MgUDE3OSAsIGNsYXNzIFAxODAgLCBjbGFzcyBQMTgxICwgY2xhc3MgUDE4MiA+IHN0cnVjdCB2ZWN0b3IxODMgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxODM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODI+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIFAxNjEgaXRlbTE2MTsgdHlwZWRlZiBQMTYyIGl0ZW0xNjI7IHR5cGVkZWYgUDE2MyBpdGVtMTYzOyB0eXBlZGVmIFAxNjQgaXRlbTE2NDsgdHlwZWRlZiBQMTY1IGl0ZW0xNjU7IHR5cGVkZWYgUDE2NiBpdGVtMTY2OyB0eXBlZGVmIFAxNjcgaXRlbTE2NzsgdHlwZWRlZiBQMTY4IGl0ZW0xNjg7IHR5cGVkZWYgUDE2OSBpdGVtMTY5OyB0eXBlZGVmIFAxNzAgaXRlbTE3MDsgdHlwZWRlZiBQMTcxIGl0ZW0xNzE7IHR5cGVkZWYgUDE3MiBpdGVtMTcyOyB0eXBlZGVmIFAxNzMgaXRlbTE3MzsgdHlwZWRlZiBQMTc0IGl0ZW0xNzQ7IHR5cGVkZWYgUDE3NSBpdGVtMTc1OyB0eXBlZGVmIFAxNzYgaXRlbTE3NjsgdHlwZWRlZiBQMTc3IGl0ZW0xNzc7IHR5cGVkZWYgUDE3OCBpdGVtMTc4OyB0eXBlZGVmIFAxNzkgaXRlbTE3OTsgdHlwZWRlZiBQMTgwIGl0ZW0xODA7IHR5cGVkZWYgUDE4MSBpdGVtMTgxOyB0eXBlZGVmIFAxODIgaXRlbTE4MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgLCBjbGFzcyBQMTcxICwgY2xhc3MgUDE3MiAsIGNsYXNzIFAxNzMgLCBjbGFzcyBQMTc0ICwgY2xhc3MgUDE3NSAsIGNsYXNzIFAxNzYgLCBjbGFzcyBQMTc3ICwgY2xhc3MgUDE3OCAsIGNsYXNzIFAxNzkgLCBjbGFzcyBQMTgwICwgY2xhc3MgUDE4MSAsIGNsYXNzIFAxODIgLCBjbGFzcyBQMTgzID4gc3RydWN0IHZlY3RvcjE4NCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE4NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBQMTc4ICwgUDE3OSAsIFAxODAgLCBQMTgxICwgUDE4MiAsIFAxODM+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIFAxNjEgaXRlbTE2MTsgdHlwZWRlZiBQMTYyIGl0ZW0xNjI7IHR5cGVkZWYgUDE2MyBpdGVtMTYzOyB0eXBlZGVmIFAxNjQgaXRlbTE2NDsgdHlwZWRlZiBQMTY1IGl0ZW0xNjU7IHR5cGVkZWYgUDE2NiBpdGVtMTY2OyB0eXBlZGVmIFAxNjcgaXRlbTE2NzsgdHlwZWRlZiBQMTY4IGl0ZW0xNjg7IHR5cGVkZWYgUDE2OSBpdGVtMTY5OyB0eXBlZGVmIFAxNzAgaXRlbTE3MDsgdHlwZWRlZiBQMTcxIGl0ZW0xNzE7IHR5cGVkZWYgUDE3MiBpdGVtMTcyOyB0eXBlZGVmIFAxNzMgaXRlbTE3MzsgdHlwZWRlZiBQMTc0IGl0ZW0xNzQ7IHR5cGVkZWYgUDE3NSBpdGVtMTc1OyB0eXBlZGVmIFAxNzYgaXRlbTE3NjsgdHlwZWRlZiBQMTc3IGl0ZW0xNzc7IHR5cGVkZWYgUDE3OCBpdGVtMTc4OyB0eXBlZGVmIFAxNzkgaXRlbTE3OTsgdHlwZWRlZiBQMTgwIGl0ZW0xODA7IHR5cGVkZWYgUDE4MSBpdGVtMTgxOyB0eXBlZGVmIFAxODIgaXRlbTE4MjsgdHlwZWRlZiBQMTgzIGl0ZW0xODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBQMTcwICwgY2xhc3MgUDE3MSAsIGNsYXNzIFAxNzIgLCBjbGFzcyBQMTczICwgY2xhc3MgUDE3NCAsIGNsYXNzIFAxNzUgLCBjbGFzcyBQMTc2ICwgY2xhc3MgUDE3NyAsIGNsYXNzIFAxNzggLCBjbGFzcyBQMTc5ICwgY2xhc3MgUDE4MCAsIGNsYXNzIFAxODEgLCBjbGFzcyBQMTgyICwgY2xhc3MgUDE4MyAsIGNsYXNzIFAxODQgPiBzdHJ1Y3QgdmVjdG9yMTg1IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTg1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzggLCBQMTc5ICwgUDE4MCAsIFAxODEgLCBQMTgyICwgUDE4MyAsIFAxODQ+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIFAxNjEgaXRlbTE2MTsgdHlwZWRlZiBQMTYyIGl0ZW0xNjI7IHR5cGVkZWYgUDE2MyBpdGVtMTYzOyB0eXBlZGVmIFAxNjQgaXRlbTE2NDsgdHlwZWRlZiBQMTY1IGl0ZW0xNjU7IHR5cGVkZWYgUDE2NiBpdGVtMTY2OyB0eXBlZGVmIFAxNjcgaXRlbTE2NzsgdHlwZWRlZiBQMTY4IGl0ZW0xNjg7IHR5cGVkZWYgUDE2OSBpdGVtMTY5OyB0eXBlZGVmIFAxNzAgaXRlbTE3MDsgdHlwZWRlZiBQMTcxIGl0ZW0xNzE7IHR5cGVkZWYgUDE3MiBpdGVtMTcyOyB0eXBlZGVmIFAxNzMgaXRlbTE3MzsgdHlwZWRlZiBQMTc0IGl0ZW0xNzQ7IHR5cGVkZWYgUDE3NSBpdGVtMTc1OyB0eXBlZGVmIFAxNzYgaXRlbTE3NjsgdHlwZWRlZiBQMTc3IGl0ZW0xNzc7IHR5cGVkZWYgUDE3OCBpdGVtMTc4OyB0eXBlZGVmIFAxNzkgaXRlbTE3OTsgdHlwZWRlZiBQMTgwIGl0ZW0xODA7IHR5cGVkZWYgUDE4MSBpdGVtMTgxOyB0eXBlZGVmIFAxODIgaXRlbTE4MjsgdHlwZWRlZiBQMTgzIGl0ZW0xODM7IHR5cGVkZWYgUDE4NCBpdGVtMTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCAsIGNsYXNzIFAxNzEgLCBjbGFzcyBQMTcyICwgY2xhc3MgUDE3MyAsIGNsYXNzIFAxNzQgLCBjbGFzcyBQMTc1ICwgY2xhc3MgUDE3NiAsIGNsYXNzIFAxNzcgLCBjbGFzcyBQMTc4ICwgY2xhc3MgUDE3OSAsIGNsYXNzIFAxODAgLCBjbGFzcyBQMTgxICwgY2xhc3MgUDE4MiAsIGNsYXNzIFAxODMgLCBjbGFzcyBQMTg0ICwgY2xhc3MgUDE4NSA+IHN0cnVjdCB2ZWN0b3IxODYgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxODY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODIgLCBQMTgzICwgUDE4NCAsIFAxODU+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIFAxNjEgaXRlbTE2MTsgdHlwZWRlZiBQMTYyIGl0ZW0xNjI7IHR5cGVkZWYgUDE2MyBpdGVtMTYzOyB0eXBlZGVmIFAxNjQgaXRlbTE2NDsgdHlwZWRlZiBQMTY1IGl0ZW0xNjU7IHR5cGVkZWYgUDE2NiBpdGVtMTY2OyB0eXBlZGVmIFAxNjcgaXRlbTE2NzsgdHlwZWRlZiBQMTY4IGl0ZW0xNjg7IHR5cGVkZWYgUDE2OSBpdGVtMTY5OyB0eXBlZGVmIFAxNzAgaXRlbTE3MDsgdHlwZWRlZiBQMTcxIGl0ZW0xNzE7IHR5cGVkZWYgUDE3MiBpdGVtMTcyOyB0eXBlZGVmIFAxNzMgaXRlbTE3MzsgdHlwZWRlZiBQMTc0IGl0ZW0xNzQ7IHR5cGVkZWYgUDE3NSBpdGVtMTc1OyB0eXBlZGVmIFAxNzYgaXRlbTE3NjsgdHlwZWRlZiBQMTc3IGl0ZW0xNzc7IHR5cGVkZWYgUDE3OCBpdGVtMTc4OyB0eXBlZGVmIFAxNzkgaXRlbTE3OTsgdHlwZWRlZiBQMTgwIGl0ZW0xODA7IHR5cGVkZWYgUDE4MSBpdGVtMTgxOyB0eXBlZGVmIFAxODIgaXRlbTE4MjsgdHlwZWRlZiBQMTgzIGl0ZW0xODM7IHR5cGVkZWYgUDE4NCBpdGVtMTg0OyB0eXBlZGVmIFAxODUgaXRlbTE4NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgLCBjbGFzcyBQMTcxICwgY2xhc3MgUDE3MiAsIGNsYXNzIFAxNzMgLCBjbGFzcyBQMTc0ICwgY2xhc3MgUDE3NSAsIGNsYXNzIFAxNzYgLCBjbGFzcyBQMTc3ICwgY2xhc3MgUDE3OCAsIGNsYXNzIFAxNzkgLCBjbGFzcyBQMTgwICwgY2xhc3MgUDE4MSAsIGNsYXNzIFAxODIgLCBjbGFzcyBQMTgzICwgY2xhc3MgUDE4NCAsIGNsYXNzIFAxODUgLCBjbGFzcyBQMTg2ID4gc3RydWN0IHZlY3RvcjE4NyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE4NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBQMTc4ICwgUDE3OSAsIFAxODAgLCBQMTgxICwgUDE4MiAsIFAxODMgLCBQMTg0ICwgUDE4NSAsIFAxODY+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIFAxNjEgaXRlbTE2MTsgdHlwZWRlZiBQMTYyIGl0ZW0xNjI7IHR5cGVkZWYgUDE2MyBpdGVtMTYzOyB0eXBlZGVmIFAxNjQgaXRlbTE2NDsgdHlwZWRlZiBQMTY1IGl0ZW0xNjU7IHR5cGVkZWYgUDE2NiBpdGVtMTY2OyB0eXBlZGVmIFAxNjcgaXRlbTE2NzsgdHlwZWRlZiBQMTY4IGl0ZW0xNjg7IHR5cGVkZWYgUDE2OSBpdGVtMTY5OyB0eXBlZGVmIFAxNzAgaXRlbTE3MDsgdHlwZWRlZiBQMTcxIGl0ZW0xNzE7IHR5cGVkZWYgUDE3MiBpdGVtMTcyOyB0eXBlZGVmIFAxNzMgaXRlbTE3MzsgdHlwZWRlZiBQMTc0IGl0ZW0xNzQ7IHR5cGVkZWYgUDE3NSBpdGVtMTc1OyB0eXBlZGVmIFAxNzYgaXRlbTE3NjsgdHlwZWRlZiBQMTc3IGl0ZW0xNzc7IHR5cGVkZWYgUDE3OCBpdGVtMTc4OyB0eXBlZGVmIFAxNzkgaXRlbTE3OTsgdHlwZWRlZiBQMTgwIGl0ZW0xODA7IHR5cGVkZWYgUDE4MSBpdGVtMTgxOyB0eXBlZGVmIFAxODIgaXRlbTE4MjsgdHlwZWRlZiBQMTgzIGl0ZW0xODM7IHR5cGVkZWYgUDE4NCBpdGVtMTg0OyB0eXBlZGVmIFAxODUgaXRlbTE4NTsgdHlwZWRlZiBQMTg2IGl0ZW0xODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBQMTcwICwgY2xhc3MgUDE3MSAsIGNsYXNzIFAxNzIgLCBjbGFzcyBQMTczICwgY2xhc3MgUDE3NCAsIGNsYXNzIFAxNzUgLCBjbGFzcyBQMTc2ICwgY2xhc3MgUDE3NyAsIGNsYXNzIFAxNzggLCBjbGFzcyBQMTc5ICwgY2xhc3MgUDE4MCAsIGNsYXNzIFAxODEgLCBjbGFzcyBQMTgyICwgY2xhc3MgUDE4MyAsIGNsYXNzIFAxODQgLCBjbGFzcyBQMTg1ICwgY2xhc3MgUDE4NiAsIGNsYXNzIFAxODcgPiBzdHJ1Y3QgdmVjdG9yMTg4IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTg4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzggLCBQMTc5ICwgUDE4MCAsIFAxODEgLCBQMTgyICwgUDE4MyAsIFAxODQgLCBQMTg1ICwgUDE4NiAsIFAxODc+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIFAxNjEgaXRlbTE2MTsgdHlwZWRlZiBQMTYyIGl0ZW0xNjI7IHR5cGVkZWYgUDE2MyBpdGVtMTYzOyB0eXBlZGVmIFAxNjQgaXRlbTE2NDsgdHlwZWRlZiBQMTY1IGl0ZW0xNjU7IHR5cGVkZWYgUDE2NiBpdGVtMTY2OyB0eXBlZGVmIFAxNjcgaXRlbTE2NzsgdHlwZWRlZiBQMTY4IGl0ZW0xNjg7IHR5cGVkZWYgUDE2OSBpdGVtMTY5OyB0eXBlZGVmIFAxNzAgaXRlbTE3MDsgdHlwZWRlZiBQMTcxIGl0ZW0xNzE7IHR5cGVkZWYgUDE3MiBpdGVtMTcyOyB0eXBlZGVmIFAxNzMgaXRlbTE3MzsgdHlwZWRlZiBQMTc0IGl0ZW0xNzQ7IHR5cGVkZWYgUDE3NSBpdGVtMTc1OyB0eXBlZGVmIFAxNzYgaXRlbTE3NjsgdHlwZWRlZiBQMTc3IGl0ZW0xNzc7IHR5cGVkZWYgUDE3OCBpdGVtMTc4OyB0eXBlZGVmIFAxNzkgaXRlbTE3OTsgdHlwZWRlZiBQMTgwIGl0ZW0xODA7IHR5cGVkZWYgUDE4MSBpdGVtMTgxOyB0eXBlZGVmIFAxODIgaXRlbTE4MjsgdHlwZWRlZiBQMTgzIGl0ZW0xODM7IHR5cGVkZWYgUDE4NCBpdGVtMTg0OyB0eXBlZGVmIFAxODUgaXRlbTE4NTsgdHlwZWRlZiBQMTg2IGl0ZW0xODY7IHR5cGVkZWYgUDE4NyBpdGVtMTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCAsIGNsYXNzIFAxNzEgLCBjbGFzcyBQMTcyICwgY2xhc3MgUDE3MyAsIGNsYXNzIFAxNzQgLCBjbGFzcyBQMTc1ICwgY2xhc3MgUDE3NiAsIGNsYXNzIFAxNzcgLCBjbGFzcyBQMTc4ICwgY2xhc3MgUDE3OSAsIGNsYXNzIFAxODAgLCBjbGFzcyBQMTgxICwgY2xhc3MgUDE4MiAsIGNsYXNzIFAxODMgLCBjbGFzcyBQMTg0ICwgY2xhc3MgUDE4NSAsIGNsYXNzIFAxODYgLCBjbGFzcyBQMTg3ICwgY2xhc3MgUDE4OCA+IHN0cnVjdCB2ZWN0b3IxODkgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxODk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODIgLCBQMTgzICwgUDE4NCAsIFAxODUgLCBQMTg2ICwgUDE4NyAsIFAxODg+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIFAxNjEgaXRlbTE2MTsgdHlwZWRlZiBQMTYyIGl0ZW0xNjI7IHR5cGVkZWYgUDE2MyBpdGVtMTYzOyB0eXBlZGVmIFAxNjQgaXRlbTE2NDsgdHlwZWRlZiBQMTY1IGl0ZW0xNjU7IHR5cGVkZWYgUDE2NiBpdGVtMTY2OyB0eXBlZGVmIFAxNjcgaXRlbTE2NzsgdHlwZWRlZiBQMTY4IGl0ZW0xNjg7IHR5cGVkZWYgUDE2OSBpdGVtMTY5OyB0eXBlZGVmIFAxNzAgaXRlbTE3MDsgdHlwZWRlZiBQMTcxIGl0ZW0xNzE7IHR5cGVkZWYgUDE3MiBpdGVtMTcyOyB0eXBlZGVmIFAxNzMgaXRlbTE3MzsgdHlwZWRlZiBQMTc0IGl0ZW0xNzQ7IHR5cGVkZWYgUDE3NSBpdGVtMTc1OyB0eXBlZGVmIFAxNzYgaXRlbTE3NjsgdHlwZWRlZiBQMTc3IGl0ZW0xNzc7IHR5cGVkZWYgUDE3OCBpdGVtMTc4OyB0eXBlZGVmIFAxNzkgaXRlbTE3OTsgdHlwZWRlZiBQMTgwIGl0ZW0xODA7IHR5cGVkZWYgUDE4MSBpdGVtMTgxOyB0eXBlZGVmIFAxODIgaXRlbTE4MjsgdHlwZWRlZiBQMTgzIGl0ZW0xODM7IHR5cGVkZWYgUDE4NCBpdGVtMTg0OyB0eXBlZGVmIFAxODUgaXRlbTE4NTsgdHlwZWRlZiBQMTg2IGl0ZW0xODY7IHR5cGVkZWYgUDE4NyBpdGVtMTg3OyB0eXBlZGVmIFAxODggaXRlbTE4ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE4OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgLCBjbGFzcyBQMTcxICwgY2xhc3MgUDE3MiAsIGNsYXNzIFAxNzMgLCBjbGFzcyBQMTc0ICwgY2xhc3MgUDE3NSAsIGNsYXNzIFAxNzYgLCBjbGFzcyBQMTc3ICwgY2xhc3MgUDE3OCAsIGNsYXNzIFAxNzkgLCBjbGFzcyBQMTgwICwgY2xhc3MgUDE4MSAsIGNsYXNzIFAxODIgLCBjbGFzcyBQMTgzICwgY2xhc3MgUDE4NCAsIGNsYXNzIFAxODUgLCBjbGFzcyBQMTg2ICwgY2xhc3MgUDE4NyAsIGNsYXNzIFAxODggLCBjbGFzcyBQMTg5ID4gc3RydWN0IHZlY3RvcjE5MCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE5MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBQMTc4ICwgUDE3OSAsIFAxODAgLCBQMTgxICwgUDE4MiAsIFAxODMgLCBQMTg0ICwgUDE4NSAsIFAxODYgLCBQMTg3ICwgUDE4OCAsIFAxODk+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIFAxNjEgaXRlbTE2MTsgdHlwZWRlZiBQMTYyIGl0ZW0xNjI7IHR5cGVkZWYgUDE2MyBpdGVtMTYzOyB0eXBlZGVmIFAxNjQgaXRlbTE2NDsgdHlwZWRlZiBQMTY1IGl0ZW0xNjU7IHR5cGVkZWYgUDE2NiBpdGVtMTY2OyB0eXBlZGVmIFAxNjcgaXRlbTE2NzsgdHlwZWRlZiBQMTY4IGl0ZW0xNjg7IHR5cGVkZWYgUDE2OSBpdGVtMTY5OyB0eXBlZGVmIFAxNzAgaXRlbTE3MDsgdHlwZWRlZiBQMTcxIGl0ZW0xNzE7IHR5cGVkZWYgUDE3MiBpdGVtMTcyOyB0eXBlZGVmIFAxNzMgaXRlbTE3MzsgdHlwZWRlZiBQMTc0IGl0ZW0xNzQ7IHR5cGVkZWYgUDE3NSBpdGVtMTc1OyB0eXBlZGVmIFAxNzYgaXRlbTE3NjsgdHlwZWRlZiBQMTc3IGl0ZW0xNzc7IHR5cGVkZWYgUDE3OCBpdGVtMTc4OyB0eXBlZGVmIFAxNzkgaXRlbTE3OTsgdHlwZWRlZiBQMTgwIGl0ZW0xODA7IHR5cGVkZWYgUDE4MSBpdGVtMTgxOyB0eXBlZGVmIFAxODIgaXRlbTE4MjsgdHlwZWRlZiBQMTgzIGl0ZW0xODM7IHR5cGVkZWYgUDE4NCBpdGVtMTg0OyB0eXBlZGVmIFAxODUgaXRlbTE4NTsgdHlwZWRlZiBQMTg2IGl0ZW0xODY7IHR5cGVkZWYgUDE4NyBpdGVtMTg3OyB0eXBlZGVmIFAxODggaXRlbTE4ODsgdHlwZWRlZiBQMTg5IGl0ZW0xODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBQMTcwICwgY2xhc3MgUDE3MSAsIGNsYXNzIFAxNzIgLCBjbGFzcyBQMTczICwgY2xhc3MgUDE3NCAsIGNsYXNzIFAxNzUgLCBjbGFzcyBQMTc2ICwgY2xhc3MgUDE3NyAsIGNsYXNzIFAxNzggLCBjbGFzcyBQMTc5ICwgY2xhc3MgUDE4MCAsIGNsYXNzIFAxODEgLCBjbGFzcyBQMTgyICwgY2xhc3MgUDE4MyAsIGNsYXNzIFAxODQgLCBjbGFzcyBQMTg1ICwgY2xhc3MgUDE4NiAsIGNsYXNzIFAxODcgLCBjbGFzcyBQMTg4ICwgY2xhc3MgUDE4OSAsIGNsYXNzIFAxOTAgPiBzdHJ1Y3QgdmVjdG9yMTkxIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTkxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzggLCBQMTc5ICwgUDE4MCAsIFAxODEgLCBQMTgyICwgUDE4MyAsIFAxODQgLCBQMTg1ICwgUDE4NiAsIFAxODcgLCBQMTg4ICwgUDE4OSAsIFAxOTA+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIFAxNjEgaXRlbTE2MTsgdHlwZWRlZiBQMTYyIGl0ZW0xNjI7IHR5cGVkZWYgUDE2MyBpdGVtMTYzOyB0eXBlZGVmIFAxNjQgaXRlbTE2NDsgdHlwZWRlZiBQMTY1IGl0ZW0xNjU7IHR5cGVkZWYgUDE2NiBpdGVtMTY2OyB0eXBlZGVmIFAxNjcgaXRlbTE2NzsgdHlwZWRlZiBQMTY4IGl0ZW0xNjg7IHR5cGVkZWYgUDE2OSBpdGVtMTY5OyB0eXBlZGVmIFAxNzAgaXRlbTE3MDsgdHlwZWRlZiBQMTcxIGl0ZW0xNzE7IHR5cGVkZWYgUDE3MiBpdGVtMTcyOyB0eXBlZGVmIFAxNzMgaXRlbTE3MzsgdHlwZWRlZiBQMTc0IGl0ZW0xNzQ7IHR5cGVkZWYgUDE3NSBpdGVtMTc1OyB0eXBlZGVmIFAxNzYgaXRlbTE3NjsgdHlwZWRlZiBQMTc3IGl0ZW0xNzc7IHR5cGVkZWYgUDE3OCBpdGVtMTc4OyB0eXBlZGVmIFAxNzkgaXRlbTE3OTsgdHlwZWRlZiBQMTgwIGl0ZW0xODA7IHR5cGVkZWYgUDE4MSBpdGVtMTgxOyB0eXBlZGVmIFAxODIgaXRlbTE4MjsgdHlwZWRlZiBQMTgzIGl0ZW0xODM7IHR5cGVkZWYgUDE4NCBpdGVtMTg0OyB0eXBlZGVmIFAxODUgaXRlbTE4NTsgdHlwZWRlZiBQMTg2IGl0ZW0xODY7IHR5cGVkZWYgUDE4NyBpdGVtMTg3OyB0eXBlZGVmIFAxODggaXRlbTE4ODsgdHlwZWRlZiBQMTg5IGl0ZW0xODk7IHR5cGVkZWYgUDE5MCBpdGVtMTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCAsIGNsYXNzIFAxNzEgLCBjbGFzcyBQMTcyICwgY2xhc3MgUDE3MyAsIGNsYXNzIFAxNzQgLCBjbGFzcyBQMTc1ICwgY2xhc3MgUDE3NiAsIGNsYXNzIFAxNzcgLCBjbGFzcyBQMTc4ICwgY2xhc3MgUDE3OSAsIGNsYXNzIFAxODAgLCBjbGFzcyBQMTgxICwgY2xhc3MgUDE4MiAsIGNsYXNzIFAxODMgLCBjbGFzcyBQMTg0ICwgY2xhc3MgUDE4NSAsIGNsYXNzIFAxODYgLCBjbGFzcyBQMTg3ICwgY2xhc3MgUDE4OCAsIGNsYXNzIFAxODkgLCBjbGFzcyBQMTkwICwgY2xhc3MgUDE5MSA+IHN0cnVjdCB2ZWN0b3IxOTIgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxOTI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODIgLCBQMTgzICwgUDE4NCAsIFAxODUgLCBQMTg2ICwgUDE4NyAsIFAxODggLCBQMTg5ICwgUDE5MCAsIFAxOTE+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIFAxNjEgaXRlbTE2MTsgdHlwZWRlZiBQMTYyIGl0ZW0xNjI7IHR5cGVkZWYgUDE2MyBpdGVtMTYzOyB0eXBlZGVmIFAxNjQgaXRlbTE2NDsgdHlwZWRlZiBQMTY1IGl0ZW0xNjU7IHR5cGVkZWYgUDE2NiBpdGVtMTY2OyB0eXBlZGVmIFAxNjcgaXRlbTE2NzsgdHlwZWRlZiBQMTY4IGl0ZW0xNjg7IHR5cGVkZWYgUDE2OSBpdGVtMTY5OyB0eXBlZGVmIFAxNzAgaXRlbTE3MDsgdHlwZWRlZiBQMTcxIGl0ZW0xNzE7IHR5cGVkZWYgUDE3MiBpdGVtMTcyOyB0eXBlZGVmIFAxNzMgaXRlbTE3MzsgdHlwZWRlZiBQMTc0IGl0ZW0xNzQ7IHR5cGVkZWYgUDE3NSBpdGVtMTc1OyB0eXBlZGVmIFAxNzYgaXRlbTE3NjsgdHlwZWRlZiBQMTc3IGl0ZW0xNzc7IHR5cGVkZWYgUDE3OCBpdGVtMTc4OyB0eXBlZGVmIFAxNzkgaXRlbTE3OTsgdHlwZWRlZiBQMTgwIGl0ZW0xODA7IHR5cGVkZWYgUDE4MSBpdGVtMTgxOyB0eXBlZGVmIFAxODIgaXRlbTE4MjsgdHlwZWRlZiBQMTgzIGl0ZW0xODM7IHR5cGVkZWYgUDE4NCBpdGVtMTg0OyB0eXBlZGVmIFAxODUgaXRlbTE4NTsgdHlwZWRlZiBQMTg2IGl0ZW0xODY7IHR5cGVkZWYgUDE4NyBpdGVtMTg3OyB0eXBlZGVmIFAxODggaXRlbTE4ODsgdHlwZWRlZiBQMTg5IGl0ZW0xODk7IHR5cGVkZWYgUDE5MCBpdGVtMTkwOyB0eXBlZGVmIFAxOTEgaXRlbTE5MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgLCBjbGFzcyBQMTcxICwgY2xhc3MgUDE3MiAsIGNsYXNzIFAxNzMgLCBjbGFzcyBQMTc0ICwgY2xhc3MgUDE3NSAsIGNsYXNzIFAxNzYgLCBjbGFzcyBQMTc3ICwgY2xhc3MgUDE3OCAsIGNsYXNzIFAxNzkgLCBjbGFzcyBQMTgwICwgY2xhc3MgUDE4MSAsIGNsYXNzIFAxODIgLCBjbGFzcyBQMTgzICwgY2xhc3MgUDE4NCAsIGNsYXNzIFAxODUgLCBjbGFzcyBQMTg2ICwgY2xhc3MgUDE4NyAsIGNsYXNzIFAxODggLCBjbGFzcyBQMTg5ICwgY2xhc3MgUDE5MCAsIGNsYXNzIFAxOTEgLCBjbGFzcyBQMTkyID4gc3RydWN0IHZlY3RvcjE5MyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE5MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBQMTc4ICwgUDE3OSAsIFAxODAgLCBQMTgxICwgUDE4MiAsIFAxODMgLCBQMTg0ICwgUDE4NSAsIFAxODYgLCBQMTg3ICwgUDE4OCAsIFAxODkgLCBQMTkwICwgUDE5MSAsIFAxOTI+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIFAxNjEgaXRlbTE2MTsgdHlwZWRlZiBQMTYyIGl0ZW0xNjI7IHR5cGVkZWYgUDE2MyBpdGVtMTYzOyB0eXBlZGVmIFAxNjQgaXRlbTE2NDsgdHlwZWRlZiBQMTY1IGl0ZW0xNjU7IHR5cGVkZWYgUDE2NiBpdGVtMTY2OyB0eXBlZGVmIFAxNjcgaXRlbTE2NzsgdHlwZWRlZiBQMTY4IGl0ZW0xNjg7IHR5cGVkZWYgUDE2OSBpdGVtMTY5OyB0eXBlZGVmIFAxNzAgaXRlbTE3MDsgdHlwZWRlZiBQMTcxIGl0ZW0xNzE7IHR5cGVkZWYgUDE3MiBpdGVtMTcyOyB0eXBlZGVmIFAxNzMgaXRlbTE3MzsgdHlwZWRlZiBQMTc0IGl0ZW0xNzQ7IHR5cGVkZWYgUDE3NSBpdGVtMTc1OyB0eXBlZGVmIFAxNzYgaXRlbTE3NjsgdHlwZWRlZiBQMTc3IGl0ZW0xNzc7IHR5cGVkZWYgUDE3OCBpdGVtMTc4OyB0eXBlZGVmIFAxNzkgaXRlbTE3OTsgdHlwZWRlZiBQMTgwIGl0ZW0xODA7IHR5cGVkZWYgUDE4MSBpdGVtMTgxOyB0eXBlZGVmIFAxODIgaXRlbTE4MjsgdHlwZWRlZiBQMTgzIGl0ZW0xODM7IHR5cGVkZWYgUDE4NCBpdGVtMTg0OyB0eXBlZGVmIFAxODUgaXRlbTE4NTsgdHlwZWRlZiBQMTg2IGl0ZW0xODY7IHR5cGVkZWYgUDE4NyBpdGVtMTg3OyB0eXBlZGVmIFAxODggaXRlbTE4ODsgdHlwZWRlZiBQMTg5IGl0ZW0xODk7IHR5cGVkZWYgUDE5MCBpdGVtMTkwOyB0eXBlZGVmIFAxOTEgaXRlbTE5MTsgdHlwZWRlZiBQMTkyIGl0ZW0xOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBQMTcwICwgY2xhc3MgUDE3MSAsIGNsYXNzIFAxNzIgLCBjbGFzcyBQMTczICwgY2xhc3MgUDE3NCAsIGNsYXNzIFAxNzUgLCBjbGFzcyBQMTc2ICwgY2xhc3MgUDE3NyAsIGNsYXNzIFAxNzggLCBjbGFzcyBQMTc5ICwgY2xhc3MgUDE4MCAsIGNsYXNzIFAxODEgLCBjbGFzcyBQMTgyICwgY2xhc3MgUDE4MyAsIGNsYXNzIFAxODQgLCBjbGFzcyBQMTg1ICwgY2xhc3MgUDE4NiAsIGNsYXNzIFAxODcgLCBjbGFzcyBQMTg4ICwgY2xhc3MgUDE4OSAsIGNsYXNzIFAxOTAgLCBjbGFzcyBQMTkxICwgY2xhc3MgUDE5MiAsIGNsYXNzIFAxOTMgPiBzdHJ1Y3QgdmVjdG9yMTk0IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTk0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzggLCBQMTc5ICwgUDE4MCAsIFAxODEgLCBQMTgyICwgUDE4MyAsIFAxODQgLCBQMTg1ICwgUDE4NiAsIFAxODcgLCBQMTg4ICwgUDE4OSAsIFAxOTAgLCBQMTkxICwgUDE5MiAsIFAxOTM+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIFAxNjEgaXRlbTE2MTsgdHlwZWRlZiBQMTYyIGl0ZW0xNjI7IHR5cGVkZWYgUDE2MyBpdGVtMTYzOyB0eXBlZGVmIFAxNjQgaXRlbTE2NDsgdHlwZWRlZiBQMTY1IGl0ZW0xNjU7IHR5cGVkZWYgUDE2NiBpdGVtMTY2OyB0eXBlZGVmIFAxNjcgaXRlbTE2NzsgdHlwZWRlZiBQMTY4IGl0ZW0xNjg7IHR5cGVkZWYgUDE2OSBpdGVtMTY5OyB0eXBlZGVmIFAxNzAgaXRlbTE3MDsgdHlwZWRlZiBQMTcxIGl0ZW0xNzE7IHR5cGVkZWYgUDE3MiBpdGVtMTcyOyB0eXBlZGVmIFAxNzMgaXRlbTE3MzsgdHlwZWRlZiBQMTc0IGl0ZW0xNzQ7IHR5cGVkZWYgUDE3NSBpdGVtMTc1OyB0eXBlZGVmIFAxNzYgaXRlbTE3NjsgdHlwZWRlZiBQMTc3IGl0ZW0xNzc7IHR5cGVkZWYgUDE3OCBpdGVtMTc4OyB0eXBlZGVmIFAxNzkgaXRlbTE3OTsgdHlwZWRlZiBQMTgwIGl0ZW0xODA7IHR5cGVkZWYgUDE4MSBpdGVtMTgxOyB0eXBlZGVmIFAxODIgaXRlbTE4MjsgdHlwZWRlZiBQMTgzIGl0ZW0xODM7IHR5cGVkZWYgUDE4NCBpdGVtMTg0OyB0eXBlZGVmIFAxODUgaXRlbTE4NTsgdHlwZWRlZiBQMTg2IGl0ZW0xODY7IHR5cGVkZWYgUDE4NyBpdGVtMTg3OyB0eXBlZGVmIFAxODggaXRlbTE4ODsgdHlwZWRlZiBQMTg5IGl0ZW0xODk7IHR5cGVkZWYgUDE5MCBpdGVtMTkwOyB0eXBlZGVmIFAxOTEgaXRlbTE5MTsgdHlwZWRlZiBQMTkyIGl0ZW0xOTI7IHR5cGVkZWYgUDE5MyBpdGVtMTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCAsIGNsYXNzIFAxNzEgLCBjbGFzcyBQMTcyICwgY2xhc3MgUDE3MyAsIGNsYXNzIFAxNzQgLCBjbGFzcyBQMTc1ICwgY2xhc3MgUDE3NiAsIGNsYXNzIFAxNzcgLCBjbGFzcyBQMTc4ICwgY2xhc3MgUDE3OSAsIGNsYXNzIFAxODAgLCBjbGFzcyBQMTgxICwgY2xhc3MgUDE4MiAsIGNsYXNzIFAxODMgLCBjbGFzcyBQMTg0ICwgY2xhc3MgUDE4NSAsIGNsYXNzIFAxODYgLCBjbGFzcyBQMTg3ICwgY2xhc3MgUDE4OCAsIGNsYXNzIFAxODkgLCBjbGFzcyBQMTkwICwgY2xhc3MgUDE5MSAsIGNsYXNzIFAxOTIgLCBjbGFzcyBQMTkzICwgY2xhc3MgUDE5NCA+IHN0cnVjdCB2ZWN0b3IxOTUgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxOTU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODIgLCBQMTgzICwgUDE4NCAsIFAxODUgLCBQMTg2ICwgUDE4NyAsIFAxODggLCBQMTg5ICwgUDE5MCAsIFAxOTEgLCBQMTkyICwgUDE5MyAsIFAxOTQ+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIFAxNjEgaXRlbTE2MTsgdHlwZWRlZiBQMTYyIGl0ZW0xNjI7IHR5cGVkZWYgUDE2MyBpdGVtMTYzOyB0eXBlZGVmIFAxNjQgaXRlbTE2NDsgdHlwZWRlZiBQMTY1IGl0ZW0xNjU7IHR5cGVkZWYgUDE2NiBpdGVtMTY2OyB0eXBlZGVmIFAxNjcgaXRlbTE2NzsgdHlwZWRlZiBQMTY4IGl0ZW0xNjg7IHR5cGVkZWYgUDE2OSBpdGVtMTY5OyB0eXBlZGVmIFAxNzAgaXRlbTE3MDsgdHlwZWRlZiBQMTcxIGl0ZW0xNzE7IHR5cGVkZWYgUDE3MiBpdGVtMTcyOyB0eXBlZGVmIFAxNzMgaXRlbTE3MzsgdHlwZWRlZiBQMTc0IGl0ZW0xNzQ7IHR5cGVkZWYgUDE3NSBpdGVtMTc1OyB0eXBlZGVmIFAxNzYgaXRlbTE3NjsgdHlwZWRlZiBQMTc3IGl0ZW0xNzc7IHR5cGVkZWYgUDE3OCBpdGVtMTc4OyB0eXBlZGVmIFAxNzkgaXRlbTE3OTsgdHlwZWRlZiBQMTgwIGl0ZW0xODA7IHR5cGVkZWYgUDE4MSBpdGVtMTgxOyB0eXBlZGVmIFAxODIgaXRlbTE4MjsgdHlwZWRlZiBQMTgzIGl0ZW0xODM7IHR5cGVkZWYgUDE4NCBpdGVtMTg0OyB0eXBlZGVmIFAxODUgaXRlbTE4NTsgdHlwZWRlZiBQMTg2IGl0ZW0xODY7IHR5cGVkZWYgUDE4NyBpdGVtMTg3OyB0eXBlZGVmIFAxODggaXRlbTE4ODsgdHlwZWRlZiBQMTg5IGl0ZW0xODk7IHR5cGVkZWYgUDE5MCBpdGVtMTkwOyB0eXBlZGVmIFAxOTEgaXRlbTE5MTsgdHlwZWRlZiBQMTkyIGl0ZW0xOTI7IHR5cGVkZWYgUDE5MyBpdGVtMTkzOyB0eXBlZGVmIFAxOTQgaXRlbTE5NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgLCBjbGFzcyBQMTcxICwgY2xhc3MgUDE3MiAsIGNsYXNzIFAxNzMgLCBjbGFzcyBQMTc0ICwgY2xhc3MgUDE3NSAsIGNsYXNzIFAxNzYgLCBjbGFzcyBQMTc3ICwgY2xhc3MgUDE3OCAsIGNsYXNzIFAxNzkgLCBjbGFzcyBQMTgwICwgY2xhc3MgUDE4MSAsIGNsYXNzIFAxODIgLCBjbGFzcyBQMTgzICwgY2xhc3MgUDE4NCAsIGNsYXNzIFAxODUgLCBjbGFzcyBQMTg2ICwgY2xhc3MgUDE4NyAsIGNsYXNzIFAxODggLCBjbGFzcyBQMTg5ICwgY2xhc3MgUDE5MCAsIGNsYXNzIFAxOTEgLCBjbGFzcyBQMTkyICwgY2xhc3MgUDE5MyAsIGNsYXNzIFAxOTQgLCBjbGFzcyBQMTk1ID4gc3RydWN0IHZlY3RvcjE5NiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE5NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBQMTc4ICwgUDE3OSAsIFAxODAgLCBQMTgxICwgUDE4MiAsIFAxODMgLCBQMTg0ICwgUDE4NSAsIFAxODYgLCBQMTg3ICwgUDE4OCAsIFAxODkgLCBQMTkwICwgUDE5MSAsIFAxOTIgLCBQMTkzICwgUDE5NCAsIFAxOTU+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIFAxNjEgaXRlbTE2MTsgdHlwZWRlZiBQMTYyIGl0ZW0xNjI7IHR5cGVkZWYgUDE2MyBpdGVtMTYzOyB0eXBlZGVmIFAxNjQgaXRlbTE2NDsgdHlwZWRlZiBQMTY1IGl0ZW0xNjU7IHR5cGVkZWYgUDE2NiBpdGVtMTY2OyB0eXBlZGVmIFAxNjcgaXRlbTE2NzsgdHlwZWRlZiBQMTY4IGl0ZW0xNjg7IHR5cGVkZWYgUDE2OSBpdGVtMTY5OyB0eXBlZGVmIFAxNzAgaXRlbTE3MDsgdHlwZWRlZiBQMTcxIGl0ZW0xNzE7IHR5cGVkZWYgUDE3MiBpdGVtMTcyOyB0eXBlZGVmIFAxNzMgaXRlbTE3MzsgdHlwZWRlZiBQMTc0IGl0ZW0xNzQ7IHR5cGVkZWYgUDE3NSBpdGVtMTc1OyB0eXBlZGVmIFAxNzYgaXRlbTE3NjsgdHlwZWRlZiBQMTc3IGl0ZW0xNzc7IHR5cGVkZWYgUDE3OCBpdGVtMTc4OyB0eXBlZGVmIFAxNzkgaXRlbTE3OTsgdHlwZWRlZiBQMTgwIGl0ZW0xODA7IHR5cGVkZWYgUDE4MSBpdGVtMTgxOyB0eXBlZGVmIFAxODIgaXRlbTE4MjsgdHlwZWRlZiBQMTgzIGl0ZW0xODM7IHR5cGVkZWYgUDE4NCBpdGVtMTg0OyB0eXBlZGVmIFAxODUgaXRlbTE4NTsgdHlwZWRlZiBQMTg2IGl0ZW0xODY7IHR5cGVkZWYgUDE4NyBpdGVtMTg3OyB0eXBlZGVmIFAxODggaXRlbTE4ODsgdHlwZWRlZiBQMTg5IGl0ZW0xODk7IHR5cGVkZWYgUDE5MCBpdGVtMTkwOyB0eXBlZGVmIFAxOTEgaXRlbTE5MTsgdHlwZWRlZiBQMTkyIGl0ZW0xOTI7IHR5cGVkZWYgUDE5MyBpdGVtMTkzOyB0eXBlZGVmIFAxOTQgaXRlbTE5NDsgdHlwZWRlZiBQMTk1IGl0ZW0xOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBQMTcwICwgY2xhc3MgUDE3MSAsIGNsYXNzIFAxNzIgLCBjbGFzcyBQMTczICwgY2xhc3MgUDE3NCAsIGNsYXNzIFAxNzUgLCBjbGFzcyBQMTc2ICwgY2xhc3MgUDE3NyAsIGNsYXNzIFAxNzggLCBjbGFzcyBQMTc5ICwgY2xhc3MgUDE4MCAsIGNsYXNzIFAxODEgLCBjbGFzcyBQMTgyICwgY2xhc3MgUDE4MyAsIGNsYXNzIFAxODQgLCBjbGFzcyBQMTg1ICwgY2xhc3MgUDE4NiAsIGNsYXNzIFAxODcgLCBjbGFzcyBQMTg4ICwgY2xhc3MgUDE4OSAsIGNsYXNzIFAxOTAgLCBjbGFzcyBQMTkxICwgY2xhc3MgUDE5MiAsIGNsYXNzIFAxOTMgLCBjbGFzcyBQMTk0ICwgY2xhc3MgUDE5NSAsIGNsYXNzIFAxOTYgPiBzdHJ1Y3QgdmVjdG9yMTk3IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTk3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzggLCBQMTc5ICwgUDE4MCAsIFAxODEgLCBQMTgyICwgUDE4MyAsIFAxODQgLCBQMTg1ICwgUDE4NiAsIFAxODcgLCBQMTg4ICwgUDE4OSAsIFAxOTAgLCBQMTkxICwgUDE5MiAsIFAxOTMgLCBQMTk0ICwgUDE5NSAsIFAxOTY+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIFAxNjEgaXRlbTE2MTsgdHlwZWRlZiBQMTYyIGl0ZW0xNjI7IHR5cGVkZWYgUDE2MyBpdGVtMTYzOyB0eXBlZGVmIFAxNjQgaXRlbTE2NDsgdHlwZWRlZiBQMTY1IGl0ZW0xNjU7IHR5cGVkZWYgUDE2NiBpdGVtMTY2OyB0eXBlZGVmIFAxNjcgaXRlbTE2NzsgdHlwZWRlZiBQMTY4IGl0ZW0xNjg7IHR5cGVkZWYgUDE2OSBpdGVtMTY5OyB0eXBlZGVmIFAxNzAgaXRlbTE3MDsgdHlwZWRlZiBQMTcxIGl0ZW0xNzE7IHR5cGVkZWYgUDE3MiBpdGVtMTcyOyB0eXBlZGVmIFAxNzMgaXRlbTE3MzsgdHlwZWRlZiBQMTc0IGl0ZW0xNzQ7IHR5cGVkZWYgUDE3NSBpdGVtMTc1OyB0eXBlZGVmIFAxNzYgaXRlbTE3NjsgdHlwZWRlZiBQMTc3IGl0ZW0xNzc7IHR5cGVkZWYgUDE3OCBpdGVtMTc4OyB0eXBlZGVmIFAxNzkgaXRlbTE3OTsgdHlwZWRlZiBQMTgwIGl0ZW0xODA7IHR5cGVkZWYgUDE4MSBpdGVtMTgxOyB0eXBlZGVmIFAxODIgaXRlbTE4MjsgdHlwZWRlZiBQMTgzIGl0ZW0xODM7IHR5cGVkZWYgUDE4NCBpdGVtMTg0OyB0eXBlZGVmIFAxODUgaXRlbTE4NTsgdHlwZWRlZiBQMTg2IGl0ZW0xODY7IHR5cGVkZWYgUDE4NyBpdGVtMTg3OyB0eXBlZGVmIFAxODggaXRlbTE4ODsgdHlwZWRlZiBQMTg5IGl0ZW0xODk7IHR5cGVkZWYgUDE5MCBpdGVtMTkwOyB0eXBlZGVmIFAxOTEgaXRlbTE5MTsgdHlwZWRlZiBQMTkyIGl0ZW0xOTI7IHR5cGVkZWYgUDE5MyBpdGVtMTkzOyB0eXBlZGVmIFAxOTQgaXRlbTE5NDsgdHlwZWRlZiBQMTk1IGl0ZW0xOTU7IHR5cGVkZWYgUDE5NiBpdGVtMTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCAsIGNsYXNzIFAxNzEgLCBjbGFzcyBQMTcyICwgY2xhc3MgUDE3MyAsIGNsYXNzIFAxNzQgLCBjbGFzcyBQMTc1ICwgY2xhc3MgUDE3NiAsIGNsYXNzIFAxNzcgLCBjbGFzcyBQMTc4ICwgY2xhc3MgUDE3OSAsIGNsYXNzIFAxODAgLCBjbGFzcyBQMTgxICwgY2xhc3MgUDE4MiAsIGNsYXNzIFAxODMgLCBjbGFzcyBQMTg0ICwgY2xhc3MgUDE4NSAsIGNsYXNzIFAxODYgLCBjbGFzcyBQMTg3ICwgY2xhc3MgUDE4OCAsIGNsYXNzIFAxODkgLCBjbGFzcyBQMTkwICwgY2xhc3MgUDE5MSAsIGNsYXNzIFAxOTIgLCBjbGFzcyBQMTkzICwgY2xhc3MgUDE5NCAsIGNsYXNzIFAxOTUgLCBjbGFzcyBQMTk2ICwgY2xhc3MgUDE5NyA+IHN0cnVjdCB2ZWN0b3IxOTggeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxOTg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODIgLCBQMTgzICwgUDE4NCAsIFAxODUgLCBQMTg2ICwgUDE4NyAsIFAxODggLCBQMTg5ICwgUDE5MCAsIFAxOTEgLCBQMTkyICwgUDE5MyAsIFAxOTQgLCBQMTk1ICwgUDE5NiAsIFAxOTc+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIFAxNjEgaXRlbTE2MTsgdHlwZWRlZiBQMTYyIGl0ZW0xNjI7IHR5cGVkZWYgUDE2MyBpdGVtMTYzOyB0eXBlZGVmIFAxNjQgaXRlbTE2NDsgdHlwZWRlZiBQMTY1IGl0ZW0xNjU7IHR5cGVkZWYgUDE2NiBpdGVtMTY2OyB0eXBlZGVmIFAxNjcgaXRlbTE2NzsgdHlwZWRlZiBQMTY4IGl0ZW0xNjg7IHR5cGVkZWYgUDE2OSBpdGVtMTY5OyB0eXBlZGVmIFAxNzAgaXRlbTE3MDsgdHlwZWRlZiBQMTcxIGl0ZW0xNzE7IHR5cGVkZWYgUDE3MiBpdGVtMTcyOyB0eXBlZGVmIFAxNzMgaXRlbTE3MzsgdHlwZWRlZiBQMTc0IGl0ZW0xNzQ7IHR5cGVkZWYgUDE3NSBpdGVtMTc1OyB0eXBlZGVmIFAxNzYgaXRlbTE3NjsgdHlwZWRlZiBQMTc3IGl0ZW0xNzc7IHR5cGVkZWYgUDE3OCBpdGVtMTc4OyB0eXBlZGVmIFAxNzkgaXRlbTE3OTsgdHlwZWRlZiBQMTgwIGl0ZW0xODA7IHR5cGVkZWYgUDE4MSBpdGVtMTgxOyB0eXBlZGVmIFAxODIgaXRlbTE4MjsgdHlwZWRlZiBQMTgzIGl0ZW0xODM7IHR5cGVkZWYgUDE4NCBpdGVtMTg0OyB0eXBlZGVmIFAxODUgaXRlbTE4NTsgdHlwZWRlZiBQMTg2IGl0ZW0xODY7IHR5cGVkZWYgUDE4NyBpdGVtMTg3OyB0eXBlZGVmIFAxODggaXRlbTE4ODsgdHlwZWRlZiBQMTg5IGl0ZW0xODk7IHR5cGVkZWYgUDE5MCBpdGVtMTkwOyB0eXBlZGVmIFAxOTEgaXRlbTE5MTsgdHlwZWRlZiBQMTkyIGl0ZW0xOTI7IHR5cGVkZWYgUDE5MyBpdGVtMTkzOyB0eXBlZGVmIFAxOTQgaXRlbTE5NDsgdHlwZWRlZiBQMTk1IGl0ZW0xOTU7IHR5cGVkZWYgUDE5NiBpdGVtMTk2OyB0eXBlZGVmIFAxOTcgaXRlbTE5NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTE5OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIwOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIxOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIyOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTIzOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI0OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgLCBjbGFzcyBQMTcxICwgY2xhc3MgUDE3MiAsIGNsYXNzIFAxNzMgLCBjbGFzcyBQMTc0ICwgY2xhc3MgUDE3NSAsIGNsYXNzIFAxNzYgLCBjbGFzcyBQMTc3ICwgY2xhc3MgUDE3OCAsIGNsYXNzIFAxNzkgLCBjbGFzcyBQMTgwICwgY2xhc3MgUDE4MSAsIGNsYXNzIFAxODIgLCBjbGFzcyBQMTgzICwgY2xhc3MgUDE4NCAsIGNsYXNzIFAxODUgLCBjbGFzcyBQMTg2ICwgY2xhc3MgUDE4NyAsIGNsYXNzIFAxODggLCBjbGFzcyBQMTg5ICwgY2xhc3MgUDE5MCAsIGNsYXNzIFAxOTEgLCBjbGFzcyBQMTkyICwgY2xhc3MgUDE5MyAsIGNsYXNzIFAxOTQgLCBjbGFzcyBQMTk1ICwgY2xhc3MgUDE5NiAsIGNsYXNzIFAxOTcgLCBjbGFzcyBQMTk4ID4gc3RydWN0IHZlY3RvcjE5OSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE5OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBQMTc4ICwgUDE3OSAsIFAxODAgLCBQMTgxICwgUDE4MiAsIFAxODMgLCBQMTg0ICwgUDE4NSAsIFAxODYgLCBQMTg3ICwgUDE4OCAsIFAxODkgLCBQMTkwICwgUDE5MSAsIFAxOTIgLCBQMTkzICwgUDE5NCAsIFAxOTUgLCBQMTk2ICwgUDE5NyAsIFAxOTg+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIFAxNjEgaXRlbTE2MTsgdHlwZWRlZiBQMTYyIGl0ZW0xNjI7IHR5cGVkZWYgUDE2MyBpdGVtMTYzOyB0eXBlZGVmIFAxNjQgaXRlbTE2NDsgdHlwZWRlZiBQMTY1IGl0ZW0xNjU7IHR5cGVkZWYgUDE2NiBpdGVtMTY2OyB0eXBlZGVmIFAxNjcgaXRlbTE2NzsgdHlwZWRlZiBQMTY4IGl0ZW0xNjg7IHR5cGVkZWYgUDE2OSBpdGVtMTY5OyB0eXBlZGVmIFAxNzAgaXRlbTE3MDsgdHlwZWRlZiBQMTcxIGl0ZW0xNzE7IHR5cGVkZWYgUDE3MiBpdGVtMTcyOyB0eXBlZGVmIFAxNzMgaXRlbTE3MzsgdHlwZWRlZiBQMTc0IGl0ZW0xNzQ7IHR5cGVkZWYgUDE3NSBpdGVtMTc1OyB0eXBlZGVmIFAxNzYgaXRlbTE3NjsgdHlwZWRlZiBQMTc3IGl0ZW0xNzc7IHR5cGVkZWYgUDE3OCBpdGVtMTc4OyB0eXBlZGVmIFAxNzkgaXRlbTE3OTsgdHlwZWRlZiBQMTgwIGl0ZW0xODA7IHR5cGVkZWYgUDE4MSBpdGVtMTgxOyB0eXBlZGVmIFAxODIgaXRlbTE4MjsgdHlwZWRlZiBQMTgzIGl0ZW0xODM7IHR5cGVkZWYgUDE4NCBpdGVtMTg0OyB0eXBlZGVmIFAxODUgaXRlbTE4NTsgdHlwZWRlZiBQMTg2IGl0ZW0xODY7IHR5cGVkZWYgUDE4NyBpdGVtMTg3OyB0eXBlZGVmIFAxODggaXRlbTE4ODsgdHlwZWRlZiBQMTg5IGl0ZW0xODk7IHR5cGVkZWYgUDE5MCBpdGVtMTkwOyB0eXBlZGVmIFAxOTEgaXRlbTE5MTsgdHlwZWRlZiBQMTkyIGl0ZW0xOTI7IHR5cGVkZWYgUDE5MyBpdGVtMTkzOyB0eXBlZGVmIFAxOTQgaXRlbTE5NDsgdHlwZWRlZiBQMTk1IGl0ZW0xOTU7IHR5cGVkZWYgUDE5NiBpdGVtMTk2OyB0eXBlZGVmIFAxOTcgaXRlbTE5NzsgdHlwZWRlZiBQMTk4IGl0ZW0xOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+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+IGl0ZW0yNDk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBQMTcwICwgY2xhc3MgUDE3MSAsIGNsYXNzIFAxNzIgLCBjbGFzcyBQMTczICwgY2xhc3MgUDE3NCAsIGNsYXNzIFAxNzUgLCBjbGFzcyBQMTc2ICwgY2xhc3MgUDE3NyAsIGNsYXNzIFAxNzggLCBjbGFzcyBQMTc5ICwgY2xhc3MgUDE4MCAsIGNsYXNzIFAxODEgLCBjbGFzcyBQMTgyICwgY2xhc3MgUDE4MyAsIGNsYXNzIFAxODQgLCBjbGFzcyBQMTg1ICwgY2xhc3MgUDE4NiAsIGNsYXNzIFAxODcgLCBjbGFzcyBQMTg4ICwgY2xhc3MgUDE4OSAsIGNsYXNzIFAxOTAgLCBjbGFzcyBQMTkxICwgY2xhc3MgUDE5MiAsIGNsYXNzIFAxOTMgLCBjbGFzcyBQMTk0ICwgY2xhc3MgUDE5NSAsIGNsYXNzIFAxOTYgLCBjbGFzcyBQMTk3ICwgY2xhc3MgUDE5OCAsIGNsYXNzIFAxOTkgPiBzdHJ1Y3QgdmVjdG9yMjAwIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMjAwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzggLCBQMTc5ICwgUDE4MCAsIFAxODEgLCBQMTgyICwgUDE4MyAsIFAxODQgLCBQMTg1ICwgUDE4NiAsIFAxODcgLCBQMTg4ICwgUDE4OSAsIFAxOTAgLCBQMTkxICwgUDE5MiAsIFAxOTMgLCBQMTk0ICwgUDE5NSAsIFAxOTYgLCBQMTk3ICwgUDE5OCAsIFAxOTk+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgUDQ5IGl0ZW00OTsgdHlwZWRlZiBQNTAgaXRlbTUwOyB0eXBlZGVmIFA1MSBpdGVtNTE7IHR5cGVkZWYgUDUyIGl0ZW01MjsgdHlwZWRlZiBQNTMgaXRlbTUzOyB0eXBlZGVmIFA1NCBpdGVtNTQ7IHR5cGVkZWYgUDU1IGl0ZW01NTsgdHlwZWRlZiBQNTYgaXRlbTU2OyB0eXBlZGVmIFA1NyBpdGVtNTc7IHR5cGVkZWYgUDU4IGl0ZW01ODsgdHlwZWRlZiBQNTkgaXRlbTU5OyB0eXBlZGVmIFA2MCBpdGVtNjA7IHR5cGVkZWYgUDYxIGl0ZW02MTsgdHlwZWRlZiBQNjIgaXRlbTYyOyB0eXBlZGVmIFA2MyBpdGVtNjM7IHR5cGVkZWYgUDY0IGl0ZW02NDsgdHlwZWRlZiBQNjUgaXRlbTY1OyB0eXBlZGVmIFA2NiBpdGVtNjY7IHR5cGVkZWYgUDY3IGl0ZW02NzsgdHlwZWRlZiBQNjggaXRlbTY4OyB0eXBlZGVmIFA2OSBpdGVtNjk7IHR5cGVkZWYgUDcwIGl0ZW03MDsgdHlwZWRlZiBQNzEgaXRlbTcxOyB0eXBlZGVmIFA3MiBpdGVtNzI7IHR5cGVkZWYgUDczIGl0ZW03MzsgdHlwZWRlZiBQNzQgaXRlbTc0OyB0eXBlZGVmIFA3NSBpdGVtNzU7IHR5cGVkZWYgUDc2IGl0ZW03NjsgdHlwZWRlZiBQNzcgaXRlbTc3OyB0eXBlZGVmIFA3OCBpdGVtNzg7IHR5cGVkZWYgUDc5IGl0ZW03OTsgdHlwZWRlZiBQODAgaXRlbTgwOyB0eXBlZGVmIFA4MSBpdGVtODE7IHR5cGVkZWYgUDgyIGl0ZW04MjsgdHlwZWRlZiBQODMgaXRlbTgzOyB0eXBlZGVmIFA4NCBpdGVtODQ7IHR5cGVkZWYgUDg1IGl0ZW04NTsgdHlwZWRlZiBQODYgaXRlbTg2OyB0eXBlZGVmIFA4NyBpdGVtODc7IHR5cGVkZWYgUDg4IGl0ZW04ODsgdHlwZWRlZiBQODkgaXRlbTg5OyB0eXBlZGVmIFA5MCBpdGVtOTA7IHR5cGVkZWYgUDkxIGl0ZW05MTsgdHlwZWRlZiBQOTIgaXRlbTkyOyB0eXBlZGVmIFA5MyBpdGVtOTM7IHR5cGVkZWYgUDk0IGl0ZW05NDsgdHlwZWRlZiBQOTUgaXRlbTk1OyB0eXBlZGVmIFA5NiBpdGVtOTY7IHR5cGVkZWYgUDk3IGl0ZW05NzsgdHlwZWRlZiBQOTggaXRlbTk4OyB0eXBlZGVmIFA5OSBpdGVtOTk7IHR5cGVkZWYgUDEwMCBpdGVtMTAwOyB0eXBlZGVmIFAxMDEgaXRlbTEwMTsgdHlwZWRlZiBQMTAyIGl0ZW0xMDI7IHR5cGVkZWYgUDEwMyBpdGVtMTAzOyB0eXBlZGVmIFAxMDQgaXRlbTEwNDsgdHlwZWRlZiBQMTA1IGl0ZW0xMDU7IHR5cGVkZWYgUDEwNiBpdGVtMTA2OyB0eXBlZGVmIFAxMDcgaXRlbTEwNzsgdHlwZWRlZiBQMTA4IGl0ZW0xMDg7IHR5cGVkZWYgUDEwOSBpdGVtMTA5OyB0eXBlZGVmIFAxMTAgaXRlbTExMDsgdHlwZWRlZiBQMTExIGl0ZW0xMTE7IHR5cGVkZWYgUDExMiBpdGVtMTEyOyB0eXBlZGVmIFAxMTMgaXRlbTExMzsgdHlwZWRlZiBQMTE0IGl0ZW0xMTQ7IHR5cGVkZWYgUDExNSBpdGVtMTE1OyB0eXBlZGVmIFAxMTYgaXRlbTExNjsgdHlwZWRlZiBQMTE3IGl0ZW0xMTc7IHR5cGVkZWYgUDExOCBpdGVtMTE4OyB0eXBlZGVmIFAxMTkgaXRlbTExOTsgdHlwZWRlZiBQMTIwIGl0ZW0xMjA7IHR5cGVkZWYgUDEyMSBpdGVtMTIxOyB0eXBlZGVmIFAxMjIgaXRlbTEyMjsgdHlwZWRlZiBQMTIzIGl0ZW0xMjM7IHR5cGVkZWYgUDEyNCBpdGVtMTI0OyB0eXBlZGVmIFAxMjUgaXRlbTEyNTsgdHlwZWRlZiBQMTI2IGl0ZW0xMjY7IHR5cGVkZWYgUDEyNyBpdGVtMTI3OyB0eXBlZGVmIFAxMjggaXRlbTEyODsgdHlwZWRlZiBQMTI5IGl0ZW0xMjk7IHR5cGVkZWYgUDEzMCBpdGVtMTMwOyB0eXBlZGVmIFAxMzEgaXRlbTEzMTsgdHlwZWRlZiBQMTMyIGl0ZW0xMzI7IHR5cGVkZWYgUDEzMyBpdGVtMTMzOyB0eXBlZGVmIFAxMzQgaXRlbTEzNDsgdHlwZWRlZiBQMTM1IGl0ZW0xMzU7IHR5cGVkZWYgUDEzNiBpdGVtMTM2OyB0eXBlZGVmIFAxMzcgaXRlbTEzNzsgdHlwZWRlZiBQMTM4IGl0ZW0xMzg7IHR5cGVkZWYgUDEzOSBpdGVtMTM5OyB0eXBlZGVmIFAxNDAgaXRlbTE0MDsgdHlwZWRlZiBQMTQxIGl0ZW0xNDE7IHR5cGVkZWYgUDE0MiBpdGVtMTQyOyB0eXBlZGVmIFAxNDMgaXRlbTE0MzsgdHlwZWRlZiBQMTQ0IGl0ZW0xNDQ7IHR5cGVkZWYgUDE0NSBpdGVtMTQ1OyB0eXBlZGVmIFAxNDYgaXRlbTE0NjsgdHlwZWRlZiBQMTQ3IGl0ZW0xNDc7IHR5cGVkZWYgUDE0OCBpdGVtMTQ4OyB0eXBlZGVmIFAxNDkgaXRlbTE0OTsgdHlwZWRlZiBQMTUwIGl0ZW0xNTA7IHR5cGVkZWYgUDE1MSBpdGVtMTUxOyB0eXBlZGVmIFAxNTIgaXRlbTE1MjsgdHlwZWRlZiBQMTUzIGl0ZW0xNTM7IHR5cGVkZWYgUDE1NCBpdGVtMTU0OyB0eXBlZGVmIFAxNTUgaXRlbTE1NTsgdHlwZWRlZiBQMTU2IGl0ZW0xNTY7IHR5cGVkZWYgUDE1NyBpdGVtMTU3OyB0eXBlZGVmIFAxNTggaXRlbTE1ODsgdHlwZWRlZiBQMTU5IGl0ZW0xNTk7IHR5cGVkZWYgUDE2MCBpdGVtMTYwOyB0eXBlZGVmIFAxNjEgaXRlbTE2MTsgdHlwZWRlZiBQMTYyIGl0ZW0xNjI7IHR5cGVkZWYgUDE2MyBpdGVtMTYzOyB0eXBlZGVmIFAxNjQgaXRlbTE2NDsgdHlwZWRlZiBQMTY1IGl0ZW0xNjU7IHR5cGVkZWYgUDE2NiBpdGVtMTY2OyB0eXBlZGVmIFAxNjcgaXRlbTE2NzsgdHlwZWRlZiBQMTY4IGl0ZW0xNjg7IHR5cGVkZWYgUDE2OSBpdGVtMTY5OyB0eXBlZGVmIFAxNzAgaXRlbTE3MDsgdHlwZWRlZiBQMTcxIGl0ZW0xNzE7IHR5cGVkZWYgUDE3MiBpdGVtMTcyOyB0eXBlZGVmIFAxNzMgaXRlbTE3MzsgdHlwZWRlZiBQMTc0IGl0ZW0xNzQ7IHR5cGVkZWYgUDE3NSBpdGVtMTc1OyB0eXBlZGVmIFAxNzYgaXRlbTE3NjsgdHlwZWRlZiBQMTc3IGl0ZW0xNzc7IHR5cGVkZWYgUDE3OCBpdGVtMTc4OyB0eXBlZGVmIFAxNzkgaXRlbTE3OTsgdHlwZWRlZiBQMTgwIGl0ZW0xODA7IHR5cGVkZWYgUDE4MSBpdGVtMTgxOyB0eXBlZGVmIFAxODIgaXRlbTE4MjsgdHlwZWRlZiBQMTgzIGl0ZW0xODM7IHR5cGVkZWYgUDE4NCBpdGVtMTg0OyB0eXBlZGVmIFAxODUgaXRlbTE4NTsgdHlwZWRlZiBQMTg2IGl0ZW0xODY7IHR5cGVkZWYgUDE4NyBpdGVtMTg3OyB0eXBlZGVmIFAxODggaXRlbTE4ODsgdHlwZWRlZiBQMTg5IGl0ZW0xODk7IHR5cGVkZWYgUDE5MCBpdGVtMTkwOyB0eXBlZGVmIFAxOTEgaXRlbTE5MTsgdHlwZWRlZiBQMTkyIGl0ZW0xOTI7IHR5cGVkZWYgUDE5MyBpdGVtMTkzOyB0eXBlZGVmIFAxOTQgaXRlbTE5NDsgdHlwZWRlZiBQMTk1IGl0ZW0xOTU7IHR5cGVkZWYgUDE5NiBpdGVtMTk2OyB0eXBlZGVmIFAxOTcgaXRlbTE5NzsgdHlwZWRlZiBQMTk4IGl0ZW0xOTg7IHR5cGVkZWYgUDE5OSBpdGVtMTk5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjAzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjA5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjExOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjEzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjE5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjIzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjI5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjQ5OyB9OwotfX0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSB0eXBlX29mIHsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBWLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrIHsKLSAgICAgICAgdHlwZWRlZiBWIHR5cGU7Ci0gICAgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFQ+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+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjUwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjUxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjUyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjUzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1Mj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjU0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1Mz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjU1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1ND4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjU2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjU3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1Nj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjU4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1Nz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNTk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjU5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjYwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjYxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjYyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjYzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2Mj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjY0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2Mz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjY1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2ND4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjY2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjY3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2Nj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjY4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2Nz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNjk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjY5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjcwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjcxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjcyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjczPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3Mj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjc0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3Mz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjc1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3ND4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjc2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjc3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3Nj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjc4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3Nz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yNzk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjc5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjgwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjgxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjgyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjgzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4Mj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjg0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4Mz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjg1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4ND4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjg2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjg3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4Nj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjg4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4Nz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yODk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjg5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjkwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjkxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjkyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjkzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5Mj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjk0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5Mz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjk1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5ND4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjk2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjk3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5Nj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjk4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5Nz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yOTk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFQ+IHN0cnVjdCBwdXNoX2JhY2s8bmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3Rvcjk5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTAwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMDA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMDE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMDE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTAyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMDI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDE+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEwMzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMDM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMDQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMDQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTA1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMDU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQ+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEwNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMDY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMDc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMDc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTA4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMDg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDc+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEwOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMDk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMTA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMTA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTExPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMTE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTA+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjExMjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMTI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMTM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMTM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTE0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMTQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTM+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjExNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMTU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMTY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMTY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTE3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMTc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTY+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjExODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMTg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMTk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMTk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTIwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMjA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTk+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEyMTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMjE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMjI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMjI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTIzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMjM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjI+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEyNDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMjQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMjU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMjU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyND4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTI2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMjY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjU+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEyNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMjc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMjg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMjg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTI5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMjk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjg+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEzMDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMzA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMzE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMzE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTMyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMzI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzE+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEzMzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMzM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMzQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMzQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTM1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMzU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQ+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEzNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMzY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMzc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMzc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTM4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMzg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzc+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjEzOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxMzk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNDA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNDA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTQxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNDE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDA+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE0MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNDI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNDM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNDM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0Mj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTQ0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNDQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDM+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE0NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNDU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNDY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNDY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTQ3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNDc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDY+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE0ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNDg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNDk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNDk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTUwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNTA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDk+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE1MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNTE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNTI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNTI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTUzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNTM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTI+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE1NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNTQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNTU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNTU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1ND4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTU2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNTY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTU+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE1NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNTc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNTg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNTg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1Nz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTU5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNTk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTg+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE2MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNjA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNjE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNjE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTYyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNjI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjE+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE2MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNjM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNjQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNjQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2Mz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTY1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNjU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQ+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE2NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNjY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNjc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNjc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2Nj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTY4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNjg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjc+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE2OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNjk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNzA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNzA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTcxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNzE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzA+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE3MjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCAsIGNsYXNzIFAxNzEgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNzI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNzM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBQMTcwICwgY2xhc3MgUDE3MSAsIGNsYXNzIFAxNzIgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNzM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3Mj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTc0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgLCBjbGFzcyBQMTcxICwgY2xhc3MgUDE3MiAsIGNsYXNzIFAxNzMgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNzQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzM+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE3NTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCAsIGNsYXNzIFAxNzEgLCBjbGFzcyBQMTcyICwgY2xhc3MgUDE3MyAsIGNsYXNzIFAxNzQgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNzU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNzY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBQMTcwICwgY2xhc3MgUDE3MSAsIGNsYXNzIFAxNzIgLCBjbGFzcyBQMTczICwgY2xhc3MgUDE3NCAsIGNsYXNzIFAxNzUgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNzY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTc3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgLCBjbGFzcyBQMTcxICwgY2xhc3MgUDE3MiAsIGNsYXNzIFAxNzMgLCBjbGFzcyBQMTc0ICwgY2xhc3MgUDE3NSAsIGNsYXNzIFAxNzYgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNzc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzY+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE3ODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCAsIGNsYXNzIFAxNzEgLCBjbGFzcyBQMTcyICwgY2xhc3MgUDE3MyAsIGNsYXNzIFAxNzQgLCBjbGFzcyBQMTc1ICwgY2xhc3MgUDE3NiAsIGNsYXNzIFAxNzcgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNzg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNzk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBQMTcwICwgY2xhc3MgUDE3MSAsIGNsYXNzIFAxNzIgLCBjbGFzcyBQMTczICwgY2xhc3MgUDE3NCAsIGNsYXNzIFAxNzUgLCBjbGFzcyBQMTc2ICwgY2xhc3MgUDE3NyAsIGNsYXNzIFAxNzggLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxNzk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTgwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzggLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgLCBjbGFzcyBQMTcxICwgY2xhc3MgUDE3MiAsIGNsYXNzIFAxNzMgLCBjbGFzcyBQMTc0ICwgY2xhc3MgUDE3NSAsIGNsYXNzIFAxNzYgLCBjbGFzcyBQMTc3ICwgY2xhc3MgUDE3OCAsIGNsYXNzIFAxNzkgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxODA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzk+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE4MTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBQMTc4ICwgUDE3OSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCAsIGNsYXNzIFAxNzEgLCBjbGFzcyBQMTcyICwgY2xhc3MgUDE3MyAsIGNsYXNzIFAxNzQgLCBjbGFzcyBQMTc1ICwgY2xhc3MgUDE3NiAsIGNsYXNzIFAxNzcgLCBjbGFzcyBQMTc4ICwgY2xhc3MgUDE3OSAsIGNsYXNzIFAxODAgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxODE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxODI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBQMTcwICwgY2xhc3MgUDE3MSAsIGNsYXNzIFAxNzIgLCBjbGFzcyBQMTczICwgY2xhc3MgUDE3NCAsIGNsYXNzIFAxNzUgLCBjbGFzcyBQMTc2ICwgY2xhc3MgUDE3NyAsIGNsYXNzIFAxNzggLCBjbGFzcyBQMTc5ICwgY2xhc3MgUDE4MCAsIGNsYXNzIFAxODEgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxODI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MT4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTgzPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzggLCBQMTc5ICwgUDE4MCAsIFAxODEgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgLCBjbGFzcyBQMTcxICwgY2xhc3MgUDE3MiAsIGNsYXNzIFAxNzMgLCBjbGFzcyBQMTc0ICwgY2xhc3MgUDE3NSAsIGNsYXNzIFAxNzYgLCBjbGFzcyBQMTc3ICwgY2xhc3MgUDE3OCAsIGNsYXNzIFAxNzkgLCBjbGFzcyBQMTgwICwgY2xhc3MgUDE4MSAsIGNsYXNzIFAxODIgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxODM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODI+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE4NDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBQMTc4ICwgUDE3OSAsIFAxODAgLCBQMTgxICwgUDE4MiAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCAsIGNsYXNzIFAxNzEgLCBjbGFzcyBQMTcyICwgY2xhc3MgUDE3MyAsIGNsYXNzIFAxNzQgLCBjbGFzcyBQMTc1ICwgY2xhc3MgUDE3NiAsIGNsYXNzIFAxNzcgLCBjbGFzcyBQMTc4ICwgY2xhc3MgUDE3OSAsIGNsYXNzIFAxODAgLCBjbGFzcyBQMTgxICwgY2xhc3MgUDE4MiAsIGNsYXNzIFAxODMgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxODQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODIgLCBQMTgzPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxODU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODIgLCBQMTgzICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBQMTcwICwgY2xhc3MgUDE3MSAsIGNsYXNzIFAxNzIgLCBjbGFzcyBQMTczICwgY2xhc3MgUDE3NCAsIGNsYXNzIFAxNzUgLCBjbGFzcyBQMTc2ICwgY2xhc3MgUDE3NyAsIGNsYXNzIFAxNzggLCBjbGFzcyBQMTc5ICwgY2xhc3MgUDE4MCAsIGNsYXNzIFAxODEgLCBjbGFzcyBQMTgyICwgY2xhc3MgUDE4MyAsIGNsYXNzIFAxODQgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxODU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODIgLCBQMTgzICwgUDE4ND4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTg2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzggLCBQMTc5ICwgUDE4MCAsIFAxODEgLCBQMTgyICwgUDE4MyAsIFAxODQgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgLCBjbGFzcyBQMTcxICwgY2xhc3MgUDE3MiAsIGNsYXNzIFAxNzMgLCBjbGFzcyBQMTc0ICwgY2xhc3MgUDE3NSAsIGNsYXNzIFAxNzYgLCBjbGFzcyBQMTc3ICwgY2xhc3MgUDE3OCAsIGNsYXNzIFAxNzkgLCBjbGFzcyBQMTgwICwgY2xhc3MgUDE4MSAsIGNsYXNzIFAxODIgLCBjbGFzcyBQMTgzICwgY2xhc3MgUDE4NCAsIGNsYXNzIFAxODUgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxODY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODIgLCBQMTgzICwgUDE4NCAsIFAxODU+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE4NzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBQMTc4ICwgUDE3OSAsIFAxODAgLCBQMTgxICwgUDE4MiAsIFAxODMgLCBQMTg0ICwgUDE4NSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCAsIGNsYXNzIFAxNzEgLCBjbGFzcyBQMTcyICwgY2xhc3MgUDE3MyAsIGNsYXNzIFAxNzQgLCBjbGFzcyBQMTc1ICwgY2xhc3MgUDE3NiAsIGNsYXNzIFAxNzcgLCBjbGFzcyBQMTc4ICwgY2xhc3MgUDE3OSAsIGNsYXNzIFAxODAgLCBjbGFzcyBQMTgxICwgY2xhc3MgUDE4MiAsIGNsYXNzIFAxODMgLCBjbGFzcyBQMTg0ICwgY2xhc3MgUDE4NSAsIGNsYXNzIFAxODYgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxODc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODIgLCBQMTgzICwgUDE4NCAsIFAxODUgLCBQMTg2PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxODg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODIgLCBQMTgzICwgUDE4NCAsIFAxODUgLCBQMTg2ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBQMTcwICwgY2xhc3MgUDE3MSAsIGNsYXNzIFAxNzIgLCBjbGFzcyBQMTczICwgY2xhc3MgUDE3NCAsIGNsYXNzIFAxNzUgLCBjbGFzcyBQMTc2ICwgY2xhc3MgUDE3NyAsIGNsYXNzIFAxNzggLCBjbGFzcyBQMTc5ICwgY2xhc3MgUDE4MCAsIGNsYXNzIFAxODEgLCBjbGFzcyBQMTgyICwgY2xhc3MgUDE4MyAsIGNsYXNzIFAxODQgLCBjbGFzcyBQMTg1ICwgY2xhc3MgUDE4NiAsIGNsYXNzIFAxODcgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxODg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODIgLCBQMTgzICwgUDE4NCAsIFAxODUgLCBQMTg2ICwgUDE4Nz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTg5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzggLCBQMTc5ICwgUDE4MCAsIFAxODEgLCBQMTgyICwgUDE4MyAsIFAxODQgLCBQMTg1ICwgUDE4NiAsIFAxODcgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgLCBjbGFzcyBQMTcxICwgY2xhc3MgUDE3MiAsIGNsYXNzIFAxNzMgLCBjbGFzcyBQMTc0ICwgY2xhc3MgUDE3NSAsIGNsYXNzIFAxNzYgLCBjbGFzcyBQMTc3ICwgY2xhc3MgUDE3OCAsIGNsYXNzIFAxNzkgLCBjbGFzcyBQMTgwICwgY2xhc3MgUDE4MSAsIGNsYXNzIFAxODIgLCBjbGFzcyBQMTgzICwgY2xhc3MgUDE4NCAsIGNsYXNzIFAxODUgLCBjbGFzcyBQMTg2ICwgY2xhc3MgUDE4NyAsIGNsYXNzIFAxODggLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxODk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODIgLCBQMTgzICwgUDE4NCAsIFAxODUgLCBQMTg2ICwgUDE4NyAsIFAxODg+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE5MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBQMTc4ICwgUDE3OSAsIFAxODAgLCBQMTgxICwgUDE4MiAsIFAxODMgLCBQMTg0ICwgUDE4NSAsIFAxODYgLCBQMTg3ICwgUDE4OCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCAsIGNsYXNzIFAxNzEgLCBjbGFzcyBQMTcyICwgY2xhc3MgUDE3MyAsIGNsYXNzIFAxNzQgLCBjbGFzcyBQMTc1ICwgY2xhc3MgUDE3NiAsIGNsYXNzIFAxNzcgLCBjbGFzcyBQMTc4ICwgY2xhc3MgUDE3OSAsIGNsYXNzIFAxODAgLCBjbGFzcyBQMTgxICwgY2xhc3MgUDE4MiAsIGNsYXNzIFAxODMgLCBjbGFzcyBQMTg0ICwgY2xhc3MgUDE4NSAsIGNsYXNzIFAxODYgLCBjbGFzcyBQMTg3ICwgY2xhc3MgUDE4OCAsIGNsYXNzIFAxODkgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxOTA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODIgLCBQMTgzICwgUDE4NCAsIFAxODUgLCBQMTg2ICwgUDE4NyAsIFAxODggLCBQMTg5PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxOTE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODIgLCBQMTgzICwgUDE4NCAsIFAxODUgLCBQMTg2ICwgUDE4NyAsIFAxODggLCBQMTg5ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBQMTcwICwgY2xhc3MgUDE3MSAsIGNsYXNzIFAxNzIgLCBjbGFzcyBQMTczICwgY2xhc3MgUDE3NCAsIGNsYXNzIFAxNzUgLCBjbGFzcyBQMTc2ICwgY2xhc3MgUDE3NyAsIGNsYXNzIFAxNzggLCBjbGFzcyBQMTc5ICwgY2xhc3MgUDE4MCAsIGNsYXNzIFAxODEgLCBjbGFzcyBQMTgyICwgY2xhc3MgUDE4MyAsIGNsYXNzIFAxODQgLCBjbGFzcyBQMTg1ICwgY2xhc3MgUDE4NiAsIGNsYXNzIFAxODcgLCBjbGFzcyBQMTg4ICwgY2xhc3MgUDE4OSAsIGNsYXNzIFAxOTAgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxOTE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODIgLCBQMTgzICwgUDE4NCAsIFAxODUgLCBQMTg2ICwgUDE4NyAsIFAxODggLCBQMTg5ICwgUDE5MD4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTkyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzggLCBQMTc5ICwgUDE4MCAsIFAxODEgLCBQMTgyICwgUDE4MyAsIFAxODQgLCBQMTg1ICwgUDE4NiAsIFAxODcgLCBQMTg4ICwgUDE4OSAsIFAxOTAgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgLCBjbGFzcyBQMTcxICwgY2xhc3MgUDE3MiAsIGNsYXNzIFAxNzMgLCBjbGFzcyBQMTc0ICwgY2xhc3MgUDE3NSAsIGNsYXNzIFAxNzYgLCBjbGFzcyBQMTc3ICwgY2xhc3MgUDE3OCAsIGNsYXNzIFAxNzkgLCBjbGFzcyBQMTgwICwgY2xhc3MgUDE4MSAsIGNsYXNzIFAxODIgLCBjbGFzcyBQMTgzICwgY2xhc3MgUDE4NCAsIGNsYXNzIFAxODUgLCBjbGFzcyBQMTg2ICwgY2xhc3MgUDE4NyAsIGNsYXNzIFAxODggLCBjbGFzcyBQMTg5ICwgY2xhc3MgUDE5MCAsIGNsYXNzIFAxOTEgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxOTI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODIgLCBQMTgzICwgUDE4NCAsIFAxODUgLCBQMTg2ICwgUDE4NyAsIFAxODggLCBQMTg5ICwgUDE5MCAsIFAxOTE+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE5MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBQMTc4ICwgUDE3OSAsIFAxODAgLCBQMTgxICwgUDE4MiAsIFAxODMgLCBQMTg0ICwgUDE4NSAsIFAxODYgLCBQMTg3ICwgUDE4OCAsIFAxODkgLCBQMTkwICwgUDE5MSAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCAsIGNsYXNzIFAxNzEgLCBjbGFzcyBQMTcyICwgY2xhc3MgUDE3MyAsIGNsYXNzIFAxNzQgLCBjbGFzcyBQMTc1ICwgY2xhc3MgUDE3NiAsIGNsYXNzIFAxNzcgLCBjbGFzcyBQMTc4ICwgY2xhc3MgUDE3OSAsIGNsYXNzIFAxODAgLCBjbGFzcyBQMTgxICwgY2xhc3MgUDE4MiAsIGNsYXNzIFAxODMgLCBjbGFzcyBQMTg0ICwgY2xhc3MgUDE4NSAsIGNsYXNzIFAxODYgLCBjbGFzcyBQMTg3ICwgY2xhc3MgUDE4OCAsIGNsYXNzIFAxODkgLCBjbGFzcyBQMTkwICwgY2xhc3MgUDE5MSAsIGNsYXNzIFAxOTIgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxOTM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODIgLCBQMTgzICwgUDE4NCAsIFAxODUgLCBQMTg2ICwgUDE4NyAsIFAxODggLCBQMTg5ICwgUDE5MCAsIFAxOTEgLCBQMTkyPiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxOTQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODIgLCBQMTgzICwgUDE4NCAsIFAxODUgLCBQMTg2ICwgUDE4NyAsIFAxODggLCBQMTg5ICwgUDE5MCAsIFAxOTEgLCBQMTkyICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBQMTcwICwgY2xhc3MgUDE3MSAsIGNsYXNzIFAxNzIgLCBjbGFzcyBQMTczICwgY2xhc3MgUDE3NCAsIGNsYXNzIFAxNzUgLCBjbGFzcyBQMTc2ICwgY2xhc3MgUDE3NyAsIGNsYXNzIFAxNzggLCBjbGFzcyBQMTc5ICwgY2xhc3MgUDE4MCAsIGNsYXNzIFAxODEgLCBjbGFzcyBQMTgyICwgY2xhc3MgUDE4MyAsIGNsYXNzIFAxODQgLCBjbGFzcyBQMTg1ICwgY2xhc3MgUDE4NiAsIGNsYXNzIFAxODcgLCBjbGFzcyBQMTg4ICwgY2xhc3MgUDE4OSAsIGNsYXNzIFAxOTAgLCBjbGFzcyBQMTkxICwgY2xhc3MgUDE5MiAsIGNsYXNzIFAxOTMgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxOTQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODIgLCBQMTgzICwgUDE4NCAsIFAxODUgLCBQMTg2ICwgUDE4NyAsIFAxODggLCBQMTg5ICwgUDE5MCAsIFAxOTEgLCBQMTkyICwgUDE5Mz4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTk1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzggLCBQMTc5ICwgUDE4MCAsIFAxODEgLCBQMTgyICwgUDE4MyAsIFAxODQgLCBQMTg1ICwgUDE4NiAsIFAxODcgLCBQMTg4ICwgUDE4OSAsIFAxOTAgLCBQMTkxICwgUDE5MiAsIFAxOTMgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgLCBjbGFzcyBQMTcxICwgY2xhc3MgUDE3MiAsIGNsYXNzIFAxNzMgLCBjbGFzcyBQMTc0ICwgY2xhc3MgUDE3NSAsIGNsYXNzIFAxNzYgLCBjbGFzcyBQMTc3ICwgY2xhc3MgUDE3OCAsIGNsYXNzIFAxNzkgLCBjbGFzcyBQMTgwICwgY2xhc3MgUDE4MSAsIGNsYXNzIFAxODIgLCBjbGFzcyBQMTgzICwgY2xhc3MgUDE4NCAsIGNsYXNzIFAxODUgLCBjbGFzcyBQMTg2ICwgY2xhc3MgUDE4NyAsIGNsYXNzIFAxODggLCBjbGFzcyBQMTg5ICwgY2xhc3MgUDE5MCAsIGNsYXNzIFAxOTEgLCBjbGFzcyBQMTkyICwgY2xhc3MgUDE5MyAsIGNsYXNzIFAxOTQgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxOTU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODIgLCBQMTgzICwgUDE4NCAsIFAxODUgLCBQMTg2ICwgUDE4NyAsIFAxODggLCBQMTg5ICwgUDE5MCAsIFAxOTEgLCBQMTkyICwgUDE5MyAsIFAxOTQ+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE5NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBQMTc4ICwgUDE3OSAsIFAxODAgLCBQMTgxICwgUDE4MiAsIFAxODMgLCBQMTg0ICwgUDE4NSAsIFAxODYgLCBQMTg3ICwgUDE4OCAsIFAxODkgLCBQMTkwICwgUDE5MSAsIFAxOTIgLCBQMTkzICwgUDE5NCAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCAsIGNsYXNzIFAxNzEgLCBjbGFzcyBQMTcyICwgY2xhc3MgUDE3MyAsIGNsYXNzIFAxNzQgLCBjbGFzcyBQMTc1ICwgY2xhc3MgUDE3NiAsIGNsYXNzIFAxNzcgLCBjbGFzcyBQMTc4ICwgY2xhc3MgUDE3OSAsIGNsYXNzIFAxODAgLCBjbGFzcyBQMTgxICwgY2xhc3MgUDE4MiAsIGNsYXNzIFAxODMgLCBjbGFzcyBQMTg0ICwgY2xhc3MgUDE4NSAsIGNsYXNzIFAxODYgLCBjbGFzcyBQMTg3ICwgY2xhc3MgUDE4OCAsIGNsYXNzIFAxODkgLCBjbGFzcyBQMTkwICwgY2xhc3MgUDE5MSAsIGNsYXNzIFAxOTIgLCBjbGFzcyBQMTkzICwgY2xhc3MgUDE5NCAsIGNsYXNzIFAxOTUgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxOTY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODIgLCBQMTgzICwgUDE4NCAsIFAxODUgLCBQMTg2ICwgUDE4NyAsIFAxODggLCBQMTg5ICwgUDE5MCAsIFAxOTEgLCBQMTkyICwgUDE5MyAsIFAxOTQgLCBQMTk1PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxOTc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODIgLCBQMTgzICwgUDE4NCAsIFAxODUgLCBQMTg2ICwgUDE4NyAsIFAxODggLCBQMTg5ICwgUDE5MCAsIFAxOTEgLCBQMTkyICwgUDE5MyAsIFAxOTQgLCBQMTk1ICwgVCA+IHR5cGU7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSAsIGNsYXNzIFA1MCAsIGNsYXNzIFA1MSAsIGNsYXNzIFA1MiAsIGNsYXNzIFA1MyAsIGNsYXNzIFA1NCAsIGNsYXNzIFA1NSAsIGNsYXNzIFA1NiAsIGNsYXNzIFA1NyAsIGNsYXNzIFA1OCAsIGNsYXNzIFA1OSAsIGNsYXNzIFA2MCAsIGNsYXNzIFA2MSAsIGNsYXNzIFA2MiAsIGNsYXNzIFA2MyAsIGNsYXNzIFA2NCAsIGNsYXNzIFA2NSAsIGNsYXNzIFA2NiAsIGNsYXNzIFA2NyAsIGNsYXNzIFA2OCAsIGNsYXNzIFA2OSAsIGNsYXNzIFA3MCAsIGNsYXNzIFA3MSAsIGNsYXNzIFA3MiAsIGNsYXNzIFA3MyAsIGNsYXNzIFA3NCAsIGNsYXNzIFA3NSAsIGNsYXNzIFA3NiAsIGNsYXNzIFA3NyAsIGNsYXNzIFA3OCAsIGNsYXNzIFA3OSAsIGNsYXNzIFA4MCAsIGNsYXNzIFA4MSAsIGNsYXNzIFA4MiAsIGNsYXNzIFA4MyAsIGNsYXNzIFA4NCAsIGNsYXNzIFA4NSAsIGNsYXNzIFA4NiAsIGNsYXNzIFA4NyAsIGNsYXNzIFA4OCAsIGNsYXNzIFA4OSAsIGNsYXNzIFA5MCAsIGNsYXNzIFA5MSAsIGNsYXNzIFA5MiAsIGNsYXNzIFA5MyAsIGNsYXNzIFA5NCAsIGNsYXNzIFA5NSAsIGNsYXNzIFA5NiAsIGNsYXNzIFA5NyAsIGNsYXNzIFA5OCAsIGNsYXNzIFA5OSAsIGNsYXNzIFAxMDAgLCBjbGFzcyBQMTAxICwgY2xhc3MgUDEwMiAsIGNsYXNzIFAxMDMgLCBjbGFzcyBQMTA0ICwgY2xhc3MgUDEwNSAsIGNsYXNzIFAxMDYgLCBjbGFzcyBQMTA3ICwgY2xhc3MgUDEwOCAsIGNsYXNzIFAxMDkgLCBjbGFzcyBQMTEwICwgY2xhc3MgUDExMSAsIGNsYXNzIFAxMTIgLCBjbGFzcyBQMTEzICwgY2xhc3MgUDExNCAsIGNsYXNzIFAxMTUgLCBjbGFzcyBQMTE2ICwgY2xhc3MgUDExNyAsIGNsYXNzIFAxMTggLCBjbGFzcyBQMTE5ICwgY2xhc3MgUDEyMCAsIGNsYXNzIFAxMjEgLCBjbGFzcyBQMTIyICwgY2xhc3MgUDEyMyAsIGNsYXNzIFAxMjQgLCBjbGFzcyBQMTI1ICwgY2xhc3MgUDEyNiAsIGNsYXNzIFAxMjcgLCBjbGFzcyBQMTI4ICwgY2xhc3MgUDEyOSAsIGNsYXNzIFAxMzAgLCBjbGFzcyBQMTMxICwgY2xhc3MgUDEzMiAsIGNsYXNzIFAxMzMgLCBjbGFzcyBQMTM0ICwgY2xhc3MgUDEzNSAsIGNsYXNzIFAxMzYgLCBjbGFzcyBQMTM3ICwgY2xhc3MgUDEzOCAsIGNsYXNzIFAxMzkgLCBjbGFzcyBQMTQwICwgY2xhc3MgUDE0MSAsIGNsYXNzIFAxNDIgLCBjbGFzcyBQMTQzICwgY2xhc3MgUDE0NCAsIGNsYXNzIFAxNDUgLCBjbGFzcyBQMTQ2ICwgY2xhc3MgUDE0NyAsIGNsYXNzIFAxNDggLCBjbGFzcyBQMTQ5ICwgY2xhc3MgUDE1MCAsIGNsYXNzIFAxNTEgLCBjbGFzcyBQMTUyICwgY2xhc3MgUDE1MyAsIGNsYXNzIFAxNTQgLCBjbGFzcyBQMTU1ICwgY2xhc3MgUDE1NiAsIGNsYXNzIFAxNTcgLCBjbGFzcyBQMTU4ICwgY2xhc3MgUDE1OSAsIGNsYXNzIFAxNjAgLCBjbGFzcyBQMTYxICwgY2xhc3MgUDE2MiAsIGNsYXNzIFAxNjMgLCBjbGFzcyBQMTY0ICwgY2xhc3MgUDE2NSAsIGNsYXNzIFAxNjYgLCBjbGFzcyBQMTY3ICwgY2xhc3MgUDE2OCAsIGNsYXNzIFAxNjkgLCBjbGFzcyBQMTcwICwgY2xhc3MgUDE3MSAsIGNsYXNzIFAxNzIgLCBjbGFzcyBQMTczICwgY2xhc3MgUDE3NCAsIGNsYXNzIFAxNzUgLCBjbGFzcyBQMTc2ICwgY2xhc3MgUDE3NyAsIGNsYXNzIFAxNzggLCBjbGFzcyBQMTc5ICwgY2xhc3MgUDE4MCAsIGNsYXNzIFAxODEgLCBjbGFzcyBQMTgyICwgY2xhc3MgUDE4MyAsIGNsYXNzIFAxODQgLCBjbGFzcyBQMTg1ICwgY2xhc3MgUDE4NiAsIGNsYXNzIFAxODcgLCBjbGFzcyBQMTg4ICwgY2xhc3MgUDE4OSAsIGNsYXNzIFAxOTAgLCBjbGFzcyBQMTkxICwgY2xhc3MgUDE5MiAsIGNsYXNzIFAxOTMgLCBjbGFzcyBQMTk0ICwgY2xhc3MgUDE5NSAsIGNsYXNzIFAxOTYgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxOTc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODIgLCBQMTgzICwgUDE4NCAsIFAxODUgLCBQMTg2ICwgUDE4NyAsIFAxODggLCBQMTg5ICwgUDE5MCAsIFAxOTEgLCBQMTkyICwgUDE5MyAsIFAxOTQgLCBQMTk1ICwgUDE5Nj4sIFQ+IHsgdHlwZWRlZiBuZG5ib29zdDo6dHlwZV9vZjo6dmVjdG9yMTk4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OSAsIFA1MCAsIFA1MSAsIFA1MiAsIFA1MyAsIFA1NCAsIFA1NSAsIFA1NiAsIFA1NyAsIFA1OCAsIFA1OSAsIFA2MCAsIFA2MSAsIFA2MiAsIFA2MyAsIFA2NCAsIFA2NSAsIFA2NiAsIFA2NyAsIFA2OCAsIFA2OSAsIFA3MCAsIFA3MSAsIFA3MiAsIFA3MyAsIFA3NCAsIFA3NSAsIFA3NiAsIFA3NyAsIFA3OCAsIFA3OSAsIFA4MCAsIFA4MSAsIFA4MiAsIFA4MyAsIFA4NCAsIFA4NSAsIFA4NiAsIFA4NyAsIFA4OCAsIFA4OSAsIFA5MCAsIFA5MSAsIFA5MiAsIFA5MyAsIFA5NCAsIFA5NSAsIFA5NiAsIFA5NyAsIFA5OCAsIFA5OSAsIFAxMDAgLCBQMTAxICwgUDEwMiAsIFAxMDMgLCBQMTA0ICwgUDEwNSAsIFAxMDYgLCBQMTA3ICwgUDEwOCAsIFAxMDkgLCBQMTEwICwgUDExMSAsIFAxMTIgLCBQMTEzICwgUDExNCAsIFAxMTUgLCBQMTE2ICwgUDExNyAsIFAxMTggLCBQMTE5ICwgUDEyMCAsIFAxMjEgLCBQMTIyICwgUDEyMyAsIFAxMjQgLCBQMTI1ICwgUDEyNiAsIFAxMjcgLCBQMTI4ICwgUDEyOSAsIFAxMzAgLCBQMTMxICwgUDEzMiAsIFAxMzMgLCBQMTM0ICwgUDEzNSAsIFAxMzYgLCBQMTM3ICwgUDEzOCAsIFAxMzkgLCBQMTQwICwgUDE0MSAsIFAxNDIgLCBQMTQzICwgUDE0NCAsIFAxNDUgLCBQMTQ2ICwgUDE0NyAsIFAxNDggLCBQMTQ5ICwgUDE1MCAsIFAxNTEgLCBQMTUyICwgUDE1MyAsIFAxNTQgLCBQMTU1ICwgUDE1NiAsIFAxNTcgLCBQMTU4ICwgUDE1OSAsIFAxNjAgLCBQMTYxICwgUDE2MiAsIFAxNjMgLCBQMTY0ICwgUDE2NSAsIFAxNjYgLCBQMTY3ICwgUDE2OCAsIFAxNjkgLCBQMTcwICwgUDE3MSAsIFAxNzIgLCBQMTczICwgUDE3NCAsIFAxNzUgLCBQMTc2ICwgUDE3NyAsIFAxNzggLCBQMTc5ICwgUDE4MCAsIFAxODEgLCBQMTgyICwgUDE4MyAsIFAxODQgLCBQMTg1ICwgUDE4NiAsIFAxODcgLCBQMTg4ICwgUDE4OSAsIFAxOTAgLCBQMTkxICwgUDE5MiAsIFAxOTMgLCBQMTk0ICwgUDE5NSAsIFAxOTYgLCBUID4gdHlwZTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ICwgY2xhc3MgUDQ4ICwgY2xhc3MgUDQ5ICwgY2xhc3MgUDUwICwgY2xhc3MgUDUxICwgY2xhc3MgUDUyICwgY2xhc3MgUDUzICwgY2xhc3MgUDU0ICwgY2xhc3MgUDU1ICwgY2xhc3MgUDU2ICwgY2xhc3MgUDU3ICwgY2xhc3MgUDU4ICwgY2xhc3MgUDU5ICwgY2xhc3MgUDYwICwgY2xhc3MgUDYxICwgY2xhc3MgUDYyICwgY2xhc3MgUDYzICwgY2xhc3MgUDY0ICwgY2xhc3MgUDY1ICwgY2xhc3MgUDY2ICwgY2xhc3MgUDY3ICwgY2xhc3MgUDY4ICwgY2xhc3MgUDY5ICwgY2xhc3MgUDcwICwgY2xhc3MgUDcxICwgY2xhc3MgUDcyICwgY2xhc3MgUDczICwgY2xhc3MgUDc0ICwgY2xhc3MgUDc1ICwgY2xhc3MgUDc2ICwgY2xhc3MgUDc3ICwgY2xhc3MgUDc4ICwgY2xhc3MgUDc5ICwgY2xhc3MgUDgwICwgY2xhc3MgUDgxICwgY2xhc3MgUDgyICwgY2xhc3MgUDgzICwgY2xhc3MgUDg0ICwgY2xhc3MgUDg1ICwgY2xhc3MgUDg2ICwgY2xhc3MgUDg3ICwgY2xhc3MgUDg4ICwgY2xhc3MgUDg5ICwgY2xhc3MgUDkwICwgY2xhc3MgUDkxICwgY2xhc3MgUDkyICwgY2xhc3MgUDkzICwgY2xhc3MgUDk0ICwgY2xhc3MgUDk1ICwgY2xhc3MgUDk2ICwgY2xhc3MgUDk3ICwgY2xhc3MgUDk4ICwgY2xhc3MgUDk5ICwgY2xhc3MgUDEwMCAsIGNsYXNzIFAxMDEgLCBjbGFzcyBQMTAyICwgY2xhc3MgUDEwMyAsIGNsYXNzIFAxMDQgLCBjbGFzcyBQMTA1ICwgY2xhc3MgUDEwNiAsIGNsYXNzIFAxMDcgLCBjbGFzcyBQMTA4ICwgY2xhc3MgUDEwOSAsIGNsYXNzIFAxMTAgLCBjbGFzcyBQMTExICwgY2xhc3MgUDExMiAsIGNsYXNzIFAxMTMgLCBjbGFzcyBQMTE0ICwgY2xhc3MgUDExNSAsIGNsYXNzIFAxMTYgLCBjbGFzcyBQMTE3ICwgY2xhc3MgUDExOCAsIGNsYXNzIFAxMTkgLCBjbGFzcyBQMTIwICwgY2xhc3MgUDEyMSAsIGNsYXNzIFAxMjIgLCBjbGFzcyBQMTIzICwgY2xhc3MgUDEyNCAsIGNsYXNzIFAxMjUgLCBjbGFzcyBQMTI2ICwgY2xhc3MgUDEyNyAsIGNsYXNzIFAxMjggLCBjbGFzcyBQMTI5ICwgY2xhc3MgUDEzMCAsIGNsYXNzIFAxMzEgLCBjbGFzcyBQMTMyICwgY2xhc3MgUDEzMyAsIGNsYXNzIFAxMzQgLCBjbGFzcyBQMTM1ICwgY2xhc3MgUDEzNiAsIGNsYXNzIFAxMzcgLCBjbGFzcyBQMTM4ICwgY2xhc3MgUDEzOSAsIGNsYXNzIFAxNDAgLCBjbGFzcyBQMTQxICwgY2xhc3MgUDE0MiAsIGNsYXNzIFAxNDMgLCBjbGFzcyBQMTQ0ICwgY2xhc3MgUDE0NSAsIGNsYXNzIFAxNDYgLCBjbGFzcyBQMTQ3ICwgY2xhc3MgUDE0OCAsIGNsYXNzIFAxNDkgLCBjbGFzcyBQMTUwICwgY2xhc3MgUDE1MSAsIGNsYXNzIFAxNTIgLCBjbGFzcyBQMTUzICwgY2xhc3MgUDE1NCAsIGNsYXNzIFAxNTUgLCBjbGFzcyBQMTU2ICwgY2xhc3MgUDE1NyAsIGNsYXNzIFAxNTggLCBjbGFzcyBQMTU5ICwgY2xhc3MgUDE2MCAsIGNsYXNzIFAxNjEgLCBjbGFzcyBQMTYyICwgY2xhc3MgUDE2MyAsIGNsYXNzIFAxNjQgLCBjbGFzcyBQMTY1ICwgY2xhc3MgUDE2NiAsIGNsYXNzIFAxNjcgLCBjbGFzcyBQMTY4ICwgY2xhc3MgUDE2OSAsIGNsYXNzIFAxNzAgLCBjbGFzcyBQMTcxICwgY2xhc3MgUDE3MiAsIGNsYXNzIFAxNzMgLCBjbGFzcyBQMTc0ICwgY2xhc3MgUDE3NSAsIGNsYXNzIFAxNzYgLCBjbGFzcyBQMTc3ICwgY2xhc3MgUDE3OCAsIGNsYXNzIFAxNzkgLCBjbGFzcyBQMTgwICwgY2xhc3MgUDE4MSAsIGNsYXNzIFAxODIgLCBjbGFzcyBQMTgzICwgY2xhc3MgUDE4NCAsIGNsYXNzIFAxODUgLCBjbGFzcyBQMTg2ICwgY2xhc3MgUDE4NyAsIGNsYXNzIFAxODggLCBjbGFzcyBQMTg5ICwgY2xhc3MgUDE5MCAsIGNsYXNzIFAxOTEgLCBjbGFzcyBQMTkyICwgY2xhc3MgUDE5MyAsIGNsYXNzIFAxOTQgLCBjbGFzcyBQMTk1ICwgY2xhc3MgUDE5NiAsIGNsYXNzIFAxOTcgLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxOTg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODIgLCBQMTgzICwgUDE4NCAsIFAxODUgLCBQMTg2ICwgUDE4NyAsIFAxODggLCBQMTg5ICwgUDE5MCAsIFAxOTEgLCBQMTkyICwgUDE5MyAsIFAxOTQgLCBQMTk1ICwgUDE5NiAsIFAxOTc+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjE5OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDggLCBQNDkgLCBQNTAgLCBQNTEgLCBQNTIgLCBQNTMgLCBQNTQgLCBQNTUgLCBQNTYgLCBQNTcgLCBQNTggLCBQNTkgLCBQNjAgLCBQNjEgLCBQNjIgLCBQNjMgLCBQNjQgLCBQNjUgLCBQNjYgLCBQNjcgLCBQNjggLCBQNjkgLCBQNzAgLCBQNzEgLCBQNzIgLCBQNzMgLCBQNzQgLCBQNzUgLCBQNzYgLCBQNzcgLCBQNzggLCBQNzkgLCBQODAgLCBQODEgLCBQODIgLCBQODMgLCBQODQgLCBQODUgLCBQODYgLCBQODcgLCBQODggLCBQODkgLCBQOTAgLCBQOTEgLCBQOTIgLCBQOTMgLCBQOTQgLCBQOTUgLCBQOTYgLCBQOTcgLCBQOTggLCBQOTkgLCBQMTAwICwgUDEwMSAsIFAxMDIgLCBQMTAzICwgUDEwNCAsIFAxMDUgLCBQMTA2ICwgUDEwNyAsIFAxMDggLCBQMTA5ICwgUDExMCAsIFAxMTEgLCBQMTEyICwgUDExMyAsIFAxMTQgLCBQMTE1ICwgUDExNiAsIFAxMTcgLCBQMTE4ICwgUDExOSAsIFAxMjAgLCBQMTIxICwgUDEyMiAsIFAxMjMgLCBQMTI0ICwgUDEyNSAsIFAxMjYgLCBQMTI3ICwgUDEyOCAsIFAxMjkgLCBQMTMwICwgUDEzMSAsIFAxMzIgLCBQMTMzICwgUDEzNCAsIFAxMzUgLCBQMTM2ICwgUDEzNyAsIFAxMzggLCBQMTM5ICwgUDE0MCAsIFAxNDEgLCBQMTQyICwgUDE0MyAsIFAxNDQgLCBQMTQ1ICwgUDE0NiAsIFAxNDcgLCBQMTQ4ICwgUDE0OSAsIFAxNTAgLCBQMTUxICwgUDE1MiAsIFAxNTMgLCBQMTU0ICwgUDE1NSAsIFAxNTYgLCBQMTU3ICwgUDE1OCAsIFAxNTkgLCBQMTYwICwgUDE2MSAsIFAxNjIgLCBQMTYzICwgUDE2NCAsIFAxNjUgLCBQMTY2ICwgUDE2NyAsIFAxNjggLCBQMTY5ICwgUDE3MCAsIFAxNzEgLCBQMTcyICwgUDE3MyAsIFAxNzQgLCBQMTc1ICwgUDE3NiAsIFAxNzcgLCBQMTc4ICwgUDE3OSAsIFAxODAgLCBQMTgxICwgUDE4MiAsIFAxODMgLCBQMTg0ICwgUDE4NSAsIFAxODYgLCBQMTg3ICwgUDE4OCAsIFAxODkgLCBQMTkwICwgUDE5MSAsIFAxOTIgLCBQMTkzICwgUDE5NCAsIFAxOTUgLCBQMTk2ICwgUDE5NyAsIFQgPiB0eXBlOyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggLCBjbGFzcyBQNDkgLCBjbGFzcyBQNTAgLCBjbGFzcyBQNTEgLCBjbGFzcyBQNTIgLCBjbGFzcyBQNTMgLCBjbGFzcyBQNTQgLCBjbGFzcyBQNTUgLCBjbGFzcyBQNTYgLCBjbGFzcyBQNTcgLCBjbGFzcyBQNTggLCBjbGFzcyBQNTkgLCBjbGFzcyBQNjAgLCBjbGFzcyBQNjEgLCBjbGFzcyBQNjIgLCBjbGFzcyBQNjMgLCBjbGFzcyBQNjQgLCBjbGFzcyBQNjUgLCBjbGFzcyBQNjYgLCBjbGFzcyBQNjcgLCBjbGFzcyBQNjggLCBjbGFzcyBQNjkgLCBjbGFzcyBQNzAgLCBjbGFzcyBQNzEgLCBjbGFzcyBQNzIgLCBjbGFzcyBQNzMgLCBjbGFzcyBQNzQgLCBjbGFzcyBQNzUgLCBjbGFzcyBQNzYgLCBjbGFzcyBQNzcgLCBjbGFzcyBQNzggLCBjbGFzcyBQNzkgLCBjbGFzcyBQODAgLCBjbGFzcyBQODEgLCBjbGFzcyBQODIgLCBjbGFzcyBQODMgLCBjbGFzcyBQODQgLCBjbGFzcyBQODUgLCBjbGFzcyBQODYgLCBjbGFzcyBQODcgLCBjbGFzcyBQODggLCBjbGFzcyBQODkgLCBjbGFzcyBQOTAgLCBjbGFzcyBQOTEgLCBjbGFzcyBQOTIgLCBjbGFzcyBQOTMgLCBjbGFzcyBQOTQgLCBjbGFzcyBQOTUgLCBjbGFzcyBQOTYgLCBjbGFzcyBQOTcgLCBjbGFzcyBQOTggLCBjbGFzcyBQOTkgLCBjbGFzcyBQMTAwICwgY2xhc3MgUDEwMSAsIGNsYXNzIFAxMDIgLCBjbGFzcyBQMTAzICwgY2xhc3MgUDEwNCAsIGNsYXNzIFAxMDUgLCBjbGFzcyBQMTA2ICwgY2xhc3MgUDEwNyAsIGNsYXNzIFAxMDggLCBjbGFzcyBQMTA5ICwgY2xhc3MgUDExMCAsIGNsYXNzIFAxMTEgLCBjbGFzcyBQMTEyICwgY2xhc3MgUDExMyAsIGNsYXNzIFAxMTQgLCBjbGFzcyBQMTE1ICwgY2xhc3MgUDExNiAsIGNsYXNzIFAxMTcgLCBjbGFzcyBQMTE4ICwgY2xhc3MgUDExOSAsIGNsYXNzIFAxMjAgLCBjbGFzcyBQMTIxICwgY2xhc3MgUDEyMiAsIGNsYXNzIFAxMjMgLCBjbGFzcyBQMTI0ICwgY2xhc3MgUDEyNSAsIGNsYXNzIFAxMjYgLCBjbGFzcyBQMTI3ICwgY2xhc3MgUDEyOCAsIGNsYXNzIFAxMjkgLCBjbGFzcyBQMTMwICwgY2xhc3MgUDEzMSAsIGNsYXNzIFAxMzIgLCBjbGFzcyBQMTMzICwgY2xhc3MgUDEzNCAsIGNsYXNzIFAxMzUgLCBjbGFzcyBQMTM2ICwgY2xhc3MgUDEzNyAsIGNsYXNzIFAxMzggLCBjbGFzcyBQMTM5ICwgY2xhc3MgUDE0MCAsIGNsYXNzIFAxNDEgLCBjbGFzcyBQMTQyICwgY2xhc3MgUDE0MyAsIGNsYXNzIFAxNDQgLCBjbGFzcyBQMTQ1ICwgY2xhc3MgUDE0NiAsIGNsYXNzIFAxNDcgLCBjbGFzcyBQMTQ4ICwgY2xhc3MgUDE0OSAsIGNsYXNzIFAxNTAgLCBjbGFzcyBQMTUxICwgY2xhc3MgUDE1MiAsIGNsYXNzIFAxNTMgLCBjbGFzcyBQMTU0ICwgY2xhc3MgUDE1NSAsIGNsYXNzIFAxNTYgLCBjbGFzcyBQMTU3ICwgY2xhc3MgUDE1OCAsIGNsYXNzIFAxNTkgLCBjbGFzcyBQMTYwICwgY2xhc3MgUDE2MSAsIGNsYXNzIFAxNjIgLCBjbGFzcyBQMTYzICwgY2xhc3MgUDE2NCAsIGNsYXNzIFAxNjUgLCBjbGFzcyBQMTY2ICwgY2xhc3MgUDE2NyAsIGNsYXNzIFAxNjggLCBjbGFzcyBQMTY5ICwgY2xhc3MgUDE3MCAsIGNsYXNzIFAxNzEgLCBjbGFzcyBQMTcyICwgY2xhc3MgUDE3MyAsIGNsYXNzIFAxNzQgLCBjbGFzcyBQMTc1ICwgY2xhc3MgUDE3NiAsIGNsYXNzIFAxNzcgLCBjbGFzcyBQMTc4ICwgY2xhc3MgUDE3OSAsIGNsYXNzIFAxODAgLCBjbGFzcyBQMTgxICwgY2xhc3MgUDE4MiAsIGNsYXNzIFAxODMgLCBjbGFzcyBQMTg0ICwgY2xhc3MgUDE4NSAsIGNsYXNzIFAxODYgLCBjbGFzcyBQMTg3ICwgY2xhc3MgUDE4OCAsIGNsYXNzIFAxODkgLCBjbGFzcyBQMTkwICwgY2xhc3MgUDE5MSAsIGNsYXNzIFAxOTIgLCBjbGFzcyBQMTkzICwgY2xhc3MgUDE5NCAsIGNsYXNzIFAxOTUgLCBjbGFzcyBQMTk2ICwgY2xhc3MgUDE5NyAsIGNsYXNzIFAxOTggLCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IxOTk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODIgLCBQMTgzICwgUDE4NCAsIFAxODUgLCBQMTg2ICwgUDE4NyAsIFAxODggLCBQMTg5ICwgUDE5MCAsIFAxOTEgLCBQMTkyICwgUDE5MyAsIFAxOTQgLCBQMTk1ICwgUDE5NiAsIFAxOTcgLCBQMTk4PiwgVD4geyB0eXBlZGVmIG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IyMDA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3ICwgUDQ4ICwgUDQ5ICwgUDUwICwgUDUxICwgUDUyICwgUDUzICwgUDU0ICwgUDU1ICwgUDU2ICwgUDU3ICwgUDU4ICwgUDU5ICwgUDYwICwgUDYxICwgUDYyICwgUDYzICwgUDY0ICwgUDY1ICwgUDY2ICwgUDY3ICwgUDY4ICwgUDY5ICwgUDcwICwgUDcxICwgUDcyICwgUDczICwgUDc0ICwgUDc1ICwgUDc2ICwgUDc3ICwgUDc4ICwgUDc5ICwgUDgwICwgUDgxICwgUDgyICwgUDgzICwgUDg0ICwgUDg1ICwgUDg2ICwgUDg3ICwgUDg4ICwgUDg5ICwgUDkwICwgUDkxICwgUDkyICwgUDkzICwgUDk0ICwgUDk1ICwgUDk2ICwgUDk3ICwgUDk4ICwgUDk5ICwgUDEwMCAsIFAxMDEgLCBQMTAyICwgUDEwMyAsIFAxMDQgLCBQMTA1ICwgUDEwNiAsIFAxMDcgLCBQMTA4ICwgUDEwOSAsIFAxMTAgLCBQMTExICwgUDExMiAsIFAxMTMgLCBQMTE0ICwgUDExNSAsIFAxMTYgLCBQMTE3ICwgUDExOCAsIFAxMTkgLCBQMTIwICwgUDEyMSAsIFAxMjIgLCBQMTIzICwgUDEyNCAsIFAxMjUgLCBQMTI2ICwgUDEyNyAsIFAxMjggLCBQMTI5ICwgUDEzMCAsIFAxMzEgLCBQMTMyICwgUDEzMyAsIFAxMzQgLCBQMTM1ICwgUDEzNiAsIFAxMzcgLCBQMTM4ICwgUDEzOSAsIFAxNDAgLCBQMTQxICwgUDE0MiAsIFAxNDMgLCBQMTQ0ICwgUDE0NSAsIFAxNDYgLCBQMTQ3ICwgUDE0OCAsIFAxNDkgLCBQMTUwICwgUDE1MSAsIFAxNTIgLCBQMTUzICwgUDE1NCAsIFAxNTUgLCBQMTU2ICwgUDE1NyAsIFAxNTggLCBQMTU5ICwgUDE2MCAsIFAxNjEgLCBQMTYyICwgUDE2MyAsIFAxNjQgLCBQMTY1ICwgUDE2NiAsIFAxNjcgLCBQMTY4ICwgUDE2OSAsIFAxNzAgLCBQMTcxICwgUDE3MiAsIFAxNzMgLCBQMTc0ICwgUDE3NSAsIFAxNzYgLCBQMTc3ICwgUDE3OCAsIFAxNzkgLCBQMTgwICwgUDE4MSAsIFAxODIgLCBQMTgzICwgUDE4NCAsIFAxODUgLCBQMTg2ICwgUDE4NyAsIFAxODggLCBQMTg5ICwgUDE5MCAsIFAxOTEgLCBQMTkyICwgUDE5MyAsIFAxOTQgLCBQMTk1ICwgUDE5NiAsIFAxOTcgLCBQMTk4ICwgVCA+IHR5cGU7IH07Ci19fQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvdmVjdG9yNTAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC90eXBlb2YvdmVjdG9yNTAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMDQxY2U3Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdHlwZW9mL3ZlY3RvcjUwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE3MSArMCwwIEBACi0KLS8vIENvcHlyaWdodCAoQykgMjAwNSBBcmthZGl5IFZlcnRsZXliCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDUgUGVkZXIgSG9sdAotLy8KLS8vIFVzZSBtb2RpZmljYXRpb24gYW5kIGRpc3RyaWJ1dGlvbiBhcmUgc3ViamVjdCB0byB0aGUgYm9vc3QgU29mdHdhcmUgTGljZW5zZSwKLS8vIFZlcnNpb24gMS4wLiAoU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkuCi0KLS8vIFByZXByb2Nlc3NlZCBjb2RlLCBkbyBub3QgZWRpdCBtYW51YWxseSAhCi0KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIHR5cGVfb2YgewotICAgIHRlbXBsYXRlPGNsYXNzIFYsIGNsYXNzIEluY3JlYXNlX05ETkJPT1NUX1RZUEVPRl9MSU1JVF9TSVpFPiBzdHJ1Y3Qgdl9pdGVyOwotICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBWPiBzdHJ1Y3Qgdl9pdGVyPFYsIG1wbDo6aW50XzwwPiA+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+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+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgPiBzdHJ1Y3QgdmVjdG9yMSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjE8IFAwPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+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+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSA+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+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyID4gc3RydWN0IHZlY3RvcjMgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IzPCBQMCAsIFAxICwgUDI+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+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgPiBzdHJ1Y3QgdmVjdG9yNCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjQ8IFAwICwgUDEgLCBQMiAsIFAzPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+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+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCA+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+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ID4gc3RydWN0IHZlY3RvcjYgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I2PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDU+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+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgPiBzdHJ1Y3QgdmVjdG9yNyB7IHR5cGVkZWYgdl9pdGVyPHZlY3Rvcjc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+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+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyA+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+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ID4gc3RydWN0IHZlY3RvcjkgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDg+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+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgPiBzdHJ1Y3QgdmVjdG9yMTAgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDk+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+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCA+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+IGl0ZW05OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExID4gc3RydWN0IHZlY3RvcjEyIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+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+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgPiBzdHJ1Y3QgdmVjdG9yMTMgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxMzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTI+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+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyA+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+IGl0ZW05OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ID4gc3RydWN0IHZlY3RvcjE1IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+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+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgPiBzdHJ1Y3QgdmVjdG9yMTYgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxNjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTU+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+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiA+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+IGl0ZW05OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ID4gc3RydWN0IHZlY3RvcjE4IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMTg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+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+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggPiBzdHJ1Y3QgdmVjdG9yMTkgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IxOTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTg+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+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSA+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+IGl0ZW05OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwID4gc3RydWN0IHZlY3RvcjIxIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMjE8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+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+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgPiBzdHJ1Y3QgdmVjdG9yMjIgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IyMjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjE+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+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiA+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+IGl0ZW05OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzID4gc3RydWN0IHZlY3RvcjI0IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMjQ8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+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+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgPiBzdHJ1Y3QgdmVjdG9yMjUgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IyNTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQ+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+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSA+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+IGl0ZW05OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ID4gc3RydWN0IHZlY3RvcjI3IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMjc8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTI3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgPiBzdHJ1Y3QgdmVjdG9yMjggeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IyODwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjc+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+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCA+IHN0cnVjdCB2ZWN0b3IyOSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjI5PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ID4gc3RydWN0IHZlY3RvcjMwIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMzA8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgPiBzdHJ1Y3QgdmVjdG9yMzEgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IzMTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzA+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSA+IHN0cnVjdCB2ZWN0b3IzMiB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjMyPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zMzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyID4gc3RydWN0IHZlY3RvcjMzIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMzM8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTMzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgPiBzdHJ1Y3QgdmVjdG9yMzQgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IzNDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzM+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCA+IHN0cnVjdCB2ZWN0b3IzNSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjM1PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzND4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ID4gc3RydWN0IHZlY3RvcjM2IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMzY8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgPiBzdHJ1Y3QgdmVjdG9yMzcgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3IzNzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzY+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zNzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyA+IHN0cnVjdCB2ZWN0b3IzOCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjM4PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtMzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW0zOTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ID4gc3RydWN0IHZlY3RvcjM5IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yMzk8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTM5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgPiBzdHJ1Y3QgdmVjdG9yNDAgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I0MDwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzk+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCA+IHN0cnVjdCB2ZWN0b3I0MSB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjQxPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MD4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxID4gc3RydWN0IHZlY3RvcjQyIHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNDI8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxPiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgPiBzdHJ1Y3QgdmVjdG9yNDMgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I0MzwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDI+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyA+IHN0cnVjdCB2ZWN0b3I0NCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjQ0PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0Mz4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ID4gc3RydWN0IHZlY3RvcjQ1IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNDU8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgPiBzdHJ1Y3QgdmVjdG9yNDYgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I0NjwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDU+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiA+IHN0cnVjdCB2ZWN0b3I0NyB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjQ3PCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0Nj4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgfTsKLSAgICAgICAgdGVtcGxhdGU8IGNsYXNzIFAwICwgY2xhc3MgUDEgLCBjbGFzcyBQMiAsIGNsYXNzIFAzICwgY2xhc3MgUDQgLCBjbGFzcyBQNSAsIGNsYXNzIFA2ICwgY2xhc3MgUDcgLCBjbGFzcyBQOCAsIGNsYXNzIFA5ICwgY2xhc3MgUDEwICwgY2xhc3MgUDExICwgY2xhc3MgUDEyICwgY2xhc3MgUDEzICwgY2xhc3MgUDE0ICwgY2xhc3MgUDE1ICwgY2xhc3MgUDE2ICwgY2xhc3MgUDE3ICwgY2xhc3MgUDE4ICwgY2xhc3MgUDE5ICwgY2xhc3MgUDIwICwgY2xhc3MgUDIxICwgY2xhc3MgUDIyICwgY2xhc3MgUDIzICwgY2xhc3MgUDI0ICwgY2xhc3MgUDI1ICwgY2xhc3MgUDI2ICwgY2xhc3MgUDI3ICwgY2xhc3MgUDI4ICwgY2xhc3MgUDI5ICwgY2xhc3MgUDMwICwgY2xhc3MgUDMxICwgY2xhc3MgUDMyICwgY2xhc3MgUDMzICwgY2xhc3MgUDM0ICwgY2xhc3MgUDM1ICwgY2xhc3MgUDM2ICwgY2xhc3MgUDM3ICwgY2xhc3MgUDM4ICwgY2xhc3MgUDM5ICwgY2xhc3MgUDQwICwgY2xhc3MgUDQxICwgY2xhc3MgUDQyICwgY2xhc3MgUDQzICwgY2xhc3MgUDQ0ICwgY2xhc3MgUDQ1ICwgY2xhc3MgUDQ2ICwgY2xhc3MgUDQ3ID4gc3RydWN0IHZlY3RvcjQ4IHsgdHlwZWRlZiB2X2l0ZXI8dmVjdG9yNDg8IFAwICwgUDEgLCBQMiAsIFAzICwgUDQgLCBQNSAsIFA2ICwgUDcgLCBQOCAsIFA5ICwgUDEwICwgUDExICwgUDEyICwgUDEzICwgUDE0ICwgUDE1ICwgUDE2ICwgUDE3ICwgUDE4ICwgUDE5ICwgUDIwICwgUDIxICwgUDIyICwgUDIzICwgUDI0ICwgUDI1ICwgUDI2ICwgUDI3ICwgUDI4ICwgUDI5ICwgUDMwICwgUDMxICwgUDMyICwgUDMzICwgUDM0ICwgUDM1ICwgUDM2ICwgUDM3ICwgUDM4ICwgUDM5ICwgUDQwICwgUDQxICwgUDQyICwgUDQzICwgUDQ0ICwgUDQ1ICwgUDQ2ICwgUDQ3PiwgbmRuYm9vc3Q6Om1wbDo6aW50XzwwPiA+IGJlZ2luOyB0eXBlZGVmIFAwIGl0ZW0wOyB0eXBlZGVmIFAxIGl0ZW0xOyB0eXBlZGVmIFAyIGl0ZW0yOyB0eXBlZGVmIFAzIGl0ZW0zOyB0eXBlZGVmIFA0IGl0ZW00OyB0eXBlZGVmIFA1IGl0ZW01OyB0eXBlZGVmIFA2IGl0ZW02OyB0eXBlZGVmIFA3IGl0ZW03OyB0eXBlZGVmIFA4IGl0ZW04OyB0eXBlZGVmIFA5IGl0ZW05OyB0eXBlZGVmIFAxMCBpdGVtMTA7IHR5cGVkZWYgUDExIGl0ZW0xMTsgdHlwZWRlZiBQMTIgaXRlbTEyOyB0eXBlZGVmIFAxMyBpdGVtMTM7IHR5cGVkZWYgUDE0IGl0ZW0xNDsgdHlwZWRlZiBQMTUgaXRlbTE1OyB0eXBlZGVmIFAxNiBpdGVtMTY7IHR5cGVkZWYgUDE3IGl0ZW0xNzsgdHlwZWRlZiBQMTggaXRlbTE4OyB0eXBlZGVmIFAxOSBpdGVtMTk7IHR5cGVkZWYgUDIwIGl0ZW0yMDsgdHlwZWRlZiBQMjEgaXRlbTIxOyB0eXBlZGVmIFAyMiBpdGVtMjI7IHR5cGVkZWYgUDIzIGl0ZW0yMzsgdHlwZWRlZiBQMjQgaXRlbTI0OyB0eXBlZGVmIFAyNSBpdGVtMjU7IHR5cGVkZWYgUDI2IGl0ZW0yNjsgdHlwZWRlZiBQMjcgaXRlbTI3OyB0eXBlZGVmIFAyOCBpdGVtMjg7IHR5cGVkZWYgUDI5IGl0ZW0yOTsgdHlwZWRlZiBQMzAgaXRlbTMwOyB0eXBlZGVmIFAzMSBpdGVtMzE7IHR5cGVkZWYgUDMyIGl0ZW0zMjsgdHlwZWRlZiBQMzMgaXRlbTMzOyB0eXBlZGVmIFAzNCBpdGVtMzQ7IHR5cGVkZWYgUDM1IGl0ZW0zNTsgdHlwZWRlZiBQMzYgaXRlbTM2OyB0eXBlZGVmIFAzNyBpdGVtMzc7IHR5cGVkZWYgUDM4IGl0ZW0zODsgdHlwZWRlZiBQMzkgaXRlbTM5OyB0eXBlZGVmIFA0MCBpdGVtNDA7IHR5cGVkZWYgUDQxIGl0ZW00MTsgdHlwZWRlZiBQNDIgaXRlbTQyOyB0eXBlZGVmIFA0MyBpdGVtNDM7IHR5cGVkZWYgUDQ0IGl0ZW00NDsgdHlwZWRlZiBQNDUgaXRlbTQ1OyB0eXBlZGVmIFA0NiBpdGVtNDY7IHR5cGVkZWYgUDQ3IGl0ZW00NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTQ4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNDk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk5OyB9OwotICAgICAgICB0ZW1wbGF0ZTwgY2xhc3MgUDAgLCBjbGFzcyBQMSAsIGNsYXNzIFAyICwgY2xhc3MgUDMgLCBjbGFzcyBQNCAsIGNsYXNzIFA1ICwgY2xhc3MgUDYgLCBjbGFzcyBQNyAsIGNsYXNzIFA4ICwgY2xhc3MgUDkgLCBjbGFzcyBQMTAgLCBjbGFzcyBQMTEgLCBjbGFzcyBQMTIgLCBjbGFzcyBQMTMgLCBjbGFzcyBQMTQgLCBjbGFzcyBQMTUgLCBjbGFzcyBQMTYgLCBjbGFzcyBQMTcgLCBjbGFzcyBQMTggLCBjbGFzcyBQMTkgLCBjbGFzcyBQMjAgLCBjbGFzcyBQMjEgLCBjbGFzcyBQMjIgLCBjbGFzcyBQMjMgLCBjbGFzcyBQMjQgLCBjbGFzcyBQMjUgLCBjbGFzcyBQMjYgLCBjbGFzcyBQMjcgLCBjbGFzcyBQMjggLCBjbGFzcyBQMjkgLCBjbGFzcyBQMzAgLCBjbGFzcyBQMzEgLCBjbGFzcyBQMzIgLCBjbGFzcyBQMzMgLCBjbGFzcyBQMzQgLCBjbGFzcyBQMzUgLCBjbGFzcyBQMzYgLCBjbGFzcyBQMzcgLCBjbGFzcyBQMzggLCBjbGFzcyBQMzkgLCBjbGFzcyBQNDAgLCBjbGFzcyBQNDEgLCBjbGFzcyBQNDIgLCBjbGFzcyBQNDMgLCBjbGFzcyBQNDQgLCBjbGFzcyBQNDUgLCBjbGFzcyBQNDYgLCBjbGFzcyBQNDcgLCBjbGFzcyBQNDggPiBzdHJ1Y3QgdmVjdG9yNDkgeyB0eXBlZGVmIHZfaXRlcjx2ZWN0b3I0OTwgUDAgLCBQMSAsIFAyICwgUDMgLCBQNCAsIFA1ICwgUDYgLCBQNyAsIFA4ICwgUDkgLCBQMTAgLCBQMTEgLCBQMTIgLCBQMTMgLCBQMTQgLCBQMTUgLCBQMTYgLCBQMTcgLCBQMTggLCBQMTkgLCBQMjAgLCBQMjEgLCBQMjIgLCBQMjMgLCBQMjQgLCBQMjUgLCBQMjYgLCBQMjcgLCBQMjggLCBQMjkgLCBQMzAgLCBQMzEgLCBQMzIgLCBQMzMgLCBQMzQgLCBQMzUgLCBQMzYgLCBQMzcgLCBQMzggLCBQMzkgLCBQNDAgLCBQNDEgLCBQNDIgLCBQNDMgLCBQNDQgLCBQNDUgLCBQNDYgLCBQNDcgLCBQNDg+LCBuZG5ib29zdDo6bXBsOjppbnRfPDA+ID4gYmVnaW47IHR5cGVkZWYgUDAgaXRlbTA7IHR5cGVkZWYgUDEgaXRlbTE7IHR5cGVkZWYgUDIgaXRlbTI7IHR5cGVkZWYgUDMgaXRlbTM7IHR5cGVkZWYgUDQgaXRlbTQ7IHR5cGVkZWYgUDUgaXRlbTU7IHR5cGVkZWYgUDYgaXRlbTY7IHR5cGVkZWYgUDcgaXRlbTc7IHR5cGVkZWYgUDggaXRlbTg7IHR5cGVkZWYgUDkgaXRlbTk7IHR5cGVkZWYgUDEwIGl0ZW0xMDsgdHlwZWRlZiBQMTEgaXRlbTExOyB0eXBlZGVmIFAxMiBpdGVtMTI7IHR5cGVkZWYgUDEzIGl0ZW0xMzsgdHlwZWRlZiBQMTQgaXRlbTE0OyB0eXBlZGVmIFAxNSBpdGVtMTU7IHR5cGVkZWYgUDE2IGl0ZW0xNjsgdHlwZWRlZiBQMTcgaXRlbTE3OyB0eXBlZGVmIFAxOCBpdGVtMTg7IHR5cGVkZWYgUDE5IGl0ZW0xOTsgdHlwZWRlZiBQMjAgaXRlbTIwOyB0eXBlZGVmIFAyMSBpdGVtMjE7IHR5cGVkZWYgUDIyIGl0ZW0yMjsgdHlwZWRlZiBQMjMgaXRlbTIzOyB0eXBlZGVmIFAyNCBpdGVtMjQ7IHR5cGVkZWYgUDI1IGl0ZW0yNTsgdHlwZWRlZiBQMjYgaXRlbTI2OyB0eXBlZGVmIFAyNyBpdGVtMjc7IHR5cGVkZWYgUDI4IGl0ZW0yODsgdHlwZWRlZiBQMjkgaXRlbTI5OyB0eXBlZGVmIFAzMCBpdGVtMzA7IHR5cGVkZWYgUDMxIGl0ZW0zMTsgdHlwZWRlZiBQMzIgaXRlbTMyOyB0eXBlZGVmIFAzMyBpdGVtMzM7IHR5cGVkZWYgUDM0IGl0ZW0zNDsgdHlwZWRlZiBQMzUgaXRlbTM1OyB0eXBlZGVmIFAzNiBpdGVtMzY7IHR5cGVkZWYgUDM3IGl0ZW0zNzsgdHlwZWRlZiBQMzggaXRlbTM4OyB0eXBlZGVmIFAzOSBpdGVtMzk7IHR5cGVkZWYgUDQwIGl0ZW00MDsgdHlwZWRlZiBQNDEgaXRlbTQxOyB0eXBlZGVmIFA0MiBpdGVtNDI7IHR5cGVkZWYgUDQzIGl0ZW00MzsgdHlwZWRlZiBQNDQgaXRlbTQ0OyB0eXBlZGVmIFA0NSBpdGVtNDU7IHR5cGVkZWYgUDQ2IGl0ZW00NjsgdHlwZWRlZiBQNDcgaXRlbTQ3OyB0eXBlZGVmIFA0OCBpdGVtNDg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW00OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgzOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTk7IH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBQMCAsIGNsYXNzIFAxICwgY2xhc3MgUDIgLCBjbGFzcyBQMyAsIGNsYXNzIFA0ICwgY2xhc3MgUDUgLCBjbGFzcyBQNiAsIGNsYXNzIFA3ICwgY2xhc3MgUDggLCBjbGFzcyBQOSAsIGNsYXNzIFAxMCAsIGNsYXNzIFAxMSAsIGNsYXNzIFAxMiAsIGNsYXNzIFAxMyAsIGNsYXNzIFAxNCAsIGNsYXNzIFAxNSAsIGNsYXNzIFAxNiAsIGNsYXNzIFAxNyAsIGNsYXNzIFAxOCAsIGNsYXNzIFAxOSAsIGNsYXNzIFAyMCAsIGNsYXNzIFAyMSAsIGNsYXNzIFAyMiAsIGNsYXNzIFAyMyAsIGNsYXNzIFAyNCAsIGNsYXNzIFAyNSAsIGNsYXNzIFAyNiAsIGNsYXNzIFAyNyAsIGNsYXNzIFAyOCAsIGNsYXNzIFAyOSAsIGNsYXNzIFAzMCAsIGNsYXNzIFAzMSAsIGNsYXNzIFAzMiAsIGNsYXNzIFAzMyAsIGNsYXNzIFAzNCAsIGNsYXNzIFAzNSAsIGNsYXNzIFAzNiAsIGNsYXNzIFAzNyAsIGNsYXNzIFAzOCAsIGNsYXNzIFAzOSAsIGNsYXNzIFA0MCAsIGNsYXNzIFA0MSAsIGNsYXNzIFA0MiAsIGNsYXNzIFA0MyAsIGNsYXNzIFA0NCAsIGNsYXNzIFA0NSAsIGNsYXNzIFA0NiAsIGNsYXNzIFA0NyAsIGNsYXNzIFA0OCAsIGNsYXNzIFA0OSA+IHN0cnVjdCB2ZWN0b3I1MCB7IHR5cGVkZWYgdl9pdGVyPHZlY3RvcjUwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFA0OT4sIG5kbmJvb3N0OjptcGw6OmludF88MD4gPiBiZWdpbjsgdHlwZWRlZiBQMCBpdGVtMDsgdHlwZWRlZiBQMSBpdGVtMTsgdHlwZWRlZiBQMiBpdGVtMjsgdHlwZWRlZiBQMyBpdGVtMzsgdHlwZWRlZiBQNCBpdGVtNDsgdHlwZWRlZiBQNSBpdGVtNTsgdHlwZWRlZiBQNiBpdGVtNjsgdHlwZWRlZiBQNyBpdGVtNzsgdHlwZWRlZiBQOCBpdGVtODsgdHlwZWRlZiBQOSBpdGVtOTsgdHlwZWRlZiBQMTAgaXRlbTEwOyB0eXBlZGVmIFAxMSBpdGVtMTE7IHR5cGVkZWYgUDEyIGl0ZW0xMjsgdHlwZWRlZiBQMTMgaXRlbTEzOyB0eXBlZGVmIFAxNCBpdGVtMTQ7IHR5cGVkZWYgUDE1IGl0ZW0xNTsgdHlwZWRlZiBQMTYgaXRlbTE2OyB0eXBlZGVmIFAxNyBpdGVtMTc7IHR5cGVkZWYgUDE4IGl0ZW0xODsgdHlwZWRlZiBQMTkgaXRlbTE5OyB0eXBlZGVmIFAyMCBpdGVtMjA7IHR5cGVkZWYgUDIxIGl0ZW0yMTsgdHlwZWRlZiBQMjIgaXRlbTIyOyB0eXBlZGVmIFAyMyBpdGVtMjM7IHR5cGVkZWYgUDI0IGl0ZW0yNDsgdHlwZWRlZiBQMjUgaXRlbTI1OyB0eXBlZGVmIFAyNiBpdGVtMjY7IHR5cGVkZWYgUDI3IGl0ZW0yNzsgdHlwZWRlZiBQMjggaXRlbTI4OyB0eXBlZGVmIFAyOSBpdGVtMjk7IHR5cGVkZWYgUDMwIGl0ZW0zMDsgdHlwZWRlZiBQMzEgaXRlbTMxOyB0eXBlZGVmIFAzMiBpdGVtMzI7IHR5cGVkZWYgUDMzIGl0ZW0zMzsgdHlwZWRlZiBQMzQgaXRlbTM0OyB0eXBlZGVmIFAzNSBpdGVtMzU7IHR5cGVkZWYgUDM2IGl0ZW0zNjsgdHlwZWRlZiBQMzcgaXRlbTM3OyB0eXBlZGVmIFAzOCBpdGVtMzg7IHR5cGVkZWYgUDM5IGl0ZW0zOTsgdHlwZWRlZiBQNDAgaXRlbTQwOyB0eXBlZGVmIFA0MSBpdGVtNDE7IHR5cGVkZWYgUDQyIGl0ZW00MjsgdHlwZWRlZiBQNDMgaXRlbTQzOyB0eXBlZGVmIFA0NCBpdGVtNDQ7IHR5cGVkZWYgUDQ1IGl0ZW00NTsgdHlwZWRlZiBQNDYgaXRlbTQ2OyB0eXBlZGVmIFA0NyBpdGVtNDc7IHR5cGVkZWYgUDQ4IGl0ZW00ODsgdHlwZWRlZiBQNDkgaXRlbTQ5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTUyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW01NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTU4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNTk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTYxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTY3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNjg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW02OTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTcwOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzE7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03MjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTczOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzQ7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03NTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc2OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtNzc7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW03ODsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTc5OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODA7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04MTsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTgyOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODM7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg1OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODY7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW04NzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTg4OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtODk7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MDsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTkxOyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTI7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05MzsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk0OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTU7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05NjsgdHlwZWRlZiBtcGw6OmludF88MT4gaXRlbTk3OyB0eXBlZGVmIG1wbDo6aW50XzwxPiBpdGVtOTg7IHR5cGVkZWYgbXBsOjppbnRfPDE+IGl0ZW05OTsgfTsKLX19Ci1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgdHlwZV9vZiB7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgViwgY2xhc3MgVD4gc3RydWN0IHB1c2hfYmFjayB7Ci0gICAgICAgIHR5cGVkZWYgViB0eXBlOwotICAgIH07Ci0gICAgICAgIHRlbXBsYXRlPCBjbGFzcyBUPiBzdHJ1Y3QgcHVzaF9iYWNrPG5kbmJvb3N0Ojp0eXBlX29mOjp2ZWN0b3IwPD4sIFQ+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+LCBUPiB7IHR5cGVkZWYgbmRuYm9vc3Q6OnR5cGVfb2Y6OnZlY3RvcjUwPCBQMCAsIFAxICwgUDIgLCBQMyAsIFA0ICwgUDUgLCBQNiAsIFA3ICwgUDggLCBQOSAsIFAxMCAsIFAxMSAsIFAxMiAsIFAxMyAsIFAxNCAsIFAxNSAsIFAxNiAsIFAxNyAsIFAxOCAsIFAxOSAsIFAyMCAsIFAyMSAsIFAyMiAsIFAyMyAsIFAyNCAsIFAyNSAsIFAyNiAsIFAyNyAsIFAyOCAsIFAyOSAsIFAzMCAsIFAzMSAsIFAzMiAsIFAzMyAsIFAzNCAsIFAzNSAsIFAzNiAsIFAzNyAsIFAzOCAsIFAzOSAsIFA0MCAsIFA0MSAsIFA0MiAsIFA0MyAsIFA0NCAsIFA0NSAsIFA0NiAsIFA0NyAsIFA0OCAsIFQgPiB0eXBlOyB9OwotfX0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdW5pdHMvZGV0YWlsL3V0aWxpdHkuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC91bml0cy9kZXRhaWwvdXRpbGl0eS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRlZWViYzEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC91bml0cy9kZXRhaWwvdXRpbGl0eS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDQgKzAsMCBAQAotLy8gQm9vc3QuVW5pdHMgLSBBIEMrKyBsaWJyYXJ5IGZvciB6ZXJvLW92ZXJoZWFkIGRpbWVuc2lvbmFsIGFuYWx5c2lzIGFuZCAKLS8vIHVuaXQvcXVhbnRpdHkgbWFuaXB1bGF0aW9uIGFuZCBjb252ZXJzaW9uCi0vLwotLy8gQ29weXJpZ2h0IChDKSAyMDAzLTIwMDggTWF0dGhpYXMgQ2hyaXN0aWFuIFNjaGFiZWwKLS8vIENvcHlyaWdodCAoQykgMjAwOCBTdGV2ZW4gV2F0YW5hYmUKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpZm5kZWYgTkROQk9PU1RfVU5JVFNfVVRJTElUWV9IUFAKLSNkZWZpbmUgTkROQk9PU1RfVU5JVFNfVVRJTElUWV9IUFAKLQotI2luY2x1ZGUgPGNzdGRsaWI+Ci0jaW5jbHVkZSA8dHlwZWluZm8+Ci0jaW5jbHVkZSA8c3RyaW5nPgotCi0jaWYgZGVmaW5lZChfX0dMSUJDWFhfXykgfHwgZGVmaW5lZChfX0dMSUJDUFBfXykKLSNkZWZpbmUgTkROQk9PU1RfVU5JVFNfVVNFX0RFTUFOR0xJTkcKLSNpbmNsdWRlIDxjeHhhYmkuaD4KLSNlbmRpZiAvLyBfX0dOVUNfXwotCi0jaWZkZWYgTkROQk9PU1RfVU5JVFNfVVNFX0RFTUFOR0xJTkcKLQotI2luY2x1ZGUgPG5kbmJvb3N0L2FsZ29yaXRobS9zdHJpbmcvcmVwbGFjZS5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLW5hbWVzcGFjZSB1bml0cyB7Ci0KLW5hbWVzcGFjZSBkZXRhaWwgewotCi1pbmxpbmUKLXN0ZDo6c3RyaW5nCi1kZW1hbmdsZShjb25zdCBjaGFyKiBuYW1lKQotewotICAgIC8vIG5lZWQgdG8gZGVtYW5nbGUgQysrIHN5bWJvbHMKLSAgICBjaGFyKiAgICAgICByZWFsbmFtZTsKLSAgICBzdGQ6OnNpemVfdCBsZW47IAotICAgIGludCAgICAgICAgIHN0YXQ7Ci0gICAgIAotICAgIHJlYWxuYW1lID0gYWJpOjpfX2N4YV9kZW1hbmdsZShuYW1lLE5VTEwsJmxlbiwmc3RhdCk7Ci0gICAgCi0gICAgaWYgKHJlYWxuYW1lICE9IE5VTEwpCi0gICAgewotICAgICAgICBzdGQ6OnN0cmluZyAgIG91dChyZWFsbmFtZSk7Ci0gICAgICAgIAotICAgICAgICBzdGQ6OmZyZWUocmVhbG5hbWUpOwotICAgICAgICAKLSAgICAgICAgbmRuYm9vc3Q6OnJlcGxhY2VfYWxsKG91dCwibmRuYm9vc3Q6OnVuaXRzOjoiLCIiKTsKLSAgICAgICAgCi0gICAgICAgIHJldHVybiBvdXQ7Ci0gICAgfQotICAgIAotICAgIHJldHVybiBzdGQ6OnN0cmluZygiZGVtYW5nbGUgOjogZXJyb3IgLSB1bmFibGUgdG8gZGVtYW5nbGUgc3BlY2lmaWVkIHN5bWJvbCIpOwotfQotCi19IC8vIG5hbWVzcGFjZSBkZXRhaWwKLQotdGVtcGxhdGU8Y2xhc3MgTD4KLXN0ZDo6c3RyaW5nIHNpbXBsaWZ5X3R5cGVuYW1lKGNvbnN0IEwmIC8qc291cmNlKi8pCi17Ci0gICAgY29uc3Qgc3RkOjpzdHJpbmcgICBkZW1hbmdsZWQgPSBkZXRhaWw6OmRlbWFuZ2xlKHR5cGVpZChMKS5uYW1lKCkpOwotCi0gICAgcmV0dXJuIGRlbWFuZ2xlZDsKLX0KLQotfSAvLyBuYW1lc3BhY2UgdW5pdHMKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2Vsc2UgLy8gTkROQk9PU1RfVU5JVFNfVVNFX0RFTUFOR0xJTkcKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotbmFtZXNwYWNlIHVuaXRzIHsKLQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLWlubGluZQotc3RkOjpzdHJpbmcKLWRlbWFuZ2xlKGNvbnN0IGNoYXIqIG5hbWUpCi17Ci0gICAgcmV0dXJuIG5hbWU7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi10ZW1wbGF0ZTxjbGFzcyBMPgotc3RkOjpzdHJpbmcgc2ltcGxpZnlfdHlwZW5hbWUoY29uc3QgTCYgLypzb3VyY2UqLykKLXsKLSAgICByZXR1cm4gc3RkOjpzdHJpbmcodHlwZWlkKEwpLm5hbWUoKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIHVuaXRzCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLS8vIFRvIGdldCBzeXN0ZW0tc3BlY2lmaWMgcHJlZGVmaW5lZCBtYWNyb3M6Ci0vLyBnY2MgLWFyY2ggcHBjIC1kTSAtRSAtIDwgL2Rldi9udWxsIHwgc29ydCAKLQotI2VuZGlmIC8vIE5ETkJPT1NUX1VOSVRTX1VTRV9ERU1BTkdMSU5HCi0KLSNlbmRpZiAvLyBORE5CT09TVF9VTklUU19VVElMSVRZX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC91bm9yZGVyZWQvZGV0YWlsL2FsbG9jYXRlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdW5vcmRlcmVkL2RldGFpbC9hbGxvY2F0ZS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRkNmE4ZWQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC91bm9yZGVyZWQvZGV0YWlsL2FsbG9jYXRlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExMjAgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgMjAwNS0yMDExIERhbmllbCBKYW1lcy4KLS8vIENvcHlyaWdodCAyMDA5IFBhYmxvIEhhbHBlcm4uCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Vub3JkZXJlZCBmb3IgZG9jdW1lbnRhdGlvbgotCi0jaWZuZGVmIE5ETkJPT1NUX1VOT1JERVJFRF9BTExPQ0FURV9IUFAKLSNkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX0FMTE9DQVRFX0hQUAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Vub3JkZXJlZC9kZXRhaWwvZndkLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tb3ZlL21vdmUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pbmMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9kZWMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW0uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW1fcGFyYW1zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX2JpbmFyeV9wYXJhbXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL3JlcGVhdF9mcm9tX3RvLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jbGFzcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX2x2YWx1ZV9yZWZlcmVuY2UuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R1cGxlL3R1cGxlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC91dGlsaXR5L2VuYWJsZV9pZi5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdXRpbGl0eS9hZGRyZXNzb2YuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC9zZWxlY3RfdHlwZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvYXNzZXJ0LmhwcD4KLSNpbmNsdWRlIDx1dGlsaXR5PgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfSERSX1RVUExFKQotI2luY2x1ZGUgPHR1cGxlPgotI2VuZGlmCi0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpCi0jcHJhZ21hIHdhcm5pbmcocHVzaCkKLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQ1MTIpIC8vIGFzc2lnbm1lbnQgb3BlcmF0b3IgY291bGQgbm90IGJlIGdlbmVyYXRlZC4KLSNwcmFnbWEgd2FybmluZyhkaXNhYmxlOjQzNDUpIC8vIGJlaGF2aW9yIGNoYW5nZTogYW4gb2JqZWN0IG9mIFBPRCB0eXBlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25zdHJ1Y3RlZCB3aXRoIGFuIGluaXRpYWxpemVyIG9mIHRoZSBmb3JtICgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIGJlIGRlZmF1bHQtaW5pdGlhbGl6ZWQuCi0jZW5kaWYKLQotI2RlZmluZSBORE5CT09TVF9VTk9SREVSRURfRU1QTEFDRV9MSU1JVCAxMAotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgdW5vcmRlcmVkIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLSAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgLy8gQml0cyBhbmQgcGllY2VzIGZvciBpbXBsZW1lbnRpbmcgdHJhaXRzCi0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdHlwZW5hbWUgbmRuYm9vc3Q6OmFkZF9sdmFsdWVfcmVmZXJlbmNlPFQ+Ojp0eXBlIG1ha2UoKTsKLSAgICBzdHJ1Y3QgY2hvaWNlOSB7IHR5cGVkZWYgY2hhciAoJnR5cGUpWzldOyB9OwotICAgIHN0cnVjdCBjaG9pY2U4IDogY2hvaWNlOSB7IHR5cGVkZWYgY2hhciAoJnR5cGUpWzhdOyB9OwotICAgIHN0cnVjdCBjaG9pY2U3IDogY2hvaWNlOCB7IHR5cGVkZWYgY2hhciAoJnR5cGUpWzddOyB9OwotICAgIHN0cnVjdCBjaG9pY2U2IDogY2hvaWNlNyB7IHR5cGVkZWYgY2hhciAoJnR5cGUpWzZdOyB9OwotICAgIHN0cnVjdCBjaG9pY2U1IDogY2hvaWNlNiB7IHR5cGVkZWYgY2hhciAoJnR5cGUpWzVdOyB9OwotICAgIHN0cnVjdCBjaG9pY2U0IDogY2hvaWNlNSB7IHR5cGVkZWYgY2hhciAoJnR5cGUpWzRdOyB9OwotICAgIHN0cnVjdCBjaG9pY2UzIDogY2hvaWNlNCB7IHR5cGVkZWYgY2hhciAoJnR5cGUpWzNdOyB9OwotICAgIHN0cnVjdCBjaG9pY2UyIDogY2hvaWNlMyB7IHR5cGVkZWYgY2hhciAoJnR5cGUpWzJdOyB9OwotICAgIHN0cnVjdCBjaG9pY2UxIDogY2hvaWNlMiB7IHR5cGVkZWYgY2hhciAoJnR5cGUpWzFdOyB9OwotICAgIGNob2ljZTEgY2hvb3NlKCk7Ci0KLSAgICB0eXBlZGVmIGNob2ljZTE6OnR5cGUgeWVzX3R5cGU7Ci0gICAgdHlwZWRlZiBjaG9pY2UyOjp0eXBlIG5vX3R5cGU7Ci0KLSAgICBzdHJ1Y3QgcHJpdmF0ZV90eXBlCi0gICAgewotICAgICAgIHByaXZhdGVfdHlwZSBjb25zdCAmb3BlcmF0b3IsKGludCkgY29uc3Q7Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIG5vX3R5cGUgaXNfcHJpdmF0ZV90eXBlKFQgY29uc3QmKTsKLSAgICB5ZXNfdHlwZSBpc19wcml2YXRlX3R5cGUocHJpdmF0ZV90eXBlIGNvbnN0Jik7Ci0KLSAgICBzdHJ1Y3QgY29udmVydF9mcm9tX2FueXRoaW5nIHsKLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgICAgIGNvbnZlcnRfZnJvbV9hbnl0aGluZyhUIGNvbnN0Jik7Ci0gICAgfTsKLQotICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAvLyBlbXBsYWNlX2FyZ3MKLSAgICAvLwotICAgIC8vIEVpdGhlciBmb3J3YXJkaW5nIHZhcmlhZGljIGFyZ3VtZW50cywgb3Igc3RvcmluZyB0aGUgYXJndW1lbnRzIGluCi0gICAgLy8gZW1wbGFjZV9hcmdzIyNuCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19URU1QTEFURVMpCi0KLSNkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX0VNUExBQ0VfVEVNUExBVEUgdHlwZW5hbWUuLi4gQXJncwotI2RlZmluZSBORE5CT09TVF9VTk9SREVSRURfRU1QTEFDRV9BUkdTIE5ETkJPT1NUX0ZXRF9SRUYoQXJncykuLi4gYXJncwotI2RlZmluZSBORE5CT09TVF9VTk9SREVSRURfRU1QTEFDRV9GT1JXQVJEIG5kbmJvb3N0Ojpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uCi0KLSNkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX0VNUExBQ0VfQVJHUzEoYTApIGEwCi0jZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9FTVBMQUNFX0FSR1MyKGEwLCBhMSkgYTAsIGExCi0jZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9FTVBMQUNFX0FSR1MzKGEwLCBhMSwgYTIpIGEwLCBhMSwgYTIKLQotI2Vsc2UKLQotI2RlZmluZSBORE5CT09TVF9VTk9SREVSRURfRU1QTEFDRV9URU1QTEFURSB0eXBlbmFtZSBBcmdzCi0jZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9FTVBMQUNFX0FSR1MgQXJncyBjb25zdCYgYXJncwotI2RlZmluZSBORE5CT09TVF9VTk9SREVSRURfRU1QTEFDRV9GT1JXQVJEIGFyZ3MKLQotI2RlZmluZSBORE5CT09TVF9VTk9SREVSRURfRldEX1BBUkFNKHosIG4sIGEpIFwKLSAgICBORE5CT09TVF9GV0RfUkVGKE5ETkJPT1NUX1BQX0NBVChBLCBuKSkgTkROQk9PU1RfUFBfQ0FUKGEsIG4pCi0KLSNkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX0NBTExfRk9SV0FSRCh6LCBpLCBhKSBcCi0gICAgbmRuYm9vc3Q6OmZvcndhcmQ8TkROQk9PU1RfUFBfQ0FUKEEsaSk+KE5ETkJPT1NUX1BQX0NBVChhLGkpKQotCi0jZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9FQVJHUyh6LCBuLCBfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHRlbXBsYXRlIDxORE5CT09TVF9QUF9FTlVNX1BBUkFNU19aKHosIG4sIHR5cGVuYW1lIEEpPiAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBzdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKGVtcGxhY2VfYXJncywgbikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBORE5CT09TVF9QUF9SRVBFQVRfIyN6KG4sIE5ETkJPT1NUX1VOT1JERVJFRF9FQVJHU19NRU1CRVIsIF8pICAgICAgICAgICAgIFwKLSAgICAgICAgTkROQk9PU1RfUFBfQ0FUKGVtcGxhY2VfYXJncywgbikgKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBORE5CT09TVF9QUF9FTlVNX0JJTkFSWV9QQVJBTVNfWih6LCBuLCBBcmcsIGIpICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICApIDogTkROQk9PU1RfUFBfRU5VTV8jI3oobiwgTkROQk9PU1RfVU5PUkRFUkVEX0VBUkdTX0lOSVQsIF8pICAgICAgICAgICAgIFwKLSAgICAgICAge30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdGVtcGxhdGUgPE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TX1ooeiwgbiwgdHlwZW5hbWUgQSk+ICAgICAgICAgICAgICAgICAgICAgXAotICAgIGlubGluZSBORE5CT09TVF9QUF9DQVQoZW1wbGFjZV9hcmdzLCBuKSA8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVNfWih6LCBuLCBBKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgPiBjcmVhdGVfZW1wbGFjZV9hcmdzKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBORE5CT09TVF9QUF9FTlVNXyMjeihuLCBORE5CT09TVF9VTk9SREVSRURfRldEX1BBUkFNLCBiKSAgICAgICAgICAgICAgICAgIFwKLSAgICApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBORE5CT09TVF9QUF9DQVQoZW1wbGFjZV9hcmdzLCBuKSA8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TX1ooeiwgbiwgQSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgID4gZShORE5CT09TVF9QUF9FTlVNX1BBUkFNU19aKHosIG4sIGIpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICByZXR1cm4gZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9Ci0KLSNkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX0VNUExBQ0VfQVJHUzEgY3JlYXRlX2VtcGxhY2VfYXJncwotI2RlZmluZSBORE5CT09TVF9VTk9SREVSRURfRU1QTEFDRV9BUkdTMiBjcmVhdGVfZW1wbGFjZV9hcmdzCi0jZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9FTVBMQUNFX0FSR1MzIGNyZWF0ZV9lbXBsYWNlX2FyZ3MKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMpCi0KLSNkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX0VBUkdTX01FTUJFUih6LCBuLCBfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdHlwZWRlZiBORE5CT09TVF9GV0RfUkVGKE5ETkJPT1NUX1BQX0NBVChBLCBuKSkgTkROQk9PU1RfUFBfQ0FUKEFyZywgbik7ICAgICAgICAgXAotICAgIE5ETkJPT1NUX1BQX0NBVChBcmcsIG4pIE5ETkJPT1NUX1BQX0NBVChhLCBuKTsKLQotI2RlZmluZSBORE5CT09TVF9VTk9SREVSRURfRUFSR1NfSU5JVCh6LCBuLCBfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBORE5CT09TVF9QUF9DQVQoYSwgbikoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIG5kbmJvb3N0Ojpmb3J3YXJkPE5ETkJPT1NUX1BQX0NBVChBLG4pPihORE5CT09TVF9QUF9DQVQoYiwgbikpKQotCi0jZWxzZQotCi0jZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9FQVJHU19NRU1CRVIoeiwgbiwgXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmFkZF9sdmFsdWVfcmVmZXJlbmNlPE5ETkJPT1NUX1BQX0NBVChBLCBuKT46OnR5cGUgIFwKLSAgICAgICAgTkROQk9PU1RfUFBfQ0FUKEFyZywgbik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgTkROQk9PU1RfUFBfQ0FUKEFyZywgbikgTkROQk9PU1RfUFBfQ0FUKGEsIG4pOwotCi0jZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9FQVJHU19JTklUKHosIG4sIF8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIE5ETkJPT1NUX1BQX0NBVChhLCBuKShORE5CT09TVF9QUF9DQVQoYiwgbikpCi0KLSNlbmRpZgotCi1ORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UTygxLCBORE5CT09TVF9VTk9SREVSRURfRU1QTEFDRV9MSU1JVCwgTkROQk9PU1RfVU5PUkRFUkVEX0VBUkdTLAotICAgIF8pCi0KLSN1bmRlZiBORE5CT09TVF9VTk9SREVSRURfREVGSU5FX0VNUExBQ0VfQVJHUwotI3VuZGVmIE5ETkJPT1NUX1VOT1JERVJFRF9FQVJHU19NRU1CRVIKLSN1bmRlZiBORE5CT09TVF9VTk9SREVSRURfRUFSR1NfSU5JVAotCi0jZW5kaWYKLQotfX19Ci0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLwotLy8gUGljayB3aGljaCB2ZXJzaW9uIG9mIGFsbG9jYXRvcl90cmFpdHMgdG8gdXNlCi0vLwotLy8gMCA9IE93biBwYXJ0aWFsIGltcGxlbWVudGF0aW9uCi0vLyAxID0gc3RkOjphbGxvY2F0b3JfdHJhaXRzCi0vLyAyID0gbmRuYm9vc3Q6OmNvbnRhaW5lcjo6YWxsb2NhdG9yX3RyYWl0cwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfVU5PUkRFUkVEX1VTRV9BTExPQ0FUT1JfVFJBSVRTKQotIyAgIGlmIGRlZmluZWQoX19HWFhfRVhQRVJJTUVOVEFMX0NYWDBYX18pICYmIFwKLSAgICAgICAgICAgIChfX0dOVUNfXyA+IDQgfHwgKF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPj0gNykpCi0jICAgICAgIGRlZmluZSBORE5CT09TVF9VTk9SREVSRURfVVNFX0FMTE9DQVRPUl9UUkFJVFMgMAotIyAgIGVsaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKQotIyAgICAgICBpZiBORE5CT09TVF9NU1ZDIDwgMTQwMAotICAgICAgICAgICAgLy8gVXNlIGNvbnRhaW5lcidzIGFsbG9jYXRvcl90cmFpdHMgZm9yIG9sZGVyIHZlcnNpb25zIG9mIFZpc3VhbAotICAgICAgICAgICAgLy8gQysrIGFzIEkgZG9uJ3QgdGVzdCB3aXRoIHRoZW0uCi0jICAgICAgICAgICBkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX1VTRV9BTExPQ0FUT1JfVFJBSVRTIDIKLSMgICAgICAgZW5kaWYKLSMgICBlbmRpZgotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9VTk9SREVSRURfVVNFX0FMTE9DQVRPUl9UUkFJVFMpCi0jICAgZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9VU0VfQUxMT0NBVE9SX1RSQUlUUyAwCi0jZW5kaWYKLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vCi0vLyBTb21lIHV0aWxpdGllcyBmb3IgaW1wbGVtZW50aW5nIGFsbG9jYXRvcl90cmFpdHMsIGJ1dCB1c2VmdWwgZWxzZXdoZXJlIHNvCi0vLyB0aGV5J3JlIGFsd2F5cyBkZWZpbmVkLgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfSERSX1RZUEVfVFJBSVRTKQotIyAgaW5jbHVkZSA8dHlwZV90cmFpdHM+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIHVub3JkZXJlZCB7IG5hbWVzcGFjZSBkZXRhaWwgewotCi0gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgIC8vIEludGVncmFsX2NvbnN0cmFudCwgdHJ1ZV90eXBlLCBmYWxzZV90eXBlCi0gICAgLy8KLSAgICAvLyBVc2VzIHRoZSBzdGFuZGFyZCB2ZXJzaW9ucyBpZiBhdmFpbGFibGUuCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9IRFJfVFlQRV9UUkFJVFMpCi0KLSAgICB1c2luZyBzdGQ6OmludGVncmFsX2NvbnN0YW50OwotICAgIHVzaW5nIHN0ZDo6dHJ1ZV90eXBlOwotICAgIHVzaW5nIHN0ZDo6ZmFsc2VfdHlwZTsKLQotI2Vsc2UKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCBUIFZhbHVlPgotICAgIHN0cnVjdCBpbnRlZ3JhbF9jb25zdGFudCB7IGVudW0geyB2YWx1ZSA9IFZhbHVlIH07IH07Ci0KLSAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6aW50ZWdyYWxfY29uc3RhbnQ8Ym9vbCwgdHJ1ZT4gdHJ1ZV90eXBlOwotICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjppbnRlZ3JhbF9jb25zdGFudDxib29sLCBmYWxzZT4gZmFsc2VfdHlwZTsKLQotI2VuZGlmCi0KLSAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgLy8gRXhwbGljaXRseSBjYWxsIGEgZGVzdHJ1Y3RvcgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKQotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MTAwKSAvLyB1bnJlZmVyZW5jZWQgZm9ybWFsIHBhcmFtZXRlcgotI2VuZGlmCi0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgICBpbmxpbmUgdm9pZCBkZXN0cm95KFQqIHgpIHsKLSAgICAgICAgeC0+flQoKTsKLSAgICB9Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLSAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgLy8gRXhwcmVzc2lvbiB0ZXN0IG1lY2hhbmlzbQotICAgIC8vCi0gICAgLy8gV2hlbiBTRklOQUUgZXhwcmVzc2lvbnMgYXJlIGF2YWlsYWJsZSwgZGVmaW5lCi0gICAgLy8gTkROQk9PU1RfVU5PUkRFUkVEX0hBU19GVU5DVElPTiB3aGljaCBjYW4gY2hlY2sgaWYgYSBmdW5jdGlvbiBjYWxsIGlzCi0gICAgLy8gc3VwcG9ydGVkIGJ5IGEgY2xhc3MsIG90aGVyd2lzZSBkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX0hBU19NRU1CRVIgd2hpY2gKLSAgICAvLyBjYW4gZGV0ZWN0IGlmIGEgY2xhc3MgaGFzIHRoZSBzcGVjaWZpZWQgbWVtYmVyLCBidXQgbm90IHRoYXQgaXQgaGFzIHRoZQotICAgIC8vIGNvcnJlY3QgdHlwZSwgdGhpcyBpcyBnb29kIGVub3VnaCBmb3IgYSBwYXNzYWJsZSBpbXByZXNzaW9uIG9mCi0gICAgLy8gYWxsb2NhdG9yX3RyYWl0cy4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX1NGSU5BRV9FWFBSKQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHVuc2lnbmVkIGludD4gc3RydWN0IGV4cHJfdGVzdDsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IGV4cHJfdGVzdDxULCBzaXplb2YoY2hhcik+IDogVCB7fTsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4gc3RhdGljIGNoYXIgZm9yX2V4cHJfdGVzdChVIGNvbnN0Jik7Ci0KLSMgICBkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX0NIRUNLX0VYUFJFU1NJT04oY291bnQsIHJlc3VsdCwgZXhwcmVzc2lvbikgICAgICBcCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBVPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBzdGF0aWMgdHlwZW5hbWUgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpleHByX3Rlc3Q8ICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIE5ETkJPT1NUX1BQX0NBVChjaG9pY2UsIHJlc3VsdCksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBzaXplb2YobmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpmb3JfZXhwcl90ZXN0KCggICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgIChleHByZXNzaW9uKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIDApKSk+Ojp0eXBlIHRlc3QoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBORE5CT09TVF9QUF9DQVQoY2hvaWNlLCBjb3VudCkpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX0RFRkFVTFRfRVhQUkVTU0lPTihjb3VudCwgcmVzdWx0KSAgICAgICAgICAgICAgICBcCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBVPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBzdGF0aWMgTkROQk9PU1RfUFBfQ0FUKGNob2ljZSwgcmVzdWx0KTo6dHlwZSB0ZXN0KCAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIE5ETkJPT1NUX1BQX0NBVChjaG9pY2UsIGNvdW50KSkKLQotIyAgIGRlZmluZSBORE5CT09TVF9VTk9SREVSRURfSEFTX0ZVTkNUSU9OKG5hbWUsIHRoaW5nLCBhcmdzLCBfKSAgICAgICAgICAgICAgIFwKLSAgICBzdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKGhhc18sIG5hbWUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBORE5CT09TVF9VTk9SREVSRURfQ0hFQ0tfRVhQUkVTU0lPTigxLCAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6bWFrZTwgdGhpbmcgPigpLm5hbWUgYXJncyk7ICAgICAgICAgICBcCi0gICAgICAgIE5ETkJPT1NUX1VOT1JERVJFRF9ERUZBVUxUX0VYUFJFU1NJT04oMiwgMik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgZW51bSB7IHZhbHVlID0gc2l6ZW9mKHRlc3Q8VD4oY2hvb3NlKCkpKSA9PSBzaXplb2YoY2hvaWNlMTo6dHlwZSkgfTtcCi0gICAgfQotCi0jZWxzZQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBpZGVudGl0eSB7IHR5cGVkZWYgVCB0eXBlOyB9OwotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9DSEVDS19NRU1CRVIoY291bnQsIHJlc3VsdCwgbmFtZSwgbWVtYmVyKSAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6aWRlbnRpdHk8bWVtYmVyPjo6dHlwZSAgICAgICBcCi0gICAgICAgIE5ETkJPT1NUX1BQX0NBVChjaGVjaywgY291bnQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB0ZW1wbGF0ZSA8TkROQk9PU1RfUFBfQ0FUKGNoZWNrLCBjb3VudCkgZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgc3RydWN0IE5ETkJPT1NUX1BQX0NBVCh0ZXN0LCBjb3VudCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1BQX0NBVChjaG9pY2UsIHJlc3VsdCkgdHlwZTsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHRlbXBsYXRlIDxjbGFzcyBVPiBzdGF0aWMgdHlwZW5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgTkROQk9PU1RfUFBfQ0FUKHRlc3QsIGNvdW50KTwmVTo6bmFtZT46OnR5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHRlc3QoTkROQk9PU1RfUFBfQ0FUKGNob2ljZSwgY291bnQpKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9ERUZBVUxUX01FTUJFUihjb3VudCwgcmVzdWx0KSAgICAgICAgICAgICAgICAgICAgXAotICAgIHRlbXBsYXRlIDxjbGFzcyBVPiBzdGF0aWMgTkROQk9PU1RfUFBfQ0FUKGNob2ljZSwgcmVzdWx0KTo6dHlwZSAgICAgICAgICAgIFwKLSAgICAgICAgdGVzdChORE5CT09TVF9QUF9DQVQoY2hvaWNlLCBjb3VudCkpCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX0hBU19NRU1CRVIobmFtZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgc3RydWN0IE5ETkJPT1NUX1BQX0NBVChoYXNfLCBuYW1lKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgc3RydWN0IGltcGwgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBzdHJ1Y3QgYmFzZV9taXhpbiB7IGludCBuYW1lOyB9OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgc3RydWN0IGJhc2UgOiBwdWJsaWMgVCwgcHVibGljIGJhc2VfbWl4aW4ge307ICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBORE5CT09TVF9VTk9SREVSRURfQ0hFQ0tfTUVNQkVSKDEsIDEsIG5hbWUsIGludCBiYXNlX21peGluOjoqKTsgICAgXAotICAgICAgICAgICAgTkROQk9PU1RfVU5PUkRFUkVEX0RFRkFVTFRfTUVNQkVSKDIsIDIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBlbnVtIHsgdmFsdWUgPSBzaXplb2YoY2hvaWNlMjo6dHlwZSkgPT0gICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgIHNpemVvZih0ZXN0PGJhc2U+KGNob29zZSgpKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIH07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIH07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgZW51bSB7IHZhbHVlID0gaW1wbDo6dmFsdWUgfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfQotCi0jZW5kaWYKLQotfX19Ci0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLwotLy8gQWxsb2NhdG9yIHRyYWl0cwotLy8KLS8vIEZpcnN0IG91ciBpbXBsZW1lbnRhdGlvbiwgdGhlbiBsYXRlciBsaWdodCB3cmFwcGVycyBhcm91bmQgdGhlIGFsdGVybmF0aXZlcwotCi0jaWYgTkROQk9PU1RfVU5PUkRFUkVEX1VTRV9BTExPQ0FUT1JfVFJBSVRTID09IDAKLQotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L2xpbWl0cy5ocHA+Ci0jICAgaW5jbHVkZSA8bmRuYm9vc3QvdXRpbGl0eS9lbmFibGVfaWYuaHBwPgotIyAgIGluY2x1ZGUgPG5kbmJvb3N0L3BvaW50ZXJfdG9fb3RoZXIuaHBwPgotIyAgIGlmIGRlZmluZWQoTkROQk9PU1RfTk9fU0ZJTkFFX0VYUFIpCi0jICAgICAgIGluY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX3NhbWUuaHBwPgotIyAgIGVuZGlmCi0KLSMgICBpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19URU1QTEFURVMpICYmIFwKLSAgICAgICAgIWRlZmluZWQoTkROQk9PU1RfTk9fU0ZJTkFFX0VYUFIpCi0jICAgICAgIGRlZmluZSBORE5CT09TVF9VTk9SREVSRURfREVUQUlMX0ZVTExfQ09OU1RSVUNUIDEKLSMgICBlbHNlCi0jICAgICAgIGRlZmluZSBORE5CT09TVF9VTk9SREVSRURfREVUQUlMX0ZVTExfQ09OU1RSVUNUIDAKLSMgICBlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgdW5vcmRlcmVkIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLSAgICAvLyBUT0RPOiBEb2VzIHRoaXMgbWF0Y2ggc3RkOjphbGxvY2F0b3JfdHJhaXRzPEFsbG9jPjo6cmViaW5kX2FsbG9jPFQ+PwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBbGxvYywgdHlwZW5hbWUgVD4KLSAgICBzdHJ1Y3QgcmViaW5kX3dyYXAKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgQWxsb2M6Ok5ETkJPT1NUX05FU1RFRF9URU1QTEFURSByZWJpbmQ8VD46Om90aGVyIHR5cGU7Ci0gICAgfTsKLQotIyAgIGlmIGRlZmluZWQoTkROQk9PU1RfTVNWQykgJiYgTkROQk9PU1RfTVNWQyA8PSAxNDAwCi0KLSMgICAgICAgZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9ERUZBVUxUX1RZUEVfVE1QTFQodG5hbWUpICAgICAgICAgICAgICAgICAgICBcCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFRwLCB0eXBlbmFtZSBEZWZhdWx0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHN0cnVjdCBkZWZhdWx0X3R5cGVfICMjIHRuYW1lIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBYPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBzdGF0aWMgY2hvaWNlMTo6dHlwZSB0ZXN0KGNob2ljZTEsIHR5cGVuYW1lIFg6OnRuYW1lKiA9IDApOyAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBYPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBzdGF0aWMgY2hvaWNlMjo6dHlwZSB0ZXN0KGNob2ljZTIsIHZvaWQqID0gMCk7ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHN0cnVjdCBEZWZhdWx0V3JhcCB7IHR5cGVkZWYgRGVmYXVsdCB0bmFtZTsgfTsgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgZW51bSB7IHZhbHVlID0gKDEgPT0gc2l6ZW9mKHRlc3Q8VHA+KGNob29zZSgpKSkpIH07ICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0OjpkZXRhaWw6OmlmX3RydWU8dmFsdWU+OjogICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIE5ETkJPT1NUX05FU1RFRF9URU1QTEFURSB0aGVuPFRwLCBEZWZhdWx0V3JhcD4gICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICA6OnR5cGU6OnRuYW1lIHR5cGU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0KLQotIyAgIGVsc2UKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBUMj4KLSAgICBzdHJ1Y3Qgc2ZpbmFlIDogVDIge307Ci0KLSMgICAgICAgZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9ERUZBVUxUX1RZUEVfVE1QTFQodG5hbWUpICAgICAgICAgICAgICAgICAgICBcCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFRwLCB0eXBlbmFtZSBEZWZhdWx0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHN0cnVjdCBkZWZhdWx0X3R5cGVfICMjIHRuYW1lIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBYPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBzdGF0aWMgdHlwZW5hbWUgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpzZmluYWU8ICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBYOjp0bmFtZSwgY2hvaWNlMT46OnR5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICB0ZXN0KGNob2ljZTEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFg+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHN0YXRpYyBjaG9pY2UyOjp0eXBlIHRlc3QoY2hvaWNlMik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgc3RydWN0IERlZmF1bHRXcmFwIHsgdHlwZWRlZiBEZWZhdWx0IHRuYW1lOyB9OyAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBlbnVtIHsgdmFsdWUgPSAoMSA9PSBzaXplb2YodGVzdDxUcD4oY2hvb3NlKCkpKSkgfTsgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6aWZfdHJ1ZTx2YWx1ZT46OiAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgTkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFIHRoZW48VHAsIERlZmF1bHRXcmFwPiAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIDo6dHlwZTo6dG5hbWUgdHlwZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfQotCi0jICAgZW5kaWYKLQotIyAgIGRlZmluZSBORE5CT09TVF9VTk9SREVSRURfREVGQVVMVF9UWVBFKFQsdG5hbWUsIGFyZykgICAgICAgICAgICAgICAgICAgXAotICAgIHR5cGVuYW1lIGRlZmF1bHRfdHlwZV8gIyMgdG5hbWU8VCwgYXJnPjo6dHlwZQotCi0gICAgTkROQk9PU1RfVU5PUkRFUkVEX0RFRkFVTFRfVFlQRV9UTVBMVChwb2ludGVyKTsKLSAgICBORE5CT09TVF9VTk9SREVSRURfREVGQVVMVF9UWVBFX1RNUExUKGNvbnN0X3BvaW50ZXIpOwotICAgIE5ETkJPT1NUX1VOT1JERVJFRF9ERUZBVUxUX1RZUEVfVE1QTFQodm9pZF9wb2ludGVyKTsKLSAgICBORE5CT09TVF9VTk9SREVSRURfREVGQVVMVF9UWVBFX1RNUExUKGNvbnN0X3ZvaWRfcG9pbnRlcik7Ci0gICAgTkROQk9PU1RfVU5PUkRFUkVEX0RFRkFVTFRfVFlQRV9UTVBMVChkaWZmZXJlbmNlX3R5cGUpOwotICAgIE5ETkJPT1NUX1VOT1JERVJFRF9ERUZBVUxUX1RZUEVfVE1QTFQoc2l6ZV90eXBlKTsKLSAgICBORE5CT09TVF9VTk9SREVSRURfREVGQVVMVF9UWVBFX1RNUExUKHByb3BhZ2F0ZV9vbl9jb250YWluZXJfY29weV9hc3NpZ25tZW50KTsKLSAgICBORE5CT09TVF9VTk9SREVSRURfREVGQVVMVF9UWVBFX1RNUExUKHByb3BhZ2F0ZV9vbl9jb250YWluZXJfbW92ZV9hc3NpZ25tZW50KTsKLSAgICBORE5CT09TVF9VTk9SREVSRURfREVGQVVMVF9UWVBFX1RNUExUKHByb3BhZ2F0ZV9vbl9jb250YWluZXJfc3dhcCk7Ci0KLSMgICBpZiAhZGVmaW5lZChORE5CT09TVF9OT19TRklOQUVfRVhQUikKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIE5ETkJPT1NUX1VOT1JERVJFRF9IQVNfRlVOQ1RJT04oCi0gICAgICAgIHNlbGVjdF9vbl9jb250YWluZXJfY29weV9jb25zdHJ1Y3Rpb24sIFUgY29uc3QsICgpLCAwCi0gICAgKTsKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIE5ETkJPT1NUX1VOT1JERVJFRF9IQVNfRlVOQ1RJT04oCi0gICAgICAgIG1heF9zaXplLCBVIGNvbnN0LCAoKSwgMAotICAgICk7Ci0KLSMgICAgICAgaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfVEVNUExBVEVTKQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFZhbHVlVHlwZSwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICBORE5CT09TVF9VTk9SREVSRURfSEFTX0ZVTkNUSU9OKAotICAgIGNvbnN0cnVjdCwgVSwgKAotICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6Om1ha2U8VmFsdWVUeXBlKj4oKSwKLSAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjptYWtlPEFyZ3MgY29uc3Q+KCkuLi4pLCAyCi0gICAgKTsKLQotIyAgICAgICBlbHNlCi0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVmFsdWVUeXBlPgotICAgIE5ETkJPT1NUX1VOT1JERVJFRF9IQVNfRlVOQ1RJT04oCi0gICAgY29uc3RydWN0LCBVLCAoCi0gICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6bWFrZTxWYWx1ZVR5cGUqPigpLAotICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6Om1ha2U8VmFsdWVUeXBlIGNvbnN0PigpKSwgMgotICAgICk7Ci0KLSMgICAgICAgZW5kaWYKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBWYWx1ZVR5cGU+Ci0gICAgTkROQk9PU1RfVU5PUkRFUkVEX0hBU19GVU5DVElPTigKLSAgICAgICAgZGVzdHJveSwgVSwgKG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6bWFrZTxWYWx1ZVR5cGUqPigpKSwgMQotICAgICk7Ci0KLSMgICBlbHNlCi0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICBORE5CT09TVF9VTk9SREVSRURfSEFTX01FTUJFUihzZWxlY3Rfb25fY29udGFpbmVyX2NvcHlfY29uc3RydWN0aW9uKTsKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIE5ETkJPT1NUX1VOT1JERVJFRF9IQVNfTUVNQkVSKG1heF9zaXplKTsKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBWYWx1ZVR5cGU+Ci0gICAgTkROQk9PU1RfVU5PUkRFUkVEX0hBU19NRU1CRVIoY29uc3RydWN0KTsKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBWYWx1ZVR5cGU+Ci0gICAgTkROQk9PU1RfVU5PUkRFUkVEX0hBU19NRU1CRVIoZGVzdHJveSk7Ci0KLSMgICBlbmRpZgotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEFsbG9jPgotICAgIGlubGluZSBBbGxvYyBjYWxsX3NlbGVjdF9vbl9jb250YWluZXJfY29weV9jb25zdHJ1Y3Rpb24oY29uc3QgQWxsb2MmIHJocywKLSAgICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OmVuYWJsZV9pZl9jPAotICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjoKLSAgICAgICAgICAgIGhhc19zZWxlY3Rfb25fY29udGFpbmVyX2NvcHlfY29uc3RydWN0aW9uPEFsbG9jPjo6dmFsdWUsIHZvaWQqCi0gICAgICAgID46OnR5cGUgPSAwKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHJocy5zZWxlY3Rfb25fY29udGFpbmVyX2NvcHlfY29uc3RydWN0aW9uKCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEFsbG9jPgotICAgIGlubGluZSBBbGxvYyBjYWxsX3NlbGVjdF9vbl9jb250YWluZXJfY29weV9jb25zdHJ1Y3Rpb24oY29uc3QgQWxsb2MmIHJocywKLSAgICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OmRpc2FibGVfaWZfYzwKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6Ci0gICAgICAgICAgICBoYXNfc2VsZWN0X29uX2NvbnRhaW5lcl9jb3B5X2NvbnN0cnVjdGlvbjxBbGxvYz46OnZhbHVlLCB2b2lkKgotICAgICAgICA+Ojp0eXBlID0gMCkKLSAgICB7Ci0gICAgICAgIHJldHVybiByaHM7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFNpemVUeXBlLCB0eXBlbmFtZSBBbGxvYz4KLSAgICBpbmxpbmUgU2l6ZVR5cGUgY2FsbF9tYXhfc2l6ZShjb25zdCBBbGxvYyYgYSwKLSAgICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OmVuYWJsZV9pZl9jPAotICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpoYXNfbWF4X3NpemU8QWxsb2M+Ojp2YWx1ZSwgdm9pZCoKLSAgICAgICAgPjo6dHlwZSA9IDApCi0gICAgewotICAgICAgICByZXR1cm4gYS5tYXhfc2l6ZSgpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBTaXplVHlwZSwgdHlwZW5hbWUgQWxsb2M+Ci0gICAgaW5saW5lIFNpemVUeXBlIGNhbGxfbWF4X3NpemUoY29uc3QgQWxsb2MmLCB0eXBlbmFtZSBuZG5ib29zdDo6ZGlzYWJsZV9pZl9jPAotICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpoYXNfbWF4X3NpemU8QWxsb2M+Ojp2YWx1ZSwgdm9pZCoKLSAgICAgICAgPjo6dHlwZSA9IDApCi0gICAgewotICAgICAgICByZXR1cm4gKHN0ZDo6bnVtZXJpY19saW1pdHM8U2l6ZVR5cGU+OjptYXgpKCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEFsbG9jPgotICAgIHN0cnVjdCBhbGxvY2F0b3JfdHJhaXRzCi0gICAgewotICAgICAgICB0eXBlZGVmIEFsbG9jIGFsbG9jYXRvcl90eXBlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIEFsbG9jOjp2YWx1ZV90eXBlIHZhbHVlX3R5cGU7Ci0KLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9VTk9SREVSRURfREVGQVVMVF9UWVBFKEFsbG9jLCBwb2ludGVyLCB2YWx1ZV90eXBlKikKLSAgICAgICAgICAgIHBvaW50ZXI7Ci0KLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgICAgIHN0cnVjdCBwb2ludGVyX3RvX290aGVyIDogbmRuYm9vc3Q6OnBvaW50ZXJfdG9fb3RoZXI8cG9pbnRlciwgVD4ge307Ci0KLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9VTk9SREVSRURfREVGQVVMVF9UWVBFKEFsbG9jLCBjb25zdF9wb2ludGVyLAotICAgICAgICAgICAgdHlwZW5hbWUgcG9pbnRlcl90b19vdGhlcjxjb25zdCB2YWx1ZV90eXBlPjo6dHlwZSkKLSAgICAgICAgICAgIGNvbnN0X3BvaW50ZXI7Ci0KLSAgICAgICAgLy90eXBlZGVmIE5ETkJPT1NUX1VOT1JERVJFRF9ERUZBVUxUX1RZUEUoQWxsb2MsIHZvaWRfcG9pbnRlciwKLSAgICAgICAgLy8gICAgdHlwZW5hbWUgcG9pbnRlcl90b19vdGhlcjx2b2lkPjo6dHlwZSkKLSAgICAgICAgLy8gICAgdm9pZF9wb2ludGVyOwotICAgICAgICAvLwotICAgICAgICAvL3R5cGVkZWYgTkROQk9PU1RfVU5PUkRFUkVEX0RFRkFVTFRfVFlQRShBbGxvYywgY29uc3Rfdm9pZF9wb2ludGVyLAotICAgICAgICAvLyAgICB0eXBlbmFtZSBwb2ludGVyX3RvX290aGVyPGNvbnN0IHZvaWQ+Ojp0eXBlKQotICAgICAgICAvLyAgICBjb25zdF92b2lkX3BvaW50ZXI7Ci0KLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9VTk9SREVSRURfREVGQVVMVF9UWVBFKEFsbG9jLCBkaWZmZXJlbmNlX3R5cGUsCi0gICAgICAgICAgICBzdGQ6OnB0cmRpZmZfdCkgZGlmZmVyZW5jZV90eXBlOwotCi0gICAgICAgIHR5cGVkZWYgTkROQk9PU1RfVU5PUkRFUkVEX0RFRkFVTFRfVFlQRShBbGxvYywgc2l6ZV90eXBlLCBzdGQ6OnNpemVfdCkKLSAgICAgICAgICAgIHNpemVfdHlwZTsKLQotICAgICAgICAvLyBUT0RPOiByZWJpbmRfYWxsb2MgYW5kIHJlYmluZF90cmFpdHMKLQotICAgICAgICBzdGF0aWMgcG9pbnRlciBhbGxvY2F0ZShBbGxvYyYgYSwgc2l6ZV90eXBlIG4pCi0gICAgICAgICAgICB7IHJldHVybiBhLmFsbG9jYXRlKG4pOyB9Ci0KLSAgICAgICAgLy8gSSBuZXZlciB1c2UgdGhpcywgc28gSSdsbCBqdXN0IGNvbW1lbnQgaXQgb3V0IGZvciBub3cuCi0gICAgICAgIC8vCi0gICAgICAgIC8vc3RhdGljIHBvaW50ZXIgYWxsb2NhdGUoQWxsb2MmIGEsIHNpemVfdHlwZSBuLAotICAgICAgICAvLyAgICAgICAgY29uc3Rfdm9pZF9wb2ludGVyIGhpbnQpCi0gICAgICAgIC8vICAgIHsgcmV0dXJuIERFRkFVTFRfRlVOQyhhbGxvY2F0ZSwgcG9pbnRlcikoYSwgbiwgaGludCk7IH0KLQotICAgICAgICBzdGF0aWMgdm9pZCBkZWFsbG9jYXRlKEFsbG9jJiBhLCBwb2ludGVyIHAsIHNpemVfdHlwZSBuKQotICAgICAgICAgICAgeyBhLmRlYWxsb2NhdGUocCwgbik7IH0KLQotICAgIHB1YmxpYzoKLQotIyAgIGlmIE5ETkJPT1NUX1VOT1JERVJFRF9ERVRBSUxfRlVMTF9DT05TVFJVQ1QKLQotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICAgICAgc3RhdGljIHR5cGVuYW1lIG5kbmJvb3N0OjplbmFibGVfaWZfYzwKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6Omhhc19jb25zdHJ1Y3Q8QWxsb2MsIFQsIEFyZ3MuLi4+Ci0gICAgICAgICAgICAgICAgOjp2YWx1ZT46OnR5cGUKLSAgICAgICAgICAgIGNvbnN0cnVjdChBbGxvYyYgYSwgVCogcCwgTkROQk9PU1RfRldEX1JFRihBcmdzKS4uLiB4KQotICAgICAgICB7Ci0gICAgICAgICAgICBhLmNvbnN0cnVjdChwLCBuZG5ib29zdDo6Zm9yd2FyZDxBcmdzPih4KS4uLik7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICAgICAgc3RhdGljIHR5cGVuYW1lIG5kbmJvb3N0OjpkaXNhYmxlX2lmX2M8Ci0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpoYXNfY29uc3RydWN0PEFsbG9jLCBULCBBcmdzLi4uPgotICAgICAgICAgICAgICAgIDo6dmFsdWU+Ojp0eXBlCi0gICAgICAgICAgICBjb25zdHJ1Y3QoQWxsb2MmLCBUKiBwLCBORE5CT09TVF9GV0RfUkVGKEFyZ3MpLi4uIHgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG5ldyAoKHZvaWQqKSBwKSBUKG5kbmJvb3N0Ojpmb3J3YXJkPEFyZ3M+KHgpLi4uKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgICAgICBzdGF0aWMgdHlwZW5hbWUgbmRuYm9vc3Q6OmVuYWJsZV9pZl9jPAotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6aGFzX2Rlc3Ryb3k8QWxsb2MsIFQ+Ojp2YWx1ZT46OnR5cGUKLSAgICAgICAgICAgIGRlc3Ryb3koQWxsb2MmIGEsIFQqIHApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGEuZGVzdHJveShwKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgICAgICBzdGF0aWMgdHlwZW5hbWUgbmRuYm9vc3Q6OmRpc2FibGVfaWZfYzwKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6Omhhc19kZXN0cm95PEFsbG9jLCBUPjo6dmFsdWU+Ojp0eXBlCi0gICAgICAgICAgICBkZXN0cm95KEFsbG9jJiwgVCogcCkKLSAgICAgICAgewotICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpkZXN0cm95KHApOwotICAgICAgICB9Ci0KLSMgICBlbGlmICFkZWZpbmVkKE5ETkJPT1NUX05PX1NGSU5BRV9FWFBSKQotCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgICAgICBzdGF0aWMgdHlwZW5hbWUgbmRuYm9vc3Q6OmVuYWJsZV9pZl9jPAotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6aGFzX2NvbnN0cnVjdDxBbGxvYywgVD46OnZhbHVlPjo6dHlwZQotICAgICAgICAgICAgY29uc3RydWN0KEFsbG9jJiBhLCBUKiBwLCBUIGNvbnN0JiB4KQotICAgICAgICB7Ci0gICAgICAgICAgICBhLmNvbnN0cnVjdChwLCB4KTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgICAgICBzdGF0aWMgdHlwZW5hbWUgbmRuYm9vc3Q6OmRpc2FibGVfaWZfYzwKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6Omhhc19jb25zdHJ1Y3Q8QWxsb2MsIFQ+Ojp2YWx1ZT46OnR5cGUKLSAgICAgICAgICAgIGNvbnN0cnVjdChBbGxvYyYsIFQqIHAsIFQgY29uc3QmIHgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG5ldyAoKHZvaWQqKSBwKSBUKHgpOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgICAgIHN0YXRpYyB0eXBlbmFtZSBuZG5ib29zdDo6ZW5hYmxlX2lmX2M8Ci0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpoYXNfZGVzdHJveTxBbGxvYywgVD46OnZhbHVlPjo6dHlwZQotICAgICAgICAgICAgZGVzdHJveShBbGxvYyYgYSwgVCogcCkKLSAgICAgICAgewotICAgICAgICAgICAgYS5kZXN0cm95KHApOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgICAgIHN0YXRpYyB0eXBlbmFtZSBuZG5ib29zdDo6ZGlzYWJsZV9pZl9jPAotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6aGFzX2Rlc3Ryb3k8QWxsb2MsIFQ+Ojp2YWx1ZT46OnR5cGUKLSAgICAgICAgICAgIGRlc3Ryb3koQWxsb2MmLCBUKiBwKQotICAgICAgICB7Ci0gICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmRlc3Ryb3kocCk7Ci0gICAgICAgIH0KLQotIyAgIGVsc2UKLQotICAgICAgICAvLyBJZiB3ZSBkb24ndCBoYXZlIFNGSU5BRSBleHByZXNzaW9ucywgb25seSBjYWxsIGNvbnN0cnVjdCBmb3IgdGhlCi0gICAgICAgIC8vIGNvcHkgY29uc3RydWN0b3IgZm9yIHRoZSBhbGxvY2F0b3IncyB2YWx1ZV90eXBlIC0gYXMgdGhhdCdzCi0gICAgICAgIC8vIHRoZSBvbmx5IGNvbnN0cnVjdCBtZXRob2QgdGhhdCBvbGQgZmFzaGlvbmVkIGFsbG9jYXRvcnMgc3VwcG9ydC4KLQotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICAgICAgc3RhdGljIHZvaWQgY29uc3RydWN0KEFsbG9jJiBhLCBUKiBwLCBUIGNvbnN0JiB4LAotICAgICAgICAgICAgdHlwZW5hbWUgbmRuYm9vc3Q6OmVuYWJsZV9pZl9jPAotICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6Omhhc19jb25zdHJ1Y3Q8QWxsb2MsIFQ+Ojp2YWx1ZSAmJgotICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6aXNfc2FtZTxULCB2YWx1ZV90eXBlPjo6dmFsdWUsCi0gICAgICAgICAgICAgICAgICAgIHZvaWQqPjo6dHlwZSA9IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGEuY29uc3RydWN0KHAsIHgpOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdChBbGxvYyYsIFQqIHAsIFQgY29uc3QmIHgsCi0gICAgICAgICAgICB0eXBlbmFtZSBuZG5ib29zdDo6ZGlzYWJsZV9pZl9jPAotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6aGFzX2NvbnN0cnVjdDxBbGxvYywgVD46OnZhbHVlICYmCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmlzX3NhbWU8VCwgdmFsdWVfdHlwZT46OnZhbHVlLAotICAgICAgICAgICAgICAgIHZvaWQqPjo6dHlwZSA9IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIG5ldyAoKHZvaWQqKSBwKSBUKHgpOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koQWxsb2MmIGEsIFQqIHAsCi0gICAgICAgICAgICB0eXBlbmFtZSBuZG5ib29zdDo6ZW5hYmxlX2lmX2M8Ci0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpoYXNfZGVzdHJveTxBbGxvYywgVD46OnZhbHVlICYmCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmlzX3NhbWU8VCwgdmFsdWVfdHlwZT46OnZhbHVlLAotICAgICAgICAgICAgICAgIHZvaWQqPjo6dHlwZSA9IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIGEuZGVzdHJveShwKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEFsbG9jJiwgVCogcCwKLSAgICAgICAgICAgIHR5cGVuYW1lIG5kbmJvb3N0OjpkaXNhYmxlX2lmX2M8Ci0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpoYXNfZGVzdHJveTxBbGxvYywgVD46OnZhbHVlICYmCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmlzX3NhbWU8VCwgdmFsdWVfdHlwZT46OnZhbHVlLAotICAgICAgICAgICAgICAgIHZvaWQqPjo6dHlwZSA9IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6ZGVzdHJveShwKTsKLSAgICAgICAgfQotCi0jICAgZW5kaWYKLQotICAgICAgICBzdGF0aWMgc2l6ZV90eXBlIG1heF9zaXplKGNvbnN0IEFsbG9jJiBhKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpjYWxsX21heF9zaXplPHNpemVfdHlwZT4oYSk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBBbGxvY2F0b3IgcHJvcGFnYXRpb24gb24gY29uc3RydWN0aW9uCi0KLSAgICAgICAgc3RhdGljIEFsbG9jIHNlbGVjdF9vbl9jb250YWluZXJfY29weV9jb25zdHJ1Y3Rpb24oQWxsb2MgY29uc3QmIHJocykKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6Ci0gICAgICAgICAgICAgICAgY2FsbF9zZWxlY3Rfb25fY29udGFpbmVyX2NvcHlfY29uc3RydWN0aW9uKHJocyk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBBbGxvY2F0b3IgcHJvcGFnYXRpb24gb24gYXNzaWdubWVudCBhbmQgc3dhcC4KLSAgICAgICAgLy8gUmV0dXJuIHRydWUgaWYgbGhzIGlzIG1vZGlmaWVkLgotICAgICAgICB0eXBlZGVmIE5ETkJPT1NUX1VOT1JERVJFRF9ERUZBVUxUX1RZUEUoCi0gICAgICAgICAgICBBbGxvYywgcHJvcGFnYXRlX29uX2NvbnRhaW5lcl9jb3B5X2Fzc2lnbm1lbnQsIGZhbHNlX3R5cGUpCi0gICAgICAgICAgICBwcm9wYWdhdGVfb25fY29udGFpbmVyX2NvcHlfYXNzaWdubWVudDsKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9VTk9SREVSRURfREVGQVVMVF9UWVBFKAotICAgICAgICAgICAgQWxsb2MscHJvcGFnYXRlX29uX2NvbnRhaW5lcl9tb3ZlX2Fzc2lnbm1lbnQsIGZhbHNlX3R5cGUpCi0gICAgICAgICAgICBwcm9wYWdhdGVfb25fY29udGFpbmVyX21vdmVfYXNzaWdubWVudDsKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9VTk9SREVSRURfREVGQVVMVF9UWVBFKAotICAgICAgICAgICAgQWxsb2MscHJvcGFnYXRlX29uX2NvbnRhaW5lcl9zd2FwLGZhbHNlX3R5cGUpCi0gICAgICAgICAgICBwcm9wYWdhdGVfb25fY29udGFpbmVyX3N3YXA7Ci0gICAgfTsKLX19fQotCi0jICAgdW5kZWYgTkROQk9PU1RfVU5PUkRFUkVEX0RFRkFVTFRfVFlQRV9UTVBMVAotIyAgIHVuZGVmIE5ETkJPT1NUX1VOT1JERVJFRF9ERUZBVUxUX1RZUEUKLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vCi0vLyBzdGQ6OmFsbG9jYXRvcl90cmFpdHMKLQotI2VsaWYgTkROQk9PU1RfVU5PUkRFUkVEX1VTRV9BTExPQ0FUT1JfVFJBSVRTID09IDEKLQotIyAgIGluY2x1ZGUgPG1lbW9yeT4KLQotIyAgIGRlZmluZSBORE5CT09TVF9VTk9SREVSRURfREVUQUlMX0ZVTExfQ09OU1RSVUNUIDEKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIHVub3JkZXJlZCB7IG5hbWVzcGFjZSBkZXRhaWwgewotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEFsbG9jPgotICAgIHN0cnVjdCBhbGxvY2F0b3JfdHJhaXRzIDogc3RkOjphbGxvY2F0b3JfdHJhaXRzPEFsbG9jPiB7fTsKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBbGxvYywgdHlwZW5hbWUgVD4KLSAgICBzdHJ1Y3QgcmViaW5kX3dyYXAKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgc3RkOjphbGxvY2F0b3JfdHJhaXRzPEFsbG9jPjo6Ci0gICAgICAgICAgICB0ZW1wbGF0ZSByZWJpbmRfYWxsb2M8VD4gdHlwZTsKLSAgICB9OwotfX19Ci0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLwotLy8gbmRuYm9vc3Q6OmNvbnRhaW5lcjo6YWxsb2NhdG9yX3RyYWl0cwotCi0jZWxpZiBORE5CT09TVF9VTk9SREVSRURfVVNFX0FMTE9DQVRPUl9UUkFJVFMgPT0gMgotCi0jICAgaW5jbHVkZSA8bmRuYm9vc3QvY29udGFpbmVyL2FsbG9jYXRvcl90cmFpdHMuaHBwPgotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9ERVRBSUxfRlVMTF9DT05TVFJVQ1QgMAotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgdW5vcmRlcmVkIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQWxsb2M+Ci0gICAgc3RydWN0IGFsbG9jYXRvcl90cmFpdHMgOgotICAgICAgICBuZG5ib29zdDo6Y29udGFpbmVyOjphbGxvY2F0b3JfdHJhaXRzPEFsbG9jPiB7fTsKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBbGxvYywgdHlwZW5hbWUgVD4KLSAgICBzdHJ1Y3QgcmViaW5kX3dyYXAgOgotICAgICAgICBuZG5ib29zdDo6Y29udGFpbmVyOjphbGxvY2F0b3JfdHJhaXRzPEFsbG9jPjo6Ci0gICAgICAgICAgICB0ZW1wbGF0ZSBwb3J0YWJsZV9yZWJpbmRfYWxsb2M8VD4KLSAgICB7fTsKLQotfX19Ci0KLSNlbHNlCi0KLSNlcnJvciAiSW52YWxpZCBORE5CT09TVF9VTk9SREVSRURfVVNFX0FMTE9DQVRPUl9UUkFJVFMgdmFsdWUuIgotCi0jZW5kaWYKLQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgdW5vcmRlcmVkIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLSAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgLy8gY2FsbF9jb25zdHJ1Y3QKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX1RFTVBMQVRFUykKLQotIyAgIGlmIE5ETkJPT1NUX1VOT1JERVJFRF9ERVRBSUxfRlVMTF9DT05TVFJVQ1QKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBbGxvYywgdHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICBpbmxpbmUgdm9pZCBjYWxsX2NvbnN0cnVjdChBbGxvYyYgYWxsb2MsIFQqIGFkZHJlc3MsCi0gICAgICAgIE5ETkJPT1NUX0ZXRF9SRUYoQXJncykuLi4gYXJncykKLSAgICB7Ci0gICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6YWxsb2NhdG9yX3RyYWl0czxBbGxvYz46OmNvbnN0cnVjdChhbGxvYywKLSAgICAgICAgICAgIGFkZHJlc3MsIG5kbmJvb3N0Ojpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIFQ+Ci0gICAgaW5saW5lIHZvaWQgZGVzdHJveV92YWx1ZV9pbXBsKEFsbG9jJiBhbGxvYywgVCogeCkgewotICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmFsbG9jYXRvcl90cmFpdHM8QWxsb2M+OjpkZXN0cm95KGFsbG9jLCB4KTsKLSAgICB9Ci0KLQotIyAgIGVsc2UKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBbGxvYywgdHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICBpbmxpbmUgdm9pZCBjYWxsX2NvbnN0cnVjdChBbGxvYyYsIFQqIGFkZHJlc3MsCi0gICAgICAgIE5ETkJPT1NUX0ZXRF9SRUYoQXJncykuLi4gYXJncykKLSAgICB7Ci0gICAgICAgIG5ldygodm9pZCopIGFkZHJlc3MpIFQobmRuYm9vc3Q6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBbGxvYywgdHlwZW5hbWUgVD4KLSAgICBpbmxpbmUgdm9pZCBkZXN0cm95X3ZhbHVlX2ltcGwoQWxsb2MmLCBUKiB4KSB7Ci0gICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6ZGVzdHJveSh4KTsKLSAgICB9Ci0KLQotIyAgIGVuZGlmCi0KLSNlbHNlCi0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIFQ+Ci0gICAgaW5saW5lIHZvaWQgZGVzdHJveV92YWx1ZV9pbXBsKEFsbG9jJiwgVCogeCkgewotICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmRlc3Ryb3koeCk7Ci0gICAgfQotCi0jZW5kaWYKLQotICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAvLyBDb25zdHJ1Y3QgZnJvbSB0dXBsZQotICAgIC8vCi0gICAgLy8gVXNlZCBmb3IgcGllY2V3aXNlIGNvbnN0cnVjdGlvbi4KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX1RFTVBMQVRFUykKLQotIyAgIGRlZmluZSBORE5CT09TVF9VTk9SREVSRURfQ09OU1RSVUNUX0ZST01fVFVQTEUobiwgbmFtZXNwYWNlXykgICAgICAgICAgICAgIFwKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBBbGxvYywgdHlwZW5hbWUgVD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCBjb25zdHJ1Y3RfZnJvbV90dXBsZShBbGxvYyYgYWxsb2MsIFQqIHB0ciwgbmFtZXNwYWNlXyB0dXBsZTw+KSAgICAgXAotICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpjYWxsX2NvbnN0cnVjdChhbGxvYywgcHRyKTsgICAgICAgICAgICAgICBcCi0gICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBORE5CT09TVF9QUF9SRVBFQVRfRlJPTV9UTygxLCBuLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIE5ETkJPT1NUX1VOT1JERVJFRF9DT05TVFJVQ1RfRlJPTV9UVVBMRV9JTVBMLCBuYW1lc3BhY2VfKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9DT05TVFJVQ1RfRlJPTV9UVVBMRV9JTVBMKHosIG4sIG5hbWVzcGFjZV8pICAgICAgXAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEFsbG9jLCB0eXBlbmFtZSBULCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVNfWih6LCBuLCB0eXBlbmFtZSBBKT4gICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCBjb25zdHJ1Y3RfZnJvbV90dXBsZShBbGxvYyYgYWxsb2MsIFQqIHB0ciwgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgbmFtZXNwYWNlXyB0dXBsZTxORE5CT09TVF9QUF9FTlVNX1BBUkFNU19aKHosIG4sIEEpPiBjb25zdCYgeCkgICAgIFwKLSAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6Y2FsbF9jb25zdHJ1Y3QoYWxsb2MsIHB0ciwgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgTkROQk9PU1RfUFBfRU5VTV8jI3oobiwgTkROQk9PU1RfVU5PUkRFUkVEX0dFVF9UVVBMRV9BUkcsIG5hbWVzcGFjZV8pIFwKLSAgICAgICAgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9HRVRfVFVQTEVfQVJHKHosIG4sIG5hbWVzcGFjZV8pICAgICAgICAgICAgICAgICAgXAotICAgIG5hbWVzcGFjZV8gZ2V0PG4+KHgpCi0KLSNlbGlmICFkZWZpbmVkKF9fU1VOUFJPX0NDKQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9DT05TVFJVQ1RfRlJPTV9UVVBMRShuLCBuYW1lc3BhY2VfKSAgICAgICAgICAgICAgXAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIEFsbG9jLCB0eXBlbmFtZSBUPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB2b2lkIGNvbnN0cnVjdF9mcm9tX3R1cGxlKEFsbG9jJiwgVCogcHRyLCBuYW1lc3BhY2VfIHR1cGxlPD4pICAgICAgICAgICBcCi0gICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBuZXcgKCh2b2lkKikgcHRyKSBUKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPKDEsIG4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgTkROQk9PU1RfVU5PUkRFUkVEX0NPTlNUUlVDVF9GUk9NX1RVUExFX0lNUEwsIG5hbWVzcGFjZV8pCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX0NPTlNUUlVDVF9GUk9NX1RVUExFX0lNUEwoeiwgbiwgbmFtZXNwYWNlXykgICAgICBcCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIFQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBORE5CT09TVF9QUF9FTlVNX1BBUkFNU19aKHosIG4sIHR5cGVuYW1lIEEpPiAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB2b2lkIGNvbnN0cnVjdF9mcm9tX3R1cGxlKEFsbG9jJiwgVCogcHRyLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBuYW1lc3BhY2VfIHR1cGxlPE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TX1ooeiwgbiwgQSk+IGNvbnN0JiB4KSAgICAgXAotICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgbmV3ICgodm9pZCopIHB0cikgVCggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBORE5CT09TVF9QUF9FTlVNXyMjeihuLCBORE5CT09TVF9VTk9SREVSRURfR0VUX1RVUExFX0FSRywgbmFtZXNwYWNlXykgXAotICAgICAgICApOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9Ci0KLSMgICBkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX0dFVF9UVVBMRV9BUkcoeiwgbiwgbmFtZXNwYWNlXykgICAgICAgICAgICAgICAgICBcCi0gICAgbmFtZXNwYWNlXyBnZXQ8bj4oeCkKLQotI2Vsc2UKLQotICAgIHRlbXBsYXRlIDxpbnQgTj4gc3RydWN0IGxlbmd0aCB7fTsKLQotIyAgIGRlZmluZSBORE5CT09TVF9VTk9SREVSRURfQ09OU1RSVUNUX0ZST01fVFVQTEUobiwgbmFtZXNwYWNlXykgICAgICAgICAgICAgIFwKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBBbGxvYywgdHlwZW5hbWUgVD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgdm9pZCBjb25zdHJ1Y3RfZnJvbV90dXBsZV9pbXBsKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpsZW5ndGg8MD4sIEFsbG9jJiwgVCogcHRyLCAgICAgICAgICAgIFwKLSAgICAgICAgICAgIG5hbWVzcGFjZV8gdHVwbGU8PikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBuZXcgKCh2b2lkKikgcHRyKSBUKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPKDEsIG4sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgTkROQk9PU1RfVU5PUkRFUkVEX0NPTlNUUlVDVF9GUk9NX1RVUExFX0lNUEwsIG5hbWVzcGFjZV8pCi0KLSMgICBkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX0NPTlNUUlVDVF9GUk9NX1RVUExFX0lNUEwoeiwgbiwgbmFtZXNwYWNlXykgICAgICBcCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIFQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBORE5CT09TVF9QUF9FTlVNX1BBUkFNU19aKHosIG4sIHR5cGVuYW1lIEEpPiAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB2b2lkIGNvbnN0cnVjdF9mcm9tX3R1cGxlX2ltcGwoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6Omxlbmd0aDxuPiwgQWxsb2MmLCBUKiBwdHIsICAgICAgICAgICAgXAotICAgICAgICAgICAgbmFtZXNwYWNlXyB0dXBsZTxORE5CT09TVF9QUF9FTlVNX1BBUkFNU19aKHosIG4sIEEpPiBjb25zdCYgeCkgICAgIFwKLSAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIG5ldyAoKHZvaWQqKSBwdHIpIFQoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgTkROQk9PU1RfUFBfRU5VTV8jI3oobiwgTkROQk9PU1RfVU5PUkRFUkVEX0dFVF9UVVBMRV9BUkcsIG5hbWVzcGFjZV8pIFwKLSAgICAgICAgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfQotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9HRVRfVFVQTEVfQVJHKHosIG4sIG5hbWVzcGFjZV8pICAgICAgICAgICAgICAgICAgXAotICAgIG5hbWVzcGFjZV8gZ2V0PG4+KHgpCi0KLSNlbmRpZgotCi1ORE5CT09TVF9VTk9SREVSRURfQ09OU1RSVUNUX0ZST01fVFVQTEUoMTAsIG5kbmJvb3N0OjopCi0KLSNpZiAhZGVmaW5lZChfX1NVTlBST19DQykgJiYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfSERSX1RVUExFKQotICAgTkROQk9PU1RfVU5PUkRFUkVEX0NPTlNUUlVDVF9GUk9NX1RVUExFKDEwLCBzdGQ6OikKLSNlbmRpZgotCi0jdW5kZWYgTkROQk9PU1RfVU5PUkRFUkVEX0NPTlNUUlVDVF9GUk9NX1RVUExFCi0jdW5kZWYgTkROQk9PU1RfVU5PUkRFUkVEX0NPTlNUUlVDVF9GUk9NX1RVUExFX0lNUEwKLSN1bmRlZiBORE5CT09TVF9VTk9SREVSRURfR0VUX1RVUExFX0FSRwotCi0jaWYgZGVmaW5lZChfX1NVTlBST19DQykKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBbGxvYywgdHlwZW5hbWUgVCwgdHlwZW5hbWUgVHVwbGU+Ci0gICAgdm9pZCBjb25zdHJ1Y3RfZnJvbV90dXBsZShBbGxvYyYgYWxsb2MsIFQqIHB0ciwgVHVwbGUgY29uc3QmIHgpCi0gICAgewotICAgICAgICBjb25zdHJ1Y3RfZnJvbV90dXBsZV9pbXBsKAotICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpsZW5ndGg8Ci0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnR1cGxlczo6bGVuZ3RoPFR1cGxlPjo6dmFsdWU+KCksCi0gICAgICAgICAgICBhbGxvYywgcHRyLCB4KTsKLSAgICB9Ci0KLSNlbmRpZgotCi0gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgIC8vIFRyYWl0IHRvIGNoZWNrIGZvciBwaWVjZXdpc2UgY29uc3RydWN0aW9uLgotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEEwPgotICAgIHN0cnVjdCB1c2VfcGllY2V3aXNlIHsKLSAgICAgICAgc3RhdGljIGNob2ljZTE6OnR5cGUgdGVzdChjaG9pY2UxLAotICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6cGllY2V3aXNlX2NvbnN0cnVjdF90KTsKLQotICAgICAgICBzdGF0aWMgY2hvaWNlMjo6dHlwZSB0ZXN0KGNob2ljZTIsIC4uLik7Ci0KLSAgICAgICAgZW51bSB7IHZhbHVlID0gc2l6ZW9mKGNob2ljZTE6OnR5cGUpID09Ci0gICAgICAgICAgICBzaXplb2YodGVzdChjaG9vc2UoKSwgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjptYWtlPEEwPigpKSkgfTsKLSAgICB9OwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfVEVNUExBVEVTKQotCi0gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgIC8vIENvbnN0cnVjdCBmcm9tIHZhcmlhZGljIHBhcmFtZXRlcnMKLQotICAgIC8vIEZvciB0aGUgc3RhbmRhcmQgcGFpciBjb25zdHJ1Y3Rvci4KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBbGxvYywgdHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICBpbmxpbmUgdm9pZCBjb25zdHJ1Y3RfdmFsdWVfaW1wbChBbGxvYyYgYWxsb2MsIFQqIGFkZHJlc3MsCi0gICAgICAgIE5ETkJPT1NUX0ZXRF9SRUYoQXJncykuLi4gYXJncykKLSAgICB7Ci0gICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6Y2FsbF9jb25zdHJ1Y3QoYWxsb2MsCi0gICAgICAgICAgICBhZGRyZXNzLCBuZG5ib29zdDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7Ci0gICAgfQotCi0gICAgLy8gU3BlY2lhbCBjYXNlIGZvciBwaWVjZV9jb25zdHJ1Y3QKLSAgICAvLwotICAgIC8vIFRPRE86IFdoZW4gcG9zc2libGUsIGl0IG1pZ2h0IGJlIGJldHRlciB0byB1c2Ugc3RkOjpwYWlyJ3MKLSAgICAvLyBjb25zdHJ1Y3RvciBmb3Igc3RkOjpwaWVjZV9jb25zdHJ1Y3Qgd2l0aCBzdGQ6OnR1cGxlLgotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEFsbG9jLCB0eXBlbmFtZSBBLCB0eXBlbmFtZSBCLAotICAgICAgICB0eXBlbmFtZSBBMCwgdHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyPgotICAgIGlubGluZSB0eXBlbmFtZSBlbmFibGVfaWY8dXNlX3BpZWNld2lzZTxBMD4sIHZvaWQ+Ojp0eXBlCi0gICAgICAgIGNvbnN0cnVjdF92YWx1ZV9pbXBsKEFsbG9jJiBhbGxvYywgc3RkOjpwYWlyPEEsIEI+KiBhZGRyZXNzLAotICAgICAgICAgICAgTkROQk9PU1RfRldEX1JFRihBMCksIE5ETkJPT1NUX0ZXRF9SRUYoQTEpIGExLCBORE5CT09TVF9GV0RfUkVGKEEyKSBhMikKLSAgICB7Ci0gICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6Y29uc3RydWN0X2Zyb21fdHVwbGUoYWxsb2MsCi0gICAgICAgICAgICBuZG5ib29zdDo6YWRkcmVzc29mKGFkZHJlc3MtPmZpcnN0KSwgbmRuYm9vc3Q6OmZvcndhcmQ8QTE+KGExKSk7Ci0gICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6Y29uc3RydWN0X2Zyb21fdHVwbGUoYWxsb2MsCi0gICAgICAgICAgICBuZG5ib29zdDo6YWRkcmVzc29mKGFkZHJlc3MtPnNlY29uZCksIG5kbmJvb3N0Ojpmb3J3YXJkPEEyPihhMikpOwotICAgIH0KLQotI2Vsc2UgLy8gTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfVEVNUExBVEVTCi0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLyBDb25zdHJ1Y3QgZnJvbSBlbXBsYWNlX2FyZ3MKLQotICAgIC8vIEV4cGxpY2l0bHkgd3JpdGUgb3V0IGZpcnN0IHRocmVlIG92ZXJsb2FkcyBmb3IgdGhlIHNha2Ugb2Ygc2FuZQotICAgIC8vIGVycm9yIG1lc3NhZ2VzLgotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEFsbG9jLCB0eXBlbmFtZSBULCB0eXBlbmFtZSBBMD4KLSAgICBpbmxpbmUgdm9pZCBjb25zdHJ1Y3RfdmFsdWVfaW1wbChBbGxvYyYsIFQqIGFkZHJlc3MsCi0gICAgICAgICAgICBlbXBsYWNlX2FyZ3MxPEEwPiBjb25zdCYgYXJncykKLSAgICB7Ci0gICAgICAgIG5ldygodm9pZCopIGFkZHJlc3MpIFQobmRuYm9vc3Q6OmZvcndhcmQ8QTA+KGFyZ3MuYTApKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIFQsIHR5cGVuYW1lIEEwLCB0eXBlbmFtZSBBMT4KLSAgICBpbmxpbmUgdm9pZCBjb25zdHJ1Y3RfdmFsdWVfaW1wbChBbGxvYyYsIFQqIGFkZHJlc3MsCi0gICAgICAgICAgICBlbXBsYWNlX2FyZ3MyPEEwLCBBMT4gY29uc3QmIGFyZ3MpCi0gICAgewotICAgICAgICBuZXcoKHZvaWQqKSBhZGRyZXNzKSBUKAotICAgICAgICAgICAgbmRuYm9vc3Q6OmZvcndhcmQ8QTA+KGFyZ3MuYTApLAotICAgICAgICAgICAgbmRuYm9vc3Q6OmZvcndhcmQ8QTE+KGFyZ3MuYTEpCi0gICAgICAgICk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEFsbG9jLCB0eXBlbmFtZSBULCB0eXBlbmFtZSBBMCwgdHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyPgotICAgIGlubGluZSB2b2lkIGNvbnN0cnVjdF92YWx1ZV9pbXBsKEFsbG9jJiwgVCogYWRkcmVzcywKLSAgICAgICAgICAgIGVtcGxhY2VfYXJnczM8QTAsIEExLCBBMj4gY29uc3QmIGFyZ3MpCi0gICAgewotICAgICAgICBuZXcoKHZvaWQqKSBhZGRyZXNzKSBUKAotICAgICAgICAgICAgbmRuYm9vc3Q6OmZvcndhcmQ8QTA+KGFyZ3MuYTApLAotICAgICAgICAgICAgbmRuYm9vc3Q6OmZvcndhcmQ8QTE+KGFyZ3MuYTEpLAotICAgICAgICAgICAgbmRuYm9vc3Q6OmZvcndhcmQ8QTI+KGFyZ3MuYTIpCi0gICAgICAgICk7Ci0gICAgfQotCi0gICAgLy8gVXNlIGEgbWFjcm8gZm9yIHRoZSByZXN0LgotCi0jZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9DT05TVFJVQ1RfSU1QTCh6LCBudW1fcGFyYW1zLCBfKSAgICAgICAgICAgICAgICAgICAgXAotICAgIHRlbXBsYXRlIDwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgdHlwZW5hbWUgQWxsb2MsIHR5cGVuYW1lIFQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TX1ooeiwgbnVtX3BhcmFtcywgdHlwZW5hbWUgQSkgICAgICAgICAgICAgICAgICAgXAotICAgID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBpbmxpbmUgdm9pZCBjb25zdHJ1Y3RfdmFsdWVfaW1wbChBbGxvYyYsIFQqIGFkZHJlc3MsICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6TkROQk9PU1RfUFBfQ0FUKGVtcGxhY2VfYXJncyxudW1fcGFyYW1zKSA8ICAgXAotICAgICAgICAgICAgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVNfWih6LCBudW1fcGFyYW1zLCBBKSAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgPiBjb25zdCYgYXJncykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBuZXcoKHZvaWQqKSBhZGRyZXNzKSBUKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIE5ETkJPT1NUX1BQX0VOVU1fIyN6KG51bV9wYXJhbXMsIE5ETkJPT1NUX1VOT1JERVJFRF9DQUxMX0ZPUldBUkQsICAgICBcCi0gICAgICAgICAgICAgICAgYXJncy5hKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0KLQotICAgIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPKDQsIE5ETkJPT1NUX1VOT1JERVJFRF9FTVBMQUNFX0xJTUlULAotICAgICAgICBORE5CT09TVF9VTk9SREVSRURfQ09OU1RSVUNUX0lNUEwsIF8pCi0KLSN1bmRlZiBORE5CT09TVF9VTk9SREVSRURfQ09OU1RSVUNUX0lNUEwKLQotICAgIC8vIENvbnN0cnVjdCB3aXRoIHBpZWNlX2NvbnN0cnVjdAotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEFsbG9jLCB0eXBlbmFtZSBBLCB0eXBlbmFtZSBCLAotICAgICAgICB0eXBlbmFtZSBBMCwgdHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyPgotICAgIGlubGluZSB2b2lkIGNvbnN0cnVjdF92YWx1ZV9pbXBsKEFsbG9jJiBhbGxvYywgc3RkOjpwYWlyPEEsIEI+KiBhZGRyZXNzLAotICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjplbXBsYWNlX2FyZ3MzPEEwLCBBMSwgQTI+IGNvbnN0JiBhcmdzLAotICAgICAgICAgICAgdHlwZW5hbWUgZW5hYmxlX2lmPHVzZV9waWVjZXdpc2U8QTA+LCB2b2lkKj46OnR5cGUgPSAwKQotICAgIHsKLSAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpjb25zdHJ1Y3RfZnJvbV90dXBsZShhbGxvYywKLSAgICAgICAgICAgIG5kbmJvb3N0OjphZGRyZXNzb2YoYWRkcmVzcy0+Zmlyc3QpLCBhcmdzLmExKTsKLSAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpjb25zdHJ1Y3RfZnJvbV90dXBsZShhbGxvYywKLSAgICAgICAgICAgIG5kbmJvb3N0OjphZGRyZXNzb2YoYWRkcmVzcy0+c2Vjb25kKSwgYXJncy5hMik7Ci0gICAgfQotCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfVEVNUExBVEVTCi0KLX19fQotCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8KLS8vIFNvbWUgaGVscGVyIGZ1bmN0aW9ucyBmb3IgYWxsb2NhdGluZyAmIGNvbnN0cnVjdGluZwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgdW5vcmRlcmVkIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLSAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgLy8KLSAgICAvLyBhcnJheV9jb25zdHJ1Y3RvcgotICAgIC8vCi0gICAgLy8gQWxsb2NhdGUgYW5kIGNvbnN0cnVjdCBhbiBhcnJheSBpbiBhbiBleGNlcHRpb24gc2FmZSBtYW5uZXIsIGFuZAotICAgIC8vIGNsZWFuIHVwIGlmIGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24gYmVmb3JlIHRoZSBjb250YWluZXIgdGFrZXMgY2hhcmdlCi0gICAgLy8gb2YgaXQuCi0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQWxsb2NhdG9yPgotICAgIHN0cnVjdCBhcnJheV9jb25zdHJ1Y3RvcgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmFsbG9jYXRvcl90cmFpdHM8QWxsb2NhdG9yPiB0cmFpdHM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHJhaXRzOjpwb2ludGVyIHBvaW50ZXI7Ci0KLSAgICAgICAgQWxsb2NhdG9yJiBhbGxvY187Ci0gICAgICAgIHBvaW50ZXIgcHRyXzsKLSAgICAgICAgcG9pbnRlciBjb25zdHJ1Y3RlZF87Ci0gICAgICAgIHN0ZDo6c2l6ZV90IGxlbmd0aF87Ci0KLSAgICAgICAgYXJyYXlfY29uc3RydWN0b3IoQWxsb2NhdG9yJiBhKQotICAgICAgICAgICAgOiBhbGxvY18oYSksIHB0cl8oKSwgY29uc3RydWN0ZWRfKCksIGxlbmd0aF8oMCkKLSAgICAgICAgewotICAgICAgICAgICAgY29uc3RydWN0ZWRfID0gcG9pbnRlcigpOwotICAgICAgICAgICAgcHRyXyA9IHBvaW50ZXIoKTsKLSAgICAgICAgfQotCi0gICAgICAgIH5hcnJheV9jb25zdHJ1Y3RvcigpIHsKLSAgICAgICAgICAgIGlmIChwdHJfKSB7Ci0gICAgICAgICAgICAgICAgZm9yKHBvaW50ZXIgcCA9IHB0cl87IHAgIT0gY29uc3RydWN0ZWRfOyArK3ApCi0gICAgICAgICAgICAgICAgICAgIHRyYWl0czo6ZGVzdHJveShhbGxvY18sIG5kbmJvb3N0OjphZGRyZXNzb2YoKnApKTsKLQotICAgICAgICAgICAgICAgIHRyYWl0czo6ZGVhbGxvY2F0ZShhbGxvY18sIHB0cl8sIGxlbmd0aF8pOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFY+Ci0gICAgICAgIHZvaWQgY29uc3RydWN0KFYgY29uc3QmIHYsIHN0ZDo6c2l6ZV90IGwpCi0gICAgICAgIHsKLSAgICAgICAgICAgIE5ETkJPT1NUX0FTU0VSVCghcHRyXyk7Ci0gICAgICAgICAgICBsZW5ndGhfID0gbDsKLSAgICAgICAgICAgIHB0cl8gPSB0cmFpdHM6OmFsbG9jYXRlKGFsbG9jXywgbGVuZ3RoXyk7Ci0gICAgICAgICAgICBwb2ludGVyIGVuZCA9IHB0cl8gKyBzdGF0aWNfY2FzdDxzdGQ6OnB0cmRpZmZfdD4obGVuZ3RoXyk7Ci0gICAgICAgICAgICBmb3IoY29uc3RydWN0ZWRfID0gcHRyXzsgY29uc3RydWN0ZWRfICE9IGVuZDsgKytjb25zdHJ1Y3RlZF8pCi0gICAgICAgICAgICAgICAgdHJhaXRzOjpjb25zdHJ1Y3QoYWxsb2NfLCBuZG5ib29zdDo6YWRkcmVzc29mKCpjb25zdHJ1Y3RlZF8pLCB2KTsKLSAgICAgICAgfQotCi0gICAgICAgIHBvaW50ZXIgZ2V0KCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHB0cl87Ci0gICAgICAgIH0KLQotICAgICAgICBwb2ludGVyIHJlbGVhc2UoKQotICAgICAgICB7Ci0gICAgICAgICAgICBwb2ludGVyIHAocHRyXyk7Ci0gICAgICAgICAgICBwdHJfID0gcG9pbnRlcigpOwotICAgICAgICAgICAgcmV0dXJuIHA7Ci0gICAgICAgIH0KLQotICAgIHByaXZhdGU6Ci0KLSAgICAgICAgYXJyYXlfY29uc3RydWN0b3IoYXJyYXlfY29uc3RydWN0b3IgY29uc3QmKTsKLSAgICAgICAgYXJyYXlfY29uc3RydWN0b3ImIG9wZXJhdG9yPShhcnJheV9jb25zdHJ1Y3RvciBjb25zdCYpOwotICAgIH07Ci19fX0KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTVNWQykKLSNwcmFnbWEgd2FybmluZyhwb3ApCi0jZW5kaWYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Vub3JkZXJlZC9kZXRhaWwvYnVja2V0cy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Vub3JkZXJlZC9kZXRhaWwvYnVja2V0cy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMyMmRmNDkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC91bm9yZGVyZWQvZGV0YWlsL2J1Y2tldHMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODc2ICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IChDKSAyMDAzLTIwMDQgSmVyZW15IEIuIE1haXRpbi1TaGVwYXJkLgotLy8gQ29weXJpZ2h0IChDKSAyMDA1LTIwMTEgRGFuaWVsIEphbWVzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9VTk9SREVSRURfREVUQUlMX01BTkFHRVJfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9ERVRBSUxfTUFOQUdFUl9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC91bm9yZGVyZWQvZGV0YWlsL3V0aWwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Vub3JkZXJlZC9kZXRhaWwvYWxsb2NhdGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2FsaWduZWRfc3RvcmFnZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvYWxpZ25tZW50X29mLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19ub3Rocm93X21vdmVfY29uc3RydWN0aWJsZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfbm90aHJvd19tb3ZlX2Fzc2lnbmFibGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3N3YXAuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2Fzc2VydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbGltaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9pdGVyYXRvci5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSB1bm9yZGVyZWQgeyBuYW1lc3BhY2UgZGV0YWlsIHsKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUeXBlcz4gc3RydWN0IHRhYmxlOwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBOb2RlUG9pbnRlcj4gc3RydWN0IGJ1Y2tldDsKLSAgICBzdHJ1Y3QgcHRyX2J1Y2tldDsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVHlwZXM+IHN0cnVjdCB0YWJsZV9pbXBsOwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUeXBlcz4gc3RydWN0IGdyb3VwZWRfdGFibGVfaW1wbDsKLQotfX19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7IG5hbWVzcGFjZSB1bm9yZGVyZWQgeyBuYW1lc3BhY2UgaXRlcmF0b3JfZGV0YWlsIHsKLQotICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAvLyBJdGVyYXRvcnMKLSAgICAvLwotICAgIC8vIGFsbCBubyB0aHJvdwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIE5vZGU+IHN0cnVjdCBpdGVyYXRvcjsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTm9kZSwgdHlwZW5hbWUgQ29uc3ROb2RlUG9pbnRlcj4gc3RydWN0IGNfaXRlcmF0b3I7Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIE5vZGUsIHR5cGVuYW1lIFBvbGljeT4gc3RydWN0IGxfaXRlcmF0b3I7Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIE5vZGUsIHR5cGVuYW1lIENvbnN0Tm9kZVBvaW50ZXIsIHR5cGVuYW1lIFBvbGljeT4KLSAgICAgICAgc3RydWN0IGNsX2l0ZXJhdG9yOwotCi0gICAgLy8gTG9jYWwgSXRlcmF0b3JzCi0gICAgLy8KLSAgICAvLyBhbGwgbm8gdGhyb3cKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBOb2RlLCB0eXBlbmFtZSBQb2xpY3k+Ci0gICAgc3RydWN0IGxfaXRlcmF0b3IKLSAgICAgICAgOiBwdWJsaWMgbmRuYm9vc3Q6Oml0ZXJhdG9yPAotICAgICAgICAgICAgc3RkOjpmb3J3YXJkX2l0ZXJhdG9yX3RhZywKLSAgICAgICAgICAgIHR5cGVuYW1lIE5vZGU6OnZhbHVlX3R5cGUsCi0gICAgICAgICAgICBzdGQ6OnB0cmRpZmZfdCwKLSAgICAgICAgICAgIHR5cGVuYW1lIE5vZGU6Om5vZGVfcG9pbnRlciwKLSAgICAgICAgICAgIHR5cGVuYW1lIE5vZGU6OnZhbHVlX3R5cGUmPgotICAgIHsKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19NRU1CRVJfVEVNUExBVEVfRlJJRU5EUykKLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIE5vZGUyLCB0eXBlbmFtZSBDb25zdE5vZGVQb2ludGVyLCB0eXBlbmFtZSBQb2xpY3kyPgotICAgICAgICBmcmllbmQgc3RydWN0IG5kbmJvb3N0Ojp1bm9yZGVyZWQ6Oml0ZXJhdG9yX2RldGFpbDo6Y2xfaXRlcmF0b3I7Ci0gICAgcHJpdmF0ZToKLSNlbmRpZgotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIE5vZGU6Om5vZGVfcG9pbnRlciBub2RlX3BvaW50ZXI7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6aXRlcmF0b3JfZGV0YWlsOjppdGVyYXRvcjxOb2RlPiBpdGVyYXRvcjsKLSAgICAgICAgbm9kZV9wb2ludGVyIHB0cl87Ci0gICAgICAgIHN0ZDo6c2l6ZV90IGJ1Y2tldF87Ci0gICAgICAgIHN0ZDo6c2l6ZV90IGJ1Y2tldF9jb3VudF87Ci0KLSAgICBwdWJsaWM6Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBOb2RlOjp2YWx1ZV90eXBlIHZhbHVlX3R5cGU7Ci0KLSAgICAgICAgbF9pdGVyYXRvcigpIDogcHRyXygpIHt9Ci0KLSAgICAgICAgbF9pdGVyYXRvcihpdGVyYXRvciB4LCBzdGQ6OnNpemVfdCBiLCBzdGQ6OnNpemVfdCBjKQotICAgICAgICAgICAgOiBwdHJfKHgubm9kZV8pLCBidWNrZXRfKGIpLCBidWNrZXRfY291bnRfKGMpIHt9Ci0KLSAgICAgICAgdmFsdWVfdHlwZSYgb3BlcmF0b3IqKCkgY29uc3QgewotICAgICAgICAgICAgcmV0dXJuIHB0cl8tPnZhbHVlKCk7Ci0gICAgICAgIH0KLQotICAgICAgICB2YWx1ZV90eXBlKiBvcGVyYXRvci0+KCkgY29uc3QgewotICAgICAgICAgICAgcmV0dXJuIHB0cl8tPnZhbHVlX3B0cigpOwotICAgICAgICB9Ci0KLSAgICAgICAgbF9pdGVyYXRvciYgb3BlcmF0b3IrKygpIHsKLSAgICAgICAgICAgIHB0cl8gPSBzdGF0aWNfY2FzdDxub2RlX3BvaW50ZXI+KHB0cl8tPm5leHRfKTsKLSAgICAgICAgICAgIGlmIChwdHJfICYmIFBvbGljeTo6dG9fYnVja2V0KGJ1Y2tldF9jb3VudF8sIHB0cl8tPmhhc2hfKQotICAgICAgICAgICAgICAgICAgICAhPSBidWNrZXRfKQotICAgICAgICAgICAgICAgIHB0cl8gPSBub2RlX3BvaW50ZXIoKTsKLSAgICAgICAgICAgIHJldHVybiAqdGhpczsKLSAgICAgICAgfQotCi0gICAgICAgIGxfaXRlcmF0b3Igb3BlcmF0b3IrKyhpbnQpIHsKLSAgICAgICAgICAgIGxfaXRlcmF0b3IgdG1wKCp0aGlzKTsKLSAgICAgICAgICAgICsrKCp0aGlzKTsKLSAgICAgICAgICAgIHJldHVybiB0bXA7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIG9wZXJhdG9yPT0obF9pdGVyYXRvciB4KSBjb25zdCB7Ci0gICAgICAgICAgICByZXR1cm4gcHRyXyA9PSB4LnB0cl87Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIG9wZXJhdG9yIT0obF9pdGVyYXRvciB4KSBjb25zdCB7Ci0gICAgICAgICAgICByZXR1cm4gcHRyXyAhPSB4LnB0cl87Ci0gICAgICAgIH0KLSAgICB9OwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIE5vZGUsIHR5cGVuYW1lIENvbnN0Tm9kZVBvaW50ZXIsIHR5cGVuYW1lIFBvbGljeT4KLSAgICBzdHJ1Y3QgY2xfaXRlcmF0b3IKLSAgICAgICAgOiBwdWJsaWMgbmRuYm9vc3Q6Oml0ZXJhdG9yPAotICAgICAgICAgICAgc3RkOjpmb3J3YXJkX2l0ZXJhdG9yX3RhZywKLSAgICAgICAgICAgIHR5cGVuYW1lIE5vZGU6OnZhbHVlX3R5cGUsCi0gICAgICAgICAgICBzdGQ6OnB0cmRpZmZfdCwKLSAgICAgICAgICAgIENvbnN0Tm9kZVBvaW50ZXIsCi0gICAgICAgICAgICB0eXBlbmFtZSBOb2RlOjp2YWx1ZV90eXBlIGNvbnN0Jj4KLSAgICB7Ci0gICAgICAgIGZyaWVuZCBzdHJ1Y3QgbmRuYm9vc3Q6OnVub3JkZXJlZDo6aXRlcmF0b3JfZGV0YWlsOjpsX2l0ZXJhdG9yCi0gICAgICAgICAgICA8Tm9kZSwgUG9saWN5PjsKLSAgICBwcml2YXRlOgotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgTm9kZTo6bm9kZV9wb2ludGVyIG5vZGVfcG9pbnRlcjsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjppdGVyYXRvcl9kZXRhaWw6Oml0ZXJhdG9yPE5vZGU+IGl0ZXJhdG9yOwotICAgICAgICBub2RlX3BvaW50ZXIgcHRyXzsKLSAgICAgICAgc3RkOjpzaXplX3QgYnVja2V0XzsKLSAgICAgICAgc3RkOjpzaXplX3QgYnVja2V0X2NvdW50XzsKLQotICAgIHB1YmxpYzoKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIE5vZGU6OnZhbHVlX3R5cGUgdmFsdWVfdHlwZTsKLQotICAgICAgICBjbF9pdGVyYXRvcigpIDogcHRyXygpIHt9Ci0KLSAgICAgICAgY2xfaXRlcmF0b3IoaXRlcmF0b3IgeCwgc3RkOjpzaXplX3QgYiwgc3RkOjpzaXplX3QgYykgOgotICAgICAgICAgICAgcHRyXyh4Lm5vZGVfKSwgYnVja2V0XyhiKSwgYnVja2V0X2NvdW50XyhjKSB7fQotCi0gICAgICAgIGNsX2l0ZXJhdG9yKG5kbmJvb3N0Ojp1bm9yZGVyZWQ6Oml0ZXJhdG9yX2RldGFpbDo6bF9pdGVyYXRvcjwKLSAgICAgICAgICAgICAgICBOb2RlLCBQb2xpY3k+IGNvbnN0JiB4KSA6Ci0gICAgICAgICAgICBwdHJfKHgucHRyXyksIGJ1Y2tldF8oeC5idWNrZXRfKSwgYnVja2V0X2NvdW50Xyh4LmJ1Y2tldF9jb3VudF8pCi0gICAgICAgIHt9Ci0KLSAgICAgICAgdmFsdWVfdHlwZSBjb25zdCYgb3BlcmF0b3IqKCkgY29uc3QgewotICAgICAgICAgICAgcmV0dXJuIHB0cl8tPnZhbHVlKCk7Ci0gICAgICAgIH0KLQotICAgICAgICB2YWx1ZV90eXBlIGNvbnN0KiBvcGVyYXRvci0+KCkgY29uc3QgewotICAgICAgICAgICAgcmV0dXJuIHB0cl8tPnZhbHVlX3B0cigpOwotICAgICAgICB9Ci0KLSAgICAgICAgY2xfaXRlcmF0b3ImIG9wZXJhdG9yKysoKSB7Ci0gICAgICAgICAgICBwdHJfID0gc3RhdGljX2Nhc3Q8bm9kZV9wb2ludGVyPihwdHJfLT5uZXh0Xyk7Ci0gICAgICAgICAgICBpZiAocHRyXyAmJiBQb2xpY3k6OnRvX2J1Y2tldChidWNrZXRfY291bnRfLCBwdHJfLT5oYXNoXykKLSAgICAgICAgICAgICAgICAgICAgIT0gYnVja2V0XykKLSAgICAgICAgICAgICAgICBwdHJfID0gbm9kZV9wb2ludGVyKCk7Ci0gICAgICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgICAgIH0KLQotICAgICAgICBjbF9pdGVyYXRvciBvcGVyYXRvcisrKGludCkgewotICAgICAgICAgICAgY2xfaXRlcmF0b3IgdG1wKCp0aGlzKTsKLSAgICAgICAgICAgICsrKCp0aGlzKTsKLSAgICAgICAgICAgIHJldHVybiB0bXA7Ci0gICAgICAgIH0KLQotICAgICAgICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNsX2l0ZXJhdG9yIGNvbnN0JiB4LCBjbF9pdGVyYXRvciBjb25zdCYgeSkgewotICAgICAgICAgICAgcmV0dXJuIHgucHRyXyA9PSB5LnB0cl87Ci0gICAgICAgIH0KLQotICAgICAgICBmcmllbmQgYm9vbCBvcGVyYXRvciE9KGNsX2l0ZXJhdG9yIGNvbnN0JiB4LCBjbF9pdGVyYXRvciBjb25zdCYgeSkgewotICAgICAgICAgICAgcmV0dXJuIHgucHRyXyAhPSB5LnB0cl87Ci0gICAgICAgIH0KLSAgICB9OwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIE5vZGU+Ci0gICAgc3RydWN0IGl0ZXJhdG9yCi0gICAgICAgIDogcHVibGljIG5kbmJvb3N0OjppdGVyYXRvcjwKLSAgICAgICAgICAgIHN0ZDo6Zm9yd2FyZF9pdGVyYXRvcl90YWcsCi0gICAgICAgICAgICB0eXBlbmFtZSBOb2RlOjp2YWx1ZV90eXBlLAotICAgICAgICAgICAgc3RkOjpwdHJkaWZmX3QsCi0gICAgICAgICAgICB0eXBlbmFtZSBOb2RlOjpub2RlX3BvaW50ZXIsCi0gICAgICAgICAgICB0eXBlbmFtZSBOb2RlOjp2YWx1ZV90eXBlJj4KLSAgICB7Ci0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fTUVNQkVSX1RFTVBMQVRFX0ZSSUVORFMpCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSwgdHlwZW5hbWU+Ci0gICAgICAgIGZyaWVuZCBzdHJ1Y3QgbmRuYm9vc3Q6OnVub3JkZXJlZDo6aXRlcmF0b3JfZGV0YWlsOjpjX2l0ZXJhdG9yOwotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUsIHR5cGVuYW1lPgotICAgICAgICBmcmllbmQgc3RydWN0IG5kbmJvb3N0Ojp1bm9yZGVyZWQ6Oml0ZXJhdG9yX2RldGFpbDo6bF9pdGVyYXRvcjsKLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lLCB0eXBlbmFtZSwgdHlwZW5hbWU+Ci0gICAgICAgIGZyaWVuZCBzdHJ1Y3QgbmRuYm9vc3Q6OnVub3JkZXJlZDo6aXRlcmF0b3JfZGV0YWlsOjpjbF9pdGVyYXRvcjsKLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lPgotICAgICAgICBmcmllbmQgc3RydWN0IG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6dGFibGU7Ci0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZT4KLSAgICAgICAgZnJpZW5kIHN0cnVjdCBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnRhYmxlX2ltcGw7Ci0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZT4KLSAgICAgICAgZnJpZW5kIHN0cnVjdCBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6Omdyb3VwZWRfdGFibGVfaW1wbDsKLSAgICBwcml2YXRlOgotI2VuZGlmCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgTm9kZTo6bm9kZV9wb2ludGVyIG5vZGVfcG9pbnRlcjsKLSAgICAgICAgbm9kZV9wb2ludGVyIG5vZGVfOwotCi0gICAgcHVibGljOgotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgTm9kZTo6dmFsdWVfdHlwZSB2YWx1ZV90eXBlOwotCi0gICAgICAgIGl0ZXJhdG9yKCkgOiBub2RlXygpIHt9Ci0KLSAgICAgICAgZXhwbGljaXQgaXRlcmF0b3IodHlwZW5hbWUgTm9kZTo6bGlua19wb2ludGVyIHgpIDoKLSAgICAgICAgICAgIG5vZGVfKHN0YXRpY19jYXN0PG5vZGVfcG9pbnRlcj4oeCkpIHt9Ci0KLSAgICAgICAgdmFsdWVfdHlwZSYgb3BlcmF0b3IqKCkgY29uc3QgewotICAgICAgICAgICAgcmV0dXJuIG5vZGVfLT52YWx1ZSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFsdWVfdHlwZSogb3BlcmF0b3ItPigpIGNvbnN0IHsKLSAgICAgICAgICAgIHJldHVybiAmbm9kZV8tPnZhbHVlKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpdGVyYXRvciYgb3BlcmF0b3IrKygpIHsKLSAgICAgICAgICAgIG5vZGVfID0gc3RhdGljX2Nhc3Q8bm9kZV9wb2ludGVyPihub2RlXy0+bmV4dF8pOwotICAgICAgICAgICAgcmV0dXJuICp0aGlzOwotICAgICAgICB9Ci0KLSAgICAgICAgaXRlcmF0b3Igb3BlcmF0b3IrKyhpbnQpIHsKLSAgICAgICAgICAgIGl0ZXJhdG9yIHRtcChub2RlXyk7Ci0gICAgICAgICAgICBub2RlXyA9IHN0YXRpY19jYXN0PG5vZGVfcG9pbnRlcj4obm9kZV8tPm5leHRfKTsKLSAgICAgICAgICAgIHJldHVybiB0bXA7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sIG9wZXJhdG9yPT0oaXRlcmF0b3IgY29uc3QmIHgpIGNvbnN0IHsKLSAgICAgICAgICAgIHJldHVybiBub2RlXyA9PSB4Lm5vZGVfOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCBvcGVyYXRvciE9KGl0ZXJhdG9yIGNvbnN0JiB4KSBjb25zdCB7Ci0gICAgICAgICAgICByZXR1cm4gbm9kZV8gIT0geC5ub2RlXzsKLSAgICAgICAgfQotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTm9kZSwgdHlwZW5hbWUgQ29uc3ROb2RlUG9pbnRlcj4KLSAgICBzdHJ1Y3QgY19pdGVyYXRvcgotICAgICAgICA6IHB1YmxpYyBuZG5ib29zdDo6aXRlcmF0b3I8Ci0gICAgICAgICAgICBzdGQ6OmZvcndhcmRfaXRlcmF0b3JfdGFnLAotICAgICAgICAgICAgdHlwZW5hbWUgTm9kZTo6dmFsdWVfdHlwZSwKLSAgICAgICAgICAgIHN0ZDo6cHRyZGlmZl90LAotICAgICAgICAgICAgQ29uc3ROb2RlUG9pbnRlciwKLSAgICAgICAgICAgIHR5cGVuYW1lIE5vZGU6OnZhbHVlX3R5cGUgY29uc3QmPgotICAgIHsKLSAgICAgICAgZnJpZW5kIHN0cnVjdCBuZG5ib29zdDo6dW5vcmRlcmVkOjppdGVyYXRvcl9kZXRhaWw6Oml0ZXJhdG9yPE5vZGU+OwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fTUVNQkVSX1RFTVBMQVRFX0ZSSUVORFMpCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZT4KLSAgICAgICAgZnJpZW5kIHN0cnVjdCBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnRhYmxlOwotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWU+Ci0gICAgICAgIGZyaWVuZCBzdHJ1Y3QgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjp0YWJsZV9pbXBsOwotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWU+Ci0gICAgICAgIGZyaWVuZCBzdHJ1Y3QgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpncm91cGVkX3RhYmxlX2ltcGw7Ci0KLSAgICBwcml2YXRlOgotI2VuZGlmCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgTm9kZTo6bm9kZV9wb2ludGVyIG5vZGVfcG9pbnRlcjsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjppdGVyYXRvcl9kZXRhaWw6Oml0ZXJhdG9yPE5vZGU+IGl0ZXJhdG9yOwotICAgICAgICBub2RlX3BvaW50ZXIgbm9kZV87Ci0KLSAgICBwdWJsaWM6Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBOb2RlOjp2YWx1ZV90eXBlIHZhbHVlX3R5cGU7Ci0KLSAgICAgICAgY19pdGVyYXRvcigpIDogbm9kZV8oKSB7fQotCi0gICAgICAgIGV4cGxpY2l0IGNfaXRlcmF0b3IodHlwZW5hbWUgTm9kZTo6bGlua19wb2ludGVyIHgpIDoKLSAgICAgICAgICAgIG5vZGVfKHN0YXRpY19jYXN0PG5vZGVfcG9pbnRlcj4oeCkpIHt9Ci0KLSAgICAgICAgY19pdGVyYXRvcihpdGVyYXRvciBjb25zdCYgeCkgOiBub2RlXyh4Lm5vZGVfKSB7fQotCi0gICAgICAgIHZhbHVlX3R5cGUgY29uc3QmIG9wZXJhdG9yKigpIGNvbnN0IHsKLSAgICAgICAgICAgIHJldHVybiBub2RlXy0+dmFsdWUoKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZhbHVlX3R5cGUgY29uc3QqIG9wZXJhdG9yLT4oKSBjb25zdCB7Ci0gICAgICAgICAgICByZXR1cm4gJm5vZGVfLT52YWx1ZSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgY19pdGVyYXRvciYgb3BlcmF0b3IrKygpIHsKLSAgICAgICAgICAgIG5vZGVfID0gc3RhdGljX2Nhc3Q8bm9kZV9wb2ludGVyPihub2RlXy0+bmV4dF8pOwotICAgICAgICAgICAgcmV0dXJuICp0aGlzOwotICAgICAgICB9Ci0KLSAgICAgICAgY19pdGVyYXRvciBvcGVyYXRvcisrKGludCkgewotICAgICAgICAgICAgY19pdGVyYXRvciB0bXAobm9kZV8pOwotICAgICAgICAgICAgbm9kZV8gPSBzdGF0aWNfY2FzdDxub2RlX3BvaW50ZXI+KG5vZGVfLT5uZXh0Xyk7Ci0gICAgICAgICAgICByZXR1cm4gdG1wOwotICAgICAgICB9Ci0KLSAgICAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjX2l0ZXJhdG9yIGNvbnN0JiB4LCBjX2l0ZXJhdG9yIGNvbnN0JiB5KSB7Ci0gICAgICAgICAgICByZXR1cm4geC5ub2RlXyA9PSB5Lm5vZGVfOwotICAgICAgICB9Ci0KLSAgICAgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IhPShjX2l0ZXJhdG9yIGNvbnN0JiB4LCBjX2l0ZXJhdG9yIGNvbnN0JiB5KSB7Ci0gICAgICAgICAgICByZXR1cm4geC5ub2RlXyAhPSB5Lm5vZGVfOwotICAgICAgICB9Ci0gICAgfTsKLX19fQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgdW5vcmRlcmVkIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLSAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgLy8KLSAgICAvLyBOb2RlIGNvbnN0cnVjdGlvbgotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIE5vZGVBbGxvYz4KLSAgICBzdHJ1Y3Qgbm9kZV9jb25zdHJ1Y3RvcgotICAgIHsKLSAgICBwcml2YXRlOgotCi0gICAgICAgIHR5cGVkZWYgTm9kZUFsbG9jIG5vZGVfYWxsb2NhdG9yOwotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6YWxsb2NhdG9yX3RyYWl0czxOb2RlQWxsb2M+Ci0gICAgICAgICAgICBub2RlX2FsbG9jYXRvcl90cmFpdHM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbm9kZV9hbGxvY2F0b3JfdHJhaXRzOjp2YWx1ZV90eXBlIG5vZGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbm9kZV9hbGxvY2F0b3JfdHJhaXRzOjpwb2ludGVyIG5vZGVfcG9pbnRlcjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBub2RlOjp2YWx1ZV90eXBlIHZhbHVlX3R5cGU7Ci0KLSAgICBwcm90ZWN0ZWQ6Ci0KLSAgICAgICAgbm9kZV9hbGxvY2F0b3ImIGFsbG9jXzsKLSAgICAgICAgbm9kZV9wb2ludGVyIG5vZGVfOwotICAgICAgICBib29sIG5vZGVfY29uc3RydWN0ZWRfOwotICAgICAgICBib29sIHZhbHVlX2NvbnN0cnVjdGVkXzsKLQotICAgIHB1YmxpYzoKLQotICAgICAgICBub2RlX2NvbnN0cnVjdG9yKG5vZGVfYWxsb2NhdG9yJiBuKSA6Ci0gICAgICAgICAgICBhbGxvY18obiksCi0gICAgICAgICAgICBub2RlXygpLAotICAgICAgICAgICAgbm9kZV9jb25zdHJ1Y3RlZF8oZmFsc2UpLAotICAgICAgICAgICAgdmFsdWVfY29uc3RydWN0ZWRfKGZhbHNlKQotICAgICAgICB7Ci0gICAgICAgIH0KLQotICAgICAgICB+bm9kZV9jb25zdHJ1Y3RvcigpOwotCi0gICAgICAgIHZvaWQgY29uc3RydWN0KCk7Ci0KLSAgICAgICAgdGVtcGxhdGUgPE5ETkJPT1NUX1VOT1JERVJFRF9FTVBMQUNFX1RFTVBMQVRFPgotICAgICAgICB2b2lkIGNvbnN0cnVjdF93aXRoX3ZhbHVlKE5ETkJPT1NUX1VOT1JERVJFRF9FTVBMQUNFX0FSR1MpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0cnVjdCgpOwotICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpjb25zdHJ1Y3RfdmFsdWVfaW1wbCgKLSAgICAgICAgICAgICAgICBhbGxvY18sIG5vZGVfLT52YWx1ZV9wdHIoKSwgTkROQk9PU1RfVU5PUkRFUkVEX0VNUExBQ0VfRk9SV0FSRCk7Ci0gICAgICAgICAgICB2YWx1ZV9jb25zdHJ1Y3RlZF8gPSB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEEwPgotICAgICAgICB2b2lkIGNvbnN0cnVjdF93aXRoX3ZhbHVlMihORE5CT09TVF9GV0RfUkVGKEEwKSBhMCkKLSAgICAgICAgewotICAgICAgICAgICAgY29uc3RydWN0KCk7Ci0gICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmNvbnN0cnVjdF92YWx1ZV9pbXBsKAotICAgICAgICAgICAgICAgIGFsbG9jXywgbm9kZV8tPnZhbHVlX3B0cigpLAotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1VOT1JERVJFRF9FTVBMQUNFX0FSR1MxKG5kbmJvb3N0Ojpmb3J3YXJkPEEwPihhMCkpKTsKLSAgICAgICAgICAgIHZhbHVlX2NvbnN0cnVjdGVkXyA9IHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICB2YWx1ZV90eXBlIGNvbnN0JiB2YWx1ZSgpIGNvbnN0IHsKLSAgICAgICAgICAgIE5ETkJPT1NUX0FTU0VSVChub2RlXyAmJiBub2RlX2NvbnN0cnVjdGVkXyAmJiB2YWx1ZV9jb25zdHJ1Y3RlZF8pOwotICAgICAgICAgICAgcmV0dXJuIG5vZGVfLT52YWx1ZSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gbm8gdGhyb3cKLSAgICAgICAgbm9kZV9wb2ludGVyIHJlbGVhc2UoKQotICAgICAgICB7Ci0gICAgICAgICAgICBORE5CT09TVF9BU1NFUlQobm9kZV8gJiYgbm9kZV9jb25zdHJ1Y3RlZF8pOwotICAgICAgICAgICAgbm9kZV9wb2ludGVyIHAgPSBub2RlXzsKLSAgICAgICAgICAgIG5vZGVfID0gbm9kZV9wb2ludGVyKCk7Ci0gICAgICAgICAgICByZXR1cm4gcDsKLSAgICAgICAgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgbm9kZV9jb25zdHJ1Y3Rvcihub2RlX2NvbnN0cnVjdG9yIGNvbnN0Jik7Ci0gICAgICAgIG5vZGVfY29uc3RydWN0b3ImIG9wZXJhdG9yPShub2RlX2NvbnN0cnVjdG9yIGNvbnN0Jik7Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBbGxvYz4KLSAgICBub2RlX2NvbnN0cnVjdG9yPEFsbG9jPjo6fm5vZGVfY29uc3RydWN0b3IoKQotICAgIHsKLSAgICAgICAgaWYgKG5vZGVfKSB7Ci0gICAgICAgICAgICBpZiAodmFsdWVfY29uc3RydWN0ZWRfKSB7Ci0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpkZXN0cm95X3ZhbHVlX2ltcGwoYWxsb2NfLAotICAgICAgICAgICAgICAgICAgICBub2RlXy0+dmFsdWVfcHRyKCkpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAobm9kZV9jb25zdHJ1Y3RlZF8pIHsKLSAgICAgICAgICAgICAgICBub2RlX2FsbG9jYXRvcl90cmFpdHM6OmRlc3Ryb3koYWxsb2NfLAotICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6YWRkcmVzc29mKCpub2RlXykpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBub2RlX2FsbG9jYXRvcl90cmFpdHM6OmRlYWxsb2NhdGUoYWxsb2NfLCBub2RlXywgMSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQWxsb2M+Ci0gICAgdm9pZCBub2RlX2NvbnN0cnVjdG9yPEFsbG9jPjo6Y29uc3RydWN0KCkKLSAgICB7Ci0gICAgICAgIGlmKCFub2RlXykgewotICAgICAgICAgICAgbm9kZV9jb25zdHJ1Y3RlZF8gPSBmYWxzZTsKLSAgICAgICAgICAgIHZhbHVlX2NvbnN0cnVjdGVkXyA9IGZhbHNlOwotCi0gICAgICAgICAgICBub2RlXyA9IG5vZGVfYWxsb2NhdG9yX3RyYWl0czo6YWxsb2NhdGUoYWxsb2NfLCAxKTsKLQotICAgICAgICAgICAgbm9kZV9hbGxvY2F0b3JfdHJhaXRzOjpjb25zdHJ1Y3QoYWxsb2NfLAotICAgICAgICAgICAgICAgIG5kbmJvb3N0OjphZGRyZXNzb2YoKm5vZGVfKSwgbm9kZSgpKTsKLSAgICAgICAgICAgIG5vZGVfLT5pbml0KG5vZGVfKTsKLSAgICAgICAgICAgIG5vZGVfY29uc3RydWN0ZWRfID0gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIE5ETkJPT1NUX0FTU0VSVChub2RlX2NvbnN0cnVjdGVkXyk7Ci0KLSAgICAgICAgICAgIGlmICh2YWx1ZV9jb25zdHJ1Y3RlZF8pCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpkZXN0cm95X3ZhbHVlX2ltcGwoYWxsb2NfLAotICAgICAgICAgICAgICAgICAgICBub2RlXy0+dmFsdWVfcHRyKCkpOwotICAgICAgICAgICAgICAgIHZhbHVlX2NvbnN0cnVjdGVkXyA9IGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgIC8vCi0gICAgLy8gTm9kZSBIb2xkZXIKLSAgICAvLwotICAgIC8vIFRlbXBvcmFyeSBzdG9yZSBmb3Igbm9kZXMuIERlbGV0ZXMgYW55IHRoYXQgYXJlbid0IHVzZWQuCi0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTm9kZUFsbG9jPgotICAgIHN0cnVjdCBub2RlX2hvbGRlciA6IHByaXZhdGUgbm9kZV9jb25zdHJ1Y3RvcjxOb2RlQWxsb2M+Ci0gICAgewotICAgIHByaXZhdGU6Ci0gICAgICAgIHR5cGVkZWYgbm9kZV9jb25zdHJ1Y3RvcjxOb2RlQWxsb2M+IGJhc2U7Ci0KLSAgICAgICAgdHlwZWRlZiBOb2RlQWxsb2Mgbm9kZV9hbGxvY2F0b3I7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjphbGxvY2F0b3JfdHJhaXRzPE5vZGVBbGxvYz4KLSAgICAgICAgICAgIG5vZGVfYWxsb2NhdG9yX3RyYWl0czsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBub2RlX2FsbG9jYXRvcl90cmFpdHM6OnZhbHVlX3R5cGUgbm9kZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBub2RlX2FsbG9jYXRvcl90cmFpdHM6OnBvaW50ZXIgbm9kZV9wb2ludGVyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5vZGU6OnZhbHVlX3R5cGUgdmFsdWVfdHlwZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBub2RlOjpsaW5rX3BvaW50ZXIgbGlua19wb2ludGVyOwotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6Oml0ZXJhdG9yX2RldGFpbDo6aXRlcmF0b3I8bm9kZT4gaXRlcmF0b3I7Ci0KLSAgICAgICAgbm9kZV9wb2ludGVyIG5vZGVzXzsKLQotICAgIHB1YmxpYzoKLQotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVGFibGU+Ci0gICAgICAgIGV4cGxpY2l0IG5vZGVfaG9sZGVyKFRhYmxlJiBiKSA6Ci0gICAgICAgICAgICBiYXNlKGIubm9kZV9hbGxvYygpKSwKLSAgICAgICAgICAgIG5vZGVzXygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChiLnNpemVfKSB7Ci0gICAgICAgICAgICAgICAgdHlwZW5hbWUgVGFibGU6OmxpbmtfcG9pbnRlciBwcmV2ID0gYi5nZXRfcHJldmlvdXNfc3RhcnQoKTsKLSAgICAgICAgICAgICAgICBub2Rlc18gPSBzdGF0aWNfY2FzdDxub2RlX3BvaW50ZXI+KHByZXYtPm5leHRfKTsKLSAgICAgICAgICAgICAgICBwcmV2LT5uZXh0XyA9IGxpbmtfcG9pbnRlcigpOwotICAgICAgICAgICAgICAgIGIuc2l6ZV8gPSAwOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgfm5vZGVfaG9sZGVyKCk7Ci0KLSAgICAgICAgdm9pZCBub2RlX2Zvcl9hc3NpZ25tZW50KCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCF0aGlzLT5ub2RlXyAmJiBub2Rlc18pIHsKLSAgICAgICAgICAgICAgICB0aGlzLT5ub2RlXyA9IG5vZGVzXzsKLSAgICAgICAgICAgICAgICBub2Rlc18gPSBzdGF0aWNfY2FzdDxub2RlX3BvaW50ZXI+KG5vZGVzXy0+bmV4dF8pOwotICAgICAgICAgICAgICAgIHRoaXMtPm5vZGVfLT5pbml0KHRoaXMtPm5vZGVfKTsKLSAgICAgICAgICAgICAgICB0aGlzLT5ub2RlXy0+bmV4dF8gPSBsaW5rX3BvaW50ZXIoKTsKLQotICAgICAgICAgICAgICAgIHRoaXMtPm5vZGVfY29uc3RydWN0ZWRfID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB0aGlzLT52YWx1ZV9jb25zdHJ1Y3RlZF8gPSB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgICAgIGlubGluZSB2b2lkIGFzc2lnbl9pbXBsKFQgY29uc3QmIHYpIHsKLSAgICAgICAgICAgIGlmICh0aGlzLT5ub2RlXyAmJiB0aGlzLT52YWx1ZV9jb25zdHJ1Y3RlZF8pIHsKLSAgICAgICAgICAgICAgICB0aGlzLT5ub2RlXy0+dmFsdWUoKSA9IHY7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICB0aGlzLT5jb25zdHJ1Y3Rfd2l0aF92YWx1ZTIodik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotICAgICAgICBpbmxpbmUgdm9pZCBhc3NpZ25faW1wbChzdGQ6OnBhaXI8VDEgY29uc3QsIFQyPiBjb25zdCYgdikgewotICAgICAgICAgICAgdGhpcy0+Y29uc3RydWN0X3dpdGhfdmFsdWUyKHYpOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgICAgIGlubGluZSB2b2lkIG1vdmVfYXNzaWduX2ltcGwoVCYgdikgewotICAgICAgICAgICAgaWYgKHRoaXMtPm5vZGVfICYmIHRoaXMtPnZhbHVlX2NvbnN0cnVjdGVkXykgewotICAgICAgICAgICAgICAgIHRoaXMtPm5vZGVfLT52YWx1ZSgpID0gbmRuYm9vc3Q6Om1vdmUodik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICB0aGlzLT5jb25zdHJ1Y3Rfd2l0aF92YWx1ZTIobmRuYm9vc3Q6Om1vdmUodikpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KLSAgICAgICAgaW5saW5lIHZvaWQgbW92ZV9hc3NpZ25faW1wbChzdGQ6OnBhaXI8VDEgY29uc3QsIFQyPiYgdikgewotICAgICAgICAgICAgdGhpcy0+Y29uc3RydWN0X3dpdGhfdmFsdWUyKG5kbmJvb3N0Ojptb3ZlKHYpKTsKLSAgICAgICAgfQotCi0gICAgICAgIG5vZGVfcG9pbnRlciBjb3B5X29mKHZhbHVlX3R5cGUgY29uc3QmIHYpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG5vZGVfZm9yX2Fzc2lnbm1lbnQoKTsKLSAgICAgICAgICAgIGFzc2lnbl9pbXBsKHYpOwotICAgICAgICAgICAgcmV0dXJuIGJhc2U6OnJlbGVhc2UoKTsKLSAgICAgICAgfQotCi0gICAgICAgIG5vZGVfcG9pbnRlciBtb3ZlX2NvcHlfb2YodmFsdWVfdHlwZSYgdikKLSAgICAgICAgewotICAgICAgICAgICAgbm9kZV9mb3JfYXNzaWdubWVudCgpOwotICAgICAgICAgICAgbW92ZV9hc3NpZ25faW1wbCh2KTsKLSAgICAgICAgICAgIHJldHVybiBiYXNlOjpyZWxlYXNlKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpdGVyYXRvciBiZWdpbigpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcihub2Rlc18pOwotICAgICAgICB9Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBbGxvYz4KLSAgICBub2RlX2hvbGRlcjxBbGxvYz46On5ub2RlX2hvbGRlcigpCi0gICAgewotICAgICAgICB3aGlsZSAobm9kZXNfKSB7Ci0gICAgICAgICAgICBub2RlX3BvaW50ZXIgcCA9IG5vZGVzXzsKLSAgICAgICAgICAgIG5vZGVzXyA9IHN0YXRpY19jYXN0PG5vZGVfcG9pbnRlcj4ocC0+bmV4dF8pOwotCi0gICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmRlc3Ryb3lfdmFsdWVfaW1wbCh0aGlzLT5hbGxvY18sCi0gICAgICAgICAgICAgICAgcC0+dmFsdWVfcHRyKCkpOwotICAgICAgICAgICAgbm9kZV9hbGxvY2F0b3JfdHJhaXRzOjpkZXN0cm95KHRoaXMtPmFsbG9jXywgbmRuYm9vc3Q6OmFkZHJlc3NvZigqcCkpOwotICAgICAgICAgICAgbm9kZV9hbGxvY2F0b3JfdHJhaXRzOjpkZWFsbG9jYXRlKHRoaXMtPmFsbG9jXywgcCwgMSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgLy8KLSAgICAvLyBCdWNrZXQKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBOb2RlUG9pbnRlcj4KLSAgICBzdHJ1Y3QgYnVja2V0Ci0gICAgewotICAgICAgICB0eXBlZGVmIE5vZGVQb2ludGVyIGxpbmtfcG9pbnRlcjsKLSAgICAgICAgbGlua19wb2ludGVyIG5leHRfOwotCi0gICAgICAgIGJ1Y2tldCgpIDogbmV4dF8oKSB7fQotCi0gICAgICAgIGxpbmtfcG9pbnRlciBmaXJzdF9mcm9tX3N0YXJ0KCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5leHRfOwotICAgICAgICB9Ci0KLSAgICAgICAgZW51bSB7IGV4dHJhX25vZGUgPSB0cnVlIH07Ci0gICAgfTsKLQotICAgIHN0cnVjdCBwdHJfYnVja2V0Ci0gICAgewotICAgICAgICB0eXBlZGVmIHB0cl9idWNrZXQqIGxpbmtfcG9pbnRlcjsKLSAgICAgICAgbGlua19wb2ludGVyIG5leHRfOwotCi0gICAgICAgIHB0cl9idWNrZXQoKSA6IG5leHRfKDApIHt9Ci0KLSAgICAgICAgbGlua19wb2ludGVyIGZpcnN0X2Zyb21fc3RhcnQoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdGhpczsKLSAgICAgICAgfQotCi0gICAgICAgIGVudW0geyBleHRyYV9ub2RlID0gZmFsc2UgfTsKLSAgICB9OwotCi0gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgIC8vCi0gICAgLy8gSGFzaCBQb2xpY3kKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBTaXplVD4KLSAgICBzdHJ1Y3QgcHJpbWVfcG9saWN5Ci0gICAgewotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSGFzaCwgdHlwZW5hbWUgVD4KLSAgICAgICAgc3RhdGljIGlubGluZSBTaXplVCBhcHBseV9oYXNoKEhhc2ggY29uc3QmIGhmLCBUIGNvbnN0JiB4KSB7Ci0gICAgICAgICAgICByZXR1cm4gaGYoeCk7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgaW5saW5lIFNpemVUIHRvX2J1Y2tldChTaXplVCBidWNrZXRfY291bnQsIFNpemVUIGhhc2gpIHsKLSAgICAgICAgICAgIHJldHVybiBoYXNoICUgYnVja2V0X2NvdW50OwotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIGlubGluZSBTaXplVCBuZXdfYnVja2V0X2NvdW50KFNpemVUIG1pbikgewotICAgICAgICAgICAgcmV0dXJuIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6bmV4dF9wcmltZShtaW4pOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIGlubGluZSBTaXplVCBwcmV2X2J1Y2tldF9jb3VudChTaXplVCBtYXgpIHsKLSAgICAgICAgICAgIHJldHVybiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnByZXZfcHJpbWUobWF4KTsKLSAgICAgICAgfQotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgU2l6ZVQ+Ci0gICAgc3RydWN0IG1peDY0X3BvbGljeQotICAgIHsKLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEhhc2gsIHR5cGVuYW1lIFQ+Ci0gICAgICAgIHN0YXRpYyBpbmxpbmUgU2l6ZVQgYXBwbHlfaGFzaChIYXNoIGNvbnN0JiBoZiwgVCBjb25zdCYgeCkgewotICAgICAgICAgICAgU2l6ZVQga2V5ID0gaGYoeCk7Ci0gICAgICAgICAgICBrZXkgPSAofmtleSkgKyAoa2V5IDw8IDIxKTsgLy8ga2V5ID0gKGtleSA8PCAyMSkgLSBrZXkgLSAxOwotICAgICAgICAgICAga2V5ID0ga2V5IF4gKGtleSA+PiAyNCk7Ci0gICAgICAgICAgICBrZXkgPSAoa2V5ICsgKGtleSA8PCAzKSkgKyAoa2V5IDw8IDgpOyAvLyBrZXkgKiAyNjUKLSAgICAgICAgICAgIGtleSA9IGtleSBeIChrZXkgPj4gMTQpOwotICAgICAgICAgICAga2V5ID0gKGtleSArIChrZXkgPDwgMikpICsgKGtleSA8PCA0KTsgLy8ga2V5ICogMjEKLSAgICAgICAgICAgIGtleSA9IGtleSBeIChrZXkgPj4gMjgpOwotICAgICAgICAgICAga2V5ID0ga2V5ICsgKGtleSA8PCAzMSk7Ci0gICAgICAgICAgICByZXR1cm4ga2V5OwotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIGlubGluZSBTaXplVCB0b19idWNrZXQoU2l6ZVQgYnVja2V0X2NvdW50LCBTaXplVCBoYXNoKSB7Ci0gICAgICAgICAgICByZXR1cm4gaGFzaCAmIChidWNrZXRfY291bnQgLSAxKTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyBpbmxpbmUgU2l6ZVQgbmV3X2J1Y2tldF9jb3VudChTaXplVCBtaW4pIHsKLSAgICAgICAgICAgIGlmIChtaW4gPD0gNCkgcmV0dXJuIDQ7Ci0gICAgICAgICAgICAtLW1pbjsKLSAgICAgICAgICAgIG1pbiB8PSBtaW4gPj4gMTsKLSAgICAgICAgICAgIG1pbiB8PSBtaW4gPj4gMjsKLSAgICAgICAgICAgIG1pbiB8PSBtaW4gPj4gNDsKLSAgICAgICAgICAgIG1pbiB8PSBtaW4gPj4gODsKLSAgICAgICAgICAgIG1pbiB8PSBtaW4gPj4gMTY7Ci0gICAgICAgICAgICBtaW4gfD0gbWluID4+IDMyOwotICAgICAgICAgICAgcmV0dXJuIG1pbiArIDE7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgaW5saW5lIFNpemVUIHByZXZfYnVja2V0X2NvdW50KFNpemVUIG1heCkgewotICAgICAgICAgICAgbWF4IHw9IG1heCA+PiAxOwotICAgICAgICAgICAgbWF4IHw9IG1heCA+PiAyOwotICAgICAgICAgICAgbWF4IHw9IG1heCA+PiA0OwotICAgICAgICAgICAgbWF4IHw9IG1heCA+PiA4OwotICAgICAgICAgICAgbWF4IHw9IG1heCA+PiAxNjsKLSAgICAgICAgICAgIG1heCB8PSBtYXggPj4gMzI7Ci0gICAgICAgICAgICByZXR1cm4gKG1heCA+PiAxKSArIDE7Ci0gICAgICAgIH0KLSAgICB9OwotCi0gICAgdGVtcGxhdGUgPGludCBkaWdpdHMsIGludCByYWRpeD4KLSAgICBzdHJ1Y3QgcGlja19wb2xpY3lfaW1wbCB7Ci0gICAgICAgIHR5cGVkZWYgcHJpbWVfcG9saWN5PHN0ZDo6c2l6ZV90PiB0eXBlOwotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZSA8PgotICAgIHN0cnVjdCBwaWNrX3BvbGljeV9pbXBsPDY0LCAyPiB7Ci0gICAgICAgIHR5cGVkZWYgbWl4NjRfcG9saWN5PHN0ZDo6c2l6ZV90PiB0eXBlOwotICAgIH07Ci0KLSAgICBzdHJ1Y3QgcGlja19wb2xpY3kgOgotICAgICAgICBwaWNrX3BvbGljeV9pbXBsPAotICAgICAgICAgICAgc3RkOjpudW1lcmljX2xpbWl0czxzdGQ6OnNpemVfdD46OmRpZ2l0cywKLSAgICAgICAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8c3RkOjpzaXplX3Q+OjpyYWRpeD4ge307Ci0KLSAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgLy8gRnVuY3Rpb25zCi0KLSAgICAvLyBBc3NpZ25pbmcgYW5kIHN3YXBwaW5nIHRoZSBlcXVhbGl0eSBhbmQgaGFzaCBmdW5jdGlvbiBvYmplY3RzCi0gICAgLy8gbmVlZHMgc3Ryb25nIGV4Y2VwdGlvbiBzYWZldHkuIFRvIGltcGxlbWVudCB0aGF0IG5vcm1hbGx5IHdlJ2QKLSAgICAvLyByZXF1aXJlIG9uZSBvZiB0aGVtIHRvIGJlIGtub3duIHRvIG5vdCB0aHJvdyBhbmQgdGhlIG90aGVyIHRvCi0gICAgLy8gZ3VhcmFudGVlIHN0cm9uZyBleGNlcHRpb24gc2FmZXR5LiBVbmZvcnR1bmF0ZWx5IHRoZXkgYm90aCBvbmx5Ci0gICAgLy8gaGF2ZSBiYXNpYyBleGNlcHRpb24gc2FmZXR5LiBTbyB0byBhY2hlaXZlIHN0cm9uZyBleGNlcHRpb24KLSAgICAvLyBzYWZldHkgd2UgaGF2ZSBzdG9yYWdlIHNwYWNlIGZvciB0d28gY29waWVzLCBhbmQgYXNzaWduIHRoZSBuZXcKLSAgICAvLyBjb3BpZXMgdG8gdGhlIHVudXNlZCBzcGFjZS4gVGhlbiBzd2l0Y2ggdG8gdXNpbmcgdGhhdCB0byB1c2UKLSAgICAvLyB0aGVtLiBUaGlzIGlzIGltcGxlbWVudGVkIGluICdzZXRfaGFzaF9mdW5jdGlvbnMnIHdoaWNoCi0gICAgLy8gYXRvbWljYWxseSBhc3NpZ25zIHRoZSBuZXcgZnVuY3Rpb24gb2JqZWN0cyBpbiBhIHN0cm9uZ2x5Ci0gICAgLy8gZXhjZXB0aW9uIHNhZmUgbWFubmVyLgotCi0gICAgdGVtcGxhdGUgPGNsYXNzIEgsIGNsYXNzIFAsIGJvb2wgTm9UaHJvd01vdmVBc3NpZ24+Ci0gICAgY2xhc3Mgc2V0X2hhc2hfZnVuY3Rpb25zOwotCi0gICAgdGVtcGxhdGUgPGNsYXNzIEgsIGNsYXNzIFA+Ci0gICAgY2xhc3MgZnVuY3Rpb25zCi0gICAgewotICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgbm90aHJvd19tb3ZlX2Fzc2lnbmFibGUgPQotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojppc19ub3Rocm93X21vdmVfYXNzaWduYWJsZTxIPjo6dmFsdWUgJiYKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6aXNfbm90aHJvd19tb3ZlX2Fzc2lnbmFibGU8UD46OnZhbHVlOwotICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBub3Rocm93X21vdmVfY29uc3RydWN0aWJsZSA9Ci0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmlzX25vdGhyb3dfbW92ZV9jb25zdHJ1Y3RpYmxlPEg+Ojp2YWx1ZSAmJgotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojppc19ub3Rocm93X21vdmVfY29uc3RydWN0aWJsZTxQPjo6dmFsdWU7Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBmcmllbmQgY2xhc3MgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpzZXRfaGFzaF9mdW5jdGlvbnM8SCwgUCwKLSAgICAgICAgICAgICAgIG5vdGhyb3dfbW92ZV9hc3NpZ25hYmxlPjsKLSAgICAgICAgZnVuY3Rpb25zJiBvcGVyYXRvcj0oZnVuY3Rpb25zIGNvbnN0Jik7Ci0KLSAgICAgICAgdHlwZWRlZiBjb21wcmVzc2VkPEgsIFA+IGZ1bmN0aW9uX3BhaXI7Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6YWxpZ25lZF9zdG9yYWdlPAotICAgICAgICAgICAgc2l6ZW9mKGZ1bmN0aW9uX3BhaXIpLAotICAgICAgICAgICAgbmRuYm9vc3Q6OmFsaWdubWVudF9vZjxmdW5jdGlvbl9wYWlyPjo6dmFsdWU+Ojp0eXBlIGFsaWduZWRfZnVuY3Rpb247Ci0KLSAgICAgICAgYm9vbCBjdXJyZW50XzsgLy8gVGhlIGN1cnJlbnRseSBhY3RpdmUgZnVuY3Rpb25zLgotICAgICAgICBhbGlnbmVkX2Z1bmN0aW9uIGZ1bmNzX1syXTsKLQotICAgICAgICBmdW5jdGlvbl9wYWlyIGNvbnN0JiBjdXJyZW50KCkgY29uc3QgewotICAgICAgICAgICAgcmV0dXJuICpzdGF0aWNfY2FzdDxmdW5jdGlvbl9wYWlyIGNvbnN0Kj4oCi0gICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dm9pZCBjb25zdCo+KCZmdW5jc19bY3VycmVudF9dKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbl9wYWlyJiBjdXJyZW50KCkgewotICAgICAgICAgICAgcmV0dXJuICpzdGF0aWNfY2FzdDxmdW5jdGlvbl9wYWlyKj4oCi0gICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dm9pZCo+KCZmdW5jc19bY3VycmVudF9dKSk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGNvbnN0cnVjdChib29sIHdoaWNoLCBIIGNvbnN0JiBoZiwgUCBjb25zdCYgZXEpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG5ldygodm9pZCopICZmdW5jc19bd2hpY2hdKSBmdW5jdGlvbl9wYWlyKGhmLCBlcSk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGNvbnN0cnVjdChib29sIHdoaWNoLCBmdW5jdGlvbl9wYWlyIGNvbnN0JiBmKQotICAgICAgICB7Ci0gICAgICAgICAgICBuZXcoKHZvaWQqKSAmZnVuY3NfW3doaWNoXSkgZnVuY3Rpb25fcGFpcihmKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgdm9pZCBjb25zdHJ1Y3QoYm9vbCB3aGljaCwgZnVuY3Rpb25fcGFpciYgZiwKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6Om1vdmVfdGFnIG0pCi0gICAgICAgIHsKLSAgICAgICAgICAgIG5ldygodm9pZCopICZmdW5jc19bd2hpY2hdKSBmdW5jdGlvbl9wYWlyKGYsIG0pOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBkZXN0cm95KGJvb2wgd2hpY2gpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6ZGVzdHJveSgoZnVuY3Rpb25fcGFpciopKCZmdW5jc19bd2hpY2hdKSk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgcHVibGljOgotCi0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpzZXRfaGFzaF9mdW5jdGlvbnM8SCwgUCwKLSAgICAgICAgICAgICAgICBub3Rocm93X21vdmVfYXNzaWduYWJsZT4gc2V0X2hhc2hfZnVuY3Rpb25zOwotCi0gICAgICAgIGZ1bmN0aW9ucyhIIGNvbnN0JiBoZiwgUCBjb25zdCYgZXEpCi0gICAgICAgICAgICA6IGN1cnJlbnRfKGZhbHNlKQotICAgICAgICB7Ci0gICAgICAgICAgICBjb25zdHJ1Y3QoY3VycmVudF8sIGhmLCBlcSk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbnMoZnVuY3Rpb25zIGNvbnN0JiBiZikKLSAgICAgICAgICAgIDogY3VycmVudF8oZmFsc2UpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0cnVjdChjdXJyZW50XywgYmYuY3VycmVudCgpKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9ucyhmdW5jdGlvbnMmIGJmLCBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6Om1vdmVfdGFnIG0pCi0gICAgICAgICAgICA6IGN1cnJlbnRfKGZhbHNlKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAobm90aHJvd19tb3ZlX2NvbnN0cnVjdGlibGUpIHsKLSAgICAgICAgICAgICAgICBjb25zdHJ1Y3QoY3VycmVudF8sIGJmLmN1cnJlbnQoKSwgbSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBjb25zdHJ1Y3QoY3VycmVudF8sIGJmLmN1cnJlbnQoKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICB+ZnVuY3Rpb25zKCkgewotICAgICAgICAgICAgdGhpcy0+ZGVzdHJveShjdXJyZW50Xyk7Ci0gICAgICAgIH0KLQotICAgICAgICBIIGNvbnN0JiBoYXNoX2Z1bmN0aW9uKCkgY29uc3QgewotICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnQoKS5maXJzdCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgUCBjb25zdCYga2V5X2VxKCkgY29uc3QgewotICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnQoKS5zZWNvbmQoKTsKLSAgICAgICAgfQotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgSCwgY2xhc3MgUD4KLSAgICBjbGFzcyBzZXRfaGFzaF9mdW5jdGlvbnM8SCwgUCwgZmFsc2U+Ci0gICAgewotICAgICAgICBzZXRfaGFzaF9mdW5jdGlvbnMoc2V0X2hhc2hfZnVuY3Rpb25zIGNvbnN0Jik7Ci0gICAgICAgIHNldF9oYXNoX2Z1bmN0aW9ucyYgb3BlcmF0b3I9KHNldF9oYXNoX2Z1bmN0aW9ucyBjb25zdCYpOwotCi0gICAgICAgIHR5cGVkZWYgZnVuY3Rpb25zPEgsIFA+IGZ1bmN0aW9uc190eXBlOwotICAgIAotICAgICAgICBmdW5jdGlvbnNfdHlwZSYgZnVuY3Rpb25zXzsKLSAgICAgICAgYm9vbCB0bXBfZnVuY3Rpb25zXzsKLQotICAgIHB1YmxpYzoKLQotICAgICAgICBzZXRfaGFzaF9mdW5jdGlvbnMoZnVuY3Rpb25zX3R5cGUmIGYsIEggY29uc3QmIGgsIFAgY29uc3QmIHApCi0gICAgICAgICAgOiBmdW5jdGlvbnNfKGYpLAotICAgICAgICAgICAgdG1wX2Z1bmN0aW9uc18oIWYuY3VycmVudF8pCi0gICAgICAgIHsKLSAgICAgICAgICAgIGYuY29uc3RydWN0KHRtcF9mdW5jdGlvbnNfLCBoLCBwKTsKLSAgICAgICAgfQotCi0gICAgICAgIHNldF9oYXNoX2Z1bmN0aW9ucyhmdW5jdGlvbnNfdHlwZSYgZiwgZnVuY3Rpb25zX3R5cGUgY29uc3QmIG90aGVyKQotICAgICAgICAgIDogZnVuY3Rpb25zXyhmKSwKLSAgICAgICAgICAgIHRtcF9mdW5jdGlvbnNfKCFmLmN1cnJlbnRfKQotICAgICAgICB7Ci0gICAgICAgICAgICBmLmNvbnN0cnVjdCh0bXBfZnVuY3Rpb25zXywgb3RoZXIuY3VycmVudCgpKTsKLSAgICAgICAgfQotCi0gICAgICAgIH5zZXRfaGFzaF9mdW5jdGlvbnMoKQotICAgICAgICB7Ci0gICAgICAgICAgICBmdW5jdGlvbnNfLmRlc3Ryb3kodG1wX2Z1bmN0aW9uc18pOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBjb21taXQoKQotICAgICAgICB7Ci0gICAgICAgICAgICBmdW5jdGlvbnNfLmN1cnJlbnRfID0gdG1wX2Z1bmN0aW9uc187Ci0gICAgICAgICAgICB0bXBfZnVuY3Rpb25zXyA9ICF0bXBfZnVuY3Rpb25zXzsKLSAgICAgICAgfQotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgSCwgY2xhc3MgUD4KLSAgICBjbGFzcyBzZXRfaGFzaF9mdW5jdGlvbnM8SCwgUCwgdHJ1ZT4KLSAgICB7Ci0gICAgICAgIHNldF9oYXNoX2Z1bmN0aW9ucyhzZXRfaGFzaF9mdW5jdGlvbnMgY29uc3QmKTsKLSAgICAgICAgc2V0X2hhc2hfZnVuY3Rpb25zJiBvcGVyYXRvcj0oc2V0X2hhc2hfZnVuY3Rpb25zIGNvbnN0Jik7Ci0KLSAgICAgICAgdHlwZWRlZiBmdW5jdGlvbnM8SCwgUD4gZnVuY3Rpb25zX3R5cGU7Ci0KLSAgICAgICAgZnVuY3Rpb25zX3R5cGUmIGZ1bmN0aW9uc187Ci0gICAgICAgIEggaGFzaF87Ci0gICAgICAgIFAgcHJlZF87Ci0gICAgCi0gICAgcHVibGljOgotCi0gICAgICAgIHNldF9oYXNoX2Z1bmN0aW9ucyhmdW5jdGlvbnNfdHlwZSYgZiwgSCBjb25zdCYgaCwgUCBjb25zdCYgcCkgOgotICAgICAgICAgICAgZnVuY3Rpb25zXyhmKSwKLSAgICAgICAgICAgIGhhc2hfKGgpLAotICAgICAgICAgICAgcHJlZF8ocCkge30KLQotICAgICAgICBzZXRfaGFzaF9mdW5jdGlvbnMoZnVuY3Rpb25zX3R5cGUmIGYsIGZ1bmN0aW9uc190eXBlIGNvbnN0JiBvdGhlcikgOgotICAgICAgICAgICAgZnVuY3Rpb25zXyhmKSwKLSAgICAgICAgICAgIGhhc2hfKG90aGVyLmhhc2hfZnVuY3Rpb24oKSksCi0gICAgICAgICAgICBwcmVkXyhvdGhlci5rZXlfZXEoKSkge30KLQotICAgICAgICB2b2lkIGNvbW1pdCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZ1bmN0aW9uc18uY3VycmVudCgpLmZpcnN0KCkgPSBuZG5ib29zdDo6bW92ZShoYXNoXyk7Ci0gICAgICAgICAgICBmdW5jdGlvbnNfLmN1cnJlbnQoKS5zZWNvbmQoKSA9IG5kbmJvb3N0Ojptb3ZlKHByZWRfKTsKLSAgICAgICAgfQotICAgIH07Ci0gICAgCi0gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgIC8vIHJ2YWx1ZSBwYXJhbWV0ZXJzIHdoZW4gdHlwZSBjYW4ndCBiZSBhIE5ETkJPT1NUX1JWX1JFRihUKSBwYXJhbWV0ZXIKLSAgICAvLyBlLmcuIGZvciBpbnQKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTKQotIyAgIGRlZmluZSBORE5CT09TVF9VTk9SREVSRURfUlZfUkVGKFQpIE5ETkJPT1NUX1JWX1JFRihUKQotI2Vsc2UKLSAgICBzdHJ1Y3QgcGxlYXNlX2lnbm9yZV90aGlzX292ZXJsb2FkIHsKLSAgICAgICAgdHlwZWRlZiBwbGVhc2VfaWdub3JlX3RoaXNfb3ZlcmxvYWQgdHlwZTsKLSAgICB9OwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgc3RydWN0IHJ2X3JlZl9pbXBsIHsKLSAgICAgICAgdHlwZWRlZiBORE5CT09TVF9SVl9SRUYoVCkgdHlwZTsKLSAgICB9OwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgc3RydWN0IHJ2X3JlZiA6Ci0gICAgICAgIG5kbmJvb3N0OjpkZXRhaWw6OmlmX3RydWU8Ci0gICAgICAgICAgICBuZG5ib29zdDo6aXNfY2xhc3M8VD46OnZhbHVlCi0gICAgICAgID46Ok5ETkJPT1NUX05FU1RFRF9URU1QTEFURSB0aGVuIDwKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6cnZfcmVmX2ltcGw8VD4sCi0gICAgICAgICAgICBwbGVhc2VfaWdub3JlX3RoaXNfb3ZlcmxvYWQKLSAgICAgICAgPjo6dHlwZQotICAgIHt9OwotCi0jICAgZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9SVl9SRUYoVCkgXAotICAgICAgICB0eXBlbmFtZSBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnJ2X3JlZjxUPjo6dHlwZQotI2VuZGlmCi19fX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Vub3JkZXJlZC9kZXRhaWwvZXF1aXZhbGVudC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Vub3JkZXJlZC9kZXRhaWwvZXF1aXZhbGVudC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhiNjJkNTkuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC91bm9yZGVyZWQvZGV0YWlsL2VxdWl2YWxlbnQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjgwICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IChDKSAyMDAzLTIwMDQgSmVyZW15IEIuIE1haXRpbi1TaGVwYXJkLgotLy8gQ29weXJpZ2h0IChDKSAyMDA1LTIwMTEgRGFuaWVsIEphbWVzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9VTk9SREVSRURfREVUQUlMX0VRVUlWQUxFTlRfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9ERVRBSUxfRVFVSVZBTEVOVF9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC91bm9yZGVyZWQvZGV0YWlsL3RhYmxlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC91bm9yZGVyZWQvZGV0YWlsL2V4dHJhY3Rfa2V5LmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsgbmFtZXNwYWNlIHVub3JkZXJlZCB7IG5hbWVzcGFjZSBkZXRhaWwgewotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEEsIHR5cGVuYW1lIFQ+IHN0cnVjdCBncm91cGVkX25vZGU7Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBncm91cGVkX3B0cl9ub2RlOwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUeXBlcz4gc3RydWN0IGdyb3VwZWRfdGFibGVfaW1wbDsKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBLCB0eXBlbmFtZSBUPgotICAgIHN0cnVjdCBncm91cGVkX25vZGUgOgotICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnZhbHVlX2Jhc2U8VD4KLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgOjpuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnJlYmluZF93cmFwPAotICAgICAgICAgICAgQSwgZ3JvdXBlZF9ub2RlPEEsIFQ+ID46OnR5cGUgYWxsb2NhdG9yOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIDo6bmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjoKLSAgICAgICAgICAgIGFsbG9jYXRvcl90cmFpdHM8YWxsb2NhdG9yPjo6cG9pbnRlciBub2RlX3BvaW50ZXI7Ci0gICAgICAgIHR5cGVkZWYgbm9kZV9wb2ludGVyIGxpbmtfcG9pbnRlcjsKLQotICAgICAgICBsaW5rX3BvaW50ZXIgbmV4dF87Ci0gICAgICAgIG5vZGVfcG9pbnRlciBncm91cF9wcmV2XzsKLSAgICAgICAgc3RkOjpzaXplX3QgaGFzaF87Ci0KLSAgICAgICAgZ3JvdXBlZF9ub2RlKCkgOgotICAgICAgICAgICAgbmV4dF8oKSwKLSAgICAgICAgICAgIGdyb3VwX3ByZXZfKCksCi0gICAgICAgICAgICBoYXNoXygwKQotICAgICAgICB7fQotCi0gICAgICAgIHZvaWQgaW5pdChub2RlX3BvaW50ZXIgc2VsZikKLSAgICAgICAgewotICAgICAgICAgICAgZ3JvdXBfcHJldl8gPSBzZWxmOwotICAgICAgICB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBncm91cGVkX25vZGUmIG9wZXJhdG9yPShncm91cGVkX25vZGUgY29uc3QmKTsKLSAgICB9OwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgc3RydWN0IGdyb3VwZWRfcHRyX25vZGUgOgotICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnZhbHVlX2Jhc2U8VD4sCi0gICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6cHRyX2J1Y2tldAotICAgIHsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnB0cl9idWNrZXQgYnVja2V0X2Jhc2U7Ci0gICAgICAgIHR5cGVkZWYgZ3JvdXBlZF9wdHJfbm9kZTxUPiogbm9kZV9wb2ludGVyOwotICAgICAgICB0eXBlZGVmIHB0cl9idWNrZXQqIGxpbmtfcG9pbnRlcjsKLQotICAgICAgICBub2RlX3BvaW50ZXIgZ3JvdXBfcHJldl87Ci0gICAgICAgIHN0ZDo6c2l6ZV90IGhhc2hfOwotCi0gICAgICAgIGdyb3VwZWRfcHRyX25vZGUoKSA6Ci0gICAgICAgICAgICBidWNrZXRfYmFzZSgpLAotICAgICAgICAgICAgZ3JvdXBfcHJldl8oMCksCi0gICAgICAgICAgICBoYXNoXygwKQotICAgICAgICB7fQotCi0gICAgICAgIHZvaWQgaW5pdChub2RlX3BvaW50ZXIgc2VsZikKLSAgICAgICAgewotICAgICAgICAgICAgZ3JvdXBfcHJldl8gPSBzZWxmOwotICAgICAgICB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBncm91cGVkX3B0cl9ub2RlJiBvcGVyYXRvcj0oZ3JvdXBlZF9wdHJfbm9kZSBjb25zdCYpOwotICAgIH07Ci0KLSAgICAvLyBJZiB0aGUgYWxsb2NhdG9yIHVzZXMgcmF3IHBvaW50ZXJzIHVzZSBncm91cGVkX3B0cl9ub2RlCi0gICAgLy8gT3RoZXJ3aXNlIHVzZSBncm91cGVkX25vZGUuCi0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQSwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgTm9kZVB0ciwgdHlwZW5hbWUgQnVja2V0UHRyPgotICAgIHN0cnVjdCBwaWNrX2dyb3VwZWRfbm9kZTIKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpncm91cGVkX25vZGU8QSwgVD4gbm9kZTsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6YWxsb2NhdG9yX3RyYWl0czwKLSAgICAgICAgICAgIHR5cGVuYW1lIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6cmViaW5kX3dyYXA8QSwgbm9kZT46OnR5cGUKLSAgICAgICAgPjo6cG9pbnRlciBub2RlX3BvaW50ZXI7Ci0KLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmJ1Y2tldDxub2RlX3BvaW50ZXI+IGJ1Y2tldDsKLSAgICAgICAgdHlwZWRlZiBub2RlX3BvaW50ZXIgbGlua19wb2ludGVyOwotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQSwgdHlwZW5hbWUgVD4KLSAgICBzdHJ1Y3QgcGlja19ncm91cGVkX25vZGUyPEEsIFQsCi0gICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6Z3JvdXBlZF9wdHJfbm9kZTxUPiosCi0gICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6cHRyX2J1Y2tldCo+Ci0gICAgewotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6Z3JvdXBlZF9wdHJfbm9kZTxUPiBub2RlOwotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6cHRyX2J1Y2tldCBidWNrZXQ7Ci0gICAgICAgIHR5cGVkZWYgYnVja2V0KiBsaW5rX3BvaW50ZXI7Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBLCB0eXBlbmFtZSBUPgotICAgIHN0cnVjdCBwaWNrX2dyb3VwZWRfbm9kZQotICAgIHsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmFsbG9jYXRvcl90cmFpdHM8Ci0gICAgICAgICAgICB0eXBlbmFtZSBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnJlYmluZF93cmFwPEEsCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpncm91cGVkX3B0cl9ub2RlPFQ+ID46OnR5cGUKLSAgICAgICAgPiB0ZW50YXRpdmVfbm9kZV90cmFpdHM7Ci0KLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmFsbG9jYXRvcl90cmFpdHM8Ci0gICAgICAgICAgICB0eXBlbmFtZSBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnJlYmluZF93cmFwPEEsCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpwdHJfYnVja2V0ID46OnR5cGUKLSAgICAgICAgPiB0ZW50YXRpdmVfYnVja2V0X3RyYWl0czsKLQotICAgICAgICB0eXBlZGVmIHBpY2tfZ3JvdXBlZF9ub2RlMjxBLCBULAotICAgICAgICAgICAgdHlwZW5hbWUgdGVudGF0aXZlX25vZGVfdHJhaXRzOjpwb2ludGVyLAotICAgICAgICAgICAgdHlwZW5hbWUgdGVudGF0aXZlX2J1Y2tldF90cmFpdHM6OnBvaW50ZXI+IHBpY2s7Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwaWNrOjpub2RlIG5vZGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcGljazo6YnVja2V0IGJ1Y2tldDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwaWNrOjpsaW5rX3BvaW50ZXIgbGlua19wb2ludGVyOwotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQSwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgSCwgdHlwZW5hbWUgUD4KLSAgICBzdHJ1Y3QgbXVsdGlzZXQKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjptdWx0aXNldDxBLCBULCBILCBQPiB0eXBlczsKLQotICAgICAgICB0eXBlZGVmIEEgYWxsb2NhdG9yOwotICAgICAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLSAgICAgICAgdHlwZWRlZiBIIGhhc2hlcjsKLSAgICAgICAgdHlwZWRlZiBQIGtleV9lcXVhbDsKLSAgICAgICAgdHlwZWRlZiBUIGtleV90eXBlOwotCi0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjphbGxvY2F0b3JfdHJhaXRzPGFsbG9jYXRvcj4gdHJhaXRzOwotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6cGlja19ncm91cGVkX25vZGU8YWxsb2NhdG9yLAotICAgICAgICAgICAgdmFsdWVfdHlwZT4gcGljazsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwaWNrOjpub2RlIG5vZGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcGljazo6YnVja2V0IGJ1Y2tldDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwaWNrOjpsaW5rX3BvaW50ZXIgbGlua19wb2ludGVyOwotCi0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpncm91cGVkX3RhYmxlX2ltcGw8dHlwZXM+IHRhYmxlOwotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6c2V0X2V4dHJhY3Rvcjx2YWx1ZV90eXBlPiBleHRyYWN0b3I7Ci0KLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnBpY2tfcG9saWN5Ojp0eXBlIHBvbGljeTsKLSAgICB9OwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEEsIHR5cGVuYW1lIEssIHR5cGVuYW1lIE0sIHR5cGVuYW1lIEgsIHR5cGVuYW1lIFA+Ci0gICAgc3RydWN0IG11bHRpbWFwCi0gICAgewotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6bXVsdGltYXA8QSwgSywgTSwgSCwgUD4gdHlwZXM7Ci0KLSAgICAgICAgdHlwZWRlZiBBIGFsbG9jYXRvcjsKLSAgICAgICAgdHlwZWRlZiBzdGQ6OnBhaXI8SyBjb25zdCwgTT4gdmFsdWVfdHlwZTsKLSAgICAgICAgdHlwZWRlZiBIIGhhc2hlcjsKLSAgICAgICAgdHlwZWRlZiBQIGtleV9lcXVhbDsKLSAgICAgICAgdHlwZWRlZiBLIGtleV90eXBlOwotCi0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjphbGxvY2F0b3JfdHJhaXRzPGFsbG9jYXRvcj4gdHJhaXRzOwotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6cGlja19ncm91cGVkX25vZGU8YWxsb2NhdG9yLAotICAgICAgICAgICAgICAgIHZhbHVlX3R5cGU+IHBpY2s7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcGljazo6bm9kZSBub2RlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHBpY2s6OmJ1Y2tldCBidWNrZXQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcGljazo6bGlua19wb2ludGVyIGxpbmtfcG9pbnRlcjsKLQotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6Z3JvdXBlZF90YWJsZV9pbXBsPHR5cGVzPiB0YWJsZTsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6Om1hcF9leHRyYWN0b3I8a2V5X3R5cGUsIHZhbHVlX3R5cGU+Ci0gICAgICAgICAgICBleHRyYWN0b3I7Ci0KLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnBpY2tfcG9saWN5Ojp0eXBlIHBvbGljeTsKLSAgICB9OwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFR5cGVzPgotICAgIHN0cnVjdCBncm91cGVkX3RhYmxlX2ltcGwgOiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnRhYmxlPFR5cGVzPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnRhYmxlPFR5cGVzPiB0YWJsZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0YWJsZTo6dmFsdWVfdHlwZSB2YWx1ZV90eXBlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHRhYmxlOjpidWNrZXQgYnVja2V0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHRhYmxlOjpwb2xpY3kgcG9saWN5OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHRhYmxlOjpub2RlX3BvaW50ZXIgbm9kZV9wb2ludGVyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHRhYmxlOjpub2RlX2FsbG9jYXRvciBub2RlX2FsbG9jYXRvcjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0YWJsZTo6bm9kZV9hbGxvY2F0b3JfdHJhaXRzIG5vZGVfYWxsb2NhdG9yX3RyYWl0czsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0YWJsZTo6YnVja2V0X3BvaW50ZXIgYnVja2V0X3BvaW50ZXI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdGFibGU6OmxpbmtfcG9pbnRlciBsaW5rX3BvaW50ZXI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdGFibGU6Omhhc2hlciBoYXNoZXI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdGFibGU6OmtleV9lcXVhbCBrZXlfZXF1YWw7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdGFibGU6OmtleV90eXBlIGtleV90eXBlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHRhYmxlOjpub2RlX2NvbnN0cnVjdG9yIG5vZGVfY29uc3RydWN0b3I7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdGFibGU6OmV4dHJhY3RvciBleHRyYWN0b3I7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdGFibGU6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHRhYmxlOjpjX2l0ZXJhdG9yIGNfaXRlcmF0b3I7Ci0KLSAgICAgICAgLy8gQ29uc3RydWN0b3JzCi0KLSAgICAgICAgZ3JvdXBlZF90YWJsZV9pbXBsKHN0ZDo6c2l6ZV90IG4sCi0gICAgICAgICAgICAgICAgaGFzaGVyIGNvbnN0JiBoZiwKLSAgICAgICAgICAgICAgICBrZXlfZXF1YWwgY29uc3QmIGVxLAotICAgICAgICAgICAgICAgIG5vZGVfYWxsb2NhdG9yIGNvbnN0JiBhKQotICAgICAgICAgIDogdGFibGUobiwgaGYsIGVxLCBhKQotICAgICAgICB7fQotCi0gICAgICAgIGdyb3VwZWRfdGFibGVfaW1wbChncm91cGVkX3RhYmxlX2ltcGwgY29uc3QmIHgpCi0gICAgICAgICAgOiB0YWJsZSh4LCBub2RlX2FsbG9jYXRvcl90cmFpdHM6OgotICAgICAgICAgICAgICAgIHNlbGVjdF9vbl9jb250YWluZXJfY29weV9jb25zdHJ1Y3Rpb24oeC5ub2RlX2FsbG9jKCkpKQotICAgICAgICB7Ci0gICAgICAgICAgICB0aGlzLT5pbml0KHgpOwotICAgICAgICB9Ci0KLSAgICAgICAgZ3JvdXBlZF90YWJsZV9pbXBsKGdyb3VwZWRfdGFibGVfaW1wbCBjb25zdCYgeCwKLSAgICAgICAgICAgICAgICBub2RlX2FsbG9jYXRvciBjb25zdCYgYSkKLSAgICAgICAgICA6IHRhYmxlKHgsIGEpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRoaXMtPmluaXQoeCk7Ci0gICAgICAgIH0KLQotICAgICAgICBncm91cGVkX3RhYmxlX2ltcGwoZ3JvdXBlZF90YWJsZV9pbXBsJiB4LAotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6bW92ZV90YWcgbSkKLSAgICAgICAgICA6IHRhYmxlKHgsIG0pCi0gICAgICAgIHt9Ci0KLSAgICAgICAgZ3JvdXBlZF90YWJsZV9pbXBsKGdyb3VwZWRfdGFibGVfaW1wbCYgeCwKLSAgICAgICAgICAgICAgICBub2RlX2FsbG9jYXRvciBjb25zdCYgYSwKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6Om1vdmVfdGFnIG0pCi0gICAgICAgICAgOiB0YWJsZSh4LCBhLCBtKQotICAgICAgICB7Ci0gICAgICAgICAgICB0aGlzLT5tb3ZlX2luaXQoeCk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBBY2Nlc3NvcnMKLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgS2V5LCBjbGFzcyBQcmVkPgotICAgICAgICBpdGVyYXRvciBmaW5kX25vZGVfaW1wbCgKLSAgICAgICAgICAgICAgICBzdGQ6OnNpemVfdCBrZXlfaGFzaCwKLSAgICAgICAgICAgICAgICBLZXkgY29uc3QmIGssCi0gICAgICAgICAgICAgICAgUHJlZCBjb25zdCYgZXEpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0ZDo6c2l6ZV90IGJ1Y2tldF9pbmRleCA9IHRoaXMtPmhhc2hfdG9fYnVja2V0KGtleV9oYXNoKTsKLSAgICAgICAgICAgIGl0ZXJhdG9yIG4gPSB0aGlzLT5iZWdpbihidWNrZXRfaW5kZXgpOwotCi0gICAgICAgICAgICBmb3IgKDs7KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmICghbi5ub2RlXykgcmV0dXJuIG47Ci0KLSAgICAgICAgICAgICAgICBzdGQ6OnNpemVfdCBub2RlX2hhc2ggPSBuLm5vZGVfLT5oYXNoXzsKLSAgICAgICAgICAgICAgICBpZiAoa2V5X2hhc2ggPT0gbm9kZV9oYXNoKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGVxKGssIHRoaXMtPmdldF9rZXkoKm4pKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy0+aGFzaF90b19idWNrZXQobm9kZV9oYXNoKSAhPSBidWNrZXRfaW5kZXgpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlcmF0b3IoKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBuID0gaXRlcmF0b3Iobi5ub2RlXy0+Z3JvdXBfcHJldl8tPm5leHRfKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHN0ZDo6c2l6ZV90IGNvdW50KGtleV90eXBlIGNvbnN0JiBrKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICBpdGVyYXRvciBuID0gdGhpcy0+ZmluZF9ub2RlKGspOwotICAgICAgICAgICAgaWYgKCFuLm5vZGVfKSByZXR1cm4gMDsKLQotICAgICAgICAgICAgc3RkOjpzaXplX3QgeCA9IDA7Ci0gICAgICAgICAgICBub2RlX3BvaW50ZXIgaXQgPSBuLm5vZGVfOwotICAgICAgICAgICAgZG8gewotICAgICAgICAgICAgICAgIGl0ID0gaXQtPmdyb3VwX3ByZXZfOwotICAgICAgICAgICAgICAgICsreDsKLSAgICAgICAgICAgIH0gd2hpbGUoaXQgIT0gbi5ub2RlXyk7Ci0KLSAgICAgICAgICAgIHJldHVybiB4OwotICAgICAgICB9Ci0KLSAgICAgICAgc3RkOjpwYWlyPGl0ZXJhdG9yLCBpdGVyYXRvcj4KLSAgICAgICAgICAgIGVxdWFsX3JhbmdlKGtleV90eXBlIGNvbnN0JiBrKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICBpdGVyYXRvciBuID0gdGhpcy0+ZmluZF9ub2RlKGspOwotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKAotICAgICAgICAgICAgICAgIG4sIG4ubm9kZV8gPyBpdGVyYXRvcihuLm5vZGVfLT5ncm91cF9wcmV2Xy0+bmV4dF8pIDogbik7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBFcXVhbGl0eQotCi0gICAgICAgIGJvb2wgZXF1YWxzKGdyb3VwZWRfdGFibGVfaW1wbCBjb25zdCYgb3RoZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGlmKHRoaXMtPnNpemVfICE9IG90aGVyLnNpemVfKSByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgICAgICAgICBmb3IoaXRlcmF0b3IgbjEgPSB0aGlzLT5iZWdpbigpOyBuMS5ub2RlXzspCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaXRlcmF0b3IgbjIgPSBvdGhlci5maW5kX21hdGNoaW5nX25vZGUobjEpOwotICAgICAgICAgICAgICAgIGlmICghbjIubm9kZV8pIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICBpdGVyYXRvciBlbmQxKG4xLm5vZGVfLT5ncm91cF9wcmV2Xy0+bmV4dF8pOwotICAgICAgICAgICAgICAgIGl0ZXJhdG9yIGVuZDIobjIubm9kZV8tPmdyb3VwX3ByZXZfLT5uZXh0Xyk7Ci0gICAgICAgICAgICAgICAgaWYgKCFncm91cF9lcXVhbHMobjEsIGVuZDEsIG4yLCBlbmQyKSkgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIG4xID0gZW5kMTsgICAgCi0gICAgICAgICAgICB9Ci0gICAgCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyBib29sIGdyb3VwX2VxdWFscyhpdGVyYXRvciBuMSwgaXRlcmF0b3IgZW5kMSwKLSAgICAgICAgICAgICAgICBpdGVyYXRvciBuMiwgaXRlcmF0b3IgZW5kMikKLSAgICAgICAgewotICAgICAgICAgICAgZm9yKDs7KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmICgqbjEgIT0gKm4yKSBicmVhazsKLQotICAgICAgICAgICAgICAgICsrbjE7Ci0gICAgICAgICAgICAgICAgKytuMjsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGlmIChuMSA9PSBlbmQxKSByZXR1cm4gbjIgPT0gZW5kMjsKLSAgICAgICAgICAgICAgICBpZiAobjIgPT0gZW5kMikgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBmb3IoaXRlcmF0b3IgbjFhID0gbjEsIG4yYSA9IG4yOzspCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgKytuMWE7Ci0gICAgICAgICAgICAgICAgKytuMmE7Ci0KLSAgICAgICAgICAgICAgICBpZiAobjFhID09IGVuZDEpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBpZiAobjJhID09IGVuZDIpIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBlbHNlIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAobjJhID09IGVuZDIpIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaXRlcmF0b3Igc3RhcnQgPSBuMTsKLSAgICAgICAgICAgIGZvcig7bjEgIT0gZW5kMTsgKytuMSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB2YWx1ZV90eXBlIGNvbnN0JiB2ID0gKm4xOwotICAgICAgICAgICAgICAgIGlmIChmaW5kKHN0YXJ0LCBuMSwgdikpIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIHN0ZDo6c2l6ZV90IG1hdGNoZXMgPSBjb3VudF9lcXVhbChuMiwgZW5kMiwgdik7Ci0gICAgICAgICAgICAgICAgaWYgKCFtYXRjaGVzKSByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgaXRlcmF0b3IgbmV4dCA9IG4xOwotICAgICAgICAgICAgICAgICsrbmV4dDsKLSAgICAgICAgICAgICAgICBpZiAobWF0Y2hlcyAhPSAxICsgY291bnRfZXF1YWwobmV4dCwgZW5kMSwgdikpIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMgYm9vbCBmaW5kKGl0ZXJhdG9yIG4sIGl0ZXJhdG9yIGVuZCwgdmFsdWVfdHlwZSBjb25zdCYgdikKLSAgICAgICAgewotICAgICAgICAgICAgZm9yKDtuICE9IGVuZDsgKytuKQotICAgICAgICAgICAgICAgIGlmICgqbiA9PSB2KQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyBzdGQ6OnNpemVfdCBjb3VudF9lcXVhbChpdGVyYXRvciBuLCBpdGVyYXRvciBlbmQsCi0gICAgICAgICAgICB2YWx1ZV90eXBlIGNvbnN0JiB2KQotICAgICAgICB7Ci0gICAgICAgICAgICBzdGQ6OnNpemVfdCBjb3VudCA9IDA7Ci0gICAgICAgICAgICBmb3IoO24gIT0gZW5kOyArK24pCi0gICAgICAgICAgICAgICAgaWYgKCpuID09IHYpICsrY291bnQ7Ci0gICAgICAgICAgICByZXR1cm4gY291bnQ7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBFbXBsYWNlL0luc2VydAotCi0gICAgICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBhZGRfYWZ0ZXJfbm9kZSgKLSAgICAgICAgICAgICAgICBub2RlX3BvaW50ZXIgbiwKLSAgICAgICAgICAgICAgICBub2RlX3BvaW50ZXIgcG9zKQotICAgICAgICB7Ci0gICAgICAgICAgICBuLT5uZXh0XyA9IHBvcy0+Z3JvdXBfcHJldl8tPm5leHRfOwotICAgICAgICAgICAgbi0+Z3JvdXBfcHJldl8gPSBwb3MtPmdyb3VwX3ByZXZfOwotICAgICAgICAgICAgcG9zLT5ncm91cF9wcmV2Xy0+bmV4dF8gPSBuOwotICAgICAgICAgICAgcG9zLT5ncm91cF9wcmV2XyA9IG47Ci0gICAgICAgIH0KLQotICAgICAgICBpbmxpbmUgaXRlcmF0b3IgYWRkX25vZGUoCi0gICAgICAgICAgICAgICAgbm9kZV9jb25zdHJ1Y3RvciYgYSwKLSAgICAgICAgICAgICAgICBzdGQ6OnNpemVfdCBrZXlfaGFzaCwKLSAgICAgICAgICAgICAgICBpdGVyYXRvciBwb3MpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG5vZGVfcG9pbnRlciBuID0gYS5yZWxlYXNlKCk7Ci0gICAgICAgICAgICBuLT5oYXNoXyA9IGtleV9oYXNoOwotICAgICAgICAgICAgaWYgKHBvcy5ub2RlXykgewotICAgICAgICAgICAgICAgIHRoaXMtPmFkZF9hZnRlcl9ub2RlKG4sIHBvcy5ub2RlXyk7Ci0gICAgICAgICAgICAgICAgaWYgKG4tPm5leHRfKSB7Ci0gICAgICAgICAgICAgICAgICAgIHN0ZDo6c2l6ZV90IG5leHRfYnVja2V0ID0gdGhpcy0+aGFzaF90b19idWNrZXQoCi0gICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxub2RlX3BvaW50ZXI+KG4tPm5leHRfKS0+aGFzaF8pOwotICAgICAgICAgICAgICAgICAgICBpZiAobmV4dF9idWNrZXQgIT0gdGhpcy0+aGFzaF90b19idWNrZXQoa2V5X2hhc2gpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLT5nZXRfYnVja2V0KG5leHRfYnVja2V0KS0+bmV4dF8gPSBuOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgYnVja2V0X3BvaW50ZXIgYiA9IHRoaXMtPmdldF9idWNrZXQoCi0gICAgICAgICAgICAgICAgICAgIHRoaXMtPmhhc2hfdG9fYnVja2V0KGtleV9oYXNoKSk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoIWItPm5leHRfKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgbGlua19wb2ludGVyIHN0YXJ0X25vZGUgPSB0aGlzLT5nZXRfcHJldmlvdXNfc3RhcnQoKTsKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGlmIChzdGFydF9ub2RlLT5uZXh0XykgewotICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy0+Z2V0X2J1Y2tldCh0aGlzLT5oYXNoX3RvX2J1Y2tldCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxub2RlX3BvaW50ZXI+KHN0YXJ0X25vZGUtPm5leHRfKS0+aGFzaF8KLSAgICAgICAgICAgICAgICAgICAgICAgICkpLT5uZXh0XyA9IG47Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAKLSAgICAgICAgICAgICAgICAgICAgYi0+bmV4dF8gPSBzdGFydF9ub2RlOwotICAgICAgICAgICAgICAgICAgICBuLT5uZXh0XyA9IHN0YXJ0X25vZGUtPm5leHRfOwotICAgICAgICAgICAgICAgICAgICBzdGFydF9ub2RlLT5uZXh0XyA9IG47Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIG4tPm5leHRfID0gYi0+bmV4dF8tPm5leHRfOwotICAgICAgICAgICAgICAgICAgICBiLT5uZXh0Xy0+bmV4dF8gPSBuOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgICsrdGhpcy0+c2l6ZV87Ci0gICAgICAgICAgICByZXR1cm4gaXRlcmF0b3Iobik7Ci0gICAgICAgIH0KLQotICAgICAgICBpdGVyYXRvciBlbXBsYWNlX2ltcGwobm9kZV9jb25zdHJ1Y3RvciYgYSkKLSAgICAgICAgewotICAgICAgICAgICAga2V5X3R5cGUgY29uc3QmIGsgPSB0aGlzLT5nZXRfa2V5KGEudmFsdWUoKSk7Ci0gICAgICAgICAgICBzdGQ6OnNpemVfdCBrZXlfaGFzaCA9IHRoaXMtPmhhc2goayk7Ci0gICAgICAgICAgICBpdGVyYXRvciBwb3NpdGlvbiA9IHRoaXMtPmZpbmRfbm9kZShrZXlfaGFzaCwgayk7Ci0KLSAgICAgICAgICAgIC8vIHJlc2VydmUgaGFzIGJhc2ljIGV4Y2VwdGlvbiBzYWZldHkgaWYgdGhlIGhhc2ggZnVuY3Rpb24KLSAgICAgICAgICAgIC8vIHRocm93cywgc3Ryb25nIG90aGVyd2lzZS4KLSAgICAgICAgICAgIHRoaXMtPnJlc2VydmVfZm9yX2luc2VydCh0aGlzLT5zaXplXyArIDEpOwotICAgICAgICAgICAgcmV0dXJuIHRoaXMtPmFkZF9ub2RlKGEsIGtleV9oYXNoLCBwb3NpdGlvbik7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGVtcGxhY2VfaW1wbF9ub19yZWhhc2gobm9kZV9jb25zdHJ1Y3RvciYgYSkKLSAgICAgICAgewotICAgICAgICAgICAga2V5X3R5cGUgY29uc3QmIGsgPSB0aGlzLT5nZXRfa2V5KGEudmFsdWUoKSk7Ci0gICAgICAgICAgICBzdGQ6OnNpemVfdCBrZXlfaGFzaCA9IHRoaXMtPmhhc2goayk7Ci0gICAgICAgICAgICB0aGlzLT5hZGRfbm9kZShhLCBrZXlfaGFzaCwgdGhpcy0+ZmluZF9ub2RlKGtleV9oYXNoLCBrKSk7Ci0gICAgICAgIH0KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMpCi0jICAgaWYgZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19URU1QTEFURVMpCi0gICAgICAgIGl0ZXJhdG9yIGVtcGxhY2UobmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjplbXBsYWNlX2FyZ3MxPAotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6cGxlYXNlX2lnbm9yZV90aGlzX292ZXJsb2FkPiBjb25zdCYpCi0gICAgICAgIHsKLSAgICAgICAgICAgIE5ETkJPT1NUX0FTU0VSVChmYWxzZSk7Ci0gICAgICAgICAgICByZXR1cm4gaXRlcmF0b3IoKTsKLSAgICAgICAgfQotIyAgIGVsc2UKLSAgICAgICAgaXRlcmF0b3IgZW1wbGFjZSgKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnBsZWFzZV9pZ25vcmVfdGhpc19vdmVybG9hZCBjb25zdCYpCi0gICAgICAgIHsKLSAgICAgICAgICAgIE5ETkJPT1NUX0FTU0VSVChmYWxzZSk7Ci0gICAgICAgICAgICByZXR1cm4gaXRlcmF0b3IoKTsKLSAgICAgICAgfQotIyAgIGVuZGlmCi0jZW5kaWYKLQotICAgICAgICB0ZW1wbGF0ZSA8TkROQk9PU1RfVU5PUkRFUkVEX0VNUExBQ0VfVEVNUExBVEU+Ci0gICAgICAgIGl0ZXJhdG9yIGVtcGxhY2UoTkROQk9PU1RfVU5PUkRFUkVEX0VNUExBQ0VfQVJHUykKLSAgICAgICAgewotICAgICAgICAgICAgbm9kZV9jb25zdHJ1Y3RvciBhKHRoaXMtPm5vZGVfYWxsb2MoKSk7Ci0gICAgICAgICAgICBhLmNvbnN0cnVjdF93aXRoX3ZhbHVlKE5ETkJPT1NUX1VOT1JERVJFRF9FTVBMQUNFX0ZPUldBUkQpOwotCi0gICAgICAgICAgICByZXR1cm4gaXRlcmF0b3IoZW1wbGFjZV9pbXBsKGEpKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgICAgICAvLyBJbnNlcnQgcmFuZ2UgbWV0aG9kcwotCi0gICAgICAgIC8vIGlmIGhhc2ggZnVuY3Rpb24gdGhyb3dzLCBvciBpbnNlcnRpbmcgPiAxIGVsZW1lbnQsIGJhc2ljIGV4Y2VwdGlvbgotICAgICAgICAvLyBzYWZldHkuIFN0cm9uZyBvdGhlcndpc2UKLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIEk+Ci0gICAgICAgIHR5cGVuYW1lIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6ZW5hYmxlX2lmX2ZvcndhcmQ8SSwgdm9pZD46OnR5cGUKLSAgICAgICAgICAgIGluc2VydF9yYW5nZShJIGksIEkgaikKLSAgICAgICAgewotICAgICAgICAgICAgaWYoaSA9PSBqKSByZXR1cm47Ci0KLSAgICAgICAgICAgIHN0ZDo6c2l6ZV90IGRpc3RhbmNlID0gbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpkaXN0YW5jZShpLCBqKTsKLSAgICAgICAgICAgIGlmKGRpc3RhbmNlID09IDEpIHsKLSAgICAgICAgICAgICAgICBub2RlX2NvbnN0cnVjdG9yIGEodGhpcy0+bm9kZV9hbGxvYygpKTsKLSAgICAgICAgICAgICAgICBhLmNvbnN0cnVjdF93aXRoX3ZhbHVlMigqaSk7Ci0gICAgICAgICAgICAgICAgZW1wbGFjZV9pbXBsKGEpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgLy8gT25seSByZXF1aXJlIGJhc2ljIGV4Y2VwdGlvbiBzYWZldHkgaGVyZQotICAgICAgICAgICAgICAgIHRoaXMtPnJlc2VydmVfZm9yX2luc2VydCh0aGlzLT5zaXplXyArIGRpc3RhbmNlKTsKLQotICAgICAgICAgICAgICAgIG5vZGVfY29uc3RydWN0b3IgYSh0aGlzLT5ub2RlX2FsbG9jKCkpOwotICAgICAgICAgICAgICAgIGZvciAoOyBpICE9IGo7ICsraSkgewotICAgICAgICAgICAgICAgICAgICBhLmNvbnN0cnVjdF93aXRoX3ZhbHVlMigqaSk7Ci0gICAgICAgICAgICAgICAgICAgIGVtcGxhY2VfaW1wbF9ub19yZWhhc2goYSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIEk+Ci0gICAgICAgIHR5cGVuYW1lIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6ZGlzYWJsZV9pZl9mb3J3YXJkPEksIHZvaWQ+Ojp0eXBlCi0gICAgICAgICAgICBpbnNlcnRfcmFuZ2UoSSBpLCBJIGopCi0gICAgICAgIHsKLSAgICAgICAgICAgIG5vZGVfY29uc3RydWN0b3IgYSh0aGlzLT5ub2RlX2FsbG9jKCkpOwotICAgICAgICAgICAgZm9yICg7IGkgIT0gajsgKytpKSB7Ci0gICAgICAgICAgICAgICAgYS5jb25zdHJ1Y3Rfd2l0aF92YWx1ZTIoKmkpOwotICAgICAgICAgICAgICAgIGVtcGxhY2VfaW1wbChhKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgICAgICAvLyBFcmFzZQotICAgICAgICAvLwotICAgICAgICAvLyBubyB0aHJvdwotCi0gICAgICAgIHN0ZDo6c2l6ZV90IGVyYXNlX2tleShrZXlfdHlwZSBjb25zdCYgaykKLSAgICAgICAgewotICAgICAgICAgICAgaWYoIXRoaXMtPnNpemVfKSByZXR1cm4gMDsKLQotICAgICAgICAgICAgc3RkOjpzaXplX3Qga2V5X2hhc2ggPSB0aGlzLT5oYXNoKGspOwotICAgICAgICAgICAgc3RkOjpzaXplX3QgYnVja2V0X2luZGV4ID0gdGhpcy0+aGFzaF90b19idWNrZXQoa2V5X2hhc2gpOwotICAgICAgICAgICAgbGlua19wb2ludGVyIHByZXYgPSB0aGlzLT5nZXRfcHJldmlvdXNfc3RhcnQoYnVja2V0X2luZGV4KTsKLSAgICAgICAgICAgIGlmICghcHJldikgcmV0dXJuIDA7Ci0KLSAgICAgICAgICAgIGZvciAoOzspCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYgKCFwcmV2LT5uZXh0XykgcmV0dXJuIDA7Ci0gICAgICAgICAgICAgICAgc3RkOjpzaXplX3Qgbm9kZV9oYXNoID0KLSAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8bm9kZV9wb2ludGVyPihwcmV2LT5uZXh0XyktPmhhc2hfOwotICAgICAgICAgICAgICAgIGlmICh0aGlzLT5oYXNoX3RvX2J1Y2tldChub2RlX2hhc2gpICE9IGJ1Y2tldF9pbmRleCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICAgICAgaWYgKG5vZGVfaGFzaCA9PSBrZXlfaGFzaCAmJgotICAgICAgICAgICAgICAgICAgICB0aGlzLT5rZXlfZXEoKShrLCB0aGlzLT5nZXRfa2V5KAotICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8bm9kZV9wb2ludGVyPihwcmV2LT5uZXh0XyktPnZhbHVlKCkpKSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgcHJldiA9IHN0YXRpY19jYXN0PG5vZGVfcG9pbnRlcj4ocHJldi0+bmV4dF8pLT5ncm91cF9wcmV2XzsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgbm9kZV9wb2ludGVyIGZpcnN0X25vZGUgPSBzdGF0aWNfY2FzdDxub2RlX3BvaW50ZXI+KHByZXYtPm5leHRfKTsKLSAgICAgICAgICAgIGxpbmtfcG9pbnRlciBlbmQgPSBmaXJzdF9ub2RlLT5ncm91cF9wcmV2Xy0+bmV4dF87Ci0KLSAgICAgICAgICAgIHN0ZDo6c2l6ZV90IGNvdW50ID0gdGhpcy0+ZGVsZXRlX25vZGVzKHByZXYsIGVuZCk7Ci0gICAgICAgICAgICB0aGlzLT5maXhfYnVja2V0KGJ1Y2tldF9pbmRleCwgcHJldik7Ci0gICAgICAgICAgICByZXR1cm4gY291bnQ7Ci0gICAgICAgIH0KLQotICAgICAgICBpdGVyYXRvciBlcmFzZShjX2l0ZXJhdG9yIHIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIE5ETkJPT1NUX0FTU0VSVChyLm5vZGVfKTsKLSAgICAgICAgICAgIGl0ZXJhdG9yIG5leHQoci5ub2RlXyk7Ci0gICAgICAgICAgICArK25leHQ7Ci0gICAgICAgICAgICBlcmFzZV9ub2RlcyhyLm5vZGVfLCBuZXh0Lm5vZGVfKTsKLSAgICAgICAgICAgIHJldHVybiBuZXh0OwotICAgICAgICB9Ci0KLSAgICAgICAgaXRlcmF0b3IgZXJhc2VfcmFuZ2UoY19pdGVyYXRvciByMSwgY19pdGVyYXRvciByMikKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKHIxID09IHIyKSByZXR1cm4gaXRlcmF0b3IocjIubm9kZV8pOwotICAgICAgICAgICAgZXJhc2Vfbm9kZXMocjEubm9kZV8sIHIyLm5vZGVfKTsKLSAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcihyMi5ub2RlXyk7Ci0gICAgICAgIH0KLQotICAgICAgICBsaW5rX3BvaW50ZXIgZXJhc2Vfbm9kZXMobm9kZV9wb2ludGVyIGJlZ2luLCBub2RlX3BvaW50ZXIgZW5kKQotICAgICAgICB7Ci0gICAgICAgICAgICBzdGQ6OnNpemVfdCBidWNrZXRfaW5kZXggPSB0aGlzLT5oYXNoX3RvX2J1Y2tldChiZWdpbi0+aGFzaF8pOwotCi0gICAgICAgICAgICAvLyBTcGxpdCB0aGUgZ3JvdXBzIGNvbnRhaW5pbmcgJ2JlZ2luJyBhbmQgJ2VuZCcuCi0gICAgICAgICAgICAvLyBBbmQgZ2V0IHRoZSBwb2ludGVyIHRvIHRoZSBub2RlIGJlZm9yZSBiZWdpbiB3aGlsZQotICAgICAgICAgICAgLy8gd2UncmUgYXQgaXQuCi0gICAgICAgICAgICBsaW5rX3BvaW50ZXIgcHJldiA9IHNwbGl0X2dyb3VwcyhiZWdpbiwgZW5kKTsKLQotICAgICAgICAgICAgLy8gSWYgd2UgZG9uJ3QgaGF2ZSBhICdwcmV2JyBpdCBtZWFucyB0aGF0IGJlZ2luIGlzIGF0IHRoZQotICAgICAgICAgICAgLy8gYmVnaW5uaW5nIG9mIGEgYmxvY2ssIHNvIHNlYXJjaCB0aHJvdWdoIHRoZSBibG9ja3MgaW4gdGhlCi0gICAgICAgICAgICAvLyBzYW1lIGJ1Y2tldC4KLSAgICAgICAgICAgIGlmICghcHJldikgewotICAgICAgICAgICAgICAgIHByZXYgPSB0aGlzLT5nZXRfcHJldmlvdXNfc3RhcnQoYnVja2V0X2luZGV4KTsKLSAgICAgICAgICAgICAgICB3aGlsZSAocHJldi0+bmV4dF8gIT0gYmVnaW4pCi0gICAgICAgICAgICAgICAgICAgIHByZXYgPSBzdGF0aWNfY2FzdDxub2RlX3BvaW50ZXI+KHByZXYtPm5leHRfKS0+Z3JvdXBfcHJldl87Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIERlbGV0ZSB0aGUgbm9kZXMuCi0gICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgbGlua19wb2ludGVyIGdyb3VwX2VuZCA9Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PG5vZGVfcG9pbnRlcj4ocHJldi0+bmV4dF8pLT5ncm91cF9wcmV2Xy0+bmV4dF87Ci0gICAgICAgICAgICAgICAgdGhpcy0+ZGVsZXRlX25vZGVzKHByZXYsIGdyb3VwX2VuZCk7Ci0gICAgICAgICAgICAgICAgYnVja2V0X2luZGV4ID0gdGhpcy0+Zml4X2J1Y2tldChidWNrZXRfaW5kZXgsIHByZXYpOwotICAgICAgICAgICAgfSB3aGlsZShwcmV2LT5uZXh0XyAhPSBlbmQpOwotCi0gICAgICAgICAgICByZXR1cm4gcHJldjsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyBsaW5rX3BvaW50ZXIgc3BsaXRfZ3JvdXBzKG5vZGVfcG9pbnRlciBiZWdpbiwgbm9kZV9wb2ludGVyIGVuZCkKLSAgICAgICAgewotICAgICAgICAgICAgbm9kZV9wb2ludGVyIHByZXYgPSBiZWdpbi0+Z3JvdXBfcHJldl87Ci0gICAgICAgICAgICBpZiAocHJldi0+bmV4dF8gIT0gYmVnaW4pIHByZXYgPSBub2RlX3BvaW50ZXIoKTsKLQotICAgICAgICAgICAgaWYgKGVuZCkgewotICAgICAgICAgICAgICAgIG5vZGVfcG9pbnRlciBmaXJzdCA9IGVuZDsKLSAgICAgICAgICAgICAgICB3aGlsZSAoZmlyc3QgIT0gYmVnaW4gJiYgZmlyc3QtPmdyb3VwX3ByZXZfLT5uZXh0XyA9PSBmaXJzdCkgewotICAgICAgICAgICAgICAgICAgICBmaXJzdCA9IGZpcnN0LT5ncm91cF9wcmV2XzsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6c3dhcChmaXJzdC0+Z3JvdXBfcHJldl8sIGVuZC0+Z3JvdXBfcHJldl8pOwotICAgICAgICAgICAgICAgIGlmIChmaXJzdCA9PSBiZWdpbikgcmV0dXJuIHByZXY7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChwcmV2KSB7Ci0gICAgICAgICAgICAgICAgbm9kZV9wb2ludGVyIGZpcnN0ID0gcHJldjsKLSAgICAgICAgICAgICAgICB3aGlsZSAoZmlyc3QtPmdyb3VwX3ByZXZfLT5uZXh0XyA9PSBmaXJzdCkgewotICAgICAgICAgICAgICAgICAgICBmaXJzdCA9IGZpcnN0LT5ncm91cF9wcmV2XzsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnN3YXAoZmlyc3QtPmdyb3VwX3ByZXZfLCBiZWdpbi0+Z3JvdXBfcHJldl8pOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICByZXR1cm4gcHJldjsKLSAgICAgICAgfQotCi0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgICAgICAvLyBmaWxsX2J1Y2tldHMKLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgTm9kZUNyZWF0b3I+Ci0gICAgICAgIHN0YXRpYyB2b2lkIGZpbGxfYnVja2V0cyhpdGVyYXRvciBuLCB0YWJsZSYgZHN0LAotICAgICAgICAgICAgTm9kZUNyZWF0b3ImIGNyZWF0b3IpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGxpbmtfcG9pbnRlciBwcmV2ID0gZHN0LmdldF9wcmV2aW91c19zdGFydCgpOwotCi0gICAgICAgICAgICB3aGlsZSAobi5ub2RlXykgewotICAgICAgICAgICAgICAgIHN0ZDo6c2l6ZV90IGtleV9oYXNoID0gbi5ub2RlXy0+aGFzaF87Ci0gICAgICAgICAgICAgICAgaXRlcmF0b3IgZ3JvdXBfZW5kKG4ubm9kZV8tPmdyb3VwX3ByZXZfLT5uZXh0Xyk7Ci0KLSAgICAgICAgICAgICAgICBub2RlX3BvaW50ZXIgZmlyc3Rfbm9kZSA9IGNyZWF0b3IuY3JlYXRlKCpuKTsKLSAgICAgICAgICAgICAgICBub2RlX3BvaW50ZXIgZW5kID0gZmlyc3Rfbm9kZTsKLSAgICAgICAgICAgICAgICBmaXJzdF9ub2RlLT5oYXNoXyA9IGtleV9oYXNoOwotICAgICAgICAgICAgICAgIHByZXYtPm5leHRfID0gZmlyc3Rfbm9kZTsKLSAgICAgICAgICAgICAgICArK2RzdC5zaXplXzsKLQotICAgICAgICAgICAgICAgIGZvciAoKytuOyBuICE9IGdyb3VwX2VuZDsgKytuKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgZW5kID0gY3JlYXRvci5jcmVhdGUoKm4pOwotICAgICAgICAgICAgICAgICAgICBlbmQtPmhhc2hfID0ga2V5X2hhc2g7Ci0gICAgICAgICAgICAgICAgICAgIGFkZF9hZnRlcl9ub2RlKGVuZCwgZmlyc3Rfbm9kZSk7Ci0gICAgICAgICAgICAgICAgICAgICsrZHN0LnNpemVfOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIHByZXYgPSBwbGFjZV9pbl9idWNrZXQoZHN0LCBwcmV2LCBlbmQpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgLy8gc3Ryb25nIG90aGVyd2lzZSBleGNlcHRpb24gc2FmZXR5Ci0gICAgICAgIHZvaWQgcmVoYXNoX2ltcGwoc3RkOjpzaXplX3QgbnVtX2J1Y2tldHMpCi0gICAgICAgIHsKLSAgICAgICAgICAgIE5ETkJPT1NUX0FTU0VSVCh0aGlzLT5idWNrZXRzXyk7Ci0KLSAgICAgICAgICAgIHRoaXMtPmNyZWF0ZV9idWNrZXRzKG51bV9idWNrZXRzKTsKLSAgICAgICAgICAgIGxpbmtfcG9pbnRlciBwcmV2ID0gdGhpcy0+Z2V0X3ByZXZpb3VzX3N0YXJ0KCk7Ci0gICAgICAgICAgICB3aGlsZSAocHJldi0+bmV4dF8pCi0gICAgICAgICAgICAgICAgcHJldiA9IHBsYWNlX2luX2J1Y2tldCgqdGhpcywgcHJldiwKLSAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8bm9kZV9wb2ludGVyPihwcmV2LT5uZXh0XyktPmdyb3VwX3ByZXZfKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEl0ZXJhdGUgdGhyb3VnaCB0aGUgbm9kZXMgcGxhY2luZyB0aGVtIGluIHRoZSBjb3JyZWN0IGJ1Y2tldHMuCi0gICAgICAgIC8vIHByZTogcHJldi0+bmV4dF8gaXMgbm90IG51bGwuCi0gICAgICAgIHN0YXRpYyBsaW5rX3BvaW50ZXIgcGxhY2VfaW5fYnVja2V0KHRhYmxlJiBkc3QsCi0gICAgICAgICAgICAgICAgbGlua19wb2ludGVyIHByZXYsIG5vZGVfcG9pbnRlciBlbmQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGJ1Y2tldF9wb2ludGVyIGIgPSBkc3QuZ2V0X2J1Y2tldChkc3QuaGFzaF90b19idWNrZXQoZW5kLT5oYXNoXykpOwotCi0gICAgICAgICAgICBpZiAoIWItPm5leHRfKSB7Ci0gICAgICAgICAgICAgICAgYi0+bmV4dF8gPSBwcmV2OwotICAgICAgICAgICAgICAgIHJldHVybiBlbmQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBsaW5rX3BvaW50ZXIgbmV4dCA9IGVuZC0+bmV4dF87Ci0gICAgICAgICAgICAgICAgZW5kLT5uZXh0XyA9IGItPm5leHRfLT5uZXh0XzsKLSAgICAgICAgICAgICAgICBiLT5uZXh0Xy0+bmV4dF8gPSBwcmV2LT5uZXh0XzsKLSAgICAgICAgICAgICAgICBwcmV2LT5uZXh0XyA9IG5leHQ7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHByZXY7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9OwotfX19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC91bm9yZGVyZWQvZGV0YWlsL2V4dHJhY3Rfa2V5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdW5vcmRlcmVkL2RldGFpbC9leHRyYWN0X2tleS5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3ZTdhYmEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC91bm9yZGVyZWQvZGV0YWlsL2V4dHJhY3Rfa2V5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE4MyArMCwwIEBACi0KLS8vIENvcHlyaWdodCAoQykgMjAwNS0yMDExIERhbmllbCBKYW1lcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpZm5kZWYgTkROQk9PU1RfVU5PUkRFUkVEX0RFVEFJTF9FWFRSQUNUX0tFWV9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX0RFVEFJTF9FWFRSQUNUX0tFWV9IUFBfSU5DTFVERUQKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Vub3JkZXJlZC9kZXRhaWwvdGFibGUuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotbmFtZXNwYWNlIHVub3JkZXJlZCB7Ci1uYW1lc3BhY2UgZGV0YWlsIHsKLQotICAgIC8vIGtleSBleHRyYWN0b3JzCi0gICAgLy8KLSAgICAvLyBubyB0aHJvdwotICAgIC8vCi0gICAgLy8gJ2V4dHJhY3Rfa2V5JyBpcyBjYWxsZWQgd2l0aCB0aGUgZW1wbGFjZSBwYXJhbWV0ZXJzIHRvIHJldHVybiBhCi0gICAgLy8ga2V5IGlmIGF2YWlsYWJsZSBvciAnbm9fa2V5JyBpcyBvbmUgaXNuJ3QgYW5kIHdpbGwgbmVlZCB0byBiZQotICAgIC8vIGNvbnN0cnVjdGVkLiBUaGlzIGNvdWxkIGJlIGRvbmUgYnkgb3ZlcmxvYWRpbmcgdGhlIGVtcGxhY2UgaW1wbGVtZW50YXRpb24KLSAgICAvLyBmb3IgdGhlIGRpZmZlcmVudCBjYXNlcywgYnV0IHRoYXQncyBhIGJpdCB0cmlja3kgb24gY29tcGlsZXJzIHdpdGhvdXQKLSAgICAvLyB2YXJpYWRpYyB0ZW1wbGF0ZXMuCi0KLSAgICBzdHJ1Y3Qgbm9fa2V5IHsKLSAgICAgICAgbm9fa2V5KCkge30KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+IG5vX2tleShUIGNvbnN0Jikge30KLSAgICB9OwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVD4KLSAgICBzdHJ1Y3QgaXNfa2V5IHsKLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQyPgotICAgICAgICBzdGF0aWMgY2hvaWNlMTo6dHlwZSB0ZXN0KFQyIGNvbnN0Jik7Ci0gICAgICAgIHN0YXRpYyBjaG9pY2UyOjp0eXBlIHRlc3QoS2V5IGNvbnN0Jik7Ci0gICAgICAgIAotICAgICAgICBlbnVtIHsgdmFsdWUgPSBzaXplb2YodGVzdChuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6Om1ha2U8VD4oKSkpID09Ci0gICAgICAgICAgICBzaXplb2YoY2hvaWNlMjo6dHlwZSkgfTsKLSAgICAgICAgCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgbmRuYm9vc3Q6OmRldGFpbDo6aWZfdHJ1ZTx2YWx1ZT46OgotICAgICAgICAgICAgTkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFIHRoZW48S2V5IGNvbnN0Jiwgbm9fa2V5Pjo6dHlwZSB0eXBlOwotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVmFsdWVUeXBlPgotICAgIHN0cnVjdCBzZXRfZXh0cmFjdG9yCi0gICAgewotICAgICAgICB0eXBlZGVmIFZhbHVlVHlwZSB2YWx1ZV90eXBlOwotICAgICAgICB0eXBlZGVmIFZhbHVlVHlwZSBrZXlfdHlwZTsKLQotICAgICAgICBzdGF0aWMga2V5X3R5cGUgY29uc3QmIGV4dHJhY3Qoa2V5X3R5cGUgY29uc3QmIHYpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB2OwotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIG5vX2tleSBleHRyYWN0KCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5vX2tleSgpOwotICAgICAgICB9Ci0gICAgICAgIAotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX1RFTVBMQVRFUykKLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzLi4uIEFyZ3M+Ci0gICAgICAgIHN0YXRpYyBub19rZXkgZXh0cmFjdChBcmdzIGNvbnN0Ji4uLikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5vX2tleSgpOwotICAgICAgICB9Ci0jZWxzZQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgQXJnPgotICAgICAgICBzdGF0aWMgbm9fa2V5IGV4dHJhY3QoQXJnIGNvbnN0JikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5vX2tleSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIEFyZzEsIGNsYXNzIEFyZzI+Ci0gICAgICAgIHN0YXRpYyBub19rZXkgZXh0cmFjdChBcmcxIGNvbnN0JiwgQXJnMiBjb25zdCYpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBub19rZXkoKTsKLSAgICAgICAgfQotI2VuZGlmCi0gICAgfTsKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBLZXksIGNsYXNzIFZhbHVlVHlwZT4KLSAgICBzdHJ1Y3QgbWFwX2V4dHJhY3RvcgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBWYWx1ZVR5cGUgdmFsdWVfdHlwZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6cmVtb3ZlX2NvbnN0PEtleT46OnR5cGUga2V5X3R5cGU7Ci0KLSAgICAgICAgc3RhdGljIGtleV90eXBlIGNvbnN0JiBleHRyYWN0KHZhbHVlX3R5cGUgY29uc3QmIHYpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB2LmZpcnN0OwotICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFNlY29uZD4KLSAgICAgICAgc3RhdGljIGtleV90eXBlIGNvbnN0JiBleHRyYWN0KHN0ZDo6cGFpcjxrZXlfdHlwZSwgU2Vjb25kPiBjb25zdCYgdikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHYuZmlyc3Q7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgU2Vjb25kPgotICAgICAgICBzdGF0aWMga2V5X3R5cGUgY29uc3QmIGV4dHJhY3QoCi0gICAgICAgICAgICBzdGQ6OnBhaXI8a2V5X3R5cGUgY29uc3QsIFNlY29uZD4gY29uc3QmIHYpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB2LmZpcnN0OwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIEFyZzE+Ci0gICAgICAgIHN0YXRpYyBrZXlfdHlwZSBjb25zdCYgZXh0cmFjdChrZXlfdHlwZSBjb25zdCYgaywgQXJnMSBjb25zdCYpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBrOwotICAgICAgICB9Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19URU1QTEFURVMpCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcy4uLiBBcmdzPgotICAgICAgICBzdGF0aWMgbm9fa2V5IGV4dHJhY3QoQXJncyBjb25zdCYuLi4pCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBub19rZXkoKTsKLSAgICAgICAgfQotI2Vsc2UKLQotICAgICAgICBzdGF0aWMgbm9fa2V5IGV4dHJhY3QoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbm9fa2V5KCk7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgQXJnPgotICAgICAgICBzdGF0aWMgbm9fa2V5IGV4dHJhY3QoQXJnIGNvbnN0JikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5vX2tleSgpOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIEFyZywgY2xhc3MgQXJnMT4KLSAgICAgICAgc3RhdGljIG5vX2tleSBleHRyYWN0KEFyZyBjb25zdCYsIEFyZzEgY29uc3QmKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbm9fa2V5KCk7Ci0gICAgICAgIH0KLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfVEVNUExBVEVTKQotCi0jZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9LRVlfRlJPTV9UVVBMRShuYW1lc3BhY2VfKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDI+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgc3RhdGljIG5vX2tleSBleHRyYWN0KG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OnBpZWNld2lzZV9jb25zdHJ1Y3RfdCwgICAgICBcCi0gICAgICAgICAgICAgICAgbmFtZXNwYWNlXyB0dXBsZTw+IGNvbnN0JiwgVDIgY29uc3QmKSAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHJldHVybiBub19rZXkoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFQyPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHN0YXRpYyB0eXBlbmFtZSBpc19rZXk8a2V5X3R5cGUsIFQ+Ojp0eXBlICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgZXh0cmFjdChuZG5ib29zdDo6dW5vcmRlcmVkOjpwaWVjZXdpc2VfY29uc3RydWN0X3QsICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICBuYW1lc3BhY2VfIHR1cGxlPFQ+IGNvbnN0JiBrLCBUMiBjb25zdCYpICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIGlzX2tleTxrZXlfdHlwZSwgVD46OnR5cGUoICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICBuYW1lc3BhY2VfIGdldDwwPihrKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIH0KLQotI2Vsc2UKLQotI2RlZmluZSBORE5CT09TVF9VTk9SREVSRURfS0VZX0ZST01fVFVQTEUobmFtZXNwYWNlXykgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgc3RhdGljIG5vX2tleSBleHRyYWN0KG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OnBpZWNld2lzZV9jb25zdHJ1Y3RfdCwgICAgICBcCi0gICAgICAgICAgICAgICAgbmFtZXNwYWNlXyB0dXBsZTw+IGNvbnN0JikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHJldHVybiBub19rZXkoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHN0YXRpYyB0eXBlbmFtZSBpc19rZXk8a2V5X3R5cGUsIFQ+Ojp0eXBlICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgZXh0cmFjdChuZG5ib29zdDo6dW5vcmRlcmVkOjpwaWVjZXdpc2VfY29uc3RydWN0X3QsICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICBuYW1lc3BhY2VfIHR1cGxlPFQ+IGNvbnN0JiBrKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgcmV0dXJuIHR5cGVuYW1lIGlzX2tleTxrZXlfdHlwZSwgVD46OnR5cGUoICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICBuYW1lc3BhY2VfIGdldDwwPihrKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIH0KLQotI2VuZGlmCi0KLU5ETkJPT1NUX1VOT1JERVJFRF9LRVlfRlJPTV9UVVBMRShuZG5ib29zdDo6KQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfSERSX1RVUExFKQotTkROQk9PU1RfVU5PUkRFUkVEX0tFWV9GUk9NX1RVUExFKHN0ZDo6KQotI2VuZGlmCi0gICAgfTsKLX19fQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdW5vcmRlcmVkL2RldGFpbC9md2QuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC91bm9yZGVyZWQvZGV0YWlsL2Z3ZC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM0ZjRjZGEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC91bm9yZGVyZWQvZGV0YWlsL2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi0KLS8vIENvcHlyaWdodCAoQykgMjAwOC0yMDExIERhbmllbCBKYW1lcy4KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWZuZGVmIE5ETkJPT1NUX1VOT1JERVJFRF9GV0RfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9GV0RfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotbmFtZXNwYWNlIHVub3JkZXJlZAotewotICAgIHN0cnVjdCBwaWVjZXdpc2VfY29uc3RydWN0X3Qge307Ci0gICAgY29uc3QgcGllY2V3aXNlX2NvbnN0cnVjdF90IHBpZWNld2lzZV9jb25zdHJ1Y3QgPSBwaWVjZXdpc2VfY29uc3RydWN0X3QoKTsKLX0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Vub3JkZXJlZC9kZXRhaWwvdGFibGUuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC91bm9yZGVyZWQvZGV0YWlsL3RhYmxlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzY0MTQ4My4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Vub3JkZXJlZC9kZXRhaWwvdGFibGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsODYxICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IChDKSAyMDAzLTIwMDQgSmVyZW15IEIuIE1haXRpbi1TaGVwYXJkLgotLy8gQ29weXJpZ2h0IChDKSAyMDA1LTIwMTEgRGFuaWVsIEphbWVzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9VTk9SREVSRURfREVUQUlMX0FMTF9IUFBfSU5DTFVERUQKLSNkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX0RFVEFJTF9BTExfSFBQX0lOQ0xVREVECi0KLSNpbmNsdWRlIDxuZG5ib29zdC91bm9yZGVyZWQvZGV0YWlsL2J1Y2tldHMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Vub3JkZXJlZC9kZXRhaWwvdXRpbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvYWxpZ25lZF9zdG9yYWdlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9hbGlnbm1lbnRfb2YuaHBwPgotI2luY2x1ZGUgPGNtYXRoPgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKQotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0MTI3KSAvLyBjb25kaXRpb25hbCBleHByZXNzaW9uIGlzIGNvbnN0YW50Ci0jZW5kaWYKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfVU5PUkRFUkVEX0RFUFJFQ0FURURfRVFVQUxJVFkpCi0KLSNpZiBkZWZpbmVkKF9fRURHX18pCi0jZWxpZiBkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9fQk9STEFORENfXykgfHwgZGVmaW5lZChfX0RNQ19fKQotI3ByYWdtYSBtZXNzYWdlKCJXYXJuaW5nOiBORE5CT09TVF9VTk9SREVSRURfREVQUkVDQVRFRF9FUVVBTElUWSBpcyBubyBsb25nZXIgc3VwcG9ydGVkLiIpCi0jZWxpZiBkZWZpbmVkKF9fR05VQ19fKSB8fCBkZWZpbmVkKF9fSFBfYUNDKSB8fCBcCi0gICAgZGVmaW5lZChfX1NVTlBST19DQykgfHwgZGVmaW5lZChfX0lCTUNQUF9fKQotI3dhcm5pbmcgIk5ETkJPT1NUX1VOT1JERVJFRF9ERVBSRUNBVEVEX0VRVUFMSVRZIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQuIgotI2VuZGlmCi0KLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgdW5vcmRlcmVkIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLSAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgLy8gY29udmVydCBkb3VibGUgdG8gc3RkOjpzaXplX3QKLQotICAgIGlubGluZSBzdGQ6OnNpemVfdCBkb3VibGVfdG9fc2l6ZShkb3VibGUgZikKLSAgICB7Ci0gICAgICAgIHJldHVybiBmID49IHN0YXRpY19jYXN0PGRvdWJsZT4oCi0gICAgICAgICAgICAoc3RkOjpudW1lcmljX2xpbWl0czxzdGQ6OnNpemVfdD46Om1heCkoKSkgPwotICAgICAgICAgICAgKHN0ZDo6bnVtZXJpY19saW1pdHM8c3RkOjpzaXplX3Q+OjptYXgpKCkgOgotICAgICAgICAgICAgc3RhdGljX2Nhc3Q8c3RkOjpzaXplX3Q+KGYpOwotICAgIH0KLQotICAgIC8vIFRoZSBzcGFjZSB1c2VkIHRvIHN0b3JlIHZhbHVlcyBpbiBhIG5vZGUuCi0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVmFsdWVUeXBlPgotICAgIHN0cnVjdCB2YWx1ZV9iYXNlCi0gICAgewotICAgICAgICB0eXBlZGVmIFZhbHVlVHlwZSB2YWx1ZV90eXBlOwotCi0gICAgICAgIHR5cGVuYW1lIG5kbmJvb3N0OjphbGlnbmVkX3N0b3JhZ2U8Ci0gICAgICAgICAgICBzaXplb2YodmFsdWVfdHlwZSksCi0gICAgICAgICAgICBuZG5ib29zdDo6YWxpZ25tZW50X29mPHZhbHVlX3R5cGU+Ojp2YWx1ZT46OnR5cGUgZGF0YV87Ci0KLSAgICAgICAgdm9pZCogYWRkcmVzcygpIHsKLSAgICAgICAgICAgIHJldHVybiB0aGlzOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFsdWVfdHlwZSYgdmFsdWUoKSB7Ci0gICAgICAgICAgICByZXR1cm4gKihWYWx1ZVR5cGUqKSB0aGlzOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFsdWVfdHlwZSogdmFsdWVfcHRyKCkgewotICAgICAgICAgICAgcmV0dXJuIChWYWx1ZVR5cGUqKSB0aGlzOwotICAgICAgICB9Ci0KLSAgICBwcml2YXRlOgotCi0gICAgICAgIHZhbHVlX2Jhc2UmIG9wZXJhdG9yPSh2YWx1ZV9iYXNlIGNvbnN0Jik7Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBOb2RlQWxsb2M+Ci0gICAgc3RydWN0IGNvcHlfbm9kZXMKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjphbGxvY2F0b3JfdHJhaXRzPE5vZGVBbGxvYz4KLSAgICAgICAgICAgIG5vZGVfYWxsb2NhdG9yX3RyYWl0czsKLQotICAgICAgICBub2RlX2NvbnN0cnVjdG9yPE5vZGVBbGxvYz4gY29uc3RydWN0b3I7Ci0KLSAgICAgICAgZXhwbGljaXQgY29weV9ub2RlcyhOb2RlQWxsb2MmIGEpIDogY29uc3RydWN0b3IoYSkge30KLQotICAgICAgICB0eXBlbmFtZSBub2RlX2FsbG9jYXRvcl90cmFpdHM6OnBvaW50ZXIgY3JlYXRlKAotICAgICAgICAgICAgICAgIHR5cGVuYW1lIG5vZGVfYWxsb2NhdG9yX3RyYWl0czo6dmFsdWVfdHlwZTo6dmFsdWVfdHlwZSBjb25zdCYgdikKLSAgICAgICAgewotICAgICAgICAgICAgY29uc3RydWN0b3IuY29uc3RydWN0X3dpdGhfdmFsdWUyKHYpOwotICAgICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yLnJlbGVhc2UoKTsKLSAgICAgICAgfQotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTm9kZUFsbG9jPgotICAgIHN0cnVjdCBtb3ZlX25vZGVzCi0gICAgewotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6YWxsb2NhdG9yX3RyYWl0czxOb2RlQWxsb2M+Ci0gICAgICAgICAgICBub2RlX2FsbG9jYXRvcl90cmFpdHM7Ci0KLSAgICAgICAgbm9kZV9jb25zdHJ1Y3RvcjxOb2RlQWxsb2M+IGNvbnN0cnVjdG9yOwotCi0gICAgICAgIGV4cGxpY2l0IG1vdmVfbm9kZXMoTm9kZUFsbG9jJiBhKSA6IGNvbnN0cnVjdG9yKGEpIHt9Ci0KLSAgICAgICAgdHlwZW5hbWUgbm9kZV9hbGxvY2F0b3JfdHJhaXRzOjpwb2ludGVyIGNyZWF0ZSgKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBub2RlX2FsbG9jYXRvcl90cmFpdHM6OnZhbHVlX3R5cGU6OnZhbHVlX3R5cGUmIHYpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0cnVjdG9yLmNvbnN0cnVjdF93aXRoX3ZhbHVlMihuZG5ib29zdDo6bW92ZSh2KSk7Ci0gICAgICAgICAgICByZXR1cm4gY29uc3RydWN0b3IucmVsZWFzZSgpOwotICAgICAgICB9Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBCdWNrZXRzPgotICAgIHN0cnVjdCBhc3NpZ25fbm9kZXMKLSAgICB7Ci0gICAgICAgIG5vZGVfaG9sZGVyPHR5cGVuYW1lIEJ1Y2tldHM6Om5vZGVfYWxsb2NhdG9yPiBob2xkZXI7Ci0KLSAgICAgICAgZXhwbGljaXQgYXNzaWduX25vZGVzKEJ1Y2tldHMmIGIpIDogaG9sZGVyKGIpIHt9Ci0KLSAgICAgICAgdHlwZW5hbWUgQnVja2V0czo6bm9kZV9wb2ludGVyIGNyZWF0ZSgKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBCdWNrZXRzOjp2YWx1ZV90eXBlIGNvbnN0JiB2KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gaG9sZGVyLmNvcHlfb2Yodik7Ci0gICAgICAgIH0KLSAgICB9OwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEJ1Y2tldHM+Ci0gICAgc3RydWN0IG1vdmVfYXNzaWduX25vZGVzCi0gICAgewotICAgICAgICBub2RlX2hvbGRlcjx0eXBlbmFtZSBCdWNrZXRzOjpub2RlX2FsbG9jYXRvcj4gaG9sZGVyOwotCi0gICAgICAgIGV4cGxpY2l0IG1vdmVfYXNzaWduX25vZGVzKEJ1Y2tldHMmIGIpIDogaG9sZGVyKGIpIHt9Ci0KLSAgICAgICAgdHlwZW5hbWUgQnVja2V0czo6bm9kZV9wb2ludGVyIGNyZWF0ZSgKLSAgICAgICAgICAgICAgICB0eXBlbmFtZSBCdWNrZXRzOjp2YWx1ZV90eXBlJiB2KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gaG9sZGVyLm1vdmVfY29weV9vZih2KTsKLSAgICAgICAgfQotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVHlwZXM+Ci0gICAgc3RydWN0IHRhYmxlIDoKLSAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpmdW5jdGlvbnM8Ci0gICAgICAgICAgICB0eXBlbmFtZSBUeXBlczo6aGFzaGVyLAotICAgICAgICAgICAgdHlwZW5hbWUgVHlwZXM6OmtleV9lcXVhbD4KLSAgICB7Ci0gICAgcHJpdmF0ZToKLSAgICAgICAgdGFibGUodGFibGUgY29uc3QmKTsKLSAgICAgICAgdGFibGUmIG9wZXJhdG9yPSh0YWJsZSBjb25zdCYpOwotICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBUeXBlczo6bm9kZSBub2RlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFR5cGVzOjpidWNrZXQgYnVja2V0OwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFR5cGVzOjpoYXNoZXIgaGFzaGVyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFR5cGVzOjprZXlfZXF1YWwga2V5X2VxdWFsOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFR5cGVzOjprZXlfdHlwZSBrZXlfdHlwZTsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBUeXBlczo6ZXh0cmFjdG9yIGV4dHJhY3RvcjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBUeXBlczo6dmFsdWVfdHlwZSB2YWx1ZV90eXBlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFR5cGVzOjp0YWJsZSB0YWJsZV9pbXBsOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFR5cGVzOjpsaW5rX3BvaW50ZXIgbGlua19wb2ludGVyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFR5cGVzOjpwb2xpY3kgcG9saWN5OwotCi0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpmdW5jdGlvbnM8Ci0gICAgICAgICAgICB0eXBlbmFtZSBUeXBlczo6aGFzaGVyLAotICAgICAgICAgICAgdHlwZW5hbWUgVHlwZXM6OmtleV9lcXVhbD4gZnVuY3Rpb25zOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGZ1bmN0aW9uczo6c2V0X2hhc2hfZnVuY3Rpb25zIHNldF9oYXNoX2Z1bmN0aW9uczsKLQotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIFR5cGVzOjphbGxvY2F0b3IgYWxsb2NhdG9yOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6Ci0gICAgICAgICAgICByZWJpbmRfd3JhcDxhbGxvY2F0b3IsIG5vZGU+Ojp0eXBlIG5vZGVfYWxsb2NhdG9yOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6Ci0gICAgICAgICAgICByZWJpbmRfd3JhcDxhbGxvY2F0b3IsIGJ1Y2tldD46OnR5cGUgYnVja2V0X2FsbG9jYXRvcjsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmFsbG9jYXRvcl90cmFpdHM8bm9kZV9hbGxvY2F0b3I+Ci0gICAgICAgICAgICBub2RlX2FsbG9jYXRvcl90cmFpdHM7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjphbGxvY2F0b3JfdHJhaXRzPGJ1Y2tldF9hbGxvY2F0b3I+Ci0gICAgICAgICAgICBidWNrZXRfYWxsb2NhdG9yX3RyYWl0czsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBub2RlX2FsbG9jYXRvcl90cmFpdHM6OnBvaW50ZXIKLSAgICAgICAgICAgIG5vZGVfcG9pbnRlcjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBub2RlX2FsbG9jYXRvcl90cmFpdHM6OmNvbnN0X3BvaW50ZXIKLSAgICAgICAgICAgIGNvbnN0X25vZGVfcG9pbnRlcjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBidWNrZXRfYWxsb2NhdG9yX3RyYWl0czo6cG9pbnRlcgotICAgICAgICAgICAgYnVja2V0X3BvaW50ZXI7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpub2RlX2NvbnN0cnVjdG9yPG5vZGVfYWxsb2NhdG9yPgotICAgICAgICAgICAgbm9kZV9jb25zdHJ1Y3RvcjsKLQotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6Oml0ZXJhdG9yX2RldGFpbDo6Ci0gICAgICAgICAgICBpdGVyYXRvcjxub2RlPiBpdGVyYXRvcjsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjppdGVyYXRvcl9kZXRhaWw6OgotICAgICAgICAgICAgY19pdGVyYXRvcjxub2RlLCBjb25zdF9ub2RlX3BvaW50ZXI+IGNfaXRlcmF0b3I7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6aXRlcmF0b3JfZGV0YWlsOjoKLSAgICAgICAgICAgIGxfaXRlcmF0b3I8bm9kZSwgcG9saWN5PiBsX2l0ZXJhdG9yOwotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6Oml0ZXJhdG9yX2RldGFpbDo6Ci0gICAgICAgICAgICBjbF9pdGVyYXRvcjxub2RlLCBjb25zdF9ub2RlX3BvaW50ZXIsIHBvbGljeT4gY2xfaXRlcmF0b3I7Ci0KLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgICAgIC8vIE1lbWJlcnMKLQotICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmNvbXByZXNzZWQ8YnVja2V0X2FsbG9jYXRvciwgbm9kZV9hbGxvY2F0b3I+Ci0gICAgICAgICAgICBhbGxvY2F0b3JzXzsKLSAgICAgICAgc3RkOjpzaXplX3QgYnVja2V0X2NvdW50XzsKLSAgICAgICAgc3RkOjpzaXplX3Qgc2l6ZV87Ci0gICAgICAgIGZsb2F0IG1sZl87Ci0gICAgICAgIHN0ZDo6c2l6ZV90IG1heF9sb2FkXzsKLSAgICAgICAgYnVja2V0X3BvaW50ZXIgYnVja2V0c187Ci0KLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgICAgIC8vIERhdGEgYWNjZXNzCi0KLSAgICAgICAgYnVja2V0X2FsbG9jYXRvciBjb25zdCYgYnVja2V0X2FsbG9jKCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGFsbG9jYXRvcnNfLmZpcnN0KCk7Ci0gICAgICAgIH0KLQotICAgICAgICBub2RlX2FsbG9jYXRvciBjb25zdCYgbm9kZV9hbGxvYygpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhbGxvY2F0b3JzXy5zZWNvbmQoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGJ1Y2tldF9hbGxvY2F0b3ImIGJ1Y2tldF9hbGxvYygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhbGxvY2F0b3JzXy5maXJzdCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgbm9kZV9hbGxvY2F0b3ImIG5vZGVfYWxsb2MoKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYWxsb2NhdG9yc18uc2Vjb25kKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGQ6OnNpemVfdCBtYXhfYnVja2V0X2NvdW50KCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgLy8gLTEgdG8gYWNjb3VudCBmb3IgdGhlIHN0YXJ0IGJ1Y2tldC4KLSAgICAgICAgICAgIHJldHVybiBwb2xpY3k6OnByZXZfYnVja2V0X2NvdW50KAotICAgICAgICAgICAgICAgIGJ1Y2tldF9hbGxvY2F0b3JfdHJhaXRzOjptYXhfc2l6ZShidWNrZXRfYWxsb2MoKSkgLSAxKTsKLSAgICAgICAgfQotCi0gICAgICAgIGJ1Y2tldF9wb2ludGVyIGdldF9idWNrZXQoc3RkOjpzaXplX3QgYnVja2V0X2luZGV4KSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICBORE5CT09TVF9BU1NFUlQoYnVja2V0c18pOwotICAgICAgICAgICAgcmV0dXJuIGJ1Y2tldHNfICsgc3RhdGljX2Nhc3Q8c3RkOjpwdHJkaWZmX3Q+KGJ1Y2tldF9pbmRleCk7Ci0gICAgICAgIH0KLQotICAgICAgICBsaW5rX3BvaW50ZXIgZ2V0X3ByZXZpb3VzX3N0YXJ0KCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGdldF9idWNrZXQoYnVja2V0X2NvdW50XyktPmZpcnN0X2Zyb21fc3RhcnQoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGxpbmtfcG9pbnRlciBnZXRfcHJldmlvdXNfc3RhcnQoc3RkOjpzaXplX3QgYnVja2V0X2luZGV4KSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZ2V0X2J1Y2tldChidWNrZXRfaW5kZXgpLT5uZXh0XzsKLSAgICAgICAgfQotCi0gICAgICAgIGl0ZXJhdG9yIGJlZ2luKCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHNpemVfID8gaXRlcmF0b3IoZ2V0X3ByZXZpb3VzX3N0YXJ0KCktPm5leHRfKSA6IGl0ZXJhdG9yKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpdGVyYXRvciBiZWdpbihzdGQ6OnNpemVfdCBidWNrZXRfaW5kZXgpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghc2l6ZV8pIHJldHVybiBpdGVyYXRvcigpOwotICAgICAgICAgICAgbGlua19wb2ludGVyIHByZXYgPSBnZXRfcHJldmlvdXNfc3RhcnQoYnVja2V0X2luZGV4KTsKLSAgICAgICAgICAgIHJldHVybiBwcmV2ID8gaXRlcmF0b3IocHJldi0+bmV4dF8pIDogaXRlcmF0b3IoKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgc3RkOjpzaXplX3QgaGFzaF90b19idWNrZXQoc3RkOjpzaXplX3QgaGFzaCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHBvbGljeTo6dG9fYnVja2V0KGJ1Y2tldF9jb3VudF8sIGhhc2gpOwotICAgICAgICB9Ci0KLSAgICAgICAgZmxvYXQgbG9hZF9mYWN0b3IoKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICBORE5CT09TVF9BU1NFUlQoYnVja2V0X2NvdW50XyAhPSAwKTsKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxmbG9hdD4oc2l6ZV8pCi0gICAgICAgICAgICAgICAgLyBzdGF0aWNfY2FzdDxmbG9hdD4oYnVja2V0X2NvdW50Xyk7Ci0gICAgICAgIH0KLQotICAgICAgICBzdGQ6OnNpemVfdCBidWNrZXRfc2l6ZShzdGQ6OnNpemVfdCBpbmRleCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgaXRlcmF0b3IgaXQgPSBiZWdpbihpbmRleCk7Ci0gICAgICAgICAgICBpZiAoIWl0Lm5vZGVfKSByZXR1cm4gMDsKLQotICAgICAgICAgICAgc3RkOjpzaXplX3QgY291bnQgPSAwOwotICAgICAgICAgICAgd2hpbGUoaXQubm9kZV8gJiYgaGFzaF90b19idWNrZXQoaXQubm9kZV8tPmhhc2hfKSA9PSBpbmRleCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICArK2NvdW50OwotICAgICAgICAgICAgICAgICsraXQ7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHJldHVybiBjb3VudDsKLSAgICAgICAgfQotCi0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgICAgICAvLyBMb2FkIG1ldGhvZHMKLQotICAgICAgICBzdGQ6OnNpemVfdCBtYXhfc2l6ZSgpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0gICAgCi0gICAgICAgICAgICAvLyBzaXplIDwgbWxmXyAqIGNvdW50Ci0gICAgICAgICAgICByZXR1cm4gbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpkb3VibGVfdG9fc2l6ZShjZWlsKAotICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxkb3VibGU+KG1sZl8pICoKLSAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8ZG91YmxlPihtYXhfYnVja2V0X2NvdW50KCkpCi0gICAgICAgICAgICAgICAgKSkgLSAxOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCByZWNhbGN1bGF0ZV9tYXhfbG9hZCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0gICAgCi0gICAgICAgICAgICAvLyBGcm9tIDYuMy4xLzEzOgotICAgICAgICAgICAgLy8gT25seSByZXNpemUgd2hlbiBzaXplID49IG1sZl8gKiBjb3VudAotICAgICAgICAgICAgbWF4X2xvYWRfID0gYnVja2V0c18gPyBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmRvdWJsZV90b19zaXplKGNlaWwoCi0gICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGRvdWJsZT4obWxmXykgKgotICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxkb3VibGU+KGJ1Y2tldF9jb3VudF8pCi0gICAgICAgICAgICAgICAgKSkgOiAwOwotCi0gICAgICAgIH0KLQotICAgICAgICB2b2lkIG1heF9sb2FkX2ZhY3RvcihmbG9hdCB6KQotICAgICAgICB7Ci0gICAgICAgICAgICBORE5CT09TVF9BU1NFUlQoeiA+IDApOwotICAgICAgICAgICAgbWxmXyA9IChzdGQ6Om1heCkoeiwgbWluaW11bV9tYXhfbG9hZF9mYWN0b3IpOwotICAgICAgICAgICAgcmVjYWxjdWxhdGVfbWF4X2xvYWQoKTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0ZDo6c2l6ZV90IG1pbl9idWNrZXRzX2Zvcl9zaXplKHN0ZDo6c2l6ZV90IHNpemUpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIE5ETkJPT1NUX0FTU0VSVChtbGZfID49IG1pbmltdW1fbWF4X2xvYWRfZmFjdG9yKTsKLSAgICAKLSAgICAgICAgICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0gICAgCi0gICAgICAgICAgICAvLyBGcm9tIDYuMy4xLzEzOgotICAgICAgICAgICAgLy8gc2l6ZSA8IG1sZl8gKiBjb3VudAotICAgICAgICAgICAgLy8gPT4gY291bnQgPiBzaXplIC8gbWxmXwotICAgICAgICAgICAgLy8KLSAgICAgICAgICAgIC8vIE9yIGZyb20gcmVoYXNoIHBvc3QtY29uZGl0aW9uOgotICAgICAgICAgICAgLy8gY291bnQgPiBzaXplIC8gbWxmXwotCi0gICAgICAgICAgICByZXR1cm4gcG9saWN5OjpuZXdfYnVja2V0X2NvdW50KAotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6ZG91YmxlX3RvX3NpemUoZmxvb3IoCi0gICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGRvdWJsZT4oc2l6ZSkgLwotICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxkb3VibGU+KG1sZl8pKSkgKyAxKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgICAgICAvLyBDb25zdHJ1Y3RvcnMKLQotICAgICAgICB0YWJsZShzdGQ6OnNpemVfdCBudW1fYnVja2V0cywKLSAgICAgICAgICAgICAgICBoYXNoZXIgY29uc3QmIGhmLAotICAgICAgICAgICAgICAgIGtleV9lcXVhbCBjb25zdCYgZXEsCi0gICAgICAgICAgICAgICAgbm9kZV9hbGxvY2F0b3IgY29uc3QmIGEpIDoKLSAgICAgICAgICAgIGZ1bmN0aW9ucyhoZiwgZXEpLAotICAgICAgICAgICAgYWxsb2NhdG9yc18oYSxhKSwKLSAgICAgICAgICAgIGJ1Y2tldF9jb3VudF8ocG9saWN5OjpuZXdfYnVja2V0X2NvdW50KG51bV9idWNrZXRzKSksCi0gICAgICAgICAgICBzaXplXygwKSwKLSAgICAgICAgICAgIG1sZl8oMS4wZiksCi0gICAgICAgICAgICBtYXhfbG9hZF8oMCksCi0gICAgICAgICAgICBidWNrZXRzXygpCi0gICAgICAgIHt9Ci0KLSAgICAgICAgdGFibGUodGFibGUgY29uc3QmIHgsIG5vZGVfYWxsb2NhdG9yIGNvbnN0JiBhKSA6Ci0gICAgICAgICAgICBmdW5jdGlvbnMoeCksCi0gICAgICAgICAgICBhbGxvY2F0b3JzXyhhLGEpLAotICAgICAgICAgICAgYnVja2V0X2NvdW50Xyh4Lm1pbl9idWNrZXRzX2Zvcl9zaXplKHguc2l6ZV8pKSwKLSAgICAgICAgICAgIHNpemVfKDApLAotICAgICAgICAgICAgbWxmXyh4Lm1sZl8pLAotICAgICAgICAgICAgbWF4X2xvYWRfKDApLAotICAgICAgICAgICAgYnVja2V0c18oKQotICAgICAgICB7fQotCi0gICAgICAgIHRhYmxlKHRhYmxlJiB4LCBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6Om1vdmVfdGFnIG0pIDoKLSAgICAgICAgICAgIGZ1bmN0aW9ucyh4LCBtKSwKLSAgICAgICAgICAgIGFsbG9jYXRvcnNfKHguYWxsb2NhdG9yc18sIG0pLAotICAgICAgICAgICAgYnVja2V0X2NvdW50Xyh4LmJ1Y2tldF9jb3VudF8pLAotICAgICAgICAgICAgc2l6ZV8oeC5zaXplXyksCi0gICAgICAgICAgICBtbGZfKHgubWxmXyksCi0gICAgICAgICAgICBtYXhfbG9hZF8oeC5tYXhfbG9hZF8pLAotICAgICAgICAgICAgYnVja2V0c18oeC5idWNrZXRzXykKLSAgICAgICAgewotICAgICAgICAgICAgeC5idWNrZXRzXyA9IGJ1Y2tldF9wb2ludGVyKCk7Ci0gICAgICAgICAgICB4LnNpemVfID0gMDsKLSAgICAgICAgICAgIHgubWF4X2xvYWRfID0gMDsKLSAgICAgICAgfQotCi0gICAgICAgIHRhYmxlKHRhYmxlJiB4LCBub2RlX2FsbG9jYXRvciBjb25zdCYgYSwKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6Om1vdmVfdGFnIG0pIDoKLSAgICAgICAgICAgIGZ1bmN0aW9ucyh4LCBtKSwKLSAgICAgICAgICAgIGFsbG9jYXRvcnNfKGEsIGEpLAotICAgICAgICAgICAgYnVja2V0X2NvdW50Xyh4LmJ1Y2tldF9jb3VudF8pLAotICAgICAgICAgICAgc2l6ZV8oMCksCi0gICAgICAgICAgICBtbGZfKHgubWxmXyksCi0gICAgICAgICAgICBtYXhfbG9hZF8oeC5tYXhfbG9hZF8pLAotICAgICAgICAgICAgYnVja2V0c18oKQotICAgICAgICB7fQotCi0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgICAgICAvLyBJbml0aWFsaXNhdGlvbi4KLQotICAgICAgICB2b2lkIGluaXQodGFibGUgY29uc3QmIHgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICh4LnNpemVfKSB7Ci0gICAgICAgICAgICAgICAgY3JlYXRlX2J1Y2tldHMoYnVja2V0X2NvdW50Xyk7Ci0gICAgICAgICAgICAgICAgY29weV9ub2Rlczxub2RlX2FsbG9jYXRvcj4gY29weShub2RlX2FsbG9jKCkpOwotICAgICAgICAgICAgICAgIHRhYmxlX2ltcGw6OmZpbGxfYnVja2V0cyh4LmJlZ2luKCksICp0aGlzLCBjb3B5KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgbW92ZV9pbml0KHRhYmxlJiB4KQotICAgICAgICB7Ci0gICAgICAgICAgICBpZihub2RlX2FsbG9jKCkgPT0geC5ub2RlX2FsbG9jKCkpIHsKLSAgICAgICAgICAgICAgICBtb3ZlX2J1Y2tldHNfZnJvbSh4KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYoeC5zaXplXykgewotICAgICAgICAgICAgICAgIC8vIFRPRE86IENvdWxkIHBpY2sgbmV3IGJ1Y2tldCBzaXplPwotICAgICAgICAgICAgICAgIGNyZWF0ZV9idWNrZXRzKGJ1Y2tldF9jb3VudF8pOwotCi0gICAgICAgICAgICAgICAgbW92ZV9ub2Rlczxub2RlX2FsbG9jYXRvcj4gbW92ZShub2RlX2FsbG9jKCkpOwotICAgICAgICAgICAgICAgIG5vZGVfaG9sZGVyPG5vZGVfYWxsb2NhdG9yPiBub2Rlcyh4KTsKLSAgICAgICAgICAgICAgICB0YWJsZV9pbXBsOjpmaWxsX2J1Y2tldHMobm9kZXMuYmVnaW4oKSwgKnRoaXMsIG1vdmUpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgICAgIC8vIENyZWF0ZSBidWNrZXRzCi0KLSAgICAgICAgdm9pZCBjcmVhdGVfYnVja2V0cyhzdGQ6OnNpemVfdCBuZXdfY291bnQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6YXJyYXlfY29uc3RydWN0b3I8YnVja2V0X2FsbG9jYXRvcj4KLSAgICAgICAgICAgICAgICBjb25zdHJ1Y3RvcihidWNrZXRfYWxsb2MoKSk7Ci0gICAgCi0gICAgICAgICAgICAvLyBDcmVhdGVzIGFuIGV4dHJhIGJ1Y2tldCB0byBhY3QgYXMgdGhlIHN0YXJ0IG5vZGUuCi0gICAgICAgICAgICBjb25zdHJ1Y3Rvci5jb25zdHJ1Y3QoYnVja2V0KCksIG5ld19jb3VudCArIDEpOwotCi0gICAgICAgICAgICBpZiAoYnVja2V0c18pCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgLy8gQ29weSB0aGUgbm9kZXMgdG8gdGhlIG5ldyBidWNrZXRzLCBpbmNsdWRpbmcgdGhlIGR1bW15Ci0gICAgICAgICAgICAgICAgLy8gbm9kZSBpZiB0aGVyZSBpcyBvbmUuCi0gICAgICAgICAgICAgICAgKGNvbnN0cnVjdG9yLmdldCgpICsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8c3RkOjpwdHJkaWZmX3Q+KG5ld19jb3VudCkpLT5uZXh0XyA9Ci0gICAgICAgICAgICAgICAgICAgICAgICAoYnVja2V0c18gKyBzdGF0aWNfY2FzdDxzdGQ6OnB0cmRpZmZfdD4oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVja2V0X2NvdW50XykpLT5uZXh0XzsKLSAgICAgICAgICAgICAgICBkZXN0cm95X2J1Y2tldHMoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKGJ1Y2tldDo6ZXh0cmFfbm9kZSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBub2RlX2NvbnN0cnVjdG9yIGEobm9kZV9hbGxvYygpKTsKLSAgICAgICAgICAgICAgICBhLmNvbnN0cnVjdCgpOwotCi0gICAgICAgICAgICAgICAgKGNvbnN0cnVjdG9yLmdldCgpICsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8c3RkOjpwdHJkaWZmX3Q+KG5ld19jb3VudCkpLT5uZXh0XyA9Ci0gICAgICAgICAgICAgICAgICAgICAgICBhLnJlbGVhc2UoKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgYnVja2V0X2NvdW50XyA9IG5ld19jb3VudDsKLSAgICAgICAgICAgIGJ1Y2tldHNfID0gY29uc3RydWN0b3IucmVsZWFzZSgpOwotICAgICAgICAgICAgcmVjYWxjdWxhdGVfbWF4X2xvYWQoKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgICAgICAvLyBTd2FwIGFuZCBNb3ZlCi0KLSAgICAgICAgdm9pZCBzd2FwX2FsbG9jYXRvcnModGFibGUmIG90aGVyLCBmYWxzZV90eXBlKQotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBBY2NvcmRpbmcgdG8gMjMuMi4xLjgsIGlmIHByb3BhZ2F0ZV9vbl9jb250YWluZXJfc3dhcCBpcwotICAgICAgICAgICAgLy8gZmFsc2UgdGhlIGJlaGF2aW91ciBpcyB1bmRlZmluZWQgdW5sZXNzIHRoZSBhbGxvY2F0b3JzCi0gICAgICAgICAgICAvLyBhcmUgZXF1YWwuCi0gICAgICAgICAgICBORE5CT09TVF9BU1NFUlQobm9kZV9hbGxvYygpID09IG90aGVyLm5vZGVfYWxsb2MoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIHN3YXBfYWxsb2NhdG9ycyh0YWJsZSYgb3RoZXIsIHRydWVfdHlwZSkKLSAgICAgICAgewotICAgICAgICAgICAgYWxsb2NhdG9yc18uc3dhcChvdGhlci5hbGxvY2F0b3JzXyk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBPbmx5IHN3YXBzIHRoZSBhbGxvY2F0b3JzIGlmIHByb3BhZ2F0ZV9vbl9jb250YWluZXJfc3dhcAotICAgICAgICB2b2lkIHN3YXAodGFibGUmIHgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHNldF9oYXNoX2Z1bmN0aW9ucyBvcDEoKnRoaXMsIHgpOwotICAgICAgICAgICAgc2V0X2hhc2hfZnVuY3Rpb25zIG9wMih4LCAqdGhpcyk7Ci0KLSAgICAgICAgICAgIC8vIEkgdGhpbmsgc3dhcCBjYW4gdGhyb3cgaWYgUHJvcGFnYXRlOjp2YWx1ZSwKLSAgICAgICAgICAgIC8vIHNpbmNlIHRoZSBhbGxvY2F0b3JzJyBzd2FwIGNhbiB0aHJvdy4gTm90IHN1cmUgdGhvdWdoLgotICAgICAgICAgICAgc3dhcF9hbGxvY2F0b3JzKHgsCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjppbnRlZ3JhbF9jb25zdGFudDxib29sLAotICAgICAgICAgICAgICAgICAgICBhbGxvY2F0b3JfdHJhaXRzPG5vZGVfYWxsb2NhdG9yPjo6Ci0gICAgICAgICAgICAgICAgICAgIHByb3BhZ2F0ZV9vbl9jb250YWluZXJfc3dhcDo6dmFsdWU+KCkpOwotCi0gICAgICAgICAgICBuZG5ib29zdDo6c3dhcChidWNrZXRzXywgeC5idWNrZXRzXyk7Ci0gICAgICAgICAgICBuZG5ib29zdDo6c3dhcChidWNrZXRfY291bnRfLCB4LmJ1Y2tldF9jb3VudF8pOwotICAgICAgICAgICAgbmRuYm9vc3Q6OnN3YXAoc2l6ZV8sIHguc2l6ZV8pOwotICAgICAgICAgICAgc3RkOjpzd2FwKG1sZl8sIHgubWxmXyk7Ci0gICAgICAgICAgICBzdGQ6OnN3YXAobWF4X2xvYWRfLCB4Lm1heF9sb2FkXyk7Ci0gICAgICAgICAgICBvcDEuY29tbWl0KCk7Ci0gICAgICAgICAgICBvcDIuY29tbWl0KCk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIG1vdmVfYnVja2V0c19mcm9tKHRhYmxlJiBvdGhlcikKLSAgICAgICAgewotICAgICAgICAgICAgTkROQk9PU1RfQVNTRVJUKG5vZGVfYWxsb2MoKSA9PSBvdGhlci5ub2RlX2FsbG9jKCkpOwotICAgICAgICAgICAgTkROQk9PU1RfQVNTRVJUKCFidWNrZXRzXyk7Ci0gICAgICAgICAgICBidWNrZXRzXyA9IG90aGVyLmJ1Y2tldHNfOwotICAgICAgICAgICAgYnVja2V0X2NvdW50XyA9IG90aGVyLmJ1Y2tldF9jb3VudF87Ci0gICAgICAgICAgICBzaXplXyA9IG90aGVyLnNpemVfOwotICAgICAgICAgICAgb3RoZXIuYnVja2V0c18gPSBidWNrZXRfcG9pbnRlcigpOwotICAgICAgICAgICAgb3RoZXIuc2l6ZV8gPSAwOwotICAgICAgICAgICAgb3RoZXIubWF4X2xvYWRfID0gMDsKLSAgICAgICAgfQotCi0gICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgICAgICAvLyBEZWxldGUvZGVzdHJ1Y3QKLQotICAgICAgICB+dGFibGUoKQotICAgICAgICB7Ci0gICAgICAgICAgICBkZWxldGVfYnVja2V0cygpOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBkZWxldGVfbm9kZShsaW5rX3BvaW50ZXIgcHJldikKLSAgICAgICAgewotICAgICAgICAgICAgbm9kZV9wb2ludGVyIG4gPSBzdGF0aWNfY2FzdDxub2RlX3BvaW50ZXI+KHByZXYtPm5leHRfKTsKLSAgICAgICAgICAgIHByZXYtPm5leHRfID0gbi0+bmV4dF87Ci0KLSAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6ZGVzdHJveV92YWx1ZV9pbXBsKG5vZGVfYWxsb2MoKSwKLSAgICAgICAgICAgICAgICBuLT52YWx1ZV9wdHIoKSk7Ci0gICAgICAgICAgICBub2RlX2FsbG9jYXRvcl90cmFpdHM6OmRlc3Ryb3kobm9kZV9hbGxvYygpLAotICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6YWRkcmVzc29mKCpuKSk7Ci0gICAgICAgICAgICBub2RlX2FsbG9jYXRvcl90cmFpdHM6OmRlYWxsb2NhdGUobm9kZV9hbGxvYygpLCBuLCAxKTsKLSAgICAgICAgICAgIC0tc2l6ZV87Ci0gICAgICAgIH0KLQotICAgICAgICBzdGQ6OnNpemVfdCBkZWxldGVfbm9kZXMobGlua19wb2ludGVyIHByZXYsIGxpbmtfcG9pbnRlciBlbmQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIE5ETkJPT1NUX0FTU0VSVChwcmV2LT5uZXh0XyAhPSBlbmQpOwotCi0gICAgICAgICAgICBzdGQ6OnNpemVfdCBjb3VudCA9IDA7Ci0KLSAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICBkZWxldGVfbm9kZShwcmV2KTsKLSAgICAgICAgICAgICAgICArK2NvdW50OwotICAgICAgICAgICAgfSB3aGlsZSAocHJldi0+bmV4dF8gIT0gZW5kKTsKLQotICAgICAgICAgICAgcmV0dXJuIGNvdW50OwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBkZWxldGVfYnVja2V0cygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmKGJ1Y2tldHNfKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHNpemVfKSBkZWxldGVfbm9kZXMoZ2V0X3ByZXZpb3VzX3N0YXJ0KCksIGxpbmtfcG9pbnRlcigpKTsKLQotICAgICAgICAgICAgICAgIGlmIChidWNrZXQ6OmV4dHJhX25vZGUpIHsKLSAgICAgICAgICAgICAgICAgICAgbm9kZV9wb2ludGVyIG4gPSBzdGF0aWNfY2FzdDxub2RlX3BvaW50ZXI+KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldF9idWNrZXQoYnVja2V0X2NvdW50XyktPm5leHRfKTsKLSAgICAgICAgICAgICAgICAgICAgbm9kZV9hbGxvY2F0b3JfdHJhaXRzOjpkZXN0cm95KG5vZGVfYWxsb2MoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6YWRkcmVzc29mKCpuKSk7Ci0gICAgICAgICAgICAgICAgICAgIG5vZGVfYWxsb2NhdG9yX3RyYWl0czo6ZGVhbGxvY2F0ZShub2RlX2FsbG9jKCksIG4sIDEpOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGRlc3Ryb3lfYnVja2V0cygpOwotICAgICAgICAgICAgICAgIGJ1Y2tldHNfID0gYnVja2V0X3BvaW50ZXIoKTsKLSAgICAgICAgICAgICAgICBtYXhfbG9hZF8gPSAwOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBORE5CT09TVF9BU1NFUlQoIXNpemVfKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgY2xlYXIoKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIXNpemVfKSByZXR1cm47Ci0KLSAgICAgICAgICAgIGRlbGV0ZV9ub2RlcyhnZXRfcHJldmlvdXNfc3RhcnQoKSwgbGlua19wb2ludGVyKCkpOwotICAgICAgICAgICAgY2xlYXJfYnVja2V0cygpOwotCi0gICAgICAgICAgICBORE5CT09TVF9BU1NFUlQoIXNpemVfKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgY2xlYXJfYnVja2V0cygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGJ1Y2tldF9wb2ludGVyIGVuZCA9IGdldF9idWNrZXQoYnVja2V0X2NvdW50Xyk7Ci0gICAgICAgICAgICBmb3IoYnVja2V0X3BvaW50ZXIgaXQgPSBidWNrZXRzXzsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGl0LT5uZXh0XyA9IG5vZGVfcG9pbnRlcigpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBkZXN0cm95X2J1Y2tldHMoKQotICAgICAgICB7Ci0gICAgICAgICAgICBidWNrZXRfcG9pbnRlciBlbmQgPSBnZXRfYnVja2V0KGJ1Y2tldF9jb3VudF8gKyAxKTsKLSAgICAgICAgICAgIGZvcihidWNrZXRfcG9pbnRlciBpdCA9IGJ1Y2tldHNfOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgYnVja2V0X2FsbG9jYXRvcl90cmFpdHM6OmRlc3Ryb3koYnVja2V0X2FsbG9jKCksCi0gICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0OjphZGRyZXNzb2YoKml0KSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGJ1Y2tldF9hbGxvY2F0b3JfdHJhaXRzOjpkZWFsbG9jYXRlKGJ1Y2tldF9hbGxvYygpLAotICAgICAgICAgICAgICAgIGJ1Y2tldHNfLCBidWNrZXRfY291bnRfICsgMSk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAgICAgLy8gRml4IGJ1Y2tldHMgYWZ0ZXIgZGVsZXRlCi0gICAgICAgIC8vCi0KLSAgICAgICAgc3RkOjpzaXplX3QgZml4X2J1Y2tldChzdGQ6OnNpemVfdCBidWNrZXRfaW5kZXgsIGxpbmtfcG9pbnRlciBwcmV2KQotICAgICAgICB7Ci0gICAgICAgICAgICBsaW5rX3BvaW50ZXIgZW5kID0gcHJldi0+bmV4dF87Ci0gICAgICAgICAgICBzdGQ6OnNpemVfdCBidWNrZXRfaW5kZXgyID0gYnVja2V0X2luZGV4OwotCi0gICAgICAgICAgICBpZiAoZW5kKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGJ1Y2tldF9pbmRleDIgPSBoYXNoX3RvX2J1Y2tldCgKLSAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8bm9kZV9wb2ludGVyPihlbmQpLT5oYXNoXyk7Ci0KLSAgICAgICAgICAgICAgICAvLyBJZiBiZWdpbiBhbmQgZW5kIGFyZSBpbiB0aGUgc2FtZSBidWNrZXQsIHRoZW4KLSAgICAgICAgICAgICAgICAvLyB0aGVyZSdzIG5vdGhpbmcgdG8gZG8uCi0gICAgICAgICAgICAgICAgaWYgKGJ1Y2tldF9pbmRleCA9PSBidWNrZXRfaW5kZXgyKSByZXR1cm4gYnVja2V0X2luZGV4MjsKLQotICAgICAgICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgYnVja2V0IGNvbnRhaW5pbmcgZW5kLgotICAgICAgICAgICAgICAgIGdldF9idWNrZXQoYnVja2V0X2luZGV4MiktPm5leHRfID0gcHJldjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhpcyBidWNrZXQgaXMgbm93IGVtcHR5LgotICAgICAgICAgICAgYnVja2V0X3BvaW50ZXIgdGhpc19idWNrZXQgPSBnZXRfYnVja2V0KGJ1Y2tldF9pbmRleCk7Ci0gICAgICAgICAgICBpZiAodGhpc19idWNrZXQtPm5leHRfID09IHByZXYpCi0gICAgICAgICAgICAgICAgdGhpc19idWNrZXQtPm5leHRfID0gbGlua19wb2ludGVyKCk7Ci0KLSAgICAgICAgICAgIHJldHVybiBidWNrZXRfaW5kZXgyOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgICAgIC8vIEFzc2lnbm1lbnQKLQotICAgICAgICB2b2lkIGFzc2lnbih0YWJsZSBjb25zdCYgeCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKHRoaXMgIT0gbmRuYm9vc3Q6OmFkZHJlc3NvZih4KSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBhc3NpZ24oeCwKLSAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjppbnRlZ3JhbF9jb25zdGFudDxib29sLAotICAgICAgICAgICAgICAgICAgICAgICAgYWxsb2NhdG9yX3RyYWl0czxub2RlX2FsbG9jYXRvcj46OgotICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGFnYXRlX29uX2NvbnRhaW5lcl9jb3B5X2Fzc2lnbm1lbnQ6OnZhbHVlPigpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgYXNzaWduKHRhYmxlIGNvbnN0JiB4LCBmYWxzZV90eXBlKQotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBTdHJvbmcgZXhjZXB0aW9uIHNhZmV0eS4KLSAgICAgICAgICAgIHNldF9oYXNoX2Z1bmN0aW9ucyBuZXdfZnVuY190aGlzKCp0aGlzLCB4KTsKLSAgICAgICAgICAgIG5ld19mdW5jX3RoaXMuY29tbWl0KCk7Ci0gICAgICAgICAgICBtbGZfID0geC5tbGZfOwotICAgICAgICAgICAgcmVjYWxjdWxhdGVfbWF4X2xvYWQoKTsKLQotICAgICAgICAgICAgaWYgKCFzaXplXyAmJiAheC5zaXplXykgcmV0dXJuOwotCi0gICAgICAgICAgICBpZiAoeC5zaXplXyA+PSBtYXhfbG9hZF8pIHsKLSAgICAgICAgICAgICAgICBjcmVhdGVfYnVja2V0cyhtaW5fYnVja2V0c19mb3Jfc2l6ZSh4LnNpemVfKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBjbGVhcl9idWNrZXRzKCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIGFzc2lnbl9ub2RlcyB0YWtlcyBvd25lcnNoaXAgb2YgdGhlIGNvbnRhaW5lcidzIGVsZW1lbnRzLAotICAgICAgICAgICAgLy8gYXNzaWduaW5nIHRvIHRoZW0gaWYgcG9zc2libGUsIGFuZCBkZWxldGluZyBhbnkgdGhhdCBhcmUKLSAgICAgICAgICAgIC8vIGxlZnQgb3Zlci4KLSAgICAgICAgICAgIGFzc2lnbl9ub2Rlczx0YWJsZT4gYXNzaWduKCp0aGlzKTsKLSAgICAgICAgICAgIHRhYmxlX2ltcGw6OmZpbGxfYnVja2V0cyh4LmJlZ2luKCksICp0aGlzLCBhc3NpZ24pOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBhc3NpZ24odGFibGUgY29uc3QmIHgsIHRydWVfdHlwZSkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKG5vZGVfYWxsb2MoKSA9PSB4Lm5vZGVfYWxsb2MoKSkgewotICAgICAgICAgICAgICAgIGFsbG9jYXRvcnNfLmFzc2lnbih4LmFsbG9jYXRvcnNfKTsKLSAgICAgICAgICAgICAgICBhc3NpZ24oeCwgZmFsc2VfdHlwZSgpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHNldF9oYXNoX2Z1bmN0aW9ucyBuZXdfZnVuY190aGlzKCp0aGlzLCB4KTsKLQotICAgICAgICAgICAgICAgIC8vIERlbGV0ZSBldmVyeXRoaW5nIHdpdGggY3VycmVudCBhbGxvY2F0b3JzIGJlZm9yZSBhc3NpZ25pbmcKLSAgICAgICAgICAgICAgICAvLyB0aGUgbmV3IG9uZXMuCi0gICAgICAgICAgICAgICAgZGVsZXRlX2J1Y2tldHMoKTsKLSAgICAgICAgICAgICAgICBhbGxvY2F0b3JzXy5hc3NpZ24oeC5hbGxvY2F0b3JzXyk7Ci0KLSAgICAgICAgICAgICAgICAvLyBDb3B5IG92ZXIgb3RoZXIgZGF0YSwgYWxsIG5vIHRocm93LgotICAgICAgICAgICAgICAgIG5ld19mdW5jX3RoaXMuY29tbWl0KCk7Ci0gICAgICAgICAgICAgICAgbWxmXyA9IHgubWxmXzsKLSAgICAgICAgICAgICAgICBidWNrZXRfY291bnRfID0gbWluX2J1Y2tldHNfZm9yX3NpemUoeC5zaXplXyk7Ci0gICAgICAgICAgICAgICAgbWF4X2xvYWRfID0gMDsKLQotICAgICAgICAgICAgICAgIC8vIEZpbmFsbHkgY29weSB0aGUgZWxlbWVudHMuCi0gICAgICAgICAgICAgICAgaWYgKHguc2l6ZV8pIHsKLSAgICAgICAgICAgICAgICAgICAgY3JlYXRlX2J1Y2tldHMoYnVja2V0X2NvdW50Xyk7Ci0gICAgICAgICAgICAgICAgICAgIGNvcHlfbm9kZXM8bm9kZV9hbGxvY2F0b3I+IGNvcHkobm9kZV9hbGxvYygpKTsKLSAgICAgICAgICAgICAgICAgICAgdGFibGVfaW1wbDo6ZmlsbF9idWNrZXRzKHguYmVnaW4oKSwgKnRoaXMsIGNvcHkpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgbW92ZV9hc3NpZ24odGFibGUmIHgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICh0aGlzICE9IG5kbmJvb3N0OjphZGRyZXNzb2YoeCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgbW92ZV9hc3NpZ24oeCwKLSAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjppbnRlZ3JhbF9jb25zdGFudDxib29sLAotICAgICAgICAgICAgICAgICAgICAgICAgYWxsb2NhdG9yX3RyYWl0czxub2RlX2FsbG9jYXRvcj46OgotICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGFnYXRlX29uX2NvbnRhaW5lcl9tb3ZlX2Fzc2lnbm1lbnQ6OnZhbHVlPigpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgbW92ZV9hc3NpZ24odGFibGUmIHgsIHRydWVfdHlwZSkKLSAgICAgICAgewotICAgICAgICAgICAgZGVsZXRlX2J1Y2tldHMoKTsKLSAgICAgICAgICAgIGFsbG9jYXRvcnNfLm1vdmVfYXNzaWduKHguYWxsb2NhdG9yc18pOwotICAgICAgICAgICAgbW92ZV9hc3NpZ25fbm9fYWxsb2MoeCk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIG1vdmVfYXNzaWduKHRhYmxlJiB4LCBmYWxzZV90eXBlKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAobm9kZV9hbGxvYygpID09IHgubm9kZV9hbGxvYygpKSB7Ci0gICAgICAgICAgICAgICAgZGVsZXRlX2J1Y2tldHMoKTsKLSAgICAgICAgICAgICAgICBtb3ZlX2Fzc2lnbl9ub19hbGxvYyh4KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHNldF9oYXNoX2Z1bmN0aW9ucyBuZXdfZnVuY190aGlzKCp0aGlzLCB4KTsKLSAgICAgICAgICAgICAgICBuZXdfZnVuY190aGlzLmNvbW1pdCgpOwotICAgICAgICAgICAgICAgIG1sZl8gPSB4Lm1sZl87Ci0gICAgICAgICAgICAgICAgcmVjYWxjdWxhdGVfbWF4X2xvYWQoKTsKLQotICAgICAgICAgICAgICAgIGlmICghc2l6ZV8gJiYgIXguc2l6ZV8pIHJldHVybjsKLQotICAgICAgICAgICAgICAgIGlmICh4LnNpemVfID49IG1heF9sb2FkXykgewotICAgICAgICAgICAgICAgICAgICBjcmVhdGVfYnVja2V0cyhtaW5fYnVja2V0c19mb3Jfc2l6ZSh4LnNpemVfKSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICBjbGVhcl9idWNrZXRzKCk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgLy8gbW92ZV9hc3NpZ25fbm9kZXMgdGFrZXMgb3duZXJzaGlwIG9mIHRoZSBjb250YWluZXIncwotICAgICAgICAgICAgICAgIC8vIGVsZW1lbnRzLCBhc3NpZ25pbmcgdG8gdGhlbSBpZiBwb3NzaWJsZSwgYW5kIGRlbGV0aW5nCi0gICAgICAgICAgICAgICAgLy8gYW55IHRoYXQgYXJlIGxlZnQgb3Zlci4KLSAgICAgICAgICAgICAgICBtb3ZlX2Fzc2lnbl9ub2Rlczx0YWJsZT4gYXNzaWduKCp0aGlzKTsKLSAgICAgICAgICAgICAgICBub2RlX2hvbGRlcjxub2RlX2FsbG9jYXRvcj4gbm9kZXMoeCk7Ci0gICAgICAgICAgICAgICAgdGFibGVfaW1wbDo6ZmlsbF9idWNrZXRzKG5vZGVzLmJlZ2luKCksICp0aGlzLCBhc3NpZ24pOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICB2b2lkIG1vdmVfYXNzaWduX25vX2FsbG9jKHRhYmxlJiB4KQotICAgICAgICB7Ci0gICAgICAgICAgICBzZXRfaGFzaF9mdW5jdGlvbnMgbmV3X2Z1bmNfdGhpcygqdGhpcywgeCk7Ci0gICAgICAgICAgICAvLyBObyB0aHJvdyBmcm9tIGhlcmUuCi0gICAgICAgICAgICBtbGZfID0geC5tbGZfOwotICAgICAgICAgICAgbWF4X2xvYWRfID0geC5tYXhfbG9hZF87Ci0gICAgICAgICAgICBtb3ZlX2J1Y2tldHNfZnJvbSh4KTsKLSAgICAgICAgICAgIG5ld19mdW5jX3RoaXMuY29tbWl0KCk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBBY2Nlc3NvcnMKLQotICAgICAgICBrZXlfdHlwZSBjb25zdCYgZ2V0X2tleSh2YWx1ZV90eXBlIGNvbnN0JiB4KSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZXh0cmFjdG9yOjpleHRyYWN0KHgpOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RkOjpzaXplX3QgaGFzaChrZXlfdHlwZSBjb25zdCYgaykgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHBvbGljeTo6YXBwbHlfaGFzaCh0aGlzLT5oYXNoX2Z1bmN0aW9uKCksIGspOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gRmluZCBOb2RlCi0KLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgSGFzaCwgdHlwZW5hbWUgUHJlZD4KLSAgICAgICAgaXRlcmF0b3IgZ2VuZXJpY19maW5kX25vZGUoCi0gICAgICAgICAgICAgICAgS2V5IGNvbnN0JiBrLAotICAgICAgICAgICAgICAgIEhhc2ggY29uc3QmIGhmLAotICAgICAgICAgICAgICAgIFByZWQgY29uc3QmIGVxKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dGFibGVfaW1wbCBjb25zdCo+KHRoaXMpLT4KLSAgICAgICAgICAgICAgICBmaW5kX25vZGVfaW1wbChwb2xpY3k6OmFwcGx5X2hhc2goaGYsIGspLCBrLCBlcSk7Ci0gICAgICAgIH0KLQotICAgICAgICBpdGVyYXRvciBmaW5kX25vZGUoCi0gICAgICAgICAgICAgICAgc3RkOjpzaXplX3Qga2V5X2hhc2gsCi0gICAgICAgICAgICAgICAga2V5X3R5cGUgY29uc3QmIGspIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx0YWJsZV9pbXBsIGNvbnN0Kj4odGhpcyktPgotICAgICAgICAgICAgICAgIGZpbmRfbm9kZV9pbXBsKGtleV9oYXNoLCBrLCB0aGlzLT5rZXlfZXEoKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBpdGVyYXRvciBmaW5kX25vZGUoa2V5X3R5cGUgY29uc3QmIGspIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx0YWJsZV9pbXBsIGNvbnN0Kj4odGhpcyktPgotICAgICAgICAgICAgICAgIGZpbmRfbm9kZV9pbXBsKGhhc2goayksIGssIHRoaXMtPmtleV9lcSgpKTsKLSAgICAgICAgfQotCi0gICAgICAgIGl0ZXJhdG9yIGZpbmRfbWF0Y2hpbmdfbm9kZShpdGVyYXRvciBuKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBUT0RPOiBEb2VzIHRoaXMgYXBwbHkgdG8gQysrMTE/Ci0gICAgICAgICAgICAvLwotICAgICAgICAgICAgLy8gRm9yIHNvbWUgc3R1cGlkIHJlYXNvbiwgSSBkZWNpZGVkIHRvIHN1cHBvcnQgZXF1YWxpdHkgY29tcGFyaXNvbgotICAgICAgICAgICAgLy8gd2hlbiBkaWZmZXJlbnQgaGFzaCBmdW5jdGlvbnMgYXJlIHVzZWQuIFNvIEkgY2FuJ3QgdXNlIHRoZSBoYXNoCi0gICAgICAgICAgICAvLyB2YWx1ZSBmcm9tIHRoZSBub2RlIGhlcmUuCi0gICAgCi0gICAgICAgICAgICByZXR1cm4gZmluZF9ub2RlKGdldF9rZXkoKm4pKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIFJlc2VydmUgYW5kIHJlaGFzaAotCi0gICAgICAgIHZvaWQgcmVzZXJ2ZV9mb3JfaW5zZXJ0KHN0ZDo6c2l6ZV90KTsKLSAgICAgICAgdm9pZCByZWhhc2goc3RkOjpzaXplX3QpOwotICAgICAgICB2b2lkIHJlc2VydmUoc3RkOjpzaXplX3QpOwotICAgIH07Ci0KLSAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgLy8gUmVzZXJ2ZSAmIFJlaGFzaAotCi0gICAgLy8gYmFzaWMgZXhjZXB0aW9uIHNhZmV0eQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUeXBlcz4KLSAgICBpbmxpbmUgdm9pZCB0YWJsZTxUeXBlcz46OnJlc2VydmVfZm9yX2luc2VydChzdGQ6OnNpemVfdCBzaXplKQotICAgIHsKLSAgICAgICAgaWYgKCFidWNrZXRzXykgewotICAgICAgICAgICAgY3JlYXRlX2J1Y2tldHMoKHN0ZDo6bWF4KShidWNrZXRfY291bnRfLAotICAgICAgICAgICAgICAgIG1pbl9idWNrZXRzX2Zvcl9zaXplKHNpemUpKSk7Ci0gICAgICAgIH0KLSAgICAgICAgLy8gQWNjb3JkaW5nIHRvIHRoZSBzdGFuZGFyZCB0aGlzIHNob3VsZCBiZSAnc2l6ZSA+PSBtYXhfbG9hZF8nLAotICAgICAgICAvLyBidXQgSSB0aGluayB0aGlzIGlzIGJldHRlciwgZGVmZWN0IHJlcG9ydCBmaWxlZC4KLSAgICAgICAgZWxzZSBpZihzaXplID4gbWF4X2xvYWRfKSB7Ci0gICAgICAgICAgICBzdGQ6OnNpemVfdCBudW1fYnVja2V0cwotICAgICAgICAgICAgICAgID0gbWluX2J1Y2tldHNfZm9yX3NpemUoKHN0ZDo6bWF4KShzaXplLAotICAgICAgICAgICAgICAgICAgICBzaXplXyArIChzaXplXyA+PiAxKSkpOwotCi0gICAgICAgICAgICBpZiAobnVtX2J1Y2tldHMgIT0gYnVja2V0X2NvdW50XykKLSAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDx0YWJsZV9pbXBsKj4odGhpcyktPnJlaGFzaF9pbXBsKG51bV9idWNrZXRzKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIGlmIGhhc2ggZnVuY3Rpb24gdGhyb3dzLCBiYXNpYyBleGNlcHRpb24gc2FmZXR5Ci0gICAgLy8gc3Ryb25nIG90aGVyd2lzZS4KLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUeXBlcz4KLSAgICBpbmxpbmUgdm9pZCB0YWJsZTxUeXBlcz46OnJlaGFzaChzdGQ6OnNpemVfdCBtaW5fYnVja2V0cykKLSAgICB7Ci0gICAgICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci0KLSAgICAgICAgaWYoIXNpemVfKSB7Ci0gICAgICAgICAgICBkZWxldGVfYnVja2V0cygpOwotICAgICAgICAgICAgYnVja2V0X2NvdW50XyA9IHBvbGljeTo6bmV3X2J1Y2tldF9jb3VudChtaW5fYnVja2V0cyk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBtaW5fYnVja2V0cyA9IHBvbGljeTo6bmV3X2J1Y2tldF9jb3VudCgoc3RkOjptYXgpKG1pbl9idWNrZXRzLAotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6ZG91YmxlX3RvX3NpemUoZmxvb3IoCi0gICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGRvdWJsZT4oc2l6ZV8pIC8KLSAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8ZG91YmxlPihtbGZfKSkpICsgMSkpOwotCi0gICAgICAgICAgICBpZihtaW5fYnVja2V0cyAhPSBidWNrZXRfY291bnRfKQotICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHRhYmxlX2ltcGwqPih0aGlzKS0+cmVoYXNoX2ltcGwobWluX2J1Y2tldHMpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFR5cGVzPgotICAgIGlubGluZSB2b2lkIHRhYmxlPFR5cGVzPjo6cmVzZXJ2ZShzdGQ6OnNpemVfdCBudW1fZWxlbWVudHMpCi0gICAgewotICAgICAgICByZWhhc2goc3RhdGljX2Nhc3Q8c3RkOjpzaXplX3Q+KAotICAgICAgICAgICAgc3RkOjpjZWlsKHN0YXRpY19jYXN0PGRvdWJsZT4obnVtX2VsZW1lbnRzKSAvIG1sZl8pKSk7Ci0gICAgfQotfX19Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC91bm9yZGVyZWQvZGV0YWlsL3VuaXF1ZS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Vub3JkZXJlZC9kZXRhaWwvdW5pcXVlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDQxMzI1NS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Vub3JkZXJlZC9kZXRhaWwvdW5pcXVlLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDYyMiArMCwwIEBACi0KLS8vIENvcHlyaWdodCAoQykgMjAwMy0yMDA0IEplcmVteSBCLiBNYWl0aW4tU2hlcGFyZC4KLS8vIENvcHlyaWdodCAoQykgMjAwNS0yMDExIERhbmllbCBKYW1lcwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZwotLy8gZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLSNpZm5kZWYgTkROQk9PU1RfVU5PUkRFUkVEX0RFVEFJTF9VTklRVUVfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9ERVRBSUxfVU5JUVVFX0hQUF9JTkNMVURFRAotCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSID49IDEwMjApCi0jIHByYWdtYSBvbmNlCi0jZW5kaWYKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3Vub3JkZXJlZC9kZXRhaWwvdGFibGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Vub3JkZXJlZC9kZXRhaWwvZXh0cmFjdF9rZXkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Rocm93X2V4Y2VwdGlvbi5ocHA+Ci0jaW5jbHVkZSA8c3RkZXhjZXB0PgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgdW5vcmRlcmVkIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQSwgdHlwZW5hbWUgVD4gc3RydWN0IHVuaXF1ZV9ub2RlOwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgcHRyX25vZGU7Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFR5cGVzPiBzdHJ1Y3QgdGFibGVfaW1wbDsKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBLCB0eXBlbmFtZSBUPgotICAgIHN0cnVjdCB1bmlxdWVfbm9kZSA6Ci0gICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6dmFsdWVfYmFzZTxUPgotICAgIHsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSA6Om5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6cmViaW5kX3dyYXA8Ci0gICAgICAgICAgICBBLCB1bmlxdWVfbm9kZTxBLCBUPiA+Ojp0eXBlOjpwb2ludGVyIG5vZGVfcG9pbnRlcjsKLSAgICAgICAgdHlwZWRlZiBub2RlX3BvaW50ZXIgbGlua19wb2ludGVyOwotCi0gICAgICAgIGxpbmtfcG9pbnRlciBuZXh0XzsKLSAgICAgICAgc3RkOjpzaXplX3QgaGFzaF87Ci0KLSAgICAgICAgdW5pcXVlX25vZGUoKSA6Ci0gICAgICAgICAgICBuZXh0XygpLAotICAgICAgICAgICAgaGFzaF8oMCkKLSAgICAgICAge30KLQotICAgICAgICB2b2lkIGluaXQobm9kZV9wb2ludGVyKQotICAgICAgICB7Ci0gICAgICAgIH0KLQotICAgIHByaXZhdGU6Ci0gICAgICAgIHVuaXF1ZV9ub2RlJiBvcGVyYXRvcj0odW5pcXVlX25vZGUgY29uc3QmKTsKLSAgICB9OwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgc3RydWN0IHB0cl9ub2RlIDoKLSAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjp2YWx1ZV9iYXNlPFQ+LAotICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnB0cl9idWNrZXQKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpwdHJfYnVja2V0IGJ1Y2tldF9iYXNlOwotICAgICAgICB0eXBlZGVmIHB0cl9ub2RlPFQ+KiBub2RlX3BvaW50ZXI7Ci0gICAgICAgIHR5cGVkZWYgcHRyX2J1Y2tldCogbGlua19wb2ludGVyOwotCi0gICAgICAgIHN0ZDo6c2l6ZV90IGhhc2hfOwotCi0gICAgICAgIHB0cl9ub2RlKCkgOgotICAgICAgICAgICAgYnVja2V0X2Jhc2UoKSwKLSAgICAgICAgICAgIGhhc2hfKDApCi0gICAgICAgIHt9Ci0KLSAgICAgICAgdm9pZCBpbml0KG5vZGVfcG9pbnRlcikKLSAgICAgICAgewotICAgICAgICB9Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBwdHJfbm9kZSYgb3BlcmF0b3I9KHB0cl9ub2RlIGNvbnN0Jik7Ci0gICAgfTsKLQotICAgIC8vIElmIHRoZSBhbGxvY2F0b3IgdXNlcyByYXcgcG9pbnRlcnMgdXNlIHB0cl9ub2RlCi0gICAgLy8gT3RoZXJ3aXNlIHVzZSBub2RlLgotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEEsIHR5cGVuYW1lIFQsIHR5cGVuYW1lIE5vZGVQdHIsIHR5cGVuYW1lIEJ1Y2tldFB0cj4KLSAgICBzdHJ1Y3QgcGlja19ub2RlMgotICAgIHsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnVuaXF1ZV9ub2RlPEEsIFQ+IG5vZGU7Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmFsbG9jYXRvcl90cmFpdHM8Ci0gICAgICAgICAgICB0eXBlbmFtZSBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnJlYmluZF93cmFwPEEsIG5vZGU+Ojp0eXBlCi0gICAgICAgID46OnBvaW50ZXIgbm9kZV9wb2ludGVyOwotCi0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpidWNrZXQ8bm9kZV9wb2ludGVyPiBidWNrZXQ7Ci0gICAgICAgIHR5cGVkZWYgbm9kZV9wb2ludGVyIGxpbmtfcG9pbnRlcjsKLSAgICB9OwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEEsIHR5cGVuYW1lIFQ+Ci0gICAgc3RydWN0IHBpY2tfbm9kZTI8QSwgVCwKLSAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpwdHJfbm9kZTxUPiosCi0gICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6cHRyX2J1Y2tldCo+Ci0gICAgewotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6cHRyX25vZGU8VD4gbm9kZTsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnB0cl9idWNrZXQgYnVja2V0OwotICAgICAgICB0eXBlZGVmIGJ1Y2tldCogbGlua19wb2ludGVyOwotICAgIH07Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQSwgdHlwZW5hbWUgVD4KLSAgICBzdHJ1Y3QgcGlja19ub2RlCi0gICAgewotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6YWxsb2NhdG9yX3RyYWl0czwKLSAgICAgICAgICAgIHR5cGVuYW1lIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6cmViaW5kX3dyYXA8QSwKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnB0cl9ub2RlPFQ+ID46OnR5cGUKLSAgICAgICAgPiB0ZW50YXRpdmVfbm9kZV90cmFpdHM7Ci0KLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmFsbG9jYXRvcl90cmFpdHM8Ci0gICAgICAgICAgICB0eXBlbmFtZSBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnJlYmluZF93cmFwPEEsCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpwdHJfYnVja2V0ID46OnR5cGUKLSAgICAgICAgPiB0ZW50YXRpdmVfYnVja2V0X3RyYWl0czsKLQotICAgICAgICB0eXBlZGVmIHBpY2tfbm9kZTI8QSwgVCwKLSAgICAgICAgICAgIHR5cGVuYW1lIHRlbnRhdGl2ZV9ub2RlX3RyYWl0czo6cG9pbnRlciwKLSAgICAgICAgICAgIHR5cGVuYW1lIHRlbnRhdGl2ZV9idWNrZXRfdHJhaXRzOjpwb2ludGVyPiBwaWNrOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcGljazo6bm9kZSBub2RlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHBpY2s6OmJ1Y2tldCBidWNrZXQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcGljazo6bGlua19wb2ludGVyIGxpbmtfcG9pbnRlcjsKLSAgICB9OwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEEsIHR5cGVuYW1lIFQsIHR5cGVuYW1lIEgsIHR5cGVuYW1lIFA+Ci0gICAgc3RydWN0IHNldAotICAgIHsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnNldDxBLCBULCBILCBQPiB0eXBlczsKLQotICAgICAgICB0eXBlZGVmIEEgYWxsb2NhdG9yOwotICAgICAgICB0eXBlZGVmIFQgdmFsdWVfdHlwZTsKLSAgICAgICAgdHlwZWRlZiBIIGhhc2hlcjsKLSAgICAgICAgdHlwZWRlZiBQIGtleV9lcXVhbDsKLSAgICAgICAgdHlwZWRlZiBUIGtleV90eXBlOwotCi0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjphbGxvY2F0b3JfdHJhaXRzPGFsbG9jYXRvcj4gdHJhaXRzOwotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6cGlja19ub2RlPGFsbG9jYXRvciwgdmFsdWVfdHlwZT4gcGljazsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwaWNrOjpub2RlIG5vZGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcGljazo6YnVja2V0IGJ1Y2tldDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBwaWNrOjpsaW5rX3BvaW50ZXIgbGlua19wb2ludGVyOwotCi0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjp0YWJsZV9pbXBsPHR5cGVzPiB0YWJsZTsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnNldF9leHRyYWN0b3I8dmFsdWVfdHlwZT4gZXh0cmFjdG9yOwotCi0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpwaWNrX3BvbGljeTo6dHlwZSBwb2xpY3k7Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBLCB0eXBlbmFtZSBLLCB0eXBlbmFtZSBNLCB0eXBlbmFtZSBILCB0eXBlbmFtZSBQPgotICAgIHN0cnVjdCBtYXAKLSAgICB7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjptYXA8QSwgSywgTSwgSCwgUD4gdHlwZXM7Ci0KLSAgICAgICAgdHlwZWRlZiBBIGFsbG9jYXRvcjsKLSAgICAgICAgdHlwZWRlZiBzdGQ6OnBhaXI8SyBjb25zdCwgTT4gdmFsdWVfdHlwZTsKLSAgICAgICAgdHlwZWRlZiBIIGhhc2hlcjsKLSAgICAgICAgdHlwZWRlZiBQIGtleV9lcXVhbDsKLSAgICAgICAgdHlwZWRlZiBLIGtleV90eXBlOwotCi0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjphbGxvY2F0b3JfdHJhaXRzPGFsbG9jYXRvcj4KLSAgICAgICAgICAgIHRyYWl0czsKLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnBpY2tfbm9kZTxhbGxvY2F0b3IsIHZhbHVlX3R5cGU+IHBpY2s7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcGljazo6bm9kZSBub2RlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHBpY2s6OmJ1Y2tldCBidWNrZXQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgcGljazo6bGlua19wb2ludGVyIGxpbmtfcG9pbnRlcjsKLQotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6dGFibGVfaW1wbDx0eXBlcz4gdGFibGU7Ci0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjptYXBfZXh0cmFjdG9yPGtleV90eXBlLCB2YWx1ZV90eXBlPgotICAgICAgICAgICAgZXh0cmFjdG9yOwotCi0gICAgICAgIHR5cGVkZWYgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpwaWNrX3BvbGljeTo6dHlwZSBwb2xpY3k7Ci0gICAgfTsKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUeXBlcz4KLSAgICBzdHJ1Y3QgdGFibGVfaW1wbCA6IG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6dGFibGU8VHlwZXM+Ci0gICAgewotICAgICAgICB0eXBlZGVmIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6dGFibGU8VHlwZXM+IHRhYmxlOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHRhYmxlOjp2YWx1ZV90eXBlIHZhbHVlX3R5cGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdGFibGU6OmJ1Y2tldCBidWNrZXQ7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdGFibGU6OnBvbGljeSBwb2xpY3k7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdGFibGU6Om5vZGVfcG9pbnRlciBub2RlX3BvaW50ZXI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdGFibGU6Om5vZGVfYWxsb2NhdG9yIG5vZGVfYWxsb2NhdG9yOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHRhYmxlOjpub2RlX2FsbG9jYXRvcl90cmFpdHMgbm9kZV9hbGxvY2F0b3JfdHJhaXRzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHRhYmxlOjpidWNrZXRfcG9pbnRlciBidWNrZXRfcG9pbnRlcjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0YWJsZTo6bGlua19wb2ludGVyIGxpbmtfcG9pbnRlcjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0YWJsZTo6aGFzaGVyIGhhc2hlcjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0YWJsZTo6a2V5X2VxdWFsIGtleV9lcXVhbDsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0YWJsZTo6a2V5X3R5cGUga2V5X3R5cGU7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdGFibGU6Om5vZGVfY29uc3RydWN0b3Igbm9kZV9jb25zdHJ1Y3RvcjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0YWJsZTo6ZXh0cmFjdG9yIGV4dHJhY3RvcjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0YWJsZTo6aXRlcmF0b3IgaXRlcmF0b3I7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdGFibGU6OmNfaXRlcmF0b3IgY19pdGVyYXRvcjsKLQotICAgICAgICB0eXBlZGVmIHN0ZDo6cGFpcjxpdGVyYXRvciwgYm9vbD4gZW1wbGFjZV9yZXR1cm47Ci0KLSAgICAgICAgLy8gQ29uc3RydWN0b3JzCi0KLSAgICAgICAgdGFibGVfaW1wbChzdGQ6OnNpemVfdCBuLAotICAgICAgICAgICAgICAgIGhhc2hlciBjb25zdCYgaGYsCi0gICAgICAgICAgICAgICAga2V5X2VxdWFsIGNvbnN0JiBlcSwKLSAgICAgICAgICAgICAgICBub2RlX2FsbG9jYXRvciBjb25zdCYgYSkKLSAgICAgICAgICA6IHRhYmxlKG4sIGhmLCBlcSwgYSkKLSAgICAgICAge30KLQotICAgICAgICB0YWJsZV9pbXBsKHRhYmxlX2ltcGwgY29uc3QmIHgpCi0gICAgICAgICAgOiB0YWJsZSh4LCBub2RlX2FsbG9jYXRvcl90cmFpdHM6OgotICAgICAgICAgICAgICAgIHNlbGVjdF9vbl9jb250YWluZXJfY29weV9jb25zdHJ1Y3Rpb24oeC5ub2RlX2FsbG9jKCkpKQotICAgICAgICB7Ci0gICAgICAgICAgICB0aGlzLT5pbml0KHgpOwotICAgICAgICB9Ci0KLSAgICAgICAgdGFibGVfaW1wbCh0YWJsZV9pbXBsIGNvbnN0JiB4LAotICAgICAgICAgICAgICAgIG5vZGVfYWxsb2NhdG9yIGNvbnN0JiBhKQotICAgICAgICAgIDogdGFibGUoeCwgYSkKLSAgICAgICAgewotICAgICAgICAgICAgdGhpcy0+aW5pdCh4KTsKLSAgICAgICAgfQotCi0gICAgICAgIHRhYmxlX2ltcGwodGFibGVfaW1wbCYgeCwKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6Om1vdmVfdGFnIG0pCi0gICAgICAgICAgOiB0YWJsZSh4LCBtKQotICAgICAgICB7fQotCi0gICAgICAgIHRhYmxlX2ltcGwodGFibGVfaW1wbCYgeCwKLSAgICAgICAgICAgICAgICBub2RlX2FsbG9jYXRvciBjb25zdCYgYSwKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6Om1vdmVfdGFnIG0pCi0gICAgICAgICAgOiB0YWJsZSh4LCBhLCBtKQotICAgICAgICB7Ci0gICAgICAgICAgICB0aGlzLT5tb3ZlX2luaXQoeCk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBBY2Nlc3NvcnMKLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgS2V5LCBjbGFzcyBQcmVkPgotICAgICAgICBpdGVyYXRvciBmaW5kX25vZGVfaW1wbCgKLSAgICAgICAgICAgICAgICBzdGQ6OnNpemVfdCBrZXlfaGFzaCwKLSAgICAgICAgICAgICAgICBLZXkgY29uc3QmIGssCi0gICAgICAgICAgICAgICAgUHJlZCBjb25zdCYgZXEpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHN0ZDo6c2l6ZV90IGJ1Y2tldF9pbmRleCA9IHRoaXMtPmhhc2hfdG9fYnVja2V0KGtleV9oYXNoKTsKLSAgICAgICAgICAgIGl0ZXJhdG9yIG4gPSB0aGlzLT5iZWdpbihidWNrZXRfaW5kZXgpOwotCi0gICAgICAgICAgICBmb3IgKDs7KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmICghbi5ub2RlXykgcmV0dXJuIG47Ci0KLSAgICAgICAgICAgICAgICBzdGQ6OnNpemVfdCBub2RlX2hhc2ggPSBuLm5vZGVfLT5oYXNoXzsKLSAgICAgICAgICAgICAgICBpZiAoa2V5X2hhc2ggPT0gbm9kZV9oYXNoKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGVxKGssIHRoaXMtPmdldF9rZXkoKm4pKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy0+aGFzaF90b19idWNrZXQobm9kZV9oYXNoKSAhPSBidWNrZXRfaW5kZXgpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlcmF0b3IoKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICArK247Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBzdGQ6OnNpemVfdCBjb3VudChrZXlfdHlwZSBjb25zdCYgaykgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRoaXMtPmZpbmRfbm9kZShrKS5ub2RlXyA/IDEgOiAwOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFsdWVfdHlwZSYgYXQoa2V5X3R5cGUgY29uc3QmIGspIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICh0aGlzLT5zaXplXykgewotICAgICAgICAgICAgICAgIGl0ZXJhdG9yIGl0ID0gdGhpcy0+ZmluZF9ub2RlKGspOwotICAgICAgICAgICAgICAgIGlmIChpdC5ub2RlXykgcmV0dXJuICppdDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgbmRuYm9vc3Q6OnRocm93X2V4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICBzdGQ6Om91dF9vZl9yYW5nZSgiVW5hYmxlIHRvIGZpbmQga2V5IGluIHVub3JkZXJlZF9tYXAuIikpOwotICAgICAgICB9Ci0KLSAgICAgICAgc3RkOjpwYWlyPGl0ZXJhdG9yLCBpdGVyYXRvcj4KLSAgICAgICAgICAgIGVxdWFsX3JhbmdlKGtleV90eXBlIGNvbnN0JiBrKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICBpdGVyYXRvciBuID0gdGhpcy0+ZmluZF9ub2RlKGspOwotICAgICAgICAgICAgaXRlcmF0b3IgbjIgPSBuOwotICAgICAgICAgICAgaWYgKG4yLm5vZGVfKSArK24yOwotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKG4sIG4yKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIGVxdWFscwotCi0gICAgICAgIGJvb2wgZXF1YWxzKHRhYmxlX2ltcGwgY29uc3QmIG90aGVyKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICBpZih0aGlzLT5zaXplXyAhPSBvdGhlci5zaXplXykgcmV0dXJuIGZhbHNlOwotICAgIAotICAgICAgICAgICAgZm9yKGl0ZXJhdG9yIG4xID0gdGhpcy0+YmVnaW4oKTsgbjEubm9kZV87ICsrbjEpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaXRlcmF0b3IgbjIgPSBvdGhlci5maW5kX21hdGNoaW5nX25vZGUobjEpOwotCi0gICAgICAgICAgICAgICAgaWYgKCFuMi5ub2RlXyB8fCAqbjEgIT0gKm4yKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEVtcGxhY2UvSW5zZXJ0Ci0KLSAgICAgICAgaW5saW5lIGl0ZXJhdG9yIGFkZF9ub2RlKAotICAgICAgICAgICAgICAgIG5vZGVfY29uc3RydWN0b3ImIGEsCi0gICAgICAgICAgICAgICAgc3RkOjpzaXplX3Qga2V5X2hhc2gpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG5vZGVfcG9pbnRlciBuID0gYS5yZWxlYXNlKCk7Ci0gICAgICAgICAgICBuLT5oYXNoXyA9IGtleV9oYXNoOwotICAgIAotICAgICAgICAgICAgYnVja2V0X3BvaW50ZXIgYiA9IHRoaXMtPmdldF9idWNrZXQodGhpcy0+aGFzaF90b19idWNrZXQoa2V5X2hhc2gpKTsKLQotICAgICAgICAgICAgaWYgKCFiLT5uZXh0XykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBsaW5rX3BvaW50ZXIgc3RhcnRfbm9kZSA9IHRoaXMtPmdldF9wcmV2aW91c19zdGFydCgpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGlmIChzdGFydF9ub2RlLT5uZXh0XykgewotICAgICAgICAgICAgICAgICAgICB0aGlzLT5nZXRfYnVja2V0KHRoaXMtPmhhc2hfdG9fYnVja2V0KAotICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8bm9kZV9wb2ludGVyPihzdGFydF9ub2RlLT5uZXh0XyktPmhhc2hfKQotICAgICAgICAgICAgICAgICAgICApLT5uZXh0XyA9IG47Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgYi0+bmV4dF8gPSBzdGFydF9ub2RlOwotICAgICAgICAgICAgICAgIG4tPm5leHRfID0gc3RhcnRfbm9kZS0+bmV4dF87Ci0gICAgICAgICAgICAgICAgc3RhcnRfbm9kZS0+bmV4dF8gPSBuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG4tPm5leHRfID0gYi0+bmV4dF8tPm5leHRfOwotICAgICAgICAgICAgICAgIGItPm5leHRfLT5uZXh0XyA9IG47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICsrdGhpcy0+c2l6ZV87Ci0gICAgICAgICAgICByZXR1cm4gaXRlcmF0b3Iobik7Ci0gICAgICAgIH0KLQotICAgICAgICB2YWx1ZV90eXBlJiBvcGVyYXRvcltdKGtleV90eXBlIGNvbnN0JiBrKQotICAgICAgICB7Ci0gICAgICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHZhbHVlX3R5cGU6OnNlY29uZF90eXBlIG1hcHBlZF90eXBlOwotICAgIAotICAgICAgICAgICAgc3RkOjpzaXplX3Qga2V5X2hhc2ggPSB0aGlzLT5oYXNoKGspOwotICAgICAgICAgICAgaXRlcmF0b3IgcG9zID0gdGhpcy0+ZmluZF9ub2RlKGtleV9oYXNoLCBrKTsKLSAgICAKLSAgICAgICAgICAgIGlmIChwb3Mubm9kZV8pIHJldHVybiAqcG9zOwotICAgIAotICAgICAgICAgICAgLy8gQ3JlYXRlIHRoZSBub2RlIGJlZm9yZSByZWhhc2hpbmcgaW4gY2FzZSBpdCB0aHJvd3MgYW4KLSAgICAgICAgICAgIC8vIGV4Y2VwdGlvbiAobmVlZCBzdHJvbmcgc2FmZXR5IGluIHN1Y2ggYSBjYXNlKS4KLSAgICAgICAgICAgIG5vZGVfY29uc3RydWN0b3IgYSh0aGlzLT5ub2RlX2FsbG9jKCkpOwotICAgICAgICAgICAgYS5jb25zdHJ1Y3Rfd2l0aF92YWx1ZShORE5CT09TVF9VTk9SREVSRURfRU1QTEFDRV9BUkdTMygKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpwaWVjZXdpc2VfY29uc3RydWN0LAotICAgICAgICAgICAgICAgIG5kbmJvb3N0OjptYWtlX3R1cGxlKGspLAotICAgICAgICAgICAgICAgIG5kbmJvb3N0OjptYWtlX3R1cGxlKCkpKTsKLSAgICAKLSAgICAgICAgICAgIHRoaXMtPnJlc2VydmVfZm9yX2luc2VydCh0aGlzLT5zaXplXyArIDEpOwotICAgICAgICAgICAgcmV0dXJuICphZGRfbm9kZShhLCBrZXlfaGFzaCk7Ci0gICAgICAgIH0KLQotI2lmIGRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMpCi0jICAgaWYgZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19URU1QTEFURVMpCi0gICAgICAgIGVtcGxhY2VfcmV0dXJuIGVtcGxhY2UobmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjplbXBsYWNlX2FyZ3MxPAotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6cGxlYXNlX2lnbm9yZV90aGlzX292ZXJsb2FkPiBjb25zdCYpCi0gICAgICAgIHsKLSAgICAgICAgICAgIE5ETkJPT1NUX0FTU0VSVChmYWxzZSk7Ci0gICAgICAgICAgICByZXR1cm4gZW1wbGFjZV9yZXR1cm4odGhpcy0+YmVnaW4oKSwgZmFsc2UpOwotICAgICAgICB9Ci0jICAgZWxzZQotICAgICAgICBlbXBsYWNlX3JldHVybiBlbXBsYWNlKAotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6cGxlYXNlX2lnbm9yZV90aGlzX292ZXJsb2FkIGNvbnN0JikKLSAgICAgICAgewotICAgICAgICAgICAgTkROQk9PU1RfQVNTRVJUKGZhbHNlKTsKLSAgICAgICAgICAgIHJldHVybiBlbXBsYWNlX3JldHVybih0aGlzLT5iZWdpbigpLCBmYWxzZSk7Ci0gICAgICAgIH0KLSMgICBlbmRpZgotI2VuZGlmCi0KLSAgICAgICAgdGVtcGxhdGUgPE5ETkJPT1NUX1VOT1JERVJFRF9FTVBMQUNFX1RFTVBMQVRFPgotICAgICAgICBlbXBsYWNlX3JldHVybiBlbXBsYWNlKE5ETkJPT1NUX1VOT1JERVJFRF9FTVBMQUNFX0FSR1MpCi0gICAgICAgIHsKLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9WQVJJQURJQ19URU1QTEFURVMpCi0gICAgICAgICAgICByZXR1cm4gZW1wbGFjZV9pbXBsKAotICAgICAgICAgICAgICAgIGV4dHJhY3Rvcjo6ZXh0cmFjdChORE5CT09TVF9VTk9SREVSRURfRU1QTEFDRV9GT1JXQVJEKSwKLSAgICAgICAgICAgICAgICBORE5CT09TVF9VTk9SREVSRURfRU1QTEFDRV9GT1JXQVJEKTsKLSNlbHNlCi0gICAgICAgICAgICByZXR1cm4gZW1wbGFjZV9pbXBsKAotICAgICAgICAgICAgICAgIGV4dHJhY3Rvcjo6ZXh0cmFjdChhcmdzLmEwLCBhcmdzLmExKSwKLSAgICAgICAgICAgICAgICBORE5CT09TVF9VTk9SREVSRURfRU1QTEFDRV9GT1JXQVJEKTsKLSNlbmRpZgotICAgICAgICB9Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1ZBUklBRElDX1RFTVBMQVRFUykKLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEEwPgotICAgICAgICBlbXBsYWNlX3JldHVybiBlbXBsYWNlKAotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6ZW1wbGFjZV9hcmdzMTxBMD4gY29uc3QmIGFyZ3MpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBlbXBsYWNlX2ltcGwoZXh0cmFjdG9yOjpleHRyYWN0KGFyZ3MuYTApLCBhcmdzKTsKLSAgICAgICAgfQotI2VuZGlmCi0KLSAgICAgICAgdGVtcGxhdGUgPE5ETkJPT1NUX1VOT1JERVJFRF9FTVBMQUNFX1RFTVBMQVRFPgotICAgICAgICBlbXBsYWNlX3JldHVybiBlbXBsYWNlX2ltcGwoa2V5X3R5cGUgY29uc3QmIGssCi0gICAgICAgICAgICBORE5CT09TVF9VTk9SREVSRURfRU1QTEFDRV9BUkdTKQotICAgICAgICB7Ci0gICAgICAgICAgICBzdGQ6OnNpemVfdCBrZXlfaGFzaCA9IHRoaXMtPmhhc2goayk7Ci0gICAgICAgICAgICBpdGVyYXRvciBwb3MgPSB0aGlzLT5maW5kX25vZGUoa2V5X2hhc2gsIGspOwotICAgIAotICAgICAgICAgICAgaWYgKHBvcy5ub2RlXykgcmV0dXJuIGVtcGxhY2VfcmV0dXJuKHBvcywgZmFsc2UpOwotICAgIAotICAgICAgICAgICAgLy8gQ3JlYXRlIHRoZSBub2RlIGJlZm9yZSByZWhhc2hpbmcgaW4gY2FzZSBpdCB0aHJvd3MgYW4KLSAgICAgICAgICAgIC8vIGV4Y2VwdGlvbiAobmVlZCBzdHJvbmcgc2FmZXR5IGluIHN1Y2ggYSBjYXNlKS4KLSAgICAgICAgICAgIG5vZGVfY29uc3RydWN0b3IgYSh0aGlzLT5ub2RlX2FsbG9jKCkpOwotICAgICAgICAgICAgYS5jb25zdHJ1Y3Rfd2l0aF92YWx1ZShORE5CT09TVF9VTk9SREVSRURfRU1QTEFDRV9GT1JXQVJEKTsKLSAgICAKLSAgICAgICAgICAgIC8vIHJlc2VydmUgaGFzIGJhc2ljIGV4Y2VwdGlvbiBzYWZldHkgaWYgdGhlIGhhc2ggZnVuY3Rpb24KLSAgICAgICAgICAgIC8vIHRocm93cywgc3Ryb25nIG90aGVyd2lzZS4KLSAgICAgICAgICAgIHRoaXMtPnJlc2VydmVfZm9yX2luc2VydCh0aGlzLT5zaXplXyArIDEpOwotICAgICAgICAgICAgcmV0dXJuIGVtcGxhY2VfcmV0dXJuKHRoaXMtPmFkZF9ub2RlKGEsIGtleV9oYXNoKSwgdHJ1ZSk7Ci0gICAgICAgIH0KLQotICAgICAgICBlbXBsYWNlX3JldHVybiBlbXBsYWNlX2ltcGxfd2l0aF9ub2RlKG5vZGVfY29uc3RydWN0b3ImIGEpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGtleV90eXBlIGNvbnN0JiBrID0gdGhpcy0+Z2V0X2tleShhLnZhbHVlKCkpOwotICAgICAgICAgICAgc3RkOjpzaXplX3Qga2V5X2hhc2ggPSB0aGlzLT5oYXNoKGspOwotICAgICAgICAgICAgaXRlcmF0b3IgcG9zID0gdGhpcy0+ZmluZF9ub2RlKGtleV9oYXNoLCBrKTsKLQotICAgICAgICAgICAgaWYgKHBvcy5ub2RlXykgcmV0dXJuIGVtcGxhY2VfcmV0dXJuKHBvcywgZmFsc2UpOwotCi0gICAgICAgICAgICAvLyByZXNlcnZlIGhhcyBiYXNpYyBleGNlcHRpb24gc2FmZXR5IGlmIHRoZSBoYXNoIGZ1bmN0aW9uCi0gICAgICAgICAgICAvLyB0aHJvd3MsIHN0cm9uZyBvdGhlcndpc2UuCi0gICAgICAgICAgICB0aGlzLT5yZXNlcnZlX2Zvcl9pbnNlcnQodGhpcy0+c2l6ZV8gKyAxKTsKLSAgICAgICAgICAgIHJldHVybiBlbXBsYWNlX3JldHVybih0aGlzLT5hZGRfbm9kZShhLCBrZXlfaGFzaCksIHRydWUpOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGUgPE5ETkJPT1NUX1VOT1JERVJFRF9FTVBMQUNFX1RFTVBMQVRFPgotICAgICAgICBlbXBsYWNlX3JldHVybiBlbXBsYWNlX2ltcGwobm9fa2V5LCBORE5CT09TVF9VTk9SREVSRURfRU1QTEFDRV9BUkdTKQotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBEb24ndCBoYXZlIGEga2V5LCBzbyBjb25zdHJ1Y3QgdGhlIG5vZGUgZmlyc3QgaW4gb3JkZXIKLSAgICAgICAgICAgIC8vIHRvIGJlIGFibGUgdG8gbG9va3VwIHRoZSBwb3NpdGlvbi4KLSAgICAgICAgICAgIG5vZGVfY29uc3RydWN0b3IgYSh0aGlzLT5ub2RlX2FsbG9jKCkpOwotICAgICAgICAgICAgYS5jb25zdHJ1Y3Rfd2l0aF92YWx1ZShORE5CT09TVF9VTk9SREVSRURfRU1QTEFDRV9GT1JXQVJEKTsKLSAgICAgICAgICAgIHJldHVybiBlbXBsYWNlX2ltcGxfd2l0aF9ub2RlKGEpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgICAgIC8vIEluc2VydCByYW5nZSBtZXRob2RzCi0gICAgICAgIC8vCi0gICAgICAgIC8vIGlmIGhhc2ggZnVuY3Rpb24gdGhyb3dzLCBvciBpbnNlcnRpbmcgPiAxIGVsZW1lbnQsIGJhc2ljIGV4Y2VwdGlvbgotICAgICAgICAvLyBzYWZldHkgc3Ryb25nIG90aGVyd2lzZQotCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBJbnB1dEl0PgotICAgICAgICB2b2lkIGluc2VydF9yYW5nZShJbnB1dEl0IGksIElucHV0SXQgaikKLSAgICAgICAgewotICAgICAgICAgICAgaWYoaSAhPSBqKQotICAgICAgICAgICAgICAgIHJldHVybiBpbnNlcnRfcmFuZ2VfaW1wbChleHRyYWN0b3I6OmV4dHJhY3QoKmkpLCBpLCBqKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBJbnB1dEl0PgotICAgICAgICB2b2lkIGluc2VydF9yYW5nZV9pbXBsKGtleV90eXBlIGNvbnN0JiBrLCBJbnB1dEl0IGksIElucHV0SXQgaikKLSAgICAgICAgewotICAgICAgICAgICAgbm9kZV9jb25zdHJ1Y3RvciBhKHRoaXMtPm5vZGVfYWxsb2MoKSk7Ci0KLSAgICAgICAgICAgIGluc2VydF9yYW5nZV9pbXBsMihhLCBrLCBpLCBqKTsKLQotICAgICAgICAgICAgd2hpbGUoKytpICE9IGopIHsKLSAgICAgICAgICAgICAgICAvLyBOb3RlOiBjYW4ndCB1c2UgZ2V0X2tleSBhcyAnKmknIG1pZ2h0IG5vdCBiZSB2YWx1ZV90eXBlIC0gaXQKLSAgICAgICAgICAgICAgICAvLyBjb3VsZCBiZSBhIHBhaXIgd2l0aCBmaXJzdF90eXBlcyBhcyBrZXlfdHlwZSB3aXRob3V0IGNvbnN0IG9yCi0gICAgICAgICAgICAgICAgLy8gYSBkaWZmZXJlbnQgc2Vjb25kX3R5cGUuCi0gICAgICAgICAgICAgICAgLy8KLSAgICAgICAgICAgICAgICAvLyBUT0RPOiBNaWdodCBiZSB3b3J0aCBzdG9yaW5nIHRoZSB2YWx1ZV90eXBlIGluc3RlYWQgb2YgdGhlCi0gICAgICAgICAgICAgICAgLy8ga2V5IGhlcmUuIENvdWxkIGJlIG1vcmUgZWZmaWNpZW50IGlmICcqaScgaXMgZXhwZW5zaXZlLiBDb3VsZAotICAgICAgICAgICAgICAgIC8vIGJlIGxlc3MgZWZmaWNpZW50IGlmIGNvcHlpbmcgdGhlIGZ1bGwgdmFsdWVfdHlwZSBpcwotICAgICAgICAgICAgICAgIC8vIGV4cGVuc2l2ZS4KLSAgICAgICAgICAgICAgICBpbnNlcnRfcmFuZ2VfaW1wbDIoYSwgZXh0cmFjdG9yOjpleHRyYWN0KCppKSwgaSwgaik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgSW5wdXRJdD4KLSAgICAgICAgdm9pZCBpbnNlcnRfcmFuZ2VfaW1wbDIobm9kZV9jb25zdHJ1Y3RvciYgYSwga2V5X3R5cGUgY29uc3QmIGssCi0gICAgICAgICAgICBJbnB1dEl0IGksIElucHV0SXQgaikKLSAgICAgICAgewotICAgICAgICAgICAgLy8gTm8gc2lkZSBlZmZlY3RzIGluIHRoaXMgaW5pdGlhbCBjb2RlCi0gICAgICAgICAgICBzdGQ6OnNpemVfdCBrZXlfaGFzaCA9IHRoaXMtPmhhc2goayk7Ci0gICAgICAgICAgICBpdGVyYXRvciBwb3MgPSB0aGlzLT5maW5kX25vZGUoa2V5X2hhc2gsIGspOwotICAgIAotICAgICAgICAgICAgaWYgKCFwb3Mubm9kZV8pIHsKLSAgICAgICAgICAgICAgICBhLmNvbnN0cnVjdF93aXRoX3ZhbHVlMigqaSk7Ci0gICAgICAgICAgICAgICAgaWYodGhpcy0+c2l6ZV8gKyAxID4gdGhpcy0+bWF4X2xvYWRfKQotICAgICAgICAgICAgICAgICAgICB0aGlzLT5yZXNlcnZlX2Zvcl9pbnNlcnQodGhpcy0+c2l6ZV8gKwotICAgICAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjppbnNlcnRfc2l6ZShpLCBqKSk7Ci0gICAgCi0gICAgICAgICAgICAgICAgLy8gTm90aGluZyBhZnRlciB0aGlzIHBvaW50IGNhbiB0aHJvdy4KLSAgICAgICAgICAgICAgICB0aGlzLT5hZGRfbm9kZShhLCBrZXlfaGFzaCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgSW5wdXRJdD4KLSAgICAgICAgdm9pZCBpbnNlcnRfcmFuZ2VfaW1wbChub19rZXksIElucHV0SXQgaSwgSW5wdXRJdCBqKQotICAgICAgICB7Ci0gICAgICAgICAgICBub2RlX2NvbnN0cnVjdG9yIGEodGhpcy0+bm9kZV9hbGxvYygpKTsKLQotICAgICAgICAgICAgZG8gewotICAgICAgICAgICAgICAgIGEuY29uc3RydWN0X3dpdGhfdmFsdWUyKCppKTsKLSAgICAgICAgICAgICAgICBlbXBsYWNlX2ltcGxfd2l0aF9ub2RlKGEpOwotICAgICAgICAgICAgfSB3aGlsZSgrK2kgIT0gaik7Ci0gICAgICAgIH0KLQotICAgICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAgICAgICAgLy8gRXJhc2UKLSAgICAgICAgLy8KLSAgICAgICAgLy8gbm8gdGhyb3cKLQotICAgICAgICBzdGQ6OnNpemVfdCBlcmFzZV9rZXkoa2V5X3R5cGUgY29uc3QmIGspCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmKCF0aGlzLT5zaXplXykgcmV0dXJuIDA7Ci0KLSAgICAgICAgICAgIHN0ZDo6c2l6ZV90IGtleV9oYXNoID0gdGhpcy0+aGFzaChrKTsKLSAgICAgICAgICAgIHN0ZDo6c2l6ZV90IGJ1Y2tldF9pbmRleCA9IHRoaXMtPmhhc2hfdG9fYnVja2V0KGtleV9oYXNoKTsKLSAgICAgICAgICAgIGxpbmtfcG9pbnRlciBwcmV2ID0gdGhpcy0+Z2V0X3ByZXZpb3VzX3N0YXJ0KGJ1Y2tldF9pbmRleCk7Ci0gICAgICAgICAgICBpZiAoIXByZXYpIHJldHVybiAwOwotCi0gICAgICAgICAgICBmb3IgKDs7KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmICghcHJldi0+bmV4dF8pIHJldHVybiAwOwotICAgICAgICAgICAgICAgIHN0ZDo6c2l6ZV90IG5vZGVfaGFzaCA9Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PG5vZGVfcG9pbnRlcj4ocHJldi0+bmV4dF8pLT5oYXNoXzsKLSAgICAgICAgICAgICAgICBpZiAodGhpcy0+aGFzaF90b19idWNrZXQobm9kZV9oYXNoKSAhPSBidWNrZXRfaW5kZXgpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgICAgIGlmIChub2RlX2hhc2ggPT0ga2V5X2hhc2ggJiYKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMtPmtleV9lcSgpKGssIHRoaXMtPmdldF9rZXkoCi0gICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxub2RlX3BvaW50ZXI+KHByZXYtPm5leHRfKS0+dmFsdWUoKSkpKQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBwcmV2ID0gcHJldi0+bmV4dF87Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGxpbmtfcG9pbnRlciBlbmQgPSBzdGF0aWNfY2FzdDxub2RlX3BvaW50ZXI+KHByZXYtPm5leHRfKS0+bmV4dF87Ci0KLSAgICAgICAgICAgIHN0ZDo6c2l6ZV90IGNvdW50ID0gdGhpcy0+ZGVsZXRlX25vZGVzKHByZXYsIGVuZCk7Ci0gICAgICAgICAgICB0aGlzLT5maXhfYnVja2V0KGJ1Y2tldF9pbmRleCwgcHJldik7Ci0gICAgICAgICAgICByZXR1cm4gY291bnQ7Ci0gICAgICAgIH0KLQotICAgICAgICBpdGVyYXRvciBlcmFzZShjX2l0ZXJhdG9yIHIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIE5ETkJPT1NUX0FTU0VSVChyLm5vZGVfKTsKLSAgICAgICAgICAgIGl0ZXJhdG9yIG5leHQoci5ub2RlXyk7Ci0gICAgICAgICAgICArK25leHQ7Ci0gICAgICAgICAgICBlcmFzZV9ub2RlcyhyLm5vZGVfLCBuZXh0Lm5vZGVfKTsKLSAgICAgICAgICAgIHJldHVybiBuZXh0OwotICAgICAgICB9Ci0KLSAgICAgICAgaXRlcmF0b3IgZXJhc2VfcmFuZ2UoY19pdGVyYXRvciByMSwgY19pdGVyYXRvciByMikKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKHIxID09IHIyKSByZXR1cm4gaXRlcmF0b3IocjIubm9kZV8pOwotICAgICAgICAgICAgZXJhc2Vfbm9kZXMocjEubm9kZV8sIHIyLm5vZGVfKTsKLSAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcihyMi5ub2RlXyk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGVyYXNlX25vZGVzKG5vZGVfcG9pbnRlciBiZWdpbiwgbm9kZV9wb2ludGVyIGVuZCkKLSAgICAgICAgewotICAgICAgICAgICAgc3RkOjpzaXplX3QgYnVja2V0X2luZGV4ID0gdGhpcy0+aGFzaF90b19idWNrZXQoYmVnaW4tPmhhc2hfKTsKLQotICAgICAgICAgICAgLy8gRmluZCB0aGUgbm9kZSBiZWZvcmUgYmVnaW4uCi0gICAgICAgICAgICBsaW5rX3BvaW50ZXIgcHJldiA9IHRoaXMtPmdldF9wcmV2aW91c19zdGFydChidWNrZXRfaW5kZXgpOwotICAgICAgICAgICAgd2hpbGUocHJldi0+bmV4dF8gIT0gYmVnaW4pIHByZXYgPSBwcmV2LT5uZXh0XzsKLQotICAgICAgICAgICAgLy8gRGVsZXRlIHRoZSBub2Rlcy4KLSAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICB0aGlzLT5kZWxldGVfbm9kZShwcmV2KTsKLSAgICAgICAgICAgICAgICBidWNrZXRfaW5kZXggPSB0aGlzLT5maXhfYnVja2V0KGJ1Y2tldF9pbmRleCwgcHJldik7Ci0gICAgICAgICAgICB9IHdoaWxlIChwcmV2LT5uZXh0XyAhPSBlbmQpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgICAgIC8vIGZpbGxfYnVja2V0cwotCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBOb2RlQ3JlYXRvcj4KLSAgICAgICAgc3RhdGljIHZvaWQgZmlsbF9idWNrZXRzKGl0ZXJhdG9yIG4sIHRhYmxlJiBkc3QsCi0gICAgICAgICAgICBOb2RlQ3JlYXRvciYgY3JlYXRvcikKLSAgICAgICAgewotICAgICAgICAgICAgbGlua19wb2ludGVyIHByZXYgPSBkc3QuZ2V0X3ByZXZpb3VzX3N0YXJ0KCk7Ci0KLSAgICAgICAgICAgIHdoaWxlIChuLm5vZGVfKSB7Ci0gICAgICAgICAgICAgICAgbm9kZV9wb2ludGVyIG5vZGUgPSBjcmVhdG9yLmNyZWF0ZSgqbik7Ci0gICAgICAgICAgICAgICAgbm9kZS0+aGFzaF8gPSBuLm5vZGVfLT5oYXNoXzsKLSAgICAgICAgICAgICAgICBwcmV2LT5uZXh0XyA9IG5vZGU7Ci0gICAgICAgICAgICAgICAgKytkc3Quc2l6ZV87Ci0gICAgICAgICAgICAgICAgKytuOwotCi0gICAgICAgICAgICAgICAgcHJldiA9IHBsYWNlX2luX2J1Y2tldChkc3QsIHByZXYpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgLy8gc3Ryb25nIG90aGVyd2lzZSBleGNlcHRpb24gc2FmZXR5Ci0gICAgICAgIHZvaWQgcmVoYXNoX2ltcGwoc3RkOjpzaXplX3QgbnVtX2J1Y2tldHMpCi0gICAgICAgIHsKLSAgICAgICAgICAgIE5ETkJPT1NUX0FTU0VSVCh0aGlzLT5idWNrZXRzXyk7Ci0KLSAgICAgICAgICAgIHRoaXMtPmNyZWF0ZV9idWNrZXRzKG51bV9idWNrZXRzKTsKLSAgICAgICAgICAgIGxpbmtfcG9pbnRlciBwcmV2ID0gdGhpcy0+Z2V0X3ByZXZpb3VzX3N0YXJ0KCk7Ci0gICAgICAgICAgICB3aGlsZSAocHJldi0+bmV4dF8pCi0gICAgICAgICAgICAgICAgcHJldiA9IHBsYWNlX2luX2J1Y2tldCgqdGhpcywgcHJldik7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBJdGVyYXRlIHRocm91Z2ggdGhlIG5vZGVzIHBsYWNpbmcgdGhlbSBpbiB0aGUgY29ycmVjdCBidWNrZXRzLgotICAgICAgICAvLyBwcmU6IHByZXYtPm5leHRfIGlzIG5vdCBudWxsLgotICAgICAgICBzdGF0aWMgbGlua19wb2ludGVyIHBsYWNlX2luX2J1Y2tldCh0YWJsZSYgZHN0LCBsaW5rX3BvaW50ZXIgcHJldikKLSAgICAgICAgewotICAgICAgICAgICAgbm9kZV9wb2ludGVyIG4gPSBzdGF0aWNfY2FzdDxub2RlX3BvaW50ZXI+KHByZXYtPm5leHRfKTsKLSAgICAgICAgICAgIGJ1Y2tldF9wb2ludGVyIGIgPSBkc3QuZ2V0X2J1Y2tldChkc3QuaGFzaF90b19idWNrZXQobi0+aGFzaF8pKTsKLQotICAgICAgICAgICAgaWYgKCFiLT5uZXh0XykgewotICAgICAgICAgICAgICAgIGItPm5leHRfID0gcHJldjsKLSAgICAgICAgICAgICAgICByZXR1cm4gbjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHByZXYtPm5leHRfID0gbi0+bmV4dF87Ci0gICAgICAgICAgICAgICAgbi0+bmV4dF8gPSBiLT5uZXh0Xy0+bmV4dF87Ci0gICAgICAgICAgICAgICAgYi0+bmV4dF8tPm5leHRfID0gbjsKLSAgICAgICAgICAgICAgICByZXR1cm4gcHJldjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH07Ci19fX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Vub3JkZXJlZC9kZXRhaWwvdXRpbC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Vub3JkZXJlZC9kZXRhaWwvdXRpbC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBlMWRiODUuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC91bm9yZGVyZWQvZGV0YWlsL3V0aWwuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjYwICswLDAgQEAKLQotLy8gQ29weXJpZ2h0IChDKSAyMDAzLTIwMDQgSmVyZW15IEIuIE1haXRpbi1TaGVwYXJkLgotLy8gQ29weXJpZ2h0IChDKSAyMDA1LTIwMTEgRGFuaWVsIEphbWVzCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotI2lmbmRlZiBORE5CT09TVF9VTk9SREVSRURfREVUQUlMX1VUSUxfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9ERVRBSUxfVVRJTF9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19jb252ZXJ0aWJsZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvaXNfZW1wdHkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2l0ZXJhdG9yL2l0ZXJhdG9yX2NhdGVnb3JpZXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3V0aWxpdHkvZW5hYmxlX2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvc2VsZWN0X3R5cGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21vdmUvbW92ZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9zaXplLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL2VudW0uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3N3YXAuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgeyBuYW1lc3BhY2UgdW5vcmRlcmVkIHsgbmFtZXNwYWNlIGRldGFpbCB7Ci0KLSAgICBzdGF0aWMgY29uc3QgZmxvYXQgbWluaW11bV9tYXhfbG9hZF9mYWN0b3IgPSAxZS0zZjsKLSAgICBzdGF0aWMgY29uc3Qgc3RkOjpzaXplX3QgZGVmYXVsdF9idWNrZXRfY291bnQgPSAxMTsKLSAgICBzdHJ1Y3QgbW92ZV90YWcge307Ci0gICAgc3RydWN0IGVtcHR5X2VtcGxhY2Uge307Ci0KLSAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgLy8gaXRlcmF0b3IgU0ZJTkFFCi0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgST4KLSAgICBzdHJ1Y3QgaXNfZm9yd2FyZCA6Ci0gICAgICAgIG5kbmJvb3N0Ojppc19jb252ZXJ0aWJsZTwKLSAgICAgICAgICAgIHR5cGVuYW1lIG5kbmJvb3N0OjppdGVyYXRvcl90cmF2ZXJzYWw8ST46OnR5cGUsCi0gICAgICAgICAgICBuZG5ib29zdDo6Zm9yd2FyZF90cmF2ZXJzYWxfdGFnPgotICAgIHt9OwotCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIEksIHR5cGVuYW1lIFJldHVyblR5cGU+Ci0gICAgc3RydWN0IGVuYWJsZV9pZl9mb3J3YXJkIDoKLSAgICAgICAgbmRuYm9vc3Q6OmVuYWJsZV9pZl9jPAotICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjppc19mb3J3YXJkPEk+Ojp2YWx1ZSwKLSAgICAgICAgICAgIFJldHVyblR5cGU+Ci0gICAge307Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSSwgdHlwZW5hbWUgUmV0dXJuVHlwZT4KLSAgICBzdHJ1Y3QgZGlzYWJsZV9pZl9mb3J3YXJkIDoKLSAgICAgICAgbmRuYm9vc3Q6OmRpc2FibGVfaWZfYzwKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6aXNfZm9yd2FyZDxJPjo6dmFsdWUsCi0gICAgICAgICAgICBSZXR1cm5UeXBlPgotICAgIHt9OwotCi0gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgIC8vIHByaW1lcwotCi0jZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9QUklNRVMgXAotICAgICgxN3VsKSgyOXVsKSgzN3VsKSg1M3VsKSg2N3VsKSg3OXVsKSBcCi0gICAgKDk3dWwpKDEzMXVsKSgxOTN1bCkoMjU3dWwpKDM4OXVsKSg1MjF1bCkoNzY5dWwpIFwKLSAgICAoMTAzMXVsKSgxNTQzdWwpKDIwNTN1bCkoMzA3OXVsKSg2MTUxdWwpKDEyMjg5dWwpKDI0NTkzdWwpIFwKLSAgICAoNDkxNTd1bCkoOTgzMTd1bCkoMTk2NjEzdWwpKDM5MzI0MXVsKSg3ODY0MzN1bCkgXAotICAgICgxNTcyODY5dWwpKDMxNDU3Mzl1bCkoNjI5MTQ2OXVsKSgxMjU4MjkxN3VsKSgyNTE2NTg0M3VsKSBcCi0gICAgKDUwMzMxNjUzdWwpKDEwMDY2MzMxOXVsKSgyMDEzMjY2MTF1bCkoNDAyNjUzMTg5dWwpKDgwNTMwNjQ1N3VsKSBcCi0gICAgKDE2MTA2MTI3NDF1bCkoMzIyMTIyNTQ3M3VsKSg0Mjk0OTY3MjkxdWwpCi0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3QgcHJpbWVfbGlzdF90ZW1wbGF0ZQotICAgIHsKLSAgICAgICAgc3RhdGljIHN0ZDo6c2l6ZV90IGNvbnN0IHZhbHVlW107Ci0KLSNpZiAhZGVmaW5lZChTVU5QUk9fQ0MpCi0gICAgICAgIHN0YXRpYyBzdGQ6OnB0cmRpZmZfdCBjb25zdCBsZW5ndGg7Ci0jZWxzZQotICAgICAgICBzdGF0aWMgc3RkOjpwdHJkaWZmX3QgY29uc3QgbGVuZ3RoCi0gICAgICAgICAgICA9IE5ETkJPT1NUX1BQX1NFUV9TSVpFKE5ETkJPT1NUX1VOT1JERVJFRF9QUklNRVMpOwotI2VuZGlmCi0gICAgfTsKLQotICAgIHRlbXBsYXRlPGNsYXNzIFQ+Ci0gICAgc3RkOjpzaXplX3QgY29uc3QgcHJpbWVfbGlzdF90ZW1wbGF0ZTxUPjo6dmFsdWVbXSA9IHsKLSAgICAgICAgTkROQk9PU1RfUFBfU0VRX0VOVU0oTkROQk9PU1RfVU5PUkRFUkVEX1BSSU1FUykKLSAgICB9OwotCi0jaWYgIWRlZmluZWQoU1VOUFJPX0NDKQotICAgIHRlbXBsYXRlPGNsYXNzIFQ+Ci0gICAgc3RkOjpwdHJkaWZmX3QgY29uc3QgcHJpbWVfbGlzdF90ZW1wbGF0ZTxUPjo6bGVuZ3RoCi0gICAgICAgID0gTkROQk9PU1RfUFBfU0VRX1NJWkUoTkROQk9PU1RfVU5PUkRFUkVEX1BSSU1FUyk7Ci0jZW5kaWYKLQotI3VuZGVmIE5ETkJPT1NUX1VOT1JERVJFRF9QUklNRVMKLQotICAgIHR5cGVkZWYgcHJpbWVfbGlzdF90ZW1wbGF0ZTxzdGQ6OnNpemVfdD4gcHJpbWVfbGlzdDsKLQotICAgIC8vIG5vIHRocm93Ci0gICAgaW5saW5lIHN0ZDo6c2l6ZV90IG5leHRfcHJpbWUoc3RkOjpzaXplX3QgbnVtKSB7Ci0gICAgICAgIHN0ZDo6c2l6ZV90IGNvbnN0KiBjb25zdCBwcmltZV9saXN0X2JlZ2luID0gcHJpbWVfbGlzdDo6dmFsdWU7Ci0gICAgICAgIHN0ZDo6c2l6ZV90IGNvbnN0KiBjb25zdCBwcmltZV9saXN0X2VuZCA9IHByaW1lX2xpc3RfYmVnaW4gKwotICAgICAgICAgICAgcHJpbWVfbGlzdDo6bGVuZ3RoOwotICAgICAgICBzdGQ6OnNpemVfdCBjb25zdCogYm91bmQgPQotICAgICAgICAgICAgc3RkOjpsb3dlcl9ib3VuZChwcmltZV9saXN0X2JlZ2luLCBwcmltZV9saXN0X2VuZCwgbnVtKTsKLSAgICAgICAgaWYoYm91bmQgPT0gcHJpbWVfbGlzdF9lbmQpCi0gICAgICAgICAgICBib3VuZC0tOwotICAgICAgICByZXR1cm4gKmJvdW5kOwotICAgIH0KLQotICAgIC8vIG5vIHRocm93Ci0gICAgaW5saW5lIHN0ZDo6c2l6ZV90IHByZXZfcHJpbWUoc3RkOjpzaXplX3QgbnVtKSB7Ci0gICAgICAgIHN0ZDo6c2l6ZV90IGNvbnN0KiBjb25zdCBwcmltZV9saXN0X2JlZ2luID0gcHJpbWVfbGlzdDo6dmFsdWU7Ci0gICAgICAgIHN0ZDo6c2l6ZV90IGNvbnN0KiBjb25zdCBwcmltZV9saXN0X2VuZCA9IHByaW1lX2xpc3RfYmVnaW4gKwotICAgICAgICAgICAgcHJpbWVfbGlzdDo6bGVuZ3RoOwotICAgICAgICBzdGQ6OnNpemVfdCBjb25zdCogYm91bmQgPQotICAgICAgICAgICAgc3RkOjp1cHBlcl9ib3VuZChwcmltZV9saXN0X2JlZ2luLHByaW1lX2xpc3RfZW5kLCBudW0pOwotICAgICAgICBpZihib3VuZCAhPSBwcmltZV9saXN0X2JlZ2luKQotICAgICAgICAgICAgYm91bmQtLTsKLSAgICAgICAgcmV0dXJuICpib3VuZDsKLSAgICB9Ci0KLSAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gICAgLy8gaW5zZXJ0X3NpemUvaW5pdGlhbF9zaXplCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19TVERfRElTVEFOQ0UpCi0KLSAgICB1c2luZyA6OnN0ZDo6ZGlzdGFuY2U7Ci0KLSNlbHNlCi0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgRm9yd2FyZEl0ZXJhdG9yPgotICAgIGlubGluZSBzdGQ6OnNpemVfdCBkaXN0YW5jZShGb3J3YXJkSXRlcmF0b3IgaSwgRm9yd2FyZEl0ZXJhdG9yIGopIHsKLSAgICAgICAgc3RkOjpzaXplX3QgeDsKLSAgICAgICAgc3RkOjpkaXN0YW5jZShpLCBqLCB4KTsKLSAgICAgICAgcmV0dXJuIHg7Ci0gICAgfQotCi0jZW5kaWYKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBJPgotICAgIGlubGluZSB0eXBlbmFtZQotICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmVuYWJsZV9pZl9mb3J3YXJkPEksIHN0ZDo6c2l6ZV90Pjo6dHlwZQotICAgICAgICBpbnNlcnRfc2l6ZShJIGksIEkgaikKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGQ6OmRpc3RhbmNlKGksIGopOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBJPgotICAgIGlubGluZSB0eXBlbmFtZQotICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmRpc2FibGVfaWZfZm9yd2FyZDxJLCBzdGQ6OnNpemVfdD46OnR5cGUKLSAgICAgICAgaW5zZXJ0X3NpemUoSSwgSSkKLSAgICB7Ci0gICAgICAgIHJldHVybiAxOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBJPgotICAgIGlubGluZSBzdGQ6OnNpemVfdCBpbml0aWFsX3NpemUoSSBpLCBJIGosCi0gICAgICAgIHN0ZDo6c2l6ZV90IG51bV9idWNrZXRzID0KLSAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6ZGVmYXVsdF9idWNrZXRfY291bnQpCi0gICAgewotICAgICAgICAvLyBUT0RPOiBXaHkgKzE/Ci0gICAgICAgIHJldHVybiAoc3RkOjptYXgpKAotICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjppbnNlcnRfc2l6ZShpLCBqKSArIDEsCi0gICAgICAgICAgICBudW1fYnVja2V0cyk7Ci0gICAgfQotCi0gICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgIC8vIGNvbXByZXNzZWQKLQotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCBpbnQgSW5kZXg+Ci0gICAgc3RydWN0IGNvbXByZXNzZWRfYmFzZSA6IHByaXZhdGUgVAotICAgIHsKLSAgICAgICAgY29tcHJlc3NlZF9iYXNlKFQgY29uc3QmIHgpIDogVCh4KSB7fQotICAgICAgICBjb21wcmVzc2VkX2Jhc2UoVCYgeCwgbW92ZV90YWcpIDogVChuZG5ib29zdDo6bW92ZSh4KSkge30KLQotICAgICAgICBUJiBnZXQoKSB7IHJldHVybiAqdGhpczsgfQotICAgICAgICBUIGNvbnN0JiBnZXQoKSBjb25zdCB7IHJldHVybiAqdGhpczsgfQotICAgIH07Ci0gICAgCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsIGludCBJbmRleD4KLSAgICBzdHJ1Y3QgdW5jb21wcmVzc2VkX2Jhc2UKLSAgICB7Ci0gICAgICAgIHVuY29tcHJlc3NlZF9iYXNlKFQgY29uc3QmIHgpIDogdmFsdWVfKHgpIHt9Ci0gICAgICAgIHVuY29tcHJlc3NlZF9iYXNlKFQmIHgsIG1vdmVfdGFnKSA6IHZhbHVlXyhuZG5ib29zdDo6bW92ZSh4KSkge30KLQotICAgICAgICBUJiBnZXQoKSB7IHJldHVybiB2YWx1ZV87IH0KLSAgICAgICAgVCBjb25zdCYgZ2V0KCkgY29uc3QgeyByZXR1cm4gdmFsdWVfOyB9Ci0gICAgcHJpdmF0ZToKLSAgICAgICAgVCB2YWx1ZV87Ci0gICAgfTsKLSAgICAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgaW50IEluZGV4PgotICAgIHN0cnVjdCBnZW5lcmF0ZV9iYXNlCi0gICAgICA6IG5kbmJvb3N0OjpkZXRhaWw6OmlmX3RydWU8Ci0gICAgICAgICAgICBuZG5ib29zdDo6aXNfZW1wdHk8VD46OnZhbHVlCi0gICAgICAgID46OiBORE5CT09TVF9ORVNURURfVEVNUExBVEUgdGhlbjwKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6Y29tcHJlc3NlZF9iYXNlPFQsIEluZGV4PiwKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6dW5jb21wcmVzc2VkX2Jhc2U8VCwgSW5kZXg+Ci0gICAgICAgID4KLSAgICB7fTsKLSAgICAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotICAgIHN0cnVjdCBjb21wcmVzc2VkCi0gICAgICA6IHByaXZhdGUgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpnZW5lcmF0ZV9iYXNlPFQxLCAxPjo6dHlwZSwKLSAgICAgICAgcHJpdmF0ZSBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmdlbmVyYXRlX2Jhc2U8VDIsIDI+Ojp0eXBlCi0gICAgewotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGdlbmVyYXRlX2Jhc2U8VDEsIDE+Ojp0eXBlIGJhc2UxOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGdlbmVyYXRlX2Jhc2U8VDIsIDI+Ojp0eXBlIGJhc2UyOwotCi0gICAgICAgIHR5cGVkZWYgVDEgZmlyc3RfdHlwZTsKLSAgICAgICAgdHlwZWRlZiBUMiBzZWNvbmRfdHlwZTsKLSAgICAgICAgCi0gICAgICAgIGZpcnN0X3R5cGUmIGZpcnN0KCkgewotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGJhc2UxKj4odGhpcyktPmdldCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgZmlyc3RfdHlwZSBjb25zdCYgZmlyc3QoKSBjb25zdCB7Ci0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8YmFzZTEgY29uc3QqPih0aGlzKS0+Z2V0KCk7Ci0gICAgICAgIH0KLQotICAgICAgICBzZWNvbmRfdHlwZSYgc2Vjb25kKCkgewotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGJhc2UyKj4odGhpcyktPmdldCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgc2Vjb25kX3R5cGUgY29uc3QmIHNlY29uZCgpIGNvbnN0IHsKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxiYXNlMiBjb25zdCo+KHRoaXMpLT5nZXQoKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGaXJzdCwgdHlwZW5hbWUgU2Vjb25kPgotICAgICAgICBjb21wcmVzc2VkKEZpcnN0IGNvbnN0JiB4MSwgU2Vjb25kIGNvbnN0JiB4MikKLSAgICAgICAgICAgIDogYmFzZTEoeDEpLCBiYXNlMih4Mikge30KLQotICAgICAgICBjb21wcmVzc2VkKGNvbXByZXNzZWQgY29uc3QmIHgpCi0gICAgICAgICAgICA6IGJhc2UxKHguZmlyc3QoKSksIGJhc2UyKHguc2Vjb25kKCkpIHt9Ci0KLSAgICAgICAgY29tcHJlc3NlZChjb21wcmVzc2VkJiB4LCBtb3ZlX3RhZyBtKQotICAgICAgICAgICAgOiBiYXNlMSh4LmZpcnN0KCksIG0pLCBiYXNlMih4LnNlY29uZCgpLCBtKSB7fQotCi0gICAgICAgIHZvaWQgYXNzaWduKGNvbXByZXNzZWQgY29uc3QmIHgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZpcnN0KCkgPSB4LmZpcnN0KCk7Ci0gICAgICAgICAgICBzZWNvbmQoKSA9IHguc2Vjb25kKCk7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIG1vdmVfYXNzaWduKGNvbXByZXNzZWQmIHgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZpcnN0KCkgPSBuZG5ib29zdDo6bW92ZSh4LmZpcnN0KCkpOwotICAgICAgICAgICAgc2Vjb25kKCkgPSBuZG5ib29zdDo6bW92ZSh4LnNlY29uZCgpKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgdm9pZCBzd2FwKGNvbXByZXNzZWQmIHgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG5kbmJvb3N0Ojpzd2FwKGZpcnN0KCksIHguZmlyc3QoKSk7Ci0gICAgICAgICAgICBuZG5ib29zdDo6c3dhcChzZWNvbmQoKSwgeC5zZWNvbmQoKSk7Ci0gICAgICAgIH0KLQotICAgIHByaXZhdGU6Ci0gICAgICAgIC8vIFByZXZlbnQgYXNzaWdubWVudCBqdXN0IHRvIG1ha2UgdXNlIG9mIGFzc2lnbiBvcgotICAgICAgICAvLyBtb3ZlX2Fzc2lnbiBleHBsaWNpdC4KLSAgICAgICAgY29tcHJlc3NlZCYgb3BlcmF0b3I9KGNvbXByZXNzZWQgY29uc3QmKTsKLSAgICB9OwotfX19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC91bm9yZGVyZWQvdW5vcmRlcmVkX3NldC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3Vub3JkZXJlZC91bm9yZGVyZWRfc2V0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWIzMjM5My4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Vub3JkZXJlZC91bm9yZGVyZWRfc2V0LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1NDkgKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwNCBKZXJlbXkgQi4gTWFpdGluLVNoZXBhcmQuCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDUtMjAxMSBEYW5pZWwgSmFtZXMuCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Vub3JkZXJlZCBmb3IgZG9jdW1lbnRhdGlvbgotCi0jaWZuZGVmIE5ETkJPT1NUX1VOT1JERVJFRF9VTk9SREVSRURfU0VUX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9VTk9SREVSRURfVU5PUkRFUkVEX1NFVF9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC91bm9yZGVyZWQvdW5vcmRlcmVkX3NldF9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Vub3JkZXJlZC9kZXRhaWwvZXF1aXZhbGVudC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdW5vcmRlcmVkL2RldGFpbC91bmlxdWUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Vub3JkZXJlZC9kZXRhaWwvdXRpbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZnVuY3Rpb25hbC9oYXNoLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tb3ZlL21vdmUuaHBwPgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfSERSX0lOSVRJQUxJWkVSX0xJU1QpCi0jaW5jbHVkZSA8aW5pdGlhbGl6ZXJfbGlzdD4KLSNlbmRpZgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9NU1ZDKQotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jaWYgTkROQk9PU1RfTVNWQyA+PSAxNDAwCi0jcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTo0Mzk2KSAvL3RoZSBpbmxpbmUgc3BlY2lmaWVyIGNhbm5vdCBiZSB1c2VkIHdoZW4gYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZnJpZW5kIGRlY2xhcmF0aW9uIHJlZmVycyB0byBhIHNwZWNpYWxpemF0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvZiBhIGZ1bmN0aW9uIHRlbXBsYXRlCi0jZW5kaWYKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLW5hbWVzcGFjZSB1bm9yZGVyZWQKLXsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICBjbGFzcyB1bm9yZGVyZWRfc2V0Ci0gICAgewotI2lmIGRlZmluZWQoTkROQk9PU1RfVU5PUkRFUkVEX1VTRV9NT1ZFKQotICAgICAgICBORE5CT09TVF9DT1BZQUJMRV9BTkRfTU9WQUJMRSh1bm9yZGVyZWRfc2V0KQotI2VuZGlmCi0gICAgcHVibGljOgotCi0gICAgICAgIHR5cGVkZWYgVCBrZXlfdHlwZTsKLSAgICAgICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci0gICAgICAgIHR5cGVkZWYgSCBoYXNoZXI7Ci0gICAgICAgIHR5cGVkZWYgUCBrZXlfZXF1YWw7Ci0gICAgICAgIHR5cGVkZWYgQSBhbGxvY2F0b3JfdHlwZTsKLQotICAgIHByaXZhdGU6Ci0KLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OnNldDxBLCBULCBILCBQPiB0eXBlczsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0eXBlczo6dHJhaXRzIGFsbG9jYXRvcl90cmFpdHM7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdHlwZXM6OnRhYmxlIHRhYmxlOwotCi0gICAgcHVibGljOgotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYWxsb2NhdG9yX3RyYWl0czo6cG9pbnRlciBwb2ludGVyOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIGFsbG9jYXRvcl90cmFpdHM6OmNvbnN0X3BvaW50ZXIgY29uc3RfcG9pbnRlcjsKLQotICAgICAgICB0eXBlZGVmIHZhbHVlX3R5cGUmIHJlZmVyZW5jZTsKLSAgICAgICAgdHlwZWRlZiB2YWx1ZV90eXBlIGNvbnN0JiBjb25zdF9yZWZlcmVuY2U7Ci0KLSAgICAgICAgdHlwZWRlZiBzdGQ6OnNpemVfdCBzaXplX3R5cGU7Ci0gICAgICAgIHR5cGVkZWYgc3RkOjpwdHJkaWZmX3QgZGlmZmVyZW5jZV90eXBlOwotCi0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdGFibGU6OmNsX2l0ZXJhdG9yIGNvbnN0X2xvY2FsX2l0ZXJhdG9yOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHRhYmxlOjpjbF9pdGVyYXRvciBsb2NhbF9pdGVyYXRvcjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0YWJsZTo6Y19pdGVyYXRvciBjb25zdF9pdGVyYXRvcjsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0YWJsZTo6Y19pdGVyYXRvciBpdGVyYXRvcjsKLQotICAgIHByaXZhdGU6Ci0KLSAgICAgICAgdGFibGUgdGFibGVfOwotCi0gICAgcHVibGljOgotCi0gICAgICAgIC8vIGNvbnN0cnVjdG9ycwotCi0gICAgICAgIGV4cGxpY2l0IHVub3JkZXJlZF9zZXQoCi0gICAgICAgICAgICAgICAgc2l6ZV90eXBlID0gbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpkZWZhdWx0X2J1Y2tldF9jb3VudCwKLSAgICAgICAgICAgICAgICBjb25zdCBoYXNoZXImID0gaGFzaGVyKCksCi0gICAgICAgICAgICAgICAgY29uc3Qga2V5X2VxdWFsJiA9IGtleV9lcXVhbCgpLAotICAgICAgICAgICAgICAgIGNvbnN0IGFsbG9jYXRvcl90eXBlJiA9IGFsbG9jYXRvcl90eXBlKCkpOwotCi0gICAgICAgIGV4cGxpY2l0IHVub3JkZXJlZF9zZXQoYWxsb2NhdG9yX3R5cGUgY29uc3QmKTsKLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgSW5wdXRJdD4KLSAgICAgICAgdW5vcmRlcmVkX3NldChJbnB1dEl0LCBJbnB1dEl0KTsKLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgSW5wdXRJdD4KLSAgICAgICAgdW5vcmRlcmVkX3NldCgKLSAgICAgICAgICAgICAgICBJbnB1dEl0LCBJbnB1dEl0LAotICAgICAgICAgICAgICAgIHNpemVfdHlwZSwKLSAgICAgICAgICAgICAgICBjb25zdCBoYXNoZXImID0gaGFzaGVyKCksCi0gICAgICAgICAgICAgICAgY29uc3Qga2V5X2VxdWFsJiA9IGtleV9lcXVhbCgpKTsKLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgSW5wdXRJdD4KLSAgICAgICAgdW5vcmRlcmVkX3NldCgKLSAgICAgICAgICAgICAgICBJbnB1dEl0LCBJbnB1dEl0LAotICAgICAgICAgICAgICAgIHNpemVfdHlwZSwKLSAgICAgICAgICAgICAgICBjb25zdCBoYXNoZXImLAotICAgICAgICAgICAgICAgIGNvbnN0IGtleV9lcXVhbCYsCi0gICAgICAgICAgICAgICAgY29uc3QgYWxsb2NhdG9yX3R5cGUmKTsKLQotICAgICAgICAvLyBjb3B5L21vdmUgY29uc3RydWN0b3JzCi0KLSAgICAgICAgdW5vcmRlcmVkX3NldCh1bm9yZGVyZWRfc2V0IGNvbnN0Jik7Ci0KLSAgICAgICAgdW5vcmRlcmVkX3NldCh1bm9yZGVyZWRfc2V0IGNvbnN0JiwgYWxsb2NhdG9yX3R5cGUgY29uc3QmKTsKLQotI2lmIGRlZmluZWQoTkROQk9PU1RfVU5PUkRFUkVEX1VTRV9NT1ZFKQotICAgICAgICB1bm9yZGVyZWRfc2V0KE5ETkJPT1NUX1JWX1JFRih1bm9yZGVyZWRfc2V0KSBvdGhlcikKLSAgICAgICAgICAgIDogdGFibGVfKG90aGVyLnRhYmxlXywgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjptb3ZlX3RhZygpKQotICAgICAgICB7Ci0gICAgICAgIH0KLSNlbGlmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTKQotICAgICAgICB1bm9yZGVyZWRfc2V0KHVub3JkZXJlZF9zZXQmJiBvdGhlcikKLSAgICAgICAgICAgIDogdGFibGVfKG90aGVyLnRhYmxlXywgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjptb3ZlX3RhZygpKQotICAgICAgICB7Ci0gICAgICAgIH0KLSNlbmRpZgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMpCi0gICAgICAgIHVub3JkZXJlZF9zZXQodW5vcmRlcmVkX3NldCYmLCBhbGxvY2F0b3JfdHlwZSBjb25zdCYpOwotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9IRFJfSU5JVElBTElaRVJfTElTVCkKLSAgICAgICAgdW5vcmRlcmVkX3NldCgKLSAgICAgICAgICAgICAgICBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8dmFsdWVfdHlwZT4sCi0gICAgICAgICAgICAgICAgc2l6ZV90eXBlID0gbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpkZWZhdWx0X2J1Y2tldF9jb3VudCwKLSAgICAgICAgICAgICAgICBjb25zdCBoYXNoZXImID0gaGFzaGVyKCksCi0gICAgICAgICAgICAgICAgY29uc3Qga2V5X2VxdWFsJmwgPSBrZXlfZXF1YWwoKSwKLSAgICAgICAgICAgICAgICBjb25zdCBhbGxvY2F0b3JfdHlwZSYgPSBhbGxvY2F0b3JfdHlwZSgpKTsKLSNlbmRpZgotCi0gICAgICAgIC8vIERlc3RydWN0b3IKLQotICAgICAgICB+dW5vcmRlcmVkX3NldCgpOwotCi0gICAgICAgIC8vIEFzc2lnbgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9VTk9SREVSRURfVVNFX01PVkUpCi0gICAgICAgIHVub3JkZXJlZF9zZXQmIG9wZXJhdG9yPShORE5CT09TVF9DT1BZX0FTU0lHTl9SRUYodW5vcmRlcmVkX3NldCkgeCkKLSAgICAgICAgewotICAgICAgICAgICAgdGFibGVfLmFzc2lnbih4LnRhYmxlXyk7Ci0gICAgICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgICAgIH0KLQotICAgICAgICB1bm9yZGVyZWRfc2V0JiBvcGVyYXRvcj0oTkROQk9PU1RfUlZfUkVGKHVub3JkZXJlZF9zZXQpIHgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRhYmxlXy5tb3ZlX2Fzc2lnbih4LnRhYmxlXyk7Ci0gICAgICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgICAgIH0KLSNlbHNlCi0gICAgICAgIHVub3JkZXJlZF9zZXQmIG9wZXJhdG9yPSh1bm9yZGVyZWRfc2V0IGNvbnN0JiB4KQotICAgICAgICB7Ci0gICAgICAgICAgICB0YWJsZV8uYXNzaWduKHgudGFibGVfKTsKLSAgICAgICAgICAgIHJldHVybiAqdGhpczsKLSAgICAgICAgfQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMpCi0gICAgICAgIHVub3JkZXJlZF9zZXQmIG9wZXJhdG9yPSh1bm9yZGVyZWRfc2V0JiYgeCkKLSAgICAgICAgewotICAgICAgICAgICAgdGFibGVfLm1vdmVfYXNzaWduKHgudGFibGVfKTsKLSAgICAgICAgICAgIHJldHVybiAqdGhpczsKLSAgICAgICAgfQotI2VuZGlmCi0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0hEUl9JTklUSUFMSVpFUl9MSVNUKQotICAgICAgICB1bm9yZGVyZWRfc2V0JiBvcGVyYXRvcj0oc3RkOjppbml0aWFsaXplcl9saXN0PHZhbHVlX3R5cGU+KTsKLSNlbmRpZgotCi0gICAgICAgIGFsbG9jYXRvcl90eXBlIGdldF9hbGxvY2F0b3IoKSBjb25zdCBORE5CT09TVF9OT0VYQ0VQVAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdGFibGVfLm5vZGVfYWxsb2MoKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIHNpemUgYW5kIGNhcGFjaXR5Ci0KLSAgICAgICAgYm9vbCBlbXB0eSgpIGNvbnN0IE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0YWJsZV8uc2l6ZV8gPT0gMDsKLSAgICAgICAgfQotCi0gICAgICAgIHNpemVfdHlwZSBzaXplKCkgY29uc3QgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRhYmxlXy5zaXplXzsKLSAgICAgICAgfQotCi0gICAgICAgIHNpemVfdHlwZSBtYXhfc2l6ZSgpIGNvbnN0IE5ETkJPT1NUX05PRVhDRVBUOwotCi0gICAgICAgIC8vIGl0ZXJhdG9ycwotCi0gICAgICAgIGl0ZXJhdG9yIGJlZ2luKCkgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRhYmxlXy5iZWdpbigpOwotICAgICAgICB9Ci0KLSAgICAgICAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCBORE5CT09TVF9OT0VYQ0VQVAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdGFibGVfLmJlZ2luKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpdGVyYXRvciBlbmQoKSBORE5CT09TVF9OT0VYQ0VQVAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gaXRlcmF0b3IoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGNvbnN0X2l0ZXJhdG9yIGVuZCgpIGNvbnN0IE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBjb25zdF9pdGVyYXRvcigpOwotICAgICAgICB9Ci0KLSAgICAgICAgY29uc3RfaXRlcmF0b3IgY2JlZ2luKCkgY29uc3QgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRhYmxlXy5iZWdpbigpOwotICAgICAgICB9Ci0KLSAgICAgICAgY29uc3RfaXRlcmF0b3IgY2VuZCgpIGNvbnN0IE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBjb25zdF9pdGVyYXRvcigpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gZW1wbGFjZQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfVEVNUExBVEVTKQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MuLi4gQXJncz4KLSAgICAgICAgc3RkOjpwYWlyPGl0ZXJhdG9yLCBib29sPiBlbXBsYWNlKE5ETkJPT1NUX0ZXRF9SRUYoQXJncykuLi4gYXJncykKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRhYmxlXy5lbXBsYWNlKG5kbmJvb3N0Ojpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcy4uLiBBcmdzPgotICAgICAgICBpdGVyYXRvciBlbXBsYWNlX2hpbnQoY29uc3RfaXRlcmF0b3IsIE5ETkJPT1NUX0ZXRF9SRUYoQXJncykuLi4gYXJncykKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRhYmxlXy5lbXBsYWNlKG5kbmJvb3N0Ojpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKS5maXJzdDsKLSAgICAgICAgfQotI2Vsc2UKLQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fU1VOUFJPX0NDLCBORE5CT09TVF9URVNURURfQVQoMHg1MTAwKSkKLQotICAgICAgICAvLyAwIGFyZ3VtZW50IGVtcGxhY2UgcmVxdWlyZXMgc3BlY2lhbCB0cmVhdG1lbnQgaW4gY2FzZQotICAgICAgICAvLyB0aGUgY29udGFpbmVyIGlzIGluc3RhbnRpYXRlZCB3aXRoIGEgdmFsdWUgdHlwZSB0aGF0Ci0gICAgICAgIC8vIGRvZXNuJ3QgaGF2ZSBhIGRlZmF1bHQgY29uc3RydWN0b3IuCi0KLSAgICAgICAgc3RkOjpwYWlyPGl0ZXJhdG9yLCBib29sPiBlbXBsYWNlKAotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6ZW1wdHlfZW1wbGFjZQotICAgICAgICAgICAgICAgICAgICA9IG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6ZW1wdHlfZW1wbGFjZSgpLAotICAgICAgICAgICAgICAgIHZhbHVlX3R5cGUgdiA9IHZhbHVlX3R5cGUoKSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRoaXMtPmVtcGxhY2UobmRuYm9vc3Q6Om1vdmUodikpOwotICAgICAgICB9Ci0KLSAgICAgICAgaXRlcmF0b3IgZW1wbGFjZV9oaW50KGNvbnN0X2l0ZXJhdG9yIGhpbnQsCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjplbXB0eV9lbXBsYWNlCi0gICAgICAgICAgICAgICAgICAgID0gbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjplbXB0eV9lbXBsYWNlKCksCi0gICAgICAgICAgICAgICAgdmFsdWVfdHlwZSB2ID0gdmFsdWVfdHlwZSgpCi0gICAgICAgICAgICApCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0aGlzLT5lbXBsYWNlX2hpbnQoaGludCwgbmRuYm9vc3Q6Om1vdmUodikpOwotICAgICAgICB9Ci0KLSNlbmRpZgotCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBMD4KLSAgICAgICAgc3RkOjpwYWlyPGl0ZXJhdG9yLCBib29sPiBlbXBsYWNlKE5ETkJPT1NUX0ZXRF9SRUYoQTApIGEwKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdGFibGVfLmVtcGxhY2UoCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpjcmVhdGVfZW1wbGFjZV9hcmdzKAotICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6Zm9yd2FyZDxBMD4oYTApKQotICAgICAgICAgICAgKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBMD4KLSAgICAgICAgaXRlcmF0b3IgZW1wbGFjZV9oaW50KGNvbnN0X2l0ZXJhdG9yLCBORE5CT09TVF9GV0RfUkVGKEEwKSBhMCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRhYmxlXy5lbXBsYWNlKAotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6Y3JlYXRlX2VtcGxhY2VfYXJncygKLSAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmZvcndhcmQ8QTA+KGEwKSkKLSAgICAgICAgICAgICkuZmlyc3Q7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQTAsIHR5cGVuYW1lIEExPgotICAgICAgICBzdGQ6OnBhaXI8aXRlcmF0b3IsIGJvb2w+IGVtcGxhY2UoCi0gICAgICAgICAgICBORE5CT09TVF9GV0RfUkVGKEEwKSBhMCwKLSAgICAgICAgICAgIE5ETkJPT1NUX0ZXRF9SRUYoQTEpIGExKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdGFibGVfLmVtcGxhY2UoCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpjcmVhdGVfZW1wbGFjZV9hcmdzKAotICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6Zm9yd2FyZDxBMD4oYTApLAotICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6Zm9yd2FyZDxBMT4oYTEpKQotICAgICAgICAgICAgKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBMCwgdHlwZW5hbWUgQTE+Ci0gICAgICAgIGl0ZXJhdG9yIGVtcGxhY2VfaGludChjb25zdF9pdGVyYXRvciwKLSAgICAgICAgICAgIE5ETkJPT1NUX0ZXRF9SRUYoQTApIGEwLAotICAgICAgICAgICAgTkROQk9PU1RfRldEX1JFRihBMSkgYTEpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0YWJsZV8uZW1wbGFjZSgKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmNyZWF0ZV9lbXBsYWNlX2FyZ3MoCi0gICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojpmb3J3YXJkPEEwPihhMCksCi0gICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojpmb3J3YXJkPEExPihhMSkpCi0gICAgICAgICAgICApLmZpcnN0OwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEEwLCB0eXBlbmFtZSBBMSwgdHlwZW5hbWUgQTI+Ci0gICAgICAgIHN0ZDo6cGFpcjxpdGVyYXRvciwgYm9vbD4gZW1wbGFjZSgKLSAgICAgICAgICAgIE5ETkJPT1NUX0ZXRF9SRUYoQTApIGEwLAotICAgICAgICAgICAgTkROQk9PU1RfRldEX1JFRihBMSkgYTEsCi0gICAgICAgICAgICBORE5CT09TVF9GV0RfUkVGKEEyKSBhMikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRhYmxlXy5lbXBsYWNlKAotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6Y3JlYXRlX2VtcGxhY2VfYXJncygKLSAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmZvcndhcmQ8QTA+KGEwKSwKLSAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmZvcndhcmQ8QTE+KGExKSwKLSAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmZvcndhcmQ8QTI+KGEyKSkKLSAgICAgICAgICAgICk7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQTAsIHR5cGVuYW1lIEExLCB0eXBlbmFtZSBBMj4KLSAgICAgICAgaXRlcmF0b3IgZW1wbGFjZV9oaW50KGNvbnN0X2l0ZXJhdG9yLAotICAgICAgICAgICAgTkROQk9PU1RfRldEX1JFRihBMCkgYTAsCi0gICAgICAgICAgICBORE5CT09TVF9GV0RfUkVGKEExKSBhMSwKLSAgICAgICAgICAgIE5ETkJPT1NUX0ZXRF9SRUYoQTIpIGEyKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdGFibGVfLmVtcGxhY2UoCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpjcmVhdGVfZW1wbGFjZV9hcmdzKAotICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6Zm9yd2FyZDxBMD4oYTApLAotICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6Zm9yd2FyZDxBMT4oYTEpLAotICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6Zm9yd2FyZDxBMj4oYTIpKQotICAgICAgICAgICAgKS5maXJzdDsKLSAgICAgICAgfQotCi0jZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9FTVBMQUNFKHosIG4sIF8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgdGVtcGxhdGUgPCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICBORE5CT09TVF9QUF9FTlVNX1BBUkFNU19aKHosIG4sIHR5cGVuYW1lIEEpICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgc3RkOjpwYWlyPGl0ZXJhdG9yLCBib29sPiBlbXBsYWNlKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfUFBfRU5VTV8jI3oobiwgTkROQk9PU1RfVU5PUkRFUkVEX0ZXRF9QQVJBTSwgYSkgICAgICBcCi0gICAgICAgICAgICApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICByZXR1cm4gdGFibGVfLmVtcGxhY2UoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6Y3JlYXRlX2VtcGxhY2VfYXJncyggICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfUFBfRU5VTV8jI3oobiwgTkROQk9PU1RfVU5PUkRFUkVEX0NBTExfRk9SV0FSRCwgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgKSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICB0ZW1wbGF0ZSA8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TX1ooeiwgbiwgdHlwZW5hbWUgQSkgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBpdGVyYXRvciBlbXBsYWNlX2hpbnQoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICBjb25zdF9pdGVyYXRvciwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfUFBfRU5VTV8jI3oobiwgTkROQk9PU1RfVU5PUkRFUkVEX0ZXRF9QQVJBTSwgYSkgICAgICBcCi0gICAgICAgICAgICApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICByZXR1cm4gdGFibGVfLmVtcGxhY2UoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6Y3JlYXRlX2VtcGxhY2VfYXJncyggICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgTkROQk9PU1RfUFBfRU5VTV8jI3oobiwgTkROQk9PU1RfVU5PUkRFUkVEX0NBTExfRk9SV0FSRCwgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgKSkuZmlyc3Q7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgfQotCi0gICAgICAgIE5ETkJPT1NUX1BQX1JFUEVBVF9GUk9NX1RPKDQsIE5ETkJPT1NUX1VOT1JERVJFRF9FTVBMQUNFX0xJTUlULAotICAgICAgICAgICAgTkROQk9PU1RfVU5PUkRFUkVEX0VNUExBQ0UsIF8pCi0KLSN1bmRlZiBORE5CT09TVF9VTk9SREVSRURfRU1QTEFDRQotCi0jZW5kaWYKLQotICAgICAgICBzdGQ6OnBhaXI8aXRlcmF0b3IsIGJvb2w+IGluc2VydCh2YWx1ZV90eXBlIGNvbnN0JiB4KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy0+ZW1wbGFjZSh4KTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0ZDo6cGFpcjxpdGVyYXRvciwgYm9vbD4gaW5zZXJ0KE5ETkJPT1NUX1VOT1JERVJFRF9SVl9SRUYodmFsdWVfdHlwZSkgeCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRoaXMtPmVtcGxhY2UobmRuYm9vc3Q6Om1vdmUoeCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgaXRlcmF0b3IgaW5zZXJ0KGNvbnN0X2l0ZXJhdG9yIGhpbnQsIHZhbHVlX3R5cGUgY29uc3QmIHgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0aGlzLT5lbXBsYWNlX2hpbnQoaGludCwgeCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpdGVyYXRvciBpbnNlcnQoY29uc3RfaXRlcmF0b3IgaGludCwKLSAgICAgICAgICAgICAgICBORE5CT09TVF9VTk9SREVSRURfUlZfUkVGKHZhbHVlX3R5cGUpIHgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0aGlzLT5lbXBsYWNlX2hpbnQoaGludCwgbmRuYm9vc3Q6Om1vdmUoeCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIElucHV0SXQ+IHZvaWQgaW5zZXJ0KElucHV0SXQsIElucHV0SXQpOwotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfSERSX0lOSVRJQUxJWkVSX0xJU1QpCi0gICAgICAgIHZvaWQgaW5zZXJ0KHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDx2YWx1ZV90eXBlPik7Ci0jZW5kaWYKLQotICAgICAgICBpdGVyYXRvciBlcmFzZShjb25zdF9pdGVyYXRvcik7Ci0gICAgICAgIHNpemVfdHlwZSBlcmFzZShjb25zdCBrZXlfdHlwZSYpOwotICAgICAgICBpdGVyYXRvciBlcmFzZShjb25zdF9pdGVyYXRvciwgY29uc3RfaXRlcmF0b3IpOwotICAgICAgICB2b2lkIHF1aWNrX2VyYXNlKGNvbnN0X2l0ZXJhdG9yIGl0KSB7IGVyYXNlKGl0KTsgfQotICAgICAgICB2b2lkIGVyYXNlX3JldHVybl92b2lkKGNvbnN0X2l0ZXJhdG9yIGl0KSB7IGVyYXNlKGl0KTsgfQotCi0gICAgICAgIHZvaWQgY2xlYXIoKTsKLSAgICAgICAgdm9pZCBzd2FwKHVub3JkZXJlZF9zZXQmKTsKLQotICAgICAgICAvLyBvYnNlcnZlcnMKLQotICAgICAgICBoYXNoZXIgaGFzaF9mdW5jdGlvbigpIGNvbnN0OwotICAgICAgICBrZXlfZXF1YWwga2V5X2VxKCkgY29uc3Q7Ci0KLSAgICAgICAgLy8gbG9va3VwCi0KLSAgICAgICAgY29uc3RfaXRlcmF0b3IgZmluZChjb25zdCBrZXlfdHlwZSYpIGNvbnN0OwotCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBDb21wYXRpYmxlS2V5LCBjbGFzcyBDb21wYXRpYmxlSGFzaCwKLSAgICAgICAgICAgIGNsYXNzIENvbXBhdGlibGVQcmVkaWNhdGU+Ci0gICAgICAgIGNvbnN0X2l0ZXJhdG9yIGZpbmQoCi0gICAgICAgICAgICAgICAgQ29tcGF0aWJsZUtleSBjb25zdCYsCi0gICAgICAgICAgICAgICAgQ29tcGF0aWJsZUhhc2ggY29uc3QmLAotICAgICAgICAgICAgICAgIENvbXBhdGlibGVQcmVkaWNhdGUgY29uc3QmKSBjb25zdDsKLQotICAgICAgICBzaXplX3R5cGUgY291bnQoY29uc3Qga2V5X3R5cGUmKSBjb25zdDsKLQotICAgICAgICBzdGQ6OnBhaXI8Y29uc3RfaXRlcmF0b3IsIGNvbnN0X2l0ZXJhdG9yPgotICAgICAgICBlcXVhbF9yYW5nZShjb25zdCBrZXlfdHlwZSYpIGNvbnN0OwotCi0gICAgICAgIC8vIGJ1Y2tldCBpbnRlcmZhY2UKLQotICAgICAgICBzaXplX3R5cGUgYnVja2V0X2NvdW50KCkgY29uc3QgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRhYmxlXy5idWNrZXRfY291bnRfOwotICAgICAgICB9Ci0KLSAgICAgICAgc2l6ZV90eXBlIG1heF9idWNrZXRfY291bnQoKSBjb25zdCBORE5CT09TVF9OT0VYQ0VQVAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdGFibGVfLm1heF9idWNrZXRfY291bnQoKTsKLSAgICAgICAgfQotCi0gICAgICAgIHNpemVfdHlwZSBidWNrZXRfc2l6ZShzaXplX3R5cGUpIGNvbnN0OwotCi0gICAgICAgIHNpemVfdHlwZSBidWNrZXQoY29uc3Qga2V5X3R5cGUmIGspIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0YWJsZV8uaGFzaF90b19idWNrZXQodGFibGVfLmhhc2goaykpOwotICAgICAgICB9Ci0KLSAgICAgICAgbG9jYWxfaXRlcmF0b3IgYmVnaW4oc2l6ZV90eXBlIG4pCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBsb2NhbF9pdGVyYXRvcigKLSAgICAgICAgICAgICAgICB0YWJsZV8uYmVnaW4obiksIG4sIHRhYmxlXy5idWNrZXRfY291bnRfKTsKLSAgICAgICAgfQotCi0gICAgICAgIGNvbnN0X2xvY2FsX2l0ZXJhdG9yIGJlZ2luKHNpemVfdHlwZSBuKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gY29uc3RfbG9jYWxfaXRlcmF0b3IoCi0gICAgICAgICAgICAgICAgdGFibGVfLmJlZ2luKG4pLCBuLCB0YWJsZV8uYnVja2V0X2NvdW50Xyk7Ci0gICAgICAgIH0KLQotICAgICAgICBsb2NhbF9pdGVyYXRvciBlbmQoc2l6ZV90eXBlKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbG9jYWxfaXRlcmF0b3IoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGNvbnN0X2xvY2FsX2l0ZXJhdG9yIGVuZChzaXplX3R5cGUpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBjb25zdF9sb2NhbF9pdGVyYXRvcigpOwotICAgICAgICB9Ci0KLSAgICAgICAgY29uc3RfbG9jYWxfaXRlcmF0b3IgY2JlZ2luKHNpemVfdHlwZSBuKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gY29uc3RfbG9jYWxfaXRlcmF0b3IoCi0gICAgICAgICAgICAgICAgdGFibGVfLmJlZ2luKG4pLCBuLCB0YWJsZV8uYnVja2V0X2NvdW50Xyk7Ci0gICAgICAgIH0KLQotICAgICAgICBjb25zdF9sb2NhbF9pdGVyYXRvciBjZW5kKHNpemVfdHlwZSkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGNvbnN0X2xvY2FsX2l0ZXJhdG9yKCk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBoYXNoIHBvbGljeQotCi0gICAgICAgIGZsb2F0IG1heF9sb2FkX2ZhY3RvcigpIGNvbnN0IE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0YWJsZV8ubWxmXzsKLSAgICAgICAgfQotCi0gICAgICAgIGZsb2F0IGxvYWRfZmFjdG9yKCkgY29uc3QgTkROQk9PU1RfTk9FWENFUFQ7Ci0gICAgICAgIHZvaWQgbWF4X2xvYWRfZmFjdG9yKGZsb2F0KSBORE5CT09TVF9OT0VYQ0VQVDsKLSAgICAgICAgdm9pZCByZWhhc2goc2l6ZV90eXBlKTsKLSAgICAgICAgdm9pZCByZXNlcnZlKHNpemVfdHlwZSk7Ci0KLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIDwgMHgwNTgyKQotICAgICAgICBmcmllbmQgYm9vbCBvcGVyYXRvcj09PFQsSCxQLEE+KAotICAgICAgICAgICAgICAgIHVub3JkZXJlZF9zZXQgY29uc3QmLCB1bm9yZGVyZWRfc2V0IGNvbnN0Jik7Ci0gICAgICAgIGZyaWVuZCBib29sIG9wZXJhdG9yIT08VCxILFAsQT4oCi0gICAgICAgICAgICAgICAgdW5vcmRlcmVkX3NldCBjb25zdCYsIHVub3JkZXJlZF9zZXQgY29uc3QmKTsKLSNlbmRpZgotICAgIH07IC8vIGNsYXNzIHRlbXBsYXRlIHVub3JkZXJlZF9zZXQKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIGNsYXNzIHVub3JkZXJlZF9tdWx0aXNldAotICAgIHsKLSNpZiBkZWZpbmVkKE5ETkJPT1NUX1VOT1JERVJFRF9VU0VfTU9WRSkKLSAgICAgICAgTkROQk9PU1RfQ09QWUFCTEVfQU5EX01PVkFCTEUodW5vcmRlcmVkX211bHRpc2V0KQotI2VuZGlmCi0gICAgcHVibGljOgotCi0gICAgICAgIHR5cGVkZWYgVCBrZXlfdHlwZTsKLSAgICAgICAgdHlwZWRlZiBUIHZhbHVlX3R5cGU7Ci0gICAgICAgIHR5cGVkZWYgSCBoYXNoZXI7Ci0gICAgICAgIHR5cGVkZWYgUCBrZXlfZXF1YWw7Ci0gICAgICAgIHR5cGVkZWYgQSBhbGxvY2F0b3JfdHlwZTsKLQotICAgIHByaXZhdGU6Ci0KLSAgICAgICAgdHlwZWRlZiBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6Om11bHRpc2V0PEEsIFQsIEgsIFA+IHR5cGVzOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHR5cGVzOjp0cmFpdHMgYWxsb2NhdG9yX3RyYWl0czsKLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0eXBlczo6dGFibGUgdGFibGU7Ci0KLSAgICBwdWJsaWM6Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSBhbGxvY2F0b3JfdHJhaXRzOjpwb2ludGVyIHBvaW50ZXI7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgYWxsb2NhdG9yX3RyYWl0czo6Y29uc3RfcG9pbnRlciBjb25zdF9wb2ludGVyOwotCi0gICAgICAgIHR5cGVkZWYgdmFsdWVfdHlwZSYgcmVmZXJlbmNlOwotICAgICAgICB0eXBlZGVmIHZhbHVlX3R5cGUgY29uc3QmIGNvbnN0X3JlZmVyZW5jZTsKLQotICAgICAgICB0eXBlZGVmIHN0ZDo6c2l6ZV90IHNpemVfdHlwZTsKLSAgICAgICAgdHlwZWRlZiBzdGQ6OnB0cmRpZmZfdCBkaWZmZXJlbmNlX3R5cGU7Ci0KLSAgICAgICAgdHlwZWRlZiB0eXBlbmFtZSB0YWJsZTo6Y2xfaXRlcmF0b3IgY29uc3RfbG9jYWxfaXRlcmF0b3I7Ci0gICAgICAgIHR5cGVkZWYgdHlwZW5hbWUgdGFibGU6OmNsX2l0ZXJhdG9yIGxvY2FsX2l0ZXJhdG9yOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHRhYmxlOjpjX2l0ZXJhdG9yIGNvbnN0X2l0ZXJhdG9yOwotICAgICAgICB0eXBlZGVmIHR5cGVuYW1lIHRhYmxlOjpjX2l0ZXJhdG9yIGl0ZXJhdG9yOwotCi0gICAgcHJpdmF0ZToKLQotICAgICAgICB0YWJsZSB0YWJsZV87Ci0KLSAgICBwdWJsaWM6Ci0KLSAgICAgICAgLy8gY29uc3RydWN0b3JzCi0KLSAgICAgICAgZXhwbGljaXQgdW5vcmRlcmVkX211bHRpc2V0KAotICAgICAgICAgICAgICAgIHNpemVfdHlwZSA9IG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6ZGVmYXVsdF9idWNrZXRfY291bnQsCi0gICAgICAgICAgICAgICAgY29uc3QgaGFzaGVyJiA9IGhhc2hlcigpLAotICAgICAgICAgICAgICAgIGNvbnN0IGtleV9lcXVhbCYgPSBrZXlfZXF1YWwoKSwKLSAgICAgICAgICAgICAgICBjb25zdCBhbGxvY2F0b3JfdHlwZSYgPSBhbGxvY2F0b3JfdHlwZSgpKTsKLQotICAgICAgICBleHBsaWNpdCB1bm9yZGVyZWRfbXVsdGlzZXQoYWxsb2NhdG9yX3R5cGUgY29uc3QmKTsKLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgSW5wdXRJdD4KLSAgICAgICAgdW5vcmRlcmVkX211bHRpc2V0KElucHV0SXQsIElucHV0SXQpOwotCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBJbnB1dEl0PgotICAgICAgICB1bm9yZGVyZWRfbXVsdGlzZXQoCi0gICAgICAgICAgICAgICAgSW5wdXRJdCwgSW5wdXRJdCwKLSAgICAgICAgICAgICAgICBzaXplX3R5cGUsCi0gICAgICAgICAgICAgICAgY29uc3QgaGFzaGVyJiA9IGhhc2hlcigpLAotICAgICAgICAgICAgICAgIGNvbnN0IGtleV9lcXVhbCYgPSBrZXlfZXF1YWwoKSk7Ci0KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIElucHV0SXQ+Ci0gICAgICAgIHVub3JkZXJlZF9tdWx0aXNldCgKLSAgICAgICAgICAgICAgICBJbnB1dEl0LCBJbnB1dEl0LAotICAgICAgICAgICAgICAgIHNpemVfdHlwZSwKLSAgICAgICAgICAgICAgICBjb25zdCBoYXNoZXImLAotICAgICAgICAgICAgICAgIGNvbnN0IGtleV9lcXVhbCYsCi0gICAgICAgICAgICAgICAgY29uc3QgYWxsb2NhdG9yX3R5cGUmKTsKLQotICAgICAgICAvLyBjb3B5L21vdmUgY29uc3RydWN0b3JzCi0KLSAgICAgICAgdW5vcmRlcmVkX211bHRpc2V0KHVub3JkZXJlZF9tdWx0aXNldCBjb25zdCYpOwotCi0gICAgICAgIHVub3JkZXJlZF9tdWx0aXNldCh1bm9yZGVyZWRfbXVsdGlzZXQgY29uc3QmLCBhbGxvY2F0b3JfdHlwZSBjb25zdCYpOwotCi0jaWYgZGVmaW5lZChORE5CT09TVF9VTk9SREVSRURfVVNFX01PVkUpCi0gICAgICAgIHVub3JkZXJlZF9tdWx0aXNldChORE5CT09TVF9SVl9SRUYodW5vcmRlcmVkX211bHRpc2V0KSBvdGhlcikKLSAgICAgICAgICAgIDogdGFibGVfKG90aGVyLnRhYmxlXywgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjptb3ZlX3RhZygpKQotICAgICAgICB7Ci0gICAgICAgIH0KLSNlbGlmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTKQotICAgICAgICB1bm9yZGVyZWRfbXVsdGlzZXQodW5vcmRlcmVkX211bHRpc2V0JiYgb3RoZXIpCi0gICAgICAgICAgICA6IHRhYmxlXyhvdGhlci50YWJsZV8sIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6bW92ZV90YWcoKSkKLSAgICAgICAgewotICAgICAgICB9Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTKQotICAgICAgICB1bm9yZGVyZWRfbXVsdGlzZXQodW5vcmRlcmVkX211bHRpc2V0JiYsIGFsbG9jYXRvcl90eXBlIGNvbnN0Jik7Ci0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0hEUl9JTklUSUFMSVpFUl9MSVNUKQotICAgICAgICB1bm9yZGVyZWRfbXVsdGlzZXQoCi0gICAgICAgICAgICAgICAgc3RkOjppbml0aWFsaXplcl9saXN0PHZhbHVlX3R5cGU+LAotICAgICAgICAgICAgICAgIHNpemVfdHlwZSA9IG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6ZGVmYXVsdF9idWNrZXRfY291bnQsCi0gICAgICAgICAgICAgICAgY29uc3QgaGFzaGVyJiA9IGhhc2hlcigpLAotICAgICAgICAgICAgICAgIGNvbnN0IGtleV9lcXVhbCZsID0ga2V5X2VxdWFsKCksCi0gICAgICAgICAgICAgICAgY29uc3QgYWxsb2NhdG9yX3R5cGUmID0gYWxsb2NhdG9yX3R5cGUoKSk7Ci0jZW5kaWYKLQotICAgICAgICAvLyBEZXN0cnVjdG9yCi0KLSAgICAgICAgfnVub3JkZXJlZF9tdWx0aXNldCgpOwotCi0gICAgICAgIC8vIEFzc2lnbgotCi0jaWYgZGVmaW5lZChORE5CT09TVF9VTk9SREVSRURfVVNFX01PVkUpCi0gICAgICAgIHVub3JkZXJlZF9tdWx0aXNldCYgb3BlcmF0b3I9KAotICAgICAgICAgICAgICAgIE5ETkJPT1NUX0NPUFlfQVNTSUdOX1JFRih1bm9yZGVyZWRfbXVsdGlzZXQpIHgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRhYmxlXy5hc3NpZ24oeC50YWJsZV8pOwotICAgICAgICAgICAgcmV0dXJuICp0aGlzOwotICAgICAgICB9Ci0KLSAgICAgICAgdW5vcmRlcmVkX211bHRpc2V0JiBvcGVyYXRvcj0oTkROQk9PU1RfUlZfUkVGKHVub3JkZXJlZF9tdWx0aXNldCkgeCkKLSAgICAgICAgewotICAgICAgICAgICAgdGFibGVfLm1vdmVfYXNzaWduKHgudGFibGVfKTsKLSAgICAgICAgICAgIHJldHVybiAqdGhpczsKLSAgICAgICAgfQotI2Vsc2UKLSAgICAgICAgdW5vcmRlcmVkX211bHRpc2V0JiBvcGVyYXRvcj0odW5vcmRlcmVkX211bHRpc2V0IGNvbnN0JiB4KQotICAgICAgICB7Ci0gICAgICAgICAgICB0YWJsZV8uYXNzaWduKHgudGFibGVfKTsKLSAgICAgICAgICAgIHJldHVybiAqdGhpczsKLSAgICAgICAgfQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfUlZBTFVFX1JFRkVSRU5DRVMpCi0gICAgICAgIHVub3JkZXJlZF9tdWx0aXNldCYgb3BlcmF0b3I9KHVub3JkZXJlZF9tdWx0aXNldCYmIHgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHRhYmxlXy5tb3ZlX2Fzc2lnbih4LnRhYmxlXyk7Ci0gICAgICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgICAgIH0KLSNlbmRpZgotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9IRFJfSU5JVElBTElaRVJfTElTVCkKLSAgICAgICAgdW5vcmRlcmVkX211bHRpc2V0JiBvcGVyYXRvcj0oc3RkOjppbml0aWFsaXplcl9saXN0PHZhbHVlX3R5cGU+KTsKLSNlbmRpZgotCi0gICAgICAgIGFsbG9jYXRvcl90eXBlIGdldF9hbGxvY2F0b3IoKSBjb25zdCBORE5CT09TVF9OT0VYQ0VQVAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdGFibGVfLm5vZGVfYWxsb2MoKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIHNpemUgYW5kIGNhcGFjaXR5Ci0KLSAgICAgICAgYm9vbCBlbXB0eSgpIGNvbnN0IE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0YWJsZV8uc2l6ZV8gPT0gMDsKLSAgICAgICAgfQotCi0gICAgICAgIHNpemVfdHlwZSBzaXplKCkgY29uc3QgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRhYmxlXy5zaXplXzsKLSAgICAgICAgfQotCi0gICAgICAgIHNpemVfdHlwZSBtYXhfc2l6ZSgpIGNvbnN0IE5ETkJPT1NUX05PRVhDRVBUOwotCi0gICAgICAgIC8vIGl0ZXJhdG9ycwotCi0gICAgICAgIGl0ZXJhdG9yIGJlZ2luKCkgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGl0ZXJhdG9yKHRhYmxlXy5iZWdpbigpKTsKLSAgICAgICAgfQotCi0gICAgICAgIGNvbnN0X2l0ZXJhdG9yIGJlZ2luKCkgY29uc3QgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGNvbnN0X2l0ZXJhdG9yKHRhYmxlXy5iZWdpbigpKTsKLSAgICAgICAgfQotCi0gICAgICAgIGl0ZXJhdG9yIGVuZCgpIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcigpOwotICAgICAgICB9Ci0KLSAgICAgICAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGNvbnN0X2l0ZXJhdG9yKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBjb25zdF9pdGVyYXRvciBjYmVnaW4oKSBjb25zdCBORE5CT09TVF9OT0VYQ0VQVAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gY29uc3RfaXRlcmF0b3IodGFibGVfLmJlZ2luKCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgY29uc3RfaXRlcmF0b3IgY2VuZCgpIGNvbnN0IE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBjb25zdF9pdGVyYXRvcigpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gZW1wbGFjZQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfVkFSSUFESUNfVEVNUExBVEVTKQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MuLi4gQXJncz4KLSAgICAgICAgaXRlcmF0b3IgZW1wbGFjZShORE5CT09TVF9GV0RfUkVGKEFyZ3MpLi4uIGFyZ3MpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0YWJsZV8uZW1wbGFjZShuZG5ib29zdDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MuLi4gQXJncz4KLSAgICAgICAgaXRlcmF0b3IgZW1wbGFjZV9oaW50KGNvbnN0X2l0ZXJhdG9yLCBORE5CT09TVF9GV0RfUkVGKEFyZ3MpLi4uIGFyZ3MpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0YWJsZV8uZW1wbGFjZShuZG5ib29zdDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLik7Ci0gICAgICAgIH0KLSNlbHNlCi0KLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChfX1NVTlBST19DQywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTEwMCkpCi0KLSAgICAgICAgLy8gMCBhcmd1bWVudCBlbXBsYWNlIHJlcXVpcmVzIHNwZWNpYWwgdHJlYXRtZW50IGluIGNhc2UKLSAgICAgICAgLy8gdGhlIGNvbnRhaW5lciBpcyBpbnN0YW50aWF0ZWQgd2l0aCBhIHZhbHVlIHR5cGUgdGhhdAotICAgICAgICAvLyBkb2Vzbid0IGhhdmUgYSBkZWZhdWx0IGNvbnN0cnVjdG9yLgotCi0gICAgICAgIGl0ZXJhdG9yIGVtcGxhY2UoCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjplbXB0eV9lbXBsYWNlCi0gICAgICAgICAgICAgICAgICAgID0gbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjplbXB0eV9lbXBsYWNlKCksCi0gICAgICAgICAgICAgICAgdmFsdWVfdHlwZSB2ID0gdmFsdWVfdHlwZSgpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy0+ZW1wbGFjZShuZG5ib29zdDo6bW92ZSh2KSk7Ci0gICAgICAgIH0KLQotICAgICAgICBpdGVyYXRvciBlbXBsYWNlX2hpbnQoY29uc3RfaXRlcmF0b3IgaGludCwKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmVtcHR5X2VtcGxhY2UKLSAgICAgICAgICAgICAgICAgICAgPSBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmVtcHR5X2VtcGxhY2UoKSwKLSAgICAgICAgICAgICAgICB2YWx1ZV90eXBlIHYgPSB2YWx1ZV90eXBlKCkKLSAgICAgICAgICAgICkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRoaXMtPmVtcGxhY2VfaGludChoaW50LCBuZG5ib29zdDo6bW92ZSh2KSk7Ci0gICAgICAgIH0KLQotI2VuZGlmCi0KLSAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEEwPgotICAgICAgICBpdGVyYXRvciBlbXBsYWNlKE5ETkJPT1NUX0ZXRF9SRUYoQTApIGEwKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdGFibGVfLmVtcGxhY2UoCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpjcmVhdGVfZW1wbGFjZV9hcmdzKAotICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6Zm9yd2FyZDxBMD4oYTApKQotICAgICAgICAgICAgKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBMD4KLSAgICAgICAgaXRlcmF0b3IgZW1wbGFjZV9oaW50KGNvbnN0X2l0ZXJhdG9yLCBORE5CT09TVF9GV0RfUkVGKEEwKSBhMCkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRhYmxlXy5lbXBsYWNlKAotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6Y3JlYXRlX2VtcGxhY2VfYXJncygKLSAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmZvcndhcmQ8QTA+KGEwKSkKLSAgICAgICAgICAgICk7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQTAsIHR5cGVuYW1lIEExPgotICAgICAgICBpdGVyYXRvciBlbXBsYWNlKAotICAgICAgICAgICAgTkROQk9PU1RfRldEX1JFRihBMCkgYTAsCi0gICAgICAgICAgICBORE5CT09TVF9GV0RfUkVGKEExKSBhMSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRhYmxlXy5lbXBsYWNlKAotICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6Y3JlYXRlX2VtcGxhY2VfYXJncygKLSAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmZvcndhcmQ8QTA+KGEwKSwKLSAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OmZvcndhcmQ8QTE+KGExKSkKLSAgICAgICAgICAgICk7Ci0gICAgICAgIH0KLQotICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQTAsIHR5cGVuYW1lIEExPgotICAgICAgICBpdGVyYXRvciBlbXBsYWNlX2hpbnQoY29uc3RfaXRlcmF0b3IsCi0gICAgICAgICAgICBORE5CT09TVF9GV0RfUkVGKEEwKSBhMCwKLSAgICAgICAgICAgIE5ETkJPT1NUX0ZXRF9SRUYoQTEpIGExKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdGFibGVfLmVtcGxhY2UoCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpjcmVhdGVfZW1wbGFjZV9hcmdzKAotICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6Zm9yd2FyZDxBMD4oYTApLAotICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6Zm9yd2FyZDxBMT4oYTEpKQotICAgICAgICAgICAgKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBMCwgdHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyPgotICAgICAgICBpdGVyYXRvciBlbXBsYWNlKAotICAgICAgICAgICAgTkROQk9PU1RfRldEX1JFRihBMCkgYTAsCi0gICAgICAgICAgICBORE5CT09TVF9GV0RfUkVGKEExKSBhMSwKLSAgICAgICAgICAgIE5ETkJPT1NUX0ZXRF9SRUYoQTIpIGEyKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdGFibGVfLmVtcGxhY2UoCi0gICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpjcmVhdGVfZW1wbGFjZV9hcmdzKAotICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6Zm9yd2FyZDxBMD4oYTApLAotICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6Zm9yd2FyZDxBMT4oYTEpLAotICAgICAgICAgICAgICAgICAgICBuZG5ib29zdDo6Zm9yd2FyZDxBMj4oYTIpKQotICAgICAgICAgICAgKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBMCwgdHlwZW5hbWUgQTEsIHR5cGVuYW1lIEEyPgotICAgICAgICBpdGVyYXRvciBlbXBsYWNlX2hpbnQoY29uc3RfaXRlcmF0b3IsCi0gICAgICAgICAgICBORE5CT09TVF9GV0RfUkVGKEEwKSBhMCwKLSAgICAgICAgICAgIE5ETkJPT1NUX0ZXRF9SRUYoQTEpIGExLAotICAgICAgICAgICAgTkROQk9PU1RfRldEX1JFRihBMikgYTIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0YWJsZV8uZW1wbGFjZSgKLSAgICAgICAgICAgICAgICBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmNyZWF0ZV9lbXBsYWNlX2FyZ3MoCi0gICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojpmb3J3YXJkPEEwPihhMCksCi0gICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojpmb3J3YXJkPEExPihhMSksCi0gICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0Ojpmb3J3YXJkPEEyPihhMikpCi0gICAgICAgICAgICApOwotICAgICAgICB9Ci0KLSNkZWZpbmUgTkROQk9PU1RfVU5PUkRFUkVEX0VNUExBQ0UoeiwgbiwgXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICB0ZW1wbGF0ZSA8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TX1ooeiwgbiwgdHlwZW5hbWUgQSkgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBpdGVyYXRvciBlbXBsYWNlKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9QUF9FTlVNXyMjeihuLCBORE5CT09TVF9VTk9SREVSRURfRldEX1BBUkFNLCBhKSAgICAgIFwKLSAgICAgICAgICAgICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgIHJldHVybiB0YWJsZV8uZW1wbGFjZSggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpjcmVhdGVfZW1wbGFjZV9hcmdzKCAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9QUF9FTlVNXyMjeihuLCBORE5CT09TVF9VTk9SREVSRURfQ0FMTF9GT1JXQVJELCAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICApKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHRlbXBsYXRlIDwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgTkROQk9PU1RfUFBfRU5VTV9QQVJBTVNfWih6LCBuLCB0eXBlbmFtZSBBKSAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIGl0ZXJhdG9yIGVtcGxhY2VfaGludCggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0X2l0ZXJhdG9yLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9QUF9FTlVNXyMjeihuLCBORE5CT09TVF9VTk9SREVSRURfRldEX1BBUkFNLCBhKSAgICAgIFwKLSAgICAgICAgICAgICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgIHJldHVybiB0YWJsZV8uZW1wbGFjZSggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgbmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpjcmVhdGVfZW1wbGFjZV9hcmdzKCAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9QUF9FTlVNXyMjeihuLCBORE5CT09TVF9VTk9SREVSRURfQ0FMTF9GT1JXQVJELCAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICApKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICB9Ci0KLSAgICAgICAgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE8oNCwgTkROQk9PU1RfVU5PUkRFUkVEX0VNUExBQ0VfTElNSVQsCi0gICAgICAgICAgICBORE5CT09TVF9VTk9SREVSRURfRU1QTEFDRSwgXykKLQotI3VuZGVmIE5ETkJPT1NUX1VOT1JERVJFRF9FTVBMQUNFCi0KLSNlbmRpZgotCi0gICAgICAgIGl0ZXJhdG9yIGluc2VydCh2YWx1ZV90eXBlIGNvbnN0JiB4KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy0+ZW1wbGFjZSh4KTsKLSAgICAgICAgfQotCi0gICAgICAgIGl0ZXJhdG9yIGluc2VydChORE5CT09TVF9VTk9SREVSRURfUlZfUkVGKHZhbHVlX3R5cGUpIHgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0aGlzLT5lbXBsYWNlKG5kbmJvb3N0Ojptb3ZlKHgpKTsKLSAgICAgICAgfQotCi0gICAgICAgIGl0ZXJhdG9yIGluc2VydChjb25zdF9pdGVyYXRvciBoaW50LCB2YWx1ZV90eXBlIGNvbnN0JiB4KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy0+ZW1wbGFjZV9oaW50KGhpbnQsIHgpOwotICAgICAgICB9Ci0KLSAgICAgICAgaXRlcmF0b3IgaW5zZXJ0KGNvbnN0X2l0ZXJhdG9yIGhpbnQsCi0gICAgICAgICAgICAgICAgTkROQk9PU1RfVU5PUkRFUkVEX1JWX1JFRih2YWx1ZV90eXBlKSB4KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy0+ZW1wbGFjZV9oaW50KGhpbnQsIG5kbmJvb3N0Ojptb3ZlKHgpKTsKLSAgICAgICAgfQotCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBJbnB1dEl0PiB2b2lkIGluc2VydChJbnB1dEl0LCBJbnB1dEl0KTsKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0hEUl9JTklUSUFMSVpFUl9MSVNUKQotICAgICAgICB2b2lkIGluc2VydChzdGQ6OmluaXRpYWxpemVyX2xpc3Q8dmFsdWVfdHlwZT4pOwotI2VuZGlmCi0KLSAgICAgICAgaXRlcmF0b3IgZXJhc2UoY29uc3RfaXRlcmF0b3IpOwotICAgICAgICBzaXplX3R5cGUgZXJhc2UoY29uc3Qga2V5X3R5cGUmKTsKLSAgICAgICAgaXRlcmF0b3IgZXJhc2UoY29uc3RfaXRlcmF0b3IsIGNvbnN0X2l0ZXJhdG9yKTsKLSAgICAgICAgdm9pZCBxdWlja19lcmFzZShjb25zdF9pdGVyYXRvciBpdCkgeyBlcmFzZShpdCk7IH0KLSAgICAgICAgdm9pZCBlcmFzZV9yZXR1cm5fdm9pZChjb25zdF9pdGVyYXRvciBpdCkgeyBlcmFzZShpdCk7IH0KLQotICAgICAgICB2b2lkIGNsZWFyKCk7Ci0gICAgICAgIHZvaWQgc3dhcCh1bm9yZGVyZWRfbXVsdGlzZXQmKTsKLQotICAgICAgICAvLyBvYnNlcnZlcnMKLQotICAgICAgICBoYXNoZXIgaGFzaF9mdW5jdGlvbigpIGNvbnN0OwotICAgICAgICBrZXlfZXF1YWwga2V5X2VxKCkgY29uc3Q7Ci0KLSAgICAgICAgLy8gbG9va3VwCi0KLSAgICAgICAgY29uc3RfaXRlcmF0b3IgZmluZChjb25zdCBrZXlfdHlwZSYpIGNvbnN0OwotCi0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBDb21wYXRpYmxlS2V5LCBjbGFzcyBDb21wYXRpYmxlSGFzaCwKLSAgICAgICAgICAgIGNsYXNzIENvbXBhdGlibGVQcmVkaWNhdGU+Ci0gICAgICAgIGNvbnN0X2l0ZXJhdG9yIGZpbmQoCi0gICAgICAgICAgICAgICAgQ29tcGF0aWJsZUtleSBjb25zdCYsCi0gICAgICAgICAgICAgICAgQ29tcGF0aWJsZUhhc2ggY29uc3QmLAotICAgICAgICAgICAgICAgIENvbXBhdGlibGVQcmVkaWNhdGUgY29uc3QmKSBjb25zdDsKLQotICAgICAgICBzaXplX3R5cGUgY291bnQoY29uc3Qga2V5X3R5cGUmKSBjb25zdDsKLQotICAgICAgICBzdGQ6OnBhaXI8Y29uc3RfaXRlcmF0b3IsIGNvbnN0X2l0ZXJhdG9yPgotICAgICAgICBlcXVhbF9yYW5nZShjb25zdCBrZXlfdHlwZSYpIGNvbnN0OwotCi0gICAgICAgIC8vIGJ1Y2tldCBpbnRlcmZhY2UKLQotICAgICAgICBzaXplX3R5cGUgYnVja2V0X2NvdW50KCkgY29uc3QgTkROQk9PU1RfTk9FWENFUFQKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRhYmxlXy5idWNrZXRfY291bnRfOwotICAgICAgICB9Ci0KLSAgICAgICAgc2l6ZV90eXBlIG1heF9idWNrZXRfY291bnQoKSBjb25zdCBORE5CT09TVF9OT0VYQ0VQVAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdGFibGVfLm1heF9idWNrZXRfY291bnQoKTsKLSAgICAgICAgfQotCi0gICAgICAgIHNpemVfdHlwZSBidWNrZXRfc2l6ZShzaXplX3R5cGUpIGNvbnN0OwotCi0gICAgICAgIHNpemVfdHlwZSBidWNrZXQoY29uc3Qga2V5X3R5cGUmIGspIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0YWJsZV8uaGFzaF90b19idWNrZXQodGFibGVfLmhhc2goaykpOwotICAgICAgICB9Ci0KLSAgICAgICAgbG9jYWxfaXRlcmF0b3IgYmVnaW4oc2l6ZV90eXBlIG4pCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBsb2NhbF9pdGVyYXRvcigKLSAgICAgICAgICAgICAgICB0YWJsZV8uYmVnaW4obiksIG4sIHRhYmxlXy5idWNrZXRfY291bnRfKTsKLSAgICAgICAgfQotCi0gICAgICAgIGNvbnN0X2xvY2FsX2l0ZXJhdG9yIGJlZ2luKHNpemVfdHlwZSBuKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gY29uc3RfbG9jYWxfaXRlcmF0b3IoCi0gICAgICAgICAgICAgICAgdGFibGVfLmJlZ2luKG4pLCBuLCB0YWJsZV8uYnVja2V0X2NvdW50Xyk7Ci0gICAgICAgIH0KLQotICAgICAgICBsb2NhbF9pdGVyYXRvciBlbmQoc2l6ZV90eXBlKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbG9jYWxfaXRlcmF0b3IoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGNvbnN0X2xvY2FsX2l0ZXJhdG9yIGVuZChzaXplX3R5cGUpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBjb25zdF9sb2NhbF9pdGVyYXRvcigpOwotICAgICAgICB9Ci0KLSAgICAgICAgY29uc3RfbG9jYWxfaXRlcmF0b3IgY2JlZ2luKHNpemVfdHlwZSBuKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gY29uc3RfbG9jYWxfaXRlcmF0b3IoCi0gICAgICAgICAgICAgICAgdGFibGVfLmJlZ2luKG4pLCBuLCB0YWJsZV8uYnVja2V0X2NvdW50Xyk7Ci0gICAgICAgIH0KLQotICAgICAgICBjb25zdF9sb2NhbF9pdGVyYXRvciBjZW5kKHNpemVfdHlwZSkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGNvbnN0X2xvY2FsX2l0ZXJhdG9yKCk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBoYXNoIHBvbGljeQotCi0gICAgICAgIGZsb2F0IG1heF9sb2FkX2ZhY3RvcigpIGNvbnN0IE5ETkJPT1NUX05PRVhDRVBUCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiB0YWJsZV8ubWxmXzsKLSAgICAgICAgfQotCi0gICAgICAgIGZsb2F0IGxvYWRfZmFjdG9yKCkgY29uc3QgTkROQk9PU1RfTk9FWENFUFQ7Ci0gICAgICAgIHZvaWQgbWF4X2xvYWRfZmFjdG9yKGZsb2F0KSBORE5CT09TVF9OT0VYQ0VQVDsKLSAgICAgICAgdm9pZCByZWhhc2goc2l6ZV90eXBlKTsKLSAgICAgICAgdm9pZCByZXNlcnZlKHNpemVfdHlwZSk7Ci0KLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIDwgMHgwNTgyKQotICAgICAgICBmcmllbmQgYm9vbCBvcGVyYXRvcj09PFQsSCxQLEE+KAotICAgICAgICAgICAgICAgIHVub3JkZXJlZF9tdWx0aXNldCBjb25zdCYsIHVub3JkZXJlZF9tdWx0aXNldCBjb25zdCYpOwotICAgICAgICBmcmllbmQgYm9vbCBvcGVyYXRvciE9PFQsSCxQLEE+KAotICAgICAgICAgICAgICAgIHVub3JkZXJlZF9tdWx0aXNldCBjb25zdCYsIHVub3JkZXJlZF9tdWx0aXNldCBjb25zdCYpOwotI2VuZGlmCi0gICAgfTsgLy8gY2xhc3MgdGVtcGxhdGUgdW5vcmRlcmVkX211bHRpc2V0Ci0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICB1bm9yZGVyZWRfc2V0PFQsSCxQLEE+Ojp1bm9yZGVyZWRfc2V0KAotICAgICAgICAgICAgc2l6ZV90eXBlIG4sIGNvbnN0IGhhc2hlciAmaGYsIGNvbnN0IGtleV9lcXVhbCAmZXFsLAotICAgICAgICAgICAgY29uc3QgYWxsb2NhdG9yX3R5cGUgJmEpCi0gICAgICA6IHRhYmxlXyhuLCBoZiwgZXFsLCBhKQotICAgIHsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICB1bm9yZGVyZWRfc2V0PFQsSCxQLEE+Ojp1bm9yZGVyZWRfc2V0KGFsbG9jYXRvcl90eXBlIGNvbnN0JiBhKQotICAgICAgOiB0YWJsZV8obmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjpkZWZhdWx0X2J1Y2tldF9jb3VudCwKLSAgICAgICAgICAgIGhhc2hlcigpLCBrZXlfZXF1YWwoKSwgYSkKLSAgICB7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgdW5vcmRlcmVkX3NldDxULEgsUCxBPjo6dW5vcmRlcmVkX3NldCgKLSAgICAgICAgICAgIHVub3JkZXJlZF9zZXQgY29uc3QmIG90aGVyLCBhbGxvY2F0b3JfdHlwZSBjb25zdCYgYSkKLSAgICAgIDogdGFibGVfKG90aGVyLnRhYmxlXywgYSkKLSAgICB7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgdGVtcGxhdGUgPGNsYXNzIElucHV0SXQ+Ci0gICAgdW5vcmRlcmVkX3NldDxULEgsUCxBPjo6dW5vcmRlcmVkX3NldChJbnB1dEl0IGYsIElucHV0SXQgbCkKLSAgICAgIDogdGFibGVfKG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6aW5pdGlhbF9zaXplKGYsIGwpLAotICAgICAgICBoYXNoZXIoKSwga2V5X2VxdWFsKCksIGFsbG9jYXRvcl90eXBlKCkpCi0gICAgewotICAgICAgICB0YWJsZV8uaW5zZXJ0X3JhbmdlKGYsIGwpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHRlbXBsYXRlIDxjbGFzcyBJbnB1dEl0PgotICAgIHVub3JkZXJlZF9zZXQ8VCxILFAsQT46OnVub3JkZXJlZF9zZXQoCi0gICAgICAgICAgICBJbnB1dEl0IGYsIElucHV0SXQgbCwKLSAgICAgICAgICAgIHNpemVfdHlwZSBuLAotICAgICAgICAgICAgY29uc3QgaGFzaGVyICZoZiwKLSAgICAgICAgICAgIGNvbnN0IGtleV9lcXVhbCAmZXFsKQotICAgICAgOiB0YWJsZV8obmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjppbml0aWFsX3NpemUoZiwgbCwgbiksCi0gICAgICAgICAgICBoZiwgZXFsLCBhbGxvY2F0b3JfdHlwZSgpKQotICAgIHsKLSAgICAgICAgdGFibGVfLmluc2VydF9yYW5nZShmLCBsKTsKLSAgICB9Ci0gICAgCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgdGVtcGxhdGUgPGNsYXNzIElucHV0SXQ+Ci0gICAgdW5vcmRlcmVkX3NldDxULEgsUCxBPjo6dW5vcmRlcmVkX3NldCgKLSAgICAgICAgICAgIElucHV0SXQgZiwgSW5wdXRJdCBsLAotICAgICAgICAgICAgc2l6ZV90eXBlIG4sCi0gICAgICAgICAgICBjb25zdCBoYXNoZXIgJmhmLAotICAgICAgICAgICAgY29uc3Qga2V5X2VxdWFsICZlcWwsCi0gICAgICAgICAgICBjb25zdCBhbGxvY2F0b3JfdHlwZSAmYSkKLSAgICAgIDogdGFibGVfKG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6aW5pdGlhbF9zaXplKGYsIGwsIG4pLCBoZiwgZXFsLCBhKQotICAgIHsKLSAgICAgICAgdGFibGVfLmluc2VydF9yYW5nZShmLCBsKTsKLSAgICB9Ci0gICAgCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgdW5vcmRlcmVkX3NldDxULEgsUCxBPjo6fnVub3JkZXJlZF9zZXQoKSB7fQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgdW5vcmRlcmVkX3NldDxULEgsUCxBPjo6dW5vcmRlcmVkX3NldCgKLSAgICAgICAgICAgIHVub3JkZXJlZF9zZXQgY29uc3QmIG90aGVyKQotICAgICAgOiB0YWJsZV8ob3RoZXIudGFibGVfKQotICAgIHsKLSAgICB9Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9SVkFMVUVfUkVGRVJFTkNFUykKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHVub3JkZXJlZF9zZXQ8VCxILFAsQT46OnVub3JkZXJlZF9zZXQoCi0gICAgICAgICAgICB1bm9yZGVyZWRfc2V0JiYgb3RoZXIsIGFsbG9jYXRvcl90eXBlIGNvbnN0JiBhKQotICAgICAgOiB0YWJsZV8ob3RoZXIudGFibGVfLCBhLCBuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6Om1vdmVfdGFnKCkpCi0gICAgewotICAgIH0KLQotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9IRFJfSU5JVElBTElaRVJfTElTVCkKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHVub3JkZXJlZF9zZXQ8VCxILFAsQT46OnVub3JkZXJlZF9zZXQoCi0gICAgICAgICAgICBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8dmFsdWVfdHlwZT4gbGlzdCwgc2l6ZV90eXBlIG4sCi0gICAgICAgICAgICBjb25zdCBoYXNoZXIgJmhmLCBjb25zdCBrZXlfZXF1YWwgJmVxbCwgY29uc3QgYWxsb2NhdG9yX3R5cGUgJmEpCi0gICAgICA6IHRhYmxlXygKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6aW5pdGlhbF9zaXplKAotICAgICAgICAgICAgICAgIGxpc3QuYmVnaW4oKSwgbGlzdC5lbmQoKSwgbiksCi0gICAgICAgICAgICBoZiwgZXFsLCBhKQotICAgIHsKLSAgICAgICAgdGFibGVfLmluc2VydF9yYW5nZShsaXN0LmJlZ2luKCksIGxpc3QuZW5kKCkpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHVub3JkZXJlZF9zZXQ8VCxILFAsQT4mIHVub3JkZXJlZF9zZXQ8VCxILFAsQT46Om9wZXJhdG9yPSgKLSAgICAgICAgICAgIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDx2YWx1ZV90eXBlPiBsaXN0KQotICAgIHsKLSAgICAgICAgdGFibGVfLmNsZWFyKCk7Ci0gICAgICAgIHRhYmxlXy5pbnNlcnRfcmFuZ2UobGlzdC5iZWdpbigpLCBsaXN0LmVuZCgpKTsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotI2VuZGlmCi0KLSAgICAvLyBzaXplIGFuZCBjYXBhY2l0eQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgc3RkOjpzaXplX3QgdW5vcmRlcmVkX3NldDxULEgsUCxBPjo6bWF4X3NpemUoKSBjb25zdCBORE5CT09TVF9OT0VYQ0VQVAotICAgIHsKLSAgICAgICAgcmV0dXJuIHRhYmxlXy5tYXhfc2l6ZSgpOwotICAgIH0KLQotICAgIC8vIG1vZGlmaWVycwotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgdGVtcGxhdGUgPGNsYXNzIElucHV0SXQ+Ci0gICAgdm9pZCB1bm9yZGVyZWRfc2V0PFQsSCxQLEE+OjppbnNlcnQoSW5wdXRJdCBmaXJzdCwgSW5wdXRJdCBsYXN0KQotICAgIHsKLSAgICAgICAgdGFibGVfLmluc2VydF9yYW5nZShmaXJzdCwgbGFzdCk7Ci0gICAgfQotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfSERSX0lOSVRJQUxJWkVSX0xJU1QpCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgdm9pZCB1bm9yZGVyZWRfc2V0PFQsSCxQLEE+OjppbnNlcnQoCi0gICAgICAgICAgICBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8dmFsdWVfdHlwZT4gbGlzdCkKLSAgICB7Ci0gICAgICAgIHRhYmxlXy5pbnNlcnRfcmFuZ2UobGlzdC5iZWdpbigpLCBsaXN0LmVuZCgpKTsKLSAgICB9Ci0jZW5kaWYKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHR5cGVuYW1lIHVub3JkZXJlZF9zZXQ8VCxILFAsQT46Oml0ZXJhdG9yCi0gICAgICAgIHVub3JkZXJlZF9zZXQ8VCxILFAsQT46OmVyYXNlKGNvbnN0X2l0ZXJhdG9yIHBvc2l0aW9uKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRhYmxlXy5lcmFzZShwb3NpdGlvbik7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgdHlwZW5hbWUgdW5vcmRlcmVkX3NldDxULEgsUCxBPjo6c2l6ZV90eXBlCi0gICAgICAgIHVub3JkZXJlZF9zZXQ8VCxILFAsQT46OmVyYXNlKGNvbnN0IGtleV90eXBlJiBrKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRhYmxlXy5lcmFzZV9rZXkoayk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgdHlwZW5hbWUgdW5vcmRlcmVkX3NldDxULEgsUCxBPjo6aXRlcmF0b3IKLSAgICAgICAgdW5vcmRlcmVkX3NldDxULEgsUCxBPjo6ZXJhc2UoCi0gICAgICAgICAgICBjb25zdF9pdGVyYXRvciBmaXJzdCwgY29uc3RfaXRlcmF0b3IgbGFzdCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0YWJsZV8uZXJhc2VfcmFuZ2UoZmlyc3QsIGxhc3QpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHZvaWQgdW5vcmRlcmVkX3NldDxULEgsUCxBPjo6Y2xlYXIoKQotICAgIHsKLSAgICAgICAgdGFibGVfLmNsZWFyKCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgdm9pZCB1bm9yZGVyZWRfc2V0PFQsSCxQLEE+Ojpzd2FwKHVub3JkZXJlZF9zZXQmIG90aGVyKQotICAgIHsKLSAgICAgICAgdGFibGVfLnN3YXAob3RoZXIudGFibGVfKTsKLSAgICB9Ci0KLSAgICAvLyBvYnNlcnZlcnMKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHR5cGVuYW1lIHVub3JkZXJlZF9zZXQ8VCxILFAsQT46Omhhc2hlcgotICAgICAgICB1bm9yZGVyZWRfc2V0PFQsSCxQLEE+OjpoYXNoX2Z1bmN0aW9uKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiB0YWJsZV8uaGFzaF9mdW5jdGlvbigpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHR5cGVuYW1lIHVub3JkZXJlZF9zZXQ8VCxILFAsQT46OmtleV9lcXVhbAotICAgICAgICB1bm9yZGVyZWRfc2V0PFQsSCxQLEE+OjprZXlfZXEoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHRhYmxlXy5rZXlfZXEoKTsKLSAgICB9Ci0KLSAgICAvLyBsb29rdXAKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHR5cGVuYW1lIHVub3JkZXJlZF9zZXQ8VCxILFAsQT46OmNvbnN0X2l0ZXJhdG9yCi0gICAgICAgIHVub3JkZXJlZF9zZXQ8VCxILFAsQT46OmZpbmQoY29uc3Qga2V5X3R5cGUmIGspIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gdGFibGVfLmZpbmRfbm9kZShrKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgQ29tcGF0aWJsZUtleSwgY2xhc3MgQ29tcGF0aWJsZUhhc2gsCi0gICAgICAgIGNsYXNzIENvbXBhdGlibGVQcmVkaWNhdGU+Ci0gICAgdHlwZW5hbWUgdW5vcmRlcmVkX3NldDxULEgsUCxBPjo6Y29uc3RfaXRlcmF0b3IKLSAgICAgICAgdW5vcmRlcmVkX3NldDxULEgsUCxBPjo6ZmluZCgKLSAgICAgICAgICAgIENvbXBhdGlibGVLZXkgY29uc3QmIGssCi0gICAgICAgICAgICBDb21wYXRpYmxlSGFzaCBjb25zdCYgaGFzaCwKLSAgICAgICAgICAgIENvbXBhdGlibGVQcmVkaWNhdGUgY29uc3QmIGVxKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHRhYmxlXy5nZW5lcmljX2ZpbmRfbm9kZShrLCBoYXNoLCBlcSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgdHlwZW5hbWUgdW5vcmRlcmVkX3NldDxULEgsUCxBPjo6c2l6ZV90eXBlCi0gICAgICAgIHVub3JkZXJlZF9zZXQ8VCxILFAsQT46OmNvdW50KGNvbnN0IGtleV90eXBlJiBrKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHRhYmxlXy5jb3VudChrKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICBzdGQ6OnBhaXI8Ci0gICAgICAgICAgICB0eXBlbmFtZSB1bm9yZGVyZWRfc2V0PFQsSCxQLEE+Ojpjb25zdF9pdGVyYXRvciwKLSAgICAgICAgICAgIHR5cGVuYW1lIHVub3JkZXJlZF9zZXQ8VCxILFAsQT46OmNvbnN0X2l0ZXJhdG9yPgotICAgICAgICB1bm9yZGVyZWRfc2V0PFQsSCxQLEE+OjplcXVhbF9yYW5nZShjb25zdCBrZXlfdHlwZSYgaykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiB0YWJsZV8uZXF1YWxfcmFuZ2Uoayk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgdHlwZW5hbWUgdW5vcmRlcmVkX3NldDxULEgsUCxBPjo6c2l6ZV90eXBlCi0gICAgICAgIHVub3JkZXJlZF9zZXQ8VCxILFAsQT46OmJ1Y2tldF9zaXplKHNpemVfdHlwZSBuKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHRhYmxlXy5idWNrZXRfc2l6ZShuKTsKLSAgICB9Ci0KLSAgICAvLyBoYXNoIHBvbGljeQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgZmxvYXQgdW5vcmRlcmVkX3NldDxULEgsUCxBPjo6bG9hZF9mYWN0b3IoKSBjb25zdCBORE5CT09TVF9OT0VYQ0VQVAotICAgIHsKLSAgICAgICAgcmV0dXJuIHRhYmxlXy5sb2FkX2ZhY3RvcigpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHZvaWQgdW5vcmRlcmVkX3NldDxULEgsUCxBPjo6bWF4X2xvYWRfZmFjdG9yKGZsb2F0IG0pIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgewotICAgICAgICB0YWJsZV8ubWF4X2xvYWRfZmFjdG9yKG0pOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHZvaWQgdW5vcmRlcmVkX3NldDxULEgsUCxBPjo6cmVoYXNoKHNpemVfdHlwZSBuKQotICAgIHsKLSAgICAgICAgdGFibGVfLnJlaGFzaChuKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICB2b2lkIHVub3JkZXJlZF9zZXQ8VCxILFAsQT46OnJlc2VydmUoc2l6ZV90eXBlIG4pCi0gICAgewotICAgICAgICB0YWJsZV8ucmVzZXJ2ZShuKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KAotICAgICAgICAgICAgdW5vcmRlcmVkX3NldDxULEgsUCxBPiBjb25zdCYgbTEsCi0gICAgICAgICAgICB1bm9yZGVyZWRfc2V0PFQsSCxQLEE+IGNvbnN0JiBtMikKLSAgICB7Ci0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0NPREVHRUFSQ19fLCBORE5CT09TVF9URVNURURfQVQoMHgwNjEzKSkKLSAgICAgICAgc3RydWN0IGR1bW15IHsgdW5vcmRlcmVkX3NldDxULEgsUCxBPiB4OyB9OwotI2VuZGlmCi0gICAgICAgIHJldHVybiBtMS50YWJsZV8uZXF1YWxzKG0yLnRhYmxlXyk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPSgKLSAgICAgICAgICAgIHVub3JkZXJlZF9zZXQ8VCxILFAsQT4gY29uc3QmIG0xLAotICAgICAgICAgICAgdW5vcmRlcmVkX3NldDxULEgsUCxBPiBjb25zdCYgbTIpCi0gICAgewotI2lmIE5ETkJPT1NUX1dPUktBUk9VTkQoX19DT0RFR0VBUkNfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4MDYxMykpCi0gICAgICAgIHN0cnVjdCBkdW1teSB7IHVub3JkZXJlZF9zZXQ8VCxILFAsQT4geDsgfTsKLSNlbmRpZgotICAgICAgICByZXR1cm4gIW0xLnRhYmxlXy5lcXVhbHMobTIudGFibGVfKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICBpbmxpbmUgdm9pZCBzd2FwKAotICAgICAgICAgICAgdW5vcmRlcmVkX3NldDxULEgsUCxBPiAmbTEsCi0gICAgICAgICAgICB1bm9yZGVyZWRfc2V0PFQsSCxQLEE+ICZtMikKLSAgICB7Ci0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0NPREVHRUFSQ19fLCBORE5CT09TVF9URVNURURfQVQoMHgwNjEzKSkKLSAgICAgICAgc3RydWN0IGR1bW15IHsgdW5vcmRlcmVkX3NldDxULEgsUCxBPiB4OyB9OwotI2VuZGlmCi0gICAgICAgIG0xLnN3YXAobTIpOwotICAgIH0KLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHVub3JkZXJlZF9tdWx0aXNldDxULEgsUCxBPjo6dW5vcmRlcmVkX211bHRpc2V0KAotICAgICAgICAgICAgc2l6ZV90eXBlIG4sIGNvbnN0IGhhc2hlciAmaGYsIGNvbnN0IGtleV9lcXVhbCAmZXFsLAotICAgICAgICAgICAgY29uc3QgYWxsb2NhdG9yX3R5cGUgJmEpCi0gICAgICA6IHRhYmxlXyhuLCBoZiwgZXFsLCBhKQotICAgIHsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICB1bm9yZGVyZWRfbXVsdGlzZXQ8VCxILFAsQT46OnVub3JkZXJlZF9tdWx0aXNldChhbGxvY2F0b3JfdHlwZSBjb25zdCYgYSkKLSAgICAgIDogdGFibGVfKG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6ZGVmYXVsdF9idWNrZXRfY291bnQsCi0gICAgICAgICAgICBoYXNoZXIoKSwga2V5X2VxdWFsKCksIGEpCi0gICAgewotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHVub3JkZXJlZF9tdWx0aXNldDxULEgsUCxBPjo6dW5vcmRlcmVkX211bHRpc2V0KAotICAgICAgICAgICAgdW5vcmRlcmVkX211bHRpc2V0IGNvbnN0JiBvdGhlciwgYWxsb2NhdG9yX3R5cGUgY29uc3QmIGEpCi0gICAgICA6IHRhYmxlXyhvdGhlci50YWJsZV8sIGEpCi0gICAgewotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHRlbXBsYXRlIDxjbGFzcyBJbnB1dEl0PgotICAgIHVub3JkZXJlZF9tdWx0aXNldDxULEgsUCxBPjo6dW5vcmRlcmVkX211bHRpc2V0KElucHV0SXQgZiwgSW5wdXRJdCBsKQotICAgICAgOiB0YWJsZV8obmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjppbml0aWFsX3NpemUoZiwgbCksCi0gICAgICAgIGhhc2hlcigpLCBrZXlfZXF1YWwoKSwgYWxsb2NhdG9yX3R5cGUoKSkKLSAgICB7Ci0gICAgICAgIHRhYmxlXy5pbnNlcnRfcmFuZ2UoZiwgbCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgdGVtcGxhdGUgPGNsYXNzIElucHV0SXQ+Ci0gICAgdW5vcmRlcmVkX211bHRpc2V0PFQsSCxQLEE+Ojp1bm9yZGVyZWRfbXVsdGlzZXQoCi0gICAgICAgICAgICBJbnB1dEl0IGYsIElucHV0SXQgbCwKLSAgICAgICAgICAgIHNpemVfdHlwZSBuLAotICAgICAgICAgICAgY29uc3QgaGFzaGVyICZoZiwKLSAgICAgICAgICAgIGNvbnN0IGtleV9lcXVhbCAmZXFsKQotICAgICAgOiB0YWJsZV8obmRuYm9vc3Q6OnVub3JkZXJlZDo6ZGV0YWlsOjppbml0aWFsX3NpemUoZiwgbCwgbiksCi0gICAgICAgICAgICBoZiwgZXFsLCBhbGxvY2F0b3JfdHlwZSgpKQotICAgIHsKLSAgICAgICAgdGFibGVfLmluc2VydF9yYW5nZShmLCBsKTsKLSAgICB9Ci0gICAgCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgdGVtcGxhdGUgPGNsYXNzIElucHV0SXQ+Ci0gICAgdW5vcmRlcmVkX211bHRpc2V0PFQsSCxQLEE+Ojp1bm9yZGVyZWRfbXVsdGlzZXQoCi0gICAgICAgICAgICBJbnB1dEl0IGYsIElucHV0SXQgbCwKLSAgICAgICAgICAgIHNpemVfdHlwZSBuLAotICAgICAgICAgICAgY29uc3QgaGFzaGVyICZoZiwKLSAgICAgICAgICAgIGNvbnN0IGtleV9lcXVhbCAmZXFsLAotICAgICAgICAgICAgY29uc3QgYWxsb2NhdG9yX3R5cGUgJmEpCi0gICAgICA6IHRhYmxlXyhuZG5ib29zdDo6dW5vcmRlcmVkOjpkZXRhaWw6OmluaXRpYWxfc2l6ZShmLCBsLCBuKSwgaGYsIGVxbCwgYSkKLSAgICB7Ci0gICAgICAgIHRhYmxlXy5pbnNlcnRfcmFuZ2UoZiwgbCk7Ci0gICAgfQotICAgIAotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHVub3JkZXJlZF9tdWx0aXNldDxULEgsUCxBPjo6fnVub3JkZXJlZF9tdWx0aXNldCgpIHt9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICB1bm9yZGVyZWRfbXVsdGlzZXQ8VCxILFAsQT46OnVub3JkZXJlZF9tdWx0aXNldCgKLSAgICAgICAgICAgIHVub3JkZXJlZF9tdWx0aXNldCBjb25zdCYgb3RoZXIpCi0gICAgICA6IHRhYmxlXyhvdGhlci50YWJsZV8pCi0gICAgewotICAgIH0KLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX1JWQUxVRV9SRUZFUkVOQ0VTKQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgdW5vcmRlcmVkX211bHRpc2V0PFQsSCxQLEE+Ojp1bm9yZGVyZWRfbXVsdGlzZXQoCi0gICAgICAgICAgICB1bm9yZGVyZWRfbXVsdGlzZXQmJiBvdGhlciwgYWxsb2NhdG9yX3R5cGUgY29uc3QmIGEpCi0gICAgICA6IHRhYmxlXyhvdGhlci50YWJsZV8sIGEsIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6bW92ZV90YWcoKSkKLSAgICB7Ci0gICAgfQotCi0jZW5kaWYKLQotI2lmICFkZWZpbmVkKE5ETkJPT1NUX05PX0NYWDExX0hEUl9JTklUSUFMSVpFUl9MSVNUKQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgdW5vcmRlcmVkX211bHRpc2V0PFQsSCxQLEE+Ojp1bm9yZGVyZWRfbXVsdGlzZXQoCi0gICAgICAgICAgICBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8dmFsdWVfdHlwZT4gbGlzdCwgc2l6ZV90eXBlIG4sCi0gICAgICAgICAgICBjb25zdCBoYXNoZXIgJmhmLCBjb25zdCBrZXlfZXF1YWwgJmVxbCwgY29uc3QgYWxsb2NhdG9yX3R5cGUgJmEpCi0gICAgICA6IHRhYmxlXygKLSAgICAgICAgICAgIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OmRldGFpbDo6aW5pdGlhbF9zaXplKAotICAgICAgICAgICAgICAgIGxpc3QuYmVnaW4oKSwgbGlzdC5lbmQoKSwgbiksCi0gICAgICAgICAgICBoZiwgZXFsLCBhKQotICAgIHsKLSAgICAgICAgdGFibGVfLmluc2VydF9yYW5nZShsaXN0LmJlZ2luKCksIGxpc3QuZW5kKCkpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHVub3JkZXJlZF9tdWx0aXNldDxULEgsUCxBPiYgdW5vcmRlcmVkX211bHRpc2V0PFQsSCxQLEE+OjpvcGVyYXRvcj0oCi0gICAgICAgICAgICBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8dmFsdWVfdHlwZT4gbGlzdCkKLSAgICB7Ci0gICAgICAgIHRhYmxlXy5jbGVhcigpOwotICAgICAgICB0YWJsZV8uaW5zZXJ0X3JhbmdlKGxpc3QuYmVnaW4oKSwgbGlzdC5lbmQoKSk7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSNlbmRpZgotCi0gICAgLy8gc2l6ZSBhbmQgY2FwYWNpdHkKLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHN0ZDo6c2l6ZV90IHVub3JkZXJlZF9tdWx0aXNldDxULEgsUCxBPjo6bWF4X3NpemUoKSBjb25zdCBORE5CT09TVF9OT0VYQ0VQVAotICAgIHsKLSAgICAgICAgcmV0dXJuIHRhYmxlXy5tYXhfc2l6ZSgpOwotICAgIH0KLQotICAgIC8vIG1vZGlmaWVycwotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgdGVtcGxhdGUgPGNsYXNzIElucHV0SXQ+Ci0gICAgdm9pZCB1bm9yZGVyZWRfbXVsdGlzZXQ8VCxILFAsQT46Omluc2VydChJbnB1dEl0IGZpcnN0LCBJbnB1dEl0IGxhc3QpCi0gICAgewotICAgICAgICB0YWJsZV8uaW5zZXJ0X3JhbmdlKGZpcnN0LCBsYXN0KTsKLSAgICB9Ci0KLSNpZiAhZGVmaW5lZChORE5CT09TVF9OT19DWFgxMV9IRFJfSU5JVElBTElaRVJfTElTVCkKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICB2b2lkIHVub3JkZXJlZF9tdWx0aXNldDxULEgsUCxBPjo6aW5zZXJ0KAotICAgICAgICAgICAgc3RkOjppbml0aWFsaXplcl9saXN0PHZhbHVlX3R5cGU+IGxpc3QpCi0gICAgewotICAgICAgICB0YWJsZV8uaW5zZXJ0X3JhbmdlKGxpc3QuYmVnaW4oKSwgbGlzdC5lbmQoKSk7Ci0gICAgfQotI2VuZGlmCi0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICB0eXBlbmFtZSB1bm9yZGVyZWRfbXVsdGlzZXQ8VCxILFAsQT46Oml0ZXJhdG9yCi0gICAgICAgIHVub3JkZXJlZF9tdWx0aXNldDxULEgsUCxBPjo6ZXJhc2UoY29uc3RfaXRlcmF0b3IgcG9zaXRpb24pCi0gICAgewotICAgICAgICByZXR1cm4gdGFibGVfLmVyYXNlKHBvc2l0aW9uKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICB0eXBlbmFtZSB1bm9yZGVyZWRfbXVsdGlzZXQ8VCxILFAsQT46OnNpemVfdHlwZQotICAgICAgICB1bm9yZGVyZWRfbXVsdGlzZXQ8VCxILFAsQT46OmVyYXNlKGNvbnN0IGtleV90eXBlJiBrKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRhYmxlXy5lcmFzZV9rZXkoayk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgdHlwZW5hbWUgdW5vcmRlcmVkX211bHRpc2V0PFQsSCxQLEE+OjppdGVyYXRvcgotICAgICAgICB1bm9yZGVyZWRfbXVsdGlzZXQ8VCxILFAsQT46OmVyYXNlKAotICAgICAgICAgICAgICAgIGNvbnN0X2l0ZXJhdG9yIGZpcnN0LCBjb25zdF9pdGVyYXRvciBsYXN0KQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRhYmxlXy5lcmFzZV9yYW5nZShmaXJzdCwgbGFzdCk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgdm9pZCB1bm9yZGVyZWRfbXVsdGlzZXQ8VCxILFAsQT46OmNsZWFyKCkKLSAgICB7Ci0gICAgICAgIHRhYmxlXy5jbGVhcigpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHZvaWQgdW5vcmRlcmVkX211bHRpc2V0PFQsSCxQLEE+Ojpzd2FwKHVub3JkZXJlZF9tdWx0aXNldCYgb3RoZXIpCi0gICAgewotICAgICAgICB0YWJsZV8uc3dhcChvdGhlci50YWJsZV8pOwotICAgIH0KLQotICAgIC8vIG9ic2VydmVycwotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgdHlwZW5hbWUgdW5vcmRlcmVkX211bHRpc2V0PFQsSCxQLEE+OjpoYXNoZXIKLSAgICAgICAgdW5vcmRlcmVkX211bHRpc2V0PFQsSCxQLEE+OjpoYXNoX2Z1bmN0aW9uKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiB0YWJsZV8uaGFzaF9mdW5jdGlvbigpOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHR5cGVuYW1lIHVub3JkZXJlZF9tdWx0aXNldDxULEgsUCxBPjo6a2V5X2VxdWFsCi0gICAgICAgIHVub3JkZXJlZF9tdWx0aXNldDxULEgsUCxBPjo6a2V5X2VxKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiB0YWJsZV8ua2V5X2VxKCk7Ci0gICAgfQotCi0gICAgLy8gbG9va3VwCi0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICB0eXBlbmFtZSB1bm9yZGVyZWRfbXVsdGlzZXQ8VCxILFAsQT46OmNvbnN0X2l0ZXJhdG9yCi0gICAgICAgIHVub3JkZXJlZF9tdWx0aXNldDxULEgsUCxBPjo6ZmluZChjb25zdCBrZXlfdHlwZSYgaykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiB0YWJsZV8uZmluZF9ub2RlKGspOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHRlbXBsYXRlIDxjbGFzcyBDb21wYXRpYmxlS2V5LCBjbGFzcyBDb21wYXRpYmxlSGFzaCwKLSAgICAgICAgY2xhc3MgQ29tcGF0aWJsZVByZWRpY2F0ZT4KLSAgICB0eXBlbmFtZSB1bm9yZGVyZWRfbXVsdGlzZXQ8VCxILFAsQT46OmNvbnN0X2l0ZXJhdG9yCi0gICAgICAgIHVub3JkZXJlZF9tdWx0aXNldDxULEgsUCxBPjo6ZmluZCgKLSAgICAgICAgICAgIENvbXBhdGlibGVLZXkgY29uc3QmIGssCi0gICAgICAgICAgICBDb21wYXRpYmxlSGFzaCBjb25zdCYgaGFzaCwKLSAgICAgICAgICAgIENvbXBhdGlibGVQcmVkaWNhdGUgY29uc3QmIGVxKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHRhYmxlXy5nZW5lcmljX2ZpbmRfbm9kZShrLCBoYXNoLCBlcSk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgdHlwZW5hbWUgdW5vcmRlcmVkX211bHRpc2V0PFQsSCxQLEE+OjpzaXplX3R5cGUKLSAgICAgICAgdW5vcmRlcmVkX211bHRpc2V0PFQsSCxQLEE+Ojpjb3VudChjb25zdCBrZXlfdHlwZSYgaykgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiB0YWJsZV8uY291bnQoayk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgc3RkOjpwYWlyPAotICAgICAgICAgICAgdHlwZW5hbWUgdW5vcmRlcmVkX211bHRpc2V0PFQsSCxQLEE+Ojpjb25zdF9pdGVyYXRvciwKLSAgICAgICAgICAgIHR5cGVuYW1lIHVub3JkZXJlZF9tdWx0aXNldDxULEgsUCxBPjo6Y29uc3RfaXRlcmF0b3I+Ci0gICAgICAgIHVub3JkZXJlZF9tdWx0aXNldDxULEgsUCxBPjo6ZXF1YWxfcmFuZ2UoY29uc3Qga2V5X3R5cGUmIGspIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gdGFibGVfLmVxdWFsX3JhbmdlKGspOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHR5cGVuYW1lIHVub3JkZXJlZF9tdWx0aXNldDxULEgsUCxBPjo6c2l6ZV90eXBlCi0gICAgICAgIHVub3JkZXJlZF9tdWx0aXNldDxULEgsUCxBPjo6YnVja2V0X3NpemUoc2l6ZV90eXBlIG4pIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gdGFibGVfLmJ1Y2tldF9zaXplKG4pOwotICAgIH0KLQotICAgIC8vIGhhc2ggcG9saWN5Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICBmbG9hdCB1bm9yZGVyZWRfbXVsdGlzZXQ8VCxILFAsQT46OmxvYWRfZmFjdG9yKCkgY29uc3QgTkROQk9PU1RfTk9FWENFUFQKLSAgICB7Ci0gICAgICAgIHJldHVybiB0YWJsZV8ubG9hZF9mYWN0b3IoKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICB2b2lkIHVub3JkZXJlZF9tdWx0aXNldDxULEgsUCxBPjo6bWF4X2xvYWRfZmFjdG9yKGZsb2F0IG0pIE5ETkJPT1NUX05PRVhDRVBUCi0gICAgewotICAgICAgICB0YWJsZV8ubWF4X2xvYWRfZmFjdG9yKG0pOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHZvaWQgdW5vcmRlcmVkX211bHRpc2V0PFQsSCxQLEE+OjpyZWhhc2goc2l6ZV90eXBlIG4pCi0gICAgewotICAgICAgICB0YWJsZV8ucmVoYXNoKG4pOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIHZvaWQgdW5vcmRlcmVkX211bHRpc2V0PFQsSCxQLEE+OjpyZXNlcnZlKHNpemVfdHlwZSBuKQotICAgIHsKLSAgICAgICAgdGFibGVfLnJlc2VydmUobik7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PSgKLSAgICAgICAgICAgIHVub3JkZXJlZF9tdWx0aXNldDxULEgsUCxBPiBjb25zdCYgbTEsCi0gICAgICAgICAgICB1bm9yZGVyZWRfbXVsdGlzZXQ8VCxILFAsQT4gY29uc3QmIG0yKQotICAgIHsKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQ09ERUdFQVJDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDA2MTMpKQotICAgICAgICBzdHJ1Y3QgZHVtbXkgeyB1bm9yZGVyZWRfbXVsdGlzZXQ8VCxILFAsQT4geDsgfTsKLSNlbmRpZgotICAgICAgICByZXR1cm4gbTEudGFibGVfLmVxdWFscyhtMi50YWJsZV8pOwotICAgIH0KLQotICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgIGlubGluZSBib29sIG9wZXJhdG9yIT0oCi0gICAgICAgICAgICB1bm9yZGVyZWRfbXVsdGlzZXQ8VCxILFAsQT4gY29uc3QmIG0xLAotICAgICAgICAgICAgdW5vcmRlcmVkX211bHRpc2V0PFQsSCxQLEE+IGNvbnN0JiBtMikKLSAgICB7Ci0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX0NPREVHRUFSQ19fLCBORE5CT09TVF9URVNURURfQVQoMHgwNjEzKSkKLSAgICAgICAgc3RydWN0IGR1bW15IHsgdW5vcmRlcmVkX211bHRpc2V0PFQsSCxQLEE+IHg7IH07Ci0jZW5kaWYKLSAgICAgICAgcmV0dXJuICFtMS50YWJsZV8uZXF1YWxzKG0yLnRhYmxlXyk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgaW5saW5lIHZvaWQgc3dhcCgKLSAgICAgICAgICAgIHVub3JkZXJlZF9tdWx0aXNldDxULEgsUCxBPiAmbTEsCi0gICAgICAgICAgICB1bm9yZGVyZWRfbXVsdGlzZXQ8VCxILFAsQT4gJm0yKQotICAgIHsKLSNpZiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQ09ERUdFQVJDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDA2MTMpKQotICAgICAgICBzdHJ1Y3QgZHVtbXkgeyB1bm9yZGVyZWRfbXVsdGlzZXQ8VCxILFAsQT4geDsgfTsKLSNlbmRpZgotICAgICAgICBtMS5zd2FwKG0yKTsKLSAgICB9Ci19IC8vIG5hbWVzcGFjZSB1bm9yZGVyZWQKLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpZiBkZWZpbmVkKE5ETkJPT1NUX01TVkMpCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLSNlbmRpZiAvLyBORE5CT09TVF9VTk9SREVSRURfVU5PUkRFUkVEX1NFVF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdW5vcmRlcmVkL3Vub3JkZXJlZF9zZXRfZndkLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdW5vcmRlcmVkL3Vub3JkZXJlZF9zZXRfZndkLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2UxYTY1My4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Vub3JkZXJlZC91bm9yZGVyZWRfc2V0X2Z3ZC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MyArMCwwIEBACi0KLS8vIENvcHlyaWdodCAoQykgMjAwOC0yMDExIERhbmllbCBKYW1lcy4KLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcKLS8vIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0jaWZuZGVmIE5ETkJPT1NUX1VOT1JERVJFRF9TRVRfRldEX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9VTk9SREVSRURfU0VUX0ZXRF9IUFBfSU5DTFVERUQKLQotI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA+PSAxMDIwKQotIyBwcmFnbWEgb25jZQotI2VuZGlmCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG1lbW9yeT4KLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgotI2luY2x1ZGUgPG5kbmJvb3N0L2Z1bmN0aW9uYWwvaGFzaF9md2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3Vub3JkZXJlZC9kZXRhaWwvZndkLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0gICAgbmFtZXNwYWNlIHVub3JkZXJlZAotICAgIHsKLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQsCi0gICAgICAgICAgICBjbGFzcyBIID0gbmRuYm9vc3Q6Omhhc2g8VD4sCi0gICAgICAgICAgICBjbGFzcyBQID0gc3RkOjplcXVhbF90bzxUPiwKLSAgICAgICAgICAgIGNsYXNzIEEgPSBzdGQ6OmFsbG9jYXRvcjxUPiA+Ci0gICAgICAgIGNsYXNzIHVub3JkZXJlZF9zZXQ7Ci0KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgICAgIGlubGluZSBib29sIG9wZXJhdG9yPT0odW5vcmRlcmVkX3NldDxULCBILCBQLCBBPiBjb25zdCYsCi0gICAgICAgICAgICB1bm9yZGVyZWRfc2V0PFQsIEgsIFAsIEE+IGNvbnN0Jik7Ci0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgICAgICBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KHVub3JkZXJlZF9zZXQ8VCwgSCwgUCwgQT4gY29uc3QmLAotICAgICAgICAgICAgdW5vcmRlcmVkX3NldDxULCBILCBQLCBBPiBjb25zdCYpOwotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICAgICAgaW5saW5lIHZvaWQgc3dhcCh1bm9yZGVyZWRfc2V0PFQsIEgsIFAsIEE+ICZtMSwKLSAgICAgICAgICAgICAgICB1bm9yZGVyZWRfc2V0PFQsIEgsIFAsIEE+ICZtMik7Ci0KLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQsCi0gICAgICAgICAgICBjbGFzcyBIID0gbmRuYm9vc3Q6Omhhc2g8VD4sCi0gICAgICAgICAgICBjbGFzcyBQID0gc3RkOjplcXVhbF90bzxUPiwKLSAgICAgICAgICAgIGNsYXNzIEEgPSBzdGQ6OmFsbG9jYXRvcjxUPiA+Ci0gICAgICAgIGNsYXNzIHVub3JkZXJlZF9tdWx0aXNldDsKLQotICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgY2xhc3MgSCwgY2xhc3MgUCwgY2xhc3MgQT4KLSAgICAgICAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PSh1bm9yZGVyZWRfbXVsdGlzZXQ8VCwgSCwgUCwgQT4gY29uc3QmLAotICAgICAgICAgICAgdW5vcmRlcmVkX211bHRpc2V0PFQsIEgsIFAsIEE+IGNvbnN0Jik7Ci0gICAgICAgIHRlbXBsYXRlIDxjbGFzcyBULCBjbGFzcyBILCBjbGFzcyBQLCBjbGFzcyBBPgotICAgICAgICBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KHVub3JkZXJlZF9tdWx0aXNldDxULCBILCBQLCBBPiBjb25zdCYsCi0gICAgICAgICAgICB1bm9yZGVyZWRfbXVsdGlzZXQ8VCwgSCwgUCwgQT4gY29uc3QmKTsKLSAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQsIGNsYXNzIEgsIGNsYXNzIFAsIGNsYXNzIEE+Ci0gICAgICAgIGlubGluZSB2b2lkIHN3YXAodW5vcmRlcmVkX211bHRpc2V0PFQsIEgsIFAsIEE+ICZtMSwKLSAgICAgICAgICAgICAgICB1bm9yZGVyZWRfbXVsdGlzZXQ8VCwgSCwgUCwgQT4gJm0yKTsKLSAgICB9Ci0KLSAgICB1c2luZyBuZG5ib29zdDo6dW5vcmRlcmVkOjp1bm9yZGVyZWRfc2V0OwotICAgIHVzaW5nIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6OnVub3JkZXJlZF9tdWx0aXNldDsKLSAgICB1c2luZyBuZG5ib29zdDo6dW5vcmRlcmVkOjpzd2FwOwotICAgIHVzaW5nIG5kbmJvb3N0Ojp1bm9yZGVyZWQ6Om9wZXJhdG9yPT07Ci0gICAgdXNpbmcgbmRuYm9vc3Q6OnVub3JkZXJlZDo6b3BlcmF0b3IhPTsKLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Vub3JkZXJlZF9zZXQuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC91bm9yZGVyZWRfc2V0LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2NlODVlZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Vub3JkZXJlZF9zZXQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwNCBKZXJlbXkgQi4gTWFpdGluLVNoZXBhcmQuCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDUtMjAwOCBEYW5pZWwgSmFtZXMuCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nCi0vLyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3Vub3JkZXJlZCBmb3IgZG9jdW1lbnRhdGlvbgotCi0jaWZuZGVmIE5ETkJPT1NUX1VOT1JERVJFRF9TRVRfSFBQX0lOQ0xVREVECi0jZGVmaW5lIE5ETkJPT1NUX1VOT1JERVJFRF9TRVRfSFBQX0lOQ0xVREVECi0KLSNpZiBkZWZpbmVkKF9NU0NfVkVSKSAmJiAoX01TQ19WRVIgPj0gMTAyMCkKLSMgcHJhZ21hIG9uY2UKLSNlbmRpZgotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdW5vcmRlcmVkL3Vub3JkZXJlZF9zZXQuaHBwPgotCi0jZW5kaWYgLy8gTkROQk9PU1RfVU5PUkRFUkVEX1NFVF9IUFBfSU5DTFVERUQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdXRpbGl0eS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3V0aWxpdHkuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ODNmMGVjLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdXRpbGl0eS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi0vLyAgQm9vc3QgdXRpbGl0eS5ocHAgaGVhZGVyIGZpbGUgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgQ29weXJpZ2h0IDE5OTktMjAwMyBBbGVrc2V5IEd1cnRvdm95LiAgVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gYXJlCi0vLyAgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuICAoU2VlIGFjY29tcGFueWluZyBmaWxlCi0vLyAgTElDRU5TRV8xXzAudHh0IG9yIGEgY29weSBhdCA8aHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0Pi4pCi0KLS8vICBTZWUgPGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdXRpbGl0eS8+IGZvciB0aGUgbGlicmFyeSdzIGhvbWUgcGFnZS4KLQotI2lmbmRlZiBORE5CT09TVF9VVElMSVRZX0hQUAotI2RlZmluZSBORE5CT09TVF9VVElMSVRZX0hQUAotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdXRpbGl0eS9hZGRyZXNzb2YuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3V0aWxpdHkvYmFzZV9mcm9tX21lbWJlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdXRpbGl0eS9iaW5hcnkuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3V0aWxpdHkvZW5hYmxlX2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC91dGlsaXR5L2lkZW50aXR5X3R5cGUuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NoZWNrZWRfZGVsZXRlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9uZXh0X3ByaW9yLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9ub25jb3B5YWJsZS5ocHA+Ci0KLSNlbmRpZiAgLy8gTkROQk9PU1RfVVRJTElUWV9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdXRpbGl0eS9hZGRyZXNzb2YuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC91dGlsaXR5L2FkZHJlc3NvZi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI5NmZiYWQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC91dGlsaXR5L2FkZHJlc3NvZi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDIgKzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDAyIEJyYWQgS2luZyAoYnJhZC5raW5nQGtpdHdhcmUuY29tKQotLy8gICAgICAgICAgICAgICAgICAgIERvdWdsYXMgR3JlZ29yIChncmVnb2RAY3MucnBpLmVkdSkKLS8vCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDIsIDIwMDggUGV0ZXIgRGltb3YKLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgaHR0cDovL3d3dy5ib29zdC5vcmcKLQotI2lmbmRlZiBORE5CT09TVF9VVElMSVRZX0FERFJFU1NPRl9IUFAKLSMgZGVmaW5lIE5ETkJPT1NUX1VUSUxJVFlfQUREUkVTU09GX0hQUAotCi0jIGluY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+Ci0jIGluY2x1ZGUgPG5kbmJvb3N0L2RldGFpbC93b3JrYXJvdW5kLmhwcD4KLQotbmFtZXNwYWNlIG5kbmJvb3N0Ci17Ci0KLW5hbWVzcGFjZSBkZXRhaWwKLXsKLQotdGVtcGxhdGU8Y2xhc3MgVD4gc3RydWN0IGFkZHJfaW1wbF9yZWYKLXsKLSAgICBUICYgdl87Ci0KLSAgICBpbmxpbmUgYWRkcl9pbXBsX3JlZiggVCAmIHYgKTogdl8oIHYgKSB7fQotICAgIGlubGluZSBvcGVyYXRvciBUJiAoKSBjb25zdCB7IHJldHVybiB2XzsgfQotCi1wcml2YXRlOgotICAgIGFkZHJfaW1wbF9yZWYgJiBvcGVyYXRvcj0oY29uc3QgYWRkcl9pbXBsX3JlZiAmKTsKLX07Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+IHN0cnVjdCBhZGRyZXNzb2ZfaW1wbAotewotICAgIHN0YXRpYyBpbmxpbmUgVCAqIGYoIFQgJiB2LCBsb25nICkKLSAgICB7Ci0gICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFQqPigKLSAgICAgICAgICAgICZjb25zdF9jYXN0PGNoYXImPihyZWludGVycHJldF9jYXN0PGNvbnN0IHZvbGF0aWxlIGNoYXIgJj4odikpKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgaW5saW5lIFQgKiBmKCBUICogdiwgaW50ICkKLSAgICB7Ci0gICAgICAgIHJldHVybiB2OwotICAgIH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIGRldGFpbAotCi10ZW1wbGF0ZTxjbGFzcyBUPiBUICogYWRkcmVzc29mKCBUICYgdiApCi17Ci0jaWYgKGRlZmluZWQoIF9fQk9STEFORENfXyApICYmIE5ETkJPT1NUX1dPUktBUk9VTkQoIF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKCAweDYxMCApICkgKSB8fCBkZWZpbmVkKCBfX1NVTlBST19DQyApCi0KLSAgICByZXR1cm4gbmRuYm9vc3Q6OmRldGFpbDo6YWRkcmVzc29mX2ltcGw8VD46OmYoIHYsIDAgKTsKLQotI2Vsc2UKLQotICAgIHJldHVybiBuZG5ib29zdDo6ZGV0YWlsOjphZGRyZXNzb2ZfaW1wbDxUPjo6ZiggbmRuYm9vc3Q6OmRldGFpbDo6YWRkcl9pbXBsX3JlZjxUPiggdiApLCAwICk7Ci0KLSNlbmRpZgotfQotCi0jaWYgZGVmaW5lZCggX19TVU5QUk9fQ0MgKSAmJiBORE5CT09TVF9XT1JLQVJPVU5EKCBfX1NVTlBST19DQywgTkROQk9PU1RfVEVTVEVEX0FUKCAweDU5MCApICkKLQotbmFtZXNwYWNlIGRldGFpbAotewotCi10ZW1wbGF0ZTxjbGFzcyBUPiBzdHJ1Y3QgYWRkcmVzc29mX2FkZHAKLXsKLSAgICB0eXBlZGVmIFQgKiB0eXBlOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLXRlbXBsYXRlPCBjbGFzcyBULCBzdGQ6OnNpemVfdCBOID4KLXR5cGVuYW1lIGRldGFpbDo6YWRkcmVzc29mX2FkZHA8IFRbTl0gPjo6dHlwZSBhZGRyZXNzb2YoIFQgKCZ0KVtOXSApCi17Ci0gICAgcmV0dXJuICZ0OwotfQotCi0jZW5kaWYKLQotLy8gQm9ybGFuZCBkb2Vzbid0IGxpa2UgY2FzdGluZyBhbiBhcnJheSByZWZlcmVuY2UgdG8gYSBjaGFyIHJlZmVyZW5jZQotLy8gYnV0IHRoZXNlIG92ZXJsb2FkcyB3b3JrIGFyb3VuZCB0aGUgcHJvYmxlbS4KLSNpZiBkZWZpbmVkKCBfX0JPUkxBTkRDX18gKSAmJiBORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTY0KSkKLXRlbXBsYXRlPHR5cGVuYW1lIFQsc3RkOjpzaXplX3QgTj4KLVQgKCphZGRyZXNzb2YoVCAoJnQpW05dKSlbTl0KLXsKLSAgIHJldHVybiByZWludGVycHJldF9jYXN0PFQoKilbTl0+KCZ0KTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCxzdGQ6OnNpemVfdCBOPgotY29uc3QgVCAoKmFkZHJlc3NvZihjb25zdCBUICgmdClbTl0pKVtOXQotewotICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVCgqKVtOXT4oJnQpOwotfQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9VVElMSVRZX0FERFJFU1NPRl9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdXRpbGl0eS9iYXNlX2Zyb21fbWVtYmVyLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdXRpbGl0eS9iYXNlX2Zyb21fbWVtYmVyLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODk5YmQzNy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3V0aWxpdHkvYmFzZV9mcm9tX21lbWJlci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw4NyArMCwwIEBACi0vLyAgYm9vc3QgdXRpbGl0eS9iYXNlX2Zyb21fbWVtYmVyLmhwcCBoZWFkZXIgZmlsZSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgQ29weXJpZ2h0IDIwMDEsIDIwMDMsIDIwMDQgRGFyeWxlIFdhbGtlci4gIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQKLS8vICBkaXN0cmlidXRpb24gYXJlIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAgKFNlZQotLy8gIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBhIGNvcHkgYXQKLS8vICA8aHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0Pi4pCi0KLS8vICBTZWUgPGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdXRpbGl0eS8+IGZvciB0aGUgbGlicmFyeSdzIGhvbWUgcGFnZS4KLQotI2lmbmRlZiBORE5CT09TVF9VVElMSVRZX0JBU0VfRlJPTV9NRU1CRVJfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1VUSUxJVFlfQkFTRV9GUk9NX01FTUJFUl9IUFAKLQotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL2luYy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bV9iaW5hcnlfcGFyYW1zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX3BhcmFtcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vcmVwZWF0X2Zyb21fdG8uaHBwPgotCi0KLS8vICBCYXNlLWZyb20tbWVtYmVyIGFyaXR5IGNvbmZpZ3VyYXRpb24gbWFjcm8gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vIFRoZSBmb2xsb3dpbmcgbWFjcm8gZGV0ZXJtaW5lcyBob3cgbWFueSBhcmd1bWVudHMgd2lsbCBiZSBpbiB0aGUgbGFyZ2VzdAotLy8gY29uc3RydWN0b3IgdGVtcGxhdGUgb2YgYmFzZV9mcm9tX21lbWJlci4gIENvbnN0cnVjdG9yIHRlbXBsYXRlcyB3aWxsIGJlCi0vLyBnZW5lcmF0ZWQgZnJvbSBvbmUgYXJndW1lbnQgdG8gdGhpcyBtYXhpbXVtLiAgQ29kZSBmcm9tIG90aGVyIGZpbGVzIGNhbiByZWFkCi0vLyB0aGlzIG51bWJlciBpZiB0aGV5IG5lZWQgdG8gYWx3YXlzIG1hdGNoIHRoZSBleGFjdCBtYXhpbXVtIGJhc2VfZnJvbV9tZW1iZXIKLS8vIHVzZXMuICBUaGUgbWF4aW11bSBjb25zdHJ1Y3RvciBsZW5ndGggY2FuIGJlIGNoYW5nZWQgYnkgb3ZlcnJpZGluZyB0aGUKLS8vICNkZWZpbmVkIGNvbnN0YW50LiAgTWFrZSBzdXJlIHRvIGFwcGx5IHRoZSBvdmVycmlkZSwgaWYgYW55LCBmb3IgYWxsIHNvdXJjZQotLy8gZmlsZXMgZHVyaW5nIHByb2plY3QgY29tcGlsaW5nIGZvciBjb25zaXN0ZW5jeS4KLQotLy8gQ29udHJpYnV0ZWQgYnkgSm9uYXRoYW4gVHVya2FuaXMKLQotI2lmbmRlZiBORE5CT09TVF9CQVNFX0ZST01fTUVNQkVSX01BWF9BUklUWQotI2RlZmluZSBORE5CT09TVF9CQVNFX0ZST01fTUVNQkVSX01BWF9BUklUWSAgMTAKLSNlbmRpZgotCi0KLS8vICBBbiBpdGVyYXRpb24gb2YgYSBjb25zdHJ1Y3RvciB0ZW1wbGF0ZSBmb3IgYmFzZV9mcm9tX21lbWJlciAgLS0tLS0tLS0tLS0tLS8vCi0KLS8vIEEgbWFjcm8gdGhhdCBzaG91bGQgZXhwYW5kIHRvOgotLy8gICAgIHRlbXBsYXRlIDwgdHlwZW5hbWUgVDEsIC4uLiwgdHlwZW5hbWUgVG4gPgotLy8gICAgIGJhc2VfZnJvbV9tZW1iZXIoIFQxIHgxLCAuLi4sIFRuIHhuICkKLS8vICAgICAgICAgOiBtZW1iZXIoIHgxLCAuLi4sIHhuICkKLS8vICAgICAgICAge30KLS8vIFRoaXMgbWFjcm8gc2hvdWxkIG9ubHkgcGVyc2lzdCB3aXRoaW4gdGhpcyBmaWxlLgotCi0jZGVmaW5lIE5ETkJPT1NUX1BSSVZBVEVfQ1RSX0RFRiggeiwgbiwgZGF0YSApICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB0ZW1wbGF0ZSA8IE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKG4sIHR5cGVuYW1lIFQpID4gICAgICAgICAgICAgICAgICAgXAotICAgIGV4cGxpY2l0IGJhc2VfZnJvbV9tZW1iZXIoIE5ETkJPT1NUX1BQX0VOVU1fQklOQVJZX1BBUkFNUyhuLCBULCB4KSApICBcCi0gICAgICAgIDogbWVtYmVyKCBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhuLCB4KSApICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAge30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIC8qKi8KLQotCi1uYW1lc3BhY2UgbmRuYm9vc3QKLXsKLQotLy8gIEJhc2UtZnJvbS1tZW1iZXIgY2xhc3MgdGVtcGxhdGUgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLy8KLQotLy8gSGVscGVyIHRvIGluaXRpYWxpemUgYSBiYXNlIG9iamVjdCBzbyBhIGRlcml2ZWQgY2xhc3MgY2FuIHVzZSB0aGlzCi0vLyBvYmplY3QgaW4gdGhlIGluaXRpYWxpemF0aW9uIG9mIGFub3RoZXIgYmFzZSBjbGFzcy4gIFVzZWQgYnkKLS8vIERpZXRtYXIgS3VlaGwgZnJvbSBpZGVhcyBieSBSb24gS2xhdGNobyB0byBzb2x2ZSB0aGUgcHJvYmxlbSBvZiBhCi0vLyBiYXNlIGNsYXNzIG5lZWRpbmcgdG8gYmUgaW5pdGlhbGl6ZWQgYnkgYSBtZW1iZXIuCi0KLS8vIENvbnRyaWJ1dGVkIGJ5IERhcnlsZSBXYWxrZXIKLQotdGVtcGxhdGUgPCB0eXBlbmFtZSBNZW1iZXJUeXBlLCBpbnQgVW5pcXVlSUQgPSAwID4KLWNsYXNzIGJhc2VfZnJvbV9tZW1iZXIKLXsKLXByb3RlY3RlZDoKLSAgICBNZW1iZXJUeXBlICBtZW1iZXI7Ci0KLSAgICBiYXNlX2Zyb21fbWVtYmVyKCkKLSAgICAgICAgOiBtZW1iZXIoKQotICAgICAgICB7fQotCi0gICAgTkROQk9PU1RfUFBfUkVQRUFUX0ZST01fVE8oIDEsIE5ETkJPT1NUX1BQX0lOQyhORE5CT09TVF9CQVNFX0ZST01fTUVNQkVSX01BWF9BUklUWSksCi0gICAgIE5ETkJPT1NUX1BSSVZBVEVfQ1RSX0RFRiwgXyApCi0KLX07ICAvLyBuZG5ib29zdDo6YmFzZV9mcm9tX21lbWJlcgotCi19ICAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotCi0vLyBVbmRvIGFueSBwcml2YXRlIG1hY3JvcwotI3VuZGVmIE5ETkJPT1NUX1BSSVZBVEVfQ1RSX0RFRgotCi0KLSNlbmRpZiAgLy8gTkROQk9PU1RfVVRJTElUWV9CQVNFX0ZST01fTUVNQkVSX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC91dGlsaXR5L2JpbmFyeS5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3V0aWxpdHkvYmluYXJ5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTg0MWFmYS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3V0aWxpdHkvYmluYXJ5LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDcwOCArMCwwIEBACi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gICAgQ29weXJpZ2h0IChjKSAyMDA1IE1hdHRoZXcgQ2FsYWJyZXNlCi0KLSAgICBVc2UsIG1vZGlmaWNhdGlvbiBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCi0gICAgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLSAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwotCi0jaWZuZGVmIE5ETkJPT1NUX1VUSUxJVFlfQklOQVJZX0hQUAotI2RlZmluZSBORE5CT09TVF9VVElMSVRZX0JJTkFSWV9IUFAKLQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0gICAgQmluYXJ5IExpdGVyYWwgVXRpbGl0eQotICAgIF9fX19fX19fX19fX19fX19fX19fX18KLQotCi0gICAgVGhlIGZvbGxvd2luZyBjb2RlIHdvcmtzIGJ5IGNvbnZlcnRpbmcgdGhlIGlucHV0IGJpdCBwYXR0ZXJuIGludG8gYQotICAgIEJvb3N0LlByZXByb2Nlc3NvciBzZXF1ZW5jZSwgdGhlbiBjb252ZXJ0aW5nIGdyb3VwaW5ncyBvZiAzIGJpdHMgZWFjaCBpbnRvCi0gICAgdGhlIGNvcnJlc3BvbmRpbmcgb2N0YWwgZGlnaXQsIGFuZCBmaW5hbGx5IGNvbmNhdGVuYXRpbmcgYWxsIG9mIHRoZSBkaWdpdHMKLSAgICB0b2dldGhlciBhbG9uZyB3aXRoIGEgbGVhZGluZyB6ZXJvLiBUaGlzIHlpZWxkcyBhIHN0YW5kYXJkIG9jdGFsIGxpdGVyYWwKLSAgICB3aXRoIHRoZSBkZXNpcmVkIHZhbHVlIGFzIHNwZWNpZmllZCBpbiBiaXRzLgotCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvZGVkdWNlX2QuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9mYWNpbGl0aWVzL2lkZW50aXR5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3Ivc2VxL2NhdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS90cmFuc2Zvcm0uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9hcml0aG1ldGljL21vZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3NlcS9zaXplLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvZmFjaWxpdGllcy9lbXB0eS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL2NvbnRyb2wvd2hpbGUuaHBwPgotCi0jZGVmaW5lIE5ETkJPT1NUX0JJTkFSWSggYml0X2dyb3VwaW5ncyApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBORE5CT09TVF9CSU5BUllfTElURVJBTF9EKCBORE5CT09TVF9QUF9ERURVQ0VfRCgpLCBiaXRfZ3JvdXBpbmdzICkgCi0KLSNkZWZpbmUgTkROQk9PU1RfQklOQVJZX1UoIGJpdF9ncm91cGluZ3MgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIE5ETkJPT1NUX1NVRkZJWEVEX0JJTkFSWV9MSVRFUkFMKCBiaXRfZ3JvdXBpbmdzLCBVICkgCi0KLSNkZWZpbmUgTkROQk9PU1RfQklOQVJZX0woIGJpdF9ncm91cGluZ3MgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIE5ETkJPT1NUX1NVRkZJWEVEX0JJTkFSWV9MSVRFUkFMKCBiaXRfZ3JvdXBpbmdzLCBMICkgCi0KLSNkZWZpbmUgTkROQk9PU1RfQklOQVJZX1VMKCBiaXRfZ3JvdXBpbmdzICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIE5ETkJPT1NUX1NVRkZJWEVEX0JJTkFSWV9MSVRFUkFMKCBiaXRfZ3JvdXBpbmdzLCBVTCApIAotCi0jZGVmaW5lIE5ETkJPT1NUX0JJTkFSWV9MVSggYml0X2dyb3VwaW5ncyApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBORE5CT09TVF9TVUZGSVhFRF9CSU5BUllfTElURVJBTCggYml0X2dyb3VwaW5ncywgTFUgKSAKLQotI2RlZmluZSBORE5CT09TVF9CSU5BUllfTEwoIGJpdF9ncm91cGluZ3MgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgTkROQk9PU1RfU1VGRklYRURfQklOQVJZX0xJVEVSQUwoIGJpdF9ncm91cGluZ3MsIExMICkgCi0KLSNkZWZpbmUgTkROQk9PU1RfQklOQVJZX1VMTCggYml0X2dyb3VwaW5ncyApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIE5ETkJPT1NUX1NVRkZJWEVEX0JJTkFSWV9MSVRFUkFMKCBiaXRfZ3JvdXBpbmdzLCBVTEwgKSAKLQotI2RlZmluZSBORE5CT09TVF9CSU5BUllfTExVKCBiaXRfZ3JvdXBpbmdzICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgTkROQk9PU1RfU1VGRklYRURfQklOQVJZX0xJVEVSQUwoIGJpdF9ncm91cGluZ3MsIExMVSApIAotCi0jZGVmaW5lIE5ETkJPT1NUX1NVRkZJWEVEX0JJTkFSWV9MSVRFUkFMKCBiaXRfZ3JvdXBpbmdzLCBzdWZmaXggKSAgICAgICAgICAgICAgICAgXAotICBORE5CT09TVF9TVUZGSVhFRF9CSU5BUllfTElURVJBTF9EKCBORE5CT09TVF9QUF9ERURVQ0VfRCgpLCBiaXRfZ3JvdXBpbmdzLCBzdWZmaXggKSAKLQotI2RlZmluZSBORE5CT09TVF9TVUZGSVhFRF9CSU5BUllfTElURVJBTF9EKCBkLCBiaXRfZ3JvdXBpbmdzLCBzdWZmaXggKSAgICAgICAgICAgIFwKLSAgTkROQk9PU1RfUFBfQ0FUKCBORE5CT09TVF9CSU5BUllfTElURVJBTF9EKCBkLCBiaXRfZ3JvdXBpbmdzICksIHN1ZmZpeCApIAotCi0jZGVmaW5lIE5ETkJPT1NUX0JJTkFSWV9MSVRFUkFMX0QoIGQsIGJpdF9ncm91cGluZ3MgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBORE5CT09TVF9QUF9TRVFfQ0FUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgKCAoMCkgTkROQk9PU1RfREVUQUlMX0NSRUFURV9CSU5BUllfTElURVJBTF9PQ1RBTF9TRVFVRU5DRSggZCwgYml0X2dyb3VwaW5ncyApICBcCi0gICkgCi0KLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0NSRUFURV9CSU5BUllfTElURVJBTF9PQ1RBTF9TRVFVRU5DRSggZCwgYml0X2dyb3VwaW5ncyApICBcCi0gIE5ETkJPT1NUX1BQX1NFUV9UUkFOU0ZPUk0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAoIE5ETkJPT1NUX0RFVEFJTF9UUklQTEVfVE9fT0NUQUxfT1BFUkFUSU9OICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgLCBORE5CT09TVF9QUF9OSUwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICwgTkROQk9PU1RfUFBfSURFTlRJVFkoIE5ETkJPT1NUX0RFVEFJTF9DT05WRVJUX0JJVF9TRVFVRU5DRV9UT19UUklQTEVfU0VRVUVOQ0UgKSgpXAotICAgICggTkROQk9PU1RfREVUQUlMX0NPTVBMRVRFX1RSSVBMRV9TRVFVRU5DRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgLCBORE5CT09TVF9ERVRBSUxfQ1JFQVRFX0JJTkFSWV9MSVRFUkFMX0JJVF9TRVFVRU5DRSggZCwgYml0X2dyb3VwaW5ncyApICAgIFwKLSAgICAgICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICApIAotCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9DT05WRVJUX0JJVF9TRVFVRU5DRV9UT19UUklQTEVfU0VRVUVOQ0UoIGJpdF9zZXF1ZW5jZSApICAgXAotICBORE5CT09TVF9QUF9DQVQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgKCBORE5CT09TVF9ERVRBSUxfQ09OVkVSVF9CSVRfU0VRVUVOQ0VfVE9fUEFSRU5USEVUSUNfVFVQTEVfMSBiaXRfc2VxdWVuY2UgICAgICBcCi0gICwgRU5EX0JJVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICApIAotCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSVRTX1BFUl9PQ1RJVCAzCi0KLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0NPTVBMRVRFX1RSSVBMRV9TRVFVRU5DRSggZCwgaW5jb21wbGV0ZV9uaWJibGVfc2VxdWVuY2UgKSBcCi0gIE5ETkJPT1NUX1BQX0NBVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAoIE5ETkJPT1NUX0RFVEFJTF9DUkVBVEVfVFJJUExFX0NPTVBMRVRJT05fU0VRVUVOQ0VfICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgLCBORE5CT09TVF9QUF9NT0RfRCggZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAsIE5ETkJPT1NUX1BQX1NFUV9TSVpFKCBpbmNvbXBsZXRlX25pYmJsZV9zZXF1ZW5jZSApICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgLCBORE5CT09TVF9ERVRBSUxfQklUU19QRVJfT0NUSVQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICBpbmNvbXBsZXRlX25pYmJsZV9zZXF1ZW5jZSAKLQotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfRklYRURfQ09NUEwoIGJpdCApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgTkROQk9PU1RfUFBfQ0FUKCBORE5CT09TVF9ERVRBSUxfRklYRURfQ09NUExfLCBiaXQgKQotCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9GSVhFRF9DT01QTF8wIDEgCi0KLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0ZJWEVEX0NPTVBMXzEgMCAKLQotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQ1JFQVRFX0JJTkFSWV9MSVRFUkFMX0JJVF9TRVFVRU5DRSggZCwgYml0X2dyb3VwaW5ncyApICAgIFwKLSAgTkROQk9PU1RfUFBfRU1QVFkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIE5ETkJPT1NUX1BQX0NBVCggTkROQk9PU1RfUFBfV0hJTEVfLCBkICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAoIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9QUkVESUNBVEUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgLCBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfT1BFUkFUSU9OICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICwgYml0X2dyb3VwaW5ncyAoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICApIAotCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9QUkVESUNBVEUoIGQsIHN0YXRlICkgICAgICAgICAgICAgICAgICAgICAgXAotICBORE5CT09TVF9ERVRBSUxfRklYRURfQ09NUEwoIE5ETkJPT1NUX0RFVEFJTF9JU19OVUxMQVJZX0FSR1MoIHN0YXRlICkgKSAKLQotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfT1BFUkFUSU9OKCBkLCBzdGF0ZSApICAgICAgICAgICAgICAgICAgICAgIFwKLSAgTkROQk9PU1RfREVUQUlMX1NQTElUX0FORF9TV0FQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICggTkROQk9PU1RfUFBfQ0FUKCBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8sIHN0YXRlICkgKSAKLQotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfVFJJUExFX1RPX09DVEFMX09QRVJBVElPTiggcywgZHVtbXlfcGFyYW0sIHR1cGxlICkgICAgICAgIFwKLSAgTkROQk9PU1RfREVUQUlMX1RFUk5BUllfVFJJUExFX1RPX09DVEFMIHR1cGxlIAotCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9URVJOQVJZX1RSSVBMRV9UT19PQ1RBTCggYml0MiwgYml0MSwgYml0MCApICAgICAgICAgICAgICAgXAotICBORE5CT09TVF9ERVRBSUxfVFJJUExFX1RPX09DVEFMXyAjIyBiaXQyICMjIGJpdDEgIyMgYml0MCAKLQotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQ1JFQVRFX1RSSVBMRV9DT01QTEVUSU9OX1NFUVVFTkNFXzEgKDApKDApCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9DUkVBVEVfVFJJUExFX0NPTVBMRVRJT05fU0VRVUVOQ0VfMiAoMCkKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0NSRUFURV9UUklQTEVfQ09NUExFVElPTl9TRVFVRU5DRV8wICAKLQotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQ09OVkVSVF9CSVRfU0VRVUVOQ0VfVE9fUEFSRU5USEVUSUNfVFVQTEVfMUVORF9CSVQgIAotCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9DT05WRVJUX0JJVF9TRVFVRU5DRV9UT19QQVJFTlRIRVRJQ19UVVBMRV8xKCBiaXQgKSAgICAgICAgXAotICAoICggYml0LCBORE5CT09TVF9ERVRBSUxfQ09OVkVSVF9CSVRfU0VRVUVOQ0VfVE9fUEFSRU5USEVUSUNfVFVQTEVfMiAKLQotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQ09OVkVSVF9CSVRfU0VRVUVOQ0VfVE9fUEFSRU5USEVUSUNfVFVQTEVfMiggYml0ICkgICAgICAgIFwKLSAgYml0LCBORE5CT09TVF9ERVRBSUxfQ09OVkVSVF9CSVRfU0VRVUVOQ0VfVE9fUEFSRU5USEVUSUNfVFVQTEVfMyAKLQotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQ09OVkVSVF9CSVRfU0VRVUVOQ0VfVE9fUEFSRU5USEVUSUNfVFVQTEVfMyggYml0ICkgICAgICAgIFwKLSAgYml0ICkgKSBORE5CT09TVF9ERVRBSUxfQ09OVkVSVF9CSVRfU0VRVUVOQ0VfVE9fUEFSRU5USEVUSUNfVFVQTEVfMSAKLQotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfU1BMSVRfQU5EX1NXQVAoIHBhcmFtcyApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgTkROQk9PU1RfUFBfSURFTlRJVFkoIE5ETkJPT1NUX0RFVEFJTF9TUExJVF9BTkRfU1dBUF9QQVJBTVMgKSgpKCBwYXJhbXMgKQotCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9TUExJVF9BTkRfU1dBUF9QQVJBTVMoIGZpcnN0X3BhcmFtLCBzZWNvbmRfcGFyYW0gKSAgICAgICAgXAotICBzZWNvbmRfcGFyYW0gZmlyc3RfcGFyYW0gCi0KLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0xFRlRfT0ZfQ09NTUEoIHBhcmFtcyApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIE5ETkJPT1NUX1BQX0lERU5USVRZKCBORE5CT09TVF9ERVRBSUxfRklSU1RfTUFDUk9fUEFSQU0gKSgpKCBwYXJhbXMgKSAKLQotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfRklSU1RfTUFDUk9fUEFSQU0oIGZpcnN0X3BhcmFtLCBzZWNvbmRfcGFyYW0gKSAgICAgICAgICAgIFwKLSAgZmlyc3RfcGFyYW0gCi0KLS8qIEJlZ2luIGRlcml2ZWQgY29uY2VwdHMgZnJvbSBDaGFvcyBieSBQYXVsIE1lbnNvbmlkZXMgKi8KLQotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfSVNfTlVMTEFSWV9BUkdTKCBwYXJhbSApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgTkROQk9PU1RfREVUQUlMX0xFRlRfT0ZfQ09NTUEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICggTkROQk9PU1RfUFBfQ0FUKCBORE5CT09TVF9ERVRBSUxfSVNfTlVMTEFSWV9BUkdTX1JfICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICwgTkROQk9PU1RfREVUQUlMX0lTX05VTExBUllfQVJHU19DIHBhcmFtICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICkgCi0KLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0lTX05VTExBUllfQVJHU19DKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIDEgCi0KLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0lTX05VTExBUllfQVJHU19SXzEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIDEsIE5ETkJPT1NUX1BQX05JTCAKLQotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfSVNfTlVMTEFSWV9BUkdTX1JfTkROQk9PU1RfREVUQUlMX0lTX05VTExBUllfQVJHU19DICAgICAgICAgIFwKLSAgMCwgTkROQk9PU1RfUFBfTklMIAotCi0vKiBFbmQgZGVyaXZlZCBjb25jZXB0cyBmcm9tIENoYW9zIGJ5IFBhdWwgTWVuc29uaWRlcyAqLwotCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9UUklQTEVfVE9fT0NUQUxfMDAwIDAgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9UUklQTEVfVE9fT0NUQUxfMDAxIDEgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9UUklQTEVfVE9fT0NUQUxfMDEwIDIgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9UUklQTEVfVE9fT0NUQUxfMDExIDMgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9UUklQTEVfVE9fT0NUQUxfMTAwIDQgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9UUklQTEVfVE9fT0NUQUxfMTAxIDUgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9UUklQTEVfVE9fT0NUQUxfMTEwIDYgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9UUklQTEVfVE9fT0NUQUxfMTExIDcgCi0KLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMCAoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xICgxKSwgCi0KLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAgKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEgKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAgKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEgKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAgKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEgKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAgKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEgKDEpKDEpLCAKLQotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDAgKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxICgwKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMCAoMCkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTEgKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwICgxKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMSAoMSkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTAgKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExICgxKSgxKSgxKSwgCi0KLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMCAoMCkoMCkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDAxICgwKSgwKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMTAgKDApKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMSAoMCkoMCkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTAwICgwKSgxKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMDEgKDApKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMCAoMCkoMSkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTExICgwKSgxKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMDAgKDEpKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMSAoMSkoMCkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDEwICgxKSgwKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMTEgKDEpKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMCAoMSkoMSkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTAxICgxKSgxKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMTAgKDEpKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMSAoMSkoMSkoMSkoMSksIAotCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMDAwICgwKSgwKSgwKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMDAxICgwKSgwKSgwKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMDEwICgwKSgwKSgwKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMDExICgwKSgwKSgwKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMTAwICgwKSgwKSgxKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMTAxICgwKSgwKSgxKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMTEwICgwKSgwKSgxKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMTExICgwKSgwKSgxKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMDAwICgwKSgxKSgwKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMDAxICgwKSgxKSgwKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMDEwICgwKSgxKSgwKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMDExICgwKSgxKSgwKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMTAwICgwKSgxKSgxKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMTAxICgwKSgxKSgxKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMTEwICgwKSgxKSgxKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMTExICgwKSgxKSgxKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMDAwICgxKSgwKSgwKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMDAxICgxKSgwKSgwKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMDEwICgxKSgwKSgwKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMDExICgxKSgwKSgwKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMTAwICgxKSgwKSgxKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMTAxICgxKSgwKSgxKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMTEwICgxKSgwKSgxKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMTExICgxKSgwKSgxKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMDAwICgxKSgxKSgwKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMDAxICgxKSgxKSgwKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMDEwICgxKSgxKSgwKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMDExICgxKSgxKSgwKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMTAwICgxKSgxKSgxKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMTAxICgxKSgxKSgxKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMTEwICgxKSgxKSgxKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMTExICgxKSgxKSgxKSgxKSgxKSwgCi0KLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMDAwICgwKSgwKSgwKSgwKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMDAwMSAoMCkoMCkoMCkoMCkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDAwMTAgKDApKDApKDApKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMDExICgwKSgwKSgwKSgwKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMDEwMCAoMCkoMCkoMCkoMSkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDAxMDEgKDApKDApKDApKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMTEwICgwKSgwKSgwKSgxKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMDExMSAoMCkoMCkoMCkoMSkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDEwMDAgKDApKDApKDEpKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMDAxICgwKSgwKSgxKSgwKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMTAxMCAoMCkoMCkoMSkoMCkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDEwMTEgKDApKDApKDEpKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMTAwICgwKSgwKSgxKSgxKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMTEwMSAoMCkoMCkoMSkoMSkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDExMTAgKDApKDApKDEpKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMTExICgwKSgwKSgxKSgxKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMDAwMCAoMCkoMSkoMCkoMCkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTAwMDEgKDApKDEpKDApKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMDEwICgwKSgxKSgwKSgwKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMDAxMSAoMCkoMSkoMCkoMCkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTAxMDAgKDApKDEpKDApKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMTAxICgwKSgxKSgwKSgxKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMDExMCAoMCkoMSkoMCkoMSkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTAxMTEgKDApKDEpKDApKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMDAwICgwKSgxKSgxKSgwKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMTAwMSAoMCkoMSkoMSkoMCkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTEwMTAgKDApKDEpKDEpKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMDExICgwKSgxKSgxKSgwKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMTEwMCAoMCkoMSkoMSkoMSkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTExMDEgKDApKDEpKDEpKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMTEwICgwKSgxKSgxKSgxKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMTExMSAoMCkoMSkoMSkoMSkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDAwMDAgKDEpKDApKDApKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMDAxICgxKSgwKSgwKSgwKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMDAxMCAoMSkoMCkoMCkoMCkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDAwMTEgKDEpKDApKDApKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMTAwICgxKSgwKSgwKSgxKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMDEwMSAoMSkoMCkoMCkoMSkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDAxMTAgKDEpKDApKDApKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMTExICgxKSgwKSgwKSgxKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMTAwMCAoMSkoMCkoMSkoMCkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDEwMDEgKDEpKDApKDEpKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMDEwICgxKSgwKSgxKSgwKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMTAxMSAoMSkoMCkoMSkoMCkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDExMDAgKDEpKDApKDEpKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMTAxICgxKSgwKSgxKSgxKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMTExMCAoMSkoMCkoMSkoMSkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDExMTEgKDEpKDApKDEpKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMDAwICgxKSgxKSgwKSgwKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMDAwMSAoMSkoMSkoMCkoMCkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTAwMTAgKDEpKDEpKDApKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMDExICgxKSgxKSgwKSgwKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMDEwMCAoMSkoMSkoMCkoMSkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTAxMDEgKDEpKDEpKDApKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMTEwICgxKSgxKSgwKSgxKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMDExMSAoMSkoMSkoMCkoMSkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTEwMDAgKDEpKDEpKDEpKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMDAxICgxKSgxKSgxKSgwKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMTAxMCAoMSkoMSkoMSkoMCkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTEwMTEgKDEpKDEpKDEpKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMTAwICgxKSgxKSgxKSgxKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMTEwMSAoMSkoMSkoMSkoMSkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTExMTAgKDEpKDEpKDEpKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMTExICgxKSgxKSgxKSgxKSgxKSgxKSwgCi0KLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMDAwMCAoMCkoMCkoMCkoMCkoMCkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDAwMDAxICgwKSgwKSgwKSgwKSgwKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMDAwMTAgKDApKDApKDApKDApKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMDAxMSAoMCkoMCkoMCkoMCkoMCkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDAwMTAwICgwKSgwKSgwKSgwKSgxKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMDAxMDEgKDApKDApKDApKDApKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMDExMCAoMCkoMCkoMCkoMCkoMSkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDAwMTExICgwKSgwKSgwKSgwKSgxKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMDEwMDAgKDApKDApKDApKDEpKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMTAwMSAoMCkoMCkoMCkoMSkoMCkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDAxMDEwICgwKSgwKSgwKSgxKSgwKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMDEwMTEgKDApKDApKDApKDEpKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMTEwMCAoMCkoMCkoMCkoMSkoMSkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDAxMTAxICgwKSgwKSgwKSgxKSgxKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMDExMTAgKDApKDApKDApKDEpKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMTExMSAoMCkoMCkoMCkoMSkoMSkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDEwMDAwICgwKSgwKSgxKSgwKSgwKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMTAwMDEgKDApKDApKDEpKDApKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMDAxMCAoMCkoMCkoMSkoMCkoMCkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDEwMDExICgwKSgwKSgxKSgwKSgwKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMTAxMDAgKDApKDApKDEpKDApKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMDEwMSAoMCkoMCkoMSkoMCkoMSkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDEwMTEwICgwKSgwKSgxKSgwKSgxKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMTAxMTEgKDApKDApKDEpKDApKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMTAwMCAoMCkoMCkoMSkoMSkoMCkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDExMDAxICgwKSgwKSgxKSgxKSgwKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMTEwMTAgKDApKDApKDEpKDEpKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMTAxMSAoMCkoMCkoMSkoMSkoMCkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDExMTAwICgwKSgwKSgxKSgxKSgxKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAwMTExMDEgKDApKDApKDEpKDEpKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMTExMCAoMCkoMCkoMSkoMSkoMSkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMDExMTExICgwKSgwKSgxKSgxKSgxKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMDAwMDAgKDApKDEpKDApKDApKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMDAwMSAoMCkoMSkoMCkoMCkoMCkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTAwMDEwICgwKSgxKSgwKSgwKSgwKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMDAwMTEgKDApKDEpKDApKDApKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMDEwMCAoMCkoMSkoMCkoMCkoMSkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTAwMTAxICgwKSgxKSgwKSgwKSgxKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMDAxMTAgKDApKDEpKDApKDApKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMDExMSAoMCkoMSkoMCkoMCkoMSkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTAxMDAwICgwKSgxKSgwKSgxKSgwKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMDEwMDEgKDApKDEpKDApKDEpKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMTAxMCAoMCkoMSkoMCkoMSkoMCkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTAxMDExICgwKSgxKSgwKSgxKSgwKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMDExMDAgKDApKDEpKDApKDEpKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMTEwMSAoMCkoMSkoMCkoMSkoMSkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTAxMTEwICgwKSgxKSgwKSgxKSgxKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMDExMTEgKDApKDEpKDApKDEpKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMDAwMCAoMCkoMSkoMSkoMCkoMCkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTEwMDAxICgwKSgxKSgxKSgwKSgwKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMTAwMTAgKDApKDEpKDEpKDApKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMDAxMSAoMCkoMSkoMSkoMCkoMCkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTEwMTAwICgwKSgxKSgxKSgwKSgxKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMTAxMDEgKDApKDEpKDEpKDApKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMDExMCAoMCkoMSkoMSkoMCkoMSkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTEwMTExICgwKSgxKSgxKSgwKSgxKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMTEwMDAgKDApKDEpKDEpKDEpKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMTAwMSAoMCkoMSkoMSkoMSkoMCkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTExMDEwICgwKSgxKSgxKSgxKSgwKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMTEwMTEgKDApKDEpKDEpKDEpKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMTEwMCAoMCkoMSkoMSkoMSkoMSkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8wMTExMTAxICgwKSgxKSgxKSgxKSgxKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzAxMTExMTAgKDApKDEpKDEpKDEpKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMTExMSAoMCkoMSkoMSkoMSkoMSkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDAwMDAwICgxKSgwKSgwKSgwKSgwKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMDAwMDEgKDEpKDApKDApKDApKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMDAxMCAoMSkoMCkoMCkoMCkoMCkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDAwMDExICgxKSgwKSgwKSgwKSgwKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMDAxMDAgKDEpKDApKDApKDApKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMDEwMSAoMSkoMCkoMCkoMCkoMSkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDAwMTEwICgxKSgwKSgwKSgwKSgxKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMDAxMTEgKDEpKDApKDApKDApKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMTAwMCAoMSkoMCkoMCkoMSkoMCkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDAxMDAxICgxKSgwKSgwKSgxKSgwKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMDEwMTAgKDEpKDApKDApKDEpKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMTAxMSAoMSkoMCkoMCkoMSkoMCkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDAxMTAwICgxKSgwKSgwKSgxKSgxKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMDExMDEgKDEpKDApKDApKDEpKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMTExMCAoMSkoMCkoMCkoMSkoMSkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDAxMTExICgxKSgwKSgwKSgxKSgxKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMTAwMDAgKDEpKDApKDEpKDApKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMDAwMSAoMSkoMCkoMSkoMCkoMCkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDEwMDEwICgxKSgwKSgxKSgwKSgwKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMTAwMTEgKDEpKDApKDEpKDApKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMDEwMCAoMSkoMCkoMSkoMCkoMSkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDEwMTAxICgxKSgwKSgxKSgwKSgxKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMTAxMTAgKDEpKDApKDEpKDApKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMDExMSAoMSkoMCkoMSkoMCkoMSkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDExMDAwICgxKSgwKSgxKSgxKSgwKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMTEwMDEgKDEpKDApKDEpKDEpKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMTAxMCAoMSkoMCkoMSkoMSkoMCkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDExMDExICgxKSgwKSgxKSgxKSgwKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMTExMDAgKDEpKDApKDEpKDEpKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMTEwMSAoMSkoMCkoMSkoMSkoMSkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMDExMTEwICgxKSgwKSgxKSgxKSgxKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzEwMTExMTEgKDEpKDApKDEpKDEpKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMDAwMCAoMSkoMSkoMCkoMCkoMCkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTAwMDAxICgxKSgxKSgwKSgwKSgwKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMDAwMTAgKDEpKDEpKDApKDApKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMDAxMSAoMSkoMSkoMCkoMCkoMCkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTAwMTAwICgxKSgxKSgwKSgwKSgxKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMDAxMDEgKDEpKDEpKDApKDApKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMDExMCAoMSkoMSkoMCkoMCkoMSkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTAwMTExICgxKSgxKSgwKSgwKSgxKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMDEwMDAgKDEpKDEpKDApKDEpKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMTAwMSAoMSkoMSkoMCkoMSkoMCkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTAxMDEwICgxKSgxKSgwKSgxKSgwKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMDEwMTEgKDEpKDEpKDApKDEpKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMTEwMCAoMSkoMSkoMCkoMSkoMSkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTAxMTAxICgxKSgxKSgwKSgxKSgxKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMDExMTAgKDEpKDEpKDApKDEpKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMTExMSAoMSkoMSkoMCkoMSkoMSkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTEwMDAwICgxKSgxKSgxKSgwKSgwKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMTAwMDEgKDEpKDEpKDEpKDApKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMDAxMCAoMSkoMSkoMSkoMCkoMCkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTEwMDExICgxKSgxKSgxKSgwKSgwKSgxKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMTAxMDAgKDEpKDEpKDEpKDApKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMDEwMSAoMSkoMSkoMSkoMCkoMSkoMCkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTEwMTEwICgxKSgxKSgxKSgwKSgxKSgxKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMTAxMTEgKDEpKDEpKDEpKDApKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMTAwMCAoMSkoMSkoMSkoMSkoMCkoMCkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTExMDAxICgxKSgxKSgxKSgxKSgwKSgwKSgxKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMTEwMTAgKDEpKDEpKDEpKDEpKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMTAxMSAoMSkoMSkoMSkoMSkoMCkoMSkoMSksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTExMTAwICgxKSgxKSgxKSgxKSgxKSgwKSgwKSwgCi0jZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9CSU5BUllfTElURVJBTF9FTEVNRU5UXzExMTExMDEgKDEpKDEpKDEpKDEpKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMTExMCAoMSkoMSkoMSkoMSkoMSkoMSkoMCksIAotI2RlZmluZSBORE5CT09TVF9ERVRBSUxfQklOQVJZX0xJVEVSQUxfRUxFTUVOVF8xMTExMTExICgxKSgxKSgxKSgxKSgxKSgxKSgxKSwgCi0KLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMDAwMDAgKDApKDApKDApKDApKDApKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMDAwMDEgKDApKDApKDApKDApKDApKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMDAwMTAgKDApKDApKDApKDApKDApKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMDAwMTEgKDApKDApKDApKDApKDApKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMDAxMDAgKDApKDApKDApKDApKDApKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMDAxMDEgKDApKDApKDApKDApKDApKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMDAxMTAgKDApKDApKDApKDApKDApKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMDAxMTEgKDApKDApKDApKDApKDApKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMDEwMDAgKDApKDApKDApKDApKDEpKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMDEwMDEgKDApKDApKDApKDApKDEpKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMDEwMTAgKDApKDApKDApKDApKDEpKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMDEwMTEgKDApKDApKDApKDApKDEpKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMDExMDAgKDApKDApKDApKDApKDEpKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMDExMDEgKDApKDApKDApKDApKDEpKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMDExMTAgKDApKDApKDApKDApKDEpKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMDExMTEgKDApKDApKDApKDApKDEpKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMTAwMDAgKDApKDApKDApKDEpKDApKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMTAwMDEgKDApKDApKDApKDEpKDApKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMTAwMTAgKDApKDApKDApKDEpKDApKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMTAwMTEgKDApKDApKDApKDEpKDApKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMTAxMDAgKDApKDApKDApKDEpKDApKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMTAxMDEgKDApKDApKDApKDEpKDApKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMTAxMTAgKDApKDApKDApKDEpKDApKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMTAxMTEgKDApKDApKDApKDEpKDApKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMTEwMDAgKDApKDApKDApKDEpKDEpKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMTEwMDEgKDApKDApKDApKDEpKDEpKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMTEwMTAgKDApKDApKDApKDEpKDEpKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMTEwMTEgKDApKDApKDApKDEpKDEpKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMTExMDAgKDApKDApKDApKDEpKDEpKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMTExMDEgKDApKDApKDApKDEpKDEpKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMTExMTAgKDApKDApKDApKDEpKDEpKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAwMTExMTEgKDApKDApKDApKDEpKDEpKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMDAwMDAgKDApKDApKDEpKDApKDApKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMDAwMDEgKDApKDApKDEpKDApKDApKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMDAwMTAgKDApKDApKDEpKDApKDApKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMDAwMTEgKDApKDApKDEpKDApKDApKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMDAxMDAgKDApKDApKDEpKDApKDApKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMDAxMDEgKDApKDApKDEpKDApKDApKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMDAxMTAgKDApKDApKDEpKDApKDApKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMDAxMTEgKDApKDApKDEpKDApKDApKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMDEwMDAgKDApKDApKDEpKDApKDEpKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMDEwMDEgKDApKDApKDEpKDApKDEpKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMDEwMTAgKDApKDApKDEpKDApKDEpKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMDEwMTEgKDApKDApKDEpKDApKDEpKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMDExMDAgKDApKDApKDEpKDApKDEpKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMDExMDEgKDApKDApKDEpKDApKDEpKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMDExMTAgKDApKDApKDEpKDApKDEpKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMDExMTEgKDApKDApKDEpKDApKDEpKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMTAwMDAgKDApKDApKDEpKDEpKDApKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMTAwMDEgKDApKDApKDEpKDEpKDApKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMTAwMTAgKDApKDApKDEpKDEpKDApKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMTAwMTEgKDApKDApKDEpKDEpKDApKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMTAxMDAgKDApKDApKDEpKDEpKDApKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMTAxMDEgKDApKDApKDEpKDEpKDApKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMTAxMTAgKDApKDApKDEpKDEpKDApKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMTAxMTEgKDApKDApKDEpKDEpKDApKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMTEwMDAgKDApKDApKDEpKDEpKDEpKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMTEwMDEgKDApKDApKDEpKDEpKDEpKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMTEwMTAgKDApKDApKDEpKDEpKDEpKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMTEwMTEgKDApKDApKDEpKDEpKDEpKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMTExMDAgKDApKDApKDEpKDEpKDEpKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMTExMDEgKDApKDApKDEpKDEpKDEpKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMTExMTAgKDApKDApKDEpKDEpKDEpKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDAxMTExMTEgKDApKDApKDEpKDEpKDEpKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMDAwMDAgKDApKDEpKDApKDApKDApKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMDAwMDEgKDApKDEpKDApKDApKDApKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMDAwMTAgKDApKDEpKDApKDApKDApKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMDAwMTEgKDApKDEpKDApKDApKDApKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMDAxMDAgKDApKDEpKDApKDApKDApKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMDAxMDEgKDApKDEpKDApKDApKDApKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMDAxMTAgKDApKDEpKDApKDApKDApKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMDAxMTEgKDApKDEpKDApKDApKDApKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMDEwMDAgKDApKDEpKDApKDApKDEpKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMDEwMDEgKDApKDEpKDApKDApKDEpKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMDEwMTAgKDApKDEpKDApKDApKDEpKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMDEwMTEgKDApKDEpKDApKDApKDEpKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMDExMDAgKDApKDEpKDApKDApKDEpKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMDExMDEgKDApKDEpKDApKDApKDEpKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMDExMTAgKDApKDEpKDApKDApKDEpKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMDExMTEgKDApKDEpKDApKDApKDEpKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMTAwMDAgKDApKDEpKDApKDEpKDApKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMTAwMDEgKDApKDEpKDApKDEpKDApKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMTAwMTAgKDApKDEpKDApKDEpKDApKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMTAwMTEgKDApKDEpKDApKDEpKDApKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMTAxMDAgKDApKDEpKDApKDEpKDApKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMTAxMDEgKDApKDEpKDApKDEpKDApKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMTAxMTAgKDApKDEpKDApKDEpKDApKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMTAxMTEgKDApKDEpKDApKDEpKDApKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMTEwMDAgKDApKDEpKDApKDEpKDEpKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMTEwMDEgKDApKDEpKDApKDEpKDEpKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMTEwMTAgKDApKDEpKDApKDEpKDEpKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMTEwMTEgKDApKDEpKDApKDEpKDEpKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMTExMDAgKDApKDEpKDApKDEpKDEpKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMTExMDEgKDApKDEpKDApKDEpKDEpKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMTExMTAgKDApKDEpKDApKDEpKDEpKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDEwMTExMTEgKDApKDEpKDApKDEpKDEpKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMDAwMDAgKDApKDEpKDEpKDApKDApKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMDAwMDEgKDApKDEpKDEpKDApKDApKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMDAwMTAgKDApKDEpKDEpKDApKDApKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMDAwMTEgKDApKDEpKDEpKDApKDApKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMDAxMDAgKDApKDEpKDEpKDApKDApKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMDAxMDEgKDApKDEpKDEpKDApKDApKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMDAxMTAgKDApKDEpKDEpKDApKDApKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMDAxMTEgKDApKDEpKDEpKDApKDApKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMDEwMDAgKDApKDEpKDEpKDApKDEpKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMDEwMDEgKDApKDEpKDEpKDApKDEpKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMDEwMTAgKDApKDEpKDEpKDApKDEpKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMDEwMTEgKDApKDEpKDEpKDApKDEpKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMDExMDAgKDApKDEpKDEpKDApKDEpKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMDExMDEgKDApKDEpKDEpKDApKDEpKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMDExMTAgKDApKDEpKDEpKDApKDEpKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMDExMTEgKDApKDEpKDEpKDApKDEpKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMTAwMDAgKDApKDEpKDEpKDEpKDApKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMTAwMDEgKDApKDEpKDEpKDEpKDApKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMTAwMTAgKDApKDEpKDEpKDEpKDApKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMTAwMTEgKDApKDEpKDEpKDEpKDApKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMTAxMDAgKDApKDEpKDEpKDEpKDApKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMTAxMDEgKDApKDEpKDEpKDEpKDApKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMTAxMTAgKDApKDEpKDEpKDEpKDApKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMTAxMTEgKDApKDEpKDEpKDEpKDApKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMTEwMDAgKDApKDEpKDEpKDEpKDEpKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMTEwMDEgKDApKDEpKDEpKDEpKDEpKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMTEwMTAgKDApKDEpKDEpKDEpKDEpKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMTEwMTEgKDApKDEpKDEpKDEpKDEpKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMTExMDAgKDApKDEpKDEpKDEpKDEpKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMTExMDEgKDApKDEpKDEpKDEpKDEpKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMTExMTAgKDApKDEpKDEpKDEpKDEpKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMDExMTExMTEgKDApKDEpKDEpKDEpKDEpKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMDAwMDAgKDEpKDApKDApKDApKDApKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMDAwMDEgKDEpKDApKDApKDApKDApKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMDAwMTAgKDEpKDApKDApKDApKDApKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMDAwMTEgKDEpKDApKDApKDApKDApKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMDAxMDAgKDEpKDApKDApKDApKDApKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMDAxMDEgKDEpKDApKDApKDApKDApKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMDAxMTAgKDEpKDApKDApKDApKDApKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMDAxMTEgKDEpKDApKDApKDApKDApKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMDEwMDAgKDEpKDApKDApKDApKDEpKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMDEwMDEgKDEpKDApKDApKDApKDEpKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMDEwMTAgKDEpKDApKDApKDApKDEpKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMDEwMTEgKDEpKDApKDApKDApKDEpKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMDExMDAgKDEpKDApKDApKDApKDEpKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMDExMDEgKDEpKDApKDApKDApKDEpKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMDExMTAgKDEpKDApKDApKDApKDEpKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMDExMTEgKDEpKDApKDApKDApKDEpKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMTAwMDAgKDEpKDApKDApKDEpKDApKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMTAwMDEgKDEpKDApKDApKDEpKDApKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMTAwMTAgKDEpKDApKDApKDEpKDApKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMTAwMTEgKDEpKDApKDApKDEpKDApKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMTAxMDAgKDEpKDApKDApKDEpKDApKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMTAxMDEgKDEpKDApKDApKDEpKDApKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMTAxMTAgKDEpKDApKDApKDEpKDApKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMTAxMTEgKDEpKDApKDApKDEpKDApKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMTEwMDAgKDEpKDApKDApKDEpKDEpKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMTEwMDEgKDEpKDApKDApKDEpKDEpKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMTEwMTAgKDEpKDApKDApKDEpKDEpKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMTEwMTEgKDEpKDApKDApKDEpKDEpKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMTExMDAgKDEpKDApKDApKDEpKDEpKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMTExMDEgKDEpKDApKDApKDEpKDEpKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMTExMTAgKDEpKDApKDApKDEpKDEpKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAwMTExMTEgKDEpKDApKDApKDEpKDEpKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMDAwMDAgKDEpKDApKDEpKDApKDApKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMDAwMDEgKDEpKDApKDEpKDApKDApKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMDAwMTAgKDEpKDApKDEpKDApKDApKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMDAwMTEgKDEpKDApKDEpKDApKDApKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMDAxMDAgKDEpKDApKDEpKDApKDApKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMDAxMDEgKDEpKDApKDEpKDApKDApKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMDAxMTAgKDEpKDApKDEpKDApKDApKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMDAxMTEgKDEpKDApKDEpKDApKDApKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMDEwMDAgKDEpKDApKDEpKDApKDEpKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMDEwMDEgKDEpKDApKDEpKDApKDEpKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMDEwMTAgKDEpKDApKDEpKDApKDEpKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMDEwMTEgKDEpKDApKDEpKDApKDEpKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMDExMDAgKDEpKDApKDEpKDApKDEpKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMDExMDEgKDEpKDApKDEpKDApKDEpKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMDExMTAgKDEpKDApKDEpKDApKDEpKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMDExMTEgKDEpKDApKDEpKDApKDEpKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMTAwMDAgKDEpKDApKDEpKDEpKDApKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMTAwMDEgKDEpKDApKDEpKDEpKDApKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMTAwMTAgKDEpKDApKDEpKDEpKDApKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMTAwMTEgKDEpKDApKDEpKDEpKDApKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMTAxMDAgKDEpKDApKDEpKDEpKDApKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMTAxMDEgKDEpKDApKDEpKDEpKDApKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMTAxMTAgKDEpKDApKDEpKDEpKDApKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMTAxMTEgKDEpKDApKDEpKDEpKDApKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMTEwMDAgKDEpKDApKDEpKDEpKDEpKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMTEwMDEgKDEpKDApKDEpKDEpKDEpKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMTEwMTAgKDEpKDApKDEpKDEpKDEpKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMTEwMTEgKDEpKDApKDEpKDEpKDEpKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMTExMDAgKDEpKDApKDEpKDEpKDEpKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMTExMDEgKDEpKDApKDEpKDEpKDEpKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMTExMTAgKDEpKDApKDEpKDEpKDEpKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTAxMTExMTEgKDEpKDApKDEpKDEpKDEpKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMDAwMDAgKDEpKDEpKDApKDApKDApKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMDAwMDEgKDEpKDEpKDApKDApKDApKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMDAwMTAgKDEpKDEpKDApKDApKDApKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMDAwMTEgKDEpKDEpKDApKDApKDApKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMDAxMDAgKDEpKDEpKDApKDApKDApKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMDAxMDEgKDEpKDEpKDApKDApKDApKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMDAxMTAgKDEpKDEpKDApKDApKDApKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMDAxMTEgKDEpKDEpKDApKDApKDApKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMDEwMDAgKDEpKDEpKDApKDApKDEpKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMDEwMDEgKDEpKDEpKDApKDApKDEpKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMDEwMTAgKDEpKDEpKDApKDApKDEpKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMDEwMTEgKDEpKDEpKDApKDApKDEpKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMDExMDAgKDEpKDEpKDApKDApKDEpKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMDExMDEgKDEpKDEpKDApKDApKDEpKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMDExMTAgKDEpKDEpKDApKDApKDEpKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMDExMTEgKDEpKDEpKDApKDApKDEpKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMTAwMDAgKDEpKDEpKDApKDEpKDApKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMTAwMDEgKDEpKDEpKDApKDEpKDApKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMTAwMTAgKDEpKDEpKDApKDEpKDApKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMTAwMTEgKDEpKDEpKDApKDEpKDApKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMTAxMDAgKDEpKDEpKDApKDEpKDApKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMTAxMDEgKDEpKDEpKDApKDEpKDApKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMTAxMTAgKDEpKDEpKDApKDEpKDApKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMTAxMTEgKDEpKDEpKDApKDEpKDApKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMTEwMDAgKDEpKDEpKDApKDEpKDEpKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMTEwMDEgKDEpKDEpKDApKDEpKDEpKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMTEwMTAgKDEpKDEpKDApKDEpKDEpKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMTEwMTEgKDEpKDEpKDApKDEpKDEpKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMTExMDAgKDEpKDEpKDApKDEpKDEpKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMTExMDEgKDEpKDEpKDApKDEpKDEpKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMTExMTAgKDEpKDEpKDApKDEpKDEpKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTEwMTExMTEgKDEpKDEpKDApKDEpKDEpKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMDAwMDAgKDEpKDEpKDEpKDApKDApKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMDAwMDEgKDEpKDEpKDEpKDApKDApKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMDAwMTAgKDEpKDEpKDEpKDApKDApKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMDAwMTEgKDEpKDEpKDEpKDApKDApKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMDAxMDAgKDEpKDEpKDEpKDApKDApKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMDAxMDEgKDEpKDEpKDEpKDApKDApKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMDAxMTAgKDEpKDEpKDEpKDApKDApKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMDAxMTEgKDEpKDEpKDEpKDApKDApKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMDEwMDAgKDEpKDEpKDEpKDApKDEpKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMDEwMDEgKDEpKDEpKDEpKDApKDEpKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMDEwMTAgKDEpKDEpKDEpKDApKDEpKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMDEwMTEgKDEpKDEpKDEpKDApKDEpKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMDExMDAgKDEpKDEpKDEpKDApKDEpKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMDExMDEgKDEpKDEpKDEpKDApKDEpKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMDExMTAgKDEpKDEpKDEpKDApKDEpKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMDExMTEgKDEpKDEpKDEpKDApKDEpKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMTAwMDAgKDEpKDEpKDEpKDEpKDApKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMTAwMDEgKDEpKDEpKDEpKDEpKDApKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMTAwMTAgKDEpKDEpKDEpKDEpKDApKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMTAwMTEgKDEpKDEpKDEpKDEpKDApKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMTAxMDAgKDEpKDEpKDEpKDEpKDApKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMTAxMDEgKDEpKDEpKDEpKDEpKDApKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMTAxMTAgKDEpKDEpKDEpKDEpKDApKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMTAxMTEgKDEpKDEpKDEpKDEpKDApKDEpKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMTEwMDAgKDEpKDEpKDEpKDEpKDEpKDApKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMTEwMDEgKDEpKDEpKDEpKDEpKDEpKDApKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMTEwMTAgKDEpKDEpKDEpKDEpKDEpKDApKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMTEwMTEgKDEpKDEpKDEpKDEpKDEpKDApKDEpKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMTExMDAgKDEpKDEpKDEpKDEpKDEpKDEpKDApKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMTExMDEgKDEpKDEpKDEpKDEpKDEpKDEpKDApKDEpLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMTExMTAgKDEpKDEpKDEpKDEpKDEpKDEpKDEpKDApLCAKLSNkZWZpbmUgTkROQk9PU1RfREVUQUlMX0JJTkFSWV9MSVRFUkFMX0VMRU1FTlRfMTExMTExMTEgKDEpKDEpKDEpKDEpKDEpKDEpKDEpKDEpLCAKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3V0aWxpdHkvY29tcGFyZV9wb2ludGVlcy5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3V0aWxpdHkvY29tcGFyZV9wb2ludGVlcy5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDExZjFkZGQuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC91dGlsaXR5L2NvbXBhcmVfcG9pbnRlZXMuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsNjggKzAsMCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDAzLCBGZXJuYW5kbyBMdWlzIENhY2Npb2xhIENhcmJhbGxhbC4KLS8vCi0vLyBVc2UsIG1vZGlmaWNhdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBpcyBzdWJqZWN0IHRvIHRoZSBCb29zdCBTb2Z0d2FyZQotLy8gTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLS8vCi0vLyBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9vcHRpb25hbCBmb3IgZG9jdW1lbnRhdGlvbi4KLS8vCi0vLyBZb3UgYXJlIHdlbGNvbWUgdG8gY29udGFjdCB0aGUgYXV0aG9yIGF0OgotLy8gIGZlcm5hbmRvX2NhY2Npb2xhQGhvdG1haWwuY29tCi0vLwotI2lmbmRlZiBORE5CT09TVF9VVElMSVRZX0NPTVBBUkVfUE9JTlRFRVNfMjVBR08yMDAzX0hQUAotI2RlZmluZSBORE5CT09TVF9VVElMSVRZX0NPTVBBUkVfUE9JTlRFRVNfMjVBR08yMDAzX0hQUAotCi0jaW5jbHVkZTxmdW5jdGlvbmFsPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi0vLyB0ZW1wbGF0ZTxjbGFzcyBPUD4gYm9vbCBlcXVhbF9wb2ludGVlcyhPUCBjb25zdCYgeCwgT1AgY29uc3QmIHkpOwotLy8gdGVtcGxhdGU8Y2xhc3MgT1A+IHN0cnVjdCBlcXVhbF9wb2ludGVlc190OwotLy8KLS8vIEJlaW5nIE9QIGEgbW9kZWwgb2YgT3B0aW9uYWxQb2ludGVlIChlaXRoZXIgYSBwb2ludGVyIG9yIGFuIG9wdGlvbmFsKToKLS8vCi0vLyBJZiBib3RoIHggYW5kIHkgaGF2ZSB2YWxpZCBwb2ludGVlcywgcmV0dXJucyB0aGUgcmVzdWx0IG9mICgqeCA9PSAqeSkKLS8vIElmIG9ubHkgb25lIGhhcyBhIHZhbGlkIHBvaW50ZWUsIHJldHVybnMgZmFsc2UuCi0vLyBJZiBub25lIGhhdmUgdmFsaWQgcG9pbnRlZXMsIHJldHVybnMgdHJ1ZS4KLS8vIE5vLXRocm93Ci10ZW1wbGF0ZTxjbGFzcyBPcHRpb25hbFBvaW50ZWU+Ci1pbmxpbmUKLWJvb2wgZXF1YWxfcG9pbnRlZXMgKCBPcHRpb25hbFBvaW50ZWUgY29uc3QmIHgsIE9wdGlvbmFsUG9pbnRlZSBjb25zdCYgeSApCi17Ci0gIHJldHVybiAoIXgpICE9ICgheSkgPyBmYWxzZSA6ICggIXggPyB0cnVlIDogKCp4KSA9PSAoKnkpICkgOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBPcHRpb25hbFBvaW50ZWU+Ci1zdHJ1Y3QgZXF1YWxfcG9pbnRlZXNfdCA6IHN0ZDo6YmluYXJ5X2Z1bmN0aW9uPE9wdGlvbmFsUG9pbnRlZSxPcHRpb25hbFBvaW50ZWUsYm9vbD4KLXsKLSAgYm9vbCBvcGVyYXRvcigpICggT3B0aW9uYWxQb2ludGVlIGNvbnN0JiB4LCBPcHRpb25hbFBvaW50ZWUgY29uc3QmIHkgKSBjb25zdAotICAgIHsgcmV0dXJuIGVxdWFsX3BvaW50ZWVzKHgseSkgOyB9Ci19IDsKLQotLy8gdGVtcGxhdGU8Y2xhc3MgT1A+IGJvb2wgbGVzc19wb2ludGVlcyhPUCBjb25zdCYgeCwgT1AgY29uc3QmIHkpOwotLy8gdGVtcGxhdGU8Y2xhc3MgT1A+IHN0cnVjdCBsZXNzX3BvaW50ZWVzX3Q7Ci0vLwotLy8gQmVpbmcgT1AgYSBtb2RlbCBvZiBPcHRpb25hbFBvaW50ZWUgKGVpdGhlciBhIHBvaW50ZXIgb3IgYW4gb3B0aW9uYWwpOgotLy8KLS8vIElmIHkgaGFzIG5vdCBhIHZhbGlkIHBvaW50ZWUsIHJldHVybnMgZmFsc2UuCi0vLyBFbHNlSWYgeCBoYXMgbm90IGEgdmFsaWQgcG9pbnRlZSwgcmV0dXJucyB0cnVlLgotLy8gRWxzZUlmIGJvdGggeCBhbmQgeSBoYXZlIHZhbGlkIHBvaW50ZWVzLCByZXR1cm5zIHRoZSByZXN1bHQgb2YgKCp4IDwgKnkpCi0vLyBOby10aHJvdwotdGVtcGxhdGU8Y2xhc3MgT3B0aW9uYWxQb2ludGVlPgotaW5saW5lCi1ib29sIGxlc3NfcG9pbnRlZXMgKCBPcHRpb25hbFBvaW50ZWUgY29uc3QmIHgsIE9wdGlvbmFsUG9pbnRlZSBjb25zdCYgeSApCi17Ci0gIHJldHVybiAheSA/IGZhbHNlIDogKCAheCA/IHRydWUgOiAoKngpIDwgKCp5KSApIDsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgT3B0aW9uYWxQb2ludGVlPgotc3RydWN0IGxlc3NfcG9pbnRlZXNfdCA6IHN0ZDo6YmluYXJ5X2Z1bmN0aW9uPE9wdGlvbmFsUG9pbnRlZSxPcHRpb25hbFBvaW50ZWUsYm9vbD4KLXsKLSAgYm9vbCBvcGVyYXRvcigpICggT3B0aW9uYWxQb2ludGVlIGNvbnN0JiB4LCBPcHRpb25hbFBvaW50ZWUgY29uc3QmIHkgKSBjb25zdAotICAgIHsgcmV0dXJuIGxlc3NfcG9pbnRlZXMoeCx5KSA7IH0KLX0gOwotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC91dGlsaXR5L2RlY2x2YWwuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC91dGlsaXR5L2RlY2x2YWwuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOWUxYTM1Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdXRpbGl0eS9kZWNsdmFsLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLS8vICBjb21tb25fdHlwZS5ocHAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8vCi0KLS8vICBDb3B5cmlnaHQgMjAxMCBWaWNlbnRlIEouIEJvdGV0IEVzY3JpYmEKLQotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0Ci0KLSNpZm5kZWYgTkROQk9PU1RfVFlQRV9UUkFJVFNfRVhUX0RFQ0xWQUxfX0hQUAotI2RlZmluZSBORE5CT09TVF9UWVBFX1RSQUlUU19FWFRfREVDTFZBTF9fSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX3J2YWx1ZV9yZWZlcmVuY2UuaHBwPgotLy8jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvYWRkX2x2YWx1ZV9yZWZlcmVuY2UuaHBwPgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8KLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgQysrMDMgaW1wbGVtZW50YXRpb24gb2YgICAgICAgICAgICAgICAgICAgICAgICAgIC8vCi0vLyAgICAgICAgICAgICAgICAgICAgICAgICAgV3JpdHRlbiBieSBWaWNlbnRlIEouIEJvdGV0IEVzY3JpYmEgICAgICAgICAgICAgICAvLwotLy9+IDIwLjMuNCBGdW5jdGlvbiB0ZW1wbGF0ZSBkZWNsdmFsIFtkZWNsdmFsXQotLy9+IDEgVGhlIGxpYnJhcnkgcHJvdmlkZXMgdGhlIGZ1bmN0aW9uIHRlbXBsYXRlIGRlY2x2YWwgdG8gc2ltcGxpZnkgdGhlIGRlZmluaXRpb24gb2YgZXhwcmVzc2lvbnMgd2hpY2ggb2NjdXIgYXMKLS8vfiB1bmV2YWx1YXRlZCBvcGVyYW5kcy4KLS8vfiAyIFJlbWFya3M6IElmIHRoaXMgZnVuY3Rpb24gaXMgdXNlZCwgdGhlIHByb2dyYW0gaXMgaWxsLWZvcm1lZC4KLS8vfiAzIFJlbWFya3M6IFRoZSB0ZW1wbGF0ZSBwYXJhbWV0ZXIgVCBvZiBkZWNsdmFsIG1heSBiZSBhbiBpbmNvbXBsZXRlIHR5cGUuCi0vL34gWyBFeGFtcGxlOgotCi0vL34gdGVtcGxhdGUgPGNsYXNzIFRvLCBjbGFzcyBGcm9tPgotLy9+IGRlY2x0eXBlKHN0YXRpY19jYXN0PFRvPihkZWNsdmFsPEZyb20+KCkpKSBjb252ZXJ0KEZyb20mJik7Ci0KLS8vfiBkZWNsYXJlcyBhIGZ1bmN0aW9uIHRlbXBsYXRlIGNvbnZlcnQgd2hpY2ggb25seSBwYXJ0aWNpcGF0cyBpbiBvdmVybG9hZGluZyBpZiB0aGUgdHlwZSBGcm9tIGNhbiBiZQotLy9+IGV4cGxpY2l0bHkgY29udmVydGVkIHRvIHR5cGUgVG8uIEZvciBhbm90aGVyIGV4YW1wbGUgc2VlIGNsYXNzIHRlbXBsYXRlIGNvbW1vbl90eXBlICgyMC43LjYuNikuIJdlbmQKLS8vfiBleGFtcGxlIF0KLS8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi0vLyNpZiAhZGVmaW5lZChORE5CT09TVF9OT19SVkFMVUVfUkVGRVJFTkNFUykKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICB0eXBlbmFtZSBhZGRfcnZhbHVlX3JlZmVyZW5jZTxUPjo6dHlwZSBkZWNsdmFsKCkgTkROQk9PU1RfTk9FWENFUFQ7IC8vIGFzIHVuZXZhbHVhdGVkIG9wZXJhbmQKLS8vI2Vsc2UKLS8vICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotLy8gICAgdHlwZW5hbWUgYWRkX2x2YWx1ZV9yZWZlcmVuY2U8VD46OnR5cGUgZGVjbHZhbCgpIE5ETkJPT1NUX05PRVhDRVBUOyAvLyBhcyB1bmV2YWx1YXRlZCBvcGVyYW5kCi0vLyNlbmRpZgotfSAgLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNlbmRpZiAgLy8gTkROQk9PU1RfVFlQRV9UUkFJVFNfRVhUX0RFQ0xWQUxfX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC91dGlsaXR5L2RldGFpbC9pbl9wbGFjZV9mYWN0b3J5X3ByZWZpeC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3V0aWxpdHkvZGV0YWlsL2luX3BsYWNlX2ZhY3RvcnlfcHJlZml4LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWM0YzVhYy4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3V0aWxpdHkvZGV0YWlsL2luX3BsYWNlX2ZhY3RvcnlfcHJlZml4LmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAwMywgRmVybmFuZG8gTHVpcyBDYWNjaW9sYSBDYXJiYWxsYWwuCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDcsIFRvYmlhcyBTY2h3aW5nZXIuCi0vLwotLy8gVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLS8vIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvb3B0aW9uYWwgZm9yIGRvY3VtZW50YXRpb24uCi0vLwotLy8gWW91IGFyZSB3ZWxjb21lIHRvIGNvbnRhY3QgdGhlIGF1dGhvciBhdDoKLS8vICBmZXJuYW5kb19jYWNjaW9sYUBob3RtYWlsLmNvbQotLy8KLSNpZm5kZWYgTkROQk9PU1RfVVRJTElUWV9ERVRBSUxfSU5QTEFDRV9GQUNUT1JZX1BSRUZJWF8wNEFQUjIwMDdfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1VUSUxJVFlfREVUQUlMX0lOUExBQ0VfRkFDVE9SWV9QUkVGSVhfMDRBUFIyMDA3X0hQUAotCi0jaW5jbHVkZSA8bmV3PgotI2luY2x1ZGUgPGNzdGRkZWY+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvY29uZmlnLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvY2F0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcHVuY3R1YXRpb24vcGFyZW4uaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vaXRlcmF0ZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vcmVwZWF0LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX3BhcmFtcy5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bV9iaW5hcnlfcGFyYW1zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX3RyYWlsaW5nX3BhcmFtcy5ocHA+Ci0KLSNkZWZpbmUgTkROQk9PU1RfREVGSU5FX0lOUExBQ0VfRkFDVE9SWV9DTEFTU19NRU1CRVJfSU5JVCh6LG4sXykgTkROQk9PU1RfUFBfQ0FUKG1fYSxuKSBORE5CT09TVF9QUF9MUEFSRU4oKSBORE5CT09TVF9QUF9DQVQoYSxuKSBORE5CT09TVF9QUF9SUEFSRU4oKQotI2RlZmluZSBORE5CT09TVF9ERUZJTkVfSU5QTEFDRV9GQUNUT1JZX0NMQVNTX01FTUJFUl9ERUNMKHosbixfKSBORE5CT09TVF9QUF9DQVQoQSxuKSBjb25zdCYgTkROQk9PU1RfUFBfQ0FUKG1fYSxuKTsKLQotI2RlZmluZSBORE5CT09TVF9NQVhfSU5QTEFDRV9GQUNUT1JZX0FSSVRZIDEwCi0KLSN1bmRlZiBORE5CT09TVF9VVElMSVRZX0RFVEFJTF9JTlBMQUNFX0ZBQ1RPUllfU1VGRklYXzA0QVBSMjAwN19IUFAKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdXRpbGl0eS9kZXRhaWwvaW5fcGxhY2VfZmFjdG9yeV9zdWZmaXguaHBwIGIvaW5jbHVkZS9uZG5ib29zdC91dGlsaXR5L2RldGFpbC9pbl9wbGFjZV9mYWN0b3J5X3N1ZmZpeC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI3NjJkYTEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC91dGlsaXR5L2RldGFpbC9pbl9wbGFjZV9mYWN0b3J5X3N1ZmZpeC5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi0vLyBDb3B5cmlnaHQgKEMpIDIwMDMsIEZlcm5hbmRvIEx1aXMgQ2FjY2lvbGEgQ2FyYmFsbGFsLgotLy8gQ29weXJpZ2h0IChDKSAyMDA3LCBUb2JpYXMgU2Nod2luZ2VyLgotLy8KLS8vIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCi0vLyBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL29wdGlvbmFsIGZvciBkb2N1bWVudGF0aW9uLgotLy8KLS8vIFlvdSBhcmUgd2VsY29tZSB0byBjb250YWN0IHRoZSBhdXRob3IgYXQ6Ci0vLyAgZmVybmFuZG9fY2FjY2lvbGFAaG90bWFpbC5jb20KLS8vCi0jaWZuZGVmIE5ETkJPT1NUX1VUSUxJVFlfREVUQUlMX0lOUExBQ0VfRkFDVE9SWV9TVUZGSVhfMDRBUFIyMDA3X0hQUAotI2RlZmluZSBORE5CT09TVF9VVElMSVRZX0RFVEFJTF9JTlBMQUNFX0ZBQ1RPUllfU1VGRklYXzA0QVBSMjAwN19IUFAKLQotI3VuZGVmIE5ETkJPT1NUX0RFRklORV9JTlBMQUNFX0ZBQ1RPUllfQ0xBU1NfTUVNQkVSX0lOSVQKLSN1bmRlZiBORE5CT09TVF9ERUZJTkVfSU5QTEFDRV9GQUNUT1JZX0NMQVNTX01FTUJFUl9ERUNMCi0jdW5kZWYgTkROQk9PU1RfTUFYX0lOUExBQ0VfRkFDVE9SWV9BUklUWQotCi0jdW5kZWYgTkROQk9PU1RfVVRJTElUWV9ERVRBSUxfSU5QTEFDRV9GQUNUT1JZX1BSRUZJWF8wNEFQUjIwMDdfSFBQCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3V0aWxpdHkvZGV0YWlsL3Jlc3VsdF9vZl9pdGVyYXRlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdXRpbGl0eS9kZXRhaWwvcmVzdWx0X29mX2l0ZXJhdGUuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NjI5OGE0Li4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdXRpbGl0eS9kZXRhaWwvcmVzdWx0X29mX2l0ZXJhdGUuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjA4ICswLDAgQEAKLS8vIEJvb3N0IHJlc3VsdF9vZiBsaWJyYXJ5Ci0KLS8vICBDb3B5cmlnaHQgRG91Z2xhcyBHcmVnb3IgMjAwNC4gVXNlLCBtb2RpZmljYXRpb24gYW5kCi0vLyAgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24KLS8vICAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBDb3B5cmlnaHQgRGFuaWVsIFdhbGtlciwgRXJpYyBOaWVibGVyLCBNaWNoZWwgTW9yaW4gMjAwOC0yMDEyLgotLy8gIFVzZSwgbW9kaWZpY2F0aW9uIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLS8vICBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IKLS8vICBjb3B5IGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3V0aWxpdHkKLSNpZiAhZGVmaW5lZChORE5CT09TVF9QUF9JU19JVEVSQVRJTkcpCi0jIGVycm9yIEJvb3N0IHJlc3VsdF9vZiAtIGRvIG5vdCBpbmNsdWRlIHRoaXMgZmlsZSEKLSNlbmRpZgotCi0vLyBDV1BybzggcmVxdWlyZXMgYW4gYXJndW1lbnQgaW4gYSBmdW5jdGlvbiB0eXBlIHNwZWNpYWxpemF0aW9uCi0jaWYgTkROQk9PU1RfV09SS0FST1VORChfX01XRVJLU19fLCBORE5CT09TVF9URVNURURfQVQoMHgzMDAyKSkgJiYgTkROQk9PU1RfUFBfSVRFUkFUSU9OKCkgPT0gMAotIyBkZWZpbmUgTkROQk9PU1RfUkVTVUxUX09GX0FSR1Mgdm9pZAotI2Vsc2UKLSMgZGVmaW5lIE5ETkJPT1NUX1JFU1VMVF9PRl9BUkdTIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0lURVJBVElPTigpLFQpCi0jZW5kaWYKLQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTUxKSkKLXRlbXBsYXRlPHR5cGVuYW1lIEYgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19QQVJBTVMoTkROQk9PU1RfUFBfSVRFUkFUSU9OKCksdHlwZW5hbWUgVCk+Ci1zdHJ1Y3QgdHIxX3Jlc3VsdF9vZjxGKE5ETkJPT1NUX1JFU1VMVF9PRl9BUkdTKT4KLSAgICA6IG1wbDo6aWZfPAotICAgICAgICAgIG1wbDo6b3JfPCBpc19wb2ludGVyPEY+LCBpc19tZW1iZXJfZnVuY3Rpb25fcG9pbnRlcjxGPiA+Ci0gICAgICAgICwgbmRuYm9vc3Q6OmRldGFpbDo6dHIxX3Jlc3VsdF9vZl9pbXBsPAotICAgICAgICAgICAgdHlwZW5hbWUgcmVtb3ZlX2N2PEY+Ojp0eXBlLAotICAgICAgICAgICAgdHlwZW5hbWUgcmVtb3ZlX2N2PEY+Ojp0eXBlKE5ETkJPT1NUX1JFU1VMVF9PRl9BUkdTKSwKLSAgICAgICAgICAgIChuZG5ib29zdDo6ZGV0YWlsOjpoYXNfcmVzdWx0X3R5cGU8Rj46OnZhbHVlKT4KLSAgICAgICAgLCBuZG5ib29zdDo6ZGV0YWlsOjp0cjFfcmVzdWx0X29mX2ltcGw8Ci0gICAgICAgICAgICBGLAotICAgICAgICAgICAgRihORE5CT09TVF9SRVNVTFRfT0ZfQVJHUyksCi0gICAgICAgICAgICAobmRuYm9vc3Q6OmRldGFpbDo6aGFzX3Jlc3VsdF90eXBlPEY+Ojp2YWx1ZSk+ID46OnR5cGUgeyB9OwotI2VuZGlmCi0KLSNpZmRlZiBORE5CT09TVF9SRVNVTFRfT0ZfVVNFX0RFQ0xUWVBFCi0KLS8vIFVzZXMgZGVjbHZhbCBmb2xsb3dpbmcgTjMyMjUgMjAuNy43LjYgd2hlbiBGIGlzIG5vdCBhIHBvaW50ZXIuCi10ZW1wbGF0ZTx0eXBlbmFtZSBGIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfUEFSQU1TKE5ETkJPT1NUX1BQX0lURVJBVElPTigpLHR5cGVuYW1lIFQpPgotc3RydWN0IHJlc3VsdF9vZjxGKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0lURVJBVElPTigpLFQpKT4KLSAgICA6IG1wbDo6aWZfPAotICAgICAgICAgIGlzX21lbWJlcl9mdW5jdGlvbl9wb2ludGVyPEY+Ci0gICAgICAgICwgZGV0YWlsOjp0cjFfcmVzdWx0X29mX2ltcGw8Ci0gICAgICAgICAgICB0eXBlbmFtZSByZW1vdmVfY3Y8Rj46OnR5cGUsCi0gICAgICAgICAgICB0eXBlbmFtZSByZW1vdmVfY3Y8Rj46OnR5cGUoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfSVRFUkFUSU9OKCksVCkpLCBmYWxzZQotICAgICAgICAgID4KLSAgICAgICAgLCBkZXRhaWw6OmNwcDB4X3Jlc3VsdF9vZl9pbXBsPAotICAgICAgICAgICAgICBGKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0lURVJBVElPTigpLFQpKQotICAgICAgICAgID4KLSAgICAgID46OnR5cGUKLXt9OwotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotI2lmZGVmIE5ETkJPT1NUX05PX1NGSU5BRV9FWFBSCi0KLXRlbXBsYXRlPHR5cGVuYW1lIEY+Ci1zdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKHJlc3VsdF9vZl9jYWxsYWJsZV9mdW5fMl8sIE5ETkJPT1NUX1BQX0lURVJBVElPTigpKTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgUiBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX1BBUkFNUyhORE5CT09TVF9QUF9JVEVSQVRJT04oKSwgdHlwZW5hbWUgVCk+Ci1zdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKHJlc3VsdF9vZl9jYWxsYWJsZV9mdW5fMl8sIE5ETkJPT1NUX1BQX0lURVJBVElPTigpKTxSKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0lURVJBVElPTigpLCBUKSk+IHsKLSAgICBSIG9wZXJhdG9yKCkoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfSVRFUkFUSU9OKCksIFQpKSBjb25zdDsKLSAgICB0eXBlZGVmIHJlc3VsdF9vZl9wcml2YXRlX3R5cGUgY29uc3QgJigqcGZuX3QpKC4uLik7Ci0gICAgb3BlcmF0b3IgcGZuX3QoKSBjb25zdCB2b2xhdGlsZTsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEY+Ci1zdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKHJlc3VsdF9vZl9jYWxsYWJsZV9mdW5fLCBORE5CT09TVF9QUF9JVEVSQVRJT04oKSk7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEY+Ci1zdHJ1Y3QgTkROQk9PU1RfUFBfQ0FUKHJlc3VsdF9vZl9jYWxsYWJsZV9mdW5fLCBORE5CT09TVF9QUF9JVEVSQVRJT04oKSk8RiAqPgotICA6IE5ETkJPT1NUX1BQX0NBVChyZXN1bHRfb2ZfY2FsbGFibGVfZnVuXzJfLCBORE5CT09TVF9QUF9JVEVSQVRJT04oKSk8Rj4KLXt9OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGPgotc3RydWN0IE5ETkJPT1NUX1BQX0NBVChyZXN1bHRfb2ZfY2FsbGFibGVfZnVuXywgTkROQk9PU1RfUFBfSVRFUkFUSU9OKCkpPEYgJj4KLSAgOiBORE5CT09TVF9QUF9DQVQocmVzdWx0X29mX2NhbGxhYmxlX2Z1bl8yXywgTkROQk9PU1RfUFBfSVRFUkFUSU9OKCkpPEY+Ci17fTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgRj4KLXN0cnVjdCBORE5CT09TVF9QUF9DQVQocmVzdWx0X29mX3NlbGVjdF9jYWxsX3dyYXBwZXJfdHlwZV8sIE5ETkJPT1NUX1BQX0lURVJBVElPTigpKQotICA6IG1wbDo6ZXZhbF9pZjwKLSAgICAgICAgaXNfY2xhc3M8dHlwZW5hbWUgcmVtb3ZlX3JlZmVyZW5jZTxGPjo6dHlwZT4sCi0gICAgICAgIHJlc3VsdF9vZl93cmFwX2NhbGxhYmxlX2NsYXNzPEY+LAotICAgICAgICBtcGw6OmlkZW50aXR5PE5ETkJPT1NUX1BQX0NBVChyZXN1bHRfb2ZfY2FsbGFibGVfZnVuXywgTkROQk9PU1RfUFBfSVRFUkFUSU9OKCkpPHR5cGVuYW1lIHJlbW92ZV9jdjxGPjo6dHlwZT4gPgotICAgID4KLXt9OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfUEFSQU1TKE5ETkJPT1NUX1BQX0lURVJBVElPTigpLCB0eXBlbmFtZSBUKT4KLXN0cnVjdCBORE5CT09TVF9QUF9DQVQocmVzdWx0X29mX2lzX2NhbGxhYmxlXywgTkROQk9PU1RfUFBfSVRFUkFUSU9OKCkpIHsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIE5ETkJPT1NUX1BQX0NBVChyZXN1bHRfb2Zfc2VsZWN0X2NhbGxfd3JhcHBlcl90eXBlXywgTkROQk9PU1RfUFBfSVRFUkFUSU9OKCkpPEY+Ojp0eXBlIHdyYXBwZXJfdDsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCB2YWx1ZSA9ICgKLSAgICAgICAgc2l6ZW9mKHJlc3VsdF9vZl9ub190eXBlKSA9PSBzaXplb2YoZGV0YWlsOjpyZXN1bHRfb2ZfaXNfcHJpdmF0ZV90eXBlKAotICAgICAgICAgICAgKG5kbmJvb3N0OjpkZWNsdmFsPHdyYXBwZXJfdD4oKShORE5CT09TVF9QUF9FTlVNX0JJTkFSWV9QQVJBTVMoTkROQk9PU1RfUFBfSVRFUkFUSU9OKCksIG5kbmJvb3N0OjpkZWNsdmFsPFQsID4oKSBORE5CT09TVF9QUF9JTlRFUkNFUFQpKSwgcmVzdWx0X29mX3dlaXJkX3R5cGUoKSkKLSAgICAgICAgKSkKLSAgICApOwotICAgIHR5cGVkZWYgbXBsOjpib29sXzx2YWx1ZT4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEYgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19QQVJBTVMoTkROQk9PU1RfUFBfSVRFUkFUSU9OKCksdHlwZW5hbWUgVCk+Ci1zdHJ1Y3QgY3BwMHhfcmVzdWx0X29mX2ltcGw8RihORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9JVEVSQVRJT04oKSxUKSksIHRydWU+Ci0gICAgOiBsYXp5X2VuYWJsZV9pZjwKLSAgICAgICAgICBORE5CT09TVF9QUF9DQVQocmVzdWx0X29mX2lzX2NhbGxhYmxlXywgTkROQk9PU1RfUFBfSVRFUkFUSU9OKCkpPEYgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19QQVJBTVMoTkROQk9PU1RfUFBfSVRFUkFUSU9OKCksIFQpPgotICAgICAgICAsIGNwcDB4X3Jlc3VsdF9vZl9pbXBsPEYoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfSVRFUkFUSU9OKCksVCkpLCBmYWxzZT4KLSAgICAgID4KLXt9OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfUEFSQU1TKE5ETkJPT1NUX1BQX0lURVJBVElPTigpLHR5cGVuYW1lIFQpPgotc3RydWN0IGNwcDB4X3Jlc3VsdF9vZl9pbXBsPEYoTkROQk9PU1RfUFBfRU5VTV9QQVJBTVMoTkROQk9PU1RfUFBfSVRFUkFUSU9OKCksVCkpLCBmYWxzZT4KLXsKLSAgdHlwZWRlZiBkZWNsdHlwZSgKLSAgICBuZG5ib29zdDo6ZGVjbHZhbDxGPigpKAotICAgICAgTkROQk9PU1RfUFBfRU5VTV9CSU5BUllfUEFSQU1TKE5ETkJPT1NUX1BQX0lURVJBVElPTigpLCBuZG5ib29zdDo6ZGVjbHZhbDxULCA+KCkgTkROQk9PU1RfUFBfSU5URVJDRVBUKQotICAgICkKLSAgKSB0eXBlOwotfTsKLQotI2Vsc2UgLy8gTkROQk9PU1RfTk9fU0ZJTkFFX0VYUFIKLQotdGVtcGxhdGU8dHlwZW5hbWUgRiBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX1BBUkFNUyhORE5CT09TVF9QUF9JVEVSQVRJT04oKSx0eXBlbmFtZSBUKT4KLXN0cnVjdCBjcHAweF9yZXN1bHRfb2ZfaW1wbDxGKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0lURVJBVElPTigpLFQpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSByZXN1bHRfb2ZfYWx3YXlzX3ZvaWQ8ZGVjbHR5cGUoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5kbmJvb3N0OjpkZWNsdmFsPEY+KCkoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORE5CT09TVF9QUF9FTlVNX0JJTkFSWV9QQVJBTVMoTkROQk9PU1RfUFBfSVRFUkFUSU9OKCksIG5kbmJvb3N0OjpkZWNsdmFsPFQsID4oKSBORE5CT09TVF9QUF9JTlRFUkNFUFQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICApPjo6dHlwZT4gewotICB0eXBlZGVmIGRlY2x0eXBlKAotICAgIG5kbmJvb3N0OjpkZWNsdmFsPEY+KCkoCi0gICAgICBORE5CT09TVF9QUF9FTlVNX0JJTkFSWV9QQVJBTVMoTkROQk9PU1RfUFBfSVRFUkFUSU9OKCksIG5kbmJvb3N0OjpkZWNsdmFsPFQsID4oKSBORE5CT09TVF9QUF9JTlRFUkNFUFQpCi0gICAgKQotICApIHR5cGU7Ci19OwotCi0jZW5kaWYgLy8gTkROQk9PU1RfTk9fU0ZJTkFFX0VYUFIKLQotfSAvLyBuYW1lc3BhY2UgZGV0YWlsCi0KLSNlbHNlIC8vIGRlZmluZWQoTkROQk9PU1RfUkVTVUxUX09GX1VTRV9ERUNMVFlQRSkKLQotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTUxKSkKLXRlbXBsYXRlPHR5cGVuYW1lIEYgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19QQVJBTVMoTkROQk9PU1RfUFBfSVRFUkFUSU9OKCksdHlwZW5hbWUgVCk+Ci1zdHJ1Y3QgcmVzdWx0X29mPEYoTkROQk9PU1RfUkVTVUxUX09GX0FSR1MpPgotICAgIDogdHIxX3Jlc3VsdF9vZjxGKE5ETkJPT1NUX1JFU1VMVF9PRl9BUkdTKT4geyB9OwotI2VuZGlmCi0KLSNlbmRpZiAvLyBkZWZpbmVkKE5ETkJPT1NUX1JFU1VMVF9PRl9VU0VfREVDTFRZUEUpCi0KLSN1bmRlZiBORE5CT09TVF9SRVNVTFRfT0ZfQVJHUwotCi0jaWYgTkROQk9PU1RfUFBfSVRFUkFUSU9OKCkgPj0gMQotCi1uYW1lc3BhY2UgZGV0YWlsIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgUiwgIHR5cGVuYW1lIEZBcmdzIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfUEFSQU1TKE5ETkJPT1NUX1BQX0lURVJBVElPTigpLHR5cGVuYW1lIFQpPgotc3RydWN0IHRyMV9yZXN1bHRfb2ZfaW1wbDxSICgqKShORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhORE5CT09TVF9QUF9JVEVSQVRJT04oKSxUKSksIEZBcmdzLCBmYWxzZT4KLXsKLSAgdHlwZWRlZiBSIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBSLCAgdHlwZW5hbWUgRkFyZ3MgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19QQVJBTVMoTkROQk9PU1RfUFBfSVRFUkFUSU9OKCksdHlwZW5hbWUgVCk+Ci1zdHJ1Y3QgdHIxX3Jlc3VsdF9vZl9pbXBsPFIgKCYpKE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE5ETkJPT1NUX1BQX0lURVJBVElPTigpLFQpKSwgRkFyZ3MsIGZhbHNlPgotewotICB0eXBlZGVmIFIgdHlwZTsKLX07Ci0KLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU1MSkpCi10ZW1wbGF0ZTx0eXBlbmFtZSBSLCB0eXBlbmFtZSBGQXJncyBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX1BBUkFNUyhORE5CT09TVF9QUF9JVEVSQVRJT04oKSx0eXBlbmFtZSBUKT4KLXN0cnVjdCB0cjFfcmVzdWx0X29mX2ltcGw8UiAoVDA6OiopCi0gICAgICAgICAgICAgICAgICAgICAoTkROQk9PU1RfUFBfRU5VTV9TSElGVEVEX1BBUkFNUyhORE5CT09TVF9QUF9JVEVSQVRJT04oKSxUKSksCi0gICAgICAgICAgICAgICAgIEZBcmdzLCBmYWxzZT4KLXsKLSAgdHlwZWRlZiBSIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBSLCB0eXBlbmFtZSBGQXJncyBORE5CT09TVF9QUF9FTlVNX1RSQUlMSU5HX1BBUkFNUyhORE5CT09TVF9QUF9JVEVSQVRJT04oKSx0eXBlbmFtZSBUKT4KLXN0cnVjdCB0cjFfcmVzdWx0X29mX2ltcGw8UiAoVDA6OiopCi0gICAgICAgICAgICAgICAgICAgICAoTkROQk9PU1RfUFBfRU5VTV9TSElGVEVEX1BBUkFNUyhORE5CT09TVF9QUF9JVEVSQVRJT04oKSxUKSkKLSAgICAgICAgICAgICAgICAgICAgIGNvbnN0LAotICAgICAgICAgICAgICAgICBGQXJncywgZmFsc2U+Ci17Ci0gIHR5cGVkZWYgUiB0eXBlOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgUiwgdHlwZW5hbWUgRkFyZ3MgTkROQk9PU1RfUFBfRU5VTV9UUkFJTElOR19QQVJBTVMoTkROQk9PU1RfUFBfSVRFUkFUSU9OKCksdHlwZW5hbWUgVCk+Ci1zdHJ1Y3QgdHIxX3Jlc3VsdF9vZl9pbXBsPFIgKFQwOjoqKQotICAgICAgICAgICAgICAgICAgICAgKE5ETkJPT1NUX1BQX0VOVU1fU0hJRlRFRF9QQVJBTVMoTkROQk9PU1RfUFBfSVRFUkFUSU9OKCksVCkpCi0gICAgICAgICAgICAgICAgICAgICB2b2xhdGlsZSwKLSAgICAgICAgICAgICAgICAgRkFyZ3MsIGZhbHNlPgotewotICB0eXBlZGVmIFIgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIFIsIHR5cGVuYW1lIEZBcmdzIE5ETkJPT1NUX1BQX0VOVU1fVFJBSUxJTkdfUEFSQU1TKE5ETkJPT1NUX1BQX0lURVJBVElPTigpLHR5cGVuYW1lIFQpPgotc3RydWN0IHRyMV9yZXN1bHRfb2ZfaW1wbDxSIChUMDo6KikKLSAgICAgICAgICAgICAgICAgICAgIChORE5CT09TVF9QUF9FTlVNX1NISUZURURfUEFSQU1TKE5ETkJPT1NUX1BQX0lURVJBVElPTigpLFQpKQotICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9sYXRpbGUsCi0gICAgICAgICAgICAgICAgIEZBcmdzLCBmYWxzZT4KLXsKLSAgdHlwZWRlZiBSIHR5cGU7Ci19OwotI2VuZGlmCi0KLX0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC91dGlsaXR5L2VuYWJsZV9pZi5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3V0aWxpdHkvZW5hYmxlX2lmLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDQxMjhkNi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3V0aWxpdHkvZW5hYmxlX2lmLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDExOSArMCwwIEBACi0vLyBCb29zdCBlbmFibGVfaWYgbGlicmFyeQotCi0vLyBDb3B5cmlnaHQgMjAwMyAoYykgVGhlIFRydXN0ZWVzIG9mIEluZGlhbmEgVW5pdmVyc2l0eS4KLQotLy8gVXNlLCBtb2RpZmljYXRpb24sIGFuZCBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUKLS8vIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICAgIEF1dGhvcnM6IEphYWtrbyBKYXJ2aSAoamFqYXJ2aSBhdCBvc2wuaXUuZWR1KQotLy8gICAgICAgICAgICAgSmVyZW1pYWggV2lsbGNvY2sgKGpld2lsbGNvIGF0IG9zbC5pdS5lZHUpCi0vLyAgICAgICAgICAgICBBbmRyZXcgTHVtc2RhaW5lIChsdW1zIGF0IG9zbC5pdS5lZHUpCi0KLQotI2lmbmRlZiBORE5CT09TVF9VVElMSVRZX0VOQUJMRV9JRl9IUFAKLSNkZWZpbmUgTkROQk9PU1RfVVRJTElUWV9FTkFCTEVfSUZfSFBQCi0KLSNpbmNsdWRlICJuZG5ib29zdC9jb25maWcuaHBwIgotCi0vLyBFdmVuIHRoZSBkZWZpbml0aW9uIG9mIGVuYWJsZV9pZiBjYXVzZXMgcHJvYmxlbXMgb24gc29tZSBjb21waWxlcnMsCi0vLyBzbyBpdCdzIG1hY3JvZWQgb3V0IGZvciBhbGwgY29tcGlsZXJzIHRoYXQgZG8gbm90IHN1cHBvcnQgU0ZJTkFFCi0KLSNpZm5kZWYgTkROQk9PU1RfTk9fU0ZJTkFFCi0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotIAotICB0ZW1wbGF0ZSA8Ym9vbCBCLCBjbGFzcyBUID0gdm9pZD4KLSAgc3RydWN0IGVuYWJsZV9pZl9jIHsKLSAgICB0eXBlZGVmIFQgdHlwZTsKLSAgfTsKLQotICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgc3RydWN0IGVuYWJsZV9pZl9jPGZhbHNlLCBUPiB7fTsKLQotICB0ZW1wbGF0ZSA8Y2xhc3MgQ29uZCwgY2xhc3MgVCA9IHZvaWQ+IAotICBzdHJ1Y3QgZW5hYmxlX2lmIDogcHVibGljIGVuYWJsZV9pZl9jPENvbmQ6OnZhbHVlLCBUPiB7fTsKLQotICB0ZW1wbGF0ZSA8Ym9vbCBCLCBjbGFzcyBUPgotICBzdHJ1Y3QgbGF6eV9lbmFibGVfaWZfYyB7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0eXBlIHR5cGU7Ci0gIH07Ci0KLSAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gIHN0cnVjdCBsYXp5X2VuYWJsZV9pZl9jPGZhbHNlLCBUPiB7fTsKLQotICB0ZW1wbGF0ZSA8Y2xhc3MgQ29uZCwgY2xhc3MgVD4gCi0gIHN0cnVjdCBsYXp5X2VuYWJsZV9pZiA6IHB1YmxpYyBsYXp5X2VuYWJsZV9pZl9jPENvbmQ6OnZhbHVlLCBUPiB7fTsKLQotCi0gIHRlbXBsYXRlIDxib29sIEIsIGNsYXNzIFQgPSB2b2lkPgotICBzdHJ1Y3QgZGlzYWJsZV9pZl9jIHsKLSAgICB0eXBlZGVmIFQgdHlwZTsKLSAgfTsKLQotICB0ZW1wbGF0ZSA8Y2xhc3MgVD4KLSAgc3RydWN0IGRpc2FibGVfaWZfYzx0cnVlLCBUPiB7fTsKLQotICB0ZW1wbGF0ZSA8Y2xhc3MgQ29uZCwgY2xhc3MgVCA9IHZvaWQ+IAotICBzdHJ1Y3QgZGlzYWJsZV9pZiA6IHB1YmxpYyBkaXNhYmxlX2lmX2M8Q29uZDo6dmFsdWUsIFQ+IHt9OwotCi0gIHRlbXBsYXRlIDxib29sIEIsIGNsYXNzIFQ+Ci0gIHN0cnVjdCBsYXp5X2Rpc2FibGVfaWZfYyB7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBUOjp0eXBlIHR5cGU7Ci0gIH07Ci0KLSAgdGVtcGxhdGUgPGNsYXNzIFQ+Ci0gIHN0cnVjdCBsYXp5X2Rpc2FibGVfaWZfYzx0cnVlLCBUPiB7fTsKLQotICB0ZW1wbGF0ZSA8Y2xhc3MgQ29uZCwgY2xhc3MgVD4gCi0gIHN0cnVjdCBsYXp5X2Rpc2FibGVfaWYgOiBwdWJsaWMgbGF6eV9kaXNhYmxlX2lmX2M8Q29uZDo6dmFsdWUsIFQ+IHt9OwotCi19IC8vIG5hbWVzcGFjZSBuZG5ib29zdAotCi0jZWxzZQotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi0gIG5hbWVzcGFjZSBkZXRhaWwgeyB0eXBlZGVmIHZvaWQgZW5hYmxlX2lmX2RlZmF1bHRfVDsgfQotCi0gIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICBzdHJ1Y3QgZW5hYmxlX2lmX2RvZXNfbm90X3dvcmtfb25fdGhpc19jb21waWxlcjsKLQotICB0ZW1wbGF0ZSA8Ym9vbCBCLCBjbGFzcyBUID0gZGV0YWlsOjplbmFibGVfaWZfZGVmYXVsdF9UPgotICBzdHJ1Y3QgZW5hYmxlX2lmX2MgOiBlbmFibGVfaWZfZG9lc19ub3Rfd29ya19vbl90aGlzX2NvbXBpbGVyPFQ+Ci0gIHsgfTsKLQotICB0ZW1wbGF0ZSA8Ym9vbCBCLCBjbGFzcyBUID0gZGV0YWlsOjplbmFibGVfaWZfZGVmYXVsdF9UPiAKLSAgc3RydWN0IGRpc2FibGVfaWZfYyA6IGVuYWJsZV9pZl9kb2VzX25vdF93b3JrX29uX3RoaXNfY29tcGlsZXI8VD4KLSAgeyB9OwotCi0gIHRlbXBsYXRlIDxib29sIEIsIGNsYXNzIFQgPSBkZXRhaWw6OmVuYWJsZV9pZl9kZWZhdWx0X1Q+IAotICBzdHJ1Y3QgbGF6eV9lbmFibGVfaWZfYyA6IGVuYWJsZV9pZl9kb2VzX25vdF93b3JrX29uX3RoaXNfY29tcGlsZXI8VD4KLSAgeyB9OwotCi0gIHRlbXBsYXRlIDxib29sIEIsIGNsYXNzIFQgPSBkZXRhaWw6OmVuYWJsZV9pZl9kZWZhdWx0X1Q+IAotICBzdHJ1Y3QgbGF6eV9kaXNhYmxlX2lmX2MgOiBlbmFibGVfaWZfZG9lc19ub3Rfd29ya19vbl90aGlzX2NvbXBpbGVyPFQ+Ci0gIHsgfTsKLQotICB0ZW1wbGF0ZSA8Y2xhc3MgQ29uZCwgY2xhc3MgVCA9IGRldGFpbDo6ZW5hYmxlX2lmX2RlZmF1bHRfVD4gCi0gIHN0cnVjdCBlbmFibGVfaWYgOiBlbmFibGVfaWZfZG9lc19ub3Rfd29ya19vbl90aGlzX2NvbXBpbGVyPFQ+Ci0gIHsgfTsKLQotICB0ZW1wbGF0ZSA8Y2xhc3MgQ29uZCwgY2xhc3MgVCA9IGRldGFpbDo6ZW5hYmxlX2lmX2RlZmF1bHRfVD4gCi0gIHN0cnVjdCBkaXNhYmxlX2lmIDogZW5hYmxlX2lmX2RvZXNfbm90X3dvcmtfb25fdGhpc19jb21waWxlcjxUPgotICB7IH07Ci0KLSAgdGVtcGxhdGUgPGNsYXNzIENvbmQsIGNsYXNzIFQgPSBkZXRhaWw6OmVuYWJsZV9pZl9kZWZhdWx0X1Q+IAotICBzdHJ1Y3QgbGF6eV9lbmFibGVfaWYgOiBlbmFibGVfaWZfZG9lc19ub3Rfd29ya19vbl90aGlzX2NvbXBpbGVyPFQ+Ci0gIHsgfTsKLQotICB0ZW1wbGF0ZSA8Y2xhc3MgQ29uZCwgY2xhc3MgVCA9IGRldGFpbDo6ZW5hYmxlX2lmX2RlZmF1bHRfVD4gCi0gIHN0cnVjdCBsYXp5X2Rpc2FibGVfaWYgOiBlbmFibGVfaWZfZG9lc19ub3Rfd29ya19vbl90aGlzX2NvbXBpbGVyPFQ+Ci0gIHsgfTsKLQotfSAvLyBuYW1lc3BhY2UgbmRuYm9vc3QKLQotI2VuZGlmIC8vIE5ETkJPT1NUX05PX1NGSU5BRQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdXRpbGl0eS9pZGVudGl0eV90eXBlLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdXRpbGl0eS9pZGVudGl0eV90eXBlLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzdlYjgzNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3V0aWxpdHkvaWRlbnRpdHlfdHlwZS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi0KLS8vIENvcHlyaWdodCAoQykgMjAwOS0yMDEyIExvcmVuem8gQ2FtaW5pdGkKLS8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMAotLy8gKHNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgYSBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLyBIb21lIGF0IGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvdXRpbGl0eS9pZGVudGl0eV90eXBlCi0KLS8qKiBAZmlsZQotV3JhcCB0eXBlIGV4cHJlc3Npb25zIHdpdGggcm91bmQgcGFyZW50aGVzaXMgc28gdGhleSBjYW4gYmUgcGFzc2VkIHRvIG1hY3JvcwotZXZlbiBpZiB0aGV5IGNvbnRhaW4gY29tbWFzLgotKi8KLQotI2lmbmRlZiBORE5CT09TVF9JREVOVElUWV9UWVBFX0hQUF8KLSNkZWZpbmUgTkROQk9PU1RfSURFTlRJVFlfVFlQRV9IUFBfCi0KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9mdW5jdGlvbl90cmFpdHMuaHBwPgotCi0vKioKLUBicmllZiBUaGlzIG1hY3JvIGFsbG93cyB0byB3cmFwIHRoZSBzcGVjaWZpZWQgdHlwZSBleHByZXNzaW9uIHdpdGhpbiBleHRyYQotcm91bmQgcGFyZW50aGVzaXMgc28gdGhlIHR5cGUgY2FuIGJlIHBhc3NlZCBhcyBhIHNpbmdsZSBtYWNybyBwYXJhbWV0ZXIgZXZlbiBpZgotaXQgY29udGFpbnMgY29tbWFzIChub3QgYWxyZWFkeSB3cmFwcGVkIHdpdGhpbiByb3VuZCBwYXJlbnRoZXNpcykuCi0KLUBQYXJhbXMKLUBQYXJhbXtwYXJlbnRoZXNpemVkX3R5cGUsCi1UaGUgdHlwZSBleHByZXNzaW9uIHRvIGJlIHBhc3NlZCBhcyBtYWNybyBwYXJhbWV0ZXIgd3JhcHBlZCBieSBhIHNpbmdsZSBzZXQKLW9mIHJvdW5kIHBhcmVudGhlc2lzIDxjPiguLi4pPC9jPi4KLVRoaXMgdHlwZSBleHByZXNzaW9uIGNhbiBjb250YWluIGFuIGFyYml0cmFyeSBudW1iZXIgb2YgY29tbWFzLgotfQotQEVuZFBhcmFtcwotCi1UaGlzIG1hY3JvIHdvcmtzIG9uIGFueSBDKyswMyBjb21waWxlciAoaXQgZG9lcyBub3QgdXNlIHZhcmlhZGljIG1hY3JvcykuCi0KLVRoaXMgbWFjcm8gbXVzdCBiZSBwcmVmaXhlZCBieSA8Yz50eXBlbmFtZTwvYz4gd2hlbiB1c2VkIHdpdGhpbiB0ZW1wbGF0ZXMuCi1Ob3RlIHRoYXQgdGhlIGNvbXBpbGVyIHdpbGwgbm90IGJlIGFibGUgdG8gYXV0b21hdGljYWxseSBkZXRlcm1pbmUgZnVuY3Rpb24KLXRlbXBsYXRlIHBhcmFtZXRlcnMgd2hlbiB0aGV5IGFyZSB3cmFwcGVkIHdpdGggdGhpcyBtYWNybyAodGhlc2UgcGFyYW1ldGVycwotbmVlZCB0byBiZSBleHBsaWNpdGx5IHNwZWNpZmllZCB3aGVuIGNhbGxpbmcgdGhlIGZ1bmN0aW9uIHRlbXBsYXRlKS4KLQotT24gc29tZSBjb21waWxlcnMgKGxpa2UgR0NDKSwgdXNpbmcgdGhpcyBtYWNybyBvbiBhYnN0cmFjdCB0eXBlcyByZXF1aXJlcyB0bwotYWRkIGFuZCByZW1vdmUgYSByZWZlcmVuY2UgdG8gdGhlIHNwZWNpZmllZCB0eXBlLgotKi8KLSNkZWZpbmUgTkROQk9PU1RfSURFTlRJVFlfVFlQRShwYXJlbnRoZXNpemVkX3R5cGUpIFwKLSAgICAvKiBtdXN0IE5PVCBwcmVmaXggdGhpcyB3aXRoIGA6OmAgdG8gd29yayB3aXRoIHBhcmVudGhlc2l6ZWQgc3ludGF4ICovIFwKLSAgICBuZG5ib29zdDo6ZnVuY3Rpb25fdHJhaXRzPCB2b2lkIHBhcmVudGhlc2l6ZWRfdHlwZSA+OjphcmcxX3R5cGUKLQotI2VuZGlmIC8vICNpbmNsdWRlIGd1YXJkCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdXRpbGl0eS9pbl9wbGFjZV9mYWN0b3J5LmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdXRpbGl0eS9pbl9wbGFjZV9mYWN0b3J5LmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2MwNzdkZC4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3V0aWxpdHkvaW5fcGxhY2VfZmFjdG9yeS5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSw4OCArMCwwIEBACi0vLyBDb3B5cmlnaHQgKEMpIDIwMDMsIEZlcm5hbmRvIEx1aXMgQ2FjY2lvbGEgQ2FyYmFsbGFsLgotLy8gQ29weXJpZ2h0IChDKSAyMDA3LCBUb2JpYXMgU2Nod2luZ2VyLgotLy8KLS8vIFVzZSwgbW9kaWZpY2F0aW9uLCBhbmQgZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlCi0vLyBMaWNlbnNlLCBWZXJzaW9uIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8KLS8vIFNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL29wdGlvbmFsIGZvciBkb2N1bWVudGF0aW9uLgotLy8KLS8vIFlvdSBhcmUgd2VsY29tZSB0byBjb250YWN0IHRoZSBhdXRob3IgYXQ6Ci0vLyAgZmVybmFuZG9fY2FjY2lvbGFAaG90bWFpbC5jb20KLS8vCi0jaWZuZGVmIE5ETkJPT1NUX1VUSUxJVFlfSU5QTEFDRV9GQUNUT1JZXzA0QVBSMjAwN19IUFAKLSNpZm5kZWYgTkROQk9PU1RfUFBfSVNfSVRFUkFUSU5HCi0KLSNpbmNsdWRlIDxuZG5ib29zdC91dGlsaXR5L2RldGFpbC9pbl9wbGFjZV9mYWN0b3J5X3ByZWZpeC5ocHA+Ci0KLW5hbWVzcGFjZSBuZG5ib29zdCB7Ci0KLWNsYXNzIGluX3BsYWNlX2ZhY3RvcnlfYmFzZSB7fSA7Ci0KLSNkZWZpbmUgIE5ETkJPT1NUX1BQX0lURVJBVElPTl9MSU1JVFMgKDAsIE5ETkJPT1NUX01BWF9JTlBMQUNFX0ZBQ1RPUllfQVJJVFkpCi0jZGVmaW5lICBORE5CT09TVF9QUF9GSUxFTkFNRV8xIDxuZG5ib29zdC91dGlsaXR5L2luX3BsYWNlX2ZhY3RvcnkuaHBwPgotI2luY2x1ZGUgTkROQk9PU1RfUFBfSVRFUkFURSgpCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpbmNsdWRlIDxuZG5ib29zdC91dGlsaXR5L2RldGFpbC9pbl9wbGFjZV9mYWN0b3J5X3N1ZmZpeC5ocHA+Ci0KLSNkZWZpbmUgTkROQk9PU1RfVVRJTElUWV9JTlBMQUNFX0ZBQ1RPUllfMDRBUFIyMDA3X0hQUAotI2Vsc2UKLSNkZWZpbmUgTiBORE5CT09TVF9QUF9JVEVSQVRJT04oKQotCi0jaWYgTgotdGVtcGxhdGU8IE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE4sIGNsYXNzIEEpID4KLSNlbmRpZgotY2xhc3MgTkROQk9PU1RfUFBfQ0FUKGluX3BsYWNlX2ZhY3RvcnksTikKLSAgOiAKLSAgcHVibGljIGluX3BsYWNlX2ZhY3RvcnlfYmFzZQotewotcHVibGljOgotCi0gIGV4cGxpY2l0IE5ETkJPT1NUX1BQX0NBVChpbl9wbGFjZV9mYWN0b3J5LE4pCi0gICAgICAoIE5ETkJPT1NUX1BQX0VOVU1fQklOQVJZX1BBUkFNUyhOLEEsY29uc3QmIGEpICkKLSNpZiBOID4gMAotICAgIDogTkROQk9PU1RfUFBfRU5VTShOLCBORE5CT09TVF9ERUZJTkVfSU5QTEFDRV9GQUNUT1JZX0NMQVNTX01FTUJFUl9JTklULCBfKQotI2VuZGlmCi0gIHt9Ci0KLSAgdGVtcGxhdGU8Y2xhc3MgVD4KLSAgdm9pZCogYXBwbHkodm9pZCogYWRkcmVzcwotICAgICAgTkROQk9PU1RfQVBQRU5EX0VYUExJQ0lUX1RFTVBMQVRFX1RZUEUoVCkpIGNvbnN0Ci0gIHsKLSAgICByZXR1cm4gbmV3KGFkZHJlc3MpIFQoIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE4sIG1fYSkgKTsKLSAgfQotCi0gIHRlbXBsYXRlPGNsYXNzIFQ+Ci0gIHZvaWQqIGFwcGx5KHZvaWQqIGFkZHJlc3MsIHN0ZDo6c2l6ZV90IG4KLSAgICAgIE5ETkJPT1NUX0FQUEVORF9FWFBMSUNJVF9URU1QTEFURV9UWVBFKFQpKSBjb25zdAotICB7Ci0gICAgZm9yKGNoYXIqIG5leHQgPSBhZGRyZXNzID0gdGhpcy0+TkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFIGFwcGx5PFQ+KGFkZHJlc3MpOwotICAgICAgICAhISAtLW47KQotICAgICAgdGhpcy0+TkROQk9PU1RfTkVTVEVEX1RFTVBMQVRFIGFwcGx5PFQ+KG5leHQgPSBuZXh0K3NpemVvZihUKSk7Ci0gICAgcmV0dXJuIGFkZHJlc3M7IAotICB9Ci0KLSAgTkROQk9PU1RfUFBfUkVQRUFUKE4sIE5ETkJPT1NUX0RFRklORV9JTlBMQUNFX0ZBQ1RPUllfQ0xBU1NfTUVNQkVSX0RFQ0wsIF8pCi19OwotCi0jaWYgTiA+IDAKLXRlbXBsYXRlPCBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhOLCBjbGFzcyBBKSA+Ci1pbmxpbmUgTkROQk9PU1RfUFBfQ0FUKGluX3BsYWNlX2ZhY3RvcnksTik8IE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE4sIEEpID4KLWluX3BsYWNlKCBORE5CT09TVF9QUF9FTlVNX0JJTkFSWV9QQVJBTVMoTiwgQSwgY29uc3QmIGEpICkKLXsKLSAgcmV0dXJuIE5ETkJPT1NUX1BQX0NBVChpbl9wbGFjZV9mYWN0b3J5LE4pPCBORE5CT09TVF9QUF9FTlVNX1BBUkFNUyhOLCBBKSA+Ci0gICAgICAoIE5ETkJPT1NUX1BQX0VOVU1fUEFSQU1TKE4sIGEpICk7Ci19Ci0jZWxzZQotaW5saW5lIGluX3BsYWNlX2ZhY3RvcnkwIGluX3BsYWNlKCkKLXsKLSAgcmV0dXJuIGluX3BsYWNlX2ZhY3RvcnkwKCk7Ci19Ci0jZW5kaWYKLQotI3VuZGVmIE4KLSNlbmRpZgotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3QvdXRpbGl0eS9yZXN1bHRfb2YuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC91dGlsaXR5L3Jlc3VsdF9vZi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI5OGZjOGEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC91dGlsaXR5L3Jlc3VsdF9vZi5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxOTQgKzAsMCBAQAotLy8gQm9vc3QgcmVzdWx0X29mIGxpYnJhcnkKLQotLy8gIENvcHlyaWdodCBEb3VnbGFzIEdyZWdvciAyMDA0LiBVc2UsIG1vZGlmaWNhdGlvbiBhbmQKLS8vICBkaXN0cmlidXRpb24gaXMgc3ViamVjdCB0byB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbgotLy8gIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gIGh0dHA6Ly93d3cuYm9vc3Qub3JnL0xJQ0VOU0VfMV8wLnR4dCkKLQotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3V0aWxpdHkKLSNpZm5kZWYgTkROQk9PU1RfUkVTVUxUX09GX0hQUAotI2RlZmluZSBORE5CT09TVF9SRVNVTFRfT0ZfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9jYXQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9pdGVyYXRpb24vaXRlcmF0ZS5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvcHJlcHJvY2Vzc29yL3JlcGV0aXRpb24vZW51bV9wYXJhbXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW1fdHJhaWxpbmdfcGFyYW1zLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9wcmVwcm9jZXNzb3IvcmVwZXRpdGlvbi9lbnVtX2JpbmFyeV9wYXJhbXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9yZXBldGl0aW9uL2VudW1fc2hpZnRlZF9wYXJhbXMuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3ByZXByb2Nlc3Nvci9mYWNpbGl0aWVzL2ludGVyY2VwdC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvZGV0YWlsL3dvcmthcm91bmQuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9oYXNfeHh4LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvaWYuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L21wbC9ldmFsX2lmLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvYm9vbC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvbXBsL2lkZW50aXR5LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC9tcGwvb3IuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3R5cGVfdHJhaXRzL2lzX2NsYXNzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19wb2ludGVyLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9pc19tZW1iZXJfZnVuY3Rpb25fcG9pbnRlci5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvcmVtb3ZlX2N2LmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9yZW1vdmVfcmVmZXJlbmNlLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC91dGlsaXR5L2RlY2x2YWwuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3V0aWxpdHkvZW5hYmxlX2lmLmhwcD4KLQotI2lmbmRlZiBORE5CT09TVF9SRVNVTFRfT0ZfTlVNX0FSR1MKLSMgIGRlZmluZSBORE5CT09TVF9SRVNVTFRfT0ZfTlVNX0FSR1MgMTYKLSNlbmRpZgotCi0vLyBVc2UgdGhlIGRlY2x0eXBlLWJhc2VkIHZlcnNpb24gb2YgcmVzdWx0X29mIGJ5IGRlZmF1bHQgaWYgdGhlIGNvbXBpbGVyCi0vLyBzdXBwb3J0cyBOMzI3NiA8aHR0cDovL3d3dy5vcGVuLXN0ZC5vcmcvSlRDMS9TQzIyL1dHMjEvZG9jcy9wYXBlcnMvMjAxMS9uMzI3Ni5wZGY+LgotLy8gVGhlIHVzZXIgY2FuIGZvcmNlIHRoZSBjaG9pY2UgYnkgZGVmaW5pbmcgZWl0aGVyIE5ETkJPT1NUX1JFU1VMVF9PRl9VU0VfREVDTFRZUEUgb3IKLS8vIE5ETkJPT1NUX1JFU1VMVF9PRl9VU0VfVFIxLCBidXQgbm90IGJvdGghCi0jaWYgZGVmaW5lZChORE5CT09TVF9SRVNVTFRfT0ZfVVNFX0RFQ0xUWVBFKSAmJiBkZWZpbmVkKE5ETkJPT1NUX1JFU1VMVF9PRl9VU0VfVFIxKQotIyAgZXJyb3IgQm90aCBORE5CT09TVF9SRVNVTFRfT0ZfVVNFX0RFQ0xUWVBFIGFuZCBORE5CT09TVF9SRVNVTFRfT0ZfVVNFX1RSMSBjYW5ub3QgYmUgZGVmaW5lZCBhdCB0aGUgc2FtZSB0aW1lLgotI2VuZGlmCi0KLSNpZm5kZWYgTkROQk9PU1RfUkVTVUxUX09GX1VTRV9UUjEKLSMgIGlmbmRlZiBORE5CT09TVF9SRVNVTFRfT0ZfVVNFX0RFQ0xUWVBFCi0jICAgIGlmbmRlZiBORE5CT09TVF9OT19DWFgxMV9ERUNMVFlQRV9OMzI3NiAvLyB0aGlzIGltcGxpZXMgIWRlZmluZWQoTkROQk9PU1RfTk9fQ1hYMTFfREVDTFRZUEUpCi0jICAgICAgZGVmaW5lIE5ETkJPT1NUX1JFU1VMVF9PRl9VU0VfREVDTFRZUEUKLSMgICAgZWxzZQotIyAgICAgIGRlZmluZSBORE5CT09TVF9SRVNVTFRfT0ZfVVNFX1RSMQotIyAgICBlbmRpZgotIyAgZW5kaWYKLSNlbmRpZgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGPiBzdHJ1Y3QgcmVzdWx0X29mOwotdGVtcGxhdGU8dHlwZW5hbWUgRj4gc3RydWN0IHRyMV9yZXN1bHRfb2Y7IC8vIGEgVFIxLXN0eWxlIGltcGxlbWVudGF0aW9uIG9mIHJlc3VsdF9vZgotCi0jaWYgIWRlZmluZWQoTkROQk9PU1RfTk9fU0ZJTkFFKSAmJiAhZGVmaW5lZChORE5CT09TVF9OT19URU1QTEFURV9QQVJUSUFMX1NQRUNJQUxJWkFUSU9OKQotbmFtZXNwYWNlIGRldGFpbCB7Ci0KLU5ETkJPT1NUX01QTF9IQVNfWFhYX1RSQUlUX0RFRihyZXN1bHRfdHlwZSkKLQotdGVtcGxhdGU8dHlwZW5hbWUgRiwgdHlwZW5hbWUgRkFyZ3MsIGJvb2wgSGFzUmVzdWx0VHlwZT4gc3RydWN0IHRyMV9yZXN1bHRfb2ZfaW1wbDsKLQotI2lmZGVmIE5ETkJPT1NUX05PX1NGSU5BRV9FWFBSCi0KLS8vIFRoZXJlIGRvZXNuJ3Qgc2VlbSB0byBiZSBhbnkgb3RoZXIgd2F5IHRvIHR1cm4gdGhpcyBvZmYgc3VjaCB0aGF0IHRoZSBwcmVzZW5jZSBvZgotLy8gdGhlIHVzZXItZGVmaW5lZCBvcGVyYXRvciwoKSBiZWxvdyBkb2Vzbid0IGNhdXNlIHNwdXJpb3VzIHdhcm5pbmcgYWxsIG92ZXIgdGhlIHBsYWNlLAotLy8gc28gdW5jb25kaXRpb25hbGx5IHR1cm4gaXQgb2ZmLgotI2lmIE5ETkJPT1NUX01TVkMKLSMgIHByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ5MTMpIC8vIHVzZXIgZGVmaW5lZCBiaW5hcnkgb3BlcmF0b3IgJywnIGV4aXN0cyBidXQgbm8gb3ZlcmxvYWQgY291bGQgY29udmVydCBhbGwgb3BlcmFuZHMsIGRlZmF1bHQgYnVpbHQtaW4gYmluYXJ5IG9wZXJhdG9yICcsJyB1c2VkCi0jZW5kaWYKLQotc3RydWN0IHJlc3VsdF9vZl9wcml2YXRlX3R5cGUge307Ci0KLXN0cnVjdCByZXN1bHRfb2Zfd2VpcmRfdHlwZSB7Ci0gIGZyaWVuZCByZXN1bHRfb2ZfcHJpdmF0ZV90eXBlIG9wZXJhdG9yLChyZXN1bHRfb2ZfcHJpdmF0ZV90eXBlLCByZXN1bHRfb2Zfd2VpcmRfdHlwZSk7Ci19OwotCi10eXBlZGVmIGNoYXIgcmVzdWx0X29mX3llc190eXBlOyAgICAgIC8vIHNpemVvZihyZXN1bHRfb2ZfeWVzX3R5cGUpID09IDEKLXR5cGVkZWYgY2hhciAoJnJlc3VsdF9vZl9ub190eXBlKVsyXTsgLy8gc2l6ZW9mKHJlc3VsdF9vZl9ub190eXBlKSAgPT0gMgotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotcmVzdWx0X29mX25vX3R5cGUgcmVzdWx0X29mX2lzX3ByaXZhdGVfdHlwZShUIGNvbnN0ICYpOwotcmVzdWx0X29mX3llc190eXBlIHJlc3VsdF9vZl9pc19wcml2YXRlX3R5cGUocmVzdWx0X29mX3ByaXZhdGVfdHlwZSk7Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEM+Ci1zdHJ1Y3QgcmVzdWx0X29mX2NhbGxhYmxlX2NsYXNzIDogQyB7Ci0gICAgcmVzdWx0X29mX2NhbGxhYmxlX2NsYXNzKCk7Ci0gICAgdHlwZWRlZiByZXN1bHRfb2ZfcHJpdmF0ZV90eXBlIGNvbnN0ICYoKnBmbl90KSguLi4pOwotICAgIG9wZXJhdG9yIHBmbl90KCkgY29uc3Qgdm9sYXRpbGU7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDPgotc3RydWN0IHJlc3VsdF9vZl93cmFwX2NhbGxhYmxlX2NsYXNzIHsKLSAgdHlwZWRlZiByZXN1bHRfb2ZfY2FsbGFibGVfY2xhc3M8Qz4gdHlwZTsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEM+Ci1zdHJ1Y3QgcmVzdWx0X29mX3dyYXBfY2FsbGFibGVfY2xhc3M8QyBjb25zdD4gewotICB0eXBlZGVmIHJlc3VsdF9vZl9jYWxsYWJsZV9jbGFzczxDPiBjb25zdCB0eXBlOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgQz4KLXN0cnVjdCByZXN1bHRfb2Zfd3JhcF9jYWxsYWJsZV9jbGFzczxDIHZvbGF0aWxlPiB7Ci0gIHR5cGVkZWYgcmVzdWx0X29mX2NhbGxhYmxlX2NsYXNzPEM+IHZvbGF0aWxlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBDPgotc3RydWN0IHJlc3VsdF9vZl93cmFwX2NhbGxhYmxlX2NsYXNzPEMgY29uc3Qgdm9sYXRpbGU+IHsKLSAgdHlwZWRlZiByZXN1bHRfb2ZfY2FsbGFibGVfY2xhc3M8Qz4gY29uc3Qgdm9sYXRpbGUgdHlwZTsKLX07Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIEM+Ci1zdHJ1Y3QgcmVzdWx0X29mX3dyYXBfY2FsbGFibGVfY2xhc3M8QyAmPiB7Ci0gIHR5cGVkZWYgdHlwZW5hbWUgcmVzdWx0X29mX3dyYXBfY2FsbGFibGVfY2xhc3M8Qz46OnR5cGUgJnR5cGU7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGLCBib29sIFRlc3RDYWxsYWJpbGl0eSA9IHRydWU+IHN0cnVjdCBjcHAweF9yZXN1bHRfb2ZfaW1wbDsKLQotI2Vsc2UgLy8gTkROQk9PU1RfTk9fU0ZJTkFFX0VYUFIKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXN0cnVjdCByZXN1bHRfb2ZfYWx3YXlzX3ZvaWQKLXsKLSAgdHlwZWRlZiB2b2lkIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGLCB0eXBlbmFtZSBFbmFibGUgPSB2b2lkPiBzdHJ1Y3QgY3BwMHhfcmVzdWx0X29mX2ltcGwge307Ci0KLSNlbmRpZiAvLyBORE5CT09TVF9OT19TRklOQUVfRVhQUgotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGPgotc3RydWN0IHJlc3VsdF9vZl92b2lkX2ltcGwKLXsKLSAgdHlwZWRlZiB2b2lkIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBSPgotc3RydWN0IHJlc3VsdF9vZl92b2lkX2ltcGw8UiAoKikodm9pZCk+Ci17Ci0gIHR5cGVkZWYgUiB0eXBlOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgUj4KLXN0cnVjdCByZXN1bHRfb2Zfdm9pZF9pbXBsPFIgKCYpKHZvaWQpPgotewotICB0eXBlZGVmIFIgdHlwZTsKLX07Ci0KLS8vIERldGVybWluZSB0aGUgcmV0dXJuIHR5cGUgb2YgYSBmdW5jdGlvbiBwb2ludGVyIG9yIHBvaW50ZXIgdG8gbWVtYmVyLgotdGVtcGxhdGU8dHlwZW5hbWUgRiwgdHlwZW5hbWUgRkFyZ3M+Ci1zdHJ1Y3QgcmVzdWx0X29mX3BvaW50ZXIKLSAgOiB0cjFfcmVzdWx0X29mX2ltcGw8dHlwZW5hbWUgcmVtb3ZlX2N2PEY+Ojp0eXBlLCBGQXJncywgZmFsc2U+IHsgfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgRiwgdHlwZW5hbWUgRkFyZ3M+Ci1zdHJ1Y3QgdHIxX3Jlc3VsdF9vZl9pbXBsPEYsIEZBcmdzLCB0cnVlPgotewotICB0eXBlZGVmIHR5cGVuYW1lIEY6OnJlc3VsdF90eXBlIHR5cGU7Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGQXJncz4KLXN0cnVjdCBpc19mdW5jdGlvbl93aXRoX25vX2FyZ3MgOiBtcGw6OmZhbHNlXyB7fTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgRj4KLXN0cnVjdCBpc19mdW5jdGlvbl93aXRoX25vX2FyZ3M8Rih2b2lkKT4gOiBtcGw6OnRydWVfIHt9OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGLCB0eXBlbmFtZSBGQXJncz4KLXN0cnVjdCByZXN1bHRfb2ZfbmVzdGVkX3Jlc3VsdCA6IEY6OnRlbXBsYXRlIHJlc3VsdDxGQXJncz4KLXt9OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBGLCB0eXBlbmFtZSBGQXJncz4KLXN0cnVjdCB0cjFfcmVzdWx0X29mX2ltcGw8RiwgRkFyZ3MsIGZhbHNlPgotICA6IG1wbDo6aWZfPGlzX2Z1bmN0aW9uX3dpdGhfbm9fYXJnczxGQXJncz4sCi0gICAgICAgICAgICAgcmVzdWx0X29mX3ZvaWRfaW1wbDxGPiwKLSAgICAgICAgICAgICByZXN1bHRfb2ZfbmVzdGVkX3Jlc3VsdDxGLCBGQXJncz4gPjo6dHlwZQote307Ci0KLX0gLy8gZW5kIG5hbWVzcGFjZSBkZXRhaWwKLQotI2RlZmluZSBORE5CT09TVF9QUF9JVEVSQVRJT05fUEFSQU1TXzEgKDMsKDAsTkROQk9PU1RfUkVTVUxUX09GX05VTV9BUkdTLDxuZG5ib29zdC91dGlsaXR5L2RldGFpbC9yZXN1bHRfb2ZfaXRlcmF0ZS5ocHA+KSkKLSNpbmNsdWRlIE5ETkJPT1NUX1BQX0lURVJBVEUoKQotCi0jZWxzZQotIyAgZGVmaW5lIE5ETkJPT1NUX05PX1JFU1VMVF9PRiAxCi0jZW5kaWYKLQotfQotCi0jZW5kaWYgLy8gTkROQk9PU1RfUkVTVUxUX09GX0hQUApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC91dGlsaXR5L3N3YXAuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC91dGlsaXR5L3N3YXAuaHBwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NWY4MGYzLi4wMDAwMDAwCi0tLSBhL2luY2x1ZGUvbmRuYm9vc3QvdXRpbGl0eS9zd2FwLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLS8vIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCBTdGV2ZW4gV2F0YW5hYmUsIEpvc2VwaCBHYXV0ZXJpbiwgTmllbHMgRGVra2VyCi0vLwotLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLiAoU2VlCi0vLyBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotLy8gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8vd3d3LmJvb3N0Lm9yZwotCi0KLSNpZm5kZWYgTkROQk9PU1RfVVRJTElUWV9TV0FQX0hQUAotI2RlZmluZSBORE5CT09TVF9VVElMSVRZX1NXQVBfSFBQCi0KLS8vIE5vdGU6IHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIHV0aWxpdHkgY29udGFpbnMgdmFyaW91cyB3b3JrYXJvdW5kczoKLS8vIC0gc3dhcF9pbXBsIGlzIHB1dCBvdXRzaWRlIHRoZSBib29zdCBuYW1lc3BhY2UsIHRvIGF2b2lkIGluZmluaXRlCi0vLyByZWN1cnNpb24gKGNhdXNpbmcgc3RhY2sgb3ZlcmZsb3cpIHdoZW4gc3dhcHBpbmcgb2JqZWN0cyBvZiBhIHByaW1pdGl2ZQotLy8gdHlwZS4KLS8vIC0gc3dhcF9pbXBsIGhhcyBhIHVzaW5nLWRpcmVjdGl2ZSwgcmF0aGVyIHRoYW4gYSB1c2luZy1kZWNsYXJhdGlvbiwKLS8vIGJlY2F1c2Ugc29tZSBjb21waWxlcnMgKGluY2x1ZGluZyBNU1ZDIDcuMSwgQm9ybGFuZCA1LjkuMywgYW5kCi0vLyBJbnRlbCA4LjEpIGRvbid0IGRvIGFyZ3VtZW50LWRlcGVuZGVudCBsb29rdXAgd2hlbiBpdCBoYXMgYQotLy8gdXNpbmctZGVjbGFyYXRpb24gaW5zdGVhZC4KLS8vIC0gbmRuYm9vc3Q6OnN3YXAgaGFzIHR3byB0ZW1wbGF0ZSBhcmd1bWVudHMsIGluc3RlYWQgb2Ygb25lLCB0bwotLy8gYXZvaWQgYW1iaWd1aXR5IHdoZW4gc3dhcHBpbmcgb2JqZWN0cyBvZiBhIEJvb3N0IHR5cGUgdGhhdCBkb2VzCi0vLyBub3QgaGF2ZSBpdHMgb3duIG5kbmJvb3N0Ojpzd2FwIG92ZXJsb2FkLgotCi0jaW5jbHVkZSA8YWxnb3JpdGhtPiAvL2ZvciBzdGQ6OnN3YXAKLSNpbmNsdWRlIDxjc3RkZGVmPiAvL2ZvciBzdGQ6OnNpemVfdAotCi1uYW1lc3BhY2UgbmRuYm9vc3Rfc3dhcF9pbXBsCi17Ci0gIHRlbXBsYXRlPGNsYXNzIFQ+Ci0gIHZvaWQgc3dhcF9pbXBsKFQmIGxlZnQsIFQmIHJpZ2h0KQotICB7Ci0gICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsvL3VzZSBzdGQ6OnN3YXAgaWYgYXJndW1lbnQgZGVwZW5kZW50IGxvb2t1cCBmYWlscwotICAgIHN3YXAobGVmdCxyaWdodCk7Ci0gIH0KLQotICB0ZW1wbGF0ZTxjbGFzcyBULCBzdGQ6OnNpemVfdCBOPgotICB2b2lkIHN3YXBfaW1wbChUICgmIGxlZnQpW05dLCBUICgmIHJpZ2h0KVtOXSkKLSAgewotICAgIGZvciAoc3RkOjpzaXplX3QgaSA9IDA7IGkgPCBOOyArK2kpCi0gICAgewotICAgICAgOjpuZG5ib29zdF9zd2FwX2ltcGw6OnN3YXBfaW1wbChsZWZ0W2ldLCByaWdodFtpXSk7Ci0gICAgfQotICB9Ci19Ci0KLW5hbWVzcGFjZSBuZG5ib29zdAotewotICB0ZW1wbGF0ZTxjbGFzcyBUMSwgY2xhc3MgVDI+Ci0gIHZvaWQgc3dhcChUMSYgbGVmdCwgVDImIHJpZ2h0KQotICB7Ci0gICAgOjpuZG5ib29zdF9zd2FwX2ltcGw6OnN3YXBfaW1wbChsZWZ0LCByaWdodCk7Ci0gIH0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3V0aWxpdHkvdmFsdWVfaW5pdC5ocHAgYi9pbmNsdWRlL25kbmJvb3N0L3V0aWxpdHkvdmFsdWVfaW5pdC5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhlMzRhZTIuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC91dGlsaXR5L3ZhbHVlX2luaXQuaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjU4ICswLDAgQEAKLS8vIChDKSBDb3B5cmlnaHQgMjAwMi0yMDA4LCBGZXJuYW5kbyBMdWlzIENhY2Npb2xhIENhcmJhbGxhbC4KLS8vCi0vLyBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUKLS8vIGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0VfMV8wLnR4dCBvciBjb3B5IGF0Ci0vLyBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0vLwotLy8gMjEgQWdvIDIwMDIgKENyZWF0ZWQpIEZlcm5hbmRvIENhY2Npb2xhCi0vLyAyNCBEZWMgMjAwNyAoUmVmYWN0b3JlZCBhbmQgd29ya2VkIGFyb3VuZCB2YXJpb3VzIGNvbXBpbGVyIGJ1Z3MpIEZlcm5hbmRvIENhY2Npb2xhLCBOaWVscyBEZWtrZXIKLS8vIDIzIE1heSAyMDA4IChGaXhlZCBvcGVyYXRvcj0gY29uc3QgaXNzdWUsIGFkZGVkIGluaXRpYWxpemVkX3ZhbHVlKSBOaWVscyBEZWtrZXIsIEZlcm5hbmRvIENhY2Npb2xhCi0vLyAyMSBBZ28gMjAwOCAoQWRkZWQgc3dhcCkgTmllbHMgRGVra2VyLCBGZXJuYW5kbyBDYWNjaW9sYQotLy8gMjAgRmViIDIwMDkgKEZpeGVkIGxvZ2ljYWwgY29uc3QtbmVzcyBpc3N1ZXMpIE5pZWxzIERla2tlciwgRmVybmFuZG8gQ2FjY2lvbGEKLS8vIDAzIEFwciAyMDEwIChBZGRlZCBpbml0aWFsaXplZDxUPiwgc3VnZ2VzdGVkIGJ5IEplZmZyZXkgSGVsbHJ1bmcsIGZpeGluZyAjMzQ3MikgTmllbHMgRGVra2VyCi0vLyAzMCBNYXkgMjAxMCAoTWFkZSBtZW1zZXQgY2FsbCBjb25kaXRpb25hbCwgZml4aW5nICMzODY5KSBOaWVscyBEZWtrZXIKLS8vCi0jaWZuZGVmIE5ETkJPT1NUX1VUSUxJVFlfVkFMVUVfSU5JVF8yMUFHTzIwMDJfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1VUSUxJVFlfVkFMVUVfSU5JVF8yMUFHTzIwMDJfSFBQCi0KLS8vIE5vdGU6IFRoZSBpbXBsZW1lbnRhdGlvbiBvZiBuZG5ib29zdDo6dmFsdWVfaW5pdGlhbGl6ZWQgaGFkIHRvIGRlYWwgd2l0aCB0aGUKLS8vIGZhY3QgdGhhdCB2YXJpb3VzIGNvbXBpbGVycyBoYXZlbid0IGZ1bGx5IGltcGxlbWVudGVkIHZhbHVlLWluaXRpYWxpemF0aW9uLgotLy8gVGhlIGNvbnN0cnVjdG9yIG9mIG5kbmJvb3N0Ojp2YWx1ZV9pbml0aWFsaXplZDxUPiB3b3JrcyBhcm91bmQgdGhlc2UgY29tcGlsZXIKLS8vIGlzc3VlcywgYnkgY2xlYXJpbmcgdGhlIGJ5dGVzIG9mIFQsIGJlZm9yZSBjb25zdHJ1Y3RpbmcgdGhlIFQgb2JqZWN0IGl0Ci0vLyBjb250YWlucy4gTW9yZSBkZXRhaWxzIG9uIHRoZXNlIGlzc3VlcyBhcmUgYXQgbGlicy91dGlsaXR5L3ZhbHVlX2luaXQuaHRtCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9hbGlnbmVkX3N0b3JhZ2UuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L2NvbmZpZy5ocHA+IC8vIEZvciBORE5CT09TVF9OT19DT01QTEVURV9WQUxVRV9JTklUSUFMSVpBVElPTi4KLSNpbmNsdWRlIDxuZG5ib29zdC9kZXRhaWwvd29ya2Fyb3VuZC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3Qvc3RhdGljX2Fzc2VydC5ocHA+Ci0jaW5jbHVkZSA8bmRuYm9vc3QvdHlwZV90cmFpdHMvY3ZfdHJhaXRzLmhwcD4KLSNpbmNsdWRlIDxuZG5ib29zdC90eXBlX3RyYWl0cy9hbGlnbm1lbnRfb2YuaHBwPgotI2luY2x1ZGUgPG5kbmJvb3N0L3N3YXAuaHBwPgotI2luY2x1ZGUgPGNzdHJpbmc+Ci0jaW5jbHVkZSA8bmV3PgotCi0jaWZkZWYgTkROQk9PU1RfTVNWQwotI3ByYWdtYSB3YXJuaW5nKHB1c2gpCi0jaWYgX01TQ19WRVIgPj0gMTMxMAotLy8gSXQgaXMgc2FmZSB0byBpZ25vcmUgdGhlIGZvbGxvd2luZyB3YXJuaW5nIGZyb20gTVNWQyA3LjEgb3IgaGlnaGVyOgotLy8gIndhcm5pbmcgQzQzNTE6IG5ldyBiZWhhdmlvcjogZWxlbWVudHMgb2YgYXJyYXkgd2lsbCBiZSBkZWZhdWx0IGluaXRpYWxpemVkIgotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQzNTEpCi0vLyBJdCBpcyBzYWZlIHRvIGlnbm9yZSB0aGUgZm9sbG93aW5nIE1TVkMgd2FybmluZywgd2hpY2ggbWF5IHBvcCB1cCB3aGVuIFQgaXMgCi0vLyBhIGNvbnN0IHR5cGU6ICJ3YXJuaW5nIEM0NTEyOiBhc3NpZ25tZW50IG9wZXJhdG9yIGNvdWxkIG5vdCBiZSBnZW5lcmF0ZWQiLgotI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ1MTIpCi0jZW5kaWYKLSNlbmRpZgotCi0jaWZkZWYgTkROQk9PU1RfTk9fQ09NUExFVEVfVkFMVUVfSU5JVElBTElaQVRJT04KLSAgLy8gSW1wbGVtZW50YXRpb24gZGV0YWlsOiBUaGUgbWFjcm8gTkROQk9PU1RfREVUQUlMX1ZBTFVFX0lOSVRfV09SS0FST1VORF9TVUdHRVNURUQgCi0gIC8vIHN1Z2dlc3RzIHRoYXQgYSB3b3JrYXJvdW5kIHNob3VsZCBiZSBhcHBsaWVkLCBiZWNhdXNlIG9mIGNvbXBpbGVyIGlzc3VlcyAKLSAgLy8gcmVnYXJkaW5nIHZhbHVlLWluaXRpYWxpemF0aW9uLgotICAjZGVmaW5lIE5ETkJPT1NUX0RFVEFJTF9WQUxVRV9JTklUX1dPUktBUk9VTkRfU1VHR0VTVEVECi0jZW5kaWYKLQotLy8gSW1wbGVtZW50YXRpb24gZGV0YWlsOiBUaGUgbWFjcm8gTkROQk9PU1RfREVUQUlMX1ZBTFVFX0lOSVRfV09SS0FST1VORAotLy8gc3dpdGNoZXMgdGhlIHZhbHVlLWluaXRpYWxpemF0aW9uIHdvcmthcm91bmQgZWl0aGVyIG9uIG9yIG9mZi4KLSNpZm5kZWYgTkROQk9PU1RfREVUQUlMX1ZBTFVFX0lOSVRfV09SS0FST1VORAotICAjaWZkZWYgTkROQk9PU1RfREVUQUlMX1ZBTFVFX0lOSVRfV09SS0FST1VORF9TVUdHRVNURUQKLSAgI2RlZmluZSBORE5CT09TVF9ERVRBSUxfVkFMVUVfSU5JVF9XT1JLQVJPVU5EIDEKLSAgI2Vsc2UKLSAgI2RlZmluZSBORE5CT09TVF9ERVRBSUxfVkFMVUVfSU5JVF9XT1JLQVJPVU5EIDAKLSAgI2VuZGlmCi0jZW5kaWYKLQotbmFtZXNwYWNlIG5kbmJvb3N0IHsKLQotdGVtcGxhdGU8Y2xhc3MgVD4KLWNsYXNzIGluaXRpYWxpemVkCi17Ci0gIHByaXZhdGUgOgotICAgIHN0cnVjdCB3cmFwcGVyCi0gICAgewotI2lmICFORE5CT09TVF9XT1JLQVJPVU5EKF9fQk9STEFORENfXywgTkROQk9PU1RfVEVTVEVEX0FUKDB4NTkyKSkKLSAgICAgIHR5cGVuYW1lCi0jZW5kaWYgCi0gICAgICByZW1vdmVfY29uc3Q8VD46OnR5cGUgZGF0YTsKLQotICAgICAgd3JhcHBlcigpCi0gICAgICA6Ci0gICAgICBkYXRhKCkKLSAgICAgIHsKLSAgICAgIH0KLQotICAgICAgd3JhcHBlcihUIGNvbnN0ICYgYXJnKQotICAgICAgOgotICAgICAgZGF0YShhcmcpCi0gICAgICB7Ci0gICAgICB9Ci0gICAgfTsKLQotICAgIG11dGFibGUKLSNpZiAhTkROQk9PU1RfV09SS0FST1VORChfX0JPUkxBTkRDX18sIE5ETkJPT1NUX1RFU1RFRF9BVCgweDU5MikpCi0gICAgICB0eXBlbmFtZQotI2VuZGlmIAotICAgICAgYWxpZ25lZF9zdG9yYWdlPHNpemVvZih3cmFwcGVyKSwgYWxpZ25tZW50X29mPHdyYXBwZXI+Ojp2YWx1ZT46OnR5cGUgeDsKLQotICAgIHdyYXBwZXIgKiB3cmFwcGVyX2FkZHJlc3MoKSBjb25zdAotICAgIHsKLSAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx3cmFwcGVyICo+KCBzdGF0aWNfY2FzdDx2b2lkKj4oJngpKTsKLSAgICB9Ci0KLSAgcHVibGljIDoKLQotICAgIGluaXRpYWxpemVkKCkKLSAgICB7Ci0jaWYgTkROQk9PU1RfREVUQUlMX1ZBTFVFX0lOSVRfV09SS0FST1VORAotICAgICAgc3RkOjptZW1zZXQoJngsIDAsIHNpemVvZih4KSk7Ci0jZW5kaWYKLSAgICAgIG5ldyAod3JhcHBlcl9hZGRyZXNzKCkpIHdyYXBwZXIoKTsKLSAgICB9Ci0KLSAgICBpbml0aWFsaXplZChpbml0aWFsaXplZCBjb25zdCAmIGFyZykKLSAgICB7Ci0gICAgICBuZXcgKHdyYXBwZXJfYWRkcmVzcygpKSB3cmFwcGVyKCBzdGF0aWNfY2FzdDx3cmFwcGVyIGNvbnN0ICY+KCooYXJnLndyYXBwZXJfYWRkcmVzcygpKSkpOwotICAgIH0KLQotICAgIGV4cGxpY2l0IGluaXRpYWxpemVkKFQgY29uc3QgJiBhcmcpCi0gICAgewotICAgICAgbmV3ICh3cmFwcGVyX2FkZHJlc3MoKSkgd3JhcHBlcihhcmcpOwotICAgIH0KLQotICAgIGluaXRpYWxpemVkICYgb3BlcmF0b3I9KGluaXRpYWxpemVkIGNvbnN0ICYgYXJnKQotICAgIHsKLSAgICAgIC8vIEFzc2lnbm1lbnQgaXMgb25seSBhbGxvd2VkIHdoZW4gVCBpcyBub24tY29uc3QuCi0gICAgICBORE5CT09TVF9TVEFUSUNfQVNTRVJUKCAhIGlzX2NvbnN0PFQ+Ojp2YWx1ZSApOwotICAgICAgKndyYXBwZXJfYWRkcmVzcygpID0gc3RhdGljX2Nhc3Q8d3JhcHBlciBjb25zdCAmPigqKGFyZy53cmFwcGVyX2FkZHJlc3MoKSkpOwotICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIH5pbml0aWFsaXplZCgpCi0gICAgewotICAgICAgd3JhcHBlcl9hZGRyZXNzKCktPndyYXBwZXI6On53cmFwcGVyKCk7Ci0gICAgfQotCi0gICAgVCBjb25zdCAmIGRhdGEoKSBjb25zdAotICAgIHsKLSAgICAgIHJldHVybiB3cmFwcGVyX2FkZHJlc3MoKS0+ZGF0YTsKLSAgICB9Ci0KLSAgICBUJiBkYXRhKCkKLSAgICB7Ci0gICAgICByZXR1cm4gd3JhcHBlcl9hZGRyZXNzKCktPmRhdGE7Ci0gICAgfQotCi0gICAgdm9pZCBzd2FwKGluaXRpYWxpemVkICYgYXJnKQotICAgIHsKLSAgICAgIDo6bmRuYm9vc3Q6OnN3YXAoIHRoaXMtPmRhdGEoKSwgYXJnLmRhdGEoKSApOwotICAgIH0KLQotICAgIG9wZXJhdG9yIFQgY29uc3QgJigpIGNvbnN0Ci0gICAgewotICAgICAgcmV0dXJuIHdyYXBwZXJfYWRkcmVzcygpLT5kYXRhOwotICAgIH0KLQotICAgIG9wZXJhdG9yIFQmKCkKLSAgICB7Ci0gICAgICByZXR1cm4gd3JhcHBlcl9hZGRyZXNzKCktPmRhdGE7Ci0gICAgfQotCi19IDsKLQotdGVtcGxhdGU8Y2xhc3MgVD4KLVQgY29uc3QmIGdldCAoIGluaXRpYWxpemVkPFQ+IGNvbnN0JiB4ICkKLXsKLSAgcmV0dXJuIHguZGF0YSgpIDsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVD4KLVQmIGdldCAoIGluaXRpYWxpemVkPFQ+JiB4ICkKLXsKLSAgcmV0dXJuIHguZGF0YSgpIDsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVD4KLXZvaWQgc3dhcCAoIGluaXRpYWxpemVkPFQ+ICYgbGhzLCBpbml0aWFsaXplZDxUPiAmIHJocyApCi17Ci0gIGxocy5zd2FwKHJocykgOwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUPgotY2xhc3MgdmFsdWVfaW5pdGlhbGl6ZWQKLXsKLSAgcHJpdmF0ZSA6Ci0KLSAgICAvLyBpbml0aWFsaXplZDxUPiBkb2VzIHZhbHVlLWluaXRpYWxpemF0aW9uIGJ5IGRlZmF1bHQuCi0gICAgaW5pdGlhbGl6ZWQ8VD4gbV9kYXRhOwotCi0gIHB1YmxpYyA6Ci0gICAgCi0gICAgdmFsdWVfaW5pdGlhbGl6ZWQoKQotICAgIDoKLSAgICBtX2RhdGEoKQotICAgIHsgfQotICAgIAotICAgIFQgY29uc3QgJiBkYXRhKCkgY29uc3QKLSAgICB7Ci0gICAgICByZXR1cm4gbV9kYXRhLmRhdGEoKTsKLSAgICB9Ci0KLSAgICBUJiBkYXRhKCkKLSAgICB7Ci0gICAgICByZXR1cm4gbV9kYXRhLmRhdGEoKTsKLSAgICB9Ci0KLSAgICB2b2lkIHN3YXAodmFsdWVfaW5pdGlhbGl6ZWQgJiBhcmcpCi0gICAgewotICAgICAgbV9kYXRhLnN3YXAoYXJnLm1fZGF0YSk7Ci0gICAgfQotCi0gICAgb3BlcmF0b3IgVCBjb25zdCAmKCkgY29uc3QKLSAgICB7Ci0gICAgICByZXR1cm4gbV9kYXRhOwotICAgIH0KLQotICAgIG9wZXJhdG9yIFQmKCkKLSAgICB7Ci0gICAgICByZXR1cm4gbV9kYXRhOwotICAgIH0KLX0gOwotCi0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1UIGNvbnN0JiBnZXQgKCB2YWx1ZV9pbml0aWFsaXplZDxUPiBjb25zdCYgeCApCi17Ci0gIHJldHVybiB4LmRhdGEoKSA7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci1UJiBnZXQgKCB2YWx1ZV9pbml0aWFsaXplZDxUPiYgeCApCi17Ci0gIHJldHVybiB4LmRhdGEoKSA7Ci19Ci0KLXRlbXBsYXRlPGNsYXNzIFQ+Ci12b2lkIHN3YXAgKCB2YWx1ZV9pbml0aWFsaXplZDxUPiAmIGxocywgdmFsdWVfaW5pdGlhbGl6ZWQ8VD4gJiByaHMgKQotewotICBsaHMuc3dhcChyaHMpIDsKLX0KLQotCi1jbGFzcyBpbml0aWFsaXplZF92YWx1ZV90Ci17Ci0gIHB1YmxpYyA6Ci0gICAgCi0gICAgdGVtcGxhdGUgPGNsYXNzIFQ+IG9wZXJhdG9yIFQoKSBjb25zdAotICAgIHsKLSAgICAgIHJldHVybiBpbml0aWFsaXplZDxUPigpLmRhdGEoKTsKLSAgICB9Ci19OwotCi1pbml0aWFsaXplZF92YWx1ZV90IGNvbnN0IGluaXRpYWxpemVkX3ZhbHVlID0ge30gOwotCi0KLX0gLy8gbmFtZXNwYWNlIG5kbmJvb3N0Ci0KLSNpZmRlZiBORE5CT09TVF9NU1ZDCi0jcHJhZ21hIHdhcm5pbmcocG9wKQotI2VuZGlmCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZG5ib29zdC92ZXJzaW9uLmhwcCBiL2luY2x1ZGUvbmRuYm9vc3QvdmVyc2lvbi5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhmMzVmMTMuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC92ZXJzaW9uLmhwcAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLS8vICBCb29zdCB2ZXJzaW9uLmhwcCBjb25maWd1cmF0aW9uIGhlYWRlciBmaWxlICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0vLwotCi0vLyAgKEMpIENvcHlyaWdodCBKb2huIG1hZGRvY2sgMTk5OS4gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0Ci0vLyAgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUKLS8vICBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdCBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCi0KLS8vICBTZWUgaHR0cDovL3d3dy5ib29zdC5vcmcvbGlicy9jb25maWcgZm9yIGRvY3VtZW50YXRpb24KLQotI2lmbmRlZiBORE5CT09TVF9WRVJTSU9OX0hQUAotI2RlZmluZSBORE5CT09TVF9WRVJTSU9OX0hQUAotCi0vLwotLy8gIENhdXRpb24sIHRoaXMgaXMgdGhlIG9ubHkgYm9vc3QgaGVhZGVyIHRoYXQgaXMgZ3VhcmVudGVlZAotLy8gIHRvIGNoYW5nZSB3aXRoIGV2ZXJ5IGJvb3N0IHJlbGVhc2UsIGluY2x1ZGluZyB0aGlzIGhlYWRlcgotLy8gIHdpbGwgY2F1c2UgYSByZWNvbXBpbGUgZXZlcnkgdGltZSBhIG5ldyBib29zdCB2ZXJzaW9uIGlzCi0vLyAgcmVsZWFzZWQuCi0vLwotLy8gIE5ETkJPT1NUX1ZFUlNJT04gJSAxMDAgaXMgdGhlIHBhdGNoIGxldmVsCi0vLyAgTkROQk9PU1RfVkVSU0lPTiAvIDEwMCAlIDEwMDAgaXMgdGhlIG1pbm9yIHZlcnNpb24KLS8vICBORE5CT09TVF9WRVJTSU9OIC8gMTAwMDAwIGlzIHRoZSBtYWpvciB2ZXJzaW9uCi0KLSNkZWZpbmUgTkROQk9PU1RfVkVSU0lPTiAxMDU0MDAKLQotLy8KLS8vICBORE5CT09TVF9MSUJfVkVSU0lPTiBtdXN0IGJlIGRlZmluZWQgdG8gYmUgdGhlIHNhbWUgYXMgTkROQk9PU1RfVkVSU0lPTgotLy8gIGJ1dCBhcyBhICpzdHJpbmcqIGluIHRoZSBmb3JtICJ4X3lbX3pdIiB3aGVyZSB4IGlzIHRoZSBtYWpvciB2ZXJzaW9uCi0vLyAgbnVtYmVyLCB5IGlzIHRoZSBtaW5vciB2ZXJzaW9uIG51bWJlciwgYW5kIHogaXMgdGhlIHBhdGNoIGxldmVsIGlmIG5vdCAwLgotLy8gIFRoaXMgaXMgdXNlZCBieSA8Y29uZmlnL2F1dG9fbGluay5ocHA+IHRvIHNlbGVjdCB3aGljaCBsaWJyYXJ5IHZlcnNpb24gdG8gbGluayB0by4KLQotI2RlZmluZSBORE5CT09TVF9MSUJfVkVSU0lPTiAiMV81NCIKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25kbmJvb3N0L3Zpc2l0X2VhY2guaHBwIGIvaW5jbHVkZS9uZG5ib29zdC92aXNpdF9lYWNoLmhwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjRkMDE1ZS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL25kbmJvb3N0L3Zpc2l0X2VhY2guaHBwCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotLy8gQm9vc3QuU2lnbmFscyBsaWJyYXJ5Ci0KLS8vIENvcHlyaWdodCBEb3VnbGFzIEdyZWdvciAyMDAxLTIwMDMuIFVzZSwgbW9kaWZpY2F0aW9uIGFuZAotLy8gZGlzdHJpYnV0aW9uIGlzIHN1YmplY3QgdG8gdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24KLS8vIDEuMC4gKFNlZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFXzFfMC50eHQgb3IgY29weSBhdAotLy8gaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0KQotCi0vLyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvc2lnbmFscwotCi0jaWZuZGVmIE5ETkJPT1NUX1ZJU0lUX0VBQ0hfSFBQCi0jZGVmaW5lIE5ETkJPT1NUX1ZJU0lUX0VBQ0hfSFBQCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9jb25maWcuaHBwPgotCi1uYW1lc3BhY2UgbmRuYm9vc3QgewotICB0ZW1wbGF0ZTx0eXBlbmFtZSBWaXNpdG9yLCB0eXBlbmFtZSBUPgotICBpbmxpbmUgdm9pZCB2aXNpdF9lYWNoKFZpc2l0b3ImIHZpc2l0b3IsIGNvbnN0IFQmIHQsIGxvbmcpCi0gIHsKLSAgICB2aXNpdG9yKHQpOwotICB9Ci0KLSAgdGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvciwgdHlwZW5hbWUgVD4KLSAgaW5saW5lIHZvaWQgdmlzaXRfZWFjaChWaXNpdG9yJiB2aXNpdG9yLCBjb25zdCBUJiB0KQotICB7Ci0gICAgdmlzaXRfZWFjaCh2aXNpdG9yLCB0LCAwKTsKLSAgfQotfQotCi0jZW5kaWYgLy8gTkROQk9PU1RfVklTSVRfRUFDSF9IUFAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmRuYm9vc3Qvd2Vha19wdHIuaHBwIGIvaW5jbHVkZS9uZG5ib29zdC93ZWFrX3B0ci5ocHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNkM2Q3N2YuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZG5ib29zdC93ZWFrX3B0ci5ocHAKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi0jaWZuZGVmIE5ETkJPT1NUX1dFQUtfUFRSX0hQUF9JTkNMVURFRAotI2RlZmluZSBORE5CT09TVF9XRUFLX1BUUl9IUFBfSU5DTFVERUQKLQotLy8KLS8vICB3ZWFrX3B0ci5ocHAKLS8vCi0vLyAgQ29weXJpZ2h0IChjKSAyMDAxLCAyMDAyLCAyMDAzIFBldGVyIERpbW92Ci0vLwotLy8gIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCb29zdCBTb2Z0d2FyZSBMaWNlbnNlLCBWZXJzaW9uIDEuMC4KLS8vICBTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKLS8vICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQKLS8vCi0vLyAgU2VlIGh0dHA6Ly93d3cuYm9vc3Qub3JnL2xpYnMvc21hcnRfcHRyL3dlYWtfcHRyLmh0bSBmb3IgZG9jdW1lbnRhdGlvbi4KLS8vCi0KLSNpbmNsdWRlIDxuZG5ib29zdC9zbWFydF9wdHIvd2Vha19wdHIuaHBwPgotCi0jZW5kaWYgIC8vICNpZm5kZWYgTkROQk9PU1RfV0VBS19QVFJfSFBQX0lOQ0xVREVECg==